makeTriangleSprite() add and position arrows horizontally

This commit is contained in:
2022-01-24 13:25:55 -07:00
parent 2fd49f80ff
commit 115b450f2f
4 changed files with 36 additions and 31 deletions

View File

@@ -0,0 +1,8 @@
package;
import kiss.Prelude;
import kiss.List;
import flixel.FlxSprite;
@:build(kiss.Kiss.build())
class ActionSprite extends FlxSprite {}

View File

@@ -0,0 +1,2 @@
(defNew [&prop :Void->Void action]
(super))

View File

@@ -6,6 +6,7 @@ import flixel.FlxSprite;
import flixel.util.FlxColor;
import flixel.input.gamepad.FlxGamepad;
import flixel.text.FlxText;
import flixel.tweens.FlxTween;
import haxe.ds.Option;
import kiss.Prelude;
import kiss.List;

View File

@@ -1,3 +1,7 @@
(var SPRITE_SPACING 20)
(var SPRITE_SIZE 100)
(var TEXT_SIZE 24)
(method &override :Void create []
#|{
super.create();
@@ -9,40 +13,24 @@
FlxSpriteUtil.beginDraw(FlxColor.WHITE);
var spacing = 20;
var shapeSize = 100;
var x = spacing;
var y = 720 - shapeSize - spacing;
var x = SPRITE_SPACING;
var y = FlxG.height - SPRITE_SIZE - SPRITE_SPACING;
// Split the screen into text area and dance area:
var splitX = 1280 / 2 + shapeSize;
background.drawLine(splitX, 0, splitX, 720);
var splitX = SPRITE_SPACING * 5 + SPRITE_SIZE * 4;
background.drawLine(splitX, 0, splitX, FlxG.height);
// Split the left side into upper/lower:
background.drawLine(0, 720 - shapeSize - spacing * 2, splitX, 720 - shapeSize - spacing * 2);
var bSprite = makeCircleSprite("B", x, y);
x += shapeSize + spacing;
var leftSprite = makeTriangleSprite(Left, "", x, y);
x += shapeSize + spacing;
var downSprite = makeTriangleSprite(Down, "", x, y);
x += shapeSize + spacing;
var upSprite = makeTriangleSprite(Up, "", x, y);
x += shapeSize + spacing;
var rightSprite = makeTriangleSprite(Right, "", x, y);
x += shapeSize + spacing;
var aSprite = makeCircleSprite("A", x, y);
background.drawLine(0, FlxG.height - SPRITE_SIZE - SPRITE_SPACING * 2, splitX, FlxG.height - SPRITE_SIZE - SPRITE_SPACING * 2);
add(background);
add(bSprite);
add(leftSprite);
add(downSprite);
add(upSprite);
add(rightSprite);
add(aSprite);
}|#)
(var SPRITE_SIZE 100)
(var TEXT_SIZE 24)
makeTriangleSprite(Left, "", y);
makeTriangleSprite(Down, "", y);
makeTriangleSprite(Up, "", y);
makeTriangleSprite(Right, "", y);
var actionSprite = makeTriangleSprite(Right, "a", -SPRITE_SIZE, ()->{trace("a");});
}|#)
(prop :Map<Int,ArrowDir> inputCodes (new Map))
(var DIR_ORDER [ Left Down Up Right ])
@@ -70,9 +58,9 @@
(dictSet inputCodes id nextToMap))
})))
(method :FlxSprite makeTriangleSprite [:ArrowDir dir :String text :Int x :Int y]
(method :FlxSprite makeTriangleSprite [:ArrowDir dir :String text :Int y &opt :Void->Void action]
#|{
var spr = new FlxSprite();
var spr = new ActionSprite(action);
spr.makeGraphic(SPRITE_SIZE, SPRITE_SIZE, FlxColor.TRANSPARENT, true);
FlxSpriteUtil.beginDraw(FlxColor.WHITE);
spr.drawTriangle(0, 0, SPRITE_SIZE);
@@ -93,7 +81,13 @@
text.color = FlxColor.BLACK;
spr.stamp(text, Math.floor(SPRITE_SIZE/2) - Math.floor(text.width / 2), Math.floor(SPRITE_SIZE/2) - Math.floor(text.height / 2));
spr.x = x;
spr.x = SPRITE_SPACING + DIR_ORDER.indexOf(dir) * (SPRITE_SIZE + SPRITE_SPACING);
spr.y = y;
if (action != null) {
FlxTween.linearMotion(spr, spr.x, spr.y, spr.x, FlxG.height, 200, false, {onComplete: (_) -> {spr.kill();}});
}
add(spr);
return spr;
}|#)