October 23, 2009

Level Editor

I got this idea from Microsoft’s game development tool XNA samples.

How do you turn a text file into a level. For instance, the following:

var level1layer001:String = “_______”;

var level1layer002:String = “_       _____”;

var level1layer003:String = “_  _    __”;

var level1layer004:String = “…____”;

var level1layer005:String = “_..       ______”;

var level1layer006:String = “_    ________”;

var level1layer007:String = “_    ___”;

var level1layer008:String = “…_______”;

var level1layer009:String = “_..___”;

var level1layer010:String = “_   “;

var level1layer011:String = “_  ”;

var level1layer012:String = “.     .      D”;

var level1layer013:String = “_XX___.     .”;

var level1layer014:String = “_     .    .       .  ”;

var level1layer015:String = “_         .        .   “;

var level1layer016:String = “..H__S..________”;

into this:

It’s fairly simple. Here is the code for you actionscripters out there.

var level1SetupArray:Array = new Array (level1layer016, level1layer015, level1layer014, level1layer013,level1layer012, level1layer011, level1layer010, level1layer009,level1layer008, level1layer007, level1layer006, level1layer005,level1layer004, level1layer003, level1layer002, level1layer001);

var level2SetupArray:Array = new Array (level2layer016, level2layer015, level2layer014, level2layer013,level2layer012, level2layer011, level2layer010, level2layer009,level2layer008, level2layer007, level2layer006, level2layer005,level2layer004, level2layer003, level2layer002, level2layer001);

var levelsArray:Array = new Array (level1SetupArray, level2SetupArray)

for (var ii:int = 0; ii < levelsArray[level-1].length;ii++) {

for (var i:int = 0; i < levelsArray[level-1][ii].length;i++) {

if (levelsArray[level-1][ii].charAt(i) == “_”) { //Floor Block 1

addFloorBlockFromTextInput(i*40,400-ii*40,1);

}

else if (levelsArray[level-1][ii].charAt(i) == “.”) { //Floor Block 2

addFloorBlockFromTextInput(i*40,400-ii*40,2);

}

else if (levelsArray[level-1][ii].charAt(i) == “X”) { //X = enemy

addFloorBlockFromTextInput(i*40,400-ii*40,3);

createSingleEnemy(i * 40, 400-ii*40,i);

}

else if (levelsArray[level-1][ii].charAt(i) == “H”) { //H = set hero x and y to here

addFloorBlockFromTextInput(i*40,400-ii*40,2);

hero.mc.x = i * 40;

hero.mc.y = 400 - ii * 40;

}

else if (levelsArray[level-1][ii].charAt(i) == “D”) { //D = Door

addFloorBlockFromTextInput(i*40,400-ii*40,2);

var newDoor:Door = new Door();

newDoor.x = i * 40;

newDoor.y = 400 - ii * 40;

gamelevel.addChild(newDoor);

}

else if (levelsArray[level-1][ii].charAt(i) == “S”) { //S = Sample with block (SAMPLES ARE NOW FILM REELS)

addFloorBlockFromTextInput(i*40,400-ii*40,2);

var newSample:Key = new Key();

newSample.x = i * 40;

newSample.y = (400 - ii * 40)-40;

gamelevel.addChild(newSample);

}

}

}

}