STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228131
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/10532971?noj=FRM10532971-16DC" width="1" height="1"></div>

Color Shift.swf

This is the info page for
Flash #48302

(Click the ID number above for more basic data on this flash file.)


ActionScript [AS3]
Section 1
//ADInjector (com.flashrelax.utils.ADInjector) package com.flashrelax.utils { import flash.events.*; import flash.display.*; import mochi.*; public dynamic class ADInjector extends Sprite { private var adOptions:Object; public static const AD_FINISHED:String = "adFinished"; public function ADInjector(_arg1:Object){ var _local2:String; adOptions = {}; super(); addEventListener(Event.ADDED_TO_STAGE, addedToStageListener, false, 0, true); addEventListener(Event.REMOVED_FROM_STAGE, removedFromStageListener, false, 0, true); adOptions = {}; adOptions["clip"] = this; adOptions["ad_started"] = this.ADStarted; adOptions["ad_finished"] = this.ADFinished; adOptions["no_bg"] = true; if (_arg1){ for (_local2 in _arg1) { adOptions[_local2] = _arg1[_local2]; }; }; } private function ADFinished():void{ dispatchEvent(new Event(AD_FINISHED, false, false)); } private function addedToStageListener(_arg1:Event):void{ MochiAd.showPreGameAd(adOptions); } private function removedFromStageListener(_arg1:Event):void{ } private function ADStarted():void{ } } }//package com.flashrelax.utils
Section 2
//ProgressBar (com.flashrelax.utils.ProgressBar) package com.flashrelax.utils { import flash.display.*; import flash.geom.*; public class ProgressBar extends Sprite { private var mBarWidth:int; private var mProgress:Number; private var mMin:Number; private var mMax:Number; private var mBarHeight:int; private static const barRatios:Array = [0, 111, 128, 0xFF]; private static const highlightColors:Array = [0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF]; private static const cornerRadius:int = 2; private static const backgroundBorderColor:uint = 0xB2B2B2; private static const barAlphas:Array = [1, 1, 1, 1]; private static const backgroundShadowRatios:Array = [0, 7, 247, 0xFF]; private static const barShadowAlphas:Array = [0.2, 0, 0, 0.2]; private static const backgroundColor:uint = 0xC9C9C9; private static const barColors:Array = [12961279, 9807595, 5323, 4808175]; private static const highlightAlphas:Array = [0.7, 0.1, 0, 0]; private static const barShadowColors:Array = [0x444444, 0x444444, 0x444444, 0x444444]; private static const highlightRatios:Array = [0, 48, 63, 0xFF]; private static const backgroundShadowAlphas:Array = [0.2, 0, 0, 0.2]; private static const borderWidth:int = 1; private static const barShadowRatios:Array = [0, 7, 247, 0xFF]; private static const backgroundShadowColors:Array = [0x444444, 0x444444, 0x444444, 0x444444]; public function ProgressBar(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Number=0, _arg6:Number=100){ mMin = _arg5; mMax = _arg6; x = _arg1; y = _arg2; mBarWidth = _arg3; mBarHeight = _arg4; } public function Update(_arg1:Number=NaN):void{ if (!isNaN(_arg1)){ mProgress = _arg1; }; var _local2:Matrix = new Matrix(); graphics.clear(); graphics.beginFill(backgroundColor, 1); graphics.lineStyle(borderWidth, backgroundBorderColor, 1); graphics.drawRoundRect(0, 0, mBarWidth, mBarHeight, cornerRadius, cornerRadius); graphics.endFill(); graphics.lineStyle(0, 0, 0); _local2.createGradientBox(mBarWidth, mBarHeight, ((0 / 180) * Math.PI), 0, 0); graphics.beginGradientFill(GradientType.LINEAR, backgroundShadowColors, backgroundShadowAlphas, backgroundShadowRatios, _local2, SpreadMethod.PAD); graphics.drawRect(1, 1, (mBarWidth - 2), (mBarHeight - 2)); graphics.endFill(); graphics.lineStyle(1, 0xFFFFFF, 0.5); graphics.drawRect(1, 1, (mBarWidth - 2), (mBarHeight - 2)); var _local3:int = Math.min((((mBarWidth - 2) / (mMax - mMin)) * mProgress), mBarWidth); _local2.createGradientBox(mBarWidth, mBarHeight, ((90 / 180) * Math.PI), 0, 0); graphics.lineStyle(0, 0, 0); graphics.beginGradientFill(GradientType.LINEAR, barColors, barAlphas, barRatios, _local2, SpreadMethod.PAD); graphics.drawRect(1, 1, _local3, (mBarHeight - 2)); graphics.endFill(); graphics.lineStyle(0, 0, 0); _local2.createGradientBox(_local3, mBarHeight, ((0 / 180) * Math.PI), 0, 0); graphics.beginGradientFill(GradientType.LINEAR, barShadowColors, barShadowAlphas, barRatios, _local2, SpreadMethod.PAD); graphics.drawRect(1, 1, _local3, (mBarHeight - 2)); graphics.endFill(); graphics.lineStyle(0, 0, 0); _local2.createGradientBox(mBarWidth, mBarHeight, ((90 / 180) * Math.PI), 0, 0); graphics.beginGradientFill(GradientType.LINEAR, highlightColors, highlightAlphas, highlightRatios, _local2, SpreadMethod.PAD); graphics.drawRect(1, 1, (mBarWidth - 2), (mBarHeight - 2)); graphics.endFill(); } } }//package com.flashrelax.utils
Section 3
//QuickText (com.flashrelax.utils.QuickText) package com.flashrelax.utils { import flash.text.*; public class QuickText extends TextField { private static var mDefaultFont:String; private static var mAlign:String; private static var mColor:uint; private static var mSize:int; public function QuickText(_arg1:int=12, _arg2:String="left", _arg3:uint=0xFFFFFF){ mSize = _arg1; mAlign = _arg2; mColor = _arg3; changeSettings(); embedFonts = true; selectable = false; mouseEnabled = false; } public function set align(_arg1:String):void{ mAlign = _arg1; changeSettings(); } public function set size(_arg1:int):void{ mSize = _arg1; changeSettings(); } public function changeSettings():void{ var _local1:TextFormat = getTextFormat(); _local1.font = mDefaultFont; _local1.size = mSize; _local1.align = mAlign; _local1.color = mColor; defaultTextFormat = _local1; } public function set color(_arg1:uint):void{ mColor = _arg1; changeSettings(); } public function setText(_arg1:String):void{ text = ""; appendText(_arg1); } public static function setDefaultFont(_arg1:String):void{ mDefaultFont = _arg1; } } }//package com.flashrelax.utils
Section 4
//VisualButton (com.flashrelax.utils.VisualButton) package com.flashrelax.utils { import flash.display.*; import flash.text.*; public class VisualButton extends Sprite { private var mVisText:QuickText; private var mButMC:MovieClip; private var mText:String; private var mFontSize:int; public static var mButtonsSWFClass:Class = VisualButton_mButtonsSWFClass; public function VisualButton(_arg1:String, _arg2:Number=1, _arg3:Number=1, _arg4:int=12){ mButMC = (new mButtonsSWFClass() as MovieClip); mButMC.gotoAndStop(1); mButMC.x = 0; mButMC.y = 0; mButMC.scaleX = _arg2; mButMC.scaleY = _arg3; addChild(mButMC); mText = _arg1; mFontSize = _arg4; if (_arg1.length == 2){ mFontSize--; }; if (_arg1.length == 3){ mFontSize = (mFontSize - 3); }; mVisText = new QuickText(mFontSize, TextFormatAlign.CENTER, 0); mVisText.width = (mButMC.width * 0.8); mVisText.x = 2; mVisText.y = 0; mVisText.setText(mText); addChild(mVisText); } } }//package com.flashrelax.utils
Section 5
//VisualButton_mButtonsSWFClass (com.flashrelax.utils.VisualButton_mButtonsSWFClass) package com.flashrelax.utils { import mx.core.*; public class VisualButton_mButtonsSWFClass extends MovieClipAsset { } }//package com.flashrelax.utils
Section 6
//Ball (com.recolor.Ball) package com.recolor { import flash.display.*; import flash.events.*; public class Ball extends Sprite { private var mState:int; private var mPos:int; private var mDestX:int; private var mDestY:int; private var mUseBmp:Bitmap; private var mId:int; private var mBigBall:BigBall; private var mColor:int; private static const STATE_MOVE_EXCHANGE_CENTER:int = 3; private static const STATE_MOVE_EXCHANGE_BACK:int = 4; private static const STATE_NORMAL:int = 0; private static const STATE_MOVE_TO:int = 2; private static const STATE_MOVE_AWAY:int = 1; public function Ball(){ mState = STATE_NORMAL; mColor = Math.floor((Math.random() * GameState.mColors)); var _local1:Bitmap = new Bitmap(DataCollection.mSmallBalls[mColor]); addChild(_local1); mUseBmp = _local1; this.mouseEnabled = false; } public function exchangeColor(_arg1:BigBall):void{ mBigBall = _arg1; mBigBall.wait = true; if (mState == STATE_NORMAL){ addEventListener(Event.ENTER_FRAME, onFrame); }; mState = STATE_MOVE_EXCHANGE_CENTER; mDestX = x; mDestY = y; if (mId < 8){ mDestY = (7 * Settings.BOARD_SECTION_HEIGHT); } else { mDestX = (8 * Settings.BOARD_SECTION_WIDTH); }; } public function get color():int{ return (mColor); } public function setCoordsFromId(_arg1:int, _arg2:int, _arg3:Boolean=false):void{ mId = _arg1; mPos = _arg2; var _local4:int = x; var _local5:int = y; x = 0; y = 0; if (_arg1 < 8){ x = (6 + (_arg1 % 4)); if (_arg1 < 4){ y = (_arg2 - 1); } else { y = (((5 + 4) + 5) - _arg2); }; } else { y = (5 + (_arg1 % 4)); if (_arg1 < 12){ x = (_arg2 - 1); } else { x = (((6 + 4) + 6) - _arg2); }; }; x = (Settings.BALL_OFFSET_DX + (x * Settings.BOARD_SECTION_WIDTH)); y = (Settings.BALL_OFFSET_DY + (y * Settings.BOARD_SECTION_HEIGHT)); if (_arg3){ if (mState != STATE_MOVE_EXCHANGE_CENTER){ mDestX = x; mDestY = y; }; x = _local4; y = _local5; if (mState == STATE_NORMAL){ addEventListener(Event.ENTER_FRAME, onFrame); mState = STATE_MOVE_TO; }; }; } public function set color(_arg1:int):void{ if (mColor != _arg1){ mColor = _arg1; mUseBmp.bitmapData = DataCollection.mSmallBalls[mColor]; }; } public function onFrame(_arg1:Event):void{ var _local2:int; var _local3:int; if (mState != STATE_NORMAL){ if ((Math.abs((x - mDestX)) + Math.abs((y - mDestY))) < 30){ x = mDestX; y = mDestY; switch (mState){ case STATE_MOVE_AWAY: removeEventListener(Event.ENTER_FRAME, onFrame); parent.removeChild(this); break; case STATE_MOVE_TO: case STATE_MOVE_EXCHANGE_BACK: removeEventListener(Event.ENTER_FRAME, onFrame); mState = STATE_NORMAL; break; case STATE_MOVE_EXCHANGE_CENTER: if (UserSettings.mSound){ DataCollection.mSfxColorSwap.play(); }; mState = STATE_MOVE_EXCHANGE_BACK; setCoordsFromId(mId, mPos, true); _local3 = color; color = mBigBall.color; mBigBall.color = _local3; mBigBall.wait = false; break; }; return; }; _local2 = Settings.BALL_MOVE_AWAY_SPEED; if (mState == STATE_MOVE_TO){ _local2 = Settings.BALL_MOVE_AWAY_SPEED; }; if (x < mDestX){ x = (x + _local2); } else { if (x > mDestX){ x = (x - _local2); }; }; if (y < mDestY){ y = (y + _local2); } else { if (y > mDestY){ y = (y - _local2); }; }; }; } public function moveAway():void{ if (mState == STATE_NORMAL){ addEventListener(Event.ENTER_FRAME, onFrame); }; mState = STATE_MOVE_AWAY; mDestX = x; mDestY = y; if (mId < 8){ mDestY = (7 * Settings.BOARD_SECTION_HEIGHT); } else { mDestX = (8 * Settings.BOARD_SECTION_WIDTH); }; } } }//package com.recolor
Section 7
//BigBall (com.recolor.BigBall) package com.recolor { import flash.display.*; public class BigBall extends Sprite { private var mWait:Boolean; private var mUseBmp:Bitmap; private var mColor:int; public function BigBall(){ mColor = 0; x = ((6 * Settings.BOARD_SECTION_WIDTH) + Settings.BIG_BALL_OFFSET_DX); y = ((5 * Settings.BOARD_SECTION_HEIGHT) + Settings.BIG_BALL_OFFSET_DY); mColor = Math.floor((Math.random() * GameState.mColors)); var _local1:Bitmap = new Bitmap(DataCollection.mBigBalls[mColor]); mUseBmp = _local1; addChild(mUseBmp); } public function set wait(_arg1:Boolean):void{ mWait = _arg1; } public function set color(_arg1:int):void{ if (_arg1 != mColor){ mColor = _arg1; mUseBmp.bitmapData = DataCollection.mBigBalls[mColor]; }; } public function get wait():Boolean{ return (mWait); } public function get color():int{ return (mColor); } } }//package com.recolor
Section 8
//Button (com.recolor.Button) package com.recolor { import flash.display.*; import flash.text.*; import flash.filters.*; public class Button extends SimpleButton { private var mText:String; public function Button(_arg1:String, _arg2:int=24){ mText = _arg1; var _local3:TextField = createLabel(4294901760, _arg2); var _local4:int = _local3.width; var _local5:int = _local3.height; var _local6:Sprite = new Sprite(); _local6.addChild(_local3); var _local7:Sprite = new Sprite(); _local7.addChild(createLabel(0xFF7F00, _arg2)); var _local8:Sprite = new Sprite(); _local8.addChild(createLabel(0xEFEF00, _arg2)); upState = _local7; overState = _local8; downState = _local6; useHandCursor = true; hitTestState = _local7; } public function createLabel(_arg1:uint, _arg2:int):TextField{ var _local3:TextField; _local3 = new TextField(); _local3.type = TextFieldType.DYNAMIC; _local3.selectable = false; _local3.textColor = _arg1; var _local4:TextFormat = _local3.getTextFormat(); _local4.font = Settings.GAME_FONT; _local4.size = _arg2; _local4.align = TextFormatAlign.CENTER; _local3.defaultTextFormat = _local4; _local3.embedFonts = true; _local3.appendText(mText); _local3.y = 0; _local3.x = 0; var _local5:Array = new Array(1); _local5[0] = new GlowFilter(0x1F1F00, 1, 6, 6, 3, 1, false, false); _local3.filters = _local5; var _local6:int = _local3.getLineMetrics(0).width; var _local7:int = _local3.getLineMetrics(0).height; _local3.width = (_local6 + 10); _local3.height = (_local7 + 5); return (_local3); } } }//package com.recolor
Section 9
//DataCollection (com.recolor.DataCollection) package com.recolor { import flash.display.*; import flash.text.*; import com.flashrelax.utils.*; import mx.core.*; import flash.geom.*; public class DataCollection { public static var mBigBalls:Array; private static var mBigBoardSectionClass:Class = DataCollection_mBigBoardSectionClass; public static var mBoardSectionH:BitmapData; public static var mSfxLose:SoundAsset; public static var mSfxMenu:SoundAsset; public static var mBigBoardSection:BitmapData; public static var mSmallBalls:Array; public static var mSfxColorSwap:SoundAsset; private static var mMusicClass:Class = DataCollection_mMusicClass; private static var mSfxMenuClass:Class = DataCollection_mSfxMenuClass; public static var mMusic:SoundAsset; public static var mSfxAway:SoundAsset; public static var mInGameLogoClass:Class = DataCollection_mInGameLogoClass; private static var mSfxLoseClass:Class = DataCollection_mSfxLoseClass; private static var mBoardSectionClass:Class = DataCollection_mBoardSectionClass; private static var mGameFont:Class = DataCollection_mGameFont; private static var mSfxAwayClass:Class = DataCollection_mSfxAwayClass; public static var mBoardSection:BitmapData; public static var mLogoSWFClass:Class = DataCollection_mLogoSWFClass; private static var mBigBallsClass:Class = DataCollection_mBigBallsClass; private static var mSfxColorSwapClass:Class = DataCollection_mSfxColorSwapClass; private static var mBoardSectionHClass:Class = DataCollection_mBoardSectionHClass; private static var mSmallBallsClass:Class = DataCollection_mSmallBallsClass; public static function init():void{ var _local1:int; var _local3:Rectangle; var _local4:Point; Font.registerFont(mGameFont); QuickText.setDefaultFont(Settings.GAME_FONT); var _local2:BitmapAsset = (new mBoardSectionClass() as BitmapAsset); mBoardSection = _local2.bitmapData; _local2 = (new mBoardSectionHClass() as BitmapAsset); mBoardSectionH = _local2.bitmapData; _local2 = (new mBigBoardSectionClass() as BitmapAsset); mBigBoardSection = _local2.bitmapData; _local2 = (new mSmallBallsClass() as BitmapAsset); mSmallBalls = new Array(Settings.BALL_COLOR_COUNT); _local1 = 0; while (_local1 < Settings.BALL_COLOR_COUNT) { mSmallBalls[_local1] = new BitmapData(Settings.BALL_WIDTH, Settings.BALL_HEIGHT); _local3 = new Rectangle(0, (_local1 * Settings.BALL_HEIGHT), Settings.BALL_WIDTH, Settings.BALL_HEIGHT); _local4 = new Point(0, 0); mSmallBalls[_local1].copyPixels(_local2.bitmapData, _local3, _local4); _local1++; }; _local2 = (new mBigBallsClass() as BitmapAsset); mBigBalls = new Array(Settings.BALL_COLOR_COUNT); _local1 = 0; while (_local1 < Settings.BALL_COLOR_COUNT) { mBigBalls[_local1] = new BitmapData(Settings.BIG_BALL_WIDTH, Settings.BIG_BALL_HEIGHT); _local3 = new Rectangle(0, (_local1 * Settings.BIG_BALL_HEIGHT), Settings.BIG_BALL_WIDTH, Settings.BIG_BALL_HEIGHT); _local4 = new Point(0, 0); mBigBalls[_local1].copyPixels(_local2.bitmapData, _local3, _local4); _local1++; }; mSfxColorSwap = (new mSfxColorSwapClass() as SoundAsset); mSfxAway = (new mSfxAwayClass() as SoundAsset); mSfxMenu = (new mSfxMenuClass() as SoundAsset); mSfxLose = (new mSfxLoseClass() as SoundAsset); mMusic = (new mMusicClass() as SoundAsset); } init(); } }//package com.recolor
Section 10
//DataCollection_mBigBallsClass (com.recolor.DataCollection_mBigBallsClass) package com.recolor { import mx.core.*; public class DataCollection_mBigBallsClass extends BitmapAsset { } }//package com.recolor
Section 11
//DataCollection_mBigBoardSectionClass (com.recolor.DataCollection_mBigBoardSectionClass) package com.recolor { import mx.core.*; public class DataCollection_mBigBoardSectionClass extends BitmapAsset { } }//package com.recolor
Section 12
//DataCollection_mBoardSectionClass (com.recolor.DataCollection_mBoardSectionClass) package com.recolor { import mx.core.*; public class DataCollection_mBoardSectionClass extends BitmapAsset { } }//package com.recolor
Section 13
//DataCollection_mBoardSectionHClass (com.recolor.DataCollection_mBoardSectionHClass) package com.recolor { import mx.core.*; public class DataCollection_mBoardSectionHClass extends BitmapAsset { } }//package com.recolor
Section 14
//DataCollection_mGameFont (com.recolor.DataCollection_mGameFont) package com.recolor { import mx.core.*; public class DataCollection_mGameFont extends FontAsset { } }//package com.recolor
Section 15
//DataCollection_mInGameLogoClass (com.recolor.DataCollection_mInGameLogoClass) package com.recolor { import flash.utils.*; import mx.core.*; public class DataCollection_mInGameLogoClass extends MovieClipLoaderAsset { public var dataClass:Class; private static var bytes:ByteArray = null; public function DataCollection_mInGameLogoClass(){ dataClass = DataCollection_mInGameLogoClass_dataClass; super(); initialWidth = (3900 / 20); initialHeight = (3000 / 20); } override public function get movieClipData():ByteArray{ if (bytes == null){ bytes = ByteArray(new dataClass()); }; return (bytes); } } }//package com.recolor
Section 16
//DataCollection_mInGameLogoClass_dataClass (com.recolor.DataCollection_mInGameLogoClass_dataClass) package com.recolor { import mx.core.*; public class DataCollection_mInGameLogoClass_dataClass extends ByteArrayAsset { } }//package com.recolor
Section 17
//DataCollection_mLogoSWFClass (com.recolor.DataCollection_mLogoSWFClass) package com.recolor { import flash.utils.*; import mx.core.*; public class DataCollection_mLogoSWFClass extends MovieClipLoaderAsset { public var dataClass:Class; private static var bytes:ByteArray = null; public function DataCollection_mLogoSWFClass(){ dataClass = DataCollection_mLogoSWFClass_dataClass; super(); initialWidth = (11000 / 20); initialHeight = (8000 / 20); } override public function get movieClipData():ByteArray{ if (bytes == null){ bytes = ByteArray(new dataClass()); }; return (bytes); } } }//package com.recolor
Section 18
//DataCollection_mLogoSWFClass_dataClass (com.recolor.DataCollection_mLogoSWFClass_dataClass) package com.recolor { import mx.core.*; public class DataCollection_mLogoSWFClass_dataClass extends ByteArrayAsset { } }//package com.recolor
Section 19
//DataCollection_mMusicClass (com.recolor.DataCollection_mMusicClass) package com.recolor { import mx.core.*; public class DataCollection_mMusicClass extends SoundAsset { } }//package com.recolor
Section 20
//DataCollection_mSfxAwayClass (com.recolor.DataCollection_mSfxAwayClass) package com.recolor { import mx.core.*; public class DataCollection_mSfxAwayClass extends SoundAsset { } }//package com.recolor
Section 21
//DataCollection_mSfxColorSwapClass (com.recolor.DataCollection_mSfxColorSwapClass) package com.recolor { import mx.core.*; public class DataCollection_mSfxColorSwapClass extends SoundAsset { } }//package com.recolor
Section 22
//DataCollection_mSfxLoseClass (com.recolor.DataCollection_mSfxLoseClass) package com.recolor { import mx.core.*; public class DataCollection_mSfxLoseClass extends SoundAsset { } }//package com.recolor
Section 23
//DataCollection_mSfxMenuClass (com.recolor.DataCollection_mSfxMenuClass) package com.recolor { import mx.core.*; public class DataCollection_mSfxMenuClass extends SoundAsset { } }//package com.recolor
Section 24
//DataCollection_mSmallBallsClass (com.recolor.DataCollection_mSmallBallsClass) package com.recolor { import mx.core.*; public class DataCollection_mSmallBallsClass extends BitmapAsset { } }//package com.recolor
Section 25
//Field (com.recolor.Field) package com.recolor { import flash.display.*; import flash.events.*; import flash.text.*; import flash.ui.*; public class Field extends Sprite { private var mHUD:HUD; private var mPreviewCnt:int; private var mPreview:Array; private var mSelectedId:int; private var mSelected:Sprite; private var mAppearFrame:int; private var mMenu:Sprite; private var mSelectionOrder:int; private var mBigBall:BigBall; private var mDelayFrame:int; private var mBoard:Array; private static const NEW_BALL_PRIORITY_FIX:int = 2; public function Field(){ var _local1:Bitmap; super(); GameState.mMode = GameState.MODE_TURN; addChild(new StarField(0x0200, 448)); y = 0; while (y < ((5 + 4) + 5)) { x = 0; while (x < ((6 + 4) + 6)) { if ((((((((((x < 6)) && ((y < 5)))) || ((((x >= (6 + 4))) && ((y < 5)))))) || ((((x < 6)) && ((y >= (5 + 4))))))) || ((((x >= (6 + 4))) && ((y >= (5 + 4))))))){ } else { if ((((((((x >= 6)) && ((x < (6 + 4))))) && ((y >= 5)))) && ((y < (5 + 4))))){ if ((((x == 6)) && ((y == 5)))){ _local1 = new Bitmap(DataCollection.mBigBoardSection); _local1.x = (x * Settings.BOARD_SECTION_WIDTH); _local1.y = (y * Settings.BOARD_SECTION_HEIGHT); addChild(_local1); }; } else { _local1 = new Bitmap(DataCollection.mBoardSection); _local1.x = (x * Settings.BOARD_SECTION_WIDTH); _local1.y = (y * Settings.BOARD_SECTION_HEIGHT); addChild(_local1); }; }; x++; }; y++; }; mSelectionOrder = numChildren; mBoard = new Array(16); var _local2:int; while (_local2 < 16) { mBoard[_local2] = new Array(8); mBoard[_local2][0] = 0; _local2++; }; mHUD = new HUD(); addChild(mHUD); mBigBall = new BigBall(); addChild(mBigBall); mSelected = null; mPreview = new Array(25); mPreviewCnt = 0; mMenu = new MainMenu(); addChild(mMenu); GameState.mState = GameState.STATE_MAIN_MENU; addEventListener(Event.ENTER_FRAME, onFrame); addEventListener(MouseEvent.CLICK, onClick); addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); GameState.root.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function onKey(_arg1:KeyboardEvent):void{ if (GameState.mState == GameState.STATE_GAME){ if ((((_arg1.charCode == Keyboard.ESCAPE)) || ((String.fromCharCode(_arg1.charCode).toLowerCase() == "p")))){ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; GameState.mState = GameState.STATE_MAIN_MENU; addChild(new PauseMenu()); }; if (String.fromCharCode(_arg1.charCode).toLowerCase() == "i"){ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; GameState.mState = GameState.STATE_MAIN_MENU; addChild(new InstructionsWindow()); }; }; } public function generatePreview():void{ var _local1:PreviewBall = new PreviewBall(GameState.mColors); addChild(_local1); mPreview[mPreviewCnt] = _local1; mPreviewCnt++; } public function onFrame(_arg1:Event):void{ if (((!((GameState.mState == GameState.STATE_GAME_OVER))) && (!((GameState.root.stage.focus is TextField))))){ GameState.root.stage.focus = GameState.root.stage; }; if (GameState.mState != GameState.STATE_GAME){ return; }; if (GameState.mMode == GameState.MODE_TURN){ return; }; GameState.mTime++; if ((GameState.mTime % 25) == 0){ mHUD.draw(); }; mDelayFrame++; if (mDelayFrame > Settings.DELAY_CHANGE){ mDelayFrame = 0; GameState.mCurDelay--; if (GameState.mCurDelay < Settings.DELAY_MINIMUM){ GameState.mCurDelay = Settings.DELAY_MINIMUM; }; }; mAppearFrame++; if (mAppearFrame > GameState.mCurDelay){ mAppearFrame = 0; generatePreview(); }; updatePreview(); } public function localCoordsToId(_arg1:int, _arg2:int):int{ _arg1 = (_arg1 / Settings.BOARD_SECTION_WIDTH); _arg2 = (_arg2 / Settings.BOARD_SECTION_HEIGHT); var _local3 = -1; if ((((((((_arg1 >= 6)) && ((_arg1 < (6 + 4))))) && ((_arg2 >= 0)))) && ((_arg2 < 5)))){ _local3 = (_arg1 - 6); }; if ((((((((_arg1 >= 6)) && ((_arg1 < (6 + 4))))) && ((_arg2 >= (5 + 4))))) && ((_arg2 < ((5 + 4) + 5))))){ _local3 = ((_arg1 - 6) + 4); }; if ((((((((_arg1 >= 0)) && ((_arg1 < 6)))) && ((_arg2 >= 5)))) && ((_arg2 < (5 + 4))))){ _local3 = ((_arg2 - 5) + 8); }; if ((((((((_arg1 >= (6 + 4))) && ((_arg1 < ((6 + 4) + 6))))) && ((_arg2 >= 5)))) && ((_arg2 < (5 + 4))))){ _local3 = ((_arg2 - 5) + 12); }; return (_local3); } public function removeSelection():void{ if (mSelected != null){ removeChild(mSelected); mSelected = null; }; } public function onClick(_arg1:MouseEvent):void{ var _local3:int; var _local4:Boolean; if (GameState.mState != GameState.STATE_GAME){ return; }; if (mBigBall.wait){ return; }; var _local2:int = localCoordsToId(_arg1.localX, _arg1.localY); if (_local2 != -1){ _local3 = 0; while ((((mBoard[_local2][0] > 0)) && ((mBoard[_local2][mBoard[_local2][0]].color == mBigBall.color)))) { mBoard[_local2][mBoard[_local2][0]].moveAway(); mBoard[_local2][mBoard[_local2][0]] = null; var _local5 = mBoard[_local2]; var _local6:int; var _local7 = (_local5[_local6] - 1); _local5[_local6] = _local7; _local3++; }; if (_local3 > 0){ GameState.mScore = (GameState.mScore + Settings.SCORE_REMOVE[(_local3 - 1)]); mHUD.draw(); }; _local4 = false; if (mBoard[_local2][0] > 0){ mBoard[_local2][mBoard[_local2][0]].exchangeColor(mBigBall); _local3++; _local4 = true; }; if ((((_local3 > 0)) && (UserSettings.mSound))){ DataCollection.mSfxAway.play(); }; if ((((GameState.mMode == GameState.MODE_TURN)) && ((_local3 > 0)))){ GameState.mTurns++; mHUD.draw(); updatePreview(); if (GameState.mState != GameState.STATE_GAME_OVER){ generatePreview(); }; }; if (GameState.mScore >= Settings.SCORE_LIMIT){ if (UserSettings.mSound){ DataCollection.mSfxLose.play(); }; GameState.mState = GameState.STATE_GAME_OVER; addChild(new GameOverWindow()); }; }; } public function startGame():void{ var _local2:int; mAppearFrame = 0; mDelayFrame = 0; mBigBall.wait = false; removeSelection(); GameState.initGame(); mHUD.draw(); var _local1:int; while (_local1 < 16) { _local2 = 1; while (_local2 <= mBoard[_local1][0]) { removeChild(mBoard[_local1][_local2]); mBoard[_local1][_local2] = null; _local2++; }; mBoard[_local1][0] = 0; _local1++; }; _local1 = 0; while (_local1 < mPreviewCnt) { removeChild(mPreview[_local1]); mPreview[_local1] = null; _local1++; }; mPreviewCnt = 0; if (GameState.mMode == GameState.MODE_TURN){ _local1 = 0; while (_local1 < Settings.BALL_INIT_CNT) { generatePreview(); _local1++; }; updatePreview(); generatePreview(); }; if (!UserSettings.mTutorialShown){ UserSettings.mTutorialShown = true; UserSettings.save(); GameState.mState = GameState.STATE_MAIN_MENU; addChild(new InstructionsWindow()); }; } public function onMouseMove(_arg1:MouseEvent):void{ var _local2:int; var _local3:int; var _local4:Bitmap; if (((!((GameState.mState == GameState.STATE_GAME))) || (mBigBall.wait))){ removeSelection(); return; }; _local2 = localCoordsToId(_arg1.localX, _arg1.localY); if (_local2 == -1){ removeSelection(); return; }; if (((!((mSelected == null))) && ((mSelectedId == _local2)))){ return; }; mSelectedId = _local2; removeSelection(); mSelected = new Sprite(); mSelected.mouseEnabled = false; if (_local2 < 8){ _local3 = 0; while (_local3 < 5) { _local4 = new Bitmap(DataCollection.mBoardSectionH); _local4.x = 0; _local4.y = (_local3 * Settings.BOARD_SECTION_HEIGHT); mSelected.addChild(_local4); _local3++; }; mSelected.x = (((_local2 % 4) + 6) * Settings.BOARD_SECTION_WIDTH); mSelected.y = ((Math.floor((_local2 / 4)) * (5 + 4)) * Settings.BOARD_SECTION_HEIGHT); } else { _local3 = 0; while (_local3 < 6) { _local4 = new Bitmap(DataCollection.mBoardSectionH); _local4.y = 0; _local4.x = (_local3 * Settings.BOARD_SECTION_WIDTH); mSelected.addChild(_local4); _local3++; }; mSelected.y = (((_local2 % 4) + 5) * Settings.BOARD_SECTION_HEIGHT); mSelected.x = ((Math.floor(((_local2 - 8) / 4)) * (6 + 4)) * Settings.BOARD_SECTION_WIDTH); }; addChildAt(mSelected, mSelectionOrder); } public function updatePreview():void{ var _local2:int; var _local3:int; var _local4:int; var _local1:int; while (_local1 < mPreviewCnt) { if (mPreview[_local1].advanceTime()){ _local2 = mPreview[_local1].id; _local3 = mBoard[_local2][0]; _local4 = _local3; while (_local4 > 0) { mBoard[_local2][(_local4 + 1)] = mBoard[_local2][_local4]; mBoard[_local2][(_local4 + 1)].setCoordsFromId(_local2, (_local4 + 1), true); _local4--; }; mBoard[_local2][1] = new Ball(); mBoard[_local2][1].setCoordsFromId(_local2, 0); mBoard[_local2][1].setCoordsFromId(_local2, 1, true); var _local5 = mBoard[_local2]; var _local6:int; var _local7 = (_local5[_local6] + 1); _local5[_local6] = _local7; addChildAt(mBoard[_local2][1], (numChildren - NEW_BALL_PRIORITY_FIX)); if ((((((_local2 < 8)) && ((_local3 == 5)))) || ((((_local2 >= 8)) && ((_local3 == 6)))))){ if (UserSettings.mSound){ DataCollection.mSfxLose.play(); }; GameState.mState = GameState.STATE_GAME_OVER; addChild(new GameOverWindow()); }; removeChild(mPreview[_local1]); mPreviewCnt--; mPreview[_local1] = mPreview[mPreviewCnt]; mPreview[mPreviewCnt] = null; _local1--; }; _local1++; }; } } }//package com.recolor
Section 26
//GameModeMenu (com.recolor.GameModeMenu) package com.recolor { import flash.events.*; import flash.ui.*; public class GameModeMenu extends Window { private var mButton:Array; private static const BUTTON_COUNT:int = 5; private static const WINDOW_HEIGHT:int = 205; private static const WINDOW_WIDTH:int = 400; public static const BUTTON_TEXT:Array = ["Easy (6 Colors)", "Normal (8 Colors)", "Hard (10 Colors)", "Arcade Mode", "Back"]; public function GameModeMenu(){ super("Select Mode", WINDOW_WIDTH, WINDOW_HEIGHT); y = 160; mButton = new Array(BUTTON_COUNT); var _local1:int; while (_local1 < BUTTON_COUNT) { mButton[_local1] = new Button(BUTTON_TEXT[_local1]); mButton[_local1].y = (45 + (_local1 * 28)); mButton[_local1].x = ((WINDOW_WIDTH - mButton[_local1].width) / 2); mButton[_local1].addEventListener(MouseEvent.CLICK, onClick); addChild(mButton[_local1]); _local1++; }; mButton[4].y = (mButton[4].y + 10); GameState.root.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function onKey(_arg1:KeyboardEvent):void{ if (_arg1.charCode == Keyboard.ESCAPE){ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; removeListeners(); parent.addChild(new MainMenu()); parent.removeChild(this); }; } public function onClick(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; removeListeners(); var _local2:int; var _local3:int; while (_local3 < mButton.length) { if (_arg1.target == mButton[_local3]){ _local2 = _local3; }; _local3++; }; if (_local2 == 4){ parent.addChild(new MainMenu()); parent.removeChild(this); return; }; GameState.mMode = GameState.MODE_TURN; if (_local2 == 3){ GameState.mMode = GameState.MODE_ARCADE; }; switch (_local2){ case 0: GameState.mColors = 6; break; case 1: GameState.mColors = 8; break; case 2: GameState.mColors = 10; break; case 3: GameState.mColors = 4; break; }; (parent as Field).startGame(); parent.removeChild(this); } public function removeListeners():void{ var _local1:int; while (_local1 < mButton.length) { mButton[_local1].removeEventListener(MouseEvent.CLICK, onClick); _local1++; }; GameState.root.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKey); } } }//package com.recolor
Section 27
//GameOverWindow (com.recolor.GameOverWindow) package com.recolor { import flash.events.*; import mochi.*; import flash.text.*; import com.flashrelax.utils.*; public class GameOverWindow extends Window { private var mScoreText:QuickText; private var mLoadingText:QuickText; private var mButton:Array; private static const WINDOW_HEIGHT:int = 440; private static const WINDOW_WIDTH:int = 500; private static const BUTTON_COUNT:int = 2; private static const BUTTON_TEXT:Array = ["Restart Game", "Quit to main menu"]; private static const BUTTON_Y:int = 380; public function GameOverWindow(){ var _local1 = "Game Over!"; if (GameState.mScore >= Settings.SCORE_LIMIT){ _local1 = "You have won!"; }; super(_local1, WINDOW_WIDTH, WINDOW_HEIGHT); } public function onClick(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; var _local2:int; var _local3:int; while (_local3 < mButton.length) { if (_arg1.target == mButton[_local3]){ _local2 = _local3; }; _local3++; }; removeListeners(); switch (_local2){ case 0: if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; (parent as Field).startGame(); break; case 1: if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; GameState.mState = GameState.STATE_MAIN_MENU; parent.addChild(new MainMenu()); break; }; MochiScores.closeLeaderboard(); parent.removeChild(this); } public function loadError(_arg1:Object):void{ if (mLoadingText != null){ mLoadingText.setText("Loading error!\nCheck your internet connection!"); }; } public function removeListeners():void{ var _local1:int; while (_local1 < mButton.length) { mButton[_local1].removeEventListener(MouseEvent.CLICK, onClick); _local1++; }; } override public function draw():void{ var _local3:int; var _local4:int; var _local5:String; super.draw(); mScoreText = new QuickText(24, TextFormatAlign.CENTER, 0xEFEF00); mScoreText.x = 0; mScoreText.y = 40; mScoreText.width = WINDOW_WIDTH; var _local1:int; if (GameState.mScore < Settings.SCORE_LIMIT){ _local1 = GameState.mScore; mScoreText.setText(("Your score: " + GameState.mScore)); } else { if (GameState.mMode == GameState.MODE_ARCADE){ _local3 = Math.floor((GameState.mTime / 25)); _local1 = (_local3 * 1000); _local4 = Math.floor((_local3 / 60)); _local3 = (_local3 % 60); _local5 = "Elite Time: "; if (_local4 < 10){ _local5 = (_local5 + "0"); }; _local5 = (_local5 + (_local4 + ":")); if (_local3 < 10){ _local5 = (_local5 + "0"); }; _local5 = (_local5 + _local3); mScoreText.setText(_local5); } else { _local1 = GameState.mTurns; mScoreText.setText(("Elite Turns: " + GameState.mTurns)); }; }; addChild(mScoreText); mButton = new Array(BUTTON_COUNT); var _local2:int; while (_local2 < BUTTON_COUNT) { mButton[_local2] = new Button(BUTTON_TEXT[_local2]); mButton[_local2].y = (BUTTON_Y + (_local2 * 28)); mButton[_local2].x = ((WINDOW_WIDTH - mButton[_local2].width) / 2); mButton[_local2].addEventListener(MouseEvent.CLICK, onClick); addChild(mButton[_local2]); _local2++; }; mLoadingText = new QuickText(36, TextFormatAlign.CENTER, 0xFFFF00); mLoadingText.setText("Loading scoreboard.\nPlease wait..."); mLoadingText.x = 20; mLoadingText.width = (WINDOW_WIDTH - 40); mLoadingText.y = ((WINDOW_HEIGHT / 2) - 40); mLoadingText.height = 200; mLoadingText.wordWrap = true; addChild(mLoadingText); HighscoreTable.setBoardType(); MochiScores.showLeaderboard({score:_local1, clip:this, hideDoneButton:true, previewScores:true, onError:loadError}); } } }//package com.recolor
Section 28
//GameState (com.recolor.GameState) package com.recolor { import flash.display.*; import flash.media.*; public class GameState { public static const STATE_GAME:int = 0; public static const STATE_MAIN_MENU:int = 2; public static const MODE_TURN:int = 1; public static const MODE_ARCADE:int = 0; public static const STATE_GAME_OVER:int = 1; public static var mTime:uint; public static var mState:int; public static var mScore:int; public static var root:Sprite; public static var mMusicChannel:SoundChannel; public static var mTurns:int; public static var mMode:int; public static var mColors:int; public static var mCurDelay:int; public static function initGame():void{ mState = STATE_GAME; mScore = 0; mTurns = 0; mTime = 0; mCurDelay = Settings.DELAY_INITIAL; } } }//package com.recolor
Section 29
//HighscoreTable (com.recolor.HighscoreTable) package com.recolor { import flash.events.*; import mochi.*; import flash.text.*; import com.flashrelax.utils.*; import flash.ui.*; public class HighscoreTable extends Window { private var mLoadingText:QuickText; private var mButton:Array; private static const MODE_NORMAL:int = 1; private static const MODE_HARD:int = 2; private static const BUTTON_Y:int = 380; private static const WINDOW_HEIGHT:int = 420; private static const WINDOW_WIDTH:int = 500; private static const BUTTON_TEXT:Array = ["Back"]; private static const MODE_EASY:int = 0; private static const BUTTON_COUNT:int = 1; private static const MODE_ARCADE:int = 3; private static const TYPE_REGULAR:int = 0; private static const BOARD_ID:Array = [["b3291a32c12c328f", "2a89fdcaae340c61"], ["914bd9b42d482250", "1bc5f46a85bad81d"], ["d78707095de1f252", "f4c8f356fb4578d7"], ["d77f8c5ce1e9ad33", "8a84d56592ccc979"]]; private static const TYPE_ELITE:int = 1; public function HighscoreTable(){ super("High Scores", WINDOW_WIDTH, WINDOW_HEIGHT); } public function onKey(_arg1:KeyboardEvent):void{ if (_arg1.charCode == Keyboard.ESCAPE){ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; removeListeners(); parent.addChild(new HighscoreTypeMenu()); MochiScores.closeLeaderboard(); parent.removeChild(this); }; } public function loadError(_arg1:Object):void{ if (mLoadingText != null){ mLoadingText.setText("Loading error!\nCheck your internet connection!"); }; } override public function draw():void{ super.draw(); mButton = new Array(BUTTON_COUNT); var _local1:int; while (_local1 < BUTTON_COUNT) { mButton[_local1] = new Button(BUTTON_TEXT[_local1]); mButton[_local1].y = (BUTTON_Y + (_local1 * 28)); mButton[_local1].x = ((WINDOW_WIDTH - mButton[_local1].width) / 2); mButton[_local1].addEventListener(MouseEvent.CLICK, onClick); addChild(mButton[_local1]); _local1++; }; mLoadingText = new QuickText(36, TextFormatAlign.CENTER, 0xFFFF00); mLoadingText.setText("Loading scoreboard.\nPlease wait..."); mLoadingText.x = 20; mLoadingText.width = (WINDOW_WIDTH - 40); mLoadingText.y = ((WINDOW_HEIGHT / 2) - 40); mLoadingText.height = 200; mLoadingText.wordWrap = true; addChild(mLoadingText); GameState.root.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); MochiScores.showLeaderboard({clip:this, hideDoneButton:true, onError:loadError}); } public function onClick(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; var _local2:int; var _local3:int; while (_local3 < mButton.length) { if (_arg1.target == mButton[_local3]){ _local2 = _local3; }; _local3++; }; removeListeners(); switch (_local2){ case 0: if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; parent.addChild(new HighscoreTypeMenu()); break; }; MochiScores.closeLeaderboard(); parent.removeChild(this); } public function removeListeners():void{ var _local1:int; while (_local1 < mButton.length) { mButton[_local1].removeEventListener(MouseEvent.CLICK, onClick); _local1++; }; GameState.root.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKey); } public static function setBoardType(_arg1:int=-1, _arg2:int=-1):void{ if (_arg1 == -1){ if (GameState.mMode == GameState.MODE_ARCADE){ _arg1 = MODE_ARCADE; } else { if (GameState.mColors == 6){ _arg1 = MODE_EASY; } else { if (GameState.mColors == 8){ _arg1 = MODE_NORMAL; } else { if (GameState.mColors == 10){ _arg1 = MODE_HARD; }; }; }; }; }; if (_arg2 == -1){ _arg2 = TYPE_REGULAR; if (GameState.mScore >= Settings.SCORE_LIMIT){ _arg2 = TYPE_ELITE; }; }; MochiScores.setBoardID(BOARD_ID[_arg1][_arg2]); } } }//package com.recolor
Section 30
//HighscoreTypeMenu (com.recolor.HighscoreTypeMenu) package com.recolor { import flash.events.*; import flash.ui.*; public class HighscoreTypeMenu extends Window { private var mButton:Array; private static const BUTTON_COUNT:int = 9; private static const WINDOW_HEIGHT:int = 320; private static const WINDOW_WIDTH:int = 400; public static const BUTTON_TEXT:Array = ["Regular Easy", "Regular Normal", "Regular Hard", "Regular Arcade", "Elite Easy", "Elite Normal", "Elite Hard", "Elite Arcade", "Back"]; public function HighscoreTypeMenu(){ super("View High Score Mode", WINDOW_WIDTH, WINDOW_HEIGHT); mButton = new Array(BUTTON_COUNT); var _local1:int; while (_local1 < BUTTON_COUNT) { mButton[_local1] = new Button(BUTTON_TEXT[_local1]); mButton[_local1].y = (45 + (_local1 * 28)); mButton[_local1].x = ((WINDOW_WIDTH - mButton[_local1].width) / 2); mButton[_local1].addEventListener(MouseEvent.CLICK, onClick); addChild(mButton[_local1]); _local1++; }; mButton[8].y = (mButton[8].y + 10); GameState.root.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function onKey(_arg1:KeyboardEvent):void{ if (_arg1.charCode == Keyboard.ESCAPE){ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; removeListeners(); parent.addChild(new MainMenu()); parent.removeChild(this); }; } public function onClick(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; removeListeners(); var _local2:int; var _local3:int; while (_local3 < mButton.length) { if (_arg1.target == mButton[_local3]){ _local2 = _local3; }; _local3++; }; if (_local2 == 8){ parent.addChild(new MainMenu()); parent.removeChild(this); return; }; HighscoreTable.setBoardType((_local2 % 4), Math.floor((_local2 / 4))); parent.addChild(new HighscoreTable()); parent.removeChild(this); } public function removeListeners():void{ var _local1:int; while (_local1 < mButton.length) { mButton[_local1].removeEventListener(MouseEvent.CLICK, onClick); _local1++; }; GameState.root.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKey); } } }//package com.recolor
Section 31
//HUD (com.recolor.HUD) package com.recolor { import flash.display.*; import flash.events.*; import flash.text.*; import com.flashrelax.utils.*; import flash.net.*; public class HUD extends Sprite { private var mScoreText:QuickText; private var mScore2Text:QuickText; private var mModeText:QuickText; private static const BALLHINT_Y:uint = 300; private static const KEY_HELP_COL:uint = 0xEFAF00; private static const SCORE_Y:uint = 50; private static const BALLHINT_DY:uint = 35; private static const SCORE_HELP_COL:uint = 0xEFAF00; private static const SCORE_DY:uint = 20; private static const BUTTONS_DY:int = 28; private static const BUTTONS_X:int = 325; private static const BUTTONS_Y:int = 300; public function HUD(){ var _local1:QuickText; var _local2:int; var _local5:QualityControl; var _local8:Bitmap; super(); x = 0; y = 0; mModeText = new QuickText(20, TextFormatAlign.CENTER, 0xEF2F00); mModeText.x = 0; mModeText.y = SCORE_Y; mModeText.width = (6 * Settings.BOARD_SECTION_WIDTH); addChild(mModeText); mScoreText = new QuickText(20, TextFormatAlign.CENTER, 0xEF2F00); mScoreText.x = 0; mScoreText.y = (SCORE_Y + SCORE_DY); mScoreText.width = (6 * Settings.BOARD_SECTION_WIDTH); addChild(mScoreText); mScore2Text = new QuickText(20, TextFormatAlign.CENTER, 0xEF2F00); mScore2Text.x = 0; mScore2Text.y = (SCORE_Y + (SCORE_DY * 2)); mScore2Text.width = (6 * Settings.BOARD_SECTION_WIDTH); addChild(mScore2Text); _local2 = 0; while (_local2 < 6) { _local8 = new Bitmap(DataCollection.mSmallBalls[0]); _local8.x = (Math.floor((_local2 / 3)) * 95); _local8.y = (BALLHINT_Y + ((_local2 % 3) * BALLHINT_DY)); addChild(_local8); _local1 = new QuickText(14, TextFormatAlign.LEFT, SCORE_HELP_COL); _local1.x = (_local8.x + 28); _local1.y = (_local8.y + 4); _local1.width = 70; _local1.height = 32; _local1.setText(((("x " + (_local2 + 1)) + " = ") + Settings.SCORE_REMOVE[_local2])); addChild(_local1); _local2++; }; var _local3:MovieClip = (new DataCollection.mInGameLogoClass() as MovieClip); _local3.x = 320; _local3.y = 12; addChild(_local3); var _local4:VisualButton = new VisualButton("P"); _local4.x = BUTTONS_X; _local4.y = BUTTONS_Y; addChild(_local4); _local1 = new QuickText(18, TextFormatAlign.LEFT, KEY_HELP_COL); _local1.x = (BUTTONS_X + 30); _local1.y = BUTTONS_Y; _local1.setText(Strings.getText(Strings.PauseMenu)); addChild(_local1); _local4 = new VisualButton("I"); _local4.x = BUTTONS_X; _local4.y = (BUTTONS_Y + BUTTONS_DY); addChild(_local4); _local1 = new QuickText(18, TextFormatAlign.LEFT, KEY_HELP_COL); _local1.width = 150; _local1.x = (BUTTONS_X + 30); _local1.y = (BUTTONS_Y + BUTTONS_DY); _local1.setText(Strings.getText(Strings.Instructions)); addChild(_local1); _local4 = new VisualButton("Q"); _local4.x = BUTTONS_X; _local4.y = (BUTTONS_Y + (BUTTONS_DY * 2)); addChild(_local4); _local1 = new QuickText(18, TextFormatAlign.LEFT, KEY_HELP_COL); _local1.x = (BUTTONS_X + 30); _local1.y = (BUTTONS_Y + (BUTTONS_DY * 2)); _local1.setText(Strings.getText(Strings.Quality)); addChild(_local1); _local5 = new QualityControl(KEY_HELP_COL); _local5.x = (BUTTONS_X + 95); _local5.y = ((BUTTONS_Y + (BUTTONS_DY * 2)) + 5); addChild(_local5); _local4 = new VisualButton("S"); _local4.x = BUTTONS_X; _local4.y = (BUTTONS_Y + (BUTTONS_DY * 3)); addChild(_local4); _local1 = new QuickText(18, TextFormatAlign.LEFT, KEY_HELP_COL); _local1.x = (BUTTONS_X + 30); _local1.y = (BUTTONS_Y + (BUTTONS_DY * 3)); _local1.setText(Strings.getText(Strings.Sound)); addChild(_local1); var _local6:SoundControl = new SoundControl(KEY_HELP_COL); _local6.x = (BUTTONS_X + 95); _local6.y = ((BUTTONS_Y + (BUTTONS_DY * 3)) + 5); addChild(_local6); _local4 = new VisualButton("M"); _local4.x = BUTTONS_X; _local4.y = (BUTTONS_Y + (BUTTONS_DY * 4)); addChild(_local4); _local1 = new QuickText(18, TextFormatAlign.LEFT, KEY_HELP_COL); _local1.x = (BUTTONS_X + 30); _local1.y = (BUTTONS_Y + (BUTTONS_DY * 4)); _local1.setText(Strings.getText(Strings.Music)); addChild(_local1); _local6 = new SoundControl(KEY_HELP_COL, 1); _local6.x = (BUTTONS_X + 95); _local6.y = ((BUTTONS_Y + (BUTTONS_DY * 4)) + 5); addChild(_local6); var _local7:TextField = new TextField(); _local7.x = 0; _local7.width = (6 * Settings.BOARD_SECTION_WIDTH); _local7.htmlText = ((((("<P ALIGN=\"CENTER\"><FONT FACE=\"_RecolorFont\" " + "SIZE=\"13\" COLOR=\"#EFAF00\" LETTERSPACING=\"0\" KERNING=\"0\">") + Strings.getText(Strings.VisitUs)) + " <u><font color='#2F3FFF'>") + "<a href='event:my'>") + "www.flashrelax.com</a></font></u></FONT></P>"); _local7.y = (((5 + 4) + 4) * Settings.BOARD_SECTION_HEIGHT); _local7.wordWrap = true; _local7.mouseEnabled = true; _local7.selectable = false; _local7.embedFonts = true; _local7.addEventListener(TextEvent.LINK, onLink); addChild(_local7); draw(); } public function onLink(_arg1:TextEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; navigateToURL(new URLRequest("http://www.flashrelax.com")); NewgroundsAPI.logCustomEvent("SiteVisitUs"); } public function draw():void{ var _local1:int; var _local2:int; var _local3:String; if (GameState.mState == GameState.STATE_MAIN_MENU){ mModeText.setText(Strings.getText(Strings.GameMode)); } else { if (GameState.mMode == GameState.MODE_ARCADE){ mModeText.setText(GameModeMenu.BUTTON_TEXT[3]); } else { if (GameState.mColors == 6){ mModeText.setText(GameModeMenu.BUTTON_TEXT[0]); } else { if (GameState.mColors == 8){ mModeText.setText(GameModeMenu.BUTTON_TEXT[1]); } else { if (GameState.mColors == 10){ mModeText.setText(GameModeMenu.BUTTON_TEXT[2]); } else { mModeText.setText(Strings.getText(Strings.GameMode)); }; }; }; }; }; mScoreText.setText(((Strings.getText(Strings.Score) + " ") + GameState.mScore)); if (GameState.mMode == GameState.MODE_ARCADE){ _local1 = Math.floor((GameState.mTime / 25)); _local2 = (_local1 / 60); _local1 = (_local1 % 60); _local3 = (Strings.getText(Strings.Time) + " "); if (_local2 < 10){ _local3 = (_local3 + "0"); }; _local3 = (_local3 + (_local2 + ":")); if (_local1 < 10){ _local3 = (_local3 + "0"); }; _local3 = (_local3 + _local1); mScore2Text.setText(_local3); } else { mScore2Text.setText(((Strings.getText(Strings.Turns) + " ") + GameState.mTurns)); }; } } }//package com.recolor
Section 32
//InstructionsWindow (com.recolor.InstructionsWindow) package com.recolor { import flash.display.*; import flash.events.*; import flash.text.*; import com.flashrelax.utils.*; import flash.ui.*; public class InstructionsWindow extends Window { private var mPageCounter:QuickText; private var mText:QuickText; private var mCurPage:int; private var mButtonNext:Button; private var mButtonPrev:Button; private var mPage:Sprite; private var mButton1:Button; private static const TEXTAREA_HEIGHT:int = 355; private static const WINDOW_HEIGHT:int = 440; private static const WINDOW_WIDTH:int = 500; private static const PAGE_COUNT:int = 5; public function InstructionsWindow(){ super("Instructions", WINDOW_WIDTH, WINDOW_HEIGHT); mCurPage = 0; mPageCounter = new QuickText(12, TextFormatAlign.RIGHT, 0xFFFFFF); mPageCounter.x = 10; mPageCounter.y = 10; mPageCounter.width = (WINDOW_WIDTH - 20); mPageCounter.height = 20; addChild(mPageCounter); mPage = new Sprite(); addChild(mPage); mPage.graphics.lineStyle(1, 63, 0.95); mPage.graphics.moveTo(1, TEXTAREA_HEIGHT); mPage.graphics.lineTo((WINDOW_WIDTH - 1), TEXTAREA_HEIGHT); mPage.x = 0; mPage.y = 40; createPage(); mButton1 = new Button("Resume Game"); mButton1.y = ((mPage.y + TEXTAREA_HEIGHT) + 15); mButton1.x = ((WINDOW_WIDTH - mButton1.width) / 2); mButton1.addEventListener(MouseEvent.CLICK, onResume); addChild(mButton1); mButtonNext = new Button("Next Page >>>"); mButtonNext.y = (mPage.y + TEXTAREA_HEIGHT); mButtonNext.x = ((WINDOW_WIDTH - mButton1.width) - 10); mButtonNext.addEventListener(MouseEvent.CLICK, onNext); addChild(mButtonNext); mButtonPrev = new Button("<<< Prev Page"); mButtonPrev.y = (mPage.y + TEXTAREA_HEIGHT); mButtonPrev.x = 10; mButtonPrev.addEventListener(MouseEvent.CLICK, onPrev); GameState.root.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function onKey(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.ESCAPE){ onResume(null); }; if ((((((_arg1.keyCode == Keyboard.RIGHT)) || ((_arg1.keyCode == Keyboard.DOWN)))) || ((_arg1.keyCode == Keyboard.PAGE_DOWN)))){ onNext(null); }; if ((((((_arg1.keyCode == Keyboard.LEFT)) || ((_arg1.keyCode == Keyboard.UP)))) || ((_arg1.keyCode == Keyboard.PAGE_UP)))){ onPrev(null); }; } public function createField(_arg1:int, _arg2:Array):Sprite{ var _local3:Sprite; var _local4:Bitmap; var _local6:int; _local3 = new Sprite(); _local4 = new Bitmap(DataCollection.mBigBoardSection); _local4.x = 0; _local4.y = 0; _local3.addChild(_local4); var _local5:int; while (_local5 < 4) { _local6 = 0; while (_local6 < 6) { if (_local5 == 0){ _local4 = new Bitmap(DataCollection.mBoardSectionH); } else { _local4 = new Bitmap(DataCollection.mBoardSection); }; _local4.x = ((_local6 + 4) * Settings.BOARD_SECTION_WIDTH); _local4.y = (_local5 * Settings.BOARD_SECTION_HEIGHT); _local3.addChild(_local4); _local6++; }; _local5++; }; _local4 = new Bitmap(DataCollection.mBigBalls[_arg1]); _local4.x = Settings.BIG_BALL_OFFSET_DX; _local4.y = Settings.BIG_BALL_OFFSET_DY; _local3.addChild(_local4); _local6 = 0; while (_local6 < _arg2.length) { _local4 = new Bitmap(DataCollection.mSmallBalls[_arg2[_local6]]); _local4.x = ((((4 + 5) - _local6) * Settings.BOARD_SECTION_WIDTH) + Settings.BALL_OFFSET_DX); _local4.y = Settings.BALL_OFFSET_DY; _local3.addChild(_local4); _local6++; }; return (_local3); } public function createPage1():void{ var _local1:Sprite; _local1 = createField(0, [0, 0]); _local1.x = ((WINDOW_WIDTH - _local1.width) / 2); _local1.y = 70; mPage.addChild(_local1); mPage.addChild(createArrow((WINDOW_WIDTH / 2), 201)); var _local2:QuickText = new QuickText(16, TextFormatAlign.LEFT, 0xFFFF00); _local2.setText("+25 points"); _local2.x = ((WINDOW_WIDTH / 2) + 10); _local2.y = 198; mPage.addChild(_local2); _local1 = createField(0, []); _local1.x = ((WINDOW_WIDTH - _local1.width) / 2); _local1.y = 222; mPage.addChild(_local1); } public function createPage2():void{ var _local1:Sprite = createField(0, [2]); _local1.x = ((WINDOW_WIDTH - _local1.width) / 2); _local1.y = 70; mPage.addChild(_local1); mPage.addChild(createArrow((WINDOW_WIDTH / 2), 201)); _local1 = createField(2, [0]); _local1.x = ((WINDOW_WIDTH - _local1.width) / 2); _local1.y = 222; mPage.addChild(_local1); } public function createPage3():void{ var _local1:Sprite = createField(0, [3, 2, 0, 0, 0]); _local1.x = ((WINDOW_WIDTH - _local1.width) / 2); _local1.y = 70; var _local2:Sprite = new Sprite(); _local2.x = (4 * Settings.BOARD_SECTION_WIDTH); _local2.y = Settings.BOARD_SECTION_HEIGHT; _local1.addChild(_local2); _local2.graphics.lineStyle(2, 0xEE6E00, 1); var _local3:int; while (_local3 < 4) { _local2.graphics.moveTo((((0 + _local3) * Settings.BOARD_SECTION_WIDTH) + ((Settings.BOARD_SECTION_WIDTH * 3) / 4)), (0.5 * Settings.BOARD_SECTION_HEIGHT)); _local2.graphics.lineTo((((1 + _local3) * Settings.BOARD_SECTION_WIDTH) + (Settings.BOARD_SECTION_WIDTH / 2)), (0.5 * Settings.BOARD_SECTION_HEIGHT)); _local3++; }; _local2.graphics.moveTo((Settings.BOARD_SECTION_WIDTH / 2), (Settings.BOARD_SECTION_HEIGHT / 2)); _local2.graphics.lineTo(4, (Settings.BOARD_SECTION_HEIGHT / 2)); _local2.graphics.lineTo(12, ((Settings.BOARD_SECTION_HEIGHT / 2) - 3)); _local2.graphics.moveTo(4, (Settings.BOARD_SECTION_HEIGHT / 2)); _local2.graphics.lineTo(12, ((Settings.BOARD_SECTION_HEIGHT / 2) + 3)); _local2.graphics.moveTo((4.5 * Settings.BOARD_SECTION_WIDTH), (Settings.BOARD_SECTION_HEIGHT / 2)); _local2.graphics.lineTo((4.5 * Settings.BOARD_SECTION_WIDTH), 2); _local2.graphics.lineTo(((4.5 * Settings.BOARD_SECTION_WIDTH) + 3), 10); _local2.graphics.moveTo((4.5 * Settings.BOARD_SECTION_WIDTH), 2); _local2.graphics.lineTo(((4.5 * Settings.BOARD_SECTION_WIDTH) - 3), 10); mPage.addChild(_local1); mPage.addChild(createArrow((WINDOW_WIDTH / 2), 201)); var _local4:QuickText = new QuickText(16, TextFormatAlign.LEFT, 0xFFFF00); _local4.setText("+50 points"); _local4.x = ((WINDOW_WIDTH / 2) + 10); _local4.y = 198; mPage.addChild(_local4); _local1 = createField(2, [3, 0]); _local1.x = ((WINDOW_WIDTH - _local1.width) / 2); _local1.y = 222; mPage.addChild(_local1); } public function createPage4():void{ var _local2:int; var _local4:int; var _local1:Sprite = createField(0, [2, 2]); _local2 = 2; while (_local2 < 3) { _local4 = 0; while (_local4 < 3) { bmp = new Bitmap(DataCollection.mSmallBalls[_local4]); bmp.x = ((((4 + 5) - _local4) * Settings.BOARD_SECTION_WIDTH) + Settings.BALL_OFFSET_DX); bmp.y = ((_local2 * Settings.BOARD_SECTION_HEIGHT) + Settings.BALL_OFFSET_DY); _local1.addChild(bmp); _local4++; }; _local2++; }; var _local3:Sprite = new Sprite(); _local3.x = (9 * Settings.BOARD_SECTION_WIDTH); _local3.y = (2 * Settings.BOARD_SECTION_HEIGHT); _local3.graphics.lineStyle(2, 0xBFFF00, 0.8); _local3.graphics.drawRect(1, 1, (Settings.BOARD_SECTION_WIDTH - 2), (Settings.BOARD_SECTION_HEIGHT - 2)); _local1.addChild(_local3); _local1.x = ((WINDOW_WIDTH - _local1.width) / 2); _local1.y = 70; mPage.addChild(_local1); mPage.addChild(createArrow((WINDOW_WIDTH / 2), 201)); _local1 = createField(2, [2, 0]); _local1.x = ((WINDOW_WIDTH - _local1.width) / 2); _local1.y = 222; _local2 = 2; while (_local2 < 3) { _local4 = 0; while (_local4 < 4) { if ((((_local4 == 3)) && (!((_local2 == 2))))){ } else { bmp = new Bitmap(DataCollection.mSmallBalls[_local4]); bmp.x = ((((4 + 5) - _local4) * Settings.BOARD_SECTION_WIDTH) + Settings.BALL_OFFSET_DX); if (_local2 == 2){ bmp.bitmapData = DataCollection.mSmallBalls[((_local4 + 3) % 4)]; }; bmp.y = ((_local2 * Settings.BOARD_SECTION_HEIGHT) + Settings.BALL_OFFSET_DY); _local1.addChild(bmp); }; _local4++; }; _local2++; }; mPage.addChild(_local1); } public function onResume(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; GameState.mState = GameState.STATE_GAME; parent.removeChild(this); mButton1.removeEventListener(MouseEvent.CLICK, onResume); mButtonNext.removeEventListener(MouseEvent.CLICK, onNext); mButtonPrev.removeEventListener(MouseEvent.CLICK, onPrev); GameState.root.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function createArrow(_arg1:int, _arg2:int):Sprite{ var _local3:Sprite = new Sprite(); _local3.graphics.lineStyle(4, 0xFFFF00, 1); _local3.graphics.moveTo(0, 0); _local3.graphics.lineTo(0, 15); _local3.graphics.lineStyle(2, 0xFFFF00, 1); _local3.graphics.moveTo(0, 17); _local3.graphics.lineTo(-5, 5); _local3.graphics.moveTo(0, 17); _local3.graphics.lineTo(5, 5); _local3.x = _arg1; _local3.y = _arg2; return (_local3); } public function onNext(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; mCurPage++; createPage(); if (mCurPage >= (PAGE_COUNT - 1)){ removeChild(mButtonNext); }; if (mCurPage == 1){ addChild(mButtonPrev); }; } public function onPrev(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; mCurPage--; createPage(); if (mCurPage <= 0){ removeChild(mButtonPrev); }; if (mCurPage == (PAGE_COUNT - 2)){ addChild(mButtonNext); }; } public function createPage():void{ clearPage(); mPageCounter.setText(((("Page " + (mCurPage + 1)) + " / ") + PAGE_COUNT)); mText = new QuickText(18, TextFormatAlign.JUSTIFY, 0xFFFF00); mPage.addChild(mText); mText.wordWrap = true; mText.setText(Strings.getText((Strings.InstructionsPage1 + mCurPage))); mText.x = 4; mText.y = 0; mText.width = (WINDOW_WIDTH - 8); mText.height = mPage.height; switch (mCurPage){ case 0: createPage1(); break; case 1: createPage2(); break; case 2: createPage3(); break; case 3: createPage4(); break; }; } public function clearPage():void{ while (mPage.numChildren > 0) { mPage.removeChildAt((mPage.numChildren - 1)); }; } } }//package com.recolor
Section 33
//MainMenu (com.recolor.MainMenu) package com.recolor { import flash.events.*; import flash.text.*; import com.flashrelax.utils.*; import flash.net.*; public class MainMenu extends Window { private var mButtonHiscore:Button; private var mButtonStart:Button; private var mButtonMoreGames:Button; private static const WINDOW_HEIGHT:int = 205; private static const WINDOW_WIDTH:int = 400; public function MainMenu(){ var _local1:QuickText; super(Strings.getText(Strings.MainMenu), WINDOW_WIDTH, WINDOW_HEIGHT); y = 160; mButtonStart = new Button(Strings.getText(Strings.StartGame), 40); mButtonStart.y = 45; mButtonStart.x = ((WINDOW_WIDTH - mButtonStart.width) / 2); mButtonStart.addEventListener(MouseEvent.CLICK, onStartGame); addChild(mButtonStart); mButtonHiscore = new Button(Strings.getText(Strings.HighScores)); mButtonHiscore.y = 100; mButtonHiscore.x = ((WINDOW_WIDTH - mButtonHiscore.width) / 2); mButtonHiscore.addEventListener(MouseEvent.CLICK, onHiscore); addChild(mButtonHiscore); mButtonMoreGames = new Button(Strings.getText(Strings.MoreGames)); mButtonMoreGames.y = 130; mButtonMoreGames.x = ((WINDOW_WIDTH - mButtonMoreGames.width) / 2); mButtonMoreGames.addEventListener(MouseEvent.CLICK, onMoreGames); addChild(mButtonMoreGames); _local1 = new QuickText(12, TextFormatAlign.CENTER, 0xAFAF00); _local1.setText(Strings.getText(Strings.MusicBy)); _local1.y = 170; _local1.width = WINDOW_WIDTH; _local1.height = 20; addChild(_local1); _local1 = new QuickText(12, TextFormatAlign.CENTER, 0xAFAF00); _local1.setText(Strings.getText(Strings.FlashRelaxCopyright)); _local1.y = 185; _local1.width = WINDOW_WIDTH; _local1.height = 20; addChild(_local1); } public function onStartGame(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; removeListeners(); parent.addChild(new GameModeMenu()); parent.removeChild(this); } public function removeListeners():void{ mButtonStart.removeEventListener(MouseEvent.CLICK, onStartGame); mButtonHiscore.removeEventListener(MouseEvent.CLICK, onHiscore); mButtonMoreGames.removeEventListener(MouseEvent.CLICK, onMoreGames); } public function onHiscore(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; removeListeners(); parent.addChild(new HighscoreTypeMenu()); parent.removeChild(this); } public function onMoreGames(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; navigateToURL(new URLRequest("http://www.flashrelax.com")); NewgroundsAPI.logCustomEvent("SiteMoreGames"); } } }//package com.recolor
Section 34
//PauseMenu (com.recolor.PauseMenu) package com.recolor { import flash.events.*; import flash.ui.*; public class PauseMenu extends Window { private var mButton:Array; private static const BUTTON_COUNT:int = 3; private static const WINDOW_HEIGHT:int = 150; private static const WINDOW_WIDTH:int = 400; private static const BUTTON_TEXT:Array = ["Resume", "Restart Game", "Quit to main menu"]; public function PauseMenu(){ super("Pause", WINDOW_WIDTH, WINDOW_HEIGHT); y = 160; } public function onKey(_arg1:KeyboardEvent):void{ if (_arg1.charCode == Keyboard.ESCAPE){ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; GameState.mState = GameState.STATE_GAME; removeListeners(); parent.removeChild(this); }; } override public function draw():void{ super.draw(); mButton = new Array(BUTTON_COUNT); var _local1:int; while (_local1 < BUTTON_COUNT) { mButton[_local1] = new Button(BUTTON_TEXT[_local1]); mButton[_local1].y = (45 + (_local1 * 28)); mButton[_local1].x = ((WINDOW_WIDTH - mButton[_local1].width) / 2); mButton[_local1].addEventListener(MouseEvent.CLICK, onClick); addChild(mButton[_local1]); _local1++; }; GameState.root.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function onClick(_arg1:MouseEvent):void{ if (UserSettings.mSound){ DataCollection.mSfxMenu.play(); }; var _local2:int; var _local3:int; while (_local3 < mButton.length) { if (_arg1.target == mButton[_local3]){ _local2 = _local3; }; _local3++; }; removeListeners(); switch (_local2){ case 0: GameState.mState = GameState.STATE_GAME; break; case 1: (parent as Field).startGame(); break; case 2: GameState.mState = GameState.STATE_MAIN_MENU; parent.addChild(new MainMenu()); break; }; parent.removeChild(this); } public function removeListeners():void{ var _local1:int; while (_local1 < mButton.length) { mButton[_local1].removeEventListener(MouseEvent.CLICK, onClick); _local1++; }; GameState.root.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKey); } } }//package com.recolor
Section 35
//PreviewBall (com.recolor.PreviewBall) package com.recolor { import flash.display.*; public class PreviewBall extends Sprite { private var mId:int; private var mColor:int; private var mTime:int; public function PreviewBall(_arg1:int){ mTime = Settings.DELAY_PREVIEW; mColor = Math.floor((Math.random() * _arg1)); setCoordsFromId(Math.floor((Math.random() * 16))); draw(); } public function get color():int{ return (mColor); } public function draw():void{ graphics.lineStyle(2, 0xBFFF00, 0.8); graphics.drawRect(1, 1, (Settings.BOARD_SECTION_WIDTH - 2), (Settings.BOARD_SECTION_HEIGHT - 2)); } public function setCoordsFromId(_arg1:int):void{ mId = _arg1; x = 0; y = 0; if (_arg1 < 8){ x = (6 + (_arg1 % 4)); if (_arg1 < 4){ y = 0; } else { y = (((5 + 4) + 5) - 1); }; } else { y = (5 + (_arg1 % 4)); if (_arg1 < 12){ x = 0; } else { x = (((6 + 4) + 6) - 1); }; }; x = (x * Settings.BOARD_SECTION_WIDTH); y = (y * Settings.BOARD_SECTION_HEIGHT); } public function get time():int{ return (mColor); } public function advanceTime():Boolean{ if ((((mTime == 0)) || ((GameState.mMode == GameState.MODE_TURN)))){ return (true); }; mTime--; return (false); } public function get id():int{ return (mId); } } }//package com.recolor
Section 36
//QualityControl (com.recolor.QualityControl) package com.recolor { import flash.display.*; import flash.events.*; import flash.text.*; import com.flashrelax.utils.*; public class QualityControl extends Sprite { private var mHighlight:Sprite; private var mTextMed:QuickText; private var mCurQuality:int; private var mTextLow:QuickText; private var mTextHi:QuickText; private var mColor:uint; public function QualityControl(_arg1:uint){ mColor = _arg1; mTextLow = new QuickText(12, TextFormatAlign.LEFT, mColor); mTextLow.setText("Low"); mTextLow.x = 0; mTextLow.y = 0; addChild(mTextLow); mTextMed = new QuickText(12, TextFormatAlign.LEFT, mColor); mTextMed.setText("Med"); mTextMed.x = 30; mTextMed.y = 0; addChild(mTextMed); mTextHi = new QuickText(12, TextFormatAlign.LEFT, mColor); mTextHi.setText("High"); mTextHi.x = 60; mTextHi.y = 0; addChild(mTextHi); mHighlight = new Sprite(); mHighlight.graphics.lineStyle(1, mColor); mHighlight.graphics.drawRect(0, 0, 30, 17); addChild(mHighlight); getCurrentQuality(); GameState.root.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function onKey(_arg1:KeyboardEvent):void{ if (String.fromCharCode(_arg1.charCode).toLowerCase() == "q"){ mCurQuality = ((mCurQuality + 1) % 3); setQuality(); }; } public function updateHighlight():void{ mHighlight.x = (mCurQuality * 30); } public function setQuality():void{ UserSettings.mQuality = mCurQuality; UserSettings.save(); setUserQuality(); updateHighlight(); } public function getCurrentQuality():void{ mCurQuality = 2; switch (GameState.root.stage.quality.toLowerCase()){ case StageQuality.LOW: mCurQuality = 0; break; case StageQuality.MEDIUM: mCurQuality = 1; break; case StageQuality.HIGH: mCurQuality = 2; break; }; updateHighlight(); } public static function setUserQuality():void{ switch (UserSettings.mQuality){ case 0: GameState.root.stage.quality = StageQuality.LOW; break; case 1: GameState.root.stage.quality = StageQuality.MEDIUM; break; case 2: GameState.root.stage.quality = StageQuality.HIGH; break; }; } } }//package com.recolor
Section 37
//Settings (com.recolor.Settings) package com.recolor { public class Settings { public static const BALL_OFFSET_DX:int = 1; public static const BALL_OFFSET_DY:int = 1; public static const BALL_MOVE_AWAY_SPEED:int = 40; public static const BIG_BALL_HEIGHT:int = 120; public static const BALL_COLOR_COUNT:int = 10; public static const BALL_MOVE_SPEED:int = 5; public static const DELAY_MINIMUM:int = 5; public static const DELAY_CHANGE:int = 750; public static const BIG_BOARD_SECTION_WIDTH:int = 128; public static const SCORE_LIMIT:int = 10000; public static const BIG_BALL_OFFSET_DY:int = 4; public static const BALL_INIT_CNT:int = 5; public static const DELAY_PREVIEW:int = 25; public static const DELAY_INITIAL:int = 25; public static const BIG_BALL_WIDTH:int = 120; public static const BALL_HEIGHT:int = 30; public static const BALL_WIDTH:int = 30; public static const SCORE_REMOVE:Array = [10, 25, 50, 100, 250, 500]; public static const BOARD_SECTION_WIDTH:int = 32; public static const BIG_BOARD_SECTION_HEIGHT:int = 128; public static const BOARD_SECTION_HEIGHT:int = 32; public static const GAME_FONT:String = "_RecolorFont"; public static const BIG_BALL_OFFSET_DX:int = 4; } }//package com.recolor
Section 38
//SoundControl (com.recolor.SoundControl) package com.recolor { import flash.display.*; import flash.events.*; import flash.text.*; import com.flashrelax.utils.*; import flash.media.*; public class SoundControl extends Sprite { private var mHighlight:Sprite; private var mTextOff:QuickText; private var mColor:int; private var mTextOn:QuickText; private var mType:int; public function SoundControl(_arg1:uint, _arg2:int=0){ mType = _arg2; mColor = _arg1; mTextOff = new QuickText(12, TextFormatAlign.LEFT, mColor); mTextOff.setText("Off"); mTextOff.x = 0; mTextOff.y = 0; addChild(mTextOff); mTextOn = new QuickText(12, TextFormatAlign.LEFT, mColor); mTextOn.setText("On"); mTextOn.x = 30; mTextOn.y = 0; addChild(mTextOn); mHighlight = new Sprite(); mHighlight.graphics.lineStyle(1, mColor); mHighlight.graphics.drawRect(0, 0, 30, 17); addChild(mHighlight); updateHighlight(); GameState.root.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function onKey(_arg1:KeyboardEvent):void{ var _local2:String = String.fromCharCode(_arg1.charCode).toLowerCase(); if ((((_local2 == "s")) && ((mType == 0)))){ UserSettings.mSound = !(UserSettings.mSound); UserSettings.save(); updateHighlight(); }; if ((((_local2 == "m")) && ((mType == 1)))){ UserSettings.mMusic = !(UserSettings.mMusic); UserSettings.save(); if (UserSettings.mMusic){ GameState.mMusicChannel = DataCollection.mMusic.play(0, 10000); GameState.mMusicChannel.soundTransform = new SoundTransform(0.4); } else { GameState.mMusicChannel.stop(); }; updateHighlight(); }; } public function updateHighlight():void{ if (((((UserSettings.mSound) && ((mType == 0)))) || (((UserSettings.mMusic) && ((mType == 1)))))){ mHighlight.x = 30; } else { mHighlight.x = 0; }; } } }//package com.recolor
Section 39
//StarField (com.recolor.StarField) package com.recolor { import flash.display.*; import flash.events.*; public class StarField extends Sprite { private var mDx:Array; private var mDy:Array; private var mHeight:int; private var mWidth:int; private var mCnt:int; private var mStar:Array; private static const MAX_STAR:int = 1000; public function StarField(_arg1:int, _arg2:int){ mWidth = _arg1; mHeight = _arg2; addChild(new Bitmap(new BitmapData(_arg1, _arg2, false, 0))); init(); addEventListener(Event.ENTER_FRAME, onFrame); } public function onFrame(_arg1:Event):void{ var _local2:int; if (stage.quality.toLowerCase() != StageQuality.HIGH){ if (mCnt > 0){ _local2 = 0; while (_local2 < mCnt) { removeChild(mStar[_local2]); mStar[_local2] = null; _local2++; }; mCnt = 0; }; return; }; if ((((Math.random() < 0.5)) && ((mCnt < MAX_STAR)))){ mStar[mCnt] = new Bitmap(new BitmapData(2, 2, false, 0xAFAFAF)); mStar[mCnt].x = (((Math.random() * 10) + (width / 2)) - 5); mStar[mCnt].y = (((Math.random() * 10) + (height / 2)) - 5); addChild(mStar[mCnt]); while (true) { mDx[mCnt] = ((Math.random() * 8) - 4); mDy[mCnt] = ((Math.random() * 8) - 4); if (((mDx[mCnt] * mDx[mCnt]) + (mDy[mCnt] * mDy[mCnt])) > 4){ break; }; }; mCnt++; }; _local2 = 0; while (_local2 < mCnt) { mStar[_local2].x = (mStar[_local2].x + mDx[_local2]); mStar[_local2].y = (mStar[_local2].y + mDy[_local2]); if ((((((((mStar[_local2].x < 0)) || ((mStar[_local2].x > mWidth)))) || ((mStar[_local2].y < 0)))) || ((mStar[_local2].y > mHeight)))){ removeChild(mStar[_local2]); mCnt--; mStar[_local2] = mStar[mCnt]; mDx[_local2] = mDx[mCnt]; mDy[_local2] = mDy[mCnt]; mStar[mCnt] = null; _local2--; }; _local2++; }; } public function init():void{ mCnt = 0; mDx = new Array(1000); mDy = new Array(1000); mStar = new Array(1000); } } }//package com.recolor
Section 40
//Strings (com.recolor.Strings) package com.recolor { public class Strings { public static const InstructionsPage4:int = 19; public static const InstructionsPage5:int = 20; public static const HighScores:int = 2; public static const Instructions:int = 7; public static const FlashRelaxCopyright:int = 5; public static const MoreGames:int = 3; public static const InstructionsPage2:int = 17; public static const StartGame:int = 1; public static const PauseMenu:int = 6; public static const GameMode:int = 12; public static const Music:int = 10; public static const Quality:int = 8; public static const MainMenu:int = 0; public static const VisitUs:int = 11; public static const Time:int = 14; public static const Sound:int = 9; public static const Score:int = 13; private static const Texts:Array = [["Main Menu"], ["Start Game"], ["High Scores"], ["More Games"], ["Music by Eugene Dovgyj"], ["(c) 2008 Flash Relax"], ["Pause menu"], ["Instructions"], ["Quality:"], ["Sound:"], ["Music:"], ["Visit us at"], ["Game Mode"], ["Score:"], ["Time:"], ["Turns:"], [(("\tClick on any row or column with the top ball(s) of " + "the same color as the central big ball to remove them ") + "and earn points.")], [(("\tIf the top ball of the row (column) is of a different " + "color from the big ball, then clicking on this row (column) ") + "will swap colors of this ball and the big ball.")], [(("\tIf there are mixed colors, then all the top balls of the " + "same color as the big ball will be removed and the next ball ") + "will swap colors with the big one.")], [(("\tEach turn (or each second in arcade mode) a new ball appears. " + "The position where a new ball will appear is indicated by the ") + "highlighted square.")], [((((((((((("\n" + "\n") + "\n") + "\tYou win if you score 10.000 points or more. You lose if ") + "any row or column overflows.\n") + "\n") + "\tThere are two high score tables for each mode:\n") + "* regular table for usual players competing on ") + "reaching the highest score;\n") + "* elite table for those players who have reached ") + "10.000 points, they compete for the least number of ") + "turns it took to reach this score (or the best time in arcade mode).")]]; public static const Turns:int = 15; public static const MusicBy:int = 4; public static const InstructionsPage1:int = 16; public static const InstructionsPage3:int = 18; public static function getText(_arg1:int):String{ return (Texts[_arg1][0]); } } }//package com.recolor
Section 41
//UserSettings (com.recolor.UserSettings) package com.recolor { import flash.net.*; public class UserSettings { private static const DATA_NAME:String = "RecolorSettings"; private static const VERSION:int = 10; public static var mSound:Boolean; public static var mTutorialShown:Boolean; public static var mQuality:int; public static var mMusic:Boolean; public static function load():void{ var _local1:SharedObject = SharedObject.getLocal(DATA_NAME); if (_local1.data.version != VERSION){ _local1.clear(); setDefault(); save(); } else { mSound = _local1.data.sound; mMusic = _local1.data.music; mTutorialShown = _local1.data.tutorial; mQuality = _local1.data.quality; }; } public static function setDefault():void{ mQuality = 2; mSound = true; mMusic = true; mTutorialShown = false; } public static function save():void{ var _local1:SharedObject = SharedObject.getLocal(DATA_NAME); _local1.data.version = VERSION; _local1.data.sound = mSound; _local1.data.music = mMusic; _local1.data.tutorial = mTutorialShown; _local1.data.quality = mQuality; _local1.flush(); } load(); } }//package com.recolor
Section 42
//Window (com.recolor.Window) package com.recolor { import flash.display.*; import flash.text.*; public class Window extends Sprite { protected var mHeight:int; protected var mWidth:int; protected var mHeader:String; private static const HEADER_TEXT_COLOR:uint = 4294967295; private static const BG_ALPHA:Number = 0.95; private static const FG_COLOR:uint = 4278202266; private static const HEADER_DY:int = 40; private static const BG_COLOR:uint = 0; private static const HEADER_COLOR:uint = 4278202362; public function Window(_arg1:String, _arg2:int, _arg3:int){ mHeader = _arg1; mWidth = _arg2; mHeight = _arg3; draw(); } public function draw():void{ var _local1:TextField; x = ((0x0200 - mWidth) / 2); y = ((448 - mHeight) / 2); graphics.lineStyle(1, BG_COLOR, BG_ALPHA); graphics.beginFill(FG_COLOR, BG_ALPHA); graphics.drawRoundRect(0, 0, mWidth, mHeight, 15, 15); graphics.lineStyle(1, BG_COLOR, BG_ALPHA); graphics.beginFill(HEADER_COLOR, BG_ALPHA); graphics.drawRoundRect(0, 0, mWidth, HEADER_DY, 15, 15); _local1 = new TextField(); _local1.type = TextFieldType.DYNAMIC; _local1.selectable = false; _local1.textColor = HEADER_TEXT_COLOR; _local1.width = mWidth; var _local2:TextFormat = _local1.getTextFormat(); _local2.font = Settings.GAME_FONT; _local2.size = 30; _local2.align = TextFormatAlign.CENTER; _local1.defaultTextFormat = _local2; _local1.embedFonts = true; _local1.appendText(mHeader); _local1.y = 0; _local1.x = 0; addChild(_local1); } } }//package com.recolor
Section 43
//MochiAd (mochi.MochiAd) package mochi { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.system.*; import flash.net.*; public class MochiAd { public static function getVersion():String{ return ("2.3"); } public static function showTimedAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); _slot1.showInterLevelAd(_arg1); } public static function _allowDomains(_arg1:String):String{ var _local2:String = _arg1.split("/")[2].split(":")[0]; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function load(_arg1:Object):MovieClip{ var clip:Object; var mc:MovieClip; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var f:Function; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; var DEFAULTS:Object = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = _slot1._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = _slot1.getVersion(); clip = options.clip; if (!_slot1._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; var depth:Number = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, "_mochiad", depth); var wh:Array = _slot1._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; }; var lv:URLVariables = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; lv.lc = name; lv.st = getTimer(); loader = new Loader(); f = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); mc._mochiad_ctr_failed = true; }; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); _slot1.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest((server + ".swf")); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function sendHighScore(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{ var _local4:MovieClip = _slot1._loadCommunicator({clip:_arg1.clip, id:_arg1.id}); if (!_local4){ return (false); }; _local4.doSend(["sendHighScore", _arg1], _arg2, _arg3); return (true); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; var _local3:Object = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); }; return (_local3); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _cleanup(_arg1:Object):void{ var k:String; var lc:LocalConnection; var f:Function; var mc = _arg1; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ try { lc.client = null; lc.close(); } catch(e:Error) { }; }; setTimeout(f, 0); }; var idx:Number = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } public static function showInterLevelAd(_arg1:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var options = _arg1; var DEFAULTS:Object = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }}; options = _slot1._parseOptions(options, DEFAULTS); clip = options.clip; var ad_msec:Number = 11000; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; var fadeout_time:Number = options.fadeout_time; delete options.fadeout_time; if (!_slot1.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ _slot1._cleanup(mc); options.ad_finished(); }; var wh:Array = _slot1._getRes(options, clip); var w:Number = wh[0]; var h:Number = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { _slot1.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ _slot1.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; chk["onEnterFrame"] = function ():void{ var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; var _local1:Object = this.parent._mochiad_ctr; var _local2:Number = (getTimer() - this.started); var _local3:Boolean; if (!chk.showing){ _local4 = _local1.loaderInfo.bytesTotal; if ((((_local4 > 0)) || (("number" == "undefined")))){ chk.showing = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.parent._mochiad_ctr_failed){ options.ad_failed(); _local3 = true; }; if (_local2 > chk.ad_msec){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local6:Array; var _local3:Object = _arg2.getBounds(_arg2.root); var _local4:Number = 0; var _local5:Number = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.xMax - _local3.xMin); _local5 = (_local3.yMax - _local3.yMin); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _loadCommunicator(_arg1:Object):MovieClip{ var mc:MovieClip; var k:String; var lc:LocalConnection; var name:String; var req:URLRequest; var loader:Loader; var options = _arg1; var DEFAULTS:Object = {com_server:"http://x.mochiads.com/com/1/", method:"loadCommunicator", depth:10337, id:"_UNKNOWN_"}; options = _slot1._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = _slot1.getVersion(); var clip:Object = options.clip; var clipname:String = ("_mochiad_com_" + options.id); if (!_slot1._isNetworkAvailable()){ return (null); }; if (clip[clipname]){ return (clip[clipname]); }; var server:String = (options.com_server + options.id); _slot1._allowDomains(server); delete options.id; delete options.com_server; var depth:Number = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, clipname, depth); var lv:URLVariables = new URLVariables(); for (k in options) { lv[k] = options[k]; }; lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.name = name; mc.lc = lc; lv.lc = name; mc._id = 0; mc._queue = []; mc.rpcResult = function (_arg1:Object):void{ _arg1 = parseInt(_arg1.toString()); var _local3:Array = mc._callbacks[_arg1]; if (typeof(_local3) == "undefined"){ return; }; delete mc._callbacks[_arg1]; var _local4:Array = []; var _local5:Number = 2; while (_local5 < _local3.length) { _local4.push(_local3[_local5]); _local5++; }; _local5 = 1; while (_local5 < arguments.length) { _local4.push(arguments[_local5]); _local5++; }; var _local6:Object = _local3[1]; var _local7:Object = _local3[0]; if (((_local7) && ((typeof(_local6) == "string")))){ _local6 = _local7[_local6]; }; if (typeof(_local6) == "function"){ _local6.apply(_local7, _local4); }; }; mc._didConnect = function (_arg1:String):void{ var _local5:Array; mc._endpoint = _arg1; var _local2:Array = mc._queue; delete mc._queue; var _local3:Function = mc.doSend; var _local4:Number = 0; while (_local4 < _local2.length) { _local5 = _local2[_local4]; _local3.apply(this, _local5); _local4++; }; }; mc.doSend = function (_arg1:Array, _arg2:Object, _arg3:Object):void{ var _local7:Array; var _local8:Number; if (mc._endpoint == null){ _local7 = []; _local8 = 0; while (_local8 < arguments.length) { _local7.push(arguments[_local8]); _local8++; }; mc._queue.push(_local7); return; }; mc._id = (mc._id + 1); var _local5:Number = mc._id; mc._callbacks[_local5] = [_arg2, ((_arg3) || (_arg2))]; var _local6:LocalConnection = new LocalConnection(); _local6.send(mc._endpoint, "rpc", _local5, _arg1); }; mc._callbacks = {}; mc._callbacks[0] = [mc, "_didConnect"]; lv.st = getTimer(); req = new URLRequest((server + ".swf")); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader = new Loader(); loader.load(req); mc.addChild(loader); mc._mochiad_com = loader; return (mc); } public static function showPreGameAd(_arg1:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var complete:Boolean; var unloaded:Boolean; var r:MovieClip; var options = _arg1; var DEFAULTS:Object = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }}; options = _slot1._parseOptions(options, DEFAULTS); if ("5cc6f7dfb67f2f08341c831480f7c2a7".length == 0){ options.ad_started(); options.ad_finished(); return; }; clip = options.clip; var ad_msec:Number = 11000; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; var fadeout_time:Number = options.fadeout_time; delete options.fadeout_time; if (!_slot1.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ _slot1._cleanup(mc); var fn:Function = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; var wh:Array = _slot1._getRes(options, clip); var w:Number = wh[0]; var h:Number = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); var bar:MovieClip = createEmptyMovieClip(chk, "_mochiad_bar", 4); bar.x = 10; bar.y = (h - 20); var bar_color:Number = options.color; delete options.color; var bar_background:Number = options.background; delete options.background; var bar_outline:Number = options.outline; delete options.outline; var backing_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 1); var backing:Object = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo((w - 20), 0); backing.lineTo((w - 20), 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); var inside_mc:MovieClip = createEmptyMovieClip(bar, "_inside", 2); var inside:Object = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo((w - 20), 0); inside.lineTo((w - 20), 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; var outline_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 3); var outline:Object = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo((w - 20), 0); outline.lineTo((w - 20), 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { _slot1.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; var f:Function = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ _slot1.unload(clip); }; }; clip.loaderInfo.addEventListener(Event.COMPLETE, f); if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ _slot1.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local11:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; var _local1:Object = this.parent.parent.root; var _local2:Object = this.parent._mochiad_ctr; var _local3:Number = (getTimer() - this.started); var _local4:Boolean; var _local5:Number = _local1.loaderInfo.bytesTotal; var _local6:Number = _local1.loaderInfo.bytesLoaded; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; var _local7:Number = ((100 * _local6) / _local5); var _local8:Number = ((100 * _local3) / chk.ad_msec); var _local9:Object = this._mochiad_bar._inside; var _local10:Number = Math.min(100, Math.min(((_local7) || (0)), _local8)); _local10 = Math.max(this.last_pcnt, _local10); this.last_pcnt = _local10; _local9.scaleX = (_local10 * 0.01); if (!chk.showing){ _local11 = _local2.loaderInfo.bytesTotal; if ((((_local11 > 0)) || (("number" == "undefined")))){ chk.showing = true; chk.started = getTimer(); } else { if (_local3 > chk.ad_timeout){ options.ad_failed(); _local4 = true; }; }; }; if (this.parent._mochiad_ctr_failed){ options.ad_failed(); _local4 = true; }; if (_local3 > chk.ad_msec){ _local4 = true; }; if (((complete) && (_local4))){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); _slot1.showPreGameAd(_arg1); } public static function fetchHighScores(_arg1:Object, _arg2:Object, _arg3:Object=null):Boolean{ var _local4:MovieClip = _slot1._loadCommunicator({clip:_arg1.clip, id:_arg1.id}); if (!_local4){ return (false); }; _local4.doSend(["fetchHighScores", _arg1], _arg2, _arg3); return (true); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var mc = _arg1; var f:Function = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package mochi
Section 44
//MochiBot (mochi.MochiBot) package mochi { import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ var parent = _arg1; var tag = _arg2; var self:MochiBot = new (MochiBot); parent.addChild(self); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var server = "http://core.mochibot.com/my/core.swf"; var lv:URLVariables = new URLVariables(); lv["sb"] = Security.sandboxType; lv["v"] = Capabilities.version; lv["swfid"] = tag; lv["mv"] = "8"; lv["fv"] = "9"; var url:String = self.root.loaderInfo.loaderURL; if (url.indexOf("http") == 0){ lv["url"] = url; } else { lv["url"] = "local"; }; var req:URLRequest = new URLRequest(server); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; var loader:Loader = new Loader(); var f:Function = function (_arg1:Object):void{ }; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f, false, 0, true); self.addChild(loader); loader.load(req); return (self); } } }//package mochi
Section 45
//MochiScores (mochi.MochiScores) package mochi { import flash.display.*; import flash.text.*; public class MochiScores { private static var boardID:String; public static var onErrorHandler:Object; public static var onCloseHandler:Object; public static function showLeaderboard(_arg1:Object=null):void{ var options = _arg1; if (options != null){ if (options.clip != null){ if ((options.clip is Sprite)){ MochiServices.setContainer(options.clip); }; delete options.clip; } else { MochiServices.setContainer(); }; MochiServices.stayOnTop(); if (options.name != null){ if ((options.name is TextField)){ if (options.name.text.length > 0){ options.name = options.name.text; }; }; }; if (options.score != null){ if ((options.score is TextField)){ if (options.score.text.length > 0){ options.score = options.score.text; }; }; }; if (options.onDisplay != null){ options.onDisplay(); } else { if (MochiServices.clip != null){ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; }; } else { options = {}; if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); } else { trace("Warning: Container is not a MovieClip, cannot call default onDisplay."); }; }; if (options.onClose != null){ onCloseHandler = options.onClose; } else { onCloseHandler = function ():void{ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.play(); } else { trace("Warning: Container is not a MovieClip, cannot call default onClose."); }; }; }; if (options.onError != null){ onErrorHandler = options.onError; } else { onErrorHandler = null; }; if (options.boardID == null){ if (_slot1.boardID != null){ options.boardID = _slot1.boardID; }; }; MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose); } public static function closeLeaderboard():void{ MochiServices.send("scores_closeLeaderboard"); } public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2); } public static function requestList(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_requestList", null, _arg1, _arg2); } public static function scoresArrayToObjects(_arg1:Object):Object{ var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; var _local2:Object = {}; for (_local7 in _arg1) { if (typeof(_arg1[_local7]) == "object"){ if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){ _local2[_local7] = []; _local5 = _arg1[_local7]; _local4 = 0; while (_local4 < _local5.rows.length) { _local6 = {}; _local3 = 0; while (_local3 < _local5.cols.length) { _local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3]; _local3++; }; _local2[_local7].push(_local6); _local4++; }; } else { _local2[_local7] = {}; for (_local8 in _arg1[_local7]) { _local2[_local7][_local8] = _arg1[_local7][_local8]; }; }; } else { _local2[_local7] = _arg1[_local7]; }; }; return (_local2); } public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{ MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4); } public static function onClose(_arg1:Object=null):void{ if (_arg1 != null){ if (_arg1.error != null){ if (_arg1.error == true){ if (onErrorHandler != null){ if (_arg1.errorCode == null){ _arg1.errorCode = "IOError"; }; onErrorHandler(_arg1.errorCode); MochiServices.doClose(); return; }; }; }; }; onCloseHandler(); MochiServices.doClose(); } public static function setBoardID(_arg1:String):void{ _slot1.boardID = _arg1; MochiServices.send("scores_setBoardID", {boardID:_arg1}); } } }//package mochi
Section 46
//MochiServices (mochi.MochiServices) package mochi { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; private static var _sendChannel:LocalConnection; private static var _rcvChannelName:String; private static var _gatewayURL:String = "http://www.mochiads.com/static/lib/services/services.swf"; private static var _clip:MovieClip; private static var _loader:Loader; private static var _id:String; private static var _listenChannel:LocalConnection; private static var _timer:Timer; private static var _sendChannelName:String; private static var _startTime:Number; private static var _connecting:Boolean = false; public static var onError:Object; private static var _listenChannelName:String = "__mochiservices"; private static var _rcvChannel:LocalConnection; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _sendChannel.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ onError("NotConnected"); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } public static function get connected():Boolean{ return (_connected); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (_clip != null){ if (_clip._queue != null){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } public static function get childClip():Object{ return (_clip); } public static function get id():String{ return (_id); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, _slot1.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function getVersion():String{ return ("1.31"); } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _listenChannel.close(); _rcvChannel.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; Security.allowDomain("*"); Security.allowInsecureDomain("*"); if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; return (_local2); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, _slot1.bringToTop); if (_clip.parent != null){ Sprite(_clip.parent).removeChild(_clip); }; } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function onStatus(_arg1:StatusEvent):void{ switch (_arg1.level){ case "error": _connected = false; _listenChannel.connect(_listenChannelName); break; }; } private static function initComChannels():void{ if (!_connected){ _sendChannel.addEventListener(StatusEvent.STATUS, _slot1.onStatus); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion()}); _rcvChannel.addEventListener(StatusEvent.STATUS, _slot1.onStatus); _clip.onReceive = function (_arg1:Object):void{ var methodName:String; var pkg = _arg1; var cb:String = pkg.callbackID; var cblst:Object = this.client._callbacks[cb]; if (!cblst){ return; }; var method:* = cblst.callbackMethod; methodName = ""; var obj:Object = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; } else { trace((("Error: Method " + method) + " does not exist.")); }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString())); }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { trace(("Error invoking method on object: " + error.toString())); }; }; }; delete this.client._callbacks[cb]; }; _clip.onError = function ():void{ _slot1.onError("IOError"); }; _rcvChannel.connect(_rcvChannelName); trace("connected!"); _connecting = false; _connected = true; _listenChannel.close(); while (_clip._queue.length > 0) { _sendChannel.send(_sendChannelName, "onReceive", _clip._queue.shift()); }; }; } private static function listen():void{ _listenChannel = new LocalConnection(); _listenChannel.client = _clip; _clip.handshake = function (_arg1:Object):void{ _slot1.comChannelName = _arg1.newChannel; }; _listenChannel.allowDomain("*", "localhost"); _listenChannel.allowInsecureDomain("*", "localhost"); _listenChannel.connect(_listenChannelName); trace("Waiting for MochiAds services to connect..."); } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError.apply(null, ["NotConnected"]); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } public static function get clip():Object{ return (_container); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); _rcvChannelName = _arg1; initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var id = _arg1; var clip = _arg2; var clipname:String = ("_mochiservices_com_" + id); if (_clip != null){ return (_clip); }; if (!_slot1.isNetworkAvailable()){ return (null); }; _slot1.allowDomains(_gatewayURL); _clip = createEmptyMovieClip(clip, clipname, 10336, false); _loader = new Loader(); _timer = new Timer(1000, 0); _startTime = getTimer(); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); var f:Function = function (_arg1:Object):void{ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); _slot1.disconnect(); _slot1.onError("IOError"); }; _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f); var req:URLRequest = new URLRequest(_gatewayURL); _loader.load(req); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _rcvChannel = new LocalConnection(); _rcvChannel.allowDomain("*", "localhost"); _rcvChannel.allowInsecureDomain("*", "localhost"); _rcvChannel.client = _clip; _clip._nextcallbackID = 0; _clip._callbacks = {}; listen(); return (_clip); } public static function bringToTop(_arg1:Event):void{ var e = _arg1; if (_slot1.clip != null){ if (_slot1.childClip != null){ try { if (_slot1.clip.numChildren > 1){ _slot1.clip.setChildIndex(_slot1.childClip, (_slot1.clip.numChildren - 1)); }; } catch(errorObject:Error) { trace("Warning: Depth sort error."); _container.removeEventListener(Event.ENTER_FRAME, _slot1.bringToTop); }; }; }; } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; if ((clip is DisplayObject)){ if (((!(_connected)) && ((_clip == null)))){ trace("MochiServices Connecting..."); _connecting = true; init(id, clip); }; } else { trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage."); }; if (onError != null){ _slot1.onError = onError; } else { if (_slot1.onError == null){ _slot1.onError = function (_arg1:String):void{ trace(_arg1); }; }; }; } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{ var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; var mc:MovieClip = new MovieClip(); if (doAdd){ if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; }; try { parent[name] = mc; } catch(e:Error) { throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; mc["_name"] = name; return (mc); } public static function connectWait(_arg1:TimerEvent):void{ if ((getTimer() - _startTime) > 10000){ if (!_connected){ _clip._mochiad_ctr_failed = true; trace("MochiServices could not load."); _slot1.disconnect(); _slot1.onError("IOError"); }; _timer.stop(); }; } } }//package mochi
Section 47
//BitmapAsset (mx.core.BitmapAsset) package mx.core { import flash.display.*; public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject { mx_internal static const VERSION:String = "3.0.0.0"; public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } public function get measuredWidth():Number{ if (bitmapData){ return (bitmapData.width); }; return (0); } public function get measuredHeight():Number{ if (bitmapData){ return (bitmapData.height); }; return (0); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } } }//package mx.core
Section 48
//ByteArrayAsset (mx.core.ByteArrayAsset) package mx.core { import flash.utils.*; public class ByteArrayAsset extends ByteArray implements IFlexAsset { mx_internal static const VERSION:String = "3.0.0.0"; } }//package mx.core
Section 49
//EdgeMetrics (mx.core.EdgeMetrics) package mx.core { public class EdgeMetrics { public var top:Number; public var left:Number; public var bottom:Number; public var right:Number; mx_internal static const VERSION:String = "3.0.0.0"; public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0); ; public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){ this.left = _arg1; this.top = _arg2; this.right = _arg3; this.bottom = _arg4; } public function clone():EdgeMetrics{ return (new EdgeMetrics(left, top, right, bottom)); } } }//package mx.core
Section 50
//FlexBitmap (mx.core.FlexBitmap) package mx.core { import flash.display.*; import mx.utils.*; public class FlexBitmap extends Bitmap { mx_internal static const VERSION:String = "3.0.0.0"; public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ var bitmapData = _arg1; var pixelSnapping = _arg2; var smoothing = _arg3; super(bitmapData, pixelSnapping, smoothing); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 51
//FlexMovieClip (mx.core.FlexMovieClip) package mx.core { import flash.display.*; import mx.utils.*; public class FlexMovieClip extends MovieClip { mx_internal static const VERSION:String = "3.0.0.0"; public function FlexMovieClip(){ super(); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 52
//FontAsset (mx.core.FontAsset) package mx.core { import flash.text.*; public class FontAsset extends Font implements IFlexAsset { mx_internal static const VERSION:String = "3.0.0.0"; } }//package mx.core
Section 53
//IBorder (mx.core.IBorder) package mx.core { public interface IBorder { function get borderMetrics():EdgeMetrics; } }//package mx.core
Section 54
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 55
//IFlexDisplayObject (mx.core.IFlexDisplayObject) package mx.core { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.accessibility.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get visible():Boolean; function get rotation():Number; function localToGlobal(_arg1:Point):Point; function get name():String; function set width(_arg1:Number):void; function get measuredHeight():Number; function get blendMode():String; function get scale9Grid():Rectangle; function set name(_arg1:String):void; function set scaleX(_arg1:Number):void; function set scaleY(_arg1:Number):void; function get measuredWidth():Number; function get accessibilityProperties():AccessibilityProperties; function set scrollRect(_arg1:Rectangle):void; function get cacheAsBitmap():Boolean; function globalToLocal(_arg1:Point):Point; function get height():Number; function set blendMode(_arg1:String):void; function get parent():DisplayObjectContainer; function getBounds(_arg1:DisplayObject):Rectangle; function get opaqueBackground():Object; function set scale9Grid(_arg1:Rectangle):void; function setActualSize(_arg1:Number, _arg2:Number):void; function set alpha(_arg1:Number):void; function set accessibilityProperties(_arg1:AccessibilityProperties):void; function get width():Number; function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean; function set cacheAsBitmap(_arg1:Boolean):void; function get scaleX():Number; function get scaleY():Number; function get scrollRect():Rectangle; function get mouseX():Number; function get mouseY():Number; function set height(_arg1:Number):void; function set mask(_arg1:DisplayObject):void; function getRect(_arg1:DisplayObject):Rectangle; function get alpha():Number; function set transform(_arg1:Transform):void; function move(_arg1:Number, _arg2:Number):void; function get loaderInfo():LoaderInfo; function get root():DisplayObject; function hitTestObject(_arg1:DisplayObject):Boolean; function set opaqueBackground(_arg1:Object):void; function set visible(_arg1:Boolean):void; function get mask():DisplayObject; function set x(_arg1:Number):void; function set y(_arg1:Number):void; function get transform():Transform; function set filters(_arg1:Array):void; function get x():Number; function get y():Number; function get filters():Array; function set rotation(_arg1:Number):void; function get stage():Stage; } }//package mx.core
Section 56
//IRepeaterClient (mx.core.IRepeaterClient) package mx.core { public interface IRepeaterClient { function get instanceIndices():Array; function set instanceIndices(_arg1:Array):void; function get isDocument():Boolean; function set repeaters(_arg1:Array):void; function initializeRepeaterArrays(_arg1:IRepeaterClient):void; function get repeaters():Array; function set repeaterIndices(_arg1:Array):void; function get repeaterIndices():Array; } }//package mx.core
Section 57
//MovieClipAsset (mx.core.MovieClipAsset) package mx.core { public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder { private var _measuredHeight:Number; private var _measuredWidth:Number; mx_internal static const VERSION:String = "3.0.0.0"; public function MovieClipAsset(){ _measuredWidth = width; _measuredHeight = height; } public function get measuredWidth():Number{ return (_measuredWidth); } public function get measuredHeight():Number{ return (_measuredHeight); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } public function get borderMetrics():EdgeMetrics{ if (scale9Grid == null){ return (EdgeMetrics.EMPTY); }; return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom)))); } } }//package mx.core
Section 58
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset) package mx.core { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.system.*; public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject { protected var initialHeight:Number;// = 0 private var loader:Loader;// = null private var initialized:Boolean;// = false protected var initialWidth:Number;// = 0 private var requestedHeight:Number; private var requestedWidth:Number; mx_internal static const VERSION:String = "3.0.0.0"; public function MovieClipLoaderAsset(){ var _local1:LoaderContext = new LoaderContext(); _local1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); if (("allowLoadBytesCodeExecution" in _local1)){ _local1["allowLoadBytesCodeExecution"] = true; }; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.loadBytes(movieClipData, _local1); addChild(loader); } override public function get width():Number{ if (!initialized){ return (initialWidth); }; return (super.width); } override public function set width(_arg1:Number):void{ if (!initialized){ requestedWidth = _arg1; } else { loader.width = _arg1; }; } override public function get measuredHeight():Number{ return (initialHeight); } private function completeHandler(_arg1:Event):void{ initialized = true; initialWidth = loader.width; initialHeight = loader.height; if (!isNaN(requestedWidth)){ loader.width = requestedWidth; }; if (!isNaN(requestedHeight)){ loader.height = requestedHeight; }; dispatchEvent(_arg1); } override public function set height(_arg1:Number):void{ if (!initialized){ requestedHeight = _arg1; } else { loader.height = _arg1; }; } override public function get measuredWidth():Number{ return (initialWidth); } override public function get height():Number{ if (!initialized){ return (initialHeight); }; return (super.height); } public function get movieClipData():ByteArray{ return (null); } } }//package mx.core
Section 59
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 60
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "3.0.0.0"; } }//package mx.core
Section 61
//NameUtil (mx.utils.NameUtil) package mx.utils { import flash.display.*; import mx.core.*; import flash.utils.*; public class NameUtil { mx_internal static const VERSION:String = "3.0.0.0"; private static var counter:int = 0; public static function displayObjectToString(_arg1:DisplayObject):String{ var _local2:String; var _local4:String; var _local5:Array; var _local3:DisplayObject = _arg1; while (_local3 != null) { if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){ break; }; _local4 = _local3.name; if ((_local3 is IRepeaterClient)){ _local5 = IRepeaterClient(_local3).instanceIndices; if (_local5){ _local4 = (_local4 + (("[" + _local5.join("][")) + "]")); }; }; _local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2); _local3 = _local3.parent; }; return (_local2); } public static function createUniqueName(_arg1:Object):String{ if (!_arg1){ return (null); }; var _local2:String = getQualifiedClassName(_arg1); var _local3:int = _local2.indexOf("::"); if (_local3 != -1){ _local2 = _local2.substr((_local3 + 2)); }; var _local4:int = _local2.charCodeAt((_local2.length - 1)); if ((((_local4 >= 48)) && ((_local4 <= 57)))){ _local2 = (_local2 + "_"); }; return ((_local2 + counter++)); } } }//package mx.utils
Section 62
//ColorShift (ColorShift) package { import flash.events.*; import flash.display.*; import mx.core.*; import flash.utils.*; import com.flashrelax.utils.*; import flash.system.*; import flash.net.*; public class ColorShift extends MovieClip { private const MOCHI_ONLY_DOMAINS:Array; private const NG_ONLY_DOMAINS:Array; private const DOMAINS_ALLOWED:Array; private const NEWGROUNDS_MOVIE_ID:int = 968; private const MOCHI_ADS_DEFAULTS:Object; private const GAME_VERSION:String = "1.0"; private const STARTUP_CLASS_NAME:String = "MainGame"; private var mPlayButton:DisplayObject; private var mAdSprite:ADInjector; private var mLoader:Loader; private var mState:int; private var mFrameLoaded:Boolean; private var mProgressBar:ProgressBar; private var mAdCompleted:Boolean; private var mAdSystem:int; private static const MOCHI_AD_Y:int = 88; private static const PROGRESS_X:int = 56; private static const PROGRESS_Y:int = 418; private static const STATE_WAITING_LOAD:int = 0; private static const PROGRESS_WIDTH:int = 400; private static const AD_SYSTEM_NEWGROUNDS:int = 1; private static const AD_SYSTEM_MOCHI:int = 0; private static const PROGRESS_HEIGHT:int = 20; private static const STATE_WAITING_PLAY_BUTTON:int = 1; private static var mLogoByClass:Class = ColorShift_mLogoByClass; private static var mNGAdSWFClass:Class = ColorShift_mNGAdSWFClass; private static var mLogoClass:Class = ColorShift_mLogoClass; public static var mWebsiteLogoClass:Class = ColorShift_mWebsiteLogoClass; public function ColorShift(){ MOCHI_ADS_DEFAULTS = {id:"8c1cfbf6deac3fee", res:"512x360"}; DOMAINS_ALLOWED = []; NG_ONLY_DOMAINS = ["uploads.ungrounded.net"]; MOCHI_ONLY_DOMAINS = []; super(); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } public function onLogoClick(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.flashrelax.com")); NewgroundsAPI.logCustomEvent("SiteLoader"); } private function adFinishedListener(_arg1:Event):void{ mAdSprite.removeEventListener(ADInjector.AD_FINISHED, adFinishedListener); removeChild(mAdSprite); mAdSprite = null; mAdCompleted = true; } public function startMainGame():void{ mPlayButton = null; var _local1:Class = Class(loaderInfo.applicationDomain.getDefinition(STARTUP_CLASS_NAME)); var _local2:DisplayObject = DisplayObject(new _local1(this)); if (_local2){ stage.addChild(_local2); }; } public function onAdLoaded(_arg1:Event):void{ mLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onAdLoaded); var _local2:Class = (mLoader.contentLoaderInfo.applicationDomain.getDefinition("NG_AD_OBJECT") as Class); var _local3:MovieClip = new (_local2); _local3.y = 260; _local3.x = 0x0100; addChild(_local3); } public function onFrame(_arg1:Event):void{ var _local2:Class; var _local3:Boolean; var _local4:Class; graphics.clear(); switch (mState){ case STATE_WAITING_LOAD: if (((mAdCompleted) && (mFrameLoaded))){ _local2 = Class(loaderInfo.applicationDomain.getDefinition(STARTUP_CLASS_NAME)); if (_local2){ removeEventListener(Event.ENTER_FRAME, onFrame); if (mProgressBar != null){ removeChild(mProgressBar); mProgressBar = null; }; _local3 = true; if (DOMAINS_ALLOWED.length > 0){ _local3 = inList(DOMAINS_ALLOWED); }; if (!_local3){ return; }; mState = STATE_WAITING_PLAY_BUTTON; if (mAdSystem == AD_SYSTEM_NEWGROUNDS){ _local4 = Class(loaderInfo.applicationDomain.getDefinition("com.recolor.Button")); mPlayButton = DisplayObject(new _local4("Play", 36)); addChild(mPlayButton); mPlayButton.y = (PROGRESS_Y - 20); mPlayButton.x = ((PROGRESS_X + (PROGRESS_WIDTH / 2)) - (mPlayButton.width / 2)); mPlayButton.addEventListener(MouseEvent.CLICK, onPlayClick); } else { startMainGame(); }; }; }; break; }; } public function onPlayClick(_arg1:MouseEvent):void{ mPlayButton.removeEventListener(MouseEvent.CLICK, onPlayClick); startMainGame(); } public function onAddedToStage(_arg1:Event):void{ var _local5:ByteArray; stop(); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var _local2:Bitmap = new Bitmap((new mLogoClass() as BitmapAsset).bitmapData); _local2.y = 10; addChild(_local2); _local2 = new Bitmap((new mLogoByClass() as BitmapAsset).bitmapData); _local2.x = 330; _local2.y = 25; addChild(_local2); var _local3:Sprite = new Sprite(); var _local4:MovieClip = (new mWebsiteLogoClass() as MovieClip); _local4.x = 410; _local4.y = 10; _local3.buttonMode = true; _local3.addChild(_local4); _local3.addEventListener(MouseEvent.CLICK, onLogoClick); addChild(_local3); if (inList(NG_ONLY_DOMAINS)){ mAdSystem = AD_SYSTEM_NEWGROUNDS; } else { if (inList(MOCHI_ONLY_DOMAINS)){ mAdSystem = AD_SYSTEM_MOCHI; } else { mAdSystem = Math.floor((Math.random() * 2)); }; }; NewgroundsAPI.linkAPI(stage); NewgroundsAPI.setMovieVersion(GAME_VERSION); NewgroundsAPI.connectMovie(NEWGROUNDS_MOVIE_ID); NewgroundsAPI.addCustomEvent(1, "SiteLoader"); NewgroundsAPI.addCustomEvent(2, "SiteVisitUs"); NewgroundsAPI.addCustomEvent(3, "SiteMoreGames"); if (mAdSystem == AD_SYSTEM_NEWGROUNDS){ _local5 = (new mNGAdSWFClass() as ByteArray); mLoader = new Loader(); mLoader.loadBytes(_local5, new LoaderContext(false, ApplicationDomain.currentDomain)); mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onAdLoaded); mAdCompleted = true; mProgressBar = new ProgressBar(PROGRESS_X, PROGRESS_Y, PROGRESS_WIDTH, PROGRESS_HEIGHT); addChild(mProgressBar); root.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoadingProgress); } else { mAdSprite = new ADInjector(MOCHI_ADS_DEFAULTS); mAdSprite.y = MOCHI_AD_Y; mAdSprite.addEventListener(ADInjector.AD_FINISHED, adFinishedListener); addChild(mAdSprite); mAdCompleted = false; mProgressBar = null; }; root.loaderInfo.addEventListener(Event.COMPLETE, onLoadingCompleted); mFrameLoaded = false; mState = STATE_WAITING_LOAD; addEventListener(Event.ENTER_FRAME, onFrame); } public function inList(_arg1:Array):Boolean{ var _local4:String; var _local5:int; var _local2:Boolean; var _local3:String = stage.loaderInfo.url.split("/")[2]; for (_local4 in _arg1) { _local5 = _local3.indexOf(_arg1[_local4]); if ((((_local5 > -1)) && ((_local5 == (_local3.length - _arg1[_local4].length))))){ _local2 = true; break; }; }; return (_local2); } private function onLoadingCompleted(_arg1:Event):void{ root.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoadingProgress); root.loaderInfo.removeEventListener(Event.COMPLETE, onLoadingCompleted); nextFrame(); mFrameLoaded = true; } private function onLoadingProgress(_arg1:Event):void{ var _local2:Number = ((root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal) * 100); mProgressBar.Update(_local2); } } }//package
Section 63
//ColorShift_mLogoByClass (ColorShift_mLogoByClass) package { import mx.core.*; public class ColorShift_mLogoByClass extends BitmapAsset { } }//package
Section 64
//ColorShift_mLogoClass (ColorShift_mLogoClass) package { import mx.core.*; public class ColorShift_mLogoClass extends BitmapAsset { } }//package
Section 65
//ColorShift_mNGAdSWFClass (ColorShift_mNGAdSWFClass) package { import mx.core.*; public class ColorShift_mNGAdSWFClass extends ByteArrayAsset { } }//package
Section 66
//ColorShift_mWebsiteLogoClass (ColorShift_mWebsiteLogoClass) package { import mx.core.*; import flash.utils.*; public class ColorShift_mWebsiteLogoClass extends MovieClipLoaderAsset { public var dataClass:Class; private static var bytes:ByteArray = null; public function ColorShift_mWebsiteLogoClass(){ dataClass = ColorShift_mWebsiteLogoClass_dataClass; super(); initialWidth = (1960 / 20); initialHeight = (1500 / 20); } override public function get movieClipData():ByteArray{ if (bytes == null){ bytes = ByteArray(new dataClass()); }; return (bytes); } } }//package
Section 67
//ColorShift_mWebsiteLogoClass_dataClass (ColorShift_mWebsiteLogoClass_dataClass) package { import mx.core.*; public class ColorShift_mWebsiteLogoClass_dataClass extends ByteArrayAsset { } }//package
Section 68
//MainGame (MainGame) package { import flash.display.*; import flash.events.*; import mochi.*; import com.recolor.*; import flash.media.*; public dynamic class MainGame extends Sprite { private var mState:int; private var mLoaderSprite:Sprite; private var mDir:int; private var mTopBG:Bitmap; private var mLogo:MovieClip; private static const STATE_GAME_FADEIN:int = 4; private static const INTRO_WAIT_TIME:int = 50; private static const STATE_INIT_FADEOUT:int = 0; private static const STATE_INTRO_WAIT:int = 2; private static const STATE_INTRO_FADEOUT:int = 3; private static const STATE_INTRO_FADEIN:int = 1; public function MainGame(_arg1:Sprite){ mLoaderSprite = _arg1; addEventListener(Event.ADDED_TO_STAGE, onAdded); } public function onAdded(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAdded); GameState.root = this; if (UserSettings.mMusic){ GameState.mMusicChannel = DataCollection.mMusic.play(0, 10000); GameState.mMusicChannel.soundTransform = new SoundTransform(0.4); }; QualityControl.setUserQuality(); MochiBot.track(this, "c402d82c"); MochiServices.connect("8c1cfbf6deac3fee", this); mTopBG = new Bitmap(new BitmapData(0x0200, 448, false, 0xFFFFFF)); mTopBG.x = 0; mTopBG.y = 0; mTopBG.alpha = 0; addChild(mTopBG); mDir = 1; mState = STATE_INIT_FADEOUT; addEventListener(Event.ENTER_FRAME, onFrame); } public function onFrame(_arg1:Event):void{ var _local2:Field; if (mState == STATE_INTRO_WAIT){ if (mDir == 0){ mDir = 1; mState = STATE_INTRO_FADEOUT; } else { mDir--; return; }; }; mTopBG.alpha = (mTopBG.alpha + (mDir * 0.1)); if (mTopBG.alpha <= 0){ mTopBG.alpha = 0; if (mState == STATE_GAME_FADEIN){ removeChild(mTopBG); mTopBG = null; removeEventListener(Event.ENTER_FRAME, onFrame); return; }; mDir = INTRO_WAIT_TIME; mState = STATE_INTRO_WAIT; } else { if (mTopBG.alpha >= 1){ mTopBG.alpha = 1; if (mState == STATE_INIT_FADEOUT){ stage.removeChild(mLoaderSprite); mLoaderSprite = null; mLogo = (new DataCollection.mLogoSWFClass() as MovieClip); mLogo.scaleX = 0.9; mLogo.scaleY = 0.9; addChildAt(mLogo, 0); mState = STATE_INTRO_FADEIN; } else { removeChild(mLogo); mLogo = null; _local2 = new Field(); _local2.x = 0; _local2.y = 0; addChildAt(_local2, 0); mState = STATE_GAME_FADEIN; }; mDir = -1; }; }; } } }//package
Section 69
//NewgroundsAPI (NewgroundsAPI) package { import flash.events.*; import flash.display.*; import flash.net.*; import flash.text.*; public class NewgroundsAPI { public static const ADS_APPROVED:Number = 3; private static const STAT_NEW_VERSION:Number = 4; private static const STAT_AUTHOR_SITE:Number = 2; private static const GATEWAY_URL:String = "http://www.ngads.com/gateway.php"; private static const NEWGROUNDS_URL:String = "http://www.newgrounds.com"; private static const STAT_CUSTOM_STATS:Number = 50; private static const STAT_MOVIE_VIEWS:Number = 1; private static const STAT_NEWGROUNDS:Number = 3; public static const NEW_VERSION:Number = 2; public static const DENY_HOST:Number = 1; private static var tracker_id:Number; public static var bridge:Stage; private static var movie_options:Object = new Object(); private static var connected:Boolean; private static var custom_events:Object = new Object(); private static var host:String; private static var linked:Boolean; private static var events:Object = new Object(); private static var debug:Boolean; private static var version:String; private static var custom_links:Object = new Object(); public static function getNewVersionURL(){ return (((((((GATEWAY_URL + "?&id=") + tracker_id) + "&host=") + escape(host)) + "&stat=") + STAT_NEW_VERSION)); } private static function ReadGatewayData(_arg1:Object){ var _local2:*; var _local3:String; var _local4:*; var _local5:URLLoader; for (_local2 in _arg1) { _arg1[_local2] = unescape(_arg1[_local2]); movie_options[_local2] = _arg1[_local2]; }; if (_arg1["settings_loaded"]){ SendMessage("You have successfully connected to the Newgrounds API gateway!"); SendMessage((("Movie Identified as '" + movie_options["movie_name"]) + "'")); if (movie_options["message"]){ SendMessage(movie_options["message"]); }; if (movie_options["ad_url"]){ SendMessage("Your movie has been approved to run Flash Ads"); if (events[ADS_APPROVED]){ var _local6 = events; _local6[ADS_APPROVED](movie_options["ad_url"]); } else { onAdsApproved(movie_options["ad_url"]); }; }; if (((movie_options["movie_version"]) && (!((String(movie_options["movie_version"]) == String(version)))))){ SendMessage("WARNING: The movie version configured in your API settings does not match this movie's version!"); if (events[NEW_VERSION]){ _local6 = events; _local6[NEW_VERSION]({version:movie_options["movie_version"], real_url:getMovieURL(), redirect_url:getNewVersionURL()}); } else { onNewVersionAvailable(movie_options["movie_version"], getMovieURL(), getNewVersionURL()); }; }; if (movie_options["deny_host"]){ SendMessage("You have blocked 'localHost' in your API settings."); SendMessage("If you wish to test your movie you will need to remove this block."); if (events[DENY_HOST]){ _local6 = events; _local6[DENY_HOST]({host:host, real_url:getMovieURL(), redirect_url:getNewVersionURL()}); } else { onDenyHost(host, getMovieURL(), getNewVersionURL()); }; }; if (movie_options["request_portal_url"]){ _local3 = bridge.root.loaderInfo.url; _local4 = ((((GATEWAY_URL + "?&id=") + tracker_id) + "&portal_url=") + escape(_local3)); _local5 = new URLLoader(new URLRequest(_local4)); }; if (events[69]){ _local6 = events; _local6[69](); }; } else { if (!movie_options["settings_loaded"]){ SendError("Could not establish connection to the API gateway."); }; }; } public static function setMovieVersion(_arg1){ if (!_arg1){ SendError("Missing required 'version' in NewgroundsAPI.setMovieVersion(version:String)"); } else { version = String(_arg1); }; } public static function loadCustomLink(_arg1:String){ if (!_arg1){ SendError("Missing required 'link_name' parameter in NewgroundsAPI.loadCustomLink(link_name:String)"); } else { if (!custom_links[_arg1]){ SendError(("Attempted to open undefined custom link: " + _arg1)); } else { SendLink(custom_links[_arg1]); }; }; } public static function addCustomLink(_arg1:Number, _arg2:String){ if (!_arg1){ SendError("Missing required 'id' parameter in NewgroundsAPI.AddCustomLink(id:Number, link_name:String)"); } else { if (!_arg2){ SendError("Missing required 'link_name' parameter in NewgroundsAPI.AddCustomLink(id:Number, link_name:String)"); } else { custom_links[_arg2] = (STAT_CUSTOM_STATS + _arg1); SendMessage(((("Created custom link " + _arg1) + ": ") + _arg2)); }; }; } public static function getMovieURL(){ if (movie_options["movie_url"]){ return (movie_options["movie_url"]); }; return ("Newgrounds.com"); } public static function debugMode(){ debug = true; } public static function getAdURL(){ return (movie_options["ad_url"]); } private static function SendStat(_arg1:Number, _arg2:Boolean, _arg3=null){ var target_url:*; var x:*; var request:URLRequest; var gateway_loader:URLLoader; var stat_id = _arg1; var open_in_browser = _arg2; var extra = _arg3; if (!tracker_id){ SendError("You must call NewgroundsAPI.connectMovie() with a valid movie id before using API features!"); } else { var XML_Loaded:* = function (_arg1:Event){ var _local5:XML; var _local6:*; var _local7:*; XML.ignoreWhitespace = true; var _local2:XML = XML(_arg1.target.data); var _local3:Object = new Object(); var _local4:XMLList = _local2.children(); for each (_local5 in _local4) { _local6 = _local5.localName(); _local7 = _local5.attribute("value"); if (_local7 == Number(_local7)){ _local7 = Number(_local7); }; _local3[_local6] = _local7; }; ReadGatewayData(_local3); }; target_url = (((((((GATEWAY_URL + "?&id=") + tracker_id) + "&host=") + escape(host)) + "&stat=") + stat_id) + addSeed()); if (extra){ for (x in extra) { target_url = (target_url + ((("&" + escape(x)) + "=") + escape(extra[x]))); }; }; if (debug){ target_url = (target_url + "&debug=1"); }; if (open_in_browser){ request = new URLRequest((target_url + addSeed())); navigateToURL(request, "_blank"); } else { gateway_loader = new URLLoader(new URLRequest((target_url + addSeed()))); gateway_loader.addEventListener(Event.COMPLETE, XML_Loaded); }; }; } public static function onAdsApproved(_arg1:String){ } public static function loadMySite(_arg1:Event=null){ SendLink(STAT_AUTHOR_SITE); } private static function SendMessage(_arg1:String){ trace(("[NEWGROUNDS API] :: " + _arg1)); } public static function linkAPI(_arg1:Stage):void{ bridge = _arg1; linked = true; } public static function loadNewgrounds(_arg1:Event=null, _arg2:String=null){ var _local3:URLRequest; var _local4:*; if (!tracker_id){ _local3 = new URLRequest(((NEWGROUNDS_URL + "/") + _arg2)); navigateToURL(_local3, "_blank"); } else { _local4 = null; if (_arg2){ _local4 = new Object(); _local4.page = _arg2; }; SendLink(STAT_NEWGROUNDS, _local4); }; } private static function SendLink(_arg1, _arg2=null){ SendStat(_arg1, true, _arg2); } public static function logCustomEvent(_arg1:String){ if (!_arg1){ SendError("Missing required 'event_name' parameter in NewgroundsAPI.logCustomEvent(event_name:String)"); } else { if (!custom_events[_arg1]){ SendError(("Attempted to log undefined custom event: " + _arg1)); } else { SendEvent(custom_events[_arg1]); }; }; } private static function SendError(_arg1:String){ trace(("[NEWGROUNDS API ERROR] :: " + _arg1)); } public static function addCustomEvent(_arg1:Number, _arg2:String):void{ if (!_arg1){ SendError("Missing required 'id' parameter in NewgroundsAPI.AddCustomEvent(id:Number, event_name:String)"); } else { if (!_arg2){ SendError("Missing required 'event_name' parameter in NewgroundsAPI.AddCustomEvent(id:Number, event_name:String)"); } else { custom_events[_arg2] = (STAT_CUSTOM_STATS + _arg1); SendMessage(("Created custom event: " + _arg2)); }; }; } private static function addSeed(){ return (("&seed=" + Math.random())); } public static function addEventListener(_arg1:Number, _arg2:Function){ events[_arg1] = _arg2; } private static function SendEvent(_arg1){ SendStat(_arg1, false); } public static function onNewVersionAvailable(_arg1:String, _arg2:String, _arg3:String){ var _root:*; var overlay:MovieClip; var version = _arg1; var movie_url = _arg2; var redirect_url = _arg3; var sw:* = bridge.stageWidth; var sh:* = bridge.stageHeight; var tw:* = 350; var th:* = 160; var mg:* = 20; _root = bridge.root; overlay = new MovieClip(); overlay.graphics.beginFill(0, 0.6); overlay.graphics.lineStyle(0, 0); overlay.graphics.drawRect(0, 0, sw, sh); overlay.graphics.endFill(); var overlay_x:* = Math.round(((sw - tw) / 2)); var overlay_y:* = Math.round(((sh - th) / 2)); overlay.graphics.beginFill(102); overlay.graphics.lineStyle(10, 0); overlay.graphics.drawRect((overlay_x - mg), (overlay_y - mg), (tw + mg), (th + mg)); overlay.graphics.endFill(); overlay.close = function (_arg1:Event){ _root.removeChild(overlay); }; var close_x:* = new MovieClip(); close_x.graphics.beginFill(0, 0.1); close_x.graphics.lineStyle(3, 22015); close_x.graphics.drawRect(0, 0, 16, 16); close_x.graphics.endFill(); close_x.graphics.moveTo(4, 4); close_x.graphics.lineTo(13, 13); close_x.graphics.moveTo(13, 4); close_x.graphics.lineTo(4, 13); close_x.x = ((overlay_x + tw) - 26); close_x.y = (overlay_y - 10); close_x.addEventListener(MouseEvent.CLICK, overlay.close); var blankarea:TextField = new TextField(); blankarea.x = (overlay_x - mg); blankarea.y = (overlay_y - mg); blankarea.width = (tw + mg); blankarea.height = (th + mg); blankarea.selectable = false; var header:TextField = new TextField(); header.width = tw; header.x = overlay_x; header.y = overlay_y; header.height = 100; header.selectable = false; var header_format:TextFormat = new TextFormat(); header_format.font = "Arial Black"; header_format.color = 0xFFFFFF; header_format.size = 20; header.defaultTextFormat = header_format; header.text = "New Version Available!"; var msgtext:TextField = new TextField(); msgtext.x = overlay_x; msgtext.y = (overlay_y + 70); msgtext.width = tw; msgtext.height = 60; msgtext.selectable = false; var msgtext_format:TextFormat = new TextFormat(); msgtext_format.font = "Arial"; msgtext_format.color = 0xFFFFFF; msgtext_format.size = 12; msgtext_format.bold = true; var msgtext_link:TextFormat = new TextFormat(); msgtext_link.font = "Arial"; msgtext_link.color = 0xFFFF00; msgtext_link.size = 12; msgtext_link.bold = true; msgtext_link.url = redirect_url; msgtext_link.target = "_blank"; if (version){ version = ("Version " + version); } else { version = "A new version"; }; msgtext.defaultTextFormat = msgtext_format; msgtext.appendText((version + " is now available")); if (movie_url){ msgtext.appendText(" at:\n"); msgtext.defaultTextFormat = msgtext_link; msgtext.appendText(movie_url); } else { msgtext.appendText("!"); }; _root.addChild(overlay); overlay.addChild(blankarea); overlay.addChild(header); overlay.addChild(msgtext); overlay.addChild(close_x); } public static function onDenyHost(_arg1:String, _arg2:String, _arg3:String){ var _local4:* = bridge.stageWidth; var _local5:* = bridge.stageHeight; var _local6:* = 350; var _local7:* = 160; var _local8:* = bridge.root; var _local9:MovieClip = new MovieClip(); _local9.graphics.beginFill(0x660000); _local9.graphics.lineStyle(20, 0); _local9.graphics.drawRect(0, 0, _local4, _local5); _local9.graphics.endFill(); var _local10:TextField = new TextField(); _local10.x = 0; _local10.y = 0; _local10.width = _local4; _local10.height = _local5; _local10.selectable = false; var _local11:TextField = new TextField(); _local11.x = Math.round(((_local4 - _local6) / 2)); _local11.y = Math.round(((_local5 - _local7) / 2.5)); _local11.width = _local6; _local11.height = 100; _local11.selectable = false; var _local12:TextFormat = new TextFormat(); _local12.font = "Arial Black"; _local12.color = 0xFF0000; _local12.size = 38; _local11.defaultTextFormat = _local12; _local11.text = "ERROR!"; var _local13:TextField = new TextField(); _local13.x = Math.round(((_local4 - _local6) / 2)); _local13.y = (Math.round(((_local5 - _local7) / 2.5)) + 80); _local13.width = _local6; _local13.height = 80; _local13.selectable = false; var _local14:TextFormat = new TextFormat(); _local14.font = "Arial"; _local14.color = 0xFFFFFF; _local14.size = 12; _local14.bold = true; var _local15:TextFormat = new TextFormat(); _local15.font = "Arial"; _local15.color = 0xFFFF00; _local15.size = 12; _local15.bold = true; _local15.url = _arg3; _local15.target = "_blank"; _local13.defaultTextFormat = _local14; _local13.appendText((("This movie has not been approved for use on " + _arg1) + "\n")); _local13.appendText("For an approved copy, please visit:\n"); _local13.defaultTextFormat = _local15; _local13.appendText(_arg2); _local8.addChild(_local9); _local9.addChild(_local10); _local9.addChild(_local11); _local9.addChild(_local13); } public static function connectMovie(_arg1:Number){ var _local2:String; var _local3:*; if (!_arg1){ SendError("Missing required 'id' parameter in NewgroundsAPI.connectMovie(id:Number)"); } else { if (!linked){ SendError("Attempted to call MewgroundsAPI.connectMovie() without first calling NewgroundsAPI.linkAPI(this)"); } else { if (!tracker_id){ SendMessage("Connecting to API gateway..."); tracker_id = _arg1; _local2 = bridge.root.loaderInfo.url; host = _local2.split("/")[2].toLowerCase(); if (host.length < 1){ host = "localhost"; }; _local3 = new Object(); SendEvent(STAT_MOVIE_VIEWS); }; }; }; } public static function isInstalled(){ return (true); } } }//package

Library Items

Symbol 1 MovieClip {com.recolor.DataCollection_mInGameLogoClass}
Symbol 2 Bitmap {ColorShift_mLogoByClass}
Symbol 3 BinaryData {ColorShift_mNGAdSWFClass}
Symbol 4 BinaryData {ColorShift_mWebsiteLogoClass_dataClass}
Symbol 5 Bitmap {ColorShift_mLogoClass}
Symbol 6 Sound {com.recolor.DataCollection_mSfxMenuClass} [com.recolor.DataCollection_mSfxMenuClass]
Symbol 7 Sound {com.recolor.DataCollection_mSfxColorSwapClass} [com.recolor.DataCollection_mSfxColorSwapClass]
Symbol 8 Sound {com.recolor.DataCollection_mSfxLoseClass} [com.recolor.DataCollection_mSfxLoseClass]
Symbol 9 Sound {com.recolor.DataCollection_mSfxAwayClass} [com.recolor.DataCollection_mSfxAwayClass]
Symbol 10 Sound {com.recolor.DataCollection_mMusicClass} [com.recolor.DataCollection_mMusicClass]
Symbol 11 GraphicUsed by:17
Symbol 12 GraphicUsed by:17
Symbol 13 GraphicUsed by:17
Symbol 14 GraphicUsed by:17
Symbol 15 GraphicUsed by:17
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClip {com.flashrelax.utils.VisualButton_mButtonsSWFClass} [KeysMC]Uses:11 12 13 14 15 16
Symbol 18 BinaryData {com.recolor.DataCollection_mLogoSWFClass_dataClass}
Symbol 19 Bitmap {com.recolor.DataCollection_mBoardSectionHClass}
Symbol 20 Font {com.recolor.DataCollection_mGameFont}
Symbol 21 BinaryData {com.recolor.DataCollection_mInGameLogoClass_dataClass}
Symbol 22 Bitmap {com.recolor.DataCollection_mSmallBallsClass}
Symbol 23 Bitmap {com.recolor.DataCollection_mBigBoardSectionClass}
Symbol 24 Bitmap {com.recolor.DataCollection_mBoardSectionClass}
Symbol 25 Bitmap {com.recolor.DataCollection_mBigBallsClass}

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1457 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 2Symbol 6 as "com.recolor.DataCollection_mSfxMenuClass"
ExportAssets (56)Timeline Frame 2Symbol 7 as "com.recolor.DataCollection_mSfxColorSwapClass"
ExportAssets (56)Timeline Frame 2Symbol 8 as "com.recolor.DataCollection_mSfxLoseClass"
ExportAssets (56)Timeline Frame 2Symbol 9 as "com.recolor.DataCollection_mSfxAwayClass"
ExportAssets (56)Timeline Frame 2Symbol 10 as "com.recolor.DataCollection_mMusicClass"
ExportAssets (56)Timeline Frame 2Symbol 17 as "KeysMC"
SerialNumber (41)Timeline Frame 1

Labels

"ColorShift"Frame 1
"two"Frame 2




http://swfchan.com/10/48302/info.shtml
Created: 30/4 -2019 05:56:20 Last modified: 30/4 -2019 05:56:20 Server time: 16/05 -2024 16:06:46