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