diff --git a/SMILEBASIC/builtinfunctions.d b/SMILEBASIC/builtinfunctions.d index ef7ca90..06b694e 100644 --- a/SMILEBASIC/builtinfunctions.d +++ b/SMILEBASIC/builtinfunctions.d @@ -1385,27 +1385,26 @@ class BuiltinFunction { p.sprite.spshow(id); } - static void SPOFS(PetitComputer p, int id, DefaultValue!double x, DefaultValue!double y, DefaultValue!(int, false) z) + static void SPOFS(PetitComputer p, int id, DefaultValue!double x, DefaultValue!double y, DefaultValue!(double, false) z) { if (x.isDefault || y.isDefault) { - double x_, y_; - int z_; + double x_, y_, z_; p.sprite.getspofs(id, x_, y_, z_); x.setDefaultValue(x_); y.setDefaultValue(y_); } if(z.isDefault) { - p.sprite.spofs(id, cast(int)x, cast(int)y); + p.sprite.spofs(id, cast(double)x, cast(double)y); } else { - p.sprite.spofs(id, cast(int)x, cast(int)y, cast(int)z); + p.sprite.spofs(id, cast(double)x, cast(double)y, cast(double)z); } } @StartOptional("z") - static void SPOFS(PetitComputer p, int id, out double x, out double y, out int z) + static void SPOFS(PetitComputer p, int id, out double x, out double y, out double z) { p.sprite.getspofs(id, x, y, z); } diff --git a/SMILEBASIC/sprite.d b/SMILEBASIC/sprite.d index 129abba..f85835e 100644 --- a/SMILEBASIC/sprite.d +++ b/SMILEBASIC/sprite.d @@ -182,7 +182,7 @@ struct SpriteData int defno; double x, y; int homex, homey; - int z;/*!*/ + double z;/*!*/ int u, v, w, h;//個々で保持してるみたい,SPSETをして後でSPDEFをしても変化しない uint color; double[8] var = 0; @@ -626,7 +626,7 @@ class Sprite foreach(i, ref s; sprites) { //if(!s.define) continue; - auto zet = s.z + 256; + auto zet = cast(int)s.z + 256; listptr[i].sprite = &s; if(bucketsptr[zet]) { @@ -895,7 +895,7 @@ class Sprite sprites[id].linky = cast(int)(y + (sprites[id].parent ? sprites[id].parent.linky : 0)); } } - void spofs(int id, double x, double y, int z) + void spofs(int id, double x, double y, double z) { id = spid(id); synchronized (this) @@ -909,7 +909,7 @@ class Sprite } zChange = true; } - void getspofs(int id, out double x, out double y, out int z) + void getspofs(int id, out double x, out double y, out double z) { id = spid(id); x = sprites[id].x;