Exemplo n.º 1
0
    public void init()
    {
        //Instantiate the game controller depending on what game mode we are playing
        if (AsteroidsGameConfig.gameMode == GameModes.SinglePlayerMode)
        {
            gameModeController = new SinglePlayerModeGameController(this, singlePlayerSpawnPoint.position, AsteroidsGameConfig.playerConfigList[0]);
        }
        else if (AsteroidsGameConfig.gameMode == GameModes.MultiPlayerMode)
        {
            Vector3[] spawnPointList = multiPlayerSpawnPointList.Select(t => t.position).ToArray();
            gameModeController = new MultiPlayerModeGameController(this, spawnPointList, AsteroidsGameConfig.playerConfigList);
        }

        //Register for game flow events
        gameModeController.onGamePause   += onGamePause;
        gameModeController.onGameRestart += onGameRestart;
        gameModeController.onGameEnd     += onGameEnd;

        asteroidManager.init();
        powerUpManager.init();
        shipManager.init(gameModeController.playerList.Select(p => p.transform).ToList());

        //Add all the updatable items to the list
        updatableItemList.Add(asteroidManager);
        updatableItemList.Add(powerUpManager);
        updatableItemList.Add(shipManager);

        //Create pool instances for all the items that are going to be instantiated intensively
        PoolManager.instance.createPool(PoolManager.PoolIds.Bullet, Resources.Load("Prefabs/Bullet") as GameObject, 50);
        PoolManager.instance.createPool(PoolManager.PoolIds.HeavyBullet, Resources.Load("Prefabs/HeavyBullet") as GameObject, 50);
        PoolManager.instance.createPool(PoolManager.PoolIds.Particle, Resources.Load("Prefabs/Particle") as GameObject, 500);

        PoolManager.instance.createPool(PoolManager.PoolIds.AsteroidBig, Resources.Load("Prefabs/Asteroid_Big") as GameObject, 50);
        PoolManager.instance.createPool(PoolManager.PoolIds.AsteroidMedium, Resources.Load("Prefabs/Asteroid_Medium") as GameObject, 50);
        PoolManager.instance.createPool(PoolManager.PoolIds.AsteroidSmall, Resources.Load("Prefabs/Asteroid_Small") as GameObject, 50);

        PoolManager.instance.createPool(PoolManager.PoolIds.Ship, Resources.Load("Prefabs/Ship") as GameObject, 10);
    }