示例#1
0
        public EndGameScene(bool win)
            : base()
        {
            if (win)
            {
                currentConversation = DialogueUtils.makeConversation(ConversationType.END_WIN);
            }
            else
            {
                currentConversation = DialogueUtils.makeConversation(ConversationType.END_LOSE);
            }

            // Initialize the player actions
            goBack = InputAction.A;

            // Create the score string
            scoreString = "" + ArenaController.instance.getScore();

            scorePos = new Vector2(BaseGame.SCREEN_WIDTH / 2 + 230, BaseGame.SCREEN_HEIGHT);
            scoreTitlePos = new Vector2(BaseGame.SCREEN_WIDTH / 2 + 230, -64);
        }
示例#2
0
        private static Conversation makeLevel9()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Congratulations are in order, friends!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Did we make it? Are we finally free?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Of course not!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Oh.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("How could I let you leave without your final test?", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Clementine not like tests. Clementine not know how to read.", TextChar.CLEM));
            c.addTextbox(new Textbox("And what kind of test might this be, fiend?", TextChar.LEO));
            c.addTextbox(new Textbox("You have proven yourself more than capable of surviving my dungeon, friends...", TextChar.VILLAIN));
            c.addTextbox(new Textbox("... You have slain countless monsters, and have triumphed over my dastardly traps...", TextChar.VILLAIN));
            c.addTextbox(new Textbox("... But before you escape this place, there is one last challenge for you to overcome...", TextChar.VILLAIN));
            c.addTextbox(new Textbox("... Me.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("...", TextChar.LEO));
            c.addTextbox(new Textbox("I eagerly await your audience.", TextChar.VILLAIN));

            return c;
        }
示例#3
0
        private static Conversation makeLevel8()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Clementine liked sewers better.", TextChar.CLEM));
            c.addTextbox(new Textbox("Shockingly, I feel the same. This house is positively ramshackle.", TextChar.LEO));
            c.addTextbox(new Textbox("We must be getting close. How big could this house be?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Father says that some of the abandoned buildings by the water once belonged to barons.", TextChar.LEO));
            c.addTextbox(new Textbox("Your point being?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("I suppose you've never seen the inside of a mansion. They're quite large.", TextChar.LEO));
            c.addTextbox(new Textbox("Fantastic.", TextChar.KLEPTO));

            return c;
        }
示例#4
0
        private static Conversation makeLevel7()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Now THIS, I could get used to.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Surely, you jest? These hallways are better suited to a criminal than a prince!", TextChar.LEO));
            c.addTextbox(new Textbox("... Oh, I see.", TextChar.LEO));
            c.addTextbox(new Textbox("I'm positively thrilled to see you so at home in my lodgings!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("I haven't had visitors in many a year.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Clementine cleans better than you. Clementine no get visitors.", TextChar.CLEM));
            c.addTextbox(new Textbox("All part of the appeal! I can't wait for you to meet my spiders.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("... Spiders?", TextChar.LEO));
            c.addTextbox(new Textbox("Of course! My family is quite large. I'm sure you'll get along well!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("I hate spiders.", TextChar.LEO));

            return c;
        }
示例#5
0
        private static Conversation makeLevel6()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Can... Can we take a moment to rest?", TextChar.LEO));
            c.addTextbox(new Textbox("Clementine not need rest.", TextChar.CLEM));
            c.addTextbox(new Textbox("Perhaps not, but we are not all freakishly large, anthropomorphic wolves.", TextChar.LEO));
            c.addTextbox(new Textbox("Clementine not a freak.", TextChar.CLEM));
            c.addTextbox(new Textbox("Enough, you two. We'll take a moment to rest. Is there a rule against that, O voice in the sky?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Not at all! Rest away. The sludgers like it when their prey is stationary.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("... Thanks for that.", TextChar.KLEPTO));

            return c;
        }
示例#6
0
        private static Conversation makeLevel5()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("What's that glowing?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("That, friends, is what I like to call a Mystery Box!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Awesome! I'll be steering clear of that.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("I am in full agreement.", TextChar.LEO));
            c.addTextbox(new Textbox("Don't be so hasty! My Mystery Box is a marvel of modern technology.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Open it, and you may find yourself rewarded for your courage...", TextChar.VILLAIN));
            c.addTextbox(new Textbox("... Or, you may find your pride... Injured. Hee hee!", TextChar.VILLAIN));

            return c;
        }
示例#7
0
        private static Conversation makeLevel4()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Clementine smells... wet.", TextChar.CLEM));
            c.addTextbox(new Textbox("Where are we now?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("The royal waterways! Never before has human excrement been transported so gracefully!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Wait, we're beneath the capital? My father will have your head when he finds out about this!", TextChar.LEO));
            c.addTextbox(new Textbox("Oh, hush. I've simply repurposed part of the sewers for my game. Where's the harm in that?", TextChar.VILLAIN));
            c.addTextbox(new Textbox("...You may want to watch your step, however. The ground is... sharp in places.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("I can't believe this. This... This is vandalism! My father's sewers have been ruined!", TextChar.LEO));
            c.addTextbox(new Textbox("I hate to break it to you, prince, but this place is CLEANER than most of the waterways.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("I've spent many years travelling through the sewers. The green slime is everywhere. Your father doesn't care one bit.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("I... I can't believe...", TextChar.LEO));
            c.addTextbox(new Textbox("That your glorious father might have his flaws? Shocker.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("I can't believe you use these waterways for... for travelling! This is crown property!", TextChar.LEO));
            c.addTextbox(new Textbox("For a moment, I thought you'd achieved understanding. Oh well.", TextChar.KLEPTO));

            return c;
        }
示例#8
0
        /**
         * This function is called when a scene is made active.
         */
        public override void loadScene(ContentManager content)
        {
            collidables = new List<Entity>();

            if (content == null)
                content = new ContentManager(SceneManager.Game.Services, "Content");

            // Load the shader
            HLSLeffect = content.Load<Effect>("Effects/Shader");

            if (!loaded)
            {
                GameSave.seed = Environment.TickCount;

                GameSave.level = controller.getLevel();
                GameSave.partyHealth = PartyUtils.getPartyHealth();
                GameSave.score = controller.getScore();
                //SAVE
                SaveUtils.getInstance().saveGame(GameSave);

                controller.setGenerator(new Random(GameSave.seed));
            }

            // Generate the arena
            ArenaBuilder builder = new ArenaBuilder(controller.getLevelSize(), controller.getLevelSize(),
                content, SceneManager.GraphicsDevice.Viewport.AspectRatio, controller.getLevelDifficulty());
            baseArena = builder.buildArenaBase();
            StartTile = builder.getStartTile();

            //
            if (effect == null)
                effect = new BasicEffect(SceneManager.Game.GraphicsDevice);//null

            FlashLightAngle = MIN_FLASH;
            Hero = new Character();
            camera = new Camera(effect, SceneManager.Game.Window.ClientBounds.Width, SceneManager.Game.Window.ClientBounds.Height, SceneManager.GraphicsDevice.Viewport.AspectRatio, Hero.getPOSITION());
            //load model
            Hero.LoadModel(content, SceneManager.GraphicsDevice.Viewport.AspectRatio);

            table = new ArenaTable(getStartTile(), content);
            skybox = new ArenaSkybox(getStartTile(), content);

            potionsUsed = 0;
            MysteryBoxUsed = false;

            //load CombatInfo at top left
            Vector2 start = new Vector2(10, 45);
            foreach (PlayerSprite ps in PartyUtils.getParty())
            {
                ps.getCombatInfo().init(content, start);
                start.Y += 60;
            }

            pauseMenu.load(content, SceneManager.GraphicsDevice.Viewport);
            pauseMenu.center();

            // Load the level start conversation
            currentConversation = DialogueUtils.makeConversation((ConversationType)controller.getLevel() - 1);
            currentConversation.load(content);

            //load score dispaly
            ScoreDisplay = new Scoring();
            ScoreDisplay.load(content);
        }
示例#9
0
        private static Conversation makeLevel2()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Excellent progress, friends! You make such a great team!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Shut up.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Your manners could use some work, however.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Good sir, might I trouble you for a glass of water? My throat is parched.", TextChar.LEO));
            c.addTextbox(new Textbox("Water? Oh no, there's none of that here. I hear the cave walls have a lovely dampness this time of year.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("That reminds me, though. Have you noticed the bottle of glistening, succulent liquid on each floor?", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Those are what I like to call 'health potions'! If you're feeling down and out, try a sip!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Clementine not trust man of big words.", TextChar.CLEM));
            c.addTextbox(new Textbox("Trust me, trust me not. When you're clinging to life, the choice is yours.", TextChar.VILLAIN));

            return c;
        }
示例#10
0
        // CONVERSATIONS //
        private static Conversation makeLevel1()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Zzz...Mommy...", TextChar.LEO));
            c.addTextbox(new Textbox("Rrghhhh...", TextChar.CLEM));
            c.addTextbox(new Textbox("Ugh. My head.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Where am I?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Good lord, a thief!", TextChar.LEO));
            c.addTextbox(new Textbox("Who, me?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Stay back, fiend! If you harm me, my father will have your head!", TextChar.LEO));
            c.addTextbox(new Textbox("Lovely. I'm lost with a prince.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("That's Prince Leonard to you, scoundrel.", TextChar.LEO));
            c.addTextbox(new Textbox("Fantastic. Hey prince, I think we have a bigger concern.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Good lord, a beast!", TextChar.LEO));
            c.addTextbox(new Textbox("Clementine not beast.", TextChar.CLEM));
            c.addTextbox(new Textbox("Ugh, it speaks.", TextChar.LEO));
            c.addTextbox(new Textbox("Little prince should watch its tongue.", TextChar.CLEM));
            c.addTextbox(new Textbox("I like you already, wolf-lady.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Greetings, friends! So good to see you alive and well.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("What new tragedy befalls me now?", TextChar.LEO));
            c.addTextbox(new Textbox("Ooh, tragedy. I like the sound of that!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("I have gathered the three of you here today so that we may play... a game!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("A game? Where are we?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("More importantly, where are YOU?", TextChar.LEO));
            c.addTextbox(new Textbox("Now now, it wouldn't be much fun if I spoiled the surprise.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Listen carefully, friends. Before you lies a sprawling dungeon, filled with monsters.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("On each floor of this dungeon, your task is to slay every monster that you come across.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Once you have done so, a trap door will open that will allow you to progress.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("And what if we decide not to play your... game?", TextChar.LEO));
            c.addTextbox(new Textbox("You will die.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Clementine want to rip your head from shoulders.", TextChar.CLEM));
            c.addTextbox(new Textbox("That's the spirit! Now, off with you!", TextChar.VILLAIN));

            return c;
        }
示例#11
0
        private static Conversation makeEndWin()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Fresh air at last!", TextChar.LEO));
            c.addTextbox(new Textbox("Depends on your definition of 'fresh', I suppose.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Where is your enthusiasm, sir? We have bested our foe!", TextChar.LEO));
            c.addTextbox(new Textbox("The bards will sing tales of my triumphs for generations to come!", TextChar.LEO));
            c.addTextbox(new Textbox("YOUR triumphs?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Of course! Without my leadership, we would surely have perished.", TextChar.LEO));
            c.addTextbox(new Textbox("I see...", TextChar.KLEPTO));
            c.addTextbox(new Textbox("But worry not, my conniving companion. I shall not forget your efforts.", TextChar.LEO));
            c.addTextbox(new Textbox("... That being said, there is some final business to attend to...", TextChar.LEO));
            c.addTextbox(new Textbox("I can barely contain my excitement.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("You see, there is but one problem. During our misadventures, you both committed a crime...", TextChar.LEO));
            c.addTextbox(new Textbox("A most dastardly, unforgivable crime...", TextChar.LEO));
            c.addTextbox(new Textbox("You have trespassed in my father's royal waterways!", TextChar.LEO));
            c.addTextbox(new Textbox("Give me a break.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("For this crime, you will be punished accordingly. A tribunal of three will decide your f--", TextChar.LEO));
            c.addTextbox(new Textbox("Hey, Clementine?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Clementine listens.", TextChar.CLEM));
            c.addTextbox(new Textbox("You're free to eat the small prince now.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Clementine has long awaited this moment.", TextChar.CLEM));
            c.addTextbox(new Textbox("Wait, what? You can't do this, I'm a PRINCE!", TextChar.LEO));
            c.addTextbox(new Textbox("No! Stop! NOOOOO--", TextChar.LEO));
            c.addTextbox(new Textbox("...", TextChar.KLEPTO));
            c.addTextbox(new Textbox("...", TextChar.KLEPTO));
            c.addTextbox(new Textbox("... Much better.", TextChar.KLEPTO));

            return c;
        }
示例#12
0
        private static Conversation makeEndLose()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("... No... Not like this...", TextChar.LEO));
            c.addTextbox(new Textbox("Hee hee! It seems your performance has come to an untimely end!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("... But what a MARVELOUS performance it was...", TextChar.VILLAIN));

            return c;
        }
示例#13
0
        private static Conversation makeBattleFirst()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Are those... bats?", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Good. Clementine was hungry.", TextChar.CLEM));
            c.addTextbox(new Textbox("Repulsive creature.", TextChar.LEO));
            c.addTextbox(new Textbox("That's not very nice. They're just bats.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("I was not referring to the bats.", TextChar.LEO));
            c.addTextbox(new Textbox("Let us slay these foul beasts without further delay. Have you mettle, display it now.", TextChar.LEO));
            c.addTextbox(new Textbox("If you say so, prince.", TextChar.KLEPTO));

            return c;
        }
示例#14
0
        private static Conversation makeBattleBoss()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("My God...", TextChar.LEO));
            c.addTextbox(new Textbox("I can't say that I was expecting... this.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Clementine not like feeling small.", TextChar.CLEM));
            c.addTextbox(new Textbox("Take it in slowly, friends.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("It's... It's hard not to. You stink.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("What ARE you?", TextChar.LEO));
            c.addTextbox(new Textbox("I see that your manners have failed to improve. No matter.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("By the time that I finish with you, you will have no need of manners!", TextChar.VILLAIN));
            c.addTextbox(new Textbox("...", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Because you'll be dead.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("Did that come through clear enough? It sounded better in my head.", TextChar.VILLAIN));
            c.addTextbox(new Textbox("This guy's a nut.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("I couldn't agree more.", TextChar.LEO));
            c.addTextbox(new Textbox("Clementine want kill this thing.", TextChar.CLEM));
            c.addTextbox(new Textbox("Finally, something for us to unite over.", TextChar.LEO));
            c.addTextbox(new Textbox("Let's kill this freak.", TextChar.KLEPTO));

            return c;
        }
示例#15
0
        /**
         * The update function called in each frame.
         */
        public override void update(GameTime gameTime, InputState inputState)
        {
            PlayerIndex player;

            // Handle pause input
            if (pause.wasPressed(inputState))
            {
                SoundUtils.Play(SoundUtils.Sound.Input);
                paused = !paused;
            }

            if (currentConversation != null)
            {
                currentConversation.Update(gameTime, inputState);

                // Check if we are done talking
                if (currentConversation.getDone())
                {
                    currentConversation = null;
                }
            }

            if (!paused)
            {
                if (currentConversation == null)
                {
                    //update Character
                    Hero.Update(gameTime, inputState);
                }

                camera.UpdateCamera(Hero.getPOSITION());

                // Update the spotlight
                if (flashTimer > 0)
                {
                    flashTimer--;
                }
                else
                {
                    if (!flashOn)
                    {
                        flashOn = true;
                    }
                }

                if (!flashOn)
                {
                    FlashLightAngle += MathUtils.smoothChange(FlashLightAngle, MIN_FLASH, FLASH_RATE);
                }
                else
                {

                    FlashLightAngle += MathUtils.smoothChange(FlashLightAngle, MAX_FLASH, FLASH_RATE);
                }

                // Update the tiles
                for (int i = 0; i < baseArena.GetLength(0); i++)
                {
                    for (int j = 0; j < baseArena.GetLength(1); j++)
                    {
                        baseArena[i, j].Update(gameTime, inputState);
                    }
                }

                // Rotation of camera
                if (rotateUp.wasPressed(inputState))
                {
                    camera.rotateCamera(true);
                }
                else if (rotateDown.wasPressed(inputState))
                {
                    camera.rotateCamera(false);
                }

                //update combatinfo
                foreach (PlayerSprite ps in PartyUtils.getParty())
                {
                    ps.getCombatInfo().updateArena(ps.getStats());
                }

                List<PlayerSprite> party = PartyUtils.getParty();

                if (party[0].getHealth() <= 0 && party[1].getHealth() <= 0 && party[2].getHealth() <= 0)
                {
                    // We have died in the arena :(

                    // Save the player's achieved score
                    SaveUtils save = SaveUtils.getInstance();
                    HighscoreData data = save.loadHighScores();
                    HighScoreUtils.updateHighScores(data.highscores, ArenaController.instance.getScore());
                    save.saveHighScores(data.highscores);

                    SceneManager.setScene(SceneState.endGame, new EndGameScene(false), true);
                }

                controller.update();
            }
            else
            {
                if (menu.wasPressed(inputState))
                {
                    SoundUtils.Play(SoundUtils.Sound.Input);
                    SceneManager.changeScene(SceneState.main);
                }
            }

            // DEBUG
            if (skip.Evaluate(inputState, null, out player))
            {
                collidables.Clear();
                controller.moveToNextArena();
            }

            //scoring
            if(ScoreDisplay.Begin)
            {
                ScoreDisplay.Update(gameTime, inputState);
            }
        }
示例#16
0
        public override void update(GameTime gameTime, InputState inputState)
        {
            PlayerIndex player;

            if (currentConversation != null)
            {
                currentConversation.Update(gameTime, inputState);

                // Check if we are done talking
                if (currentConversation.getDone())
                {
                    currentConversation = null;
                }
            }

            if (currentConversation == null)
            {
                if (goBack.Evaluate(inputState, null, out player))
                {
                    SaveUtils save = SaveUtils.getInstance();
                    save.DeleteSaveFile();
                    PartyUtils.Reset();

                    // Return to the main menu
                    SceneManager.changeScene(SceneState.main);
                }

                // Update the score position
                scorePos.Y += MathUtils.smoothChange(scorePos.Y, 200, MOVE_SPEED);
                scoreTitlePos.Y += MathUtils.smoothChange(scoreTitlePos.Y, 120, MOVE_SPEED);
            }
        }
示例#17
0
        private static Conversation makeLevel3()
        {
            Conversation c = new Conversation();
            c.addTextbox(new Textbox("Is there no end to these tunnels?", TextChar.LEO));
            c.addTextbox(new Textbox("Save your whining. You're going to need your energy if we're going to survive.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Oh, reliant on me are we? I understand completely! Every team needs a strong leader!", TextChar.LEO));
            c.addTextbox(new Textbox("Clementine did not vote prince man for leader. Clem not need leader.", TextChar.CLEM));
            c.addTextbox(new Textbox("Now now, my dear wolf... thing. This is not the time for insubordination!", TextChar.LEO));
            c.addTextbox(new Textbox("He's right, Clementine. Wait until we escape. THEN, you can kill and eat him.", TextChar.KLEPTO));
            c.addTextbox(new Textbox("Clementine will wait.", TextChar.CLEM));
            c.addTextbox(new Textbox("Fantastic jokes! Humour truly is the best way to keep our spirits up!", TextChar.LEO));

            return c;
        }
示例#18
0
        /// <summary>
        /// This function reloads the arena with a new difficulty.
        /// </summary>
        /// <param name="difficulty">The new arena's difficulty</param>
        public void loadNewArena(ArenaDifficulty difficulty)
        {
            collidables = new List<Entity>();

            if (content == null)
                content = new ContentManager(SceneManager.Game.Services, "Content");

            //populate the GameSave object
            GameSave.seed = Environment.TickCount;
            GameSave.level = controller.getLevel();
            GameSave.partyHealth = PartyUtils.getPartyHealth();
            GameSave.score = controller.getScore();
            //SAVE
            SaveUtils.getInstance().saveGame(GameSave);

            controller.setGenerator(new Random(GameSave.seed));

            // Set the new ambience colour
            ambientColour = controller.getAmbience();

            // Generate the arena
            ArenaBuilder builder = new ArenaBuilder(controller.getLevelSize(), controller.getLevelSize(),
                content, SceneManager.GraphicsDevice.Viewport.AspectRatio, difficulty);
            baseArena = builder.buildArenaBase();
            StartTile = builder.getStartTile();

            //
            if (effect == null)
                effect = new BasicEffect(SceneManager.Game.GraphicsDevice);//null

            Hero = new Character();
            camera = new Camera(effect, SceneManager.Game.Window.ClientBounds.Width, SceneManager.Game.Window.ClientBounds.Height, SceneManager.GraphicsDevice.Viewport.AspectRatio, Hero.getPOSITION());
            //load model
            Hero.LoadModel(content, SceneManager.GraphicsDevice.Viewport.AspectRatio);
            potionsUsed = 0;
            MysteryBoxUsed = false;

            // Load the level start conversation
            currentConversation = DialogueUtils.makeConversation((ConversationType)controller.getLevel() - 1);
            currentConversation.load(content);

            //load score dispaly
            ScoreDisplay = new Scoring();
            ScoreDisplay.load(content);

            // Debug arena
            printDebugArena();
        }