/// <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; } } }
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; }
/// <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); }
/// <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); }
/// <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)); }
/// <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++; } } }