Lode Runner - Total Recall (v2.01a.3)

Cette révision appartient à :
simon_hung
2015-07-02 13:38:33 +08:00
Parent 8b86be66c5
révision 01086520d1
156 fichiers modifiés avec 13137 ajouts et 1816 suppressions
+339 -96
Voir le fichier
@@ -34,12 +34,16 @@ var tileInfo = [
var baseTile=[];
var lastRunner = null;
var lastGuardList = [];
var editBorder;
var editBorder, editStartX;
var testLevelInfo = {level: -1};
var mouseInStage = 1;
function startEditMode()
{
soundIconObj.disable(1);
repeatActionIconObj.disable(1);
playMode = PLAY_EDIT;
playData = PLAY_DATA_USERDEF; //for title name only
mainStage.removeAllChildren();
//document.onkeydown = function() { return true; };
document.onkeydown = editHandleKeyDown;
@@ -52,6 +56,7 @@ function startEditMode()
createEditMap();
startEditTicker();
setButtonState();
initForPlay(); // 1/19/2015
}
function setEditSelectMenu()
@@ -82,7 +87,7 @@ function saveTestState()
function startTestMode()
{
playMode = PLAY_TEST;
playData = 3;
playData = PLAY_DATA_USERDEF;
curLevel = testLevelInfo.level;
stopEditTicker();
@@ -103,46 +108,51 @@ var EDIT_PADDING = 1;
function canvasEditReSize()
{
for (var scale = MAX_SCALE; scale >= MIN_SCALE; scale -= 0.25) {
canvasX = (BASE_SCREEN_X+BASE_TILE_X*2) * scale+ EDIT_PADDING * (NO_OF_TILES_X+1);
canvasY = BASE_SCREEN_Y * scale + EDIT_PADDING * (NO_OF_TILES_Y+1);
if (canvasX <= screenX1 && canvasY <= screenY1 || scale <= MIN_SCALE) break;
var menuIconAreaX = screenBorder + BASE_ICON_X * tileScale; //current icon size X
var toolAreaX = BASE_TILE_X*3/2; //edit tool size X
var canvas = document.getElementById('canvas');
//(1) try use scale same as play mode
canvasX = (BASE_SCREEN_X+toolAreaX) * tileScale + EDIT_PADDING * (NO_OF_TILES_X+1);
canvasY = BASE_SCREEN_Y * tileScale + EDIT_PADDING * (NO_OF_TILES_Y+1);
if(canvasX > (screenX1 - menuIconAreaX) || canvasY > screenY1) {
//(2) can not fit, find new scale
for (var scale = MAX_SCALE*100; scale >= MIN_SCALE*100; scale -= 10) {
tileScale = scale/100; //new scale
canvasX = (BASE_SCREEN_X+toolAreaX) * tileScale + EDIT_PADDING * (NO_OF_TILES_X+1);
canvasY = BASE_SCREEN_Y * tileScale + EDIT_PADDING * (NO_OF_TILES_Y+1);
if (canvasX <= (screenX1 - menuIconAreaX) && canvasY <= screenY1 || tileScale <= MIN_SCALE) break;
}
}
//debug("screenX1 = " + screenX1 + " screenY1 = " + screenY1 + "scale = " + scale);
debug("EDIT SCALE = " + tileScale);
canvas = document.getElementById('canvas');
var left = ((screenX1 - canvasX)/2|0),
top = ((screenY1 - canvasY)/2|0);
if(left < menuIconAreaX) left = ((screenX1 - canvasX - menuIconAreaX)/2|0);
canvas.width = canvasX;
canvas.height = canvasY;
//Set canvas top left position
var left = ((screenX1 - canvasX)/2|0),
top = ((screenY1 - canvasY)/2|0);
canvas.style.left = (left>0?left:0) + "px";
canvas.style.top = (top>0?top:0) + "px";
canvas.style.position = "absolute";
//initial constant value
tileScale = scale;
tileW = BASE_TILE_X * scale;
tileH = BASE_TILE_Y * scale;
W2 = (tileW/2|0); //20, 15, 10,
H2 = (tileH/2|0); //22, 16, 11
W4 = (tileW/4|0); //10, 7, 5,
H4 = (tileH/4|0); //11, 8, 5,
tileWScale = BASE_TILE_X * tileScale;
tileHScale = BASE_TILE_Y * tileScale;
editBorder = 4 * tileScale;
editStartX = (tileWScale + W2 * tileScale);
}
function createBaseTile()
{
for(var id = 0; id < tileInfo.length; id++) {
baseTile[id] = { image: preload.getResult(tileInfo[id][0]), id: id };
baseTile[id] = { image: getThemeImage(tileInfo[id][0]), id: id };
}
emptyTile = { image: preload.getResult("empty"), id: 0 };
emptyTile = { image: getThemeImage("empty"), id: 0 };
actTile = baseTile[1];
}
@@ -150,12 +160,11 @@ function createEditMap()
{
var tile, backColor, bitmap;
setEditBackground();
drawEditArea(0,0,
(tileW+EDIT_PADDING)*NO_OF_TILES_X+EDIT_PADDING,
(tileH+EDIT_PADDING)*NO_OF_TILES_Y+EDIT_PADDING
setCanvasBackground();
setEditBackground(editStartX,0,
(tileWScale+EDIT_PADDING)*NO_OF_TILES_X+EDIT_PADDING,
(tileHScale+EDIT_PADDING)*NO_OF_TILES_Y+EDIT_PADDING
);
initMapInfo();
getTestLevel(testLevelInfo);
@@ -174,7 +183,7 @@ function createEditMap()
tile = new createjs.Container();
backColor = new createjs.Shape();
backColor.graphics.beginFill("black").drawRect(0, 0, tileW, tileH).endFill();
backColor.graphics.beginFill("black").drawRect(0, 0, tileWScale, tileHScale).endFill();
if(id == 0) {
bitmap = new createjs.Bitmap(emptyTile.image);
} else {
@@ -183,26 +192,36 @@ function createEditMap()
bitmap.scaleX = bitmap.scaleY = tileScale;
tile.addChild(backColor, bitmap);
tile.x = (tileW + EDIT_PADDING) * x+EDIT_PADDING;
tile.y = (tileH + EDIT_PADDING) * y+EDIT_PADDING;
tile.x = (tileWScale + EDIT_PADDING) * x+EDIT_PADDING + editStartX;
tile.y = (tileHScale + EDIT_PADDING) * y+EDIT_PADDING;
editMap[x][y] = { tile: tile, id: id };
mainStage.addChild(tile);
addManCheck(id, x, y);
}
}
drawEditGround();
drawEditBlock(editStartX,0, canvasX-editStartX-1,
(tileHScale+EDIT_PADDING)*NO_OF_TILES_Y+EDIT_PADDING
);
addSelectIcon();
addCursorTile();
drawEditLevel();
drawSaveButton();
drawTestButton();
drawNewButton();
drawLoadButton();
enableTestButton();
mouseInStage = 1;
mainStage.on("stagemouseup", stageMouseUp);
mainStage.on("stagemousedown", stageMouseDown);
mainStage.on("mouseleave", function() { mouseInStage = 0; });
mainStage.on("mouseenter", function() { mouseInStage = 1; });
}
function clearEditMap()
{
initMapInfo();
@@ -225,7 +244,7 @@ function tile2Id(tileChar)
}
}
function setEditBackground()
function setCanvasBackground()
{
//set background color
var background = new createjs.Shape();
@@ -233,23 +252,41 @@ function setEditBackground()
mainStage.addChild(background);
document.body.style.background = "#301050";
}
function drawEditArea(startX, startY, width, height)
function setEditBackground(startX, startY, width, height)
{
var editBack = new createjs.Shape();
editBack.alpha = 0.5;
editBack.alpha = 0.6;
editBack.graphics.beginFill("gold").drawRect(startX, startY, width, height);
mainStage.addChild(editBack);
}
function drawEditBlock(startX, startY, width, height)
{
var editBlock = new createjs.Shape();
editBlock.alpha = 0.6;
//editBack.graphics.beginFill("gold").drawRect(startX, startY, width, height);
editBlock.graphics.setStrokeStyle(2);
editBlock.graphics.beginStroke("red");
editBlock.graphics.moveTo(startX, startY);
editBlock.graphics.lineTo(startX+width, startY);
editBlock.graphics.lineTo(startX+width, startY+height);
editBlock.graphics.lineTo(startX, startY+height);
editBlock.graphics.lineTo(startX, startY);
editBlock.graphics.endStroke();
mainStage.addChild(editBlock);
}
function drawEditGround()
{
var groundTile;
var y = (tileH + EDIT_PADDING) * NO_OF_TILES_Y+EDIT_PADDING;
var x = (tileW + EDIT_PADDING) * NO_OF_TILES_X+EDIT_PADDING;
var x = (tileWScale + EDIT_PADDING) * NO_OF_TILES_X+EDIT_PADDING + editStartX;
var y = (tileHScale + EDIT_PADDING) * NO_OF_TILES_Y+EDIT_PADDING;
groundTile = new createjs.Shape();
groundTile.graphics.beginFill("#0DA1FF").drawRect(0, 0, x, 10*tileScale);
groundTile.graphics.beginFill(getThemeTileColor()).drawRect(0, 0, x, 10*tileScale);
groundTile.x = 0;
groundTile.y = y;
@@ -258,13 +295,14 @@ function drawEditGround()
function addSelectIcon()
{
var x = (tileW+EDIT_PADDING)*NO_OF_TILES_X+tileW/2;
//var x = (tileWScale+EDIT_PADDING)*NO_OF_TILES_X+tileWScale/2;
var x = W4 * tileScale;
var y;
for(var i = 1; i < baseTile.length; i++) {
y = (tileH*3/2)*(i-1) + tileH*3/2;
y = (tileHScale*5/3)*(i-1) + tileHScale*1/4;
drawSelectIcon(i, x, y);
}
y = (tileH*3/2)*(i-1) + tileH*3/2;
y = (tileHScale*5/3)*(i-1) + tileHScale*1/4;
drawSelectIcon(0, x, y);
}
@@ -275,7 +313,7 @@ function addCursorTile()
cursorTileObj = new createjs.Container();
backColor = new createjs.Shape();
backColor.graphics.beginFill("black").drawRect(0, 0, tileW, tileH).endFill();
backColor.graphics.beginFill("black").drawRect(0, 0, tileWScale, tileHScale).endFill();
bitmap = new createjs.Bitmap(actTile.image);
bitmap.scaleX = bitmap.scaleY = tileScale;
@@ -326,11 +364,11 @@ function drawSelectIcon(id, x, y)
} else {
selColor = "black";
}
border.graphics.beginFill(selColor).drawRect(-editBorder, -editBorder, tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill(selColor).drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("black").drawRect(0, 0, tileW, tileH).endFill();
backColor.graphics.beginFill("black").drawRect(0, 0, tileWScale, tileHScale).endFill();
//child id = 2
if(id == 0) {
@@ -358,10 +396,10 @@ function selectTileClick()
var inActBorder = selectedTile.getChildAt(0);
inActBorder.graphics.clear();
inActBorder.graphics.beginFill("black").drawRect(-editBorder, -editBorder, tileW+editBorder*2, tileH+editBorder*2).endFill();
inActBorder.graphics.beginFill("black").drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
actBorder.graphics.clear();
actBorder.graphics.beginFill("red").drawRect(-editBorder, -editBorder, tileW+editBorder*2, tileH+editBorder*2).endFill();
actBorder.graphics.beginFill("red").drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
actTile = baseTile[this.myId];
cursorTileObj.getChildAt(1).image = actTile.image;
@@ -373,7 +411,7 @@ function selectTileMouseOver()
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("gold").drawRect(-editBorder, -editBorder, tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("gold").drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
mainStage.cursor = 'pointer'
mouseOver = 1;
@@ -385,51 +423,53 @@ function selectTileMouseOut()
var color = (actTile.id == this.myId)?"red":"black";
border.graphics.clear();
border.graphics.beginFill(color).drawRect(-editBorder, -editBorder, tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill(color).drawRect(-editBorder, -editBorder, tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
mouseOver = 0;
}
function drawEditLevel()
{
var y = canvas.height - tileH - editBorder*2;
var x = 17.2*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
drawText(0, y, "LEVEL", mainStage);
drawText(x, y, "EDIT", mainStage);
x += 4.3*(tileWScale+EDIT_PADDING);
drawText(x, y, "LEVEL", mainStage);
drawEditLevelNo();
}
var editLevelNoObj = [];
function drawEditLevelNo()
{
var y = canvas.height - tileH - editBorder*2;
var y = canvas.height - tileHScale - editBorder;
for(var i = 0; i < editLevelNoObj.length; i++)
mainStage.removeChild(editLevelNoObj[i]);
editLevelNoObj = drawText(5*tileW, y, ("00"+(testLevelInfo.level)).slice(-3), mainStage);
editLevelNoObj = drawText(26.5*(tileWScale+EDIT_PADDING), y, ("00"+(testLevelInfo.level)).slice(-3), mainStage);
}
var testButton, newButton, saveButton;
var testButton, newButton, saveButton, loadButton;
function drawTestButton()
{
var border, backColor, text;
var textSting = "TEST";
var width = textSting.length * tileW;
//var x = canvas.width - width * 1.5;
var x = 20*(tileW+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileH - editBorder;
var width = textSting.length * tileWScale;
var x = 8.5*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
testButton = new createjs.Container();
//child id = 0
border = new createjs.Shape();
border.graphics.beginFill("black").drawRect(-editBorder, -editBorder, width+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileH).endFill();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
testButton.addChild(border, backColor);
@@ -446,6 +486,7 @@ function drawTestButton()
function testButtonClick()
{
mainStage.cursor = 'default';
startTestMode();
}
@@ -454,8 +495,12 @@ function drawTestButton()
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("gold").drawRect(-editBorder, -editBorder, 4*tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("red").drawRect(-editBorder, -editBorder, 4*tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = this.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#ffa").drawRect(0, 0, width, tileHScale).endFill();
mainStage.cursor = 'pointer';
mouseOver = 1;
}
@@ -465,8 +510,13 @@ function drawTestButton()
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("black").drawRect(-editBorder, -editBorder, 4*tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, 4*tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = this.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
mouseOver = 0;
}
}
@@ -476,20 +526,19 @@ function drawSaveButton()
var border, backColor, text;
var textSting = "SAVE";
var width = textSting.length * tileW;
//var x = canvas.width - width * 1.5;
var x = 15*(tileW+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileH - editBorder;
var width = textSting.length * tileWScale;
var x = 13*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
saveButton = new createjs.Container();
//child id = 0
border = new createjs.Shape();
border.graphics.beginFill("black").drawRect(-editBorder, -editBorder, width+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileH).endFill();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
saveButton.addChild(border, backColor);
@@ -517,7 +566,11 @@ function drawSaveButton()
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("gold").drawRect(-editBorder, -editBorder, 4*tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("red").drawRect(-editBorder, -editBorder, 4*tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = this.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#ffa").drawRect(0, 0, width, tileHScale).endFill();
mainStage.cursor = 'pointer';
mouseOver = 1;
@@ -528,7 +581,11 @@ function drawSaveButton()
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("black").drawRect(-editBorder, -editBorder, 4*tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, 4*tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = this.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#fff").drawRect(0, 0, width, tileHScale).endFill();
mouseOver = 0;
}
@@ -548,7 +605,7 @@ function drawSaveButton()
function startPlayUserLevel()
{
playMode = PLAY_MODERN;
playData = 3;
playData = PLAY_DATA_USERDEF;
curLevel = testLevelInfo.level;
setModernInfo();
@@ -568,7 +625,7 @@ function editLevelModified()
function editConfirmAbortState(callbackFun)
{
stopEditTicker();
yesNoDialog(["Abort current edit ?"], yesBitmap, noBitmap, mainStage, tileScale,
yesNoDialog(["Abort current editing ?"], yesBitmap, noBitmap, mainStage, tileScale,
function(rc) { if(rc) callbackFun(); else startEditTicker(); });
}
@@ -576,19 +633,19 @@ function drawNewButton()
{
var border, backColor, text;
var textSting = "NEW";
var width = textSting.length * tileW;
var x = 25*(tileW+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileH - editBorder;
var width = textSting.length * tileWScale;
var x = 0.5*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
newButton = new createjs.Container();
//child id = 0
border = new createjs.Shape();
border.graphics.beginFill("black").drawRect(-editBorder, -editBorder, width+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileH).endFill();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
newButton.addChild(border, backColor);
@@ -616,6 +673,8 @@ function drawNewButton()
disableTestButton();
}
clearTestLevel();
testLevelInfo.fromPlayData = -1;
testLevelInfo.fromLevel = -1;
}
startEditTicker();
}
@@ -624,7 +683,7 @@ function drawNewButton()
{
stopEditTicker();
if(testLevelInfo.modified) {
yesNoDialog(["Abort current edit ?"], yesBitmap, noBitmap, mainStage, tileScale, newLevel);
yesNoDialog(["Abort current editing ?"], yesBitmap, noBitmap, mainStage, tileScale, newLevel);
} else {
newLevel(1);
}
@@ -635,7 +694,11 @@ function drawNewButton()
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("gold").drawRect(-editBorder, -editBorder, 3*tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("red").drawRect(-editBorder, -editBorder, 3*tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = this.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#ffa").drawRect(0, 0, width, tileHScale).endFill();
mainStage.cursor = 'pointer';
mouseOver = 1;
@@ -646,12 +709,158 @@ function drawNewButton()
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("black").drawRect(-editBorder, -editBorder, 3*tileW+editBorder*2, tileH+editBorder*2).endFill();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, 3*tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = this.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#fff").drawRect(0, 0, width, tileHScale).endFill();
mouseOver = 0;
}
}
//========================
// LOAD BUTTON
// 05/21/2015
//========================
function drawLoadButton()
{
var border, backColor, text;
var textSting = "LOAD";
var width = textSting.length * tileWScale;
var x = 4*(tileWScale+EDIT_PADDING)+EDIT_PADDING;
var y = canvas.height - tileHScale - editBorder;
var saveStateObj;
var loadLevelData, loadPlayData;
var editGameVersionList = [
{ activeItem: 0 } //game version menu ID
];
loadButton = new createjs.Container();
//child id = 0
border = new createjs.Shape();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, width+editBorder*2, tileHScale+editBorder*2).endFill();
//child id = 1
backColor = new createjs.Shape();
backColor.graphics.beginFill("#FFF").drawRect(0, 0, width, tileHScale).endFill();
loadButton.addChild(border, backColor);
//child id = 2
drawText(0, 0, textSting, loadButton);
loadButton.x = x;
loadButton.y = y;
loadButton.on('click', loadButtonClick);
loadButton.on('mouseover', loadButtonMouseOver);
loadButton.on('mouseout', loadButtonMouseOut);
mainStage.addChild(loadButton);
initLoadVariable();
function saveState()
{
saveStateObj = saveKeyHandler(noKeyDown);
stopEditTicker();
}
function restoreState()
{
restoreKeyHandler(saveStateObj);
startEditTicker();
}
function initLoadVariable()
{
for(var i = 0; i < playVersionInfo.length; i++) {
editGameVersionList.push(
{
name: playVersionInfo[i].name + " (" + playVersionInfo[i].verData.length + " Levels) ",
id :playVersionInfo[i].id,
activeFun: loadSelectMenu
});
}
}
function menuId2GameVersionId(id)
{
return editGameVersionList[id+1].id;
}
function loadSelectLevel(level)
{
restoreState();
testLevelInfo.levelMap = loadLevelData[level-1];
testLevelInfo.pass = 1;
testLevelInfo.fromPlayData = loadPlayData;
testLevelInfo.fromLevel = level;
setTestLevel(testLevelInfo);
startEditMode();
}
function loadSelectMenu(id, callbackFun)
{
loadPlayData = menuId2GameVersionId(id);
var titleName = playDataToTitleName(loadPlayData);
loadLevelData = getPlayVerData(loadPlayData);
titleName = "Load From: " + titleName;
selectDialog(titleName, checkBitmap, loadLevelData, 1, screenX1, screenY1,
mainStage, tileScale, loadSelectLevel, null, restoreState)
}
function loadExistLevel(yes)
{
if(yes) {
menuDialog("Load Game Version ", editGameVersionList, mainStage, tileScale, 1, restoreState, null);
} else {
restoreState();
}
}
function loadButtonClick()
{
saveState();
if(!editMapIsEmpty()) {
yesNoDialog(["Abort current editing ?"], yesBitmap, noBitmap, mainStage, tileScale, loadExistLevel);
} else {
loadExistLevel(1);
}
}
function loadButtonMouseOver()
{
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("red").drawRect(-editBorder, -editBorder, 4*tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = this.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#ffa").drawRect(0, 0, width, tileHScale).endFill();
mainStage.cursor = 'pointer';
mouseOver = 1;
}
function loadButtonMouseOut()
{
var border = this.getChildAt(0);
border.graphics.clear();
border.graphics.beginFill("#40F").drawRect(-editBorder, -editBorder, 4*tileWScale+editBorder*2, tileHScale+editBorder*2).endFill();
var backColor = this.getChildAt(1);
backColor.graphics.clear();
backColor.graphics.beginFill("#fff").drawRect(0, 0, width, tileHScale).endFill();
mouseOver = 0;
}
}
function setButtonState()
{
if(testLevelInfo.level > MAX_EDIT_LEVEL) {
@@ -691,7 +900,7 @@ function disableTestButton()
function clearUserLevelScore()
{
playData = 3;
playData = PLAY_DATA_USERDEF;
getModernScoreInfo();
modernScoreInfo[testLevelInfo.level-1] = -1;
setModernScoreInfo();
@@ -699,7 +908,7 @@ function clearUserLevelScore()
function delUserLevelScore(level)
{
playData = 3;
playData = PLAY_DATA_USERDEF;
getModernScoreInfo();
modernScoreInfo.splice(level-1, 1);
modernScoreInfo[MAX_EDIT_LEVEL-1] = -1;
@@ -808,7 +1017,7 @@ function delManCheck(id, x, y)
guardTile.id = emptyTile.id;
lastGuardList.splice(removeId,1);
} else {
console.log("design error !");
error(arguments.callee.name, "design error !");
}
break;
}
@@ -845,6 +1054,7 @@ function editSelectLevel(level)
{
testLevelInfo.level = level;
testLevelInfo.levelMap = editLevelData[level-1];
testLevelInfo.fromPlayData = testLevelInfo.fromLevel = -1;
setTestLevel(testLevelInfo);
startEditMode();
}
@@ -861,6 +1071,28 @@ function map2LevelData()
}
}
function editMapIsEmpty()
{
for(var y = 0; y < NO_OF_TILES_Y; y++) {
for(var x = 0; x < NO_OF_TILES_X; x++) {
if(editMap[x][y].id != emptyTile.id) return 0;
}
}
return 1;
}
function copyEditingMap()
{
var curEditMap = "";
for(var y = 0; y < NO_OF_TILES_Y; y++) {
for(var x = 0; x < NO_OF_TILES_X; x++) {
curEditMap += tileInfo[editMap[x][y].id][1];
}
}
return curEditMap;
}
//==============================
// Too many user created Levels
//==============================
@@ -870,13 +1102,13 @@ function editWarningMsg(hidden)
var x, y, width, height;
if(editWarningText == null)
editWarningText = new createjs.Text("Too many user created levels !",
editWarningText = new createjs.Text("Too many custom levels !",
"bold " + (64*tileScale) + "px Helvetica", "#fc5c1c");
width = editWarningText.getBounds().width;
height = editWarningText.getBounds().height;
x = editWarningText.x = (NO_OF_TILES_X*(tileW+EDIT_PADDING) - width) / 2 | 0;
y = editWarningText.y = (NO_OF_TILES_Y*tileH - height) / 2 | 0;
x = editWarningText.x = (NO_OF_TILES_X*(tileWScale+EDIT_PADDING) - width) / 2 | 0;
y = editWarningText.y = (NO_OF_TILES_Y*tileHScale - height) / 2 | 0;
editWarningText.shadow = new createjs.Shadow("white", 2, 2, 1);
if(hidden) {
@@ -887,21 +1119,30 @@ function editWarningMsg(hidden)
mainStage.update();
}
var copyLevelMap = null;
var copyLevelMap = null, copyLevelPassed = 0;
function editHandleKeyDown(event)
{
if(!event){ event = window.event; } //cross browser issues exist
if (event.ctrlKey) {
if(event.keyCode == KEYCODE_V) { //CTRL-V
switch(event.keyCode) {
case KEYCODE_C: //CTRL-C : copy current level
copyLevelMap = copyEditingMap();
copyLevelPassed = (!testLevelInfo.modified && lastRunner) || testLevelInfo.pass;
setTimeout(function() { showTipsText("COPY MAP", 1500);}, 50);
break;
case KEYCODE_V: //CTRL-V : paste copy map
if(copyLevelMap != null) {
testLevelInfo.levelMap = copyLevelMap;
testLevelInfo.pass = 1;
testLevelInfo.modified = 1;
testLevelInfo.pass = copyLevelPassed;
testLevelInfo.fromPlayData = testLevelInfo.fromLevel = -1;
setTestLevel(testLevelInfo);
startEditMode();
////setButtonState();
setTimeout(function() { showTipsText("PASTE MAP", 0);}, 50);
setTimeout(function() { showTipsText("PASTE MAP", 1500);}, 50);
}
break;
}
}
return true;
@@ -909,21 +1150,23 @@ function editHandleKeyDown(event)
function editTick()
{
var x = ((mainStage.mouseX-EDIT_PADDING) / (tileW+EDIT_PADDING) )| 0;
var y = ((mainStage.mouseY-EDIT_PADDING) / (tileH+EDIT_PADDING) )| 0;
var x = ((mainStage.mouseX-EDIT_PADDING - editStartX)/(tileWScale+EDIT_PADDING));
var x = (x < 0)?-1:(x|0);
var y = ((mainStage.mouseY-EDIT_PADDING) / (tileHScale+EDIT_PADDING) )| 0;
if(testLevelInfo.level > MAX_EDIT_LEVEL) {
mainStage.cursor = 'default';
mainStage.update();
return;
}
if(x >= 0 && x < NO_OF_TILES_X && y >= 0 && y < NO_OF_TILES_Y) {
//debug(mainStage.mouseX,editStartX, x,y);
if(mouseInStage && x >= 0 && x < NO_OF_TILES_X && y >= 0 && y < NO_OF_TILES_Y) {
//edit area
mainStage.cursor = 'pointer';
if( x != lastDown.x || y != lastDown.y) {
cursorTileObj.alpha = 1;
cursorTileObj.x = (tileW + EDIT_PADDING) * x+EDIT_PADDING;
cursorTileObj.y = (tileH + EDIT_PADDING) * y+EDIT_PADDING;
cursorTileObj.x = (tileWScale + EDIT_PADDING) * x+EDIT_PADDING + editStartX;
cursorTileObj.y = (tileHScale + EDIT_PADDING) * y+EDIT_PADDING;
if(mouseDown) {
var clickTile = editMap[x][y];