diff --git a/TrueCraft.Client/Interface/ChatInterface.cs b/TrueCraft.Client/Interface/ChatInterface.cs index d6b5117..1dc7d25 100644 --- a/TrueCraft.Client/Interface/ChatInterface.cs +++ b/TrueCraft.Client/Interface/ChatInterface.cs @@ -34,15 +34,20 @@ namespace TrueCraft.Client.Interface client.ChatMessage += HandleChatMessage; } - void HandleChatMessage(object sender, ChatMessageEventArgs e) + public void AddMessage(string message) { lock (Messages_lock) { - Messages.Add(new ChatMessage(e.Message)); - Console.WriteLine(e.Message); + Messages.Add(new ChatMessage(message)); + Console.WriteLine(message); } } + void HandleChatMessage(object sender, ChatMessageEventArgs e) + { + AddMessage(e.Message); + } + public void Update(GameTime gameTime) { lock (Messages_lock) diff --git a/TrueCraft.Client/TrueCraftGame.cs b/TrueCraft.Client/TrueCraftGame.cs index 5bf6911..8207102 100644 --- a/TrueCraft.Client/TrueCraftGame.cs +++ b/TrueCraft.Client/TrueCraftGame.cs @@ -31,6 +31,7 @@ namespace TrueCraft.Client private ConcurrentBag IncomingChunks { get; set; } private ConcurrentBag IncomingTransparentChunks { get; set; } private List TransparentChunkMeshes { get; set; } + public ChatInterface ChatInterface { get; set; } private RenderTarget2D RenderTarget; private Matrix Camera; private Matrix Perspective; @@ -114,7 +115,7 @@ namespace TrueCraft.Client fontFile = FontLoader.Load(f); var fontTexture = Content.Load("dejavu_0.png"); DejaVu = new FontRenderer(fontFile, fontTexture); - Interfaces.Add(new ChatInterface(Client, DejaVu)); + Interfaces.Add(ChatInterface = new ChatInterface(Client, DejaVu)); OpaqueEffect = new BasicEffect(GraphicsDevice); OpaqueEffect.EnableDefaultLighting(); @@ -149,6 +150,17 @@ namespace TrueCraft.Client // TODO: Rebindable keys // TODO: Horizontal terrain collisions + if (state.IsKeyDown(Keys.F2) && oldState.IsKeyUp(Keys.F2)) // Take a screenshot + { + var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), + ".truecraft", "screenshots", DateTime.Now.ToString("yyyy-MM-dd_H.mm.ss") + ".png"); + if (!Directory.Exists(Path.GetDirectoryName(path))) + Directory.CreateDirectory(Path.GetDirectoryName(path)); + using (var stream = File.OpenWrite(path)) + RenderTarget.SaveAsPng(stream, RenderTarget.Width, RenderTarget.Height); + ChatInterface.AddMessage(string.Format("Screenshot saved as {0}", Path.GetFileName(path))); + } + Microsoft.Xna.Framework.Vector3 delta = Microsoft.Xna.Framework.Vector3.Zero; if (state.IsKeyDown(Keys.Left) || state.IsKeyDown(Keys.A))