Esempio n. 1
0
 public Squad(SquadFormation formation = SquadFormation.FourFourTwo)
 {
     Formation    = formation;
     Lineup       = FormationLookup.AllowedPositions[Formation].ToDictionary(x => x.ToString(), x => (Guid?)null);
     Subs         = new Guid?[6];
     Instructions = new SquadInstructions();
     LastUpdated  = DateTime.Now;
 }
Esempio n. 2
0
    //Spawns enemies in formation
    private Enemy[] SpawnDefault(SquadFormation.Formation formation,
                                 Vector3[] locations,
                                 int numGeometryFaces,
                                 Vector3 originOffset,
                                 Quaternion originRotation,
                                 GameObject defaultPrefab)
    {
        if (locations != null && defaultPrefab != null)
        {
            //Create array to hold enemies
            Enemy[] enemies = new Enemy[locations.Length];

            //Instantiate each enemy, and set it's Formation Position and Spacing
            for (int count = 0; count < locations.Length; count++)
            {
                //Spawn unit while getting reference - FIX ROTATION!
                GameObject enemyObject = (GameObject)Instantiate(defaultPrefab, locations[count], transform.rotation); //

                enemies[count] = enemyObject.GetComponent <Enemy>();
                enemies[count].FormationPosition = locations[count]; //
            }

            //Link together references to other objects in the formation
            SquadFormation.LinkFormation(enemies, formation, numGeometryFaces);

            //Final Step - Safe to initialize the AI
            for (int count = 0; count < enemies.Length; count++)
            {
                int formationOrder = 0;

                if (count == 0)
                {
                    //Set the first enemy in the list to be the leader
                    enemies[count].SetAsLeader();
                }
                else
                {
                    Enemy leader = enemies[count];

                    while (!leader.IsLeader)
                    {
                        leader = leader.PrevInFormation;

                        formationOrder++;
                    }
                }

                enemies[count].FormationOrder = formationOrder;

                enemies[count].AI.InitAI();
            }

            return(enemies);
        }

        return(null);
    }
Esempio n. 3
0
    private void SetFormationUnitPositions()
    {
        //Determine spawn locations and formation positioning for units
        formationPositions = SquadFormation.PickFormation(formation,
                                                          numObjects,
                                                          spawnDistance,
                                                          numGeometryFaces,
                                                          wedgeAngle);

        unitPositions = new Vector3[formationPositions.Length];

        UpdateUnitPositions();
    }
Esempio n. 4
0
 public virtual void SquadChase()
 {
     Turn(transform.position + Vector3.up * 10);
     transform.position = SquadFormation.Position(leaderPos, FormationType, SubordinateN);
 }
Esempio n. 5
0
 public virtual void SquadPatrol()
 {
     Turn(SquadFormation.Position(leaderPos, FormationType, SubordinateN));
     transform.position = SquadFormation.Position(leaderPos, FormationType, SubordinateN);
 }
Esempio n. 6
0
 public override void SquadPlacement()
 {
     transform.position = SquadFormation.Position(leaderPos, FormationType, SubordinateN);
     squadPosDir        = transform.position - leaderPos.position;
     squadPosOffset     = Vector3.Distance(transform.position, leaderPos.position);//Vector3.Magnitude(transform.position - leaderPos.position);
 }
Esempio n. 7
0
 public override void SquadChase()
 {
     Turn(leaderPos.rotation);
     transform.position = SquadFormation.Position(leaderPos, FormationType, SubordinateN);
 }