本文整理汇总了Golang中hearts/img/uistate.UIState.SGChan方法的典型用法代码示例。如果您正苦于以下问题:Golang UIState.SGChan方法的具体用法?Golang UIState.SGChan怎么用?Golang UIState.SGChan使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类hearts/img/uistate.UIState
的用法示例。
在下文中一共展示了UIState.SGChan方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: endClickArrange
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)
}
}
}
}
}
}
示例2: endClickDiscovery
func endClickDiscovery(t touch.Event, u *uistate.UIState) {
pressed := unpressButtons(u)
for _, button := range pressed {
if button == u.Buttons["newGame"] {
gameStartData, logName := sync.CreateLogSyncgroup(u)
settingsName := sync.CreateSettingsSyncgroup(u)
if logName != "" && settingsName != "" {
sync.LogSettingsName(settingsName, u)
u.ScanChan <- true
u.ScanChan = nil
u.SGChan = make(chan bool)
go sync.Advertise(logName, settingsName, gameStartData, u.SGChan, u.Ctx)
view.LoadArrangeView(u)
}
} else {
for _, b := range u.Buttons {
if button == b {
s := strings.Split(b.GetInfo(), "|")
logAddr := s[0]
creator, _ := strconv.ParseBool(s[1])
fmt.Println("TRYING TO JOIN:", logAddr)
success := sync.JoinLogSyncgroup(logAddr, creator, u)
if success {
sgName := sync.CreateSettingsSyncgroup(u)
if sgName != "" {
sync.LogSettingsName(sgName, u)
}
u.ScanChan <- true
u.ScanChan = nil
view.LoadArrangeView(u)
} else {
fmt.Println("Failed to join")
}
}
}
}
}
}
示例3: onReady
func onReady(value string, u *uistate.UIState) {
// logic
playerInt, _ := parsePlayerAndCards(value, u)
u.CurTable.GetPlayers()[playerInt].SetDoneScoring(true)
// UI
if u.CurTable.AllReadyForNewRound() && u.IsOwner {
if u.CurView == uistate.Arrange {
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
}
} else if u.CurView == uistate.Score {
newHands := u.CurTable.Deal()
successDeal := LogDeal(u, u.CurPlayerIndex, newHands)
for !successDeal {
successDeal = LogDeal(u, u.CurPlayerIndex, newHands)
}
}
}
}
示例4: onPlayerNum
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
}
}
}
}