Exemple #1
0
    ////////////////////
    /// CONSTRUCTORS ///
    ////////////////////

    public Phalanx(FormationSettings settings)
    {
        this.settings = settings;
        linkDistance  = settings.standardPhalanxLinkDistance;

        terrainMask = LayerMask.GetMask("Terrain");
    }
        public static FormationMover AttachTo(GameObject go, FormationSettings formationSettings, LevelSettings levelSettings,
                                              int linesCount, int maxColumnsCount)
        {
            var mover = go.AddComponent <FormationMover>();

            mover._formationSettings = formationSettings;
            mover._startTime         = Time.time;
            mover._levelSettings     = levelSettings;
            mover._centerBounds      = CalculateCenterBounds(formationSettings.AllowedFormationBounds, formationSettings.UnitSize,
                                                             formationSettings.MaxUnitsDistance, linesCount, maxColumnsCount);
            return(mover);
        }
        public static FormationExpander AttachTo(GameObject go, FormationSettings formationSettings, List <FormationCell> formationCells,
                                                 int linesCount, int maxColumnsCount)
        {
            var expander = go.AddComponent <FormationExpander>();

            expander._formationSettings = formationSettings;
            expander._formationCells    = formationCells;
            expander._minSize           =
                GetFormationSize(linesCount, maxColumnsCount, formationSettings.UnitSize, formationSettings.MinUnitsDistance);
            expander._maxSize =
                GetFormationSize(linesCount, maxColumnsCount, formationSettings.UnitSize, formationSettings.MaxUnitsDistance);
            return(expander);
        }
        public void Initialize(FormationSettings formationSettings, LevelSettings levelSettings, EnemiesSpawner enemiesSpawner,
                               GameSoundController soundController)
        {
            _levelSettings   = levelSettings;
            _enemiesSpawner  = enemiesSpawner;
            _soundController = soundController;

            var maxColumnsCount = levelSettings.EnemiesLines.Max(line => line.EnemiesInLine);

            (_formationCells, _incomingWaves) = BuildFormation(levelSettings.EnemiesLines, maxColumnsCount);
            FormationExpander.AttachTo(gameObject, formationSettings, _formationCells,
                                       levelSettings.EnemiesLines.Count, maxColumnsCount);

            FormationMover.AttachTo(gameObject, formationSettings, levelSettings, levelSettings.EnemiesLines.Count,
                                    maxColumnsCount);
        }