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

3
source/core/GameMap.hx Normal file
View File

@@ -0,0 +1,3 @@
package core;
private typedef _Tmp = haxe.macro.MacroType<[ldtk.Project.build("assets/data/map.ldtk")]>;

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

View File

@@ -1,9 +0,0 @@
package core;
typedef LevelConfig =
{
var ogmoLevel:String;
var levelJson:String;
var wallTilesheet:String;
var bgTileSheet:String;
}

View File

@@ -13,14 +13,14 @@ class Player extends FlxSprite
var _left:FlxActionDigital;
var _right:FlxActionDigital;
var _jump:FlxActionDigital;
var _jumpPower:Int = 200;
var _jumpPower:Int = 230;
public function new(x:Int, y:Int)
{
super(x, y);
makeGraphic(16, 16, FlxColor.BLUE);
var runSpeed:Int = 80;
var runSpeed:Int = 120;
drag.x = runSpeed * 8;
acceleration.y = 420;
maxVelocity.set(runSpeed, _jumpPower);

View File

@@ -20,7 +20,7 @@ class GameOver extends FlxSubState
public function new()
{
super(0x33000000);
super(0x303030bf);
}
override public function create()

View File

@@ -1,18 +1,19 @@
package scenes;
import core.GameMap;
import core.LevelBase;
import flixel.FlxState;
class Level1 extends LevelBase
{
var map:GameMap;
var _currentLevel:GameMap_Level;
public function new()
{
super({
ogmoLevel: AssetPaths.maps__ogmo,
bgTileSheet: AssetPaths.bg__png,
wallTilesheet: AssetPaths.sci_fi_tileset__png,
levelJson: AssetPaths.level1__json
});
createTransition();
map = new GameMap();
_currentLevel = map.all_levels.Level_0;
super(_currentLevel);
}
override public function create()

View File

@@ -5,6 +5,11 @@ import djFlixel.gfx.pal.Pal_DB32;
import djFlixel.ui.FlxMenu;
import flixel.FlxG;
import flixel.FlxState;
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
import flixel.addons.transition.FlxTransitionableState;
import flixel.addons.transition.TransitionData;
import flixel.graphics.FlxGraphic;
import flixel.util.FlxColor;
import openfl.system.System;
class MenuState extends FlxState
@@ -12,10 +17,35 @@ class MenuState extends FlxState
override public function create()
{
super.create();
createTransition();
this.generateStarField();
this.createMenu();
}
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};
// FlxTransitionableState.defaultTransIn.color = FlxColor.WHITE;
// FlxTransitionableState.defaultTransIn.type = TILES;
// FlxTransitionableState.defaultTransIn.duration = 2;
// FlxTransitionableState.defaultTransIn.direction = new FlxPoint(1, 0);
// FlxTransitionableState.defaultTransIn.tileData.asset = diamond;
// FlxTransitionableState.defaultTransOut.color = FlxColor.WHITE;
// FlxTransitionableState.defaultTransOut.type = TILES;
// FlxTransitionableState.defaultTransOut.duration = 2;
// FlxTransitionableState.defaultTransOut.direction = new FlxPoint(1, 0);
// FlxTransitionableState.defaultTransOut.tileData.asset = diamond;
}
private function generateStarField()
{
var stars = new StarfieldSimple();