From 82781a9dd2e2466c47aea58f87d8191743ee108c Mon Sep 17 00:00:00 2001 From: otya128 Date: Fri, 23 Dec 2016 15:51:42 +0900 Subject: [PATCH] Fix SPCOL --- SMILEBASIC/sprite.d | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/SMILEBASIC/sprite.d b/SMILEBASIC/sprite.d index f85835e..16a4203 100644 --- a/SMILEBASIC/sprite.d +++ b/SMILEBASIC/sprite.d @@ -292,6 +292,7 @@ struct SpriteData //SPCOL SpriteCollision col; + bool enableCol; } class Sprite { @@ -1091,6 +1092,7 @@ class Sprite void spcol(int id, short sx, short sy, ushort w, ushort h, bool scale, int mask) { id = spid(id); + sprites[id].enableCol = true; sprites[id].col.data = &sprites[id]; sprites[id].col.sx = sx; sprites[id].col.sy = sy; @@ -1137,11 +1139,14 @@ class Sprite } int sphitsp2(int id, int start, int end) { - for(; start <= end; start++) + if (!sprites[id].enableCol) { - //自分を除外すべきか? - if(id == start) continue;//???? - if(sprites[id].col.detection(sprites[start])) + return -1; + } + synchronized (this) for(; start <= end; start++) + { + if(id == start) continue; + if(sprites[start].enableCol && sprites[id].col.detection(sprites[start])) return start; } return -1;