Exemple #1
0
        /// <summary>
        /// Called when the game has determined that UI logic needs to be processed.
        /// </summary>
        /// <param name="gameTime"></param>
        public void Update(GameTime gameTime)
        {
            //	update console :
            Game.Console.Update(gameTime);

            uiLayer.Clear();


            if (Game.GameEditor.Instance != null)
            {
                StartMenu.Visible = false;
                return;
            }

            var clientState = Game.GameClient.ClientState;

            dofFactor = MathUtil.Lerp((float)dofFactor, Game.Keyboard.IsKeyDown(Keys.Q) ? 1.0f : 0.0f, 0.1f);

            Game.RenderSystem.RenderWorld.DofSettings.PlaneInFocus = 7;
            Game.RenderSystem.RenderWorld.DofSettings.FocalLength  = 0.1f;
            Game.RenderSystem.RenderWorld.DofSettings.Enabled      = dofFactor > 0.01f;
            Game.RenderSystem.RenderWorld.DofSettings.Aperture     = dofFactor * 20;



            /*switch (clientState) {
             *      case ClientState.StandBy		: DrawStandByScreen(); break;
             *      case ClientState.Connecting		: DrawLoadingScreen("Connecting..."); break;
             *      case ClientState.Loading		: DrawLoadingScreen("Loading..."); break;
             *      case ClientState.Awaiting		: DrawLoadingScreen("Awaiting snapshot..."); break;
             *      case ClientState.Disconnected	: DrawLoadingScreen("Disconnected."); break;
             *      case ClientState.Active			: break;
             * }*/

            if (ShowMenu)
            {
                Game.Keyboard.ScanKeyboard = false;
                Game.Mouse.IsMouseCentered = false;
                Game.Mouse.IsMouseClipped  = false;
                Game.Mouse.IsMouseHidden   = false;
            }
            else
            {
                StartMenu.Visible = false;
                if (!Game.Console.IsShown)
                {
                    Game.Keyboard.ScanKeyboard = true;
                    Game.Mouse.IsMouseCentered = true;
                    Game.Mouse.IsMouseClipped  = true;
                    Game.Mouse.IsMouseHidden   = true;
                }
                else
                {
                    Game.Keyboard.ScanKeyboard = false;
                    Game.Mouse.IsMouseCentered = false;
                    Game.Mouse.IsMouseClipped  = false;
                    Game.Mouse.IsMouseHidden   = false;
                }
            }
        }
Exemple #2
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 #3
0
        /// <summary>
        /// Draws entire interface
        /// </summary>
        /// <param name="gameTime"></param>
        void Draw(GameTime gameTime, SpriteLayer spriteLayer)
        {
            if (SkipUserInterface)
            {
                return;
            }

            spriteLayer.Clear();

            Frame.DrawNonRecursive(RootFrame, gameTime, spriteLayer);
        }
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>
        ///
        /// </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 #6
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++;
                }
            }
        }