예제 #1
0
파일: DialogueBox.cs 프로젝트: hvak/Below
        /// <summary>
        /// draw the dialogue box
        /// </summary>
        public void Draw()
        {
            if (isActive)
            {
                ScreenManager.SpriteBatch.Begin();

                ScreenManager.SpriteBatch.Draw(box, boxLocation, Color.Gray);
                ScreenManager.SpriteBatch.Draw(currentPortrait, portraitLocation, Color.White);

                ScreenManager.SpriteBatch.DrawString(ScreenManager.ExtraSmallFont,
                                                     TextTools.WrapText(ScreenManager.ExtraSmallFont, currentDialogue, 280),
                                                     new Vector2(boxLocation.X + 140, boxLocation.Y + 8),
                                                     textColors[Index]);

                ScreenManager.SpriteBatch.DrawString(ScreenManager.ExtraSmallFont,
                                                     whoTalking[Index],
                                                     TextTools.CenterTextWithinRect(whoTalking[Index],
                                                                                    ScreenManager.ExtraSmallFont,
                                                                                    new Rectangle((int)boxLocation.X + 1, (int)boxLocation.Y + 130, 128, 34)),
                                                     Color.White);

                ScreenManager.SpriteBatch.DrawString(ScreenManager.ExtraSmallFont, "Press any key to continue...",
                                                     new Vector2(boxLocation.X + 140, boxLocation.Y + 135),
                                                     Color.White);

                ScreenManager.SpriteBatch.End();
            }
        }
예제 #2
0
        /// <summary>
        /// load assets
        /// </summary>
        public override void LoadContent()
        {
            SoundManager.PlaySong("Credits", true);

            belowLogo   = ImageTools.LoadTexture2D("Graphics/Logos/below_logo");
            belowVector = ImageTools.CenterImage_vect(belowLogo);

            sharkboyLogo = ImageTools.LoadTexture2D("Graphics/Logos/sharkboylogo");
            sharkVector  = new Vector2(ImageTools.CenterImage_vect(sharkboyLogo).X, 1400);

            cogThoughtLogo = ImageTools.LoadTexture2D("Graphics/Logos/cognitive");
            cogVector      = new Vector2(ImageTools.CenterImage(cogThoughtLogo).X, 3100);

            hv1 = new Vector2(TextTools.CenterText(ScreenManager.MediumFont, h1).X, 5000);
            hv2 = new Vector2(TextTools.CenterText(ScreenManager.SmallFont, h2).X, 5070);

            av1 = new Vector2(TextTools.CenterText(ScreenManager.MediumFont, a1).X, 6000);
            av2 = new Vector2(TextTools.CenterText(ScreenManager.SmallFont, a2).X, 6070);

            dv1 = new Vector2(TextTools.CenterText(ScreenManager.MediumFont, d1).X, 7000);
            dv2 = new Vector2(TextTools.CenterText(ScreenManager.SmallFont, d2).X, 7070);

            sv1 = new Vector2(TextTools.CenterText(ScreenManager.MediumFont, s1).X, 8000);
            sv2 = new Vector2(TextTools.CenterText(ScreenManager.SmallFont, s2).X, 8070);

            cv1 = new Vector2(TextTools.CenterText(ScreenManager.SmallFont, c1).X, 9000);
            cv2 = new Vector2(TextTools.CenterText(ScreenManager.SmallFont, c2).X, 9070);

            base.LoadContent();
        }
예제 #3
0
파일: ForestScreen.cs 프로젝트: hvak/Below
        /// <summary>
        /// load game content
        /// </summary>
        public override void LoadContent()
        {
            Pausable = true;
            ScreenOrder.SaveScreen(this);

            SoundManager.PlaySong("Forest", true);
            SoundManager.AddLoopingSound("rainlong", .05f);

            level            = new Level("Levels/forest.bmp");
            level.TileSetRow = 0;
            level.LoadLevel();
            level.CamType = "center";


            cave       = ImageTools.LoadTexture2D("Graphics/Misc/cave");
            caveBounds = new Rectangle(4541, 512 - 64, 32 * 4, 64 * 2);

            storm = new ThunderStorm();

            background = new ParallaxBackground(ImageTools.LoadTexture2D("Graphics/Backgrounds/sun_background"),
                                                ImageTools.LoadTexture2D("Graphics/Backgrounds/mountains_parallax"), ImageTools.LoadTexture2D("Graphics/Backgrounds/clouds_parallax"));

            dbox = new DialogueBox("Scripts/forestScript.txt");
            dbox.LoadDBox();
            dbox.IsActive = true;

            dbox2 = new DialogueBox("Scripts/forestScript2.txt");
            dbox2.LoadDBox();

            controls = new List <string>();
            controls.Add("Use <A> and <D> to move left and right and <W> or <Space> to jump.");
            controls.Add("This is your canteen.\nPress <Q> to take  a drink  and heal for 1 health.");
            controls.Add("This is your current health.");
            controls.Add("You can refill your canteen by interacting, <E>, with ponds like this.");
            controls.Add("Use the mouse to move your flashlight around.");
            controls.Add("You can pause the game by pressing <Escape>");

            controlsPos = new List <Vector2>();
            controlsPos.Add(level.Player.Position - new Vector2(210, 200));
            controlsPos.Add(new Vector2(1280 - 500, 960 - 75));
            controlsPos.Add(new Vector2(1280 - 245, 115));
            controlsPos.Add(new Vector2(2688 - 200, 416 + 70));
            controlsPos.Add(level.Player.Position - new Vector2(130, 150));
            controlsPos.Add(new Vector2(TextTools.CenterText(ScreenManager.ExtraSmallFont, controls[5]).X, 50));


            friend1           = new Animation(ImageTools.LoadTexture2D("Characters/Friends/pat"), new int[] { 0, 0, 0, 0, 0, 1 }, 32, true);
            friend1.FrameTime = .75f;
            f1Pos             = level.Player.Position + new Vector2(64, 0);

            friend2           = new Animation(ImageTools.LoadTexture2D("Characters/Friends/naomi"), new int[] { 0, 0, 1, 0, 0, 0 }, 32, true);
            friend2.FrameTime = .75f;
            f2Pos             = f1Pos + new Vector2(50, 0);

            friendBoundingBox = new Rectangle((int)f1Pos.X, (int)f1Pos.Y, 64 + 18, 64);

            ScreenManager.LightingEngine.SetLightPower(3);

            base.LoadContent();
        }
예제 #4
0
파일: ScreenManager.cs 프로젝트: hvak/Below
        /// <summary>
        /// draw graphical content for each screen in screenlist
        /// </summary>
        /// <param name="gameTime"></param>
        protected override void Draw(GameTime gameTime)
        {
            if (LightingEnabled)
            {
                GraphicsDevice.SetRenderTarget(LightingEngine.Colormap);
                GraphicsDevice.Clear(Color.Black);
            }

            var startIndex = ScreenList.Count - 1;

            while (ScreenList[startIndex].IsPopup)
            {
                startIndex--;
            }

            //to set a custom background color
            GraphicsDevice.Clear(ScreenList[startIndex].BackgroundColor);

            for (var i = startIndex; i < ScreenList.Count; i++)
            {
                ScreenList[i].Draw(gameTime);
            }


            if (LightingEnabled)
            {
                GraphicsDevice.SetRenderTarget(LightingEngine.Normalmap);
                SpriteBatch.Begin();
                SpriteBatch.Draw(normal, new Rectangle(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), Color.White);
                SpriteBatch.End();

                LightingEngine.Draw(null, SpriteBatch, new Rectangle(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT));
            }

            //in order to draw certain HUD content that shouldnt be darkened by the lighting
            for (var i = startIndex; i < ScreenList.Count; i++)
            {
                ScreenList[i].DrawOverLighting(gameTime);
            }

            if (fpsCount)
            {
                float deltaTime = (float)gameTime.ElapsedGameTime.TotalSeconds;

                fpsCounter.Update(deltaTime);

                var fps = string.Format("FPS: {0}", fpsCounter.AverageFramesPerSecond);

                SpriteBatch.Begin();

                SpriteBatch.DrawString(ExtraSmallFont, fps, new Vector2(TextTools.CenterText(ExtraSmallFont, fps).X, 0), Color.White);

                SpriteBatch.End();
            }

            base.Draw(gameTime);
        }
예제 #5
0
파일: Button.cs 프로젝트: hvak/Below
        /// <summary>
        /// set location
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public void Location(int x, int y)
        {
            position.X = x;
            position.Y = y;

            Vector2 size = font.MeasureString(text);

            textPos = TextTools.CenterTextWithinRect(text, font, new Rectangle(position.X, position.Y, buttonTexture.Width, buttonTexture.Height));
        }
예제 #6
0
        /// <summary>
        /// update timer and draw text
        /// </summary>
        /// <param name="gameTime"></param>
        public override void DrawOverLighting(GameTime gameTime)
        {
            time += (float)gameTime.ElapsedGameTime.TotalSeconds;

            if (time > 3)
            {
                ScreenManager.ChangeScreens(this, new MainMenuScreen());
            }

            ScreenManager.SpriteBatch.Begin();

            ScreenManager.SpriteBatch.DrawString(ScreenManager.SmallFont, text, TextTools.CenterText(ScreenManager.SmallFont, text), Color.White);

            ScreenManager.SpriteBatch.End();

            base.DrawOverLighting(gameTime);
        }
예제 #7
0
파일: PauseScreen.cs 프로젝트: hvak/Below
        /// <summary>
        /// draw buttons over lighting
        /// </summary>
        /// <param name="gameTime"></param>
        public override void DrawOverLighting(GameTime gameTime)
        {
            ScreenManager.SpriteBatch.Begin();

            Vector2 pos = new Vector2(TextTools.CenterText(ScreenManager.ExtraSmallFont, "Below auto-saves the game whenever a new scene is loaded").X, 50);

            ScreenManager.SpriteBatch.DrawString(ScreenManager.ExtraSmallFont, "Below auto-saves the game whenever a new scene is loaded", pos, Color.White);

            ScreenManager.SpriteBatch.End();

            resumeButton.Draw();
            settingsButton.Draw();
            exitButton.Draw();
            exitToDesktopButton.Draw();

            base.Draw(gameTime);
        }
예제 #8
0
파일: DeathScreen.cs 프로젝트: hvak/Below
        /// <summary>
        /// draw text over lighting
        /// </summary>
        /// <param name="gameTime"></param>
        public override void DrawOverLighting(GameTime gameTime)
        {
            ScreenManager.SpriteBatch.Begin();

            ScreenManager.SpriteBatch.DrawString(ScreenManager.LargeFont, "You died.", TextTools.CenterText(ScreenManager.LargeFont, "You died."), Color.DarkRed);

            ScreenManager.SpriteBatch.End();

            base.Draw(gameTime);
        }
예제 #9
0
파일: Ending2Screen.cs 프로젝트: hvak/Below
        /// <summary>
        /// draw text and update timer
        /// </summary>
        /// <param name="gameTime"></param>
        public override void DrawOverLighting(GameTime gameTime)
        {
            //fade out
            if (col.A > 0)
            {
                col *= .99f;
            }


            ScreenManager.SpriteBatch.Begin();

            ScreenManager.SpriteBatch.Draw(report, Vector2.Zero, Color.White);

            ScreenManager.SpriteBatch.DrawString(ScreenManager.SmallFont, "Press any key to continue...", TextTools.CenterTextWithinRect("Press any key to continue...", ScreenManager.SmallFont, new Rectangle(0, 0, 1280, 170)), Color.White);

            ScreenManager.SpriteBatch.Draw(overlay, new Rectangle(0, 0, 1280, 960), col);

            ScreenManager.SpriteBatch.End();

            base.Draw(gameTime);
        }