// 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))) (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) (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)) (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) (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))))