private void TriggerAIHandleBoardAction(GameState game) { Board.Game board = new Board.Game(); bool parse_success = board.Parse(game); if (parse_success == false) { this.AddLog("!!!!!!!!!!!!!!!!!!!! Failed to parse board in action start callback!!!!!!!!!!!!!!!"); return; } this.ai_communicator.UpdateBoard(board); }
public EndTurnEventArgs(GameState.EndTurnEventArgs e, GameState game) : base(e) { this.game = game; }
public ActionStartEventArgs(Parsers.PowerLogParser.ActionStartEventArgs e, GameState game) : base(e) { this.game = game; }
private void Log_reader_StartWaitingMainAction(object sender, GameState.StartWaitingMainActionEventArgs e) { //this.AddLog("StartWaitingMainAction called"); }
private string GetChoicesText(GameState game) { GameState.Entity player; if (!game.TryGetPlayerEntity(out player)) return ""; GameState.Entity opponent; if (!game.TryGetOpponentEntity(out opponent)) return ""; string result = "[Player Mulligan]" + Environment.NewLine; result += this.GetMulliganText(game, player); result += Environment.NewLine; result += "[Opponent Mulligan]" + Environment.NewLine; result += this.GetMulliganText(game, opponent); result += Environment.NewLine; int last_choice_id = -1; foreach (var choice_id in game.EntityChoices.Keys) last_choice_id = Math.Max(last_choice_id, choice_id); var last_choice = game.EntityChoices[last_choice_id]; if (last_choice.choice_type != "MULLIGAN" && last_choice.player_entity_id == game.PlayerEntityId) { if (last_choice.choices_has_sent == false) { result += "[Player Choices]" + Environment.NewLine; foreach (var choice in last_choice.choices) { string card_id = game.Entities[choice.Value].CardId; result += " [EntityId:" + choice.Value + "] " + card_id + Environment.NewLine; } } } return result; }
private string GetMulliganText(GameState game, GameState.Entity player) { string result = ""; if (player.HasTag(GameTag.MULLIGAN_STATE) == false) { return "State: UNKNOWN" + Environment.NewLine; } var state = (TAG_MULLIGAN)player.GetTag(GameTag.MULLIGAN_STATE); result += "State: " + state.ToString() + Environment.NewLine; if (state == TAG_MULLIGAN.INPUT) { var choices = game.EntityChoices.LastOrDefault(e => e.Value.player_entity_id == player.Id); if (choices.Value != null) { foreach (var choice in choices.Value.choices) { var choice_entity_id = choice.Value; var choice_entity = game.Entities[choice_entity_id]; result += " Card: " + choice_entity.CardId + Environment.NewLine; } } } return result; }
private string GetGameEntityText(GameState game) { string result = ""; GameState.Entity game_entity; if (!game.TryGetGameEntity(out game_entity)) return ""; if (game_entity.HasTag(GameTag.STEP)) { TAG_STEP step = (TAG_STEP)game_entity.GetTag(GameTag.STEP); result += "[TAG] STEP = " + step.ToString() + Environment.NewLine; } result += Environment.NewLine; result += "All tags: " + Environment.NewLine; foreach (var tag in game_entity.Tags) { result += "[TAG] " + tag.Key.ToString() + " -> " + tag.Value.ToString() + Environment.NewLine; } return result; }
private GameStage GetGameStage(GameState game) { GameState.Entity game_entity; if (!game.TryGetGameEntity(out game_entity)) return GameStage.STAGE_UNKNOWN; GameState.Entity player_entity; if (!game.TryGetPlayerEntity(out player_entity)) return GameStage.STAGE_UNKNOWN; GameState.Entity opponent_entity; if (!game.TryGetOpponentEntity(out opponent_entity)) return GameStage.STAGE_UNKNOWN; if (player_entity.GetTagOrDefault(GameTag.MULLIGAN_STATE, (int)TAG_MULLIGAN.INVALID) == (int)TAG_MULLIGAN.INPUT) { return GameStage.STAGE_PLAYER_MULLIGAN; } if (opponent_entity.GetTagOrDefault(GameTag.MULLIGAN_STATE, (int)TAG_MULLIGAN.INVALID) == (int)TAG_MULLIGAN.INPUT) { return GameStage.STAGE_OPPONENT_MULLIGAN; } if (!game_entity.HasTag(GameTag.STEP)) return GameStage.STAGE_UNKNOWN; TAG_STEP game_entity_step = (TAG_STEP)game_entity.GetTag(GameTag.STEP); if (game_entity_step != TAG_STEP.MAIN_ACTION) return GameStage.STAGE_GAME_FLOW; bool player_first = false; if (player_entity.GetTagOrDefault(GameTag.FIRST_PLAYER, 0) == 1) player_first = true; else if (opponent_entity.GetTagOrDefault(GameTag.FIRST_PLAYER, 0) == 1) player_first = false; else throw new Exception("parse failed"); int turn = game_entity.GetTagOrDefault(GameTag.TURN, -1); if (turn < 0) return GameStage.STAGE_UNKNOWN; if (player_first && (turn % 2 == 1)) return GameStage.STAGE_PLAYER_CHOICE; else if (!player_first && (turn % 2 == 0)) return GameStage.STAGE_PLAYER_CHOICE; else return GameStage.STAGE_OPPONENT_CHOICE; }