From 60461aa14ffa7c29db77a8abefc1c79bc57ecf06 Mon Sep 17 00:00:00 2001 From: Sage Vaillancourt Date: Fri, 7 Mar 2025 13:20:38 -0500 Subject: [PATCH] Some renames to be a little less generic I.e. `entity` is unclear, and hard to search for. --- lib/tiny-debug.lua | 34 +++++++++++++++++++++++++++++++++- lib/tiny.lua | 14 ++++++++++++++ src/cart.lua | 1 + src/systems/filter-types.lua | 2 +- src/systems/filter-types.lua2p | 2 +- src/systems/menu.lua | 4 ---- src/systems/rounds.lua | 6 +++--- src/systems/spawner.lua | 19 +++++-------------- 8 files changed, 58 insertions(+), 24 deletions(-) diff --git a/lib/tiny-debug.lua b/lib/tiny-debug.lua index 0e2dce4..0e9688e 100644 --- a/lib/tiny-debug.lua +++ b/lib/tiny-debug.lua @@ -1,3 +1,6 @@ +if not playdate.isSimulator then + return +end getCurrentTimeMilliseconds = playdate.getCurrentTimeMilliseconds tinyTrackEntityAges = true @@ -10,4 +13,33 @@ if tinyTrackEntityAges then end tinyLogSystemUpdateTime = false -tinyLogSystemChanges = false \ No newline at end of file +tinyLogSystemChanges = false + +tinyWarnWhenNonDataOnEntities = false + +if tinyWarnWhenNonDataOnEntities then + function checkForNonData(e, nested, tableCache) + nested = nested or false + tableCache = tableCache or {} + + local valType = type(e) + if valType == "table" then + if tableCache[e] then + return + end + tableCache[e] = true + for k, v in pairs(e) do + local keyWarning = checkForNonData(k, true, tableCache) + if keyWarning then + return keyWarning + end + local valueWarning = checkForNonData(v, true, tableCache) + if valueWarning then + return valueWarning + end + end + elseif valType == "function" or valType == "thread" or valType == "userdata" then + return valType + end + end +end \ No newline at end of file diff --git a/lib/tiny.lua b/lib/tiny.lua index 243e1ba..73c222c 100644 --- a/lib/tiny.lua +++ b/lib/tiny.lua @@ -489,6 +489,20 @@ if tinyTrackEntityAges then function tiny.addEntity(world, entity) local added = wrapped(world, entity) added[ENTITY_INIT_MS] = getCurrentTimeMilliseconds() + return added + end + tiny_addEntity = tiny.addEntity +end + +if tinyWarnWhenNonDataOnEntities then + local wrapped = tiny.addEntity + function tiny.addEntity(world, entity) + local added = wrapped(world, entity) + local nonDataType = checkForNonData(added) + if nonDataType then + print("Detected non-data type '" .. nonDataType .. "' on entity") + end + return added end tiny_addEntity = tiny.addEntity end diff --git a/src/cart.lua b/src/cart.lua index 9e53a6e..d1ab3b6 100644 --- a/src/cart.lua +++ b/src/cart.lua @@ -27,6 +27,7 @@ function Cart.reset(o) ---@param world World function o:spawnEntitiesWhenStopped(world) + -- it'd be funny if the cart fully just exploded instead self.velocity = { x = 300, y = 0 } self.canCollideWith = 4 world:addEntity({ diff --git a/src/systems/filter-types.lua b/src/systems/filter-types.lua index 4624bc2..41a5327 100644 --- a/src/systems/filter-types.lua +++ b/src/systems/filter-types.lua @@ -5,7 +5,7 @@ ---@alias BitMask number ---@alias CanBeBounced { flat: XyPair, mult = XyPair } ----@alias CanSpawn { entity: Entity } +---@alias CanSpawn { entityToSpawn: Entity } ---@alias Collision { collisionBetween: Entity[] } ---@alias Entity table ---@alias InRelations Entity[] diff --git a/src/systems/filter-types.lua2p b/src/systems/filter-types.lua2p index 66bc75c..b729f6a 100644 --- a/src/systems/filter-types.lua2p +++ b/src/systems/filter-types.lua2p @@ -58,7 +58,7 @@ end BitMask = "number", CanBeBounced = "{ flat: XyPair, mult: XyPair }", RoundStateAction = { '"end" | "start"', '"start"' }, - CanSpawn = "{ entity: Entity }", + CanSpawn = "{ entityToSpawn: Entity }", InRelations = "Entity[]", CanBeBounced = "{ flat: XyPair, mult = XyPair }", InputState = "{ receivedInputThisFrame: boolean, aJustPressed: boolean, bJustPressed: boolean, upJustPressed: boolean, downJustPressed: boolean, leftJustPressed: boolean, rightJustPressed: boolean }", diff --git a/src/systems/menu.lua b/src/systems/menu.lua index 13a8ac7..310400d 100644 --- a/src/systems/menu.lua +++ b/src/systems/menu.lua @@ -4,10 +4,6 @@ local MenuItems = {} menuController = filteredSystem("menuController", { menuItems = MenuItems, inputState = T.InputState }, function(e, _, system) - if not e.inputState.receivedInputThisFrame then - return - end - for _, menuItem in pairs(e.menuItems) do if menuItem.highlighted then if e.inputState.aJustPressed then diff --git a/src/systems/rounds.lua b/src/systems/rounds.lua index 2d66f2b..70fd1cc 100644 --- a/src/systems/rounds.lua +++ b/src/systems/rounds.lua @@ -32,12 +32,12 @@ end) removeAtRoundStart = filteredSystem("removeAtRoundStart", { removeAtRoundStart = T.bool }) -filteredSystem("afterDelayAdd", { afterDelayAdd = { entity = T.Entity, delay = T.number } }, function(e, dt, system) +filteredSystem("afterDelayAdd", { afterDelayAdd = { entityToAdd = T.Entity, delay = T.number } }, function(e, dt, system) e.afterDelayAdd.delay = e.afterDelayAdd.delay - dt if e.afterDelayAdd.delay > 0 then return end - system.world:addEntity(e.afterDelayAdd.entity) + system.world:addEntity(e.afterDelayAdd.entityToAdd) system.world:removeEntity(e) end) @@ -150,7 +150,7 @@ roundSystem = filteredSystem("round", { roundAction = T.RoundStateAction, positi system.world:addEntity({ afterDelayAdd = { delay = delay, - entity = upgradeEntity + entityToAdd = upgradeEntity }, }) system.world:addEntity(menuEntity) diff --git a/src/systems/spawner.lua b/src/systems/spawner.lua index 7db32e3..7aa4d37 100644 --- a/src/systems/spawner.lua +++ b/src/systems/spawner.lua @@ -35,7 +35,7 @@ function spawnerSystem:preProcess() return tiny.SKIP_PROCESS end -local spawnEveryX = 30 +local spawnEveryX = 35 -- Currently spawns AT MOST one new ingredient per frame, which is probably not enough at high speeds! function spawnerSystem:postProcess() @@ -43,7 +43,7 @@ function spawnerSystem:postProcess() local newlySpawned = Ingredients.nextInCache() -- TODO: If performance becomes an issue, maybe just swap out __index - for k, v in pairs(selectedSpawner.canSpawn.entity) do + for k, v in pairs(selectedSpawner.canSpawn.entityToSpawn) do newlySpawned[k] = v end @@ -68,7 +68,7 @@ function addAllSpawners(world) odds = spawnerOdds, canSpawn = { yRange = yRange, - entity = { + entityToSpawn = { score = score, canBeCollidedBy = 1, expireAfterCollision = true, @@ -111,13 +111,13 @@ function getAvailableSpawnerUpgrades() -- upgrades[#upgrades + 1] = { hasUpgradeSpeed = spawner.hasUpgradeSpeed } end - if spawner.canSpawn.entity.score then + if spawner.canSpawn.entityToSpawn.score then local name = "Double " .. spawner.name .. " value" upgrades[#upgrades + 1] = { name = name, apply = function(world) print("Applying " .. name) - spawner.canSpawn.entity.score = spawner.canSpawn.entity.score * 2 + spawner.canSpawn.entityToSpawn.score = spawner.canSpawn.entityToSpawn.score * 2 world:addEntity({ roundAction = "start" }) end, } @@ -133,15 +133,6 @@ function getAvailableSpawnerUpgrades() world:addEntity({ roundAction = "start" }) end, } - - -- if not spawner.canSpawn.entity.velocity then - -- upgrades[#upgrades + 1] = { - -- name = spawner.name .. " Movement", - -- upgrade = function() - -- spawner.canSpawn.entity.velocity = { x = -10, y = 0 } - -- end, - -- } - -- end end return upgrades end