예제 #1
0
    internal void Setup(Game game)
    {
        var pPrefabContainer = game.pPrefabContainer;

        var cContainer    = ComponentContainer.Create();
        var roRockSpawner = new RockSpawner(pPrefabContainer.rock1, pPrefabContainer.rock2, cContainer.sSpawnPoints);
        var gameLogic     = new GameLogic(cContainer.lights, cContainer.player1, cContainer.player2, roRockSpawner);

        game.cContainer    = cContainer;
        game.roRockSpawner = roRockSpawner;

        roRockSpawner.output = gameLogic;

        cContainer.player1.input = new Player1InputHandler();
        cContainer.player2.input = new Player2InputHandler();

        cContainer.player1.output = gameLogic.player1OutputEvent;
        cContainer.player2.output = gameLogic.player2OutputEvent;

        cContainer.player1.currentLight = cContainer.lights.list.Where(l => l.positionIndex == 0).First();
        cContainer.player2.currentLight = cContainer.lights.list.Where(l => l.positionIndex == 1).First();

        gameLogic.player1ScoreInput = cContainer.player1Score;
        gameLogic.player2ScoreInput = cContainer.player2Score;

        gameLogic.player1Input = cContainer.player1;
        gameLogic.player2Input = cContainer.player2;

        gameLogic.rocks.rockLifeCycleOutput    = cContainer.lights;
        gameLogic.rocks.gGroundCollisionOutput = gameLogic;

        gameLogic.gGameOverOutput = new GameOverHandler(new List <GameOverOutput> {
            gameLogic.rocks,
            game.roRockSpawner,
            cContainer.player1Ending,
            cContainer.player2Ending,
            cContainer.player1,
            cContainer.player2
        });
    }