本文整理汇总了Golang中hearts/img/uistate.UIState类的典型用法代码示例。如果您正苦于以下问题:Golang UIState类的具体用法?Golang UIState怎么用?Golang UIState使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了UIState类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ResetAnims
func ResetAnims(u *uistate.UIState) {
for _, ch := range u.AnimChans {
ch <- true
}
u.SwitchingViews = false
u.AnimChans = make([]chan bool, 0)
}
示例2: beginClickSplit
func beginClickSplit(t touch.Event, u *uistate.UIState) {
u.CurCard = findClickedCard(t, u)
if u.CurCard != nil {
reposition.BringNodeToFront(u.CurCard.GetNode(), u)
}
buttonList := findClickedButton(t, u)
for _, b := range buttonList {
if b == u.Buttons["toggleSplit"] && !u.SwitchingViews {
ch := make(chan bool)
u.SwitchingViews = true
reposition.AnimateOutSplit(ch, u)
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
go func() {
onDone := func() {
u.SwitchingViews = false
if u.CurView == uistate.Split {
view.LoadPlayView(false, u)
}
}
reposition.SwitchOnChan(ch, quit, onDone, u)
}()
} else if b == u.Buttons["takeTrick"] {
pressButton(b, u)
} else {
handleDebugButtonClick(b, u)
}
}
}
示例3: onStop
func onStop(u *uistate.UIState) {
u.Eng.Release()
fps.Release()
u.Images.Release()
sound.ClosePlayers(u)
u.Done = true
u.Shutdown()
}
示例4: CreateLogSyncgroup
// Creates a new gamelog syncgroup
func CreateLogSyncgroup(u *uistate.UIState) (string, string) {
fmt.Println("Creating Log Syncgroup")
u.IsOwner = true
// Generate random gameID information to advertise this game
gameID := rand.Intn(1000000)
u.GameID = gameID
gameMap := make(map[string]interface{})
gameMap["type"] = "Hearts"
gameMap["playerNumber"] = 0
gameMap["gameID"] = gameID
gameMap["ownerID"] = util.UserID
value, err := json.Marshal(gameMap)
if err != nil {
fmt.Println("WE HAVE A HUGE PROBLEM:", err)
}
// Create gamelog syncgroup
logSGName := fmt.Sprintf("%s/croupier/%s/%%%%sync/gaming-%d", util.MountPoint, util.SBName, gameID)
allAccess := access.AccessList{In: []security.BlessingPattern{"..."}}
permissions := access.Permissions{
"Admin": allAccess,
"Write": allAccess,
"Read": allAccess,
"Resolve": allAccess,
"Debug": allAccess,
}
logPref := wire.TableRow{util.LogName, fmt.Sprintf("%d", u.GameID)}
logPrefs := []wire.TableRow{logPref}
tables := []string{util.MountPoint + "/croupier"}
logSpec := wire.SyncgroupSpec{
Description: "croupier syncgroup",
Perms: permissions,
Prefixes: logPrefs,
MountTables: tables,
IsPrivate: false,
}
myInfoCreator := wire.SyncgroupMemberInfo{8, true}
app := u.Service.App(util.AppName)
db := app.Database(util.DbName, nil)
logSG := db.Syncgroup(logSGName)
err = logSG.Create(u.Ctx, logSpec, myInfoCreator)
if err != nil {
fmt.Println("SYNCGROUP CREATE ERROR: ", err)
fmt.Println("JOINING INSTEAD...")
_, err2 := logSG.Join(u.Ctx, myInfoCreator)
if err2 != nil {
fmt.Println("SYNCGROUP JOIN ERROR: ", err2)
return string(value), ""
} else {
return string(value), logSGName
}
} else {
fmt.Println("Syncgroup created")
if logSGName != u.LogSG {
ResetGame(logSGName, true, u)
}
return string(value), logSGName
}
}
示例5: endClickSplit
func endClickSplit(t touch.Event, u *uistate.UIState) {
if u.CurCard != nil {
if u.CurTable.GetTrick()[u.CurPlayerIndex] == nil {
if dropCardHere(u.CurCard, u.DropTargets[0], t, u) {
if u.CurTable.WhoseTurn() == u.CurPlayerIndex {
ch := make(chan bool)
if err := sync.PlayCard(ch, u.CurPlayerIndex, u); err != "" {
view.ChangePlayMessage(err, u)
if sync.RemoveCardFromTarget(u.CurCard, u) {
u.CardToPlay = nil
u.BackgroundImgs[0].GetNode().Arranger = nil
var emptyTex sprite.SubTex
u.Eng.SetSubTex(u.BackgroundImgs[0].GetNode(), emptyTex)
u.BackgroundImgs[0].SetHidden(true)
}
// add card back to hand
reposition.ResetCardPosition(u.CurCard, u.Eng)
}
} else {
u.CardToPlay = u.CurCard
reposition.AlternateImgs(u.BackgroundImgs[0], u)
}
} else {
// add card back to hand
if sync.RemoveCardFromTarget(u.CurCard, u) {
u.CardToPlay = nil
u.BackgroundImgs[0].GetNode().Arranger = nil
var emptyTex sprite.SubTex
u.Eng.SetSubTex(u.BackgroundImgs[0].GetNode(), emptyTex)
u.BackgroundImgs[0].SetHidden(true)
}
reposition.ResetCardPosition(u.CurCard, u.Eng)
reposition.RealignSuit(u.CurCard.GetSuit(), u.CurCard.GetInitial().Y, u)
}
} else {
// add card back to hand
reposition.ResetCardPosition(u.CurCard, u.Eng)
reposition.RealignSuit(u.CurCard.GetSuit(), u.CurCard.GetInitial().Y, u)
}
}
pressed := getPressed(u)
unpress := true
for _, b := range pressed {
if b == u.Buttons["takeTrick"] {
sync.LogTakeTrick(u)
} else if b == u.Buttons["toggleSplit"] {
unpress = false
}
}
if unpress {
unpressButtons(u)
}
}
示例6: ResetGame
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)
}
示例7: RemoveAnimChan
func RemoveAnimChan(ch chan bool, u *uistate.UIState) {
for i, c := range u.AnimChans {
if ch == c {
u.AnimChans = append(u.AnimChans[:i], u.AnimChans[i+1:]...)
return
}
}
}
示例8: onStart
func onStart(glctx gl.Context, u *uistate.UIState) {
flag.Set("v23.credentials", "/sdcard/credentials")
vlog.Log.Configure(vlog.OverridePriorConfiguration(true), vlog.LogToStderr(true))
vlog.Log.Configure(vlog.OverridePriorConfiguration(true), vlog.Level(0))
ctx, shutdown := v23.Init()
u.Shutdown = shutdown
u.Ctx = ctx
u.Service = syncbase.NewService(util.MountPoint + "/croupier/" + util.SBName)
namespace := v23.GetNamespace(u.Ctx)
allAccess := access.AccessList{In: []security.BlessingPattern{"..."}}
permissions := access.Permissions{
"Admin": allAccess,
"Write": allAccess,
"Read": allAccess,
"Resolve": allAccess,
"Debug": allAccess,
}
namespace.SetPermissions(u.Ctx, util.MountPoint, permissions, "")
namespace.SetPermissions(u.Ctx, util.MountPoint+"/croupier", permissions, "")
u.Service.SetPermissions(u.Ctx, permissions, "")
u.Images = glutil.NewImages(glctx)
fps = debug.NewFPS(u.Images)
u.Eng = glsprite.Engine(u.Images)
u.Texs = texture.LoadTextures(u.Eng)
u.CurTable = table.InitializeGame(u.NumPlayers, u.Texs)
sound.InitPlayers(u)
sync.CreateTables(u)
// Create watch stream to update game state based on Syncbase updates
go sync.UpdateSettings(u)
}
示例9: UpdateImgPositions
func UpdateImgPositions(sz size.Event, u *uistate.UIState) {
// must copy u.WindowSize instead of creating a pointer to it
oldWindowSize := coords.MakeVec(u.WindowSize.X, u.WindowSize.Y)
updateWindowSize(sz, u)
if windowExists(oldWindowSize) && windowExists(u.WindowSize) {
u.Padding = scaleVar(u.Padding, oldWindowSize, u.WindowSize)
AdjustImgs(oldWindowSize, u)
}
}
示例10: 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)
}
}
}
}
}
}
示例11: handleDebugButtonClick
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)
}
}
示例12: 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")
}
}
}
}
}
}
示例13: beginClickPass
func beginClickPass(t touch.Event, u *uistate.UIState) {
u.CurCard = findClickedCard(t, u)
if u.CurCard != nil {
reposition.BringNodeToFront(u.CurCard.GetNode(), u)
}
buttonList := findClickedButton(t, u)
for _, b := range buttonList {
if b == u.Buttons["pass"] {
pressButton(b, u)
} else {
handleDebugButtonClick(b, u)
}
}
}
示例14: onPaint
func onPaint(glctx gl.Context, sz size.Event, u *uistate.UIState) {
if u.CurView == uistate.None {
u.ScanChan = make(chan bool)
go sync.ScanForSG(u.Ctx, u.ScanChan, u)
view.LoadDiscoveryView(u)
}
glctx.ClearColor(1, 1, 1, 1)
glctx.Clear(gl.COLOR_BUFFER_BIT)
now := clock.Time(time.Since(u.StartTime) * 60 / time.Second)
u.Eng.Render(u.Scene, now, sz)
if u.Debug {
fps.Draw(sz)
}
}
示例15: 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
}
}
}
}