func handleDebugButtonClick(b *staticimg.StaticImg, u *uistate.UIState) { if b == u.Buttons["player0"] { u.CurPlayerIndex = 0 view.LoadPassOrTakeOrPlay(u) } else if b == u.Buttons["player1"] { u.CurPlayerIndex = 1 view.LoadPassOrTakeOrPlay(u) } else if b == u.Buttons["player2"] { u.CurPlayerIndex = 2 view.LoadPassOrTakeOrPlay(u) } else if b == u.Buttons["player3"] { u.CurPlayerIndex = 3 view.LoadPassOrTakeOrPlay(u) } else if b == u.Buttons["table"] { view.LoadTableView(u) } else if b == u.Buttons["hand"] { view.LoadPassOrTakeOrPlay(u) } else if b == u.Buttons["restart"] { sync.ResetGame(u.LogSG, u.IsOwner, u) } }
func ResetGame(logName string, creator bool, u *uistate.UIState) { u.M.Lock() defer u.M.Unlock() go sendTrueIfExists(u.GameChan) u.PlayerData = make(map[int]int) u.CurPlayerIndex = -1 u.LogSG = logName writeLogAddr(logName, creator) u.CurTable.NewGame() tmp := strings.Split(logName, "-") gameID, _ := strconv.Atoi(tmp[len(tmp)-1]) u.GameID = gameID u.GameChan = make(chan bool) go UpdateGame(u.GameChan, u) }
func endClickArrange(t touch.Event, u *uistate.UIState) { pressed := unpressButtons(u) for _, b := range pressed { if b == u.Buttons["exit"] { if u.SGChan != nil { u.SGChan <- true u.SGChan = nil } u.IsOwner = false u.DiscGroups = make(map[string]*uistate.DiscStruct) u.ScanChan = make(chan bool) go sync.ScanForSG(u.Ctx, u.ScanChan, u) view.LoadDiscoveryView(u) } else if b == u.Buttons["start"] { if u.CurTable.AllReadyForNewRound() { successStart := sync.LogGameStart(u) for !successStart { successStart = sync.LogGameStart(u) } newHands := u.CurTable.Deal() successDeal := sync.LogDeal(u, u.CurPlayerIndex, newHands) for !successDeal { successDeal = sync.LogDeal(u, u.CurPlayerIndex, newHands) } } } else { for key, button := range u.Buttons { if b == button && (u.CurPlayerIndex < 0 || u.Debug) { if key == "joinTable" { u.CurPlayerIndex = 4 sync.LogPlayerNum(u) } else { playerNum := strings.Split(key, "-")[1] u.CurPlayerIndex, _ = strconv.Atoi(playerNum) sync.LogPlayerNum(u) } } } } } }
func onPlayerNum(key, value string, u *uistate.UIState) { userID, _ := strconv.Atoi(strings.Split(key, "/")[2]) playerNum, _ := strconv.Atoi(value) if playerNum >= 0 && playerNum < 4 { u.PlayerData[playerNum] = userID u.CurTable.GetPlayers()[playerNum].SetDoneScoring(true) } if playerNum == u.CurPlayerIndex && userID != util.UserID { u.CurPlayerIndex = -1 } if u.CurView == uistate.Arrange { view.LoadArrangeView(u) if u.CurTable.AllReadyForNewRound() && u.IsOwner { b := u.Buttons["start"] u.Eng.SetSubTex(b.GetNode(), b.GetImage()) b.SetHidden(false) b.SetDisplayingImage(true) if u.SGChan != nil { u.SGChan <- true u.SGChan = nil } } } }