(loadFrom "nat-archive-tool" "src/nat/Lib.kiss") (prop :Map sprites (new Map)) (defNew [:String tagFilterString :String positionKey :PlayState playState &prop :ArchiveController controller] (super ->[archive e] ?(and (tagsMatch archive e tagFilterString) (hasComponent e Images)) ->[archive e] (unless (sprites.exists e.id) (when !(hasComponent e Positions) (addComponent archive e Positions (new Map))) (withWritableComponents archive e [positions Positions] (when !(positions.exists positionKey) (dictSet positions positionKey (object x 0.0 y 0.0 z 0.0)))) (let [sprite (new EntrySprite positionKey archive e controller)] (playState.entryGroup.add sprite) (dictSet sprites e.id sprite)))) (set onRemoveEntry ->[archive e] { (.kill (dictGet sprites e.id)) (sprites.remove e.id) // When an Entry is hidden, we can bet the user doesn't want it selected anymore (controller.DeSelectEntry e) }))