Frame 1
_root.gameLogic = new com.midasplayer.matchBlocks.GameLogic();
_root.gameView = new com.midasplayer.matchBlocks.GameView();
_root.gameLogic.setGameView(_root.gameView);
_root.gameLogic.init(_root.gameBoardBG.gameBoard);
_root.levelCounter.gotoAndStop(1);
_root._visible = false;
Symbol 43 MovieClip [summarySign_deluxe] Frame 1
this.sign.bob.gotoAndStop(1);
Symbol 43 MovieClip [summarySign_deluxe] Frame 36
this.sign.bob.gotoAndStop(2);
Symbol 43 MovieClip [summarySign_deluxe] Frame 93
this.sign.bob.gotoAndStop(3);
Symbol 43 MovieClip [summarySign_deluxe] Frame 154
this.sign.bob.gotoAndStop(4);
Symbol 43 MovieClip [summarySign_deluxe] Frame 200
this.sign.bob.gotoAndStop(4);
Symbol 50 MovieClip [cleared_row] Frame 26
this.removeMovieClip();
Symbol 63 MovieClip [scorepop] Frame 21
stop();
Symbol 65 MovieClip [scorefade] Frame 21
stop();
Symbol 268 MovieClip [summarySign] Frame 1
this.sign.bob.gotoAndStop(1);
Symbol 268 MovieClip [summarySign] Frame 36
this.sign.bob.gotoAndStop(2);
Symbol 268 MovieClip [summarySign] Frame 93
this.sign.bob.gotoAndStop(3);
Symbol 268 MovieClip [summarySign] Frame 154
this.sign.bob.gotoAndStop(4);
Symbol 268 MovieClip [summarySign] Frame 200
this.sign.bob.gotoAndStop(4);
Symbol 292 MovieClip [explosion] Frame 15
stop();
Symbol 297 MovieClip [block_99] Frame 1
stop();
Symbol 297 MovieClip [block_99] Frame 26
stop();
Symbol 297 MovieClip [block_99] Frame 51
stop();
Symbol 297 MovieClip [block_99] Frame 76
stop();
Symbol 297 MovieClip [block_99] Frame 101
stop();
Symbol 297 MovieClip [block_99] Frame 126
stop();
Symbol 297 MovieClip [block_99] Frame 151
stop();
Symbol 297 MovieClip [block_99] Frame 176
stop();
Symbol 297 MovieClip [block_99] Frame 201
stop();
Symbol 297 MovieClip [block_99] Frame 226
stop();
Symbol 335 MovieClip [instructionTextGold] Frame 120
removeMovieClip(this);
Symbol 337 MovieClip [instructionText] Frame 70
removeMovieClip(this);
Symbol 417 MovieClip Frame 1
stop();
Symbol 423 MovieClip Frame 25
stop();
Symbol 428 MovieClip Frame 1
stop();
this.wheel_front.stop();
this.wheel_back.stop();
Symbol 428 MovieClip Frame 2
this.wheel_front.play();
this.wheel_back.play();
Symbol 428 MovieClip Frame 50
this.wheel_front.stop();
this.wheel_back.stop();
_root.gameLogic.getInfoScreen().exit();
trace("infoScreenExit");
Symbol 428 MovieClip Frame 86
if (_root.gameLogic.getLevel() == 0) {
stop();
}
Symbol 428 MovieClip Frame 98
if (_root.gameLogic.getLevel() == 1) {
stop();
}
Symbol 428 MovieClip Frame 110
if (_root.gameLogic.getLevel() == 2) {
stop();
}
Symbol 433 MovieClip Frame 1
stop();
this.wheel_front.stop();
this.wheel_back.stop();
Symbol 433 MovieClip Frame 2
this.wheel_front.play();
this.wheel_back.play();
Symbol 433 MovieClip Frame 50
this.wheel_front.stop();
this.wheel_back.stop();
_root.gameLogic.getInfoScreen().exit();
trace("infoScreenExit");
Symbol 433 MovieClip Frame 75
stop();
Symbol 477 MovieClip Frame 1
stop();
Symbol 478 MovieClip Frame 30
stop();
Symbol 478 MovieClip Frame 60
stop();
Symbol 479 MovieClip [__Packages.com.midasplayer.gameCore.AbstractGameLogic] Frame 0
class com.midasplayer.gameCore.AbstractGameLogic
{
var m_gameMode, m_randomSeed, m_random, m_performanceTimer, m_performanceTimerName, m_scopeRef, m_resetTick, m_tickCount, m_gameState, m_gda, m_world, NUMBER_LEVELS, m_timeLimit, m_gameView, m_timeLeft, m_pendingStateStart, m_clientInput, m_infoScreen;
function AbstractGameLogic () {
}
function getGameMode() {
return(m_gameMode);
}
function setAchievement(achievement) {
m_hasAchievement = achievement;
}
function hasAchievement() {
return(m_hasAchievement);
}
function getSeed() {
return(m_randomSeed);
}
function getRandom() {
return(m_random);
}
function setTicksPerSecond(ticksPerSecond) {
TICKS_PER_SECOND = ticksPerSecond;
TIME_PER_TICK = 1000 / TICKS_PER_SECOND;
}
function getTicksPerSecond() {
return(TICKS_PER_SECOND);
}
function getTimePerTick() {
return(TIME_PER_TICK);
}
function isServer() {
return(SERVER);
}
function isClient() {
return(!SERVER);
}
function startPerformaceTimer(scope, functionName) {
if (!PERFORMANCE_LOG) {
return(undefined);
}
m_performanceTimer.insert(getTimer());
m_performanceTimerName.insert((scope + "::") + functionName);
}
function stopPerformaceTimer() {
if (!PERFORMANCE_LOG) {
return(undefined);
}
var _local3 = m_performanceTimer.size() - 1;
var _local6 = getTimer() - Number(m_performanceTimer.get(_local3));
var _local5 = String(m_performanceTimerName.get(_local3));
m_performanceTimer.removeByIndex(_local3);
m_performanceTimerName.removeByIndex(_local3);
var _local4 = "";
var _local2 = 0;
while (_local2 < _local3) {
_local4 = _local4 + "- ";
_local2++;
}
_local4 = _local4 + (((("[" + _local5) + "]:\t") + _local6) + " ms");
trace(_local4);
}
function init(scopeRef) {
m_scopeRef = scopeRef;
m_resetTick = true;
m_tickCount = 0;
m_lastTickTime = -1;
m_ipTime = 0;
m_gameState = com.midasplayer.gameCore.GameState.INSTRUCTIONS;
if (isClient()) {
m_gda = new com.midasplayer.util.GameDataAcquirer();
m_gda.beginWait(mx.utils.Delegate.create(this, setupGame));
}
m_world = new com.midasplayer.gameCore.World(this, getScopeRef());
onInit();
if (DEV) {
new com.midasplayer.util.FpsCounter(_root);
}
if (PERFORMANCE_LOG) {
m_performanceTimer = new com.midasplayer.util.ArrayList();
m_performanceTimerName = new com.midasplayer.util.ArrayList();
}
}
function getScopeRef() {
return(m_scopeRef);
}
function setupGame() {
m_gameMode = Number(m_gda.getGameData("gameMode"));
m_randomSeed = Number(m_gda.getGameData("randomSeed"));
m_random = new com.midasplayer.util.Random(m_randomSeed);
NUMBER_LEVELS = Number(m_gda.getGameData("numberLevels"));
m_timeLimit = new com.midasplayer.util.ArrayList(m_gda.getGameData("timeLimit"));
if (m_timeLimit.size() < NUMBER_LEVELS) {
var _local3 = Number(m_timeLimit.get(0));
m_timeLimit = new com.midasplayer.util.ArrayList();
var _local2 = 0;
while (_local2 < NUMBER_LEVELS) {
m_timeLimit.insert(_local3);
_local2++;
}
}
onSetGameData(m_gda);
parseClientInput();
getGameView().onInit();
m_scopeRef.onEnterFrame = mx.utils.Delegate.create(this, update);
}
function setGameView(gameView) {
m_gameView = gameView;
m_gameView.setGameLogic(this);
}
function getWorld() {
return(m_world);
}
function getGameLogic() {
return(this);
}
function getTickCount() {
return(m_tickCount);
}
function getIPTime() {
return(m_ipTime);
}
function getGameTime() {
return(getTickCount() * TIME_PER_TICK);
}
function getScore() {
return(m_score);
}
function setScore(score) {
m_score = Math.max(score, 0);
}
function addScore(score) {
m_score = Math.max(m_score + score, 0);
trace("Add score: " + score);
trace("-- Total score: " + m_score);
}
function getLevel() {
return(m_level);
}
function getNumberLevels() {
return(NUMBER_LEVELS);
}
function addTime(time) {
m_timeLeft = Math.max(m_timeLeft + time, 0);
}
function getTimeLeft() {
return(m_timeLeft);
}
function getTimePassed() {
return(m_timeLimit.get(getLevel()) - m_timeLeft);
}
function getTimeLeftPercent() {
return((getTimeLeft() / m_timeLimit.get(getLevel())) * 100);
}
function getState() {
return(m_gameState);
}
function getStateString() {
if (m_gameState == com.midasplayer.gameCore.GameState.INSTRUCTIONS) {
return("INSTRUCTIONS");
}
if (m_gameState == com.midasplayer.gameCore.GameState.GAME_START) {
return("GAME_START");
}
if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_SETUP) {
return("LEVEL_SETUP");
}
if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_START_PENDING) {
return("LEVEL_START_PENDING");
}
if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return("LEVEL_RUNNING");
}
if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_OVER_PENDING) {
return("LEVEL_OVER_PENDING");
}
if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_OVER) {
return("LEVEL_OVER");
}
if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) {
return("LEVEL_SUMMARY");
}
if (m_gameState == com.midasplayer.gameCore.GameState.GAME_OVER_PENDING) {
return("GAME_OVER_PENDING");
}
if (m_gameState == com.midasplayer.gameCore.GameState.GAME_OVER) {
return("GAME_OVER");
}
if (m_gameState == com.midasplayer.gameCore.GameState.GAME_SUMMARY) {
return("GAME_SUMMARY");
}
if (m_gameState == com.midasplayer.gameCore.GameState.GAME_QUIT) {
return("GAME_QUIT");
}
return("NONE");
}
function setState(state) {
m_gameState = state;
if (((state == com.midasplayer.gameCore.GameState.LEVEL_START_PENDING) || (state == com.midasplayer.gameCore.GameState.LEVEL_OVER_PENDING)) || (state == com.midasplayer.gameCore.GameState.GAME_OVER_PENDING)) {
m_pendingStateStart = getTickCount();
}
}
function getPendingStateDurationStart() {
return(m_pendingStateDuration[0]);
}
function getPendingStateDurationEnd() {
return(m_pendingStateDuration[1]);
}
function setPendingStateDuration(durationStart, durationEnd) {
m_pendingStateDuration[0] = durationStart;
m_pendingStateDuration[1] = durationEnd;
}
function isPractice() {
return(PRACTICE_GAME);
}
function isDev() {
return(DEV);
}
function isLocalGame() {
return(LOCAL_GAME);
}
function update() {
checkForServerResponse();
if (m_gameState == com.midasplayer.gameCore.GameState.NONE) {
trace("INVALID GAME STATE!!");
} else if (m_gameState == com.midasplayer.gameCore.GameState.INSTRUCTIONS) {
getGameLogic().updateInfoScreen();
} else if (m_gameState == com.midasplayer.gameCore.GameState.GAME_START) {
fscommand ("gameStart");
setState(com.midasplayer.gameCore.GameState.LEVEL_SETUP);
} else if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_SETUP) {
trace("-- State: SETUP");
m_resetTick = true;
m_timeLeft = Number(m_timeLimit.get(getLevel()));
onLevelSetup();
getGameView().onLevelSetup();
setState(com.midasplayer.gameCore.GameState.LEVEL_START_PENDING);
} else if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_START_PENDING) {
checkPendingState();
gameLoop();
} else if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
gameLoop();
} else if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_OVER_PENDING) {
checkPendingState();
gameLoop();
} else if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_OVER) {
trace("-- State: LEVEL_OVER");
onLevelOver();
m_level++;
if (m_level >= NUMBER_LEVELS) {
setState(com.midasplayer.gameCore.GameState.GAME_OVER);
} else {
setState(com.midasplayer.gameCore.GameState.LEVEL_SUMMARY);
}
} else if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) {
getGameLogic().updateInfoScreen();
} else if (m_gameState == com.midasplayer.gameCore.GameState.GAME_OVER_PENDING) {
checkPendingState();
gameLoop();
} else if (m_gameState == com.midasplayer.gameCore.GameState.GAME_OVER) {
trace("-- State: GAME_OVER");
setState(com.midasplayer.gameCore.GameState.GAME_SUMMARY);
fscommand ("gameEnd", m_score);
trace("gameEnd: " + m_score);
} else if (m_gameState == com.midasplayer.gameCore.GameState.GAME_SUMMARY) {
getGameLogic().updateInfoScreen();
} else if (m_gameState == com.midasplayer.gameCore.GameState.GAME_QUIT) {
if (!_sentGameQuit) {
_sentGameQuit = true;
fscommand ("gameQuit");
}
}
}
function completeLevel() {
if (getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return(undefined);
}
setState(com.midasplayer.gameCore.GameState.LEVEL_OVER_PENDING);
onCompleteLevel();
getGameView().onCompleteLevel();
}
function gameOver() {
if (getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return(undefined);
}
setState(com.midasplayer.gameCore.GameState.GAME_OVER_PENDING);
onGameOver();
getGameView().onGameOver();
}
function checkPendingState() {
if (((m_gameState == com.midasplayer.gameCore.GameState.LEVEL_START_PENDING) || (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_OVER_PENDING)) || (m_gameState == com.midasplayer.gameCore.GameState.GAME_OVER_PENDING)) {
var _local3 = ((m_gameState == com.midasplayer.gameCore.GameState.LEVEL_START_PENDING) ? (m_pendingStateDuration[0]) : (m_pendingStateDuration[1]));
if (getTickCount() >= (m_pendingStateStart + _local3)) {
var _local2 = com.midasplayer.gameCore.GameState.NONE;
if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_START_PENDING) {
_local2 = com.midasplayer.gameCore.GameState.LEVEL_RUNNING;
} else if (m_gameState == com.midasplayer.gameCore.GameState.LEVEL_OVER_PENDING) {
_local2 = com.midasplayer.gameCore.GameState.LEVEL_OVER;
} else if (m_gameState == com.midasplayer.gameCore.GameState.GAME_OVER_PENDING) {
_local2 = com.midasplayer.gameCore.GameState.GAME_OVER;
}
setState(_local2);
}
}
}
function gameLoop() {
if (m_resetTick) {
m_resetTick = false;
m_lastTickTime = getTimer();
}
var _local2 = 0;
for(;;){
calcIPTime();
if (m_ipTime < 1) {
break;
}
tickGame();
if ((((getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) && (getState() != com.midasplayer.gameCore.GameState.LEVEL_START_PENDING)) && (getState() != com.midasplayer.gameCore.GameState.LEVEL_OVER_PENDING)) && (getState() != com.midasplayer.gameCore.GameState.GAME_OVER_PENDING)) {
break;
}
if (_local2 >= 1000) {
trace("Infinite recursions or intolerable delay in gameLoop");
break;
}
if (getGameLogic().isDev() && (_local2 > 1)) {
break;
}
_local2++;
};
renderGame();
}
function calcIPTime() {
if (isServer()) {
m_ipTime = 1;
} else if (isClient()) {
m_ipTime = (getTimer() - m_lastTickTime) / TIME_PER_TICK;
}
}
function handleInput() {
if ((m_clientInput.size() > 0) && (getState() == com.midasplayer.gameCore.GameState.LEVEL_RUNNING)) {
var _local2;
do {
if ((m_clientInput == undefined) || (m_clientInput.size() == 0)) {
break;
}
_local2 = com.midasplayer.gameCore.ClientInput(m_clientInput.get(0));
var _local3 = _local2.getTick();
if (_local3 == getTickCount()) {
var _local4 = false;
_local4 = onHandleInput(_local2);
if (!_local4) {
trace("ClientInput NOT handled correctly. " + _local2.toString());
}
m_clientInput.removeByIndex(0);
} else if (_local3 < getTickCount()) {
trace((("ClientInput skipped! InputTick: " + _local3) + " Tick: ") + getTickCount());
}
} while ((_local2 != undefined) && (_local2.getTick() == getTickCount()));
}
}
function tickGame() {
handleInput();
getWorld().tick();
onTick();
getGameView().onTick();
m_lastTickTime = m_lastTickTime + TIME_PER_TICK;
m_tickCount++;
calcIPTime();
checkPendingState();
if (getState() == com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
m_timeLeft = m_timeLeft - TIME_PER_TICK;
if (getTimeLeft() <= 0) {
if (onLevelTimeUp()) {
completeLevel();
} else {
gameOver();
}
}
}
}
function renderGame() {
var _local2 = getIPTime();
getWorld().render(_local2);
onRender(_local2);
getGameView().onRender(_local2);
}
function sendRequest(request) {
request = request.split("<").join("<");
request = request.split(">").join(">");
request = request.split(""").join("\"");
fscommand ("request", request);
}
function sendPlaydata(playData) {
if (PRACTICE_GAME) {
return(undefined);
}
fscommand ("playData", playData);
trace("playData: " + playData);
}
function checkForServerResponse() {
if (_root.response != undefined) {
var _local3 = _root.response;
_root.response = undefined;
_local3 = _local3.split("<").join("<");
_local3 = _local3.split(">").join(">");
_local3 = _local3.split(""").join("\"");
onResponseReceived(_local3);
}
}
function trimArray(arrayList) {
var _local2 = 0;
while (_local2 < arrayList.size()) {
var _local1 = String(arrayList.get(_local2));
if (_local1.charAt(0) == " ") {
_local1 = _local1.substr(1);
}
if (_local1.charAt(_local1.length) == " ") {
_local1 = _local1.substring(0, _local1.length - 1);
}
arrayList.set(_local2, _local1);
_local2++;
}
}
function trace(string) {
if (isClient()) {
trace(string);
var _local2 = getScopeRef().debug_text;
_local2.text = (string + newline) + _local2.text;
if (!DEV) {
_local2._visible = false;
}
} else if (isServer()) {
}
}
function getInfoScreen() {
return(m_infoScreen);
}
function updateInfoScreen() {
var _local2 = getState();
if (m_infoScreen == undefined) {
m_infoScreen = new com.midasplayer.gameCore.InfoScreen();
var _local3 = com.midasplayer.gameCore.GameState.NONE;
if (_local2 == com.midasplayer.gameCore.GameState.INSTRUCTIONS) {
_local3 = com.midasplayer.gameCore.GameState.GAME_START;
} else if (_local2 == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) {
_local3 = com.midasplayer.gameCore.GameState.LEVEL_SETUP;
} else if (_local2 == com.midasplayer.gameCore.GameState.GAME_SUMMARY) {
_local3 = com.midasplayer.gameCore.GameState.GAME_QUIT;
}
m_infoScreen.setExitState(this, _local3);
m_gameView.onInitInfoScreen(m_infoScreen, _local2);
}
m_infoScreen.update();
m_gameView.onUpdateInfoScreen(m_infoScreen, _local2);
}
function infoScreenExit() {
var _local2 = m_infoScreen.getExitState();
setState(_local2);
m_infoScreen = undefined;
}
function addWorldObject(obj, worldLayer, symbol, clipName) {
return(getWorld().addWorldObject(obj, worldLayer, symbol, clipName));
}
function parseClientInput() {
var _local2 = _level0.playData;
m_clientInput = com.midasplayer.gameCore.ClientInput.parseInput(_local2);
}
function setClientInput(clientInputList) {
m_clientInput = clientInputList;
}
function getGameView() {
return(m_gameView);
}
function onSetGameData(gda) {
var _local2 = "onSetGameData";
trace(("~~ " + _local2) + "()");
}
function onResponseReceived(response) {
var _local2 = "onResponseReceived";
trace(("~~ " + _local2) + "()");
}
function onLevelSetup() {
var _local2 = "onLevelSetup";
trace(("~~ " + _local2) + "()");
}
function onLevelTimeUp() {
var _local2 = "onLevelTimeUp";
trace(("~~ " + _local2) + "()");
return(false);
}
function onLevelOver() {
var _local2 = "onLevelOver";
trace(("~~ " + _local2) + "()");
}
function onCompleteLevel() {
var _local2 = "onCompleteLevel";
trace(("~~ " + _local2) + "()");
}
function onGameOver() {
var _local2 = "onGameOver";
trace(("~~ " + _local2) + "()");
}
function onInit() {
var _local2 = "onInit";
trace(("~~ " + _local2) + "()");
}
function onTick() {
var _local1 = "onTick";
}
function onRender(ipTime) {
var _local1 = "onRender";
}
function onHandleInput(input) {
return(false);
}
static var PRACTICE_GAME = false;
static var DEV = false;
static var LOCAL_GAME = false;
static var PERFORMANCE_LOG = false;
static var GAME_MODE_NORMAL = 0;
static var GAME_MODE_SHORT = 1;
static var GAME_MODE_DELUXE = 2;
var _sentGameQuit = false;
var m_pendingStateDuration = new Array(0, 0);
var m_lastTickTime = -1;
var m_ipTime = 0;
var m_score = 0;
var m_level = 0;
var m_hasAchievement = false;
static var TICKS_PER_SECOND = 4;
static var TIME_PER_TICK = 1000 / TICKS_PER_SECOND;
var SERVER = false;
}
Symbol 480 MovieClip [__Packages.com.midasplayer.gameCore.World] Frame 0
class com.midasplayer.gameCore.World
{
var m_scopeRef, m_gameLogic, m_clip, m_layers, m_worldObjects, m_worldObjectRemove;
function World (gameLogic, scope) {
m_scopeRef = scope;
m_gameLogic = gameLogic;
m_clip = m_scopeRef.createEmptyMovieClip("world", m_scopeRef.getNextHighestDepth());
m_clip._x = WORLD_OFFSET_X;
m_clip._y = WORLD_OFFSET_Y;
m_layers = new com.midasplayer.util.ArrayList();
m_worldObjects = new com.midasplayer.util.ArrayList();
m_worldObjectRemove = new com.midasplayer.util.ArrayList();
}
function getGameLogic() {
return(m_gameLogic);
}
function getClip() {
return(m_clip);
}
function render(ipTime) {
var _local3 = m_worldObjects.size();
var _local2 = 0;
while (_local2 < _local3) {
m_worldObjects.get(_local2).render(ipTime);
_local2++;
}
}
function tick() {
var _local5 = m_worldObjects.size();
var _local2 = 0;
while (_local2 < _local5) {
m_worldObjects.get(_local2).update();
_local2++;
}
_local2 = 0;
while (_local2 < _local5) {
m_worldObjects.get(_local2).onTick();
_local2++;
}
var _local4 = 0;
while (_local4 < m_worldObjectRemove.size()) {
_local2 = 0;
while (_local2 < m_worldObjects.size()) {
var _local3 = com.midasplayer.gameCore.WorldObject(m_worldObjects.get(_local2));
if (_local3.getObjId() == m_worldObjectRemove.get(_local4)) {
_local3.getObjectView().getClip().removeMovieClip();
_local3.onRemovedFromWorld();
m_worldObjects.removeByIndex(_local2);
break;
}
_local2++;
}
_local4++;
}
if (m_worldObjectRemove.size() > 0) {
m_worldObjectRemove.clear();
}
}
function getLayer(layer) {
if (m_layers.size() <= layer) {
var _local2 = m_layers.size();
while (_local2 <= layer) {
addLayer();
_local2++;
}
}
return(MovieClip(m_layers.get(layer)));
}
function addLayer() {
m_layers.insert(getClip().createEmptyMovieClip("layer_" + m_layers.size(), getClip().getNextHighestDepth()));
return(m_layers.size());
}
function addWorldObject(obj, worldLayer, symbol, clipName) {
var _local3 = m_worldObjectIdCounter;
m_worldObjectIdCounter++;
obj.setObjId(_local3);
m_worldObjects.insert(obj);
addWorldObjectHelper(obj, symbol, worldLayer, clipName);
return(obj);
}
function addWorldObjectHelper(obj, symbol, worldLayer, clipName) {
obj.setGameLogic(m_gameLogic);
obj.setWorld(this);
obj.getObjectView().setClip(symbol, worldLayer, clipName);
obj.onAddedToWorld();
}
function clearWorldObjects() {
var _local2 = 0;
while (_local2 < m_worldObjects.size()) {
var _local3 = com.midasplayer.gameCore.WorldObject(m_worldObjects.get(_local2));
_local3.getObjectView().getClip().removeMovieClip();
_local3.onRemovedFromWorld();
_local2++;
}
m_worldObjects.clear();
}
function removeWorldObject(obj) {
m_worldObjectRemove.insert(obj.getObjId());
obj.getObjectView().setClip("");
}
function getAllWorldObjects() {
return(m_worldObjects);
}
function getWorldObject(objId) {
var _local2 = 0;
while (_local2 < m_worldObjects.size()) {
var _local3 = m_worldObjects[_local2];
if (_local3.getObjId() == objId) {
return(com.midasplayer.gameCore.WorldObject(m_worldObjects.get(_local2)));
}
_local2++;
}
return(undefined);
}
static var WORLD_EDGE_TOP = 0;
static var WORLD_EDGE_BOTTOM = 345;
static var WORLD_EDGE_LEFT = 0;
static var WORLD_EDGE_RIGHT = 460;
static var WORLD_OFFSET_X = 80;
static var WORLD_OFFSET_Y = 0;
var m_worldObjectIdCounter = 0;
}
Symbol 481 MovieClip [__Packages.com.midasplayer.util.ArrayList] Frame 0
class com.midasplayer.util.ArrayList
{
var value;
function ArrayList (ar) {
if (ar == undefined) {
value = new Array();
} else {
value = ar;
}
}
function insert(obj, pos) {
var _local2 = value.length;
if ((pos == undefined) || (pos >= _local2)) {
value.push(obj);
return(_local2);
}
value.splice(pos, 0, obj);
return(pos);
}
function get(pos) {
return(value[pos]);
}
function set(pos, o) {
value[pos] = o;
}
function indexOf(obj) {
var _local2 = 0;
while (_local2 < value.length) {
if (obj == value[_local2]) {
return(_local2);
}
_local2++;
}
return(-1);
}
function remove(obj) {
return(removeByIndex(indexOf(obj)));
}
function removeByIndex(pos) {
var _local2;
var _local4 = value.length;
if ((pos < _local4) && (pos >= 0)) {
_local2 = value[pos];
value.splice(pos, 1);
}
return(_local2);
}
function size() {
return(value.length);
}
function clear() {
value = new Array();
}
function toArray() {
return(value);
}
function foreach(fn) {
var _local2 = 0;
var _local3 = value.length;
while (_local2 < _local3) {
if (fn(_local2, value[_local2]) == false) {
break;
}
_local2++;
}
}
function sortOn(field) {
value.sortOn(field);
}
function sort() {
value.sort();
}
function get iterator() {
return(new com.midasplayer.util.ArrayListIterator(this));
}
function subList(from, to) {
if ((to > value.length) || (!to)) {
to = value.length;
}
var _local4 = value.slice(from, to);
var _local3 = new com.midasplayer.util.ArrayList(_local4);
return(_local3);
}
}
Symbol 482 MovieClip [__Packages.com.midasplayer.util.Iterator] Frame 0
interface com.midasplayer.util.Iterator
{
}
Symbol 483 MovieClip [__Packages.com.midasplayer.util.ArrayListIterator] Frame 0
class com.midasplayer.util.ArrayListIterator implements com.midasplayer.util.Iterator
{
var ptr, list;
function ArrayListIterator (list) {
ptr = 0;
this.list = list;
}
function next() {
if (ptr < list.size()) {
return(list.get(ptr++));
}
return(undefined);
}
function hasNext() {
return(ptr < list.size());
}
function remove() {
if (ptr == 0) {
return(undefined);
}
list.removeByIndex(ptr - 1);
}
}
Symbol 484 MovieClip [__Packages.com.midasplayer.gameCore.WorldObject] Frame 0
class com.midasplayer.gameCore.WorldObject
{
var DEFAULT_SYMBOL, m_animFrame, m_posX, m_posY, m_rotation, m_scaleX, m_scaleY, m_alpha, m_visible, m_objectView, m_gameLogic, m_world, m_parent;
function WorldObject (defaultSymbol) {
if ((defaultSymbol != undefined) && (defaultSymbol != "")) {
DEFAULT_SYMBOL = defaultSymbol;
}
m_animFrame = new com.midasplayer.gameCore.InterpolationValue(1);
m_posX = new com.midasplayer.gameCore.InterpolationValue(0);
m_posY = new com.midasplayer.gameCore.InterpolationValue(0);
m_rotation = new com.midasplayer.gameCore.InterpolationValue(0);
m_scaleX = new com.midasplayer.gameCore.InterpolationValue(100);
m_scaleY = new com.midasplayer.gameCore.InterpolationValue(100);
m_alpha = new com.midasplayer.gameCore.InterpolationValue(100);
m_visible = new Array();
m_visible.push(true);
m_visible.push(true);
if (m_objectView != undefined) {
deleteObjectView();
}
m_objectView = createObjectView();
getObjectView().setObject(this);
}
function deleteObjectView() {
delete m_objectView;
}
function setDefaultSymbol(symbol) {
DEFAULT_SYMBOL = symbol;
}
function getDefaultSymbol() {
return(DEFAULT_SYMBOL);
}
function setObjId(id) {
m_objectId = id;
}
function getObjId() {
return(m_objectId);
}
function setGameLogic(gameLogic) {
m_gameLogic = gameLogic;
}
function getGameLogic() {
return(m_gameLogic);
}
function setWorld(world) {
m_world = world;
}
function getWorld() {
return(m_world);
}
function removeFromWorld() {
m_world.removeWorldObject(this);
}
function setPerformCollision(collision) {
m_performCollision = collision;
}
function getPerformCollision() {
return(m_performCollision);
}
function setPhysicsEnabled(physics) {
m_physicsEnabled = physics;
}
function isPhysicsEnabled() {
return(m_physicsEnabled);
}
function setAnimated(animated) {
m_animated = animated;
}
function isAnimated() {
return(m_animated);
}
function animPlay() {
m_playing = true;
}
function animStop() {
m_playing = false;
}
function isAnimPlaying() {
return(m_playing);
}
function setAnimLooping(loop) {
m_looping = loop;
}
function isAnimLooping() {
return(m_looping);
}
function setPlaybackSpeed(speed) {
m_playbackSpeed = speed;
}
function getPlaybackSpeed() {
return(m_playbackSpeed);
}
function setFrame(frame) {
m_animFrame.setValue(frame);
}
function getFrame(ipTime) {
return(m_animFrame.getValue(ipTime));
}
function setParent(parent) {
m_parent = parent;
}
function getParent() {
return(m_parent);
}
function setX(x) {
m_posX.setValue(x);
getObjectView().makeDirty();
}
function setY(y) {
m_posY.setValue(y);
getObjectView().makeDirty();
}
function setPos(x, y) {
setX(x);
setY(y);
}
function setPrevX(x) {
m_posX.setPrevValue(x);
getObjectView().makeDirty();
}
function setPrevY(y) {
m_posY.setPrevValue(y);
getObjectView().makeDirty();
}
function setNextX(x) {
m_posX.setNextValue(x);
getObjectView().makeDirty();
}
function setNextY(y) {
m_posY.setNextValue(y);
getObjectView().makeDirty();
}
function setVelX(vel) {
m_posVelocityX = vel;
}
function setVelY(vel) {
m_posVelocityY = vel;
}
function setVel(vel) {
m_posVelocityX = vel.x;
m_posVelocityY = vel.y;
}
function addVelX(vel) {
m_posVelocityX = m_posVelocityX + vel;
}
function addVelY(vel) {
m_posVelocityY = m_posVelocityY + vel;
}
function setGravity(vel) {
m_gravity = vel;
}
function setRotation(rot) {
m_rotation.setValue(rot);
getObjectView().makeDirty();
}
function setRotationVel(vel) {
m_rotationVelocity = vel;
}
function addRotationVel(vel) {
m_rotationVelocity = m_rotationVelocity + vel;
}
function setScaleX(scale) {
m_scaleX.setValue(scale);
getObjectView().makeDirty();
}
function setNextScaleX(scale) {
m_scaleX.setNextValue(scale);
getObjectView().makeDirty();
}
function setScaleXVel(vel) {
m_scaleXVelocity = vel;
}
function setScaleY(scale) {
m_scaleY.setValue(scale);
getObjectView().makeDirty();
}
function setNextScaleY(scale) {
m_scaleY.setNextValue(scale);
getObjectView().makeDirty();
}
function setScaleYVel(vel) {
m_scaleYVelocity = vel;
}
function setAlpha(alpha) {
m_alpha.setValue(alpha);
getObjectView().makeDirty();
}
function setNextAlpha(alpha) {
m_alpha.setNextValue(alpha);
getObjectView().makeDirty();
}
function setAlphaVel(vel) {
m_alphaVelocity = vel;
}
function setVisible(visible) {
m_visible[0] = (m_visible[1] = visible);
}
function setNextVisible(visible) {
m_visible[1] = visible;
}
function getX(ipTime) {
return(m_posX.getValue(ipTime));
}
function getY(ipTime) {
return(m_posY.getValue(ipTime));
}
function getPos(ipTime) {
return(new com.midasplayer.util.Vec2D(m_posX.getValue(ipTime), m_posY.getValue(ipTime)));
}
function getVelX() {
return(m_posVelocityX);
}
function getVelY() {
return(m_posVelocityY);
}
function getVel() {
return(new com.midasplayer.util.Vec2D(m_posVelocityX, m_posVelocityY));
}
function getGravity() {
return(m_gravity);
}
function getRotation(ipTime) {
return(m_rotation.getValue(ipTime));
}
function getRotationVel() {
return(m_rotationVelocity);
}
function getScaleX(ipTime) {
return(m_scaleX.getValue(ipTime));
}
function getScaleXVel() {
return(m_scaleXVelocity);
}
function getScaleY(ipTime) {
return(m_scaleY.getValue(ipTime));
}
function getScaleYVel() {
return(m_scaleYVelocity);
}
function getAlpha(ipTime) {
return(m_alpha.getValue(ipTime));
}
function getAlphaVel() {
return(m_alphaVelocity);
}
function getVisible(ipTime) {
if (ipTime < 1) {
return(m_visible[0]);
}
return(m_visible[1]);
}
function setDestroyTick(tick) {
m_destroyTick = tick;
}
function getDestroyTick() {
return(m_destroyTick);
}
function getUseHandCursor() {
return(m_useHandCursor);
}
function setUseHandCursor(useHand) {
m_useHandCursor = useHand;
getObjectView().updateHandCursor();
}
function setInputEnabled(input) {
m_inputEnabled = input;
getObjectView().setupInput();
}
function isInputEnabled(input) {
return((input & m_inputEnabled) == input);
}
function updatePhysics() {
}
function isDirty() {
return(m_dirty);
}
function updateIPValue(ipValue, vel) {
ipValue.updateValue(ipValue.getNextValue() + vel);
m_dirty = true;
}
function update() {
if ((m_destroyTick != -1) && (m_gameLogic.getTickCount() >= m_destroyTick)) {
m_world.removeWorldObject(this);
}
if (m_physicsEnabled) {
m_posVelocityY = m_posVelocityY + m_gravity;
}
m_dirty = false;
if (m_posVelocityX != 0) {
updateIPValue(m_posX, m_posVelocityX);
}
if (m_posVelocityY != 0) {
updateIPValue(m_posY, m_posVelocityY);
}
if (m_rotationVelocity != 0) {
updateIPValue(m_rotation, m_rotationVelocity);
}
if (m_alphaVelocity != 0) {
updateIPValue(m_alpha, m_alphaVelocity);
}
if (m_scaleXVelocity != 0) {
updateIPValue(m_scaleX, m_scaleXVelocity);
}
if (m_scaleYVelocity != 0) {
updateIPValue(m_scaleY, m_scaleYVelocity);
}
if (m_visible[0] != m_visible[1]) {
m_visible[0] = m_visible[1];
m_dirty = true;
}
if (m_animated && (m_playing)) {
var _local5 = m_animFrame.getNextValue() + m_playbackSpeed;
m_animFrame.updateValue(_local5);
var _local4 = m_animFrame.getPrevValue();
var _local3 = getObjectView().getFrames();
if (_local4 > _local3) {
if (!m_looping) {
m_animFrame.setValue(_local3);
animStop();
} else {
var _local2 = getObjectView().getFrames();
m_animFrame.setNextValue(m_animFrame.getNextValue() - _local2);
m_animFrame.setPrevValue(m_animFrame.getPrevValue() - _local2);
}
}
}
}
function render(ipTime) {
m_objectView.render(ipTime);
}
function createObjectView() {
return(new com.midasplayer.gameCore.WorldObjectView());
}
function getObjectView() {
return(m_objectView);
}
function onMouseEvent() {
}
function onPress() {
}
function onRelease() {
}
function onRollOver() {
}
function onRollOut() {
}
function onDragOver() {
}
function onDragOut() {
}
function onClipLoaded() {
}
function onAddedToWorld() {
}
function onRemovedFromWorld() {
}
function onTick() {
}
static var INPUT_NONE = 0;
static var INPUT_MOUSE_PRESS = 1;
static var INPUT_MOUSE_RELEASE = 2;
static var INPUT_MOUSE_ROLL_OVER = 4;
static var INPUT_MOUSE_ROLL_OUT = 8;
static var INPUT_MOUSE_DRAG_OVER = 16;
static var INPUT_MOUSE_DRAG_OUT = 32;
var m_objectId = -1;
var m_inputEnabled = 0;
var m_worldLayer = 0;
var m_useHandCursor = false;
var m_performCollision = false;
var m_physicsEnabled = true;
var m_animated = false;
var m_playing = true;
var m_looping = true;
var m_playbackSpeed = 0.2;
var m_posVelocityX = 0;
var m_posVelocityY = 0;
var m_gravity = 0;
var m_rotationVelocity = 0;
var m_scaleXVelocity = 0;
var m_scaleYVelocity = 0;
var m_alphaVelocity = 0;
var m_destroyTick = -1;
var m_dirty = false;
}
Symbol 485 MovieClip [__Packages.com.midasplayer.gameCore.WorldObjectView] Frame 0
class com.midasplayer.gameCore.WorldObjectView
{
var m_object, m_clip;
function WorldObjectView () {
}
function isDirty() {
return(m_dirty);
}
function makeDirty() {
m_dirty = true;
}
function setObject(worldObject) {
m_object = worldObject;
}
function getClip() {
return(m_clip);
}
function gotoAndStop(frame) {
getClip().gotoAndStop(frame);
}
function getFrames() {
return(getClip()._framesloaded);
}
function setClip(symbol, worldLayer, clipName) {
if (symbol == undefined) {
symbol = getObject().getDefaultSymbol();
}
if (worldLayer != undefined) {
m_worldLayer = worldLayer;
}
if ((clipName == undefined) || (clipName == null)) {
clipName = (symbol + "_") + getObject().getObjId();
}
var _local5 = getObject().getWorld().getLayer(m_worldLayer);
var _local3 = _local5.getNextHighestDepth();
if (m_clip != undefined) {
_local3 = m_clip.getDepth();
m_clip.removeMovieClip();
}
if (symbol == SYMBOL_EMPTY_MOVIECLIP) {
m_clip = _local5.createEmptyMovieClip(clipName, _local3);
} else if (symbol != "") {
m_clip = _local5.attachMovie(symbol, clipName, _local3);
if (m_clip == undefined) {
trace(((((("Falied to attach clip: " + symbol) + " for objId: ") + getObject().getObjId()) + " Symbol: '") + symbol) + "'");
}
} else {
m_clip = undefined;
}
m_clip._visible = false;
updateHandCursor();
makeDirty();
getObject().setFrame(1);
if (getObject().isAnimated()) {
m_clip.stop();
}
getObject().onClipLoaded();
onClipLoaded();
setupInput();
}
function updateHandCursor() {
getClip().useHandCursor = getObject().getUseHandCursor();
}
function setupInput() {
if (getObject().isInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_PRESS)) {
getClip().onPress = mx.utils.Delegate.create(this, onPress);
} else {
getClip().onPress = undefined;
}
if (getObject().isInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_RELEASE)) {
getClip().onRelease = mx.utils.Delegate.create(this, onRelease);
} else {
getClip().onRelease = undefined;
}
if (getObject().isInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_ROLL_OVER)) {
getClip().onRollOver = mx.utils.Delegate.create(this, onRollOver);
} else {
getClip().onRollOver = undefined;
}
if (getObject().isInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_ROLL_OUT)) {
getClip().onRollOut = mx.utils.Delegate.create(this, onRollOut);
} else {
getClip().onRollOut = undefined;
}
if (getObject().isInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_DRAG_OVER)) {
getClip().onDragOver = mx.utils.Delegate.create(this, onDragOver);
} else {
getClip().onDragOver = undefined;
}
if (getObject().isInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_DRAG_OUT)) {
getClip().onDragOut = mx.utils.Delegate.create(this, onDragOut);
} else {
getClip().onDragOut = undefined;
}
}
function isMouseOver() {
return(m_mouseOver);
}
function onPress() {
m_object.onPress();
m_object.onMouseEvent();
}
function onRelease() {
m_object.onRelease();
m_object.onMouseEvent();
}
function onRollOver() {
m_mouseOver = true;
m_object.onRollOver();
m_object.onMouseEvent();
}
function onRollOut() {
m_mouseOver = false;
m_object.onRollOut();
m_object.onMouseEvent();
}
function onDragOver() {
m_mouseOver = true;
m_object.onDragOver();
m_object.onMouseEvent();
}
function onDragOut() {
m_mouseOver = false;
m_object.onDragOut();
m_object.onMouseEvent();
}
function render(ipTime) {
if (m_clip == undefined) {
return(undefined);
}
var _local2 = getObject();
if ((!m_dirty) && (_local2.isDirty())) {
makeDirty();
}
if (m_dirty) {
m_clip._x = _local2.getX(ipTime);
m_clip._y = _local2.getY(ipTime);
m_clip._rotation = _local2.getRotation(ipTime);
m_clip._xscale = _local2.getScaleX(ipTime);
m_clip._yscale = _local2.getScaleY(ipTime);
m_clip._alpha = _local2.getAlpha(ipTime);
m_clip._visible = _local2.getVisible(ipTime);
m_dirty = false;
}
}
function getGameLogic() {
return(getObject().getGameLogic());
}
function getObject() {
return(m_object);
}
function onClipLoaded() {
}
static var SYMBOL_EMPTY_MOVIECLIP = "____symbol_empty_movieclip";
var m_mouseOver = false;
var m_worldLayer = 0;
var m_dirty = false;
}
Symbol 486 MovieClip [__Packages.mx.utils.Delegate] Frame 0
class mx.utils.Delegate extends Object
{
var func;
function Delegate (f) {
super();
func = f;
}
static function create(obj, func) {
var _local2 = function () {
var _local2 = arguments.callee.target;
var _local3 = arguments.callee.func;
return(_local3.apply(_local2, arguments));
};
_local2.target = obj;
_local2.func = func;
return(_local2);
}
function createDelegate(obj) {
return(create(obj, func));
}
}
Symbol 487 MovieClip [__Packages.com.midasplayer.gameCore.InterpolationValue] Frame 0
class com.midasplayer.gameCore.InterpolationValue
{
function InterpolationValue (startValue) {
if (startValue != undefined) {
setValue(startValue);
}
}
function getPrevValue() {
return(m_prevValue);
}
function getNextValue() {
return(m_nextValue);
}
function setValue(valueParam) {
setPrevValue(valueParam);
setNextValue(valueParam);
}
function setPrevValue(valueParam) {
m_prevValue = valueParam;
}
function setNextValue(valueParam) {
m_nextValue = valueParam;
}
function setWaypointValue(valueParam, IPparam) {
m_waypointValue = valueParam;
m_waypointIP = IPparam;
}
function clearWaypoint() {
m_waypointIP = -1;
}
function updateValue(valueParam) {
setPrevValue(getNextValue());
setNextValue(valueParam);
}
function getValue(ipTime) {
if (((ipTime == undefined) || (ipTime == 1)) || (m_prevValue == m_nextValue)) {
return(m_nextValue);
}
if (ipTime == 0) {
return(m_prevValue);
}
if ((m_waypointIP > 0) && (m_waypointIP < 1)) {
if (ipTime == m_waypointIP) {
return(m_waypointValue);
}
if (ipTime < m_waypointIP) {
return(m_prevValue + ((m_waypointValue - m_prevValue) * (ipTime / m_waypointIP)));
}
if (ipTime > m_waypointIP) {
return(m_waypointValue + (((m_nextValue - m_waypointValue) * (ipTime - m_waypointIP)) / (1 - m_waypointIP)));
}
}
return(m_prevValue + ((m_nextValue - m_prevValue) * ipTime));
}
var m_prevValue = 0;
var m_nextValue = 0;
var m_waypointValue = 0;
var m_waypointIP = -1;
}
Symbol 488 MovieClip [__Packages.com.midasplayer.util.Vec2D] Frame 0
class com.midasplayer.util.Vec2D
{
function Vec2D (x, y) {
if (x != undefined) {
this.x = x;
}
if (y != undefined) {
this.y = y;
}
}
function toString() {
return(((("<" + x) + ", ") + y) + ">");
}
function addition(vec) {
return(new com.midasplayer.util.Vec2D(x + vec.x, y + vec.y));
}
function subtract(vec) {
return(new com.midasplayer.util.Vec2D(x - vec.x, y - vec.y));
}
function multiply(scalar) {
return(new com.midasplayer.util.Vec2D(x * scalar, y * scalar));
}
function divide(scalar) {
return(new com.midasplayer.util.Vec2D(x / scalar, y / scalar));
}
function normalize() {
return(divide(length()));
}
function length() {
return(Math.sqrt(lengthSqr()));
}
function lengthSqr() {
return(Math.pow(x, 2) + Math.pow(y, 2));
}
function dot(vec) {
return((x * vec.x) + (y * vec.y));
}
function project(vec) {
var _local4 = dot(vec);
var _local3 = new com.midasplayer.util.Vec2D();
_local3.x = (_local4 / ((vec.x * vec.x) + (vec.y * vec.y))) * vec.x;
_local3.y = (_local4 / ((vec.x * vec.x) + (vec.y * vec.y))) * vec.y;
return(_local3);
}
var x = 0;
var y = 0;
}
Symbol 489 MovieClip [__Packages.com.midasplayer.gameCore.AbstractGameView] Frame 0
class com.midasplayer.gameCore.AbstractGameView
{
var m_gameLogic;
function AbstractGameView () {
}
function setGameLogic(gameLogic) {
m_gameLogic = gameLogic;
}
function getGameLogic() {
return(m_gameLogic);
}
function onInitInfoScreen(infoScreen, currentState) {
}
function onUpdateInfoScreen(infoScreen, currentState) {
}
function onInit() {
}
function onLevelSetup() {
}
function onCompleteLevel() {
}
function onGameOver() {
}
function onTick() {
}
function onRender(ipTime) {
}
}
Symbol 490 MovieClip [__Packages.com.midasplayer.gameCore.GameState] Frame 0
class com.midasplayer.gameCore.GameState
{
function GameState () {
}
static var NONE = -1;
static var INSTRUCTIONS = 0;
static var GAME_START = 1;
static var LEVEL_SETUP = 2;
static var LEVEL_START_PENDING = 3;
static var LEVEL_RUNNING = 4;
static var LEVEL_OVER_PENDING = 5;
static var LEVEL_OVER = 6;
static var LEVEL_SUMMARY = 7;
static var GAME_OVER_PENDING = 8;
static var GAME_OVER = 9;
static var GAME_SUMMARY = 10;
static var GAME_QUIT = 11;
}
Symbol 491 MovieClip [__Packages.com.midasplayer.gameCore.InfoScreen] Frame 0
class com.midasplayer.gameCore.InfoScreen
{
var m_okButtonText, m_clip, m_okButton, m_gameLogic, m_soundIdentifier;
function InfoScreen () {
m_okButtonText = com.midasplayer.util.I18n.getString("start");
}
function setDeleteOnExit(deleteOnExit) {
m_deleteOnExit = deleteOnExit;
}
function deleteOnExit() {
return(m_deleteOnExit);
}
function getTimePassed() {
return(m_expireTime - m_timeRemaining);
}
function getTimeRemaining() {
return(m_timeRemaining);
}
function setTimeRemaining(time) {
m_timeRemaining = time;
}
function setFps(fps) {
m_fps = fps;
}
function setLooping(looping) {
m_looping = looping;
}
function getClip() {
return(m_clip);
}
function init(parent, symbol, expireTime) {
if (symbol == undefined) {
symbol = DEFAULT_SYMBOL;
}
if (expireTime != undefined) {
m_expireTime = expireTime;
}
m_clip = parent.attachMovie(symbol, symbol + "_infoscreen", parent.getNextHighestDepth());
setOkButton(m_clip[SIGN_NAME].ok_button);
setExpireTime(expireTime);
m_startTime = getTimer();
}
function setClip(clip) {
m_clip = clip;
}
function setOkButton(okButton) {
m_okButton = okButton;
m_okButton.onPress = mx.utils.Delegate.create(this, exit);
m_okButton.onRollOver = mx.utils.Delegate.create(this, okButtonRollOver);
m_okButton.onRollOut = mx.utils.Delegate.create(this, okButtonRollOut);
}
function okButtonRollOver() {
m_okButton.gotoAndStop(2);
updateButtonText();
}
function okButtonRollOut() {
m_okButton.gotoAndStop(1);
updateButtonText();
}
function setPos(x, y) {
m_clip._x = x;
m_clip._y = y;
}
function setExitState(gameLogic, exitState) {
m_gameLogic = gameLogic;
m_exitState = exitState;
}
function getExitState() {
return(m_exitState);
}
function setExpireTime(expireTime) {
m_expireTime = expireTime;
m_startTime = getTimer();
m_timeRemaining = expireTime;
m_lastTimer = getTimer();
}
function setSound(sound, soundVolume) {
m_soundIdentifier = sound;
com.midasplayer.fx.SoundManager.play(m_soundIdentifier, soundVolume);
}
function setButtonText(textValue) {
m_okButtonText = textValue;
}
function setSignText(textFieldName, textValue) {
m_clip[SIGN_NAME][textFieldName].text = textValue;
}
function setText(textFieldName, textValue) {
m_clip[textFieldName].text = textValue;
}
function setElementVisible(name, visible) {
m_clip[name]._visible = visible;
}
function updateButtonText() {
m_okButton.text.text = m_okButtonText;
}
function update() {
if (m_clip == undefined) {
exit();
return(undefined);
}
var _local5 = (getTimer() - m_lastTimer) / 1000;
m_lastTimer = getTimer();
m_timeRemaining = m_timeRemaining - _local5;
var _local7 = m_okButtonText;
var _local4 = m_clip[SIGN_NAME][TIMER_NAME];
if (_local4 != undefined) {
_local4.gotoAndStop(m_timeRemaining - 1);
}
updateButtonText();
if (m_timeRemaining <= 0) {
exit();
}
if (m_fps != 0) {
var _local3 = m_clip;
var _local6 = (getTimer() - m_startTime) / 1000;
var _local2 = Math.floor(_local6 * m_fps);
if (m_looping) {
_local2 = (_local2 % _local3._framesloaded) + 1;
} else if (_local2 > _local3._framesloaded) {
_local2 = _local3._framesloaded;
}
_local3.gotoAndStop(_local2);
}
}
function exit() {
if (deleteOnExit() && (m_clip != undefined)) {
m_clip._visible = false;
m_clip.removeMovieClip();
trace("delete movie " + m_clip);
}
if (m_soundIdentifier != undefined) {
com.midasplayer.fx.SoundManager.stop(m_soundIdentifier);
}
m_gameLogic.infoScreenExit();
}
static var DEFAULT_SYMBOL = "info_screen";
static var SIGN_NAME = "sign";
static var ANIM_NAME = "anim";
static var TIMER_NAME = "timer";
static var OK_BUTTON_TEXT = "ok_button_text";
var m_startTime = -1;
var m_lastTimer = -1;
var m_expireTime = 10;
var m_exitState = com.midasplayer.gameCore.GameState.NONE;
var m_deleteOnExit = true;
var m_timeRemaining = -1;
var m_fps = 0;
var m_looping = true;
}
Symbol 492 MovieClip [__Packages.com.midasplayer.util.I18n] Frame 0
class com.midasplayer.util.I18n
{
static var lang;
function I18n () {
}
static function init(newLang) {
lang = newLang;
}
static function getString(name) {
var _local1 = lang.get(name);
if (_local1 == undefined) {
return(("{" + name) + "}");
}
return(_local1.toString());
}
}
Symbol 493 MovieClip [__Packages.com.midasplayer.util.Map] Frame 0
class com.midasplayer.util.Map
{
var map, lastSize;
function Map (init) {
map = new Object();
for (var _local3 in init) {
map["@" + _local3] = init[_local3];
}
lastSize = -1;
}
function put(key, value) {
map["@" + key] = value;
lastSize = -1;
}
function get(key) {
return(map["@" + key]);
}
function remove(key) {
var _local2 = map["@" + key];
delete map["@" + key];
lastSize = -1;
return(_local2);
}
function count() {
if (lastSize < 0) {
lastSize = 0;
for (var _local2 in map) {
lastSize++;
}
}
return(lastSize);
}
function size() {
return(count());
}
function clear() {
map = {};
lastSize = 0;
}
function dump() {
var _local2 = "";
for (var _local3 in map) {
_local2 = _local2 + (((_local3 + "=>") + map[_local3]) + newline);
}
trace(_local2);
}
function toArray() {
var _local2 = [];
for (var _local3 in map) {
_local2[_local2.length] = map[_local3];
}
return(_local2);
}
function keySet() {
var _local2 = [];
for (var _local3 in map) {
_local2[_local2.length] = _local3.substring(1);
}
return(_local2);
}
function foreach(fn) {
do {
if ((in map) == null) {
break;
}
var _local3 = in map;
} while (fn(_local3.substring(1), map[_local3]) != false);
do {
} while ("foreach" != null);
lastSize = -1;
}
}
Symbol 494 MovieClip [__Packages.com.midasplayer.fx.SoundManager] Frame 0
class com.midasplayer.fx.SoundManager
{
function SoundManager () {
}
static function parseGroup(group) {
return(((group == undefined) ? (DEFAULT_GROUP) : (group)));
}
static function addSoundGroup(group) {
var _local1 = soundEnabledMap.get(group);
if (_local1 == undefined) {
soundEnabledMap.put(group, {groupEnabled:isSoundEnabled(DEFAULT_GROUP)});
}
}
static function isSoundEnabled(group) {
group = parseGroup(group);
var _local1 = soundEnabledMap.get(group).groupEnabled;
if (_local1 == undefined) {
_local1 = true;
}
return(_local1);
}
static function enableSounds(enabled, group) {
group = parseGroup(group);
addSoundGroup(group);
var _local2 = (soundEnabledMap.get(group).groupEnabled = enabled);
trace(((("soundEnabled: " + isSoundEnabled(group)) + " '") + group) + "'");
if (!enabled) {
muteAll(group);
} else {
restoreMuteAll(group);
}
}
static function stopAll(group) {
sounds.foreach(function (name, soundEntry) {
soundEntry.sound.stop();
soundEntry.playStatus = false;
});
}
static function muteAll(group) {
group = parseGroup(group);
sounds.foreach(function (name, soundEntry) {
if (soundEntry.group == group) {
soundEntry.sound.setVolume(0);
}
});
}
static function restoreMuteAll(group) {
group = parseGroup(group);
sounds.foreach(function (name, soundEntry) {
if (soundEntry.group == group) {
soundEntry.sound.setVolume(soundEntry.realVol);
}
});
}
static function stop(resource) {
var _local1 = sounds.get(resource);
if (_local1 != undefined) {
_local1.sound.stop();
_local1.playStatus = false;
}
}
static function getCalibratedVolume(flashVolume) {
flashVolume = Math.min(100, flashVolume);
flashVolume = Math.max(0, flashVolume);
return(Math.ceil(Math.pow(flashVolume / 100, 1.46) * 100));
}
static function setVolume(resource, percent) {
var _local1 = sounds.get(resource);
if ((_local1 != undefined) && (_local1.playStatus == true)) {
var _local2 = getCalibratedVolume(percent);
_local1.sound.setVolume(_local2);
_local1.sound.volume = _local2;
}
}
static function isPlaying(resource) {
var _local1 = sounds.get(resource);
return((_local1 != undefined) && (_local1.playStatus == true));
}
static function play(resource, volume, isLoop, group) {
if (volume == undefined) {
volume = 100;
}
if (isLoop == undefined) {
isLoop = false;
}
volume = getCalibratedVolume(volume);
var _local1 = sounds.get(resource);
if (_local1 == undefined) {
_local1 = loadResource(resource, group);
}
if (_local1 != undefined) {
_local1.sound.setVolume((isSoundEnabled(_local1.group) ? (volume) : 0));
_local1.realVol = volume;
_local1.playStatus = true;
_local1.sound.start(0, (isLoop ? 32767 : 1));
}
}
static function loadResource(resource, group) {
group = parseGroup(group);
addSoundGroup(group);
var _local3 = _root.getNextHighestDepth();
var _local2 = new Sound(_root.createEmptyMovieClip("sm_sndhold_" + _local3, _local3));
_local2.attachSound(resource);
_local2.onSoundComplete = function () {
var _local1 = com.midasplayer.fx.SoundManager.sounds.get(resource);
_local1.playStatus = false;
};
sounds.put(resource, {realVol:100, sound:_local2, playStatus:true, group:group});
return(sounds.get(resource));
}
static var DEFAULT_GROUP = "default";
static var sounds = new com.midasplayer.util.Map();
static var soundEnabledMap = new com.midasplayer.util.Map();
}
Symbol 495 MovieClip [__Packages.com.midasplayer.util.GameDataAcquirer] Frame 0
class com.midasplayer.util.GameDataAcquirer
{
var attrib, multiplayerAttrib, trees, targetVar, dataEvent, timerFn, timer, error;
function GameDataAcquirer (variable) {
attrib = new com.midasplayer.util.Map();
multiplayerAttrib = new com.midasplayer.util.Map();
trees = new com.midasplayer.util.Map();
if (variable != undefined) {
targetVar = variable;
} else {
targetVar = "gameData";
}
}
function beginWait(fn) {
dataEvent = fn;
timerFn = function (caller) {
var _local1 = _level0[caller.targetVar];
if (((_local1 != undefined) && (_local1 != null)) && (_local1.length > 0)) {
caller.parse(_local1);
if (caller.dataEvent != undefined) {
caller.dataEvent();
}
caller.dataEvent = undefined;
clearInterval(caller.timer);
}
};
timer = setInterval(timerFn, 100, this);
}
function poll() {
if (!parsed) {
var _local2 = _level0[targetVar];
if (((_local2 != undefined) && (_local2 != null)) && (_local2.length > 0)) {
parse(_local2);
parsed = true;
return(true);
}
}
return(false);
}
function getAttributes() {
return(attrib);
}
function getSubTrees(name) {
return(trees.get(name));
}
function getGameData(name) {
return(attrib.get(name));
}
function getMultiplayerData(name) {
return(multiplayerAttrib.get(name));
}
function parse(data) {
attrib.clear();
var _local8 = new com.midasplayer.util.Map();
var _local10 = new XML();
_local10.ignoreWhite = true;
_local10.parseXML(data);
var _local4 = _local10.firstChild;
if (_local4.nodeName != "gamedata") {
error = "Bad XML (expected <gamedata>)";
return(undefined);
}
for (var _local9 in _local4.attributes) {
var _local5;
var _local2 = _local4.attributes[_local9];
if ((_local2.indexOf("[") == 0) && ((_local5 = _local2.indexOf("]")) != -1)) {
_local2 = _local2.substring(1, _local5);
if (_local2.indexOf(",") != -1) {
_local2 = _local2.split(",");
} else {
var _local7 = _local2;
_local2 = new Array();
_local2.push(_local7);
}
}
attrib.put(_local9, _local2);
}
for (var _local9 in _local4.childNodes) {
var _local3 = _local4.childNodes[_local9];
switch (_local3.nodeName) {
case "text" :
_local8.put(_local3.attributes.id, _local3.firstChild.nodeValue);
break;
case "multiplayer" :
for (var _local9 in _local3.attributes) {
multiplayerAttrib.put(_local9, _local3.attributes[_local9]);
}
break;
default :
var _local6;
_local6 = trees.get(_local3.nodeName);
if (_local6 == undefined) {
trees.put(_local3.nodeName, [_local3]);
} else {
_local6.push(_local3);
}
}
}
trace("parse(): completed");
com.midasplayer.util.I18n.init(_local8);
}
var parsed = false;
}
Symbol 496 MovieClip [__Packages.com.midasplayer.util.Random] Frame 0
class com.midasplayer.util.Random
{
var mta, mti, lastSeed;
function Random (aSeed) {
mta = new Array(N);
mti = N + 1;
if (aSeed != undefined) {
init_genrand(aSeed);
}
}
function setSeed(s) {
init_genrand(s);
}
function getSeed() {
return(lastSeed);
}
function nextInt(n) {
return((genrand_int32() & 2147483647) % n);
}
function nextFloat() {
return(next(24) / 16777216);
}
function nextDouble() {
return(next(24) / 16777216);
}
function next(bits) {
if (bits < 32) {
return(genrand_int32() & ((1 << bits) - 1));
}
return(genrand_int32());
}
function init_genrand(s) {
s = int(s);
trace("Random::init_genrand(): seed=" + s);
var _local5 = getTimer();
lastSeed = s;
mta[0] = s;
var _local2 = s;
var _local3 = new com.midasplayer.util.Integer64();
mti = 1;
while (mti < N) {
_local3.init32((_local2 >>> 30) ^ _local2);
_local3.mulu32(1812433253);
_local2 = (mta[mti] = int(_local3.lsb + mti));
mti++;
}
var _local6 = getTimer();
trace(("Random::init_genrand(): initialization ~" + (_local6 - _local5)) + "ms");
}
function genrand_int32() {
var _local3 = 0;
if (mti >= N) {
if (mti == (N + 1)) {
init_genrand(5489);
}
var _local4 = getTimer();
var _local2 = 0;
_local2 = 0;
while (_local2 < (N - M)) {
_local3 = (mta[_local2] & UPPER_MASK) | (mta[_local2 + 1] & LOWER_MASK);
mta[_local2] = (mta[_local2 + M] ^ (_local3 >>> 1)) ^ mag01[_local3 & 1];
_local2++;
}
while (_local2 < (N - 1)) {
_local3 = (mta[_local2] & UPPER_MASK) | (mta[_local2 + 1] & LOWER_MASK);
mta[_local2] = (mta[_local2 + (M - N)] ^ (_local3 >>> 1)) ^ mag01[_local3 & 1];
_local2++;
}
_local3 = (mta[N - 1] & UPPER_MASK) | (mta[0] & LOWER_MASK);
mta[N - 1] = (mta[M - 1] ^ (_local3 >>> 1)) ^ mag01[_local3 & 1];
mti = 0;
var _local5 = getTimer();
trace(((("Random::genrand_int32(): precalc " + N) + " new numbers ~") + (_local5 - _local4)) + "ms");
}
_local3 = mta[mti++];
_local3 = _local3 ^ (_local3 >>> 11);
_local3 = _local3 ^ ((_local3 << 7) & 2636928640);
_local3 = _local3 ^ ((_local3 << 15) & 4022730752);
_local3 = _local3 ^ (_local3 >>> 18);
return(_local3);
}
static var N = 624;
static var M = 397;
static var MATRIX_A = 2567483615;
static var UPPER_MASK = 2147483648;
static var LOWER_MASK = 2147483647;
static var mag01 = [0, 2567483615];
}
Symbol 497 MovieClip [__Packages.com.midasplayer.util.Integer64] Frame 0
class com.midasplayer.util.Integer64
{
var r, p, s;
function Integer64 (lowInt) {
r = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]];
p = [0, 0, 0, 0, 0];
s = [0, 0, 0];
if (lowInt != undefined) {
merge(lowInt);
}
}
function init(v) {
var _local2 = 0;
while (_local2 < p.length) {
p[_local2] = v.p[_local2];
_local2++;
}
}
function init32(n) {
p[0] = n & 32767;
n = n >>> 15;
p[1] = n & 32767;
n = n >>> 15;
p[2] = n & 3;
p[3] = 0;
p[4] = 0;
}
function get lsb() {
return((p[0] | (p[1] << SH)) | ((p[2] & 3) << 30));
}
function get msb() {
return((((p[2] >> 2) | ((p[3] << SH) >> 2)) | ((p[4] << (SH * 2)) >> 2)) & 2147483647);
}
function binaryShiftLeft(step) {
var _local2 = 0;
while (_local2 < step) {
shl();
_local2++;
}
}
function binaryShiftRight(step) {
var _local4 = (step / SH) >> 0;
var _local5 = step - (_local4 * SH);
var _local2 = p.length - 1;
while (_local2 > 0) {
var _local3 = 0;
while (_local3 < _local4) {
p[_local3] = p[_local3 + 1];
_local3++;
}
p[_local2--] = 0;
}
if (_local5 > 0) {
var _local3 = 0;
while (_local3 < _local5) {
shr();
_local3++;
}
}
}
function binaryNot(o) {
p[0] = p[0] ^ o.p[0];
p[1] = p[1] ^ o.p[1];
p[2] = p[2] ^ o.p[2];
p[3] = p[3] ^ o.p[3];
p[4] = p[4] ^ o.p[4];
}
function add64(o) {
var _local4 = 0;
var _local3 = 1;
var _local2 = 0;
while ((_local3 < p.length) && (o.p[_local2] != 0)) {
_local3++;
}
_local2 = 0;
while (_local2 < _local3) {
_local4 = _local4 + (p[_local2] + o.p[_local2]);
p[_local2] = _local4 & MASK;
_local4 = _local4 >> SH;
_local2++;
}
}
function add32(num) {
var _local2 = 0;
var _local5 = num & MASK;
num = num >> SH;
var _local6 = num & MASK;
num = num >> SH;
var _local4 = num & 3;
_local2 = _local2 + (p[0] + _local5);
p[0] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + (p[1] + _local6);
p[1] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + (p[2] + _local4);
p[2] = _local2 & MASK;
}
function mulu32(num) {
var _local3 = 0;
s[0] = num & MASK;
num = num >>> 15;
s[1] = num & MASK;
num = num >>> 15;
s[2] = num & 3;
var _local2 = 0;
while (_local2 < 3) {
var _local4 = s[_local2];
_local3 = _local4 * p[0];
r[_local2][0] = _local3 & MASK;
_local3 = _local3 >> SH;
_local3 = _local3 + (_local4 * p[1]);
r[_local2][1] = _local3 & MASK;
_local3 = _local3 >> SH;
_local3 = _local3 + (_local4 * p[2]);
r[_local2][2] = _local3 & 3;
_local2++;
}
_local3 = r[0][0];
p[0] = _local3 & MASK;
_local3 = _local3 >> SH;
_local3 = _local3 + (r[0][1] + r[1][0]);
p[1] = _local3 & MASK;
_local3 = _local3 >> SH;
_local3 = _local3 + ((r[0][2] + r[1][1]) + r[2][0]);
p[2] = _local3 & 3;
p[3] = 0;
p[4] = 0;
}
function mul64(o) {
var _local2 = 0;
var _local3 = 0;
while (_local3 < 5) {
var _local4 = o.p[_local3];
_local2 = _local4 * p[0];
r[_local3][0] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + (_local4 * p[1]);
r[_local3][1] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + (_local4 * p[2]);
r[_local3][2] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + (_local4 * p[3]);
r[_local3][3] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + (_local4 * p[4]);
r[_local3][4] = _local2 & MASK;
_local3++;
}
_local2 = r[0][0];
p[0] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + (r[0][1] + r[1][0]);
p[1] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + ((r[0][2] + r[1][1]) + r[2][0]);
p[2] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + (((r[0][3] + r[1][2]) + r[2][1]) + r[3][0]);
p[3] = _local2 & MASK;
_local2 = _local2 >> SH;
_local2 = _local2 + ((((r[0][4] + r[1][3]) + r[2][2]) + r[3][1]) + r[4][0]);
p[4] = _local2 & 7;
}
function mul32(value) {
mul64(new com.midasplayer.util.Integer64(value));
}
function merge(a) {
var _local2 = 0;
while (_local2 < 3) {
p[_local2] = p[_local2] + (a & 32767);
a = a >>> 15;
_local2++;
}
return(a);
}
function shl() {
var _local5 = 0;
var _local4 = 0;
var _local2 = 0;
var _local3 = p.length;
while (_local2 < _local3) {
_local5 = (p[_local2] & 16384) >> 14;
p[_local2] = p[_local2] << 1;
p[_local2] = (p[_local2] | _local4) & 32767;
_local2++;
_local4 = _local5;
}
}
function shr() {
var _local4 = 0;
var _local3 = 0;
var _local2 = p.length - 1;
while (_local2 >= 0) {
_local4 = (p[_local2] & 1) << 14;
p[_local2] = p[_local2] >> 1;
p[_local2] = (p[_local2] | _local3) & 32767;
_local2--;
_local3 = _local4;
}
}
static var MASK = 32767;
static var SH = 15;
}
Symbol 498 MovieClip [__Packages.com.midasplayer.util.FpsCounter] Frame 0
class com.midasplayer.util.FpsCounter
{
var m_clip, m_textField;
function FpsCounter (scope) {
var _local4 = 0;
var _local3 = 0;
var _local2 = "fpsTextField";
m_clip = scope.createEmptyMovieClip("fpsCounter", scope.getNextHighestDepth());
m_clip.createTextField(_local2, m_clip.getNextHighestDepth(), _local4, _local3, 100, 30);
m_textField = m_clip[_local2];
m_textField.textColor = 16711680 /* 0xFF0000 */;
m_clip.onEnterFrame = mx.utils.Delegate.create(this, onRender);
}
function onRender() {
var _local2 = getTimer();
m_fpsCount++;
if ((getTimer() - m_lastFpsUpdateTime) >= 1000) {
var _local3 = "FPS: " + m_fpsCount;
m_lastFpsUpdateTime = _local2;
m_textField.text = _local3;
m_fpsCount = 0;
m_lastFpsUpdateTime = getTimer();
}
}
var m_fpsCount = 0;
var m_lastFpsUpdateTime = 0;
}
Symbol 499 MovieClip [__Packages.com.midasplayer.gameCore.ClientInput] Frame 0
class com.midasplayer.gameCore.ClientInput
{
var m_entries, m_time, m_type, m_tick;
function ClientInput () {
m_entries = new com.midasplayer.util.ArrayList();
m_time = new Date();
}
function setType(type) {
m_type = type;
}
function getType() {
return(m_type);
}
function setTick(tick) {
m_tick = tick;
}
function getTick() {
return(m_tick);
}
function getTime() {
return(m_time);
}
function addEntry(entry) {
m_entries.insert(entry);
}
function getNumEntries() {
return(m_entries.size());
}
function getInt(index) {
return(Number(m_entries.get(index)));
}
function toString() {
var _local3 = "";
_local3 = _local3 + "[CLIENT DATA] ";
_local3 = _local3 + ((("C:" + m_type) + " T:") + m_tick);
var _local2 = 0;
while (_local2 < m_entries.size()) {
_local3 = _local3 + ((" '" + String(m_entries.get(_local2))) + "'");
_local2++;
}
return(_local3);
}
static function parseInput(inputString) {
var _local13 = new com.midasplayer.util.ArrayList();
var _local12 = "[CDATA[";
var _local1 = 0;
var _local5 = 0;
var _local14 = 10000;
var _local8 = 0;
while (_local8 < _local14) {
_local1 = inputString.indexOf(_local12, _local1);
if (_local1 == -1) {
break;
}
_local1 = _local1 + _local12.length;
var _local4 = new com.midasplayer.gameCore.ClientInput();
_local5 = inputString.indexOf(",", _local1);
var _local9 = Number(inputString.substr(_local1, _local5 - _local1));
_local4.setType(_local9);
_local1 = _local5 + 1;
_local5 = inputString.indexOf(",", _local1);
var _local10 = inputString.substr(_local1, _local5 - _local1);
var _local3 = _local10.split(" ");
if (_local3.length > 0) {
var _local11 = Number(_local3[0]);
_local4.setTick(_local11);
_local3.splice(0, 1);
}
var _local2 = 0;
while (_local2 < _local3.length) {
var _local6 = _local3[_local2];
_local4.addEntry(_local6);
_local2++;
}
_local1 = _local5 + 1;
_local13.insert(_local4);
_local8++;
}
return(_local13);
}
}
Symbol 500 MovieClip [__Packages.com.midasplayer.matchBlocks.GameLogic] Frame 0
class com.midasplayer.matchBlocks.GameLogic extends com.midasplayer.gameCore.AbstractGameLogic
{
var m_gameBoard, m_gameView, trace, setTicksPerSecond, setPendingStateDuration, m_levelWidth, trimArray, m_levelHeight, m_blockLayout, m_goldBlockIndex, getNumberLevels, getLevel, gameOver;
function GameLogic () {
super();
}
function getGameBoard() {
return(m_gameBoard);
}
function getGameView() {
return(com.midasplayer.matchBlocks.GameView(m_gameView));
}
function hasAchievement() {
return(m_gameBoard.hasAchievement());
}
function onInit() {
trace("onInit!!!");
com.midasplayer.gameCore.AbstractGameLogic.DEV = false;
com.midasplayer.gameCore.AbstractGameLogic.PERFORMANCE_LOG = false;
com.midasplayer.gameCore.AbstractGameLogic.PRACTICE_GAME = false;
m_gameBoard = new com.midasplayer.matchBlocks.GameBoard();
m_gameBoard.setGameLogic(this);
setTicksPerSecond(3);
setPendingStateDuration(1, 4);
getGameView().showGameBoard(false);
}
function onSetGameData(gda) {
m_levelWidth = new com.midasplayer.util.ArrayList(gda.getGameData("levelWidth"));
trimArray(m_levelWidth);
m_levelHeight = new com.midasplayer.util.ArrayList(gda.getGameData("levelHeight"));
trimArray(m_levelHeight);
m_blockLayout = new com.midasplayer.util.ArrayList();
m_goldBlockIndex = new com.midasplayer.util.ArrayList();
var _local2 = 0;
while (_local2 < getNumberLevels()) {
m_blockLayout.insert(new com.midasplayer.util.ArrayList(gda.getGameData("blockLayout_" + _local2)));
trimArray(com.midasplayer.util.ArrayList(m_blockLayout.get(_local2)));
m_goldBlockIndex.insert(new com.midasplayer.util.ArrayList(gda.getGameData("goldBlockIndex_" + _local2)));
trimArray(com.midasplayer.util.ArrayList(m_goldBlockIndex.get(_local2)));
_local2++;
}
var _local4 = Number(gda.getGameData("totalTime"));
m_gameBoard.setTotalTimeLeft(_local4);
}
function onLevelSetup() {
getGameView().showGameBoard(true);
var _local2;
if ((m_levelWidth.size() - 1) < getLevel()) {
_local2 = Number(m_levelWidth.get(0));
} else {
_local2 = Number(m_levelWidth.get(getLevel()));
}
var _local3;
if ((m_levelHeight.size() - 1) < getLevel()) {
_local3 = Number(m_levelHeight.get(0));
} else {
_local3 = Number(m_levelHeight.get(getLevel()));
}
var _local4 = com.midasplayer.util.ArrayList(m_blockLayout.get(getLevel()));
var _local5 = com.midasplayer.util.ArrayList(m_goldBlockIndex.get(getLevel()));
m_gameBoard.clearLevel(_local2, _local3);
m_gameBoard.setupLevel(_local4, _local5);
}
function onTick() {
m_gameBoard.onTick();
}
function onHandleInput(input) {
if (input.getType() == 333) {
var _local2 = input.getInt(0);
var _local4 = m_gameBoard.getBlock(_local2);
m_gameBoard.clickedBlock(_local4);
return(true);
}
if (input.getType() == 999) {
gameOver();
return(true);
}
return(false);
}
function onRender() {
}
static var LAYER_MELT_EFFECT = 0;
static var LAYER_BLOCKS = 1;
static var LAYER_EXPLOSION = 2;
}
Symbol 501 MovieClip [__Packages.com.midasplayer.matchBlocks.BoardObject] Frame 0
class com.midasplayer.matchBlocks.BoardObject extends com.midasplayer.gameCore.WorldObject
{
var m_gameBoard, setVelY, getVelY, setX, setNextY, setY;
function BoardObject () {
super();
}
function setGameBoard(gameBoard) {
m_gameBoard = gameBoard;
}
function getGameBoard() {
return(m_gameBoard);
}
function getGameLogic() {
return(com.midasplayer.matchBlocks.GameLogic(super.getGameLogic()));
}
function getBoardX() {
return(m_boardX);
}
function getBoardY() {
return(m_boardY);
}
function setBoardPos(x, y) {
m_boardX = x;
m_boardY = y;
updatePosition();
}
function setDesiredY(y) {
m_offsetY = m_offsetY + (m_boardY - y);
if (m_offsetY > 0) {
setVelY(GRID_SIZE * 0.5);
}
m_boardY = y;
}
function onTick() {
var _local2 = 0.5;
if (m_offsetY > 0) {
m_offsetY = m_offsetY - _local2;
m_offsetY = Math.max(0, m_offsetY);
setVelY(GRID_SIZE * _local2);
}
if ((m_offsetY == 0) && (getVelY() != 0)) {
setVelY(0);
updatePosition(true);
}
if ((m_needUpdate >= 2) && (getVelY() == 0)) {
m_needUpdate = 0;
updatePosition();
} else if (m_needUpdate > 0) {
m_needUpdate++;
}
}
function updatePosition(makeInterpolation) {
LEFT_X = LEFT_X + OFFSET_X;
BOTTOM_Y = BOTTOM_Y + OFFSET_Y;
var _local5 = m_boardX;
var _local4 = m_boardY + m_offsetY;
var _local3 = LEFT_X + (_local5 * BLOCK_WIDTH);
var _local2 = BOTTOM_Y - (_local4 * BLOCK_HEIGHT);
setX(_local3);
if (makeInterpolation) {
m_needUpdate = 1;
setNextY(_local2);
} else {
m_needUpdate = 0;
setY(_local2);
}
}
static var GRID_SIZE = 23;
static var BLOCK_SCALE = 100;
static var BLOCK_WIDTH = (GRID_SIZE * BLOCK_SCALE) / 100;
static var BLOCK_HEIGHT = (GRID_SIZE * BLOCK_SCALE) / 100;
static var LEFT_X = com.midasplayer.gameCore.World.WORLD_EDGE_LEFT - 80;
static var BOTTOM_Y = com.midasplayer.gameCore.World.WORLD_EDGE_BOTTOM;
static var MAX_OFFSET_X = 0;
static var MAX_OFFSET_Y = 0;
static var OFFSET_X = 0;
static var OFFSET_Y = 0;
var m_boardX = -1;
var m_boardY = -1;
var m_offsetY = 0;
var m_needUpdate = 0;
}
Symbol 502 MovieClip [__Packages.com.midasplayer.matchBlocks.Block] Frame 0
class com.midasplayer.matchBlocks.Block extends com.midasplayer.matchBlocks.BoardObject
{
var setDefaultSymbol, setAnimated, setFrame, setScaleX, setScaleY, setUseHandCursor, m_objectView, getGameLogic, getGameBoard, setAlpha, m_type, m_blockSymbol, setInputEnabled;
function Block () {
super();
setDefaultSymbol("");
setAnimated(false);
setFrame(1);
setScaleX(com.midasplayer.matchBlocks.BoardObject.BLOCK_SCALE);
setScaleY(com.midasplayer.matchBlocks.BoardObject.BLOCK_SCALE);
setUseHandCursor(true);
}
function createObjectView() {
return(new com.midasplayer.matchBlocks.BlockView());
}
function getObjectView() {
return(com.midasplayer.matchBlocks.BlockView(m_objectView));
}
function pendingRemoval() {
return(m_removeTick != -1);
}
function isBomb() {
return(false);
}
function onPress() {
if (getGameLogic().getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return(undefined);
}
if (getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_GOLD) {
return(undefined);
}
getGameBoard().clickedBlock(this);
}
function isActive() {
return(m_active);
}
function setActive(active) {
m_active = active;
if (m_active) {
setAlpha(50);
} else {
setAlpha(100);
}
}
function checkDetonation() {
return(false);
}
function getBlockRotation() {
return(m_blockRotation);
}
function setBonusBlock(bonus) {
m_bonusBlock = bonus;
}
function isBonusBlock() {
return(m_bonusBlock);
}
function setShapeSize(width, height) {
m_width = width;
m_height = height;
}
function getShapeWidth() {
return(m_width);
}
function getShapeHeight() {
return(m_height);
}
function setShape(shape) {
m_shape = shape;
}
function getShape(x, y) {
return(m_shape.charAt((y * m_width) + x));
}
function setType(type) {
m_type = type;
m_blockSymbol = ("block_" + ((type < 10) ? "0" : "")) + type;
}
function getType() {
return(m_type);
}
function getBlockSymbol() {
return(m_blockSymbol);
}
function rotate() {
m_blockRotation++;
getObjectView().updateRotation();
var _local5 = m_width;
var _local7 = m_height;
var _local6 = m_shape;
m_shape = "";
var _local8 = m_width;
m_width = m_height;
m_height = _local8;
var _local4 = 0;
while (_local4 < _local5) {
var _local2 = _local7 - 1;
while (_local2 >= 0) {
var _local3 = _local6.charAt((_local2 * _local5) + _local4);
m_shape = m_shape + _local3;
_local2--;
}
_local4++;
}
}
function setColor(color) {
m_color = color;
getObjectView().updateColor();
if (color == com.midasplayer.matchBlocks.BlockManager.COLOR_GOLD) {
setUseHandCursor(false);
setInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_NONE);
} else {
setInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_PRESS);
}
}
function isGold() {
return(getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_GOLD);
}
function getColor() {
return(m_color);
}
function startRemoveAnim(animIndex) {
if (m_removeTick != -1) {
return(undefined);
}
var _local2 = 0;
if (animIndex == REMOVE_ANIM_MATCH) {
m_removeState = BLOCK_REMOVE_MATCH;
m_removeDelay = REMOVE_DELAY_MATCH;
getObjectView().setClip(com.midasplayer.gameCore.WorldObjectView.SYMBOL_EMPTY_MOVIECLIP, com.midasplayer.matchBlocks.GameLogic.LAYER_EXPLOSION);
getObjectView().setClipOnShape("scorepop");
} else if (animIndex == REMOVE_ANIM_MELT) {
m_removeState = BLOCK_REMOVE_MELT;
m_removeDelay = REMOVE_DELAY_MELT;
getObjectView().setClip(com.midasplayer.gameCore.WorldObjectView.SYMBOL_EMPTY_MOVIECLIP, com.midasplayer.matchBlocks.GameLogic.LAYER_EXPLOSION);
getObjectView().setClipOnShape("scorefade");
}
m_removeTick = getGameLogic().getTickCount() + m_removeDelay;
setInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_NONE);
}
function attach() {
getObjectView().setClip(getBlockSymbol());
getObjectView().attachClip();
m_blockAttached = true;
}
function isAttached() {
return(m_blockAttached);
}
function onTick() {
super.onTick();
if (m_removeTick != -1) {
if (getGameLogic().getTickCount() >= m_removeTick) {
getGameBoard().removeBlock(this, m_removeState);
}
}
}
function toString() {
var _local4 = "";
var _local3 = 0;
while (_local3 < m_height) {
var _local2 = 0;
while (_local2 < m_width) {
_local4 = _local4 + getShape(_local2, _local3);
_local2++;
}
_local4 = _local4 + newline;
_local3++;
}
return(_local4);
}
static var REMOVE_ANIM_MATCH = 0;
static var REMOVE_ANIM_MELT = 1;
static var REMOVE_DELAY_MATCH = 2;
static var REMOVE_DELAY_MELT = 4;
static var BLOCK_REMOVE_NONE = 0;
static var BLOCK_REMOVE_MATCH = 1;
static var BLOCK_REMOVE_MELT = 2;
static var MAX_BLOCK_WIDTH = 5;
static var MAX_BLOCK_HEIGHT = 5;
var m_width = 0;
var m_height = 0;
var m_shape = "";
var m_color = 0;
var m_active = false;
var m_blockAttached = false;
var m_blockRotation = 0;
var m_bonusBlock = false;
var m_removeState = BLOCK_REMOVE_NONE;
var m_removeTick = -1;
var m_removeDelay = 0;
}
Symbol 503 MovieClip [__Packages.com.midasplayer.matchBlocks.BlockView] Frame 0
class com.midasplayer.matchBlocks.BlockView extends com.midasplayer.gameCore.WorldObjectView
{
var m_clip, getClip;
function BlockView () {
super();
}
function getObject() {
return(com.midasplayer.matchBlocks.Block(super.getObject()));
}
function getGameLogic() {
return(com.midasplayer.matchBlocks.GameLogic(super.getGameLogic()));
}
function attachClip() {
updateRotation();
updateColor();
var _local2 = getObject();
if (_local2.isGold()) {
setClipOnIntersection();
} else if ((!_local2.isBomb()) && (_local2.isBonusBlock())) {
setClipOnShape("bonusblock_pattern");
}
}
function setClipOnShape(symbol) {
var _local10 = getObject();
var _local11 = _local10.getShapeHeight();
var _local4 = 0;
while (_local4 < _local10.getShapeHeight()) {
var _local3 = 0;
while (_local3 < _local10.getShapeWidth()) {
var _local9 = _local10.getShape(_local3, _local4);
if (_local9 == com.midasplayer.matchBlocks.GameBoard.BOARD_MAP_BLOCK) {
var _local6 = (_local3 + "-") + _local4;
var _local2 = m_clip.attachMovie(symbol, _local6, m_clip.getNextHighestDepth());
var _local8 = _local3 * com.midasplayer.matchBlocks.BoardObject.GRID_SIZE;
var _local7 = ((_local4 - _local11) + 1) * com.midasplayer.matchBlocks.BoardObject.GRID_SIZE;
_local2._x = _local8;
_local2._y = _local7;
if ((symbol == "scorepop") || (symbol == "scorefade")) {
_local2._xscale = (_local2._yscale = 150);
}
setColorTransform(_local2.highlight, "highlight");
setColorTransform(_local2.shadow, "outline");
if ((symbol != "bonusblock_pattern") && (!getObject().isBomb())) {
setColorTransform(_local2, "highlight");
}
}
_local3++;
}
_local4++;
}
}
function setClipOnIntersection() {
var _local12 = getObject();
var _local30 = _local12.getBoardX();
var _local29 = _local12.getBoardY();
var _local4 = _local12.getGameBoard();
var _local31 = com.midasplayer.matchBlocks.BoardObject.BLOCK_SCALE / 100;
trace("=== block: " + _local12.getObjId());
var _local28 = _local12.getShapeHeight();
var _local14 = 0;
while (_local14 < _local12.getShapeHeight()) {
var _local11 = 0;
while (_local11 < _local12.getShapeWidth()) {
var _local27 = _local12.getShape(_local11, _local14);
if (_local27 == com.midasplayer.matchBlocks.GameBoard.BOARD_MAP_BLOCK) {
var _local5 = 0;
while (_local5 < 4) {
var _local3;
var _local6;
if (_local5 == 0) {
_local3 = 0;
_local6 = 1;
} else if (_local5 == 1) {
_local3 = 0;
_local6 = -1;
} else if (_local5 == 2) {
_local3 = 1;
_local6 = 0;
} else if (_local5 == 3) {
_local3 = -1;
_local6 = 0;
} else {
trace("!!!! offsetCount: " + _local5);
}
var _local7 = _local30 + _local11;
var _local10 = ((_local29 + _local12.getShapeHeight()) - 1) - _local14;
var _local9 = _local7 + _local3;
var _local8 = _local10 + _local6;
var _local13 = _local4.getBoardMapObj(_local9, _local8);
if (((_local13 == undefined) || (_local13.getColor() != com.midasplayer.matchBlocks.BlockManager.COLOR_GOLD)) || (_local13.getObjId() == _local12.getObjId())) {
} else {
var _local15;
if (_local3 != 0) {
_local15 = "limiter_x";
} else {
_local15 = "limiter_y";
}
var _local18 = (((((_local11 + "-") + _local14) + "-") + _local3) + "-") + _local6;
var _local2 = m_clip.attachMovie(_local15, _local18, m_clip.getNextHighestDepth());
if (_local2 == undefined) {
trace("Failed to attach clip");
}
var _local22 = _local11 * com.midasplayer.matchBlocks.BoardObject.GRID_SIZE;
var _local21 = ((_local14 - _local28) + 1) * com.midasplayer.matchBlocks.BoardObject.GRID_SIZE;
_local2._x = _local22;
_local2._y = _local21;
if (_local3 != 0) {
if (_local3 == 1) {
_local2._x = _local2._x + (com.midasplayer.matchBlocks.BoardObject.GRID_SIZE - _local2._width);
}
var _local16 = _local4.getBoardMapObj(_local9, _local8 + 1);
var _local17 = _local4.getBoardMapObj(_local9, _local8 - 1);
var _local25 = _local4.getBoardMapObj(_local7, _local10 + 1);
var _local19 = _local4.getBoardMapObj(_local7, _local10 - 1);
_local2.corner_far_top._visible = false;
_local2.corner_far_bottom._visible = false;
setColorTransform(_local2.bottom, COLOR_BOTTOM);
setColorTransform(_local2.corner_top, COLOR_BOTTOM);
setColorTransform(_local2.corner_bottom, COLOR_BOTTOM);
if (_local16.isGold() && (_local25.isGold())) {
setColorTransform(_local2.corner_highlight, COLOR_BOTTOM);
if (_local16.getObjId() == _local12.getObjId()) {
_local2.corner_far_top._visible = true;
setColorTransform(_local2.corner_far_top, COLOR_BOTTOM);
}
} else {
_local2.corner_top._visible = false;
setColorTransform(_local2.corner_highlight, COLOR_HIGHLIGHT);
}
if (_local17.isGold() && (_local19.isGold())) {
setColorTransform(_local2.corner_bevel, COLOR_BOTTOM);
if (_local17.getObjId() == _local12.getObjId()) {
_local2.corner_far_bottom._visible = true;
setColorTransform(_local2.corner_far_bottom, COLOR_BOTTOM);
}
} else {
_local2.corner_bottom._visible = false;
setColorTransform(_local2.corner_bevel, COLOR_OUTLINE);
}
}
if (_local6 != 0) {
if (_local6 == 1) {
_local2._y = _local2._y - (com.midasplayer.matchBlocks.BoardObject.GRID_SIZE - _local2._height);
}
var _local26 = _local4.getBoardMapObj(_local9 - 1, _local8);
var _local24 = _local4.getBoardMapObj(_local9 + 1, _local8);
var _local23 = _local4.getBoardMapObj(_local7 - 1, _local10);
var _local20 = _local4.getBoardMapObj(_local7 + 1, _local10);
setColorTransform(_local2.bottom, COLOR_BOTTOM);
setColorTransform(_local2.corner_left, COLOR_BOTTOM);
setColorTransform(_local2.corner_right, COLOR_BOTTOM);
if ((!_local23.isGold()) || (!_local26.isGold())) {
_local2.corner_left._visible = false;
}
if ((!_local20.isGold()) || (!_local24.isGold())) {
_local2.corner_right._visible = false;
}
}
}
_local5++;
}
}
_local11++;
}
_local14++;
}
setClipOnShape("levelblock_star");
}
function updateRotation() {
var _local3 = getObject().getBlockRotation();
var _local2 = _local3 + 1;
getClip().bottom.gotoAndStop(_local2);
getClip().highlight.gotoAndStop(_local2);
getClip().outline.gotoAndStop(_local2);
}
function updateColor() {
setColorTransform(getClip().bottom, COLOR_BOTTOM);
setColorTransform(getClip().highlight, COLOR_HIGHLIGHT);
setColorTransform(getClip().outline, COLOR_OUTLINE);
}
function setColorTransform(clip, colorType) {
if (colorType == "debug") {
colorTransform = {ra:255, ga:0, ba:0};
}
var colorTransform = {ra:100, ga:100, ba:100};
var _local3 = new Color(clip);
if (getObject().getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_PINK) {
if (colorType == COLOR_HIGHLIGHT) {
colorTransform = {ra:255, ga:200, ba:255};
} else if (colorType == COLOR_BOTTOM) {
colorTransform = {ra:255, ga:120, ba:255};
} else if (colorType == COLOR_OUTLINE) {
colorTransform = {ra:200, ga:0, ba:200};
}
} else if (getObject().getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_BLUE) {
if (colorType == COLOR_HIGHLIGHT) {
colorTransform = {ra:150, ga:235, ba:255};
} else if (colorType == COLOR_BOTTOM) {
colorTransform = {ra:0, ga:160, ba:255};
} else if (colorType == COLOR_OUTLINE) {
colorTransform = {ra:30, ga:90, ba:135};
}
} else if (getObject().getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_RED) {
if (colorType == COLOR_HIGHLIGHT) {
colorTransform = {ra:255, ga:0, ba:0};
} else if (colorType == COLOR_BOTTOM) {
colorTransform = {ra:200, ga:0, ba:0};
} else if (colorType == COLOR_OUTLINE) {
colorTransform = {ra:125, ga:0, ba:0};
}
} else if (getObject().getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_YELLOW) {
if (colorType == COLOR_HIGHLIGHT) {
colorTransform = {ra:255, ga:255, ba:200};
} else if (colorType == COLOR_BOTTOM) {
colorTransform = {ra:255, ga:255, ba:0};
} else if (colorType == COLOR_OUTLINE) {
colorTransform = {ra:140, ga:140, ba:0};
}
} else if (getObject().getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_PINK_2) {
if (colorType == COLOR_HIGHLIGHT) {
colorTransform = {ra:255, ga:150, ba:200};
} else if (colorType == COLOR_BOTTOM) {
colorTransform = {ra:255, ga:0, ba:190};
} else if (colorType == COLOR_OUTLINE) {
colorTransform = {ra:150, ga:30, ba:90};
}
} else if (getObject().getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_GREEN) {
if (colorType == COLOR_HIGHLIGHT) {
colorTransform = {ra:150, ga:255, ba:150};
} else if (colorType == COLOR_BOTTOM) {
colorTransform = {ra:0, ga:195, ba:0};
} else if (colorType == COLOR_OUTLINE) {
colorTransform = {ra:0, ga:110, ba:0};
}
} else if (getObject().getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_ORANGE) {
if (colorType == COLOR_HIGHLIGHT) {
colorTransform = {ra:250, ga:225, ba:160};
} else if (colorType == COLOR_BOTTOM) {
colorTransform = {ra:255, ga:190, ba:0};
} else if (colorType == COLOR_OUTLINE) {
colorTransform = {ra:170, ga:125, ba:0};
}
} else if (getObject().getColor() == com.midasplayer.matchBlocks.BlockManager.COLOR_GOLD) {
if (colorType == COLOR_HIGHLIGHT) {
colorTransform = {ra:250, ga:225, ba:200};
} else if (colorType == COLOR_BOTTOM) {
colorTransform = {ra:255, ga:255, ba:0};
} else if (colorType == COLOR_OUTLINE) {
colorTransform = {ra:170, ga:170, ba:0};
}
}
colorTransform.ra = colorTransform.ra / 2.55;
colorTransform.ga = colorTransform.ga / 2.55;
colorTransform.ba = colorTransform.ba / 2.55;
_local3.setTransform(colorTransform);
}
static var COLOR_BOTTOM = "bottom";
static var COLOR_HIGHLIGHT = "highlight";
static var COLOR_OUTLINE = "outline";
}
Symbol 504 MovieClip [__Packages.com.midasplayer.matchBlocks.BlockManager] Frame 0
class com.midasplayer.matchBlocks.BlockManager
{
function BlockManager () {
}
static function getBlockString(block) {
var _local5 = "";
var _local2 = String(block.getType());
if (block.getType() < 10) {
_local2 = String("0") + _local2;
}
var _local8 = String(block.getBlockRotation());
var _local6 = String(block.getColor());
var _local7 = (block.isBonusBlock() ? "1" : "0");
var _local4 = String(block.getBoardX());
if (block.getBoardX() < 10) {
_local4 = String("0") + _local4;
}
var _local3 = String(block.getBoardY());
if (block.getBoardY() < 10) {
_local3 = String("0") + _local3;
}
_local5 = ((((_local2 + _local8) + _local6) + _local7) + _local4) + _local3;
return(_local5);
}
static function createBlock(blockString, gameBoard) {
var _local6 = (Number(blockString.charAt(0)) * 10) + Number(blockString.charAt(1));
var _local5 = Number(blockString.charAt(2));
var _local7 = Number(blockString.charAt(3));
var _local8 = blockString.charAt(4) == 1;
var _local10 = (Number(blockString.charAt(5)) * 10) + Number(blockString.charAt(6));
var _local9 = (Number(blockString.charAt(7)) * 10) + Number(blockString.charAt(8));
var _local1 = new com.midasplayer.matchBlocks.Block();
_local1.setGameBoard(gameBoard);
var _local2;
switch (_local6) {
case 99 :
_local1 = new com.midasplayer.matchBlocks.Bomb();
_local1.setGameBoard(gameBoard);
_local1.setShapeSize(1, 1);
_local2 = "*";
break;
case 0 :
_local1.setShapeSize(5, 1);
_local2 = "*****";
break;
case 1 :
_local1.setShapeSize(3, 3);
_local2 = "..*****..";
break;
case 2 :
_local1.setShapeSize(3, 3);
_local2 = ".*.***.*.";
break;
case 3 :
_local1.setShapeSize(3, 2);
_local2 = "*****.";
break;
case 4 :
_local1.setShapeSize(3, 2);
_local2 = "****.*";
break;
case 5 :
_local1.setShapeSize(4, 2);
_local2 = "*****...";
break;
case 6 :
_local1.setShapeSize(4, 2);
_local2 = "*...****";
break;
case 7 :
_local1.setShapeSize(2, 4);
_local2 = "*.*.**.*";
break;
case 8 :
_local1.setShapeSize(3, 3);
_local2 = "*..*..***";
break;
case 9 :
_local1.setShapeSize(3, 3);
_local2 = "*..**..**";
break;
case 10 :
_local1.setShapeSize(3, 3);
_local2 = "*..****..";
break;
case 11 :
_local1.setShapeSize(4, 2);
_local2 = ".*..****";
break;
case 12 :
_local1.setShapeSize(3, 3);
_local2 = "*..***.*.";
break;
case 13 :
_local1.setShapeSize(2, 2);
_local2 = "****";
break;
case 14 :
_local1.setShapeSize(4, 1);
_local2 = "****";
break;
case 15 :
_local1.setShapeSize(3, 2);
_local2 = "***.*.";
break;
case 16 :
_local1.setShapeSize(3, 2);
_local2 = "****..";
break;
case 17 :
_local1.setShapeSize(3, 2);
_local2 = "*..***";
break;
case 18 :
_local1.setShapeSize(2, 3);
_local2 = "*.**.*.";
break;
case 19 :
_local1.setShapeSize(2, 3);
_local2 = ".****..";
break;
case 20 :
_local1.setShapeSize(3, 1);
_local2 = "***";
break;
case 21 :
_local1.setShapeSize(2, 1);
_local2 = "**";
}
_local1.setShape(_local2);
_local1.setType(_local6);
var _local3 = 0;
while (_local3 < _local5) {
_local1.rotate();
_local3++;
}
_local1.setColor(_local7);
_local1.setBoardPos(_local10, _local9);
_local1.setBonusBlock(_local8);
return(_local1);
}
static var NUM_BLOCK_TYPES = 22;
static var COLOR_PINK = 0;
static var COLOR_BLUE = 1;
static var COLOR_RED = 2;
static var COLOR_PINK_2 = 3;
static var COLOR_GREEN = 4;
static var COLOR_ORANGE = 5;
static var COLOR_YELLOW = 6;
static var COLOR_GOLD = 6;
static var NUM_COLORS = 6;
static var TYPE_BOMB = 99;
}
Symbol 505 MovieClip [__Packages.com.midasplayer.matchBlocks.Bomb] Frame 0
class com.midasplayer.matchBlocks.Bomb extends com.midasplayer.matchBlocks.Block
{
var setDefaultSymbol, setAnimated, setFrame, setScaleX, setScaleY, setUseHandCursor, m_objectView, getBoardY, pendingRemoval;
function Bomb () {
super();
setDefaultSymbol("");
setAnimated(false);
setFrame(m_countdown);
setScaleX(78);
setScaleY(78);
setUseHandCursor(false);
getObjectView().updateCountdown(m_countdown);
}
function createObjectView() {
return(new com.midasplayer.matchBlocks.BombView());
}
function getObjectView() {
return(com.midasplayer.matchBlocks.BombView(m_objectView));
}
function isBomb() {
return(true);
}
function onPress() {
return(undefined);
}
function rotate() {
return(undefined);
}
function setBoardPos(x, y) {
super.setBoardPos(x, y);
checkActivation();
}
function setDesiredY(y) {
super.setDesiredY(y);
checkActivation();
}
function checkActivation() {
if ((!m_bombActive) && (getBoardY() < (com.midasplayer.matchBlocks.GameBoard.BOARD_TOP_Y - com.midasplayer.matchBlocks.GameBoard.BOMB_SAFE_ROWS))) {
trace("bomb activated");
m_bombActive = true;
m_countdown = 10;
getObjectView().updateCountdown(m_countdown);
}
}
function checkDetonation() {
var _local2 = false;
getObjectView().checkInstructions();
if (pendingRemoval() || (!m_bombActive)) {
return(false);
}
m_countdown--;
if (m_countdown <= 0) {
_local2 = true;
}
getObjectView().updateCountdown(m_countdown);
return(_local2);
}
var m_countdown = 10;
var m_bombActive = false;
}
Symbol 506 MovieClip [__Packages.com.midasplayer.matchBlocks.BombView] Frame 0
class com.midasplayer.matchBlocks.BombView extends com.midasplayer.matchBlocks.BlockView
{
var setClip, getClip;
function BombView () {
super();
}
function getObject() {
return(com.midasplayer.matchBlocks.Bomb(super.getObject()));
}
function getGameLogic() {
return(com.midasplayer.matchBlocks.GameLogic(super.getGameLogic()));
}
function updateCountdown(frame) {
if (frame <= 0) {
setClip("explosion", com.midasplayer.matchBlocks.GameLogic.LAYER_EXPLOSION);
} else {
if (frame != 10) {
com.midasplayer.fx.SoundManager.play(com.midasplayer.matchBlocks.GameView.SOUND_BOMB_COUNTDOWN, com.midasplayer.matchBlocks.GameView.SOUND_BOMB_COUNTDOWN_VOLUME);
}
var _local2 = "count_" + frame;
getClip().gotoAndPlay(_local2);
}
}
function checkInstructions() {
if (m_displayText && (getGameLogic().getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE)) {
var _local6 = getObject();
var _local4 = getObject().getWorld().getLayer(com.midasplayer.matchBlocks.GameLogic.LAYER_EXPLOSION);
var _local8 = -80 + (getGameLogic().getGameBoard().getWidth() * com.midasplayer.matchBlocks.BoardObject.BLOCK_WIDTH);
var _local7 = 345;
var _local2 = _local4.attachMovie("instructionText", "instruction_" + getObject().getObjId(), _local4.getNextHighestDepth());
var _local5 = _local2._width / 2;
var _local3 = _local2._height / 2;
_local2._x = Math.min(Math.max(-80 + _local5, _local6.getX() + (com.midasplayer.matchBlocks.BoardObject.BLOCK_WIDTH / 2)), _local8 - _local5);
_local2._y = Math.min(Math.max(_local3, _local6.getY() + _local3), _local7 - _local3);
_local2.text.text = com.midasplayer.util.I18n.getString("instructions_screen_3").toUpperCase();
_local2.onRollOver = function () {
this.removeMovieClip();
};
m_displayText = false;
}
}
static var m_displayText = true;
}
Symbol 507 MovieClip [__Packages.com.midasplayer.matchBlocks.GameView] Frame 0
class com.midasplayer.matchBlocks.GameView extends com.midasplayer.gameCore.AbstractGameView
{
var m_scoreSign, m_truckMC, m_backgroundMC;
function GameView () {
super();
}
function getGameLogic() {
return(com.midasplayer.matchBlocks.GameLogic(super.getGameLogic()));
}
function onInitInfoScreen(infoScreen, currentState) {
if (currentState == com.midasplayer.gameCore.GameState.INSTRUCTIONS) {
infoScreen.init(_root.background, "instructionsScreen", 120);
var _local13 = infoScreen.getClip().logo;
_local13.gotoAndStop(m_gameModeFrame);
if (m_gameModeFrame == 2) {
_local13._xscale = (_local13._yscale = 110);
} else {
infoScreen.getClip().boss._visible = false;
}
infoScreen.setText("instructions_header", com.midasplayer.util.I18n.getString("instructions_header"));
infoScreen.setText("instructions", com.midasplayer.util.I18n.getString("instructions"));
infoScreen.setText("match_blocks", com.midasplayer.util.I18n.getString("instructions_screen_1"));
infoScreen.setText("bomb", com.midasplayer.util.I18n.getString("instructions_screen_2"));
infoScreen.setText("level_block", com.midasplayer.util.I18n.getString("instructions_screen_5"));
infoScreen.setText("bonus_block", com.midasplayer.util.I18n.getString("instructions_screen_4"));
var _local15 = new Object();
_local15.onMouseDown = function () {
_root.gameView.startTruck();
Mouse.removeListener(this);
};
Mouse.addListener(_local15);
} else if (((currentState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) && (getGameLogic().getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE)) || (currentState == com.midasplayer.gameCore.GameState.GAME_SUMMARY)) {
if (currentState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) {
_root.levelCounter.play();
}
var _local16 = 380;
var _local14 = 315;
var _local18 = "summarySign";
if (getGameLogic().getGameMode() == com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
_local16 = _local16 - 20;
_local14 = _local14 + 20;
_local18 = "summarySign_deluxe";
var _local10 = _root.attachMovie("bossWrapper", "bossWrapper", _root.getNextHighestDepth());
_local10._x = 1180;
_local10._y = 590;
_local10.onEnterFrame = function () {
if (this.startTime == undefined) {
this.startTime = getTimer();
}
if (this.moveDuration == undefined) {
this.moveDuration = 3500;
}
if (this.deltaX == undefined) {
this.deltaX = 1100;
}
if (this.startX == undefined) {
this.startX = 1050;
}
var _local2 = (getTimer() - this.startTime) / this.moveDuration;
this._x = this.startX - (this.deltaX * _local2);
};
var _local9 = getGameLogic().getLevel();
var _local8 = 1;
var _local3 = 0;
while (_local3 < BOSS_LEVEL_STAGES.length) {
if (_local9 >= BOSS_LEVEL_STAGES[_local3]) {
_local8 = _local3 + 1;
}
_local3++;
}
_local10.gotoAndStop(_local8);
com.midasplayer.fx.SoundManager.play(SOUND_BOSS + _local8, SOUND_BOSS_VOLUME, false);
}
infoScreen.init(_root, _local18, 8);
infoScreen.setLooping(false);
infoScreen.setPos(_local16, _local14);
infoScreen.setFps(25);
var _local17 = getGameLogic().getGameBoard().getLevelBonus();
var _local19 = getGameLogic().getGameBoard().getMoveBonus();
var _local12;
if (currentState != com.midasplayer.gameCore.GameState.GAME_SUMMARY) {
_local12 = com.midasplayer.util.I18n.getString("level_complete");
} else if (getGameLogic().getGameBoard().isNoMoreMoves()) {
_local12 = com.midasplayer.util.I18n.getString("no_more_moves");
} else {
_local12 = com.midasplayer.util.I18n.getString("game_over");
}
infoScreen.setSignText("header", _local12);
infoScreen.setSignText("score_header", com.midasplayer.util.I18n.getString("score") + ":");
infoScreen.setSignText("score", String((getGameLogic().getScore() - _local17) - _local19));
var _local4 = String(getGameLogic().getScore());
var _local3 = 0;
while (_local3 < 6) {
if (_local4.length >= 6) {
break;
}
_local4 = "0" + _local4;
_local3++;
}
var _local7 = false;
_local3 = 4;
while (_local3 >= 0) {
var _local5 = Number(_local4.charAt((_local4.length - 1) - _local3)) + 1;
if (!_local7) {
if (_local5 > 1) {
_local7 = true;
} else {
_local5 = 11;
}
}
infoScreen.getClip().sign["score_" + _local3].gotoAndStop(_local5);
_local3--;
}
infoScreen.setSignText("level_bonus_header", com.midasplayer.util.I18n.getString("level_bonus") + ":");
infoScreen.setSignText("level_bonus", String(_local17));
infoScreen.setSignText("move_bonus_header", com.midasplayer.util.I18n.getString("move_bonus") + ":");
infoScreen.setSignText("move_bonus", String(_local19));
infoScreen.setSignText("total_score_header", com.midasplayer.util.I18n.getString("total_score") + ":");
infoScreen.setSignText("total_score", String(getGameLogic().getScore()));
}
}
function onUpdateInfoScreen(infoScreen, currentState) {
if (currentState == com.midasplayer.gameCore.GameState.INSTRUCTIONS) {
var _local3 = Math.round(Math.max(0, infoScreen.getTimeRemaining() - 100));
var _local6 = com.midasplayer.util.I18n.getString("game_starts");
var _local5 = ((_local3 == 1) ? (com.midasplayer.util.I18n.getString("second")) : (com.midasplayer.util.I18n.getString("seconds")));
infoScreen.setText("timer", (((((_local6 + " ") + com.midasplayer.util.I18n.getString("in")) + " ") + _local3) + " ") + _local5);
if (_local3 <= 0) {
startTruck();
}
}
if ((currentState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) || (currentState == com.midasplayer.gameCore.GameState.GAME_SUMMARY)) {
var _local3 = Math.round(infoScreen.getTimeRemaining());
var _local6 = ((currentState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) ? (com.midasplayer.util.I18n.getString("game_starts")) : (com.midasplayer.util.I18n.getString("game_ends")));
var _local5 = ((_local3 == 1) ? (com.midasplayer.util.I18n.getString("second")) : (com.midasplayer.util.I18n.getString("seconds")));
infoScreen.setSignText("timer", (((((_local6 + " ") + com.midasplayer.util.I18n.getString("in")) + " ") + _local3) + " ") + _local5);
}
}
function startTruck() {
if (m_truckStarted) {
return(undefined);
}
m_truckStarted = true;
m_scoreSign.score.text = com.midasplayer.util.I18n.getString("score");
m_scoreSign.bonus.text = com.midasplayer.util.I18n.getString("bonus");
m_scoreSign.time_left.text = com.midasplayer.util.I18n.getString("time_left");
m_truckMC.play();
}
function onInit() {
if (getGameLogic().isDev()) {
com.midasplayer.fx.SoundManager.enableSounds(false);
}
if (getGameLogic().getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
com.midasplayer.fx.SoundManager.play(SOUND_INTRO, SOUND_INTRO_VOLUME);
} else {
com.midasplayer.fx.SoundManager.play(SOUND_INTRO_DELUXE, SOUND_INTRO_DELUXE_VOLUME);
}
new com.midasplayer.fx.SoundToggle(_root.background, 720, 560);
_root.exit_game.text = com.midasplayer.util.I18n.getString("exit_game");
_root.button_end_game.onRelease = function () {
var _local2 = _root.gameLogic;
if (_local2.getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return(undefined);
}
var _local3 = ("999," + _local2.getTickCount()) + " ,=0";
_local2.sendPlaydata(_local3);
_local2.gameOver();
};
m_gameModeFrame = 1;
if (getGameLogic().getGameMode() == com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
m_gameModeFrame = 2;
}
m_backgroundMC = _root.background;
m_backgroundMC.gotoAndStop(m_gameModeFrame);
_root.truckWrapper.gotoAndStop(m_gameModeFrame);
m_truckMC = _root.truckWrapper.truck;
m_scoreSign = m_truckMC.scoreSign;
m_truckMC.logo.gotoAndStop(m_gameModeFrame);
_root.gameBoardBG.gotoAndStop(m_gameModeFrame);
_root.gameBoardBG._visible = false;
if (m_gameModeFrame == 2) {
_root.levelCounter._x = _root.levelCounter._x + 33;
}
_root._visible = true;
}
function onLevelSetup() {
var _local3 = getGameLogic();
_root.gameBoardBG._visible = true;
_root.gameBoardBG.background.onPress = function () {
_root.gameLogic.getGameBoard().clickedBlock(undefined);
};
var _local4 = getGameLogic().getLevel() + 1;
_root.levelCounter.level.gotoAndStop(_local4);
if ((_local3.getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) || (_local3.getLevel() == 0)) {
_root.levelCounter.gotoAndPlay(1);
}
com.midasplayer.fx.SoundManager.stop(SOUND_INTRO);
com.midasplayer.fx.SoundManager.stop(SOUND_INTRO_DELUXE);
if ((_local3.getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) || (_local3.getLevel() == 0)) {
m_truckMC.play();
if (_local3.getGameMode() == com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
com.midasplayer.fx.SoundManager.play(SOUND_LOOP_DELUXE, SOUND_LOOP_DELUXE_VOLUME, true);
} else {
com.midasplayer.fx.SoundManager.play(SOUND_LOOP, SOUND_LOOP_VOLUME, true);
}
}
}
function onCompleteLevel() {
if (getGameLogic().getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
com.midasplayer.fx.SoundManager.stop(SOUND_LOOP);
com.midasplayer.fx.SoundManager.play(SOUND_LEVEL_COMPLETE, SOUND_LEVEL_COMPLETE_VOLUME);
} else {
com.midasplayer.fx.SoundManager.play(SOUND_LEVEL_COMPLETE_DELUXE, SOUND_LEVEL_COMPLETE_DELUXE_VOLUME);
if (getGameLogic().getLevel() == 4) {
com.midasplayer.fx.SoundManager.stop(SOUND_LOOP_DELUXE);
com.midasplayer.fx.SoundManager.play(SOUND_LOOP_FAST_DELUXE, SOUND_LOOP_FAST_DELUXE_VOLUME, true);
}
m_levelBonusPending = true;
}
}
function onGameOver() {
com.midasplayer.fx.SoundManager.stop(SOUND_LOOP);
com.midasplayer.fx.SoundManager.stop(SOUND_LOOP_DELUXE);
com.midasplayer.fx.SoundManager.stop(SOUND_LOOP_FAST_DELUXE);
if (getGameLogic().getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
com.midasplayer.fx.SoundManager.play(SOUND_GAME_OVER, SOUND_GAME_OVER_VOLUME);
} else {
com.midasplayer.fx.SoundManager.play(SOUND_GAME_OVER_DELUXE, SOUND_GAME_OVER_DELUXE_VOLUME);
}
}
function onTick() {
}
function onRender(ipTime) {
var _local14 = getGameLogic().getTimePassed();
if (m_levelBonusPending) {
if ((_local14 > 1000) && (getGameLogic().getState() == com.midasplayer.gameCore.GameState.LEVEL_RUNNING)) {
m_levelBonusPending = false;
}
}
var _local4 = String(getGameLogic().getGameBoard().getMoveBonusPending());
var _local2 = 0;
while (_local2 < 4) {
if (_local4.length >= 4) {
break;
}
_local4 = "0" + _local4;
_local2++;
}
_local2 = 0;
while (_local2 < 4) {
var _local7 = Number(_local4.charAt((_local4.length - 1) - _local2)) + 1;
var _local6 = {ra:100, ga:100, ba:100};
if (!m_levelBonusPending) {
m_scoreSign["bonus_" + _local2].gotoAndStop(_local7);
} else {
_local6 = {ra:0, ga:100, ba:0};
}
var _local8 = new Color(m_scoreSign["bonus_" + _local2]);
_local8.setTransform(_local6);
_local2++;
}
if (!m_levelBonusPending) {
var _local5 = String(getGameLogic().getScore());
_local2 = 0;
while (_local2 < 6) {
if (_local5.length >= 6) {
break;
}
_local5 = "0" + _local5;
_local2++;
}
_local2 = 0;
while (_local2 < 6) {
var _local7 = Number(_local5.charAt((_local5.length - 1) - _local2)) + 1;
m_scoreSign["score_" + _local2].gotoAndStop(_local7);
_local2++;
}
}
var _local12 = getGameLogic().getTimeLeft();
if (getGameLogic().getGameMode() == com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
_local12 = getGameLogic().getGameBoard().getTotalTimeLeft();
}
var _local13 = true;
if (((getGameLogic().getState() == com.midasplayer.gameCore.GameState.LEVEL_RUNNING) && (_local12 <= 10000)) && ((_local12 % 500) >= 250)) {
_local13 = false;
}
_local12 = Math.round(_local12 / 1000);
var _local3 = String((Math.floor(_local12 / 60) * 100) + (_local12 % 60));
_local2 = 0;
while (_local2 < 4) {
if (_local3.length >= 4) {
break;
}
_local3 = "0" + _local3;
_local2++;
}
_local2 = 0;
while (_local2 < 4) {
var _local7 = Number(_local3.charAt((_local3.length - 1) - _local2)) + 1;
m_scoreSign["time_" + _local2].gotoAndStop(_local7);
m_scoreSign["time_" + _local2]._visible = _local13;
_local2++;
}
}
function showGameBoard(visible) {
getGameLogic().getScopeRef()._visible = visible;
}
function onMatch() {
com.midasplayer.fx.SoundManager.play(SOUND_MATCH, SOUND_MATCH_VOLUME);
}
function onMelt() {
com.midasplayer.fx.SoundManager.play(SOUND_MELT, SOUND_MELT_VOLUME);
}
function onEmptyRow(emptyRows) {
com.midasplayer.fx.SoundManager.play(SOUND_EMPTY_ROW, SOUND_EMPTY_ROW_VOLUME);
var _local8 = getGameLogic().getGameBoard();
var _local7 = _local8.getWidth();
var _local2 = 0;
while (_local2 < emptyRows.size()) {
var _local4 = Number(emptyRows.get(_local2));
var _local5 = getGameLogic().getWorld().getLayer(com.midasplayer.matchBlocks.GameLogic.LAYER_MELT_EFFECT);
var _local3 = _local5.attachMovie("cleared_row", "cleared_row_" + _local4, _local5.getNextHighestDepth());
_local3._x = -80 + ((_local7 / 2) * com.midasplayer.matchBlocks.BoardObject.GRID_SIZE);
_local3._y = ((14 - _local4) + 0.5) * com.midasplayer.matchBlocks.BoardObject.GRID_SIZE;
_local2++;
}
}
function onBombExplode() {
com.midasplayer.fx.SoundManager.play(SOUND_BOMB_EXPLODE, SOUND_BOMB_EXPLODE_VOLUME);
}
function showGoldBlockHelp(x, y) {
if (getGameLogic().getGameMode() == com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
return(undefined);
}
var _local3 = getGameLogic().getWorld().getLayer(com.midasplayer.matchBlocks.GameLogic.LAYER_EXPLOSION);
var _local7 = -80 + (getGameLogic().getGameBoard().getWidth() * com.midasplayer.matchBlocks.BoardObject.BLOCK_WIDTH);
var _local6 = 345;
var _local2 = _local3.attachMovie("instructionTextGold", "instruction_gold", _local3.getNextHighestDepth());
var _local4 = _local2._width / 2;
var _local5 = _local2._height / 2;
_local2._x = Math.min(Math.max(-80 + _local4, x), _local7 - _local4);
_local2._y = Math.min(Math.max(_local5, y), _local6 - _local5);
_local2.text.text = com.midasplayer.util.I18n.getString("clear_to_win").toUpperCase();
_local2.onRollOver = function () {
this.removeMovieClip();
};
}
static var SOUND_INTRO = "sound_intro";
static var SOUND_INTRO_VOLUME = 50;
static var SOUND_INTRO_DELUXE = "sound_intro_deluxe";
static var SOUND_INTRO_DELUXE_VOLUME = 50;
static var SOUND_LOOP = "sound_loop";
static var SOUND_LOOP_VOLUME = 30;
static var SOUND_LOOP_DELUXE = "sound_loop_deluxe";
static var SOUND_LOOP_DELUXE_VOLUME = 30;
static var SOUND_LOOP_FAST_DELUXE = "sound_loop_fast_deluxe";
static var SOUND_LOOP_FAST_DELUXE_VOLUME = 30;
static var SOUND_MATCH = "sound_match";
static var SOUND_MATCH_VOLUME = 50;
static var SOUND_MELT = "sound_melt";
static var SOUND_MELT_VOLUME = 50;
static var SOUND_EMPTY_ROW = "sound_empty_row";
static var SOUND_EMPTY_ROW_VOLUME = 50;
static var SOUND_BOMB_COUNTDOWN = "sound_bomb_countdown";
static var SOUND_BOMB_COUNTDOWN_VOLUME = 50;
static var SOUND_BOMB_EXPLODE = "sound_bomb_explode";
static var SOUND_BOMB_EXPLODE_VOLUME = 50;
static var SOUND_LEVEL_COMPLETE = "sound_level_complete";
static var SOUND_LEVEL_COMPLETE_VOLUME = 50;
static var SOUND_LEVEL_COMPLETE_DELUXE = "sound_level_complete_deluxe";
static var SOUND_LEVEL_COMPLETE_DELUXE_VOLUME = 70;
static var SOUND_GAME_OVER = "sound_game_over";
static var SOUND_GAME_OVER_VOLUME = 50;
static var SOUND_GAME_OVER_DELUXE = "sound_game_over_deluxe";
static var SOUND_GAME_OVER_DELUXE_VOLUME = 50;
static var SOUND_BOSS = "sound_boss_";
static var SOUND_BOSS_VOLUME = 65;
var m_truckStarted = false;
var m_levelBonusPending = false;
var BOSS_LEVEL_STAGES = Array(0, 3, 6, 9);
var m_gameModeFrame = 1;
}
Symbol 508 MovieClip [__Packages.com.midasplayer.fx.SoundToggle] Frame 0
class com.midasplayer.fx.SoundToggle extends MovieClip
{
var m_clip;
function SoundToggle (parent, x, y) {
super();
m_clip = parent.attachMovie(SymbolName, "sound_toggle", parent.getNextHighestDepth());
if (x != undefined) {
m_clip._x = x;
}
if (y != undefined) {
m_clip._y = y;
}
m_clip.onEnterFrame = mx.utils.Delegate.create(this, update);
m_clip.onRelease = mx.utils.Delegate.create(this, toggle);
m_clip.onRollOver = mx.utils.Delegate.create(this, onRollOver);
m_clip.onRollOut = mx.utils.Delegate.create(this, onRollOut);
}
function onRollOver() {
m_isMouseOver = true;
}
function onRollOut() {
m_isMouseOver = false;
}
function update() {
var _local2 = 1;
if (com.midasplayer.fx.SoundManager.isSoundEnabled()) {
_local2 = ENABLED_FRAME;
}
if (!com.midasplayer.fx.SoundManager.isSoundEnabled()) {
_local2 = DISABLED_FRAME;
}
if ((com.midasplayer.fx.SoundManager.isSoundEnabled() && (m_isMouseOver)) && (m_clip._framesloaded >= ENABLED_MOUSE_OVER_FRAME)) {
_local2 = ENABLED_MOUSE_OVER_FRAME;
}
if (((!com.midasplayer.fx.SoundManager.isSoundEnabled()) && (m_isMouseOver)) && (m_clip._framesloaded >= DISABLED_MOUSE_OVER_FRAME)) {
_local2 = DISABLED_MOUSE_OVER_FRAME;
}
m_clip.gotoAndStop(_local2);
if (com.midasplayer.fx.SoundManager.isSoundEnabled()) {
m_clip.text.text = com.midasplayer.util.I18n.getString("sound_on");
} else {
m_clip.text.text = com.midasplayer.util.I18n.getString("sound_off");
}
}
function toggle() {
if (com.midasplayer.fx.SoundManager.isSoundEnabled()) {
trace("Sound: off");
com.midasplayer.fx.SoundManager.enableSounds(false);
} else {
trace("Sound: on");
com.midasplayer.fx.SoundManager.enableSounds(true);
}
}
static var SymbolName = "mcSoundToggle";
static var ENABLED_FRAME = 1;
static var DISABLED_FRAME = 3;
static var ENABLED_MOUSE_OVER_FRAME = 2;
static var DISABLED_MOUSE_OVER_FRAME = 6;
var m_isMouseOver = false;
}
Symbol 509 MovieClip [__Packages.com.midasplayer.matchBlocks.GameBoard] Frame 0
class com.midasplayer.matchBlocks.GameBoard
{
var m_totalTimeLeft, m_width, m_height, m_gameLogic, m_activeBlock, m_blocks, m_offscreenBlocks, m_goldenBlocks, m_levelComplete, m_boardMap, m_undoBuffer, m_pendingBlock;
function GameBoard () {
}
function setTotalTimeLeft(totalTimeLeft) {
m_totalTimeLeft = totalTimeLeft;
}
function getTotalTimeLeft() {
return(m_totalTimeLeft);
}
function getWidth() {
return(m_width);
}
function getHeight() {
return(m_height);
}
function setAchievement(achievement) {
m_hasAchievement = achievement;
}
function hasAchievement() {
return(m_hasAchievement);
}
function setGameLogic(gameLogic) {
m_gameLogic = gameLogic;
}
function getGameLogic() {
return(m_gameLogic);
}
function getLevelBonus() {
return(m_levelBonus);
}
function getMoveBonus() {
return(m_moveBonus);
}
function getMoveBonusPending() {
return(m_moveBonusPending);
}
function clearLevel(width, height) {
getGameLogic().getWorld().clearWorldObjects();
m_activeBlock = undefined;
m_blocks = new com.midasplayer.util.ArrayList();
m_offscreenBlocks = new com.midasplayer.util.ArrayList();
m_goldenBlocks = new com.midasplayer.util.ArrayList();
m_levelComplete = false;
m_levelBonus = 0;
m_moveBonus = 0;
m_moveBonusPending = 0;
m_width = width;
m_height = height;
m_boardMap = new com.midasplayer.util.ArrayList();
var _local3 = 0;
while (_local3 < m_height) {
var _local2 = 0;
while (_local2 < m_width) {
m_boardMap.insert(BOARD_MAP_EMPTY + "-1");
_local2++;
}
_local3++;
}
m_levelStr = "";
}
function setupLevel(blocks, goldBlocksIndex) {
var _local6 = 0;
m_levelStr = "";
if (getGameLogic().getGameMode() == com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
m_moveBonusPending = SCORE_MOVE_BONUS_DELUXE;
} else {
m_moveBonusPending = SCORE_MOVE_BONUS[getGameLogic().getLevel()];
}
var _local2 = 0;
while (_local2 < blocks.size()) {
var _local4 = String(blocks.get(_local2));
var _local3 = com.midasplayer.matchBlocks.BlockManager.createBlock(_local4, this);
if (addBlock(_local3)) {
commitBlock();
_local6 = Math.max(_local6, _local3.getBoardY());
} else {
trace("--- ERROR: Illegal position for this block");
undoBlock();
}
_local2++;
}
_local2 = 0;
while (_local2 < goldBlocksIndex.size()) {
var _local5 = Number(goldBlocksIndex.get(_local2));
var _local3 = getBlock(_local5);
_local3.setColor(com.midasplayer.matchBlocks.BlockManager.COLOR_GOLD);
m_goldenBlocks.insert(_local3);
_local2++;
}
checkForAttach();
}
function onTick() {
var _local2 = getGameLogic();
if ((_local2.getGameMode() == com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) && (_local2.getState() == com.midasplayer.gameCore.GameState.LEVEL_RUNNING)) {
m_totalTimeLeft = m_totalTimeLeft - _local2.getTimePerTick();
if (m_totalTimeLeft <= 0) {
m_totalTimeLeft = 0;
_local2.gameOver();
}
}
if (m_boardDirtyState != com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_NONE) {
if (m_boardDirtyState == com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_MATCH) {
isolatedBlocksRemove(false);
} else if (m_boardDirtyState == com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_MELT) {
isolatedBlocksRemove(false);
}
blocksFallDown();
checkLevelComplete();
if (!checkMovesLeft()) {
getGameLogic().gameOver();
}
if (m_boardDirtyState == com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_MATCH) {
checkDetonation();
}
m_boardDirtyState = com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_NONE;
}
}
function getBlock(objId) {
var _local2 = 0;
while (_local2 < m_blocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_blocks.get(_local2));
if (_local3.getObjId() == objId) {
return(_local3);
}
_local2++;
}
_local2 = 0;
while (_local2 < m_offscreenBlocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_offscreenBlocks.get(_local2));
if (_local3.getObjId() == objId) {
return(_local3);
}
_local2++;
}
return(undefined);
}
function getBoardMap(x, y) {
if ((((y < 0) || (y > (getHeight() - 1))) || (x < 0)) || (x > (getWidth() - 1))) {
return(BOARD_MAP_EMPTY);
}
return(String(m_boardMap.get((y * getWidth()) + x)).charAt(0));
}
function getBoardMapObjId(x, y) {
if ((((y < 0) || (y > (getHeight() - 1))) || (x < 0)) || (x > (getWidth() - 1))) {
return(-1);
}
return(Number(String(m_boardMap.get((y * getWidth()) + x)).substr(1)));
}
function getBoardMapObj(x, y) {
var _local4 = getBoardMapObjId(x, y);
if (_local4 == -1) {
return(undefined);
}
var _local2 = 0;
while (_local2 < m_blocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_blocks.get(_local2));
if (_local3.getObjId() == _local4) {
return(_local3);
}
_local2++;
}
_local2 = 0;
while (_local2 < m_offscreenBlocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_offscreenBlocks.get(_local2));
if (_local3.getObjId() == _local4) {
return(_local3);
}
_local2++;
}
return(undefined);
}
function setBoardMap(x, y, string, objId) {
if (objId == undefined) {
objId = -1;
}
m_boardMap.set((y * getWidth()) + x, string + objId);
}
function checkDetonation() {
if (getGameLogic().getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return(undefined);
}
var _local2 = 0;
while (_local2 < m_blocks.size()) {
var _local4 = com.midasplayer.matchBlocks.Block(m_blocks.get(_local2));
var _local3 = _local4.checkDetonation();
if (_local3) {
getGameLogic().gameOver();
getGameLogic().getGameView().onBombExplode();
}
_local2++;
}
}
function clickedBlock(block) {
if (getGameLogic().getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
getGameLogic().trace("click event on invalid state: " + getGameLogic().getStateString());
return(undefined);
}
if ((block == undefined) && (m_activeBlock == undefined)) {
return(undefined);
}
var _local4 = block.getObjId();
if (block == undefined) {
_local4 = -1;
}
var _local5 = ((("333," + getGameLogic().getTickCount()) + " ") + _local4) + " ,=0";
getGameLogic().sendPlaydata(_local5);
if (m_activeBlock != undefined) {
m_activeBlock.setActive(false);
}
if (block == m_activeBlock) {
m_activeBlock = undefined;
} else if ((((block != undefined) && (m_activeBlock != undefined)) && (block.getType() == m_activeBlock.getType())) && (block.getColor() == m_activeBlock.getColor())) {
var _local3 = SCORE_MATCH_PAIR;
if (block.isBonusBlock()) {
_local3 = _local3 * 2;
}
if (m_activeBlock.isBonusBlock()) {
_local3 = _local3 * 2;
}
getGameLogic().addScore(_local3);
m_numBlocksCleared = m_numBlocksCleared + 2;
m_moveBonusPending = Math.max(0, m_moveBonusPending - SCORE_MOVE_BONUS_STEP);
trace("match tick: " + getGameLogic().getTickCount());
trace("m_moveBonusPending: " + m_moveBonusPending);
startRemoveBlockAnim(m_activeBlock, com.midasplayer.matchBlocks.Block.REMOVE_ANIM_MATCH);
startRemoveBlockAnim(block, com.midasplayer.matchBlocks.Block.REMOVE_ANIM_MATCH);
m_activeBlock = undefined;
getGameLogic().getGameView().onMatch();
} else {
m_activeBlock = block;
}
if (m_activeBlock != undefined) {
m_activeBlock.setActive(true);
}
}
function getActiveBlock() {
return(m_activeBlock);
}
function blocksFallDown() {
var _local10 = new com.midasplayer.util.ArrayList();
var _local6 = new com.midasplayer.util.ArrayList();
var _local7 = 0;
while (_local7 < getHeight()) {
var _local8 = true;
var _local4 = 0;
while (_local4 < m_width) {
if (getBoardMap(_local4, _local7) != BOARD_MAP_EMPTY) {
_local8 = false;
break;
}
_local4++;
}
if (_local8) {
_local6.insert(_local7);
} else if (!_local8) {
var _local9 = 0;
while (_local9 < _local6.size()) {
_local10.insert(Number(_local6.get(_local9)));
_local9++;
}
_local6.clear();
}
_local7++;
}
var _local9 = _local10.size() - 1;
while (_local9 >= 0) {
var _local5 = Number(_local10.get(_local9));
var _local2 = 0;
while (_local2 < m_blocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_blocks.get(_local2));
if (_local3.getBoardY() > _local5) {
_local7 = _local3.getBoardY() - 1;
_local3.setDesiredY(_local7);
}
_local2++;
}
_local2 = 0;
while (_local2 < m_offscreenBlocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_offscreenBlocks.get(_local2));
if (_local3.getBoardY() > _local5) {
_local7 = _local3.getBoardY() - 1;
_local3.setDesiredY(_local7);
}
_local2++;
}
var _local4 = 0;
while (_local4 < getWidth()) {
m_boardMap.removeByIndex(_local5 * getWidth());
m_boardMap.insert(BOARD_MAP_EMPTY + "-1");
_local4++;
}
_local9--;
}
checkForAttach();
if (_local10.size() > 0) {
getGameLogic().getGameView().onEmptyRow(_local10);
}
}
function isolatedBlocksRemove(onlyBombs) {
getGameLogic().startPerformaceTimer("GameBoard", "isolatedBlocksRemove");
getGameLogic().trace((("isolatedBlocksRemove(" + onlyBombs) + "). Tick: ") + getGameLogic().getTickCount());
var _local5 = 0;
var _local7 = m_blocks.size();
var _local4 = 0;
while (_local4 < _local7) {
var _local2 = com.midasplayer.matchBlocks.Block(m_blocks.get(_local4));
var _local6 = _local2.getBoardY();
if (_local2.pendingRemoval() || (_local2.isGold())) {
} else if (onlyBombs && (!_local2.isBomb())) {
} else if (!hasAdjacentBlock(_local2)) {
var _local3 = 0;
if (_local2.isBomb()) {
_local3 = _local3 + SCORE_ISOLATED_BLOCK_BOMB;
} else {
_local3 = _local3 + SCORE_ISOLATED_BLOCK;
}
if (_local2.isBonusBlock()) {
_local3 = _local3 * 2;
}
_local3 = _local3 + (_local5 * SCORE_ISOLATED_BLOCK_ADD);
getGameLogic().addScore(_local3);
_local5++;
m_numBlocksCleared++;
startRemoveBlockAnim(_local2, com.midasplayer.matchBlocks.Block.REMOVE_ANIM_MELT);
if ((getGameLogic().getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) && (_local5 >= 4)) {
setAchievement(true);
getGameLogic().trace("-------- ACHIEVEMENT!!!");
}
getGameLogic().getGameView().onMelt();
}
_local4++;
}
getGameLogic().stopPerformaceTimer();
}
function hasAdjacentBlock(block) {
var _local11 = block.getObjId();
var _local14 = block.getShapeWidth();
var _local17 = block.getShapeHeight();
var _local16 = block.getBoardX();
var _local15 = (block.getBoardY() + _local17) - 1;
var _local13 = 0;
while (_local13 < _local17) {
var _local9 = 0;
while (_local9 < _local14) {
var _local8 = _local16 + _local9;
var _local10 = _local15 - _local13;
var _local12 = getBoardMapObjId(_local8, _local10);
if (_local12 != _local11) {
} else {
var _local3 = -1;
while (_local3 <= 1) {
var _local2 = -1;
while (_local2 <= 1) {
if ((_local2 == 0) && (_local3 == 0)) {
} else {
var _local4 = _local8 + _local2;
var _local5 = _local10 + _local3;
var _local6 = getBoardMapObjId(_local4, _local5);
if (_local6 == _local11) {
} else if (_local6 == -1) {
} else {
var _local7 = getBoardMapObj(_local4, _local5);
if (_local7.isBomb()) {
} else if (_local7.isGold()) {
} else {
return(true);
}
}
}
_local2++;
}
_local3++;
}
}
_local9++;
}
_local13++;
}
return(false);
}
function startRemoveBlockAnim(block, removeAnim) {
block.startRemoveAnim(removeAnim);
}
function removeBlock(block, boardState) {
var _local10 = block.getBoardX();
var _local8 = block.getBoardY();
var _local6 = block.getShapeHeight();
var _local9 = block.getShapeWidth();
var _local3 = 0;
while (_local3 < _local6) {
var _local2 = 0;
while (_local2 < _local9) {
if (block.getShape(_local2, _local3) == BOARD_MAP_BLOCK) {
var _local4 = _local10 + _local2;
var _local5 = ((_local8 + _local6) - 1) - _local3;
setBoardMap(_local4, _local5, BOARD_MAP_EMPTY);
}
_local2++;
}
_local3++;
}
if (m_activeBlock == block) {
m_activeBlock = undefined;
}
m_blocks.remove(block);
block.removeFromWorld();
if ((m_boardDirtyState == com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_NONE) || ((m_boardDirtyState == com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_MELT) && (boardState == com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_MATCH))) {
m_boardDirtyState = boardState;
}
}
function checkMovesLeft() {
var _local6 = m_blocks.size();
var _local5 = 0;
while (_local5 < _local6) {
var _local4 = com.midasplayer.matchBlocks.Block(m_blocks.get(_local5));
if (_local4.pendingRemoval()) {
return(true);
}
var _local2 = 0;
while (_local2 < _local6) {
if (_local5 == _local2) {
} else {
var _local3 = com.midasplayer.matchBlocks.Block(m_blocks.get(_local2));
if (_local4.isGold() || (_local3.isGold())) {
} else if ((_local4.getType() == _local3.getType()) && (_local4.getColor() == _local3.getColor())) {
return(true);
}
}
_local2++;
}
_local5++;
}
m_gameOverType = GAME_OVER_TYPE_NO_MORE_MOVES;
return(false);
}
function isNoMoreMoves() {
return(m_gameOverType == GAME_OVER_TYPE_NO_MORE_MOVES);
}
function addBlock(block) {
if ((block.getBoardX() + block.getShapeWidth()) > getWidth()) {
return(false);
}
m_undoBuffer = new com.midasplayer.util.ArrayList();
m_pendingBlock = block;
var _local5 = 0;
while (_local5 < m_pendingBlock.getShapeHeight()) {
var _local4 = 0;
while (_local4 < m_pendingBlock.getShapeWidth()) {
if (m_pendingBlock.getShape(_local4, _local5) == BOARD_MAP_BLOCK) {
var _local2 = m_pendingBlock.getBoardX() + _local4;
var _local3 = ((m_pendingBlock.getBoardY() + block.getShapeHeight()) - 1) - _local5;
var _local6 = getBoardMapObjId(_local2, _local3);
if (getBoardMap(_local2, _local3) == BOARD_MAP_BLOCK) {
trace(((("Trying to add block on occupied space! [" + _local2) + ",") + _local3) + "]");
undoBlock();
return(false);
}
setBoardMap(_local2, _local3, BOARD_MAP_PENDING);
m_undoBuffer.insert(_local2);
m_undoBuffer.insert(_local3);
}
_local4++;
}
_local5++;
}
return(true);
}
function undoBlock() {
setUndoBuffer(BOARD_MAP_EMPTY);
m_pendingBlock = undefined;
}
function commitBlock() {
getGameLogic().addWorldObject(m_pendingBlock, com.midasplayer.matchBlocks.GameLogic.LAYER_BLOCKS);
setUndoBuffer(BOARD_MAP_BLOCK, m_pendingBlock.getObjId());
m_offscreenBlocks.insert(m_pendingBlock);
if (m_levelStr != "") {
m_levelStr = m_levelStr + ", ";
}
m_levelStr = m_levelStr + com.midasplayer.matchBlocks.BlockManager.getBlockString(m_pendingBlock);
m_pendingBlock = undefined;
}
function checkForAttach() {
var _local5 = 0;
while (_local5 < m_offscreenBlocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_offscreenBlocks.get(_local5));
if (_local3.getBoardY() <= BOARD_TOP_Y) {
m_blocks.insert(_local3);
m_offscreenBlocks.remove(_local3);
_local3.attach();
_local5--;
}
_local5++;
}
if (!m_goldBlockHelpDisplayed) {
var _local9 = true;
var _local7 = 0;
var _local6 = 0;
var _local8 = 0;
_local5 = 0;
while (_local5 < m_goldenBlocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_goldenBlocks.get(_local5));
if (!_local3.isAttached()) {
_local9 = false;
break;
}
var _local4 = 0;
while (_local4 < _local3.getShapeHeight()) {
var _local2 = 0;
while (_local2 < _local3.getShapeWidth()) {
if (_local3.getShape(_local2, _local4) == BOARD_MAP_BLOCK) {
_local7 = _local7 + (_local3.getX() + (_local2 * com.midasplayer.matchBlocks.BoardObject.BLOCK_WIDTH));
_local6 = _local6 + (_local3.getY() - (_local4 * com.midasplayer.matchBlocks.BoardObject.BLOCK_HEIGHT));
_local8++;
}
_local2++;
}
_local4++;
}
_local5++;
}
if (_local9) {
_local7 = _local7 / _local8;
_local6 = _local6 / _local8;
_local7 = _local7 + (com.midasplayer.matchBlocks.BoardObject.BLOCK_WIDTH / 2);
_local6 = _local6 - (com.midasplayer.matchBlocks.BoardObject.BLOCK_HEIGHT / 2);
getGameLogic().getGameView().showGoldBlockHelp(_local7, _local6);
m_goldBlockHelpDisplayed = true;
}
}
}
function setUndoBuffer(string, objId) {
var _local2 = 0;
while (_local2 < (m_undoBuffer.size() / 2)) {
var _local4 = Number(m_undoBuffer.get(_local2 * 2));
var _local3 = Number(m_undoBuffer.get((_local2 * 2) + 1));
setBoardMap(_local4, _local3, string, objId);
_local2++;
}
m_undoBuffer = undefined;
}
function checkLevelComplete() {
if (m_levelComplete) {
return(undefined);
}
var _local4 = false;
var _local2 = 0;
while (_local2 < m_goldenBlocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_goldenBlocks.get(_local2));
if (hasAdjacentBlock(_local3)) {
_local4 = true;
break;
}
_local2++;
}
if ((!_local4) && (m_goldenBlocks.size() > 0)) {
getGameLogic().trace("Golden block is laying free. Complete! - Tick: " + getGameLogic().getTickCount());
getGameLogic().trace("Time left: " + getGameLogic().getTimeLeft());
getGameLogic().trace("Time left percent: " + getGameLogic().getTimeLeftPercent());
if (getGameLogic().getGameMode() != com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) {
m_levelBonus = Math.round((SCORE_LEVEL_BONUS * getGameLogic().getTimeLeftPercent()) / 100);
getGameLogic().addScore(m_levelBonus);
} else {
getGameLogic().addScore(m_numBlocksCleared * SCORE_PER_BLOCK_CLEARED);
}
m_levelComplete = true;
_local2 = 0;
while (_local2 < m_goldenBlocks.size()) {
var _local3 = com.midasplayer.matchBlocks.Block(m_goldenBlocks.get(_local2));
_local3.startRemoveAnim(com.midasplayer.matchBlocks.Block.REMOVE_ANIM_MELT);
_local2++;
}
getGameLogic().getGameView().onMelt();
}
if (m_levelComplete) {
if ((getGameLogic().getGameMode() == com.midasplayer.gameCore.AbstractGameLogic.GAME_MODE_DELUXE) && (getGameLogic().getLevel() >= 4)) {
setAchievement(true);
getGameLogic().trace("-------- ACHIEVEMENT!!!");
}
m_moveBonus = m_moveBonusPending;
getGameLogic().addScore(m_moveBonus);
getGameLogic().completeLevel();
}
}
function toString() {
var _local5 = "";
var _local6 = Math.min(getHeight() - 1, 60);
var _local4 = _local6;
while (_local4 >= 0) {
var _local3 = 0;
while (_local3 < m_width) {
var _local2 = String(getBoardMapObjId(_local3, _local4));
if (_local2 == -1) {
_local2 = " ";
} else if (_local2 < 10) {
_local2 = " " + _local2;
} else if (_local2 < 100) {
_local2 = " " + _local2;
}
_local5 = _local5 + (" " + _local2);
_local3++;
}
_local5 = _local5 + newline;
_local4--;
}
return(_local5);
}
static var BOARD_MAP_EMPTY = ".";
static var BOARD_MAP_PENDING = "!";
static var BOARD_MAP_BLOCK = "*";
static var GAME_OVER_TYPE_NONE = 0;
static var GAME_OVER_TYPE_NO_MORE_MOVES = 1;
static var SCORE_MATCH_PAIR = 20;
static var SCORE_ISOLATED_BLOCK = 30;
static var SCORE_ISOLATED_BLOCK_ADD = 10;
static var SCORE_ISOLATED_BLOCK_BOMB = 50;
static var SCORE_LEVEL_BONUS = 100;
static var SCORE_MOVE_BONUS = [2000, 3000, 4000];
static var SCORE_MOVE_BONUS_DELUXE = 1000;
static var SCORE_MOVE_BONUS_STEP = 50;
static var SCORE_PER_BLOCK_CLEARED = 1;
static var BOARD_TOP_Y = 14;
static var BOMB_SAFE_ROWS = 2;
var m_gameOverType = GAME_OVER_TYPE_NONE;
var m_boardDirtyState = com.midasplayer.matchBlocks.Block.BLOCK_REMOVE_NONE;
var m_levelBonus = 0;
var m_moveBonus = 0;
var m_moveBonusPending = 0;
var m_numBlocksCleared = 0;
var m_hasAchievement = false;
var m_goldBlockHelpDisplayed = false;
var m_levelStr = "";
}