Map Editor Changes

* Removed Ogmo and replaced with Ldtk.
* TODO - Level Transitions
This commit is contained in:
Indrajith K L
2022-04-29 02:27:58 +05:30
parent ad2056876e
commit 6d82254873
14 changed files with 629 additions and 184 deletions

View File

@@ -1,56 +1,88 @@
package core;
import core.Types.LevelConfig;
import core.GameMap;
import entities.Player;
import flixel.FlxG;
import flixel.FlxState;
import flixel.addons.editors.ogmo.FlxOgmo3Loader;
import flixel.tile.FlxTilemap;
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 map:FlxOgmo3Loader;
var bg:FlxTilemap;
var walls:FlxTilemap;
var walls:Dynamic;
var _player:Player;
var levelContainer:FlxSpriteGroup;
var bg:FlxTiledSprite;
public function new(levelConfig:LevelConfig)
var currentLevel:GameMap_Level;
public function new(level:GameMap_Level)
{
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);
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);
add(walls);
map.loadEntities(loadPlayer, 'player_layer');
FlxG.camera.setScrollBoundsRect(0, 0, walls.width, walls.height, true);
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, walls);
FlxG.collide(_player, levelContainer);
if (_player.y > walls.height)
if (_player.y > currentLevel.pxHei)
{
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);
}
}
}