diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2025-07-03 21:44:48 -0400 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-08-20 15:57:22 +0200 |
| commit | e34faef774f7dad55cb7f7a5177215b341e5b539 (patch) | |
| tree | 28315a3d64f9d0468c7f0b1baf055bbdeda801a3 | |
| parent | 4b7f94f9e6e1dcae4d9b46755103bc0952bad981 (diff) | |
| download | muhqs-game-e34faef774f7dad55cb7f7a5177215b341e5b539.tar.gz muhqs-game-e34faef774f7dad55cb7f7a5177215b341e5b539.zip | |
support remote drafts
| -rw-r--r-- | go/activities/draft.go | 44 | ||||
| -rw-r--r-- | go/client/startMenu.go | 2 |
2 files changed, 37 insertions, 9 deletions
diff --git a/go/activities/draft.go b/go/activities/draft.go index 119696ec..85389106 100644 --- a/go/activities/draft.go +++ b/go/activities/draft.go @@ -2,6 +2,7 @@ package activities import ( "log" + "time" "github.com/hajimehoshi/ebiten/v2" "github.com/hajimehoshi/ebiten/v2/inpututil" @@ -18,19 +19,24 @@ const ( type Draft struct { ui.Collection player *game.Player - ctrl *game.ChanPlayerControl + ctrl game.PlayerControl draft *game.Draft setInput *ui.TextInput descInput *ui.TextInput deckList *ui.PocList + timer *ui.TimerBar } -func NewDraft(width, height int, playerName string) *Draft { +func NewLocalDraft(width, height int, playerName string) *Draft { d := &Draft{ Collection: ui.Collection{Width: width, Height: height}, } + d.player = game.NewDraftPlayer(playerName) + d.ctrl = game.NewChanPlayerControl(d.player) + d.player.Ctrl = d.ctrl + d.AddWidget(ui.NewFixedTextBox( (d.Width-DRAFT_BUTTON_WIDTH)/2-DRAFT_BUTTON_WIDTH, (d.Height-DRAFT_BUTTON_HEIGHT)/2-3*DRAFT_BUTTON_HEIGHT, @@ -68,7 +74,7 @@ func NewDraft(width, height int, playerName string) *Draft { d.AddWidget(ui.NewRoundSimpleButton( (d.Width-DRAFT_BUTTON_WIDTH)/2+DRAFT_BUTTON_WIDTH+20, (d.Height-DRAFT_BUTTON_HEIGHT)/2-2*DRAFT_BUTTON_HEIGHT, - DRAFT_BUTTON_WIDTH, + 30, "?", func(*ui.SimpleButton) { ui.OpenUrl("https://muhq.space/muhqs-game/build/en/rules.html#draft-notation") @@ -100,10 +106,17 @@ func NewDraft(width, height int, playerName string) *Draft { d.startDraft(d.descInput.TextOrLabel(), d.setInput.TextOrLabel(), aiNInput.GetChoosen()) })) - d.player = game.NewDraftPlayer(playerName) - d.ctrl = game.NewChanPlayerControl(d.player) - d.player.Ctrl = d.ctrl + return d +} +func StartNewRemoteDraft(width, height int, ctrl game.PlayerControl, firstPack *game.PlayerNotification) *Draft { + d := &Draft{ + Collection: ui.Collection{Width: width, Height: height}, + player: ctrl.Player(), + ctrl: ctrl, + } + + d.presentPack(firstPack) return d } @@ -138,11 +151,21 @@ func (d *Draft) presentPack(n *game.PlayerNotification) { } card := _card.(*game.Card) - d.RemoveWidget(grid) d.ctrl.SendAction(game.NewDraftPick(d.player, pack, card)) + d.RemoveWidget(grid) + if d.timer != nil { + d.timer = nil + d.RemoveWidget(d.timer) + } } grid.RegisterHandler("click", selectCard) d.AddWidget(grid) + + if d.draft == nil { + t := time.Duration(pack.Size()*5) * time.Second + timer := ui.NewTimerBar(0, 10, d.Width, 5, t) + d.AddWidget(timer) + } } func (d *Draft) Layout(width, height int) (int, int) { @@ -161,7 +184,12 @@ func (d *Draft) startDraft(desc string, setList string, aiN int) { return } - d.draft = game.NewDraft([]*game.Player{d.player}, desc, sets) + d.draft, err = game.NewDraft([]*game.Player{d.player}, desc, sets) + if err != nil { + d.descInput.Bg(ui.WarningBg) + d.descInput.SetInput("") + return + } log.Println(aiN) for _ = range aiN { diff --git a/go/client/startMenu.go b/go/client/startMenu.go index c3377a40..dea148ec 100644 --- a/go/client/startMenu.go +++ b/go/client/startMenu.go @@ -116,7 +116,7 @@ func (m *startMenu) build() { START_BUTTON_HEIGHT, "Draft", func(*ui.SimpleButton) { - m.draft = activities.NewDraft(m.Width, m.Height, playerInput.Text()) + m.draft = activities.NewLocalDraft(m.Width, m.Height, playerInput.Text()) activities.PushActivity(m.draft) })) |
