Exemple #1
0
        /// <summary>
        /// Draw loading screen
        /// </summary>
        /// <param name="message"></param>
        void DrawLoadingScreen(string message)
        {
            var vp = Game.RenderSystem.DisplayBounds;

            uiLayer.Draw(background, 0, 0, vp.Width, vp.Height, Color.White);

            uiLayer.Draw(null, 0, vp.Height / 4, vp.Width, vp.Height / 2, new Color(0, 0, 0, 192));

            var h = textFont.LineHeight;

            //titleFont.DrawString( uiLayer, message, 100,vp.Height/2 - h*2, new Color(242,242,242) );
            textFont.DrawString(uiLayer, message, 100, vp.Height / 2 - h, new Color(220, 20, 60));
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            spriteLayer.Clear();

            fps.Add(gameTime.Fps);
            while (fps.Count > 60)
            {
                fps.RemoveAt(0);
            }

            var vp = rs.DisplayBounds;

            spriteLayer.Draw(null, 0, 0, vp.Width, 44 + 8, new Color(64, 64, 64, 192));

            RText(0, Color.Orange, "FPS = {0,5:###.00} - {1,6:###.00} {2,6:###.00} {3,6:###.00}", gameTime.Fps, fps.Min(), fps.Average(), fps.Max());
            RText(1, Color.Orange, "RW Instances = {0}", rs.RenderWorld.Instances.Count);
            RText(2, Color.Orange, "Entities  = {0}", editor.World.entities.Count);
            RText(3, Color.Orange, "Map Nodes = {0}/{1}", editor.Selection.Count(), editor.Map.Nodes.Count);

            if (editor.EnableSimulation)
            {
                RText(4, Color.Red, "SIMULATION MODE");
            }
            else
            {
                RText(4, Color.Lime, "EDITOR MODE");
            }

            LText(0, Color.LightGray, "[F1] - Dashboard     [Q] - Select   ");
            LText(1, Color.LightGray, "[F2] - Save Map      [W] - Move     ");
            LText(2, Color.LightGray, "[F5] - Build Content [E] - Rotate   ");
            LText(3, Color.LightGray, "                     [R] - Scale    ");


            var mp = game.Mouse.Position;

            if (editor.manipulator.IsManipulating)
            {
                var text = editor.manipulator.ManipulationText;
                var len  = Math.Max(16, text.Length);
                spriteLayer.Draw(null, mp.X, mp.Y - 16 + 48, len * 8 + 16, 16, new Color(0, 0, 0, 128));
                spriteLayer.DrawDebugString(mp.X + 4, mp.Y - 12 + 48, editor.manipulator.ManipulationText, Color.Yellow);
            }

            //spriteLayer.Draw( null, editor.SelectionMarquee, new Color(51,153,255,128) );
            spriteLayer.Draw(null, editor.SelectionMarquee, new Color(82, 133, 166, 128));
        }
Exemple #3
0
        void RefreshConsoleLayer()
        {
            if (!dirty)
            {
                return;
            }

            var vp = Game.GraphicsDevice.DisplayBounds;

            int cols = vp.Width / charWidth;
            int rows = vp.Height / charHeight / 2;

            int count = 1;

            consoleLayer.Clear();

            //	add small gap below command line...
            consoleLayer.Draw(null, 0, 0, vp.Width, vp.Height / 2 + 1, BackColor);

            var lines = LogRecorder.GetLines();

            scroll = MathUtil.Clamp(scroll, 0, lines.Count());

            /*var info = Game.GetReleaseInfo();
             * consoleFont.DrawString( consoleLayer, info, vp.Width - consoleFont.MeasureString(info).Width, vp.Height/2 - 1 * charHeight, ErrorColor );*/


            foreach (var line in lines.Reverse().Skip(scroll))
            {
                Color color = Color.Gray;

                switch (line.MessageType)
                {
                case LogMessageType.Information: color = MessageColor; break;

                case LogMessageType.Error: color = ErrorColor;   break;

                case LogMessageType.Warning: color = WarningColor; break;

                case LogMessageType.Verbose: color = VerboseColor; break;

                case LogMessageType.Debug: color = DebugColor;   break;
                }


                DrawString(consoleLayer, charWidth / 2, vp.Height / 2 - (count + 2) * charHeight, line.MessageText, color);
                //consoleFont.DrawString( consoleLayer, line.Message, , color );

                if (count > rows)
                {
                    break;
                }

                count++;
            }

            dirty = false;
        }
Exemple #4
0
        /// <summary>
        ///
        /// </summary>
        public override void Initialize()
        {
            testLayer = new SpriteLayer(GameEngine.GraphicsEngine, 1024);
            texture   = GameEngine.Content.Load <DiscTexture>("lena");
            debugFont = GameEngine.Content.Load <DiscTexture>("debugFont");

            testLayer.Clear();
            testLayer.Draw(texture, 10, 10 + 384, 256, 256, Color.White);

            testLayer.DrawDebugString(debugFont, 10, 276, "Lenna Soderberg", Color.White);

            GameEngine.GraphicsEngine.SpriteLayers.Add(testLayer);
        }
Exemple #5
0
        /// <summary>
        /// Draws frame stuff
        /// </summary>
        void DrawFrameBorders(SpriteLayer spriteLayer, int clipRectIndex)
        {
            int gx = GlobalRectangle.X;
            int gy = GlobalRectangle.Y;
            int w  = Width;
            int h  = Height;
            int bt = BorderTop;
            int bb = BorderBottom;
            int br = BorderRight;
            int bl = BorderLeft;

            var whiteTex = Game.RenderSystem.WhiteTexture;

            var clr = BorderColor;

            spriteLayer.Draw(whiteTex, gx, gy, w, bt, clr, clipRectIndex);
            spriteLayer.Draw(whiteTex, gx, gy + h - bb, w, bb, clr, clipRectIndex);
            spriteLayer.Draw(whiteTex, gx, gy + bt, bl, h - bt - bb, clr, clipRectIndex);
            spriteLayer.Draw(whiteTex, gx + w - br, gy + bt, br, h - bt - bb, clr, clipRectIndex);

            spriteLayer.Draw(whiteTex, GetBorderedRectangle(), BackColor, clipRectIndex);
        }
Exemple #6
0
        /// <summary>
        ///
        /// </summary>
        protected virtual void DrawFrameImage(SpriteLayer spriteLayer, int clipRectIndex)
        {
            if (Image == null)
            {
                return;
            }

            var gp = GetPaddedRectangle();
            var bp = GetBorderedRectangle();

            if (ImageMode == FrameImageMode.Stretched)
            {
                spriteLayer.Draw(Image, bp, ImageColor, clipRectIndex);
                return;
            }

            if (ImageMode == FrameImageMode.Centered)
            {
                int x = bp.X + gp.Width / 2 - Image.Width / 2 + ImageOffsetX;
                int y = bp.Y + gp.Height / 2 - Image.Height / 2 + ImageOffsetY;
                spriteLayer.Draw(Image, x, y, Image.Width, Image.Height, ImageColor, clipRectIndex);
                return;
            }

            if (ImageMode == FrameImageMode.Tiled)
            {
                spriteLayer.Draw(Image, bp, new Rectangle(0, 0, bp.Width, bp.Height), ImageColor, clipRectIndex);
                return;
            }

            if (ImageMode == FrameImageMode.DirectMapped)
            {
                spriteLayer.Draw(Image, bp, bp, ImageColor, clipRectIndex);
                return;
            }
        }
Exemple #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            var vp = Game.GraphicsDevice.DisplayBounds;

            RefreshConsoleLayer();

            if (isShown)
            {
                showFactor = MathUtil.Clamp(showFactor + FallSpeed * gameTime.ElapsedSec, 0, 1);
            }
            else
            {
                showFactor = MathUtil.Clamp(showFactor - FallSpeed * gameTime.ElapsedSec, 0, 1);
            }

            consoleLayer.Visible = showFactor > 0;

            //Log.Message("{0} {1}", showFactor, Show);
            float offset = (int)(-(vp.Height / 2 + 1) * (1 - showFactor));

            consoleLayer.SetTransform(new Vector2(0, offset), Vector2.Zero, 0);
            editLayer.SetTransform(0, vp.Height / 2 - charHeight);

            Color cursorColor = CmdLineColor;

            cursorColor.A = (byte)(cursorColor.A * (0.5 + 0.5 * Math.Cos(2 * CursorBlinkRate * Math.PI * gameTime.Total.TotalSeconds) > 0.5 ? 1 : 0));

            editLayer.Clear();

            //consoleFont.DrawString( editLayer, "]" + editBox.Text, 0,0, Config.CmdLineColor );
            //consoleFont.DrawString( editLayer, "_", charWidth + charWidth * editBox.Cursor, 0, cursorColor );
            var text  = "]" + editBox.Text;
            var color = CmdLineColor;

            DrawString(editLayer, charWidth / 2, -charHeight / 2, text, color);
            DrawString(editLayer, charWidth + charWidth / 2 + charWidth * editBox.Cursor, -charHeight / 2, "_", cursorColor);


            var version = Game.GetReleaseInfo();

            DrawString(editLayer, vp.Width - charWidth / 2 - charWidth * version.Length, -charHeight - charHeight / 2, version, VersionColor);

            var frameRate = string.Format("fps = {0,7:0.00}", gameTime.Fps);

            DrawString(editLayer, vp.Width - charWidth / 2 - charWidth * frameRate.Length, -charHeight / 2, frameRate, VersionColor);


            //
            //	Draw suggestions :
            //
            if (isShown && suggestion != null && suggestion.Candidates.Any())
            {
                var candidates = suggestion.Candidates;

                var x = 0;
                var y = charHeight + 1;
                var w = (candidates.Max(s => s.Length) + 4) * charWidth;
                var h = (candidates.Count() + 1) * charHeight;

                w = Math.Max(w, charWidth * 16);

                editLayer.Draw(null, x, y, w, h, BackColor);

                int line = 0;
                foreach (var candidate in candidates)
                {
                    DrawString(editLayer, x + charWidth + charWidth / 2, y + charHeight * line, candidate, HelpColor);
                    line++;
                }
            }
        }