mirror of
				https://github.com/MaddyThorson/StrawberryBF.git
				synced 2025-11-04 01:41:33 +08:00 
			
		
		
		
	Module swapping works
This commit is contained in:
		@ -29,9 +29,13 @@ namespace Strawberry
 | 
			
		||||
 | 
			
		||||
		static public void LoadAll()
 | 
			
		||||
		{
 | 
			
		||||
			if (Textures != null)
 | 
			
		||||
				DeleteDictionaryAndKeysAndValues!(Textures);
 | 
			
		||||
			Textures = new .();
 | 
			
		||||
			Load<Texture>("textures", "*.png", Textures, (path) => PlatformLayer.LoadTexture(path));
 | 
			
		||||
 | 
			
		||||
			if (Sprites != null)
 | 
			
		||||
				DeleteDictionaryAndKeysAndValues!(Sprites);
 | 
			
		||||
			Sprites = new .();
 | 
			
		||||
			Load<Sprite>("sprites", "*.ase", Sprites, (path) => { return new Sprite(new String(path)); });
 | 
			
		||||
		}
 | 
			
		||||
@ -39,8 +43,9 @@ namespace Strawberry
 | 
			
		||||
		static public void DisposeAll()
 | 
			
		||||
		{
 | 
			
		||||
			DeleteDictionaryAndKeysAndValues!(Textures);
 | 
			
		||||
			Textures = null;
 | 
			
		||||
			DeleteDictionaryAndKeysAndValues!(Sprites);
 | 
			
		||||
			Sprite.[Friend]Dispose();
 | 
			
		||||
			Sprites = null;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		static private void Load<T>(String directory, String wildcard, Dictionary<String, T> putInto, function T(String) loader)
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,4 @@
 | 
			
		||||
using ImGui;
 | 
			
		||||
namespace Strawberry
 | 
			
		||||
{
 | 
			
		||||
	public abstract class Editor : Module
 | 
			
		||||
@ -10,8 +11,11 @@ namespace Strawberry
 | 
			
		||||
 | 
			
		||||
		protected override void Render()
 | 
			
		||||
		{
 | 
			
		||||
			PlatformLayer.RenderBegin();
 | 
			
		||||
			PlatformLayer.ImGuiRenderBegin();
 | 
			
		||||
			ImGui.PushID("Editor");
 | 
			
		||||
			UI();
 | 
			
		||||
			ImGui.PopID();
 | 
			
		||||
			PlatformLayer.ImGuiRenderEnd();
 | 
			
		||||
			PlatformLayer.RenderEnd();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,6 @@ namespace Strawberry
 | 
			
		||||
		private bool updating;
 | 
			
		||||
 | 
			
		||||
		public Batcher Batcher { get; private set; }
 | 
			
		||||
		public Color ClearColor = .Black;
 | 
			
		||||
		public bool DebugOverlay = false;
 | 
			
		||||
 | 
			
		||||
		private bool* keyboardState;
 | 
			
		||||
@ -92,14 +91,20 @@ namespace Strawberry
 | 
			
		||||
 | 
			
		||||
		protected override void Render()
 | 
			
		||||
		{
 | 
			
		||||
			PlatformLayer.RenderBegin();
 | 
			
		||||
 | 
			
		||||
			// game
 | 
			
		||||
			PlatformLayer.GameRenderBegin();
 | 
			
		||||
			Draw();
 | 
			
		||||
			PlatformLayer.GameRenderEnd();
 | 
			
		||||
 | 
			
		||||
			// debug overlay
 | 
			
		||||
			if (DebugOverlay)
 | 
			
		||||
			{
 | 
			
		||||
				PlatformLayer.ImGuiRenderBegin();
 | 
			
		||||
				ImGui.PushID("DebugOverlay");
 | 
			
		||||
				DebugOverlay();
 | 
			
		||||
				ImGui.PopID();
 | 
			
		||||
				PlatformLayer.ImGuiRenderEnd();
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,7 @@ namespace Strawberry
 | 
			
		||||
		public abstract bool Closed();			// Returns whether the game window has been closed
 | 
			
		||||
 | 
			
		||||
		//Rendering
 | 
			
		||||
		public abstract void RenderBegin();
 | 
			
		||||
		public abstract void GameRenderBegin();
 | 
			
		||||
		public abstract void GameRenderEnd();
 | 
			
		||||
		public abstract void ImGuiRenderBegin();
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,7 @@ namespace Strawberry.SDL2
 | 
			
		||||
		public int TextureMatrixLocation { get; private set; }
 | 
			
		||||
		public Texture.Filters TextureFilter = .Nearest;
 | 
			
		||||
		public bool TextureClamping = false;
 | 
			
		||||
		public Color ClearColor = .Black;
 | 
			
		||||
 | 
			
		||||
		private SDL.Window* window;
 | 
			
		||||
		private SDL.Surface* screen;
 | 
			
		||||
@ -169,6 +170,24 @@ namespace Strawberry.SDL2
 | 
			
		||||
 | 
			
		||||
		public override uint32 Ticks => SDL.GetTicks();
 | 
			
		||||
 | 
			
		||||
		public override void RenderBegin()
 | 
			
		||||
		{
 | 
			
		||||
			GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0);
 | 
			
		||||
			GL.glClearColor(ClearColor.Rf, ClearColor.Gf, ClearColor.Bf, ClearColor.Af);
 | 
			
		||||
			GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void GameRenderBegin()
 | 
			
		||||
		{
 | 
			
		||||
			GL.glUseProgram(glProgram);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void GameRenderEnd()
 | 
			
		||||
		{
 | 
			
		||||
			GL.glUseProgram(0);
 | 
			
		||||
			GL.glFlush();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void ImGuiRenderBegin()
 | 
			
		||||
		{
 | 
			
		||||
			ImGuiImplOpenGL3.NewFrame();
 | 
			
		||||
@ -182,20 +201,6 @@ namespace Strawberry.SDL2
 | 
			
		||||
			ImGuiImplOpenGL3.RenderDrawData(ImGui.ImGui.GetDrawData());
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void GameRenderBegin()
 | 
			
		||||
		{
 | 
			
		||||
			GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0);
 | 
			
		||||
			GL.glClearColor(Game.ClearColor.Rf, Game.ClearColor.Gf, Game.ClearColor.Bf, Game.ClearColor.Af);
 | 
			
		||||
			GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
 | 
			
		||||
			GL.glUseProgram(glProgram);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void GameRenderEnd()
 | 
			
		||||
		{
 | 
			
		||||
			GL.glUseProgram(0);
 | 
			
		||||
			GL.glFlush();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public override void RenderEnd()
 | 
			
		||||
		{
 | 
			
		||||
			SDL.GL_SwapWindow(window);
 | 
			
		||||
 | 
			
		||||
@ -27,6 +27,7 @@ namespace Strawberry
 | 
			
		||||
		static private void Shutdown()
 | 
			
		||||
		{
 | 
			
		||||
			Input.[Friend]Shutdown();
 | 
			
		||||
			Sprite.[Friend]Dispose();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user