mirror of
https://github.com/SashLilac/cambridge.git
synced 2024-11-22 19:49:03 -06:00
05230ac046
- Uses BG previously from the input config screen, which has gotten a new BG - Minor tweak on the input config screen to display all inputs names regardless of if they are bound or not - Added Mod1 function to `funcs.lua`, may be useful again sometime - Added game settings * Manual locking (per gamemode, per ruleset, on harddrop or on softdrop) * Piece colours (per ruleset, TTC or Arika) * World Reverse toggle - Moved the discordRPC `libs/` directory, as it's a third party library - Edited the `discordRPC.lua` file to look for the dll at the right place regardless of how you run the game (until we fuse it that is) This should have probably been done in several commits, sorry about that
69 lines
1.8 KiB
Lua
69 lines
1.8 KiB
Lua
function copy(t)
|
|
-- returns deep copy of t (as opposed to the shallow copy you get from var = t)
|
|
if type(t) ~= "table" then return t end
|
|
local meta = getmetatable(t)
|
|
local target = {}
|
|
for k, v in pairs(t) do target[k] = v end
|
|
setmetatable(target, meta)
|
|
return target
|
|
end
|
|
|
|
function strTrueValues(tbl)
|
|
-- returns a concatenation of all the keys in tbl with value true, separated with spaces
|
|
str = ""
|
|
for k, v in pairs(tbl) do
|
|
if v == true then
|
|
str = str .. k .. " "
|
|
end
|
|
end
|
|
return str
|
|
end
|
|
|
|
function frameTime(min, sec, hth)
|
|
-- returns a time in frames from a time in minutes-seconds-hundredths format
|
|
if min == nil then min = 0 end
|
|
if sec == nil then sec = 0 end
|
|
if hth == nil then hth = 0 end
|
|
return min*3600 + sec*60 + math.ceil(hth * 0.6)
|
|
end
|
|
|
|
function vAdd(v1, v2)
|
|
-- returns the sum of vectors v1 and v2
|
|
return {
|
|
x = v1.x + v2.x,
|
|
y = v1.y + v2.y
|
|
}
|
|
end
|
|
|
|
function vNeg(v)
|
|
-- returns the opposite of vector v
|
|
return {
|
|
x = -v.x,
|
|
y = -v.y
|
|
}
|
|
end
|
|
|
|
function formatTime(frames)
|
|
-- returns a mm:ss:hh (h=hundredths) representation of the time in frames given
|
|
if frames < 0 then return formatTime(0) end
|
|
local min, sec, hund
|
|
min = math.floor(frames/3600)
|
|
sec = math.floor(frames/60) % 60
|
|
hund = math.floor(frames/.6) % 100
|
|
str = string.format("%02d:%02d.%02d", min, sec, hund)
|
|
return str
|
|
end
|
|
|
|
function formatBigNum(number)
|
|
-- returns a string representing a number with commas as thousands separator (e.g. 12,345,678)
|
|
local s = string.format("%d", number)
|
|
local pos = string.len(s) % 3
|
|
if pos == 0 then pos = 3 end
|
|
return string.sub(s, 1, pos)
|
|
.. string.gsub(string.sub(s, pos+1), "(...)", ",%1")
|
|
end
|
|
|
|
function Mod1(n, m)
|
|
-- returns a number congruent to n modulo m in the range [1;m] (as opposed to [0;m-1])
|
|
return ((n-1) % m) + 1
|
|
end |