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) } }
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) }() } } }