Section 1
//Cat1Sax_42 (CatCorner_fla.Cat1Sax_42)
package CatCorner_fla {
import flash.display.*;
public dynamic class Cat1Sax_42 extends MovieClip {
public var blink:MovieClip;
public var face:MovieClip;
public function Cat1Sax_42(){
addFrameScript(0, frame1, 10, frame11, 19, frame20, 29, frame30, 39, frame40, 49, frame50);
}
function frame1(){
stop();
}
function frame11(){
stop();
}
function frame20(){
stop();
}
function frame30(){
stop();
}
function frame40(){
stop();
}
function frame50(){
stop();
}
}
}//package CatCorner_fla
Section 2
//Cat2Piano_88 (CatCorner_fla.Cat2Piano_88)
package CatCorner_fla {
import flash.display.*;
public dynamic class Cat2Piano_88 extends MovieClip {
public var blink:MovieClip;
public var face:MovieClip;
public function Cat2Piano_88(){
addFrameScript(0, frame1, 10, frame11, 19, frame20, 29, frame30, 39, frame40, 49, frame50);
}
function frame1(){
stop();
}
function frame11(){
stop();
}
function frame20(){
stop();
}
function frame30(){
stop();
}
function frame40(){
stop();
}
function frame50(){
stop();
}
}
}//package CatCorner_fla
Section 3
//Cat3Bass_92 (CatCorner_fla.Cat3Bass_92)
package CatCorner_fla {
import flash.display.*;
public dynamic class Cat3Bass_92 extends MovieClip {
public var blink:MovieClip;
public var face:MovieClip;
public function Cat3Bass_92(){
addFrameScript(0, frame1, 10, frame11, 19, frame20, 29, frame30, 39, frame40, 49, frame50);
}
function frame1(){
stop();
}
function frame11(){
stop();
}
function frame20(){
stop();
}
function frame30(){
stop();
}
function frame40(){
stop();
}
function frame50(){
stop();
}
}
}//package CatCorner_fla
Section 4
//Cat4Drums_95 (CatCorner_fla.Cat4Drums_95)
package CatCorner_fla {
import flash.display.*;
public dynamic class Cat4Drums_95 extends MovieClip {
public var blink:MovieClip;
public var face:MovieClip;
public function Cat4Drums_95(){
addFrameScript(0, frame1, 9, frame10, 18, frame19, 28, frame29, 38, frame39, 48, frame49);
}
function frame1(){
stop();
}
function frame10(){
stop();
}
function frame19(){
stop();
}
function frame29(){
stop();
}
function frame39(){
stop();
}
function frame49(){
stop();
}
}
}//package CatCorner_fla
Section 5
//Cat5Trumpet_98 (CatCorner_fla.Cat5Trumpet_98)
package CatCorner_fla {
import flash.display.*;
public dynamic class Cat5Trumpet_98 extends MovieClip {
public var blink:MovieClip;
public var face:MovieClip;
public function Cat5Trumpet_98(){
addFrameScript(0, frame1, 9, frame10, 18, frame19, 28, frame29, 38, frame39, 48, frame49);
}
function frame1(){
stop();
}
function frame10(){
stop();
}
function frame19(){
stop();
}
function frame29(){
stop();
}
function frame39(){
stop();
}
function frame49(){
stop();
}
}
}//package CatCorner_fla
Section 6
//Cat6Song_101 (CatCorner_fla.Cat6Song_101)
package CatCorner_fla {
import flash.display.*;
public dynamic class Cat6Song_101 extends MovieClip {
public var blink:MovieClip;
public var face:MovieClip;
public function Cat6Song_101(){
addFrameScript(9, frame10, 18, frame19, 28, frame29, 38, frame39, 48, frame49);
}
function frame10(){
stop();
}
function frame19(){
stop();
}
function frame29(){
stop();
}
function frame39(){
stop();
}
function frame49(){
stop();
}
}
}//package CatCorner_fla
Section 7
//CatRainbow_63 (CatCorner_fla.CatRainbow_63)
package CatCorner_fla {
import flash.display.*;
public dynamic class CatRainbow_63 extends MovieClip {
public var rainbow:MovieClip;
public var blink:MovieClip;
public function CatRainbow_63(){
addFrameScript(0, frame1, 10, frame11, 19, frame20, 29, frame30, 39, frame40, 49, frame50);
}
function frame1(){
stop();
}
function frame11(){
stop();
}
function frame20(){
stop();
}
function frame30(){
stop();
}
function frame40(){
stop();
}
function frame50(){
stop();
}
}
}//package CatCorner_fla
Section 8
//mc_PianoKeyBlack_18 (CatCorner_fla.mc_PianoKeyBlack_18)
package CatCorner_fla {
import flash.display.*;
public dynamic class mc_PianoKeyBlack_18 extends MovieClip {
public function mc_PianoKeyBlack_18(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package CatCorner_fla
Section 9
//mc_PianoKeyWhite_15 (CatCorner_fla.mc_PianoKeyWhite_15)
package CatCorner_fla {
import flash.display.*;
public dynamic class mc_PianoKeyWhite_15 extends MovieClip {
public function mc_PianoKeyWhite_15(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package CatCorner_fla
Section 10
//Block (guipackage.Block)
package guipackage {
import flash.display.*;
import modelpackage.*;
public class Block extends MovieClip implements Renderable {
public var prevActive:BlockData;
public var blockData:BlockData;
public var nextBlockData:BlockData;
protected var grid:Grid;
public var renderable:MovieClip;
public var bitmap:Bitmap;
protected var startFlipAwayTick:Number;
protected var flippedAwayTick:Number;
protected var startFlipBackTick:Number;
protected var flippedBackTick:Number;
protected var endTick:Number;
protected var switchedBitmap:Boolean;// = false
public var testClip:EyeAnimation;
public var orgX:int;
public var orgY:int;
public var shaking:Boolean;// = false
public var shakeEnd:int;// = -1
protected var SHAKE_DECAY:int;// = 22
protected var SHAKE_FACTOR:int;// = 4
public var flipping:Boolean;// = false
public static const BACKSIDE_SCALE:Number = 0.7;
public static var blockBitmapData:BlockBitmapData;
public static var bitmapCopies:Array;
public function Block(_arg1:BlockData, _arg2:Grid){
this.blockData = _arg1;
this.grid = _arg2;
update();
}
public function update():void{
var _local3:Number;
if (bitmap != null){
removeChild(bitmap);
};
var _local1:int = blockData.color;
if (blockData.type == BlockData.RAINBOW){
_local1 = (BlockData.COLORS - 1);
};
var _local2:int = int(blockData.isFront);
bitmap = new Bitmap(BitmapData(Block.blockBitmapData.bitmaps[grid.size][_local1][_local2][blockData.type][blockData.status]));
bitmap.x = -(grid.blockHalfWidth);
bitmap.y = -(grid.blockHalfWidth);
addChildAt(bitmap, 0);
if (blockData.status == BlockData.ACTIVE){
if ((((((((prevActive == null)) || (!((blockData.color == prevActive.color))))) || (!((blockData.isFront == prevActive.isFront))))) || (!((blockData.type == prevActive.type))))){
if (renderable != null){
removeChild(renderable);
renderable = null;
};
_local3 = PlayArea.getScale(grid.size);
if (blockData.isFront == false){
_local3 = (_local3 * Block.BACKSIDE_SCALE);
};
if (blockData.type == BlockData.TIME){
renderable = new BlockTime();
renderable.clock.body.visible = false;
renderable.shadow.visible = false;
} else {
if (blockData.type == BlockData.GOLD){
renderable = new BlockGold();
renderable.herring1.visible = false;
renderable.herring2.visible = false;
renderable.shadow.visible = false;
} else {
if ((((blockData.type == BlockData.NORMAL)) && ((blockData.isFront == true)))){
if (blockData.color == 0){
renderable = new EyeAnimation1();
} else {
if (blockData.color == 1){
renderable = new EyeAnimation2();
} else {
if (blockData.color == 2){
renderable = new EyeAnimation3();
} else {
if (blockData.color == 3){
renderable = new EyeAnimation4();
} else {
if (blockData.color == 4){
renderable = new EyeAnimation5();
} else {
if (blockData.color == 5){
renderable = new EyeAnimation6();
};
};
};
};
};
};
if ((((grid.size >= 7)) && ((grid.size <= 9)))){
renderable.x = -1;
renderable.y = -1;
};
if (renderable != null){
};
} else {
if ((((blockData.type == BlockData.RAINBOW)) && ((blockData.isFront == true)))){
renderable = new EyeAnimationRainbow();
if ((((grid.size >= 7)) && ((grid.size <= 9)))){
renderable.x = -1;
renderable.y = -1;
};
};
};
};
};
if (renderable != null){
renderable.scaleX = _local3;
renderable.scaleY = _local3;
addChildAt(renderable, 1);
prevActive = blockData;
};
};
};
if (renderable != null){
if (blockData.status == BlockData.ACTIVE){
grid.playArea.gui.startRenderable(Renderable(renderable));
renderable.visible = true;
} else {
grid.playArea.gui.stopRenderable(Renderable(renderable));
renderable.visible = false;
};
};
}
public function nextBlock():void{
if (nextBlockData != null){
blockData = nextBlockData;
blockData.status = BlockData.NORMAL;
update();
};
}
public function initialize(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{
this.startFlipAwayTick = _arg1;
this.flippedAwayTick = _arg2;
this.startFlipBackTick = _arg3;
this.flippedBackTick = _arg4;
this.endTick = _arg5;
flipping = true;
switchedBitmap = false;
if (((!((renderable == null))) && ((renderable.visible == true)))){
grid.playArea.gui.stopRenderable(Renderable(renderable));
};
}
public function render(_arg1:int, _arg2:Number):int{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:int;
var _local8:Number;
if (flipping){
_local4 = (_arg1 + _arg2);
if (_local4 >= flippedBackTick){
scaleX = 1;
} else {
if (_local4 >= startFlipBackTick){
_local5 = (_local4 - startFlipBackTick);
_local6 = (flippedBackTick - startFlipBackTick);
_local3 = Math.pow((_local5 / _local6), 2);
if (_local3 < 0.01){
_local3 = 0.01;
};
scaleX = _local3;
} else {
if (_local4 >= flippedAwayTick){
if (flippedAwayTick == startFlipAwayTick){
_local3 = 0;
} else {
if (startFlipBackTick > endTick){
_local3 = 0;
} else {
_local3 = 0.01;
};
};
scaleX = _local3;
} else {
if (_local4 >= startFlipAwayTick){
_local5 = (_local4 - startFlipAwayTick);
_local6 = (flippedAwayTick - startFlipAwayTick);
_local3 = Math.pow((1 - (_local5 / _local6)), 2);
if (_local3 < 0.01){
_local3 = 0.01;
};
scaleX = _local3;
};
};
};
};
if (((!(switchedBitmap)) && ((_local4 >= flippedAwayTick)))){
nextBlock();
switchedBitmap = true;
};
if (_local4 >= endTick){
flipping = false;
return (Gui.RENDERABLE_STOP);
};
};
if (shaking){
if (shakeEnd == -1){
shakeEnd = (_arg1 + SHAKE_DECAY);
orgX = x;
orgY = y;
if (canMiao()){
blockData.status = BlockData.MARKED;
update();
};
};
_local7 = (shakeEnd - _arg1);
_local8 = (_local7 / SHAKE_DECAY);
if (_local7 > 0){
x = (orgX + (SHAKE_FACTOR * Math.random()));
y = (orgY + (SHAKE_FACTOR * Math.random()));
} else {
shaking = false;
shakeEnd = -1;
x = orgX;
y = orgY;
if (canMiao()){
blockData.status = BlockData.NORMAL;
update();
};
return (Gui.RENDERABLE_STOP);
};
};
return (Gui.RENDERABLE_CONTINUE);
}
public function canMiao():Boolean{
return ((((blockData.type == BlockData.BOMB)) || ((((((blockData.type == BlockData.NORMAL)) || ((blockData.type == BlockData.RAINBOW)))) && ((blockData.isFront == true))))));
}
}
}//package guipackage
Section 11
//BlockBitmapData (guipackage.BlockBitmapData)
package guipackage {
import flash.display.*;
import modelpackage.*;
import flash.geom.*;
public class BlockBitmapData {
public const MIN_SIZE:int = 5;
public const MAX_SIZE:int = 10;
public const HILIGHT:Number = 1.6;
public const NORMAL:int = 0;
public const MARKED:int = 1;
public const ACTIVE:int = 2;
public const BLANK:int = 0;
public const BOMB:int = 1;
public const NEUTRAL:int = 2;
public const MIAO:int = 3;
public const COOL:int = 4;
public const BACKSIDE:int = 5;
public var bitmaps:Array;
protected var scale:Number;
protected var width:int;
protected var halfWidth:int;
protected var scales:Array;
protected var widths:Array;
protected var halfWidths:Array;
protected var block:MovieClip;
protected var transparent:Boolean;
protected var i:int;// = 0
protected var color:int;
protected var size:int;
protected var bitmapData:BitmapData;
protected var backgrounds:Array;
protected var takenBackgrounds:Array;
protected var rainbowBackgrounds:Array;
protected var takenRainbowBackgrounds:Array;
protected var cats:Array;
protected var paws:Array;
protected var rainbowCats:Array;
protected var rainbowPaws:Array;
protected var herrings:Array;
protected var clocks:Array;
public function BlockBitmapData(){
scales = new Array((MAX_SIZE + 1));
widths = new Array((MAX_SIZE + 1));
halfWidths = new Array((MAX_SIZE + 1));
size = MIN_SIZE;
while (size <= MAX_SIZE) {
scale = PlayArea.getScale(size);
scales[size] = scale;
width = Math.floor((PlayArea.NATURAL_BLOCK_WIDTH * scale));
widths[size] = width;
halfWidths[size] = Math.floor((width / 2));
size++;
};
makeBackgrounds();
cats = new Array();
color = 0;
while (color < BlockData.COLORS) {
cats[color] = new Array((MAX_SIZE + 1));
color++;
};
}
public function makeBackgrounds():void{
backgrounds = new Array();
takenBackgrounds = new Array();
block = new BlockBackground();
transparent = false;
color = 0;
while (color < BlockData.COLORS) {
block.gotoAndStop((color + 1));
backgrounds[color] = new Array((MAX_SIZE + 1));
takenBackgrounds[color] = new Array((MAX_SIZE + 1));
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
block.taken.visible = true;
bitmapData = copyToBitmapData();
takenBackgrounds[color][size] = bitmapData;
block.taken.visible = false;
bitmapData = copyToBitmapData();
backgrounds[color][size] = bitmapData;
size++;
};
color++;
};
}
public function makeCat(_arg1:int, _arg2:int):void{
size = _arg1;
color = _arg2;
transparent = true;
switch (color){
case 0:
block = new BlockCat1();
break;
case 1:
block = new BlockCat2();
break;
case 2:
block = new BlockCat3();
break;
case 3:
block = new BlockCat4();
break;
case 4:
block = new BlockCat5();
break;
case 5:
block = new BlockCat6();
break;
};
newSize(size);
cats[color][size] = new Array(((BACKSIDE + COOL) + 1));
block.head.face.visible = true;
block.shadow.visible = true;
block.head.gotoAndStop("blank");
block.sunglasses.visible = false;
block.hat.visible = false;
cats[color][size][BLANK] = copyToBitmapData();
block.head.face.visible = false;
block.shadow.visible = false;
block.head.visible = false;
block.sunglasses.visible = true;
block.hat.visible = true;
cats[color][size][BOMB] = copyToBitmapData();
block.head.gotoAndStop("neutral");
block.head.visible = true;
block.sunglasses.visible = false;
block.hat.visible = false;
cats[color][size][NEUTRAL] = copyToBitmapData();
block.head.gotoAndStop("miao");
cats[color][size][MIAO] = copyToBitmapData();
block.head.gotoAndStop("cool");
cats[color][size][COOL] = copyToBitmapData();
block.scaleX = (scale * Block.BACKSIDE_SCALE);
block.scaleY = (scale * Block.BACKSIDE_SCALE);
block.head.face.visible = true;
block.head.gotoAndStop("blank");
block.sunglasses.visible = false;
block.hat.visible = false;
cats[color][size][(BACKSIDE + BLANK)] = copyToBitmapData();
block.head.face.visible = false;
block.head.visible = false;
block.sunglasses.visible = true;
block.hat.visible = true;
cats[color][size][(BACKSIDE + BOMB)] = copyToBitmapData();
block.head.gotoAndStop("neutral");
block.head.visible = true;
block.sunglasses.visible = false;
block.hat.visible = false;
cats[color][size][(BACKSIDE + NEUTRAL)] = copyToBitmapData();
block.head.gotoAndStop("miao");
cats[color][size][(BACKSIDE + MIAO)] = copyToBitmapData();
block.head.gotoAndStop("cool");
cats[color][size][(BACKSIDE + COOL)] = copyToBitmapData();
}
public function makeMiscParts():void{
paws = new Array();
transparent = true;
block = new NormalBackside();
color = 0;
while (color < BlockData.COLORS) {
block.gotoAndStop((color + 1));
paws[color] = new Array((MAX_SIZE + 1));
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
paws[color][size] = copyToBitmapData();
size++;
};
color++;
};
rainbowBackgrounds = new Array();
takenRainbowBackgrounds = new Array();
block = new BlockRainbow();
block.head.visible = false;
block.shadow.visible = false;
transparent = false;
color = 0;
while (color <= 0) {
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
block.taken.visible = true;
bitmapData = copyToBitmapData();
takenRainbowBackgrounds[size] = bitmapData;
block.taken.visible = false;
bitmapData = copyToBitmapData();
rainbowBackgrounds[size] = bitmapData;
size++;
};
color++;
};
rainbowCats = new Array(BlockData.COLORS);
block.bg.visible = false;
block.head.visible = true;
transparent = true;
color = (BlockData.COLORS - 1);
rainbowCats[color] = new Array((MAX_SIZE + 1));
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
rainbowCats[color][size] = new Array((COOL + 1));
block.shadow.visible = true;
block.head.gotoAndStop("blank");
block.head.rainbow.visible = true;
rainbowCats[color][size][BLANK] = copyToBitmapData();
block.shadow.visible = false;
block.head.rainbow.visible = false;
block.head.gotoAndStop("neutral");
rainbowCats[color][size][NEUTRAL] = copyToBitmapData();
block.head.gotoAndStop("miao");
rainbowCats[color][size][MIAO] = copyToBitmapData();
block.head.gotoAndStop("cool");
rainbowCats[color][size][COOL] = copyToBitmapData();
size++;
};
rainbowPaws = new Array(BlockData.COLORS);
block = new RainbowBackside();
transparent = true;
color = (BlockData.COLORS - 1);
rainbowPaws[color] = new Array((MAX_SIZE + 1));
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
rainbowPaws[color][size] = copyToBitmapData();
size++;
};
}
public function makeHerringsAndClocks():void{
herrings = new Array();
transparent = true;
block = new BlockGold();
block.glimmRotate1.visible = false;
block.glimmRotate2.visible = false;
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
herrings[size] = new Array(2);
herrings[size][0] = copyToBitmapData();
block.scaleX = (scale * Block.BACKSIDE_SCALE);
block.scaleY = (scale * Block.BACKSIDE_SCALE);
herrings[size][1] = copyToBitmapData();
size++;
};
clocks = new Array();
transparent = true;
block = new BlockTime();
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
clocks[size] = new Array(4);
block.clock.minute.visible = true;
block.clock.hour.visible = true;
clocks[size][0] = copyToBitmapData();
block.clock.minute.visible = false;
block.clock.hour.visible = false;
clocks[size][1] = copyToBitmapData();
block.scaleX = (scale * Block.BACKSIDE_SCALE);
block.scaleY = (scale * Block.BACKSIDE_SCALE);
block.clock.minute.visible = true;
block.clock.hour.visible = true;
clocks[size][2] = copyToBitmapData();
block.clock.minute.visible = false;
block.clock.hour.visible = false;
clocks[size][3] = copyToBitmapData();
size++;
};
}
public function makeFinalBacksides1():void{
var _local1:int;
var _local2:int;
var _local3:BitmapData;
var _local4:BitmapData;
var _local5:BitmapData;
var _local6:BitmapData;
var _local7:BitmapData;
var _local8:BitmapData;
var _local9:BitmapData;
var _local10:BitmapData;
bitmaps = new Array((MAX_SIZE + 1));
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
bitmaps[size] = new Array();
color = 0;
while (color < BlockData.COLORS) {
bitmaps[size][color] = new Array();
_local1 = 0;
bitmaps[size][color][_local1] = new Array();
_local3 = BitmapData(takenBackgrounds[color][size]);
_local2 = BlockData.NORMAL;
bitmaps[size][color][_local1][_local2] = new Array((ACTIVE + 1));
_local4 = BitmapData(paws[color][size]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local3, _local4], width);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local3, _local4], width);
if (color == (BlockData.COLORS - 1)){
_local10 = BitmapData(takenRainbowBackgrounds[size]);
_local2 = BlockData.RAINBOW;
bitmaps[size][color][_local1][_local2] = new Array((ACTIVE + 1));
_local4 = BitmapData(rainbowPaws[color][size]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local10, _local4], width);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local10, _local4], width);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local10, _local4], width);
};
_local2 = BlockData.BOMB;
bitmaps[size][color][_local1][_local2] = new Array((ACTIVE + 1));
_local7 = BitmapData(cats[color][size][(BACKSIDE + BLANK)]);
_local8 = BitmapData(cats[color][size][(BACKSIDE + NEUTRAL)]);
_local9 = BitmapData(cats[color][size][(BACKSIDE + BOMB)]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local3, _local7, _local8, _local9], width);
_local8 = BitmapData(cats[color][size][(BACKSIDE + MIAO)]);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local3, _local7, _local8, _local9], width);
_local8 = BitmapData(cats[color][size][(BACKSIDE + COOL)]);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local3, _local7, _local8, _local9], width);
color++;
};
size++;
};
}
public function makeFinalBacksides2():void{
var _local1:int;
var _local2:int;
var _local3:BitmapData;
var _local4:BitmapData;
var _local5:BitmapData;
var _local6:BitmapData;
var _local7:BitmapData;
var _local8:BitmapData;
var _local9:BitmapData;
var _local10:BitmapData;
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
color = 0;
while (color < BlockData.COLORS) {
_local1 = 0;
_local3 = BitmapData(takenBackgrounds[color][size]);
_local2 = BlockData.GOLD;
bitmaps[size][color][_local1][_local2] = new Array(3);
_local5 = BitmapData(herrings[size][1]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local3, _local5], width);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local3, _local5], width);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local3, _local5], width);
_local2 = BlockData.TIME;
bitmaps[size][color][_local1][_local2] = new Array(4);
_local6 = BitmapData(clocks[size][2]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local3, _local6], width);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local3, _local6], width);
_local6 = BitmapData(clocks[size][3]);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local3, _local6], width);
color++;
};
size++;
};
}
public function makeFinalFronts1():void{
var _local1:int;
var _local2:int;
var _local3:BitmapData;
var _local4:BitmapData;
var _local5:BitmapData;
var _local6:BitmapData;
var _local7:BitmapData;
var _local8:BitmapData;
var _local9:BitmapData;
var _local10:BitmapData;
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
color = 0;
while (color < BlockData.COLORS) {
_local1 = 1;
bitmaps[size][color][_local1] = new Array();
_local3 = BitmapData(backgrounds[color][size]);
_local2 = BlockData.NORMAL;
bitmaps[size][color][_local1][_local2] = new Array((ACTIVE + 1));
_local7 = BitmapData(cats[color][size][BLANK]);
_local8 = BitmapData(cats[color][size][NEUTRAL]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local3, _local7, _local8], width);
_local8 = BitmapData(cats[color][size][MIAO]);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local3, _local7, _local8], width);
_local8 = BitmapData(cats[color][size][COOL]);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local3, _local7, _local8], width);
if (color == (BlockData.COLORS - 1)){
_local10 = BitmapData(rainbowBackgrounds[size]);
_local2 = BlockData.RAINBOW;
bitmaps[size][color][_local1][_local2] = new Array((ACTIVE + 1));
_local7 = BitmapData(rainbowCats[color][size][BLANK]);
_local8 = BitmapData(rainbowCats[color][size][NEUTRAL]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local10, _local7, _local8], width);
_local8 = BitmapData(rainbowCats[color][size][MIAO]);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local10, _local7, _local8], width);
_local8 = BitmapData(rainbowCats[color][size][COOL]);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local10, _local7, _local8], width);
};
color++;
};
size++;
};
}
public function makeFinalFronts2():void{
var _local1:int;
var _local2:int;
var _local3:BitmapData;
var _local4:BitmapData;
var _local5:BitmapData;
var _local6:BitmapData;
var _local7:BitmapData;
var _local8:BitmapData;
var _local9:BitmapData;
var _local10:BitmapData;
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
color = 0;
while (color < BlockData.COLORS) {
_local1 = 1;
_local3 = BitmapData(backgrounds[color][size]);
_local2 = BlockData.BOMB;
bitmaps[size][color][_local1][_local2] = new Array((ACTIVE + 1));
_local7 = BitmapData(cats[color][size][BLANK]);
_local8 = BitmapData(cats[color][size][NEUTRAL]);
_local9 = BitmapData(cats[color][size][BOMB]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local3, _local7, _local8, _local9], width);
_local8 = BitmapData(cats[color][size][MIAO]);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local3, _local7, _local8, _local9], width);
_local8 = BitmapData(cats[color][size][COOL]);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local3, _local7, _local8, _local9], width);
color++;
};
size++;
};
}
public function makeFinalFronts3():void{
var _local1:int;
var _local2:int;
var _local3:BitmapData;
var _local4:BitmapData;
var _local5:BitmapData;
var _local6:BitmapData;
var _local7:BitmapData;
var _local8:BitmapData;
var _local9:BitmapData;
var _local10:BitmapData;
size = MIN_SIZE;
while (size <= MAX_SIZE) {
newSize(size);
color = 0;
while (color < BlockData.COLORS) {
_local1 = 1;
_local3 = BitmapData(backgrounds[color][size]);
_local2 = BlockData.GOLD;
bitmaps[size][color][_local1][_local2] = new Array(3);
_local5 = BitmapData(herrings[size][0]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local3, _local5], width);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local3, _local5], width);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local3, _local5], width);
_local2 = BlockData.TIME;
bitmaps[size][color][_local1][_local2] = new Array(3);
_local6 = BitmapData(clocks[size][0]);
bitmaps[size][color][_local1][_local2][NORMAL] = mergeBitmapDatas([_local3, _local6], width);
bitmaps[size][color][_local1][_local2][MARKED] = mergeBitmapDatas([_local3, _local6], width);
_local6 = BitmapData(clocks[size][1]);
bitmaps[size][color][_local1][_local2][ACTIVE] = mergeBitmapDatas([_local3, _local6], width);
color++;
};
size++;
};
}
public function newSize(_arg1:int):void{
scale = Number(scales[_arg1]);
width = int(widths[_arg1]);
halfWidth = int(halfWidths[_arg1]);
block.scaleX = scale;
block.scaleY = scale;
block.x = halfWidth;
block.y = halfWidth;
}
public function copyToBitmapData():BitmapData{
var _local1:Sprite = new Sprite();
_local1.addChild(block);
var _local2:Rectangle = new Rectangle(0, 0, width, width);
var _local3:BitmapData = new BitmapData(width, width, true, 0);
_local3.draw(_local1, null, null, null, _local2, false);
return (_local3);
}
public function mergeBitmapDatas(_arg1:Array, _arg2:int):BitmapData{
var _local5:BitmapData;
var _local3:BitmapData = new BitmapData(_arg2, _arg2, false, 0);
var _local4:int;
while (_local4 < _arg1.length) {
_local5 = BitmapData(_arg1[_local4]);
_local3.draw(_local5);
_local4++;
};
return (_local3);
}
}
}//package guipackage
Section 12
//BlockGold (guipackage.BlockGold)
package guipackage {
import flash.display.*;
public class BlockGold extends MovieClip implements Renderable {
public const TICKS_PER_ROTATION:int = 80;
public var herring1:Sprite;
public var herring2:Sprite;
public var glimmRotate1:Sprite;
public var glimmRotate2:Sprite;
public var shadow:Sprite;
protected var startTick:int;// = -1
public function BlockGold(){
addFrameScript(0, frame1);
}
public function render(_arg1:int, _arg2:Number):int{
if (startTick == -1){
startTick = _arg1;
};
var _local3:Number = ((((_arg1 + _arg2) - startTick) * 360) / TICKS_PER_ROTATION);
glimmRotate1.rotation = _local3;
glimmRotate2.rotation = _local3;
return (Gui.RENDERABLE_CONTINUE);
}
function frame1(){
stop();
}
}
}//package guipackage
Section 13
//BlockTime (guipackage.BlockTime)
package guipackage {
import flash.display.*;
public class BlockTime extends MovieClip implements Renderable {
public const TICKS_PER_MINUTE_ROTATION:int = 240;
public const TICKS_PER_SECOND_ROTATION:int = 40;
public var clock:MovieClip;
public var shadow:Sprite;
protected var startTick:int;// = -1
public function render(_arg1:int, _arg2:Number):int{
if (startTick == -1){
startTick = _arg1;
};
var _local3:Number = ((((_arg1 + _arg2) - startTick) * 360) / TICKS_PER_MINUTE_ROTATION);
var _local4:Number = ((((_arg1 + _arg2) - startTick) * 360) / TICKS_PER_SECOND_ROTATION);
clock.minute.rotation = _local3;
clock.hour.rotation = _local4;
return (Gui.RENDERABLE_CONTINUE);
}
}
}//package guipackage
Section 14
//EyeAnimation (guipackage.EyeAnimation)
package guipackage {
import flash.display.*;
import flash.geom.*;
public class EyeAnimation extends MovieClip implements Renderable {
public var eye1:Sprite;
public var eye2:Sprite;
public function render(_arg1:int, _arg2:Number):int{
eye1.rotation = getMouseDirection(eye1);
eye2.rotation = getMouseDirection(eye2);
return (Gui.RENDERABLE_CONTINUE);
}
public function getMouseDirection(_arg1:DisplayObject):Number{
var _local3:Point;
var _local4:Point;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local2:Number = 0;
if (_arg1 != null){
_local3 = localToGlobal(new Point(_arg1.x, _arg1.y));
_local4 = new Point(stage.mouseX, stage.mouseY);
_local5 = (stage.mouseX - _local3.x);
_local6 = (stage.mouseY - _local3.y);
_local7 = Math.atan2(_local6, _local5);
_local2 = ((_local7 * 360) / (2 * Math.PI));
};
return (_local2);
}
}
}//package guipackage
Section 15
//Footsteps (guipackage.Footsteps)
package guipackage {
import flash.display.*;
public class Footsteps extends MovieClip implements Renderable {
public var startTick:int;
public var endTick:int;
public var frames:int;// = 59
public var nextLevel:MovieClip;
public static var nextLevelString:String;
public function Footsteps(){
addFrameScript(58, frame59);
nextLevel.nextLevelTf.text = nextLevelString;
}
public function render(_arg1:int, _arg2:Number):int{
var _local3:int = (endTick - startTick);
var _local4:Number = ((_arg1 - startTick) / _local3);
var _local5:int = Math.floor((_local4 * frames));
gotoAndStop(_local5);
if (_arg1 < endTick){
return (Gui.RENDERABLE_CONTINUE);
};
return (Gui.RENDERABLE_REMOVE);
}
function frame59(){
stop();
}
}
}//package guipackage
Section 16
//GameBackground (guipackage.GameBackground)
package guipackage {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class GameBackground extends Sprite implements Renderable {
protected const HALF_TIME_TICKS:Number = 26.64;
public var levelLabel:TextField;
public var timeLabel:TextField;
public var scoreLabel:TextField;
public var shuffleLabel:TextField;
public var level:TextField;
public var time:TextField;
public var score:TextField;
public var paw:Sprite;
public var shuffleBtn:Sprite;
public var shuffleBtn1:MovieClip;
public var shuffleBtn2:MovieClip;
public var c:MovieClip;
public var ciss:MovieClip;
public var d:MovieClip;
public var diss:MovieClip;
public var e:MovieClip;
public var f:MovieClip;
public var fiss:MovieClip;
public var g:MovieClip;
public var giss:MovieClip;
public var a:MovieClip;
public var aiss:MovieClip;
public var b:MovieClip;
public var c2:MovieClip;
public var ciss2:MovieClip;
public var d2:MovieClip;
public var diss2:MovieClip;
public var e2:MovieClip;
public var gui:Gui;
protected var timeWarnings:int;
protected var startTick:Number;
protected var middleTick:Number;
protected var endTick:Number;
protected var chordReleaseTimer:Timer;
public function GameBackground(_arg1:Gui){
this.gui = _arg1;
var _local2:TextFormat = new TextFormat();
_local2.letterSpacing = 2;
levelLabel.defaultTextFormat = _local2;
timeLabel.defaultTextFormat = _local2;
scoreLabel.defaultTextFormat = _local2;
shuffleLabel.defaultTextFormat = _local2;
levelLabel.text = _arg1.document.getTranslation("level_label");
if (_arg1.document.relaxMode){
timeLabel.text = _arg1.document.getTranslation("remaining_moves");
} else {
timeLabel.text = _arg1.document.getTranslation("time_label");
};
scoreLabel.text = _arg1.document.getTranslation("score_label");
shuffleLabel.text = _arg1.document.getTranslation("shuffle_label");
d = shuffleBtn2;
diss = shuffleBtn1;
chordReleaseTimer = new Timer(200, 1);
paw.mouseEnabled = false;
}
public function releaseChord(_arg1:Event=null):void{
c.gotoAndStop(1);
ciss.gotoAndStop(1);
d.gotoAndStop(1);
diss.gotoAndStop(1);
e.gotoAndStop(1);
f.gotoAndStop(1);
fiss.gotoAndStop(1);
g.gotoAndStop(1);
giss.gotoAndStop(1);
a.gotoAndStop(1);
aiss.gotoAndStop(1);
b.gotoAndStop(1);
c2.gotoAndStop(1);
ciss2.gotoAndStop(1);
d2.gotoAndStop(1);
diss2.gotoAndStop(1);
e2.gotoAndStop(1);
}
public function playChord(_arg1:int):void{
switch (_arg1){
case 0:
d.gotoAndStop(2);
g.gotoAndStop(2);
c2.gotoAndStop(2);
break;
case 1:
c.gotoAndStop(2);
f.gotoAndStop(2);
b.gotoAndStop(2);
break;
case 2:
b.gotoAndStop(2);
diss.gotoAndStop(2);
giss.gotoAndStop(2);
break;
case 3:
e.gotoAndStop(2);
a.gotoAndStop(2);
d2.gotoAndStop(2);
break;
case 4:
diss.gotoAndStop(2);
giss.gotoAndStop(2);
ciss2.gotoAndStop(2);
break;
case 5:
f.gotoAndStop(2);
b.gotoAndStop(2);
diss2.gotoAndStop(2);
break;
};
chordReleaseTimer.start();
chordReleaseTimer.addEventListener(TimerEvent.TIMER_COMPLETE, releaseChord);
}
public function timeWarning(_arg1:int, _arg2:int):void{
timeWarnings = 1;
endTick = 0;
gui.startRenderable(this);
}
public function stopTimeWarning():void{
gui.stopRenderable(this);
time.textColor = 0;
}
public function render(_arg1:int, _arg2:Number):int{
var _local3:Number = (_arg1 + _arg2);
if (_local3 > endTick){
if (timeWarnings == 0){
return (Gui.RENDERABLE_STOP);
};
timeWarnings--;
startTick = _local3;
middleTick = (startTick + HALF_TIME_TICKS);
endTick = (middleTick + HALF_TIME_TICKS);
gui.soundManager.timeWarning();
};
if (_local3 > middleTick){
time.textColor = 0;
} else {
time.textColor = 11143700;
};
return (Gui.RENDERABLE_CONTINUE);
}
}
}//package guipackage
Section 17
//GameEndScoreAnim (guipackage.GameEndScoreAnim)
package guipackage {
import flash.display.*;
public class GameEndScoreAnim extends MovieClip implements Renderable {
protected const FRAMES_PER_TICK:Number = 0.7;
public var star:MovieClip;
public var gui:Gui;
public var startTick:int;// = 0
public var endTick:int;// = 90
public function GameEndScoreAnim(){
addFrameScript(29, frame30);
gui = OutroAnimation(parent).gui;
gui.startRenderable(this);
}
public function render(_arg1:int, _arg2:Number):int{
if (startTick == 0){
startTick = _arg1;
endTick = (endTick + startTick);
star.outroScoreLabel.text = gui.document.getTranslation("outro_score_label");
star.textField.text = ("" + OutroAnimation(parent).scoreInt);
};
var _local3:int = (_arg1 - startTick);
var _local4:int = Math.ceil((_local3 * FRAMES_PER_TICK));
if (_local4 > totalFrames){
_local4 = totalFrames;
};
gotoAndStop(_local4);
if (_arg1 < endTick){
return (Gui.RENDERABLE_CONTINUE);
};
gotoAndStop(totalFrames);
return (Gui.RENDERABLE_STOP);
}
function frame30(){
stop();
}
}
}//package guipackage
Section 18
//Grid (guipackage.Grid)
package guipackage {
import flash.display.*;
import modelpackage.*;
public class Grid extends Sprite {
protected var gui:Gui;
public var playArea:PlayArea;
public var size:int;
public var colors:int;
public var blockWidth:Number;
public var blockHalfWidth:Number;
protected var blocks:Array;
protected var flippingBlocks:Array;
public function Grid(_arg1:Gui, _arg2:PlayArea, _arg3:Array, _arg4:int){
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:BlockData;
var _local9:int;
var _local10:Block;
super();
this.gui = _arg1;
this.playArea = _arg2;
this.size = _arg3.length;
this.colors = _arg4;
this.blockWidth = (_arg2.scale * PlayArea.NATURAL_BLOCK_WIDTH);
this.blockHalfWidth = (blockWidth / 2);
blocks = new Array();
_local5 = 0;
while (_local5 < size) {
blocks[_local5] = new Array();
_local6 = _arg2.getPos(_local5);
_local7 = 0;
while (_local7 < size) {
_local8 = BlockData(_arg3[_local5][_local7]);
_local9 = _arg2.getPos(_local7);
_local10 = new Block(_local8, this);
_local10.x = _local9;
_local10.y = _local6;
addChild(_local10);
blocks[_local5][_local7] = _local10;
_local7++;
};
_local5++;
};
}
public function destroy():void{
var _local2:int;
var _local3:Object;
var _local4:Block;
var _local1:int;
while (_local1 < size) {
_local2 = 0;
while (_local2 < size) {
_local3 = blocks[_local1][_local2];
if (_local3 != null){
_local4 = Block(_local3);
gui.stopRenderable(_local4);
};
_local2++;
};
_local1++;
};
}
public function levelAnimationPart1(_arg1:int, _arg2:int, _arg3:Array):void{
var _local10:BlockData;
var _local11:Block;
var _local16:int;
var _local17:Object;
var _local4:Number = ((_arg2 - _arg1) * 0.33);
var _local5:Number = _arg1;
var _local6:Number = (_arg1 + _local4);
var _local7:Number = Number.MAX_VALUE;
var _local8:Number = Number.MAX_VALUE;
var _local9:Number = _local6;
var _local12:Array = blocks.slice();
var _local13:int = _arg3.length;
var _local14:int;
while (_local14 < _local13) {
_local10 = BlockData(_arg3[_local14]);
_local11 = Block(_local12[_local10.row][_local10.col]);
_local12[_local10.row][_local10.col] = null;
_local11.initialize(_local5, _local6, _local7, _local8, _local9);
gui.startRenderable(_local11);
_local14++;
};
_local5 = ((_arg1 + _local4) + _local4);
_local6 = _arg2;
var _local15:int;
while (_local15 < size) {
_local16 = 0;
while (_local16 < size) {
_local17 = _local12[_local15][_local16];
if (_local17 != null){
_local11 = Block(_local17);
_local11.initialize(_local5, _local6, _local7, _local8, _arg2);
gui.startRenderable(_local11);
};
_local16++;
};
_local15++;
};
}
public function levelAnimationPart3(_arg1:int, _arg2:int):void{
var _local8:BlockData;
var _local9:Block;
var _local11:int;
var _local12:Object;
var _local3:Number = ((_arg2 - _arg1) * 0.33);
var _local4:Number = _arg1;
var _local5:Number = _arg1;
var _local6:Number = (_arg1 + _local3);
var _local7:Number = _arg2;
var _local10:int;
while (_local10 < size) {
_local11 = 0;
while (_local11 < size) {
_local12 = blocks[_local10][_local11];
if (_local12 != null){
_local9 = Block(_local12);
_local9.initialize(_local4, _local5, _local6, _local7, _arg2);
gui.startRenderable(_local9);
};
_local11++;
};
_local10++;
};
}
public function flipBlocks(_arg1:int, _arg2:int, _arg3:Array):void{
var _local9:BlockData;
var _local10:Block;
var _local4:Number = (_arg2 - _arg1);
var _local5:Number = (_arg1 + (_local4 * 0.5));
var _local6:Number = (_arg1 + (_local4 * 0.5));
var _local7:int = _arg3.length;
var _local8:int;
while (_local8 < _local7) {
_local9 = BlockData(_arg3[_local8]);
_local10 = Block(blocks[_local9.row][_local9.col]);
if (_local10.flipping){
gui.stopRenderable(_local10);
_local10.nextBlock();
_local10.scaleX = 1;
_local10.scaleY = 1;
_local10.flipping = false;
};
if (_local10.shaking){
gui.stopRenderable(_local10);
_local10.x = playArea.getPos(_local9.col);
_local10.y = playArea.getPos(_local9.row);
_local10.shaking = false;
};
_local10.nextBlockData = _local9;
_local10.initialize(_arg1, _local5, _local6, _arg2, _arg2);
gui.startRenderable(_local10);
_local8++;
};
}
public function shakeBlocks(_arg1:Array):void{
var _local4:BlockData;
var _local5:Block;
var _local2:int = _arg1.length;
var _local3:int;
while (_local3 < _local2) {
_local4 = BlockData(_arg1[_local3]);
_local5 = Block(blocks[_local4.row][_local4.col]);
if ((((_local5.flipping == false)) && ((_local5.shaking == false)))){
_local5.shaking = true;
gui.startRenderable(_local5);
};
_local3++;
};
}
public function showStatus(_arg1:Array):void{
var _local3:int;
var _local4:Block;
var _local2:int;
while (_local2 < size) {
_local3 = 0;
while (_local3 < size) {
_local4 = Block(blocks[_local2][_local3]);
_local4.blockData = BlockData(_arg1[_local2][_local3]);
_local4.update();
_local3++;
};
_local2++;
};
}
public function normalize():void{
var _local2:int;
var _local3:Block;
var _local1:int;
while (_local1 < size) {
_local2 = 0;
while (_local2 < size) {
_local3 = Block(blocks[_local1][_local2]);
gui.stopRenderable(_local3);
_local3.nextBlock();
_local3.scaleX = 1;
_local3.scaleY = 1;
_local3.x = playArea.getPos(_local2);
_local3.y = playArea.getPos(_local1);
_local2++;
};
_local1++;
};
}
}
}//package guipackage
Section 19
//Gui (guipackage.Gui)
package guipackage {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import librarynames.*;
public class Gui extends Sprite {
protected var background:Background;
public var gameBackground:GameBackground;
protected var intro:Intro;
protected var outro:Outro;
public var playArea:PlayArea;
public var document:Document;
public var guiControl:GuiControl;
protected var objectsToRender:Array;
protected var soundOn:String;
protected var soundOff:String;
protected var gameRunning:Boolean;// = false
var soundManager:SoundManager;
public var debugStr:String;
public static const RENDERABLE_CONTINUE:int = 0;
public static const RENDERABLE_STOP:int = 1;
public static const RENDERABLE_HIDE:int = 2;
public static const RENDERABLE_REMOVE:int = 3;
public function Gui(_arg1:Document){
this.document = _arg1;
x = 377;
y = 300;
objectsToRender = new Array();
background = new Background();
addChild(background);
soundManager = new SoundManager(this);
var _local2:* = soundManager.startIntroSound();
background.exitBtnTf.visible = false;
intro = new Intro(this, _local2);
intro.y = -90;
addChild(intro);
startRenderable(intro);
background.sndBtn.addEventListener(MouseEvent.CLICK, soundManager.toggleSound);
background.sndBtn.addEventListener(MouseEvent.CLICK, toggleSoundBtn);
}
public function toggleSoundBtn(_arg1:Event):void{
if (background.soundBtnTf.text == soundOn){
background.soundBtnTf.text = soundOff;
} else {
background.soundBtnTf.text = soundOn;
};
}
protected function initDisplayObjects():void{
}
public function setIntroTranslations():void{
var _local1:TextFormat = new TextFormat();
_local1.letterSpacing = 2;
intro.clickToStartTf.defaultTextFormat = _local1;
intro.clickToStartTf.text = document.getTranslation("click_to_start");
intro.rainbowCatInstructionTf.text = document.getTranslation("rainbow_cat_instruction");
intro.coolCatInstructionTf.text = document.getTranslation("cool_cat_instruction");
intro.herringInstructionTf.text = document.getTranslation("herring_instruction");
intro.countDownTf1.text = document.getTranslation("intro_countdown_first");
intro.countDownTf2.text = document.getTranslation("countdown_last");
intro.instructionsLabel.text = document.getTranslation("instructions_label");
Footsteps.nextLevelString = document.getTranslation("next_level");
if (document.relaxMode){
intro.instructionTf.text = document.getTranslation("intro_instruction_relax");
intro.shuffleInstructionTf.text = document.getTranslation("shuffle_instruction_relax");
intro.clockInstructionTf.text = document.getTranslation("clock_instruction_relax");
} else {
intro.instructionTf.text = document.getTranslation("intro_instruction");
intro.shuffleInstructionTf.text = document.getTranslation("shuffle_instruction");
intro.clockInstructionTf.text = document.getTranslation("clock_instruction");
};
soundOn = document.getTranslation("sound_on").toUpperCase();
soundOff = document.getTranslation("sound_off").toUpperCase();
background.exitBtnTf.text = document.getTranslation("exit_button").toUpperCase();
background.soundBtnTf.text = soundOn;
}
public function startGame():void{
background.exitBtnTf.visible = true;
gameBackground = new GameBackground(this);
addChild(gameBackground);
playArea = new PlayArea(this);
playArea.x = -140;
playArea.y = -60;
addChild(playArea);
background.exitBtn.addEventListener(MouseEvent.CLICK, exitClicked);
document.startGame();
stage.addEventListener(MouseEvent.MOUSE_MOVE, playArea.mouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, playArea.mouseUp);
gameBackground.shuffleBtn.addEventListener(MouseEvent.CLICK, shuffleClick);
gameBackground.shuffleBtn.addEventListener(MouseEvent.CLICK, shuffleClick);
gameBackground.shuffleBtn.addEventListener(MouseEvent.ROLL_OVER, shuffleRollOver);
gameBackground.shuffleBtn.addEventListener(MouseEvent.ROLL_OUT, shuffleRollOut);
gameBackground.shuffleLabel.mouseEnabled = false;
soundManager.gameStart();
}
public function shuffleClick(_arg1:MouseEvent):void{
if (gameRunning){
document.addPlayData([App.INPUT_SHUFFLE]);
};
}
public function shuffleRollOver(_arg1:MouseEvent):void{
gameBackground.shuffleBtn1.gotoAndStop(2);
gameBackground.shuffleBtn2.gotoAndStop(2);
}
public function shuffleRollOut(_arg1:MouseEvent):void{
gameBackground.shuffleBtn1.gotoAndStop(1);
gameBackground.shuffleBtn2.gotoAndStop(1);
}
public function selectRect(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{
if (gameRunning){
document.addPlayData([App.INPUT_SELECT_RECT, _arg1, _arg2, _arg3, _arg4]);
};
}
public function selectChange(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{
if (gameRunning){
document.addPlayData([App.INPUT_SELECT_CHANGE, _arg1, _arg2, _arg3, _arg4]);
};
}
private function exitClicked(_arg1:MouseEvent):void{
background.exitBtn.removeEventListener(MouseEvent.CLICK, exitClicked);
document.addPlayData([App.INPUT_EXIT]);
}
private function test(_arg1:MouseEvent):void{
if (gameRunning){
};
}
private function toggleSound(_arg1:MouseEvent):void{
}
public function startRenderable(_arg1:Renderable):void{
var _local2:int = objectsToRender.indexOf(_arg1, 0);
if (_local2 == -1){
objectsToRender.push(_arg1);
};
}
public function stopRenderable(_arg1:Renderable):void{
var _local2:int = objectsToRender.indexOf(_arg1, 0);
if (_local2 != -1){
objectsToRender.splice(_local2, 1);
};
}
public function render(_arg1:int, _arg2:Number):void{
var _local4:Renderable;
var _local5:int;
var _local6:DisplayObjectContainer;
guiControl.executeCommands(_arg1, _arg2);
var _local3:int = (objectsToRender.length - 1);
while (_local3 >= 0) {
_local4 = Renderable(objectsToRender[_local3]);
_local5 = _local4.render(_arg1, _arg2);
if (_local5 != Gui.RENDERABLE_CONTINUE){
stopRenderable(_local4);
if (_local5 == Gui.RENDERABLE_HIDE){
DisplayObject(_local4).visible = false;
} else {
if (_local5 == Gui.RENDERABLE_REMOVE){
_local6 = DisplayObject(_local4).parent;
_local6.removeChild(DisplayObject(_local4));
};
};
};
_local3--;
};
}
public function showTimeWarning():void{
}
public function showOutro(_arg1:int, _arg2:Boolean, _arg3:int, _arg4:int):void{
playArea.visible = false;
removeChild(gameBackground);
background.exitBtnTf.visible = false;
background.soundBtnTf.visible = false;
background.exitBtn.visible = false;
background.sndBtn.visible = false;
outro = new Outro(this, _arg1, _arg2, _arg3, _arg4);
addChild(outro);
startRenderable(outro);
soundManager.gameEnd();
}
public function setGameRunning(_arg1:Boolean):void{
gameRunning = _arg1;
}
public function getGameRunning():Boolean{
return (gameRunning);
}
public function updateScore(_arg1:int):void{
gameBackground.score.text = ("" + _arg1);
}
public function scorePop(_arg1:int, _arg2:Number, _arg3:Number):void{
playArea.scorePop(_arg1, _arg2, _arg3);
}
public function initGame(_arg1:Array, _arg2:int):void{
playArea.newLevel(_arg1, _arg2);
}
public function updateTime(_arg1:int, _arg2:int):void{
var _local3:String = String(_arg1);
if (_local3.length < 1){
_local3 = "0";
};
var _local4:String = ("" + _arg2);
if (_local4.length < 2){
_local4 = ("0" + _local4);
};
gameBackground.time.text = ((_local3 + ":") + _local4);
}
public function updateLevel(_arg1:int):void{
gameBackground.level.text = ("" + (_arg1 + 1));
}
}
}//package guipackage
Section 20
//GuiControl (guipackage.GuiControl)
package guipackage {
import librarynames.*;
public class GuiControl {
protected const SET_GAME_RUNNING:int = 0;
protected const UPDATE_TIME:int = 1;
protected const GAME_OVER:int = 2;
protected const UPDATE_SCORE:int = 3;
protected const SHOW_TIME_WARNING:int = 4;
protected const LEVEL_ANIMATION_PART_1:int = 5;
protected const INIT_GAME:int = 6;
protected const FLIP_BLOCKS:int = 7;
protected const UPDATE_LEVEL:int = 8;
protected const SCORE_POP:int = 9;
protected const SHOW_STATUS:int = 10;
protected const COMBO_SOUND:int = 11;
protected const SHAKE_BLOCKS:int = 12;
protected const LEVEL_ANIMATION_PART_2:int = 13;
protected const SHUFFLE:int = 14;
protected const LEVEL_ANIMATION_PART_3:int = 15;
protected const STOP_TIME_WARNING:int = 16;
protected const NORMALIZE_GRID:int = 17;
protected const UPDATE_MOVES:int = 18;
protected var gui:Gui;
protected var commands:Array;
public function GuiControl(_arg1:Gui){
this.gui = _arg1;
commands = new Array();
}
public function setGameRunning(_arg1:Boolean):void{
commands.push([SET_GAME_RUNNING, _arg1]);
}
public function updateTimeDisplay(_arg1:int, _arg2:int):void{
commands.push([UPDATE_TIME, _arg1, _arg2]);
}
public function updateScore(_arg1:int):void{
commands.push([UPDATE_SCORE, _arg1]);
}
public function scorePop(_arg1:int, _arg2:Number, _arg3:Number):void{
commands.push([SCORE_POP, _arg1, _arg2, _arg3]);
}
public function gameOver(_arg1:int, _arg2:Boolean, _arg3:int, _arg4:int):void{
commands.push([GAME_OVER, _arg1, _arg2, _arg3, _arg4]);
}
public function showTimeWarning():void{
commands.push([SHOW_TIME_WARNING]);
}
public function stopTimeWarning():void{
commands.push([STOP_TIME_WARNING]);
}
public function levelAnimationPart1(_arg1:int, _arg2:int, _arg3:Array, _arg4:int, _arg5:int, _arg6:int):void{
commands.push([LEVEL_ANIMATION_PART_1, _arg1, _arg2, _arg3, _arg5, _arg6]);
}
public function levelAnimationPart2(_arg1:int, _arg2:int):void{
commands.push([LEVEL_ANIMATION_PART_2, _arg1, _arg2]);
}
public function levelAnimationPart3(_arg1:int, _arg2:int, _arg3:Array, _arg4:int):void{
commands.push([LEVEL_ANIMATION_PART_3, _arg1, _arg2, _arg3, _arg4]);
}
public function initGame(_arg1:Array, _arg2:int):void{
commands.push([INIT_GAME, _arg1, _arg2]);
}
public function flipBlocks(_arg1:int, _arg2:int, _arg3:Array):void{
commands.push([FLIP_BLOCKS, _arg1, _arg2, _arg3]);
}
public function normalizeGrid():void{
commands.push([NORMALIZE_GRID]);
}
public function updateMoves(_arg1:int):void{
commands.push([UPDATE_MOVES, _arg1]);
}
public function showStatus(_arg1:Array):void{
commands.push([SHOW_STATUS, _arg1]);
}
public function updateLevel(_arg1:int):void{
commands.push([UPDATE_LEVEL, _arg1]);
}
public function comboSound(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{
commands.push([COMBO_SOUND, _arg1, _arg2, _arg3, _arg4, _arg5]);
}
public function shakeBlocks(_arg1:Array):void{
commands.push([SHAKE_BLOCKS, _arg1]);
}
public function shuffle():void{
commands.push([SHUFFLE]);
}
public function executeCommands(_arg1:int, _arg2:Number):void{
var _local3:Array;
var _local4:int;
var _local5:int;
while (commands.length > 0) {
_local3 = commands.shift();
_local4 = int(_local3[0]);
_local5 = 1;
switch (_local4){
case SET_GAME_RUNNING:
gui.setGameRunning(Boolean(_local3[1]));
break;
case UPDATE_TIME:
gui.updateTime(int(_local3[1]), int(_local3[2]));
break;
case UPDATE_SCORE:
gui.updateScore(int(_local3[1]));
break;
case GAME_OVER:
gui.showOutro(int(_local3[1]), Boolean(_local3[2]), int(_local3[3]), int(_local3[4]));
break;
case SHOW_TIME_WARNING:
gui.gameBackground.timeWarning(_arg1, _arg2);
break;
case STOP_TIME_WARNING:
gui.gameBackground.stopTimeWarning();
break;
case LEVEL_ANIMATION_PART_1:
var _temp1 = _local5;
_local5 = (_local5 + 1);
var _temp2 = _local5;
_local5 = (_local5 + 1);
var _temp3 = _local5;
_local5 = (_local5 + 1);
gui.playArea.grid.levelAnimationPart1(int(_local3[_temp1]), int(_local3[_temp2]), _local3[_temp3]);
var _temp4 = _local5;
_local5 = (_local5 + 1);
var _temp5 = _local5;
_local5 = (_local5 + 1);
var _temp6 = _local5;
_local5 = (_local5 + 1);
gui.soundManager.level(int(_local3[_temp4]), int(_local3[_temp5]), int(_local3[_temp6]));
break;
case LEVEL_ANIMATION_PART_2:
var _temp7 = _local5;
_local5 = (_local5 + 1);
var _temp8 = _local5;
_local5 = (_local5 + 1);
gui.playArea.levelAnimationPart2(int(_local3[_temp7]), int(_local3[_temp8]));
break;
case LEVEL_ANIMATION_PART_3:
gui.playArea.newLevel(_local3[3], int(_local3[4]));
var _temp9 = _local5;
_local5 = (_local5 + 1);
var _temp10 = _local5;
_local5 = (_local5 + 1);
gui.playArea.grid.levelAnimationPart3(int(_local3[_temp9]), int(_local3[_temp10]));
break;
case INIT_GAME:
gui.initGame(_local3[1], int(_local3[2]));
break;
case FLIP_BLOCKS:
var _temp11 = _local5;
_local5 = (_local5 + 1);
var _temp12 = _local5;
_local5 = (_local5 + 1);
var _temp13 = _local5;
_local5 = (_local5 + 1);
gui.playArea.grid.flipBlocks(int(_local3[_temp11]), int(_local3[_temp12]), _local3[_temp13]);
break;
case NORMALIZE_GRID:
gui.playArea.grid.normalize();
break;
case UPDATE_MOVES:
gui.gameBackground.time.text = ("" + int(_local3[1]));
break;
case UPDATE_LEVEL:
gui.updateLevel(int(_local3[1]));
break;
case SCORE_POP:
gui.scorePop(int(_local3[1]), Number(_local3[2]), Number(_local3[3]));
break;
case SHOW_STATUS:
gui.playArea.grid.showStatus(_local3[1]);
break;
case COMBO_SOUND:
gui.soundManager.comboSound(int(_local3[1]), int(_local3[2]), int(_local3[3]), int(_local3[4]), int(_local3[5]));
break;
case SHAKE_BLOCKS:
gui.playArea.grid.shakeBlocks(_local3[1]);
gui.soundManager.notCombo();
break;
case SHUFFLE:
gui.soundManager.shuffle();
break;
default:
throw (new Error(("unknown gui command: " + _local4)));
};
};
}
}
}//package guipackage
Section 21
//InstrumentAnim (guipackage.InstrumentAnim)
package guipackage {
import flash.display.*;
public class InstrumentAnim extends MovieClip implements Renderable {
protected const FRAMES_PER_TICK:Number = 0.6;
public var startTick:int;// = 0
public var endTick:int;// = 2147483647
public function InstrumentAnim(){
OutroAnimation(parent).gui.startRenderable(this);
}
public function render(_arg1:int, _arg2:Number):int{
if ((((startTick == 0)) || ((_arg1 > endTick)))){
startTick = _arg1;
endTick = (startTick + (totalFrames / FRAMES_PER_TICK));
};
var _local3:int = (_arg1 - startTick);
var _local4:int = Math.ceil((_local3 * FRAMES_PER_TICK));
if (_local4 > totalFrames){
_local4 = totalFrames;
};
gotoAndStop(_local4);
return (Gui.RENDERABLE_CONTINUE);
}
}
}//package guipackage
Section 22
//Intro (guipackage.Intro)
package guipackage {
import flash.display.*;
import modelpackage.*;
import flash.events.*;
import flash.text.*;
import librarynames.*;
public class Intro extends Sprite implements Renderable {
public var instructionTf:TextField;
public var clickToStartTf:TextField;
public var instructionsLabel:TextField;
public var shuffleInstructionTf:TextField;
public var rainbowCatInstructionTf:TextField;
public var coolCatInstructionTf:TextField;
public var herringInstructionTf:TextField;
public var clockInstructionTf:TextField;
public var startButton:StartButton;
public var countDownTf1:TextField;
public var countDownDigitTf:TextField;
public var countDownTf2:TextField;
public var rainbow:MovieClip;
public var coolCat:MovieClip;
public var block1:MovieClip;
public var herring:MovieClip;
public var block2:MovieClip;
public var time:MovieClip;
public var block3:MovieClip;
protected var gui:Gui;
protected var countDownTicks:Number;
protected var countDownSec:int;
protected var startTick:int;// = -100
protected var endTick:int;// = -1
protected var lastTimeStr:String;
protected var startButtonInitializeTick:int;// = 2147483647
protected var bitmapGenerationPart:int;// = 0
protected var size:int;// = 5
protected var color:int;
public function Intro(_arg1:Gui, _arg2){
this.gui = _arg1;
this.countDownTicks = ((_arg2 * App.TICKS_PER_SECOND) / 1000);
this.countDownSec = (countDownTicks / App.TICKS_PER_SECOND);
var _local3:TextFormat = new TextFormat();
_local3.letterSpacing = 2;
countDownTf1.defaultTextFormat = _local3;
countDownTf1.visible = false;
countDownDigitTf.visible = false;
countDownTf2.visible = false;
rainbow.head.gotoAndStop("neutral");
coolCat.head.gotoAndStop("neutral");
block1.stop();
block1.taken.visible = false;
block2.stop();
block2.taken.visible = false;
block3.stop();
block3.taken.visible = false;
this.mouseEnabled = false;
}
public function render(_arg1:int, _arg2:Number):int{
if (startTick == -100){
startTick = _arg1;
endTick = (startTick + countDownTicks);
};
switch (bitmapGenerationPart++){
case 0:
Block.blockBitmapData = new BlockBitmapData();
break;
case 1:
Block.blockBitmapData.makeCat(size++, color);
bitmapGenerationPart--;
if (size > 10){
color++;
if (color < BlockData.COLORS){
size = 5;
} else {
bitmapGenerationPart++;
};
};
break;
case 2:
Block.blockBitmapData.makeMiscParts();
break;
case 3:
Block.blockBitmapData.makeHerringsAndClocks();
break;
case 4:
Block.blockBitmapData.makeFinalBacksides1();
break;
case 5:
Block.blockBitmapData.makeFinalBacksides2();
break;
case 6:
Block.blockBitmapData.makeFinalFronts1();
break;
case 7:
Block.blockBitmapData.makeFinalFronts2();
break;
case 8:
Block.blockBitmapData.makeFinalFronts3();
break;
case 9:
startButton = new StartButton();
startButton.x = -467;
startButton.y = -428;
startButton.width = 1000;
startButton.height = 700;
startButton.alpha = 0;
addChild(startButton);
countDownTf1.visible = true;
countDownDigitTf.visible = true;
countDownTf2.visible = true;
break;
case 10:
startButton.addEventListener(MouseEvent.CLICK, start);
break;
};
var _local3:int = ((endTick - _arg1) / App.TICKS_PER_SECOND);
if (_local3 != countDownSec){
countDownSec = _local3;
countDownDigitTf.text = ("" + countDownSec);
countDownSec = _local3;
};
if (_arg1 >= endTick){
gui.startGame();
return (Gui.RENDERABLE_REMOVE);
};
return (Gui.RENDERABLE_CONTINUE);
}
protected function start(_arg1:MouseEvent):void{
startButton.removeEventListener(MouseEvent.CLICK, start);
endTick = 0;
}
}
}//package guipackage
Section 23
//Outro (guipackage.Outro)
package guipackage {
import flash.display.*;
import flash.events.*;
public class Outro extends Sprite implements Renderable {
public var FRAME_RATE:int;// = 25
protected var gui:Gui;
protected var initialized:Boolean;// = false
protected var endTick:int;// = 960
protected var earliestPossibleEndTick:int;// = 120
protected var outroAnimation:OutroAnimation;
protected var countDownSeconds:int;// = -1
public function Outro(_arg1:Gui, _arg2:int, _arg3:Boolean, _arg4:int, _arg5:int){
this.gui = _arg1;
addEventListener(MouseEvent.CLICK, gameQuit);
outroAnimation = new OutroAnimation(_arg1, _arg2, _arg3, _arg4, _arg5);
outroAnimation.countTf1.text = _arg1.document.getTranslation("outro_countdown_first");
outroAnimation.countDownTf2.text = _arg1.document.getTranslation("countdown_last");
addChild(outroAnimation);
_arg1.startRenderable(outroAnimation);
}
protected function gameQuit(_arg1:MouseEvent):void{
endTick = earliestPossibleEndTick;
removeEventListener(MouseEvent.CLICK, gameQuit);
}
public function render(_arg1:int, _arg2:Number):int{
var _local4:int;
if (!initialized){
initialized = true;
endTick = (endTick + _arg1);
earliestPossibleEndTick = (earliestPossibleEndTick + _arg1);
};
var _local3:int = (endTick - _arg1);
if (_local3 > 0){
_local4 = (((endTick - _arg1) / App.TICKS_PER_SECOND) + 1);
} else {
_local4 = 0;
};
if (_local4 != countDownSeconds){
countDownSeconds = _local4;
outroAnimation.countDownDigitTf.text = ("" + countDownSeconds);
};
if (_arg1 >= endTick){
gui.document.gameQuit();
return (Gui.RENDERABLE_STOP);
};
return (Gui.RENDERABLE_CONTINUE);
}
}
}//package guipackage
Section 24
//OutroAnimation (guipackage.OutroAnimation)
package guipackage {
import flash.display.*;
import flash.text.*;
public class OutroAnimation extends MovieClip implements Renderable {
protected const FRAMES_PER_TICK:Number = 0.7;
public var score:GameEndScoreAnim;
public var levelBubble:MovieClip;
public var practiceBubble:MovieClip;
public var countTf1:TextField;
public var countDownTf2:TextField;
public var countDownDigitTf:TextField;
public var cat1:MovieClip;
public var cat2:MovieClip;
public var cat3:MovieClip;
public var cat4:MovieClip;
public var cat5:MovieClip;
public var cat6:MovieClip;
public var Drums:MovieClip;
public var gui:Gui;
public var scoreInt:int;
protected var shortMode:Boolean;
protected var level:int;
protected var startFrame:int;
protected var endFrame:int;
protected var startTick:int;// = 0
protected var levelBabbleFrame:int;
protected var levelBabbleEndFrame:int;// = 30
protected var practiceBabbleFrame:int;
protected var endTick:int;
protected var cat1Neutralized:Boolean;// = false
protected var cat2Neutralized:Boolean;// = false
protected var cat3Neutralized:Boolean;// = false
protected var cat4Neutralized:Boolean;// = false
protected var cat5Neutralized:Boolean;// = false
protected var cat6Neutralized:Boolean;// = false
protected var cat1Blinking:Boolean;// = false
protected var cat2Blinking:Boolean;// = false
protected var praciceBubbleSet:Boolean;// = false
protected var outroBlinkings:Array;
public function OutroAnimation(_arg1:Gui, _arg2:int, _arg3:Boolean, _arg4:int, _arg5:int){
outroBlinkings = new Array();
this.gui = _arg1;
this.scoreInt = _arg2;
this.shortMode = _arg3;
this.level = (_arg4 + 1);
var _local6:TextFormat = new TextFormat();
_local6.letterSpacing = 2;
countTf1.defaultTextFormat = _local6;
switch (_arg5){
case 2:
gotoAndStop("TwoCatsEnd");
endFrame = currentFrame;
gotoAndStop("LevelTwo");
levelBabbleFrame = currentFrame;
gotoAndStop("PracticeTwo");
practiceBabbleFrame = currentFrame;
gotoAndStop("TwoCats");
startFrame = currentFrame;
break;
case 3:
gotoAndStop("ThreeCatsEnd");
endFrame = currentFrame;
gotoAndStop("LevelThree");
levelBabbleFrame = currentFrame;
gotoAndStop("PracticeThree");
practiceBabbleFrame = currentFrame;
gotoAndStop("ThreeCats");
startFrame = currentFrame;
break;
case 4:
gotoAndStop("FourCatsEnd");
endFrame = currentFrame;
gotoAndStop("LevelFour");
levelBabbleFrame = currentFrame;
gotoAndStop("FourCats");
startFrame = currentFrame;
break;
case 5:
gotoAndStop("FiveCatsEnd");
endFrame = currentFrame;
gotoAndStop("LevelFive");
levelBabbleFrame = currentFrame;
gotoAndStop("FiveCats");
startFrame = currentFrame;
break;
case 6:
gotoAndStop("SixCatsEnd");
endFrame = currentFrame;
gotoAndStop("LevelSix");
levelBabbleFrame = currentFrame;
gotoAndStop("SixCats");
startFrame = currentFrame;
break;
default:
trace("error in OutroAnimation");
};
}
public function render(_arg1:int, _arg2:Number):int{
var _local6:int;
var _local7:int;
var _local9:OutroBlinking;
if (startTick == 0){
startTick = _arg1;
levelBabbleEndFrame = (levelBabbleEndFrame + levelBabbleFrame);
if (levelBabbleEndFrame > endFrame){
levelBabbleEndFrame = endFrame;
};
};
var _local3:int = (_arg1 - startTick);
var _local4:int = Math.floor((_local3 * FRAMES_PER_TICK));
var _local5:int = (startFrame + _local4);
if (_local5 > endFrame){
_local5 = endFrame;
};
gotoAndStop(_local5);
if (((!(cat1Neutralized)) && (!((cat1 == null))))){
cat1.gotoAndStop("neutral");
if (!shortMode){
outroBlinkings.push(new OutroBlinking(cat1));
cat1Blinking = true;
};
cat1Neutralized = true;
};
if (((!(cat2Neutralized)) && (!((cat2 == null))))){
cat2.gotoAndStop("neutral");
cat2Neutralized = true;
};
if (((!(cat3Neutralized)) && (!((cat3 == null))))){
cat3.gotoAndStop("neutral");
outroBlinkings.push(new OutroBlinking(cat3));
cat3Neutralized = true;
};
if (((!(cat4Neutralized)) && (!((cat4 == null))))){
cat4.gotoAndStop("neutral");
outroBlinkings.push(new OutroBlinking(cat4));
cat4Neutralized = true;
};
if (((!(cat5Neutralized)) && (!((cat5 == null))))){
cat5.gotoAndStop("neutral");
outroBlinkings.push(new OutroBlinking(cat5));
cat5Neutralized = true;
};
if (((!(cat6Neutralized)) && (!((cat6 == null))))){
cat6.gotoAndStop("neutral");
cat6Neutralized = true;
};
if (((((!((cat2 == null))) && ((currentFrame > levelBabbleFrame)))) && ((currentFrame < levelBabbleEndFrame)))){
_local6 = (levelBabbleEndFrame - currentFrame);
_local7 = ((levelBabbleEndFrame - levelBabbleFrame) / 4);
if (_local6 < _local7){
cat2.gotoAndStop("cool");
} else {
if (_local6 < (_local7 * 2)){
cat2.gotoAndStop("miao");
} else {
if (_local6 < (_local7 * 3)){
cat2.gotoAndStop("cool");
} else {
if (_local6 < (_local7 * 2)){
cat2.gotoAndStop("miao");
};
};
};
};
} else {
if (((!(cat2Blinking)) && ((currentFrame >= levelBabbleEndFrame)))){
outroBlinkings.push(new OutroBlinking(cat2));
cat2Blinking = true;
};
};
if (((((((((shortMode) && (!((cat1 == null))))) && (!((practiceBubble == null))))) && ((currentFrame > practiceBabbleFrame)))) && ((currentFrame < endFrame)))){
_local6 = (endFrame - currentFrame);
_local7 = ((endFrame - practiceBabbleFrame) / 4);
if (_local6 < _local7){
cat1.gotoAndStop("cool");
} else {
if (_local6 < (_local7 * 2)){
cat1.gotoAndStop("miao");
} else {
if (_local6 < (_local7 * 3)){
cat1.gotoAndStop("cool");
} else {
if (_local6 < (_local7 * 2)){
cat1.gotoAndStop("miao");
};
};
};
};
} else {
if (((((!(cat1Blinking)) && (shortMode))) && ((currentFrame == endFrame)))){
outroBlinkings.push(new OutroBlinking(cat1));
cat1Blinking = true;
};
};
if (levelBubble != null){
levelBubble.outroLevelLabel.text = gui.document.getTranslation("outro_level_label");
levelBubble.textField.text = ("" + level);
};
if (((!(praciceBubbleSet)) && (!((practiceBubble == null))))){
practiceBubble.textField.text = gui.document.getTranslation("outro_open_game_label");
practiceBubble.visible = shortMode;
praciceBubbleSet = true;
};
var _local8:int;
while (_local8 < outroBlinkings.length) {
_local9 = OutroBlinking(outroBlinkings[_local8]);
_local9.render(_arg1);
_local8++;
};
return (Gui.RENDERABLE_CONTINUE);
}
}
}//package guipackage
Section 25
//OutroBlinking (guipackage.OutroBlinking)
package guipackage {
import flash.display.*;
public class OutroBlinking {
protected const MAX_TICKS:int = 200;
protected const MIN_TICKS:int = 100;
protected const CLOSED_TICKS:int = 25;
protected var cat:MovieClip;
protected var nextChange:int;// = 0
public function OutroBlinking(_arg1:MovieClip){
this.cat = _arg1;
_arg1.gotoAndStop("blinking");
}
public function render(_arg1:int):void{
if (cat.blink != null){
if (nextChange == 0){
if (cat.blink.visible){
nextChange = (_arg1 + CLOSED_TICKS);
} else {
nextChange = ((_arg1 + MIN_TICKS) + ((MAX_TICKS - MIN_TICKS) * Math.random()));
};
} else {
if (_arg1 >= nextChange){
cat.blink.visible = !(cat.blink.visible);
nextChange = 0;
};
};
};
}
}
}//package guipackage
Section 26
//PlayArea (guipackage.PlayArea)
package guipackage {
import flash.display.*;
import flash.events.*;
public class PlayArea extends Sprite {
public var gui:Gui;
public var selectionRect:SelectionRect;
public var grid:Grid;
public var footsteps:Footsteps;
public var scale:Number;
protected var blocksWide:int;
protected var firstCenterPos:int;
protected var halfWidth:int;
public static const TOTAL_WIDTH:int = 450;
public static const NATURAL_SPACE_BETWEEN:int = 5;
public static const NATURAL_BLOCK_WIDTH:int = 100;
public function PlayArea(_arg1:Gui){
this.gui = _arg1;
}
public function mouseMove(_arg1:MouseEvent):void{
if (selectionRect != null){
selectionRect.mouseMove(_arg1);
};
}
public function mouseUp(_arg1:MouseEvent):void{
selectionRect.mouseUp(_arg1);
}
public function levelAnimationPart2(_arg1:int, _arg2:int):void{
footsteps = new Footsteps();
footsteps.startTick = _arg1;
footsteps.endTick = _arg2;
addChildAt(footsteps, 2);
gui.startRenderable(footsteps);
}
public function newLevel(_arg1:Array, _arg2:int):void{
if (grid != null){
grid.destroy();
removeChild(grid);
};
this.blocksWide = _arg1.length;
scale = getScale(blocksWide);
halfWidth = Math.floor((getSpan(blocksWide) / 2));
firstCenterPos = (-(halfWidth) + Math.floor(((PlayArea.NATURAL_BLOCK_WIDTH * scale) / 2)));
grid = new Grid(gui, this, _arg1, _arg2);
addChildAt(grid, 0);
if (selectionRect != null){
removeEventListener(MouseEvent.MOUSE_DOWN, selectionRect.mouseDown);
removeEventListener(MouseEvent.ROLL_OUT, selectionRect.rollOut);
removeChild(selectionRect);
};
switch (grid.size){
case 5:
selectionRect = new SelectionRect05();
break;
case 6:
selectionRect = new SelectionRect06();
break;
case 7:
selectionRect = new SelectionRect07();
break;
case 8:
selectionRect = new SelectionRect08();
break;
case 9:
selectionRect = new SelectionRect09();
break;
case 10:
selectionRect = new SelectionRect10();
break;
};
selectionRect.playArea = this;
selectionRect.visible = false;
addChildAt(selectionRect, 1);
addEventListener(MouseEvent.MOUSE_DOWN, selectionRect.mouseDown);
addEventListener(MouseEvent.ROLL_OUT, selectionRect.rollOut);
}
public function getPos(_arg1:Number):int{
return ((firstCenterPos + ((_arg1 * (PlayArea.NATURAL_SPACE_BETWEEN + PlayArea.NATURAL_BLOCK_WIDTH)) * scale)));
}
public function getSpan(_arg1:int):int{
return ((((_arg1 * PlayArea.NATURAL_BLOCK_WIDTH) + ((_arg1 - 1) * PlayArea.NATURAL_SPACE_BETWEEN)) * scale));
}
public function getSlotNr(_arg1:int):int{
var _local2:int = Math.floor(((_arg1 + halfWidth) / ((PlayArea.NATURAL_SPACE_BETWEEN + PlayArea.NATURAL_BLOCK_WIDTH) * scale)));
if (_local2 < 0){
_local2 = 0;
} else {
if (_local2 >= blocksWide){
_local2 = (blocksWide - 1);
};
};
return (_local2);
}
public function getMouseCol():int{
return (getSlotNr(mouseX));
}
public function getMouseRow():int{
return (getSlotNr(mouseY));
}
public function scorePop(_arg1:int, _arg2:Number, _arg3:Number):void{
var _local4:ScorePop = new ScorePop(_arg1);
_local4.x = Math.floor(getPos(_arg2));
_local4.y = Math.floor(getPos(_arg3));
addChild(_local4);
gui.startRenderable(_local4);
}
public static function getScale(_arg1:int):Number{
var _local2:Number = ((PlayArea.NATURAL_BLOCK_WIDTH * _arg1) + (PlayArea.NATURAL_SPACE_BETWEEN * (_arg1 - 1)));
return ((PlayArea.TOTAL_WIDTH / _local2));
}
}
}//package guipackage
Section 27
//Renderable (guipackage.Renderable)
package guipackage {
public interface Renderable {
function render(_arg1:int, _arg2:Number):int;
}
}//package guipackage
Section 28
//ScorePop (guipackage.ScorePop)
package guipackage {
import flash.display.*;
import flash.text.*;
public class ScorePop extends Sprite implements Renderable {
public const SPEED:Number = -1;
public const FADE_IN_TICKS:int = 10;
public const START_FADE_OUT_TICK:int = 50;
public const TOTAL_TICKS:int = 80;
public var textField:TextField;
protected var startTick:Number;// = -1
protected var yStart:Number;
public function ScorePop(_arg1:int){
this.mouseEnabled = false;
textField.mouseEnabled = false;
textField.text = ("" + _arg1);
this.alpha = 0;
this.cacheAsBitmap = true;
}
public function render(_arg1:int, _arg2:Number):int{
var _local5:Number;
var _local6:int;
var _local7:Number;
var _local3:Number = (_arg1 + _arg2);
if (startTick == -1){
startTick = _local3;
yStart = y;
};
var _local4:Number = (_local3 - startTick);
if (_local4 < FADE_IN_TICKS){
_local5 = (_local4 / FADE_IN_TICKS);
this.alpha = Math.min(_local5, 1);
} else {
if (_local4 < START_FADE_OUT_TICK){
if (this.alpha != 1){
this.alpha = 1;
};
} else {
if (_local4 > START_FADE_OUT_TICK){
_local6 = (TOTAL_TICKS - START_FADE_OUT_TICK);
_local7 = (TOTAL_TICKS - _local4);
_local5 = (_local7 / _local6);
this.alpha = Math.max(_local5, 0);
};
};
};
y = Math.floor((yStart + (SPEED * _local4)));
if (_local4 > TOTAL_TICKS){
return (Gui.RENDERABLE_REMOVE);
};
return (Gui.RENDERABLE_CONTINUE);
}
}
}//package guipackage
Section 29
//SelectionRect (guipackage.SelectionRect)
package guipackage {
import flash.display.*;
import flash.events.*;
public class SelectionRect extends Sprite {
public var playArea:PlayArea;
protected var startCol:int;
protected var startRow:int;
protected var currentCol:int;
protected var currentRow:int;
protected var mouseIsDown:Boolean;// = false
public function mouseDown(_arg1:MouseEvent):void{
mouseIsDown = true;
startCol = playArea.getMouseCol();
startRow = playArea.getMouseRow();
currentCol = startCol;
currentRow = startRow;
visible = true;
update(_arg1);
playArea.gui.selectChange(startCol, startRow, startCol, startRow);
}
public function mouseMove(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
if (mouseIsDown){
_local2 = playArea.getMouseCol();
_local3 = playArea.getMouseRow();
if (((!((_local2 == currentCol))) || (!((_local3 == currentRow))))){
currentCol = _local2;
currentRow = _local3;
update(_arg1);
playArea.gui.selectChange(startCol, startRow, currentCol, currentRow);
};
};
}
public function mouseUp(_arg1:MouseEvent):void{
mouseIsDown = false;
if (visible){
visible = false;
playArea.gui.selectRect(startCol, startRow, currentCol, currentRow);
};
}
public function rollOut(_arg1:MouseEvent):void{
}
protected function update(_arg1:MouseEvent):void{
var _local2:Number = playArea.scale;
var _local3:Number = (PlayArea.NATURAL_BLOCK_WIDTH * _local2);
var _local4:Number = (14 * _local2);
var _local5:Number = (18 * _local2);
var _local6:int = startCol;
var _local7:int = currentCol;
if (_local7 < _local6){
_local6 = _local7;
_local7 = startCol;
};
var _local8:int = ((_local7 - _local6) + 1);
width = (((_local8 * _local3) + ((_local8 - 1) * _local4)) + _local5);
x = Math.floor(((playArea.getPos(_local6) + playArea.getPos(_local7)) / 2));
var _local9:int = startRow;
var _local10:int = currentRow;
if (_local10 < _local9){
_local10 = _local9;
_local9 = currentRow;
};
var _local11:int = ((_local10 - _local9) + 1);
height = (((_local11 * _local3) + ((_local11 - 1) * _local4)) + _local5);
y = Math.floor(((playArea.getPos(_local9) + playArea.getPos(_local10)) / 2));
_arg1.updateAfterEvent();
}
}
}//package guipackage
Section 30
//SoundManager (guipackage.SoundManager)
package guipackage {
import util.*;
import flash.events.*;
import flash.media.*;
import flash.utils.*;
public class SoundManager {
public const STEREO_INTENSITY:Number = 0.7;
public const VOLUME_SHUFFLE:Number = 0.5;
public const VOLUME_INTRO:Number = 0.5;
public const VOLUME_LOOP:Number = 0.4;
public const VOLUME_OUTRO:Number = 0.6;
public const VOLUME_TIME_WARNING:Number = 0.5;
public const VOLUME_GAME_OVER:Number = 0.3;
public const VOLUME_LEVEL_ANIMATION:Number = 0.9;
public const VOLUME_COLOR:Number = 0.5;
public const VOLUME_BOMB:Number = 0.5;
public const VOLUME_GOLD:Number = 0.5;
public const VOLUME_TIME:Number = 0.5;
public const VOLUME_NOT_COMBO:Number = 0.5;
public const VOLUME_NO_CAT:Number = 0.5;
public const LOOP_DELAY:int = 200;
public const OUTRO_DELAY:int = 200;
private var soundOn:Boolean;// = true
private var introSound:Sound;
private var introSoundChannel:SoundChannel;
private var introSoundTransform:SoundTransform;
private var loopSound:Sound;
private var loopSoundChannel:SoundChannel;
private var loopSoundTransform:SoundTransform;
private var outroSoundTransform:SoundTransform;
private var outroSound:Sound;
public var outroSoundChannel:SoundChannel;
protected var chordChannel:SoundChannel;
private var outroNext:Boolean;// = false
private var timer:Timer;
public var gui:Gui;
protected var loopPosition:Number;// = 0
public function SoundManager(_arg1:Gui){
this.gui = _arg1;
}
public function toggleSound(_arg1:MouseEvent):void{
soundOn = !(soundOn);
if (soundOn){
startMusic();
} else {
stopMusic();
};
}
public function stopMusic():void{
if (loopSoundChannel != null){
loopSoundChannel.soundTransform = new SoundTransform(0);
};
if (introSoundChannel != null){
introSoundChannel.soundTransform = new SoundTransform(0);
};
if (outroSoundChannel != null){
outroSoundChannel.soundTransform = new SoundTransform(0);
};
}
public function startMusic():void{
if (soundOn){
if (loopSoundChannel != null){
loopSoundChannel.soundTransform = new SoundTransform(VOLUME_LOOP);
};
if (introSoundChannel != null){
introSoundChannel.soundTransform = new SoundTransform(VOLUME_LOOP);
};
if (outroSoundChannel != null){
outroSoundChannel.soundTransform = new SoundTransform(VOLUME_LOOP);
};
};
}
public function startIntroSound(_arg1:Event=null):int{
var _local2:Number = VOLUME_INTRO;
if (!soundOn){
_local2 = 0;
};
introSoundTransform = new SoundTransform(_local2);
introSound = new IntroSnd();
introSoundChannel = introSound.play(0, 0, introSoundTransform);
return (introSound.length);
}
public function gameStart(_arg1:Event=null):void{
if (introSoundChannel != null){
new SoundFader(introSoundChannel, LOOP_DELAY);
};
timer = new Timer(LOOP_DELAY, 1);
timer.addEventListener("timerComplete", startLoopSound);
timer.start();
}
public function startLoopSound(_arg1:Event=null):void{
var _local2:Number = VOLUME_LOOP;
if (!soundOn){
_local2 = 0;
};
loopSoundTransform = new SoundTransform(_local2);
loopSound = new LoopSnd2();
loopSoundChannel = loopSound.play(loopPosition, int.MAX_VALUE, loopSoundTransform);
}
public function gameEnd(_arg1:Event=null):void{
if (introSoundChannel != null){
new SoundFader(introSoundChannel, OUTRO_DELAY);
};
if (loopSoundChannel != null){
new SoundFader(loopSoundChannel, OUTRO_DELAY);
};
timer = new Timer(OUTRO_DELAY, 1);
timer.addEventListener("timerComplete", startOutroSound);
timer.start();
}
public function startOutroSound(_arg1:Event=null):void{
var _local2:Number = VOLUME_OUTRO;
if (!soundOn){
_local2 = 0;
};
outroSoundTransform = new SoundTransform(_local2);
outroSound = new OutroSnd();
outroSoundChannel = outroSound.play(0, 0, loopSoundTransform);
}
public function timeWarning():void{
var _local1:Sound;
if (soundOn){
_local1 = new TimeWarningSnd();
playSound(_local1, VOLUME_TIME_WARNING);
};
}
public function shuffle():void{
if (soundOn){
playSound(new ShuffleSnd(), VOLUME_SHUFFLE);
};
}
public function levelFadeOut():void{
var _local1:SoundFader;
if (soundOn){
loopPosition = loopSoundChannel.position;
_local1 = new SoundFader(loopSoundChannel, 600);
};
}
public function level(_arg1:int, _arg2:int, _arg3:int):void{
var _local4:int;
var _local5:VolumeChanger;
var _local6:Timer;
var _local7:int;
var _local8:Timer;
if (soundOn){
_local4 = App.ticksToMillisec(_arg1);
_local5 = new VolumeChanger(loopSoundChannel, 0.1, _local4);
_local6 = new Timer(App.ticksToMillisec(Math.floor((_arg1 * 0.5))), 1);
_local6.addEventListener("timerComplete", playLevelSound);
_local6.start();
_local7 = App.ticksToMillisec((_arg1 + Math.floor((_arg2 / 2))));
_local8 = new Timer(_local7, 1);
_local8.addEventListener("timerComplete", fadeBackLoop);
_local8.start();
};
}
public function playLevelSound(_arg1:Event):void{
playSound(new NewLevelSnd(), VOLUME_LEVEL_ANIMATION);
}
public function fadeBackLoop(_arg1:Event):void{
var _local2:VolumeChanger = new VolumeChanger(loopSoundChannel, VOLUME_LOOP, 1500);
}
public function loopContinue(_arg1:Event=null):void{
loopSoundChannel.soundTransform = new SoundTransform(VOLUME_LOOP);
}
public function comboSound(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{
var _local6:Sound;
var _local7:int;
var _local8:SoundTransform;
var _local9:Sound;
if (soundOn){
if (_arg2 != 0){
_local7 = Math.floor((Math.random() * 6));
switch (_local7){
case 0:
_local6 = new Color0Snd();
break;
case 1:
_local6 = new Color1Snd();
break;
case 2:
_local6 = new Color2Snd();
break;
case 3:
_local6 = new Color3Snd();
break;
case 4:
_local6 = new Color4Snd();
break;
case 5:
_local6 = new Color5Snd();
break;
default:
trace("Error in SoundManager.comboSound");
};
gui.gameBackground.playChord(_local7);
_local8 = new SoundTransform(VOLUME_COLOR);
_local9 = _local6;
chordChannel = _local9.play(0, 0, _local8);
if (_arg3 > 0){
playSound(new BombSnd(), VOLUME_BOMB);
};
if (_arg4 > 0){
playSound(new GoldSnd(), VOLUME_GOLD);
};
if (_arg5 > 0){
playSound(new TimeSnd(), VOLUME_TIME);
};
} else {
playSound(new NoCatSnd(), VOLUME_NO_CAT);
};
};
}
public function notCombo():void{
if (soundOn){
playSound(new NotComboSnd(), VOLUME_NOT_COMBO);
};
}
protected function playSound(_arg1:Sound, _arg2:Number, _arg3:int=0):void{
var _local4:SoundTransform = new SoundTransform(_arg2);
var _local5:Sound = _arg1;
var _local6:SoundChannel = _local5.play(0, _arg3, _local4);
}
}
}//package guipackage
Section 31
//BlockBackside (librarydisplayobjects.BlockBackside)
package librarydisplayobjects {
import flash.display.*;
public dynamic class BlockBackside extends MovieClip {
}
}//package librarydisplayobjects
Section 32
//Background (librarynames.Background)
package librarynames {
import flash.display.*;
import flash.text.*;
public class Background extends Sprite {
public var exitBtnTf:TextField;
public var soundBtnTf:TextField;
public var exitBtn:MovieClip;
public var sndBtn:MovieClip;
}
}//package librarynames
Section 33
//ShortModeSign (librarynames.ShortModeSign)
package librarynames {
import flash.display.*;
import flash.text.*;
public class ShortModeSign extends Sprite {
public var textField:TextField;
}
}//package librarynames
Section 34
//StartButton (librarynames.StartButton)
package librarynames {
import flash.display.*;
import flash.text.*;
public class StartButton extends Sprite {
public var label:TextField;
}
}//package librarynames
Section 35
//BlockData (modelpackage.BlockData)
package modelpackage {
public class BlockData {
public var status:int;
public var col:int;
public var row:int;
public var color:int;
public var type:int;
public var isFront:Boolean;
public static const COLORS:int = 5;
public static const NO_COLOR:int = 100;
public static const DIFFERENT_COLORS:int = -1;
public static const NORMAL:int = 0;
public static const RAINBOW:int = 1;
public static const BOMB:int = 2;
public static const GOLD:int = 3;
public static const TIME:int = 4;
public static const MARKED:int = 1;
public static const ACTIVE:int = 2;
public function BlockData(_arg1:int, _arg2:int, _arg3:int){
this.col = _arg1;
this.row = _arg2;
this.color = _arg3;
this.type = BlockData.NORMAL;
this.isFront = true;
this.status = BlockData.NORMAL;
}
public function toString():String{
return (((((((((((("block: col " + col) + " row ") + row) + " color ") + color) + " type ") + type) + " isFront ") + isFront) + " status ") + status));
}
public function clone():BlockData{
var _local1:BlockData = new BlockData(col, row, color);
_local1.type = type;
_local1.isFront = isFront;
_local1.status = status;
return (_local1);
}
}
}//package modelpackage
Section 36
//BlockySquare (modelpackage.BlockySquare)
package modelpackage {
import util.*;
public class BlockySquare {
protected const SIZES:Array;
protected const COLORS:Array;
protected const RAINBOW_CHANCES:Array;
protected const BOMB_CHANCES:Array;
protected const GOLD_CHANCES:Array;
protected const TIME_CHANCES:Array;
protected var blocks:Array;
var size:int;
protected var colors:int;
protected var rainbowLimit:Number;
protected var bombLimit:Number;
protected var goldLimit:Number;
protected var timeLimit:Number;
protected var model:Model;
private var shuffles:int;// = 1
public function BlockySquare(_arg1:Model, _arg2:int){
var _local5:int;
SIZES = [5, 6, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10];
COLORS = [2, 2, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 5, 5];
RAINBOW_CHANCES = [0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2];
BOMB_CHANCES = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1];
GOLD_CHANCES = [0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
TIME_CHANCES = [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
super();
this.model = _arg1;
var _local3:int = _arg2;
if (_local3 >= SIZES.length){
_local3 = (SIZES.length - 1);
};
size = int(SIZES[_local3]);
colors = int(COLORS[_local3]);
rainbowLimit = (0.5 - (Number(RAINBOW_CHANCES[_local3]) / 100));
bombLimit = (rainbowLimit - (Number(BOMB_CHANCES[_local3]) / 100));
goldLimit = (bombLimit - (Number(GOLD_CHANCES[_local3]) / 100));
timeLimit = (goldLimit - (Number(TIME_CHANCES[_local3]) / 100));
if (_arg1.game.colorsPlayed < colors){
_arg1.game.colorsPlayed = colors;
};
blocks = new Array(size);
var _local4:int;
while (_local4 < size) {
blocks[_local4] = new Array(size);
_local5 = 0;
while (_local5 < size) {
blocks[_local4][_local5] = makeRandomBlock(_local5, _local4);
_local5++;
};
_local4++;
};
}
protected function makeRandomBlock(_arg1:int, _arg2:int):BlockData{
var _local3:BlockData = new BlockData(_arg1, _arg2, 0);
randomizeBlock(_local3);
return (_local3);
}
protected function randomizeBlock(_arg1:BlockData):void{
var _local3:int;
var _local4:int;
var _local2:Number = model.rand.nextDouble();
if (_local2 > 0.5){
_local3 = BlockData.NORMAL;
} else {
if (_local2 > rainbowLimit){
_local3 = BlockData.RAINBOW;
} else {
if (_local2 > bombLimit){
_local3 = BlockData.BOMB;
} else {
if (_local2 > goldLimit){
_local3 = BlockData.GOLD;
} else {
if ((((_local2 > timeLimit)) && ((model.game.clockCounter-- > 0)))){
_local3 = BlockData.TIME;
} else {
_local3 = BlockData.NORMAL;
};
};
};
};
};
if (_local3 != BlockData.RAINBOW){
_local4 = model.rand.nextInt(colors);
} else {
_local4 = BlockData.NO_COLOR;
};
_arg1.type = _local3;
_arg1.color = _local4;
}
function getBlocks():Array{
var _local3:int;
var _local1:Array = new Array(size);
var _local2:int;
while (_local2 < size) {
_local1[_local2] = new Array(size);
_local3 = 0;
while (_local3 < size) {
_local1[_local2][_local3] = BlockData(blocks[_local2][_local3]).clone();
_local3++;
};
_local2++;
};
return (_local1);
}
function getColors():int{
return (colors);
}
function getBlock(_arg1:int, _arg2:int):BlockData{
return (BlockData(blocks[_arg2][_arg1]));
}
function flipBlock(_arg1:int, _arg2:int):void{
var _local3:BlockData = getBlock(_arg1, _arg2);
randomizeBlock(_local3);
_local3.isFront = false;
_local3.status = BlockData.NORMAL;
}
function isFinished():Boolean{
var _local2:int;
var _local3:BlockData;
var _local1:int;
while (_local1 < size) {
_local2 = 0;
while (_local2 < size) {
_local3 = getBlock(_local2, _local1);
if (_local3.isFront){
return (false);
};
_local2++;
};
_local1++;
};
return (true);
}
public function shuffle():Stack{
var _local3:int;
var _local4:BlockData;
var _local1:Stack = new Stack();
var _local2:int;
while (_local2 < size) {
_local3 = 0;
while (_local3 < size) {
_local4 = getBlock(_local3, _local2);
randomizeBlock(_local4);
_local1.push(_local4);
_local3++;
};
_local2++;
};
shuffles++;
return (_local1);
}
public function percentage(_arg1:Number):Number{
return (((_arg1 * 100) / ((size * size) * shuffles)));
}
public function normalizeStatus():void{
var _local2:int;
var _local1:int;
while (_local1 < size) {
_local2 = 0;
while (_local2 < size) {
BlockData(blocks[_local1][_local2]).status = BlockData.NORMAL;
_local2++;
};
_local1++;
};
}
}
}//package modelpackage
Section 37
//Game (modelpackage.Game)
package modelpackage {
import util.*;
public class Game {
protected var shuffleCost:int;// = 600
protected var blockPoint:int;// = 5
protected var blockIncrement:int;// = 5
protected var comboPoint:int;// = 5
protected var comboIncrement:int;// = 1
protected var timeBonus:int;// = 600
public var level:int;// = -1
public var blockySquare:BlockySquare;
public var totalScore:int;// = 0
protected var model:Model;
public var colorsPlayed:int;// = 2
public var clockCounter:int;// = 8
public var relaxMoves:int;// = 20
public static var MAX_MOVES:int = 12;
public static var LEVEL_MOVES:int = 4;
public static var SHUFFLE_PENALTY:int = -2;
public static var CLOCK_MOVES:int = 2;
public function Game(_arg1:Model){
this.model = _arg1;
}
function nextLevel():Array{
if (model.document.relaxMode){
relaxMoves = (relaxMoves + Game.LEVEL_MOVES);
if (relaxMoves > Game.MAX_MOVES){
relaxMoves = Game.MAX_MOVES;
};
model.guiControl.updateMoves(relaxMoves);
};
level++;
blockySquare = new BlockySquare(model, level);
return (blockySquare.getBlocks());
}
function selectRect(_arg1:int, _arg2:int, _arg3:int, _arg4:int):Stack{
var _local9:int;
var _local10:int;
var _local11:Array;
var _local12:Array;
var _local13:int;
var _local14:int;
var _local15:int;
var _local16:int;
var _local17:int;
var _local18:int;
var _local5:Boolean;
var _local6:Selection = new Selection(blockySquare, _arg1, _arg2, _arg3, _arg4, _local5);
var _local7:int;
var _local8:int;
while (_local8 < _local6.scoreBlocks) {
_local7 = (_local7 + (blockPoint + (_local8 * blockIncrement)));
_local8++;
};
if (_local6.scoreBlocks > 0){
_local9 = (comboPoint + ((_local6.comboBlocks - 4) * comboIncrement));
_local10 = ((_local7 + _local9) * (_local6.goldBlocks + 1));
model.guiControl.scorePop(_local10, _local6.xCenter, _local6.yCenter);
this.totalScore = (this.totalScore + _local10);
if (_local6.timeBlocks > 0){
if (model.document.relaxMode){
relaxMoves = (relaxMoves + Game.CLOCK_MOVES);
} else {
model.addTime((timeBonus * _local6.timeBlocks));
};
};
};
if (_local6.validity == _local6.NOT_COMBO){
_local11 = blockySquare.getBlocks();
_local12 = new Array();
_local13 = _arg1;
_local14 = _arg3;
if (_local13 > _local14){
_local13 = _local14;
_local14 = _arg1;
};
_local15 = _arg2;
_local16 = _arg4;
if (_local15 > _local16){
_local15 = _local16;
_local16 = _arg2;
};
_local17 = _local15;
while (_local17 <= _local16) {
_local18 = _local13;
while (_local18 <= _local14) {
_local12.push(_local11[_local17][_local18]);
_local18++;
};
_local17++;
};
model.guiControl.shakeBlocks(_local12);
} else {
if (_local6.validity == _local6.COMBO){
model.guiControl.comboSound(_local6.color, _local6.scoreBlocks, _local6.bombs, _local6.goldBlocks, _local6.timeBlocks);
};
};
if (((model.document.relaxMode) && ((_local6.flippedBlocks.size() > 0)))){
relaxMoves--;
if (relaxMoves > Game.MAX_MOVES){
relaxMoves = Game.MAX_MOVES;
};
model.guiControl.updateMoves(relaxMoves);
};
return (_local6.flippedBlocks);
}
function shuffle():Stack{
if (model.document.relaxMode){
relaxMoves = (relaxMoves + Game.SHUFFLE_PENALTY);
model.guiControl.updateMoves(relaxMoves);
} else {
model.addTime(-(shuffleCost));
};
return (blockySquare.shuffle());
}
}
}//package modelpackage
Section 38
//Model (modelpackage.Model)
package modelpackage {
import guipackage.*;
import util.*;
public class Model {
protected const SECONDS:int = 180;
protected const SHORT_MODE_END_LEVEL:int = 4;
protected const NOT_STARTED:int = -1;
protected const PLAYING:int = 0;
protected const LEVEL_ANIMATION_PART_1:int = 1;
protected const LEVEL_ANIMATION_PART_2:int = 2;
protected const LEVEL_ANIMATION_PART_3:int = 3;
protected const GAME_OVER:int = 3;
protected const FLIPPING:int = 4;
protected const LEVEL_ANIMATION_PART_1_TICKS:int = 30;
protected const LEVEL_ANIMATION_PART_2_TICKS:int = 40;
protected const LEVEL_ANIMATION_PART_3_TICKS:int = 15;
protected const FLIP_ANIMATION_TICKS:int = 20;
protected const SHUFFLE_TICKS:int = 40;
var rand:Random;
protected var playData:Stack;
protected var continueTick:int;// = 0
protected var timeWarningTick:int;
protected var timeWarningInterval:int;
protected var countDownTicks:int;
protected var countDownSeconds:int;
protected var countDownPaused:Boolean;// = true
public var document:Document;
public var guiControl:GuiControl;
protected var shortMode:Boolean;// = false
protected var mode:int;// = -1
public var game:Game;
public var remainingMoves:int;// = 20
public function Model(_arg1:Document, _arg2:GuiControl, _arg3:XML){
timeWarningTick = (10 * App.TICKS_PER_SECOND);
timeWarningInterval = App.TICKS_PER_SECOND;
super();
this.document = _arg1;
this.guiControl = _arg2;
var _local4:int = _arg3.@seed;
if (App.DEV_MODE){
_local4 = (Math.random() * 10000);
};
rand = new Random(_local4);
if (_arg3.@mode == "short"){
shortMode = true;
};
if (!_arg1.relaxMode){
this.countDownTicks = (SECONDS * App.TICKS_PER_SECOND);
};
_arg1.log((("[seed " + _arg3.@seed) + "]"));
_arg1.log((("[countDownTicks " + countDownTicks) + "]"));
playData = new Stack();
game = new Game(this);
}
public function tick(_arg1:int):void{
if (countDownPaused){
if (_arg1 == continueTick){
continueTick = -1;
continueGame(_arg1);
};
};
if (((!(countDownPaused)) && (!(document.relaxMode)))){
countDown(_arg1);
};
executePlayData(_arg1);
}
public function addPlayData(_arg1:Array):void{
playData.push(_arg1);
}
public function getScore():int{
return (game.totalScore);
}
protected function inputSelectRect(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{
var _local6:Stack;
var _local7:int;
var _local8:*;
var _local9:int;
if ((((mode == PLAYING)) && (!(countDownPaused)))){
document.log(((((((((("selectRect " + _arg1) + " ") + _arg2) + " ") + _arg3) + " ") + _arg4) + " ") + _arg5));
_local6 = game.selectRect(_arg2, _arg3, _arg4, _arg5);
if (_local6.size() > 0){
pauseGame(_arg1);
_local7 = _local6.size();
_local8 = new Array(_local7);
_local9 = 0;
while (_local9 < _local7) {
_local8[_local9] = BlockData(_local6.g(_local9)).clone();
_local9++;
};
guiControl.updateScore(game.totalScore);
if (game.blockySquare.isFinished()){
mode = LEVEL_ANIMATION_PART_1;
game.nextLevel();
continueTick = (_arg1 + LEVEL_ANIMATION_PART_1_TICKS);
guiControl.levelAnimationPart1(_arg1, continueTick, _local8, LEVEL_ANIMATION_PART_1_TICKS, LEVEL_ANIMATION_PART_2_TICKS, LEVEL_ANIMATION_PART_3_TICKS);
} else {
mode = FLIPPING;
continueTick = (_arg1 + FLIP_ANIMATION_TICKS);
guiControl.flipBlocks(_arg1, continueTick, _local8);
};
} else {
game.blockySquare.normalizeStatus();
guiControl.showStatus(game.blockySquare.getBlocks());
};
};
}
protected function inputShuffle(_arg1:int):void{
var _local2:Stack;
var _local3:int;
var _local4:*;
var _local5:int;
if (!countDownPaused){
mode = FLIPPING;
pauseGame(_arg1);
continueTick = (_arg1 + 40);
document.log(("Shuffle " + _arg1));
_local2 = game.shuffle();
_local3 = _local2.size();
_local4 = new Array(_local3);
_local5 = 0;
while (_local5 < _local3) {
_local4[_local5] = BlockData(_local2.g(_local5)).clone();
_local5++;
};
guiControl.flipBlocks(_arg1, continueTick, _local4);
guiControl.shuffle();
};
}
protected function inputExit(_arg1:int):void{
document.log("user chose exit");
gameOver(_arg1, App.USER_CHOSE_EXIT);
}
protected function inputSelectChange(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{
var _local6:Boolean;
if ((((mode == PLAYING)) && (!(countDownPaused)))){
game.blockySquare.normalizeStatus();
_local6 = false;
new Selection(game.blockySquare, _arg2, _arg3, _arg4, _arg5, _local6);
};
guiControl.showStatus(game.blockySquare.getBlocks());
}
protected function continueGame(_arg1:int):void{
var _local2:Array;
var _local3:int;
document.log(("continueGame " + _arg1));
if (mode == NOT_STARTED){
countDownPaused = false;
_local2 = game.nextLevel();
_local3 = game.blockySquare.getColors();
guiControl.updateLevel(game.level);
guiControl.initGame(_local2, _local3);
guiControl.setGameRunning(true);
mode = PLAYING;
} else {
if (mode == LEVEL_ANIMATION_PART_1){
continueTick = (_arg1 + LEVEL_ANIMATION_PART_2_TICKS);
guiControl.levelAnimationPart2(_arg1, continueTick);
mode = LEVEL_ANIMATION_PART_2;
} else {
if (mode == LEVEL_ANIMATION_PART_2){
continueTick = (_arg1 + LEVEL_ANIMATION_PART_3_TICKS);
guiControl.levelAnimationPart3(_arg1, continueTick, game.blockySquare.getBlocks(), game.blockySquare.getColors());
mode = LEVEL_ANIMATION_PART_3;
} else {
if (mode == LEVEL_ANIMATION_PART_3){
guiControl.updateLevel(game.level);
if (((shortMode) && ((game.level == SHORT_MODE_END_LEVEL)))){
document.log("model short game end ");
gameOver(_arg1, App.SHORT_GAME_END);
} else {
guiControl.setGameRunning(true);
countDownPaused = false;
mode = PLAYING;
};
} else {
if (mode == FLIPPING){
if (((document.relaxMode) && ((game.relaxMoves <= 0)))){
gameOver(_arg1, App.RELAX_MOVES_FINISHED);
} else {
countDownPaused = false;
guiControl.setGameRunning(true);
mode = PLAYING;
};
};
};
};
};
};
}
protected function pauseGame(_arg1:int):void{
document.log(("pauseGame " + _arg1));
guiControl.setGameRunning(false);
countDownPaused = true;
}
protected function countDown(_arg1:int):void{
var _local3:int;
countDownTicks--;
var _local2:int = ((countDownTicks / App.TICKS_PER_SECOND) + 1);
if (_local2 != countDownSeconds){
countDownSeconds = _local2;
_local3 = (_local2 / 60);
_local2 = (_local2 % 60);
guiControl.updateTimeDisplay(_local3, _local2);
};
if ((((countDownTicks <= timeWarningTick)) && ((countDownTicks > 0)))){
if ((countDownTicks % timeWarningInterval) == 0){
guiControl.showTimeWarning();
};
};
if (countDownTicks <= 0){
document.log(("TimeIsUp " + _arg1));
gameOver(_arg1, App.TIME_RAN_OUT);
};
}
protected function executePlayData(_arg1:int):void{
var _local2:Array;
var _local3:int;
var _local4:int;
var _local5:String;
var _local6:String;
var _local7:int;
var _local8:int;
while (playData.size() > 0) {
_local2 = playData.remove(0);
_local3 = int(_local2[0]);
_local4 = int(_local2[1]);
_local5 = String(App.INPUT_STRINGS[_local3]);
if (App.isLogicPlayData(_local3)){
_local6 = ((_local5 + " ") + _local4);
_local7 = 2;
while (_local7 < _local2.length) {
var _temp1 = _local7;
_local7 = (_local7 + 1);
_local8 = int(_local2[_temp1]);
_local6 = (_local6 + (" " + _local8));
};
document.log((("[" + _local6) + "]"));
};
switch (_local3){
case App.INPUT_SELECT_RECT:
inputSelectRect(_arg1, int(_local2[2]), int(_local2[3]), int(_local2[4]), int(_local2[5]));
break;
case App.INPUT_SHUFFLE:
inputShuffle(_arg1);
break;
case App.INPUT_EXIT:
inputExit(_arg1);
break;
case App.LAST_TICK:
break;
case App.INPUT_SELECT_CHANGE:
inputSelectChange(_arg1, int(_local2[2]), int(_local2[3]), int(_local2[4]), int(_local2[5]));
break;
default:
document.log(("**** Error in Model.tick(). Invalid inputType: " + _local3));
};
if (((!((_local4 == _arg1))) && (!((_local3 == App.LAST_TICK))))){
document.log(((("**** Warning, bad sync! tickToExecute " + _local4) + " currentTick ") + _arg1));
};
};
}
protected function gameOver(_arg1:int, _arg2:int):void{
document.log(("gameover score " + game.totalScore));
if (!countDownPaused){
pauseGame(_arg1);
};
mode = GAME_OVER;
continueTick = -1;
guiControl.gameOver(game.totalScore, shortMode, game.level, game.colorsPlayed);
document.addPlayData([App.LAST_TICK]);
document.gameOver(game.totalScore, _arg2);
}
public function addTime(_arg1:int):void{
countDownTicks = (countDownTicks + _arg1);
}
}
}//package modelpackage
Section 39
//Selection (modelpackage.Selection)
package modelpackage {
import util.*;
public class Selection {
public const NOT_SET:int = -100;
public const SINGLE_BLOCK:int = 0;
public const NOT_COMBO:int = 1;
public const COMBO:int = 2;
public var validity:int;// = -1
public var firstColor:int;// = -100
public var color:int;// = 100
public var rainbows:int;// = 0
public var bombs:int;// = 0
public var goldBlocks:int;// = 0
public var timeBlocks:int;// = 0
public var comboBlocks:int;// = 0
public var scoreBlocks:int;// = 0
public var flippedBlocks:Stack;
public var xCenter:Number;
public var yCenter:Number;
public var makeChange:Boolean;
protected var blockySquare:BlockySquare;
public function Selection(_arg1:BlockySquare, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:Boolean){
var _local12:int;
var _local13:int;
var _local14:Boolean;
var _local15:int;
var _local16:int;
super();
this.blockySquare = _arg1;
this.makeChange = _arg6;
flippedBlocks = new Stack();
checkCorner(_arg2, _arg3);
checkCorner(_arg2, _arg5);
checkCorner(_arg4, _arg3);
checkCorner(_arg4, _arg5);
var _local7:int = _arg2;
var _local8:int = _arg4;
if (_local8 < _local7){
_local7 = _arg4;
_local8 = _arg2;
};
var _local9:int = _arg3;
var _local10:int = _arg5;
if (_local10 < _local9){
_local9 = _arg5;
_local10 = _arg3;
};
var _local11:int = _arg1.size;
if ((((((((((((_local7 >= 0)) && ((_local7 < _local11)))) && ((_local7 < _local8)))) && ((((((_local9 >= 0)) && ((_local9 < _local11)))) && ((_local9 < _local10)))))) && ((((_local8 > 0)) && ((_local8 <= _local11)))))) && ((((_local10 > 0)) && ((_local10 <= _local11)))))){
if (color != BlockData.DIFFERENT_COLORS){
_local12 = ((_local8 - _local7) + 1);
_local13 = ((_local10 - _local9) + 1);
comboBlocks = (_local12 * _local13);
xCenter = (_local7 + ((_local12 - 1) / 2));
yCenter = (_local9 + ((_local13 - 1) / 2));
_local14 = false;
maybeFlipBlock(_local7, _local9, _local14);
maybeFlipBlock(_local7, _local10, _local14);
maybeFlipBlock(_local8, _local9, _local14);
maybeFlipBlock(_local8, _local10, _local14);
_local14 = false;
_local15 = _local9;
while (_local15 < (_local10 + 1)) {
_local16 = _local7;
while (_local16 < (_local8 + 1)) {
maybeFlipBlock(_local16, _local15, _local14);
_local16++;
};
_local15++;
};
if ((((bombs > 0)) && ((scoreBlocks > 0)))){
_local14 = true;
_local15 = 0;
while (_local15 < _local11) {
_local16 = 0;
while (_local16 < _local11) {
maybeFlipBlock(_local16, _local15, _local14);
_local16++;
};
_local15++;
};
};
validity = COMBO;
} else {
validity = NOT_COMBO;
};
} else {
validity = NOT_COMBO;
if ((((_local7 == _local8)) && ((_local9 == _local10)))){
validity = SINGLE_BLOCK;
};
};
maybeActivateBlock(_arg2, _arg3);
maybeActivateBlock(_arg2, _arg5);
maybeActivateBlock(_arg4, _arg3);
maybeActivateBlock(_arg4, _arg5);
}
public function toString():String{
return (((((((((((((((("flipped " + flippedBlocks.size()) + " color ") + color) + " rainbows ") + rainbows) + " bombs ") + bombs) + " gold ") + goldBlocks) + " timeBlocks ") + timeBlocks) + " comboBlocks ") + comboBlocks) + " scoreBlocks ") + scoreBlocks));
}
protected function checkCorner(_arg1:int, _arg2:int):void{
var _local3:BlockData = blockySquare.getBlock(_arg1, _arg2);
if (((!((_local3.color == BlockData.NO_COLOR))) && (!((color == BlockData.DIFFERENT_COLORS))))){
if (color == BlockData.NO_COLOR){
color = _local3.color;
} else {
if (_local3.color != color){
color = BlockData.DIFFERENT_COLORS;
};
};
};
if (_local3.type == BlockData.RAINBOW){
rainbows++;
} else {
if (_local3.type == BlockData.BOMB){
bombs++;
} else {
if (_local3.type == BlockData.GOLD){
goldBlocks++;
} else {
if (_local3.type == BlockData.TIME){
timeBlocks++;
};
};
};
};
}
protected function maybeActivateBlock(_arg1:int, _arg2:int):void{
var _local3:BlockData = blockySquare.getBlock(_arg1, _arg2);
if (firstColor == NOT_SET){
firstColor = _local3.color;
};
if ((((_local3.type == BlockData.NORMAL)) && (_local3.isFront))){
if ((((firstColor == BlockData.NO_COLOR)) && (!((color == BlockData.DIFFERENT_COLORS))))){
_local3.status = BlockData.ACTIVE;
} else {
if ((((_local3.color == firstColor)) || ((_local3.color == BlockData.NO_COLOR)))){
_local3.status = BlockData.ACTIVE;
};
};
};
if ((((((validity == COMBO)) && (!((_local3.type == BlockData.NORMAL))))) && ((scoreBlocks > 0)))){
_local3.status = BlockData.ACTIVE;
};
if ((((_local3.type == BlockData.RAINBOW)) && (_local3.isFront))){
_local3.status = BlockData.ACTIVE;
};
}
public function mark(_arg1:BlockData):void{
if (_arg1.status != BlockData.ACTIVE){
_arg1.status = BlockData.MARKED;
};
}
protected function maybeFlipBlock(_arg1:int, _arg2:int, _arg3:Boolean):void{
var _local4:BlockData = blockySquare.getBlock(_arg1, _arg2);
if (flippedBlocks.indexOf(_local4) == -1){
if (((!(_arg3)) || ((_local4.color == color)))){
if (_local4.isFront){
scoreBlocks++;
};
_local4.status = BlockData.MARKED;
if (makeChange){
blockySquare.flipBlock(_arg1, _arg2);
};
flippedBlocks.push(_local4);
};
};
}
}
}//package modelpackage
Section 40
//ReplayControl (replay.ReplayControl)
package replay {
import flash.display.*;
import flash.text.*;
public class ReplayControl extends Sprite {
public var playBtn:MovieClip;
public var stopTickTf:TextField;
public var speedTf:TextField;
public function ReplayControl(){
playBtn.stop();
}
}
}//package replay
Section 41
//Communicator (util.Communicator)
package util {
import flash.external.*;
import flash.system.*;
public class Communicator {
public function sendPlayData(_arg1:Array):void{
var _local2:String = ((String(_arg1[0]) + ",") + String(_arg1[1]));
var _local3:int = _arg1.length;
var _local4 = 2;
while (_local4 < _local3) {
_local2 = (_local2 + (" " + String(_arg1[_local4])));
_local4++;
};
_local2 = (_local2 + "=0");
ExternalInterface.call("playData", _local2);
}
public function sendFsCommand(_arg1:String, _arg2:String):void{
fscommand(_arg1, _arg2);
}
}
}//package util
Section 42
//GameTimer (util.GameTimer)
package util {
import flash.utils.*;
public class GameTimer {
private var lastTime:Number;// = -1
private var msPerTick:Number;
private var unprocessedTime:Number;// = 0
public var alpha:Number;// = 0
public var passedTime:Number;// = 0
public function GameTimer(_arg1:Number){
msPerTick = (1000 / _arg1);
}
public function advanceTime():int{
if (lastTime == -1){
lastTime = getTimer();
};
var _local1:int = getTimer();
passedTime = (_local1 - lastTime);
lastTime = _local1;
unprocessedTime = (unprocessedTime + passedTime);
var _local2:int = int((unprocessedTime / msPerTick));
unprocessedTime = (unprocessedTime - (_local2 * msPerTick));
alpha = (unprocessedTime / msPerTick);
return (_local2);
}
}
}//package util
Section 43
//Integer64 (util.Integer64)
package util {
import util.*;
class Integer64 {
private var p:Array;
private var r:Array;
private var s:Array;
function Integer64(_arg1){
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 (_arg1){
merge(_arg1);
};
}
public function init(_arg1:Integer64):void{
var _local2:* = 0;
while (_local2 < p.length) {
p[_local2] = _arg1.p[_local2];
_local2++;
};
}
public function init32(_arg1:Number):void{
p[0] = (_arg1 & 32767);
_arg1 = (_arg1 >>> 15);
p[1] = (_arg1 & 32767);
_arg1 = (_arg1 >>> 15);
p[2] = (_arg1 & 3);
p[3] = 0;
p[4] = 0;
}
public function get lsb():Number{
return (((p[0] | (p[1] << 15)) | ((p[2] & 3) << 30)));
}
public function get msb():Number{
return (((((p[2] >> 2) | ((p[3] << 15) >> 2)) | ((p[4] << (15 * 2)) >> 2)) & 2147483647));
}
public function binaryShiftLeft(_arg1:Number):void{
var _local2:* = 0;
while (_local2 < _arg1) {
shl();
_local2++;
};
}
public function binaryShiftRight(_arg1:Number):void{
var _local5:*;
var _local6:*;
var _local2:* = ((_arg1 / 15) >> 0);
var _local3:* = (_arg1 - (_local2 * 15));
var _local4:* = (p.length - 1);
while (_local4 > 0) {
_local5 = 0;
while (_local5 < _local2) {
p[_local5] = p[(_local5 + 1)];
_local5++;
};
var _temp1 = _local4;
_local4 = (_local4 - 1);
var _local7 = _temp1;
p[_local7] = 0;
};
if (_local3 > 0){
_local6 = 0;
while (_local6 < _local3) {
shr();
_local6++;
};
};
}
public function binaryNot(_arg1:Integer64):void{
p[0] = (p[0] ^ _arg1.p[0]);
p[1] = (p[1] ^ _arg1.p[1]);
p[2] = (p[2] ^ _arg1.p[2]);
p[3] = (p[3] ^ _arg1.p[3]);
p[4] = (p[4] ^ _arg1.p[4]);
}
public function add64(_arg1:Integer64):void{
var _local2:* = 0;
var _local3:* = 1;
var _local4:* = 0;
while ((((_local3 < p.length)) && (!((_arg1.p[_local4] == 0))))) {
_local3++;
};
_local4 = 0;
while (_local4 < _local3) {
_local2 = (_local2 + (p[_local4] + _arg1.p[_local4]));
p[_local4] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local4++;
};
}
public function add32(_arg1:Number):void{
var _local2:* = 0;
var _local3:* = (_arg1 & 32767);
_arg1 = (_arg1 >> 15);
var _local4:* = (_arg1 & 32767);
_arg1 = (_arg1 >> 15);
var _local5:* = (_arg1 & 3);
_local2 = (_local2 + (p[0] + _local3));
p[0] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (p[1] + _local4));
p[1] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (p[2] + _local5));
p[2] = (_local2 & 32767);
}
public function mulu32(_arg1:Number):void{
var _local4:*;
var _local2:* = 0;
s[0] = (_arg1 & 32767);
_arg1 = (_arg1 >>> 15);
s[1] = (_arg1 & 32767);
_arg1 = (_arg1 >>> 15);
s[2] = (_arg1 & 3);
var _local3:* = 0;
while (_local3 < 3) {
_local4 = s[_local3];
_local2 = (_local4 * p[0]);
r[_local3][0] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (_local4 * p[1]));
r[_local3][1] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (_local4 * p[2]));
r[_local3][2] = (_local2 & 3);
_local3++;
};
_local2 = r[0][0];
p[0] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (r[0][1] + r[1][0]));
p[1] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + ((r[0][2] + r[1][1]) + r[2][0]));
p[2] = (_local2 & 3);
p[3] = 0;
p[4] = 0;
}
public function mul64(_arg1:Integer64):void{
var _local4:*;
var _local2:* = 0;
var _local3:* = 0;
while (_local3 < 5) {
_local4 = _arg1.p[_local3];
_local2 = (_local4 * p[0]);
r[_local3][0] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (_local4 * p[1]));
r[_local3][1] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (_local4 * p[2]));
r[_local3][2] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (_local4 * p[3]));
r[_local3][3] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (_local4 * p[4]));
r[_local3][4] = (_local2 & 32767);
_local3++;
};
_local2 = r[0][0];
p[0] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (r[0][1] + r[1][0]));
p[1] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + ((r[0][2] + r[1][1]) + r[2][0]));
p[2] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + (((r[0][3] + r[1][2]) + r[2][1]) + r[3][0]));
p[3] = (_local2 & 32767);
_local2 = (_local2 >> 15);
_local2 = (_local2 + ((((r[0][4] + r[1][3]) + r[2][2]) + r[3][1]) + r[4][0]));
p[4] = (_local2 & 7);
}
public function mul32(_arg1:Number):void{
mul64(new Integer64(_arg1));
}
private function merge(_arg1:Number):Number{
var _local2:* = 0;
while (_local2 < 3) {
p[_local2] = (p[_local2] + (_arg1 & 32767));
_arg1 = (_arg1 >>> 15);
_local2++;
};
return (_arg1);
}
private function shl():void{
var _local1:* = 0;
var _local2:* = 0;
var _local3:* = 0;
var _local4:* = p.length;
while (_local3 < _local4) {
_local1 = ((p[_local3] & 0x4000) >> 14);
p[_local3] = (p[_local3] << 1);
p[_local3] = ((p[_local3] | _local2) & 32767);
_local3++;
_local2 = _local1;
};
}
private function shr():void{
var _local1:* = 0;
var _local2:* = 0;
var _local3:* = (p.length - 1);
while (_local3 >= 0) {
_local1 = ((p[_local3] & 1) << 14);
p[_local3] = (p[_local3] >> 1);
p[_local3] = ((p[_local3] | _local2) & 32767);
_local3--;
_local2 = _local1;
};
}
}
}//package util
Section 44
//Random (util.Random)
package util {
import flash.utils.*;
public class Random {
private var mta:Array;
private var lastSeed:Number;
private var mti:Number;
private static var N:Number = 624;
private static var M:Number = 397;
private static var MATRIX_A:Number = 2567483615;
private static var UPPER_MASK:Number = 2147483648;
private static var LOWER_MASK:Number = 2147483647;
private static var mag01:Array = [0, 2567483615];
public function Random(_arg1:Number){
mta = new Array(N);
mti = (N + 1);
if (_arg1){
init_genrand(_arg1);
};
}
public function set seed(_arg1:Number){
init_genrand(_arg1);
}
public function get seed():Number{
return (lastSeed);
}
public function nextInt(_arg1:Number){
return (((genrand_int32() & 2147483647) % _arg1));
}
public function nextFloat(){
return ((next(24) / (1 << 24)));
}
public function nextDouble(){
return ((next(24) / (1 << 24)));
}
public function next(_arg1:Number){
if (_arg1 < 32){
return ((genrand_int32() & ((1 << _arg1) - 1)));
};
return (genrand_int32());
}
private function init_genrand(_arg1:Number):void{
_arg1 = int(_arg1);
var _local2:* = getTimer();
lastSeed = _arg1;
mta[0] = _arg1;
var _local3:* = _arg1;
var _local4:* = new Integer64(null);
var _local5:Number = N;
mti = 1;
while (mti < _local5) {
_local4.init32(((_local3 >>> 30) ^ _local3));
_local4.mulu32(1812433253);
_local3 = (mta[mti] = int((_local4.lsb + mti)));
mti++;
};
var _local6:* = getTimer();
}
private function genrand_int32(){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local1:Number = N;
var _local2:Number = 0;
if (mti >= _local1){
if (mti == (_local1 + 1)){
init_genrand(5489);
};
_local3 = M;
_local4 = UPPER_MASK;
_local5 = LOWER_MASK;
_local6 = mag01;
_local7 = getTimer();
_local8 = 0;
_local9 = (_local1 - _local3);
_local10 = (_local3 - _local1);
_local8 = 0;
while (_local8 < _local9) {
_local2 = ((mta[_local8] & _local4) | (mta[(_local8 + 1)] & _local5));
mta[_local8] = ((mta[(_local8 + _local3)] ^ (_local2 >>> 1)) ^ _local6[(_local2 & 1)]);
_local8++;
};
_local9 = (_local1 - 1);
while (_local8 < _local9) {
_local2 = ((mta[_local8] & _local4) | (mta[(_local8 + 1)] & _local5));
mta[_local8] = ((mta[(_local8 + _local10)] ^ (_local2 >>> 1)) ^ _local6[(_local2 & 1)]);
_local8++;
};
_local2 = ((mta[(_local1 - 1)] & _local4) | (mta[0] & _local5));
mta[(_local1 - 1)] = ((mta[(_local3 - 1)] ^ (_local2 >>> 1)) ^ _local6[(_local2 & 1)]);
mti = 0;
_local11 = getTimer();
};
_local2 = mta[mti++];
_local2 = (_local2 ^ (_local2 >>> 11));
_local2 = (_local2 ^ ((_local2 << 7) & 2636928640));
_local2 = (_local2 ^ ((_local2 << 15) & 4022730752));
_local2 = (_local2 ^ (_local2 >>> 18));
return (_local2);
}
}
}//package util
Section 45
//SoundFader (util.SoundFader)
package util {
import flash.events.*;
import flash.media.*;
import flash.utils.*;
public class SoundFader {
public var soundChannel:SoundChannel;
private var millisec:int;
private var listener:Object;
private var timer:Timer;
private var fadeStep:Number;// = 0.03
private var miniStep:Number;// = 0.01
private var nrOfSteps:int;
private var extraRepeats:int;// = 5
private var panning:Number;
public function SoundFader(_arg1:SoundChannel, _arg2:int, _arg3:Object=null){
this.soundChannel = _arg1;
this.millisec = _arg2;
this.listener = _arg3;
var _local4:Number = _arg1.soundTransform.volume;
nrOfSteps = (_local4 / fadeStep);
panning = _arg1.soundTransform.pan;
var _local5:int = (_arg2 / nrOfSteps);
timer = new Timer(_local5, (nrOfSteps + extraRepeats));
timer.addEventListener("timer", fade);
timer.addEventListener("timerComplete", destroy);
timer.start();
}
public function fade(_arg1:TimerEvent):void{
var _local2:Number = soundChannel.soundTransform.volume;
if (_local2 > fadeStep){
_local2 = (_local2 - fadeStep);
} else {
_local2 = (_local2 - miniStep);
};
if (_local2 < 0){
_local2 = 0;
};
soundChannel.soundTransform = new SoundTransform(_local2, panning);
}
public function destroy(_arg1:TimerEvent):void{
soundChannel.stop();
if (listener != null){
listener.soundFaderCompleted(this);
};
}
}
}//package util
Section 46
//Stack (util.Stack)
package util {
public class Stack {
protected var array:Array;
public function Stack(){
array = new Array();
}
public function g(_arg1:int){
if ((((_arg1 < 0)) || ((_arg1 >= array.length)))){
throw (new Error(((("index " + _arg1) + " out of range ") + array.length)));
};
return (array[_arg1]);
}
public function s(_arg1:int, _arg2){
var _local3:*;
if ((((_arg1 < 0)) || ((_arg1 >= array.length)))){
throw (new Error(((("index " + _arg1) + " out of range ") + array.length)));
};
_local3 = array[_arg1];
array[_arg1] = _arg2;
return (_local3);
}
public function push(_arg1){
array.push(_arg1);
return (_arg1);
}
public function pop(){
return (array.pop());
}
public function indexOf(_arg1, _arg2:int=0):int{
return (array.indexOf(_arg1, _arg2));
}
public function lastIndexOf(_arg1, _arg2:int=2147483647):int{
return (array.lastIndexOf(_arg1, _arg2));
}
public function add(_arg1:int, _arg2):void{
if ((((_arg1 < 0)) || ((_arg1 > array.length)))){
throw (new Error(((("index " + _arg1) + " out of range ") + array.length)));
};
array.splice(_arg1, 0, _arg2);
}
public function remove(_arg1:int){
if ((((_arg1 < 0)) || ((_arg1 >= array.length)))){
throw (new Error(((("index " + _arg1) + " out of range ") + (array.length - 1))));
};
return (array.splice(_arg1, 1)[0]);
}
public function size():int{
return (array.length);
}
public function toString():String{
return (array.toString());
}
public function toArray():Array{
return (array);
}
}
}//package util
Section 47
//VolumeChanger (util.VolumeChanger)
package util {
import flash.events.*;
import flash.media.*;
import flash.utils.*;
public class VolumeChanger {
public var soundChannel:SoundChannel;
protected var MIN_STEP:Number;// = 0.05
protected var MIN_DELAY:int;// = 10
protected var millisec:uint;
protected var startVolume:Number;
protected var endVolume:Number;
protected var listener:Object;
protected var timer:Timer;
protected var volumeStep:Number;
protected var panning:Number;
public function VolumeChanger(_arg1:SoundChannel, _arg2:Number, _arg3:uint, _arg4:Object=null){
this.soundChannel = _arg1;
this.endVolume = _arg2;
this.millisec = _arg3;
this.listener = _arg4;
startVolume = _arg1.soundTransform.volume;
panning = _arg1.soundTransform.pan;
var _local5:Number = (_arg2 - startVolume);
var _local6:int = Math.abs((_local5 / MIN_STEP));
if (_local6 == 0){
_local6 = 1;
};
var _local7:int = (_arg3 / _local6);
if (_local7 < MIN_DELAY){
_local7 = MIN_DELAY;
_local6 = (_arg3 / _local7);
};
volumeStep = (_local5 / _local6);
timer = new Timer(_local7, _local6);
timer.addEventListener("timer", changeVolume);
timer.addEventListener("timerComplete", finish);
timer.start();
}
public function changeVolume(_arg1:TimerEvent):void{
var _local2:Number = soundChannel.soundTransform.volume;
_local2 = (_local2 + volumeStep);
soundChannel.soundTransform = new SoundTransform(_local2, panning);
}
public function finish(_arg1:TimerEvent):void{
soundChannel.soundTransform = new SoundTransform(endVolume, panning);
if (listener != null){
listener.VolumeChangerCompleted(this);
};
}
}
}//package util
Section 48
//App (App)
package {
public class App {
public static const DEV_MODE:int = 0;
public static const MONEY_GAME:int = 1;
public static const PRACTICE_GAME:int = 2;
public static const GAME_TYPE:int = 1;
public static const TIME_RAN_OUT:int = 1;
public static const SHORT_GAME_END:int = 2;
public static const USER_CHOSE_EXIT:int = 3;
public static const RELAX_MOVES_FINISHED:int = 4;
public static const INPUT_SHUFFLE:int = 0;
public static const INPUT_EXIT:int = 1;
public static const INPUT_SELECT_RECT:int = 2;
public static const INPUT_SELECT_CHANGE:int = 4;
public static const LAST_TICK:int = 3;
public static const INPUT_STRINGS:Array = ["shuffle", "exit", "selectRect", "lastTick"];
public static const TICKS_PER_SECOND:int = 60;
public static const MOVIE_CLIP_FRAME_RATE:int = 120;
public static const MOVIE_CLIP_FRAMES_PER_GAME_TICK:Number = 2;
public static const TIME_WARNING_TICKS:int = 600;
public static const INTRO_TICKS:int = 900;
public static const END_REASON_TICKS:int = 180;
public function App(){
trace("static class that should not be instanitated");
}
public static function ticksToMillisec(_arg1:int):int{
return (Math.floor(((_arg1 / App.TICKS_PER_SECOND) * 1000)));
}
public static function isLogicPlayData(_arg1:int):Boolean{
if (_arg1 == INPUT_SELECT_CHANGE){
return (false);
};
return (true);
}
}
}//package
Section 49
//BassAnim (BassAnim)
package {
import guipackage.*;
public dynamic class BassAnim extends InstrumentAnim {
}
}//package
Section 50
//Block1 (Block1)
package {
import flash.display.*;
public dynamic class Block1 extends Sprite {
}
}//package
Section 51
//Block2 (Block2)
package {
import flash.display.*;
public dynamic class Block2 extends Sprite {
}
}//package
Section 52
//Block3 (Block3)
package {
import flash.display.*;
public dynamic class Block3 extends Sprite {
}
}//package
Section 53
//Block4 (Block4)
package {
import flash.display.*;
public dynamic class Block4 extends Sprite {
}
}//package
Section 54
//BlockBackground (BlockBackground)
package {
import flash.display.*;
public dynamic class BlockBackground extends MovieClip {
public var taken:MovieClip;
}
}//package
Section 55
//BlockCat1 (BlockCat1)
package {
import flash.display.*;
public dynamic class BlockCat1 extends MovieClip {
public var hat:MovieClip;
public var head:MovieClip;
public var shadow:MovieClip;
public var sunglasses:MovieClip;
}
}//package
Section 56
//BlockCat2 (BlockCat2)
package {
import flash.display.*;
public dynamic class BlockCat2 extends MovieClip {
public var hat:MovieClip;
public var head:MovieClip;
public var shadow:MovieClip;
public var sunglasses:MovieClip;
}
}//package
Section 57
//BlockCat3 (BlockCat3)
package {
import flash.display.*;
public dynamic class BlockCat3 extends MovieClip {
public var hat:MovieClip;
public var head:MovieClip;
public var shadow:MovieClip;
public var sunglasses:MovieClip;
}
}//package
Section 58
//BlockCat4 (BlockCat4)
package {
import flash.display.*;
public dynamic class BlockCat4 extends MovieClip {
public var hat:MovieClip;
public var head:MovieClip;
public var shadow:MovieClip;
public var sunglasses:MovieClip;
}
}//package
Section 59
//BlockCat5 (BlockCat5)
package {
import flash.display.*;
public dynamic class BlockCat5 extends MovieClip {
public var hat:MovieClip;
public var head:MovieClip;
public var shadow:MovieClip;
public var sunglasses:MovieClip;
}
}//package
Section 60
//BlockCat6 (BlockCat6)
package {
import flash.display.*;
public dynamic class BlockCat6 extends MovieClip {
public var hat:MovieClip;
public var head:MovieClip;
public var shadow:MovieClip;
public var sunglasses:MovieClip;
}
}//package
Section 61
//BlockRainbow (BlockRainbow)
package {
import flash.display.*;
public dynamic class BlockRainbow extends MovieClip {
public var head:MovieClip;
public var bg:RainbowBackground;
public var shadow:MovieClip;
public var taken:MovieClip;
}
}//package
Section 62
//BombBackside1 (BombBackside1)
package {
import flash.display.*;
public dynamic class BombBackside1 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 63
//BombBackside2 (BombBackside2)
package {
import flash.display.*;
public dynamic class BombBackside2 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 64
//BombBackside3 (BombBackside3)
package {
import flash.display.*;
public dynamic class BombBackside3 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 65
//BombBackside4 (BombBackside4)
package {
import flash.display.*;
public dynamic class BombBackside4 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 66
//BombBackside5 (BombBackside5)
package {
import flash.display.*;
public dynamic class BombBackside5 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 67
//BombBackside6 (BombBackside6)
package {
import flash.display.*;
public dynamic class BombBackside6 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 68
//BombSnd (BombSnd)
package {
import flash.media.*;
public dynamic class BombSnd extends Sound {
}
}//package
Section 69
//Color0Snd (Color0Snd)
package {
import flash.media.*;
public dynamic class Color0Snd extends Sound {
}
}//package
Section 70
//Color1Snd (Color1Snd)
package {
import flash.media.*;
public dynamic class Color1Snd extends Sound {
}
}//package
Section 71
//Color2Snd (Color2Snd)
package {
import flash.media.*;
public dynamic class Color2Snd extends Sound {
}
}//package
Section 72
//Color3Snd (Color3Snd)
package {
import flash.media.*;
public dynamic class Color3Snd extends Sound {
}
}//package
Section 73
//Color4Snd (Color4Snd)
package {
import flash.media.*;
public dynamic class Color4Snd extends Sound {
}
}//package
Section 74
//Color5Snd (Color5Snd)
package {
import flash.media.*;
public dynamic class Color5Snd extends Sound {
}
}//package
Section 75
//Document (Document)
package {
import guipackage.*;
import flash.display.*;
import modelpackage.*;
import util.*;
import flash.events.*;
import flash.text.*;
import flash.external.*;
import flash.net.*;
public class Document extends Sprite {
protected var model:Model;
protected var gui:Gui;
protected var guiControl:GuiControl;
protected var gameTimer:GameTimer;
protected var communicator:Communicator;
protected var timer:GameTimer;
protected var currentTick:int;// = -1
protected var gameLog:String;// = ""
protected var gameDataXml:XML;
protected var gameRunning:Boolean;// = false
public var relaxMode:Boolean;// = false
public static var debugTf:TextField;
public function Document(){
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
gui = new Gui(this);
addChild(gui);
guiControl = new GuiControl(gui);
gui.guiControl = guiControl;
gameTimer = new GameTimer(App.TICKS_PER_SECOND);
if (App.GAME_TYPE == App.DEV_MODE){
fakeGameData();
} else {
getGameData();
};
}
public function gameDataLoaded():void{
if (gameDataXml.@relaxMode == "true"){
relaxMode = true;
};
gui.setIntroTranslations();
model = new Model(this, guiControl, gameDataXml);
communicator = new Communicator();
addEventListener("enterFrame", advanceTime);
}
public function startGame():void{
gameRunning = true;
if (App.GAME_TYPE != App.DEV_MODE){
communicator.sendFsCommand("gameStart", "");
};
gameTimer = new GameTimer(App.TICKS_PER_SECOND);
currentTick = -1;
if (relaxMode){
model.guiControl.updateMoves(model.game.relaxMoves);
};
}
protected function getGameData():void{
var _local1:Object = ExternalInterface.call("getGameData");
if (((!((_local1 == null))) && (_local1.success))){
gameDataXml = new XML(_local1.message);
gameDataLoaded();
} else {
log("Error: Could not load game Data!");
};
}
protected function fakeGameData():void{
var myLoader:URLLoader;
var xmlLoaded:Function;
var loadError:Function;
xmlLoaded = function (_arg1:Event):void{
gameDataXml = new XML(myLoader.data);
gameDataLoaded();
};
loadError = function (_arg1:Event):void{
trace("xml load error");
};
myLoader = new URLLoader();
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);
myLoader.addEventListener(IOErrorEvent.IO_ERROR, loadError);
myLoader.load(new URLRequest("DevModeGameData.xml"));
}
protected function advanceTime(_arg1:Event):void{
var _local2:int = gameTimer.advanceTime();
var _local3:* = 0;
while (_local3 < _local2) {
currentTick++;
if (gameRunning){
model.tick(currentTick);
};
_local3++;
};
gui.render(currentTick, gameTimer.alpha);
}
public function addPlayData(_arg1:Array):void{
var _local2:int = (currentTick + 1);
_arg1.splice(1, 0, _local2);
model.addPlayData(_arg1);
var _local3:int = int(_arg1[0]);
if (App.GAME_TYPE == App.MONEY_GAME){
if (App.isLogicPlayData(_local3)){
communicator.sendPlayData(_arg1);
};
};
}
public function gameOver(_arg1:int, _arg2:int):void{
gameRunning = false;
if (App.GAME_TYPE != App.DEV_MODE){
communicator.sendFsCommand("gameEnd", ("" + _arg1));
};
}
public function gameQuit(_arg1:Event=null):void{
if (App.GAME_TYPE != App.DEV_MODE){
communicator.sendFsCommand("gameQuit", "");
};
trace(gameLog);
}
public function log(_arg1:String):void{
gameLog = (gameLog + (_arg1 + "\n"));
}
public function getTranslation(_arg1:String):String{
var id = _arg1;
return (String(gameDataXml.text.(@id == id)));
}
}
}//package
Section 76
//DrumsAnim (DrumsAnim)
package {
import guipackage.*;
public dynamic class DrumsAnim extends InstrumentAnim {
}
}//package
Section 77
//EyeAnimation1 (EyeAnimation1)
package {
import guipackage.*;
public dynamic class EyeAnimation1 extends EyeAnimation {
}
}//package
Section 78
//EyeAnimation2 (EyeAnimation2)
package {
import guipackage.*;
public dynamic class EyeAnimation2 extends EyeAnimation {
}
}//package
Section 79
//EyeAnimation3 (EyeAnimation3)
package {
import guipackage.*;
public dynamic class EyeAnimation3 extends EyeAnimation {
}
}//package
Section 80
//EyeAnimation4 (EyeAnimation4)
package {
import guipackage.*;
public dynamic class EyeAnimation4 extends EyeAnimation {
}
}//package
Section 81
//EyeAnimation5 (EyeAnimation5)
package {
import guipackage.*;
public dynamic class EyeAnimation5 extends EyeAnimation {
}
}//package
Section 82
//EyeAnimation6 (EyeAnimation6)
package {
import guipackage.*;
public dynamic class EyeAnimation6 extends EyeAnimation {
}
}//package
Section 83
//EyeAnimationRainbow (EyeAnimationRainbow)
package {
import guipackage.*;
public dynamic class EyeAnimationRainbow extends EyeAnimation {
}
}//package
Section 84
//FrameCount (FrameCount)
package {
import flash.display.*;
import flash.text.*;
public dynamic class FrameCount extends Sprite {
public var textField:TextField;
}
}//package
Section 85
//GoldBackside (GoldBackside)
package {
import flash.display.*;
public dynamic class GoldBackside extends MovieClip {
public var glimmRotate1:MovieClip;
public var glimmRotate2:MovieClip;
}
}//package
Section 86
//GoldSnd (GoldSnd)
package {
import flash.media.*;
public dynamic class GoldSnd extends Sound {
}
}//package
Section 87
//IntroSnd (IntroSnd)
package {
import flash.media.*;
public dynamic class IntroSnd extends Sound {
}
}//package
Section 88
//InvisibleButton (InvisibleButton)
package {
import flash.display.*;
public dynamic class InvisibleButton extends Sprite {
}
}//package
Section 89
//LoopSnd (LoopSnd)
package {
import flash.media.*;
public dynamic class LoopSnd extends Sound {
}
}//package
Section 90
//LoopSnd2 (LoopSnd2)
package {
import flash.media.*;
public dynamic class LoopSnd2 extends Sound {
}
}//package
Section 91
//MicrophoneAnim (MicrophoneAnim)
package {
import guipackage.*;
public dynamic class MicrophoneAnim extends InstrumentAnim {
}
}//package
Section 92
//NewLevelSnd (NewLevelSnd)
package {
import flash.media.*;
public dynamic class NewLevelSnd extends Sound {
}
}//package
Section 93
//NoCatSnd (NoCatSnd)
package {
import flash.media.*;
public dynamic class NoCatSnd extends Sound {
}
}//package
Section 94
//NormalBackside (NormalBackside)
package {
import flash.display.*;
public dynamic class NormalBackside extends MovieClip {
}
}//package
Section 95
//NotComboSnd (NotComboSnd)
package {
import flash.media.*;
public dynamic class NotComboSnd extends Sound {
}
}//package
Section 96
//OutroSnd (OutroSnd)
package {
import flash.media.*;
public dynamic class OutroSnd extends Sound {
}
}//package
Section 97
//PianoAnim (PianoAnim)
package {
import guipackage.*;
public dynamic class PianoAnim extends InstrumentAnim {
}
}//package
Section 98
//PlayBtn (PlayBtn)
package {
import flash.display.*;
public dynamic class PlayBtn extends MovieClip {
}
}//package
Section 99
//RainbowBackground (RainbowBackground)
package {
import flash.display.*;
public dynamic class RainbowBackground extends MovieClip {
}
}//package
Section 100
//RainbowBackside (RainbowBackside)
package {
import flash.display.*;
public dynamic class RainbowBackside extends MovieClip {
}
}//package
Section 101
//SaxAnim (SaxAnim)
package {
import guipackage.*;
public dynamic class SaxAnim extends InstrumentAnim {
}
}//package
Section 102
//SelectionRect05 (SelectionRect05)
package {
import guipackage.*;
public dynamic class SelectionRect05 extends SelectionRect {
}
}//package
Section 103
//SelectionRect06 (SelectionRect06)
package {
import guipackage.*;
public dynamic class SelectionRect06 extends SelectionRect {
}
}//package
Section 104
//SelectionRect07 (SelectionRect07)
package {
import guipackage.*;
public dynamic class SelectionRect07 extends SelectionRect {
}
}//package
Section 105
//SelectionRect08 (SelectionRect08)
package {
import guipackage.*;
public dynamic class SelectionRect08 extends SelectionRect {
}
}//package
Section 106
//SelectionRect09 (SelectionRect09)
package {
import guipackage.*;
public dynamic class SelectionRect09 extends SelectionRect {
}
}//package
Section 107
//SelectionRect10 (SelectionRect10)
package {
import guipackage.*;
public dynamic class SelectionRect10 extends SelectionRect {
}
}//package
Section 108
//ShuffleSnd (ShuffleSnd)
package {
import flash.media.*;
public dynamic class ShuffleSnd extends Sound {
}
}//package
Section 109
//TimeBackside (TimeBackside)
package {
import flash.display.*;
public dynamic class TimeBackside extends MovieClip {
}
}//package
Section 110
//TimeSnd (TimeSnd)
package {
import flash.media.*;
public dynamic class TimeSnd extends Sound {
}
}//package
Section 111
//TimeWarningSnd (TimeWarningSnd)
package {
import flash.media.*;
public dynamic class TimeWarningSnd extends Sound {
}
}//package
Section 112
//TrumpetAnim (TrumpetAnim)
package {
import guipackage.*;
public dynamic class TrumpetAnim extends InstrumentAnim {
}
}//package