From ffe1bf50490d9d5d472f3e68de61d41d23ff13c7 Mon Sep 17 00:00:00 2001
From: "Squishy (C6H12O6+NaCl+H2O)"
<106439598+SweetSea-ButImNotSweet@users.noreply.github.com>
Date: Thu, 23 May 2024 10:58:57 +0700
Subject: [PATCH] Update modules
---
game/grid.lua | 7 +++----
game/vctrl.lua | 13 +++++++------
libs/simple-button.lua | 20 ++++++++++++++------
load.lua | 11 +++++++----
main.lua | 21 +++++++++++++--------
5 files changed, 44 insertions(+), 28 deletions(-)
diff --git a/game/grid.lua b/game/grid.lua
index 184f30d..0158029 100644
--- a/game/grid.lua
+++ b/game/grid.lua
@@ -133,10 +133,9 @@ function Grid:applyPiece(piece)
self:applyBigPiece(piece)
return
end
- offsets = piece:getBlockOffsets()
- for index, offset in pairs(offsets) do
- x = piece.position.x + offset.x
- y = piece.position.y + offset.y
+ for index, offset in pairs(piece:getBlockOffsets()) do
+ local x = piece.position.x + offset.x
+ local y = piece.position.y + offset.y
if y + 1 > 0 and y < self.height then
self.grid[y+1][x+1] = {
skin = piece.skin,
diff --git a/game/vctrl.lua b/game/vctrl.lua
index d6fc295..076e4b1 100644
--- a/game/vctrl.lua
+++ b/game/vctrl.lua
@@ -137,15 +137,16 @@ local global_toggle=false
VCTRL={}
VCTRL.focus=nil -- Focusing buttons
+---@type table
---@class VCTRL.data
----@field type string
+---@field type 'button'
---@field x number
---@field y number
----@field shape string
----@field key string
----@field iconSize number
----@field alpha number
----@field show boolean
+---@field shape? string
+---@field key? string
+---@field iconSize? number
+---@field alpha? number
+---@field show? boolean
---@param ... VCTRL.data
---Adding (multiple) virtual button(s)
diff --git a/libs/simple-button.lua b/libs/simple-button.lua
index dc27891..738edef 100644
--- a/libs/simple-button.lua
+++ b/libs/simple-button.lua
@@ -17,7 +17,7 @@ local function checkColorTableValidation(C)
end
---@class BUTTON.button
----@field text? string # Name of the button, will be used to show
+---@field text? string|function # Name of the button, will be used to show
---@field textOrientation? "center"|"justify"|"left"|"right"
---
---@field x? number # Position of the button (x, y, w, h)
@@ -86,14 +86,16 @@ function button:draw()
love.graphics.setColor(self.textColor)
love.graphics.setFont(self.font)
+ local text = type(self.text) == 'function' and self.text() or self.text
+
local lineAmount
do
- local _, t = self.font:getWrap(self.text, self.w)
+ local _, t = self.font:getWrap(text, self.w)
lineAmount = #t
end
local textHeight = self.font:getHeight() * (lineAmount * 0.5)
local textPos = self.y + (self.h * 0.5) - textHeight
- love.graphics.printf(self.text, self.x, textPos, self.w, self.textOrientation)
+ love.graphics.printf(text, self.x, textPos, self.w, self.textOrientation)
love.graphics.setColor(self.borderColor)
love.graphics.rectangle('line', self.x, self.y, self.w, self.h, self.r)
@@ -150,7 +152,11 @@ local BUTTON = {}
---***WARNING! THIS FUNCTION WILL RAISE EXCEPTION IF DATA IS INVALID!***
function BUTTON.checkDataValidation(D, safe)
if not safe then
- assert(type(D.text) == "string","[text] is missing, or you just passed an empty data?")
+ if type(D.text) == 'function' then
+ assert(type(D.text()) == 'string', "[text] is a function but it doesn't return any string?!")
+ elseif type(D.text) ~= 'string' then
+ error("[text] must be a string or a function returns string, got "..type(D.text))
+ end
assert(type(D.x) == "number" , "[x] must be a integer")
assert(type(D.y) == "number" , "[y] must be a integer")
@@ -178,7 +184,7 @@ function BUTTON.checkDataValidation(D, safe)
end
---@class BUTTON.newData
----@field text string # Name of the button, will be used to show
+---@field text string|function # Name of the button, will be used to show. If function provided, it should return the string!
---@field textOrientation? "center"|"justify"|"left"|"right"
---
---@field x number # Position of the button (x, y, w, h)
@@ -210,6 +216,8 @@ end
---@nodiscard
---Create a new button, provide you a table with 4 functions inside: draw and update, press and release
---You need to put them into intended callbacks :)
+---
+---Remember to fill 5 necessary parameters: name, x, y, w and h
function BUTTON.new(D)
local B = setmetatable(D, button)
BUTTON.checkDataValidation(B)
@@ -231,7 +239,7 @@ end
-- < EXTRA GENERAL OPTIONS >
---Draw all buttons in provided list
----@param list table
+---@param list table
function BUTTON.draw(list)
for _, v in pairs(list) do v:draw() end
end
diff --git a/load.lua b/load.lua
index 3f40538..ca9cfac 100644
--- a/load.lua
+++ b/load.lua
@@ -1,6 +1,7 @@
-- Bigint library
bigint = require "libs.bigint.bigint"
number_names = require "libs.bigint.named-powers-of-ten"
+require "libs.simple-slider"
-- Fonts
FONT_tromi = love.graphics.newFont('res/fonts/monofonto rg.otf', 28)
@@ -25,13 +26,15 @@ BUTTON.setDefaultOption{
love.graphics.rectangle('fill', self.x, self.y, self.w, self.h, self.r)
end
+ local text = type(self.text) == 'function' and self.text() or self.text
+
local lineAmount
do
local _, t
if need_big_font then
- _, t = FONT_big:getWrap(self.text, self.w * 2)
+ _, t = FONT_big:getWrap(text, self.w * 2)
else
- _, t = FONT_tromi:getWrap(self.text, self.w * 2)
+ _, t = FONT_tromi:getWrap(text, self.w * 2)
end
lineAmount = #t
end
@@ -42,9 +45,9 @@ BUTTON.setDefaultOption{
local textPos = self.y + (self.h * 0.5) - textHeight
if need_big_font then
- drawBigText(self.text, self.x, textPos, self.w, 'center')
+ drawBigText(text, self.x, textPos, self.w, 'center')
else
- drawText(self.text, self.x, textPos, self.w, 'center')
+ drawText(text, self.x, textPos, self.w, 'center')
end
love.graphics.setColor(1, 1, 1, 0.8)
diff --git a/main.lua b/main.lua
index 0552f09..3a11b2d 100644
--- a/main.lua
+++ b/main.lua
@@ -1,9 +1,6 @@
if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE")=="1" then
- lldebugger=require('lldebugger')
- lldebugger.start()
- REQUEST_BREAK=lldebugger.requestBreak
-else
- REQUEST_BREAK=function()end
+ LLDEBUGGER=require('lldebugger')
+ LLDEBUGGER.start()
end
require 'funcs'
@@ -97,10 +94,9 @@ function love.draw()
love.graphics.push()
SCENE:render()
+
-- -- Grid system
-- local grid_width, grid_height = 40, 20
- -- love.graphics.replaceTransform(GLOBAL_TRANSFORM)
-
-- love.graphics.setColor(1,1,1,0.5)
-- love.graphics.setLineWidth(1)
-- -- From 0 to X
@@ -112,6 +108,15 @@ function love.draw()
-- love.graphics.line(0, grid_height * iy, 640, grid_height * iy)
-- end
+ local x, y = GLOBAL_TRANSFORM:inverseTransformPoint(love.mouse.getPosition())
+ love.graphics.setColor(0, 0, 0, 0.8)
+ love.graphics.rectangle("fill", 5, 450, 115, 25)
+ drawText(string.format("X: %.1d; Y: %.1d", x, y), 10, 455, 110, "left")
+
+ love.graphics.setColor(1, 1, 1, 1)
+ love.graphics.setLineWidth(2)
+ love.graphics.rectangle("line", 0, 0, 640, 480)
+
love.graphics.pop()
end
@@ -361,7 +366,7 @@ function love.run()
end
function love.errorhandler(msg)
- local msg = msg or "REV! BÀ ĂN CÁI TỜ TIN NHẮN LỖI RỒI À?!"
+ local msg = msg or "I don't know if mycophobia's real name is \"mycophobiatrophilusiania\" or not.\nBUT WHO ATE THE ERROR MESSAGE?! DTET_ENJOYER, DID YOU?\n"
local showScreenshot = false
local errorCopied = false
local enter_fullscreen = SETTINGS and SETTINGS["fullscreen"] or false