public void applyRealMovement(Vector3 pos, Quaternion rot, long freim) { MovementMade m = null; while (true) { if (movements.Count == 0) { break; } m = movements.Values[0]; if (m.serverOrder <= freim) { movements.RemoveAt(0); } else { break; } } this.lastKnownPosition = pos; this.lastKnownFrame = freim; this.transform.position = pos; // print("CURRENT" + m.pos + " "+ freim); // print("NEXT" + movements.Values[0].pos + " "+ movements.Values[0].serverOrder); // print(this.movements.Count); // this.ApplyAllMovements(); }
private void Apply(MovementMade e) { _gameBoard[e.X][e.Y] = _playersTurn; if (GameHelper.CheckGameFinished(_gameBoard)) { _gameFinished = true; } else { _playersTurn = (_playersTurn == 1) ? 2 : 1; } }
public async Task Handle(MovementMade message, CancellationToken token = new CancellationToken()) { await _databaseService.UpdateGameBoardAsync(message.Id, message.Version, message.PlayerNumber, message.X, message.Y); var game = await _databaseService.GetGameByIdAsync(message.Id); if (GameHelper.CheckGameFinished(game)) { await _databaseService.UpdateWinnerAsync(message.Id, message.Version, message.PlayerId); await _gameHub.Clients.Group(message.Id.ToString()).GameFinished(message.Id); } else { await _gameHub.Clients.Group(message.Id.ToString()).MovementMade(message.Id); } }