Frame 1
_root.gameLogic = new com.midasplayer.hexCombo.GameLogic();
_root.gameView = new com.midasplayer.hexCombo.GameView();
_root.gameLogic.setGameView(_root.gameView);
_root.gameLogic.init(_root.gameBoardDummy);
_root.gameBoardDummy.sum_0._visible = false;
_root.gameBoardDummy.sum_1._visible = false;
_root.gameBoardDummy.sum_2._visible = false;
_root.gameView.setBombButtonVisible(false);
_root.gameView.setShuffleButtonVisible(false);
_root.cauldron.summary._visible = false;
_root.witch_twinkle._visible = false;
_root.gameView.setParallaxScroll(1);
Symbol 27 MovieClip [scorepop] Frame 40
this.removeMovieClip();
Symbol 59 MovieClip Frame 1
stop();
Symbol 107 MovieClip Frame 1
stop();
Symbol 132 MovieClip Frame 1
stop();
Symbol 136 MovieClip Frame 1
stop();
Symbol 150 MovieClip Frame 1
stop();
Symbol 174 MovieClip Frame 51
stop();
Symbol 176 MovieClip Frame 1
stop();
Symbol 179 MovieClip Frame 1
stop();
Symbol 201 MovieClip Frame 1
stop();
Symbol 208 MovieClip Frame 1
stop();
Symbol 219 MovieClip Frame 250
stop();
Symbol 238 MovieClip Frame 1
stop();
Symbol 238 MovieClip Frame 250
stop();
Symbol 246 MovieClip Frame 1
stop();
Symbol 246 MovieClip Frame 150
stop();
Symbol 254 MovieClip Frame 1
stop();
Symbol 254 MovieClip Frame 250
stop();
Symbol 259 MovieClip Frame 1
stop();
Symbol 259 MovieClip Frame 150
stop();
Symbol 262 MovieClip Frame 1
stop();
Symbol 262 MovieClip Frame 150
stop();
Symbol 265 MovieClip Frame 1
stop();
Symbol 265 MovieClip Frame 250
stop();
Symbol 268 MovieClip Frame 1
stop();
Symbol 268 MovieClip Frame 150
stop();
Symbol 296 MovieClip Frame 1
stop();
Symbol 296 MovieClip Frame 150
stop();
Symbol 300 MovieClip Frame 1
stop();
this.transformer.gotoAndStop(_root.gameView.getTransformerFrame());
this.transformer.clip.play();
Symbol 300 MovieClip Frame 19
_root.gameView.playTransformationSound();
Symbol 300 MovieClip Frame 39
this.transformer.gotoAndStop(_root.gameView.getTransformerFrame());
this.transformer.clip.play();
Symbol 313 MovieClip Frame 1
this.time_alert._visible = false;
Symbol 313 MovieClip Frame 300
this.time_alert._visible = false;
Symbol 335 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 336 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 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) {
fscommand ("gameQuit");
_sentGameQuit = true;
}
}
}
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 337 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().removeClip();
_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() {
trace("clearWorldObjects");
var _local2 = 0;
while (_local2 < m_worldObjects.size()) {
var _local3 = com.midasplayer.gameCore.WorldObject(m_worldObjects.get(_local2));
_local3.getObjectView().removeClip();
_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 = 0;
static var WORLD_OFFSET_Y = 0;
var m_worldObjectIdCounter = 0;
}
Symbol 338 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 339 MovieClip [__Packages.com.midasplayer.util.Iterator] Frame 0
interface com.midasplayer.util.Iterator
{
}
Symbol 340 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 341 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);
getObjectView().makeDirty();
}
function setNextVisible(visible) {
m_visible[1] = visible;
getObjectView().makeDirty();
}
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 addInputEnabled(input) {
setInputEnabled(m_inputEnabled | input);
}
function removeInputEnabled(input) {
setInputEnabled(m_inputEnabled ^ input);
}
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 onMouseMove() {
}
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;
static var INPUT_MOUSE_MOVE = 64;
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 342 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 removeClip() {
m_clip.removeMovieClip();
onClipRemoved();
}
function updateHandCursor() {
m_clip.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().onDragOut = mx.utils.Delegate.create(this, onDragOut);
} else {
getClip().onDragOut = undefined;
}
if (getObject().isInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_DRAG_OUT)) {
getClip().onDragOut = mx.utils.Delegate.create(this, onDragOut);
} else {
getClip().onDragOut = undefined;
}
if (getObject().isInputEnabled(com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_MOVE)) {
getClip().onMouseMove = mx.utils.Delegate.create(this, onMouseMove);
} else {
getClip().onMouseMove = undefined;
}
}
function isMouseOver() {
return(m_mouseOver);
}
function onPress() {
getObject().onPress();
getObject().onMouseEvent();
}
function onRelease() {
getObject().onRelease();
getObject().onMouseEvent();
}
function onRollOver() {
getObject().onRollOver();
m_mouseOver = true;
getObject().onMouseEvent();
}
function onRollOut() {
getObject().onRollOut();
m_mouseOver = false;
getObject().onMouseEvent();
}
function onDragOver() {
getObject().onDragOver();
m_mouseOver = true;
getObject().onMouseEvent();
}
function onDragOut() {
getObject().onDragOut();
m_mouseOver = false;
getObject().onMouseEvent();
}
function onMouseMove() {
getObject().onMouseMove();
getObject().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;
}
onRender(ipTime);
}
function getGameLogic() {
return(getObject().getGameLogic());
}
function getObject() {
return(m_object);
}
function onClipLoaded() {
}
function onClipRemoved() {
}
function onRender(ipTime) {
}
static var SYMBOL_EMPTY_MOVIECLIP = "____symbol_empty_movieclip";
var m_mouseOver = false;
var m_worldLayer = 0;
var m_dirty = false;
}
Symbol 343 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 344 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 345 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 346 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 347 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);
}
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 _local4 = (getTimer() - m_lastTimer) / 1000;
m_lastTimer = getTimer();
m_timeRemaining = m_timeRemaining - _local4;
var _local6 = m_okButtonText;
var _local5 = m_clip[SIGN_NAME][TIMER_NAME];
if (_local5 != undefined) {
_local5.gotoAndStop(m_timeRemaining - 1);
}
updateButtonText();
if (m_timeRemaining <= 0) {
exit();
}
var _local2;
if (_local2 != undefined) {
var _local3 = Math.floor(_local4 * m_fps);
if (m_looping) {
_local3 = (_local3 % _local2._framesloaded) + 1;
} else if (_local3 > _local2._framesloaded) {
_local3 = _local2._framesloaded;
}
_local2.gotoAndStop(_local3);
}
}
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 = 20;
var m_looping = true;
}
Symbol 348 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 349 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 350 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 351 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 _local7 = new com.midasplayer.util.Map();
var _local9 = new XML();
_local9.ignoreWhite = true;
_local9.parseXML(data);
var _local4 = _local9.firstChild;
if (_local4.nodeName != "gamedata") {
error = "Bad XML (expected <gamedata>)";
return(undefined);
}
for (var _local8 in _local4.attributes) {
var _local5;
var _local3 = _local4.attributes[_local8];
if ((_local3.indexOf("[") == 0) && ((_local5 = _local3.indexOf("]")) != -1)) {
_local3 = _local3.substring(1, _local5).split(",");
}
attrib.put(_local8, _local3);
}
for (var _local8 in _local4.childNodes) {
var _local2 = _local4.childNodes[_local8];
switch (_local2.nodeName) {
case "text" :
_local7.put(_local2.attributes.id, _local2.firstChild.nodeValue);
break;
case "multiplayer" :
for (var _local8 in _local2.attributes) {
multiplayerAttrib.put(_local8, _local2.attributes[_local8]);
}
break;
default :
var _local6;
_local6 = trees.get(_local2.nodeName);
if (_local6 == undefined) {
trees.put(_local2.nodeName, [_local2]);
} else {
_local6.push(_local2);
}
}
}
trace("parse(): completed");
com.midasplayer.util.I18n.init(_local7);
}
var parsed = false;
}
Symbol 352 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 353 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 354 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 355 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 356 MovieClip [__Packages.com.midasplayer.hexCombo.GameView] Frame 0
class com.midasplayer.hexCombo.GameView extends com.midasplayer.gameCore.AbstractGameView
{
var m_timerClip, m_cauldron, m_gameBoardCleared, m_transformationDone, m_score, m_transformer, m_buttonBomb, m_buttonBombBackground, m_buttonShuffle, m_buttonShuffleBackground, m_witchAnim, m_boardBlink, m_bombHighlight, m_boardBlinkStart, m_witchAnimStart;
function GameView () {
super();
}
function getGameLogic() {
return(com.midasplayer.hexCombo.GameLogic(super.getGameLogic()));
}
function onInitInfoScreen(infoScreen, currentState) {
setBombButtonVisible(false);
setShuffleButtonVisible(false);
m_timerClip.time_alert._visible = false;
com.midasplayer.fx.SoundManager.stop(SOUND_LOOP);
com.midasplayer.fx.SoundManager.stop(SOUND_COUNTDOWN);
if (currentState == com.midasplayer.gameCore.GameState.INSTRUCTIONS) {
infoScreen.setExpireTime(SUMMARY_INFO_SCREEN_TIME);
infoScreen.setClip(m_cauldron.instructions);
infoScreen.setSound(SOUND_INTRO, SOUND_INTRO_VOLUME);
infoScreen.setText("instructions_header", com.midasplayer.util.I18n.getString("instructions_header"));
infoScreen.setText("instructions", com.midasplayer.util.I18n.getString("instructions"));
} else if ((currentState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) || (currentState == com.midasplayer.gameCore.GameState.GAME_SUMMARY)) {
infoScreen.setExpireTime(SUMMARY_INFO_SCREEN_TIME);
infoScreen.setClip(m_cauldron.summary);
m_cauldron.summary._visible = true;
infoScreen.setDeleteOnExit(false);
var _local8;
if (currentState != com.midasplayer.gameCore.GameState.GAME_SUMMARY) {
infoScreen.setSound(SOUND_SUMMARY, SOUND_SUMMARY_VOLUME);
_local8 = com.midasplayer.util.I18n.getString("level_complete");
} else {
infoScreen.setSound(SOUND_GAME_OVER, SOUND_GAME_OVER_VOLUME);
_local8 = com.midasplayer.util.I18n.getString("game_over");
}
var _local6 = getGameLogic();
var _local9 = _local6.getScore();
var _local12 = _local6.getGameBoard().getHeatBonus();
var _local10 = _local6.getGameBoard().getSuperHeatBonus();
var _local14 = (_local9 - _local12) - _local10;
infoScreen.setText("header", _local8);
infoScreen.setText("score_header", com.midasplayer.util.I18n.getString("score") + ":");
infoScreen.setText("score", String(_local14));
infoScreen.setText("level_bonus_header", com.midasplayer.util.I18n.getString("heat_bonus") + ":");
infoScreen.setText("level_bonus", "");
infoScreen.setText("super_heat_header", com.midasplayer.util.I18n.getString("super_heat_bonus") + ":");
infoScreen.setText("super_heat", String(_local10));
infoScreen.setElementVisible("super_heat_header", false);
infoScreen.setElementVisible("super_heat", false);
infoScreen.setText("total_score_header", com.midasplayer.util.I18n.getString("total_score") + ":");
infoScreen.setText("total_score", String(_local9));
infoScreen.setElementVisible("total_score", false);
}
var _local7 = new Object();
_local7.onMouseDown = function () {
var _local5 = _root.gameLogic;
var _local4 = com.midasplayer.gameCore.InfoScreen(_local5.getInfoScreen());
var _local6 = _local4.getTimeRemaining();
var _local7 = _local4.getTimePassed();
if ((_local6 > com.midasplayer.hexCombo.GameView.SUMMARY_MOVE_TIME) && ((_local7 > com.midasplayer.hexCombo.GameView.SUMMARY_MOVE_TIME) || (_local5.getState() == com.midasplayer.gameCore.GameState.INSTRUCTIONS))) {
var _local3 = com.midasplayer.hexCombo.GameView.SUMMARY_MOVE_TIME + com.midasplayer.hexCombo.GameView.WITCH_ANIM_TIME;
if (_root.gameLogic.getState() == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) {
_local3 = _local3 + com.midasplayer.hexCombo.GameView.WITCH_ANIM_TIME;
}
_local3 = Math.min(_local4.getTimeRemaining(), _local3);
_local4.setTimeRemaining(_local3);
Mouse.removeListener(this);
}
};
Mouse.addListener(_local7);
setWitchAnim(_root.witch, 0);
}
function onUpdateInfoScreen(infoScreen, currentState) {
var _local3 = infoScreen.getTimeRemaining();
var _local8 = SUMMARY_INFO_SCREEN_TIME - _local3;
if (currentState == com.midasplayer.gameCore.GameState.INSTRUCTIONS) {
_local3 = Math.max(0, infoScreen.getTimeRemaining());
var _local12 = com.midasplayer.util.I18n.getString("game_starts");
var _local11 = ((_local3 == 1) ? (com.midasplayer.util.I18n.getString("second")) : (com.midasplayer.util.I18n.getString("seconds")));
infoScreen.setText("timer", (((((_local12 + " ") + com.midasplayer.util.I18n.getString("in")) + " ") + Math.round(_local3)) + " ") + _local11);
}
if ((currentState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) || (currentState == com.midasplayer.gameCore.GameState.GAME_SUMMARY)) {
_local3 = infoScreen.getTimeRemaining();
_local8 = SUMMARY_INFO_SCREEN_TIME - _local3;
var _local12 = ((currentState == com.midasplayer.gameCore.GameState.LEVEL_SUMMARY) ? (com.midasplayer.util.I18n.getString("game_starts")) : (com.midasplayer.util.I18n.getString("game_ends")));
var _local11 = ((_local3 == 1) ? (com.midasplayer.util.I18n.getString("second")) : (com.midasplayer.util.I18n.getString("seconds")));
infoScreen.setText("timer", (((((_local12 + " ") + com.midasplayer.util.I18n.getString("in")) + " ") + Math.round(_local3)) + " ") + _local11);
}
var _local7 = -1;
var _local9 = -1;
if ((_local8 <= SUMMARY_MOVE_TIME) && (currentState != com.midasplayer.gameCore.GameState.INSTRUCTIONS)) {
_local7 = _local8 / SUMMARY_MOVE_TIME;
} else if (((_local3 <= (SUMMARY_MOVE_TIME + WITCH_ANIM_TIME)) && (_local3 > WITCH_ANIM_TIME)) && (currentState != com.midasplayer.gameCore.GameState.GAME_SUMMARY)) {
_local7 = (_local3 - WITCH_ANIM_TIME) / SUMMARY_MOVE_TIME;
_local9 = 1 - _local7;
} else if ((_local3 <= WITCH_ANIM_TIME) && (currentState != com.midasplayer.gameCore.GameState.GAME_SUMMARY)) {
var _local13 = 1 - (_local3 / WITCH_ANIM_TIME);
setWitchAnim(_root.witch, _local13);
} else {
if (!m_gameBoardCleared) {
_root.gameBoardDummy._alpha = 0;
m_gameBoardCleared = true;
}
var _local6 = _local8 - SUMMARY_MOVE_TIME;
var _local10 = getGameLogic().getGameBoard().getHeatBonus();
infoScreen.setText("level_bonus", String(_local10));
if ((_local6 > 0) && (_local6 <= HEAT_COUNT_TIME)) {
var _local13 = _local6 / HEAT_COUNT_TIME;
var _local15 = Math.round(_local13 * _local10);
infoScreen.setText("level_bonus", String(_local15));
} else if (_local6 <= (HEAT_COUNT_TIME + WITCH_ANIM_TIME)) {
var _local13 = (_local6 - HEAT_COUNT_TIME) / WITCH_ANIM_TIME;
setWitchAnim(_root.cauldron.summary, _local13);
} else if (((_local6 > (HEAT_COUNT_TIME + WITCH_ANIM_TIME)) && (!m_transformationDone)) && (currentState != com.midasplayer.gameCore.GameState.INSTRUCTIONS)) {
setWitchAnim(_root.cauldron.summary, 0);
var _local14 = Math.min(NUM_TRANSFORMATIONS_PER_LEVEL, getGameLogic().getGameBoard().getMaxHeat() - 1);
advanceTransformation(_local14);
m_transformationDone = true;
m_score.text = getGameLogic().getScore();
infoScreen.setElementVisible("total_score", true);
if (getGameLogic().getGameBoard().getSuperHeatBonus() > 0) {
infoScreen.setElementVisible("super_heat_header", true);
infoScreen.setElementVisible("super_heat", true);
}
}
}
if (_local7 != -1) {
var _local13 = (Math.sin((_local7 * Math.PI) - (Math.PI/2)) + 1) / 2;
setParallaxScroll(_local13);
}
if (_local9 != -1) {
var _local13 = _local9;
setSkyFade(_local13);
}
}
function onLevelSetup() {
setWitchAnim(_root.witch, 0);
m_gameBoardCleared = false;
m_transformationDone = false;
startBlinkEffect();
com.midasplayer.fx.SoundManager.play(SOUND_LOOP, SOUND_LOOP_VOLUME, true);
}
function onInit() {
if (getGameLogic().isDev()) {
com.midasplayer.fx.SoundManager.enableSounds(false);
}
var gameLogic = getGameLogic();
new com.midasplayer.fx.SoundToggle(_root, 720, 560);
m_timerClip = _root.moon_cover;
m_timerClip.gotoAndStop(1);
m_score = _root.score;
m_cauldron = _root.cauldron;
m_transformer = _root.grass.transformer;
_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 = ((com.midasplayer.hexCombo.GameBoard.INPUT_TYPE_QUIT + ",") + _local2.getTickCount()) + " ,=0";
_local2.sendPlaydata(_local3);
_local2.gameOver();
};
m_buttonBomb = _root.button_bomb;
m_buttonBombBackground = _root.bomb_background;
m_buttonBomb.onRelease = function () {
var _local1 = gameLogic.getGameBoard();
if (gameLogic.getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return(undefined);
}
_local1.enableBomb();
};
m_buttonShuffle = _root.button_shuffle;
m_buttonShuffleBackground = _root.shuffle_background;
m_buttonShuffle.onRelease = function () {
var _local1 = gameLogic.getGameBoard();
if (gameLogic.getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return(undefined);
}
_local1.shuffle();
};
}
function onRender() {
var _local6 = getGameLogic();
var _local5 = _local6.getGameBoard();
if (m_witchAnim) {
updateWitchAnim();
}
if (m_boardBlink) {
updateBlinkEffect();
}
var _local9 = (100 - _local6.getTimeLeftPercent()) / 100;
var _local10 = Math.round(_local9 * m_timerClip._totalframes) + 1;
m_timerClip.gotoAndStop(_local10);
var _local3 = Math.round(_local6.getTimeLeft() / 1000);
if (_local3 <= TIME_ALERT) {
m_timerClip.time_alert._visible = true;
}
if ((_local3 <= TIME_ALERT_SOUND) && (_local3 > (TIME_ALERT_SOUND - 2))) {
if (!com.midasplayer.fx.SoundManager.isPlaying(SOUND_COUNTDOWN)) {
com.midasplayer.fx.SoundManager.play(SOUND_COUNTDOWN, SOUND_COUNTDOWN_VOLUME);
}
}
_root.time.text = String(_local3);
if (_local5.getHeatBonus() == 0) {
updateScore();
}
var _local4 = _local5.getSum();
var _local8 = Math.floor(_local4 / 10);
var _local7 = _local4 % 10;
if (_local4 <= 0) {
_root.gameBoardDummy.sum_0._visible = false;
_root.gameBoardDummy.sum_1._visible = false;
_root.gameBoardDummy.sum_2._visible = false;
} else if (_local4 < 10) {
_root.gameBoardDummy.sum_0._visible = true;
_root.gameBoardDummy.sum_1._visible = false;
_root.gameBoardDummy.sum_2._visible = false;
} else {
_root.gameBoardDummy.sum_0._visible = false;
_root.gameBoardDummy.sum_1._visible = true;
_root.gameBoardDummy.sum_2._visible = true;
}
_root.gameBoardDummy.sum_0.gotoAndStop(_local7 + 1);
_root.gameBoardDummy.sum_1.gotoAndStop(_local7 + 1);
_root.gameBoardDummy.sum_2.gotoAndStop(_local8 + 1);
setBombButtonVisible(_local5.getNumBombs() > 0);
setShuffleButtonVisible(_local5.getNumShuffles() > 0);
}
function updateScore() {
m_score.text = getGameLogic().getScore();
}
function setBombButtonVisible(bombVisible) {
m_buttonBomb._visible = bombVisible;
m_buttonBombBackground._visible = !bombVisible;
}
function setShuffleButtonVisible(shuffleVisible) {
m_buttonShuffle._visible = shuffleVisible;
m_buttonShuffleBackground._visible = !shuffleVisible;
}
function setupBombHighlight() {
m_bombHighlight = new com.midasplayer.util.ArrayList();
var _local4 = getGameLogic().getWorld().getLayer(com.midasplayer.hexCombo.GameLogic.LAYER_LINKS);
var _local2 = 0;
while (_local2 < 7) {
var _local3 = _local4.attachMovie("bomb_highlight", "highlight_" + _local2, _local4.getNextHighestDepth());
_local3._visible = false;
m_bombHighlight.insert(_local3);
_local2++;
}
}
function setBombHighlight(card) {
var _local6 = getGameLogic().getGameBoard();
var _local5 = _local6.getAdjacentCards(card.getBoardX(), card.getBoardY());
_local5.insert(card);
var _local2 = 0;
while (_local2 < m_bombHighlight.size()) {
card = com.midasplayer.hexCombo.Card(_local5.get(_local2));
var _local3 = MovieClip(m_bombHighlight.get(_local2));
if (card == undefined) {
_local3._visible = false;
} else {
_local3._visible = true;
}
_local3._x = card.getX();
_local3._y = card.getY();
_local2++;
}
}
function clearBombHighlight() {
if (m_bombHighlight == undefined) {
return(undefined);
}
var _local2 = 0;
while (_local2 < m_bombHighlight.size()) {
var _local3 = MovieClip(m_bombHighlight.get(_local2));
_local3.removeMovieClip();
_local2++;
}
m_bombHighlight = undefined;
}
function increaseMaxHeat() {
_root.cauldron.bubbles.gotoAndPlay(1);
var _local3 = getGameLogic().getGameBoard().getMaxHeat() - 1;
com.midasplayer.fx.SoundManager.play(SOUND_HEAT + _local3, SOUND_HEAT_VOLUME);
}
function makeScorePop(score, xPos, yPos) {
var _local4 = getGameLogic().getWorld().getLayer(com.midasplayer.hexCombo.GameLogic.LAYER_SCOREPOP);
var _local2 = _local4.attachMovie("scorepop", (("scorepop_" + xPos) + "_") + yPos, _local4.getNextHighestDepth());
_local2.numbers["0"].gotoAndStop((score % 10) + 1);
if (score >= 10) {
_local2.numbers["1"].gotoAndStop((((score % 100) - (score % 10)) / 10) + 1);
} else {
_local2.numbers["1"]._visible = false;
}
if (score >= 100) {
_local2.numbers["2"].gotoAndStop((((score % 1000) - (score % 100)) / 100) + 1);
} else {
_local2.numbers["2"]._visible = false;
}
_local2._x = xPos;
_local2._y = yPos;
}
function advanceTransformation(heatLevel) {
m_transformerFrame = TRANSFORMATIONS_MAP[m_transformerFrame - 1][heatLevel];
m_transformerFrame = Math.min(NUM_TRANSFORMATIONS, m_transformerFrame);
_root.grass.morph.gotoAndPlay(1);
}
function getTransformerFrame() {
return(m_transformerFrame);
}
function playTransformationSound() {
com.midasplayer.fx.SoundManager.play(SOUND_TRANSFORMATION, SOUND_TRANSFORMATION_VOLUME);
}
function startBlinkEffect() {
m_boardBlink = true;
m_boardBlinkStart = getTimer();
}
function updateBlinkEffect() {
var _local3 = (getTimer() - m_boardBlinkStart) / BOARD_BLINK_TIME;
if (_local3 > 1) {
m_boardBlink = false;
_root.gameBoardDummy._alpha = 100;
return(undefined);
}
_root.gameBoardDummy._alpha = _local3 * 100;
}
function superHeat() {
updateScore();
_root.cauldron.super_heat.play();
com.midasplayer.fx.SoundManager.play(SOUND_SUPER_HEAT, SOUND_SUPER_HEAT_VOLUME);
}
function enableBomb() {
setupBombHighlight();
}
function detonateBomb() {
_root.cauldron.bomb_flash.play();
com.midasplayer.fx.SoundManager.play(SOUND_BOMB_EXPLODE, SOUND_BOMB_EXPLODE_VOLUME);
}
function shuffle() {
com.midasplayer.fx.SoundManager.play(SOUND_SHUFFLE, SOUND_SHUFFLE_VOLUME);
}
function startWitchAnim() {
m_witchAnim = true;
m_witchAnimStart = getTimer();
}
function updateWitchAnim() {
var _local3 = (getTimer() - m_witchAnimStart) / (WITCH_ANIM_TIME * 1000);
if (_local3 > 1) {
m_witchAnim = false;
setWitchAnim(_root.witch, 0);
return(undefined);
}
setWitchAnim(_root.witch, _local3);
}
function setWitchAnim(mc, ip) {
var _local1 = Math.round(ip * mc._totalframes) + 1;
mc.gotoAndStop(_local1);
}
function setParallaxScroll(ip) {
_root.horizon.horizon_forest_2._x = (-ip) * HORIZON__FOREST_2_MOVE_DIST;
_root.horizon.horizon_forest_1._x = (-ip) * HORIZON__FOREST_1_MOVE_DIST;
_root.horizon.horizon_mountains._x = (-ip) * HORIZON_MOUNTAINS_MOVE_DIST;
_root.horizon.horizon_sky._x = ((-ip) * HORIZON_SKY_MOVE_DIST) + HORIZON_SKY_OFFSET;
_root.cauldron._x = (-ip) * CAULDRON_MOVE_DIST;
_root.grass.morph._x = ((-ip) * TRANSFORMER_MOVE_DIST) + TRANSFORMER_OFFSET;
_root.gameBoardDummy._x = ((-ip) * GAME_BOARD_MOVE_DIST) + GAME_BOARD_OFFSET;
_root.grass.grass_front._x = (-ip) * GRASS_FRONT_MOVE_DIST;
_root.grass.cat._x = (-ip) * CAT_MOVE_DIST;
_root.grass.grass_back._x = (-ip) * GRASS_BACK_MOVE_DIST;
}
function setSkyFade(ip) {
var _local6 = getGameLogic();
var _local3 = _local6.getLevel();
var _local5 = 1;
if (_local3 > 0) {
var _local7 = Number(HORIZON_SKY_FRAMES[_local3]);
var _local4 = Number(HORIZON_SKY_FRAMES[_local3 - 1]);
_local5 = Math.round((ip * (_local7 - _local4)) + _local4);
}
_root.horizon.horizon_sky.gotoAndStop(_local5);
}
static var SOUND_INTRO = "sound_intro";
static var SOUND_INTRO_VOLUME = 50;
static var SOUND_LOOP = "sound_loop";
static var SOUND_LOOP_VOLUME = 30;
static var SOUND_MARK_CARD = "sound_mark_card";
static var SOUND_MARK_CARD_VOLUME = 30;
static var SOUND_SHUFFLE = "sound_shuffle";
static var SOUND_SHUFFLE_VOLUME = 50;
static var SOUND_BOMB_EXPLODE = "sound_bomb_explode";
static var SOUND_BOMB_EXPLODE_VOLUME = 50;
static var SOUND_COMBO = "sound_combo";
static var SOUND_COMBO_VOLUME = 50;
static var SOUND_HEAT = "sound_heat_";
static var SOUND_HEAT_VOLUME = 50;
static var SOUND_SUPER_HEAT = "sound_super_heat";
static var SOUND_SUPER_HEAT_VOLUME = 50;
static var SOUND_COUNTDOWN = "sound_countdown";
static var SOUND_COUNTDOWN_VOLUME = 50;
static var SOUND_TRANSFORMATION = "sound_transformation";
static var SOUND_TRANSFORMATION_VOLUME = 100;
static var SOUND_SUMMARY = "sound_summary";
static var SOUND_SUMMARY_VOLUME = 50;
static var SOUND_GAME_OVER = "sound_game_over";
static var SOUND_GAME_OVER_VOLUME = 50;
static var SUMMARY_INFO_SCREEN_TIME = 17;
static var SUMMARY_MOVE_TIME = 3;
static var TIME_ALERT = 15;
static var TIME_ALERT_SOUND = 5;
static var GAME_AREA_WIDTH = 595;
static var GRASS_FRONT_MOVE_DIST = 2000;
static var TRANSFORMER_MOVE_DIST = 1700;
static var TRANSFORMER_OFFSET = 1500;
static var CAT_MOVE_DIST = 1700;
static var GRASS_BACK_MOVE_DIST = 1600;
static var GAME_BOARD_MOVE_DIST = 1500;
static var GAME_BOARD_OFFSET = 460;
static var CAULDRON_MOVE_DIST = 1200;
static var HORIZON__FOREST_2_MOVE_DIST = 700;
static var HORIZON__FOREST_1_MOVE_DIST = 500;
static var HORIZON_MOUNTAINS_MOVE_DIST = 300;
static var HORIZON_SKY_MOVE_DIST = 200;
static var HORIZON_SKY_OFFSET = -300;
static var HORIZON_SKY_FRAMES = new Array(1, 50);
static var WITCH_ANIM_TIME = 1.5;
static var BOARD_BLINK_TIME = 500;
static var HEAT_COUNT_TIME = 2;
static var NUM_TRANSFORMATIONS_PER_LEVEL = 4;
static var NUM_TRANSFORMATIONS = 11;
static var TRANSFORMATIONS_MAP = new Array(new Array(1, 2, 3, 4, 5), new Array(2, 3, 4, 5, 8), new Array(3, 4, 5, 9, 10), new Array(4, 6, 8, 9, 11), new Array(5, 7, 8, 10, 11));
var m_transformerFrame = 1;
}
Symbol 357 MovieClip [__Packages.com.midasplayer.hexCombo.GameLogic] Frame 0
class com.midasplayer.hexCombo.GameLogic extends com.midasplayer.gameCore.AbstractGameLogic
{
var m_gameBoard, m_gameView, trace, setTicksPerSecond, setPendingStateDuration, m_levelWidth, trimArray, m_levelHeight, m_levelLayout, m_decks, getNumberLevels, gameOver, getLevel, setAchievement;
function GameLogic () {
super();
}
function getGameBoard() {
return(m_gameBoard);
}
function getGameView() {
return(com.midasplayer.hexCombo.GameView(m_gameView));
}
function onInit() {
trace("INIT!!!");
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.hexCombo.GameBoard();
m_gameBoard.setGameLogic(this);
setTicksPerSecond(4);
setPendingStateDuration(1, 1);
}
function onSetGameData(gda) {
trace("GameDataReceived");
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_levelLayout = new com.midasplayer.util.ArrayList(gda.getGameData("levelLayout"));
trimArray(m_levelLayout);
m_decks = new com.midasplayer.util.ArrayList();
var _local2 = 0;
while (_local2 < getNumberLevels()) {
var _local3 = new com.midasplayer.util.ArrayList(gda.getGameData("deck_" + _local2));
trimArray(_local3);
m_decks.insert(_local3);
_local2++;
}
}
function onHandleInput(input) {
var _local2 = input.getType();
if (_local2 == com.midasplayer.hexCombo.GameBoard.INPUT_TYPE_CLICK_CARD) {
var _local4 = input.getInt(0);
var _local5 = input.getInt(1);
getGameBoard().cardClicked(_local4, _local5);
trace(((("~~~~ clicked card - [" + _local4) + ", ") + _local5) + "]");
return(true);
}
if (_local2 == com.midasplayer.hexCombo.GameBoard.INPUT_TYPE_DETONATE_BOMB) {
var _local4 = input.getInt(0);
var _local5 = input.getInt(1);
var _local6 = getGameBoard().getCard(_local4, _local5);
getGameBoard().detonateBomb(_local6);
trace(((("~~~~ detonate bomb - [" + _local4) + ", ") + _local5) + "]");
return(true);
}
if (_local2 == com.midasplayer.hexCombo.GameBoard.INPUT_TYPE_SHUFFLE) {
getGameBoard().shuffle();
trace("~~~~ shuffle board");
return(true);
}
if (_local2 == com.midasplayer.hexCombo.GameBoard.INPUT_TYPE_QUIT) {
gameOver();
trace("~~~~ quit");
return(true);
}
return(false);
}
function onLevelSetup() {
var _local2 = getLevel();
var _local6 = Number(m_levelWidth.get(_local2));
var _local5 = Number(m_levelHeight.get(_local2));
var _local3 = String(m_levelLayout.get(_local2));
var _local4 = com.midasplayer.util.ArrayList(m_decks.get(_local2));
m_gameBoard.clearLevel();
m_gameBoard.setupLevel(_local6, _local5, _local3);
m_gameBoard.setDeck(_local4);
}
function onLevelTimeUp() {
return(m_gameBoard.onLevelTimeUp());
}
function onCompleteLevel() {
m_gameBoard.addHeatBonus();
if ((getLevel() >= 1) && (getGameBoard().hasValidAchievement())) {
setAchievement(true);
}
}
static var LAYER_CARDS_HITAREA = 0;
static var LAYER_CARDS = 1;
static var LAYER_LINKS = 2;
static var LAYER_SCOREPOP = 3;
}
Symbol 358 MovieClip [__Packages.com.midasplayer.hexCombo.GameBoard] Frame 0
class com.midasplayer.hexCombo.GameBoard
{
var m_width, m_height, m_gameLogic, m_deck, m_cards, m_inputBuffer, m_heatedCards, m_bombHighlight;
function GameBoard () {
}
function getWidth() {
return(m_width);
}
function getHeight() {
return(m_height);
}
function hasValidAchievement() {
return(m_validAchievement);
}
function setGameLogic(gameLogic) {
m_gameLogic = gameLogic;
}
function getGameLogic() {
return(m_gameLogic);
}
function clearLevel() {
getGameLogic().getWorld().clearWorldObjects();
m_deck = new com.midasplayer.util.ArrayList();
m_deckIndex = 0;
m_cards = new com.midasplayer.util.ArrayList();
m_inputBuffer = new com.midasplayer.util.ArrayList();
m_width = 0;
m_height = 0;
m_maxHeat = 1;
m_sum = 0;
m_heatBonus = 0;
m_superHeatBonus = 0;
m_bombs = 0;
m_bombEnabled = false;
m_shuffles = Number(SHUFFLES[getGameLogic().getLevel()]);
}
function getHeatBonus() {
return(m_heatBonus);
}
function getSuperHeatBonus() {
return(m_superHeatBonus);
}
function getSum() {
return(m_sum);
}
function getMaxHeat() {
return(m_maxHeat);
}
function increaseMaxHeat() {
m_maxHeat++;
if (m_maxHeat == BOMB_HEAT_LEVEL) {
m_bombs = 1;
}
}
function setDeck(deck) {
m_deck = deck;
var _local2 = 0;
while (_local2 < m_cards.size()) {
var _local3 = com.midasplayer.hexCombo.Card(m_cards.get(_local2));
if (_local3 == undefined) {
} else {
_local3.setValue(dealCard());
}
_local2++;
}
}
function dealCard() {
var _local2 = Number(m_deck.get(m_deckIndex));
m_deckIndex++;
if (m_deckIndex >= m_deck.size()) {
m_deckIndex = 0;
}
return(_local2);
}
function setupLevel(width, height, layout) {
clearLevel();
m_width = width;
m_height = height;
var _local5 = 0;
while (_local5 < m_height) {
var _local3 = 0;
while (_local3 < m_width) {
var _local2;
var _local4 = layout.charAt((_local5 * m_width) + _local3);
if (_local4 != LEVEL_ITEM_EMPTY) {
_local2 = com.midasplayer.hexCombo.Card(getGameLogic().addWorldObject(new com.midasplayer.hexCombo.Card(), com.midasplayer.hexCombo.GameLogic.LAYER_CARDS));
_local2.setGameBoard(this);
_local2.setBoardPos(_local3, _local5);
_local2.createHitArea();
if (_local4 == LEVEL_ITEM_HEAT) {
_local2.setPreheated(true);
_local2.increaseHeat();
} else if (_local4 == LEVEL_ITEM_LOCKED) {
_local2.setLocked(true);
}
}
m_cards.insert(_local2);
_local3++;
}
_local5++;
}
}
function isOffset(columnOrRow) {
return((columnOrRow % 2) == 1);
}
function getAdjacentCards(x, y) {
var _local6 = new com.midasplayer.util.ArrayList();
var _local3 = 0;
while (_local3 < 6) {
var _local2;
if (_local3 == 0) {
_local2 = getCard(x, y - 1);
} else if (_local3 == 1) {
_local2 = getCard(x, y + 1);
} else if (_local3 == 2) {
_local2 = getCard(x - 1, y);
} else if (_local3 == 3) {
_local2 = getCard(x + 1, y);
} else if (_local3 == 4) {
_local2 = getCard((isOffset(y) ? (x - 1) : (x + 1)), y - 1);
} else if (_local3 == 5) {
_local2 = getCard((isOffset(y) ? (x - 1) : (x + 1)), y + 1);
}
if ((_local2 != undefined) && (_local2 != null)) {
_local6.insert(_local2);
}
_local3++;
}
return(_local6);
}
function isAdjacent(x1, y1, x2, y2) {
var _local4 = getAdjacentCards(x1, y1);
var _local2 = 0;
while (_local2 < _local4.size()) {
var _local3 = com.midasplayer.hexCombo.Card(_local4.get(_local2));
if ((_local3.getBoardX() == x2) && (_local3.getBoardY() == y2)) {
return(true);
}
_local2++;
}
return(false);
}
function getCard(x, y) {
if ((x < 0) || (x >= m_width)) {
return(undefined);
}
if ((y < 0) || (y >= m_height)) {
return(undefined);
}
return(com.midasplayer.hexCombo.Card(m_cards.get((y * m_width) + x)));
}
function cardClicked(x, y) {
var _local2 = new com.midasplayer.gameCore.ClientInput();
_local2.setType(INPUT_TYPE_CLICK_CARD);
_local2.setTick(getGameLogic().getTickCount());
_local2.addEntry(x);
_local2.addEntry(y);
handleClientInput(_local2);
}
function handleClientInput(clientInput) {
if ((getGameLogic().getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) || (clientInput.getTick() != getGameLogic().getTickCount())) {
m_sum = 0;
return(false);
}
var _local13 = clientInput.getInt(0);
var _local12 = clientInput.getInt(1);
var _local16 = getCard(_local13, _local12);
if (_local16 == undefined) {
getGameLogic().trace("No card clicked!");
m_sum = 0;
return(false);
}
if (_local16.isLocked()) {
getGameLogic().trace("Card locked!");
m_sum = 0;
return(false);
}
var _local21 = ((((((INPUT_TYPE_CLICK_CARD + ",") + getGameLogic().getTickCount()) + " ") + _local13) + " ") + _local12) + " ,=0";
getGameLogic().sendPlaydata(_local21);
var _local4 = false;
var _local14 = false;
var _local3 = 0;
while (_local3 < m_inputBuffer.size()) {
var _local6 = com.midasplayer.gameCore.ClientInput(m_inputBuffer.get(_local3));
var _local7 = _local6.getInt(0);
var _local9 = _local6.getInt(1);
var _local2 = getCardFromInputBuffer(_local3);
_local2.setActive(false);
if (((!_local4) && (_local7 == _local13)) && (_local9 == _local12)) {
if (((_local3 == 0) && (m_inputBuffer.size() == 1)) || (_local3 == (m_inputBuffer.size() - 1))) {
clearClientInput();
_local14 = true;
} else {
_local4 = true;
}
}
if (_local4) {
m_inputBuffer.removeByIndex(_local3);
_local3--;
}
_local3++;
}
if (m_inputBuffer.size() > 0) {
var _local15 = com.midasplayer.gameCore.ClientInput(m_inputBuffer.get(m_inputBuffer.size() - 1));
var _local19 = _local15.getInt(0);
var _local18 = _local15.getInt(1);
if ((!_local4) && (!isAdjacent(_local13, _local12, _local19, _local18))) {
trace("Restart string");
clearClientInput();
}
}
if (m_inputBuffer.size() == 0) {
var _local2 = getCard(_local13, _local12);
if (_local2.getHeat() != getMaxHeat()) {
getGameLogic().trace("First card not on heat");
m_sum = 0;
return(false);
}
}
if (!_local14) {
m_inputBuffer.insert(clientInput);
}
com.midasplayer.fx.SoundManager.play(com.midasplayer.hexCombo.GameView.SOUND_MARK_CARD, com.midasplayer.hexCombo.GameView.SOUND_MARK_CARD_VOLUME);
var _local11 = 0;
var _local10;
_local3 = 0;
while (_local3 < m_inputBuffer.size()) {
var _local6 = com.midasplayer.gameCore.ClientInput(m_inputBuffer.get(_local3));
var _local7 = _local6.getInt(0);
var _local9 = _local6.getInt(1);
var _local2 = getCard(_local7, _local9);
if ((_local2 == undefined) || (_local2.isLocked())) {
getGameLogic().trace("Card in input buffer is locked of null");
m_sum = 0;
return(false);
}
_local2.setActive(true, _local10);
var _local8 = _local3 - 1;
if (_local8 >= 0) {
var _local5 = false;
if ((!_local4) && (_local3 == (m_inputBuffer.size() - 1))) {
_local5 = true;
}
if (_local5) {
_local2.getObjectView().restartHeatAnim();
}
}
_local10 = _local2;
_local11 = _local11 + _local2.getValue();
_local3++;
}
var _local20 = m_inputBuffer.size();
if (_local11 == COMBO_SUM) {
_local11 = 0;
makeCombo(_local20);
}
getGameLogic().trace("SUM: " + _local11);
m_sum = _local11;
return(true);
}
function makeCombo(clearedCards) {
com.midasplayer.fx.SoundManager.play(com.midasplayer.hexCombo.GameView.SOUND_COMBO, com.midasplayer.hexCombo.GameView.SOUND_COMBO_VOLUME);
var _local8 = 0;
m_heatedCards = new com.midasplayer.util.ArrayList();
var _local10 = 0;
var _local9 = 0;
var _local13 = m_inputBuffer.size();
var _local11 = 0;
getGameLogic().trace(" Combo: ");
var _local6 = 0;
while (_local6 < m_inputBuffer.size()) {
var _local5 = getCardFromInputBuffer(_local6);
if (_local5.getHeat() < m_maxHeat) {
_local8 = _local8 + SCORE_HEATED_CARD;
_local5.increaseHeat();
_local11++;
} else {
m_heatedCards.insert(_local5);
}
_local5.setValue(dealCard());
getGameLogic().trace((((((" Card: " + _local5.getValue()) + " - at [") + _local5.getBoardX()) + ", ") + _local5.getBoardY()) + "]");
_local10 = _local10 + _local5.getX();
_local9 = _local9 + _local5.getY();
_local6++;
}
if (_local11 > 0) {
_local8 = _local8 + (2 * Math.pow(clearedCards, 2));
} else {
_local8 = _local8 + clearedCards;
}
var _local7 = 0;
_local6 = 0;
while (_local6 < m_inputBuffer.size()) {
var _local5 = getCardFromInputBuffer(_local6);
var _local4 = getLockedCards();
var _local3 = 0;
while (_local3 < _local4.size()) {
var _local2 = com.midasplayer.hexCombo.Card(_local4.get(_local3));
if (isAdjacent(_local5.getBoardX(), _local5.getBoardY(), _local2.getBoardX(), _local2.getBoardY())) {
_local2.setLocked(false);
getGameLogic().addScore(SCORE_UNLOCKED_CARD);
getGameLogic().getGameView().makeScorePop(SCORE_UNLOCKED_CARD, _local2.getX(), _local2.getY());
_local7++;
}
_local3++;
}
_local6++;
}
trace("unlocked cards: " + _local7);
clearClientInput();
var _local12 = (getGameLogic().getTickCount() - m_lastComboTick) * m_gameLogic.getTimePerTick();
m_lastComboTick = getGameLogic().getTickCount();
if (_local12 <= COMBO_SPEED_TIME) {
var _local14 = Math.round(((COMBO_SPEED_TIME - _local12) / COMBO_SPEED_TIME) * SCORE_COMBO_SPEED_BONUS);
_local8 = _local8 + _local14;
trace("speedBonus: " + _local14);
}
trace("combo score: " + _local8);
trace("---------------\n");
getGameLogic().addScore(_local8);
getGameLogic().getGameView().makeScorePop(_local8, _local10 / _local13, _local9 / _local13);
if (clearedCards >= 5) {
} else if (clearedCards >= 1) {
}
checkAutoHeat();
checkHeatLevel();
}
function clearClientInput() {
var _local2 = 0;
while (_local2 < m_inputBuffer.size()) {
getCardFromInputBuffer(_local2).setActive(false, undefined);
_local2++;
}
m_inputBuffer.clear();
m_sum = 0;
}
function getCardFromInputBuffer(index) {
var _local2 = com.midasplayer.gameCore.ClientInput(m_inputBuffer.get(index));
return(getCard(_local2.getInt(0), _local2.getInt(1)));
}
function getLockedCards() {
var _local4 = new com.midasplayer.util.ArrayList();
var _local3 = 0;
while (_local3 < m_cards.size()) {
var _local2 = com.midasplayer.hexCombo.Card(m_cards.get(_local3));
if (_local2 == undefined) {
} else if (_local2.isLocked()) {
_local4.insert(_local2);
}
_local3++;
}
return(_local4);
}
function checkAutoHeat() {
var _local12 = 0;
var _local11 = 0;
var _local10 = new com.midasplayer.util.ArrayList();
var _local8 = 0;
while (_local8 < m_cards.size()) {
var _local2 = com.midasplayer.hexCombo.Card(m_cards.get(_local8));
if (_local2 == undefined) {
} else {
var _local6 = _local2.getHeat();
if (_local6 == m_maxHeat) {
} else {
var _local5 = getAdjacentCards(_local2.getBoardX(), _local2.getBoardY());
var _local7 = true;
var _local3 = 0;
while (_local3 < _local5.size()) {
var _local4 = com.midasplayer.hexCombo.Card(_local5.get(_local3));
if (_local4.getHeat() <= _local6) {
_local7 = false;
}
_local3++;
}
if (!_local7) {
} else {
getGameLogic().trace((((" Isolated card: [" + _local2.getBoardX()) + ", ") + _local2.getBoardY()) + "]");
_local2.increaseHeat();
_local2.setValue(dealCard());
_local12 = _local12 + (SCORE_ISOLATED_CARD + (_local11 * SCORE_ISOLATED_CARD_BONUS));
_local11++;
var _local9 = new Object();
_local9.x = _local2.getX();
_local9.y = _local2.getY();
_local10.insert(_local9);
}
}
}
_local8++;
}
if (_local12 != 0) {
getGameLogic().addScore(_local12);
var _local14 = getGameLogic().getGameView();
var _local13 = _local12 / _local10.size();
_local8 = 0;
while (_local8 < _local10.size()) {
var _local9 = _local10.get(_local8);
_local14.makeScorePop(_local13, _local9.x, _local9.y);
_local8++;
}
}
}
function checkHeatLevel() {
var _local2 = 0;
while (_local2 < m_cards.size()) {
var _local3 = com.midasplayer.hexCombo.Card(m_cards.get(_local2));
if (_local3 == undefined) {
} else if (_local3.getHeat() < getMaxHeat()) {
return(undefined);
}
_local2++;
}
increaseMaxHeat();
if (getMaxHeat() > MAX_HEAT_LEVEL) {
getGameLogic().getGameView().superHeat();
getGameLogic().completeLevel();
return(undefined);
}
getGameLogic().getGameView().increaseMaxHeat();
_local2 = 0;
while (_local2 < m_heatedCards.size()) {
var _local3 = com.midasplayer.hexCombo.Card(m_heatedCards.get(_local2));
_local3.increaseHeat();
_local2++;
}
checkAutoHeat();
}
function onLevelTimeUp() {
if (m_bombEnabled) {
detonateBomb(undefined);
}
clearClientInput();
var _local2 = false;
if (m_maxHeat > 1) {
_local2 = true;
}
if (m_maxHeat < 3) {
m_validAchievement = false;
}
return(_local2);
}
function addHeatBonus() {
var _local2 = 0;
while (_local2 < m_cards.size()) {
var _local3 = com.midasplayer.hexCombo.Card(m_cards.get(_local2));
if (_local3 == undefined) {
} else {
m_heatBonus = m_heatBonus + (_local3.getHeat() * SCORE_HEAT_BONUS);
}
_local2++;
}
if (m_maxHeat > MAX_HEAT_LEVEL) {
m_superHeatBonus = SCORE_MAX_HEAT_BONUS;
}
getGameLogic().trace("HeatBonus: " + m_heatBonus);
getGameLogic().addScore(m_heatBonus);
getGameLogic().addScore(m_superHeatBonus);
}
function enableBomb() {
if (m_bombs <= 0) {
return(undefined);
}
if (m_bombEnabled) {
m_bombEnabled = false;
getGameLogic().getGameView().clearBombHighlight();
return(undefined);
}
clearClientInput();
getGameLogic().getGameView().enableBomb();
m_bombEnabled = true;
}
function isBombEnabled() {
return(m_bombEnabled);
}
function getNumBombs() {
return(m_bombs);
}
function setBombHighlight(card) {
m_bombHighlight = card;
getGameLogic().getGameView().setBombHighlight(card);
}
function detonateBomb(detonateCard) {
if (m_bombs <= 0) {
return(undefined);
}
clearClientInput();
m_bombs--;
m_bombEnabled = false;
m_bombHighlight = undefined;
var _local7 = getGameLogic().getGameView();
_local7.clearBombHighlight();
_local7.detonateBomb();
if (detonateCard != undefined) {
var _local8 = ((((((INPUT_TYPE_DETONATE_BOMB + ",") + getGameLogic().getTickCount()) + " ") + detonateCard.getBoardX()) + " ") + detonateCard.getBoardY()) + " ,=0";
getGameLogic().sendPlaydata(_local8);
var _local5 = getAdjacentCards(detonateCard.getBoardX(), detonateCard.getBoardY());
_local5.insert(detonateCard);
var _local2 = 0;
while (_local2 < _local5.size()) {
var _local4 = com.midasplayer.hexCombo.Card(_local5.get(_local2));
if (_local4 == undefined) {
} else {
var _local3 = getGameLogic().getRandom().nextInt(2);
getGameLogic().trace("bomb: " + _local3);
_local4.setValue(_local3);
}
_local2++;
}
}
}
function getNumShuffles() {
return(m_shuffles);
}
function shuffle() {
if (m_shuffles <= 0) {
return(undefined);
}
m_shuffles--;
clearClientInput();
var _local5 = ((INPUT_TYPE_SHUFFLE + ",") + getGameLogic().getTickCount()) + " ,=0";
getGameLogic().sendPlaydata(_local5);
getGameLogic().getGameView().shuffle();
var _local2 = 0;
while (_local2 < m_cards.size()) {
var _local4 = com.midasplayer.hexCombo.Card(m_cards.get(_local2));
if (_local4 == undefined) {
} else {
var _local3 = dealCard();
getGameLogic().trace("shuffle: " + _local3);
_local4.setValue(_local3);
}
_local2++;
}
}
function increaseHeat() {
var _local2 = 0;
while (_local2 < m_cards.size()) {
var _local3 = com.midasplayer.hexCombo.Card(m_cards.get(_local2));
if (_local3 != undefined) {
_local3.increaseHeat();
}
_local2++;
}
checkHeatLevel();
}
static var LEVEL_ITEM_EMPTY = ".";
static var LEVEL_ITEM_CARD = "*";
static var LEVEL_ITEM_HEAT = "@";
static var LEVEL_ITEM_LOCKED = "=";
static var INPUT_TYPE_CLICK_CARD = 28;
static var INPUT_TYPE_DETONATE_BOMB = 666;
static var INPUT_TYPE_SHUFFLE = 777;
static var INPUT_TYPE_QUIT = 999;
static var COMBO_SUM = 17;
static var SCORE_HEATED_CARD = 50;
static var SCORE_ISOLATED_CARD = 100;
static var SCORE_ISOLATED_CARD_BONUS = 50;
static var SCORE_UNLOCKED_CARD = 10;
static var SCORE_COMBO_SPEED_BONUS = 10;
static var SCORE_HEAT_BONUS = 10;
static var SCORE_MAX_HEAT_BONUS = 1000;
static var COMBO_SPEED_TIME = 5000;
static var MAX_HEAT_LEVEL = 4;
static var BOMB_HEAT_LEVEL = 2;
static var SHUFFLES = new Array(1, 1, 1);
var m_deckIndex = 0;
var m_lastComboTick = -1000;
var m_maxHeat = 1;
var m_sum = 0;
var m_heatBonus = 0;
var m_superHeatBonus = 0;
var m_bombs = 0;
var m_bombEnabled = false;
var m_shuffles = 0;
var m_validAchievement = true;
}
Symbol 359 MovieClip [__Packages.com.midasplayer.hexCombo.BoardObject] Frame 0
class com.midasplayer.hexCombo.BoardObject extends com.midasplayer.gameCore.WorldObject
{
var m_gameBoard, setX, setY;
function BoardObject () {
super();
}
function getGameLogic() {
return(com.midasplayer.hexCombo.GameLogic(super.getGameLogic()));
}
function setGameBoard(gameBoard) {
m_gameBoard = gameBoard;
}
function getGameBoard() {
return(m_gameBoard);
}
function getBoardX() {
return(m_boardX);
}
function getBoardY() {
return(m_boardY);
}
function setBoardPos(x, y) {
m_boardX = x;
m_boardY = y;
updatePosition();
}
static function updateOffset() {
OFFSET_X = (Math.floor(Math.random() * 2) - 1) * MAX_OFFSET_X;
OFFSET_Y = (Math.floor(Math.random() * 2) - 1) * MAX_OFFSET_Y;
}
function updatePosition() {
var _local4 = 0;
var _local3 = 0;
_local4 = _local4 + OFFSET_X;
_local3 = _local3 + OFFSET_Y;
var _local7 = getBoardX();
var _local5 = getBoardY();
var _local2 = _local4 + ((_local7 - ((m_gameBoard.getWidth() - 1) / 2)) * HEXAGON_WIDTH);
var _local6 = _local3 + ((_local5 - ((m_gameBoard.getHeight() - 1) / 2)) * HEXAGON_HEIGHT);
if (m_gameBoard.isOffset(_local5)) {
_local2 = _local2 - (HEXAGON_WIDTH / 2);
}
_local2 = _local2 + (HEXAGON_WIDTH / 2);
setX(_local2);
setY(_local6);
}
static var HEXAGON_WIDTH = 48;
static var HEXAGON_HEIGHT = 42;
static var MAX_OFFSET_X = 8;
static var MAX_OFFSET_Y = 18;
static var OFFSET_X = 0;
static var OFFSET_Y = 0;
var m_boardX = -1;
var m_boardY = -1;
}
Symbol 360 MovieClip [__Packages.com.midasplayer.hexCombo.Card] Frame 0
class com.midasplayer.hexCombo.Card extends com.midasplayer.hexCombo.BoardObject
{
var setInputEnabled, setAnimated, setUseHandCursor, m_objectView, getGameBoard, getGameLogic, getBoardX, getBoardY;
function Card () {
super();
setInputEnabled(((com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_PRESS | com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_ROLL_OVER) | com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_ROLL_OUT) | com.midasplayer.gameCore.WorldObject.INPUT_MOUSE_DRAG_OUT);
setAnimated(false);
setUseHandCursor(true);
}
function createObjectView() {
return(new com.midasplayer.hexCombo.CardView());
}
function getObjectView() {
return(com.midasplayer.hexCombo.CardView(m_objectView));
}
function createHitArea() {
getObjectView().createHitArea();
}
function getValue() {
return(m_value);
}
function setValue(value) {
m_value = value;
getObjectView().updateView();
}
function getHeat() {
return(m_heat);
}
function increaseHeat() {
m_heat++;
getObjectView().updateView();
}
function isPreheated() {
return(m_preHeated);
}
function setPreheated(preheated) {
m_preHeated = preheated;
}
function isLocked() {
return(m_locked);
}
function setLocked(locked) {
m_locked = locked;
getObjectView().updateView();
}
function isActive() {
return(m_active);
}
function setActive(active, fromCard) {
m_active = active;
getObjectView().setFromCard(fromCard);
}
function isMaxHeat() {
return(m_heat == getGameBoard().getMaxHeat());
}
function onPress() {
if (getGameLogic().getState() != com.midasplayer.gameCore.GameState.LEVEL_RUNNING) {
return(undefined);
}
if (getGameBoard().isBombEnabled()) {
getGameBoard().detonateBomb(this);
} else if (!isLocked()) {
getGameBoard().cardClicked(getBoardX(), getBoardY());
}
}
function onRollOver() {
if (getGameBoard().isBombEnabled()) {
getGameBoard().setBombHighlight(this);
}
}
function onRollOut() {
if (getGameBoard().isBombEnabled()) {
getGameBoard().setBombHighlight(undefined);
}
}
var DEFAULT_SYMBOL = "hex";
var m_value = -1;
var m_active = false;
var m_heat = 0;
var m_preHeated = false;
var m_locked = false;
}
Symbol 361 MovieClip [__Packages.com.midasplayer.hexCombo.CardView] Frame 0
class com.midasplayer.hexCombo.CardView extends com.midasplayer.gameCore.WorldObjectView
{
var getGameLogic, m_hitArea, m_clip, m_link, m_fromCard, getClip, isMouseOver;
function CardView () {
super();
}
function getObject() {
return(com.midasplayer.hexCombo.Card(super.getObject()));
}
function createHitArea() {
var _local2 = getObject();
var _local3 = getGameLogic().getWorld().getLayer(com.midasplayer.hexCombo.GameLogic.LAYER_CARDS_HITAREA);
m_hitArea = _local3.attachMovie("hitarea", "hitarea_" + getObject().getObjId(), _local3.getNextHighestDepth());
m_hitArea._x = _local2.getX();
m_hitArea._y = _local2.getY();
m_clip.hitArea = m_hitArea;
}
function onClipRemoved() {
if (m_link != undefined) {
m_link.removeMovieClip();
}
if (m_hitArea != undefined) {
m_hitArea.removeMovieClip();
}
}
function onClipLoaded() {
m_clip.cacheAsBitmap = true;
}
function setFromCard(fromCard) {
m_fromCard = fromCard;
}
function restartHeatAnim() {
getClip().heatEffect.gotoAndPlay(1);
}
function updateView() {
var _local3 = getClip();
var _local2 = getObject();
var _local4 = _local2.getHeat() + 1;
if (_local2.isLocked()) {
_local4 = 6;
}
_local3.gotoAndStop(_local4);
var _local5 = _local2.getValue();
_local3.value.gotoAndStop(_local5 + 1);
}
function onRender() {
var _local4 = m_clip;
var _local2 = getObject();
var _local10 = _local2.getGameBoard();
var _local7 = _local2.isActive();
if ((isMouseOver() && (!_local2.isLocked())) && (!_local10.isBombEnabled())) {
if (!m_mouseOverEffect) {
_local2.updatePosition();
_local2.setPos(_local2.getX() + MOUSE_OVER_OFFSET, _local2.getY() + MOUSE_OVER_OFFSET);
m_mouseOverEffect = true;
}
} else if (m_mouseOverEffect) {
_local2.updatePosition();
m_mouseOverEffect = false;
}
if (_local7) {
_local4.mouseOver._visible = true;
} else {
_local4.mouseOver._visible = false;
}
if (_local7 && (!getObject().isMaxHeat())) {
_local4.heatEffect._visible = true;
_local4.heatEffect.play();
} else {
_local4.heatEffect._visible = false;
_local4.heatEffect.stop();
}
if ((_local7 && (m_fromCard != undefined)) && (m_link == undefined)) {
var _local9 = getGameLogic().getWorld().getLayer(com.midasplayer.hexCombo.GameLogic.LAYER_LINKS);
m_link = _local9.attachMovie("arrow_link", "arrow_link_" + getObject().getObjId(), _local9.getNextHighestDepth());
var _local8 = getObject();
m_link._visible = true;
m_link._x = _local8.getX();
m_link._y = _local8.getY();
var _local3 = 0;
var _local5 = m_fromCard.getBoardY() - _local8.getBoardY();
var _local6 = m_fromCard.getX() - _local8.getX();
var _local11 = 0;
if ((_local5 < 0) && (_local6 < 0)) {
_local3 = -120;
}
if ((_local5 < 0) && (_local6 > 0)) {
_local3 = -60;
}
if ((_local5 == 0) && (_local6 < 0)) {
_local3 = -180;
}
if ((_local5 == 0) && (_local6 > 0)) {
_local3 = 0;
}
if ((_local5 > 0) && (_local6 < 0)) {
_local3 = 120;
}
if ((_local5 > 0) && (_local6 > 0)) {
_local3 = 60;
}
_local3 = _local3 + 180;
m_link._rotation = _local3;
} else if ((!_local7) && (m_link != undefined)) {
m_link.removeMovieClip();
m_link = undefined;
}
}
static var MOUSE_OVER_OFFSET = 2;
var m_mouseOverEffect = false;
}
Symbol 362 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;
}