Add SPSET check
This commit is contained in:
@@ -1456,6 +1456,10 @@ class BuiltinFunction
|
|||||||
}
|
}
|
||||||
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.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPCHR", 1);
|
||||||
|
}
|
||||||
if(!V.isDefault && !W.isDefault)
|
if(!V.isDefault && !W.isDefault)
|
||||||
{
|
{
|
||||||
int u = defno;
|
int u = defno;
|
||||||
@@ -1514,14 +1518,26 @@ class BuiltinFunction
|
|||||||
}
|
}
|
||||||
static void SPHIDE(PetitComputer p, int id)
|
static void SPHIDE(PetitComputer p, int id)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPHIDE", 1);
|
||||||
|
}
|
||||||
p.sprite.sphide(id);
|
p.sprite.sphide(id);
|
||||||
}
|
}
|
||||||
static void SPSHOW(PetitComputer p, int id)
|
static void SPSHOW(PetitComputer p, int id)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPSHOW", 1);
|
||||||
|
}
|
||||||
p.sprite.spshow(id);
|
p.sprite.spshow(id);
|
||||||
}
|
}
|
||||||
static void SPOFS(PetitComputer p, int id, DefaultValue!double x, DefaultValue!double y, double z)
|
static void SPOFS(PetitComputer p, int id, DefaultValue!double x, DefaultValue!double y, double z)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPOFS", 1);
|
||||||
|
}
|
||||||
if (x.isDefault || y.isDefault)
|
if (x.isDefault || y.isDefault)
|
||||||
{
|
{
|
||||||
double x_, y_, z_;
|
double x_, y_, z_;
|
||||||
@@ -1533,6 +1549,10 @@ class BuiltinFunction
|
|||||||
}
|
}
|
||||||
static void SPOFS(PetitComputer p, int id, DefaultValue!double x, DefaultValue!double y)
|
static void SPOFS(PetitComputer p, int id, DefaultValue!double x, DefaultValue!double y)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPOFS", 1);
|
||||||
|
}
|
||||||
if (x.isDefault || y.isDefault)
|
if (x.isDefault || y.isDefault)
|
||||||
{
|
{
|
||||||
double x_, y_, z_;
|
double x_, y_, z_;
|
||||||
@@ -1545,6 +1565,10 @@ class BuiltinFunction
|
|||||||
@StartOptional("z")
|
@StartOptional("z")
|
||||||
static void SPOFS(PetitComputer p, int id, out double x, out double y, out double z)
|
static void SPOFS(PetitComputer p, int id, out double x, out double y, out double z)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPOFS", 1);
|
||||||
|
}
|
||||||
p.sprite.getspofs(id, x, y, z);
|
p.sprite.getspofs(id, x, y, z);
|
||||||
}
|
}
|
||||||
static void SPANIM(PetitComputer p, Value[] va_args)
|
static void SPANIM(PetitComputer p, Value[] va_args)
|
||||||
@@ -1552,6 +1576,10 @@ class BuiltinFunction
|
|||||||
//TODO:配列
|
//TODO:配列
|
||||||
auto args = retro(va_args);
|
auto args = retro(va_args);
|
||||||
int no = args[0].castInteger;
|
int no = args[0].castInteger;
|
||||||
|
if (!p.sprite.isSpriteDefined(no))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPANIM", 1);
|
||||||
|
}
|
||||||
double[] animdata;
|
double[] animdata;
|
||||||
if(args[2].isString)
|
if(args[2].isString)
|
||||||
{
|
{
|
||||||
@@ -1699,6 +1727,7 @@ class BuiltinFunction
|
|||||||
}
|
}
|
||||||
static void SPCLR(PetitComputer p, DefaultValue!(int, false) i)
|
static void SPCLR(PetitComputer p, DefaultValue!(int, false) i)
|
||||||
{
|
{
|
||||||
|
//spset is not checked
|
||||||
if(i.isDefault)
|
if(i.isDefault)
|
||||||
p.sprite.spclr();
|
p.sprite.spclr();
|
||||||
else
|
else
|
||||||
@@ -1706,18 +1735,34 @@ class BuiltinFunction
|
|||||||
}
|
}
|
||||||
static void SPHOME(PetitComputer p, int i, int hx, int hy)
|
static void SPHOME(PetitComputer p, int i, int hx, int hy)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(i))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPHOME", 1);
|
||||||
|
}
|
||||||
p.sprite.sphome(i, hx, hy);
|
p.sprite.sphome(i, hx, hy);
|
||||||
}
|
}
|
||||||
static void SPSCALE(PetitComputer p, int i, double x, double y)
|
static void SPSCALE(PetitComputer p, int i, double x, double y)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(i))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPSCALE", 1);
|
||||||
|
}
|
||||||
p.sprite.spscale(i, x, y);
|
p.sprite.spscale(i, x, y);
|
||||||
}
|
}
|
||||||
static void SPROT(PetitComputer p, int i, double rot)
|
static void SPROT(PetitComputer p, int i, double rot)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(i))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPROT", 1);
|
||||||
|
}
|
||||||
p.sprite.sprot(i, rot);
|
p.sprite.sprot(i, rot);
|
||||||
}
|
}
|
||||||
static void SPCOLOR(PetitComputer p, int id, int color)
|
static void SPCOLOR(PetitComputer p, int id, int color)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPCOLOR", 1);
|
||||||
|
}
|
||||||
p.sprite.spcolor(id, cast(uint)color);
|
p.sprite.spcolor(id, cast(uint)color);
|
||||||
}
|
}
|
||||||
static void SPLINK(PetitComputer p, int child, int parent)
|
static void SPLINK(PetitComputer p, int child, int parent)
|
||||||
@@ -1726,38 +1771,67 @@ class BuiltinFunction
|
|||||||
}
|
}
|
||||||
static void SPUNLINK(PetitComputer p, int id)
|
static void SPUNLINK(PetitComputer p, int id)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPUNLINK", 1);
|
||||||
|
}
|
||||||
p.sprite.spunlink(id);
|
p.sprite.spunlink(id);
|
||||||
}
|
}
|
||||||
static void SPCOL(PetitComputer p, int id, DefaultValue!(int, false) scale)
|
static void SPCOL(PetitComputer p, int id, DefaultValue!(int, false) scale)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPCOL", 1);
|
||||||
|
}
|
||||||
scale.setDefaultValue(false);
|
scale.setDefaultValue(false);
|
||||||
p.sprite.spcol(id, cast(bool)scale);
|
p.sprite.spcol(id, cast(bool)scale);
|
||||||
}
|
}
|
||||||
static void SPCOL(PetitComputer p, int id, DefaultValue!int scale, int mask)
|
static void SPCOL(PetitComputer p, int id, DefaultValue!int scale, int mask)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPCOL", 1);
|
||||||
|
}
|
||||||
scale.setDefaultValue(false);
|
scale.setDefaultValue(false);
|
||||||
p.sprite.spcol(id, cast(bool)scale, mask);
|
p.sprite.spcol(id, cast(bool)scale, mask);
|
||||||
}
|
}
|
||||||
static void SPCOL(PetitComputer p, int id, int x, int y, int w, int h, int scale)
|
static void SPCOL(PetitComputer p, int id, int x, int y, int w, int h, int scale)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPCOL", 1);
|
||||||
|
}
|
||||||
p.sprite.spcol(id, cast(short)x, cast(short)y, cast(ushort)w, cast(ushort)h, cast(bool)scale, -1);
|
p.sprite.spcol(id, cast(short)x, cast(short)y, cast(ushort)w, cast(ushort)h, cast(bool)scale, -1);
|
||||||
}
|
}
|
||||||
static void SPCOL(PetitComputer p, int id, int x, int y, int w, int h, DefaultValue!int scale, int mask)
|
static void SPCOL(PetitComputer p, int id, int x, int y, int w, int h, DefaultValue!int scale, int mask)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPCOL", 1);
|
||||||
|
}
|
||||||
scale.setDefaultValue(false);
|
scale.setDefaultValue(false);
|
||||||
p.sprite.spcol(id, cast(short)x, cast(short)y, cast(ushort)w, cast(ushort)h, cast(bool)scale, mask);
|
p.sprite.spcol(id, cast(short)x, cast(short)y, cast(ushort)w, cast(ushort)h, cast(bool)scale, mask);
|
||||||
}
|
}
|
||||||
static void SPCOL(PetitComputer p, int id, int x, int y, int w, int h, DefaultValue!int scale)
|
static void SPCOL(PetitComputer p, int id, int x, int y, int w, int h, DefaultValue!int scale)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPCOL", 1);
|
||||||
|
}
|
||||||
scale.setDefaultValue(false);
|
scale.setDefaultValue(false);
|
||||||
p.sprite.spcol(id, cast(short)x, cast(short)y, cast(ushort)w, cast(ushort)h, cast(bool)scale, -1);
|
p.sprite.spcol(id, cast(short)x, cast(short)y, cast(ushort)w, cast(ushort)h, cast(bool)scale, -1);
|
||||||
}
|
}
|
||||||
static void SPCOL(PetitComputer p, int id, int x, int y, int w, int h)
|
static void SPCOL(PetitComputer p, int id, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
|
if (!p.sprite.isSpriteDefined(id))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPCOL", 1);
|
||||||
|
}
|
||||||
p.sprite.spcol(id, cast(short)x, cast(short)y, cast(ushort)w, cast(ushort)h, false, -1);
|
p.sprite.spcol(id, cast(short)x, cast(short)y, cast(ushort)w, cast(ushort)h, false, -1);
|
||||||
}
|
}
|
||||||
static int SPHITSP(PetitComputer p, int id)
|
static int SPHITSP(PetitComputer p, int id)
|
||||||
{
|
{
|
||||||
|
//spset is not checked
|
||||||
return p.sprite.sphitsp(id);
|
return p.sprite.sphitsp(id);
|
||||||
}
|
}
|
||||||
static int SPHITSP(PetitComputer p, int id, int min)
|
static int SPHITSP(PetitComputer p, int id, int min)
|
||||||
@@ -1770,6 +1844,7 @@ class BuiltinFunction
|
|||||||
}
|
}
|
||||||
static void SPVAR(PetitComputer p, int id, int var, double val)
|
static void SPVAR(PetitComputer p, int id, int var, double val)
|
||||||
{
|
{
|
||||||
|
//spset is not checked
|
||||||
p.sprite.spvar(id, var, val);
|
p.sprite.spvar(id, var, val);
|
||||||
}
|
}
|
||||||
static double SPVAR(PetitComputer p, int id, int var)
|
static double SPVAR(PetitComputer p, int id, int var)
|
||||||
|
|||||||
@@ -1028,7 +1028,15 @@ class Sprite
|
|||||||
{
|
{
|
||||||
if(parent >= child)
|
if(parent >= child)
|
||||||
{
|
{
|
||||||
throw new IllegalFunctionCall("SPLINK");
|
throw new IllegalFunctionCall("SPLINK", 2);
|
||||||
|
}
|
||||||
|
if (!isSpriteDefined(child))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPLINK", 1);
|
||||||
|
}
|
||||||
|
if (!isSpriteDefined(parent))
|
||||||
|
{
|
||||||
|
throw new IllegalFunctionCall("SPLINK", 2);
|
||||||
}
|
}
|
||||||
parent = spid(parent);
|
parent = spid(parent);
|
||||||
child = spid(child);
|
child = spid(child);
|
||||||
|
|||||||
Reference in New Issue
Block a user