From 272ec43e69ff5534b114b669ecbfdd66b60eb542 Mon Sep 17 00:00:00 2001 From: Matt Thorson Date: Sun, 14 Jun 2020 17:51:13 -0700 Subject: [PATCH] Rendering fixes. Console started --- src/Core/Game.bf | 7 ++++++- src/Core/Sprite.bf | 6 +++--- src/Static/Console.bf | 19 +++++++++++++++++++ src/Static/Draw.bf | 8 ++++++++ 4 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 src/Static/Console.bf diff --git a/src/Core/Game.bf b/src/Core/Game.bf index fc3e1f9..3029ca3 100644 --- a/src/Core/Game.bf +++ b/src/Core/Game.bf @@ -189,6 +189,8 @@ namespace Strawberry Time.PreviousElapsed = Time.Elapsed; Time.Elapsed += Time.Delta; } + + Strawberry.Console.Update(); } private void Render() @@ -204,6 +206,9 @@ namespace Strawberry { if (Scene != null) Scene.Draw(); + + if (Console.Enabled) + Strawberry.Console.Draw(); } public Scene Scene @@ -231,7 +236,7 @@ namespace Strawberry if (Directory.Exists(root)) LoadSpritesDir(root); else - Console.WriteLine("Content/Sprites folder does not exist!"); + Calc.Log("Content/Sprites folder does not exist!"); } private void LoadSpritesDir(String directory) diff --git a/src/Core/Sprite.bf b/src/Core/Sprite.bf index c8f10f0..ad65046 100644 --- a/src/Core/Sprite.bf +++ b/src/Core/Sprite.bf @@ -394,9 +394,9 @@ namespace Strawberry { for (int p = 0, int b = 0; p < len; p++, b += 4) { - pixels[p].R = (uint8)((int)bytes[b + 0] * bytes[b + 3] / 255); - pixels[p].G = (uint8)((int)bytes[b + 1] * bytes[b + 3] / 255); - pixels[p].B = (uint8)((int)bytes[b + 2] * bytes[b + 3] / 255); + pixels[p].R = (uint8)((int)bytes[b + 0] * (int)bytes[b + 3] / 255); + pixels[p].G = (uint8)((int)bytes[b + 1] * (int)bytes[b + 3] / 255); + pixels[p].B = (uint8)((int)bytes[b + 2] * (int)bytes[b + 3] / 255); pixels[p].A = bytes[b + 3]; } } diff --git a/src/Static/Console.bf b/src/Static/Console.bf new file mode 100644 index 0000000..6ff2259 --- /dev/null +++ b/src/Static/Console.bf @@ -0,0 +1,19 @@ +namespace Strawberry +{ + static public class Console + { + static public bool Enabled; + + static public void Update() + { + if (Input.KeyPressed(.Grave)) + Enabled = !Enabled; + } + + static public void Draw() + { + Calc.Log(); + Draw.Rect(0, 0, Game.Width, Game.Height, .Black * 0.4f); + } + } +} diff --git a/src/Static/Draw.bf b/src/Static/Draw.bf index 6756a6e..a106400 100644 --- a/src/Static/Draw.bf +++ b/src/Static/Draw.bf @@ -9,6 +9,7 @@ namespace Strawberry static public void Rect(int x, int y, int w, int h, Color color) { + SDL.SetRenderDrawBlendMode(Game.Renderer, .Blend); SDL.SetRenderDrawColor(Game.Renderer, color.R, color.G, color.B, color.A); SDL.RenderFillRect(Game.Renderer, &SDL.Rect((int32)(x - Camera.X), (int32)(y - Camera.Y), (int32)w, (int32)h)); } @@ -20,6 +21,7 @@ namespace Strawberry static public void HollowRect(int x, int y, int w, int h, Color color) { + SDL.SetRenderDrawBlendMode(Game.Renderer, .Blend); SDL.SetRenderDrawColor(Game.Renderer, color.R, color.G, color.B, color.A); SDL.RenderDrawRect(Game.Renderer, &SDL.Rect((int32)(x - Camera.X), (int32)(y - Camera.Y), (int32)w, (int32)h)); } @@ -34,6 +36,7 @@ namespace Strawberry let fromn = (Point)(from - Camera); let ton = (Point)(to - Camera); + SDL.SetRenderDrawBlendMode(Game.Renderer, .Blend); SDL.SetRenderDrawColor(Game.Renderer, color.R, color.G, color.B, color.A); SDL.RenderDrawLine(Game.Renderer, (int32)fromn.X, (int32)fromn.Y, (int32)ton.X, (int32)ton.Y); } @@ -55,6 +58,7 @@ namespace Strawberry ); } + SDL.SetRenderDrawBlendMode(Game.Renderer, .Blend); SDL.SetRenderDrawColor(Game.Renderer, color.R, color.G, color.B, color.A); SDL.RenderDrawLines(Game.Renderer, &points[0], (int32)steps + 1); } @@ -63,6 +67,8 @@ namespace Strawberry { SDL.Rect src = Strawberry.Rect(0, 0, sprite.Width, sprite.Height); SDL.Rect dst = Strawberry.Rect(position.X - Camera.X, position.Y - Camera.Y, sprite.Width, sprite.Height); + + SDL.SetTextureBlendMode(sprite[frame].Texture, .Blend); SDL.RenderCopy(Game.Renderer, sprite[frame].Texture, &src, &dst); } @@ -71,6 +77,8 @@ namespace Strawberry SDL.Point cnt = origin; SDL.Rect src = Strawberry.Rect(0, 0, sprite.Width, sprite.Height); SDL.Rect dst = Strawberry.Rect(position.X - origin.X - Camera.X, position.Y - origin.Y - Camera.Y, sprite.Width, sprite.Height); + + SDL.SetTextureBlendMode(sprite[frame].Texture, .Blend); SDL.RenderCopyEx(Game.Renderer, sprite[frame].Texture, &src, &dst, rotation, &cnt, .None); } }