dc96a5ac8d
(1) Modified for AI VERSION = 4
(1.1) When guard failing in hole, will drop gold before guard failing into hole totally
(1.2) Shake time extension when guard in hole.
NOW the runner can dig three hold for three guards and pass through them. (MUST quickly)
==> The behavior almost same as original lode runner (APPLE-II version).
Modified files: LodeRunner/lodeRunner.guard.js
(2) New Demo Data all ai_version = 4
modified files: lodeRunner.demoData1.js
(3) Slow down play speed:
//slow normal fast
change from speedMode = [15, 20, 25, 30, 35];
to speedMode = [14, 18, 23, 29, 35];
Modified files: lodeRunner.main.js
(4) Keep ai version don't overflow:
Modified files: lodeRunner.preload.js
626 lignes
22 KiB
JavaScript
626 lignes
22 KiB
JavaScript
var RUNNER_SPEED = 0.65;
|
|
var DIG_SPEED = 0.68; //for support champLevel, change DIG_SPEED and FILL_SPEED, 2014/04/12
|
|
var FILL_SPEED = 0.24;
|
|
var GUARD_SPEED = 0.3;
|
|
|
|
var FLASH_SPEED = 0.25; //for flash cursor (hi-score input mode)
|
|
|
|
var COVER_PROGRESS_BAR_H = 32;
|
|
var COVER_PROGRESS_UNDER_Y = 90;
|
|
var COVER_RUNNER_UNDER_Y = 136;
|
|
var COVER_SIDE_X = 56;
|
|
|
|
var SIGNET_UNDER_X = 30;
|
|
var SIGNET_UNDER_Y = 30;
|
|
|
|
//*********************
|
|
// preload cover page
|
|
//*********************
|
|
var coverBitmap, remakeBitmap, signetBitmap;
|
|
var helpObj, helpBitmap, editHelpBitmap;
|
|
var mainMenuIconBitmap, mainMenuIconObj;
|
|
var selectIconBitmap, selectIconObj;
|
|
var demoIconBitmap, demoIconObj;
|
|
var soundOnIconBitmap, soundOffIconBitmap, soundIconObj;
|
|
var helpIconBitmap, helpIconObj;
|
|
var infoObj, infoIconBitmap, infoIconObj;
|
|
var repeatActionOnIconBitmap, repeatActionOffIconBitmap, repeatActionIconObj;
|
|
var apple2IconBitmap, C64IconBitmap, themeIconObj;
|
|
var checkBitmap;
|
|
var returnBitmap, select1Bitmap, nextBitmap;
|
|
var yesBitmap, noBitmap;
|
|
var coverPageLoad;
|
|
|
|
function showLoadingPage()
|
|
{
|
|
var coverPageImages = [
|
|
{ src: "image/cover.png", id: "cover" },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/runner.png", id: "runner" }
|
|
];
|
|
|
|
coverPageLoad = new createjs.LoadQueue(true);
|
|
coverPageLoad.on("error", handleCoverPageError);
|
|
coverPageLoad.on("fileload", handleCoverPageFileLoad);
|
|
coverPageLoad.on("complete", handleCoverPageComplete);
|
|
coverPageLoad.loadManifest(coverPageImages);
|
|
|
|
function handleCoverPageError(e)
|
|
{
|
|
console.log("error", e);
|
|
}
|
|
|
|
function handleCoverPageFileLoad(e)
|
|
{
|
|
switch(e.item.id) {
|
|
case "cover":
|
|
addCover2Screen(e.result);
|
|
break;
|
|
case "runner":
|
|
createRunnerSpriteSheet(e.result);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function handleCoverPageComplete(e)
|
|
{
|
|
preloadResource();
|
|
}
|
|
|
|
function addCover2Screen(image)
|
|
{
|
|
coverBitmap = new createjs.Bitmap(image);
|
|
coverBitmap.setTransform(0, 0, tileScale, tileScale); //x,y, scaleX, scaleY
|
|
mainStage.addChild(coverBitmap);
|
|
mainStage.update();
|
|
}
|
|
}
|
|
|
|
function createRunnerSpriteSheet(runnerImage)
|
|
{
|
|
runnerData = new createjs.SpriteSheet({
|
|
images: [runnerImage],
|
|
|
|
frames: { regX:0, height: BASE_TILE_Y, regY:0, width: BASE_TILE_X},
|
|
|
|
animations: {
|
|
runRight: [0,2, "runRight", RUNNER_SPEED],
|
|
runLeft : [3,5, "runLeft", RUNNER_SPEED],
|
|
runUpDn : [6,7, "runUpDn", RUNNER_SPEED],
|
|
|
|
barRight: {
|
|
frames: [ 9, 10, 10, 11, 11 ],
|
|
next: "barRight",
|
|
speed: RUNNER_SPEED
|
|
},
|
|
|
|
barLeft: {
|
|
frames: [ 12, 13, 13, 14, 14 ],
|
|
next: "barLeft",
|
|
speed: RUNNER_SPEED
|
|
},
|
|
|
|
digRight: 15,
|
|
digLeft : 16,
|
|
|
|
fallRight : 8,
|
|
fallLeft: 17
|
|
}
|
|
});
|
|
}
|
|
|
|
//*****************************************************************************
|
|
//BEGIN of preload
|
|
//*****************************************************************************
|
|
var preload; //preload resource object
|
|
var firstPlay = 0;
|
|
|
|
var runnerData, guardData;
|
|
var holeData, holeObj = {};
|
|
var textData;
|
|
var countryFlagData;
|
|
|
|
var soundFall, soundDig, soundPass, soundEnding;
|
|
|
|
var themeImagePath = "image/Theme/";
|
|
var themeSoundPath = "sound/Theme/";
|
|
|
|
function preloadResource()
|
|
{
|
|
var runnerSprite = new createjs.Sprite(runnerData, "runRight");
|
|
var progress = new createjs.Shape();
|
|
var progressBorder = new createjs.Shape();
|
|
var percentTxt = new createjs.Text("0", (COVER_PROGRESS_BAR_H* tileScale) + "px Arial", "#FF0000");
|
|
|
|
var resource = [
|
|
{ src: "image/remake.png", id: "remake" },
|
|
{ src: "image/signet.png", id: "signet" },
|
|
|
|
{ src: themeImagePath + THEME_APPLE2 + "/empty.png", id: "empty" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/brick.png", id: "brick" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/block.png", id: "solid" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/ladder.png", id: "ladder" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/rope.png", id: "rope" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/trap.png", id: "trapBrick" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/hladder.png", id: "hladder" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/gold.png", id: "gold" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/guard1.png", id: "guard1" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/runner1.png", id: "runner1" + THEME_APPLE2 },
|
|
|
|
{ src: themeImagePath + THEME_APPLE2 + "/runner.png", id: "runner" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/guard.png", id: "guard" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/hole.png", id: "hole" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/ground.png", id: "ground" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/over.png", id: "over" + THEME_APPLE2 },
|
|
{ src: themeImagePath + THEME_APPLE2 + "/text.png", id: "text" + THEME_APPLE2 },
|
|
|
|
|
|
{ src: themeImagePath + THEME_C64 + "/empty.png", id: "empty" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/brick.png", id: "brick" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/block.png", id: "solid" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/ladder.png", id: "ladder" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/rope.png", id: "rope" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/trap.png", id: "trapBrick" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/hladder.png", id: "hladder" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/gold.png", id: "gold" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/guard1.png", id: "guard1" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/runner1.png", id: "runner1" + THEME_C64 },
|
|
|
|
{ src: themeImagePath + THEME_C64 + "/runner.png", id: "runner" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/guard.png", id: "guard" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/hole.png", id: "hole" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/ground.png", id: "ground" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/over.png", id: "over" + THEME_C64 },
|
|
{ src: themeImagePath + THEME_C64 + "/text.png", id: "text" + THEME_C64 },
|
|
|
|
{ src: "image/eraser.png", id: "eraser" },
|
|
|
|
{ src: "image/help.png", id: "help" },
|
|
{ src: "image/editHelp.png",id: "editHelp" },
|
|
//{ src: "image/demoHelp.png",id: "demoHelp" }, //replace by infoMenu, 5/14/2015
|
|
|
|
{ src: "image/menu.png", id: "menu" },
|
|
{ src: "image/select.png", id: "select" },
|
|
{ src: "image/check.png", id: "check" }, //check icon for select menu
|
|
|
|
{ src: "image/return.png", id: "return" },
|
|
{ src: "image/select1.png", id: "select1" },
|
|
{ src: "image/next.png", id: "next" },
|
|
|
|
{ src: "image/yes.png", id: "yes" },
|
|
{ src: "image/no.png", id: "no" },
|
|
|
|
{ src: "image/demo.png",id: "demo" },
|
|
|
|
{ src: "image/soundOn.png", id: "soundOn" },
|
|
{ src: "image/soundOff.png", id: "soundOff" },
|
|
|
|
{ src: "image/infoIcon.png", id: "infoIcon" },
|
|
{ src: "image/helpIcon.png", id: "helpIcon" },
|
|
|
|
{ src: "image/repeatOn.png", id: "repeatOn" },
|
|
{ src: "image/repeatOff.png", id: "repeatOff" },
|
|
|
|
{ src: "image/apple2.png", id: "apple2" },
|
|
{ src: "image/commodore64.png",id: "C64" },
|
|
|
|
{ src: "image/flags32.png", id: "flag" },
|
|
|
|
{ src: themeSoundPath + THEME_APPLE2 + "/born.ogg", id:"reborn" + THEME_APPLE2},
|
|
{ src: themeSoundPath + THEME_APPLE2 + "/dead.ogg", id:"dead" + THEME_APPLE2},
|
|
{ src: themeSoundPath + THEME_APPLE2 + "/dig.ogg", id:"dig" + THEME_APPLE2},
|
|
{ src: themeSoundPath + THEME_APPLE2 + "/getGold.ogg", id:"getGold" + THEME_APPLE2},
|
|
{ src: themeSoundPath + THEME_APPLE2 + "/fall.ogg", id:"fall" + THEME_APPLE2},
|
|
{ src: themeSoundPath + THEME_APPLE2 + "/down.ogg", id:"down" + THEME_APPLE2},
|
|
{ src: themeSoundPath + THEME_APPLE2 + "/pass.ogg", id:"pass" + THEME_APPLE2},
|
|
{ src: themeSoundPath + THEME_APPLE2 + "/trap.ogg", id:"trap" + THEME_APPLE2},
|
|
|
|
|
|
{ src: themeSoundPath + THEME_C64 + "/born.ogg", id:"reborn" + THEME_C64},
|
|
{ src: themeSoundPath + THEME_C64 + "/dead.ogg", id:"dead" + THEME_C64},
|
|
{ src: themeSoundPath + THEME_C64 + "/dig.ogg", id:"dig" + THEME_C64},
|
|
{ src: themeSoundPath + THEME_C64 + "/getGold.ogg", id:"getGold" + THEME_C64},
|
|
{ src: themeSoundPath + THEME_C64 + "/fall.ogg", id:"fall" + THEME_C64},
|
|
{ src: themeSoundPath + THEME_C64 + "/down.ogg", id:"down" + THEME_C64},
|
|
{ src: themeSoundPath + THEME_C64 + "/pass.ogg", id:"pass" + THEME_C64},
|
|
{ src: themeSoundPath + THEME_C64 + "/trap.ogg", id:"trap" + THEME_C64},
|
|
{ src: themeSoundPath + THEME_C64 + "/goldFinish1.ogg", id:"goldFinish1"},
|
|
{ src: themeSoundPath + THEME_C64 + "/goldFinish2.ogg", id:"goldFinish2"},
|
|
{ src: themeSoundPath + THEME_C64 + "/goldFinish3.ogg", id:"goldFinish3"},
|
|
{ src: themeSoundPath + THEME_C64 + "/goldFinish4.ogg", id:"goldFinish4"},
|
|
{ src: themeSoundPath + THEME_C64 + "/goldFinish5.ogg", id:"goldFinish5"},
|
|
{ src: themeSoundPath + THEME_C64 + "/goldFinish6.ogg", id:"goldFinish6"},
|
|
|
|
{ src: "sound/goldFinish.ogg", id:"goldFinish"},
|
|
{ src: "sound/ending.ogg", id:"ending"},
|
|
{ src: "sound/scoreBell.ogg", id:"scoreBell"},
|
|
{ src: "sound/scoreCount.ogg", id:"scoreCount"},
|
|
{ src: "sound/scoreEnding.ogg", id:"scoreEnding"},
|
|
|
|
{ src: "sound/beep.ogg", id:"beep"},
|
|
|
|
{ src: "cursor/openhand.cur", id:"openHand"}, //preload cursor
|
|
{ src: "cursor/closedhand.cur", id:"closeHand"}
|
|
|
|
];
|
|
|
|
preload = new createjs.LoadQueue(true);
|
|
createjs.Sound.alternateExtensions = ["mp3"];
|
|
preload.installPlugin(createjs.Sound);
|
|
preload.on("error", handleFileError);
|
|
preload.on("progress", handleProgress);
|
|
preload.on("complete", handleComplete);
|
|
|
|
preload.loadManifest(resource);
|
|
|
|
createjs.Ticker.setFPS(30);
|
|
var preloadTicker = createjs.Ticker.on("tick", mainStage);
|
|
|
|
//Set runner sprite size & position
|
|
runnerSprite.setTransform(COVER_SIDE_X* tileScale,
|
|
(BASE_SCREEN_Y - COVER_RUNNER_UNDER_Y)* tileScale,
|
|
tileScale,
|
|
tileScale);
|
|
runnerSprite.gotoAndPlay();
|
|
|
|
var width = canvas.width - 2*COVER_SIDE_X* tileScale;
|
|
var height = COVER_PROGRESS_BAR_H * tileScale;
|
|
|
|
//Set progress & progressborder size & position
|
|
progressBorder.graphics.beginStroke("gold").drawRect(0,0,width,height);
|
|
progress.x = progressBorder.x = COVER_SIDE_X * tileScale;
|
|
progress.y = progressBorder.y = (BASE_SCREEN_Y - COVER_PROGRESS_UNDER_Y) * tileScale;
|
|
|
|
//Set percentTxt position
|
|
percentTxt.x = (canvas.width - percentTxt.getBounds().width) / 2 | 0;
|
|
percentTxt.y = (BASE_SCREEN_Y - COVER_PROGRESS_UNDER_Y) * tileScale;
|
|
|
|
mainStage.addChild(runnerSprite, progress, progressBorder, percentTxt);
|
|
|
|
function handleFileError(event)
|
|
{
|
|
console.log("error", event);
|
|
}
|
|
|
|
function handleProgress(event)
|
|
{
|
|
progress.graphics.clear();
|
|
progress.graphics.beginFill("gold").drawRect(0,0,width*(event.loaded / event.total),height);
|
|
percentTxt.text = (100*(event.loaded / event.total)|0) + "%";
|
|
percentTxt.x = (canvas.width - percentTxt.getBounds().width) / 2 | 0;
|
|
}
|
|
|
|
function handleComplete(event)
|
|
{
|
|
percentTxt.text = "100%";
|
|
mainStage.update();
|
|
//// createPreloadSpriteSheet();
|
|
createSoundInstance();
|
|
setTimeout(clearLoadingInfo, 500);
|
|
}
|
|
|
|
/*
|
|
function createSoundInstance()
|
|
{
|
|
soundFall = createjs.Sound.createInstance("fall");
|
|
soundDig = createjs.Sound.createInstance("dig");
|
|
soundPass = createjs.Sound.createInstance("pass");
|
|
|
|
soundEnding = createjs.Sound.createInstance("ending");
|
|
|
|
}
|
|
*/
|
|
|
|
function clearLoadingInfo()
|
|
{
|
|
mainStage.removeChild(runnerSprite, progress, progressBorder, percentTxt);
|
|
showSignetBitmap();
|
|
mainStage.addChild(signetBitmap);
|
|
showRemakeBitmap();
|
|
mainStage.addChild(remakeBitmap);
|
|
mainStage.update();
|
|
}
|
|
|
|
function showSignetBitmap()
|
|
{
|
|
var x, y;
|
|
signetBitmap = new createjs.Bitmap(preload.getResult("signet"));
|
|
x = (BASE_SCREEN_X - SIGNET_UNDER_X - signetBitmap.getBounds().width )* tileScale;
|
|
y = (BASE_SCREEN_Y - SIGNET_UNDER_Y - signetBitmap.getBounds().height)* tileScale;
|
|
signetBitmap.setTransform(x, y, tileScale, tileScale); //x,y, scaleX, scaleY
|
|
signetBitmap.set({alpha:0.8});
|
|
createjs.Tween.get(signetBitmap).set({alpha:0.8}).to({alpha:1}, 500);
|
|
}
|
|
|
|
//create remake image
|
|
function showRemakeBitmap()
|
|
{
|
|
var x = 372 * tileScale;
|
|
var y = 128 * tileScale;
|
|
remakeBitmap = new createjs.Bitmap(preload.getResult("remake"));
|
|
remakeBitmap.setTransform(x, y, tileScale, tileScale); //x,y, scaleX, scaleY
|
|
remakeBitmap.rotation = -5;
|
|
remakeBitmap.set({alpha:0.6});
|
|
createjs.Tween.get(remakeBitmap).set({alpha:0.6}).to({alpha:1}, 800).call(preloadComplet);
|
|
}
|
|
|
|
function createHelpObj()
|
|
{
|
|
helpBitmap = new createjs.Bitmap(preload.getResult("help"));
|
|
editHelpBitmap = new createjs.Bitmap(preload.getResult("editHelp"));
|
|
//demoHelpBitmap = new createjs.Bitmap(preload.getResult("demoHelp")); //replace by infoMenu, 5/14/2015
|
|
|
|
helpObj = new helpMenuClass(mainStage, helpBitmap, editHelpBitmap, tileScale);
|
|
}
|
|
|
|
function createMenuBitmapIcon()
|
|
{
|
|
mainMenuIconBitmap = new createjs.Bitmap(preload.getResult("menu"));
|
|
mainMenuIconObj = new mainMenuIconClass(screenX1, screenY1, tileScale, mainMenuIconBitmap);
|
|
|
|
selectIconBitmap = new createjs.Bitmap(preload.getResult("select"));
|
|
selectIconObj = new selectIconClass(screenX1, screenY1, tileScale, selectIconBitmap);
|
|
|
|
demoIconBitmap = new createjs.Bitmap(preload.getResult("demo")); //04/18/2015
|
|
demoIconObj = new demoIconClass(screenX1, screenY1, tileScale, demoIconBitmap);
|
|
|
|
soundOnIconBitmap = new createjs.Bitmap(preload.getResult("soundOn")); //04/18/2015
|
|
soundOffIconBitmap = new createjs.Bitmap(preload.getResult("soundOff"));
|
|
soundIconObj = new soundIconClass(screenX1, screenY1, tileScale, soundOnIconBitmap, soundOffIconBitmap);
|
|
|
|
infoIconBitmap = new createjs.Bitmap(preload.getResult("infoIcon")); //05/12/2015
|
|
infoIconObj = new infoIconClass(screenX1, screenY1, tileScale, infoIconBitmap);
|
|
infoObj = new infoMenuClass(mainStage, tileScale);
|
|
|
|
helpIconBitmap = new createjs.Bitmap(preload.getResult("helpIcon")); //04/21/2015
|
|
helpIconObj = new helpIconClass(screenX1, screenY1, tileScale, helpIconBitmap);
|
|
|
|
repeatActionOnIconBitmap = new createjs.Bitmap(preload.getResult("repeatOn")); //05/17/2015
|
|
repeatActionOffIconBitmap = new createjs.Bitmap(preload.getResult("repeatOff"));
|
|
repeatActionIconObj = new repeatActionIconClass(screenX1, screenY1, tileScale, repeatActionOnIconBitmap, repeatActionOffIconBitmap);
|
|
|
|
apple2IconBitmap = new createjs.Bitmap(preload.getResult("apple2")); //04/18/2015
|
|
C64IconBitmap = new createjs.Bitmap(preload.getResult("C64"));
|
|
themeIconObj = new themeIconClass(screenX1, screenY1, tileScale, apple2IconBitmap, C64IconBitmap);
|
|
|
|
checkBitmap = new createjs.Bitmap(preload.getResult("check"));
|
|
|
|
returnBitmap = new createjs.Bitmap(preload.getResult("return"));
|
|
select1Bitmap = new createjs.Bitmap(preload.getResult("select1"));
|
|
nextBitmap = new createjs.Bitmap(preload.getResult("next"));
|
|
|
|
yesBitmap = new createjs.Bitmap(preload.getResult("yes"));
|
|
noBitmap = new createjs.Bitmap(preload.getResult("no"));
|
|
|
|
}
|
|
|
|
function preloadComplet()
|
|
{
|
|
createHelpObj();
|
|
createMenuBitmapIcon();
|
|
getFirstPlayInfo();
|
|
createjs.Ticker.off("tick", preloadTicker); //remove ticker of cover page
|
|
waitIdleDemo(4000); //wait user key or show demo level
|
|
}
|
|
}
|
|
|
|
function createSoundInstance()
|
|
{
|
|
soundFall = createjs.Sound.createInstance("fall" + curTheme);
|
|
soundDig = createjs.Sound.createInstance("dig" + curTheme);
|
|
soundPass = createjs.Sound.createInstance("pass" + curTheme);
|
|
|
|
soundEnding = createjs.Sound.createInstance("ending"); //for training mode only
|
|
|
|
}
|
|
|
|
//==============================
|
|
// 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
|
|
{ runnerSpeed: 0.8, guardSpeed: 0.4, digSpeed: 1, fillSpeed: 1, xMoveBase: 8, yMoveBase: 9 } //ver 3 & 4
|
|
];
|
|
|
|
var curAiVersion = AI_VERSION;
|
|
var maxGuard = MAX_NEW_GUARD;
|
|
function setSpeedByAiVersion()
|
|
{
|
|
var idx = (curAiVersion > spriteSpeed.length)?(spriteSpeed.length-1):(curAiVersion-1); //array index don't overflow
|
|
var speedObj = spriteSpeed[idx];
|
|
|
|
RUNNER_SPEED = speedObj.runnerSpeed;
|
|
GUARD_SPEED = speedObj.guardSpeed;
|
|
DIG_SPEED = speedObj.digSpeed;
|
|
FILL_SPEED = speedObj.fillSpeed;
|
|
|
|
xMove = speedObj.xMoveBase;
|
|
yMove = speedObj.yMoveBase;
|
|
|
|
//------------------------------------------------------------------------------------
|
|
// Change move policy for support LR FAN BOOK with one guard
|
|
// Original policy for one guard is [0, 1, 1] ==> 2/3 speed of runner
|
|
// while AI_VERSION >= 3 change policy to [ 0, 1, 0, 1, 0, 1 ] ==> 1/2 speed of runner
|
|
//------------------------------------------------------------------------------------
|
|
if(curAiVersion < 3) {
|
|
movePolicy[1] = [0, 1, 1, 0, 1, 1];
|
|
maxGuard = MAX_OLD_GUARD;
|
|
} else {
|
|
movePolicy[1] = [0, 1, 0, 1, 0, 1]; //slow down the guard when only one guard
|
|
maxGuard = MAX_NEW_GUARD; //change max guard
|
|
}
|
|
|
|
themeDataReset(); //4/16/2015
|
|
}
|
|
|
|
function themeDataReset()
|
|
{
|
|
createSoundInstance();
|
|
createSpriteSheet(); //base one theme & Ai Version
|
|
}
|
|
|
|
function getThemeImage(name)
|
|
{
|
|
return preload.getResult(name + curTheme);
|
|
}
|
|
|
|
function getThemeTileColor()
|
|
{
|
|
if(curTheme == THEME_APPLE2) return "#0DA1FF"; //APPLE II TILE COLOR
|
|
else return "#933A4C"; //C64 TILE COLOR
|
|
}
|
|
|
|
function createSpriteSheet()
|
|
{
|
|
//createRunnerSpriteSheet(coverPageLoad.getResult("runner"));
|
|
createRunnerSpriteSheet(getThemeImage("runner"));
|
|
createPreloadSpriteSheet();
|
|
createFlagSpriteSheet();
|
|
}
|
|
|
|
function createPreloadSpriteSheet()
|
|
{
|
|
guardData = new createjs.SpriteSheet({
|
|
images: [getThemeImage("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: [getThemeImage("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");
|
|
|
|
if(curAiVersion < 3) {
|
|
holeObj.digLimit = 6; //for check guard is close to runner when digging
|
|
} else {
|
|
holeObj.digLimit = 8; //for check guard is close to runner when digging
|
|
}
|
|
|
|
holeObj.action = ACT_STOP; //no digging
|
|
|
|
textData = new createjs.SpriteSheet({
|
|
images: [getThemeImage("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
|
|
"FLASH": { //42 & 43
|
|
frames: [42, 42, 42, 43, 43, 43],
|
|
next: "FLASH",
|
|
speed: FLASH_SPEED
|
|
},
|
|
"SPACE":43, "COLON":44, "UNDERLINE": 45,
|
|
"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
|
|
}
|
|
});
|
|
}
|
|
|
|
//=======================================
|
|
// country flag for demo info 5/14/2015
|
|
//=======================================
|
|
function createFlagSpriteSheet()
|
|
{
|
|
countryFlagData = new createjs.SpriteSheet({
|
|
images: [preload.getResult("flag")],
|
|
frames: {regX:0, height: 32, regY: 0, width: 32},
|
|
animations: countryId
|
|
});
|
|
} |