Move EntryRep/id tracking to PlaygroundSystem
This commit is contained in:
@@ -1,48 +1,41 @@
|
||||
(loadFrom "nat-archive-tool" "src/nat/Lib.kiss")
|
||||
|
||||
(prop :Map<String,EntrySprite> sprites (new Map))
|
||||
|
||||
// TODO this can also handle text sprites, and instead of saving out the text bitmap,
|
||||
// just make the FlxText every time at runtime -- so PinNextImage won't be needed
|
||||
// when the media tag is added
|
||||
|
||||
(defNew [&prop :PlayState playState
|
||||
&prop :ArchiveController controller]
|
||||
:ArchiveController controller]
|
||||
(super
|
||||
playState
|
||||
controller
|
||||
->[archive e]
|
||||
?(or (hasComponent e Name) (hasComponent e Circle) (hasComponent e Rectangle))
|
||||
->[archive e pos &opt ui]
|
||||
(unless (sprites.exists e.id)
|
||||
(let [sprite (new EntrySprite this _playgroundKey pos archive e controller)]
|
||||
(set sprite.cameras [FlxG.camera])
|
||||
(sprite.enableDragToSelect
|
||||
->:Void {
|
||||
(controller.AddSelectEntry e)
|
||||
(sprite.updateColor)
|
||||
}
|
||||
->:Void {
|
||||
(controller.DeSelectEntry e)
|
||||
(sprite.updateColor)
|
||||
})
|
||||
(playState.entryGroup.add sprite)
|
||||
(dictSet sprites e.id sprite)))
|
||||
(let [sprite (new EntrySprite this _playgroundKey pos archive e controller)]
|
||||
(set sprite.cameras [FlxG.camera])
|
||||
(sprite.enableDragToSelect
|
||||
->:Void {
|
||||
(controller.AddSelectEntry e)
|
||||
(sprite.updateColor)
|
||||
}
|
||||
->:Void {
|
||||
(controller.DeSelectEntry e)
|
||||
(sprite.updateColor)
|
||||
})
|
||||
(playState.entryGroup.add sprite)
|
||||
sprite)
|
||||
->[archive e pos e2 pos2 &opt ui]
|
||||
(let [o .origin (dictGet sprites e.id)
|
||||
o2 .origin (dictGet sprites e2.id)]
|
||||
(let [o .origin (dictGet entryReps e.id)
|
||||
o2 .origin (dictGet entryReps e2.id)]
|
||||
(playState.debugLayer.drawLine (+ pos.x o.x) (+ pos.y o.y) (+ pos2.x o2.x) (+ pos2.y o2.y) FlxColor.LIME))
|
||||
->[archive e &opt ui]
|
||||
{
|
||||
(whenLet [sprite (dictGet sprites e.id)]
|
||||
(whenLet [sprite (dictGet entryReps e.id)]
|
||||
(sprite.kill)
|
||||
(playState.entryGroup.remove sprite true)
|
||||
(sprites.remove e.id))
|
||||
(playState.entryGroup.remove sprite true))
|
||||
}))
|
||||
|
||||
(method &override :Void clear [:ColorF color]
|
||||
(set playState.bgColor (FlxColor.fromRGBFloat color.r color.g color.b color.a))
|
||||
(playState.debugLayer.clear)
|
||||
(sprites.clear)
|
||||
(entryReps.clear)
|
||||
(playState.entryGroup.kill)
|
||||
(playState.entryGroup.clear)
|
||||
(playState.entryGroup.revive))
|
||||
@@ -56,9 +49,6 @@
|
||||
(FlxG.camera.calculateScrollBounds playState.entryGroup PlayState.SCROLL_BOUND_MARGIN)
|
||||
(playState.entryGroup.sort ->[o s1 s2] (FlxSort.byValues o (z s1.e) (z s2.e))))
|
||||
|
||||
(method getSelectedSprites []
|
||||
(filter (for e (controller.getSelectedEntries) (dictGet sprites e.id))))
|
||||
|
||||
(prop defaultSpacing 50)
|
||||
(prop &mut defaultY 0)
|
||||
(method &override :Position defaultPosition [_]
|
||||
|
Reference in New Issue
Block a user