Make entry sprites draggable + save their positions

This commit is contained in:
2021-09-18 17:32:25 -06:00
parent b8372420f0
commit 65323a3d96
4 changed files with 15 additions and 3 deletions

View File

@@ -3,7 +3,7 @@ package;
import kiss.Prelude; import kiss.Prelude;
import kiss.List; import kiss.List;
import flash.display.BitmapData; import flash.display.BitmapData;
import flixel.FlxSprite; import flixel.addons.display.FlxExtendedSprite;
import nat.Entry; import nat.Entry;
import nat.Archive; import nat.Archive;
import nat.BoolExpInterp; import nat.BoolExpInterp;
@@ -11,4 +11,4 @@ import nat.components.Images;
import nat.components.Positions; import nat.components.Positions;
@:build(kiss.Kiss.build()) @:build(kiss.Kiss.build())
class EntrySprite extends FlxSprite {} class EntrySprite extends FlxExtendedSprite {}

View File

@@ -8,4 +8,12 @@
((object x x y y z z) ((object x x y y z z)
(super x y))) (super x y)))
(.onComplete (BitmapData.loadFromFile (joinPath archive.archiveDir "files" (nth images.imageFiles images.pinnedImageIndex))) (.onComplete (BitmapData.loadFromFile (joinPath archive.archiveDir "files" (nth images.imageFiles images.pinnedImageIndex)))
->bitmapData (loadGraphic bitmapData)))) ->bitmapData {
(loadGraphic bitmapData)
(enableMouseClicks false)
(enableMouseDrag)
}))
(set mouseStopDragCallback
->[self _dx _dy]
(withWritableComponents archive e [positions Positions]
(dictSet positions positionKey (object x (cast this.x Float) y (cast this.y Float) z 0.0)))))

View File

@@ -14,6 +14,7 @@ import flixel.text.FlxText;
import flixel.util.FlxColor; import flixel.util.FlxColor;
import flixel.FlxCamera; import flixel.FlxCamera;
import flixel.math.FlxVector; import flixel.math.FlxVector;
import flixel.addons.plugin.FlxMouseControl;
using StringTools; using StringTools;

View File

@@ -7,6 +7,9 @@
(method &override :Void create [] (method &override :Void create []
(super.create) (super.create)
(FlxG.plugins.add (new FlxMouseControl))
// TODO find a better way to pass the archiveDir to a HaxeFlixel game // TODO find a better way to pass the archiveDir to a HaxeFlixel game
(let [archiveDir (let [archiveDir
(or (Sys.getEnv "NAT_DIR") (throw "NAT_DIR environment variable must be set")) (or (Sys.getEnv "NAT_DIR") (throw "NAT_DIR environment variable must be set"))