From d220cfb9dafea3955aa8600d262205178c72e6ad Mon Sep 17 00:00:00 2001 From: Patrick Schwarzer Date: Sat, 12 Apr 2025 10:04:38 +0200 Subject: [PATCH] bunch of stuff --- .vscode/launch.json | 35 ++++++---- games/test.lua | 20 ++++-- testSprites.png => games/testSprites.png | Bin main.lua | 80 +++++++++++++++-------- monogram.ttf | Bin 10468 -> 0 bytes 5 files changed, 93 insertions(+), 42 deletions(-) rename testSprites.png => games/testSprites.png (100%) delete mode 100644 monogram.ttf diff --git a/.vscode/launch.json b/.vscode/launch.json index d4fd8ba..273c8a1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,15 +1,28 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "request": "launch", - "name": "Debug", - "program": "${workspaceFolder}/main.lua", - "type": "node-terminal", - "command": "./love.AppImage . && exit" - } + { + "type": "lua-local", + "request": "launch", + "name": "Debug", + "program": { + "command": "love" + }, + "args": [ + ".", + "debug" + ], + }, + { + "type": "lua-local", + "request": "launch", + "name": "Release", + "program": { + "command": "love" + }, + "args": [ + ".", + ], + }, ] -} \ No newline at end of file + } \ No newline at end of file diff --git a/games/test.lua b/games/test.lua index 98eb91a..4ce88cb 100644 --- a/games/test.lua +++ b/games/test.lua @@ -1,14 +1,24 @@ -local test = 1 +NAME = "Test" +AUTHOR = "Tarion" +VERSION = 0 + +local test = 0 local delay = 0 +function Load() +end + function Update(dt, curTime) - if (curTime > delay) then - delay = curTime + 1 +end + +function KeyPressed(key) + if (key == "f5") then test = test + 1 - end + Sprite("testSprites.png") + end end function Draw() - print("Counter: " .. test, 10, 10) + print("Loaded Sprites: " .. test, 10, 10) end diff --git a/testSprites.png b/games/testSprites.png similarity index 100% rename from testSprites.png rename to games/testSprites.png diff --git a/main.lua b/main.lua index 43d5cc1..eb2e829 100644 --- a/main.lua +++ b/main.lua @@ -1,23 +1,41 @@ -local curTime = 0 -function CurTime() - return curTime +local function CalculateMemoryUsage() end +local function LoadSprite(name) + name = "games/" .. name + local info = love.filesystem.getInfo(name) + if (not info) then + error("Failed to load Sprite! ("..name..")") + return + end + virtual.currentMemory = virtual.currentMemory + info.size + + local newSprite = love.graphics.newImage(name) +end + +-- Establish Sandbox +-- Everything in the table is what the Sandbox has access to local consoleEnv = { - Load = function() end, - Update = function(dt) end, - Draw = function() end, - KeyPressed = love.keypressed, - KeyDown = love.keyboard.wasPressed, + NAME = "NULL", + AUTHOR = "NULL", + VERSION = 0, + + Load, + Update, + Draw, + KeyPressed, + + Sprite = LoadSprite, + print = love.graphics.print, } consoleEnv._G = consoleEnv setmetatable(consoleEnv, { __index = function(_, key) - return function(...) end + return function(...) end -- Return an empty function to avoid erroring, not perfect, but works most of the time end }) @@ -31,32 +49,42 @@ function loadGame(gameName) if not ok then error("Error running sandbox file (2): " .. execErr) end + + love.window.setTitle(consoleEnv.NAME or "NULL") end local maxScaling = 4 function love.load() - love.window.setTitle("Fantasy Console") - love.graphics.setDefaultFilter("nearest", "nearest") - - font = love.graphics.newImageFont("font.png", " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.:;<=>?-+*/)('&%$#ß!@[ß]^_{|}~", -1) - --font = love.graphics.newFont("monogram.ttf", 16) - --font:setFilter("nearest", "nearest") + love.window.setTitle("Waiting for Game") + -- Console Variables + curTime = 0 scaling = 4 + keysPressed = {} + + -- Setup Window + love.graphics.setDefaultFilter("nearest", "nearest") + font = love.graphics.newImageFont("font.png", " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.:;<=>?-+*/)('&%$#ß!@[ß]^_{|}~", -1) love.window.updateWindow() - love.keyboard.keysPressed = {} + -- Create Virtual Console + virtual = { + maxMemory = 16000, + currentMemory = 0, + loadedSprites = {}, + loadedSounds = {}, + loadedFonts = {}, + } loadGame("test") - -- Track memory usage using this - info = love.filesystem.getInfo( "font.png" ) - - print(info.size) + if (consoleEnv.Load) then + consoleEnv.Load() + end end function love.keypressed(key) @@ -64,15 +92,15 @@ function love.keypressed(key) love.event.quit() end - love.keyboard.keysPressed[key] = true + keysPressed[key] = true - if (consoleEnv.WasKeyPressed) then - consoleEnv.WasKeyPressed(key) + if (consoleEnv.KeyPressed) then + consoleEnv.KeyPressed(key) end end function love.keyboard.wasPressed(key) - return love.keyboard.keysPressed[key] + return keysPressed[key] end function love.window.updateWindow() @@ -92,7 +120,7 @@ function love.update(dt) love.window.updateWindow() end - love.keyboard.keysPressed = {} + keysPressed = {} if (consoleEnv.Update) then consoleEnv.Update(dt, curTime) @@ -104,7 +132,7 @@ function love.draw() love.graphics.setFont(font) - love.graphics.print("0/32 KB used", 3, 0) + love.graphics.print(virtual.currentMemory/1000 .. "/" .. virtual.maxMemory/1000 .. " KB", 2, 2) if (consoleEnv.Draw) then consoleEnv.Draw() diff --git a/monogram.ttf b/monogram.ttf deleted file mode 100644 index aceaebab76d4ccb69d59241d154216f6f53d7e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10468 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