public void Move(GameData gd) { var player = GetPlayerOf(gd.NextPlayer); var move = player.ProposeMove(gd); var data = Game.TryMakeMove(gd.NextPlayer, move); UpdateOpponentState(player, data); if (data.Code != ResponseCode.OK && Game.State != GameState.GameEnded) { return; } OnMoveCompleted?.Invoke(data); if (Game.State == GameState.GameEnded) { OnGameEnded?.Invoke(data); } }
public async Task RunAuto() { var data = Game.StartGame(Team.Blue); OnGameStarted?.Invoke(data); Console.WriteLine("Runner started an auto game!"); while (Game.State != GameState.GameEnded) { Point move; if (Game.PlayerTurn == Team.Blue) { move = PlayerBlue.ProposeMove(data); PlayerRed.UpdateState(data); } else { move = PlayerRed.ProposeMove(data); PlayerBlue.UpdateState(data); } data = Game.TryMakeMove(Game.PlayerTurn, move); if (data.Code == ResponseCode.OK) { await OnMoveCompleted?.Invoke(data); } if (Game.State == GameState.GameEnded) { await OnMoveCompleted?.Invoke(data); await OnGameEnded?.Invoke(data); return; } await Task.Delay(500); } //if (data.Code == ResponseCode.Draw) // Console.WriteLine("Draw!"); //else // Console.WriteLine("{0} Lost! (Point {1})", data.NextPlayer, data.Updated); }
/// <summary> /// start moving the unit form node to node /// </summary> public void Move(List <MapNavNode> path, OnMoveCompleted callback) { if (path.Count == 0) { callback(); return; } this.onMoveCompleted = callback; this.path = path; this.moving = true; // unlink with tile LinkWithTile(null); // start moving targetPos = path[0].position; nextPathIdx = 1; journeyLength = Vector3.Distance(transform.position, targetPos); startTime = Time.time; movesLeft--; }
public async Task Move(string id, int row, int col) { if (!EnsureExists(id, out var player)) { return; } var data = Game.TryMakeMove(player.Team, new Point(col, row)); UpdateOpponentState(player, data); if (data.Code != ResponseCode.OK && Game.State != GameState.GameEnded) { return; } await OnMoveCompleted?.Invoke(data); if (Game.State == GameState.GameEnded) { await OnGameEnded?.Invoke(data); } //Move(data); }
protected void OnMoveCompletedCall() { OnMoveCompleted?.Invoke(); }