public CombatFactory(LunchHourGames lhg, LoadingProgress progress, PlayerFactory playerFactory,
                      ObstacleFactory obstacleFactory, StageFactory stageFactory, InventoryFactory inventoryFactory)
 {
     this.lhg              = lhg;
     this.progress         = progress;
     this.playerFactory    = playerFactory;
     this.obstacleFactory  = obstacleFactory;
     this.stageFactory     = stageFactory;
     this.inventoryFactory = inventoryFactory;
 }
Beispiel #2
0
        public void LoadGameData(string heroName)
        {
            var heroSave = Storage.GetHero(heroName);

            try
            {
                CurrentStage = StageFactory.LoadStage(this, heroName, heroSave.CurrentStage);
                CurrentStage.RefreshFieldOfView(CurrentStage.CurrentHero.Position);
            }
            catch (StageNotFoundExpection ex)
            {
                throw;
            }
        }
Beispiel #3
0
        /// Allows the game component to perform any initialization it needs to before starting
        /// to run.  This is where it can query for any required services and load content.
        /// </summary>
        public override void Initialize()
        {
            loadingScreen = new LoadingScreen(lhg);

            inventoryFactory = new InventoryFactory(lhg, loadingScreen);
            playerFactory    = new PlayerFactory(lhg, loadingScreen, inventoryFactory);
            obstacleFactory  = new ObstacleFactory(lhg, loadingScreen);
            stageFactory     = new StageFactory(lhg, loadingScreen);
            combatFactory    = new CombatFactory(lhg, loadingScreen, playerFactory, obstacleFactory, stageFactory, inventoryFactory);

            showCombatLoading("combat1");
            //showControlsTestScreen();


            base.Initialize();
        }
 public GameStateMachine(IEntityPool entityPool, StageFactory stageFactory)
 {
     _handlerStack = new Stack<IGameplayContainer>();
     _entityPool = entityPool;
     _stageFactory = stageFactory;
 }
    private void Update()
    {
        switch (gameState)
        {
        case GameState.Default:
            break;

        case GameState.Wait:
            if (waitTimer > 0)
            {
                waitTimer -= Time.deltaTime;
            }
            else
            {
                gameState     = nextGameState;
                nextGameState = GameState.Default;
            }
            break;

        case GameState.GameInitialize:
            playerHasShieldUpgrade = false;
            playerHasSpeedUpgrade  = false;
            playerController.Respawn();
            playerController.PlayerFollowMouse     = false;
            playerController.playerIsLeavingScreen = true;

            //spawn animation here

            playerController.gameObject.transform.position = new Vector3(-ScreenBounds.x - 2, 0, -5);
            Wait(2, GameState.StartScreen);
            break;

        case GameState.StartScreen:
            playerController.PlayerCanGetHit       = false;
            playerController.playerIsLeavingScreen = false;
            playerController.PlayerFollowMouse     = true;

            GUIManager.Instance.OnTitleScreen();
            break;

        case GameState.StartGame:
            playerController.PlayerCanGetHit = false;
            GUIManager.Instance.OnGameStart();

            //Fade out/in animation maybe

            Wait(1, GameState.InitiateStage1);

            break;

        case GameState.EndGameLoss:
            //playerController.Death();
            playerController.PlayerCanGetHit = false;
            List <MonoBehaviour> objects = new List <MonoBehaviour>(FindObjectsOfType <Asteroid>());
            objects.AddRange(FindObjectsOfType <PowerupAbstract>());
            objects.AddRange(FindObjectsOfType <Objective>());
            foreach (MonoBehaviour obj in objects)
            {
                Destroy(obj.gameObject);
            }
            playerController.PlayerFollowMouse     = false;
            playerController.playerIsLeavingScreen = true;
            playerHasShieldUpgrade = false;
            playerHasSpeedUpgrade  = false;
            if (playerController.gameObject.transform.position.x > ScreenBounds.x)
            {
                Wait(1, GameState.GameInitialize);
            }
            break;

        case GameState.EndGameWin:
            playerController.PlayerCanGetHit = false;
            List <MonoBehaviour> objects2 = new List <MonoBehaviour>(FindObjectsOfType <Asteroid>());
            objects2.AddRange(FindObjectsOfType <PowerupAbstract>());
            objects2.AddRange(FindObjectsOfType <Objective>());
            foreach (MonoBehaviour obj in objects2)
            {
                Destroy(obj.gameObject);
            }
            playerHasShieldUpgrade                   = false;
            playerHasSpeedUpgrade                    = false;
            playerController.PlayerFollowMouse       = false;
            playerController.playerMoveTowardsMiddle = true;
            if (Vector3.Distance(playerController.gameObject.transform.position, new Vector3(0, 0, 0)) < 1)
            {
                playerController.playerMoveTowardsMiddle = false;
                playerController.playerIsLeavingScreen   = true;
                Wait(3, GameState.EndGameCinematic);
                //gameState = GameState.EndGameCinematic;
            }


            //end game animation
            break;

        case GameState.EndGameCinematic:

            for (int i = 0; i < CinematicObjects.Length; i++)
            {
                Instantiate(CinematicObjects[i], new Vector3(-ScreenBounds.x - 2, i * -6 + 9, 0), Quaternion.identity);
            }

            Wait(4, GameState.GameInitialize);
            break;

        case GameState.InitiateStage1:
            playerController.PlayerCanGetHit = false;
            CurrentStage = StageFactory.CreateStage1Manager(this.gameObject, Obstacles, Objective, Powerups);
            CurrentStage.EnterStage();
            gameState = GameState.Stage1;
            break;

        case GameState.Stage1:
            playerController.PlayerCanGetHit = true;
            CurrentStage.ExecuteStage();
            if (EndingConditionReached())
            {
                gameState = GameState.EndStage1;
            }
            break;

        case GameState.EndStage1:
            playerController.PlayerCanGetHit = false;
            CurrentStage.EndStage();
            if (CurrentStage.GetStageResult() == StageResult.Win)
            {
                Wait(5, GameState.InitiateIntermission1);
            }
            else
            {
                //Wait(5, GameState.Endgame);
                gameState = GameState.EndGameLoss;
            }
            //CurrentStage.ResetObjectiveCounter();
            break;

        case GameState.InitiateIntermission1:
            playerController.PlayerCanGetHit = false;
            intermissionStage = StageFactory.CreateIntermissionStage(this.gameObject, ShieldUpgrade, SpeedUpgrade, Alien);
            intermissionStage.EnterStage();
            gameState = GameState.Intermission1;
            break;

        case GameState.Intermission1:
            playerController.PlayerCanGetHit = false;
            if (intermissionStage.PlayerHasChosen())
            {
                CurrentStage.ResetObjectiveCounter();
                CurrentStage = null;
                gameState    = GameState.EndIntermission1;
            }
            break;

        case GameState.EndIntermission1:
            playerController.PlayerCanGetHit = false;
            intermissionStage.EndStage();
            gameState = GameState.InitiateStage2;
            break;

        case GameState.InitiateStage2:
            playerController.PlayerCanGetHit = false;
            CurrentStage = StageFactory.CreateStage2Manager(this.gameObject, Obstacles, Objective, Powerups);
            CurrentStage.EnterStage();
            gameState = GameState.Stage2;
            break;

        case GameState.Stage2:
            playerController.PlayerCanGetHit = true;
            CurrentStage.ExecuteStage();
            if (EndingConditionReached())
            {
                gameState = GameState.EndStage2;
            }
            break;

        case GameState.EndStage2:
            CurrentStage.EndStage();
            if (CurrentStage.GetStageResult() == StageResult.Win)
            {
                Wait(5, GameState.InitiateIntermission2);
            }
            else
            {
                //Wait(5, GameState.Endgame);
                gameState = GameState.EndGameLoss;
            }
            //CurrentStage.ResetObjectiveCounter();
            break;

        case GameState.InitiateIntermission2:
            intermissionStage = StageFactory.CreateIntermissionStage(this.gameObject, ShieldUpgrade, SpeedUpgrade, Alien);
            intermissionStage.EnterStage();
            gameState = GameState.Intermission2;
            break;

        case GameState.Intermission2:
            if (intermissionStage.PlayerHasChosen())
            {
                CurrentStage.ResetObjectiveCounter();
                gameState = GameState.EndIntermission2;
            }
            break;

        case GameState.EndIntermission2:
            intermissionStage.EndStage();
            gameState = GameState.InitiateStage3;
            break;

        case GameState.InitiateStage3:
            CurrentStage = StageFactory.CreateStage3Manager(this.gameObject, Obstacles, Objective, Powerups);
            CurrentStage.EnterStage();
            gameState = GameState.Stage3;
            break;

        case GameState.Stage3:
            CurrentStage.ExecuteStage();
            if (EndingConditionReached())
            {
                gameState = GameState.EndStage3;
            }
            break;

        case GameState.EndStage3:
            CurrentStage.EndStage();
            if (CurrentStage.GetStageResult() == StageResult.Win)
            {
                //Wait(5, GameState.InitiateStage3);
                gameState = GameState.EndGameWin;
            }
            else
            {
                //Wait(5, GameState.Endgame);
                gameState = GameState.EndGameLoss;
            }
            break;

        case GameState.InitiateIntermission3:
            break;

        case GameState.Intermission3:
            break;

        case GameState.EndIntermission3:
            break;

        default:
            break;
        }
    }
Beispiel #6
0
 public GameStateMachine(IEntityPool entityPool, StageFactory stageFactory)
 {
     _handlerStack = new Stack <IGameplayContainer>();
     _entityPool   = entityPool;
     _stageFactory = stageFactory;
 }