diff --git a/SMILEBASIC/builtinfunctions.d b/SMILEBASIC/builtinfunctions.d index c0501f6..5c85e41 100644 --- a/SMILEBASIC/builtinfunctions.d +++ b/SMILEBASIC/builtinfunctions.d @@ -1769,6 +1769,10 @@ class BuiltinFunction { p.sprite.splink(child, parent); } + static int SPLINK(PetitComputer p, int id) + { + return p.sprite.splink(id); + } static void SPUNLINK(PetitComputer p, int id) { if (!p.sprite.isSpriteDefined(id)) diff --git a/SMILEBASIC/sprite.d b/SMILEBASIC/sprite.d index f9ff62d..c4b4916 100644 --- a/SMILEBASIC/sprite.d +++ b/SMILEBASIC/sprite.d @@ -802,6 +802,14 @@ class Sprite } return id; } + int unspid(int id) + { + if(petitcom.displaynum == 1) + { + return id - this.spmax; + } + return id; + } void spset(int id, int defno) { id = spid(id); @@ -1056,6 +1064,19 @@ class Sprite zChange = true; } } + int splink(int id) + { + if (!isSpriteDefined(id)) + { + return -1; + } + id = spid(id); + if (!sprites[id].parent) + { + return -1; + } + return unspid(sprites[id].parent.id); + } //再帰的にUNLINKされるのか? void spunlink(int id) {