Files
raw-haxe-game/source/core/LevelBase.hx
Indrajith K L 6d82254873 Map Editor Changes
* Removed Ogmo and replaced with Ldtk.
* TODO - Level Transitions
2022-04-29 02:27:58 +05:30

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());
}
}
}