public void InitializeBattle() { testWorld testworld = new testWorld(); var player = testworld.AddAgent <Player>(Gender.Female, Singleton <Human> .GetInstance(), Singleton <MageClass> .GetInstance(), "NotInstantiated", 3, 5); PlayerInstanceManager.SetPlayer(player); Assert.IsTrue(testworld.Agents.Count == 1); var name = "Hostile Djin female"; var enemy = testworld.AddAgent <NPCBase>(Gender.Female, Singleton <Djin> .GetInstance(), Singleton <WarriorClass> .GetInstance(), name, 8, 25); enemy.AI = new HostileAI(enemy); enemy.IsHostile = true; enemy.ArmStarterGear(); enemy.AddPartyMember(Gender.Male, Singleton <Narugan> .GetInstance(), Singleton <MageClass> .GetInstance(), "Narugan Mage"); BattleFaction goodGuys = new BattleFaction(player); BattleFaction badGuys = new BattleFaction(enemy); goodGuys.Enemies.Add(badGuys); badGuys.Enemies.Add(goodGuys); Battlefield field = Singleton <Grasslands> .GetInstance(); Battle battle = Singleton <Battle> .GetInstance(); battle.NewBattle(field, new BattleFaction[] { goodGuys, badGuys }); }
private bool _CheckAllDie(BattleFaction faction) { for (int i = 0; i < faction.Units.Count; i++) { if (!faction.Units[i].Dead) { return false; } } return true; }
//630 036 //741 147 //852 258 void _ListTargets(BattleFaction faction) { switch (HitType) { case GameDef.ESkillHitType.single: { BattleUnit first = null; BattleTile bt = faction.theField.GetTile(Owner.theTile.Row, Owner.theTile.Column); if (bt.TheUnit != null && _CheckTarget(bt.TheUnit)) { first = bt.TheUnit; } if (first != null) { for (int i = 0; i < faction.Units.Count; i++) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; HitedUnits.Add(unit); break; } } break; } case GameDef.ESkillHitType.back_single: { BattleUnit first = null; BattleTile bt = faction.theField.GetTile(Owner.theTile.Row, GameBattle.instance.ActiveScene.theField.Cols - 1); if (bt.TheUnit != null && _CheckTarget(bt.TheUnit)) { first = bt.TheUnit; } if (first == null) { for (int i = faction.Units.Count - 1; i >= 0; i--) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; HitedUnits.Add(unit); break; } } break; } case GameDef.ESkillHitType.random_single: { while (true) { int idx = Random.Range(0, faction.Units.Count); BattleUnit unit = faction.Units[idx]; if (!_CheckTarget(unit)) continue; HitedUnits.Add(unit); break; } break; } case GameDef.ESkillHitType.row: { BattleUnit first = null; for (int i = 0; i < faction.Units.Count; i++) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; first = unit; break; } if (first != null) { HitedUnits.Add(first); int idx = first.theTile.Index; int mx = GameBattle.instance.ActiveScene.theField.Rows*GameBattle.instance.ActiveScene.theField.Cols - 1; while (idx <= mx) { idx += GameBattle.instance.ActiveScene.theField.Cols; BattleUnit unit = faction.Units[idx]; if (!_CheckTarget(unit)) continue; HitedUnits.Add(unit); } } break; } case GameDef.ESkillHitType.column: { BattleUnit first = null; for (int i = 0; i < faction.Units.Count; i++) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; first = unit; break; } if (first != null) { HitedUnits.Add(first); for (int i = 0; i < faction.Units.Count; i++) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; if (first.theTile.Column != unit.theTile.Column) continue; HitedUnits.Add(unit); } } break; } case GameDef.ESkillHitType.back_column: { BattleUnit first = null; for (int i = faction.Units.Count - 1; i >= 0; i--) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; first = unit; break; } if (first != null) { HitedUnits.Add(first); for (int i = 0; i < faction.Units.Count; i++) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; if (first.theTile.Column != unit.theTile.Column) continue; HitedUnits.Add(unit); } } break; } case GameDef.ESkillHitType.all: { for (int i = 0; i < faction.Units.Count; i++) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; HitedUnits.Add(unit); } break; } case GameDef.ESkillHitType.random_all: { int c = Table.hitCount > faction.Units.Count ? faction.Units.Count : Table.hitCount; int rc = 0; int mask = 0; for (int i = 0; i < faction.Units.Count; i++) { BattleUnit unit = faction.Units[i]; if (!_CheckTarget(unit)) continue; HitedUnits.Add(unit); ++rc; } while (c < rc) { int idx = Random.Range(0, HitedUnits.Count); HitedUnits.RemoveAt(idx); --rc; } break; } } }