package core; import core.Types.LevelConfig; import entities.Player; import flixel.FlxG; import flixel.FlxState; import flixel.addons.editors.ogmo.FlxOgmo3Loader; import flixel.tile.FlxTilemap; import scenes.GameOver; class LevelBase extends FlxState { var map:FlxOgmo3Loader; var bg:FlxTilemap; var walls:FlxTilemap; var _player:Player; public function new(levelConfig:LevelConfig) { super(); map = new FlxOgmo3Loader(levelConfig.ogmoLevel, levelConfig.levelJson); bg = map.loadTilemap(levelConfig.bgTileSheet, "bg"); walls = map.loadTilemap(levelConfig.wallTilesheet, "walls"); bg.scrollFactor.set(.33, .33); } override public function create() { super.create(); add(bg); add(walls); map.loadEntities(loadPlayer, 'player_layer'); FlxG.camera.setScrollBoundsRect(0, 0, walls.width, walls.height, true); } override public function update(elapsed:Float) { super.update(elapsed); FlxG.collide(_player, walls); if (_player.y > walls.height) { openSubState(new GameOver()); } } function loadPlayer(entity:EntityData) { if (entity.name == "player") { _player = new Player(entity.x, entity.y); add(_player); FlxG.camera.follow(_player, NO_DEAD_ZONE); } } }