本文整理汇总了Golang中hearts/img/uistate.UIState.AnimChans方法的典型用法代码示例。如果您正苦于以下问题:Golang UIState.AnimChans方法的具体用法?Golang UIState.AnimChans怎么用?Golang UIState.AnimChans使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类hearts/img/uistate.UIState
的用法示例。
在下文中一共展示了UIState.AnimChans方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: 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)
}
}
}
示例2: ResetAnims
func ResetAnims(u *uistate.UIState) {
for _, ch := range u.AnimChans {
ch <- true
}
u.SwitchingViews = false
u.AnimChans = make([]chan bool, 0)
}
示例3: 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
}
}
}
示例4: onTake
func onTake(value string, u *uistate.UIState) {
// logic
playerInt, _ := parsePlayerAndCards(value, u)
p := u.CurTable.GetPlayers()[playerInt]
passed := p.GetPassedTo()
for _, c := range passed {
p.AddToHand(c)
}
u.CurTable.GetPlayers()[playerInt].SetDoneTaking(true)
if u.SequentialPhases {
if u.CurTable.AllDoneTaking() {
for _, player := range u.CurTable.GetPlayers() {
if player.HasTwoOfClubs() {
u.CurTable.SetFirstPlayer(player.GetPlayerIndex())
}
}
// UI
if u.CurView == uistate.Play {
view.LoadPlayView(true, u)
}
}
} else if p.HasTwoOfClubs() {
u.CurTable.SetFirstPlayer(p.GetPlayerIndex())
// UI
if u.CurView == uistate.Play && u.CurPlayerIndex != playerInt {
view.LoadPlayView(true, u)
}
}
// UI
if u.CurView == uistate.Table {
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
reposition.AnimateTableCardTake(passed, u.CurTable.GetPlayers()[playerInt], quit, u)
view.LoadTableView(u)
}
}
示例5: onPass
func onPass(value string, u *uistate.UIState) {
// logic
playerInt, curCards := parsePlayerAndCards(value, u)
var receivingPlayer int
switch u.CurTable.GetDir() {
case direction.Right:
receivingPlayer = (playerInt + 3) % u.NumPlayers
case direction.Left:
receivingPlayer = (playerInt + 1) % u.NumPlayers
case direction.Across:
receivingPlayer = (playerInt + 2) % u.NumPlayers
}
for _, c := range curCards {
u.CurTable.GetPlayers()[playerInt].RemoveFromHand(c)
}
u.CurTable.GetPlayers()[playerInt].SetPassedFrom(curCards)
u.CurTable.GetPlayers()[receivingPlayer].SetPassedTo(curCards)
u.CurTable.GetPlayers()[playerInt].SetDonePassing(true)
// UI
if u.CurView == uistate.Table {
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
reposition.AnimateTableCardPass(curCards, receivingPlayer, quit, u)
view.LoadTableView(u)
} else if u.CurView == uistate.Take {
if u.SequentialPhases {
if u.CurTable.AllDonePassing() {
view.LoadTakeView(u)
}
} else if u.CurPlayerIndex == receivingPlayer {
view.LoadTakeView(u)
}
} else if u.CurView == uistate.Play && u.CurTable.AllDonePassing() {
view.LoadPlayView(true, u)
}
}
示例6: endClickTake
func endClickTake(t touch.Event, u *uistate.UIState) {
pressed := unpressButtons(u)
for _, b := range pressed {
if b == u.Buttons["take"] {
cards := make([]*card.Card, 0)
for _, d := range u.DropTargets {
c := d.GetCardHere()
if c != nil {
cards = append(cards, c)
}
}
for _, c := range cards {
sync.RemoveCardFromTarget(c, u)
// add card back to hand
reposition.ResetCardPosition(c, u.Eng)
reposition.RealignSuit(c.GetSuit(), c.GetInitial().Y, u)
}
ch := make(chan bool)
success := takeCards(ch, u.CurPlayerIndex, u)
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
go func() {
onDone := func() {
if !success {
fmt.Println("Invalid take")
} else {
if u.CurView == uistate.Take {
view.LoadPlayView(false, u)
}
}
}
reposition.SwitchOnChan(ch, quit, onDone, u)
}()
}
}
}
示例7: onTakeTrick
func onTakeTrick(value string, u *uistate.UIState) {
trickCards := u.CurTable.GetTrick()
recipient := u.CurTable.GetTrickRecipient()
roundOver := u.CurTable.SendTrick(recipient)
if roundOver {
u.RoundScores, u.Winners = u.CurTable.EndRound()
}
// UI
if u.CurView == uistate.Table {
sound.PlaySound(1, u)
var emptyTex sprite.SubTex
u.Eng.SetSubTex(u.Buttons["takeTrick"].GetNode(), emptyTex)
u.Buttons["takeTrick"].SetHidden(true)
var trickDir direction.Direction
switch recipient {
case 0:
trickDir = direction.Down
case 1:
trickDir = direction.Left
case 2:
trickDir = direction.Across
case 3:
trickDir = direction.Right
}
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
reposition.AnimateTableCardTakeTrick(trickCards, trickDir, quit, u)
reposition.SetTableDropColors(u)
view.SetNumTricksTable(u)
} else if u.CurView == uistate.Split {
var emptyTex sprite.SubTex
u.Eng.SetSubTex(u.Buttons["takeTrick"].GetNode(), emptyTex)
u.Buttons["takeTrick"].SetHidden(true)
if roundOver {
view.LoadScoreView(u)
} else {
var trickDir direction.Direction
switch recipient {
case u.CurPlayerIndex:
sound.PlaySound(0, u)
trickDir = direction.Down
case (u.CurPlayerIndex + 1) % u.NumPlayers:
trickDir = direction.Left
case (u.CurPlayerIndex + 2) % u.NumPlayers:
trickDir = direction.Across
case (u.CurPlayerIndex + 3) % u.NumPlayers:
trickDir = direction.Right
}
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
reposition.AnimateTableCardTakeTrick(trickCards, trickDir, quit, u)
view.LoadSplitView(true, u)
}
} else if u.CurView == uistate.Play {
if roundOver {
view.LoadScoreView(u)
} else {
if recipient == u.CurPlayerIndex {
sound.PlaySound(0, u)
}
view.LoadPlayView(true, u)
}
}
// logic
if len(u.Winners) > 0 {
u.CurTable.NewGame()
}
}
示例8: onPlay
func onPlay(value string, u *uistate.UIState) {
// logic
playerInt, curCards := parsePlayerAndCards(value, u)
playedCard := curCards[0]
u.CurTable.GetPlayers()[playerInt].RemoveFromHand(playedCard)
u.CurTable.SetPlayedCard(playedCard, playerInt)
u.CurTable.GetPlayers()[playerInt].SetDonePlaying(true)
trickOver := u.CurTable.TrickOver()
var recipient int
if trickOver {
recipient = u.CurTable.GetTrickRecipient()
}
// UI
if u.CurView == uistate.Table {
sound.PlaySound(0, u)
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
reposition.AnimateTableCardPlay(playedCard, playerInt, quit, u)
reposition.SetTableDropColors(u)
if trickOver {
// display take trick button
b := u.Buttons["takeTrick"]
u.Eng.SetSubTex(b.GetNode(), b.GetImage())
b.SetHidden(false)
}
} else if u.CurView == uistate.Split {
if playerInt != u.CurPlayerIndex {
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
reposition.AnimateSplitCardPlay(playedCard, playerInt, quit, u)
}
reposition.SetSplitDropColors(u)
view.LoadSplitView(true, u)
if trickOver {
if recipient == u.CurPlayerIndex {
// display take trick button
b := u.Buttons["takeTrick"]
u.Eng.SetSubTex(b.GetNode(), b.GetImage())
b.SetHidden(false)
}
} else if u.CardToPlay != nil && u.CurTable.WhoseTurn() == u.CurPlayerIndex {
ch := make(chan bool)
if err := PlayCard(ch, u.CurPlayerIndex, u); err != "" {
view.ChangePlayMessage(err, u)
RemoveCardFromTarget(u.CardToPlay, u)
// add card back to hand
reposition.ResetCardPosition(u.CardToPlay, u.Eng)
}
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)
}
} else if u.CurView == uistate.Play && u.CurPlayerIndex != playerInt {
view.LoadPlayView(true, u)
if u.CardToPlay != nil && u.CurTable.WhoseTurn() == u.CurPlayerIndex {
ch := make(chan bool)
if err := PlayCard(ch, u.CurPlayerIndex, u); err != "" {
view.ChangePlayMessage(err, u)
RemoveCardFromTarget(u.CardToPlay, u)
// add card back to hand
reposition.ResetCardPosition(u.CardToPlay, u.Eng)
reposition.RealignSuit(u.CardToPlay.GetSuit(), u.CardToPlay.GetInitial().Y, u)
}
u.CardToPlay = nil
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
go func() {
onDone := func() {
if u.CurView == uistate.Play {
view.LoadPlayView(true, u)
}
}
reposition.SwitchOnChan(ch, quit, onDone, u)
}()
}
}
}
示例9: endClickPlay
func endClickPlay(t touch.Event, u *uistate.UIState) {
if u.CurCard != nil {
if u.CurTable.GetTrick()[u.CurPlayerIndex] == nil {
if dropCardOnTarget(u.CurCard, 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)
sync.RemoveCardFromTarget(u.CurCard, u)
u.CardToPlay = nil
// add card back to hand
reposition.ResetCardPosition(u.CurCard, u.Eng)
reposition.RealignSuit(u.CurCard.GetSuit(), u.CurCard.GetInitial().Y, u)
}
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
go func() {
onDone := func() {
if u.CurView == uistate.Play {
view.LoadPlayView(true, u)
}
}
reposition.SwitchOnChan(ch, quit, onDone, u)
}()
} else {
u.CardToPlay = u.CurCard
}
} else {
// add card back to hand
if sync.RemoveCardFromTarget(u.CurCard, u) {
u.CardToPlay = nil
}
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 := unpressButtons(u)
for _, b := range pressed {
if b == u.Buttons["takeTrick"] {
var emptyTex sprite.SubTex
u.Eng.SetSubTex(b.GetNode(), emptyTex)
b.SetHidden(true)
u.Buttons["takeTrick"] = nil
for _, takenCard := range u.TableCards {
sync.RemoveCardFromTarget(takenCard, u)
reposition.BringNodeToFront(takenCard.GetNode(), u)
}
ch := make(chan bool)
reposition.AnimateHandCardTakeTrick(ch, u.TableCards, u)
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
go func() {
onDone := func() {
sync.LogTakeTrick(u)
}
reposition.SwitchOnChan(ch, quit, onDone, u)
}()
}
}
}
示例10: endClickPass
func endClickPass(t touch.Event, u *uistate.UIState) {
if u.CurCard != nil {
if !dropCardOnTarget(u.CurCard, t, u) {
// check to see if card was removed from a drop target
sync.RemoveCardFromTarget(u.CurCard, u)
// add card back to hand
reposition.ResetCardPosition(u.CurCard, u.Eng)
reposition.RealignSuit(u.CurCard.GetSuit(), u.CurCard.GetInitial().Y, u)
}
// check to see whether pull tab should be displayed
readyToPass := true
for _, d := range u.DropTargets {
if d.GetCardHere() == nil {
readyToPass = false
}
}
passButton := u.Buttons["pass"]
if readyToPass {
if passButton.GetDisplayingImage() {
u.Eng.SetSubTex(passButton.GetNode(), passButton.GetImage())
passButton.SetHidden(false)
passButton.SetDisplayingImage(true)
}
for _, img := range u.Other {
if img.GetDisplayingImage() {
u.Eng.SetSubTex(img.GetNode(), img.GetAlt())
img.SetHidden(false)
img.SetDisplayingImage(false)
}
}
} else {
var emptyTex sprite.SubTex
u.Eng.SetSubTex(passButton.GetNode(), emptyTex)
passButton.SetHidden(true)
passButton.SetDisplayingImage(true)
for _, img := range u.Other {
if !img.GetDisplayingImage() {
u.Eng.SetSubTex(img.GetNode(), img.GetImage())
img.SetHidden(false)
img.SetDisplayingImage(true)
}
}
}
}
pressed := unpressButtons(u)
for _, p := range pressed {
if p == u.Buttons["pass"] {
ch := make(chan bool)
success := passCards(ch, u.CurPlayerIndex, u)
quit := make(chan bool)
u.AnimChans = append(u.AnimChans, quit)
go func() {
onDone := func() {
if !success {
fmt.Println("Invalid pass")
} else if u.CurView == uistate.Pass {
view.LoadTakeView(u)
}
}
reposition.SwitchOnChan(ch, quit, onDone, u)
}()
}
}
u.CurCard = nil
}