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); } }
/// <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++; }
protected virtual void OnPieceMoved(Piece piece, Coords fromCoords, Coords newCoords) { PieceMoved?.Invoke(this, new PieceMovedArgs() { MovedPiece = piece, FromCoords = fromCoords, NewCoords = newCoords }); }
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); }
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)); }
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(); } }
public void Add(PieceMoved p) => Notify(() => Moves.Push(p));
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); }
protected virtual void OnPieceMoved(Point i_Location, Point i_Destination) { PieceMoved?.Invoke(i_Location, i_Destination); }
private void OnPieceMoved(PieceMovedEventArgs e) { PieceMoved?.Invoke(this, e); }