package core; import core.GameMap; import entities.Player; import flixel.FlxG; import flixel.FlxState; import flixel.addons.display.FlxTiledSprite; import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond; import flixel.addons.transition.FlxTransitionableState; import flixel.addons.transition.TransitionData; import flixel.graphics.FlxGraphic; import flixel.group.FlxSpriteGroup; import flixel.util.FlxColor; import scenes.GameOver; class LevelBase extends FlxState { var walls:Dynamic; var _player:Player; var levelContainer:FlxSpriteGroup; var bg:FlxTiledSprite; var currentLevel:GameMap_Level; public function new(level:GameMap_Level) { super(); currentLevel = level; } function createTransition() { FlxTransitionableState.defaultTransIn = new TransitionData(TILES, FlxColor.WHITE, 1.1); FlxTransitionableState.defaultTransOut = new TransitionData(TILES, FlxColor.WHITE, 1.1); var diamond:FlxGraphic = FlxGraphic.fromClass(cast GraphicTransTileDiamond); diamond.persist = true; diamond.destroyOnNoUse = false; FlxTransitionableState.defaultTransIn.tileData = {asset: diamond, width: 32, height: 32}; FlxTransitionableState.defaultTransOut.tileData = {asset: diamond, width: 32, height: 32}; } override public function create() { super.create(); createTransition(); setupLevel(); } function setupLevel() { levelContainer = new FlxSpriteGroup(); levelContainer.x = currentLevel.worldX; levelContainer.y = currentLevel.worldY; walls = currentLevel.l_Walls; currentLevel.l_Walls.render(levelContainer); levelContainer.immovable = true; bg = new FlxTiledSprite(AssetPaths.Gray__png, currentLevel.pxWid, currentLevel.pxHei, true, true); add(bg); bg.scrollFactor.set(.33, .33); for (player in currentLevel.l_Entities.all_Player) { initPlayer(player); } add(levelContainer); FlxG.camera.setScrollBoundsRect(0, 0, currentLevel.pxWid, currentLevel.pxHei, true); } function initPlayer(playerEntity) { _player = new Player(playerEntity.pixelX, playerEntity.pixelY); add(_player); FlxG.camera.follow(_player, PLATFORMER); } override public function update(elapsed:Float) { super.update(elapsed); FlxG.collide(_player, levelContainer); if (_player.y > currentLevel.pxHei) { openSubState(new GameOver()); } } }