コード例 #1
0
 private void Execute(PieceMoved msg)
 {
     if (msg.Piece == gameObject)
     {
         _moving = true;
         Message.Publish(new PieceMovementStarted());
         _msg = msg;
         gameInputActive.Lock(gameObject);
         _start = new Vector3(msg.From.X, msg.From.Y, transform.localPosition.z);
         _end   = new Vector3(msg.To.X, msg.To.Y, transform.localPosition.z);
         _t     = 0;
         var newFacing = Facing.Up;
         if (msg.Delta.Y > 0)
         {
             newFacing = Facing.Right;
         }
         if (msg.Delta.Y < 0)
         {
             newFacing = Facing.Left;
         }
         if (msg.Delta.X > 0)
         {
             newFacing = Facing.Up;
         }
         if (msg.Delta.X < 0)
         {
             newFacing = Facing.Down;
         }
         _previousFacings.Push(_facing);
         UpdateRotation(newFacing);
     }
 }
コード例 #2
0
        /// <summary>
        /// Called when a move is made
        /// </summary>
        /// <param name="pieceEliminated"> True if the move eliminate's the opponent's piece </param>
        /// <param name="eliminatedObject"> Opponent's piece that has been eliminated, otherwise null </param>
        /// <param name="piece"> Piece that was moved </param>
        /// <param name="originalPos"> Original Position of the piece ("x z")</param>
        /// <param name="newPos"> New Position of the Piece ("x z")</param>
        public void Move(bool pieceEliminated, GameObject eliminatedObject, GameObject piece, string originalPos, string newPos)
        {
            Eliminated.Add(pieceEliminated);

            if (pieceEliminated)
            {
                EliminatedObjects.Add(eliminatedObject);
            }

            else
            {
                EliminatedObjects.Add(null);
            }

            PieceMoved.Add(piece);
            PreviousXPosition.Add((int)char.GetNumericValue(originalPos[0]));
            PreviousZPosition.Add((int)char.GetNumericValue(originalPos[2]));
            CurrentXPosition.Add((int)char.GetNumericValue(newPos[0]));
            CurrentZPosition.Add((int)char.GetNumericValue(newPos[2]));

            // by default, pawnPromoted = false
            PawnPromoted.Add(false);

            // by default, check = false
            Check.Add(false);

            Count++;
        }
コード例 #3
0
 protected virtual void OnPieceMoved(Piece piece, Coords fromCoords, Coords newCoords)
 {
     PieceMoved?.Invoke(this, new PieceMovedArgs()
     {
         MovedPiece = piece, FromCoords = fromCoords, NewCoords = newCoords
     });
 }
コード例 #4
0
        public ArrayList Undo()
        {
            ArrayList undo = new ArrayList();

            undo.Add(Eliminated[Index]);
            undo.Add(EliminatedObjects[Index]);
            undo.Add(PieceMoved[Index]);
            undo.Add(PreviousXPosition[Index]);
            undo.Add(PreviousZPosition[Index]);
            undo.Add(CurrentXPosition[Index]);
            undo.Add(CurrentZPosition[Index]);
            undo.Add(Check[Index]);
            undo.Add(PawnPromoted[Index]);

            Eliminated.RemoveAt(Index);
            EliminatedObjects.RemoveAt(Index);
            PieceMoved.RemoveAt(Index);
            PreviousXPosition.RemoveAt(Index);
            PreviousZPosition.RemoveAt(Index);
            CurrentXPosition.RemoveAt(Index);
            CurrentZPosition.RemoveAt(Index);
            Check.RemoveAt(Index);
            PawnPromoted.RemoveAt(Index);
            Count--;

            return(undo);
        }
コード例 #5
0
 public ChessBroadCaster(NavigationManager navigationManager)
 {
     hubConnection = new HubConnectionBuilder()
                     .WithUrl(navigationManager.ToAbsoluteUri("/chesshub"))
                     .Build();
     hubConnection.On(nameof(StartGame), (string _game) => {
         var game = JsonConvert.DeserializeObject <Game>(_game);
         StartGame?.Invoke(game);
     });
     hubConnection.On(nameof(AddedToQueue), () => AddedToQueue?.Invoke());
     hubConnection.On(nameof(IsWinner), () => IsWinner?.Invoke());
     hubConnection.On(nameof(IsLooser), () => IsLooser?.Invoke());
     hubConnection.On(nameof(PieceMoved), (Position from, Position to) => PieceMoved?.Invoke(from, to));
 }
コード例 #6
0
 private void Execute(PieceMoved msg)
 {
     if (msg.Piece == gameObject)
     {
         _teleporting = true;
         _msg         = msg;
         gameInputActive.Lock(gameObject);
         _t = 0;
         _goToPosition.transform.localPosition = new Vector3(msg.Delta.X + 0.5f, msg.Delta.Y + 0.5f, _goToPosition.transform.localPosition.z);
         _goToPosition.gameObject.SetActive(true);
         rendererParticles.transform.localPosition = _renderer.transform.localPosition;
         rendererParticles.transform.rotation      = Quaternion.LookRotation(_goToPosition.transform.position - _renderer.transform.position);
         rendererParticles.Play();
     }
 }
コード例 #7
0
 public void Add(PieceMoved p) => Notify(() => Moves.Push(p));
コード例 #8
0
 void ApplyMove(PieceMove move)
 {
     chessBoard.Board[move.originPos.row, move.originPos.column] = null;
     chessBoard.Board[move.newPos.row, move.newPos.column]       = move.piece;
     PieceMoved?.Invoke(move.originPos, move.newPos);
 }
コード例 #9
0
ファイル: Game.cs プロジェクト: NivDunay/B18Ex05
 protected virtual void OnPieceMoved(Point i_Location, Point i_Destination)
 {
     PieceMoved?.Invoke(i_Location, i_Destination);
 }
コード例 #10
0
 private void OnPieceMoved(PieceMovedEventArgs e)
 {
     PieceMoved?.Invoke(this, e);
 }