Compare commits

...
Author SHA1 Message Date
TaikoZhongandClaude Fable 5.1 9e35c05a27 Clip players: draw mirrored leaves as a horizontal flip
A leaf placed with a negative-determinant matrix is exported as a negative sx
with the angle of the mirrored axis; drawing it with a negative width put the
piece on the wrong side, upside down (the control guide's second drum stick,
and mirrored leaves in the full-combo / donderful banners).  Such a leaf is now
drawn as the |sx| copy mirrored horizontally, with the pivot moved to w - ox
inside the flipped image and the angle brought back by 180 degrees.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 01:43:57 +08:00
3 changed files with 16 additions and 8 deletions

No files matched your search

+6 -3
View File
@@ -75,14 +75,17 @@ function Ending:draw(current_ms)
local s = shapes[r[1]]
local id = s and self:id_of(r[1])
if id then
local sx, sy = r[4], r[5]
local sx, sy, rot, ox, mirror = r[4], r[5], r[6], s[3], nil
-- mirrored leaf: see game/clip_player.lua
if sx < 0 then sx, rot, ox, mirror = -sx, rot - 180, s[1] - s[3], "horizontal" end
tex.draw_texture(id, {
x = CLIP_X + r[2],
y = self.y + CLIP_Y + r[3],
x2 = s[1] * (sx - 1),
y2 = s[2] * (sy - 1),
origin = { s[3] * sx, s[4] * sy },
rotation = r[6],
origin = { ox * sx, s[4] * sy },
rotation = rot,
mirror = mirror,
fade = r[7],
blend = (r[8] == 8) and "additive" or nil, -- cabinet add-blended leaf
})
+8 -3
View File
@@ -67,14 +67,19 @@ function ClipPlayer:draw(now, fade)
local s = shapes[shape]
local id = s and self:id_of(shape)
if id then
local sx, sy = r[4], r[5]
local sx, sy, rot, ox, mirror = r[4], r[5], r[6], s[3], nil
-- a mirrored leaf (det < 0) is exported as a negative sx with the angle of the
-- mirrored axis; drawn as a horizontal flip of the |sx| copy, the pivot moves to
-- w - ox inside the flipped image and the angle comes back by 180 degrees
if sx < 0 then sx, rot, ox, mirror = -sx, rot - 180, s[1] - s[3], "horizontal" end
tex.draw_texture(id, {
x = self.x + r[2],
y = self.y + r[3],
x2 = s[1] * (sx - 1),
y2 = s[2] * (sy - 1),
origin = { s[3] * sx, s[4] * sy },
rotation = r[6],
origin = { ox * sx, s[4] * sy },
rotation = rot,
mirror = mirror,
fade = r[7] * fade,
blend = (r[8] == 8) and "additive" or nil, -- cabinet add-blended leaf
})
+2 -2
View File
@@ -3232,7 +3232,7 @@ c6dad415f43ae162eeda6ddc6cccafffadb98a842a2a7ad71288502f70d1a8a3 *./Scripts/back
d375fa5fcfd156fd74968b841423fe4618a1b3046d37dacb0b1c3d399dd471f6 *./Scripts/background/bg_objects/donbg/anim_player.lua
0bb1e1b3fd82e6b525dc951313fb4df87aae96cdbb3d9cad175bcbe368e84330 *./Scripts/background/bg_objects/donbg/base.lua
63bd3b3d984c5c970fbe1a3b45aadb0eee6e1409a790889a3585b7e8fda44f4a *./Scripts/background/bg_objects/donbg.lua
a2798341597901c488120539ba791c26bdbec329d5bc8126acbca67a2e2344f2 *./Scripts/background/bg_objects/ending.lua
5f95cbe4c2e75e0c526b4bcd17125f02decd21d4c1db8c2c1b15a3762e590c0b *./Scripts/background/bg_objects/ending.lua
7421cecba17c2d02d2fa9d80fbdeab1b6235420edcef6ee75bda4fb1797aabb0 *./Scripts/background/bg_objects/enso_skip.lua
78a051013339f7b2376561baa3a5d591e1435446b06721bbc02ac4b02e2ed137 *./Scripts/background/bg_objects/fever_anim.lua
bbc5dd4b156adaf9ee014885090623937935845aea4e356bb19d5b7f85a1a46c *./Scripts/background/bg_objects/fever.lua
@@ -3250,7 +3250,7 @@ f204455c907d3e0e7affb89db3649a709a27d528d84cc58d51a7d8cfaa1d3deb *./Scripts/back
744599a57762ca2a669240caee885431c4216945c05bcd4e85c45850f2e931a3 *./Scripts/entry/costume_menu.lua
8b28e4ba452844cb59b0db4a6b90043a589d944ad458c4788b6cc6d31b9bd4b1 *./Scripts/entry/entry.lua
3d8c25402fff69adbfa1f6796807665f6cd61528583d0b7c625e09af752d5160 *./Scripts/entry/player.lua
aae54e0a31c77eac3fbf7e31db7e0136e9b440115ee5433c0b632b9871f13097 *./Scripts/game/clip_player.lua
056197114b3591a56de9bdd370dbfb3581cc4f9d78ded8a5c690ecd157122759 *./Scripts/game/clip_player.lua
62fabd365bc0240603bc719f89bf7b42cce8324a810ccc4d63e99a1a0d49b0da *./Scripts/game/ending_anim/ending_clear.lua
3f6f738f19b6475664bdba856711517e3c3a7c868d00184722e30c8222f413b6 *./Scripts/game/ending_anim/ending_donderful.lua
282af6e13da1b6974ec2b746073feee5fab48226d8c8c6e064bec20c6e19b35f *./Scripts/game/ending_anim/ending_fail.lua