1
0

Implement SPSET(3)

This commit is contained in:
otya128
2016-12-31 20:09:38 +09:00
parent 4866a1d32d
commit 4b41376cb5
2 changed files with 15 additions and 0 deletions

View File

@@ -1474,6 +1474,17 @@ class BuiltinFunction
return; return;
p.sprite.spset(ix, u, v, w, h, cast(SpriteAttr)attr); p.sprite.spset(ix, u, v, w, h, cast(SpriteAttr)attr);
} }
static void SPSET(PetitComputer p, int defno, out int ix)
{
if (!p.sprite.isValidDef(defno))
{
throw new OutOfRange(smilebasicFunctionName, 1);
}
ix = p.sprite.allocSprite();
if (ix == -1)
return;
p.sprite.spset(ix, defno);
}
static void SPCHR(PetitComputer p, int id, int defno, DefaultValue!(int, false) V, DefaultValue!(int, false) W, DefaultValue!(int, false) H, DefaultValue!(int, false) ATTR) static void SPCHR(PetitComputer p, int id, int defno, DefaultValue!(int, false) V, DefaultValue!(int, false) W, DefaultValue!(int, false) H, DefaultValue!(int, false) ATTR)
{ {
if (!p.sprite.isValidSpriteId(id)) if (!p.sprite.isValidSpriteId(id))

View File

@@ -823,6 +823,10 @@ class Sprite
synchronized (this) synchronized (this)
sprites[id] = SpriteData(id, spdef, 0/*要調査*/); sprites[id] = SpriteData(id, spdef, 0/*要調査*/);
} }
int allocSprite()
{
return allocSprite(0, petitcom.displaynum ? cast(int)sprites.length - spmax - 1 : spmax - 1);
}
int allocSprite(int lower, int upper) int allocSprite(int lower, int upper)
{ {
for (int i = lower; i <= upper; i++) for (int i = lower; i <= upper; i++)