public LocalPlayer(BattleViewer battleViewer, Player kernelPlayer, Model.Battle battle, string name) : base(kernelPlayer, battle, name) { this.battleViewer = battleViewer; gridLayoutManager = GridLayoutManager.Instance; availableActions = new LazyDictionary <int, List <TargetableAction> >(); }
public OnlineBattle(BattleViewer battleViewer, bool shouldFindGame) : base(battleViewer) { if (shouldFindGame) { FindGame(); } }
public AIBattle(BattleViewer battleViewer, AIType aiType) : base(battleViewer) { int[] aiTeamIDs; var kernelPlayer1 = new Player(0); var kernelPlayer2 = new Player(1); HumanPlayer = new LocalPlayer(battleViewer, kernelPlayer1, this, GameManager.Instance.UserName); AiPlayer = CreateAI(aiType, battleViewer, kernelPlayer2, this, out aiTeamIDs); IEnumerable <GameObject> humanTeam; IEnumerable <Position> coords; IEnumerable <Position> flippedCoords; IEnumerable <GameObject> aiTeam = ClientFruitonFactory.CreateClientFruitonTeam(aiTeamIDs, battleViewer.Board); if (aiType == AIType.Tutorial) { int[] humanTeamIDs = { 2, 5, 15, 14, 12, 17, 21, 21, 30, 25 }; humanTeam = ClientFruitonFactory.CreateClientFruitonTeam(humanTeamIDs, battleViewer.Board); coords = Tutorial.CreatePositionsForArtificialTeam(humanTeam.Select(gameObject => gameObject.GetComponent <ClientFruiton>().KernelFruiton)); } else { humanTeam = ClientFruitonFactory.CreateClientFruitonTeam(gameManager.CurrentFruitonTeam.FruitonIDs, battleViewer.Board); coords = gameManager.CurrentFruitonTeam.Positions; } battleViewer.InitializeTeam(humanTeam, kernelPlayer1, kernelPlayer1.id == 0, coords.ToArray()); flippedCoords = BattleHelper.FlipCoordinates(coords, GameState.WIDTH, GameState.HEIGHT); battleViewer.InitializeTeam(aiTeam, kernelPlayer2, kernelPlayer2.id == 0, flippedCoords.ToArray()); var fruitons = new Array <object>(); foreach (var fruiton in humanTeam) { fruitons.push(fruiton.GetComponent <ClientFruiton>().KernelFruiton); } foreach (var fruiton in aiTeam) { fruitons.push(fruiton.GetComponent <ClientFruiton>().KernelFruiton); } Array <int> maps = GameManager.Instance.FruitonDatabase.getMapsIds(); int rndMapId = maps[Random.Range(0, maps.length)]; GameSettings kernelSettings = GameSettingsFactory.CreateGameSettings(rndMapId, battleViewer.GameMode); bool infiniteTurnTime = battleViewer.battleType == BattleType.TutorialBattle; Kernel = new Kernel(kernelPlayer1, kernelPlayer2, fruitons, kernelSettings, false, infiniteTurnTime); BattleReady(); }
public OfflineBattle(BattleViewer battleViewer) : base(battleViewer) { var kernelPlayer1 = new Player(0); var kernelPlayer2 = new Player(1); string login = GameManager.Instance.UserName; Player1 = new LocalPlayer(battleViewer, kernelPlayer1, this, "Player 1"); Player2 = new LocalPlayer(battleViewer, kernelPlayer2, this, "Player 2"); IEnumerable <GameObject> currentTeam = ClientFruitonFactory.CreateClientFruitonTeam(gameManager.CurrentFruitonTeam.FruitonIDs, battleViewer.Board); IEnumerable <GameObject> opponentTeam = ClientFruitonFactory.CreateClientFruitonTeam(gameManager.OfflineOpponentTeam.FruitonIDs, battleViewer.Board); RepeatedField <Position> coords = gameManager.CurrentFruitonTeam.Positions; battleViewer.InitializeTeam(currentTeam, kernelPlayer1, kernelPlayer1.id == 0, coords.ToArray()); RepeatedField <Position> flippedCoords = BattleHelper.FlipCoordinates(coords, GameState.WIDTH, GameState.HEIGHT); battleViewer.InitializeTeam(opponentTeam, kernelPlayer2, kernelPlayer2.id == 0, flippedCoords.ToArray()); var fruitons = new Array <object>(); foreach (var fruiton in currentTeam) { fruitons.push(fruiton.GetComponent <ClientFruiton>().KernelFruiton); } foreach (var fruiton in opponentTeam) { fruitons.push(fruiton.GetComponent <ClientFruiton>().KernelFruiton); } Array <int> maps = GameManager.Instance.FruitonDatabase.getMapsIds(); int rndMapId = maps[Random.Range(0, maps.length)]; GameSettings kernelSettings = GameSettingsFactory.CreateGameSettings(rndMapId, battleViewer.GameMode); Kernel = new Kernel(kernelPlayer1, kernelPlayer2, fruitons, kernelSettings, false, false); BattleReady(); }
private static AIPlayerBase CreateAI(AIType type, BattleViewer battleViewer, Player kernelPlayer, Battle battle, out int[] teamIds) { switch (type) { case AIType.Clowns: teamIds = AITeams.Clowns; return(new AggroGreedyAIPlayer(battleViewer, kernelPlayer, battle, "Joker")); case AIType.Santas: teamIds = AITeams.Santas; return(new ValueAI(battleViewer, kernelPlayer, battle, "Santa")); case AIType.SportsMen: teamIds = AITeams.SportsMen; return(new ValueAI(battleViewer, kernelPlayer, battle, "Special One")); case AIType.Tutorial: teamIds = AITeams.Tutorial; return(new TutorialPlayer(battleViewer, kernelPlayer, battle)); default: throw new ArgumentOutOfRangeException("type", type, null); } }
public RandomAIPlayer(BattleViewer battleViewer, Player kernelPlayer, Model.Battle battle) : base(battleViewer, kernelPlayer, battle, "Random AI") { }
public AggroGreedyAIPlayer(BattleViewer battleViewer, Player kernelPlayer, Model.Battle battle, string name) : base(battleViewer, kernelPlayer, battle, name) { }
protected AIPlayerBase(BattleViewer battleViewer, Player kernelPlayer, Model.Battle battle, string name) : base(kernelPlayer, battle, name) { this.battleViewer = battleViewer; }
public ValueAI(BattleViewer battleViewer, Player kernelPlayer, Model.Battle battle, string name) : base(battleViewer, kernelPlayer, battle, name) { }
public Simulation(Group attack, Group defense) { Attacker = attack; Defender = defense; CurrentRound = 0; TurnIntervalInSecond = 0; battleManager = Ioc.Kernel.Get <IBattleManagerFactory>() .CreateBattleManager(new BattleLocation(BattleLocationType.City, Defender.City.Id), new BattleOwner(BattleOwnerType.City, Defender.City.Id), Defender.City); battleManager.BattleReport.Battle = battleManager; bv = new BattleViewer(battleManager); // Add local to battle using (Concurrency.Current.Lock(Defender.Local)) { Defender.Local.BeginUpdate(); Defender.Local.AddFormation(FormationType.InBattle); Defender.Local.Template.LoadStats(TroopBattleGroup.Local); var localGroup = new CityDefensiveCombatGroup(battleManager.BattleId, 1, Defender.Local, Ioc.Kernel.Get <IDbManager>()); var combatUnitFactory = Ioc.Kernel.Get <ICombatUnitFactory>(); foreach (var kvp in Defender.Local[FormationType.Normal]) { combatUnitFactory.CreateDefenseCombatUnit(battleManager, Defender.Local, FormationType.InBattle, kvp.Key, kvp.Value).ToList().ForEach(localGroup.Add); } foreach (IStructure structure in Defender.City) { localGroup.Add(combatUnitFactory.CreateStructureCombatUnit(battleManager, structure)); } battleManager.Add(localGroup, BattleManager.BattleSide.Defense, false); Ioc.Kernel.Get <CityBattleProcedure>().MoveUnitFormation(Defender.Local, FormationType.Normal, FormationType.InBattle); Defender.Local.EndUpdate(); } // Add attack stub to battle using (Concurrency.Current.Lock(Attacker.AttackStub)) { Attacker.AttackStub.BeginUpdate(); Attacker.AttackStub.Template.LoadStats(TroopBattleGroup.Attack); Attacker.AttackStub.EndUpdate(); var attackGroup = new CityDefensiveCombatGroup(battleManager.BattleId, 2, Attacker.AttackStub, Ioc.Kernel.Get <IDbManager>()); var combatUnitFactory = Ioc.Kernel.Get <ICombatUnitFactory>(); foreach (var kvp in Attacker.AttackStub[FormationType.Normal]) { combatUnitFactory.CreateAttackCombatUnit(battleManager, Attacker.TroopObject, FormationType.InBattle, kvp.Key, kvp.Value).ToList().ForEach(attackGroup.Add); } battleManager.Add(attackGroup, BattleManager.BattleSide.Attack, false); } }
public TutorialPlayer(BattleViewer battleViewer, Player kernelPlayer, Model.Battle battle) : base(battleViewer, kernelPlayer, battle, "Dummy player") { }
protected Battle(BattleViewer battleViewer) { gameManager = GameManager.Instance; this.battleViewer = battleViewer; }