Lode Runner v1.00c.2
(1) AI version 2 (2) Add God-Mode Hot-key
@@ -1,9 +1,9 @@
|
|||||||
<a target="_blank" href="http://goo.gl/0DrRSO">Lode Runner (超級運動員)</a>
|
<a target="_blank" href="http://loderunnerwebgame.com/LodeRunner/">Lode Runner (超級運動員)</a>
|
||||||
=======================================
|
=======================================
|
||||||
|
|
||||||
This program build with Javascript + [CreateJS](http://www.createjs.com).
|
This program build with Javascript + [CreateJS](http://www.createjs.com).
|
||||||
|
|
||||||
This game include <b>Lode Runner</b> (150 Levels) & <b>Championship Lode Runner</b> (50 Levels).
|
Game levels include <b>[Lode Runner (150 levels) & Championship Lode Runner (50 levels)](http://strategywiki.org/wiki/Lode_Runner/Walkthrough)</b>
|
||||||
|
|
||||||
### GAME Mode
|
### GAME Mode
|
||||||
<table>
|
<table>
|
||||||
@@ -13,7 +13,7 @@ This game include <b>Lode Runner</b> (150 Levels) & <b>Championship Lode Runner
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><b>TIME MODE</b></td>
|
<td><b>TRAINING MODE</b></td>
|
||||||
<td>Player can select levels</td>
|
<td>Player can select levels</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@@ -30,6 +30,6 @@ This game include <b>Lode Runner</b> (150 Levels) & <b>Championship Lode Runner
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
### PLAY
|
### PLAY
|
||||||
<a target="_blank" href="http://goo.gl/KgmXhh">http://loderunnerwebgame.com/game/</a>
|
<a target="_blank" href="http://loderunnerwebgame.com/game/">http://loderunnerwebgame.com/game/</a>
|
||||||
|
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|||||||
|
Avant Largeur: | Hauteur: | Taille: 5.7 KiB Après Largeur: | Hauteur: | Taille: 2.9 KiB |
|
Avant Largeur: | Hauteur: | Taille: 51 KiB Après Largeur: | Hauteur: | Taille: 19 KiB |
|
Avant Largeur: | Hauteur: | Taille: 6.3 KiB Après Largeur: | Hauteur: | Taille: 4.8 KiB |
|
Avant Largeur: | Hauteur: | Taille: 18 KiB Après Largeur: | Hauteur: | Taille: 3.7 KiB |
|
Avant Largeur: | Hauteur: | Taille: 2.8 KiB Après Largeur: | Hauteur: | Taille: 1.7 KiB |
|
Avant Largeur: | Hauteur: | Taille: 32 KiB Après Largeur: | Hauteur: | Taille: 11 KiB |
|
Après Largeur: | Hauteur: | Taille: 5.2 KiB |
|
Après Largeur: | Hauteur: | Taille: 4.4 KiB |
|
Avant Largeur: | Hauteur: | Taille: 16 KiB Après Largeur: | Hauteur: | Taille: 5.9 KiB |
|
Avant Largeur: | Hauteur: | Taille: 3.8 KiB Après Largeur: | Hauteur: | Taille: 739 B |
@@ -1,5 +1,5 @@
|
|||||||
var VERSION = "0.99n";
|
var VERSION = "1.00c";
|
||||||
var AI_VERSION = 1;
|
var AI_VERSION = 2;
|
||||||
|
|
||||||
var NO_OF_TILES_X = 28,
|
var NO_OF_TILES_X = 28,
|
||||||
NO_OF_TILES_Y = 16;
|
NO_OF_TILES_Y = 16;
|
||||||
@@ -31,6 +31,8 @@ var KEYCODE_BKSPACE = 8, //backspace
|
|||||||
KEYCODE_UP = 38, //move up
|
KEYCODE_UP = 38, //move up
|
||||||
KEYCODE_DOWN = 40, //move down
|
KEYCODE_DOWN = 40, //move down
|
||||||
|
|
||||||
|
KEYCODE_SUBTRACT = 109, //Add KEYCODE_SUBTRACT & KEYCODE_HYPHEN for support fireFox 'dash' keycode
|
||||||
|
KEYCODE_HYPHEN = 173, //
|
||||||
KEYCODE_DASH = 189, //'-'
|
KEYCODE_DASH = 189, //'-'
|
||||||
KEYCODE_DOT = 190, //'.'
|
KEYCODE_DOT = 190, //'.'
|
||||||
|
|
||||||
@@ -47,6 +49,7 @@ var KEYCODE_BKSPACE = 8, //backspace
|
|||||||
|
|
||||||
KEYCODE_A = 65, //'A'
|
KEYCODE_A = 65, //'A'
|
||||||
KEYCODE_C = 67, //'C'
|
KEYCODE_C = 67, //'C'
|
||||||
|
KEYCODE_G = 71, //'G'
|
||||||
KEYCODE_R = 82, //'R'
|
KEYCODE_R = 82, //'R'
|
||||||
KEYCODE_S = 83, //'S'
|
KEYCODE_S = 83, //'S'
|
||||||
KEYCODE_T = 84, //'T'
|
KEYCODE_T = 84, //'T'
|
||||||
|
|||||||
@@ -49,6 +49,10 @@ function getAutoDemoLevel(initValue)
|
|||||||
demoGoldDrop = demoData[idx].goldDrop;
|
demoGoldDrop = demoData[idx].goldDrop;
|
||||||
demoBornPos = demoData[idx].bornPos;
|
demoBornPos = demoData[idx].bornPos;
|
||||||
curLevel = demoData[idx].level;
|
curLevel = demoData[idx].level;
|
||||||
|
|
||||||
|
curAiVersion = demoData[idx].ai; //07/04/2014
|
||||||
|
if("godMode" in demoData[idx])
|
||||||
|
godMode = demoData[idx].godMode; //07/09/2014
|
||||||
}
|
}
|
||||||
|
|
||||||
var demoCountTime = 0, demoCountEnable = 0;
|
var demoCountTime = 0, demoCountEnable = 0;
|
||||||
@@ -149,6 +153,10 @@ function initDemoInfo()
|
|||||||
demoGoldDrop = demoData[idx].goldDrop;
|
demoGoldDrop = demoData[idx].goldDrop;
|
||||||
demoBornPos = demoData[idx].bornPos;
|
demoBornPos = demoData[idx].bornPos;
|
||||||
assert(curLevel == demoData[idx].level, "curLevel != level of demoData");
|
assert(curLevel == demoData[idx].level, "curLevel != level of demoData");
|
||||||
|
|
||||||
|
curAiVersion = demoData[idx].ai; //07/04/2014
|
||||||
|
if("godMode" in demoData[idx])
|
||||||
|
godMode = demoData[idx].godMode; //07/09/2014
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDemoInfo()
|
function getDemoInfo()
|
||||||
@@ -229,7 +237,8 @@ function updatePlayerDemoData(playData, demoDataInfo)
|
|||||||
state: demoDataInfo.state,
|
state: demoDataInfo.state,
|
||||||
action: demoDataInfo.action,
|
action: demoDataInfo.action,
|
||||||
goldDrop: demoDataInfo.goldDrop,
|
goldDrop: demoDataInfo.goldDrop,
|
||||||
bornPos: demoDataInfo.bornPos
|
bornPos: demoDataInfo.bornPos,
|
||||||
|
godMode: demoDataInfo.godMode //07/09/2014
|
||||||
};
|
};
|
||||||
} else { // always update local data
|
} else { // always update local data
|
||||||
//if( playerDemoData[level-1].time >= demoDataInfo.time) { //only udate best time
|
//if( playerDemoData[level-1].time >= demoDataInfo.time) { //only udate best time
|
||||||
@@ -242,6 +251,8 @@ function updatePlayerDemoData(playData, demoDataInfo)
|
|||||||
playerDemoData[level-1].action = demoDataInfo.action;
|
playerDemoData[level-1].action = demoDataInfo.action;
|
||||||
playerDemoData[level-1].goldDrop = demoDataInfo.goldDrop;
|
playerDemoData[level-1].goldDrop = demoDataInfo.goldDrop;
|
||||||
playerDemoData[level-1].bornPos = demoDataInfo.bornPos;
|
playerDemoData[level-1].bornPos = demoDataInfo.bornPos;
|
||||||
|
playerDemoData[level-1].godMode = demoDataInfo.godMode; //07/09/2014
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -281,9 +292,18 @@ function initRecordVariable()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveKeyCode(code)
|
var alwaysRecord = 0, keyPressed = 0;
|
||||||
|
function saveKeyCode(code, keyAction)
|
||||||
{
|
{
|
||||||
recordKeyCode = code
|
//-----------------------------------------------------------------------------
|
||||||
|
// Don't care repeat times, always record key when press dig-left or dig-right
|
||||||
|
// fixed by Simon 12/12/2014
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
alwaysRecord = 0;
|
||||||
|
if(keyAction == ACT_DIG_LEFT || keyAction == ACT_DIG_RIGHT) alwaysRecord = 1;
|
||||||
|
|
||||||
|
recordKeyCode = code;
|
||||||
|
keyPressed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
function recordModeDump(state)
|
function recordModeDump(state)
|
||||||
@@ -316,11 +336,13 @@ function processRecordKey()
|
|||||||
|
|
||||||
function recordKeyAction()
|
function recordKeyAction()
|
||||||
{
|
{
|
||||||
if(recordKeyCode != lastKeyCode) {
|
if(!keyPressed) return;
|
||||||
|
if(recordKeyCode != lastKeyCode || alwaysRecord) {
|
||||||
playRecord.push(recordCount);
|
playRecord.push(recordCount);
|
||||||
playRecord.push(recordKeyCode);
|
playRecord.push(recordKeyCode);
|
||||||
lastKeyCode = recordKeyCode;
|
lastKeyCode = recordKeyCode;
|
||||||
}
|
}
|
||||||
|
keyPressed = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
var recordIdx;
|
var recordIdx;
|
||||||
@@ -405,6 +427,7 @@ function dumpRecord()
|
|||||||
curDemoData.action = [];
|
curDemoData.action = [];
|
||||||
curDemoData.goldDrop = [];
|
curDemoData.goldDrop = [];
|
||||||
curDemoData.bornPos = [];
|
curDemoData.bornPos = [];
|
||||||
|
curDemoData.godMode = godModeKeyPressed; //07/09/2014
|
||||||
|
|
||||||
for(var i = 0; i < playRecord.length; i++) {
|
for(var i = 0; i < playRecord.length; i++) {
|
||||||
curDemoData.action[i] = playRecord[i];
|
curDemoData.action[i] = playRecord[i];
|
||||||
@@ -424,6 +447,7 @@ function dumpRecord()
|
|||||||
debug(" ai: " + AI_VERSION + ",");
|
debug(" ai: " + AI_VERSION + ",");
|
||||||
debug(" time: " + playRecordTime + ",");
|
debug(" time: " + playRecordTime + ",");
|
||||||
debug(" state: " + recordState + ",");
|
debug(" state: " + recordState + ",");
|
||||||
|
debug(" godMode: " + godModeKeyPressed + ","); //07/09/2014
|
||||||
|
|
||||||
if(playRecord.length > 0) {
|
if(playRecord.length > 0) {
|
||||||
txtStr = " action: [ " + playRecord[0];
|
txtStr = " action: [ " + playRecord[0];
|
||||||
|
|||||||
@@ -106,9 +106,9 @@ function canvasEditReSize()
|
|||||||
for (var scale = MAX_SCALE; scale >= MIN_SCALE; scale -= 0.25) {
|
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);
|
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);
|
canvasY = BASE_SCREEN_Y * scale + EDIT_PADDING * (NO_OF_TILES_Y+1);
|
||||||
if (canvasX <= screenX && canvasY <= screenY || scale <= MIN_SCALE) break;
|
if (canvasX <= screenX1 && canvasY <= screenY1 || scale <= MIN_SCALE) break;
|
||||||
}
|
}
|
||||||
//debug("screenX = " + screenX + " screenY = " + screenY + "scale = " + scale);
|
//debug("screenX1 = " + screenX1 + " screenY1 = " + screenY1 + "scale = " + scale);
|
||||||
|
|
||||||
canvas = document.getElementById('canvas');
|
canvas = document.getElementById('canvas');
|
||||||
|
|
||||||
@@ -116,8 +116,8 @@ function canvasEditReSize()
|
|||||||
canvas.height = canvasY;
|
canvas.height = canvasY;
|
||||||
|
|
||||||
//Set canvas top left position
|
//Set canvas top left position
|
||||||
var left = ((screenX - canvasX)/2|0),
|
var left = ((screenX1 - canvasX)/2|0),
|
||||||
top = ((screenY - canvasY)/2|0);
|
top = ((screenY1 - canvasY)/2|0);
|
||||||
canvas.style.left = (left>0?left:0) + "px";
|
canvas.style.left = (left>0?left:0) + "px";
|
||||||
canvas.style.top = (top>0?top:0) + "px";
|
canvas.style.top = (top>0?top:0) + "px";
|
||||||
canvas.style.position = "absolute";
|
canvas.style.position = "absolute";
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ function guardMoveStep( id, action)
|
|||||||
map[x][y].act = curToken; //runner move to [x][y-1], so set [x][y].act to previous state
|
map[x][y].act = curToken; //runner move to [x][y-1], so set [x][y].act to previous state
|
||||||
y--;
|
y--;
|
||||||
yOffset = tileH + yOffset;
|
yOffset = tileH + yOffset;
|
||||||
if(map[x][y].act == RUNNER_T) gameState = GAME_RUNNER_DEAD; //collision
|
if(map[x][y].act == RUNNER_T) setRunnerDead(); //collision
|
||||||
//map[x][y].act = GUARD_T;
|
//map[x][y].act = GUARD_T;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ function guardMoveStep( id, action)
|
|||||||
map[x][y].act = curToken; //runner move to [x][y+1], so set [x][y].act to previous state
|
map[x][y].act = curToken; //runner move to [x][y+1], so set [x][y].act to previous state
|
||||||
y++;
|
y++;
|
||||||
yOffset = yOffset - tileH;
|
yOffset = yOffset - tileH;
|
||||||
if(map[x][y].act == RUNNER_T) gameState = GAME_RUNNER_DEAD; //collision
|
if(map[x][y].act == RUNNER_T) setRunnerDead(); //collision
|
||||||
//map[x][y].act = GUARD_T;
|
//map[x][y].act = GUARD_T;
|
||||||
}
|
}
|
||||||
if(action == ACT_DOWN && yOffset >= 0 && yOffset < yMove) { //try drop gold
|
if(action == ACT_DOWN && yOffset >= 0 && yOffset < yMove) { //try drop gold
|
||||||
@@ -255,7 +255,7 @@ function guardMoveStep( id, action)
|
|||||||
map[x][y].act = curToken; //runner move to [x-1][y], so set [x][y].act to previous state
|
map[x][y].act = curToken; //runner move to [x-1][y], so set [x][y].act to previous state
|
||||||
x--;
|
x--;
|
||||||
xOffset = tileW + xOffset;
|
xOffset = tileW + xOffset;
|
||||||
if(map[x][y].act == RUNNER_T) gameState = GAME_RUNNER_DEAD; //collision
|
if(map[x][y].act == RUNNER_T) setRunnerDead(); //collision
|
||||||
//map[x][y].act = GUARD_T;
|
//map[x][y].act = GUARD_T;
|
||||||
}
|
}
|
||||||
if( xOffset <= 0 && xOffset > -xMove) {
|
if( xOffset <= 0 && xOffset > -xMove) {
|
||||||
@@ -279,7 +279,7 @@ function guardMoveStep( id, action)
|
|||||||
map[x][y].act = curToken; //runner move to [x+1][y], so set [x][y].act to previous state
|
map[x][y].act = curToken; //runner move to [x+1][y], so set [x][y].act to previous state
|
||||||
x++;
|
x++;
|
||||||
xOffset = xOffset - tileW;
|
xOffset = xOffset - tileW;
|
||||||
if(map[x][y].act == RUNNER_T) gameState = GAME_RUNNER_DEAD; //collision
|
if(map[x][y].act == RUNNER_T) setRunnerDead(); //collision
|
||||||
//map[x][y].act = GUARD_T;
|
//map[x][y].act = GUARD_T;
|
||||||
}
|
}
|
||||||
if( xOffset >= 0 && xOffset < xMove) {
|
if( xOffset >= 0 && xOffset < xMove) {
|
||||||
@@ -303,8 +303,8 @@ function guardMoveStep( id, action)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(curGuard.action == ACT_CLIMB_OUT) action = ACT_CLIMB_OUT;
|
if(curGuard.action == ACT_CLIMB_OUT) action = ACT_CLIMB_OUT;
|
||||||
curGuard.sprite.x = x * tileW + xOffset;
|
curGuard.sprite.x = (x * tileW + xOffset) * tileScale | 0;
|
||||||
curGuard.sprite.y = y * tileH + yOffset;
|
curGuard.sprite.y = (y * tileH + yOffset) * tileScale | 0;
|
||||||
curGuard.pos = { x:x, y:y, xOffset:xOffset, yOffset:yOffset};
|
curGuard.pos = { x:x, y:y, xOffset:xOffset, yOffset:yOffset};
|
||||||
if(curShape != newShape) {
|
if(curShape != newShape) {
|
||||||
curGuard.sprite.gotoAndPlay(newShape);
|
curGuard.sprite.gotoAndPlay(newShape);
|
||||||
@@ -730,8 +730,8 @@ function guardReborn(x, y)
|
|||||||
var curGuard = guard[id];
|
var curGuard = guard[id];
|
||||||
|
|
||||||
curGuard.pos = { x:bornX, y:bornY, xOffset:0, yOffset: 0 };
|
curGuard.pos = { x:bornX, y:bornY, xOffset:0, yOffset: 0 };
|
||||||
curGuard.sprite.x = bornX * tileW;
|
curGuard.sprite.x = bornX * tileWScale | 0;
|
||||||
curGuard.sprite.y = bornY * tileH;
|
curGuard.sprite.y = bornY * tileHScale | 0;
|
||||||
curGuard.sprite.on("animationend", function() { rebornComplete(id); });
|
curGuard.sprite.on("animationend", function() { rebornComplete(id); });
|
||||||
curGuard.sprite.gotoAndPlay("reborn");
|
curGuard.sprite.gotoAndPlay("reborn");
|
||||||
|
|
||||||
@@ -745,7 +745,7 @@ function rebornComplete(id)
|
|||||||
var x = guard[id].pos.x;
|
var x = guard[id].pos.x;
|
||||||
var y = guard[id].pos.y;
|
var y = guard[id].pos.y;
|
||||||
|
|
||||||
if( map[x][y].act == RUNNER_T) gameState = GAME_RUNNER_DEAD; //collision
|
if( map[x][y].act == RUNNER_T) setRunnerDead(); //collision
|
||||||
map[x][y].act = GUARD_T;
|
map[x][y].act = GUARD_T;
|
||||||
guard[id].sprite.removeAllEventListeners ("animationend");
|
guard[id].sprite.removeAllEventListeners ("animationend");
|
||||||
guard[id].action = ACT_FALL;
|
guard[id].action = ACT_FALL;
|
||||||
@@ -754,3 +754,8 @@ function rebornComplete(id)
|
|||||||
guard[id].sprite.gotoAndPlay("fallRight");
|
guard[id].sprite.gotoAndPlay("fallRight");
|
||||||
soundPlay("reborn");
|
soundPlay("reborn");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setRunnerDead()
|
||||||
|
{
|
||||||
|
if(!godMode) gameState = GAME_RUNNER_DEAD;
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ function showScoreTable(_dataId, _curScoreInfo, _callbackFun, _waitTime)
|
|||||||
|
|
||||||
if(_curScoreInfo) {
|
if(_curScoreInfo) {
|
||||||
recordId = updateScoreInfo();
|
recordId = updateScoreInfo();
|
||||||
if(recordId < 0) {
|
if(recordId < 0) {
|
||||||
if(_callbackFun) _callbackFun();
|
if(_callbackFun) _callbackFun();
|
||||||
return; //don't need update score
|
return; //don't need update score
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createCanvas2();
|
createCanvas2();
|
||||||
createScoreStage();
|
createScoreStage();
|
||||||
@@ -123,8 +123,8 @@ function showScoreTable(_dataId, _curScoreInfo, _callbackFun, _waitTime)
|
|||||||
canvas2.height = canvasY;
|
canvas2.height = canvasY;
|
||||||
|
|
||||||
//Set canvas top left position
|
//Set canvas top left position
|
||||||
var left = ((screenX - canvasX)/2|0),
|
var left = ((screenX1 - canvasX)/2|0),
|
||||||
top = ((screenY - canvasY)/2|0);
|
top = ((screenY1 - canvasY)/2|0);
|
||||||
canvas2.style.left = (left>0?left:0) + "px";
|
canvas2.style.left = (left>0?left:0) + "px";
|
||||||
canvas2.style.top = (top>0?top:0) + "px";
|
canvas2.style.top = (top>0?top:0) + "px";
|
||||||
canvas2.style.position = "absolute";
|
canvas2.style.position = "absolute";
|
||||||
@@ -153,8 +153,8 @@ function showScoreTable(_dataId, _curScoreInfo, _callbackFun, _waitTime)
|
|||||||
|
|
||||||
function getNameStartPos(nameLength, itemId)
|
function getNameStartPos(nameLength, itemId)
|
||||||
{
|
{
|
||||||
var x = (4+(MAX_HISCORE_NAME_LENGTH-nameLength)/2)*tileW;
|
var x = (4+(MAX_HISCORE_NAME_LENGTH-nameLength)/2)*tileWScale;
|
||||||
var y = (itemId * 1.2 + 5) * tileH;
|
var y = (itemId * 1.2 + 5) * tileHScale;
|
||||||
|
|
||||||
return { x: x, y: y };
|
return { x: x, y: y };
|
||||||
}
|
}
|
||||||
@@ -164,28 +164,28 @@ function showScoreTable(_dataId, _curScoreInfo, _callbackFun, _waitTime)
|
|||||||
var title = "LODE RUNNER " + ((_dataId == 1)?"2":"1") + " HIGH SCORES";
|
var title = "LODE RUNNER " + ((_dataId == 1)?"2":"1") + " HIGH SCORES";
|
||||||
var barTile;
|
var barTile;
|
||||||
|
|
||||||
drawText((NO_OF_TILES_X-title.length)/2*tileW, 0.5*tileH, title, scoreStage);
|
drawText((NO_OF_TILES_X-title.length)/2*tileWScale, 0.5*tileHScale, title, scoreStage);
|
||||||
drawText(0.5*tileW, 3*tileH, "NO", scoreStage);
|
drawText(0.5*tileWScale, 3*tileHScale, "NO", scoreStage);
|
||||||
drawText(7*tileW, 3*tileH, "NAME", scoreStage);
|
drawText(7*tileWScale, 3*tileHScale, "NAME", scoreStage);
|
||||||
drawText(14.5*tileW, 3*tileH, "LEVEL SCORE", scoreStage);
|
drawText(14.5*tileWScale, 3*tileHScale, "LEVEL SCORE", scoreStage);
|
||||||
|
|
||||||
for(var x = 0; x < NO_OF_TILES_X; x++) {
|
for(var x = 0; x < NO_OF_TILES_X; x++) {
|
||||||
barTile = new createjs.Bitmap(preload.getResult("ground"));
|
barTile = new createjs.Bitmap(preload.getResult("ground"));
|
||||||
barTile.setTransform(x * tileW, 4.5*tileH , tileScale, tileScale);
|
barTile.setTransform(x * tileWScale, 4.5*tileHScale , tileScale, tileScale);
|
||||||
scoreStage.addChild(barTile);
|
scoreStage.addChild(barTile);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(var i = 0; i < MAX_HISCORE_RECORD; i++) {
|
for(var i = 0; i < MAX_HISCORE_RECORD; i++) {
|
||||||
var pos = getNameStartPos(hiScoreInfo[i].n.length, i);
|
var pos = getNameStartPos(hiScoreInfo[i].n.length, i);
|
||||||
|
|
||||||
drawText(0.5*tileW, pos.y, ("0"+(i+1)).slice(-2) + ".", scoreStage);
|
drawText(0.5*tileWScale, pos.y, ("0"+(i+1)).slice(-2) + ".", scoreStage); //no
|
||||||
|
|
||||||
if(hiScoreInfo[i].s > 0) {
|
if(hiScoreInfo[i].s > 0) {
|
||||||
if(hiScoreInfo[i].n.length > 0) {
|
if(hiScoreInfo[i].n.length > 0) {
|
||||||
drawText(pos.x, pos.y, hiScoreInfo[i].n, scoreStage);
|
drawText(pos.x, pos.y, hiScoreInfo[i].n, scoreStage, "D"); //name
|
||||||
}
|
}
|
||||||
drawText(15.5*tileW, pos.y, ("00"+hiScoreInfo[i].l).slice(-3), scoreStage);
|
drawText(15.5*tileWScale, pos.y, ("00"+hiScoreInfo[i].l).slice(-3), scoreStage); //level
|
||||||
drawText(20.5*tileW, pos.y, ("000000"+hiScoreInfo[i].s).slice(-7), scoreStage);
|
drawText(20.5*tileWScale, pos.y, ("000000"+hiScoreInfo[i].s).slice(-7), scoreStage); //score
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -200,7 +200,7 @@ function showScoreTable(_dataId, _curScoreInfo, _callbackFun, _waitTime)
|
|||||||
clearTimeout(timeOutHandler);
|
clearTimeout(timeOutHandler);
|
||||||
closeScoreTable();
|
closeScoreTable();
|
||||||
//}
|
//}
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function restoreKeyDownHandler()
|
function restoreKeyDownHandler()
|
||||||
@@ -215,19 +215,19 @@ function showScoreTable(_dataId, _curScoreInfo, _callbackFun, _waitTime)
|
|||||||
var savedKeyDownHander, hiScoreTicker;
|
var savedKeyDownHander, hiScoreTicker;
|
||||||
var cursor;
|
var cursor;
|
||||||
|
|
||||||
init();
|
initInput();
|
||||||
|
|
||||||
function init()
|
function initInput()
|
||||||
{
|
{
|
||||||
name = []; //string
|
name = []; //array of char
|
||||||
nameText = []; //text object
|
nameText = []; //text object
|
||||||
changeKeyDownHandler();
|
|
||||||
|
|
||||||
var pos = getNameStartPos(0, recordId);
|
var pos = getNameStartPos(0, recordId);
|
||||||
cursor = new createjs.Sprite(textData, "FLASH");
|
cursor = new createjs.Sprite(textData, "FLASH");
|
||||||
cursor.setTransform(pos.x-tileW/2, pos.y , tileScale, tileScale);
|
cursor.setTransform(pos.x-tileWScale/2, pos.y , tileScale, tileScale);
|
||||||
scoreStage.addChild(cursor);
|
scoreStage.addChild(cursor);
|
||||||
|
|
||||||
|
changeKeyDownHandler();
|
||||||
hiScoreTicker = createjs.Ticker.on("tick", scoreStage);
|
hiScoreTicker = createjs.Ticker.on("tick", scoreStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +250,7 @@ function showScoreTable(_dataId, _curScoreInfo, _callbackFun, _waitTime)
|
|||||||
cutTailSpace();
|
cutTailSpace();
|
||||||
redrawName();
|
redrawName();
|
||||||
|
|
||||||
//uodate name for score info
|
//update name for score info
|
||||||
hiScoreInfo[recordId].n = array2String(name);
|
hiScoreInfo[recordId].n = array2String(name);
|
||||||
setHiScoreInfo();
|
setHiScoreInfo();
|
||||||
|
|
||||||
@@ -281,77 +281,72 @@ function showScoreTable(_dataId, _curScoreInfo, _callbackFun, _waitTime)
|
|||||||
{
|
{
|
||||||
var pos = getNameStartPos(name.length, recordId);
|
var pos = getNameStartPos(name.length, recordId);
|
||||||
removeNameText();
|
removeNameText();
|
||||||
nameText = drawText(pos.x, pos.y, array2String(name), scoreStage);
|
nameText = drawText(pos.x, pos.y, array2String(name), scoreStage, "D");
|
||||||
|
|
||||||
//change cursor position
|
//change cursor position
|
||||||
if(name.length > 0) cursor.x = pos.x + curPos * tileW;
|
if(name.length > 0) cursor.x = pos.x + curPos * tileWScale;
|
||||||
else cursor.x = pos.x - tileW/2;
|
else cursor.x = pos.x - tileWScale/2;
|
||||||
|
|
||||||
//move cursor to top
|
//move cursor to top
|
||||||
moveChild2Top(scoreStage, cursor);
|
moveChild2Top(scoreStage, cursor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function handleHiScoreName(event)
|
function handleHiScoreName(event)
|
||||||
{
|
{
|
||||||
if(!event){ event = window.event; } //cross browser issues exist
|
if(!event){ event = window.event; } //cross browser issues exist
|
||||||
|
|
||||||
|
var code = event.keyCode;
|
||||||
|
|
||||||
//if(event.shiftKey) {
|
if(curPos >= MAX_HISCORE_NAME_LENGTH &&
|
||||||
//} else if (event.ctrlKey) {
|
code != KEYCODE_BKSPACE && code != KEYCODE_LEFT && code != KEYCODE_ENTER)
|
||||||
//} else
|
|
||||||
{
|
{
|
||||||
var code = event.keyCode;
|
soundPlay("beep"); //wrong key code
|
||||||
|
|
||||||
if(curPos >= MAX_HISCORE_NAME_LENGTH &&
|
|
||||||
code != KEYCODE_BKSPACE && code != KEYCODE_LEFT && code != KEYCODE_ENTER)
|
|
||||||
{
|
|
||||||
soundPlay("beep"); //wrong key code
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(true) {
|
|
||||||
case (code >=65 && code <= 90): // A ~ Z
|
|
||||||
case (code >= 97 && code <= 122): //a ~ z
|
|
||||||
if( code > 90) code -= 32;
|
|
||||||
name[curPos++] = String.fromCharCode(code);
|
|
||||||
break;
|
|
||||||
case (code == KEYCODE_DOT): //'.'
|
|
||||||
name[curPos++] = ".";
|
|
||||||
break;
|
|
||||||
case (code == KEYCODE_DASH): //'-'
|
|
||||||
name[curPos++] = "-";
|
|
||||||
break;
|
|
||||||
case (code == KEYCODE_SPACE): //space
|
|
||||||
if(curPos == 0) {
|
|
||||||
soundPlay("beep"); //wrong key code
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
name[curPos++] = " ";
|
|
||||||
break;
|
|
||||||
case (code == KEYCODE_BKSPACE): //backspace
|
|
||||||
if(curPos == 0) break;
|
|
||||||
name.splice(--curPos, 1);
|
|
||||||
break;
|
|
||||||
case (code == KEYCODE_LEFT): //LEFT
|
|
||||||
if(curPos > 0) curPos--;
|
|
||||||
break;
|
|
||||||
case (code == KEYCODE_RIGHT): //RIGHT
|
|
||||||
if(curPos < name.length) curPos++;
|
|
||||||
break;
|
|
||||||
case (code == KEYCODE_ENTER): //ENTER
|
|
||||||
if(name.length > 0) inputFinish();
|
|
||||||
else soundPlay("beep");
|
|
||||||
default:
|
|
||||||
//debug(code);
|
|
||||||
if(code > 32) soundPlay("beep"); //wrong key code
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
redrawName();
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch(true) {
|
||||||
|
case (code >= 48 && code <= 57): // 0 ~ 9
|
||||||
|
if(curPos == 0) { soundPlay("beep"); break; } //first char except numbers
|
||||||
|
name[curPos++] = String.fromCharCode(code);
|
||||||
|
break;
|
||||||
|
case (code >=65 && code <= 90): // A ~ Z
|
||||||
|
case (code >= 97 && code <= 122): //a ~ z
|
||||||
|
if( code > 90) code -= 32;
|
||||||
|
name[curPos++] = String.fromCharCode(code);
|
||||||
|
break;
|
||||||
|
case (code == KEYCODE_DOT): //'.'
|
||||||
|
if(curPos == 0) { soundPlay("beep"); break; } //first char except '.'
|
||||||
|
name[curPos++] = ".";
|
||||||
|
break;
|
||||||
|
case (code == KEYCODE_DASH || code == KEYCODE_HYPHEN || code == KEYCODE_SUBTRACT): //'-'
|
||||||
|
if(curPos == 0) { soundPlay("beep"); break; } //first char except '-'
|
||||||
|
name[curPos++] = "-";
|
||||||
|
break;
|
||||||
|
case (code == KEYCODE_SPACE): //space
|
||||||
|
if(curPos == 0) { soundPlay("beep"); break; } //first char except space
|
||||||
|
name[curPos++] = " ";
|
||||||
|
break;
|
||||||
|
case (code == KEYCODE_BKSPACE): //backspace
|
||||||
|
if(curPos == 0) break;
|
||||||
|
name.splice(--curPos, 1);
|
||||||
|
break;
|
||||||
|
case (code == KEYCODE_LEFT): //LEFT
|
||||||
|
if(curPos > 0) curPos--;
|
||||||
|
break;
|
||||||
|
case (code == KEYCODE_RIGHT): //RIGHT
|
||||||
|
if(curPos < name.length) curPos++;
|
||||||
|
break;
|
||||||
|
case (code == KEYCODE_ENTER): //ENTER
|
||||||
|
if(name.length > 0) inputFinish(true); //async
|
||||||
|
else soundPlay("beep");
|
||||||
|
default:
|
||||||
|
//debug(code);
|
||||||
|
if(code > 32) soundPlay("beep"); //wrong key code
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
redrawName();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<title>Lode Runner</title>
|
<title>Lode Runner Web Game</title>
|
||||||
<!-- DON'T FORGET TO MODIFY *.web.html
|
<!-- DON'T FORGET TO MODIFY *.web.html
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
* Lode Runner (超級運動員) - APPLE-II version
|
* Lode Runner (超級運動員) - APPLE-II version
|
||||||
@@ -16,18 +16,18 @@
|
|||||||
*
|
*
|
||||||
* Source Code: https://github.com/SimonHung/LodeRunner
|
* Source Code: https://github.com/SimonHung/LodeRunner
|
||||||
*
|
*
|
||||||
* by Simon Hung 2014/06/20 (http://simonsays-tw.com)
|
* by Simon Hung 06/20/2014, 11/23/2014 (http://simonsays-tw.com)
|
||||||
* =============================================================================
|
* =============================================================================
|
||||||
-->
|
-->
|
||||||
<meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge">
|
||||||
<meta name="description" content="GAME HTML5 JavaScript CreateJS Championship Lode Runner">
|
<meta name="description" content="An HTML5 remake game, include Lode Runner & Championship Lode Runner">
|
||||||
<link href="lodeRunner.ico" rel="shortcut icon" >
|
<link href="lodeRunner.ico" rel="shortcut icon" >
|
||||||
|
|
||||||
<style>#canvas { position:absolute; left:0; top:0; }</style>
|
<style>#canvas { position:absolute; left:0; top:0; }</style>
|
||||||
|
|
||||||
<script type="text/javascript" src="./lib/preloadjs-0.4.1.min.js"></script>
|
<script type="text/javascript" src="./lib/preloadjs-0.6.0.min.js"></script>
|
||||||
<script type="text/javascript" src="./lib/soundjs-0.5.2.min.js"></script>
|
<script type="text/javascript" src="./lib/soundjs-0.6.0.min.js"></script>
|
||||||
<script type="text/javascript" src="./lib/tweenjs-0.5.1.min.js"></script>
|
<script type="text/javascript" src="./lib/tweenjs-0.6.0.min.js"></script>
|
||||||
<script type="text/javascript" src="./lib/easeljs-0.7.1.min.js"></script>
|
<script type="text/javascript" src="./lib/easeljs-0.7.1.min.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript" src="lodeRunner.baseLevel.js"></script>
|
<script type="text/javascript" src="lodeRunner.baseLevel.js"></script>
|
||||||
|
|||||||
@@ -14,11 +14,17 @@ function pressShiftKey(code)
|
|||||||
gameState = GAME_PREV_LEVEL;
|
gameState = GAME_PREV_LEVEL;
|
||||||
break;
|
break;
|
||||||
case KEYCODE_UP: //SHIFT-UP, inc runner
|
case KEYCODE_UP: //SHIFT-UP, inc runner
|
||||||
if(runnerLife < 10) {
|
if(playMode == PLAY_CLASSIC && runnerLife < 10) { //bug fixed: add check playMode, 12/15/2014
|
||||||
runnerLife++;
|
runnerLife++;
|
||||||
drawLife();
|
drawLife();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case KEYCODE_X: //SHIFT-X
|
||||||
|
toggleTrapTile();
|
||||||
|
break;
|
||||||
|
case KEYCODE_G: //SHIFT-G, toggle god mode
|
||||||
|
toggleGodMode();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
if(runnerDebug) debugKeyPress(code);
|
if(runnerDebug) debugKeyPress(code);
|
||||||
break;
|
break;
|
||||||
@@ -39,9 +45,6 @@ function pressCtrlKey(code)
|
|||||||
runnerLife = 1;
|
runnerLife = 1;
|
||||||
gameState = GAME_RUNNER_DEAD;
|
gameState = GAME_RUNNER_DEAD;
|
||||||
break;
|
break;
|
||||||
case KEYCODE_X: //CTRL-X
|
|
||||||
toggleTrapTile();
|
|
||||||
break;
|
|
||||||
case KEYCODE_S: //CTRL-S, toggle sound
|
case KEYCODE_S: //CTRL-S, toggle sound
|
||||||
if( (soundOff ^= 1) == 1) {
|
if( (soundOff ^= 1) == 1) {
|
||||||
soundDig.stop();
|
soundDig.stop();
|
||||||
@@ -98,6 +101,26 @@ function debugKeyPress(code)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var godMode = 0, godModeKeyPressed = 0;
|
||||||
|
|
||||||
|
function initHotKeyVariable()
|
||||||
|
{
|
||||||
|
godMode = 0;
|
||||||
|
godModeKeyPressed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleGodMode()
|
||||||
|
{
|
||||||
|
godModeKeyPressed = 1; //means player press the god-mod hot-key
|
||||||
|
|
||||||
|
godMode ^= 1;
|
||||||
|
if(godMode) {
|
||||||
|
showTipsText("GOD MODE ON", 0);
|
||||||
|
} else {
|
||||||
|
showTipsText("GOD MODE OFF", 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function setSpeed(v)
|
function setSpeed(v)
|
||||||
{
|
{
|
||||||
speed += v;
|
speed += v;
|
||||||
@@ -163,7 +186,7 @@ function pressKey(code)
|
|||||||
//debug("keycode = " + code);
|
//debug("keycode = " + code);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(recordMode && code != KEYCODE_ESC) saveKeyCode(code);
|
if(recordMode && code != KEYCODE_ESC) saveKeyCode(code, keyAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
function gameResume()
|
function gameResume()
|
||||||
|
|||||||
@@ -16,10 +16,11 @@
|
|||||||
* =============================================================================
|
* =============================================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var screenX, screenY;
|
var screenX1, screenY1;
|
||||||
var canvasX, canvasY;
|
var canvasX, canvasY;
|
||||||
|
|
||||||
var tileW, tileH; //tile width & tile height
|
var tileW, tileH; //tile width & tile height
|
||||||
|
var tileWScale, tileHScale; //tile width/height with scale
|
||||||
var W2, W4; //W2: 1/2 tile-width, W4: 1/4 tile width
|
var W2, W4; //W2: 1/2 tile-width, W4: 1/4 tile width
|
||||||
var H2, H4; //H2: 1/2 tile-height, H4: 1/4 tile height
|
var H2, H4; //H2: 1/2 tile-height, H4: 1/4 tile height
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ var loadingTxt;
|
|||||||
var gameState, lastGameState ;
|
var gameState, lastGameState ;
|
||||||
var tileScale, xMove, yMove;
|
var tileScale, xMove, yMove;
|
||||||
|
|
||||||
var speedMode = [18, 22, 26, 30, 34]; //slow normal fast
|
var speedMode = [16, 20, 25, 30, 35]; //slow normal fast
|
||||||
var speedText = ["VERY SLOW", "SLOW", "NORMAL", "FAST", "VERY FAST"];
|
var speedText = ["VERY SLOW", "SLOW", "NORMAL", "FAST", "VERY FAST"];
|
||||||
var speed = 2; //normal
|
var speed = 2; //normal
|
||||||
var demoSpeed = 40;
|
var demoSpeed = 40;
|
||||||
@@ -49,8 +50,8 @@ var curTime = MAX_TIME_COUNT;
|
|||||||
function init()
|
function init()
|
||||||
{
|
{
|
||||||
var screenSize = getScreenSize();
|
var screenSize = getScreenSize();
|
||||||
screenX = screenSize.x;
|
screenX1 = screenSize.x;
|
||||||
screenY = screenSize.y;
|
screenY1 = screenSize.y;
|
||||||
|
|
||||||
loadDataJS(); //load demo data file
|
loadDataJS(); //load demo data file
|
||||||
canvasReSize();
|
canvasReSize();
|
||||||
@@ -83,9 +84,9 @@ function canvasReSize()
|
|||||||
for (var scale = MAX_SCALE; scale >= MIN_SCALE; scale -= 0.25) {
|
for (var scale = MAX_SCALE; scale >= MIN_SCALE; scale -= 0.25) {
|
||||||
canvasX = BASE_SCREEN_X * scale;
|
canvasX = BASE_SCREEN_X * scale;
|
||||||
canvasY = BASE_SCREEN_Y * scale;
|
canvasY = BASE_SCREEN_Y * scale;
|
||||||
if (canvasX <= screenX && canvasY <= screenY || scale <= MIN_SCALE) break;
|
if (canvasX <= screenX1 && canvasY <= screenY1 || scale <= MIN_SCALE) break;
|
||||||
}
|
}
|
||||||
//debug("screenX = " + screenX + " screenY = " + screenY + "scale = " + scale);
|
//debug("screenX1 = " + screenX1 + " screenY1 = " + screenY1 + "scale = " + scale);
|
||||||
|
|
||||||
canvas = document.getElementById('canvas');
|
canvas = document.getElementById('canvas');
|
||||||
|
|
||||||
@@ -93,16 +94,21 @@ function canvasReSize()
|
|||||||
canvas.height = canvasY;
|
canvas.height = canvasY;
|
||||||
|
|
||||||
//Set canvas top left position
|
//Set canvas top left position
|
||||||
var left = ((screenX - canvasX)/2|0),
|
var left = ((screenX1 - canvasX)/2|0),
|
||||||
top = ((screenY - canvasY)/2|0);
|
top = ((screenY1 - canvasY)/2|0);
|
||||||
canvas.style.left = (left>0?left:0) + "px";
|
canvas.style.left = (left>0?left:0) + "px";
|
||||||
canvas.style.top = (top>0?top:0) + "px";
|
canvas.style.top = (top>0?top:0) + "px";
|
||||||
canvas.style.position = "absolute";
|
canvas.style.position = "absolute";
|
||||||
|
|
||||||
//initial constant value
|
//initial constant value
|
||||||
tileScale = scale;
|
tileScale = scale;
|
||||||
tileW = BASE_TILE_X * scale;
|
|
||||||
tileH = BASE_TILE_Y * scale;
|
//tileW = BASE_TILE_X * scale;
|
||||||
|
//tileH = BASE_TILE_Y * scale;
|
||||||
|
tileW = BASE_TILE_X; //tileW and tileH for detection so don't change scale
|
||||||
|
tileH = BASE_TILE_Y;
|
||||||
|
tileWScale = BASE_TILE_X * scale;
|
||||||
|
tileHScale = BASE_TILE_Y * scale;
|
||||||
|
|
||||||
W2 = (tileW/2|0); //20, 15, 10,
|
W2 = (tileW/2|0); //20, 15, 10,
|
||||||
H2 = (tileH/2|0); //22, 16, 11
|
H2 = (tileH/2|0); //22, 16, 11
|
||||||
@@ -110,8 +116,9 @@ function canvasReSize()
|
|||||||
W4 = (tileW/4|0); //10, 7, 5,
|
W4 = (tileW/4|0); //10, 7, 5,
|
||||||
H4 = (tileH/4|0); //11, 8, 5,
|
H4 = (tileH/4|0); //11, 8, 5,
|
||||||
|
|
||||||
xMove = 4 * tileScale * 2;
|
//xMove and yMove initial by setSpeedByAiVersion()
|
||||||
yMove = 4 * tileScale * 2;
|
//xMove = 4 * tileScale * 2;
|
||||||
|
//yMove = 4 * tileScale * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createStage()
|
function createStage()
|
||||||
@@ -280,6 +287,9 @@ function startGame()
|
|||||||
startPlayTicker();
|
startPlayTicker();
|
||||||
changingLevel = 1;
|
changingLevel = 1;
|
||||||
|
|
||||||
|
curAiVersion = AI_VERSION; //07/04/2014
|
||||||
|
initHotKeyVariable(); //07/09/2014
|
||||||
|
|
||||||
switch(playMode) {
|
switch(playMode) {
|
||||||
case PLAY_CLASSIC:
|
case PLAY_CLASSIC:
|
||||||
getClassicInfo();
|
getClassicInfo();
|
||||||
@@ -325,6 +335,8 @@ function initVariable()
|
|||||||
initGuardVariable();
|
initGuardVariable();
|
||||||
initInfoVariable();
|
initInfoVariable();
|
||||||
initCycVariable();
|
initCycVariable();
|
||||||
|
|
||||||
|
setSpeedByAiVersion(); //07/04/2014
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildLevelMap(levelMap)
|
function buildLevelMap(levelMap)
|
||||||
@@ -422,7 +434,7 @@ function buildLevelMap(levelMap)
|
|||||||
runner = {};
|
runner = {};
|
||||||
curTile = runner.sprite = new createjs.Sprite(runnerData, "runRight");
|
curTile = runner.sprite = new createjs.Sprite(runnerData, "runRight");
|
||||||
runner.pos = { x:x, y:y, xOffset:0, yOffset:0};
|
runner.pos = { x:x, y:y, xOffset:0, yOffset:0};
|
||||||
runner.action = ACT_STOP;
|
runner.action = ACT_UNKNOWN;
|
||||||
runner.shape = "runRight";
|
runner.shape = "runRight";
|
||||||
runner.lastLeftRight = "ACT_RIGHT";
|
runner.lastLeftRight = "ACT_RIGHT";
|
||||||
//curTile.gotoAndPlay();
|
//curTile.gotoAndPlay();
|
||||||
@@ -430,7 +442,7 @@ function buildLevelMap(levelMap)
|
|||||||
//curTile.framerate = 60;
|
//curTile.framerate = 60;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
curTile.setTransform(x * tileW, y * tileH,tileScale, tileScale); //x,y, scaleX, scaleY
|
curTile.setTransform(x * tileWScale, y * tileHScale, tileScale, tileScale); //x,y, scaleX, scaleY
|
||||||
mainStage.addChild(curTile);
|
mainStage.addChild(curTile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -470,7 +482,7 @@ function drawGround()
|
|||||||
groundTile = [];
|
groundTile = [];
|
||||||
for(var x = 0; x < NO_OF_TILES_X; x++) {
|
for(var x = 0; x < NO_OF_TILES_X; x++) {
|
||||||
groundTile[x] = new createjs.Bitmap(preload.getResult("ground"));
|
groundTile[x] = new createjs.Bitmap(preload.getResult("ground"));
|
||||||
groundTile[x].setTransform(x * tileW, NO_OF_TILES_Y*tileH , tileScale, tileScale);
|
groundTile[x].setTransform(x * tileWScale, NO_OF_TILES_Y * tileHScale, tileScale, tileScale);
|
||||||
mainStage.addChild(groundTile[x]);
|
mainStage.addChild(groundTile[x]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -565,7 +577,7 @@ function drawScoreTxt()
|
|||||||
|
|
||||||
function drawLifeTxt()
|
function drawLifeTxt()
|
||||||
{
|
{
|
||||||
lifeTxt = drawText(13*tileW, infoY, "MEN", mainStage);
|
lifeTxt = drawText(13*tileWScale, infoY, "MEN", mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawLevelTxt()
|
function drawLevelTxt()
|
||||||
@@ -575,29 +587,29 @@ function drawLevelTxt()
|
|||||||
//if(playMode == PLAY_CLASSIC || playMode == PLAY_AUTO) xOffset = 20;
|
//if(playMode == PLAY_CLASSIC || playMode == PLAY_AUTO) xOffset = 20;
|
||||||
//else xOffset = 19;
|
//else xOffset = 19;
|
||||||
|
|
||||||
levelTxt = drawText(xOffset*tileW, infoY, "LEVEL", mainStage);
|
levelTxt = drawText(xOffset*tileWScale, infoY, "LEVEL", mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
//for demo mode
|
//for demo mode
|
||||||
function drawDemoTxt()
|
function drawDemoTxt()
|
||||||
{
|
{
|
||||||
demoTxt = drawText(14*tileW, infoY, "DEMO", mainStage);
|
demoTxt = drawText(14*tileWScale, infoY, "DEMO", mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
//for time & edit mode
|
//for time & edit mode
|
||||||
function drawGoldTxt()
|
function drawGoldTxt()
|
||||||
{
|
{
|
||||||
goldTxt = drawText(0*tileW, infoY, "@", mainStage);
|
goldTxt = drawText(0*tileWScale, infoY, "@", mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawGuardTxt()
|
function drawGuardTxt()
|
||||||
{
|
{
|
||||||
guardTxt = drawText((5+2/3)*tileW, infoY, "#", mainStage);
|
guardTxt = drawText((5+2/3)*tileWScale, infoY, "#", mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawTimeTxt()
|
function drawTimeTxt()
|
||||||
{
|
{
|
||||||
timeTxt = drawText((11+1/3)*tileW, infoY, "TIME", mainStage);
|
timeTxt = drawText((11+1/3)*tileWScale, infoY, "TIME", mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw score number
|
// draw score number
|
||||||
@@ -612,7 +624,7 @@ function drawScore(addScore)
|
|||||||
//if(playMode == PLAY_CLASSIC || playMode == PLAY_AUTO) digitNo = 7;
|
//if(playMode == PLAY_CLASSIC || playMode == PLAY_AUTO) digitNo = 7;
|
||||||
//else digitNo = 6
|
//else digitNo = 6
|
||||||
|
|
||||||
scoreTile = drawText(5*tileW, infoY, ("000000"+curScore).slice(-7), mainStage);
|
scoreTile = drawText(5*tileWScale, infoY, ("000000"+curScore).slice(-7), mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawLife()
|
function drawLife()
|
||||||
@@ -620,7 +632,7 @@ function drawLife()
|
|||||||
for(var i = 0; i < lifeTile.length; i++)
|
for(var i = 0; i < lifeTile.length; i++)
|
||||||
mainStage.removeChild(lifeTile[i]);
|
mainStage.removeChild(lifeTile[i]);
|
||||||
|
|
||||||
lifeTile = drawText(16*tileW, infoY, ("00"+runnerLife).slice(-3), mainStage);
|
lifeTile = drawText(16*tileWScale, infoY, ("00"+runnerLife).slice(-3), mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawLevel()
|
function drawLevel()
|
||||||
@@ -630,11 +642,11 @@ function drawLevel()
|
|||||||
|
|
||||||
switch(playMode) {
|
switch(playMode) {
|
||||||
case PLAY_AUTO:
|
case PLAY_AUTO:
|
||||||
levelTile = drawText(25*tileW, infoY, ("00"+demoLevel).slice(-3), mainStage);
|
levelTile = drawText(25*tileWScale, infoY, ("00"+demoLevel).slice(-3), mainStage);
|
||||||
break;
|
break;
|
||||||
case PLAY_CLASSIC:
|
case PLAY_CLASSIC:
|
||||||
default:
|
default:
|
||||||
levelTile = drawText(25*tileW, infoY, ("00"+curLevel).slice(-3), mainStage);
|
levelTile = drawText(25*tileWScale, infoY, ("00"+curLevel).slice(-3), mainStage);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -645,7 +657,7 @@ function drawGold(addGold)
|
|||||||
for(var i = 0; i < goldTile.length; i++)
|
for(var i = 0; i < goldTile.length; i++)
|
||||||
mainStage.removeChild(goldTile[i]);
|
mainStage.removeChild(goldTile[i]);
|
||||||
|
|
||||||
goldTile = drawText(1*tileW, infoY, ("00"+curGetGold).slice(-3), mainStage);
|
goldTile = drawText(1*tileWScale, infoY, ("00"+curGetGold).slice(-3), mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawGuard(addGuard)
|
function drawGuard(addGuard)
|
||||||
@@ -655,7 +667,7 @@ function drawGuard(addGuard)
|
|||||||
for(var i = 0; i < guardTile.length; i++)
|
for(var i = 0; i < guardTile.length; i++)
|
||||||
mainStage.removeChild(guardTile[i]);
|
mainStage.removeChild(guardTile[i]);
|
||||||
|
|
||||||
guardTile = drawText((6+2/3)*tileW, infoY, ("00"+curGuardDeadNo).slice(-3), mainStage);
|
guardTile = drawText((6+2/3)*tileWScale, infoY, ("00"+curGuardDeadNo).slice(-3), mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -668,7 +680,7 @@ function drawTime(decTime)
|
|||||||
for(var i = 0; i < timeTile.length; i++)
|
for(var i = 0; i < timeTile.length; i++)
|
||||||
mainStage.removeChild(timeTile[i]);
|
mainStage.removeChild(timeTile[i]);
|
||||||
|
|
||||||
timeTile = drawText((15+1/3)*tileW, infoY, ("00"+curTime).slice(-3), mainStage);
|
timeTile = drawText((15+1/3)*tileWScale, infoY, ("00"+curTime).slice(-3), mainStage);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setGroundInfoOrder()
|
function setGroundInfoOrder()
|
||||||
@@ -702,17 +714,19 @@ function setGroundInfoOrder()
|
|||||||
for(i = 0; i < levelTile.length; i++) moveChild2Top(mainStage, levelTile[i]);
|
for(i = 0; i < levelTile.length; i++) moveChild2Top(mainStage, levelTile[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawText(x, y, str, parentObj)
|
function drawText(x, y, str, parentObj, numberType)
|
||||||
{
|
{
|
||||||
var text = str.toUpperCase();
|
var text = str.toUpperCase();
|
||||||
var textTile = [];
|
var textTile = [];
|
||||||
|
|
||||||
|
if(typeof numberType == "undefined") numberType = "N";
|
||||||
|
|
||||||
for(var i = 0; i < text.length; i++) {
|
for(var i = 0; i < text.length; i++) {
|
||||||
var code = text.charCodeAt(i);
|
var code = text.charCodeAt(i);
|
||||||
|
|
||||||
switch(true) {
|
switch(true) {
|
||||||
case (code >=48 && code <=57):
|
case (code >=48 && code <=57): //N0 ~ N9 or D0 ~ D9
|
||||||
textTile[i] = new createjs.Sprite(textData,"N"+String.fromCharCode(code));
|
textTile[i] = new createjs.Sprite(textData, numberType+String.fromCharCode(code));
|
||||||
break;
|
break;
|
||||||
case (code >=65 && code <= 90):
|
case (code >=65 && code <= 90):
|
||||||
textTile[i] = new createjs.Sprite(textData, String.fromCharCode(code));
|
textTile[i] = new createjs.Sprite(textData, String.fromCharCode(code));
|
||||||
@@ -739,7 +753,7 @@ function drawText(x, y, str, parentObj)
|
|||||||
textTile[i] = new createjs.Sprite(textData, "SPACE");
|
textTile[i] = new createjs.Sprite(textData, "SPACE");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
textTile[i].setTransform(x + i*tileW, y, tileScale, tileScale).stop();
|
textTile[i].setTransform(x + i*tileWScale, y, tileScale, tileScale).stop();
|
||||||
parentObj.addChild(textTile[i]);
|
parentObj.addChild(textTile[i]);
|
||||||
}
|
}
|
||||||
return textTile;
|
return textTile;
|
||||||
@@ -773,7 +787,8 @@ function showLevel(levelMap)
|
|||||||
{
|
{
|
||||||
mainStage.removeAllChildren();
|
mainStage.removeAllChildren();
|
||||||
|
|
||||||
loadingTxt.text = ""
|
loadingTxt.text = "";
|
||||||
|
//loadingTxt.text = tileScale; //for debug
|
||||||
mainStage.addChild(loadingTxt); //for debug
|
mainStage.addChild(loadingTxt); //for debug
|
||||||
|
|
||||||
initVariable();
|
initVariable();
|
||||||
@@ -807,7 +822,7 @@ function showTipsText(text, always)
|
|||||||
width = height = 0;
|
width = height = 0;
|
||||||
}
|
}
|
||||||
x = tipsText.x = (canvas.width - width) / 2 | 0;
|
x = tipsText.x = (canvas.width - width) / 2 | 0;
|
||||||
y = tipsText.y = (NO_OF_TILES_Y*tileH - height) / 2 | 0;
|
y = tipsText.y = (NO_OF_TILES_Y*tileHScale - height) / 2 | 0;
|
||||||
tipsText.shadow = new createjs.Shadow("white", 2, 2, 1);
|
tipsText.shadow = new createjs.Shadow("white", 2, 2, 1);
|
||||||
|
|
||||||
tipsRect = new createjs.Shape();
|
tipsRect = new createjs.Shape();
|
||||||
@@ -841,6 +856,13 @@ function toggleTrapTile()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(dspTrapTile) {
|
||||||
|
showTipsText("SHOW TRAP TILE", 0);
|
||||||
|
} else {
|
||||||
|
showTipsText("HIDE TRAP TILE", 0);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function startAllSpriteObj()
|
function startAllSpriteObj()
|
||||||
@@ -888,8 +910,8 @@ function gameOverAnimation()
|
|||||||
{
|
{
|
||||||
var gameOverImage = new createjs.Bitmap(preload.getResult("over"));
|
var gameOverImage = new createjs.Bitmap(preload.getResult("over"));
|
||||||
var bound = gameOverImage.getBounds();
|
var bound = gameOverImage.getBounds();
|
||||||
var x = (NO_OF_TILES_X*tileW)/2|0;
|
var x = (NO_OF_TILES_X*tileWScale)/2|0;
|
||||||
var y = (NO_OF_TILES_Y*tileH)/2|0;
|
var y = (NO_OF_TILES_Y*tileHScale)/2|0;
|
||||||
var regX = (bound.width)/2|0;
|
var regX = (bound.width)/2|0;
|
||||||
var regY = (bound.height)/2|0;
|
var regY = (bound.height)/2|0;
|
||||||
|
|
||||||
@@ -926,8 +948,8 @@ var cycScreen, cycMaxRadius, cycDiff, cycX, cycY
|
|||||||
|
|
||||||
function initCycVariable()
|
function initCycVariable()
|
||||||
{
|
{
|
||||||
cycX = NO_OF_TILES_X * tileW/2;
|
cycX = NO_OF_TILES_X * tileWScale/2;
|
||||||
cycY = NO_OF_TILES_Y * tileH/2;
|
cycY = NO_OF_TILES_Y * tileHScale/2;
|
||||||
cycMaxRadius = Math.sqrt(cycX*cycX+cycY*cycY)|0+1;
|
cycMaxRadius = Math.sqrt(cycX*cycX+cycY*cycY)|0+1;
|
||||||
cycDiff = (cycMaxRadius/CLOSE_SCREEN_SPEED)|0;
|
cycDiff = (cycMaxRadius/CLOSE_SCREEN_SPEED)|0;
|
||||||
}
|
}
|
||||||
@@ -968,6 +990,10 @@ function closingScreen(r)
|
|||||||
setTimeout(function() { closingScreen(r);}, 5);
|
setTimeout(function() { closingScreen(r);}, 5);
|
||||||
} else {
|
} else {
|
||||||
var levelMap;
|
var levelMap;
|
||||||
|
|
||||||
|
curAiVersion = AI_VERSION; //07/04/2014
|
||||||
|
initHotKeyVariable(); //07/09/2014
|
||||||
|
|
||||||
if(playMode == PLAY_AUTO) getAutoDemoLevel(0);
|
if(playMode == PLAY_AUTO) getAutoDemoLevel(0);
|
||||||
if(playMode == PLAY_DEMO) getNextDemoLevel();
|
if(playMode == PLAY_DEMO) getNextDemoLevel();
|
||||||
/*
|
/*
|
||||||
@@ -980,7 +1006,6 @@ function closingScreen(r)
|
|||||||
} else {
|
} else {
|
||||||
levelMap = levelData[curLevel-1];
|
levelMap = levelData[curLevel-1];
|
||||||
}
|
}
|
||||||
|
|
||||||
showLevel(levelMap);
|
showLevel(levelMap);
|
||||||
addCycScreen();
|
addCycScreen();
|
||||||
setTimeout(function() { openingScreen(cycDiff*2);}, 5);
|
setTimeout(function() { openingScreen(cycDiff*2);}, 5);
|
||||||
@@ -1174,8 +1199,10 @@ function mainTick(event)
|
|||||||
break;
|
break;
|
||||||
case GAME_RUNNER_DEAD:
|
case GAME_RUNNER_DEAD:
|
||||||
//mainStage.update();
|
//mainStage.update();
|
||||||
//if(recordMode) recordModeToggle(GAME_RUNNER_DEAD);
|
|
||||||
|
//if(recordMode) recordModeToggle(GAME_RUNNER_DEAD); //for debug only (if enable it must disable below statement)
|
||||||
if(recordMode == RECORD_KEY) recordModeDump(GAME_RUNNER_DEAD);
|
if(recordMode == RECORD_KEY) recordModeDump(GAME_RUNNER_DEAD);
|
||||||
|
|
||||||
soundStop(soundFall);
|
soundStop(soundFall);
|
||||||
stopAllSpriteObj();
|
stopAllSpriteObj();
|
||||||
soundPlay("dead");
|
soundPlay("dead");
|
||||||
@@ -1266,8 +1293,11 @@ function mainTick(event)
|
|||||||
debug("design error!");
|
debug("design error!");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if(recordMode) recordModeToggle(GAME_FINISH); //for debug only (if enable it must comment below if statement)
|
||||||
if(recordMode == RECORD_KEY) {
|
if(recordMode == RECORD_KEY) {
|
||||||
recordModeDump(GAME_FINISH);
|
recordModeDump(GAME_FINISH);
|
||||||
|
|
||||||
if((playMode == PLAY_CLASSIC || playMode == PLAY_MODERN) && playData <= 2) {
|
if((playMode == PLAY_CLASSIC || playMode == PLAY_MODERN) && playData <= 2) {
|
||||||
updatePlayerDemoData(playData, curDemoData); //update current player demo data
|
updatePlayerDemoData(playData, curDemoData); //update current player demo data
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ function closeIconClass(_width, _height, _stage, _scale, _activeColor, _callBack
|
|||||||
// < 4 > : SLIDE_GAP_X
|
// < 4 > : SLIDE_GAP_X
|
||||||
|
|
||||||
|
|
||||||
function selectDialog(_titleName, _checkBitmap, _levelData, _activeLevel, _screenX, _screenY,
|
function selectDialog(_titleName, _checkBitmap, _levelData, _activeLevel, _screenX1, _screenY1,
|
||||||
_parentStage, _scale, _activeFun, _closeFun, _postFun)
|
_parentStage, _scale, _activeFun, _closeFun, _postFun)
|
||||||
{
|
{
|
||||||
var TITLE_TEXT_SIZE = 36 * _scale;
|
var TITLE_TEXT_SIZE = 36 * _scale;
|
||||||
@@ -462,8 +462,8 @@ function selectDialog(_titleName, _checkBitmap, _levelData, _activeLevel, _scree
|
|||||||
canvas1.width = CANVAS_SIZE_X;
|
canvas1.width = CANVAS_SIZE_X;
|
||||||
canvas1.height = CANVAS_SIZE_Y;
|
canvas1.height = CANVAS_SIZE_Y;
|
||||||
|
|
||||||
var left = ((_screenX - canvas1.width)/2|0),
|
var left = ((_screenX1 - canvas1.width)/2|0),
|
||||||
top = ((_screenY - canvas1.height)/2|0);
|
top = ((_screenY1 - canvas1.height)/2|0);
|
||||||
canvas1.style.left = (left>0?left:0) + "px";
|
canvas1.style.left = (left>0?left:0) + "px";
|
||||||
canvas1.style.top = (top>0?top:0) + "px";
|
canvas1.style.top = (top>0?top:0) + "px";
|
||||||
canvas1.style.position = "absolute";
|
canvas1.style.position = "absolute";
|
||||||
@@ -1265,7 +1265,6 @@ function selectDialog(_titleName, _checkBitmap, _levelData, _activeLevel, _scree
|
|||||||
|
|
||||||
////debug("delete level = " + level);
|
////debug("delete level = " + level);
|
||||||
}
|
}
|
||||||
////////////////////////////////////////////
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function createTitle()
|
function createTitle()
|
||||||
@@ -1316,8 +1315,8 @@ function menuDialog(_titleName, _itemList, _stage, _scale, _closeCallBack, _args
|
|||||||
|
|
||||||
var CLOSE_ICON_ACTIVE_COLOR = "#ff5050";
|
var CLOSE_ICON_ACTIVE_COLOR = "#ff5050";
|
||||||
|
|
||||||
var screenX = _stage.canvas.width;
|
var screenX1 = _stage.canvas.width;
|
||||||
var screenY = _stage.canvas.height;
|
var screenY1 = _stage.canvas.height;
|
||||||
|
|
||||||
var titleTextObj, titleWidth, titleHeight;
|
var titleTextObj, titleWidth, titleHeight;
|
||||||
var itemText = [], maxItemTextWidth, itemTextHeight;
|
var itemText = [], maxItemTextWidth, itemTextHeight;
|
||||||
@@ -1348,7 +1347,7 @@ function menuDialog(_titleName, _itemList, _stage, _scale, _closeCallBack, _args
|
|||||||
function coverParentStage()
|
function coverParentStage()
|
||||||
{
|
{
|
||||||
coverBackgroundObj = new createjs.Shape();
|
coverBackgroundObj = new createjs.Shape();
|
||||||
coverBackgroundObj.graphics.beginFill(COVER_BACKGROUND_COLOR).drawRect(0, 0, screenX, screenY).endFill();
|
coverBackgroundObj.graphics.beginFill(COVER_BACKGROUND_COLOR).drawRect(0, 0, screenX1, screenY1).endFill();
|
||||||
coverBackgroundObj.alpha = 0.6;
|
coverBackgroundObj.alpha = 0.6;
|
||||||
_stage.addChild(coverBackgroundObj);
|
_stage.addChild(coverBackgroundObj);
|
||||||
}
|
}
|
||||||
@@ -1373,8 +1372,8 @@ function menuDialog(_titleName, _itemList, _stage, _scale, _closeCallBack, _args
|
|||||||
menuX = (maxItemTextWidth > titleWidth? maxItemTextWidth: titleWidth) + TITLE_TEXT_SIZE * 2;
|
menuX = (maxItemTextWidth > titleWidth? maxItemTextWidth: titleWidth) + TITLE_TEXT_SIZE * 2;
|
||||||
menuY = TITLE_AREA_Y + BOTTOM_AREA_Y + (ITEM_AREA_Y+ITEM_GAP_Y)*_itemList.length;
|
menuY = TITLE_AREA_Y + BOTTOM_AREA_Y + (ITEM_AREA_Y+ITEM_GAP_Y)*_itemList.length;
|
||||||
|
|
||||||
startX = (screenX-menuX)/2|0;
|
startX = (screenX1-menuX)/2|0;
|
||||||
startY = (screenY-menuY)/2|0;
|
startY = (screenY1-menuY)/2|0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function creatBackground()
|
function creatBackground()
|
||||||
@@ -1501,7 +1500,7 @@ function mainMenu(callbackFun)
|
|||||||
{
|
{
|
||||||
var mainMenuList = [
|
var mainMenuList = [
|
||||||
{ name: "CLASSIC MODE", activeFun: classicMenu },
|
{ name: "CLASSIC MODE", activeFun: classicMenu },
|
||||||
{ name: "TIME MODE", activeFun: modernMenu },
|
{ name: "TRAINING MODE", activeFun: modernMenu },
|
||||||
{ name: "EDIT MODE", activeFun: editMenu },
|
{ name: "EDIT MODE", activeFun: editMenu },
|
||||||
{ name: "HELP", activeFun: helpMenu }
|
{ name: "HELP", activeFun: helpMenu }
|
||||||
];
|
];
|
||||||
@@ -1539,7 +1538,7 @@ function modernMenu(id, callbackFun)
|
|||||||
modernMenuList.push({ name: USER_CREATED_NAME, activeFun: modernPlay});
|
modernMenuList.push({ name: USER_CREATED_NAME, activeFun: modernPlay});
|
||||||
}
|
}
|
||||||
|
|
||||||
menuDialog(" TIME MODE ", modernMenuList, mainStage, tileScale, mainMenu, callbackFun);
|
menuDialog(" TRAINING MODE ", modernMenuList, mainStage, tileScale, mainMenu, callbackFun);
|
||||||
}
|
}
|
||||||
|
|
||||||
function demoMenu(id, callbackFun)
|
function demoMenu(id, callbackFun)
|
||||||
@@ -1640,7 +1639,7 @@ function helpMenuClose(callbackFun)
|
|||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
|
|
||||||
function mainMenuIconClass( _screenX, _screenY, _scale, _mainMenuBitmap)
|
function mainMenuIconClass( _screenX1, _screenY1, _scale, _mainMenuBitmap)
|
||||||
{
|
{
|
||||||
//_scale = _scale*2/3;
|
//_scale = _scale*2/3;
|
||||||
var border = 4 * _scale + 2;
|
var border = 4 * _scale + 2;
|
||||||
@@ -1709,8 +1708,8 @@ function mainMenuIconClass( _screenX, _screenY, _scale, _mainMenuBitmap)
|
|||||||
mainMainCanvas.width = bitmapX+border*2;
|
mainMainCanvas.width = bitmapX+border*2;
|
||||||
mainMainCanvas.height = bitmapY+border*2;
|
mainMainCanvas.height = bitmapY+border*2;
|
||||||
|
|
||||||
var left = (_screenX - mainMainCanvas.width - bitmapX/3),
|
var left = (_screenX1 - mainMainCanvas.width - bitmapX/3),
|
||||||
top = (_screenY - mainMainCanvas.height - bitmapY/4);
|
top = (_screenY1 - mainMainCanvas.height - bitmapY/4);
|
||||||
//top = bitmapY/4|0;
|
//top = bitmapY/4|0;
|
||||||
mainMainCanvas.style.left = left + "px";
|
mainMainCanvas.style.left = left + "px";
|
||||||
mainMainCanvas.style.top = top + "px";
|
mainMainCanvas.style.top = top + "px";
|
||||||
@@ -1794,7 +1793,7 @@ function activeSelectMenu(activeFun, postFun)
|
|||||||
if(playMode == PLAY_EDIT) {
|
if(playMode == PLAY_EDIT) {
|
||||||
var editLevel = testLevelInfo.level> editLevels?0:testLevelInfo.level;
|
var editLevel = testLevelInfo.level> editLevels?0:testLevelInfo.level;
|
||||||
|
|
||||||
selectDialog(USER_CREATED_NAME, checkBitmap, editLevelData, editLevel, screenX, screenY,
|
selectDialog(USER_CREATED_NAME, checkBitmap, editLevelData, editLevel, screenX1, screenY1,
|
||||||
mainStage, tileScale, activeFun, editSelectMenuClose, postFun)
|
mainStage, tileScale, activeFun, editSelectMenuClose, postFun)
|
||||||
} else {
|
} else {
|
||||||
//var titleName = (playData==1)?LODERUNNER_NAME1:((playData==2)?LODERUNNER_NAME2:USER_CREATED_NAME);
|
//var titleName = (playData==1)?LODERUNNER_NAME1:((playData==2)?LODERUNNER_NAME2:USER_CREATED_NAME);
|
||||||
@@ -1820,12 +1819,12 @@ function activeSelectMenu(activeFun, postFun)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
selectDialog(titleName, checkBitmap, levelData, curLevel, screenX, screenY,
|
selectDialog(titleName, checkBitmap, levelData, curLevel, screenX1, screenY1,
|
||||||
mainStage, tileScale, activeFun, null, postFun)
|
mainStage, tileScale, activeFun, null, postFun)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectIconClass( _screenX, _screenY, _scale, _bitmap)
|
function selectIconClass( _screenX1, _screenY1, _scale, _bitmap)
|
||||||
{
|
{
|
||||||
//_scale = _scale*2/3;
|
//_scale = _scale*2/3;
|
||||||
var border = 4 * _scale + 2;
|
var border = 4 * _scale + 2;
|
||||||
@@ -1894,9 +1893,9 @@ function selectIconClass( _screenX, _screenY, _scale, _bitmap)
|
|||||||
selectCanvas.width = bitmapX+border*2;
|
selectCanvas.width = bitmapX+border*2;
|
||||||
selectCanvas.height = bitmapY+border*2;
|
selectCanvas.height = bitmapY+border*2;
|
||||||
|
|
||||||
var left = (_screenX - selectCanvas.width - bitmapX/3),
|
var left = (_screenX1 - selectCanvas.width - bitmapX/3),
|
||||||
top = bitmapY/4|0;
|
top = bitmapY/4|0;
|
||||||
//top = (_screenY - selectCanvas.height - bitmapY/4);
|
//top = (_screenY1 - selectCanvas.height - bitmapY/4);
|
||||||
selectCanvas.style.left = left + "px";
|
selectCanvas.style.left = left + "px";
|
||||||
selectCanvas.style.top = top + "px";
|
selectCanvas.style.top = top + "px";
|
||||||
selectCanvas.style.position = "absolute";
|
selectCanvas.style.position = "absolute";
|
||||||
@@ -2053,8 +2052,8 @@ function levelPassDialog(_level, _getGold, _guardDead, _time, _hiScore,
|
|||||||
hiScoreNameObj, hiScoreTextObj;
|
hiScoreNameObj, hiScoreTextObj;
|
||||||
|
|
||||||
var coverBackgroundObj, background1Obj, background2Obj, menuButtonObj;
|
var coverBackgroundObj, background1Obj, background2Obj, menuButtonObj;
|
||||||
var screenX = _stage.canvas.width;
|
var screenX1 = _stage.canvas.width;
|
||||||
var screenY = _stage.canvas.height;
|
var screenY1 = _stage.canvas.height;
|
||||||
|
|
||||||
var menuX, menuY, startX, startY
|
var menuX, menuY, startX, startY
|
||||||
var timeNameX, maxTextSize;
|
var timeNameX, maxTextSize;
|
||||||
@@ -2105,14 +2104,14 @@ function levelPassDialog(_level, _getGold, _guardDead, _time, _hiScore,
|
|||||||
menuX = maxTextSize + TITLE_TEXT_SIZE * 5;
|
menuX = maxTextSize + TITLE_TEXT_SIZE * 5;
|
||||||
menuY = TITLE_TEXT_SIZE * 2 + (ITEM_TEXT_SIZE+TEXT_GAP_Y) * 5 + buttonY*3;
|
menuY = TITLE_TEXT_SIZE * 2 + (ITEM_TEXT_SIZE+TEXT_GAP_Y) * 5 + buttonY*3;
|
||||||
|
|
||||||
startX = (screenX-menuX)/2|0;
|
startX = (screenX1-menuX)/2|0;
|
||||||
startY = (screenY-menuY)/2|0;
|
startY = (screenY1-menuY)/2|0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function coverParentStage()
|
function coverParentStage()
|
||||||
{
|
{
|
||||||
coverBackgroundObj = new createjs.Shape();
|
coverBackgroundObj = new createjs.Shape();
|
||||||
coverBackgroundObj.graphics.beginFill(COVER_BACKGROUND_COLOR).drawRect(0, 0, screenX, screenY).endFill();
|
coverBackgroundObj.graphics.beginFill(COVER_BACKGROUND_COLOR).drawRect(0, 0, screenX1, screenY1).endFill();
|
||||||
coverBackgroundObj.alpha = 0.6;
|
coverBackgroundObj.alpha = 0.6;
|
||||||
_stage.addChild(coverBackgroundObj);
|
_stage.addChild(coverBackgroundObj);
|
||||||
}
|
}
|
||||||
@@ -2423,8 +2422,8 @@ function yesNoDialog(_txtMsg, _yesBitmap, _noBitmap, _stage, _scale, _callBack)
|
|||||||
var textObj;
|
var textObj;
|
||||||
|
|
||||||
var coverBackgroundObj, background1Obj, background2Obj;
|
var coverBackgroundObj, background1Obj, background2Obj;
|
||||||
var screenX = _stage.canvas.width;
|
var screenX1 = _stage.canvas.width;
|
||||||
var screenY = _stage.canvas.height;
|
var screenY1 = _stage.canvas.height;
|
||||||
|
|
||||||
var buttonX = _yesBitmap.getBounds().width * _scale,
|
var buttonX = _yesBitmap.getBounds().width * _scale,
|
||||||
buttonY = _yesBitmap.getBounds().height * _scale;
|
buttonY = _yesBitmap.getBounds().height * _scale;
|
||||||
@@ -2474,14 +2473,14 @@ function yesNoDialog(_txtMsg, _yesBitmap, _noBitmap, _stage, _scale, _callBack)
|
|||||||
menuY = (TEXT_GAP_Y + TEXT_MSG_SIZE) * _txtMsg.length + TEXT_MSG_SIZE * 2 + buttonY;
|
menuY = (TEXT_GAP_Y + TEXT_MSG_SIZE) * _txtMsg.length + TEXT_MSG_SIZE * 2 + buttonY;
|
||||||
menuX = maxTextSize + TEXT_MSG_SIZE * 2;
|
menuX = maxTextSize + TEXT_MSG_SIZE * 2;
|
||||||
|
|
||||||
startX = (screenX-menuX)/2|0;
|
startX = (screenX1-menuX)/2|0;
|
||||||
startY = (screenY-menuY)/2|0;
|
startY = (screenY1-menuY)/2|0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function coverParentStage()
|
function coverParentStage()
|
||||||
{
|
{
|
||||||
coverBackgroundObj = new createjs.Shape();
|
coverBackgroundObj = new createjs.Shape();
|
||||||
coverBackgroundObj.graphics.beginFill(COVER_BACKGROUND_COLOR).drawRect(0, 0, screenX, screenY).endFill();
|
coverBackgroundObj.graphics.beginFill(COVER_BACKGROUND_COLOR).drawRect(0, 0, screenX1, screenY1).endFill();
|
||||||
coverBackgroundObj.alpha = 0.6;
|
coverBackgroundObj.alpha = 0.6;
|
||||||
_stage.addChild(coverBackgroundObj);
|
_stage.addChild(coverBackgroundObj);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,11 +71,11 @@ function showTipsMsg(_tipsTxt, _stage, _scale)
|
|||||||
var TEXT_SIZE = 72* _scale;
|
var TEXT_SIZE = 72* _scale;
|
||||||
var TEXT_COLOR = "#ff2020";
|
var TEXT_COLOR = "#ff2020";
|
||||||
var tipsText = new createjs.Text(_tipsTxt, "bold " + TEXT_SIZE + "px Helvetica", TEXT_COLOR);
|
var tipsText = new createjs.Text(_tipsTxt, "bold " + TEXT_SIZE + "px Helvetica", TEXT_COLOR);
|
||||||
var screenX = _stage.canvas.width;
|
var screenX1 = _stage.canvas.width;
|
||||||
var screenY = _stage.canvas.height;
|
var screenY1 = _stage.canvas.height;
|
||||||
|
|
||||||
tipsText.x = (screenX) / 2 | 0;
|
tipsText.x = (screenX1) / 2 | 0;
|
||||||
tipsText.y = screenY/2 - tipsText.getBounds().height*5/4 | 0;
|
tipsText.y = screenY1/2 - tipsText.getBounds().height*5/4 | 0;
|
||||||
tipsText.shadow = new createjs.Shadow("white", 3, 3, 2);
|
tipsText.shadow = new createjs.Shadow("white", 3, 3, 2);
|
||||||
tipsText.textAlign = "center";
|
tipsText.textAlign = "center";
|
||||||
|
|
||||||
@@ -104,6 +104,7 @@ function soundPlay(name)
|
|||||||
if(typeof name == "string") {
|
if(typeof name == "string") {
|
||||||
return createjs.Sound.play(name);
|
return createjs.Sound.play(name);
|
||||||
} else {
|
} else {
|
||||||
|
name.stop(); //12/21/2014 , for support soundJS 0.6.0
|
||||||
name.play();
|
name.play();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,10 +64,11 @@ function showLoadingPage()
|
|||||||
mainStage.addChild(coverBitmap);
|
mainStage.addChild(coverBitmap);
|
||||||
mainStage.update();
|
mainStage.update();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function createRunnerSpriteSheet(runnerImage)
|
function createRunnerSpriteSheet(runnerImage)
|
||||||
{
|
{
|
||||||
runnerData = new createjs.SpriteSheet({
|
runnerData = new createjs.SpriteSheet({
|
||||||
images: [runnerImage],
|
images: [runnerImage],
|
||||||
|
|
||||||
frames: { regX:0, height: BASE_TILE_Y, regY:0, width: BASE_TILE_X},
|
frames: { regX:0, height: BASE_TILE_Y, regY:0, width: BASE_TILE_X},
|
||||||
@@ -95,8 +96,7 @@ function showLoadingPage()
|
|||||||
fallRight : 8,
|
fallRight : 8,
|
||||||
fallLeft: 17
|
fallLeft: 17
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//*****************************************************************************
|
//*****************************************************************************
|
||||||
@@ -156,22 +156,22 @@ function preloadResource()
|
|||||||
{ src: "image/no.png", id: "no" },
|
{ src: "image/no.png", id: "no" },
|
||||||
|
|
||||||
|
|
||||||
{ src: "sound/born.mp3", id:"reborn"},
|
{ src: "sound/born.ogg", id:"reborn"},
|
||||||
{ src: "sound/dead.mp3", id:"dead"},
|
{ src: "sound/dead.ogg", id:"dead"},
|
||||||
{ src: "sound/dig.mp3", id:"dig"},
|
{ src: "sound/dig.ogg", id:"dig"},
|
||||||
{ src: "sound/getGold.mp3", id:"getGold"},
|
{ src: "sound/getGold.ogg", id:"getGold"},
|
||||||
{ src: "sound/fall.mp3", id:"fall"},
|
{ src: "sound/fall.ogg", id:"fall"},
|
||||||
{ src: "sound/down.mp3", id:"down"},
|
{ src: "sound/down.ogg", id:"down"},
|
||||||
{ src: "sound/pass.mp3", id:"pass"},
|
{ src: "sound/pass.ogg", id:"pass"},
|
||||||
{ src: "sound/trap.mp3", id:"trap"},
|
{ src: "sound/trap.ogg", id:"trap"},
|
||||||
|
|
||||||
{ src: "sound/goldFinish.mp3", id:"goldFinish"},
|
{ src: "sound/goldFinish.ogg", id:"goldFinish"},
|
||||||
{ src: "sound/ending.mp3", id:"ending"},
|
{ src: "sound/ending.ogg", id:"ending"},
|
||||||
{ src: "sound/scoreBell.mp3", id:"scoreBell"},
|
{ src: "sound/scoreBell.ogg", id:"scoreBell"},
|
||||||
{ src: "sound/scoreCount.mp3", id:"scoreCount"},
|
{ src: "sound/scoreCount.ogg", id:"scoreCount"},
|
||||||
{ src: "sound/scoreEnding.mp3", id:"scoreEnding"},
|
{ src: "sound/scoreEnding.ogg", id:"scoreEnding"},
|
||||||
|
|
||||||
{ src: "sound/beep.mp3", id:"beep"},
|
{ src: "sound/beep.ogg", id:"beep"},
|
||||||
|
|
||||||
{ src: "cursor/openhand.cur", id:"openHand"}, //preload cursor
|
{ src: "cursor/openhand.cur", id:"openHand"}, //preload cursor
|
||||||
{ src: "cursor/closedhand.cur", id:"closeHand"}
|
{ src: "cursor/closedhand.cur", id:"closeHand"}
|
||||||
@@ -179,7 +179,7 @@ function preloadResource()
|
|||||||
];
|
];
|
||||||
|
|
||||||
preload = new createjs.LoadQueue(true);
|
preload = new createjs.LoadQueue(true);
|
||||||
createjs.Sound.alternateExtensions = ["ogg"];
|
createjs.Sound.alternateExtensions = ["mp3"];
|
||||||
preload.installPlugin(createjs.Sound);
|
preload.installPlugin(createjs.Sound);
|
||||||
preload.on("error", handleFileError);
|
preload.on("error", handleFileError);
|
||||||
preload.on("progress", handleProgress);
|
preload.on("progress", handleProgress);
|
||||||
@@ -228,136 +228,11 @@ function preloadResource()
|
|||||||
{
|
{
|
||||||
percentTxt.text = "100%";
|
percentTxt.text = "100%";
|
||||||
mainStage.update();
|
mainStage.update();
|
||||||
createSpriteSheet();
|
createPreloadSpriteSheet();
|
||||||
createSoundInstance();
|
createSoundInstance();
|
||||||
setTimeout(clearLoadingInfo, 500);
|
setTimeout(clearLoadingInfo, 500);
|
||||||
}
|
}
|
||||||
|
|
||||||
function createSpriteSheet()
|
|
||||||
{
|
|
||||||
guardData = new createjs.SpriteSheet({
|
|
||||||
images: [preload.getResult("guard")],
|
|
||||||
|
|
||||||
frames: {regX:0, height: BASE_TILE_Y, regY: 0, width: BASE_TILE_X},
|
|
||||||
|
|
||||||
animations: {
|
|
||||||
runRight: [0,2, "runRight", GUARD_SPEED],
|
|
||||||
runLeft : [3,5, "runLeft", GUARD_SPEED],
|
|
||||||
runUpDn : [6,7, "runUpDn", GUARD_SPEED],
|
|
||||||
|
|
||||||
barRight: {
|
|
||||||
frames: [ 11, 12, 12, 13, 13 ],
|
|
||||||
next: "barRight",
|
|
||||||
speed: GUARD_SPEED
|
|
||||||
},
|
|
||||||
|
|
||||||
barLeft: {
|
|
||||||
frames: [ 14, 15, 15, 16, 16 ],
|
|
||||||
next: "barLeft",
|
|
||||||
speed: GUARD_SPEED
|
|
||||||
},
|
|
||||||
|
|
||||||
reborn: {
|
|
||||||
frames: [ 17, 17, 18 ],
|
|
||||||
speed: GUARD_SPEED
|
|
||||||
},
|
|
||||||
|
|
||||||
fallRight : 8,
|
|
||||||
fallLeft: 19,
|
|
||||||
|
|
||||||
shakeRight: {
|
|
||||||
frames: [ 8, 8, 8, 8, 8, 8, 8,
|
|
||||||
8, 8, 8, 8, 8, 8,
|
|
||||||
9, 10, 9, 10, 8 ],
|
|
||||||
next: null,
|
|
||||||
speed: GUARD_SPEED
|
|
||||||
},
|
|
||||||
|
|
||||||
shakeLeft: {
|
|
||||||
frames: [ 19, 19, 19, 19, 19, 19, 19,
|
|
||||||
19, 19, 19, 19, 19, 19,
|
|
||||||
20, 21, 20, 21, 19],
|
|
||||||
next: null,
|
|
||||||
speed: GUARD_SPEED
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
holeData = new createjs.SpriteSheet( {
|
|
||||||
images: [preload.getResult("hole")],
|
|
||||||
|
|
||||||
frames: [
|
|
||||||
//dig hole Left
|
|
||||||
[BASE_TILE_X*0,0,BASE_TILE_X,BASE_TILE_Y*2], //0 [x,y, width, height]
|
|
||||||
[BASE_TILE_X*1,0,BASE_TILE_X,BASE_TILE_Y*2], //1
|
|
||||||
[BASE_TILE_X*2,0,BASE_TILE_X,BASE_TILE_Y*2], //2
|
|
||||||
[BASE_TILE_X*3,0,BASE_TILE_X,BASE_TILE_Y*2], //3
|
|
||||||
[BASE_TILE_X*4,0,BASE_TILE_X,BASE_TILE_Y*2], //4
|
|
||||||
[BASE_TILE_X*5,0,BASE_TILE_X,BASE_TILE_Y*2], //5
|
|
||||||
[BASE_TILE_X*6,0,BASE_TILE_X,BASE_TILE_Y*2], //6
|
|
||||||
[BASE_TILE_X*7,0,BASE_TILE_X,BASE_TILE_Y*2], //7
|
|
||||||
|
|
||||||
//dig hole right
|
|
||||||
[BASE_TILE_X*0,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //08
|
|
||||||
[BASE_TILE_X*1,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //09
|
|
||||||
[BASE_TILE_X*2,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //10
|
|
||||||
[BASE_TILE_X*3,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //11
|
|
||||||
[BASE_TILE_X*4,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //12
|
|
||||||
[BASE_TILE_X*5,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //13
|
|
||||||
[BASE_TILE_X*6,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //14
|
|
||||||
[BASE_TILE_X*7,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //15
|
|
||||||
|
|
||||||
//fill hole
|
|
||||||
[BASE_TILE_X*8,0, BASE_TILE_X,BASE_TILE_Y], //16
|
|
||||||
[BASE_TILE_X*8,BASE_TILE_Y, BASE_TILE_X,BASE_TILE_Y], //17
|
|
||||||
[BASE_TILE_X*8,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y], //18
|
|
||||||
[BASE_TILE_X*8,BASE_TILE_Y*3,BASE_TILE_X,BASE_TILE_Y] //19
|
|
||||||
],
|
|
||||||
|
|
||||||
animations: {
|
|
||||||
digHoleLeft: [0, 7, false, DIG_SPEED],
|
|
||||||
digHoleRight: [8,15, false, DIG_SPEED],
|
|
||||||
fillHole: {
|
|
||||||
frames: [16, 16, 16, 16, 16, 16, 16, 16, 16,
|
|
||||||
16, 16, 16, 16, 16, 16, 16, 16, 16,
|
|
||||||
16, 16, 16, 16, 16, 16, 16, 16, 16,
|
|
||||||
16, 16, 16, 16, 16, 16, 16, 16, 16,
|
|
||||||
16, 16, 16, 16, 16, 16, 16, 16, 16,
|
|
||||||
17, 17, 18, 18, 19 ], //delay fill time for champLevel, 2014/04/12
|
|
||||||
next: false,
|
|
||||||
speed: FILL_SPEED
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
holeObj.sprite = new createjs.Sprite(holeData, "digHoleLeft");
|
|
||||||
holeObj.action = ACT_STOP; //no digging
|
|
||||||
|
|
||||||
textData = new createjs.SpriteSheet({
|
|
||||||
images: [preload.getResult("text")],
|
|
||||||
|
|
||||||
frames: {regX:0, height: BASE_TILE_Y, regY: 0, width: BASE_TILE_X},
|
|
||||||
|
|
||||||
animations: {
|
|
||||||
"N0": 0, "N1": 1, "N2": 2, "N3": 3, "N4": 4,
|
|
||||||
"N5": 5, "N6": 6, "N7": 7, "N8": 8, "N9": 9,
|
|
||||||
"A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15, "G": 16, "H": 17,
|
|
||||||
"I": 18, "J": 19, "K": 20, "L": 21, "M": 22, "N": 23, "O": 24, "P": 25,
|
|
||||||
"Q": 26, "R": 27, "S": 28, "T": 29, "U": 30, "V": 31, "W": 32, "X": 33,
|
|
||||||
"Y": 34, "Z": 35,
|
|
||||||
"DOT": 36, "LT": 37, "GT": 38, "DASH": 39,
|
|
||||||
"@":40, //gold
|
|
||||||
"#":41, //trap
|
|
||||||
"SPACE":43,
|
|
||||||
"FLASH": {
|
|
||||||
frames: [42, 42, 42, 43, 43, 43],
|
|
||||||
next: "FLASH",
|
|
||||||
speed: FLASH_SPEED
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function createSoundInstance()
|
function createSoundInstance()
|
||||||
{
|
{
|
||||||
@@ -401,10 +276,11 @@ function preloadResource()
|
|||||||
function createMenuBitmapIcon()
|
function createMenuBitmapIcon()
|
||||||
{
|
{
|
||||||
mainMenuIconBitmap = new createjs.Bitmap(preload.getResult("menu"));
|
mainMenuIconBitmap = new createjs.Bitmap(preload.getResult("menu"));
|
||||||
mainMenuIconObj = new mainMenuIconClass(screenX, screenY, tileScale, mainMenuIconBitmap);
|
mainMenuIconObj = new mainMenuIconClass(screenX1, screenY1, tileScale, mainMenuIconBitmap);
|
||||||
|
|
||||||
selectIconBitmap = new createjs.Bitmap(preload.getResult("select"));
|
selectIconBitmap = new createjs.Bitmap(preload.getResult("select"));
|
||||||
selectIconObj = new selectIconClass(screenX, screenY, tileScale, selectIconBitmap);
|
selectIconObj = new selectIconClass(screenX1, screenY1, tileScale, selectIconBitmap);
|
||||||
|
|
||||||
|
|
||||||
checkBitmap = new createjs.Bitmap(preload.getResult("check"));
|
checkBitmap = new createjs.Bitmap(preload.getResult("check"));
|
||||||
|
|
||||||
@@ -434,3 +310,167 @@ function preloadResource()
|
|||||||
waitIdleDemo(4000); //wait user key or show demo level
|
waitIdleDemo(4000); //wait user key or show demo level
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==============================
|
||||||
|
// support different AI-version
|
||||||
|
//==============================
|
||||||
|
|
||||||
|
var spriteSpeed = [
|
||||||
|
{ runnerSpeed: 0.65, guardSpeed: 0.3, digSpeed: 0.68, fillSpeed: 0.24, xMoveBase: 8, yMoveBase: 8 }, //ver 1
|
||||||
|
{ runnerSpeed: 0.70, guardSpeed: 0.35, digSpeed: 0.68, fillSpeed: 0.27, xMoveBase: 8, yMoveBase: 9 } //ver 2
|
||||||
|
];
|
||||||
|
|
||||||
|
var curAiVersion = AI_VERSION;
|
||||||
|
function setSpeedByAiVersion()
|
||||||
|
{
|
||||||
|
var speedObj = spriteSpeed[curAiVersion-1];
|
||||||
|
|
||||||
|
RUNNER_SPEED = speedObj.runnerSpeed;
|
||||||
|
GUARD_SPEED = speedObj.guardSpeed;
|
||||||
|
DIG_SPEED = speedObj.digSpeed;
|
||||||
|
FILL_SPEED = speedObj.fillSpeed;
|
||||||
|
|
||||||
|
//xMove = speedObj.xMoveBase * tileScale; //8, 6, 4 (10, 7.5, 5)
|
||||||
|
//yMove = speedObj.yMoveBase * tileScale; //8, 6, 4 (10, 7.5, 5)
|
||||||
|
xMove = speedObj.xMoveBase;
|
||||||
|
yMove = speedObj.yMoveBase;
|
||||||
|
|
||||||
|
//W4 = (tileW/4|0)+ speedObj.w4; //no used
|
||||||
|
//H4 = (tileH/4|0)+ speedObj.h4;
|
||||||
|
|
||||||
|
createSpriteSheet();
|
||||||
|
}
|
||||||
|
|
||||||
|
function createSpriteSheet()
|
||||||
|
{
|
||||||
|
createRunnerSpriteSheet(coverPageLoad.getResult("runner"));
|
||||||
|
createPreloadSpriteSheet();
|
||||||
|
}
|
||||||
|
|
||||||
|
function createPreloadSpriteSheet()
|
||||||
|
{
|
||||||
|
guardData = new createjs.SpriteSheet({
|
||||||
|
images: [preload.getResult("guard")],
|
||||||
|
|
||||||
|
frames: {regX:0, height: BASE_TILE_Y, regY: 0, width: BASE_TILE_X},
|
||||||
|
|
||||||
|
animations: {
|
||||||
|
runRight: [0,2, "runRight", GUARD_SPEED],
|
||||||
|
runLeft : [3,5, "runLeft", GUARD_SPEED],
|
||||||
|
runUpDn : [6,7, "runUpDn", GUARD_SPEED],
|
||||||
|
|
||||||
|
barRight: {
|
||||||
|
frames: [ 11, 12, 12, 13, 13 ],
|
||||||
|
next: "barRight",
|
||||||
|
speed: GUARD_SPEED
|
||||||
|
},
|
||||||
|
|
||||||
|
barLeft: {
|
||||||
|
frames: [ 14, 15, 15, 16, 16 ],
|
||||||
|
next: "barLeft",
|
||||||
|
speed: GUARD_SPEED
|
||||||
|
},
|
||||||
|
|
||||||
|
reborn: {
|
||||||
|
frames: [ 17, 17, 18 ],
|
||||||
|
speed: GUARD_SPEED
|
||||||
|
},
|
||||||
|
|
||||||
|
fallRight : 8,
|
||||||
|
fallLeft: 19,
|
||||||
|
|
||||||
|
shakeRight: {
|
||||||
|
frames: [ 8, 8, 8, 8, 8, 8, 8,
|
||||||
|
8, 8, 8, 8, 8, 8,
|
||||||
|
9, 10, 9, 10, 8 ],
|
||||||
|
next: null,
|
||||||
|
speed: GUARD_SPEED
|
||||||
|
},
|
||||||
|
|
||||||
|
shakeLeft: {
|
||||||
|
frames: [ 19, 19, 19, 19, 19, 19, 19,
|
||||||
|
19, 19, 19, 19, 19, 19,
|
||||||
|
20, 21, 20, 21, 19],
|
||||||
|
next: null,
|
||||||
|
speed: GUARD_SPEED
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
holeData = new createjs.SpriteSheet( {
|
||||||
|
images: [preload.getResult("hole")],
|
||||||
|
|
||||||
|
frames: [
|
||||||
|
//dig hole Left
|
||||||
|
[BASE_TILE_X*0,0,BASE_TILE_X,BASE_TILE_Y*2], //0 [x,y, width, height]
|
||||||
|
[BASE_TILE_X*1,0,BASE_TILE_X,BASE_TILE_Y*2], //1
|
||||||
|
[BASE_TILE_X*2,0,BASE_TILE_X,BASE_TILE_Y*2], //2
|
||||||
|
[BASE_TILE_X*3,0,BASE_TILE_X,BASE_TILE_Y*2], //3
|
||||||
|
[BASE_TILE_X*4,0,BASE_TILE_X,BASE_TILE_Y*2], //4
|
||||||
|
[BASE_TILE_X*5,0,BASE_TILE_X,BASE_TILE_Y*2], //5
|
||||||
|
[BASE_TILE_X*6,0,BASE_TILE_X,BASE_TILE_Y*2], //6
|
||||||
|
[BASE_TILE_X*7,0,BASE_TILE_X,BASE_TILE_Y*2], //7
|
||||||
|
|
||||||
|
//dig hole right
|
||||||
|
[BASE_TILE_X*0,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //08
|
||||||
|
[BASE_TILE_X*1,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //09
|
||||||
|
[BASE_TILE_X*2,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //10
|
||||||
|
[BASE_TILE_X*3,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //11
|
||||||
|
[BASE_TILE_X*4,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //12
|
||||||
|
[BASE_TILE_X*5,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //13
|
||||||
|
[BASE_TILE_X*6,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //14
|
||||||
|
[BASE_TILE_X*7,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y*2], //15
|
||||||
|
|
||||||
|
//fill hole
|
||||||
|
[BASE_TILE_X*8,0, BASE_TILE_X,BASE_TILE_Y], //16
|
||||||
|
[BASE_TILE_X*8,BASE_TILE_Y, BASE_TILE_X,BASE_TILE_Y], //17
|
||||||
|
[BASE_TILE_X*8,BASE_TILE_Y*2,BASE_TILE_X,BASE_TILE_Y], //18
|
||||||
|
[BASE_TILE_X*8,BASE_TILE_Y*3,BASE_TILE_X,BASE_TILE_Y] //19
|
||||||
|
],
|
||||||
|
|
||||||
|
animations: {
|
||||||
|
digHoleLeft: [0, 7, false, DIG_SPEED],
|
||||||
|
digHoleRight: [8,15, false, DIG_SPEED],
|
||||||
|
fillHole: {
|
||||||
|
frames: [16, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
16, 16, 16, 16, 16, 16, 16, 16, 16,
|
||||||
|
17, 17, 18, 18, 19 ], //delay fill time for champLevel, 2014/04/12
|
||||||
|
next: false,
|
||||||
|
speed: FILL_SPEED
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
holeObj.sprite = new createjs.Sprite(holeData, "digHoleLeft");
|
||||||
|
holeObj.action = ACT_STOP; //no digging
|
||||||
|
|
||||||
|
textData = new createjs.SpriteSheet({
|
||||||
|
images: [preload.getResult("text")],
|
||||||
|
|
||||||
|
frames: {regX:0, height: BASE_TILE_Y, regY: 0, width: BASE_TILE_X},
|
||||||
|
|
||||||
|
animations: {
|
||||||
|
"N0": 0, "N1": 1, "N2": 2, "N3": 3, "N4": 4,
|
||||||
|
"N5": 5, "N6": 6, "N7": 7, "N8": 8, "N9": 9,
|
||||||
|
"A": 10, "B": 11, "C": 12, "D": 13, "E": 14, "F": 15, "G": 16, "H": 17,
|
||||||
|
"I": 18, "J": 19, "K": 20, "L": 21, "M": 22, "N": 23, "O": 24, "P": 25,
|
||||||
|
"Q": 26, "R": 27, "S": 28, "T": 29, "U": 30, "V": 31, "W": 32, "X": 33,
|
||||||
|
"Y": 34, "Z": 35,
|
||||||
|
"DOT": 36, "LT": 37, "GT": 38, "DASH": 39,
|
||||||
|
"@":40, //gold
|
||||||
|
"#":41, //trap
|
||||||
|
"SPACE":43,
|
||||||
|
"FLASH": { //42 & 43
|
||||||
|
frames: [42, 42, 42, 43, 43, 43],
|
||||||
|
next: "FLASH",
|
||||||
|
speed: FLASH_SPEED
|
||||||
|
},
|
||||||
|
"D0": 50, "D1": 51, "D2": 52, "D3": 53, "D4": 54, //blue digit number for player name, 11/17/2014
|
||||||
|
"D5": 55, "D6": 56, "D7": 57, "D8": 58, "D9": 59
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -158,7 +158,7 @@ function runnerMoveStep(action, stayCurrPos )
|
|||||||
map[x][y].act = curToken; //runner move to [x][y-1], so set [x][y].act to previous state
|
map[x][y].act = curToken; //runner move to [x][y-1], so set [x][y].act to previous state
|
||||||
y--;
|
y--;
|
||||||
yOffset = tileH + yOffset;
|
yOffset = tileH + yOffset;
|
||||||
if(map[x][y].act == GUARD_T) gameState = GAME_RUNNER_DEAD; //collision
|
if(map[x][y].act == GUARD_T && guardAlive(x,y)) setRunnerDead(); //collision
|
||||||
}
|
}
|
||||||
newShape = "runUpDn";
|
newShape = "runUpDn";
|
||||||
}
|
}
|
||||||
@@ -189,7 +189,7 @@ function runnerMoveStep(action, stayCurrPos )
|
|||||||
map[x][y].act = curToken; //runner move to [x][y+1], so set [x][y].act to previous state
|
map[x][y].act = curToken; //runner move to [x][y+1], so set [x][y].act to previous state
|
||||||
y++;
|
y++;
|
||||||
yOffset = yOffset - tileH;
|
yOffset = yOffset - tileH;
|
||||||
if(map[x][y].act == GUARD_T) gameState = GAME_RUNNER_DEAD; //collision
|
if(map[x][y].act == GUARD_T && guardAlive(x,y)) setRunnerDead(); //collision
|
||||||
}
|
}
|
||||||
|
|
||||||
if(action == ACT_DOWN) {
|
if(action == ACT_DOWN) {
|
||||||
@@ -227,7 +227,7 @@ function runnerMoveStep(action, stayCurrPos )
|
|||||||
map[x][y].act = curToken; //runner move to [x-1][y], so set [x][y].act to previous state
|
map[x][y].act = curToken; //runner move to [x-1][y], so set [x][y].act to previous state
|
||||||
x--;
|
x--;
|
||||||
xOffset = tileW + xOffset;
|
xOffset = tileW + xOffset;
|
||||||
if(map[x][y].act == GUARD_T) gameState = GAME_RUNNER_DEAD; //collision
|
if(map[x][y].act == GUARD_T && guardAlive(x,y)) setRunnerDead(); //collision
|
||||||
}
|
}
|
||||||
if(curToken == BAR_T) newShape = "barLeft";
|
if(curToken == BAR_T) newShape = "barLeft";
|
||||||
else newShape = "runLeft";
|
else newShape = "runLeft";
|
||||||
@@ -247,7 +247,7 @@ function runnerMoveStep(action, stayCurrPos )
|
|||||||
map[x][y].act = curToken; //runner move to [x+1][y], so set [x][y].act to previous state
|
map[x][y].act = curToken; //runner move to [x+1][y], so set [x][y].act to previous state
|
||||||
x++;
|
x++;
|
||||||
xOffset = xOffset - tileW;
|
xOffset = xOffset - tileW;
|
||||||
if(map[x][y].act == GUARD_T) gameState = GAME_RUNNER_DEAD; //collision
|
if(map[x][y].act == GUARD_T && guardAlive(x,y)) setRunnerDead(); //collision
|
||||||
}
|
}
|
||||||
if(curToken == BAR_T) newShape = "barRight";
|
if(curToken == BAR_T) newShape = "barRight";
|
||||||
else newShape = "runRight";
|
else newShape = "runRight";
|
||||||
@@ -268,8 +268,8 @@ function runnerMoveStep(action, stayCurrPos )
|
|||||||
runner.action = ACT_STOP;
|
runner.action = ACT_STOP;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
runner.sprite.x = x * tileW + xOffset;
|
runner.sprite.x = (x * tileW + xOffset) * tileScale | 0;
|
||||||
runner.sprite.y = y * tileH + yOffset;
|
runner.sprite.y = (y * tileH + yOffset) * tileScale | 0;
|
||||||
runner.pos = { x:x, y:y, xOffset:xOffset, yOffset:yOffset};
|
runner.pos = { x:x, y:y, xOffset:xOffset, yOffset:yOffset};
|
||||||
if(curShape != newShape) {
|
if(curShape != newShape) {
|
||||||
runner.sprite.gotoAndPlay(newShape);
|
runner.sprite.gotoAndPlay(newShape);
|
||||||
@@ -339,7 +339,7 @@ function addGold(x, y)
|
|||||||
|
|
||||||
map[x][y].base = GOLD_T;
|
map[x][y].base = GOLD_T;
|
||||||
tile = map[x][y].bitmap = new createjs.Bitmap(preload.getResult("gold"));
|
tile = map[x][y].bitmap = new createjs.Bitmap(preload.getResult("gold"));
|
||||||
tile.setTransform(x * tileW, y * tileH,tileScale, tileScale); //x,y, scaleX, scaleY
|
tile.setTransform(x * tileWScale, y * tileHScale,tileScale, tileScale); //x,y, scaleX, scaleY
|
||||||
mainStage.addChild(tile);
|
mainStage.addChild(tile);
|
||||||
|
|
||||||
moveSprite2Top(); //reset runner, guard & fill hole object order
|
moveSprite2Top(); //reset runner, guard & fill hole object order
|
||||||
@@ -391,30 +391,21 @@ function checkCollision(runnerX, runnerY)
|
|||||||
if( guard[i].pos.x == x && guard[i].pos.y == y) break;
|
if( guard[i].pos.x == x && guard[i].pos.y == y) break;
|
||||||
}
|
}
|
||||||
assert( (i < guardCount), "checkCollision design error !");
|
assert( (i < guardCount), "checkCollision design error !");
|
||||||
if(guard[i].action != ACT_REBORN) {
|
if(guard[i].action != ACT_REBORN) { //only guard alive need check collection
|
||||||
var dw = Math.abs(runner.sprite.x - guard[i].sprite.x);
|
//var dw = Math.abs(runner.sprite.x - guard[i].sprite.x);
|
||||||
var dh = Math.abs(runner.sprite.y - guard[i].sprite.y);
|
//var dh = Math.abs(runner.sprite.y - guard[i].sprite.y);
|
||||||
//debug (" dw = " + dw +"(" + tileW + ") dh = " + dh + "(" + tileH + ")" );
|
|
||||||
/*
|
|
||||||
debug("runner:" + runner.pos.x + ","
|
|
||||||
+ runner.pos.y + ","
|
|
||||||
+ "guard:" + guard[i].pos.x + ","
|
|
||||||
+ guard[i].pos.y + ","
|
|
||||||
|
|
||||||
+ "runner:" + runner.pos.xOffset + ","
|
//change detect method ==> don't depend on scale
|
||||||
+ runner.pos.yOffset + ","
|
var runnerPosX = runner.pos.x*tileW+runner.pos.xOffset;
|
||||||
+ "guard:" + guard[i].pos.xOffset + ","
|
var runnerPosY = runner.pos.y*tileH+runner.pos.yOffset;
|
||||||
+ guard[i].pos.yOffset
|
var guardPosX = guard[i].pos.x*tileW+guard[i].pos.xOffset;
|
||||||
);
|
var guardPosY = guard[i].pos.y*tileH+guard[i].pos.yOffset;
|
||||||
*/
|
|
||||||
/*
|
var dw = Math.abs(runnerPosX - guardPosX);
|
||||||
if( Math.abs(runner.sprite.x - guard[i].sprite.x) < tileW &&
|
var dh = Math.abs(runnerPosY - guardPosY);
|
||||||
Math.abs(runner.sprite.y - guard[i].sprite.y) < tileH)
|
|
||||||
*/
|
if( dw <= W4*3 && dh <= H4*3 ) {
|
||||||
if( Math.abs(runner.sprite.x - guard[i].sprite.x) <= W4*3 &&
|
setRunnerDead(); //07/04/2014
|
||||||
Math.abs(runner.sprite.y - guard[i].sprite.y) <= H4*3 )
|
|
||||||
{
|
|
||||||
gameState = GAME_RUNNER_DEAD;
|
|
||||||
//debug("runner dead!");
|
//debug("runner dead!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -477,7 +468,7 @@ function digHole(action)
|
|||||||
holeObj.sprite.gotoAndPlay(holeShape);
|
holeObj.sprite.gotoAndPlay(holeShape);
|
||||||
holeObj.action = ACT_DIGGING;
|
holeObj.action = ACT_DIGGING;
|
||||||
holeObj.pos = { x: x, y: y };
|
holeObj.pos = { x: x, y: y };
|
||||||
holeObj.sprite.setTransform(x * tileW, y * tileH,tileScale, tileScale);
|
holeObj.sprite.setTransform(x * tileWScale, y * tileHScale,tileScale, tileScale);
|
||||||
|
|
||||||
// the callback is called each time a sequence completes:
|
// the callback is called each time a sequence completes:
|
||||||
holeObj.sprite.on("animationend", digComplete);
|
holeObj.sprite.on("animationend", digComplete);
|
||||||
@@ -567,7 +558,8 @@ function fillHole(x, y)
|
|||||||
{
|
{
|
||||||
var fillSprite = new createjs.Sprite(holeData, "fillHole");
|
var fillSprite = new createjs.Sprite(holeData, "fillHole");
|
||||||
|
|
||||||
fillSprite.setTransform(x * tileW, y * tileH,tileScale, tileScale);
|
fillSprite.pos = { x:x, y:y }; //save position 11/18/2014
|
||||||
|
fillSprite.setTransform(x * tileWScale, y * tileHScale, tileScale, tileScale);
|
||||||
fillSprite.on("animationend", fillComplete);
|
fillSprite.on("animationend", fillComplete);
|
||||||
fillSprite.play();
|
fillSprite.play();
|
||||||
mainStage.addChild(fillSprite);
|
mainStage.addChild(fillSprite);
|
||||||
@@ -583,8 +575,11 @@ function moveFillHoleObj2Top()
|
|||||||
|
|
||||||
function fillComplete()
|
function fillComplete()
|
||||||
{
|
{
|
||||||
var x = this.x / tileW | 0; //this : scope default to the dispatcher
|
//don't use "divide command", it will cause loss of accuracy while scale changed (ex: tileScale = 0.6...)
|
||||||
var y = this.y / tileH | 0;
|
//var x = this.x / tileWScale | 0; //this : scope default to the dispatcher
|
||||||
|
//var y = this.y / tileHScale | 0;
|
||||||
|
|
||||||
|
var x = this.pos.x, y = this.pos.y; //get position
|
||||||
|
|
||||||
map[x][y].bitmap.set({alpha:1}); //display block
|
map[x][y].bitmap.set({alpha:1}); //display block
|
||||||
this.removeAllEventListeners ("animationend");
|
this.removeAllEventListeners ("animationend");
|
||||||
@@ -597,7 +592,7 @@ function fillComplete()
|
|||||||
gameState = GAME_RUNNER_DEAD;
|
gameState = GAME_RUNNER_DEAD;
|
||||||
runner.sprite.set({alpha:0}); //hidden runner --> dead
|
runner.sprite.set({alpha:0}); //hidden runner --> dead
|
||||||
break;
|
break;
|
||||||
case GUARD_T:
|
case GUARD_T: //guard dead
|
||||||
var id = getGuardId(x,y);
|
var id = getGuardId(x,y);
|
||||||
if(guard[id].hasGold > 0) { //guard has gold and not fall into the hole
|
if(guard[id].hasGold > 0) { //guard has gold and not fall into the hole
|
||||||
decGold();
|
decGold();
|
||||||
@@ -625,3 +620,19 @@ function removeFillHoleObj(spriteObj)
|
|||||||
}
|
}
|
||||||
debug("removeFillHoleObj: design error!");
|
debug("removeFillHoleObj: design error!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==================================
|
||||||
|
// Check guard is alive or not
|
||||||
|
// 2014/10/31
|
||||||
|
//==================================
|
||||||
|
function guardAlive(x, y)
|
||||||
|
{
|
||||||
|
for(var i = 0; i < guardCount; i++) {
|
||||||
|
if( guard[i].pos.x == x && guard[i].pos.y == y) break;
|
||||||
|
}
|
||||||
|
assert( (i < guardCount), "guardAlive() design error !");
|
||||||
|
|
||||||
|
if(guard[i].action != ACT_REBORN) return 1; //alive
|
||||||
|
|
||||||
|
return 0; //reborn
|
||||||
|
}
|
||||||
@@ -37,6 +37,8 @@ value | Character | Type
|
|||||||
0x9 | & | Player
|
0x9 | & | Player
|
||||||
|
|
||||||
|
|
||||||
|
2014/10/18 add support dump Revenge_of_Lode_Runner disk
|
||||||
|
2014/10/18 add support c64 codes
|
||||||
**********************************************************************************/
|
**********************************************************************************/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -48,20 +50,29 @@ value | Character | Type
|
|||||||
#define READ_LEVEL_DATA_SIZE (256)
|
#define READ_LEVEL_DATA_SIZE (256)
|
||||||
#define ONE_LEVEL_DATA_SIZE (224)
|
#define ONE_LEVEL_DATA_SIZE (224)
|
||||||
|
|
||||||
#if 1
|
#define APPLE_DISK_NO (3)
|
||||||
|
|
||||||
|
#if (APPLE_DISK_NO == 1)
|
||||||
|
|
||||||
#define FILE_NAME "Lode_Runner_Apple-II.dsk"
|
#define FILE_NAME "Lode_Runner_Apple-II.dsk"
|
||||||
#define MAX_LEVEL (150)
|
#define MAX_LEVEL (150)
|
||||||
#define TITLE_NAME "Lode Runner (Apple-II 1983)"
|
#define TITLE_NAME "Lode Runner (Apple-II 1983)"
|
||||||
#define DATA_VAR_NAME "baseLevelData"
|
#define DATA_VAR_NAME "baseLevelData"
|
||||||
|
|
||||||
#else
|
#elif (APPLE_DISK_NO == 2)
|
||||||
|
|
||||||
#define FILE_NAME "Lode_Runner_Championship _Apple-II.dsk"
|
#define FILE_NAME "Lode_Runner_Championship _Apple-II.dsk"
|
||||||
#define MAX_LEVEL (50)
|
#define MAX_LEVEL (50)
|
||||||
#define TITLE_NAME "Championship Lode Runner (Apple-II 1984)"
|
#define TITLE_NAME "Championship Lode Runner (Apple-II 1984)"
|
||||||
#define DATA_VAR_NAME "champLevelData"
|
#define DATA_VAR_NAME "champLevelData"
|
||||||
|
|
||||||
|
#elif (APPLE_DISK_NO == 3)
|
||||||
|
|
||||||
|
#define FILE_NAME "Revenge_of_Lode_Runner.dsk"
|
||||||
|
#define MAX_LEVEL (25)
|
||||||
|
#define TITLE_NAME "Revenge of Lode Runner (Apple-II 1986)"
|
||||||
|
#define DATA_VAR_NAME "RevengeLevelData"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char tileType[] = {
|
char tileType[] = {
|
||||||
@@ -82,14 +93,18 @@ int goodLevel(unsigned char *levelData)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned char leftTile, rightTile;
|
unsigned char leftTile, rightTile;
|
||||||
|
int allZero = 1;
|
||||||
|
|
||||||
for(i = 0; i < ONE_LEVEL_DATA_SIZE; i++) {
|
for(i = 0; i < ONE_LEVEL_DATA_SIZE; i++) {
|
||||||
|
//levelData[i] = levelData[i] ^ 0xFF;
|
||||||
leftTile = levelData[i] & 0xF;
|
leftTile = levelData[i] & 0xF;
|
||||||
rightTile = levelData[i] >> 0x04;
|
rightTile = levelData[i] >> 0x04;
|
||||||
if(leftTile >= MAX_TILE_TYPE || rightTile >= MAX_TILE_TYPE) {
|
if(leftTile >= MAX_TILE_TYPE || rightTile >= MAX_TILE_TYPE) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if(leftTile != 0 || rightTile != 0) allZero = 0;
|
||||||
}
|
}
|
||||||
|
return !allZero;
|
||||||
return 1; //OK
|
return 1; //OK
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,13 +165,17 @@ int main(void)
|
|||||||
FILE *fp;
|
FILE *fp;
|
||||||
unsigned char levelData[READ_LEVEL_DATA_SIZE];
|
unsigned char levelData[READ_LEVEL_DATA_SIZE];
|
||||||
int curLevel = 0;
|
int curLevel = 0;
|
||||||
|
int readSize= 0, isGood;
|
||||||
|
unsigned long curPos = 0x3000L;
|
||||||
|
unsigned long dspPos = curPos;
|
||||||
|
int doubleError = 0;
|
||||||
|
|
||||||
if((fp = fopen(FILE_NAME, "r")) ==NULL) {
|
if((fp = fopen(FILE_NAME, "rb")) ==NULL) {
|
||||||
printf("Open file %d failed !\n", FILE_NAME);
|
printf("Open file \"%s\" failed !\n", FILE_NAME);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fseek(fp, 0x3000L, SEEK_SET) != 0) {
|
if(fseek(fp, curPos, SEEK_SET) != 0) {
|
||||||
printf("Fseek error ! @%d\n", __LINE__);
|
printf("Fseek error ! @%d\n", __LINE__);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return 1;
|
return 1;
|
||||||
@@ -165,13 +184,33 @@ int main(void)
|
|||||||
dumpTitle();
|
dumpTitle();
|
||||||
|
|
||||||
printf("var %s = [\n", DATA_VAR_NAME);
|
printf("var %s = [\n", DATA_VAR_NAME);
|
||||||
|
#ifdef C64
|
||||||
|
do {
|
||||||
|
#endif
|
||||||
while(curLevel < MAX_LEVEL &&
|
while(curLevel < MAX_LEVEL &&
|
||||||
fread(levelData, sizeof(char), READ_LEVEL_DATA_SIZE, fp) == READ_LEVEL_DATA_SIZE &&
|
(readSize = fread(levelData, sizeof(char), READ_LEVEL_DATA_SIZE, fp)) == READ_LEVEL_DATA_SIZE &&
|
||||||
goodLevel(levelData)
|
(isGood = goodLevel(levelData))
|
||||||
){
|
){
|
||||||
//dumpLevel(++curLevel, levelData);
|
//dumpLevel(++curLevel, levelData);
|
||||||
|
//printf("%x", dspPos);
|
||||||
dumpLevel4JavaScript(++curLevel, levelData);
|
dumpLevel4JavaScript(++curLevel, levelData);
|
||||||
|
dspPos += READ_LEVEL_DATA_SIZE;
|
||||||
|
doubleError=0;
|
||||||
}
|
}
|
||||||
|
#ifdef C64
|
||||||
|
doubleError++;
|
||||||
|
if(!isGood) {
|
||||||
|
curPos += 0x1500L;
|
||||||
|
dspPos = curPos;
|
||||||
|
if(fseek(fp, curPos, SEEK_SET) != 0) {
|
||||||
|
printf("Fseek error ! @%d\n", __LINE__);
|
||||||
|
fclose(fp);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else doubleError++;
|
||||||
|
} while(curLevel < MAX_LEVEL && doubleError <= 1);
|
||||||
|
#endif
|
||||||
printf("];\n");
|
printf("];\n");
|
||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
|||||||