// TODO make these variables (var FLOOR_WIDTH 46) (var FLOOR_HEIGHT 32) (var SPRITE_HEIGHT 55) (prop :Array floorTiles []) (prop &mut :ScenData data null) (method &override :Void create [] (super.create) (set data (ScenData.coreData)) (addFloorLayer (groups (collect (range 255)) 32 Keep)) (addTerrainLayer (groups (concat (for _ (range 255) -1) (collect (range 512))) 32 Keep))) (var SELECTED_COLOR FlxColor.LIME) (var NORMAL_COLOR FlxColor.WHITE) (method :Void addFloorLayer [:Array> tiles] (let [&mut rowStartX 0 &mut rowStartY 0] (doFor row tiles (let [&mut x rowStartX &mut y rowStartY] (doFor tile row (let [tileSprite (data.floorSprite tile)] (set tileSprite.x x) (set tileSprite.y y) (FlxMouseEventManager.add tileSprite // handle click on floor: ->downTS {} ->upTS {} ->overTS (set overTS.color SELECTED_COLOR) ->outTS (set outTS.color NORMAL_COLOR)) (add tileSprite)) (+= x (/ FLOOR_WIDTH 2)) (+= y (/ FLOOR_HEIGHT 2)))) (-= rowStartX (/ FLOOR_WIDTH 2)) (+= rowStartY (/ FLOOR_HEIGHT 2))))) // TODO creatures and items need to be added when their floor and terrain tiles are // added, to preserve Z order (method :Void addTerrainLayer [:Array> tiles] (let [&mut rowStartX 0 &mut rowStartY 0] (doFor row tiles (let [&mut x rowStartX &mut y rowStartY] (doFor tile row (let [tileSprite (data.terrainSprite tile)] (set tileSprite.x x) (set tileSprite.y y) (when (> tileSprite.height SPRITE_HEIGHT) (-= tileSprite.y SPRITE_HEIGHT)) (FlxMouseEventManager.add tileSprite // Handle click on terrain: ->downTS {} ->upTS {} ->overTS (set overTS.color SELECTED_COLOR) ->outTS (set outTS.color NORMAL_COLOR)) (add tileSprite)) (+= x (/ FLOOR_WIDTH 2)) (+= y (/ FLOOR_HEIGHT 2)))) (-= rowStartX (/ FLOOR_WIDTH 2)) (+= rowStartY (/ FLOOR_HEIGHT 2))))) (var CAMERA_SPEED 500) (method &override :Void update [:Float elapsed] (super.update elapsed) // scroll to zoom: #{ if (FlxG.mouse.wheel != 0) { FlxG.camera.zoom += (FlxG.mouse.wheel / 10); } }# // F1 to toggle fullscreen: (when FlxG.keys.justPressed.F1 (set FlxG.fullscreen !FlxG.fullscreen)) (let [&mut cameraMovement (new FlxVector 0 0)] (when (or (= 0 FlxG.mouse.screenX) FlxG.keys.pressed.LEFT) (set cameraMovement.x -1)) (when (or (= 0 FlxG.mouse.screenY) FlxG.keys.pressed.UP) (set cameraMovement.y -1)) (when (or (= (- FlxG.width 1) FlxG.mouse.screenX) FlxG.keys.pressed.RIGHT) (set cameraMovement.x 1)) (when (or (= (- FlxG.height 1) FlxG.mouse.screenY) FlxG.keys.pressed.DOWN) (set cameraMovement.y 1)) (set cameraMovement (cameraMovement.truncate 1)) (set cameraMovement (cameraMovement.scale (* elapsed CAMERA_SPEED))) (set FlxG.camera.scroll (FlxG.camera.scroll.add cameraMovement.x cameraMovement.y))))