From 21667faac9f2a68fcb81f4c436d5950de23d5f3b Mon Sep 17 00:00:00 2001 From: abux Date: Sun, 12 Jul 2026 20:56:44 +0100 Subject: [PATCH] Cleanup | Removed textures (for now) | Using GTL now --- build.zig | 6 ++ build.zig.zon | 8 +- src/assets/textures/player.png | Bin 1613 -> 329 bytes src/component/material.zig | 5 +- src/main.zig | 1 - src/plugin/default.zig | 5 +- src/resource/root.zig | 3 - src/resource/textures.zig | 132 --------------------------------- src/system/core.zig | 22 +----- src/system/draw.zig | 66 +++++++++++++++++ src/system/frame.zig | 93 ----------------------- src/system/inputs.zig | 39 ++++++++++ src/system/root.zig | 2 + src/template/root.zig | 1 - src/template/storage.zig | 85 --------------------- 15 files changed, 125 insertions(+), 343 deletions(-) delete mode 100644 src/resource/textures.zig create mode 100644 src/system/draw.zig create mode 100644 src/system/inputs.zig delete mode 100644 src/template/root.zig delete mode 100644 src/template/storage.zig diff --git a/build.zig b/build.zig index 7d2e679..98245ef 100644 --- a/build.zig +++ b/build.zig @@ -50,6 +50,12 @@ pub fn build(b: *std.Build) void { }); exe.root_module.addImport("app", app.module("app")); + const gtl = b.dependency("gtl", .{ + .target = target, + .optimize = optimize, + }); + exe.root_module.addImport("gtl", gtl.module("gtl")); + // // SYSTEM DEPENDENCIES // diff --git a/build.zig.zon b/build.zig.zon index 3152acc..b22a465 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -9,8 +9,12 @@ .dependencies = .{ .app = .{ - .url = "git+http://2.120.146.66:25569/abux/NYXA#93a4606c94f67b1f0a559c2efff3d8ff030b3300", - .hash = "app-0.0.0-AOV9_ea_AACRsUJ2lZqYiUkPed0op9qgFSWB6ihDSrll", + .url = "git+http://2.120.146.66:25569/abux/NYXA.git#4113f667319559c6bddb83c89042deb54e63b3de", + .hash = "app-0.0.0-AOV9_eK_AAA4ZmEGkvsFUM2xMTb0lYbzq4vSShMRnKZj", + }, + .gtl = .{ + .url = "git+http://2.120.146.66:25569/abux/GTL.git#e5cf30860977587188d810cc6524a5101312426c", + .hash = "gtl-0.0.0-e3QoJM0-AABINN7OX52K0SUL8XAqhRykEf4LTxf0wuat", }, }, diff --git a/src/assets/textures/player.png b/src/assets/textures/player.png index b2a6098b4553e032952b833324b5f0f98ab67049..f5a8efd5ae3b54ac2d9d7b7df6b964f00fcb0e54 100644 GIT binary patch delta 282 zcmV+#0pC@TU03KQ;pNuxi$8vp5E)d5XFCW-_ku>Ci`N{;(}%&;zrO93M#0G zqJOXG7rzLKBDh3Qvl+9POw1&i?wRg>ujJf&r>E1?i31iq`mMLlJ#}hncEkz`a>1Itzf5eg@-HGd{q_&VvOA z9We0&W)`o#T(+j#Z9_B68w%P4!V2b!c?-pYT`A`6T7R>)T?^A9lp|69I>uY>9LJ-= zu>y((tUhRjd1&)eS|9=yfnbLDB^l&TVd_?2EJp*K$T}-Ag z^it1KSsj~?pj}VDitG5nq)BumtR2L6CSPj2VYThK8r8NsFbzP&sdBAgj4)h_HEYhs z4Y%P6!8c|D5V+wgj8>%w$F*8|bI=a`?{+z=f42RR4%XM{DN`Ij79+B?(RA3m)r(7 z+@hE!DtmgKK#uNvypDW|#g-fGkc+_TtQldt5^7n=uMTBQM^!;(hM?fe{Q}A*6(b{L z2{#X&{$;24t24Zv7*Y5z?&Ew*%NM{Ovw!A;X#g^T7!jDWf|IecwJGfcK;ckq%LOBJ zEs{F84QszR{Y%jH;s%r@+U-?5I{zB@dsauB1wi;4+St(&3r<&yN|4Hirl0CVsEuYF z`WKzG3)+3AKLtRd`vLeIxR6`(Hk&TRGU-D1RbC~hK}N3HU{R2_+#mjkHEXSk4}bkD zNq}M~?mop@+4M8S_|J4Mn*~56SX0k=oU{2_pvLJZ5F0nVZF;flnKaP!QvT=Nt5s!t=l7Ep&-J6VP3{hoF&c%?<lQz{cW6_LtoPWQ7yIIs@ z6963=rQgf|PUX0p6}07Ef*g0Bh5C^Cz1njcP{Len!IaDKnU%|lomTxq;M7$U2yI3z z2t*!Nl8GvbMfv_}W%urSMUem;&nY7|bg!|B2lYWl)q(7MTm_OvAl0Ks99#}S1id?rYf+j` ziN`-Vsw>L0yq)As`;g-GyO~Pr1$T=@R*Lx~#GP0a;{sIDN&>E2*&(d|N@@M4)FDRX an|}eDgDodn<>0FT0000 sdl.SDL_SCALEMODE_LINEAR, - .nearest => sdl.SDL_SCALEMODE_PIXELART, - }); - - // --- ASSIGN CPU --- - record.cpu.size = .{ - @intCast(surface.*.w), - @intCast(surface.*.h), - }; - - // --- ASSIGN GPU --- - record.gpu = .{ - .raw = texture, - }; - } - - // --- DEBUG --- - var it = self.textures.lookup.iterator(); - while (it.next()) |entry| { - const record = self.textures.get(entry.key_ptr.*) orelse continue; - - std.debug.print("\x1b[35m┏━ TEXTURE\n", .{}); - std.debug.print("\x1b[35m┃\x1b[0m Name: \"{s}\"\n", .{entry.value_ptr.*}); - std.debug.print("\x1b[35m┃\x1b[0m Path: \"{s}\"\n", .{record.cpu.path}); - std.debug.print("\x1b[35m┃\x1b[0m Size: {}x{}\n", .{ record.cpu.size[0], record.cpu.size[1] }); - std.debug.print("\x1b[35m┗━\x1b[0m\n", .{}); - } -} diff --git a/src/system/core.zig b/src/system/core.zig index 72322ee..0cb1920 100644 --- a/src/system/core.zig +++ b/src/system/core.zig @@ -39,9 +39,6 @@ pub fn init(ctx: App.scheduler.Context) !void { }); try ctx.app.resources.set(resource.Frame{}); - // --- ASSETS --- - const textures = try ctx.app.resources.getOrSet(resource.Textures.init(ctx.app.alloc)); - // --- DEBUG --- std.debug.print("\x1b[35m┏━ WINDOW\n", .{}); std.debug.print("\x1b[35m┃\x1b[0m Title: \"{s}\"\n", .{window.title}); @@ -62,9 +59,9 @@ pub fn init(ctx: App.scheduler.Context) !void { component.Friction{}, component.Velocity{}, - component.Transform{ .size = .{ 200, 200 } }, + component.Transform{ .size = .{ 64, 64 } }, component.Material{ .style = .{ - .textured = try textures.load("Player", "src/assets/textures/player.png"), + .solid = .{ 200, 20, 20, 255 }, } }, component.CameraTarget{}, }); @@ -84,24 +81,9 @@ pub fn deinit(ctx: App.scheduler.Context) !void { const res = try ctx.app.resources.getMany(struct { window: *resource.Window, renderer: *resource.Renderer, - textures: *resource.Textures, }); - res.textures.deinit(); sdl.SDL_DestroyRenderer(res.renderer.raw); sdl.SDL_DestroyWindow(res.window.raw); sdl.SDL_Quit(); } - -/// ---------------------------------------------------- -/// ---------------------------------------------------- -pub fn build(ctx: App.scheduler.Context) !void { - const res = try ctx.app.resources.getMany(struct { - renderer: *resource.Renderer, - textures: *resource.Textures, - }); - - try res.textures.build( - res.renderer, - ); -} diff --git a/src/system/draw.zig b/src/system/draw.zig new file mode 100644 index 0000000..dfa2dc2 --- /dev/null +++ b/src/system/draw.zig @@ -0,0 +1,66 @@ +const std = @import("std"); +const sdl = @import("sdl"); +const App = @import("app"); + +const component = @import("../component/root.zig"); +const resource = @import("../resource/root.zig"); + +/// ---------------------------------------------------- +/// ---------------------------------------------------- +pub fn draw(ctx: App.scheduler.Context) !void { + const res = try ctx.app.resources.getMany(struct { + window: *resource.Window, + renderer: *resource.Renderer, + frame: *resource.Frame, + }); + + // --- SET CLEAR COLOR --- + _ = sdl.SDL_SetRenderDrawColor( + res.renderer.raw, + 10, + 10, + 10, + 255, + ); + + // --- DRAW --- + _ = sdl.SDL_RenderClear(res.renderer.raw); + defer _ = sdl.SDL_RenderPresent(res.renderer.raw); + + { // DRAW + var query = ctx.app.world.query(struct { + transform: *component.Transform, + material: *component.Material, + camera_target: ?*component.CameraTarget, + }, .{}); + while (query.next()) |e| { + const camera = if (res.frame.camera) |*v| v else continue; + + // --- SHAPE --- + var rect: sdl.SDL_FRect = .{ + .x = e.transform.pos[0] + camera.transform.pos[0], + .y = e.transform.pos[1] + camera.transform.pos[1], + .w = e.transform.size[0], + .h = e.transform.size[1], + }; + + // --- MATERIAL --- + switch (e.material.style) { + .solid => |albedo| { + _ = sdl.SDL_SetRenderDrawColor(res.renderer.raw, albedo[0], albedo[1], albedo[2], albedo[3]); + _ = sdl.SDL_RenderFillRect(res.renderer.raw, &rect); + }, + else => {}, + // .textured => |handle| { + // const gpu = res.textures.get(handle) orelse continue; + // _ = sdl.SDL_RenderTexture( + // res.renderer.raw, + // gpu.raw, + // null, + // &rect, + // ); + // }, + } + } + } +} diff --git a/src/system/frame.zig b/src/system/frame.zig index 6b6606e..3557452 100644 --- a/src/system/frame.zig +++ b/src/system/frame.zig @@ -5,39 +5,6 @@ const App = @import("app"); const component = @import("../component/root.zig"); const resource = @import("../resource/root.zig"); -/// ---------------------------------------------------- -/// ---------------------------------------------------- -pub fn inputs(ctx: App.scheduler.Context) !void { - const res = try ctx.app.resources.getMany(struct { - window: *resource.Window, - renderer: *resource.Renderer, - }); - _ = res; - - // --- POLL EVENTS --- - var raw_event: sdl.SDL_Event = undefined; - while (sdl.SDL_PollEvent(&raw_event)) { - switch (raw_event.type) { - sdl.SDL_EVENT_QUIT => try ctx.app.events.send(App.event.AppExit{}), - else => {}, - } - } - - const keyboard: [*c]const bool = sdl.SDL_GetKeyboardState(null); - - var query = ctx.app.world.query(struct { - player: *component.Player, - velocity: *component.Velocity, - }, .{}); - while (query.next()) |e| { - const speed: f32 = 100.0; - if (keyboard[sdl.SDL_SCANCODE_W]) e.velocity.value[1] = -speed; - if (keyboard[sdl.SDL_SCANCODE_S]) e.velocity.value[1] = speed; - if (keyboard[sdl.SDL_SCANCODE_A]) e.velocity.value[0] = -speed; - if (keyboard[sdl.SDL_SCANCODE_D]) e.velocity.value[0] = speed; - } -} - /// ---------------------------------------------------- /// ---------------------------------------------------- pub fn beginFrame(ctx: App.scheduler.Context) !void { @@ -215,63 +182,3 @@ pub fn cast(ctx: App.scheduler.Context) !void { e.caster.cooldown; } } - -/// ---------------------------------------------------- -/// ---------------------------------------------------- -pub fn draw(ctx: App.scheduler.Context) !void { - const res = try ctx.app.resources.getMany(struct { - window: *resource.Window, - renderer: *resource.Renderer, - textures: *resource.Textures, - frame: *resource.Frame, - }); - - // --- SET CLEAR COLOR --- - _ = sdl.SDL_SetRenderDrawColor( - res.renderer.raw, - 10, - 10, - 10, - 255, - ); - - // --- DRAW --- - _ = sdl.SDL_RenderClear(res.renderer.raw); - defer _ = sdl.SDL_RenderPresent(res.renderer.raw); - - { // DRAW - var query = ctx.app.world.query(struct { - transform: *component.Transform, - material: *component.Material, - camera_target: ?*component.CameraTarget, - }, .{}); - while (query.next()) |e| { - const camera = if (res.frame.camera) |*v| v else continue; - - // --- SHAPE --- - var rect: sdl.SDL_FRect = .{ - .x = e.transform.pos[0] + camera.transform.pos[0], - .y = e.transform.pos[1] + camera.transform.pos[1], - .w = e.transform.size[0], - .h = e.transform.size[1], - }; - - // --- MATERIAL --- - switch (e.material.style) { - .solid => |albedo| { - _ = sdl.SDL_SetRenderDrawColor(res.renderer.raw, albedo[0], albedo[1], albedo[2], albedo[3]); - _ = sdl.SDL_RenderFillRect(res.renderer.raw, &rect); - }, - .textured => |handle| { - const gpu = res.textures.get(handle) orelse continue; - _ = sdl.SDL_RenderTexture( - res.renderer.raw, - gpu.raw, - null, - &rect, - ); - }, - } - } - } -} diff --git a/src/system/inputs.zig b/src/system/inputs.zig new file mode 100644 index 0000000..250f4cb --- /dev/null +++ b/src/system/inputs.zig @@ -0,0 +1,39 @@ +const std = @import("std"); +const sdl = @import("sdl"); +const App = @import("app"); + +const component = @import("../component/root.zig"); +const resource = @import("../resource/root.zig"); + +/// ---------------------------------------------------- +/// ---------------------------------------------------- +pub fn pollEvents(ctx: App.scheduler.Context) !void { + const res = try ctx.app.resources.getMany(struct { + window: *resource.Window, + renderer: *resource.Renderer, + }); + _ = res; + + // --- POLL EVENTS --- + var raw_event: sdl.SDL_Event = undefined; + while (sdl.SDL_PollEvent(&raw_event)) { + switch (raw_event.type) { + sdl.SDL_EVENT_QUIT => try ctx.app.events.send(App.event.AppExit{}), + else => {}, + } + } + + const keyboard: [*c]const bool = sdl.SDL_GetKeyboardState(null); + + var query = ctx.app.world.query(struct { + player: *component.Player, + velocity: *component.Velocity, + }, .{}); + while (query.next()) |e| { + const speed: f32 = 100.0; + if (keyboard[sdl.SDL_SCANCODE_W]) e.velocity.value[1] = -speed; + if (keyboard[sdl.SDL_SCANCODE_S]) e.velocity.value[1] = speed; + if (keyboard[sdl.SDL_SCANCODE_A]) e.velocity.value[0] = -speed; + if (keyboard[sdl.SDL_SCANCODE_D]) e.velocity.value[0] = speed; + } +} diff --git a/src/system/root.zig b/src/system/root.zig index 0329ef8..9ef80d5 100644 --- a/src/system/root.zig +++ b/src/system/root.zig @@ -1,2 +1,4 @@ pub const core = @import("core.zig"); pub const frame = @import("frame.zig"); +pub const inputs = @import("inputs.zig"); +pub const draw = @import("draw.zig"); diff --git a/src/template/root.zig b/src/template/root.zig deleted file mode 100644 index 883557a..0000000 --- a/src/template/root.zig +++ /dev/null @@ -1 +0,0 @@ -pub const Storage = @import("storage.zig").Storage; diff --git a/src/template/storage.zig b/src/template/storage.zig deleted file mode 100644 index 1932ed5..0000000 --- a/src/template/storage.zig +++ /dev/null @@ -1,85 +0,0 @@ -const std = @import("std"); -const App = @import("app"); -const Handle = App.template.Handle; - -pub fn Storage( - comptime CPU: type, - comptime GPU: type, -) type { - return struct { - const Self = @This(); - - /// ---------------------------------------------------- - /// ---------------------------------------------------- - pub const Record = struct { - cpu: CPU, - gpu: ?GPU = null, - }; - - // - // FIELDS - // - - data: std.ArrayList(Record), - lookup: std.AutoHashMap(Handle(CPU), []const u8), - alloc: std.mem.Allocator, - - /// ---------------------------------------------------- - /// ---------------------------------------------------- - pub fn init(alloc: std.mem.Allocator) Self { - return .{ - .data = .empty, - .lookup = .init(alloc), - .alloc = alloc, - }; - } - - /// ---------------------------------------------------- - /// ---------------------------------------------------- - pub fn deinit(self: *Self) void { - self.data.deinit(self.alloc); - self.lookup.deinit(); - } - - /// ---------------------------------------------------- - /// ---------------------------------------------------- - pub fn put( - self: *Self, - name: []const u8, - value: CPU, - ) !Handle(CPU) { - // --- HANDLE --- - const handle: Handle(CPU) = .{ - .idx = @intCast(self.data.items.len), - }; - - // --- ADD DATA --- - try self.data.append(self.alloc, .{ .cpu = value }); - errdefer _ = self.data.swapRemove(self.data.items.len - 1); - - // --- ADD LOOKUP --- - try self.lookup.put( - handle, - name, - ); - - return handle; - } - - /// ---------------------------------------------------- - /// ---------------------------------------------------- - pub fn get( - self: *Self, - handle: Handle(CPU), - ) ?*Record { - if (!self.lookup.contains(handle)) return null; - return &self.data.items[@intCast(handle.idx)]; - } - - /// ---------------------------------------------------- - /// ---------------------------------------------------- - pub fn items(self: *Self) []Record { - return self.data.items; - } - }; -}