aboutsummaryrefslogtreecommitdiff
path: root/go/client/draft.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-06-06 16:42:46 -0500
committerFlorian Fischer <florian.fischer@muhq.space>2025-08-20 15:57:18 +0200
commitbcffeac4c5086eba59448d4fe5d79bb786b05de2 (patch)
treecc0b3648f2b070c731225e88b42fb3f4adcb65da /go/client/draft.go
parentc15142c3bcae4316c8580adb7a9f0b223e586ae9 (diff)
downloadmuhqs-game-bcffeac4c5086eba59448d4fe5d79bb786b05de2.tar.gz
muhqs-game-bcffeac4c5086eba59448d4fe5d79bb786b05de2.zip
refactor client activities
Make the activity stack explicit and move reusable activities to the activity package.
Diffstat (limited to 'go/client/draft.go')
-rw-r--r--go/client/draft.go199
1 files changed, 0 insertions, 199 deletions
diff --git a/go/client/draft.go b/go/client/draft.go
deleted file mode 100644
index 3950094f..00000000
--- a/go/client/draft.go
+++ /dev/null
@@ -1,199 +0,0 @@
-package main
-
-import (
- "log"
-
- "github.com/hajimehoshi/ebiten/v2"
- "github.com/hajimehoshi/ebiten/v2/inpututil"
-
- "muhq.space/muhqs-game/go/game"
- "muhq.space/muhqs-game/go/ui"
-)
-
-type Draft struct {
- ui.Collection
- app *app
- player *game.Player
- ctrl *game.ChanPlayerControl
- draft *game.Draft
-
- setInput *ui.TextInput
- descInput *ui.TextInput
- deckList *ui.PocList
-}
-
-func NewDraft(width, height int, app *app) *Draft {
- d := &Draft{
- app: app,
- Collection: ui.Collection{Width: width, Height: height},
- }
-
- d.AddWidget(ui.NewFixedTextBox(
- (d.Width-START_BUTTON_WIDTH)/2-START_BUTTON_WIDTH,
- (d.Height-START_BUTTON_HEIGHT)/2-3*START_BUTTON_HEIGHT,
- START_BUTTON_WIDTH,
- START_BUTTON_HEIGHT,
- "sets:",
- ).Centering(true))
-
- d.setInput = ui.NewTextInput(
- (d.Width-START_BUTTON_WIDTH)/2,
- (d.Height-START_BUTTON_HEIGHT)/2-3*START_BUTTON_HEIGHT,
- START_BUTTON_WIDTH,
- START_BUTTON_HEIGHT,
- "base,magic,equipments",
- )
- d.AddWidget(d.setInput)
-
- d.AddWidget(ui.NewFixedTextBox(
- (d.Width-START_BUTTON_WIDTH)/2-START_BUTTON_WIDTH,
- (d.Height-START_BUTTON_HEIGHT)/2-2*START_BUTTON_HEIGHT,
- START_BUTTON_WIDTH,
- START_BUTTON_HEIGHT,
- "draft:",
- ).Centering(true))
-
- d.descInput = ui.NewTextInput(
- (d.Width-START_BUTTON_WIDTH)/2,
- (d.Height-START_BUTTON_HEIGHT)/2-2*START_BUTTON_HEIGHT,
- START_BUTTON_WIDTH,
- START_BUTTON_HEIGHT,
- "3x[2;8]",
- )
- d.AddWidget(d.descInput)
-
- d.AddWidget(ui.NewFixedTextBox(
- (d.Width-START_BUTTON_WIDTH)/2-START_BUTTON_WIDTH,
- (d.Height-START_BUTTON_HEIGHT)/2-START_BUTTON_HEIGHT,
- START_BUTTON_WIDTH,
- START_BUTTON_HEIGHT,
- "AI:",
- ).Centering(true))
-
- aiNInput := ui.NewNumberChoice(
- (d.Width-START_BUTTON_WIDTH)/2,
- (d.Height-START_BUTTON_HEIGHT)/2-START_BUTTON_HEIGHT,
- 1,
- nil,
- )
- d.AddWidget(aiNInput)
-
- d.AddWidget(ui.NewSimpleButton(
- (d.Width-START_BUTTON_WIDTH)/2,
- (d.Height-START_BUTTON_HEIGHT)/2,
- START_BUTTON_WIDTH,
- START_BUTTON_HEIGHT,
- "Start",
- func(*ui.SimpleButton) {
- d.startDraft(d.descInput.TextOrLabel(), d.setInput.TextOrLabel(), aiNInput.GetChoosen())
- }))
-
- startMenu := d.app.activities[len(d.app.activities)-1].(*StartMenu)
- d.player = game.NewDraftPlayer(startMenu.playerName)
- d.ctrl = game.NewChanPlayerControl(d.player)
- d.player.Ctrl = d.ctrl
-
- return d
-}
-
-func (d *Draft) Update() error {
- if n := d.ctrl.RecvNotification(); n != nil {
- log.Println("Received draft pick: %v\n", n)
- d.presentPack(n)
- }
-
- if err := ui.TouchManager.Update(); err != nil {
- return err
- }
-
- if err := d.Collection.Update(); err != nil {
- return err
- }
-
- if inpututil.IsKeyJustPressed(ebiten.KeyEscape) {
- d.app.popActivity()
- }
-
- return nil
-}
-
-func (d *Draft) presentPack(n *game.PlayerNotification) {
- pack := n.Context.(game.PileOfCards)
- grid := ui.NewCardGrid(0, 0, d.Width-SEALED_DECK_STRIP_WIDTH, d.Height, 0.5, pack).Columns(3)
- selectCard := func(x, y int) {
- _card := grid.FindObjectAt(x, y)
- if _card == nil {
- return
- }
-
- card := _card.(*game.Card)
- d.RemoveWidget(grid)
- d.ctrl.SendAction(game.NewDraftPick(d.player, pack, card))
- }
- grid.RegisterHandler("click", selectCard)
- d.AddWidget(grid)
-}
-
-func (d *Draft) Layout(width, height int) (int, int) {
- return d.Width, d.Height
-}
-
-func (d *Draft) startDraft(desc string, setList string, aiN int) {
-
- log.Printf("starting %s draft from '%s'\n", desc, setList)
-
- var sets []game.SetIdentifier
- var err error
- if sets, err = game.SetListToSets(setList); err != nil {
- d.setInput.Bg(ui.WarningBg)
- d.setInput.SetInput("")
- return
- }
-
- d.draft = game.NewDraft([]*game.Player{d.player}, desc, sets)
-
- log.Println(aiN)
- for _ = range aiN {
- log.Println("add ai")
- d.draft.AddRandomAi()
- }
-
- if !d.draft.Valid() {
- d.descInput.Bg(ui.WarningBg)
- d.descInput.SetInput("")
- return
- }
- d.Clear()
-
- d.deckList = ui.NewPocList(d.Width-SEALED_DECK_STRIP_WIDTH/2, d.Height-START_BUTTON_HEIGHT-20, d.player.Deck)
- d.deckList.Bg(ui.Gray)
- {
- cardsInDeck := 0
- d.deckList.RegisterHandler("update", func() error {
- if n := d.player.Deck.Size(); n > cardsInDeck {
- d.deckList.ForceRedraw()
- cardsInDeck = n
- }
- return nil
- })
- }
- d.AddWidget(d.deckList)
-
- d.AddWidget(ui.NewSimpleButton(
- d.Width-SEALED_DECK_STRIP_WIDTH/2-START_BUTTON_WIDTH/2,
- d.Height-START_BUTTON_HEIGHT,
- START_BUTTON_WIDTH,
- START_BUTTON_HEIGHT,
- "Done",
- func(*ui.SimpleButton) {
- d.done()
- }))
-
- go d.draft.Run()
-}
-
-func (d *Draft) done() {
- startMenu := d.app.activities[len(d.app.activities)-2].(*StartMenu)
- startMenu.deckInput.SetInput(d.player.Deck.ToList())
- d.app.popActivity()
-}