示例#1
0
 private void assignRescue(EnemyFormation formation, int type)
 {
     if (_formation.numberOfPikes < 10 || _formation.numberOfShots < 10)
     {
         Soldier soldier;
         switch(type)
         {
             case Soldier.TYPE_PIKE:
                 soldier = new Pikeman(this, formation.getPosition().X, formation.getPosition().Y, SIDE_PLAYER);
                 break;
             case Soldier.TYPE_SHOT:
                 soldier = new Arquebusier(this, formation.getPosition().X, formation.getPosition().Y, SIDE_PLAYER);
                 break;
             case Soldier.TYPE_SWINGER:
                 if(doppelType)
                     soldier = new Dopple(this, formation.getPosition().X, formation.getPosition().Y, SIDE_PLAYER);
                 else
                     soldier = new CrossbowmanPavise(this, formation.getPosition().X, formation.getPosition().Y, SIDE_PLAYER);
                 break;
             default:
                 soldier = new Dopple(this, formation.getPosition().X, formation.getPosition().Y, SIDE_PLAYER);
                 break;
         }
         formation.addSoldier(soldier);
         soldier.setSpeed(0.25f);
     }
         //TODO: HEY MAN, THIS COULD CAUSE PRO-BLEMS
     else
     {
         formation.addSoldier(new Dopple(this, formation.getPosition().X, formation.getPosition().Y, SIDE_PLAYER));
     }
 }
示例#2
0
        void FormListener.updateLevel(Level level, int selectedFormation)
        {
            _levelData = level;

            foreach (EnemyFormation f in _enemyFormations)
            {
                _deadFormations.Add(f);
            }

            foreach (Terrain t in _terrain)
            {
                _deadThings.Add(t);
            }

            _enemyFormations.Clear();
            _terrain.Clear();

            for (int f = 0; f < _levelData.formations.Count; f++)
            {
                _newEnemyFormation = new EnemyFormation(_levelData.formationNames[f], _levelData.formationActions[f], this, (_levelData.formationPositions[f]).X, (_levelData.formationPositions[f]).Y, 5, _levelData.formationSides[f], f);

                for (int i = 0; i < _levelData.formations[f].Count; i++)
                {
                    switch ((_levelData.formations[f])[i])
                    {
                        case Soldier.CLASS_MERC_PIKEMAN:
                            _newEnemyFormation.addSoldier(new Pikeman(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_MERC_ARQUEBUSIER:
                            _newEnemyFormation.addSoldier(new Arquebusier(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_MERC_CROSSBOWMAN:
                            _newEnemyFormation.addSoldier(new Crossbowman(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_MERC_SOLDIER:
                            _newEnemyFormation.addSoldier(new Targeteer(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_GOBLIN_SLINGER:
                            _newEnemyFormation.addSoldier(new Slinger(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_MERC_DOPPLE:
                            _newEnemyFormation.addSoldier(new Dopple(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_GOBLIN_BERZERKER:
                            _newEnemyFormation.addSoldier(new Berzerker(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_GOBLIN_BRIGAND:
                            _newEnemyFormation.addSoldier(new Brigand(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_MERC_CROSSBOWMAN_PAVISE:
                            _newEnemyFormation.addSoldier(new CrossbowmanPavise(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_MERC_CAVALRY:
                            _newEnemyFormation.addSoldier(new Cavalry(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_GOBLIN_WOLF:
                            _newEnemyFormation.addSoldier(new Wolf(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_ENEMY));
                            break;
                        case Soldier.CLASS_NPC_FLEER:
                            _newEnemyFormation.addSoldier(new NPCFleer(this, _newEnemyFormation.getPosition().X, _newEnemyFormation.getPosition().Y, SIDE_NEUTRAL));
                            break;
                    }
                }
                _enemyFormations.Add(_newEnemyFormation);
            }

            for (int f = 0; f < _levelData.terrains.Count; f++)
            {
                Terrain.getNewTerrain(_levelData.terrains[f], this, _levelData.terrainPositions[f].X, _levelData.terrainPositions[f].Y, f);
            }

            if (selectedFormation != -1 && _enemyFormations.Count > selectedFormation)
            {
                ((EnemyFormation)_enemyFormations[selectedFormation]).selected = true;
            }
        }