Exemple #1
0
        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;
 }
Exemple #3
0
    //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;
            }
        }
    }