89 lines
2.3 KiB
Haxe
89 lines
2.3 KiB
Haxe
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());
|
|
}
|
|
}
|
|
}
|