From bcffeac4c5086eba59448d4fe5d79bb786b05de2 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Fri, 6 Jun 2025 16:42:46 -0500 Subject: refactor client activities Make the activity stack explicit and move reusable activities to the activity package. --- go/client/draft.go | 199 ----------------------------------------------------- 1 file changed, 199 deletions(-) delete mode 100644 go/client/draft.go (limited to 'go/client/draft.go') 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() -} -- cgit v1.2.3