Skip to content

Commit 34aaa59

Browse files
authored
Merge pull request #2562 from RakieI/newstuff
fix: changeAnim not using prefix anims, face window, playerNo validation
2 parents 89b7fbe + 6d50340 commit 34aaa59

3 files changed

Lines changed: 29 additions & 37 deletions

File tree

src/bytecode.go

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4187,18 +4187,6 @@ func getRedirectedChar(c *Char, sc StateControllerBase, redirectID byte, scname
41874187
return crun
41884188
}
41894189

4190-
func validatePlayerNo(c *Char, pn int, pname, scname string) bool {
4191-
valid := pn >= 0 &&
4192-
pn < len(sys.chars) &&
4193-
len(sys.chars[pn]) > 0 &&
4194-
sys.chars[pn][0] != nil
4195-
if !valid {
4196-
sys.appendToConsole(c.warn() + fmt.Sprintf("Invalid %s for %s: %v", pname, scname, pn+1))
4197-
return false
4198-
}
4199-
return true
4200-
}
4201-
42024190
type stateDef StateControllerBase
42034191

42044192
const (
@@ -4863,12 +4851,12 @@ func (sc changeAnim) Run(c *Char, _ []int32) bool {
48634851
}
48644852
case changeAnim_animplayerno:
48654853
pn := int(exp[0].evalI(c)) - 1
4866-
if validatePlayerNo(c, pn, "animPlayerNo", "changeAnim") {
4854+
if crun.validatePlayerNo(pn, "animPlayerNo", "changeAnim") {
48674855
animPN = pn
48684856
}
48694857
case changeAnim_spriteplayerno:
48704858
pn := int(exp[0].evalI(c)) - 1
4871-
if validatePlayerNo(c, pn, "spritePlayerNo", "changeAnim") {
4859+
if crun.validatePlayerNo(pn, "spritePlayerNo", "changeAnim") {
48724860
spritePN = pn
48734861
}
48744862
case changeAnim_readplayerid:
@@ -5579,12 +5567,12 @@ func (sc explod) Run(c *Char, _ []int32) bool {
55795567
e.setAnim(e.animNo, apn, spn, ffx)
55805568
case explod_animplayerno:
55815569
pn := int(exp[0].evalI(c)) - 1
5582-
if validatePlayerNo(c, pn, "animPlayerNo", "Explod") {
5570+
if crun.validatePlayerNo(pn, "animPlayerNo", "Explod") {
55835571
animPN = pn
55845572
}
55855573
case explod_spriteplayerno:
55865574
pn := int(exp[0].evalI(c)) - 1
5587-
if validatePlayerNo(c, pn, "spritePlayerNo", "Explod") {
5575+
if crun.validatePlayerNo(pn, "spritePlayerNo", "Explod") {
55885576
spritePN = pn
55895577
}
55905578
case explod_ownpal:
@@ -5923,12 +5911,12 @@ func (sc modifyExplod) Run(c *Char, _ []int32) bool {
59235911
}
59245912
case explod_animplayerno:
59255913
pn := int(exp[0].evalI(c)) - 1
5926-
if validatePlayerNo(c, pn, "animPlayerNo", "modifyExplod") {
5914+
if crun.validatePlayerNo(pn, "animPlayerNo", "modifyExplod") {
59275915
animPN = pn
59285916
}
59295917
case explod_spriteplayerno:
59305918
pn := int(exp[0].evalI(c)) - 1
5931-
if validatePlayerNo(c, pn, "spritePlayerNo", "modifyExplod") {
5919+
if crun.validatePlayerNo(pn, "spritePlayerNo", "modifyExplod") {
59325920
spritePN = pn
59335921
}
59345922
case explod_remappal:

src/char.go

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3744,23 +3744,23 @@ func (c *Char) changeAnimEx(animNo int32, animPlayerNo int, spritePlayerNo int,
37443744
}
37453745
}
37463746

3747-
a.sff = sys.cgi[c.spritePN].sff
3748-
a.palettedata = &sys.cgi[c.spritePN].palettedata.palList
3749-
3750-
if c.playerNo != c.spritePN {
3751-
ownerChar := sys.chars[c.spritePN][0]
3752-
ownerPal := ownerChar.drawPal()
3753-
key := [2]int16{int16(ownerPal[0]), int16(ownerPal[1])}
3754-
3755-
if di, ok := a.palettedata.PalTable[key]; ok {
3756-
for _, id := range [...]int32{0, 9000} {
3757-
if spr := a.sff.GetSprite(int16(id), 0); spr != nil {
3758-
a.palettedata.Remap(spr.palidx, di)
3747+
if ffx == "" {
3748+
a.sff = sys.cgi[c.spritePN].sff
3749+
a.palettedata = &sys.cgi[c.spritePN].palettedata.palList
3750+
if c.playerNo != c.spritePN {
3751+
ownerChar := sys.chars[c.spritePN][0]
3752+
ownerPal := ownerChar.drawPal()
3753+
key := [2]int16{int16(ownerPal[0]), int16(ownerPal[1])}
3754+
3755+
if di, ok := a.palettedata.PalTable[key]; ok {
3756+
for _, id := range [...]int32{0, 9000} {
3757+
if spr := a.sff.GetSprite(int16(id), 0); spr != nil {
3758+
a.palettedata.Remap(spr.palidx, di)
3759+
}
37593760
}
37603761
}
37613762
}
37623763
}
3763-
37643764
// Update animation local scale
37653765
c.animlocalscl = 320 / sys.chars[c.animPN][0].localcoord
37663766
// Clsn scale depends on the animation owner's scale, so it must be updated
@@ -3816,6 +3816,16 @@ func (c *Char) setAnimElem(elem, elemtime int32) {
38163816
c.updateCurFrame()
38173817
}
38183818

3819+
func (c *Char) validatePlayerNo(pn int, pname, scname string) bool {
3820+
valid := pn >= 0 && pn < len(sys.chars) &&
3821+
len(sys.chars[pn]) > 0 && sys.chars[pn][0] != nil
3822+
if !valid {
3823+
sys.appendToConsole(c.warn() + fmt.Sprintf("Invalid %s for %s: %v", pname, scname, pn+1))
3824+
return false
3825+
}
3826+
return true
3827+
}
3828+
38193829
func (c *Char) setCtrl(ctrl bool) {
38203830
if ctrl {
38213831
c.setSCF(SCF_ctrl)

src/common.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -990,12 +990,6 @@ func (l *Layout) DrawFaceSprite(x, y float32, ln int16, s *Sprite, fx *PalFX, fs
990990

991991
if *window != sys.scrrect {
992992
w := window
993-
if w[0] > w[2] {
994-
w[0], w[2] = w[2], w[0]
995-
}
996-
if w[1] > w[3] {
997-
w[1], w[3] = w[3], w[1]
998-
}
999993

1000994
var fwin [4]int32
1001995
fwin[0] = int32(float32(w[0]))

0 commit comments

Comments
 (0)