From 204021b9ae08a12d01cb6052f8f1546859425c46 Mon Sep 17 00:00:00 2001 From: Patrick Schwarzer <patrickschwarzer2000@gmail.com> Date: Wed, 16 Apr 2025 00:20:32 +0200 Subject: [PATCH] stuff --- classes.lua | 8 ++--- games/test.lua | 19 ++++++++++-- games/test/main.lua | 59 +++++++++++++++++++++++++++++++++++++ games/test/test.lua | 2 ++ games/test/testSound.mp3 | Bin 0 -> 5504 bytes games/test/testSprites.png | Bin 0 -> 961 bytes games/test/tileset.json | 22 ++++++++++++++ games/test/tileset.png | Bin 0 -> 2375 bytes games/testSprites.json | 18 ----------- games/tileset.json | 22 ++++++++++++++ main.lua | 19 +++++++++++- 11 files changed, 143 insertions(+), 26 deletions(-) create mode 100644 games/test/main.lua create mode 100644 games/test/test.lua create mode 100644 games/test/testSound.mp3 create mode 100644 games/test/testSprites.png create mode 100644 games/test/tileset.json create mode 100644 games/test/tileset.png delete mode 100644 games/testSprites.json create mode 100644 games/tileset.json diff --git a/classes.lua b/classes.lua index 01721ec..c995787 100644 --- a/classes.lua +++ b/classes.lua @@ -22,6 +22,7 @@ local function newImage(path, alphaColor) return image end + --[[ Sprite Class This is essentially just a Wrapper for LĂ–VEs Image @@ -58,16 +59,15 @@ function Spritesheet.new(path, width, height, alphaColor) if (string.find(path, ".json")) then local contents, size = love.filesystem.read(path) - local sliceData = json.decode(contents) + local metadata = json.decode(contents) - print("games/" .. sliceData.image) - self.image = newImage("games/" .. sliceData.image, alphaColor) + self.image = newImage("games/" .. metadata.image, alphaColor) -- Create the slices according to the sliceData local imageWidth, imageHeight = self.image:getWidth(), self.image:getHeight() local counter = 0 - for _, data in pairs(sliceData) do + for _, data in pairs(metadata.tiles) do table.insert(self.sprites, love.graphics.newQuad( data.x, data.y, diff --git a/games/test.lua b/games/test.lua index ea70599..d1f68ee 100644 --- a/games/test.lua +++ b/games/test.lua @@ -11,28 +11,41 @@ end function Update(dt, curTime) end -local sprite = Spritesheet("testSprites.json", 16, 16, Color(48, 104, 80, 255)) +local sprite = Spritesheet("testSprites.png", 16, 16, Color(48, 104, 80, 255)) +local tileset = Spritesheet("tileset.json", 16, 16, Color(48, 104, 80, 255)) local testSound = Sound("testSound.mp3", "static") + local test = 1 +local test2 = 1 function KeyPressed(key) if (key == "f3") then test = test - 1 + test2 = test2 - 1 if (test == 0) then test = sprite.Count end + if (test2 == 0) then + test2 = tileset.Count + end elseif (key == "f4") then test = test + 1 + test2 = test2 + 1 if (test == sprite.Count + 1) then test = 1 end + if (test2 == tileset.Count + 1) then + test2 = 1 + end elseif (key == "f2") then testSound:Play() end end function Draw() - DrawText(test .. "/" .. sprite.Count, 25, 25) - sprite:Draw(test, 50, 0) + DrawText(test .. "/" .. sprite.Count, 50, 25) + + sprite:Draw(test, 5, 25) + tileset:Draw(test2, 25, 0) end diff --git a/games/test/main.lua b/games/test/main.lua new file mode 100644 index 0000000..f48e51a --- /dev/null +++ b/games/test/main.lua @@ -0,0 +1,59 @@ + +NAME = "Test" +AUTHOR = "Tarion" +VERSION = 0 + +local backgroundColor = Color(48, 104, 80, 255) +local colo3r = Color(48, 104, 80, 255) +function Load() + SetBackgroundColor(backgroundColor) + color = Color(48, 104, 80, 255) +end + +function Update(dt, curTime) +end + +local sprite = Spritesheet("testSprites.png", 16, 16, Color(48, 104, 80, 255)) +local tileset = Spritesheet("tileset.json", 16, 16, Color(48, 104, 80, 255)) +local testSound = Sound("testSound.mp3", "static") + +local test = 1 +local test2 = 1 +function KeyPressed(key) + if (key == "f3") then + test = test - 1 + test2 = test2 - 1 + + if (test == 0) then + test = sprite.Count + end + if (test2 == 0) then + test2 = tileset.Count + end + elseif (key == "f4") then + test = test + 1 + test2 = test2 + 1 + + if (test == sprite.Count + 1) then + test = 1 + end + if (test2 == tileset.Count + 1) then + test2 = 1 + end + elseif (key == "f2") then + testSound:Play() + testSound = nil + collectgarbage() + end +end + +function Draw() + DrawText(test .. "/" .. sprite.Count, 50, 25) + + sprite:Draw(test, 5, 25) + tileset:Draw(test2, 30, 0) +end + + +-- TODO: +-- 1. Implement memory limits for code, track how many variables are loaded, based on the size, like int64 and stuff diff --git a/games/test/test.lua b/games/test/test.lua new file mode 100644 index 0000000..89dbfe7 --- /dev/null +++ b/games/test/test.lua @@ -0,0 +1,2 @@ + +return "test" \ No newline at end of file diff --git a/games/test/testSound.mp3 b/games/test/testSound.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8e64435ac5c63491e4cb272974d1a366c50bdb50 GIT binary patch literal 5504 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 L|4;sZ(}Dj1SBJz) literal 0 HcmV?d00001 diff --git a/games/test/testSprites.png b/games/test/testSprites.png new file mode 100644 index 0000000000000000000000000000000000000000..c843ce3cabe583f88dd46a5f5fae844c6d58b468 GIT binary patch literal 961 zcmV;y13vtTP)<h;3K|Lk000e1NJLTq002M$004jj0{{R3#_xyu0000CP)t-s2N)qR zXi$d0Y~c9M)nPJ&000AUNkl<ZNXMm=!D<{w5Qa+&17aNHQ{NZ+GK>~0#21ka(kjOh z$iqz6`)mviW*w4Om|b0#Nr<HQ5`yq;zzE~Kg5;Ah0b9vM$bwD%)!p_Ua*`M3|Msud zbXB#wix{8r8b^|ve8G_fv0Y~(31Xi<HIW2qc24_9f;2DQ^pOOyFW#6)g7DTgN0OS! zz(f+HKDu#{1Zg(kI<S6z*;BcBIkSU92i9j3L;LySf{WIGHZ7Q{e35Xr#>#OfS+YzT zOITT<+oJHT2a?x>BMD-=8AlSN?iL(LkZQQ#NP;x)w@f5Kn#b==B&m7)HwPvJW0x}q zt7SVQ7^Za%mXuylErxe91`l=@3DvvuKN(3{VYQLTqK~GAvvXFCQR#!9jQz02AU|<v zzh&DR2Dvn7U$UTCutNLet8f&qzGy${)b9sKYW}(ANP;vw*BnWZX6KS431V+%?Ac0| z8>C#*przDk9sG5u<FC#U?>OdE8Ur^DCGd@7yYbwBOs%}~Py*)<4anafN+6TH*p?o_ z16h(&`LZXSg1R5~jc+~h&gY{G=K}#q^U@oTAghlC>OZ{!2~u^fnon5{1``9?!4Fc$ z;2D?Q+=1aQ=B7#yopL^rHKuc8=Mw`qqhAcwXG1AlG6-#UPwreMeb|DPdzCD@e!;pS zO0>TnS`VbV&X1Kx15MZUkpx+NX!X}mudFWYv&j63)S*;&or@$$lg}MkPZu&j@`axt z!q4*~i}NE3^P`CKqxir1fiL(3`u(UpKvGjmm4T!t?_4CQ$-5+yym{G2k~g295cthS zk{Vr5m|_i>?<WSdgUJc;gNd(0SWi2dFjFyuX#&<~Z6blWv+uTh<zOn6uFL5;m%Ab4 z9KDoc5;+cFf%&mN^qqoxXuleT)<<8sAFYcdHCsQsNK&(P+DDR_O$0niO?qUM<q@(R z8QYQpc^vAfyMIF+UrC@om78$PAm)e!eq@`<ui)EbS)+c%_Uu<yzLNVQ7e!h;Vb77g zVrBkdpepwe_~2U)y!(EvCy@lP*B|>xg4mC*`$&RR-@R7DLV}d(G6A_<BFob3w=@HJ zh&qPks{Hl@<m?vn<JQ^iH~~4|mcaZEc~?d-cu%f}{r#EY`ihm~`?9E98n!Y!lo--w j;rBy{f$}7biopK>!*~(8X{wN!00000NkvXXu0mjfdXUKR literal 0 HcmV?d00001 diff --git a/games/test/tileset.json b/games/test/tileset.json new file mode 100644 index 0000000..20d6dff --- /dev/null +++ b/games/test/tileset.json @@ -0,0 +1,22 @@ +{ + "image": "tileset.png", + "tiles": [ + {"x":0,"y":0,"width":64,"height":24}, + {"x":64,"y":0,"width":16,"height":24}, + {"x":64,"y":0,"width":16,"height":24}, + {"x":0,"y":24,"width":64,"height":24}, + {"x":80,"y":52,"width":8,"height":12}, + {"x":80,"y":68,"width":8,"height":12}, + {"x":0,"y":72,"width":80,"height":24}, + {"x":90,"y":48,"width":14,"height":48}, + {"x":72,"y":96,"width":32,"height":15}, + {"x":32,"y":96,"width":40,"height":15}, + {"x":24,"y":96,"width":8,"height":8}, + {"x":16,"y":96,"width":8,"height":8}, + {"x":16,"y":104,"width":8,"height":8}, + {"x":0,"y":96,"width":16,"height":16}, + {"x":0,"y":112,"width":32,"height":24}, + {"x":32,"y":111,"width":32,"height":24}, + {"x":72,"y":136,"width":32,"height":24} + ] +} \ No newline at end of file diff --git a/games/test/tileset.png b/games/test/tileset.png new file mode 100644 index 0000000000000000000000000000000000000000..5b21c11a8e151c4b29a85acb53e14d5c5b1cab8a GIT binary patch literal 2375 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 literal 0 HcmV?d00001 diff --git a/games/testSprites.json b/games/testSprites.json deleted file mode 100644 index e806425..0000000 --- a/games/testSprites.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "image": "testSprites.png" - }, - {"x":0,"y":0,"width":64,"height":24}, - {"x":64,"y":0,"width":16,"height":24}, - {"x":64,"y":0,"width":16,"height":24}, - {"x":0,"y":24,"width":64,"height":24}, - {"x":80,"y":52,"width":8,"height":12}, - {"x":80,"y":68,"width":8,"height":12}, - {"x":0,"y":72,"width":80,"height":24}, - {"x":90,"y":48,"width":14,"height":48}, - {"x":72,"y":96,"width":32,"height":15}, - {"x":32,"y":96,"width":40,"height":15}, - {"x":24,"y":96,"width":8,"height":8}, - {"x":16,"y":96,"width":8,"height":8}, - {"x":16,"y":104,"width":8,"height":8}, - {"x":0,"y":96,"width":16,"height":16},{"x":0,"y":112,"width":32,"height":24},{"x":32,"y":111,"width":32,"height":24},{"x":72,"y":136,"width":32,"height":24}] \ No newline at end of file diff --git a/games/tileset.json b/games/tileset.json new file mode 100644 index 0000000..20d6dff --- /dev/null +++ b/games/tileset.json @@ -0,0 +1,22 @@ +{ + "image": "tileset.png", + "tiles": [ + {"x":0,"y":0,"width":64,"height":24}, + {"x":64,"y":0,"width":16,"height":24}, + {"x":64,"y":0,"width":16,"height":24}, + {"x":0,"y":24,"width":64,"height":24}, + {"x":80,"y":52,"width":8,"height":12}, + {"x":80,"y":68,"width":8,"height":12}, + {"x":0,"y":72,"width":80,"height":24}, + {"x":90,"y":48,"width":14,"height":48}, + {"x":72,"y":96,"width":32,"height":15}, + {"x":32,"y":96,"width":40,"height":15}, + {"x":24,"y":96,"width":8,"height":8}, + {"x":16,"y":96,"width":8,"height":8}, + {"x":16,"y":104,"width":8,"height":8}, + {"x":0,"y":96,"width":16,"height":16}, + {"x":0,"y":112,"width":32,"height":24}, + {"x":32,"y":111,"width":32,"height":24}, + {"x":72,"y":136,"width":32,"height":24} + ] +} \ No newline at end of file diff --git a/main.lua b/main.lua index 08a522b..c8f8528 100644 --- a/main.lua +++ b/main.lua @@ -95,6 +95,7 @@ local consoleEnv = { NAME = "NULL", AUTHOR = "NULL", VERSION = 0, + path = "", Load, Update, @@ -111,11 +112,17 @@ local consoleEnv = { DrawText = love.graphics.print, print = print, + collectgarbage = collectgarbage, + require = function(name) + require(virtual.path .. name) + end, } consoleEnv._G = consoleEnv function loadGame(gameName) - local fn, err = loadfile("games/" .. gameName .. ".lua", "t", consoleEnv) + local fn, err = loadfile("games/" .. gameName .. "/main.lua", "t", consoleEnv) + virtual.path = "games/" .. gameName .. "/" + if not fn then error("Failed to load sandbox file (1): " .. err) end @@ -145,6 +152,8 @@ function love.load() -- Create Virtual Console virtual = { + path = "", + maxMemory = 16000, currentMemory = 0, @@ -191,9 +200,17 @@ function love.update(dt) end function love.draw() + local count = 0 + for k, v in pairs(consoleEnv) do + if (type(v) ~= "function" and v ~= nil) then + count = count + 1 + end + end + love.graphics.scale(scaling*0.5, scaling*0.5) love.graphics.print(virtual.currentMemory/1000 .. "/" .. virtual.maxMemory/1000 .. " KB", 2, 2) love.graphics.print("Loaded Objects: " .. virtual.loadedCount, 2, 10) + love.graphics.print("Loaded Variables: " .. count, 2, 18) love.graphics.scale(scaling, scaling) love.graphics.setFont(font)