Fix Frozen playing card jitter, improve funky autofunc
This commit is contained in:
parent
ca0dd10b85
commit
9d235e4823
3 changed files with 43 additions and 28 deletions
|
|
@ -3,7 +3,7 @@
|
|||
"id": "Roland",
|
||||
"name": "Roland",
|
||||
"prefix": "Roland",
|
||||
"version": "2.9.53",
|
||||
"version": "2.9.54",
|
||||
"badge_colour": "8BE9FD",
|
||||
"display_name": "Roland",
|
||||
"main_file": "src/main.lua",
|
||||
|
|
|
|||
|
|
@ -53,20 +53,22 @@ local function freeze(card)
|
|||
return card.ability
|
||||
end
|
||||
|
||||
(card.ability or {}).Roland_crimson = not not (card.ability or {}).Roland_crimson
|
||||
local config = card.config or {}
|
||||
|
||||
(card.ability or {}).Roland_crimson = not not (card.ability or {}).Roland_crimson
|
||||
card.Roland_frozen_base = card.Roland_frozen_base or copy(card.base)
|
||||
card.Roland_frozen_card = card.Roland_frozen_card or copy(config.card)
|
||||
card.Roland_frozen_ability = card.Roland_frozen_ability or copy(card.ability)
|
||||
|
||||
card.base = card.Roland_frozen_base and copy(card.Roland_frozen_base) or card.base
|
||||
|
||||
local diff = type(card.set_sprites) == "function" and
|
||||
f(card.Roland_frozen_card):diff(config.card, f.chain(type, f.nq "table"))
|
||||
|
||||
config.card = card.Roland_frozen_card and copy(card.Roland_frozen_card) or config.card
|
||||
card.ability = card.Roland_frozen_ability and copy(card.Roland_frozen_ability) or card.ability
|
||||
card.Roland_frozen = card.Roland_frozen or {probability = SMODS.get_probability_vars(card, 1, 1)}
|
||||
|
||||
if type(card.set_sprites) == "function" and
|
||||
f(card.Roland_frozen_card):diff(config.card) then
|
||||
if diff then
|
||||
card:set_sprites(card.config.center, card.config.card)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ local f = {}
|
|||
|
||||
if not f then
|
||||
---@generic I, O
|
||||
---@param first string|fun(v: I): O
|
||||
---@param first integer|string|fun(v: I): O
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(first)
|
||||
|
|
@ -17,8 +17,8 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, T, O
|
||||
---@param first string|fun(v: I): T
|
||||
---@param second string|fun(v: T): O
|
||||
---@param first integer|string|fun(v: I): T
|
||||
---@param second integer|string|fun(v: T): O
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(first, second)
|
||||
|
|
@ -26,9 +26,9 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, T1, T2, O
|
||||
---@param first string|fun(v: I): T1
|
||||
---@param second string|fun(v: T1): T2
|
||||
---@param third string|fun(v: T2): O
|
||||
---@param first integer|string|fun(v: I): T1
|
||||
---@param second integer|string|fun(v: T1): T2
|
||||
---@param third integer|string|fun(v: T2): O
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(first, second, third)
|
||||
|
|
@ -36,10 +36,10 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, T1, T2, T3, O
|
||||
---@param first string|fun(v: I): T1
|
||||
---@param second string|fun(v: T1): T2
|
||||
---@param third string|fun(v: T2): T3
|
||||
---@param fourth string|fun(v: T3): O
|
||||
---@param first integer|string|fun(v: I): T1
|
||||
---@param second integer|string|fun(v: T1): T2
|
||||
---@param third integer|string|fun(v: T2): T3
|
||||
---@param fourth integer|string|fun(v: T3): O
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(first, second, third, fourth)
|
||||
|
|
@ -47,11 +47,11 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, T1, T2, T3, T4, O
|
||||
---@param first string|fun(v: I): T1
|
||||
---@param second string|fun(v: T1): T2
|
||||
---@param third string|fun(v: T2): T3
|
||||
---@param fourth string|fun(v: T3): T4
|
||||
---@param fifth string|fun(v: T4): O
|
||||
---@param first integer|string|fun(v: I): T1
|
||||
---@param second integer|string|fun(v: T1): T2
|
||||
---@param third integer|string|fun(v: T2): T3
|
||||
---@param fourth integer|string|fun(v: T3): T4
|
||||
---@param fifth integer|string|fun(v: T4): O
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(first, second, third, fourth, fifth)
|
||||
|
|
@ -59,7 +59,7 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, O
|
||||
---@param all { [1]: (string|fun(v: I): O) }
|
||||
---@param all { [1]: (integer|string|fun(v: I): O) }
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(all)
|
||||
|
|
@ -67,7 +67,7 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, T, O
|
||||
---@param all { [1]: (string|fun(v: I): T), [2]: (string|fun(v: T): O) }
|
||||
---@param all { [1]: (integer|string|fun(v: I): T), [2]: (integer|string|fun(v: T): O) }
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(all)
|
||||
|
|
@ -75,7 +75,7 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, T1, T2, O
|
||||
---@param all { [1]: (string|fun(v: I): T1), [2]: (string|fun(v: T1): T2), [3]: (string|fun(v: T2): O) }
|
||||
---@param all { [1]: (integer|string|fun(v: I): T1), [2]: (integer|string|fun(v: T1): T2), [3]: (integer|string|fun(v: T2): O) }
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(all)
|
||||
|
|
@ -83,7 +83,7 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, T1, T2, T3, O
|
||||
---@param all { [1]: (string|fun(v: I): T1), [2]: (string|fun(v: T1): T2), [3]: (string|fun(v: T2): T3), [4]: (string|fun(v: T3): O) }
|
||||
---@param all { [1]: (integer|string|fun(v: I): T1), [2]: (integer|string|fun(v: T1): T2), [3]: (integer|string|fun(v: T2): T3), [4]: (integer|string|fun(v: T3): O) }
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(all)
|
||||
|
|
@ -91,7 +91,7 @@ if not f then
|
|||
end
|
||||
|
||||
---@generic I, T1, T2, T3, T4, O
|
||||
---@param all { [1]: (string|fun(v: I): T1), [2]: (string|fun(v: T1): T2), [3]: (string|fun(v: T2): T3), [4]: (string|fun(v: T3): T4), [4]: (string|fun(v: T4): O) }
|
||||
---@param all { [1]: (integer|string|fun(v: I): T1), [2]: (integer|string|fun(v: T1): T2), [3]: (integer|string|fun(v: T2): T3), [4]: (integer|string|fun(v: T3): T4), [4]: (integer|string|fun(v: T4): O) }
|
||||
---@return fun(v: I): O
|
||||
---@nodiscard
|
||||
function f.chain(all)
|
||||
|
|
@ -114,7 +114,17 @@ local none
|
|||
---@return T
|
||||
---@nodiscard
|
||||
local function autofunc(func)
|
||||
return type(func) == "string" and f.indices(func) or func or f.id
|
||||
if func == false then
|
||||
return f.fals
|
||||
elseif func == true then
|
||||
return f.tru
|
||||
elseif type(func) == "number" then
|
||||
return f.arg(func)
|
||||
elseif type(func) == "string" then
|
||||
return f.indices(func)
|
||||
else
|
||||
return func or f.id
|
||||
end
|
||||
end
|
||||
|
||||
---@generic K, V
|
||||
|
|
@ -722,12 +732,15 @@ end
|
|||
---@generic K, V
|
||||
---@param self F|{ [K]: V }
|
||||
---@param other { [K]: V }
|
||||
---@param func? fun(v: V, k: K): any
|
||||
---@return K?
|
||||
---@overload fun(self: F|{ [K]: V }, func: string): integer
|
||||
---@nodiscard
|
||||
function f:diff(other)
|
||||
function f:diff(other, func)
|
||||
func = autofunc(func)
|
||||
|
||||
for k, v in self.next do
|
||||
if other[k] ~= v then
|
||||
if (not func or func(v, k)) and other[k] ~= v then
|
||||
return k
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue