From af16cffeeb81b9c472ae57f48478024e16788c4b Mon Sep 17 00:00:00 2001 From: otya128 Date: Sat, 31 Dec 2016 20:15:54 +0900 Subject: [PATCH] Implement SPSET(4) --- SMILEBASIC/builtinfunctions.d | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/SMILEBASIC/builtinfunctions.d b/SMILEBASIC/builtinfunctions.d index 1cac4f4..5a1eeda 100644 --- a/SMILEBASIC/builtinfunctions.d +++ b/SMILEBASIC/builtinfunctions.d @@ -1485,6 +1485,25 @@ class BuiltinFunction return; p.sprite.spset(ix, defno); } + static void SPSET(PetitComputer p, int u, int v, int w, int h, int attr, out int ix) + { + if (u < 0) + throw new OutOfRange(smilebasicFunctionName, 1); + if (v < 0) + throw new OutOfRange(smilebasicFunctionName, 2); + if (w > p.graphic.width || w < 0) + throw new OutOfRange(smilebasicFunctionName, 3); + if (h > p.graphic.height || h < 0) + throw new OutOfRange(smilebasicFunctionName, 4); + if (u + w > p.graphic.width) + throw new OutOfRange(smilebasicFunctionName); + if (v + h > p.graphic.height) + throw new OutOfRange(smilebasicFunctionName); + ix = p.sprite.allocSprite(); + if (ix == -1) + return; + p.sprite.spset(ix, u, v, w, h, cast(SpriteAttr)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))