private bool wholeBoardClick(TouchType eventtype, TouchRect touchbox, int x, int y, bool collide) { if (eventtype == TouchType.TouchDown) { if (State.Congrats && State.CardAnimationMotion.Completed) { Client.PlaySoundEffect(Assets.Sounds.Click); GameService.ClassicGameState.CharacterWon(State.CurrentChosenNumber.Character); ScreenTransitioner.ChangeToBoardCardSelectionScreen(); return(false); } } return(true); }
private bool passPress(TouchType eventtype, TouchRect touchbox, int x, int y, bool collide) { if (State.Congrats) { return(false); } if (GameService.ClassicGameState.Board.MoveToPosition != null) { return(false); } if (eventtype == TouchType.TouchDown) { Client.PlaySoundEffect(Assets.Sounds.Click); for (int i = State.Moves.Count - 1; i >= 0; i--) { PlayerPosition undo = State.Moves[i]; undo.Character.Position.X = undo.X; undo.Character.Position.Y = undo.Y; undo.Character.Direction = undo.Direction; } State.Moves.Clear(); GameService.ClassicGameState.ChosenNumbers.Remove(State.CurrentChosenNumber); if (GameService.ClassicGameState.ChosenNumbers.Count == 0) { ISquarePiece goal = GameService.ClassicGameState.Board.SquarePieces.First(a => a is GoalPiece && ((GoalPiece)a).Goal == GameService.ClassicGameState.CurrentGoal); GameService.ClassicGameState.Board.SquarePieces.Remove(goal); GameService.ClassicGameState.CharacterLost(); ScreenTransitioner.ChangeToBoardCardSelectionScreen(); return(false); } startTurn(GameService.ClassicGameState.ChosenNumbers[GameService.ClassicGameState.ChosenNumbers.Count - 1]); } return(false); }
private void PlayerWon(GoalPiece goal) { Point pos = Positions.CharacterPositions[State.CurrentChosenNumber.Character.CharacterNumber]; State.Congrats = true; IImage goalImage = GoalPiece.GetGoalImage(GameService.ClassicGameState.CurrentGoal); State.CardAnimationMotion = MotionManager.StartMotion(Positions.CongratsPosition.X, Positions.CongratsPosition.Y, new WaitMotion(200)) .Motion(new AnimationMotion(pos.X + 0, pos.Y + BoardConstants.TopAreaHeight, 2000, AnimationEasing.BounceEaseOut)) .OnRender((layer, posX, posY, animationIndex, percentDone) => { MainLayer.Save(); MainLayer.SetDrawingTransparency(1 - percentDone); MainLayer.DrawImage(goalImage, posX, posY, 220, 220, true); MainLayer.Restore(); }).OnComplete(() => { GameService.ClassicGameState.Board.SquarePieces.Remove(goal); GameService.ClassicGameState.CharacterWon(State.CurrentChosenNumber.Character); ScreenTransitioner.ChangeToBoardCardSelectionScreen(); }); }
private bool squareTouch(int boxX, int boxY, TouchType eventtype, TouchRect touchbox, int touchX, int touchY, bool collide) { if (State.ShowingTutorial > 0) { return(true); } switch (GameService.ClassicGameState.GameState) { case GameSelectionState.PlayerPlace: switch (eventtype) { case TouchType.TouchUp: if (collide) { if (State.CurrentCharacter.X == -1) { return(false); } if (GameService.ClassicGameState.Board.getItemsOnBoard(null, State.CurrentCharacter.X, State.CurrentCharacter.Y).Any(a => a is SolidWallPiece || a is GoalPiece || a is PlayerPiece)) { return(false); } Client.PlaySoundEffect(Assets.Sounds.Click); State.CurrentCharacter.Selected = false; GameService.ClassicGameState.Board.AddPlayer(State.CurrentCharacter.X, State.CurrentCharacter.Y, State.CurrentCharacter.CharacterNumber); State.CurrentCharacter.Playing = true; GameService.ClassicGameState.GameState = GameSelectionState.PlayerChoose; State.CurrentPlayerChoosing++; if (State.CurrentPlayerChoosing == GameService.ClassicGameState.NumberOfPlayers) { var cs = new List <Character>(); for (int i = 0; i < 6; i++) { while (true) { int rx = RandomUtil.RandomInt(0, BoardConstants.SquareWidth); int ry = RandomUtil.RandomInt(0, BoardConstants.SquareHeight); if (!GameService.ClassicGameState.Board.getItemsOnBoard(null, rx, ry).Any(a => a is SolidWallPiece || a is GoalPiece || a is PlayerPiece)) { foreach (Character chosenCharacter in GameService.ClassicGameState.Characters) { if (!chosenCharacter.Playing) { cs.Add(chosenCharacter); chosenCharacter.Playing = true; GameService.ClassicGameState.Board.AddPlayer(rx, ry, chosenCharacter.CharacterNumber); break; } } break; } } } foreach (Character c in cs) { c.Selected = false; c.Playing = false; } GameService.ClassicGameState.GameState = GameSelectionState.PickCard; ScreenTransitioner.ChangeToBoardCardSelectionScreen(); } } break; case TouchType.TouchMove: if ( !GameService.ClassicGameState.Board.getItemsOnBoard(null, boxX, boxY) .Any(a => a is SolidWallPiece || a is GoalPiece || a is PlayerPiece)) { State.CurrentCharacter.X = boxX; State.CurrentCharacter.Y = boxY; } break; } break; } return(false); }