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

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

Snowball Duel.swf

This is the info page for
Flash #206741

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


Text
Play Again

Home

Throw snowballs at your opponent
until he is defeated!

Click to set the angle and power of the
throws. Be sure to check the wind
speed and direction!

Instructions

START

Starting new game...

Waiting for your opponent

The player who throws the snowball
closer to the center starts first

Your throw is closer to the center

Your opponent's throw
is closer to the center

You start first

Your opponent starts first

Disconnected

Your opponent was disconnected

Time's Up!

Your opponent ran out of time!

You win!

You lose!

playerName

You

playerName

<p align="left"><font face="Arial" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">0.000</font></p>

m

<p align="left"><font face="Arial" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">0.000</font></p>

Copyright © 2012 Novel Games Limited. All Rights Reserved.

Full Screen

OFF

ON

Music

Sound

OK

OPTIONS

name

Name

Please try again

Failed entering room

Your name was rejected

Login failed

Room is full

Enter

more games

Snowball

Duel

Multiplayer

Showing All Players

Showing Friends Only

YOU

Click yourself
to open a table

Click other players
to invite them

Click your table
to start game

Please Wait......

Disconnected

Loading Failed

Failed Joining Room

Failed Leaving Room

Failed Opening Table

Failed Joining Table

Failed Leaving Table

Robot Failed Joining Table

Failed Inviting Player

Invitation Sent

Failed Starting Game

Sending emails......

Failed sending emails

name

or

Facebook
Login

name

name

Email

email

name

email

username

Username

Password

password

Do not have an account?

Register

Login

Enter as
Guest

forget password?

username

password

username

password

username

password

Room-00001

888

888

/

You are invited to play a game

Reject

Accept

Your Rank:

88

No.

Share in

Facebook

Twitter

MySpace

Email

Your Result:

Win

Draw

Lose

Click to
Invite to Play

Click to
Join Table

<p align="center"><font face="_sans" size="14" color="#666666" letterSpacing="0.000000" kerning="1"><b>name</b></font></p>

Click to
Open Table

Playing

Click to
Start Game

Click to
View Game

Players Needed:

<p align="center"><font face="_sans" size="14" color="#33cccc" letterSpacing="0.000000" kerning="1"><b>2</b></font></p>

Waiting for Host
to Start Game

<p align="center"><font face="_sans" size="14" color="#33cccc" letterSpacing="0.000000" kerning="1"><b>2</b></font></p>

<p align="center"><font face="_sans" size="14" color="#666666" letterSpacing="0.000000" kerning="1"><b>name</b></font></p>

Type your message here

Send

Name <email>

Your Name and Email:
(Name <email>)

Name and Email of the friends you
want to challenge:
(Name <email>, one record per line)

Name <email>
Name <email>

Waiting for players to join......

Please click the button below
after you have finished login

Continue

name

name

email

name

email

username

password

username

password

username

password

username

password

<p align="left"><font face="Arial" size="12" color="#000000" letterSpacing="0.000000" kerning="0">Enjoy your favorite winter activity online, make impeccable strikes and cover your opponent with snow from head to toe! Your goal in this game is to throw snowballs at your opponent until he is defeated. When the game starts, each player will be assigned a monster, and they will appear on the left and right side of the screen. A windmill will be located in the middle, indicating the wind direction with an arrow and the wind speed with a propeller. To decide the order of throw in the duel, you and your opponent will first need to throw a snowball to the highlighted area that appears in the middle of the screen. During your turn, an arrow-shaped pointer will appear, and you can click to set the throwing angle, then click again to set the power. After both players have thrown a snowball, the one who gets nearer to the highlighted area can start to throw snowballs at his opponent. Since the wind direction and speed will change constantly in the duel, you will need to consider the environment or your throw will miss. The game then continues until a monster has been hit 3 times and loses. Can you come down the stage clean and victorious?</font></p>

Share

Embed

Next Game

Fupa.com

ActionScript [AS3]

Section 1
//AutoMatchDialog (com.novelgames.lobby.AutoMatchDialog) package com.novelgames.lobby { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class AutoMatchDialog extends MovieClip { private var autoMatchDialogMC:AutoMatchDialogMC; private var things:Array; private var names:Array; private var group:MovieClip; public function AutoMatchDialog(){ autoMatchDialogMC = new AutoMatchDialogMC(); this.addChild(autoMatchDialogMC); autoMatchDialogMC.closeButton.addEventListener(MouseEvent.CLICK, closeButtonClicked); things = new Array(); names = new Array(); group = new MovieClip(); group.thingsHolder = new MovieClip(); group.addChild(group.thingsHolder); group.namesHolder = new MovieClip(); group.addChild(group.namesHolder); autoMatchDialogMC.addChild(group); } public function update():void{ var _local4:PlayerInfo; var _local5:Table; var _local6:Player; var _local7:Bubble; var _local8:Rectangle; var _local9:Rectangle; var _local10:Rectangle; var _local11:Number; var _local12:int; var _local1:Lobby = Lobby(parent); var _local2:RoomInside = _local1.roomInside; var _local3:PlayerGroup = _local2.selfPlayerGroup; things = new Array(); names = new Array(); while (group.thingsHolder.numChildren > 0) { group.thingsHolder.removeChildAt(0); }; while (group.namesHolder.numChildren > 0) { group.namesHolder.removeChildAt(0); }; if (_local3.table != null){ _local5 = new Table(); _local5.x = _local3.table.x; _local5.y = _local3.table.y; _local5.stop(); _local5.player.visible = false; _local5.viewer.visible = false; _local5.toys.visible = false; group.thingsHolder.addChild(_local5); things.push(_local5); }; _local12 = 0; while (_local12 < _local3.players.length) { _local4 = _local3.players[_local12].playerInfo; _local6 = new Player(); _local6.initialize(_local4); _local6.x = _local3.players[_local12].x; _local6.y = _local3.players[_local12].y; group.thingsHolder.addChild(_local6); things.push(_local6); _local7 = new Bubble(); _local8 = _local6.getBounds(_local6); if (_local4.playerUID == _local1.playerUID){ _local7.showYou(_local4.playerName, _local6.x, (_local6.y + _local8.y)); } else { _local7.showName(_local4.playerName, _local6.x, (_local6.y + _local8.y)); }; group.namesHolder.addChild(_local7); names.push(_local7); _local12++; }; things.sort(RoomInside.compareYX); names.sort(RoomInside.compareYX); _local12 = 0; while (_local12 < things.length) { group.thingsHolder.setChildIndex(things[_local12], _local12); _local12++; }; _local12 = 0; while (_local12 < names.length) { group.namesHolder.setChildIndex(names[_local12], _local12); _local12++; }; group.scaleX = 1; group.scaleY = 1; _local9 = autoMatchDialogMC.tableMask.getBounds(autoMatchDialogMC); _local10 = group.getBounds(autoMatchDialogMC); _local11 = Math.min((_local9.width / _local10.width), (_local9.height / _local10.height)); group.scaleX = _local11; group.scaleY = _local11; _local10 = group.getBounds(autoMatchDialogMC); group.x = (group.x + (((_local9.left + _local9.right) - (_local10.left + _local10.right)) / 2)); group.y = (group.y + (((_local9.top + _local9.bottom) - (_local10.top + _local10.bottom)) / 2)); autoMatchDialogMC.tableMask.visible = false; } private function closeButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; _local2.doLeaveRoom(); } } }//package com.novelgames.lobby
Section 2
//AutoMatchDialogMC (com.novelgames.lobby.AutoMatchDialogMC) package com.novelgames.lobby { import flash.display.*; public dynamic class AutoMatchDialogMC extends MovieClip { public var tableMask:MovieClip; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 3
//Base64 (com.novelgames.lobby.Base64) package com.novelgames.lobby { import flash.utils.*; public class Base64 { public static function encode(_arg1:ByteArray):String{ var _local3:uint; var _local4:uint; var _local5:uint; var _local7:int; var _local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var _local6 = ""; _local7 = 0; while (_local7 < _arg1.length) { _local3 = _arg1[_local7]; _local4 = (((_local7 + 1) < _arg1.length)) ? _arg1[(_local7 + 1)] : 0; _local5 = (((_local7 + 2) < _arg1.length)) ? _arg1[(_local7 + 2)] : 0; _local6 = (_local6 + _local2.charAt((_local3 >> 2))); _local6 = (_local6 + _local2.charAt((((_local3 & 3) << 4) | (_local4 >> 4)))); _local6 = (_local6 + (((_local7 + 1) < _arg1.length)) ? _local2.charAt((((_local4 & 15) << 2) | (_local5 >> 6))) : "="); _local6 = (_local6 + (((_local7 + 2) < _arg1.length)) ? _local2.charAt((_local5 & 63)) : "="); _local7 = (_local7 + 3); }; return (_local6); } } }//package com.novelgames.lobby
Section 4
//Bubble (com.novelgames.lobby.Bubble) package com.novelgames.lobby { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; public class Bubble extends MovieClip { private var bubble:MovieClip; public static var DIRECTION_DOWNRIGHT:int = 1; public static var DIRECTION_DOWNLEFT:int = 2; public static var DIRECTION_UPRIGHT:int = 3; public static var DIRECTION_UPLEFT:int = 4; public function showYou(_arg1:String, _arg2:Number, _arg3:Number):void{ bubble = new BubbleYou(); setText(bubble.nameText, _arg1); setPosition(_arg2, _arg3, DIRECTION_DOWNRIGHT); this.addChild(bubble); } public function showName(_arg1:String, _arg2:Number, _arg3:Number):void{ bubble = new BubbleName(); setText(bubble.nameText, _arg1); setPosition(_arg2, _arg3, DIRECTION_DOWNRIGHT); this.addChild(bubble); } public function showOpenTable(_arg1:Number, _arg2:Number):void{ bubble = new BubbleOpenTable(); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } public function showWaiting(_arg1:Number, _arg2:Number, _arg3:Array):void{ bubble = new BubbleWaiting(); setText(bubble.possibleNoOfPlayersText, getPossibleNoOfPlayersString(_arg3)); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } public function showWaitingOrStart(_arg1:Number, _arg2:Number, _arg3:Array):void{ bubble = new BubbleWaitingOrStart(); setText(bubble.possibleNoOfPlayersText, getPossibleNoOfPlayersString(_arg3)); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } public function showStart(_arg1:Number, _arg2:Number):void{ bubble = new BubbleStart(); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } public function showInvite(_arg1:Number, _arg2:Number):void{ bubble = new BubbleInvite(); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } public function showJoinTable(_arg1:Number, _arg2:Number):void{ bubble = new BubbleJoinTable(); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } public function showView(_arg1:Number, _arg2:Number):void{ bubble = new BubbleView(); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } public function showPlaying(_arg1:Number, _arg2:Number):void{ bubble = new BubblePlaying(); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } public function showWaitingHost(_arg1:Number, _arg2:Number):void{ bubble = new BubbleWaitingHost(); setPosition(_arg1, _arg2, DIRECTION_UPLEFT); this.addChild(bubble); } private function setText(_arg1:TextField, _arg2:String):void{ var _local5:Rectangle; var _local3:Rectangle = _arg1.getBounds(bubble); var _local4:Rectangle = bubble.bubble.getBounds(bubble); _arg1.embedFonts = false; _arg1.autoSize = "center"; _arg1.text = _arg2; _local5 = _arg1.getBounds(bubble); if (_local5.width > _local3.width){ bubble.bubble.width = ((_local5.width + _local4.width) - _local3.width); }; if (_local5.height > _local3.height){ bubble.bubble.height = ((_local5.height + _local4.height) - _local3.height); }; } private function setPosition(_arg1:Number, _arg2:Number, _arg3:int):void{ var _local4:Rectangle; switch (_arg3){ case DIRECTION_DOWNRIGHT: bubble.bubble.gotoAndStop("downRight"); break; case DIRECTION_DOWNLEFT: bubble.bubble.gotoAndStop("downLeft"); break; case DIRECTION_UPRIGHT: bubble.bubble.gotoAndStop("upRight"); break; case DIRECTION_UPLEFT: bubble.bubble.gotoAndStop("upLeft"); break; }; _local4 = bubble.getBounds(bubble); switch (_arg3){ case DIRECTION_DOWNRIGHT: this.x = (_arg1 - _local4.right); this.y = (_arg2 - _local4.bottom); break; case DIRECTION_DOWNLEFT: this.x = (_arg1 - _local4.left); this.y = (_arg2 - _local4.bottom); break; case DIRECTION_UPRIGHT: this.x = (_arg1 - _local4.right); this.y = (_arg2 - _local4.top); break; case DIRECTION_UPLEFT: this.x = (_arg1 - _local4.left); this.y = (_arg2 - _local4.top); break; }; } private function getPossibleNoOfPlayersString(_arg1:Array):String{ var _local2:String; var _local3:int; var _local4:Boolean; var _local5:int; _local2 = _arg1[0]; _local3 = _arg1[0]; _local4 = false; _local5 = 1; while (_local5 < _arg1.length) { if (_arg1[_local5] == (_local3 + 1)){ if (!_local4){ _local2 = (_local2 + " - "); _local4 = true; }; } else { if (_local4){ _local2 = (_local2 + ((_local3 + ", ") + _arg1[_local5])); } else { _local2 = (_local2 + (", " + _arg1[_local5])); }; _local4 = false; }; _local3 = _arg1[_local5]; _local5++; }; if (_local4){ _local2 = (_local2 + _local3); }; return (_local2); } } }//package com.novelgames.lobby
Section 5
//BubbleInvite (com.novelgames.lobby.BubbleInvite) package com.novelgames.lobby { import flash.display.*; public dynamic class BubbleInvite extends MovieClip { public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 6
//BubbleJoinTable (com.novelgames.lobby.BubbleJoinTable) package com.novelgames.lobby { import flash.display.*; public dynamic class BubbleJoinTable extends MovieClip { public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 7
//BubbleName (com.novelgames.lobby.BubbleName) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class BubbleName extends MovieClip { public var nameText:TextField; public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 8
//BubbleOpenTable (com.novelgames.lobby.BubbleOpenTable) package com.novelgames.lobby { import flash.display.*; public dynamic class BubbleOpenTable extends MovieClip { public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 9
//BubblePlaying (com.novelgames.lobby.BubblePlaying) package com.novelgames.lobby { import flash.display.*; public dynamic class BubblePlaying extends MovieClip { public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 10
//BubbleStart (com.novelgames.lobby.BubbleStart) package com.novelgames.lobby { import flash.display.*; public dynamic class BubbleStart extends MovieClip { public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 11
//BubbleWaiting (com.novelgames.lobby.BubbleWaiting) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class BubbleWaiting extends MovieClip { public var possibleNoOfPlayersText:TextField; public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 12
//BubbleWaitingHost (com.novelgames.lobby.BubbleWaitingHost) package com.novelgames.lobby { import flash.display.*; public dynamic class BubbleWaitingHost extends MovieClip { public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 13
//BubbleWaitingOrStart (com.novelgames.lobby.BubbleWaitingOrStart) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class BubbleWaitingOrStart extends MovieClip { public var possibleNoOfPlayersText:TextField; public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 14
//BubbleView (com.novelgames.lobby.BubbleView) package com.novelgames.lobby { import flash.display.*; public dynamic class BubbleView extends MovieClip { public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 15
//BubbleYou (com.novelgames.lobby.BubbleYou) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class BubbleYou extends MovieClip { public var nameText:TextField; public var bubble:MovieClip; } }//package com.novelgames.lobby
Section 16
//ChatBubble (com.novelgames.lobby.ChatBubble) package com.novelgames.lobby { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import flash.utils.*; import flash.ui.*; public class ChatBubble extends MovieClip { private var playerIndex:int; private var bubble:MovieClip; private var blocker:MovieClip; private var stayTimer:Timer; private var startHideTime:int; private var hideTimer:Timer; public function showInput(_arg1:int):void{ this.playerIndex = _arg1; bubble = new ChatInputBubble(); this.addChild(bubble); bubble.text.embedFonts = false; bubble.text.maxChars = Object(parent).chatMaxLength; bubble.text.addEventListener(FocusEvent.FOCUS_IN, onInputTextFocus); bubble.text.addEventListener(KeyboardEvent.KEY_DOWN, onInputTextKeyDown); blocker = new RoomInsideMask(); blocker.alpha = 0; blocker.addEventListener(MouseEvent.MOUSE_DOWN, startHide); this.addChildAt(blocker, 0); updatePosition(); } public function showText(_arg1:int, _arg2:String):void{ var _local3:Number; var _local4:Number; var _local5:Rectangle; var _local6:Rectangle; this.playerIndex = _arg1; bubble = new ChatTextBubble(); this.addChild(bubble); updatePosition(); _local3 = bubble.messageText.width; _local4 = bubble.messageText.height; bubble.nameText.embedFonts = false; bubble.nameText.text = Object(parent).gamePlayerInfos[_arg1].name; bubble.messageText.embedFonts = false; bubble.messageText.autoSize = "left"; bubble.messageText.text = _arg2; if (_local4 < bubble.messageText.height){ _local5 = bubble.background.getBounds(bubble); bubble.background.width = (bubble.background.width + (bubble.messageText.width - _local3)); bubble.background.height = (bubble.background.height + (bubble.messageText.height - _local4)); _local6 = bubble.background.getBounds(bubble); bubble.nameText.x = (bubble.nameText.x + (_local6.left - _local5.left)); bubble.nameText.y = (bubble.nameText.y + (_local6.top - _local5.top)); bubble.messageText.x = (bubble.messageText.x + (_local6.left - _local5.left)); bubble.messageText.y = (bubble.messageText.y + (_local6.top - _local5.top)); }; this.addEventListener(MouseEvent.MOUSE_DOWN, startHide); this.mouseChildren = false; updatePosition(); stayTimer = new Timer(Object(parent).chatStayTime, 1); stayTimer.addEventListener(TimerEvent.TIMER, startHide); stayTimer.start(); } private function updatePosition():void{ var _local2:Point; var _local1:Object = Object(parent.parent).getChatBubblePosition(playerIndex); bubble.background.gotoAndStop(_local1.direction); _local2 = new Point(0, 0); _local2 = bubble.background.point.localToGlobal(_local2); bubble.x = (bubble.x + (_local1.x - _local2.x)); bubble.y = (bubble.y + (_local1.y - _local2.y)); } private function onInputTextFocus(_arg1:FocusEvent):void{ bubble.typeText.visible = false; } private function onInputTextKeyDown(_arg1:KeyboardEvent):void{ if (_arg1.keyCode != Keyboard.ENTER){ return; }; bubble.text.type = TextFieldType.DYNAMIC; bubble.text.selectable = false; bubble.text.removeEventListener(FocusEvent.FOCUS_IN, onInputTextFocus); bubble.text.removeEventListener(KeyboardEvent.KEY_DOWN, onInputTextKeyDown); Object(parent).doSendChatMessage(bubble.text.text); startHide(); } private function startHide(_arg1:Event=null):void{ if (blocker){ this.removeChild(blocker); blocker = null; }; if (stayTimer){ stayTimer.stop(); }; this.mouseEnabled = false; startHideTime = getTimer(); hideTimer = new Timer(1, 0); hideTimer.addEventListener(TimerEvent.TIMER, onHideTime); hideTimer.start(); } private function onHideTime(_arg1:TimerEvent):void{ var _local2:Number = ((getTimer() - startHideTime) / Object(parent).chatHideTime); _arg1.updateAfterEvent(); if (_local2 > 1){ _local2 = 1; }; this.alpha = (1 - _local2); if (_local2 == 1){ hideTimer.stop(); parent.removeChild(this); }; } } }//package com.novelgames.lobby
Section 17
//ChatInputBubble (com.novelgames.lobby.ChatInputBubble) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class ChatInputBubble extends MovieClip { public var background:MovieClip; public var typeText:MovieClip; public var text:TextField; } }//package com.novelgames.lobby
Section 18
//ChatTextBubble (com.novelgames.lobby.ChatTextBubble) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class ChatTextBubble extends MovieClip { public var background:MovieClip; public var messageText:TextField; public var nameText:TextField; } }//package com.novelgames.lobby
Section 19
//EmailPage (com.novelgames.lobby.EmailPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class EmailPage extends MovieClip { public var ownEmailText:TextField; public var sendButton:SimpleButton; public var friendEmailsText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 20
//EnterDialog (com.novelgames.lobby.EnterDialog) package com.novelgames.lobby { import flash.display.*; import flash.events.*; import flash.net.*; import flash.external.*; public class EnterDialog extends MovieClip { private var box:MovieClip; public function show():void{ var _local1:* = parent; if (!getShouldPrompt()){ _local1.doJoinRoom(); return; }; switch (_local1.enterType){ case "name": if (_local1.allowLoginThroughFacebook){ box = new NamePage(); } else { box = new NameNoFacebookPage(); }; break; case "nameEmail": if (_local1.allowLoginThroughFacebook){ box = new NameEmailPage(); } else { box = new NameEmailNoFacebookPage(); }; break; case "login": if (((_local1.allowLoginThroughFacebook) && (_local1.allowEnterAsGuest))){ box = new LoginPage(); } else { if (_local1.allowLoginThroughFacebook){ box = new LoginNoGuestPage(); } else { if (_local1.allowEnterAsGuest){ box = new LoginNoFacebookPage(); } else { box = new LoginNoGuestFacebookPage(); }; }; }; break; case "facebook": if (_local1.allowEnterAsGuest){ box = new FacebookPage(); } else { box = new FacebookNoGuestPage(); }; }; this.addChild(box); initializeBox(); } public function showFailed(_arg1:String=null):void{ var _local2:* = parent; switch (_local2.enterType){ case "name": if (_local2.allowLoginThroughFacebook){ box = new NameFailedPage(); } else { box = new NameNoFacebookFailedPage(); }; break; case "nameEmail": if (_local2.allowLoginThroughFacebook){ box = new NameEmailFailedPage(); } else { box = new NameEmailNoFacebookFailedPage(); }; break; case "login": if (((_local2.allowLoginThroughFacebook) && (_local2.allowEnterAsGuest))){ box = new LoginFailedPage(); } else { if (_local2.allowLoginThroughFacebook){ box = new LoginNoGuestFailedPage(); } else { if (_local2.allowEnterAsGuest){ box = new LoginNoFacebookFailedPage(); } else { box = new LoginNoGuestFacebookFailedPage(); }; }; }; break; case "facebook": if (_local2.allowEnterAsGuest){ box = new FacebookFailedPage(); } else { box = new FacebookNoGuestFailedPage(); }; }; this.addChild(box); initializeBox(); initializeReasonText(_arg1); } private function getShouldPrompt():Boolean{ var _local1:* = parent; switch (_local1.enterType){ case "name": case "nameEmail": return ((_local1.playerNameInput == null)); case "login": return ((_local1.playerID == null)); case "facebookUserID": return ((_local1.facebookUserID == null)); case "noPrompt": return (false); }; return (true); } private function initializeBox():void{ var _local1:* = parent; if (box.nameText){ box.nameText.embedFonts = false; box.nameText.text = ((_local1.playerNameInput == null)) ? "" : _local1.playerNameInput; }; if (box.emailText){ box.emailText.embedFonts = false; box.emailText.text = ((_local1.playerEmail == null)) ? "" : _local1.playerEmail; }; if (box.usernameText){ box.usernameText.embedFonts = false; box.usernameText.text = ((_local1.playerUsername == null)) ? "" : _local1.playerUsername; }; if (box.passwordText){ box.passwordText.embedFonts = false; box.passwordText.text = ((_local1.playerPassword == null)) ? "" : _local1.playerPassword; }; if (box.submitButton){ box.submitButton.addEventListener(MouseEvent.CLICK, onSubmitButtonClicked); }; if (box.forgetPasswordButton){ box.forgetPasswordButton.addEventListener(MouseEvent.CLICK, onForgetPasswordButtonClicked); box.forgetPasswordButton.buttonMode = true; }; if (box.facebookLoginButton){ box.facebookLoginButton.addEventListener(MouseEvent.CLICK, onFacebookLoginButtonClicked); }; if (box.registerButton){ box.registerButton.addEventListener(MouseEvent.CLICK, onRegisterButtonClicked); }; if (box.enterAsGuestButton){ box.enterAsGuestButton.addEventListener(MouseEvent.CLICK, onSubmitAsGuestButtonClicked); }; box.closeButton.addEventListener(MouseEvent.CLICK, _local1.doHideDialog); } private function onForgetPasswordButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; navigateToURL(new URLRequest(_local2.forgetPasswordURL), "_blank"); } private function onFacebookLoginButtonClicked(_arg1:MouseEvent):void{ var _local3:String; var _local4:URLVariables; var _local2:* = parent; if (box != null){ this.removeChild(box); box = null; }; box = new FacebookContinuePage(); box.continueButton.addEventListener(MouseEvent.CLICK, onContinueButtonClicked); this.addChild(box); _local4 = new URLVariables(); _local4.action = "login"; _local3 = _local2.facebookLoginURL; _local3 = _local2.getAddedBaseURL(_local3); if (ExternalInterface.available){ ExternalInterface.call("window.open", ((_local3 + "?") + _local4.toString()), "FacebookLoginWindow", "width=400,height=400,directories=no,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,toolbar=no"); } else { navigateToURL(new URLRequest(((_local3 + "?") + _local4.toString())), "FacebookLoginWindow"); }; } private function onContinueButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; _local2.doShowEnter(); } private function onRegisterButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; navigateToURL(new URLRequest(_local2.registerURL), "_blank"); } private function onSubmitAsGuestButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; _local2.playerNameInput = _local2.guestName; _local2.playerUsername = null; _local2.playerPassword = null; _local2.doJoinRoom(); } private function onSubmitButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; if (box.nameText){ _local2.playerNameInput = box.nameText.text; }; if (box.emailText){ _local2.playerEmail = box.emailText.text; }; if (box.usernameText){ _local2.playerUsername = box.usernameText.text; }; if (box.passwordText){ _local2.playerPassword = box.passwordText.text; }; _local2.doJoinRoom(); } private function initializeReasonText(_arg1:String=null):void{ if (!box.reasonText){ return; }; switch (_arg1){ case "nameRejected": box.reasonText.gotoAndStop("nameRejected"); break; case "loginFailed": box.reasonText.gotoAndStop("loginFailed"); break; case "roomFull": box.reasonText.gotoAndStop("roomFull"); break; default: box.reasonText.gotoAndStop("enterFailed"); break; }; } } }//package com.novelgames.lobby
Section 21
//FacebookContinuePage (com.novelgames.lobby.FacebookContinuePage) package com.novelgames.lobby { import flash.display.*; public dynamic class FacebookContinuePage extends MovieClip { public var continueButton:SimpleButton; } }//package com.novelgames.lobby
Section 22
//FacebookFailedPage (com.novelgames.lobby.FacebookFailedPage) package com.novelgames.lobby { import flash.display.*; public dynamic class FacebookFailedPage extends MovieClip { public var reasonText:MovieClip; public var facebookLoginButton:SimpleButton; public var closeButton:SimpleButton; public var enterAsGuestButton:SimpleButton; } }//package com.novelgames.lobby
Section 23
//FacebookNoGuestFailedPage (com.novelgames.lobby.FacebookNoGuestFailedPage) package com.novelgames.lobby { import flash.display.*; public dynamic class FacebookNoGuestFailedPage extends MovieClip { public var reasonText:MovieClip; public var facebookLoginButton:SimpleButton; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 24
//FacebookNoGuestPage (com.novelgames.lobby.FacebookNoGuestPage) package com.novelgames.lobby { import flash.display.*; public dynamic class FacebookNoGuestPage extends MovieClip { public var facebookLoginButton:SimpleButton; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 25
//FacebookPage (com.novelgames.lobby.FacebookPage) package com.novelgames.lobby { import flash.display.*; public dynamic class FacebookPage extends MovieClip { public var facebookLoginButton:SimpleButton; public var closeButton:SimpleButton; public var enterAsGuestButton:SimpleButton; } }//package com.novelgames.lobby
Section 26
//InviteDialog (com.novelgames.lobby.InviteDialog) package com.novelgames.lobby { import flash.display.*; public dynamic class InviteDialog extends MovieClip { public var tableMask:MovieClip; public var acceptButton:SimpleButton; public var rejectButton:SimpleButton; } }//package com.novelgames.lobby
Section 27
//Lobby (com.novelgames.lobby.Lobby) package com.novelgames.lobby { import flash.display.*; import flash.events.*; import flash.geom.*; import fl.core.*; import flash.utils.*; import flash.xml.*; import flash.net.*; import flash.external.*; public class Lobby extends UIComponent { private var __siteID:String; private var __gameID:String; private var __gameName:String; private var __gameDescription:String; private var __gamePictureURL:String; private var __possibleNoOfPlayers:Array; private var __robotName:String; private var __lobbyURLGetGameInfo:String; private var __lobbyURLJoinRoom:String; private var __lobbyURLSendMessages:String; private var __lobbyURLGetMessages:String; private var __savePictureURL:String; private var __forgetPasswordURL:String; private var __facebookLoginURL:String; private var __registerURL:String; private var __actionStartGame:String; private var __actionReceiveGameMessage:String; private var __actionReceiveChatMessage:String; private var __actionPlayerDisconnected:String; private var __actionDisconnected:String; private var __lobbyDefaultFilter:String; private var __enterType:String; private var __lobbyType:String; private var __siteIDFlashVars:String; private var __gameIDFlashVars:String; private var __gameNameFlashVars:String; private var __gameDescriptionFlashVars:String; private var __gamePictureURLFlashVars:String; private var __playerIDFlashVars:String; private var __playerNameFlashVars:String; private var __playerPictureURLFlashVars:String; private var __playerFacebookUserIDFlashVars:String; private var __playerFacebookUserNameFlashVars:String; private var __playerFacebookUserPictureFlashVars:String; private var __playerFacebookFriendIDsFlashVars:String; private var __tablePlayerNamesFlashVars:String; private var __tableIDFlashVars:String; private var __tableNoOfPlayersFlashVars:String; private var __tableNoOfRobotsFlashVars:String; private var __robotNameFlashVars:String; private var __allowEnterAsGuest:Boolean; private var __allowLoginThroughFacebook:Boolean; private var __guestName:String; private var __hashKey:String; private var __encrypted:Boolean; private var __shareURL:String; private var __shareFacebookURL:String; private var __shareTwitterURL:String; private var __shareMySpaceURL:String; private var __shareSendEmailURL:String; private var __shareShowFacebook:Boolean; private var __shareShowTwitter:Boolean; private var __shareShowMySpace:Boolean; private var __shareShowSendEmail:Boolean; private var __afterJoinRoomAction:String; private var __afterJoinTableAction:String; private var __afterGameEndedAction:String; private var __roomInsideScrollDistance:Number; private var __roomInsideScrollSpeed:Number; private var __chatEnabled:Boolean; private var __chatShowBubble:Boolean; private var __chatMaxLength:int; private var __chatStayTime:int; private var __chatHideTime:int; private var playerCustomShareText:String; private var playerCustomSharePicturePNG:ByteArray; private var playerCustomSharePictureURL:String; private var playerCustomExtra:String; public var playerNameInput:String; public var playerEmail:String; public var playerID:String; public var playerUsername:String; public var playerPassword:String; public var playerPictureURL:String; public var playerFacebookUserID:String; public var playerFacebookUserName:String; public var playerFacebookUserPicture:String; public var playerFacebookFriendIDs:Array; public var roomID:int; public var playerName:String; public var playerUID:String; public var tableUID:String; public var extraKey:String; private var rooms:Rooms; public var roomInside:RoomInside; private var autoMatchDialog:AutoMatchDialog; private var joiningTableUID:String; private var invitedPlayerUID:String; private var currentSendMessageID:int; private var messagesToSend:Array; private var isSendingMessages:Boolean; private var currentGetMessageID:int; private var onGetMessages:Function; private var getMessagesURLLoader:URLLoader; private var playingPlayerInfos:Array; public var selfIndex:int; public var gamePlayerInfos:Array; public var playIndex:int; private var isReceivingMessages:Boolean; private var receivedMessages:Array; private var sendingGameMessages:Array; private var synchronizeInfos:Object; private var synchronizeTime:int; private var synchronizePlayerTimes:Array; private var timedSynchronizeInfos:Array; private var timedSynchronizeTimer:Timer; public var dialog:MovieClip; private var playerRanks:Array; private var shareFinishedAction:Function; private var drawCalled:Boolean; override protected function configUI():void{ super.configUI(); __siteID = "1"; __gameID = "1"; __gameName = ""; __gameDescription = ""; __gamePictureURL = ""; __possibleNoOfPlayers = [2]; __robotName = ""; __lobbyURLGetGameInfo = "getGameInfo.php"; __lobbyURLJoinRoom = "joinRoom.php"; __lobbyURLSendMessages = "sendMessages.php"; __lobbyURLGetMessages = "getMessages.php"; __savePictureURL = "savePicture.php"; __forgetPasswordURL = "forgetPassword.php"; __facebookLoginURL = "facebookLogin.php"; __registerURL = "register.php"; __actionStartGame = "startGame"; __actionReceiveGameMessage = "receiveGameMessage"; __actionReceiveChatMessage = ""; __actionPlayerDisconnected = "playerDisconnected"; __actionDisconnected = "disconnected"; __enterType = "name"; __lobbyType = "normal"; __siteIDFlashVars = "siteID"; __gameIDFlashVars = "gameID"; __gameNameFlashVars = "gameName"; __gameDescriptionFlashVars = "gameDescription"; __gamePictureURLFlashVars = "gamePictureURL"; __playerIDFlashVars = "playerID"; __playerNameFlashVars = "playerName"; __playerPictureURLFlashVars = "playerPictureURL"; __playerFacebookUserIDFlashVars = "playerFacebookUserID"; __playerFacebookUserNameFlashVars = "playerFacebookUserName"; __playerFacebookUserPictureFlashVars = "playerFacebookUserPicture"; __playerFacebookFriendIDsFlashVars = "playerFacebookFriendIDs"; __tablePlayerNamesFlashVars = "tablePlayerNames"; __tableIDFlashVars = "tableID"; __tableNoOfPlayersFlashVars = "tableNoOfPlayers"; __tableNoOfRobotsFlashVars = "tableNoOfRobots"; __robotNameFlashVars = "robotName"; __allowEnterAsGuest = true; __allowLoginThroughFacebook = false; __guestName = "Guest"; __hashKey = ""; __encrypted = false; __shareURL = ""; __shareFacebookURL = "shareFacebook.php"; __shareTwitterURL = "shareTwitter.php"; __shareMySpaceURL = "shareMySpace.php"; __shareSendEmailURL = "shareSendEmail.php"; __shareShowFacebook = true; __shareShowTwitter = true; __shareShowMySpace = true; __shareShowSendEmail = true; __afterJoinRoomAction = ""; __afterJoinTableAction = ""; __afterGameEndedAction = ""; __roomInsideScrollDistance = 100; __roomInsideScrollSpeed = 600; __chatEnabled = true; __chatShowBubble = true; __chatMaxLength = 100; __chatStayTime = 10000; __chatHideTime = 200; playerNameInput = null; playerEmail = null; playerID = null; playerUsername = null; playerPassword = null; playerPictureURL = null; playerFacebookUserID = null; playerFacebookUserName = null; playerFacebookUserPicture = null; playerFacebookFriendIDs = null; drawCalled = false; } public function set siteID(_arg1:String):void{ __siteID = _arg1; } public function get siteID():String{ return (__siteID); } public function set gameID(_arg1:String):void{ __gameID = _arg1; } public function get gameID():String{ return (__gameID); } public function set gameName(_arg1:String):void{ __gameName = _arg1; } public function get gameName():String{ return (__gameName); } public function set gameDescription(_arg1:String):void{ __gameDescription = _arg1; } public function get gameDescription():String{ return (__gameDescription); } public function set gamePictureURL(_arg1:String):void{ __gamePictureURL = _arg1; } public function get gamePictureURL():String{ return (__gamePictureURL); } public function set possibleNoOfPlayers(_arg1:Array):void{ _arg1.sort(Array.NUMERIC); __possibleNoOfPlayers = _arg1; } public function get possibleNoOfPlayers():Array{ return (__possibleNoOfPlayers); } public function set robotName(_arg1:String):void{ __robotName = _arg1; } public function get robotName():String{ return (__robotName); } public function set lobbyURLGetGameInfo(_arg1:String):void{ __lobbyURLGetGameInfo = _arg1; } public function get lobbyURLGetGameInfo():String{ return (__lobbyURLGetGameInfo); } public function set lobbyURLJoinRoom(_arg1:String):void{ __lobbyURLJoinRoom = _arg1; } public function get lobbyURLJoinRoom():String{ return (__lobbyURLJoinRoom); } public function set lobbyURLSendMessages(_arg1:String):void{ __lobbyURLSendMessages = _arg1; } public function get lobbyURLSendMessages():String{ return (__lobbyURLSendMessages); } public function set lobbyURLGetMessages(_arg1:String):void{ __lobbyURLGetMessages = _arg1; } public function get lobbyURLGetMessages():String{ return (__lobbyURLGetMessages); } public function set savePictureURL(_arg1:String):void{ __savePictureURL = _arg1; } public function get savePictureURL():String{ return (__savePictureURL); } public function set forgetPasswordURL(_arg1:String):void{ __forgetPasswordURL = _arg1; } public function get forgetPasswordURL():String{ return (__forgetPasswordURL); } public function set facebookLoginURL(_arg1:String):void{ __facebookLoginURL = _arg1; } public function get facebookLoginURL():String{ return (__facebookLoginURL); } public function set registerURL(_arg1:String):void{ __registerURL = _arg1; } public function get registerURL():String{ return (__registerURL); } public function set actionStartGame(_arg1:String):void{ __actionStartGame = _arg1; } public function get actionStartGame():String{ return (__actionStartGame); } public function set actionReceiveGameMessage(_arg1:String):void{ __actionReceiveGameMessage = _arg1; } public function get actionReceiveGameMessage():String{ return (__actionReceiveGameMessage); } public function set actionReceiveChatMessage(_arg1:String):void{ __actionReceiveChatMessage = _arg1; } public function get actionReceiveChatMessage():String{ return (__actionReceiveChatMessage); } public function set actionPlayerDisconnected(_arg1:String):void{ __actionPlayerDisconnected = _arg1; } public function get actionPlayerDisconnected():String{ return (__actionPlayerDisconnected); } public function set actionDisconnected(_arg1:String):void{ __actionDisconnected = _arg1; } public function get actionDisconnected():String{ return (__actionDisconnected); } public function set lobbyDefaultFilter(_arg1:String):void{ __lobbyDefaultFilter = _arg1; } public function get lobbyDefaultFilter():String{ return (__lobbyDefaultFilter); } public function set enterType(_arg1:String):void{ __enterType = _arg1; } public function get enterType():String{ return (__enterType); } public function set lobbyType(_arg1:String):void{ __lobbyType = _arg1; } public function get lobbyType():String{ return (__lobbyType); } public function set siteIDFlashVars(_arg1:String):void{ __siteIDFlashVars = _arg1; } public function get siteIDFlashVars():String{ return (__siteIDFlashVars); } public function set gameIDFlashVars(_arg1:String):void{ __gameIDFlashVars = _arg1; } public function get gameIDFlashVars():String{ return (__gameIDFlashVars); } public function set gameNameFlashVars(_arg1:String):void{ __gameNameFlashVars = _arg1; } public function get gameNameFlashVars():String{ return (__gameNameFlashVars); } public function set gameDescriptionFlashVars(_arg1:String):void{ __gameDescriptionFlashVars = _arg1; } public function get gameDescriptionFlashVars():String{ return (__gameDescriptionFlashVars); } public function set gamePictureURLFlashVars(_arg1:String):void{ __gamePictureURLFlashVars = _arg1; } public function get gamePictureURLFlashVars():String{ return (__gamePictureURLFlashVars); } public function set playerIDFlashVars(_arg1:String):void{ __playerIDFlashVars = _arg1; } public function get playerIDFlashVars():String{ return (__playerIDFlashVars); } public function set playerNameFlashVars(_arg1:String):void{ __playerNameFlashVars = _arg1; } public function get playerNameFlashVars():String{ return (__playerNameFlashVars); } public function set playerPictureURLFlashVars(_arg1:String):void{ __playerPictureURLFlashVars = _arg1; } public function get playerPictureURLFlashVars():String{ return (__playerPictureURLFlashVars); } public function set playerFacebookUserIDFlashVars(_arg1:String):void{ __playerFacebookUserIDFlashVars = _arg1; } public function get playerFacebookUserIDFlashVars():String{ return (__playerFacebookUserIDFlashVars); } public function set playerFacebookUserNameFlashVars(_arg1:String):void{ __playerFacebookUserNameFlashVars = _arg1; } public function get playerFacebookUserNameFlashVars():String{ return (__playerFacebookUserNameFlashVars); } public function set playerFacebookUserPictureFlashVars(_arg1:String):void{ __playerFacebookUserPictureFlashVars = _arg1; } public function get playerFacebookUserPictureFlashVars():String{ return (__playerFacebookUserPictureFlashVars); } public function set playerFacebookFriendIDsFlashVars(_arg1:String):void{ __playerFacebookFriendIDsFlashVars = _arg1; } public function get playerFacebookFriendIDsFlashVars():String{ return (__playerFacebookFriendIDsFlashVars); } public function set tablePlayerNamesFlashVars(_arg1:String):void{ __tablePlayerNamesFlashVars = _arg1; } public function get tablePlayerNamesFlashVars():String{ return (__tablePlayerNamesFlashVars); } public function set tableIDFlashVars(_arg1:String):void{ __tableIDFlashVars = _arg1; } public function get tableIDFlashVars():String{ return (__tableIDFlashVars); } public function set tableNoOfPlayersFlashVars(_arg1:String):void{ __tableNoOfPlayersFlashVars = _arg1; } public function get tableNoOfPlayersFlashVars():String{ return (__tableNoOfPlayersFlashVars); } public function set tableNoOfRobotsFlashVars(_arg1:String):void{ __tableNoOfRobotsFlashVars = _arg1; } public function get tableNoOfRobotsFlashVars():String{ return (__tableNoOfRobotsFlashVars); } public function set robotNameFlashVars(_arg1:String):void{ __robotNameFlashVars = _arg1; } public function get robotNameFlashVars():String{ return (__robotNameFlashVars); } public function set allowEnterAsGuest(_arg1:Boolean):void{ __allowEnterAsGuest = _arg1; } public function get allowEnterAsGuest():Boolean{ return (__allowEnterAsGuest); } public function set allowLoginThroughFacebook(_arg1:Boolean):void{ __allowLoginThroughFacebook = _arg1; } public function get allowLoginThroughFacebook():Boolean{ return (__allowLoginThroughFacebook); } public function set guestName(_arg1:String):void{ __guestName = _arg1; } public function get guestName():String{ return (__guestName); } public function set hashKey(_arg1:String):void{ __hashKey = _arg1; } public function get hashKey():String{ return (__hashKey); } public function set encrypted(_arg1:Boolean):void{ __encrypted = _arg1; } public function get encrypted():Boolean{ return (__encrypted); } public function set shareURL(_arg1:String):void{ __shareURL = _arg1; } public function get shareURL():String{ return (__shareURL); } public function set shareFacebookURL(_arg1:String):void{ __shareFacebookURL = _arg1; } public function get shareFacebookURL():String{ return (__shareFacebookURL); } public function set shareTwitterURL(_arg1:String):void{ __shareTwitterURL = _arg1; } public function get shareTwitterURL():String{ return (__shareTwitterURL); } public function set shareMySpaceURL(_arg1:String):void{ __shareMySpaceURL = _arg1; } public function get shareMySpaceURL():String{ return (__shareMySpaceURL); } public function set shareSendEmailURL(_arg1:String):void{ __shareSendEmailURL = _arg1; } public function get shareSendEmailURL():String{ return (__shareSendEmailURL); } public function set shareShowFacebook(_arg1:Boolean):void{ __shareShowFacebook = _arg1; } public function get shareShowFacebook():Boolean{ return (__shareShowFacebook); } public function set shareShowTwitter(_arg1:Boolean):void{ __shareShowTwitter = _arg1; } public function get shareShowTwitter():Boolean{ return (__shareShowTwitter); } public function set shareShowMySpace(_arg1:Boolean):void{ __shareShowMySpace = _arg1; } public function get shareShowMySpace():Boolean{ return (__shareShowMySpace); } public function set shareShowSendEmail(_arg1:Boolean):void{ __shareShowSendEmail = _arg1; } public function get shareShowSendEmail():Boolean{ return (__shareShowSendEmail); } public function set afterJoinRoomAction(_arg1:String):void{ __afterJoinRoomAction = _arg1; } public function get afterJoinRoomAction():String{ return (__afterJoinRoomAction); } public function set afterJoinTableAction(_arg1:String):void{ __afterJoinTableAction = _arg1; } public function get afterJoinTableAction():String{ return (__afterJoinTableAction); } public function set afterGameEndedAction(_arg1:String):void{ __afterGameEndedAction = _arg1; } public function get afterGameEndedAction():String{ return (__afterGameEndedAction); } public function set roomInsideScrollDistance(_arg1:Number):void{ __roomInsideScrollDistance = _arg1; } public function get roomInsideScrollDistance():Number{ return (__roomInsideScrollDistance); } public function set roomInsideScrollSpeed(_arg1:Number):void{ __roomInsideScrollSpeed = _arg1; } public function get roomInsideScrollSpeed():Number{ return (__roomInsideScrollSpeed); } public function set chatEnabled(_arg1:Boolean):void{ __chatEnabled = _arg1; } public function get chatEnabled():Boolean{ return (__chatEnabled); } public function set chatShowBubble(_arg1:Boolean):void{ __chatShowBubble = _arg1; } public function get chatShowBubble():Boolean{ return (__chatShowBubble); } public function set chatMaxLength(_arg1:int):void{ __chatMaxLength = _arg1; } public function get chatMaxLength():int{ return (__chatMaxLength); } public function set chatStayTime(_arg1:int):void{ __chatStayTime = _arg1; } public function get chatStayTime():int{ return (__chatStayTime); } public function set chatHideTime(_arg1:int):void{ __chatHideTime = _arg1; } public function get chatHideTime():int{ return (__chatHideTime); } public function showRooms():void{ doShowRooms(); } public function joinRoom(_arg1:int):void{ this.roomID = _arg1; doJoinRoom(); } public function startReceivingMessages():Boolean{ return (doStartReceivingMessages()); } public function stopReceivingMessages():Boolean{ return (doStopReceivingMessages()); } public function resetSynchronizeTime():void{ doResetSynchronizeTime(); } public function sendGameMessage(_arg1:Object, _arg2:String=null, _arg3:Boolean=false):void{ doSendGameMessage(_arg1, _arg2, _arg3); } public function robotSendGameMessage(_arg1:int, _arg2:Object, _arg3:String=null, _arg4:int=0):void{ doRobotSendGameMessage(_arg1, _arg2, _arg3, _arg4); } public function showChatInput():void{ doShowChatInput(); } public function sendChatMessage(_arg1:String):void{ doSendChatMessage(_arg1); } public function gameEnded(_arg1:Array, _arg2:String=null, _arg3:ByteArray=null, _arg4:String=null, _arg5:String=null):void{ doGameEnded(_arg1, _arg2, _arg3, _arg4, _arg5); } public function playAgain():void{ doPlayAgain(); } public function leaveTable():void{ doLeaveTable(); } public function disconnect():void{ doDisconnect(); } public function setPlayerID(_arg1:String):void{ this.playerID = _arg1; } public function setPlayerName(_arg1:String):void{ this.playerNameInput = _arg1; } public function setPlayerFacebookInfo(_arg1:String, _arg2:String, _arg3:String, _arg4:Array):void{ playerFacebookUserID = _arg1; playerFacebookUserName = _arg2; playerFacebookUserPicture = _arg3; playerFacebookFriendIDs = _arg4; playerName = playerFacebookUserName; playerNameInput = playerFacebookUserName; playerPictureURL = playerFacebookUserPicture; } override protected function draw():void{ if (drawCalled){ return; }; drawCalled = true; if (((((((!((siteIDFlashVars == null))) && (!((siteIDFlashVars == ""))))) && (!((root.loaderInfo.parameters[siteIDFlashVars] == null))))) && (!((root.loaderInfo.parameters[siteIDFlashVars] == ""))))){ siteID = root.loaderInfo.parameters[siteIDFlashVars]; }; if (((((((!((gameIDFlashVars == null))) && (!((gameIDFlashVars == ""))))) && (!((root.loaderInfo.parameters[gameIDFlashVars] == null))))) && (!((root.loaderInfo.parameters[gameIDFlashVars] == ""))))){ gameID = root.loaderInfo.parameters[gameIDFlashVars]; }; if (((((((!((gameNameFlashVars == null))) && (!((gameNameFlashVars == ""))))) && (!((root.loaderInfo.parameters[gameNameFlashVars] == null))))) && (!((root.loaderInfo.parameters[gameNameFlashVars] == ""))))){ gameName = root.loaderInfo.parameters[gameNameFlashVars]; }; if (((((((!((gameDescriptionFlashVars == null))) && (!((gameDescriptionFlashVars == ""))))) && (!((root.loaderInfo.parameters[gameDescriptionFlashVars] == null))))) && (!((root.loaderInfo.parameters[gameDescriptionFlashVars] == ""))))){ gameDescription = root.loaderInfo.parameters[gameDescriptionFlashVars]; }; if (((((((!((gamePictureURLFlashVars == null))) && (!((gamePictureURLFlashVars == ""))))) && (!((root.loaderInfo.parameters[gamePictureURLFlashVars] == null))))) && (!((root.loaderInfo.parameters[gamePictureURLFlashVars] == ""))))){ gamePictureURL = root.loaderInfo.parameters[gamePictureURLFlashVars]; }; if (((((!((playerIDFlashVars == null))) && (!((playerIDFlashVars == ""))))) && ((playerID == null)))){ playerID = root.loaderInfo.parameters[playerIDFlashVars]; }; if (((((!((playerNameFlashVars == null))) && (!((playerNameFlashVars == ""))))) && ((playerName == null)))){ playerNameInput = root.loaderInfo.parameters[playerNameFlashVars]; }; if (((((!((playerPictureURLFlashVars == null))) && (!((playerPictureURLFlashVars == ""))))) && ((playerPictureURL == null)))){ playerPictureURL = root.loaderInfo.parameters[playerPictureURLFlashVars]; }; if (((((!((playerFacebookUserIDFlashVars == null))) && (!((playerFacebookUserIDFlashVars == ""))))) && ((playerFacebookUserID == null)))){ playerFacebookUserID = root.loaderInfo.parameters[playerFacebookUserIDFlashVars]; }; if (((((!((playerFacebookUserNameFlashVars == null))) && (!((playerFacebookUserNameFlashVars == ""))))) && ((playerFacebookUserName == null)))){ playerFacebookUserName = root.loaderInfo.parameters[playerFacebookUserNameFlashVars]; if (playerFacebookUserName != null){ playerName = playerFacebookUserName; playerNameInput = playerFacebookUserName; }; }; if (((((!((playerFacebookUserPictureFlashVars == null))) && (!((playerFacebookUserPictureFlashVars == ""))))) && ((playerFacebookUserPicture == null)))){ playerFacebookUserPicture = root.loaderInfo.parameters[playerFacebookUserPictureFlashVars]; if (playerFacebookUserPicture){ playerPictureURL = playerFacebookUserPicture; }; }; if (((((!((playerFacebookFriendIDsFlashVars == null))) && (!((playerFacebookFriendIDsFlashVars == ""))))) && ((playerFacebookFriendIDs == null)))){ playerFacebookFriendIDs = ((root.loaderInfo.parameters[playerFacebookFriendIDsFlashVars] == null)) ? null : root.loaderInfo.parameters[playerFacebookFriendIDsFlashVars].split(","); }; if (((((((!((tablePlayerNamesFlashVars == null))) && (!((tablePlayerNamesFlashVars == ""))))) && (!((root.loaderInfo.parameters[(tablePlayerNamesFlashVars + "0")] == null))))) && (!((root.loaderInfo.parameters[(tablePlayerNamesFlashVars + "0")] == ""))))){ lobbyType = "autoMatch"; }; if (((((((!((tableIDFlashVars == null))) && (!((tableIDFlashVars == ""))))) && (!((root.loaderInfo.parameters[tableIDFlashVars] == null))))) && (!((root.loaderInfo.parameters[tableIDFlashVars] == ""))))){ lobbyType = "autoMatch"; }; if (((((((!((robotNameFlashVars == null))) && (!((robotNameFlashVars == ""))))) && (!((root.loaderInfo.parameters[robotNameFlashVars] == null))))) && (!((root.loaderInfo.parameters[robotNameFlashVars] == ""))))){ robotName = root.loaderInfo.parameters[robotNameFlashVars]; }; } public function doHide(_arg1:Event=null):void{ if (roomInside){ roomInside.hide(); }; while (numChildren > 0) { this.removeChild(getChildAt((numChildren - 1))); }; rooms = null; roomInside = null; autoMatchDialog = null; dialog = null; } public function doHideDialog(_arg1:Event=null):void{ if (dialog == null){ return; }; this.removeChild(dialog); dialog = null; } private function doShowRooms():void{ var _local1:URLVariables; var _local2:URLRequest; var _local3:URLLoader; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); _local1 = new URLVariables(); _local1.siteID = siteID; _local1.gameID = gameID; _local2 = new URLRequest(lobbyURLGetGameInfo); _local2.method = "POST"; _local2.data = _local1; _local3 = new URLLoader(); _local3.addEventListener(IOErrorEvent.IO_ERROR, doShowRoomsFailed); _local3.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doShowRoomsFailed); _local3.addEventListener(Event.COMPLETE, doShowRoomsFinished); _local3.load(_local2); } private function doShowRoomsFailed(_arg1:Event=null):void{ doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showLoadFailed(); } private function doShowRoomsFinished(_arg1:Event):void{ var xmlDocument:XMLDocument; var rootNode:XMLNode; var node:XMLNode; var roomInfos:Array; var roomID:int; var roomName:String; var roomCapacity:int; var noOfPlayers:int; var event = _arg1; var urlLoader:URLLoader = URLLoader(event.currentTarget); xmlDocument = new XMLDocument(); xmlDocument.ignoreWhite = false; try { xmlDocument.parseXML(urlLoader.data); roomInfos = new Array(); rootNode = xmlDocument.firstChild; node = rootNode.firstChild; while (node != null) { if (node.nodeName != "ROOMINFO"){ } else { roomID = int(node.attributes.roomID); roomName = node.attributes.roomName; roomCapacity = int(node.attributes.roomCapacity); noOfPlayers = int(node.attributes.noOfPlayers); roomInfos.push(new RoomInfo(roomID, roomName, roomCapacity, noOfPlayers)); }; node = node.nextSibling; }; if (roomInfos.length > 1){ doShowRoomInfos(roomInfos); } else { this.roomID = roomID; doHide(); doShowEnter(); }; } catch(e) { doShowRoomsFailed(); }; } private function doShowRoomInfos(_arg1:Array):void{ rooms = new Rooms(); this.addChild(rooms); rooms.show(_arg1); } public function doShowEnter():void{ if (allowLoginThroughFacebook){ if (playerFacebookUserID != null){ doJoinRoom(); } else { checkFacebookLogin(); }; } else { doShowEnterPage(); }; } private function doShowEnterAfterFacebookLogin(_arg1:Boolean):void{ if (_arg1){ doJoinRoom(); } else { doShowEnterPage(); }; } private function checkFacebookLogin():void{ var _local1:URLLoader; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); _local1 = new URLLoader(); _local1.addEventListener(Event.COMPLETE, onCheckFacebookLoginFinished); _local1.addEventListener(IOErrorEvent.IO_ERROR, onCheckFacebookLoginFailed); _local1.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onCheckFacebookLoginFailed); _local1.load(new URLRequest((facebookLoginURL + "?action=check"))); } private function onCheckFacebookLoginFinished(_arg1:Event):void{ var xml:XML; var i:int; var e:Error; var event = _arg1; var urlLoader:URLLoader = URLLoader(event.currentTarget); var data:String = urlLoader.data; try { xml = new XML(data); if (xml.name() != "FACEBOOKUSERINFO"){ throw (new Error()); }; playerFacebookUserID = xml.ID; playerFacebookUserName = xml.NAME; playerFacebookUserPicture = xml.PICTURE; playerFacebookFriendIDs = xml.FRIENDIDS.split(","); playerName = playerFacebookUserName; playerNameInput = playerFacebookUserName; playerPictureURL = playerFacebookUserPicture; doShowEnterAfterFacebookLogin(true); } catch(e) { doShowEnterAfterFacebookLogin(false); }; } private function onCheckFacebookLoginFailed(_arg1:Event):void{ doShowEnterAfterFacebookLogin(false); } private function doShowEnterPage():void{ doHideDialog(); dialog = new EnterDialog(); this.addChild(dialog); dialog.show(); } public function doJoinRoom():void{ var _local1:URLVariables; var _local2:URLRequest; var _local3:URLLoader; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); extraKey = null; _local1 = new URLVariables(); _local1.siteID = siteID; _local1.gameID = gameID; _local1.roomID = roomID; if (playerID != null){ _local1.playerID = playerID; }; if (playerNameInput != null){ _local1.playerName = playerNameInput; }; if (playerEmail != null){ _local1.playerEmail = playerEmail; }; if (playerUsername != null){ _local1.playerUsername = playerUsername; }; if (playerPassword != null){ _local1.playerPassword = playerPassword; }; if (playerPictureURL != null){ _local1.playerPictureURL = playerPictureURL; }; if (playerFacebookUserID != null){ _local1.playerFacebookUserID = playerFacebookUserID; }; _local1 = secureVariables(_local1); _local2 = new URLRequest(lobbyURLJoinRoom); _local2.method = "POST"; _local2.data = _local1; _local3 = new URLLoader(); _local3.addEventListener(IOErrorEvent.IO_ERROR, doJoinRoomFailed); _local3.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doJoinRoomFailed); _local3.addEventListener(Event.COMPLETE, doJoinRoomFinished); _local3.load(_local2); } private function secureVariables(_arg1:URLVariables):URLVariables{ var name:String; var value:String; var stringToHash:String; var encryptedParameters:String; var i:int; var urlVariables = _arg1; var theVariables:Array = new Array(); for (name in urlVariables) { value = urlVariables[name]; theVariables.push({name:name, value:value}); }; theVariables.sort(function (_arg1:Object, _arg2:Object):int{ if (_arg1.name < _arg2.name){ return (-1); }; if (_arg1.name > _arg2.name){ return (1); }; return (0); }); stringToHash = ""; i = 0; while (i < theVariables.length) { stringToHash = (stringToHash + theVariables[i].value); i = (i + 1); }; stringToHash = (stringToHash + hashKey); if (extraKey != null){ stringToHash = (stringToHash + extraKey); }; urlVariables.hash = MD5.md5String(stringToHash); if (encrypted){ encryptedParameters = getEncryptedParameters(urlVariables); urlVariables = new URLVariables(); urlVariables.encryptedParameters = encryptedParameters; }; return (urlVariables); } private function getEncryptedParameters(_arg1:URLVariables):String{ var _local7:String; var _local8:int; var _local2:String = _arg1.toString(); var _local3:ByteArray = new ByteArray(); var _local4:ByteArray = new ByteArray(); var _local5:Array = new Array(); var _local6 = ""; _local3.writeUTFBytes(_local2); _local4.writeUTFBytes(hashKey); _local4.writeByte(0); while ((_local4.length % 3) != 0) { _local4.writeByte(0); }; _local8 = 0; while (_local8 < _local3.length) { _local5[_local8] = ((_local3[_local8] + _local4[((_local8 * 3) % _local4.length)]) % 0x0100); _local8++; }; _local8 = 0; while (_local8 < _local5.length) { _local7 = _local5[_local8].toString(16); if (_local7.length <= 1){ _local7 = ("0" + _local7); }; _local6 = (_local6 + _local7); _local8++; }; return (_local6); } private function doJoinRoomFailed(_arg1:Event):void{ doShowJoinRoomFailed(); } private function doShowJoinRoomFailed(_arg1:String=null):void{ doHideDialog(); switch (enterType){ case "name": case "nameEmail": case "login": case "facebook": dialog = new EnterDialog(); this.addChild(dialog); dialog.showFailed(_arg1); break; case "noPrompt": dialog = new Status(); this.addChild(dialog); dialog.showJoinRoomFailed(); break; }; } private function doJoinRoomFinished(_arg1:Event):void{ var xmlDocument:XMLDocument; var rootNode:XMLNode; var node:XMLNode; var playerInfos:Array; var tableInfos:Array; var playerUID:String; var playerName:String; var playerPictureURL:String; var playerFacebookUserID:String; var possibleNoOfPlayers:Array; var tableUID:String; var playerUIDs:Array; var viewerUIDs:Array; var isPlaying:Boolean; var tableID:String; var event = _arg1; var urlLoader:URLLoader = URLLoader(event.currentTarget); xmlDocument = new XMLDocument(); xmlDocument.ignoreWhite = false; try { xmlDocument.parseXML(urlLoader.data); rootNode = xmlDocument.firstChild; if (rootNode.attributes.success != "true"){ doShowJoinRoomFailed(rootNode.attributes.reason); return; }; this.playerUID = rootNode.attributes.playerUID; this.playerNameInput = rootNode.attributes.playerNameInput; this.playerName = rootNode.attributes.playerName; this.extraKey = rootNode.attributes.extraKey; this.playerID = rootNode.attributes.playerID; this.playerPictureURL = rootNode.attributes.playerPictureURL; this.playerFacebookUserID = rootNode.attributes.playerFacebookUserID; playerInfos = new Array(); tableInfos = new Array(); node = rootNode.firstChild; while (node != null) { switch (node.nodeName){ case "PLAYERINFO": playerUID = node.attributes.playerUID; playerName = node.attributes.playerName; playerPictureURL = node.attributes.playerPictureURL; playerFacebookUserID = node.attributes.playerFacebookUserID; if (playerUID == this.playerUID){ playerInfos.unshift(new PlayerInfo(playerUID, playerName, playerPictureURL, playerFacebookUserID)); } else { playerInfos.push(new PlayerInfo(playerUID, playerName, playerPictureURL, playerFacebookUserID)); }; break; case "TABLEINFO": possibleNoOfPlayers = node.attributes.possibleNoOfPlayers.split(","); tableUID = node.attributes.tableUID; playerUIDs = node.attributes.playerUIDs.split(","); viewerUIDs = node.attributes.viewerUIDs.split(","); isPlaying = (node.attributes.isPlaying == "true"); tableID = node.attributes.tableID; tableInfos.push(new TableInfo(possibleNoOfPlayers, tableUID, playerUIDs, viewerUIDs, isPlaying, tableID)); break; }; node = node.nextSibling; }; doShowRoomInside(playerInfos, tableInfos); startSendMessages(); startGetMessages(); if (lobbyType == "autoMatch"){ roomInside.visible = false; doShowAutoMatchDialog(); doAutoMatchAction(); }; if (afterJoinRoomAction != ""){ var _local3 = Object(parent); _local3[afterJoinRoomAction](); }; } catch(e) { doShowJoinRoomFailed(); }; } private function doShowRoomInside(_arg1:Array, _arg2:Array):void{ doHide(); roomInside = new RoomInside(); this.addChild(roomInside); roomInside.show(_arg1, _arg2, robotName); } private function doShowAutoMatchDialog():void{ if (autoMatchDialog != null){ this.removeChild(autoMatchDialog); }; autoMatchDialog = new AutoMatchDialog(); this.addChild(autoMatchDialog); } private function doAutoMatchAction():void{ var _local1:Boolean; var _local2:Boolean; var _local3:int; var _local4:Array; var _local5:PlayerGroup; var _local6:PlayerGroup; var _local7:PlayerGroup; if (lobbyType != "autoMatch"){ return; }; if (autoMatchDialog == null){ return; }; _local1 = getTablePlayerNamesIsSet(); _local2 = getTableIDIsSet(); _local3 = getAutoMatchSelfIndex(); autoMatchDialog.update(); switch (roomInside.selfPlayerGroup.getState()){ case PlayerGroup.STATE_IDLE: if (_local1){ if (_local3 == 0){ doOpenTable(); } else { _local7 = roomInside.getPlayerPlayerGroupByName(root.loaderInfo.parameters[(tablePlayerNamesFlashVars + "0")]); if (_local7 == null){ break; }; if (((!((_local7.getState() == PlayerGroup.STATE_WAITING))) && (!((_local7.getState() == PlayerGroup.STATE_WAITINGORSTARTING))))){ break; }; if (_local7.players.length != _local3){ break; }; doJoinTable(_local7.table.tableInfo.tableUID); }; } else { if (_local2){ _local7 = roomInside.getTablePlayerGroupByTableID(root.loaderInfo.parameters[tableIDFlashVars]); if (_local7 == null){ doOpenTable(); } else { if ((((_local7.getState() == PlayerGroup.STATE_WAITING)) || ((_local7.getState() == PlayerGroup.STATE_WAITINGORSTARTING)))){ doJoinTable(_local7.table.tableInfo.tableUID); }; }; } else { _local4 = roomInside.getPlayerGroupsSortedByPlayerUID(); _local5 = findWaitingGroup(_local4); if (_local5 != null){ doJoinTable(_local5.table.tableInfo.tableUID); } else { doOpenTable(); }; }; }; break; case PlayerGroup.STATE_WAITING: if (_local1){ if (!checkAutoMatchIndexes(roomInside.selfPlayerGroup)){ doLeaveTable(); } else { if ((((_local3 == 0)) && (checkAutoMatchShouldInviteRobot(roomInside.selfPlayerGroup)))){ doInvite("robot"); }; }; } else { if (_local2){ if (!roomInside.selfPlayerGroup.getIsHost(this.playerUID)){ break; }; if ((((((((tableNoOfPlayersFlashVars == null)) || ((tableNoOfPlayersFlashVars == "")))) || ((root.loaderInfo.parameters[tableNoOfPlayersFlashVars] == null)))) || ((root.loaderInfo.parameters[tableNoOfPlayersFlashVars] == "")))){ break; }; if ((((((((tableNoOfRobotsFlashVars == null)) || ((tableNoOfRobotsFlashVars == "")))) || ((root.loaderInfo.parameters[tableNoOfRobotsFlashVars] == null)))) || ((root.loaderInfo.parameters[tableNoOfRobotsFlashVars] == "")))){ break; }; if (roomInside.selfPlayerGroup.players.length < (parseInt(root.loaderInfo.parameters[tableNoOfPlayersFlashVars]) - parseInt(root.loaderInfo.parameters[tableNoOfRobotsFlashVars]))){ break; }; doInvite("robot"); } else { _local4 = roomInside.getPlayerGroupsSortedByPlayerUID(); _local5 = findWaitingGroup(_local4); if (_local5 != roomInside.selfPlayerGroup){ doLeaveTable(); } else { _local6 = findIdleGroup(_local4); if (_local6 != null){ doInvite(_local6.players[0].playerInfo.playerUID); }; }; }; }; break; case PlayerGroup.STATE_WAITINGORSTARTING: case PlayerGroup.STATE_STARTING: if (_local1){ if (!checkAutoMatchIndexes(roomInside.selfPlayerGroup)){ doLeaveTable(); } else { if (_local3 == 0){ if (checkAutoMatchShouldInviteRobot(roomInside.selfPlayerGroup)){ doInvite("robot"); } else { if (checkAutoMatchPlayersComplete(roomInside.selfPlayerGroup)){ doStartPlaying(); }; }; }; }; } else { if (_local2){ if (!roomInside.selfPlayerGroup.getIsHost(this.playerUID)){ break; }; if (((((((!((tableNoOfPlayersFlashVars == null))) && (!((tableNoOfPlayersFlashVars == ""))))) && (!((root.loaderInfo.parameters[tableNoOfPlayersFlashVars] == null))))) && (!((root.loaderInfo.parameters[tableNoOfPlayersFlashVars] == ""))))){ if (roomInside.selfPlayerGroup.players.length == root.loaderInfo.parameters[tableNoOfPlayersFlashVars]){ doStartPlaying(); }; } else { doStartPlaying(); }; } else { if (roomInside.selfPlayerGroup.getIsHost(this.playerUID)){ doStartPlaying(); }; }; }; break; case PlayerGroup.STATE_PLAYING: }; } private function getTablePlayerNamesIsSet():Boolean{ if (tablePlayerNamesFlashVars == null){ return (false); }; if (tablePlayerNamesFlashVars == ""){ return (false); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + "0")] == null){ return (false); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + "0")] == ""){ return (false); }; return (true); } private function getTableIDIsSet():Boolean{ if (tableIDFlashVars == null){ return (false); }; if (tableIDFlashVars == ""){ return (false); }; if (root.loaderInfo.parameters[tableIDFlashVars] == null){ return (false); }; if (root.loaderInfo.parameters[tableIDFlashVars] == ""){ return (false); }; return (true); } private function getAutoMatchSelfIndex():int{ var _local1:int; if (tablePlayerNamesFlashVars == null){ return (-1); }; if (tablePlayerNamesFlashVars == ""){ return (-1); }; _local1 = 0; while (true) { if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local1)] == null){ return (-1); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local1)] == ""){ return (-1); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local1)] == this.playerName){ return (_local1); }; _local1++; }; return (-1); } private function checkAutoMatchIndexes(_arg1:PlayerGroup):Boolean{ var _local2:int; if (tablePlayerNamesFlashVars == null){ return (false); }; if (tablePlayerNamesFlashVars == ""){ return (false); }; _local2 = 0; while (_local2 < _arg1.players.length) { if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local2)] == null){ return (false); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local2)] == ""){ return (false); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local2)] != _arg1.players[_local2].playerInfo.playerName){ return (false); }; _local2++; }; return (true); } private function checkAutoMatchShouldInviteRobot(_arg1:PlayerGroup):Boolean{ if (tablePlayerNamesFlashVars == null){ return (false); }; if (tablePlayerNamesFlashVars == ""){ return (false); }; return ((root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _arg1.players.length)] == robotName)); } private function checkAutoMatchPlayersComplete(_arg1:PlayerGroup):Boolean{ var _local2:int; if (tablePlayerNamesFlashVars == null){ return (false); }; if (tablePlayerNamesFlashVars == ""){ return (false); }; _local2 = 0; while (_local2 < _arg1.players.length) { if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local2)] == null){ return (false); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local2)] == ""){ return (false); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local2)] != _arg1.players[_local2].playerInfo.playerName){ return (false); }; _local2++; }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local2)] == null){ return (true); }; if (root.loaderInfo.parameters[(tablePlayerNamesFlashVars + _local2)] == ""){ return (true); }; return (false); } private function findWaitingGroup(_arg1:Array):PlayerGroup{ var _local2:int; _local2 = 0; while (_local2 < _arg1.length) { if (_arg1[_local2].getState() == PlayerGroup.STATE_WAITING){ return (_arg1[_local2]); }; _local2++; }; return (null); } private function findIdleGroup(_arg1:Array):PlayerGroup{ var _local2:int; _local2 = 0; while (_local2 < _arg1.length) { if (_arg1[_local2].getState() == PlayerGroup.STATE_IDLE){ return (_arg1[_local2]); }; _local2++; }; return (null); } private function startSendMessages():void{ currentSendMessageID = 0; messagesToSend = new Array(); isSendingMessages = false; } private function startGetMessages():void{ stopGetMessages(); currentGetMessageID = 0; this.onGetMessages = onRoomInsideGetMessages; getMessagesURLLoader = new URLLoader(); getMessagesURLLoader.addEventListener(IOErrorEvent.IO_ERROR, doGetMessagesFailed); getMessagesURLLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doGetMessagesFailed); getMessagesURLLoader.addEventListener(Event.COMPLETE, doGetMessagesFinished); doGetMessages(); } private function stopGetMessages():void{ onGetMessages = null; if (getMessagesURLLoader){ getMessagesURLLoader.close(); getMessagesURLLoader = null; }; } private function doGetMessages():void{ var _local1:URLVariables; var _local2:URLRequest; _local1 = new URLVariables(); _local1.siteID = siteID; _local1.gameID = gameID; _local1.roomID = roomID; _local1.playerUID = playerUID; _local1.messageID = currentGetMessageID; _local1 = secureVariables(_local1); _local2 = new URLRequest(lobbyURLGetMessages); _local2.method = "POST"; _local2.data = _local1; getMessagesURLLoader.load(_local2); } private function doGetMessagesFailed(_arg1:Event):void{ if (getMessagesURLLoader != null){ doGetMessages(); }; } private function doGetMessagesFinished(_arg1:Event):void{ var urlLoader:URLLoader; var xmlDocument:XMLDocument; var node:XMLNode; var event = _arg1; try { urlLoader = URLLoader(event.currentTarget); if (urlLoader.data != ""){ xmlDocument = new XMLDocument(); xmlDocument.ignoreWhite = true; xmlDocument.parseXML(urlLoader.data); node = xmlDocument.firstChild; while (node != null) { if (onGetMessages == null){ break; }; onGetMessages(node); currentGetMessageID++; node = node.nextSibling; }; }; } catch(e) { trace(e.getStackTrace()); }; if (getMessagesURLLoader != null){ doGetMessages(); }; } private function onRoomInsideGetMessages(_arg1:XMLNode):void{ var _local2:Boolean; var _local3:String; var _local4:String; var _local5:String; var _local6:String; var _local7:String; var _local8:Array; var _local9:String; var _local10:Array; var _local11:int; var _local12:String; var _local13:int; switch (_arg1.nodeName){ case "DISCONNECTED": disconnected(); break; case "OPENTABLERESULT": doOpenTableFinishedXML(_arg1); doAutoMatchAction(); break; case "JOINTABLERESULT": doJoinTableFinishedXML(_arg1); doAutoMatchAction(); break; case "LEAVETABLERESULT": doLeaveTableFinishedXML(_arg1); doAutoMatchAction(); break; case "ROBOTJOINTABLERESULT": doRobotJoinTableFinishedXML(_arg1); doAutoMatchAction(); break; case "INVITERESULT": doInviteFinishedXML(_arg1); break; case "STARTPLAYINGRESULT": doStartPlayingFinishedXML(_arg1); break; case "PLAYERJOINEDROOM": _local3 = _arg1.attributes.playerUID; _local4 = _arg1.attributes.playerName; _local5 = _arg1.attributes.playerPictureURL; _local6 = _arg1.attributes.playerFacebookUserID; roomInside.playerJoinedRoom(_local3, _local4, _local5, _local6); doAutoMatchAction(); break; case "PLAYERDISCONNECTED": _local10 = _arg1.attributes.playerUID.split(","); _local13 = 0; while (_local13 < _local10.length) { roomInside.playerDisconnected(_local10[_local13]); _local13++; }; doAutoMatchAction(); break; case "PLAYEROPENEDTABLE": _local3 = _arg1.attributes.playerUID; _local7 = _arg1.attributes.tableUID; _local8 = _arg1.attributes.possibleNoOfPlayers.split(","); _local9 = _arg1.attributes.tableID; roomInside.playerOpenedTable(_local3, _local7, _local8, _local9); doAutoMatchAction(); break; case "PLAYERJOINEDTABLE": _local3 = _arg1.attributes.playerUID; _local7 = _arg1.attributes.tableUID; roomInside.playerJoinedTable(_local3, _local7); doAutoMatchAction(); break; case "PLAYERLEFTTABLE": _local3 = _arg1.attributes.playerUID; _local7 = _arg1.attributes.tableUID; roomInside.playerLeftTable(_local3, _local7); doAutoMatchAction(); break; case "ROBOTJOINEDTABLE": _local7 = _arg1.attributes.tableUID; roomInside.robotJoinedTable(_local7); doAutoMatchAction(); break; case "INVITE": _local3 = _arg1.attributes.playerUID; _local7 = _arg1.attributes.tableUID; roomInside.invitedBy(_local3); break; case "PLAYINGSTARTED": _local7 = _arg1.attributes.tableUID; _local12 = _arg1.attributes.randomSeeds; if (roomInside.getIsSelfTable(_local7)){ doStartPlayConfirmed(_local12); } else { roomInside.playingStarted(_local7); }; break; }; } public function disconnected():void{ stopGetMessages(); doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showDisconnected(); var _local1 = Object(parent); _local1[actionDisconnected](); } public function doLeaveRoom():void{ var _local1:URLVariables; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); stopGetMessages(); _local1 = new URLVariables(); _local1.type = "leaveRoom"; sendMessage(_local1); doHide(); } private function sendMessage(_arg1:URLVariables):void{ _arg1.messageID = currentSendMessageID; currentSendMessageID++; messagesToSend.push(_arg1); if (isSendingMessages){ return; }; isSendingMessages = true; doSendMessages(); } private function doSendMessages():void{ var _local1:URLVariables; var _local2:URLRequest; var _local3:URLLoader; var _local4:int; _local1 = new URLVariables(); _local1.siteID = siteID; _local1.gameID = gameID; _local1.roomID = roomID; _local1.playerUID = playerUID; _local4 = 0; while (_local4 < messagesToSend.length) { _local1[("message" + _local4)] = messagesToSend[_local4]; _local4++; }; _local1 = secureVariables(_local1); _local2 = new URLRequest(lobbyURLSendMessages); _local2.method = "POST"; _local2.data = _local1; _local3 = new URLLoader(); _local3.addEventListener(IOErrorEvent.IO_ERROR, doSendMessagesFailed); _local3.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doSendMessagesFailed); _local3.addEventListener(Event.COMPLETE, doSendMessagesFinished); _local3.load(_local2); } private function doSendMessagesFailed(_arg1:Event):void{ doSendMessages(); } private function doSendMessagesFinished(_arg1:Event):void{ var _local2:URLLoader; var _local3:XML; var _local4:Number; var _local5:Error; var _local6:int; try { _local2 = URLLoader(_arg1.currentTarget); _local3 = new XML(_local2.data); _local4 = parseInt(_local3.@lastProcessedMessageID); if (isNaN(_local4)){ throw (new Error()); }; while (messagesToSend.length > 0) { if (messagesToSend[0].messageID > _local4){ break; }; messagesToSend.shift(); }; } catch(e) { }; if (messagesToSend.length == 0){ isSendingMessages = false; } else { doSendMessages(); }; } public function doOpenTable(_arg1:String=null):void{ var _local2:URLVariables; this.invitedPlayerUID = _arg1; if (lobbyType == "normal"){ doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); }; _local2 = new URLVariables(); _local2.type = "openTable"; _local2.possibleNoOfPlayers = possibleNoOfPlayers.join(","); if (((((((!((tableIDFlashVars == null))) && (!((tableIDFlashVars == ""))))) && (!((root.loaderInfo.parameters[tableIDFlashVars] == null))))) && (!((root.loaderInfo.parameters[tableIDFlashVars] == ""))))){ _local2.tableID = root.loaderInfo.parameters[tableIDFlashVars]; }; sendMessage(_local2); } private function doOpenTableFinishedXML(_arg1:XMLNode):void{ var _local2 = (_arg1.attributes.success == "true"); var _local3:String = _arg1.attributes.tableUID; if (_local2){ doHideDialog(); roomInside.playerOpenedTable(playerUID, _arg1.attributes.tableUID, possibleNoOfPlayers, _arg1.attributes.tableID); if (invitedPlayerUID != null){ doInvite(invitedPlayerUID); }; } else { doOpenTableFailed(); }; } private function doOpenTableFailed():void{ if (lobbyType != "normal"){ return; }; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showOpenTableFailed(); } public function doJoinTable(_arg1:String):void{ var _local2:URLVariables; joiningTableUID = _arg1; if (lobbyType == "normal"){ doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); }; _local2 = new URLVariables(); _local2.type = "joinTable"; _local2.tableUID = _arg1; sendMessage(_local2); } private function doJoinTableFinishedXML(_arg1:XMLNode):void{ var _local2 = (_arg1.attributes.success == "true"); if (_local2){ doHideDialog(); roomInside.playerJoinedTable(playerUID, joiningTableUID); if (afterJoinTableAction != ""){ var _local3 = Object(parent); _local3[afterJoinTableAction](); }; } else { doJoinTableFailed(); }; } private function doJoinTableFailed(_arg1:Event=null):void{ if (lobbyType != "normal"){ return; }; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showJoinTableFailed(); } public function doLeaveTable():void{ var _local1:URLVariables; if (roomInside.selfPlayerGroup.table == null){ return; }; if (lobbyType == "normal"){ doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); }; _local1 = new URLVariables(); _local1.type = "leaveTable"; _local1.tableUID = roomInside.selfPlayerGroup.table.tableInfo.tableUID; sendMessage(_local1); } private function doLeaveTableFinishedXML(_arg1:XMLNode):void{ var _local2:String = _arg1.attributes.tableUID; var _local3 = (_arg1.attributes.success == "true"); if (_local3){ doHideDialog(); roomInside.playerLeftTable(playerUID, _local2); } else { doLeaveTableFailed(); }; } private function doLeaveTableFailed(_arg1:Event=null):void{ if (lobbyType != "normal"){ return; }; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showLeaveTableFailed(); } public function doInvite(_arg1:String):void{ var _local2:URLVariables; if (lobbyType == "normal"){ doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); }; if (_arg1 == "robot"){ joiningTableUID = roomInside.getPlayerPlayerGroup(playerUID).table.tableInfo.tableUID; _local2 = new URLVariables(); _local2.type = "robotJoinTable"; _local2.tableUID = joiningTableUID; sendMessage(_local2); } else { _local2 = new URLVariables(); _local2.type = "invite"; _local2.invitedPlayerUID = _arg1; sendMessage(_local2); }; } private function doRobotJoinTableFinishedXML(_arg1:XMLNode):void{ var _local2 = (_arg1.attributes.success == "true"); if (_local2){ doHideDialog(); } else { doRobotJoinTableFailed(); }; } private function doRobotJoinTableFailed(_arg1:Event=null):void{ if (lobbyType != "normal"){ return; }; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showRobotJoinTableFailed(); } private function doInviteFinishedXML(_arg1:XMLNode):void{ var _local2 = (_arg1.attributes.success == "true"); if (_local2){ if (lobbyType == "normal"){ doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showInvitationSent(); }; } else { doInviteFailed(); }; } private function doInviteFailed(_arg1:Event=null):void{ if (lobbyType != "normal"){ return; }; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showInviteFailed(); } public function doStartPlaying():void{ var _local1:URLVariables; if (roomInside.selfPlayerGroup.table == null){ return; }; if (lobbyType == "normal"){ doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); }; _local1 = new URLVariables(); _local1.type = "startPlaying"; _local1.tableUID = roomInside.selfPlayerGroup.table.tableInfo.tableUID; sendMessage(_local1); } private function doStartPlayingFinishedXML(_arg1:XMLNode):void{ var _local2 = (_arg1.attributes.success == "true"); if (!_local2){ doStartPlayingFailed(); }; } private function doStartPlayingFailed(_arg1:Event=null):void{ if (lobbyType != "normal"){ return; }; doHideDialog(); dialog = new Status(); this.addChild(dialog); dialog.showStartGameFailed(); } private function doStartPlayConfirmed(_arg1:String):void{ var _local2:Array; var _local3:Object; var _local4:int; var _local5:int; _local2 = _arg1.split(","); _local5 = 0; while (_local5 < _local2.length) { _local2[_local5] = parseInt(_local2[_local5]); _local5++; }; tableUID = roomInside.selfPlayerGroup.table.tableInfo.tableUID; playIndex = 0; _local4 = 0; playingPlayerInfos = new Array(); gamePlayerInfos = new Array(); _local5 = 0; while (_local5 < roomInside.selfPlayerGroup.players.length) { playingPlayerInfos[_local5] = roomInside.selfPlayerGroup.players[_local5].playerInfo; if (playingPlayerInfos[_local5].isRobot){ _local4++; }; _local3 = new Object(); _local3.name = playingPlayerInfos[_local5].playerName; _local3.pictureURL = playingPlayerInfos[_local5].playerPictureURL; _local3.facebookUserID = playingPlayerInfos[_local5].playerFacebookUserID; _local3.isRobot = playingPlayerInfos[_local5].isRobot; _local3.randomSeed = _local2[_local5]; _local3.disconnected = false; gamePlayerInfos.push(_local3); if (roomInside.selfPlayerGroup.players[_local5].playerInfo.playerUID == playerUID){ selfIndex = _local5; }; _local5++; }; if (_local4 > 1){ _local4 = 1; _local5 = 0; while (_local5 < gamePlayerInfos.length) { if (!gamePlayerInfos[_local5].isRobot){ } else { gamePlayerInfos[_local5].name = (gamePlayerInfos[_local5].name + (" " + _local4)); _local4++; }; _local5++; }; }; doHide(); this.onGetMessages = onPlayingGetMessages; isReceivingMessages = false; receivedMessages = new Array(); var _local6 = Object(parent); _local6[actionStartGame](gamePlayerInfos, selfIndex); } private function onPlayingGetMessages(_arg1:XMLNode):void{ var _local2:int; var _local3:Object; var _local4:Array; var _local5:int; var _local6:int; var _local7:int; var _local8:int; switch (_arg1.nodeName){ case "DISCONNECTED": disconnected(); break; case "GAMEENDEDRESULT": break; case "PLAYERDISCONNECTED": case "PLAYERLEFTTABLE": _local4 = _arg1.attributes.playerUID.split(","); _local7 = 0; while (_local7 < _local4.length) { _local8 = 0; while (_local8 < playingPlayerInfos.length) { if (_local4[_local7] != playingPlayerInfos[_local8].playerUID){ } else { gamePlayerInfos[_local8].disconnected = true; addReceivedPlayerDisconnectedMessage(_local8); break; }; _local8++; }; _local7++; }; break; case "GAMEMESSAGERECEIVED": _local2 = int(_arg1.attributes.playIndex); _local3 = MessageSerializer.unserialize(_arg1.attributes.message); addReceivedGameMessage(_local2, _local3.message, _local3.synchronizeString, _local3.time, _local3.playerIndex); break; case "PLAYERTIMEUPDATED": _local2 = int(_arg1.attributes.playIndex); if (_local2 < this.playIndex){ break; }; _local5 = int(_arg1.attributes.playerIndex); _local6 = int(_arg1.attributes.time); synchronizePlayerTimes[_local5] = _local6; break; case "CHATMESSAGERECEIVED": chatMessageReceived(_arg1.attributes.message, int(_arg1.attributes.fromPlayerIndex)); break; }; } private function doStartReceivingMessages():Boolean{ var _local1:Timer; if (isReceivingMessages){ return (false); }; isReceivingMessages = true; _local1 = new Timer(1, 1); _local1.addEventListener(TimerEvent.TIMER, processReceivedMessages); _local1.start(); return (true); } private function doStopReceivingMessages():Boolean{ if (!isReceivingMessages){ return (false); }; isReceivingMessages = false; return (true); } private function doResetSynchronizeTime():void{ var _local1:int; synchronizeTime = getTimer(); synchronizePlayerTimes = new Array(); _local1 = 0; while (_local1 < gamePlayerInfos.length) { synchronizePlayerTimes[_local1] = 0; _local1++; }; } private function doSendGameMessage(_arg1:Object, _arg2:String=null, _arg3:Boolean=false):void{ var theMessage:URLVariables; var gameMessage:Object; var timer:Timer; var lobby:Lobby; var time:int; var message = _arg1; var synchronizeString = _arg2; var timed = _arg3; lobby = this; time = (timed) ? (getTimer() - synchronizeTime) : 0; gameMessage = new Object(); gameMessage.synchronizeString = synchronizeString; gameMessage.time = time; gameMessage.playerIndex = selfIndex; gameMessage.message = message; theMessage = new URLVariables(); theMessage.type = "sendGameMessage"; theMessage.tableUID = tableUID; theMessage.playIndex = playIndex; theMessage.message = MessageSerializer.serialize(gameMessage); sendMessage(theMessage); if (synchronizeString != null){ timer = new Timer(1, 1); timer.addEventListener(TimerEvent.TIMER, function (){ lobby.addReceivedGameMessage(playIndex, message, synchronizeString, time, selfIndex); }); timer.start(); }; } private function doRobotSendGameMessage(_arg1:int, _arg2:Object, _arg3:String=null, _arg4:int=0):void{ var timer:Timer; var lobby:Lobby; var robotPlayerIndex = _arg1; var message = _arg2; var synchronizeString = _arg3; var time = _arg4; lobby = this; timer = new Timer(1, 1); timer.addEventListener(TimerEvent.TIMER, function (){ lobby.addReceivedGameMessage(playIndex, message, synchronizeString, time, robotPlayerIndex); }); timer.start(); } private function doShowChatInput():void{ var _local1:ChatBubble; if (!chatEnabled){ return; }; if (!chatShowBubble){ return; }; _local1 = new ChatBubble(); this.addChild(_local1); _local1.showInput(selfIndex); } public function doSendChatMessage(_arg1:String):void{ var _local2:URLVariables; if (!chatEnabled){ return; }; _local2 = new URLVariables(); _local2.type = "sendChatMessage"; _local2.tableUID = tableUID; _local2.message = _arg1; sendMessage(_local2); } private function chatMessageReceived(_arg1:String, _arg2:int):void{ var _local3:ChatBubble; if (!chatEnabled){ return; }; if (chatShowBubble){ _local3 = new ChatBubble(); this.addChild(_local3); _local3.showText(_arg2, _arg1); }; if (((((!((actionReceiveChatMessage == null))) && (!((actionReceiveChatMessage == ""))))) && (Object(parent)[actionReceiveChatMessage]))){ var _local4 = Object(parent); _local4[actionReceiveChatMessage](_arg1, _arg2); }; } private function addReceivedPlayerDisconnectedMessage(_arg1:int):void{ var _local3:String; var _local2:Message = new Message(); _local2.playIndex = playIndex; _local2.type = Message.TYPE_DISCONNECT; _local2.playerIndex = _arg1; addMessage(_local2); for (_local3 in synchronizeInfos) { checkSynchronized(_local3); }; } private function addReceivedGameMessage(_arg1:int, _arg2:Object, _arg3:String=null, _arg4:int=0, _arg5:int=-1):void{ var _local6:Message; if (_arg3 == null){ _local6 = new Message(); _local6.playIndex = _arg1; _local6.type = Message.TYPE_GAME; _local6.message = _arg2; addMessage(_local6); } else { addSynchronizeMessage(_arg1, _arg2, _arg3, _arg4, _arg5); }; } private function addMessage(_arg1:Message):void{ receivedMessages.push(_arg1); processReceivedMessages(); } private function processReceivedMessages(_arg1:TimerEvent=null):void{ var _local2:Message; if (!isReceivingMessages){ return; }; while (((isReceivingMessages) && ((receivedMessages.length > 0)))) { _local2 = receivedMessages.shift(); if (_local2.playIndex != this.playIndex){ } else { if (_local2.type == Message.TYPE_GAME){ var _local3 = Object(parent); _local3[actionReceiveGameMessage](_local2.message); } else { if (_local2.type == Message.TYPE_GAMESYNCHRONIZED){ _local3 = Object(parent); _local3[actionReceiveGameMessage](_local2.message, _local2.synchronizeString); } else { if (_local2.type == Message.TYPE_GAMETIMEDSYNCHRONIZED){ _local3 = Object(parent); _local3[actionReceiveGameMessage](_local2.message, _local2.synchronizeString, _local2.playerIndex, _local2.time); } else { if (_local2.type == Message.TYPE_DISCONNECT){ _local3 = Object(parent); _local3[actionPlayerDisconnected](_local2.playerIndex); }; }; }; }; }; }; } private function addSynchronizeMessage(_arg1:int, _arg2:Object, _arg3:String, _arg4:int, _arg5:int):void{ var _local6:Object; var _local7:int; if (_arg1 != this.playIndex){ return; }; if (_arg4 == 0){ if (synchronizeInfos == null){ synchronizeInfos = new Object(); }; if (!synchronizeInfos[_arg3]){ synchronizeInfos[_arg3] = new Array(); }; synchronizeInfos[_arg3][_arg5] = _arg2; checkSynchronized(_arg3); } else { _local6 = new Object(); _local6.time = _arg4; _local6.synchronizeString = _arg3; _local6.playerIndex = _arg5; _local6.message = _arg2; synchronizePlayerTimes[_arg5] = _arg4; if (timedSynchronizeInfos == null){ timedSynchronizeInfos = new Array(); }; _local7 = 0; while (_local7 < timedSynchronizeInfos.length) { if (timedSynchronizeInfos[_local7].time < _arg4){ } else { if (timedSynchronizeInfos[_local7].time > _arg4){ break; }; if (_arg3 != timedSynchronizeInfos[_local7].synchronizeString){ } else { if (_arg5 > timedSynchronizeInfos[_local7].playerIndex){ } else { break; }; }; }; _local7++; }; timedSynchronizeInfos.splice(_local7, 0, _local6); if (timedSynchronizeTimer != null){ return; }; timedSynchronizeTimer = new Timer(1, 0); timedSynchronizeTimer.addEventListener(TimerEvent.TIMER, checkTimedSynchronized); timedSynchronizeTimer.start(); }; } private function checkSynchronized(_arg1:String):void{ var _local2:Message; var _local3:int; if (synchronizeInfos[_arg1] == null){ return; }; _local3 = 0; while (_local3 < gamePlayerInfos.length) { if (gamePlayerInfos[_local3].disconnected){ } else { if (synchronizeInfos[_arg1][_local3] == null){ return; }; }; _local3++; }; _local2 = new Message(); _local2.playIndex = playIndex; _local2.type = Message.TYPE_GAMESYNCHRONIZED; _local2.synchronizeString = _arg1; _local2.message = synchronizeInfos[_arg1]; synchronizeInfos[_arg1] = null; addMessage(_local2); } private function checkTimedSynchronized(_arg1:TimerEvent):void{ var _local3:Object; var _local4:Boolean; var _local5:Message; var _local6:int; var _local2:int = (getTimer() - synchronizeTime); _local4 = false; _local6 = 0; while (_local6 < timedSynchronizeInfos.length) { _local3 = timedSynchronizeInfos[_local6]; if (_local3.playerIndex == selfIndex){ } else { if ((((synchronizePlayerTimes[selfIndex] < _local3.time)) && ((_local2 >= _local3.time)))){ _local4 = true; }; }; _local6++; }; synchronizePlayerTimes[selfIndex] = _local2; if (_local4){ _local6 = 0; while (_local6 < gamePlayerInfos.length) { if (_local6 == selfIndex){ } else { if (gamePlayerInfos[_local6].isRobot){ } else { if (gamePlayerInfos[_local6].disconnected){ } else { sendUpdateTime(_local2); }; }; }; _local6++; }; }; while (timedSynchronizeInfos.length > 0) { _local3 = timedSynchronizeInfos[0]; _local6 = 0; while (_local6 < gamePlayerInfos.length) { if (gamePlayerInfos[_local6].disconnected){ } else { if (gamePlayerInfos[_local6].isRobot){ } else { if (synchronizePlayerTimes[_local6] < _local3.time){ return; }; }; }; _local6++; }; _local5 = new Message(); _local5.playIndex = playIndex; _local5.type = Message.TYPE_GAMETIMEDSYNCHRONIZED; _local5.synchronizeString = _local3.synchronizeString; _local5.playerIndex = _local3.playerIndex; _local5.time = _local3.time; _local5.message = _local3.message; addMessage(_local5); timedSynchronizeInfos.shift(); }; timedSynchronizeTimer.stop(); timedSynchronizeTimer = null; } private function sendUpdateTime(_arg1:int):void{ var _local2:URLVariables = new URLVariables(); _local2.type = "updateTime"; _local2.tableUID = tableUID; _local2.playIndex = playIndex; _local2.playerIndex = selfIndex; _local2.time = _arg1; sendMessage(_local2); } private function doGameEnded(_arg1:Array, _arg2:String=null, _arg3:ByteArray=null, _arg4:String=null, _arg5:String=null):void{ var _local6:URLVariables; this.playerRanks = _arg1; this.playerCustomShareText = _arg2; this.playerCustomSharePicturePNG = _arg3; this.playerCustomSharePictureURL = _arg4; this.playerCustomExtra = _arg5; stopReceivingMessages(); doHide(); if (_arg1 != null){ showResultDialog(_arg1); _local6 = new URLVariables(); _local6.type = "gameEnded"; _local6.tableUID = tableUID; _local6.playIndex = playIndex; _local6.ranks = _arg1.join(","); if (_arg5 != null){ _local6.customExtra = _arg5; }; sendMessage(_local6); } else { if (afterGameEndedAction != ""){ var _local7 = Object(parent); _local7[afterGameEndedAction](); }; }; playIndex++; synchronizeInfos = null; synchronizeTime = 0; synchronizePlayerTimes = null; timedSynchronizeInfos = null; if (timedSynchronizeTimer != null){ timedSynchronizeTimer.stop(); }; timedSynchronizeTimer = null; } private function showResultDialog(_arg1:Array):void{ doHide(); dialog = new ResultDialog(); this.addChild(dialog); dialog.show(_arg1, selfIndex); dialog.box.closeButton.addEventListener(MouseEvent.CLICK, showResultEnded); initializeShareInButtons(reshowResultDialog); } private function initializeShareInButtons(_arg1:Function):void{ var bounds:Rectangle; var totalWidth:Number; var spacing:Number; var x:Number; var i:int; var shareFinishedAction = _arg1; var buttons:Array = [dialog.box.facebookButton, dialog.box.twitterButton, dialog.box.mySpaceButton, dialog.box.emailButton]; var texts:Array = [dialog.box.facebookText, dialog.box.twitterText, dialog.box.mySpaceText, dialog.box.emailText]; var listeners:Array = [facebookButtonClicked, twitterButtonClicked, mySpaceButtonClicked, emailButtonClicked]; var shows:Array = [shareShowFacebook, shareShowTwitter, shareShowMySpace, shareShowSendEmail]; var visibleGroups:Array = new Array(); var minX:Number = 2147483647; var maxX:Number = -2147483647; this.shareFinishedAction = shareFinishedAction; totalWidth = 0; i = 0; while (i < buttons.length) { if (buttons[i] == null){ } else { buttons[i].addEventListener(MouseEvent.CLICK, listeners[i]); buttons[i].buttonMode = true; totalWidth = (totalWidth + buttons[i].width); bounds = buttons[i].getBounds(dialog.box); if (bounds.left < minX){ minX = bounds.left; }; if (bounds.right > maxX){ maxX = bounds.right; }; if (shows[i]){ visibleGroups.push({button:buttons[i], text:texts[i]}); } else { buttons[i].visible = false; if (texts[i] != null){ texts[i].visible = false; }; }; }; i = (i + 1); }; if (visibleGroups.length == 0){ dialog.box.shareBackground.visible = false; return; }; visibleGroups.sort(function (_arg1, _arg2){ if (_arg1.button.x < _arg2.button.x){ return (-1); }; if (_arg1.button.y > _arg2.button.y){ return (1); }; return (0); }); spacing = (((maxX - minX) - totalWidth) / (buttons.length - 1)); minX = (minX - spacing); maxX = (maxX + spacing); totalWidth = 0; i = 0; while (i < visibleGroups.length) { totalWidth = (totalWidth + visibleGroups[i].button.width); i = (i + 1); }; spacing = (((maxX - minX) - totalWidth) / (visibleGroups.length + 1)); x = (minX + spacing); i = 0; while (i < visibleGroups.length) { bounds = visibleGroups[i].button.getBounds(dialog.box); visibleGroups[i].button.x = (visibleGroups[i].button.x + (x - bounds.left)); if (visibleGroups[i].text != null){ visibleGroups[i].text.x = (visibleGroups[i].text.x + (x - bounds.left)); }; x = (x + (visibleGroups[i].button.width + spacing)); i = (i + 1); }; } private function facebookButtonClicked(_arg1:MouseEvent):void{ if (((!((playerCustomSharePicturePNG == null))) && ((playerCustomSharePictureURL == null)))){ uploadSharePicturePNG(); } else { openShareWindow(shareFacebookURL); }; } private function getIsWin(_arg1:Array, _arg2:int):Boolean{ var _local5:int; var _local3:int = _arg1.length; var _local4 = -1; _local5 = 0; while (_local5 < _arg1.length) { if (_arg1[_local5] == -1){ } else { if (_arg1[_local5] < _local3){ _local3 = _arg1[_local5]; }; if (_arg1[_local5] > _local4){ _local4 = _arg1[_local5]; }; }; _local5++; }; if (_local3 == _local4){ return (false); }; if (_local3 == _arg1[_arg2]){ return (true); }; return (false); } private function twitterButtonClicked(_arg1:MouseEvent):void{ openShareWindow(shareTwitterURL); } private function mySpaceButtonClicked(_arg1:MouseEvent):void{ openShareWindow(shareMySpaceURL); } private function uploadSharePicturePNG():void{ var _local1:URLVariables; var _local2:URLRequest; var _local3:URLLoader; doHide(); dialog = new Status(); this.addChild(dialog); dialog.showWait(); _local1 = new URLVariables(); _local1.picturePNG = Base64.encode(playerCustomSharePicturePNG); _local2 = new URLRequest(savePictureURL); _local2.method = "POST"; _local2.data = _local1; _local3 = new URLLoader(); _local3.addEventListener(IOErrorEvent.IO_ERROR, uploadSharePicturePNGFailed); _local3.addEventListener(SecurityErrorEvent.SECURITY_ERROR, uploadSharePicturePNGFailed); _local3.addEventListener(Event.COMPLETE, uploadSharePicturePNGComplete); _local3.load(_local2); } private function uploadSharePicturePNGFailed(_arg1:Event=null):void{ doHide(); shareFinishedAction(); openShareWindow(shareFacebookURL); } private function uploadSharePicturePNGComplete(_arg1:Event):void{ var _local2:URLLoader = URLLoader(_arg1.currentTarget); var _local3:URLVariables = new URLVariables(_local2.data); if (_local3.success != "true"){ uploadSharePicturePNGFailed(); return; }; playerCustomSharePictureURL = _local3.pictureURL; doHide(); shareFinishedAction(); openShareWindow(shareFacebookURL); } private function openShareWindow(_arg1:String):void{ var _local2:URLVariables; _local2 = new URLVariables(); _local2.action = "share"; _local2.shareURL = getShareURL(shareURL); _local2.gameName = gameName; _local2.gameDescription = gameDescription; _local2.gamePictureURL = ((playerCustomSharePictureURL == null)) ? gamePictureURL : playerCustomSharePictureURL; _local2.playerRanks = playerRanks.join(","); _local2.playerSelfIndex = selfIndex; if (playerCustomShareText != null){ _local2.playerCustomShareText = playerCustomShareText; }; _arg1 = getAddedBaseURL(_arg1); if (ExternalInterface.available){ ExternalInterface.call("window.open", ((_arg1 + "?") + _local2.toString()), "ShareWindow", "width=400,height=400,directories=no,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,toolbar=no"); } else { navigateToURL(new URLRequest(((_arg1 + "?") + _local2.toString())), "ShareWindow"); }; } public function getAddedBaseURL(_arg1:String):String{ var _local2:String; var _local3:Boolean; var _local4:int; var _local5:int; if (getIsAbsoluteURL(_arg1)){ return (_arg1); }; _local2 = readBaseAttribute(); if ((((_local2 == null)) || ((_local2 == "")))){ return (_arg1); }; _local3 = (_arg1.substr(0, 1) == "/"); if (getIsAbsoluteURL(_local2)){ _local4 = _local2.indexOf("/", 8); if (_local4 == -1){ _local4 = _local2.length; }; if (_local3){ return ((_local2.substr(0, _local4) + _arg1)); }; _local5 = _local2.lastIndexOf("/"); if (_local5 >= _local4){ return (((_local2.substr(0, _local5) + "/") + _arg1)); }; return (((_local2.substr(0, _local4) + "/") + _arg1)); }; if (_local3){ return (_arg1); }; if (_local2.charAt((_local2.length - 1)) == "/"){ return ((_local2 + _arg1)); }; return (((_local2 + "/") + _arg1)); } private function getIsAbsoluteURL(_arg1:String):Boolean{ if ((((_arg1.length > 7)) && ((_arg1.substr(0, 7).toLowerCase() == "http://")))){ return (true); }; if ((((_arg1.length > 8)) && ((_arg1.substr(0, 8).toLowerCase() == "https://")))){ return (true); }; return (false); } private function readBaseAttribute():String{ var _local1:String; var _local2:String; if (!ExternalInterface.available){ return (null); }; _local1 = ExternalInterface.call("function(){return window.document.getElementById(\"novelgames_flashGame\").innerHTML;}"); if (_local1 == null){ return (null); }; _local2 = readBaseAttributeFromEmbed(_local1); if (_local2 == null){ _local2 = readBaseAttributeFromParam(_local1); }; return (_local2); } private function readBaseAttributeFromEmbed(_arg1:String):String{ var _local2:Object = readTagAttributesFromInnerHTML(_arg1, "embed"); if (_local2 == null){ return (null); }; return (_local2["base"]); } private function readBaseAttributeFromParam(_arg1:String):String{ var _local2:int; var _local3:Object; _local2 = 0; while ((_local3 = readTagAttributesFromInnerHTML(_arg1, "param", _local2)) != null) { if (_local3 == null){ return (null); }; _local2 = _local3.endIndex; if (_local3["name"] != "base"){ } else { return (_local3["value"]); }; }; return (null); } private function readTagAttributesFromInnerHTML(_arg1:String, _arg2:String, _arg3:int=0):Object{ var _local5:int; var _local6:int; var _local7:int; var _local8:String; var _local9:String; var _local10:int; var _local11:Object; var _local12:int; var _local4:Object = new Object(); _local5 = (_arg3 - 1); while (true) { _local5 = _arg1.indexOf("<", (_local5 + 1)); if (_local5 == -1){ return (null); }; _local6 = -1; _local7 = -1; _local12 = (_local5 + 1); while (_local12 < _arg1.length) { _local9 = _arg1.charAt(_local12); if ((((((((_local9 == " ")) || ((_local9 == "\t")))) || ((_local9 == "\r")))) || ((_local9 == "\n")))){ } else { _local6 = _local12; break; }; _local12++; }; if (_local6 == -1){ } else { _local12 = (_local6 + 1); while (_local12 < _arg1.length) { _local9 = _arg1.charAt(_local12); if (((((((!((_local9 == " "))) && (!((_local9 == "\t"))))) && (!((_local9 == "\r"))))) && (!((_local9 == "\n"))))){ } else { _local7 = _local12; break; }; _local12++; }; if (_local7 == -1){ } else { _local8 = _arg1.substr(_local6, (_local7 - _local6)).toLowerCase(); if (_local8 != _arg2){ } else { break; }; }; }; }; _local4.beginIndex = _local5; _local10 = (_local7 + 1); while ((_local11 = readAttributeFromInnerHTML(_arg1, _local10)) != null) { _local4[_local11.key] = _local11.value; _local10 = _local11.endIndex; }; _local12 = _local10; while (_local12 < _arg1.length) { _local9 = _arg1.charAt(_local12); if (_local9 == ">"){ break; }; _local12++; }; _local4.endIndex = (_local12 + 1); return (_local4); } private function readAttributeFromInnerHTML(_arg1:String, _arg2:int):Object{ var _local4:String; var _local5:int; var _local6:String; var _local7:int; var _local3:Object = new Object(); _local7 = _arg2; while (_local7 < _arg1.length) { _local4 = _arg1.charAt(_local7); if (((((((!((_local4 == " "))) && (!((_local4 == "\t"))))) && (!((_local4 == "\r"))))) && (!((_local4 == "\n"))))){ break; }; _local7++; }; if (_local4 == ">"){ return (null); }; if (_local7 >= _arg1.length){ return (null); }; _arg2 = _local7; _local3.beginIndex = _arg2; _local7 = (_arg2 + 1); while (_local7 < _arg1.length) { _local4 = _arg1.charAt(_local7); if ((((((((((_local4 == "=")) || ((_local4 == " ")))) || ((_local4 == "\t")))) || ((_local4 == "\r")))) || ((_local4 == "\n")))){ break; }; _local7++; }; if (_local7 >= _arg1.length){ return (null); }; _local5 = _local7; _local3.key = _arg1.substr(_arg2, (_local5 - _arg2)).toLowerCase(); _local7 = _local5; while (_local7 < _arg1.length) { _local4 = _arg1.charAt(_local7); if (_local4 == "="){ break; }; if (((((((!((_local4 == " "))) && (!((_local4 == "\t"))))) && (!((_local4 == "\r"))))) && (!((_local4 == "\n"))))){ _local3.endIndex = _local7; return (_local3); }; _local7++; }; _local7++; while (_local7 < _arg1.length) { _local4 = _arg1.charAt(_local7); if (((((((!((_local4 == " "))) && (!((_local4 == "\t"))))) && (!((_local4 == "\r"))))) && (!((_local4 == "\n"))))){ break; }; _local7++; }; if ((((_local4 == "\"")) || ((_local4 == "'")))){ _local6 = _local4; _arg2 = (_local7 + 1); } else { _local6 = null; _arg2 = _local7; }; _local7 = _arg2; while (_local7 < _arg1.length) { _local4 = _arg1.charAt(_local7); if (_local4 == ">"){ break; }; if (_local6 != null){ if (_local4 == _local6){ break; }; } else { if ((((((((_local4 == " ")) || ((_local4 == "\t")))) || ((_local4 == "\r")))) || ((_local4 == "\n")))){ break; }; }; _local7++; }; _local5 = _local7; _local3.value = _arg1.substr(_arg2, (_local5 - _arg2)); _local3.endIndex = _local5; if (_local6 != null){ _local3.endIndex++; }; return (_local3); } private function emailButtonClicked(_arg1:MouseEvent):void{ var _local2:MovieClip; doHide(); _local2 = new EmailPage(); _local2.ownEmailText.addEventListener(FocusEvent.FOCUS_IN, onOwnEmailTextFocusIn); _local2.ownEmailText.addEventListener(FocusEvent.FOCUS_OUT, onOwnEmailTextFocusOut); _local2.friendEmailsText.addEventListener(FocusEvent.FOCUS_IN, onFriendEmailsTextFocusIn); _local2.friendEmailsText.addEventListener(FocusEvent.FOCUS_OUT, onFriendEmailsTextFocusOut); _local2.closeButton.addEventListener(MouseEvent.CLICK, shareFinishedAction); _local2.sendButton.addEventListener(MouseEvent.CLICK, onSendEmailButtonClicked); this.addChild(_local2); } private function onOwnEmailTextFocusIn(_arg1:FocusEvent):void{ var _local3:*; var _local2:* = this.getChildAt((numChildren - 1)); if (_local2 == null){ return; }; if (!(_local2 is EmailPage)){ return; }; _local3 = new EmailPage(); if (_local2.ownEmailText.text == _local3.ownEmailText.text){ _local2.ownEmailText.text = ""; }; } private function onOwnEmailTextFocusOut(_arg1:FocusEvent):void{ var _local3:*; var _local2:* = this.getChildAt((numChildren - 1)); if (_local2 == null){ return; }; if (!(_local2 is EmailPage)){ return; }; if (_local2.ownEmailText.text == ""){ _local3 = new EmailPage(); _local2.ownEmailText.text = _local3.ownEmailText.text; }; } private function onFriendEmailsTextFocusIn(_arg1:FocusEvent):void{ var _local3:*; var _local2:* = this.getChildAt((numChildren - 1)); if (_local2 == null){ return; }; if (!(_local2 is EmailPage)){ return; }; _local3 = new EmailPage(); if (_local2.friendEmailsText.text == _local3.friendEmailsText.text){ _local2.friendEmailsText.text = ""; }; } private function onFriendEmailsTextFocusOut(_arg1:FocusEvent):void{ var _local3:*; var _local2:* = this.getChildAt((numChildren - 1)); if (_local2 == null){ return; }; if (!(_local2 is EmailPage)){ return; }; if (_local2.friendEmailsText.text == ""){ _local3 = new EmailPage(); _local2.friendEmailsText.text = _local3.friendEmailsText.text; }; } private function onSendEmailButtonClicked(_arg1:MouseEvent):void{ var _local2:URLVariables; var _local3:URLRequest; var _local4:URLLoader; var _local5:* = this.getChildAt((numChildren - 1)); _local2 = new URLVariables(); _local2.gameID = gameID; _local2.gameName = gameName; _local2.playerRanks = playerRanks.join(","); _local2.playerSelfIndex = selfIndex; _local2.url = getShareURL(shareURL); _local2.ownEmail = _local5.ownEmailText.text; _local2.friendEmails = _local5.friendEmailsText.text; _local2.date = getDateString(); _local2.hash = getSendEmailHash(_local2); _local3 = new URLRequest(); _local3.method = "POST"; _local3.data = _local2; _local3.url = shareSendEmailURL; _local4 = new URLLoader(); _local4.addEventListener(IOErrorEvent.IO_ERROR, sendEmailFailed); _local4.addEventListener(SecurityErrorEvent.SECURITY_ERROR, sendEmailFailed); _local4.addEventListener(Event.COMPLETE, sendEmailFinished); _local4.load(_local3); showSendingEmails(); } private function getDateString():String{ var _local2:String; var _local3:String; var _local4:String; var _local5:String; var _local6:String; var _local7:String; var _local8:String; var _local1:Date = new Date(); _local2 = ("" + _local1.getUTCFullYear()); _local3 = ("" + (_local1.getUTCMonth() + 1)); if (_local3.length < 2){ _local3 = ("0" + _local3); }; _local4 = ("" + _local1.getUTCDate()); if (_local4.length < 2){ _local4 = ("0" + _local4); }; _local5 = ("" + _local1.getUTCHours()); if (_local5.length < 2){ _local5 = ("0" + _local5); }; _local6 = ("" + _local1.getUTCMinutes()); if (_local6.length < 2){ _local6 = ("0" + _local6); }; _local7 = ("" + _local1.getUTCSeconds()); if (_local7.length < 2){ _local7 = ("0" + _local7); }; return ((((((_local2 + _local3) + _local4) + _local5) + _local6) + _local7)); } private function getSendEmailHash(_arg1:URLVariables):String{ var _local2 = ""; _local2 = (_local2 + _arg1.gameID); _local2 = (_local2 + _arg1.gameName); _local2 = (_local2 + _arg1.playerRanks); _local2 = (_local2 + _arg1.playerSelfIndex); _local2 = (_local2 + _arg1.url); _local2 = (_local2 + _arg1.ownEmail); _local2 = (_local2 + _arg1.friendEmails); _local2 = (_local2 + _arg1.date); _local2 = (_local2 + hashKey); return (MD5.md5String(_local2)); } private function showSendingEmails():void{ doHide(); dialog = new Status(); this.addChild(dialog); dialog.showSendingEmails(); } private function sendEmailFailed(_arg1:Event=null):void{ doHide(); dialog = new Status(); this.addChild(dialog); dialog.showSendEmailsFailed(shareFinishedAction); } private function sendEmailFinished(_arg1:Event):void{ var _local5:String; var _local6:String; var _local2:URLLoader = URLLoader(_arg1.currentTarget); var _local3:String = _local2.data; var _local4:URLVariables = new URLVariables(_local3); var _local7:Object = new Object(); for (_local5 in _local4) { _local6 = trim(_local5); _local7[_local6] = trim(_local4[_local5]); }; if (_local7.success != "true"){ sendEmailFailed(); return; }; shareFinishedAction(); } private function trim(_arg1:String):String{ _arg1 = _arg1.replace(/^[\r\n\s]*/m, ""); _arg1 = _arg1.replace(/[\r\n\s]*$/m, ""); return (_arg1); } private function substituteParameters(_arg1:String):String{ var _local2:* = this; _arg1 = _arg1.replace(/#\[GAMENAME\]/g, _local2.gameName); return (_arg1); } private function getShareURL(_arg1:String):String{ var e:Error; var shareURL = _arg1; if (((!((shareURL == null))) && (!((shareURL == ""))))){ return (shareURL); }; try { shareURL = ExternalInterface.call("document.location.href.toString"); } catch(e) { shareURL = null; }; if ((((shareURL == null)) || ((shareURL == "")))){ return (""); }; return (shareURL); } private function reshowResultDialog(_arg1:Event=null):void{ showResultDialog(playerRanks); } private function showResultEnded(_arg1:MouseEvent):void{ doHide(); if (afterGameEndedAction != ""){ var _local2 = Object(parent); _local2[afterGameEndedAction](); }; } public function doPlayAgain():void{ var _local1:int; stopReceivingMessages(); _local1 = 0; while (_local1 < gamePlayerInfos.length) { gamePlayerInfos[_local1].randomSeed = ((gamePlayerInfos[_local1].randomSeed + 1) % 2147483647); _local1++; }; var _local2 = Object(parent); _local2[actionStartGame](gamePlayerInfos, selfIndex); } private function doDisconnect():void{ var _local1:URLVariables; stopGetMessages(); _local1 = new URLVariables(); _local1.type = "leaveRoom"; sendMessage(_local1); doHide(); } } }//package com.novelgames.lobby
Section 28
//LoginFailedPage (com.novelgames.lobby.LoginFailedPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class LoginFailedPage extends MovieClip { public var forgetPasswordButton:MovieClip; public var reasonText:MovieClip; public var facebookLoginButton:SimpleButton; public var submitButton:SimpleButton; public var usernameText:TextField; public var registerButton:SimpleButton; public var closeButton:SimpleButton; public var enterAsGuestButton:SimpleButton; public var passwordText:TextField; } }//package com.novelgames.lobby
Section 29
//LoginNoFacebookFailedPage (com.novelgames.lobby.LoginNoFacebookFailedPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class LoginNoFacebookFailedPage extends MovieClip { public var forgetPasswordButton:MovieClip; public var reasonText:MovieClip; public var submitButton:SimpleButton; public var usernameText:TextField; public var registerButton:SimpleButton; public var closeButton:SimpleButton; public var enterAsGuestButton:SimpleButton; public var passwordText:TextField; } }//package com.novelgames.lobby
Section 30
//LoginNoFacebookPage (com.novelgames.lobby.LoginNoFacebookPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class LoginNoFacebookPage extends MovieClip { public var forgetPasswordButton:MovieClip; public var submitButton:SimpleButton; public var usernameText:TextField; public var registerButton:SimpleButton; public var closeButton:SimpleButton; public var enterAsGuestButton:SimpleButton; public var passwordText:TextField; } }//package com.novelgames.lobby
Section 31
//LoginNoGuestFacebookFailedPage (com.novelgames.lobby.LoginNoGuestFacebookFailedPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class LoginNoGuestFacebookFailedPage extends MovieClip { public var forgetPasswordButton:MovieClip; public var reasonText:MovieClip; public var submitButton:SimpleButton; public var usernameText:TextField; public var registerButton:SimpleButton; public var closeButton:SimpleButton; public var passwordText:TextField; } }//package com.novelgames.lobby
Section 32
//LoginNoGuestFacebookPage (com.novelgames.lobby.LoginNoGuestFacebookPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class LoginNoGuestFacebookPage extends MovieClip { public var forgetPasswordButton:MovieClip; public var submitButton:SimpleButton; public var usernameText:TextField; public var registerButton:SimpleButton; public var closeButton:SimpleButton; public var passwordText:TextField; } }//package com.novelgames.lobby
Section 33
//LoginNoGuestFailedPage (com.novelgames.lobby.LoginNoGuestFailedPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class LoginNoGuestFailedPage extends MovieClip { public var forgetPasswordButton:MovieClip; public var reasonText:MovieClip; public var facebookLoginButton:SimpleButton; public var submitButton:SimpleButton; public var usernameText:TextField; public var registerButton:SimpleButton; public var closeButton:SimpleButton; public var passwordText:TextField; } }//package com.novelgames.lobby
Section 34
//LoginNoGuestPage (com.novelgames.lobby.LoginNoGuestPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class LoginNoGuestPage extends MovieClip { public var forgetPasswordButton:MovieClip; public var facebookLoginButton:SimpleButton; public var submitButton:SimpleButton; public var usernameText:TextField; public var registerButton:SimpleButton; public var closeButton:SimpleButton; public var passwordText:TextField; } }//package com.novelgames.lobby
Section 35
//LoginPage (com.novelgames.lobby.LoginPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class LoginPage extends MovieClip { public var forgetPasswordButton:MovieClip; public var facebookLoginButton:SimpleButton; public var submitButton:SimpleButton; public var usernameText:TextField; public var registerButton:SimpleButton; public var closeButton:SimpleButton; public var enterAsGuestButton:SimpleButton; public var passwordText:TextField; } }//package com.novelgames.lobby
Section 36
//MD5 (com.novelgames.lobby.MD5) package com.novelgames.lobby { import flash.utils.*; public class MD5 { public static function md5String(_arg1:String):String{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); return (md5ByteArray(_local2)); } public static function md5ByteArray(_arg1:ByteArray):String{ var _local2:Array; var _local3:Array; var _local4:int; var _local5:int; var _local6:int; var _local13:Array; var _local14:uint; var _local15:uint; var _local16:uint; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:*; _local2 = [7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]; _local3 = new Array(64); _local4 = 0; while (_local4 < 64) { _local3[_local4] = Math.floor((Math.abs(Math.sin((_local4 + 1))) * Math.pow(2, 32))); _local4++; }; var _local7:uint = 1732584193; var _local8:uint = 4023233417; var _local9:uint = 2562383102; var _local10:uint = 271733878; var _local11:int = (_arg1.length * 8); _arg1.writeByte(128); while (((_arg1.length * 8) % 0x0200) != 448) { _arg1.writeByte(0); }; _arg1.writeByte((_local11 & 0xFF)); _arg1.writeByte(((_local11 >> 8) & 0xFF)); _arg1.writeByte(((_local11 >> 16) & 0xFF)); _arg1.writeByte(((_local11 >> 24) & 0xFF)); _arg1.writeByte(0); _arg1.writeByte(0); _arg1.writeByte(0); _arg1.writeByte(0); var _local12:int = ((_arg1.length * 8) / 0x0200); _local6 = 0; while (_local6 < _local12) { _local13 = new Array(16); _local5 = 0; while (_local5 < 16) { _local13[_local5] = ((((_arg1[(((_local6 * 64) + (_local5 * 4)) + 3)] << 24) | (_arg1[(((_local6 * 64) + (_local5 * 4)) + 2)] << 16)) | (_arg1[(((_local6 * 64) + (_local5 * 4)) + 1)] << 8)) | _arg1[((_local6 * 64) + (_local5 * 4))]); _local5++; }; _local14 = _local7; _local15 = _local8; _local16 = _local9; _local17 = _local10; _local4 = 0; while (_local4 < 64) { if (_local4 < 16){ _local18 = ((_local15 & _local16) | (~(_local15) & _local17)); _local19 = _local4; } else { if (_local4 < 32){ _local18 = ((_local17 & _local15) | (~(_local17) & _local16)); _local19 = (((5 * _local4) + 1) % 16); } else { if (_local4 < 48){ _local18 = ((_local15 ^ _local16) ^ _local17); _local19 = (((3 * _local4) + 5) % 16); } else { _local18 = (_local16 ^ (_local15 | ~(_local17))); _local19 = ((7 * _local4) % 16); }; }; }; _local20 = _local17; _local17 = _local16; _local16 = _local15; _local15 = (_local15 + leftRotate((((_local14 + _local18) + _local3[_local4]) + _local13[_local19]), _local2[_local4])); _local14 = _local20; _local4++; }; _local7 = (_local7 + _local14); _local8 = (_local8 + _local15); _local9 = (_local9 + _local16); _local10 = (_local10 + _local17); _local6++; }; _arg1.length = (_local11 / 8); return ((((hexToString(_local7) + hexToString(_local8)) + hexToString(_local9)) + hexToString(_local10))); } private static function leftRotate(_arg1:uint, _arg2:int):uint{ var _local3:uint = ((1 << _arg2) - 1); return (((_arg1 << _arg2) | ((_arg1 >> (32 - _arg2)) & _local3))); } private static function hexToString(_arg1:uint):String{ return ((((hexByteToString((_arg1 & 0xFF)) + hexByteToString(((_arg1 >> 8) & 0xFF))) + hexByteToString(((_arg1 >> 16) & 0xFF))) + hexByteToString(((_arg1 >> 24) & 0xFF)))); } private static function hexByteToString(_arg1:uint):String{ var _local2:String = _arg1.toString(16); while (_local2.length < 2) { _local2 = ("0" + _local2); }; return (_local2); } } }//package com.novelgames.lobby
Section 37
//Message (com.novelgames.lobby.Message) package com.novelgames.lobby { public class Message { public var playIndex:int; public var type:int; public var playerIndex:int; public var synchronizeString:String; public var time:int; public var message:Object; public static var TYPE_GAME:int = 1; public static var TYPE_GAMESYNCHRONIZED:int = 2; public static var TYPE_GAMETIMEDSYNCHRONIZED:int = 3; public static var TYPE_DISCONNECT:int = 4; } }//package com.novelgames.lobby
Section 38
//MessageSerializer (com.novelgames.lobby.MessageSerializer) package com.novelgames.lobby { import flash.utils.*; import flash.xml.*; public class MessageSerializer { public static function serialize(_arg1:Object):String{ var _local2:String; var _local3:String; var _local4:int; if (_arg1 == null){ return ("<null />"); }; if ((_arg1 is String)){ return ((("<s v=\"" + htmlSpecialChars(String(_arg1))) + "\"/>")); }; if ((_arg1 is int)){ return ((("<i v=\"" + _arg1) + "\"/>")); }; if ((_arg1 is Number)){ return ((("<n v=\"" + toIEEE754HexString(Number(_arg1))) + "\"/>")); }; if ((_arg1 is Boolean)){ return ((("<b v=\"" + (_arg1) ? "t" : "f") + "\"/>")); } else { if ((_arg1 is Array)){ _local2 = "<a>"; _local4 = 0; while (_local4 < _arg1.length) { _local2 = (_local2 + serialize(_arg1[_local4])); _local4++; }; _local2 = (_local2 + "</a>"); return (_local2); } else { _local2 = "<o>"; for (_local3 in _arg1) { _local2 = (_local2 + (("<k n=\"" + htmlSpecialChars(_local3)) + "\">")); _local2 = (_local2 + serialize(_arg1[_local3])); _local2 = (_local2 + "</k>"); }; }; }; _local2 = (!NULL! + !NULL!); return (_local2); } public static function unserialize(_arg1:String):Object{ var _local2:XMLDocument = new XMLDocument(); _local2.ignoreWhite = true; _local2.parseXML(_arg1); return (xmlNodeToObject(_local2.firstChild)); } private static function toIEEE754HexString(_arg1:Number):String{ var _local3:String; var _local4:String; var _local2:ByteArray = new ByteArray(); _local2.endian = Endian.LITTLE_ENDIAN; _local2.writeDouble(_arg1); _local2.position = 0; _local3 = _local2.readUnsignedInt().toString(16); _local4 = _local2.readUnsignedInt().toString(16); if (_local4 != "0"){ while (_local3.length < 8) { _local3 = ("0" + _local3); }; return ((_local4 + _local3)); //unresolved jump }; return (_local3); } private static function fromIEEE754HexString(_arg1:String):Number{ var _local2:String; var _local3:String; var _local4:ByteArray = new ByteArray(); if (_arg1.length <= 8){ _local2 = _arg1; _local3 = "0"; } else { _local2 = _arg1.substr((_arg1.length - 8)); _local3 = _arg1.substr(0, (_arg1.length - 8)); }; _local4.endian = Endian.LITTLE_ENDIAN; _local4.writeInt(parseInt(_local2, 16)); _local4.writeInt(parseInt(_local3, 16)); _local4.position = 0; return (_local4.readDouble()); } private static function htmlSpecialChars(_arg1:String):String{ _arg1 = _arg1.replace(/&/g, "&amp;"); _arg1 = _arg1.replace(/"/g, "&quot;"); _arg1 = _arg1.replace(/</g, "&lt;"); _arg1 = _arg1.replace(/>/g, "&gt;"); return (_arg1); } private static function xmlNodeToObject(_arg1:XMLNode):Object{ var _local2:XMLNode; var _local3:Array; var _local4:Object; switch (_arg1.nodeName){ case "s": return (_arg1.attributes.v); case "i": return (parseInt(_arg1.attributes.v)); case "n": return (fromIEEE754HexString(_arg1.attributes.v)); case "b": return ((_arg1.attributes.v == "t")); case "a": _local3 = new Array(); _local2 = _arg1.firstChild; while (_local2 != null) { _local3.push(xmlNodeToObject(_local2)); _local2 = _local2.nextSibling; }; return (_local3); case "o": _local4 = new Object(); _local2 = _arg1.firstChild; while (_local2 != null) { if (_local2.nodeName != "k"){ } else { _local4[_local2.attributes.n] = xmlNodeToObject(_local2.firstChild); }; _local2 = _local2.nextSibling; }; return (_local4); case "null": return (null); }; return (null); } } }//package com.novelgames.lobby
Section 39
//NameEmailFailedPage (com.novelgames.lobby.NameEmailFailedPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class NameEmailFailedPage extends MovieClip { public var reasonText:MovieClip; public var emailText:TextField; public var facebookLoginButton:SimpleButton; public var submitButton:SimpleButton; public var nameText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 40
//NameEmailNoFacebookFailedPage (com.novelgames.lobby.NameEmailNoFacebookFailedPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class NameEmailNoFacebookFailedPage extends MovieClip { public var reasonText:MovieClip; public var emailText:TextField; public var submitButton:SimpleButton; public var nameText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 41
//NameEmailNoFacebookPage (com.novelgames.lobby.NameEmailNoFacebookPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class NameEmailNoFacebookPage extends MovieClip { public var emailText:TextField; public var submitButton:SimpleButton; public var nameText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 42
//NameEmailPage (com.novelgames.lobby.NameEmailPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class NameEmailPage extends MovieClip { public var emailText:TextField; public var facebookLoginButton:SimpleButton; public var submitButton:SimpleButton; public var nameText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 43
//NameFailedPage (com.novelgames.lobby.NameFailedPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class NameFailedPage extends MovieClip { public var reasonText:MovieClip; public var facebookLoginButton:SimpleButton; public var submitButton:SimpleButton; public var nameText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 44
//NameNoFacebookFailedPage (com.novelgames.lobby.NameNoFacebookFailedPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class NameNoFacebookFailedPage extends MovieClip { public var reasonText:MovieClip; public var submitButton:SimpleButton; public var nameText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 45
//NameNoFacebookPage (com.novelgames.lobby.NameNoFacebookPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class NameNoFacebookPage extends MovieClip { public var submitButton:SimpleButton; public var nameText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 46
//NamePage (com.novelgames.lobby.NamePage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class NamePage extends MovieClip { public var facebookLoginButton:SimpleButton; public var submitButton:SimpleButton; public var nameText:TextField; public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 47
//Player (com.novelgames.lobby.Player) package com.novelgames.lobby { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.net.*; public class Player extends MovieClip { public var playerInfo:PlayerInfo; private var loader:Loader; private var bounds:Rectangle; public function initialize(_arg1:PlayerInfo):void{ this.playerInfo = _arg1; if (_arg1.isRobot){ gotoAndStop("robot"); } else { if ((((_arg1.playerPictureURL == null)) || ((_arg1.playerPictureURL == "")))){ gotoAndStop("human"); } else { gotoAndStop("loading"); bounds = this.getBounds(this); bounds.bottom = 0; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadPictureCompleted); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadPictureFailed); loader.load(new URLRequest(_arg1.playerPictureURL)); }; }; } private function onLoadPictureCompleted(_arg1:Event):void{ var _local2:Number; var _local3:Number; var _local4:Number; _local2 = (bounds.width / loader.width); _local3 = (bounds.height / loader.height); _local4 = Math.min(_local2, _local3); loader.scaleX = _local4; loader.scaleY = _local4; gotoAndStop("picture"); loader.x = (bounds.x + ((bounds.width - loader.width) / 2)); loader.y = bounds.y; this.addChild(loader); } private function onLoadPictureFailed(_arg1:IOErrorEvent):void{ gotoAndStop("human"); } } }//package com.novelgames.lobby
Section 48
//PlayerGroup (com.novelgames.lobby.PlayerGroup) package com.novelgames.lobby { import flash.geom.*; public class PlayerGroup { public var indexX:int; public var indexY:int; public var x:Number; public var y:Number; private var randomOffsetX:Number; private var randomOffsetY:Number; public var table:Table; public var players:Array; public var viewers:Array; public static var STATE_IDLE:int = 1; public static var STATE_WAITING:int = 2; public static var STATE_WAITINGORSTARTING:int = 3; public static var STATE_STARTING:int = 4; public static var STATE_PLAYING:int = 5; public function PlayerGroup(_arg1:int, _arg2:int){ this.indexX = _arg1; this.indexY = _arg2; this.x = 0; this.y = 0; this.randomOffsetX = 0; this.randomOffsetY = 0; table = null; players = new Array(); viewers = new Array(); } public function getHasPlayer(_arg1:String):Boolean{ var _local2:int; _local2 = 0; while (_local2 < players.length) { if (players[_local2].playerInfo.playerUID == _arg1){ return (true); }; _local2++; }; return (false); } public function getHasPlayerByName(_arg1:String):Boolean{ var _local2:int; _local2 = 0; while (_local2 < players.length) { if (players[_local2].playerInfo.playerName == _arg1){ return (true); }; _local2++; }; return (false); } public function getHasViewer(_arg1:String):Boolean{ var _local2:int; _local2 = 0; while (_local2 < viewers.length) { if (viewers[_local2].playerInfo.playerUID == _arg1){ return (true); }; _local2++; }; return (false); } public function getHasViewerByName(_arg1:String):Boolean{ var _local2:int; _local2 = 0; while (_local2 < viewers.length) { if (viewers[_local2].playerInfo.playerName == _arg1){ return (true); }; _local2++; }; return (false); } public function getPlayerIsInGroup(_arg1:String):Boolean{ return (((getHasPlayer(_arg1)) || (getHasViewer(_arg1)))); } public function getPlayerIsInGroupByName(_arg1:String):Boolean{ return (((getHasPlayerByName(_arg1)) || (getHasViewerByName(_arg1)))); } public function getRobotIsInGroup(_arg1:Player):Boolean{ var _local2:int; _local2 = 0; while (_local2 < players.length) { if (players[_local2] == _arg1){ return (true); }; _local2++; }; return (false); } public function removePlayerOrViewer(_arg1:String):void{ var _local2:int; _local2 = 0; while (_local2 < players.length) { if (players[_local2].playerInfo.playerUID != _arg1){ } else { players.splice(_local2, 1); if (table != null){ table.tableInfo.playerUIDs.splice(_local2, 1); }; return; }; _local2++; }; _local2 = 0; while (_local2 < viewers.length) { if (viewers[_local2].playerInfo.playerUID != _arg1){ } else { viewers.splice(_local2, 1); if (table != null){ table.tableInfo.viewerUIDs.splice(_local2, 1); }; return; }; _local2++; }; } public function addPlayer(_arg1:Player):void{ players.push(_arg1); table.tableInfo.playerUIDs.push(_arg1.playerInfo.playerUID); } public function getIsHost(_arg1:String):Boolean{ return ((players[0].playerInfo.playerUID == _arg1)); } public function setThingsPositions(_arg1:Number, _arg2:Number, _arg3:Rectangle, _arg4:Array, _arg5:Array):void{ var _local6:Point; var _local7:int; this.x = _arg1; this.y = _arg2; if ((((this.randomOffsetX == 0)) && ((this.randomOffsetY == 0)))){ this.randomOffsetX = ((_arg3.left + (_arg3.width * Math.random())) / 2); this.randomOffsetY = ((_arg3.top + (_arg3.height * Math.random())) / 2); }; if (table == null){ players[0].x = (_arg1 + this.randomOffsetX); players[0].y = (_arg2 + this.randomOffsetY); } else { table.x = _arg1; table.y = _arg2; _local7 = 0; while (_local7 < players.length) { _local6 = getPosition(_local7, players.length, _arg4); players[_local7].x = (_arg1 + _local6.x); players[_local7].y = (_arg2 + _local6.y); _local7++; }; _local7 = 0; while (_local7 < viewers.length) { _local6 = getPosition(_local7, viewers.length, _arg5); viewers[_local7].x = (_arg1 + _local6.x); viewers[_local7].y = (_arg2 + _local6.y); _local7++; }; }; } private function getPosition(_arg1:int, _arg2:int, _arg3:Array):Point{ var _local4:Number = (_arg1 / _arg2); var _local5:int = Math.floor((_local4 * _arg3.length)); return (_arg3[_local5]); } public function getState():int{ var _local1:int; var _local2:int; if (table == null){ return (STATE_IDLE); }; if (table.tableInfo.isPlaying){ return (STATE_PLAYING); }; _local1 = table.tableInfo.possibleNoOfPlayers[(table.tableInfo.possibleNoOfPlayers.length - 1)]; if (players.length >= _local1){ return (STATE_STARTING); }; _local2 = 0; while (_local2 < table.tableInfo.possibleNoOfPlayers.length) { if (table.tableInfo.possibleNoOfPlayers[_local2] == players.length){ return (STATE_WAITINGORSTARTING); }; _local2++; }; return (STATE_WAITING); } public function getBubblePosition():Point{ if (table == null){ return (new Point(players[0].x, players[0].y)); }; return (new Point(x, y)); } public function getHasHumansBefore(_arg1:String):Boolean{ var _local2:int; _local2 = 0; while (_local2 < players.length) { if (players[_local2].playerInfo.playerUID == _arg1){ return (false); }; return (true); _local2++; }; return (false); } public function setVisible(_arg1:Boolean):void{ var _local2:int; if (table != null){ table.visible = _arg1; }; if (players != null){ _local2 = 0; while (_local2 < players.length) { players[_local2].visible = _arg1; _local2++; }; }; if (viewers != null){ _local2 = 0; while (_local2 < viewers.length) { viewers[_local2].visible = _arg1; _local2++; }; }; } } }//package com.novelgames.lobby
Section 49
//PlayerInfo (com.novelgames.lobby.PlayerInfo) package com.novelgames.lobby { public class PlayerInfo { public var playerUID:String; public var playerName:String; public var playerPictureURL:String; public var playerFacebookUserID:String; public var isRobot:Boolean; public function PlayerInfo(_arg1:String, _arg2:String, _arg3:String, _arg4:String){ this.playerUID = _arg1; this.playerName = _arg2; this.playerPictureURL = _arg3; this.playerFacebookUserID = _arg4; this.isRobot = false; } } }//package com.novelgames.lobby
Section 50
//RankPage (com.novelgames.lobby.RankPage) package com.novelgames.lobby { import flash.display.*; import flash.text.*; public dynamic class RankPage extends MovieClip { public var facebookText:MovieClip; public var emailText:MovieClip; public var mySpaceButton:MovieClip; public var twitterText:MovieClip; public var facebookButton:MovieClip; public var closeButton:SimpleButton; public var mySpaceText:MovieClip; public var twitterButton:MovieClip; public var emailButton:MovieClip; public var rankText:TextField; public var shareBackground:MovieClip; } }//package com.novelgames.lobby
Section 51
//ResultDialog (com.novelgames.lobby.ResultDialog) package com.novelgames.lobby { import flash.display.*; import flash.events.*; import flash.net.*; import flash.external.*; public class ResultDialog extends MovieClip { public var box:MovieClip; public function show(_arg1:Array, _arg2:int):void{ var _local5:int; var _local3:int = _arg1.length; var _local4 = -1; _local5 = 0; while (_local5 < _arg1.length) { if (_arg1[_local5] == -1){ } else { if (_arg1[_local5] < _local3){ _local3 = _arg1[_local5]; }; if (_arg1[_local5] > _local4){ _local4 = _arg1[_local5]; }; }; _local5++; }; if (_local3 == _local4){ box = new ResultPage(); box.gotoAndStop("draw"); } else { if (_local3 == _arg1[_arg2]){ box = new ResultPage(); box.gotoAndStop("win"); } else { if (_local4 == _arg1[_arg2]){ box = new ResultPage(); box.gotoAndStop("lose"); } else { box = new RankPage(); if (box.rankText){ box.rankText.embedFonts = false; box.rankText.text = (_arg1[_arg2] + 1); }; }; }; }; this.addChild(box); } } }//package com.novelgames.lobby
Section 52
//ResultPage (com.novelgames.lobby.ResultPage) package com.novelgames.lobby { import flash.display.*; public dynamic class ResultPage extends MovieClip { public var facebookText:MovieClip; public var emailText:MovieClip; public var mySpaceButton:MovieClip; public var twitterText:MovieClip; public var facebookButton:MovieClip; public var closeButton:SimpleButton; public var mySpaceText:MovieClip; public var twitterButton:MovieClip; public var emailButton:MovieClip; public var shareBackground:MovieClip; } }//package com.novelgames.lobby
Section 53
//RoomInfo (com.novelgames.lobby.RoomInfo) package com.novelgames.lobby { public class RoomInfo { public var roomID:int; public var roomName:String; public var roomCapacity:int; public var noOfPlayers:int; public function RoomInfo(_arg1:int, _arg2:String, _arg3:int, _arg4:int){ this.roomID = _arg1; this.roomName = _arg2; this.roomCapacity = _arg3; this.noOfPlayers = _arg4; } } }//package com.novelgames.lobby
Section 54
//RoomInside (com.novelgames.lobby.RoomInside) package com.novelgames.lobby { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class RoomInside extends MovieClip { private var roomInsideMC:RoomInsideMC; private var playerInfos:Array; private var tableInfos:Array; private var players:Array; private var tables:Array; private var occupiers:Array; private var playerGroups:Array; public var selfPlayerGroup:PlayerGroup; private var backgroundTileWidth:Number; private var backgroundTileHeight:Number; private var tableBounds:Rectangle; private var tablePlayerPositions:Array; private var tableViewerPositions:Array; private var scrollBounds:Rectangle; private var scrollTimer:Timer; private var scrollLastTime:int; private var scrollSpeedX:Number; private var scrollSpeedY:Number; private var invitingTableUID:String; private var isShowingWorld:Boolean; public function show(_arg1:Array, _arg2:Array, _arg3:String):void{ var _local5:Player; var _local6:Table; var _local7:int; var _local4:* = parent; this.playerInfos = _arg1; this.tableInfos = _arg2; updateTableMetrices(); players = new Array(); tables = new Array(); roomInsideMC = new RoomInsideMC(); this.addChild(roomInsideMC); createBackground(); _local7 = 0; while (_local7 < _arg1.length) { _local5 = createPlayer(_arg1[_local7]); players.push(_local5); roomInsideMC.thingsHolder.addChild(_local5); _local7++; }; if (_arg3 != ""){ _local5 = createRobot(_arg3); players.push(_local5); roomInsideMC.thingsHolder.addChild(_local5); }; _local7 = 0; while (_local7 < _arg2.length) { _local6 = createTable(_arg2[_local7]); tables.push(_local6); roomInsideMC.thingsHolder.addChild(_local6); _local7++; }; if ((((_local4.playerFacebookUserID == null)) || ((_local4.playerFacebookUserID == "")))){ isShowingWorld = true; roomInsideMC.filterText.stop(); roomInsideMC.filterText.visible = false; } else { isShowingWorld = (_local4.lobbyDefaultFilter == "world"); roomInsideMC.filterText.gotoAndStop((isShowingWorld) ? "world" : "friends"); roomInsideMC.filterText.addEventListener(MouseEvent.CLICK, onFilterTextClicked); roomInsideMC.filterText.buttonMode = true; }; initializeThingsPositions(); showNames(); placeSelfAtCenter(); updateScrollBounds(); updateArrows(); initializeScroll(); setPlayersControl(); roomInsideMC.helpButton.addEventListener(MouseEvent.CLICK, onHelpButtonClicked); roomInsideMC.closeButton.addEventListener(MouseEvent.CLICK, onCloseButtonClicked); roomInsideMC.namesHolder.mouseEnabled = false; roomInsideMC.namesHolder.mouseChildren = false; roomInsideMC.bubblesHolder.mouseEnabled = false; roomInsideMC.bubblesHolder.mouseChildren = false; roomInsideMC.mask = roomInsideMC.theMask; roomInsideMC.helpDialog.closeButton.addEventListener(MouseEvent.CLICK, onHelpDialogCloseButtonClicked); roomInsideMC.helpDialog.visible = false; } public function hide():void{ if (scrollTimer){ scrollTimer.stop(); scrollTimer = null; }; parent.removeChild(this); } private function updateTableMetrices():void{ var _local6:Rectangle; var _local7:int; var _local1:Table = new Table(); var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; tablePlayerPositions = new Array(); tableViewerPositions = new Array(); _local7 = 1; while (_local7 <= _local1.totalFrames) { _local1.gotoAndStop(_local7); tablePlayerPositions.push(new Point(_local1.player.x, _local1.player.y)); tableViewerPositions.push(new Point(_local1.viewer.x, _local1.viewer.y)); if (_local1.player.x < _local2){ _local2 = _local1.player.x; }; if (_local1.player.x > _local4){ _local4 = _local1.player.x; }; if (_local1.player.y < _local3){ _local3 = _local1.player.y; }; if (_local1.player.y > _local5){ _local5 = _local1.player.y; }; _local7++; }; _local6 = _local1.viewer.getBounds(_local1.viewer); _local2 = (_local2 + _local6.left); _local4 = (_local4 + _local6.right); _local3 = (_local3 + _local6.top); _local5 = (_local5 + _local6.bottom); tableBounds = new Rectangle(_local2, _local3, (_local4 - _local2), (_local5 - _local3)); } private function createBackground():void{ var _local1:int; var _local2:int; var _local3:RoomInsideBackground; var _local4:int; var _local5:int; _local3 = new RoomInsideBackground(); backgroundTileWidth = _local3.width; backgroundTileHeight = _local3.height; _local1 = (Math.ceil((roomInsideMC.theMask.width / _local3.width)) + 1); _local2 = (Math.ceil((roomInsideMC.theMask.height / _local3.height)) + 1); _local4 = 0; while (_local4 < _local1) { _local5 = 0; while (_local5 < _local2) { if (((!((_local4 == 0))) || (!((_local5 == 0))))){ _local3 = new RoomInsideBackground(); }; _local3.x = (_local3.width * _local4); _local3.y = (_local3.height * _local5); roomInsideMC.backgroundHolder.addChild(_local3); _local5++; }; _local4++; }; } private function createPlayer(_arg1:PlayerInfo):Player{ var _local2:Player; _local2 = new Player(); _local2.initialize(_arg1); return (_local2); } private function createRobot(_arg1:String):Player{ var _local2:PlayerInfo; var _local3:Player; _local2 = new PlayerInfo("robot", _arg1, null, null); _local2.isRobot = true; _local3 = new Player(); _local3.initialize(_local2); return (_local3); } private function destroyPlayer(_arg1:String):void{ var _local2:int; _local2 = 0; while (_local2 < players.length) { if (players[_local2].playerInfo.playerUID != _arg1){ } else { roomInsideMC.thingsHolder.removeChild(players[_local2]); players.splice(_local2, 1); return; }; _local2++; }; } private function destroyRobot(_arg1:Player):void{ var _local2:int; _local2 = 0; while (_local2 < players.length) { if (players[_local2] != _arg1){ } else { roomInsideMC.thingsHolder.removeChild(players[_local2]); players.splice(_local2, 1); return; }; _local2++; }; } private function createTable(_arg1:TableInfo):Table{ var _local2:Table; _local2 = new Table(); _local2.tableInfo = _arg1; _local2.stop(); _local2.player.visible = false; _local2.viewer.visible = false; _local2.toys.visible = _arg1.isPlaying; return (_local2); } private function destroyTable(_arg1:String):void{ var _local2:int; _local2 = 0; while (_local2 < tables.length) { if (tables[_local2].tableInfo.tableUID != _arg1){ } else { roomInsideMC.thingsHolder.removeChild(tables[_local2]); tables.splice(_local2, 1); return; }; _local2++; }; } private function onFilterTextClicked(_arg1:MouseEvent):void{ isShowingWorld = !(isShowingWorld); roomInsideMC.filterText.gotoAndStop((isShowingWorld) ? "world" : "friends"); updateOccupiers(); showNames(); placeSelfAtCenter(); updateScrollBounds(); updateArrows(); initializeScroll(); } private function initializeThingsPositions():void{ var _local6:Player; var _local7:Table; var _local8:Point; var _local9:PlayerGroup; var _local10:Point; var _local11:Point; var _local12:int; var _local13:int; var _local14:int; var _local1:* = parent; var _local2:Array = this.tables.concat(); var _local3:Array = this.players.concat(); var _local4:Array = new Array(); var _local5:Array = new Array(); _local12 = 0; while (_local12 < _local2.length) { _local7 = _local2[_local12]; _local4[_local12] = new Array(); _local5[_local12] = new Array(); _local13 = 0; while (_local13 < _local7.tableInfo.playerUIDs.length) { if (_local7.tableInfo.playerUIDs[_local13] == "robot"){ _local6 = createRobot(_local1.robotName); players.push(_local6); roomInsideMC.thingsHolder.addChild(_local6); _local4[_local12].push(_local6); } else { _local14 = 0; while (_local14 < _local3.length) { _local6 = _local3[_local14]; if (_local6.playerInfo.playerUID == _local7.tableInfo.playerUIDs[_local13]){ _local4[_local12].push(_local6); _local3.splice(_local14, 1); break; }; _local14++; }; }; _local13++; }; _local13 = 0; while (_local13 < _local7.tableInfo.viewerUIDs.length) { _local14 = 0; while (_local14 < _local3.length) { _local6 = _local3[_local14]; if (_local6.playerInfo.playerUID == _local7.tableInfo.viewerUIDs[_local13]){ _local5[_local12].push(_local6); _local3.splice(_local14, 1); break; }; _local14++; }; _local13++; }; _local12++; }; playerGroups = new Array(); _local12 = 0; while (_local12 < _local3.length) { _local9 = new PlayerGroup(-1, -1); _local9.players.push(_local3[_local12]); playerGroups.push(_local9); _local12++; }; _local12 = 0; while (_local12 < _local2.length) { _local9 = new PlayerGroup(-1, -1); _local9.table = _local2[_local12]; _local9.players = _local4[_local12]; _local9.viewers = _local5[_local12]; playerGroups.push(_local9); _local12++; }; selfPlayerGroup = playerGroups[0]; occupiers = [[null]]; updateOccupiers(); } private function updateOccupiers():void{ var _local1:PlayerGroup; var _local2:Point; var _local3:Point; var _local4:int; _local4 = 0; while (_local4 < playerGroups.length) { _local1 = playerGroups[_local4]; if (_local1.indexX >= 0){ if (((isShowingWorld) || (getPlayerGroupContainsFriends(_local1)))){ _local1.setThingsPositions(_local1.x, _local1.y, tableBounds, tablePlayerPositions, tableViewerPositions); _local1.setVisible(true); } else { occupiers[_local1.indexX][_local1.indexY] = null; _local1.indexX = -1; _local1.indexY = -1; _local1.setThingsPositions(0, 0, tableBounds, tablePlayerPositions, tableViewerPositions); _local1.setVisible(false); }; } else { if (((!(isShowingWorld)) && (!(getPlayerGroupContainsFriends(_local1))))){ _local1.setThingsPositions(0, 0, tableBounds, tablePlayerPositions, tableViewerPositions); _local1.setVisible(false); } else { _local2 = getNextAvailableOccupierPosition(); if (_local2 == null){ expandOccupiers(); _local2 = getNextAvailableOccupierPosition(); }; _local3 = getPlayerGroupXY(_local2.x, _local2.y); occupiers[_local2.x][_local2.y] = _local1; _local1.indexX = _local2.x; _local1.indexY = _local2.y; _local1.setThingsPositions(_local3.x, _local3.y, tableBounds, tablePlayerPositions, tableViewerPositions); _local1.setVisible(true); }; }; _local4++; }; updateThingsDepths(); } private function getPlayerGroupContainsFriends(_arg1:PlayerGroup):Boolean{ var _local3:Player; var _local4:int; var _local2:* = parent; _local4 = 0; while (_local4 < _arg1.players.length) { _local3 = _arg1.players[_local4]; if (getPlayerIsFriend(_local3)){ return (true); }; _local4++; }; _local4 = 0; while (_local4 < _arg1.viewers.length) { _local3 = _arg1.viewers[_local4]; if (getPlayerIsFriend(_local3)){ return (true); }; _local4++; }; return (false); } private function getTableContainsFriends(_arg1:Table):Boolean{ var _local3:Player; var _local4:int; var _local2:* = parent; _local4 = 0; while (_local4 < _arg1.tableInfo.playerUIDs.length) { _local3 = getPlayer(_arg1.tableInfo.playerUIDs[_local4]); if (getPlayerIsFriend(_local3)){ return (true); }; _local4++; }; return (false); } private function getPlayerIsFriend(_arg1:Player):Boolean{ var _local3:String; var _local4:int; var _local2:* = parent; _local3 = _arg1.playerInfo.playerFacebookUserID; if (_local3 == null){ return (false); }; if (_local3 == ""){ return (false); }; if (_local3 == _local2.playerFacebookUserID){ return (true); }; _local4 = 0; while (_local4 < _local2.playerFacebookFriendIDs.length) { if (_local3 == _local2.playerFacebookFriendIDs[_local4]){ return (true); }; _local4++; }; return (false); } private function getOccupiersDimension(_arg1:int):Point{ var _local2:Number = roomInsideMC.theMask.width; var _local3:Number = roomInsideMC.theMask.height; var _local4:Number = tableBounds.width; var _local5:Number = tableBounds.height; var _local6 = 1; var _local7 = 1; while ((_local6 * _local7) < _arg1) { if (((_local4 * _local6) / (_local5 * (_local7 + 1))) >= (_local2 / _local3)){ _local7++; } else { _local6++; }; }; return (new Point(_local6, _local7)); } private function getNextAvailableOccupierPosition():Point{ var _local1:int; var _local2:int; var _local3:int; var _local6:int; var _local7:int; var _local4:Array = new Array(); var _local5:int; _local1 = Math.floor(((occupiers.length - 1) / 2)); _local2 = Math.floor(((occupiers[0].length - 1) / 2)); _local3 = Math.max(((occupiers.length - _local1) - 1), ((occupiers[0].length - _local2) - 1)); while ((((_local4.length == 0)) && ((_local5 <= _local3)))) { _local6 = (_local1 - _local5); while (_local6 <= (_local1 + _local5)) { if ((((_local6 < 0)) || ((_local6 >= occupiers.length)))){ } else { _local7 = (_local2 - _local5); while (_local7 <= (_local2 + _local5)) { if ((((_local7 < 0)) || ((_local7 >= occupiers[0].length)))){ } else { if (((((((!((_local6 == (_local1 - _local5)))) && (!((_local6 == (_local1 + _local5)))))) && (!((_local7 == (_local2 - _local5)))))) && (!((_local7 == (_local2 + _local5)))))){ } else { if (occupiers[_local6][_local7] == null){ _local4.push(new Point(_local6, _local7)); }; }; }; _local7++; }; }; _local6++; }; _local5++; }; if (_local4.length > 0){ return (_local4[Math.floor((Math.random() * _local4.length))]); }; return (null); } private function updateThingsDepths():void{ var _local2:int; var _local1:Array = new Array(); _local2 = 0; while (_local2 < players.length) { _local1.push(players[_local2]); _local2++; }; _local2 = 0; while (_local2 < tables.length) { _local1.push(tables[_local2]); _local2++; }; _local1.sort(compareYX); _local2 = 0; while (_local2 < _local1.length) { roomInsideMC.thingsHolder.setChildIndex(_local1[_local2], _local2); _local2++; }; } private function placeSelfAtCenter():void{ var _local1:Rectangle = players[0].getBounds(roomInsideMC); var _local2:Number = roomInsideMC.theMask.width; var _local3:Number = roomInsideMC.theMask.height; var _local4:Number = (((_local2 - _local1.width) / 2) - _local1.left); var _local5:Number = (((_local3 - _local1.height) / 2) - _local1.top); roomInsideMC.thingsHolder.x = (roomInsideMC.thingsHolder.x + _local4); roomInsideMC.thingsHolder.y = (roomInsideMC.thingsHolder.y + _local5); roomInsideMC.namesHolder.x = (roomInsideMC.namesHolder.x + _local4); roomInsideMC.namesHolder.y = (roomInsideMC.namesHolder.y + _local5); roomInsideMC.bubblesHolder.x = (roomInsideMC.bubblesHolder.x + _local4); roomInsideMC.bubblesHolder.y = (roomInsideMC.bubblesHolder.y + _local5); } private function showNames():void{ var _local2:Bubble; var _local3:int; var _local1:Array = new Array(); while (roomInsideMC.namesHolder.numChildren > 0) { roomInsideMC.namesHolder.removeChildAt((roomInsideMC.namesHolder.numChildren - 1)); }; _local3 = 0; while (_local3 < players.length) { _local2 = createNameBubble(players[_local3]); _local2.visible = players[_local3].visible; _local1.push(_local2); roomInsideMC.namesHolder.addChild(_local2); _local3++; }; _local1.sort(compareYX); _local3 = 0; while (_local3 < _local1.length) { roomInsideMC.namesHolder.setChildIndex(_local1[_local3], _local3); _local3++; }; } private function createNameBubble(_arg1:Player):Bubble{ var _local2:* = parent; var _local3:Bubble = new Bubble(); var _local4:Rectangle = _arg1.getBounds(_arg1); if (_arg1.playerInfo.playerUID == _local2.playerUID){ _local3.showYou(_arg1.playerInfo.playerName, _arg1.x, (_arg1.y + _local4.y)); } else { _local3.showName(_arg1.playerInfo.playerName, _arg1.x, (_arg1.y + _local4.y)); }; return (_local3); } private function updateArrows():void{ var _local1:Rectangle = scrollBounds; roomInsideMC.arrowLeft.visible = false; roomInsideMC.arrowRight.visible = false; roomInsideMC.arrowUp.visible = false; roomInsideMC.arrowDown.visible = false; roomInsideMC.arrowUpLeft.visible = false; roomInsideMC.arrowUpRight.visible = false; roomInsideMC.arrowDownLeft.visible = false; roomInsideMC.arrowDownRight.visible = false; if (_local1.left < 0){ if (_local1.top < 0){ roomInsideMC.arrowUpLeft.visible = true; }; if (_local1.bottom > roomInsideMC.theMask.height){ roomInsideMC.arrowDownLeft.visible = true; }; if (((!(roomInsideMC.arrowUpLeft.visible)) && (!(roomInsideMC.arrowDownLeft.visible)))){ roomInsideMC.arrowLeft.visible = true; }; }; if (_local1.right > roomInsideMC.theMask.width){ if (_local1.top < 0){ roomInsideMC.arrowUpRight.visible = true; }; if (_local1.bottom > roomInsideMC.theMask.height){ roomInsideMC.arrowDownRight.visible = true; }; if (((!(roomInsideMC.arrowUpRight.visible)) && (!(roomInsideMC.arrowDownRight.visible)))){ roomInsideMC.arrowRight.visible = true; }; }; if (_local1.top < 0){ if (((!(roomInsideMC.arrowUpLeft.visible)) && (!(roomInsideMC.arrowUpRight.visible)))){ roomInsideMC.arrowUp.visible = true; }; }; if (_local1.bottom > roomInsideMC.theMask.height){ if (((!(roomInsideMC.arrowDownLeft.visible)) && (!(roomInsideMC.arrowDownRight.visible)))){ roomInsideMC.arrowDown.visible = true; }; }; } private function updateScrollBounds():void{ var _local2:DisplayObject; var _local3:int; var _local1:Rectangle; _local3 = 0; while (_local3 < roomInsideMC.namesHolder.numChildren) { _local2 = roomInsideMC.namesHolder.getChildAt(_local3); if (!_local2.visible){ } else { if (_local1 == null){ _local1 = _local2.getBounds(roomInsideMC); } else { _local1 = _local1.union(_local2.getBounds(roomInsideMC)); }; }; _local3++; }; _local3 = 0; while (_local3 < roomInsideMC.thingsHolder.numChildren) { _local2 = roomInsideMC.thingsHolder.getChildAt(_local3); if (!_local2.visible){ } else { if (_local1 == null){ _local1 = _local2.getBounds(roomInsideMC); } else { _local1 = _local1.union(_local2.getBounds(roomInsideMC)); }; }; _local3++; }; _local1.left = (_local1.left - tableBounds.width); _local1.right = (_local1.right + tableBounds.width); _local1.top = (_local1.top - tableBounds.height); _local1.bottom = (_local1.bottom + tableBounds.height); scrollBounds = _local1; } private function initializeScroll():void{ roomInsideMC.addEventListener(MouseEvent.MOUSE_MOVE, onScrollMouseMove); } private function onScrollMouseMove(_arg1:MouseEvent):void{ var _local3:Number; var _local4:Number; var _local2:* = parent; if (roomInsideMC.theMask.mouseX < _local2.roomInsideScrollDistance){ _local3 = ((_local2.roomInsideScrollDistance - roomInsideMC.theMask.mouseX) / _local2.roomInsideScrollDistance); } else { if (roomInsideMC.theMask.mouseX > (roomInsideMC.theMask.width - _local2.roomInsideScrollDistance)){ _local3 = (-((roomInsideMC.theMask.mouseX - (roomInsideMC.theMask.width - _local2.roomInsideScrollDistance))) / _local2.roomInsideScrollDistance); } else { _local3 = 0; }; }; if (roomInsideMC.theMask.mouseY < _local2.roomInsideScrollDistance){ _local4 = ((_local2.roomInsideScrollDistance - roomInsideMC.theMask.mouseY) / _local2.roomInsideScrollDistance); } else { if (roomInsideMC.theMask.mouseY > (roomInsideMC.theMask.height - _local2.roomInsideScrollDistance)){ _local4 = (-((roomInsideMC.theMask.mouseY - (roomInsideMC.theMask.height - _local2.roomInsideScrollDistance))) / _local2.roomInsideScrollDistance); } else { _local4 = 0; }; }; scrollSpeedX = _local3; scrollSpeedY = _local4; if (!scrollTimer){ scrollLastTime = getTimer(); scrollTimer = new Timer(1, 0); scrollTimer.addEventListener(TimerEvent.TIMER, onScrollTime); scrollTimer.start(); }; } private function onScrollTime(_arg1:TimerEvent):void{ var _local2:* = parent; var _local3:int = getTimer(); var _local4:Rectangle = scrollBounds; var _local5:Number = (((scrollSpeedX * _local2.roomInsideScrollSpeed) * (_local3 - scrollLastTime)) / 1000); var _local6:Number = (((scrollSpeedY * _local2.roomInsideScrollSpeed) * (_local3 - scrollLastTime)) / 1000); if (_local5 > 0){ if ((_local4.left + _local5) > 0){ _local5 = -(_local4.left); }; if (_local5 < 0){ _local5 = 0; }; } else { if ((_local4.right + _local5) < roomInsideMC.theMask.width){ _local5 = (roomInsideMC.theMask.width - _local4.right); }; if (_local5 > 0){ _local5 = 0; }; }; if (_local6 > 0){ if ((_local4.top + _local6) > 0){ _local6 = -(_local4.top); }; if (_local6 < 0){ _local6 = 0; }; } else { if ((_local4.bottom + _local6) < roomInsideMC.theMask.height){ _local6 = (roomInsideMC.theMask.height - _local4.bottom); }; if (_local6 > 0){ _local6 = 0; }; }; roomInsideMC.thingsHolder.x = (roomInsideMC.thingsHolder.x + _local5); roomInsideMC.thingsHolder.y = (roomInsideMC.thingsHolder.y + _local6); roomInsideMC.namesHolder.x = (roomInsideMC.namesHolder.x + _local5); roomInsideMC.namesHolder.y = (roomInsideMC.namesHolder.y + _local6); roomInsideMC.bubblesHolder.x = (roomInsideMC.bubblesHolder.x + _local5); roomInsideMC.bubblesHolder.y = (roomInsideMC.bubblesHolder.y + _local6); _local4.x = (_local4.x + _local5); _local4.y = (_local4.y + _local6); moveBackground(_local5, _local6); updateArrows(); scrollLastTime = _local3; } private function moveBackground(_arg1:Number, _arg2:Number):void{ var _local3:Rectangle = roomInsideMC.backgroundHolder.getBounds(roomInsideMC); while ((_local3.left + _arg1) > 0) { _arg1 = (_arg1 - backgroundTileWidth); }; while ((_local3.right + _arg1) < roomInsideMC.theMask.width) { _arg1 = (_arg1 + backgroundTileWidth); }; while ((_local3.top + _arg2) > 0) { _arg2 = (_arg2 - backgroundTileHeight); }; while ((_local3.bottom + _arg2) < roomInsideMC.theMask.height) { _arg2 = (_arg2 + backgroundTileHeight); }; roomInsideMC.backgroundHolder.x = (roomInsideMC.backgroundHolder.x + _arg1); roomInsideMC.backgroundHolder.y = (roomInsideMC.backgroundHolder.y + _arg2); } private function setPlayersControl():void{ var _local1:int; _local1 = 0; while (_local1 < players.length) { players[_local1].addEventListener(MouseEvent.MOUSE_OVER, onPlayerMouseOver); players[_local1].addEventListener(MouseEvent.MOUSE_OUT, onPlayerMouseOut); players[_local1].addEventListener(MouseEvent.MOUSE_DOWN, onPlayerMouseDown); players[_local1].buttonMode = true; _local1++; }; _local1 = 0; while (_local1 < tables.length) { tables[_local1].addEventListener(MouseEvent.MOUSE_OVER, onTableMouseOver); tables[_local1].addEventListener(MouseEvent.MOUSE_OUT, onTableMouseOut); tables[_local1].addEventListener(MouseEvent.MOUSE_DOWN, onTableMouseDown); tables[_local1].buttonMode = true; _local1++; }; } private function onPlayerMouseOver(_arg1:MouseEvent):void{ var _local2:Player = Player(_arg1.currentTarget); var _local3:PlayerGroup = (_local2.playerInfo.isRobot) ? getRobotPlayerGroup(_local2) : getPlayerPlayerGroup(_local2.playerInfo.playerUID); onPlayerGroupMouseOver(_local3); } private function onPlayerMouseOut(_arg1:MouseEvent):void{ hideBubbles(); } private function onPlayerMouseDown(_arg1:MouseEvent):void{ var _local2:Player = Player(_arg1.currentTarget); var _local3:PlayerGroup = (_local2.playerInfo.isRobot) ? getRobotPlayerGroup(_local2) : getPlayerPlayerGroup(_local2.playerInfo.playerUID); onPlayerGroupMouseDown(_local3); } private function onTableMouseOver(_arg1:MouseEvent):void{ var _local2:Table = Table(_arg1.currentTarget); var _local3:PlayerGroup = getTablePlayerGroup(_local2.tableInfo.tableUID); onPlayerGroupMouseOver(_local3); } private function onTableMouseOut(_arg1:MouseEvent):void{ hideBubbles(); } private function onTableMouseDown(_arg1:MouseEvent):void{ var _local2:Table = Table(_arg1.currentTarget); var _local3:PlayerGroup = getTablePlayerGroup(_local2.tableInfo.tableUID); onPlayerGroupMouseDown(_local3); } private function onPlayerGroupMouseOver(_arg1:PlayerGroup):void{ var _local5:int; var _local2:* = parent; var _local3:int = _arg1.getState(); var _local4:Point = _arg1.getBubblePosition(); var _local6:Bubble = new Bubble(); hideBubbles(); if (_arg1 == selfPlayerGroup){ switch (_local3){ case PlayerGroup.STATE_IDLE: _local6.showOpenTable(_local4.x, _local4.y); break; case PlayerGroup.STATE_WAITING: _local6.showWaiting(_local4.x, _local4.y, _arg1.table.tableInfo.possibleNoOfPlayers); break; case PlayerGroup.STATE_WAITINGORSTARTING: if (_arg1.getIsHost(_local2.playerUID)){ _local6.showWaitingOrStart(_local4.x, _local4.y, _arg1.table.tableInfo.possibleNoOfPlayers); } else { _local6.showWaiting(_local4.x, _local4.y, _arg1.table.tableInfo.possibleNoOfPlayers); }; break; case PlayerGroup.STATE_STARTING: if (_arg1.getIsHost(_local2.playerUID)){ _local6.showStart(_local4.x, _local4.y); } else { _local6.showWaitingHost(_local4.x, _local4.y); }; break; }; } else { _local5 = selfPlayerGroup.getState(); switch (_local3){ case PlayerGroup.STATE_IDLE: switch (_local5){ case PlayerGroup.STATE_IDLE: case PlayerGroup.STATE_WAITING: case PlayerGroup.STATE_WAITINGORSTARTING: _local6.showInvite(_local4.x, _local4.y); break; }; break; case PlayerGroup.STATE_WAITING: case PlayerGroup.STATE_WAITINGORSTARTING: switch (_local5){ case PlayerGroup.STATE_IDLE: _local6.showJoinTable(_local4.x, _local4.y); break; case PlayerGroup.STATE_WAITING: case PlayerGroup.STATE_WAITINGORSTARTING: case PlayerGroup.STATE_STARTING: _local6.showWaiting(_local4.x, _local4.y, _arg1.table.tableInfo.possibleNoOfPlayers); break; }; break; case PlayerGroup.STATE_STARTING: switch (_local5){ case PlayerGroup.STATE_IDLE: case PlayerGroup.STATE_WAITING: case PlayerGroup.STATE_WAITINGORSTARTING: case PlayerGroup.STATE_STARTING: _local6.showWaiting(_local4.x, _local4.y, _arg1.table.tableInfo.possibleNoOfPlayers); break; }; break; case PlayerGroup.STATE_PLAYING: switch (_local5){ case PlayerGroup.STATE_IDLE: case PlayerGroup.STATE_WAITING: case PlayerGroup.STATE_WAITINGORSTARTING: case PlayerGroup.STATE_STARTING: _local6.showPlaying(_local4.x, _local4.y); break; }; break; }; }; roomInsideMC.bubblesHolder.addChild(_local6); } private function onPlayerGroupMouseDown(_arg1:PlayerGroup):void{ var _local4:int; var _local2:* = parent; var _local3:int = _arg1.getState(); hideBubbles(); if (_arg1 == selfPlayerGroup){ switch (_local3){ case PlayerGroup.STATE_IDLE: _local2.doOpenTable(); break; case PlayerGroup.STATE_WAITINGORSTARTING: case PlayerGroup.STATE_STARTING: if (_arg1.getIsHost(_local2.playerUID)){ _local2.doStartPlaying(); }; break; }; } else { _local4 = selfPlayerGroup.getState(); switch (_local3){ case PlayerGroup.STATE_IDLE: switch (_local4){ case PlayerGroup.STATE_IDLE: _local2.doOpenTable(_arg1.players[0].playerInfo.playerUID); break; case PlayerGroup.STATE_WAITING: case PlayerGroup.STATE_WAITINGORSTARTING: _local2.doInvite(_arg1.players[0].playerInfo.playerUID); break; }; break; case PlayerGroup.STATE_WAITING: case PlayerGroup.STATE_WAITINGORSTARTING: switch (_local4){ case PlayerGroup.STATE_IDLE: _local2.doJoinTable(_arg1.table.tableInfo.tableUID); break; }; break; case PlayerGroup.STATE_STARTING: break; case PlayerGroup.STATE_PLAYING: switch (_local4){ case PlayerGroup.STATE_IDLE: break; }; break; }; }; } private function hideBubbles():void{ while (roomInsideMC.bubblesHolder.numChildren > 0) { roomInsideMC.bubblesHolder.removeChildAt((roomInsideMC.bubblesHolder.numChildren - 1)); }; } private function onHelpButtonClicked(_arg1:MouseEvent):void{ roomInsideMC.helpDialog.visible = true; } private function onHelpDialogCloseButtonClicked(_arg1:MouseEvent):void{ roomInsideMC.helpDialog.visible = false; } private function onCloseButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; _local2.doLeaveRoom(); } public function playerOpenedTable(_arg1:String, _arg2:String, _arg3:Array, _arg4:String):void{ var _local5:PlayerGroup = getPlayerPlayerGroup(_arg1); var _local6:TableInfo = new TableInfo(_arg3, _arg2, [_arg1], new Array(), false, _arg4); var _local7:Table = createTable(_local6); tables.push(_local7); roomInsideMC.thingsHolder.addChild(_local7); _local5.table = _local7; updateOccupiers(); showNames(); updateScrollBounds(); updateArrows(); updateThingsDepths(); setPlayersControl(); } public function getPlayerPlayerGroup(_arg1:String):PlayerGroup{ var _local2:int; _local2 = 0; while (_local2 < playerGroups.length) { if (playerGroups[_local2] == null){ } else { if (playerGroups[_local2].getPlayerIsInGroup(_arg1)){ return (playerGroups[_local2]); }; }; _local2++; }; return (null); } public function getPlayerPlayerGroupByName(_arg1:String):PlayerGroup{ var _local2:int; _local2 = 0; while (_local2 < playerGroups.length) { if (playerGroups[_local2] == null){ } else { if (playerGroups[_local2].getPlayerIsInGroupByName(_arg1)){ return (playerGroups[_local2]); }; }; _local2++; }; return (null); } public function getRobotPlayerGroup(_arg1:Player):PlayerGroup{ var _local2:int; _local2 = 0; while (_local2 < playerGroups.length) { if (playerGroups[_local2] == null){ } else { if (playerGroups[_local2].getRobotIsInGroup(_arg1)){ return (playerGroups[_local2]); }; }; _local2++; }; return (null); } public function getTablePlayerGroup(_arg1:String):PlayerGroup{ var _local2:int; _local2 = 0; while (_local2 < playerGroups.length) { if (playerGroups[_local2] == null){ } else { if (playerGroups[_local2].table == null){ } else { if (playerGroups[_local2].table.tableInfo.tableUID == _arg1){ return (playerGroups[_local2]); }; }; }; _local2++; }; return (null); } public function getTablePlayerGroupByTableID(_arg1:String):PlayerGroup{ var _local2:int; _local2 = 0; while (_local2 < playerGroups.length) { if (playerGroups[_local2] == null){ } else { if (playerGroups[_local2].table == null){ } else { if (playerGroups[_local2].table.tableInfo.tableID == _arg1){ return (playerGroups[_local2]); }; }; }; _local2++; }; return (null); } public function getPlayerGroupsSortedByPlayerUID():Array{ var _local1:Array = playerGroups.concat(); _local1.sort(comparePlayerGroupPlayerUID); return (_local1); } private function comparePlayerGroupPlayerUID(_arg1:PlayerGroup, _arg2:PlayerGroup):int{ var _local3:String; var _local4:int; _local3 = _arg1.players[0].playerInfo.playerUID; _local4 = 1; while (_local4 < _arg1.players.length) { if (_arg1.players[_local4].playerInfo.playerUID < _local3){ _local3 = _arg1.players[_local4].playerInfo.playerUID; }; _local4++; }; _local4 = 0; while (_local4 < _arg2.players.length) { if (_arg2.players[_local4].playerInfo.playerUID < _local3){ return (1); }; _local4++; }; return (-1); } public function playerJoinedRoom(_arg1:String, _arg2:String, _arg3:String, _arg4:String):void{ var _local5:PlayerInfo; var _local6:Player; var _local7:PlayerGroup; var _local8:Point; var _local9:Point; _local5 = new PlayerInfo(_arg1, _arg2, _arg3, _arg4); _local6 = createPlayer(_local5); players.push(_local6); roomInsideMC.thingsHolder.addChild(_local6); _local7 = new PlayerGroup(-1, -1); _local7.players.push(_local6); playerGroups.push(_local7); updateOccupiers(); showNames(); updateScrollBounds(); updateArrows(); setPlayersControl(); updateThingsDepths(); } private function expandOccupiers():void{ var _local1:Point; var _local2:int; var _local3:int; var _local4:Array; var _local5:int; var _local6:int; _local1 = getOccupiersDimension(((occupiers.length * occupiers[0].length) + 1)); _local2 = (Math.floor(((_local1.x - 1) / 2)) - Math.floor(((occupiers.length - 1) / 2))); _local3 = (Math.floor(((_local1.y - 1) / 2)) - Math.floor(((occupiers[0].length - 1) / 2))); _local4 = new Array(); _local5 = 0; while (_local5 < _local1.x) { _local4[_local5] = new Array(); _local6 = 0; while (_local6 < _local1.y) { if (((((((((_local5 - _local2) >= 0)) && (((_local5 - _local2) < occupiers.length)))) && (((_local6 - _local3) >= 0)))) && (((_local6 - _local3) < occupiers[0].length)))){ _local4[_local5][_local6] = occupiers[(_local5 - _local2)][(_local6 - _local3)]; if (_local4[_local5][_local6] != null){ _local4[_local5][_local6].indexX = (_local4[_local5][_local6].indexX + _local2); _local4[_local5][_local6].indexY = (_local4[_local5][_local6].indexY + _local3); }; } else { _local4[_local5][_local6] = null; }; _local6++; }; _local5++; }; occupiers = _local4; } private function getPlayerGroupXY(_arg1:int, _arg2:int):Point{ var _local3:Number = (selfPlayerGroup.x + ((_arg1 - selfPlayerGroup.indexX) * tableBounds.width)); var _local4:Number = (selfPlayerGroup.y + ((_arg2 - selfPlayerGroup.indexY) * tableBounds.height)); return (new Point(_local3, _local4)); } public function playerDisconnected(_arg1:String):void{ var _local4:int; var _local2:* = parent; var _local3:PlayerGroup = getPlayerPlayerGroup(_arg1); if (_local3 == null){ return; }; _local3.removePlayerOrViewer(_arg1); destroyPlayer(_arg1); if (getShouldDestroyTable(_local3)){ _local4 = 0; while (_local4 < _local3.players.length) { if (_local3.players[_local4].playerInfo.isRobot){ destroyRobot(_local3.players[_local4]); }; _local4++; }; if (_local3.table != null){ destroyTable(_local3.table.tableInfo.tableUID); }; removePlayerGroup(_local3); } else { if ((((_local3.table == null)) || (!(_local3.table.tableInfo.isPlaying)))){ _local4 = 0; while (_local4 < _local3.players.length) { if (!_local3.players[_local4].playerInfo.isRobot){ break; }; _local4++; }; _local3.players = _local3.players.concat(_local3.players.splice(0, _local4)); }; }; updateOccupiers(); showNames(); updateScrollBounds(); updateArrows(); updateThingsDepths(); } private function getShouldDestroyTable(_arg1:PlayerGroup):Boolean{ var _local2:int; if (_arg1.players.length == 0){ return (true); }; _local2 = 0; while (_local2 < _arg1.players.length) { if (!_arg1.players[_local2].playerInfo.isRobot){ return (false); }; _local2++; }; return (true); } public function playerJoinedTable(_arg1:String, _arg2:String):void{ var _local3:PlayerGroup = getPlayerPlayerGroup(_arg1); var _local4:PlayerGroup = getTablePlayerGroup(_arg2); var _local5:Player = getPlayer(_arg1); removePlayerGroup(_local3); _local4.addPlayer(_local5); if (_local3 == selfPlayerGroup){ selfPlayerGroup = _local4; }; updateOccupiers(); showNames(); updateScrollBounds(); updateArrows(); updateThingsDepths(); setPlayersControl(); } public function playerLeftTable(_arg1:String, _arg2:String):void{ var _local5:Player; var _local6:Point; var _local7:Point; var _local8:int; var _local3:* = parent; var _local4:PlayerGroup = getPlayerPlayerGroup(_arg1); if (_local4 == null){ return; }; if (_local4.table == null){ return; }; if (_local4.table.tableInfo.tableUID != _arg2){ return; }; _local4.removePlayerOrViewer(_arg1); if (getShouldDestroyTable(_local4)){ _local8 = 0; while (_local8 < _local4.players.length) { if (_local4.players[_local8].playerInfo.isRobot){ destroyRobot(_local4.players[_local8]); }; _local8++; }; if (_local4.table != null){ destroyTable(_local4.table.tableInfo.tableUID); }; removePlayerGroup(_local4); } else { if ((((_local4.table == null)) || (!(_local4.table.tableInfo.isPlaying)))){ _local8 = 0; while (_local8 < _local4.players.length) { if (!_local4.players[_local8].playerInfo.isRobot){ break; }; _local8++; }; _local4.players = _local4.players.concat(_local4.players.splice(0, _local8)); }; }; _local5 = getPlayer(_arg1); _local4 = new PlayerGroup(-1, -1); _local4.players.push(_local5); playerGroups.push(_local4); if (_arg1 == _local3.playerUID){ selfPlayerGroup = _local4; }; updateOccupiers(); showNames(); updateScrollBounds(); updateArrows(); setPlayersControl(); updateThingsDepths(); } private function removePlayerGroup(_arg1:PlayerGroup):void{ var _local2:int; if ((((_arg1.indexX >= 0)) && ((_arg1.indexY >= 0)))){ occupiers[_arg1.indexX][_arg1.indexY] = null; }; _local2 = 0; while (_local2 < playerGroups.length) { if (playerGroups[_local2] != _arg1){ } else { playerGroups.splice(_local2, 1); return; }; _local2++; }; } public function robotJoinedTable(_arg1:String):void{ var _local2:* = parent; var _local3:PlayerGroup = getTablePlayerGroup(_arg1); var _local4:Player = createRobot(_local2.robotName); players.push(_local4); roomInsideMC.thingsHolder.addChild(_local4); _local3.addPlayer(_local4); updateOccupiers(); showNames(); updateScrollBounds(); updateArrows(); updateThingsDepths(); setPlayersControl(); } private function getPlayer(_arg1:String):Player{ var _local2:int; _local2 = 0; while (_local2 < players.length) { if (players[_local2].playerInfo.playerUID == _arg1){ return (players[_local2]); }; _local2++; }; return (null); } public function invitedBy(_arg1:String):void{ var _local5:InviteDialog; var _local6:MovieClip; var _local7:Table; var _local8:Player; var _local9:Bubble; var _local10:Array; var _local11:Array; var _local12:Rectangle; var _local13:Rectangle; var _local14:Number; var _local15:int; var _local2:* = parent; var _local3:PlayerGroup = getPlayerPlayerGroup(_arg1); var _local4:int = _local3.getState(); if (_local2.lobbyType != "normal"){ return; }; if (selfPlayerGroup.getState() != PlayerGroup.STATE_IDLE){ return; }; if (((!((_local4 == PlayerGroup.STATE_WAITING))) && (!((_local4 == PlayerGroup.STATE_WAITINGORSTARTING))))){ return; }; invitingTableUID = _local3.table.tableInfo.tableUID; _local2.doHideDialog(); _local5 = new InviteDialog(); _local2.addChild(_local5); _local2.dialog = _local5; _local10 = new Array(); _local11 = new Array(); _local6 = new MovieClip(); _local6.thingsHolder = new MovieClip(); _local6.addChild(_local6.thingsHolder); _local6.namesHolder = new MovieClip(); _local6.addChild(_local6.namesHolder); _local7 = createTable(_local3.table.tableInfo); _local7.x = _local3.table.x; _local7.y = _local3.table.y; _local6.thingsHolder.addChild(_local7); _local10.push(_local7); _local15 = 0; while (_local15 < _local3.players.length) { if (_local3.players[_local15].playerInfo.isRobot){ _local8 = createRobot(_local2.robotName); } else { _local8 = createPlayer(_local3.players[_local15].playerInfo); }; _local8.x = _local3.players[_local15].x; _local8.y = _local3.players[_local15].y; _local6.thingsHolder.addChild(_local8); _local10.push(_local8); _local9 = createNameBubble(_local8); _local6.namesHolder.addChild(_local9); _local11.push(_local9); _local15++; }; _local15 = 0; while (_local15 < _local3.viewers.length) { _local8 = createPlayer(_local3.viewers[_local15].playerInfo); _local8.x = _local3.viewers[_local15].x; _local8.y = _local3.viewers[_local15].y; _local6.thingsHolder.addChild(_local8); _local10.push(_local8); _local9 = createNameBubble(_local8); _local6.namesHolder.addChild(_local9); _local11.push(_local9); _local15++; }; _local10.sort(compareYX); _local11.sort(compareYX); _local15 = 0; while (_local15 < _local10.length) { _local6.thingsHolder.setChildIndex(_local10[_local15], _local15); _local15++; }; _local15 = 0; while (_local15 < _local11.length) { _local6.namesHolder.setChildIndex(_local11[_local15], _local15); _local15++; }; _local5.addChild(_local6); _local12 = _local5.tableMask.getBounds(_local5); _local13 = _local6.getBounds(_local5); _local14 = Math.min((_local12.width / _local13.width), (_local12.height / _local13.height)); _local6.scaleX = _local14; _local6.scaleY = _local14; _local6.y = (_local6.y + 200); _local13 = _local6.getBounds(_local5); _local6.x = (_local6.x + (((_local12.left + _local12.right) - (_local13.left + _local13.right)) / 2)); _local6.y = (_local6.y + (((_local12.top + _local12.bottom) - (_local13.top + _local13.bottom)) / 2)); _local5.tableMask.visible = false; _local5.acceptButton.addEventListener(MouseEvent.CLICK, acceptInvitationButtonClicked); _local5.rejectButton.addEventListener(MouseEvent.CLICK, rejectInvitationButtonClicked); } private function acceptInvitationButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; _local2.doHideDialog(); _local2.doJoinTable(invitingTableUID); } private function rejectInvitationButtonClicked(_arg1:MouseEvent):void{ var _local2:* = parent; _local2.doHideDialog(); } public function getIsSelfTable(_arg1:String):Boolean{ var _local2:PlayerGroup = getTablePlayerGroup(_arg1); return ((_local2 == selfPlayerGroup)); } public function playingStarted(_arg1:String):void{ var _local2:PlayerGroup = getTablePlayerGroup(_arg1); _local2.table.tableInfo.isPlaying = true; _local2.table.toys.visible = true; } public static function compareYX(_arg1, _arg2):int{ if (_arg1.y < _arg2.y){ return (-1); }; if (_arg1.y > _arg2.y){ return (1); }; if (_arg1.x < _arg2.x){ return (-1); }; if (_arg1.x > _arg2.x){ return (1); }; return (0); } } }//package com.novelgames.lobby
Section 55
//RoomInsideBackground (com.novelgames.lobby.RoomInsideBackground) package com.novelgames.lobby { import flash.display.*; public dynamic class RoomInsideBackground extends MovieClip { } }//package com.novelgames.lobby
Section 56
//RoomInsideMask (com.novelgames.lobby.RoomInsideMask) package com.novelgames.lobby { import flash.display.*; public dynamic class RoomInsideMask extends MovieClip { } }//package com.novelgames.lobby
Section 57
//RoomInsideMC (com.novelgames.lobby.RoomInsideMC) package com.novelgames.lobby { import flash.display.*; public dynamic class RoomInsideMC extends MovieClip { public var theMask:RoomInsideMask; public var arrowDown:MovieClip; public var thingsHolder:MovieClip; public var helpButton:SimpleButton; public var arrowUpLeft:MovieClip; public var arrowDownRight:MovieClip; public var arrowDownLeft:MovieClip; public var arrowRight:MovieClip; public var arrowUp:MovieClip; public var bubblesHolder:MovieClip; public var closeButton:SimpleButton; public var namesHolder:MovieClip; public var filterText:MovieClip; public var helpDialog:MovieClip; public var arrowUpRight:MovieClip; public var arrowLeft:MovieClip; public var backgroundHolder:MovieClip; } }//package com.novelgames.lobby
Section 58
//Rooms (com.novelgames.lobby.Rooms) package com.novelgames.lobby { import flash.display.*; import flash.events.*; public class Rooms extends MovieClip { private var roomsMC:RoomsMC; private var roomInfos:Array; private var currentRoomsPage:int; public function show(_arg1:Array){ var _local2:MovieClip; var _local3:int; this.roomInfos = _arg1; roomsMC = new RoomsMC(); this.addChild(roomsMC); _local3 = 0; while (true) { if (!roomsMC[("room" + _local3)]){ break; }; _local2 = roomsMC[("room" + _local3)]; _local2.door.stop(); _local2.stop(); _local2.mouseChildren = false; _local2.buttonMode = true; _local2.addEventListener(MouseEvent.CLICK, onRoomClicked); _local3++; }; roomsMC.previousPageButton.addEventListener(MouseEvent.CLICK, onPreviousPageButtonClicked); roomsMC.nextPageButton.addEventListener(MouseEvent.CLICK, onNextPageButtonClicked); roomsMC.closeButton.addEventListener(MouseEvent.CLICK, hide); showPage(0); } private function showPage(_arg1:int):void{ var _local3:int; var _local4:MovieClip; var _local5:RoomInfo; var _local6:int; var _local2:Array = new Array(); _local6 = 0; while (true) { if (!roomsMC[("room" + _local6)]){ break; }; _local2.push(roomsMC[("room" + _local6)]); _local6++; }; _local3 = Math.ceil((roomInfos.length / _local2.length)); currentRoomsPage = _arg1; roomsMC.previousPageButton.visible = (_arg1 > 0); roomsMC.nextPageButton.visible = (_arg1 < (_local3 - 1)); _local6 = 0; while ((((_local6 < _local2.length)) && (((_local6 + (currentRoomsPage * _local2.length)) < roomInfos.length)))) { _local4 = _local2[_local6]; _local5 = roomInfos[(_local6 + (currentRoomsPage * _local2.length))]; _local4.roomID = _local5.roomID; _local4.roomNameText.embedFonts = false; _local4.roomNameText.text = _local5.roomName; _local4.noOfPlayersText.embedFonts = false; _local4.noOfPlayersText.text = _local5.noOfPlayers; if (_local5.roomCapacity >= 0){ _local4.slashText.visible = true; _local4.roomCapacityText.embedFonts = false; _local4.roomCapacityText.text = _local5.roomCapacity; _local4.roomCapacityText.visible = true; _local4.door.gotoAndStop(((_local5.noOfPlayers < _local5.roomCapacity)) ? "opened" : "closed"); } else { _local4.slashText.visible = false; _local4.roomCapacityText.visible = false; _local4.door.gotoAndStop("opened"); }; _local4.visible = true; _local6++; }; while (_local6 < _local2.length) { _local2[_local6].visible = false; _local6++; }; } private function onPreviousPageButtonClicked(_arg1:MouseEvent):void{ showPage((currentRoomsPage - 1)); } private function onNextPageButtonClicked(_arg1:MouseEvent):void{ showPage((currentRoomsPage + 1)); } private function onRoomClicked(_arg1:MouseEvent):void{ var _local2:MovieClip = MovieClip(_arg1.currentTarget); Object(parent).roomID = _local2.roomID; Object(parent).doShowEnter(); } private function hide(_arg1:MouseEvent):void{ Object(parent).doHide(); } } }//package com.novelgames.lobby
Section 59
//RoomsMC (com.novelgames.lobby.RoomsMC) package com.novelgames.lobby { import flash.display.*; public dynamic class RoomsMC extends MovieClip { public var room0:MovieClip; public var room1:MovieClip; public var room2:MovieClip; public var room3:MovieClip; public var room4:MovieClip; public var nextPageButton:SimpleButton; public var room5:MovieClip; public var closeButton:SimpleButton; public var previousPageButton:SimpleButton; } }//package com.novelgames.lobby
Section 60
//Status (com.novelgames.lobby.Status) package com.novelgames.lobby { import flash.display.*; import flash.events.*; public class Status extends MovieClip { private var statusMC:MovieClip; public function showWait():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("wait"); statusMC.closeButton.visible = false; this.addChild(statusMC); } public function showDisconnected():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("disconnected"); statusMC.closeButton.visible = false; this.addChild(statusMC); } public function showLoadFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("loadFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showJoinRoomFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("joinRoomFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showLeaveRoomFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("leaveRoomFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showOpenTableFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("openTableFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showJoinTableFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("joinTableFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showLeaveTableFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("leaveTableFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showRobotJoinTableFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("robotJoinTableFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showInviteFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("inviteFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showInvitationSent():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("invitationSent"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showStartGameFailed():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("startGameFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, hide); this.addChild(statusMC); } public function showSendingEmails():void{ statusMC = new StatusMC(); statusMC.gotoAndStop("sendingEmails"); statusMC.closeButton.visible = false; this.addChild(statusMC); } public function showSendEmailsFailed(_arg1:Function):void{ statusMC = new StatusMC(); statusMC.gotoAndStop("sendEmailsFailed"); statusMC.closeButton.addEventListener(MouseEvent.CLICK, _arg1); this.addChild(statusMC); } private function hide(_arg1:MouseEvent=null):void{ Object(parent).doHideDialog(); } } }//package com.novelgames.lobby
Section 61
//StatusMC (com.novelgames.lobby.StatusMC) package com.novelgames.lobby { import flash.display.*; public dynamic class StatusMC extends MovieClip { public var closeButton:SimpleButton; } }//package com.novelgames.lobby
Section 62
//Table (com.novelgames.lobby.Table) package com.novelgames.lobby { import flash.display.*; public dynamic class Table extends MovieClip { public var toys:MovieClip; public var player:Player; public var viewer:Player; } }//package com.novelgames.lobby
Section 63
//TableInfo (com.novelgames.lobby.TableInfo) package com.novelgames.lobby { public class TableInfo { public var possibleNoOfPlayers:Array; public var tableUID:String; public var playerUIDs:Array; public var viewerUIDs:Array; public var isPlaying:Boolean; public var tableID:String; public function TableInfo(_arg1:Array, _arg2:String, _arg3:Array, _arg4:Array, _arg5:Boolean, _arg6:String){ this.possibleNoOfPlayers = _arg1; this.tableUID = _arg2; this.playerUIDs = _arg3; this.viewerUIDs = _arg4; this.isPlaying = _arg5; this.tableID = _arg6; } } }//package com.novelgames.lobby
Section 64
//ChatButton (com.novelgames.multiplayerflashgames.common.ChatButton) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; public class ChatButton extends MovieClip { public static var enabled:Boolean = true; public function ChatButton(){ super(); if (!ChatButton.enabled){ visible = false; }; this.buttonMode = true; this.addEventListener(MouseEvent.CLICK, function ():void{ Object(parent.parent).showChatInput(); }); } } }//package com.novelgames.multiplayerflashgames.common
Section 65
//Clock (com.novelgames.multiplayerflashgames.common.Clock) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; import flash.geom.*; public class Clock extends MovieClip { public var theMask:MovieClip; public var ratio:Number; private var timeLimit:int; private var maskRadius:Number; private var simpleTimer:SimpleTimer; public function Clock(){ var _local1:Rectangle = this.getBounds(this); maskRadius = Math.max(_local1.right, Math.max(-(_local1.left), Math.max(_local1.bottom, -(_local1.top)))); visible = false; } public function startClock(_arg1:int):void{ if (_arg1 <= 0){ return; }; this.timeLimit = _arg1; updateClock(0); if (simpleTimer){ simpleTimer.stop(); }; simpleTimer = new SimpleTimer(1, 0, _arg1, onTime); visible = true; } public function stopClock():void{ if (simpleTimer != null){ simpleTimer.stop(); }; simpleTimer = null; visible = false; } private function onTime(_arg1:SimpleTimer):void{ updateClock(_arg1.ratio); if (_arg1.ratio == 1){ Object(parent).clockFinished(this); }; } public function updateClock(_arg1:Number):void{ var _local2:Number = maskRadius; this.ratio = _arg1; theMask.graphics.clear(); theMask.graphics.beginFill(0); theMask.graphics.moveTo(0, 0); theMask.graphics.lineTo(0, -(_local2)); if (_arg1 >= (1 / 8)){ theMask.graphics.lineTo(_local2, -(_local2)); }; if (_arg1 >= (2 / 8)){ theMask.graphics.lineTo(_local2, 0); }; if (_arg1 >= (3 / 8)){ theMask.graphics.lineTo(_local2, _local2); }; if (_arg1 >= (4 / 8)){ theMask.graphics.lineTo(0, _local2); }; if (_arg1 >= (5 / 8)){ theMask.graphics.lineTo(-(_local2), _local2); }; if (_arg1 >= (6 / 8)){ theMask.graphics.lineTo(-(_local2), 0); }; if (_arg1 >= (7 / 8)){ theMask.graphics.lineTo(-(_local2), -(_local2)); }; if (_arg1 < (1 / 8)){ theMask.graphics.lineTo((_local2 * Math.tan(((Math.PI * 2) * _arg1))), -(_local2)); } else { if (_arg1 < (2 / 8)){ theMask.graphics.lineTo(_local2, (-(_local2) * Math.tan(((Math.PI / 2) - ((Math.PI * 2) * _arg1))))); } else { if (_arg1 < (3 / 8)){ theMask.graphics.lineTo(_local2, (-(_local2) * Math.tan(((Math.PI / 2) - ((Math.PI * 2) * _arg1))))); } else { if (_arg1 < (4 / 8)){ theMask.graphics.lineTo((_local2 * Math.tan((Math.PI - ((Math.PI * 2) * _arg1)))), _local2); } else { if (_arg1 < (5 / 8)){ theMask.graphics.lineTo((_local2 * Math.tan((Math.PI - ((Math.PI * 2) * _arg1)))), _local2); } else { if (_arg1 < (6 / 8)){ theMask.graphics.lineTo(-(_local2), (_local2 * Math.tan((((Math.PI * 3) / 2) - ((Math.PI * 2) * _arg1))))); } else { if (_arg1 < (7 / 8)){ theMask.graphics.lineTo(-(_local2), (_local2 * Math.tan((((Math.PI * 3) / 2) - ((Math.PI * 2) * _arg1))))); } else { theMask.graphics.lineTo((_local2 * Math.tan(((Math.PI * 2) * _arg1))), -(_local2)); }; }; }; }; }; }; }; theMask.graphics.lineTo(0, 0); theMask.graphics.endFill(); } } }//package com.novelgames.multiplayerflashgames.common
Section 66
//CloseButton (com.novelgames.multiplayerflashgames.common.CloseButton) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; public class CloseButton extends MovieClip { public static var enabled:Boolean = false; public function CloseButton(){ super(); if (!CloseButton.enabled){ visible = false; }; this.buttonMode = true; this.addEventListener(MouseEvent.CLICK, function ():void{ Object(parent.parent).leaveTable(); }); } } }//package com.novelgames.multiplayerflashgames.common
Section 67
//COPYRIGHT (com.novelgames.multiplayerflashgames.common.COPYRIGHT) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.text.*; public class COPYRIGHT extends MovieClip { public var text:TextField; public function COPYRIGHT(){ trace(text.text); } } }//package com.novelgames.multiplayerflashgames.common
Section 68
//Game (com.novelgames.multiplayerflashgames.common.Game) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.xml.*; import flash.ui.*; public class Game extends MovieClip { private var mouseHidden:Boolean; private var isReceivingMessagesBeforePause:Boolean; public static var gameStage:Stage; public static var main:MovieClip; public function sendMessage(_arg1:String, ... _args):void{ var _local3:Object = new Object(); _local3.functionName = _arg1; _local3.parameters = _args; if (parent != null){ Object(parent).sendGameMessage(_local3); }; } public function sendSynchronizeMessage(_arg1:String, ... _args):void{ var _local3:Object = new Object(); _local3.functionName = _arg1; _local3.parameters = _args; if (parent != null){ Object(parent).sendGameMessage(_local3, _arg1); }; } public function resetSynchronizeTime():void{ if (parent != null){ Object(parent).resetSynchronizeTime(); }; } public function sendSynchronizeTimeMessage(_arg1:String, ... _args):void{ var _local3:Object = new Object(); _local3.functionName = _arg1; _local3.parameters = _args; if (parent != null){ Object(parent).sendGameMessage(_local3, _arg1, true); }; } public function stopReceivingMessages():Boolean{ if (parent == null){ return (false); }; return (Object(parent).stopReceivingMessages()); } public function startReceivingMessages():Boolean{ if (parent == null){ return (false); }; return (Object(parent).startReceivingMessages()); } public function robotSendMessage(_arg1:int, _arg2:String, ... _args):void{ var _local4:Object = new Object(); _local4.functionName = _arg2; _local4.parameters = _args; if (parent != null){ Object(parent).robotSendGameMessage(_arg1, _local4); }; } public function robotSendSynchronizeMessage(_arg1:int, _arg2:String, ... _args):void{ var _local4:Object = new Object(); _local4.functionName = _arg2; _local4.parameters = _args; if (parent != null){ Object(parent).robotSendGameMessage(_arg1, _local4, _arg2); }; } public function robotSendSynchronizeTimeMessage(_arg1:int, _arg2:int, _arg3:String, ... _args):void{ var _local5:Object = new Object(); _local5.functionName = _arg3; _local5.parameters = _args; if (parent != null){ Object(parent).robotSendGameMessage(_arg1, _local5, _arg3, _arg2); }; } public function startGame(_arg1:Array, _arg2:int):void{ } public function startView(_arg1:Array):void{ } public function receiveGameMessage(_arg1:Object, _arg2:String=null, _arg3:int=-1, _arg4:int=0):void{ var _local5:String; var _local6:Array; var _local7:int; var _local8:int; if (_arg2 == null){ this[_arg1.functionName].apply(this, _arg1.parameters); } else { if (_arg4 == 0){ _local6 = new Array(); _local7 = 0; while (_local7 < _arg1.length) { if (_arg1[_local7] == null){ } else { _local5 = _arg1[_local7].functionName; _local8 = 0; while (_local8 < _arg1[_local7].parameters.length) { if (!_local6[_local8]){ _local6[_local8] = new Array(); }; _local6[_local8][_local7] = _arg1[_local7].parameters[_local8]; _local8++; }; }; _local7++; }; this[_local5].apply(this, _local6); } else { _local5 = _arg1.functionName; _local6 = _arg1.parameters.concat(); _local6.push(_arg3); _local6.push(_arg4); this[_local5].apply(this, _local6); }; }; } public function playerDisconnected(_arg1:int):void{ } public function getChatBubblePosition(_arg1:int):Object{ return ({x:500, y:400, direction:"bottomRight"}); } public function pause():void{ NewTimer.pause(); pauseControl(); isReceivingMessagesBeforePause = stopReceivingMessages(); } public function pauseControl():void{ gameStage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyEventDuringPause, false, 2147483647); gameStage.addEventListener(KeyboardEvent.KEY_UP, onKeyEventDuringPause, false, 2147483647); this.mouseEnabled = false; this.mouseChildren = false; if (mouseHidden){ Mouse.show(); }; if (Sprite.prototype.draggingSprite){ Sprite.prototype.draggingSprite.stopDrag(); }; } public function unpause():void{ NewTimer.unpause(); unpauseControl(); if (isReceivingMessagesBeforePause){ startReceivingMessages(); }; } public function unpauseControl():void{ gameStage.focus = gameStage; gameStage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyEventDuringPause); gameStage.removeEventListener(KeyboardEvent.KEY_UP, onKeyEventDuringPause); this.mouseEnabled = true; this.mouseChildren = true; if (mouseHidden){ Mouse.hide(); }; if (Sprite.prototype.draggingSprite){ Sprite.prototype.draggingSprite.x = (Sprite.prototype.draggingSprite.x + (Sprite.prototype.draggingSprite.mouseX - Sprite.prototype.draggingSpriteMouseX)); Sprite.prototype.draggingSprite.y = (Sprite.prototype.draggingSprite.y + (Sprite.prototype.draggingSprite.mouseY - Sprite.prototype.draggingSpriteMouseY)); Sprite.prototype.draggingSprite.startDrag(Sprite.prototype.draggingSpriteLockCenter, Sprite.prototype.draggingSpriteBounds); }; } public function hideMouse():void{ mouseHidden = true; Mouse.hide(); } public function showMouse():void{ mouseHidden = false; Mouse.show(); } public function onRightMouseDown():void{ var _local1:DisplayObject = getMouseTarget(); if (!_local1){ return; }; _local1.dispatchEvent(new MouseEvent("mouseRightDown")); } public function onRightMouseUp():void{ var _local1:DisplayObject = getMouseTarget(); if (!_local1){ return; }; _local1.dispatchEvent(new MouseEvent("mouseRightUp")); } public function onMiddleMouseDown():void{ var _local1:DisplayObject = getMouseTarget(); if (!_local1){ return; }; _local1.dispatchEvent(new MouseEvent("mouseMiddleDown")); } public function onMiddleMouseUp():void{ var _local1:DisplayObject = getMouseTarget(); if (!_local1){ return; }; _local1.dispatchEvent(new MouseEvent("mouseMiddleUp")); } private function getMouseTarget():DisplayObject{ var _local3:int; var _local1:Point = this.localToGlobal(new Point(mouseX, mouseY)); var _local2:Array = this.getObjectsUnderPoint(_local1); _local3 = (_local2.length - 1); while (_local3 >= 0) { if (!_local2[_local3].parent.mouseEnabled){ } else { if (((_local2[_local3].parent.parent) && (!(_local2[_local3].parent.parent.mouseChildren)))){ } else { return (_local2[_local3]); }; }; _local3--; }; return (null); } private function onKeyEventDuringPause(_arg1:KeyboardEvent):void{ _arg1.stopImmediatePropagation(); } } }//package com.novelgames.multiplayerflashgames.common
Section 69
//Instructions (com.novelgames.multiplayerflashgames.common.Instructions) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; public dynamic class Instructions extends MovieClip { public var startButton:SimpleButton; private var shownFromGame:Boolean; public function Instructions(_arg1:Boolean=false){ var _local5:Error; super(); var _local2:Object; var _local3:Object; var _local4:Object; this.shownFromGame = _arg1; try { _local2 = this["startButton"]; } catch(e) { }; try { _local3 = this["nextPageButton"]; } catch(e) { }; try { _local4 = this["previousPageButton"]; } catch(e) { }; if (_local2 != null){ _local2.addEventListener(MouseEvent.ROLL_OVER, startButtonOvered); _local2.addEventListener(MouseEvent.CLICK, startButtonClicked); }; if (_local3){ _local3.addEventListener(MouseEvent.CLICK, nextPageButtonClicked); _local3.visible = !((currentFrame == totalFrames)); }; if (_local4){ _local4.addEventListener(MouseEvent.CLICK, previousPageButtonClicked); _local4.visible = !((currentFrame == 1)); }; stop(); this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } private function startButtonOvered(_arg1:MouseEvent):void{ if (Object(parent).buttonSoundOver){ Object(parent).buttonSoundOver.play(); }; } private function startButtonClicked(_arg1:MouseEvent):void{ if (Object(parent).buttonSoundClick){ Object(parent).buttonSoundClick.play(); }; if (!shownFromGame){ Object(parent).gotoGamePage(); } else { Object(parent).hideInstructionsFromGame(); }; } private function nextPageButtonClicked(_arg1:MouseEvent):void{ nextFrame(); this["nextPageButton"].visible = !((currentFrame == totalFrames)); this["previousPageButton"].visible = !((currentFrame == 1)); } private function previousPageButtonClicked(_arg1:MouseEvent):void{ prevFrame(); this["nextPageButton"].visible = !((currentFrame == totalFrames)); this["previousPageButton"].visible = !((currentFrame == 1)); } private function onRemovedFromStage(_arg1:Event):void{ var _local5:Error; var _local2:Object; var _local3:Object; var _local4:Object; try { _local2 = this["startButton"]; } catch(e) { }; try { _local3 = this["nextPageButton"]; } catch(e) { }; try { _local4 = this["previousPageButton"]; } catch(e) { }; if (_local2 != null){ _local2.removeEventListener(MouseEvent.ROLL_OVER, startButtonOvered); _local2.removeEventListener(MouseEvent.CLICK, startButtonClicked); }; if (_local3 != null){ _local3.removeEventListener(MouseEvent.CLICK, nextPageButtonClicked); }; if (_local4 != null){ _local4.removeEventListener(MouseEvent.CLICK, previousPageButtonClicked); }; this.removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } } }//package com.novelgames.multiplayerflashgames.common
Section 70
//InstructionsButton (com.novelgames.multiplayerflashgames.common.InstructionsButton) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; public class InstructionsButton extends MovieClip { public function InstructionsButton(){ this.buttonMode = true; this.addEventListener(MouseEvent.CLICK, onClick); this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } private function onClick(_arg1:MouseEvent):void{ Object(parent.parent).showInstructionsFromGame(); } private function onRemovedFromStage(_arg1:Event):void{ this.removeEventListener(MouseEvent.CLICK, onClick); this.removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } } }//package com.novelgames.multiplayerflashgames.common
Section 71
//MainDevelopment (com.novelgames.multiplayerflashgames.common.MainDevelopment) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.net.*; import flash.external.*; public class MainDevelopment extends MovieClip { private var title:Title; private var instructions:Instructions; protected var game:Game; private var optionsDialog:OptionsDialog; private var musicGame:Sound; private var musicGameSoundChannel:SoundChannel; public var buttonSoundOver:Sound; public var buttonSoundClick:Sound; protected var titleX:Number; protected var titleY:Number; protected var titleIndex:int; public var playerInfos:Array; public var selfIndex:int; protected var isPlayAgain:Boolean; public function MainDevelopment(){ super(); showCopyright(); if (!checkSiteLock()){ return; }; try { ExternalInterface.addCallback("onRightMouseDown", onRightMouseDown); ExternalInterface.addCallback("onRightMouseUp", onRightMouseUp); ExternalInterface.addCallback("onMiddleMouseDown", onMiddleMouseDown); ExternalInterface.addCallback("onMiddleMouseUp", onMiddleMouseUp); } catch(e) { }; Sprite.prototype.startDragNew = function (_arg1:Boolean=false, _arg2:Rectangle=null):void{ Sprite.prototype.draggingSprite = this; Sprite.prototype.draggingSpriteLockCenter = _arg1; Sprite.prototype.draggingSpriteBounds = _arg2; Sprite.prototype.draggingSpriteMouseX = this.mouseX; Sprite.prototype.draggingSpriteMouseY = this.mouseY; this.startDrag(_arg1, _arg2); }; Sprite.prototype.stopDragNew = function ():void{ Sprite.prototype.draggingSprite = null; this.stopDrag(); }; isPlayAgain = false; this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); this.addEventListener(Event.ENTER_FRAME, checkTitle); checkTitle(); } public function gotoTitlePage():void{ showTitlePage(); disconnect(); } public function gotoInstructionsPage():void{ var _local1:Error; removePage(); instructions = new Instructions(); instructions.x = titleX; instructions.y = titleY; try { instructions.background.stop(); } catch(e) { }; this.addChildAt(instructions, titleIndex); } public function gotoGamePage():void{ Game.gameStage = stage; Game.main = this; removePage(); musicGame = getMusicGame(); musicGameSoundChannel = musicGame.play(0, int.MAX_VALUE); game = getGame(); game.x = titleX; game.y = titleY; this.addChildAt(game, titleIndex); if (selfIndex != -1){ game.startGame(playerInfos, selfIndex); } else { game.startView(playerInfos); }; } public function showInstructionsFromGame():void{ var e:Error; game.pauseControl(); instructions = new Instructions(true); instructions.x = titleX; instructions.y = titleY; try { instructions.background.gotoAndStop(2); } catch(e) { game.visible = false; }; this.addChildAt(instructions, (titleIndex + 1)); } public function hideInstructionsFromGame():void{ if (instructions == null){ return; }; this.removeChild(instructions); instructions = null; game.visible = true; game.unpauseControl(); } public function showOptions():void{ game.pauseControl(); optionsDialog = new OptionsDialog(); optionsDialog.x = titleX; optionsDialog.y = titleY; this.addChildAt(optionsDialog, (titleIndex + 1)); } public function hideOptions():void{ if (optionsDialog == null){ return; }; game.unpauseControl(); this.removeChild(optionsDialog); optionsDialog = null; } public function startGameMusic():void{ stopGameMusic(); musicGame = getMusicGame(); musicGameSoundChannel = musicGame.play(0, int.MAX_VALUE); } public function stopGameMusic():void{ if (musicGame){ musicGameSoundChannel.stop(); musicGame = null; musicGameSoundChannel = null; }; } public function showRooms():void{ this["lobby"].showRooms(); } public function startReceivingMessages():Boolean{ return (this["lobby"].startReceivingMessages()); } public function stopReceivingMessages():Boolean{ return (this["lobby"].stopReceivingMessages()); } public function resetSynchronizeTime():void{ this["lobby"].resetSynchronizeTime(); } public function sendGameMessage(_arg1:Object, _arg2:String=null, _arg3:Boolean=false):void{ this["lobby"].sendGameMessage(_arg1, _arg2, _arg3); } public function robotSendGameMessage(_arg1:int, _arg2:Object, _arg3:String=null, _arg4:int=0):void{ this["lobby"].robotSendGameMessage(_arg1, _arg2, _arg3, _arg4); } public function showChatInput():void{ this["lobby"].showChatInput(); } public function gameEnded(_arg1:Array, _arg2:String=null, _arg3:ByteArray=null, _arg4:String=null, _arg5:String=null):void{ this["lobby"].gameEnded(_arg1, _arg2, _arg3, _arg4, _arg5); } public function playAgain():void{ isPlayAgain = true; this["lobby"].playAgain(); } public function viewEnded():void{ trace("viewEnded()"); } public function leaveTable():void{ showTitlePage(); this["lobby"].leaveTable(); } public function disconnect():void{ this["lobby"].disconnect(); } public function gotoMoreGamesURL():void{ navigateToURL(new URLRequest("http://www.fupa.com/"), "_blank"); } public function startGame(_arg1:Array, _arg2:int):void{ this.playerInfos = _arg1; this.selfIndex = _arg2; if (isPlayAgain){ isPlayAgain = false; gotoGamePage(); } else { gotoInstructionsPage(); }; } public function startView(_arg1:Array):void{ ChatButton.enabled = false; CloseButton.enabled = true; this.playerInfos = _arg1; this.selfIndex = -1; gotoGamePage(); } public function receiveGameMessage(_arg1:Object, _arg2:String=null, _arg3:int=-1, _arg4:int=0):void{ if (game){ game.receiveGameMessage(_arg1, _arg2, _arg3, _arg4); }; } public function playerDisconnected(_arg1:int):void{ if (game){ game.playerDisconnected(_arg1); }; } public function disconnected():void{ if (game){ game.pause(); }; } public function getChatBubblePosition(_arg1:int):Object{ var _local2:Object; var _local3:Point; if (game){ _local2 = game.getChatBubblePosition(_arg1); _local3 = new Point(_local2.x, _local2.y); _local3 = game.localToGlobal(_local3); _local2.x = _local3.x; _local2.y = _local3.y; return (_local2); }; return ({x:500, y:400, direction:"bottomRight"}); } public function gameEndedFinished():void{ trace("gameEndedFinished"); } public function onRightMouseDown():void{ if (game){ game.onRightMouseDown(); }; } public function onRightMouseUp():void{ if (game){ game.onRightMouseUp(); }; } public function onMiddleMouseDown():void{ if (game){ game.onMiddleMouseDown(); }; } public function onMiddleMouseUp():void{ if (game){ game.onMiddleMouseUp(); }; } protected function getTitle():Title{ return (title); } protected function getGame():Game{ return (null); } protected function getMusicGame():Sound{ return (null); } protected function getButtonSoundOver():Sound{ return (null); } protected function getButtonSoundClick():Sound{ return (null); } private function onAddedToStage(_arg1:Event):void{ Game.gameStage = stage; Game.main = this; this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); stage.stageFocusRect = false; } private function checkTitle(_arg1:Event=null):void{ if (!(title = this["title"])){ return; }; titleX = title.x; titleY = title.y; this.removeEventListener(Event.ENTER_FRAME, checkTitle); stop(); titleIndex = this.getChildIndex(title); buttonSoundOver = getButtonSoundOver(); buttonSoundClick = getButtonSoundClick(); } protected function showTitlePage():void{ removePage(); title = new Title(); title.x = titleX; title.y = titleY; this.addChildAt(title, titleIndex); } protected function removePage():void{ if (title){ removeChild(title); title = null; }; if (instructions){ removeChild(instructions); instructions = null; }; if (game){ removeChild(game); game = null; }; if (musicGame){ musicGameSoundChannel.stop(); musicGame = null; musicGameSoundChannel = null; }; NewTimer.stopAll(); } private function showCopyright():void{ var theClass:* = null; try { } catch(e:Error) { }; if (theClass == null){ return; }; try { new (theClass); } catch(e:Error) { setTimeout(showCopyright, 1); }; } private function checkSiteLock():Boolean{ var _local1:Array = []; if (checkSiteLockWebsites(_local1)){ return (true); }; this.stop(); this.visible = false; parent.removeChild(this); return (false); } private function checkSiteLockWebsites(_arg1:Array):Boolean{ var _local2:String; var _local3:String; var _local4:int; if (_arg1.length == 0){ return (true); }; _local2 = getSWFHost(); if (_local2 == null){ return (false); }; if (!getHostMatchesWebsites(_local2, _arg1)){ return (false); }; _local3 = getHTMLHost(); if (_local3 == null){ return (true); }; if (!getHostMatchesWebsites(_local3, _arg1)){ return (false); }; return (true); } private function getSWFHost():String{ if (loaderInfo == null){ return (null); }; if (loaderInfo.url == null){ return (null); }; return (getHostFromURL(loaderInfo.url)); } private function getHTMLHost():String{ var _local1:String; _local1 = ExternalInterface.call("function() { return document.location.href; }"); if (_local1 == null){ return (null); }; return (getHostFromURL(_local1)); } private function getHostFromURL(_arg1:String):String{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; _local2 = _arg1.indexOf("://"); if (_local2 == -1){ return (null); }; _local2 = (_local2 + 3); _local4 = _arg1.indexOf("/", _local2); if (_local4 == -1){ _local4 = _arg1.length; }; _local5 = _arg1.indexOf(":", _local2); if (_local5 == -1){ _local5 = _arg1.length; }; _local3 = Math.min(_local4, _local5); return (_arg1.substr(_local2, (_local3 - _local2))); } private function getHostMatchesWebsites(_arg1:String, _arg2:Array):Boolean{ var _local3:String; var _local4:String; var _local5:int; if ((((_arg1 == null)) || ((_arg2 == null)))){ return (false); }; _arg1 = _arg1.toLowerCase(); _local5 = 0; while (_local5 < _arg2.length) { _local3 = _arg2[_local5].toLowerCase(); if (_arg1 == _local3){ return (true); }; if (_local3.charAt(0) == "*"){ _local4 = _local3.substr(1); if (("." + _arg1) == _local4){ return (true); }; if ((((_arg1.length >= _local4.length)) && ((_arg1.substr((_arg1.length - _local4.length)) == _local4)))){ return (true); }; }; _local5++; }; return (false); } } }//package com.novelgames.multiplayerflashgames.common
Section 72
//NewMusic (com.novelgames.multiplayerflashgames.common.NewMusic) package com.novelgames.multiplayerflashgames.common { import flash.media.*; import flash.net.*; public class NewMusic extends Sound { public static var volume:Number = loadVolume(); private static var allSoundChannels:Array = new Array(); override public function play(_arg1:Number=0, _arg2:int=0, _arg3:SoundTransform=null):SoundChannel{ var _local4:SoundChannel = super.play(_arg1, _arg2, new SoundTransform(volume)); allSoundChannels.push(_local4); return (_local4); } private static function loadVolume():Number{ var _local1:SharedObject = SharedObject.getLocal("gameOptions", "/"); _local1.objectEncoding = ObjectEncoding.AMF0; if (isNaN(_local1.data.musicVolume)){ _local1.data.musicVolume = 1; }; return (_local1.data.musicVolume); } public static function saveVolume():void{ var _local1:SharedObject = SharedObject.getLocal("gameOptions", "/"); _local1.objectEncoding = ObjectEncoding.AMF0; _local1.data.musicVolume = volume; } public static function setVolume(_arg1:Number):void{ var _local2:int; NewMusic.volume = _arg1; _local2 = 0; while (_local2 < allSoundChannels.length) { allSoundChannels[_local2].soundTransform = new SoundTransform(_arg1); _local2++; }; } } }//package com.novelgames.multiplayerflashgames.common
Section 73
//NewSound (com.novelgames.multiplayerflashgames.common.NewSound) package com.novelgames.multiplayerflashgames.common { import flash.media.*; import flash.net.*; public class NewSound extends Sound { public static var volume:Number = loadVolume(); private static var allSoundChannels:Array = new Array(); override public function play(_arg1:Number=0, _arg2:int=0, _arg3:SoundTransform=null):SoundChannel{ var _local4:SoundChannel = super.play(_arg1, _arg2, new SoundTransform(volume)); allSoundChannels.push(_local4); return (_local4); } private static function loadVolume():Number{ var _local1:SharedObject = SharedObject.getLocal("gameOptions", "/"); _local1.objectEncoding = ObjectEncoding.AMF0; if (isNaN(_local1.data.soundVolume)){ _local1.data.soundVolume = 1; }; return (_local1.data.soundVolume); } public static function saveVolume():void{ var _local1:SharedObject = SharedObject.getLocal("gameOptions", "/"); _local1.objectEncoding = ObjectEncoding.AMF0; _local1.data.soundVolume = volume; } public static function setVolume(_arg1:Number):void{ var _local2:int; NewSound.volume = _arg1; _local2 = 0; while (_local2 < allSoundChannels.length) { allSoundChannels[_local2].soundTransform = new SoundTransform(_arg1); _local2++; }; } } }//package com.novelgames.multiplayerflashgames.common
Section 74
//NewTimer (com.novelgames.multiplayerflashgames.common.NewTimer) package com.novelgames.multiplayerflashgames.common { import flash.events.*; import flash.utils.*; public class NewTimer extends Timer { private var originalDelay:int; private var originalRepeatCount:int; private var listener:Function; private var adjustedStartTime:int; private static var paused:Boolean = false; private static var pauseTime:int; private static var totalPausedTime:int = 0; private static var allTimers:Array = new Array(); public function NewTimer(_arg1:Number, _arg2:int=0):void{ super(_arg1, _arg2); originalDelay = _arg1; originalRepeatCount = _arg2; allTimers.push(this); } override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ if (_arg1 != TimerEvent.TIMER){ super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); return; }; this.listener = _arg2; super.addEventListener(_arg1, timerEventListener); } override public function start():void{ adjustedStartTime = NewTimer.getTimer(); super.start(); } private function timerEventListener(_arg1:TimerEvent):void{ if (paused){ stop(); delay = Math.max((originalDelay - (NewTimer.getTimer() - adjustedStartTime)), 1); if (originalRepeatCount > 0){ repeatCount++; }; super.start(); return; }; if ((NewTimer.getTimer() - adjustedStartTime) >= originalDelay){ adjustedStartTime = NewTimer.getTimer(); if (delay != originalDelay){ stop(); delay = originalDelay; super.start(); }; listener(_arg1); } else { stop(); delay = Math.max((originalDelay - (NewTimer.getTimer() - adjustedStartTime)), 1); if (originalRepeatCount > 0){ repeatCount++; }; super.start(); }; } public static function getTimer():int{ if (paused){ return ((pauseTime - totalPausedTime)); }; return ((getTimer() - totalPausedTime)); } public static function pause():void{ if (paused){ return; }; paused = true; pauseTime = getTimer(); } public static function unpause():void{ if (!paused){ return; }; paused = false; totalPausedTime = (totalPausedTime + (getTimer() - pauseTime)); } public static function stopAll():void{ var _local1:int; _local1 = 0; while (_local1 < allTimers.length) { if (allTimers[_local1].listener != null){ allTimers[_local1].removeEventListener(TimerEvent.TIMER, allTimers[_local1].listener); }; allTimers[_local1].stop(); _local1++; }; allTimers = []; } } }//package com.novelgames.multiplayerflashgames.common
Section 75
//OptionsButton (com.novelgames.multiplayerflashgames.common.OptionsButton) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; public class OptionsButton extends MovieClip { public function OptionsButton(){ this.buttonMode = true; this.addEventListener(MouseEvent.CLICK, onClick); this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } private function onClick(_arg1:MouseEvent):void{ Object(parent.parent).showOptions(); } private function onRemovedFromStage(_arg1:Event):void{ this.removeEventListener(MouseEvent.CLICK, onClick); this.removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } } }//package com.novelgames.multiplayerflashgames.common
Section 76
//OptionsDialog (com.novelgames.multiplayerflashgames.common.OptionsDialog) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; public class OptionsDialog extends MovieClip { public var okButton:SimpleButton; public var sound:MovieClip; public var fullScreen:MovieClip; public var music:MovieClip; public var separator0:MovieClip; public var separator1:MovieClip; private var soundOnX:Number; private var soundOnY:Number; private var soundOffX:Number; private var soundOffY:Number; private var musicOnX:Number; private var musicOnY:Number; private var musicOffX:Number; private var musicOffY:Number; private var soundSlider:MovieClip; private var musicSlider:MovieClip; public function OptionsDialog(){ this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function onAddedToStage(_arg1:Event):void{ soundOnX = sound.onSlider.x; soundOnY = sound.onSlider.y; soundOffX = sound.offSlider.x; soundOffY = sound.offSlider.y; musicOnX = music.onSlider.x; musicOnY = music.onSlider.y; musicOffX = music.offSlider.x; musicOffY = music.offSlider.y; sound.offSlider.visible = false; soundSlider = sound.onSlider; music.offSlider.visible = false; musicSlider = music.onSlider; updateSoundSlider(NewSound.volume); updateMusicSlider(NewMusic.volume); soundSlider.addEventListener(MouseEvent.MOUSE_DOWN, onSoundSliderMouseDown); soundSlider.buttonMode = true; musicSlider.addEventListener(MouseEvent.MOUSE_DOWN, onMusicSliderMouseDown); musicSlider.buttonMode = true; okButton.addEventListener(MouseEvent.CLICK, okButtonClicked); updateFullScreenButtons(); this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } private function updateSoundSlider(_arg1:Number):void{ soundSlider.x = ((soundOnX * _arg1) + (soundOffX * (1 - _arg1))); soundSlider.y = ((soundOnY * _arg1) + (soundOffY * (1 - _arg1))); } private function updateMusicSlider(_arg1:Number):void{ musicSlider.x = ((musicOnX * _arg1) + (musicOffX * (1 - _arg1))); musicSlider.y = ((musicOnY * _arg1) + (musicOffY * (1 - _arg1))); } private function onSoundSliderMouseDown(_arg1:MouseEvent):void{ soundSlider.removeEventListener(MouseEvent.MOUSE_DOWN, onSoundSliderMouseDown); this.addEventListener(MouseEvent.MOUSE_MOVE, onSoundSliderMouseMove); this.addEventListener(MouseEvent.MOUSE_UP, onSoundSliderMouseUp); } private function onSoundSliderMouseMove(_arg1:MouseEvent):void{ var _local2:Number; _arg1.updateAfterEvent(); _local2 = ((sound.mouseX - soundOffX) / (soundOnX - soundOffX)); if (_local2 < 0){ _local2 = 0; }; if (_local2 > 1){ _local2 = 1; }; updateSoundSlider(_local2); NewSound.setVolume(_local2); } private function onSoundSliderMouseUp(_arg1:MouseEvent):void{ this.removeEventListener(MouseEvent.MOUSE_MOVE, onSoundSliderMouseMove); this.removeEventListener(MouseEvent.MOUSE_UP, onSoundSliderMouseUp); soundSlider.addEventListener(MouseEvent.MOUSE_DOWN, onSoundSliderMouseDown); } private function onMusicSliderMouseDown(_arg1:MouseEvent):void{ musicSlider.removeEventListener(MouseEvent.MOUSE_DOWN, onMusicSliderMouseDown); this.addEventListener(MouseEvent.MOUSE_MOVE, onMusicSliderMouseMove); this.addEventListener(MouseEvent.MOUSE_UP, onMusicSliderMouseUp); } private function onMusicSliderMouseMove(_arg1:MouseEvent):void{ var _local2:Number; _arg1.updateAfterEvent(); _local2 = ((music.mouseX - musicOffX) / (soundOnX - musicOffX)); if (_local2 < 0){ _local2 = 0; }; if (_local2 > 1){ _local2 = 1; }; updateMusicSlider(_local2); NewMusic.setVolume(_local2); } private function onMusicSliderMouseUp(_arg1:MouseEvent):void{ this.removeEventListener(MouseEvent.MOUSE_MOVE, onMusicSliderMouseMove); this.removeEventListener(MouseEvent.MOUSE_UP, onMusicSliderMouseUp); musicSlider.addEventListener(MouseEvent.MOUSE_DOWN, onMusicSliderMouseDown); } private function okButtonClicked(_arg1:MouseEvent):void{ NewSound.saveVolume(); NewMusic.saveVolume(); Object(parent).hideOptions(); } private function updateFullScreenButtons():void{ if (stage.displayState == StageDisplayState.FULL_SCREEN){ fullScreen.onButton.gotoAndStop("on"); fullScreen.onButton.removeEventListener(MouseEvent.CLICK, onFullScreenOnClicked); fullScreen.onButton.buttonMode = false; fullScreen.offButton.gotoAndStop("off"); fullScreen.offButton.addEventListener(MouseEvent.CLICK, onFullScreenOffClicked); fullScreen.offButton.buttonMode = true; } else { fullScreen.onButton.gotoAndStop("off"); fullScreen.onButton.addEventListener(MouseEvent.CLICK, onFullScreenOnClicked); fullScreen.onButton.buttonMode = true; fullScreen.offButton.gotoAndStop("on"); fullScreen.offButton.removeEventListener(MouseEvent.CLICK, onFullScreenOffClicked); fullScreen.offButton.buttonMode = false; }; } private function onFullScreenOnClicked(_arg1:MouseEvent):void{ stage.displayState = StageDisplayState.FULL_SCREEN; updateFullScreenButtons(); } private function onFullScreenOffClicked(_arg1:MouseEvent):void{ stage.displayState = StageDisplayState.NORMAL; updateFullScreenButtons(); } private function onRemovedFromStage(_arg1:Event):void{ soundSlider.removeEventListener(MouseEvent.MOUSE_DOWN, onSoundSliderMouseDown); musicSlider.removeEventListener(MouseEvent.MOUSE_DOWN, onMusicSliderMouseDown); okButton.removeEventListener(MouseEvent.CLICK, okButtonClicked); fullScreen.onButton.removeEventListener(MouseEvent.CLICK, onFullScreenOnClicked); fullScreen.offButton.removeEventListener(MouseEvent.CLICK, onFullScreenOffClicked); this.removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } } }//package com.novelgames.multiplayerflashgames.common
Section 77
//RandomNumberGenerator (com.novelgames.multiplayerflashgames.common.RandomNumberGenerator) package com.novelgames.multiplayerflashgames.common { public class RandomNumberGenerator { private var mt:Array; private var index:int; private static var N:int = 624; private static var M:int = 397; private static var A:uint = 2567483615; private static var B:uint = 2636928640; private static var C:uint = 4022730752; private static var U:int = 11; private static var S:int = 7; private static var T:int = 15; private static var L:int = 18; private static var MULTIPLIER:uint = 1812433253; public function RandomNumberGenerator(_arg1:uint){ var _local2:int; super(); mt = new Array(N); index = 0; mt[0] = _arg1; _local2 = 1; while (_local2 < N) { mt[_local2] = uint((uint((MULTIPLIER * (mt[(_local2 - 1)] ^ (mt[(_local2 - 1)] >>> 30)))) + _local2)); _local2++; }; } public function getRandomUint():uint{ var _local1:uint; if (index == 0){ generateMTs(); }; _local1 = mt[index]; _local1 = (_local1 ^ (_local1 >>> U)); _local1 = (_local1 ^ ((_local1 << S) & B)); _local1 = (_local1 ^ ((_local1 << T) & C)); _local1 = (_local1 ^ (_local1 >>> L)); index = ((index + 1) % N); return (_local1); } public function getRandomNumber():Number{ return ((getRandomUint() / 4294967296)); } private function generateMTs():void{ var _local1:int; var _local2:int; _local2 = 0; while (_local2 < N) { _local1 = ((mt[_local2] & 2147483648) | (mt[((_local2 + 1) % N)] & 2147483647)); mt[_local2] = (mt[((_local2 + M) % N)] ^ (_local1 >>> 1)); if ((_local1 % 2) == 1){ mt[_local2] = (mt[_local2] ^ A); }; _local2++; }; } } }//package com.novelgames.multiplayerflashgames.common
Section 78
//SimpleTimer (com.novelgames.multiplayerflashgames.common.SimpleTimer) package com.novelgames.multiplayerflashgames.common { import flash.events.*; import flash.utils.*; public class SimpleTimer { public var delay:Number; public var repeatCount:int; public var duration:int; public var listener:Function; public var count:int; public var startTime:int; public var lastTime:int; public var timer:Timer; public var dTime:int; public var time:int; public var ratio:Number; public function SimpleTimer(_arg1:Number, _arg2:int, _arg3:int, _arg4:Function){ this.delay = _arg1; this.repeatCount = _arg2; this.duration = _arg3; this.listener = _arg4; count = 0; startTime = NewTimer.getTimer(); lastTime = startTime; time = startTime; dTime = (time - startTime); ratio = 0; timer = new NewTimer(_arg1, _arg2); timer.addEventListener(TimerEvent.TIMER, onTime); timer.start(); } public function stop():void{ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onTime); } private function onTime(_arg1:TimerEvent):void{ _arg1.updateAfterEvent(); time = NewTimer.getTimer(); dTime = (time - startTime); if (duration != 0){ ratio = (dTime / duration); if (ratio >= 1){ ratio = 1; stop(); }; }; listener(this); lastTime = time; count++; if ((((repeatCount > 0)) && ((count >= repeatCount)))){ stop(); }; } } }//package com.novelgames.multiplayerflashgames.common
Section 79
//Title (com.novelgames.multiplayerflashgames.common.Title) package com.novelgames.multiplayerflashgames.common { import flash.display.*; import flash.events.*; import flash.net.*; public class Title extends MovieClip { public var moreGamesButton:SimpleButton; public var startButton:SimpleButton; public function Title(){ var _local3:Error; super(); var _local1:Object; var _local2:Object; try { _local1 = this["startButton"]; } catch(e) { }; try { _local2 = this["moreGamesButton"]; } catch(e) { }; if (_local1 != null){ _local1.addEventListener(MouseEvent.ROLL_OVER, startButtonOvered); _local1.addEventListener(MouseEvent.CLICK, startButtonClicked); }; if (_local2 != null){ _local2.addEventListener(MouseEvent.ROLL_OVER, moreGamesButtonOvered); _local2.addEventListener(MouseEvent.CLICK, moreGamesButtonClicked); }; } private function startButtonOvered(_arg1:MouseEvent):void{ if (Object(parent).buttonSoundOver){ Object(parent).buttonSoundOver.play(); }; } private function startButtonClicked(_arg1:MouseEvent):void{ if (Object(parent).buttonSoundClick){ Object(parent).buttonSoundClick.play(); }; Object(parent).showRooms(); } private function moreGamesButtonOvered(_arg1:MouseEvent):void{ if (Object(parent).buttonSoundOver){ Object(parent).buttonSoundOver.play(); }; } private function moreGamesButtonClicked(_arg1:MouseEvent):void{ if (Object(parent).buttonSoundClick){ Object(parent).buttonSoundClick.play(); }; Object(parent).gotoMoreGamesURL(); } private function onRemovedFromStage(_arg1:Event):void{ var _local4:Error; var _local2:Object; var _local3:Object; try { _local2 = this["startButton"]; } catch(e) { }; try { _local3 = this["moreGamesButton"]; } catch(e) { }; if (_local2 != null){ _local2.removeEventListener(MouseEvent.ROLL_OVER, startButtonOvered); _local2.removeEventListener(MouseEvent.CLICK, startButtonClicked); }; if (_local3 != null){ _local3.removeEventListener(MouseEvent.ROLL_OVER, moreGamesButtonOvered); _local3.removeEventListener(MouseEvent.CLICK, moreGamesButtonClicked); }; this.removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage); } } }//package com.novelgames.multiplayerflashgames.common
Section 80
//ButtonSoundClick (com.novelgames.multiplayerflashgames.snowball.ButtonSoundClick) package com.novelgames.multiplayerflashgames.snowball { import com.novelgames.multiplayerflashgames.common.*; public dynamic class ButtonSoundClick extends NewSound { } }//package com.novelgames.multiplayerflashgames.snowball
Section 81
//ButtonSoundOver (com.novelgames.multiplayerflashgames.snowball.ButtonSoundOver) package com.novelgames.multiplayerflashgames.snowball { import com.novelgames.multiplayerflashgames.common.*; public dynamic class ButtonSoundOver extends NewSound { } }//package com.novelgames.multiplayerflashgames.snowball
Section 82
//Config (com.novelgames.multiplayerflashgames.snowball.Config) package com.novelgames.multiplayerflashgames.snowball { public class Config { public static var MONSTER_HITPOINT:int = 3; public static var TIMEPERTURN:int = 20000; public static var THROWARROW_ANGLE_PERIOD:int = 2200; public static var THROWARROW_ANGLE_RANGE:Array = [0, 90]; public static var THROWARROW_FORCE_PERIOD:int = 1500; public static var THROWARROW_FORCE_RANGE:Array = [5, 10]; public static var THROWARROW_POSITIONOFFSET:Number = 40; public static var WINDMETER_MAXSPINSPEED:Number = 720; public static var WINDMETER_SPINACCELERATION:Number = 180; public static var WINDMETER_ARROWTIME:Number = 1000; public static var ROBOT_NORMTHROWANGLE:Number = 55; public static var ROBOT_ANGLEERROR:Number = 15; public static var ROBOT_FORCEERROR:Number = 1; public static var ROBOT_AIMTIMERANGE:Array = [1000, 3000]; public static var GRAVITY:Number = 9.8; public static var WINDSPEED_MAXIMUM:Number = 2; public static var SNOWBALL_MASS:Number = 1; public static var GROUND_YPOSITION:Number = 333; public static var PIXELSPERMETRE:Number = 80; public static var DISTANCE_DECIMALPLACE:int = 3; public static var SPARK_FADEOUT_DURATION:int = 800; public static var COLLISIONDETECTION_TIMEINTERVAL:int = 20; public static var GAMESTAGE_WIDTH:Number = 600; public static var TRANSITION_DURATION:int = 500; public static var CHAT_POSITIONINFOS:Array = [[0, 200, "leftBottom"], [600, 200, "rightBottom"]]; public static var MESSAGE_NEWGAME_DURATION:int = 2000; public static var MESSAGE_THROWTOCENTRE_DURATION:int = 3500; public static var MESSAGE_WHOCLOSER_DURATION:int = 2500; public static var MESSAGE_WHOFIRST_DURATION:int = 2000; public static var MESSAGE_DISCONNECT_DURATION:int = 2500; public static var MESSAGE_TIMESUP_DURATION:int = 2500; public static var MESSAGE_PLAYAGAIN_DELAY:int = 2000; } }//package com.novelgames.multiplayerflashgames.snowball
Section 83
//DistanceMarker (com.novelgames.multiplayerflashgames.snowball.DistanceMarker) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.text.*; public class DistanceMarker extends MovieClip { public var distanceText:TextField; public function DistanceMarker(){ hide(); } public function showDistance(_arg1:Number, _arg2:Number):void{ var _local3:String; var _local4:int; var _local5:int; _local3 = _arg2.toString(); visible = true; this.x = _arg1; if (_local3.indexOf(".") == -1){ _local4 = 0; _local3 = (_local3 + "."); } else { _local4 = (_local3.substr(_local3.indexOf(".")).length - 1); }; _local5 = _local4; while (_local5 < Config.DISTANCE_DECIMALPLACE) { _local3 = (_local3 + "0"); _local5++; }; _local3 = _local3.substring(0, ((_local3.indexOf(".") + Config.DISTANCE_DECIMALPLACE) + 1)); distanceText.visible = true; distanceText.text = _local3; } public function hide():void{ visible = false; } } }//package com.novelgames.multiplayerflashgames.snowball
Section 84
//DistanceMarker0 (com.novelgames.multiplayerflashgames.snowball.DistanceMarker0) package com.novelgames.multiplayerflashgames.snowball { public dynamic class DistanceMarker0 extends DistanceMarker { } }//package com.novelgames.multiplayerflashgames.snowball
Section 85
//DistanceMarker1 (com.novelgames.multiplayerflashgames.snowball.DistanceMarker1) package com.novelgames.multiplayerflashgames.snowball { public dynamic class DistanceMarker1 extends DistanceMarker { } }//package com.novelgames.multiplayerflashgames.snowball
Section 86
//Game (com.novelgames.multiplayerflashgames.snowball.Game) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.text.*; import com.novelgames.multiplayerflashgames.common.*; import flash.utils.*; import flash.media.*; public dynamic class Game extends Game { public var snowball:Snowball; public var clock1:Clock; public var windMeter:WindMeter; public var spark:Spark; public var distanceMarker0:DistanceMarker1; public var centreCross:MovieClip; public var mouseHitArea:MovieClip; public var distanceMarker1:DistanceMarker0; public var youTextMovie0:MovieClip; public var youTextMovie1:MovieClip; public var centreArrow:MovieClip; public var nameText0:TextField; public var nameText1:TextField; public var instructionsButton:InstructionsButton; public var message:Message; public var optionsButton:OptionsButton; public var monster0:Monster1; public var clock0:Clock; public var monster1:Monster0; private var isViewing:Boolean; private var playerInfos:Array; private var selfIndex:int; private var gameStarted:Boolean; private var randomNumberGenerator:RandomNumberGenerator; private var ranks:Array; private var state:int; private var currentPlayerIndex:int; private var firstPlayerIndex:int; public var playerStatusArray:Array; public var monstersArray:Array; public var windSpeed:Number; private var selfDistance:Number; private var opponentDistance:Number; private var timer:NewTimer; private var startTime:int; private var lastTime:int; private var soundThrow:Sound; private var soundHit:Sound; private var soundMiss:Sound; private var soundWin:Sound; private var soundLose:Sound; private static var STATE_SETANGLE:int = 0; private static var STATE_SETFORCE:int = 1; override public function startGame(_arg1:Array, _arg2:int):void{ isViewing = false; startPlay(_arg1, _arg2); } override public function startView(_arg1:Array):void{ isViewing = true; startPlay(_arg1, 0); } override public function playerDisconnected(_arg1:int):void{ stopEverything(); if (_arg1 == selfIndex){ message.showDisconnected(); } else { message.showOpponentDisconnected(); }; if (gameStarted){ ranks = [0, 0]; ranks[_arg1] = 1; } else { ranks = null; }; timer = new NewTimer(Config.MESSAGE_DISCONNECT_DURATION, 1); timer.addEventListener(TimerEvent.TIMER, showHome); timer.start(); } private function stopEverything():void{ var _local1:int; stopReceivingMessages(); unsetControl(); _local1 = 0; while (_local1 < playerStatusArray.length) { playerStatusArray[_local1].stopClock(); _local1++; }; Object(parent).stopGameMusic(); if (timer != null){ timer.stop(); }; } override public function getChatBubblePosition(_arg1:int):Object{ var _local2:Array = Config.CHAT_POSITIONINFOS[getPositionIndex(_arg1)]; return ({x:_local2[0], y:_local2[1], direction:_local2[2]}); } private function getPositionIndex(_arg1:int):int{ var _local2:int; _local2 = (((_arg1 + playerInfos.length) - selfIndex) % playerInfos.length); _local2 = _arg1; return (_local2); } private function startPlay(_arg1:Array, _arg2:int):void{ this.playerInfos = _arg1; this.selfIndex = _arg2; gameStarted = false; initialize(); } private function initialize():void{ randomNumberGenerator = new RandomNumberGenerator(playerInfos[0].randomSeed); message.showNewGame(); currentPlayerIndex = 0; firstPlayerIndex = -1; selfDistance = -1; opponentDistance = -1; initializePlayerStatus(); initializeMonsters(); initializeRobots(); windMeter.initialize(); windMeter.alpha = 0; windSpeed = 0; centreArrow.visible = false; soundThrow = new SoundThrow(); soundHit = new SoundHit(); soundMiss = new SoundMiss(); soundWin = new SoundWin(); soundLose = new SoundLose(); startReceivingMessages(); timer = new NewTimer(Config.MESSAGE_NEWGAME_DURATION, 1); timer.addEventListener(TimerEvent.TIMER, syncAllPlayersReady); timer.start(); } private function initializePlayerStatus():void{ var _local1:int; var _local2:PlayerStatus; playerStatusArray = []; _local1 = 0; while (_local1 < playerInfos.length) { _local2 = new PlayerStatus(); _local2.initialize(this[("youTextMovie" + _local1)], this[("nameText" + _local1)], this[("distanceMarker" + _local1)], this[("clock" + _local1)]); _local2.setName(playerInfos, _local1, selfIndex); playerStatusArray.push(_local2); _local1++; }; } private function initializeMonsters():void{ var _local1:int; monstersArray = []; _local1 = 0; while (_local1 < playerInfos.length) { monstersArray.push(this[("monster" + _local1)]); monstersArray[_local1].initialize(); _local1++; }; } private function initializeRobots():void{ var _local1:int; _local1 = 0; while (_local1 < playerInfos.length) { playerInfos[_local1].robot = new Robot(_local1, playerInfos[_local1].randomSeed, this); _local1++; }; } private function syncAllPlayersReady(_arg1:TimerEvent):void{ var _local2:int; timer.stop(); timer.removeEventListener(TimerEvent.TIMER, syncAllPlayersReady); sendSynchronizeMessage("allPlayersReady"); _local2 = 0; while (_local2 < playerInfos.length) { if (!playerInfos[_local2].isRobot){ } else { playerInfos[_local2].robot.syncAllPlayersReady(); }; _local2++; }; } public function allPlayersReady():void{ message.hide(); message.showThrowToCentre(); timer = new NewTimer(Config.MESSAGE_THROWTOCENTRE_DURATION, 1); timer.addEventListener(TimerEvent.TIMER, startFindFirst); timer.start(); } private function startFindFirst(_arg1:TimerEvent):void{ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, startFindFirst); message.hide(); centreArrow.visible = true; startThrowToCentre(); } private function startThrowToCentre():void{ var _local1:int; playerStatusArray[currentPlayerIndex].startClock(Config.TIMEPERTURN); playerStatusArray[currentPlayerIndex].showActive(); _local1 = 0; while (_local1 < monstersArray.length) { monstersArray[_local1].updateAngle(0); _local1++; }; if (currentPlayerIndex == selfIndex){ stopReceivingMessages(); startSetAngle(); } else { startReceivingMessages(); if (playerInfos[currentPlayerIndex].isRobot){ playerInfos[currentPlayerIndex].robot.startThrowToCentre(); }; }; } private function startTurn():void{ var _local1:int; playerStatusArray[currentPlayerIndex].startClock(Config.TIMEPERTURN); playerStatusArray[currentPlayerIndex].showActive(); _local1 = 0; while (_local1 < monstersArray.length) { monstersArray[_local1].updateAngle(0); _local1++; }; setWindSpeed(); if (currentPlayerIndex == selfIndex){ stopReceivingMessages(); startSetAngle(); } else { startReceivingMessages(); if (playerInfos[currentPlayerIndex].isRobot){ playerInfos[currentPlayerIndex].robot.startTurn(); }; }; } private function setWindSpeed():void{ windSpeed = (-(Config.WINDSPEED_MAXIMUM) + ((randomNumberGenerator.getRandomNumber() * Config.WINDSPEED_MAXIMUM) * 2)); windMeter.setWind(windSpeed); } private function setControl():void{ mouseHitArea.buttonMode = true; mouseHitArea.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHitArea); } private function unsetControl():void{ mouseHitArea.buttonMode = false; mouseHitArea.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHitArea); } private function onMouseDownHitArea(_arg1:MouseEvent):void{ switch (state){ case STATE_SETANGLE: unsetControl(); timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onSetAngleTime); startSetForce(); break; case STATE_SETFORCE: unsetControl(); timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onSetForceTime); doThrowSnowball(snowball.angle, snowball.force); break; }; } private function startSetAngle():void{ state = STATE_SETANGLE; monstersArray[currentPlayerIndex].showArrow(); startTime = NewTimer.getTimer(); lastTime = startTime; onSetAngleTime(null); timer = new NewTimer(1, 0); timer.addEventListener(TimerEvent.TIMER, onSetAngleTime); timer.start(); setControl(); } private function onSetAngleTime(_arg1:TimerEvent):void{ var _local2:int = NewTimer.getTimer(); var _local3:Number = Math.floor(((_local2 - startTime) / (Config.THROWARROW_ANGLE_PERIOD / 2))); var _local4:Number = (((_local2 - startTime) / (Config.THROWARROW_ANGLE_PERIOD / 2)) % 1); var _local5:Number = Config.THROWARROW_ANGLE_RANGE[0]; var _local6:Number = Config.THROWARROW_ANGLE_RANGE[1]; var _local7:Number = (_local6 - _local5); if ((_local3 % 2) != 0){ _local4 = (1 - _local4); }; monstersArray[currentPlayerIndex].updateAngle((_local5 + (_local4 * _local7))); snowball.setAngle((_local5 + (_local4 * _local7))); if (_arg1){ _arg1.updateAfterEvent(); }; } private function startSetForce():void{ state = STATE_SETFORCE; startTime = NewTimer.getTimer(); lastTime = startTime; onSetForceTime(null); timer = new NewTimer(1, 0); timer.addEventListener(TimerEvent.TIMER, onSetForceTime); timer.start(); setControl(); } private function onSetForceTime(_arg1:TimerEvent):void{ var _local2:int = NewTimer.getTimer(); var _local3:Number = Math.floor(((_local2 - startTime) / (Config.THROWARROW_FORCE_PERIOD / 2))); var _local4:Number = (((_local2 - startTime) / (Config.THROWARROW_FORCE_PERIOD / 2)) % 1); var _local5:Number = Config.THROWARROW_FORCE_RANGE[0]; var _local6:Number = Config.THROWARROW_FORCE_RANGE[1]; var _local7:Number = (_local6 - _local5); if ((_local3 % 2) != 0){ _local4 = (1 - _local4); }; monstersArray[currentPlayerIndex].updateForce((_local5 + (_local4 * _local7))); snowball.setForce((_local5 + (_local4 * _local7))); if (_arg1){ _arg1.updateAfterEvent(); }; } public function doThrowSnowball(_arg1:Number, _arg2:Number):void{ sendMessage("startThrowSnowball", _arg1, _arg2); startThrowSnowball(_arg1, _arg2); } public function startThrowSnowball(_arg1:Number, _arg2:Number):void{ playerStatusArray[currentPlayerIndex].stopClock(); soundThrow.play(); snowball.x = monstersArray[currentPlayerIndex].x; snowball.y = monstersArray[currentPlayerIndex].y; if (currentPlayerIndex == 1){ _arg1 = (180 - _arg1); }; snowball.setAngle(_arg1); snowball.setForce(_arg2); snowball.findInitialSpeed(windSpeed); snowball.show(); monstersArray[currentPlayerIndex].startThrow(); startTime = NewTimer.getTimer(); lastTime = startTime; onSnowballFlight(null); timer = new NewTimer(1, 0); timer.addEventListener(TimerEvent.TIMER, onSnowballFlight); timer.start(); } private function onSnowballFlight(_arg1:TimerEvent):void{ var _local4:Number; var _local2:int = NewTimer.getTimer(); var _local3:int = (_local2 - lastTime); if (checkSnowballCollision(_local2, lastTime)){ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onSnowballFlight); snowball.hide(); if (firstPlayerIndex == -1){ _local4 = (Math.abs((snowball.x - (Config.GAMESTAGE_WIDTH / 2))) / Config.PIXELSPERMETRE); if (currentPlayerIndex == selfIndex){ selfDistance = _local4; } else { opponentDistance = _local4; }; playerStatusArray[currentPlayerIndex].showDistance(snowball.x, _local4); }; startTime = NewTimer.getTimer(); lastTime = startTime; timer = new NewTimer(1, 0); timer.addEventListener(TimerEvent.TIMER, onFadeOutSpark); timer.start(); return; }; snowball.flight(Config.GRAVITY, 0, _local2, _local3); lastTime = _local2; if (_arg1){ _arg1.updateAfterEvent(); }; } private function checkSnowballCollision(_arg1:int, _arg2:int):Boolean{ var _local3:int; var _local4:Point; var _local5:Point; var _local6:int; _local3 = (Math.ceil(((_arg2 - startTime) / Config.COLLISIONDETECTION_TIMEINTERVAL)) * Config.COLLISIONDETECTION_TIMEINTERVAL); while (_local3 <= (_arg1 - startTime)) { _local4 = snowball.getPositionAtTime(_local3); _local5 = this.localToGlobal(_local4); if (windMeter.hitBox.hitTestPoint(_local5.x, _local5.y, true)){ if (firstPlayerIndex == -1){ break; }; soundMiss.play(); spark.showMiss(_local4.x, _local4.y); snowball.x = _local4.x; snowball.y = _local4.y; return (true); }; if (_local4.y >= Config.GROUND_YPOSITION){ soundMiss.play(); spark.showMiss(_local4.x, _local4.y); snowball.x = _local4.x; snowball.y = _local4.y; return (true); }; if (monstersArray[((currentPlayerIndex + 1) % playerInfos.length)].hitBox.hitTestPoint(_local5.x, _local5.y, true)){ spark.showHit(_local4.x, _local4.y); snowball.x = _local4.x; snowball.y = _local4.y; if (firstPlayerIndex != -1){ monstersArray[((currentPlayerIndex + 1) % playerInfos.length)].hit(); }; soundHit.play(); return (true); }; _local3 = (_local3 + Config.COLLISIONDETECTION_TIMEINTERVAL); }; return (false); } private function onFadeOutSpark(_arg1:TimerEvent):void{ var _local2:int = NewTimer.getTimer(); var _local3:Number = ((_local2 - startTime) / Config.SPARK_FADEOUT_DURATION); if (_local3 >= 1){ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onFadeOutSpark); spark.hide(); monstersArray[currentPlayerIndex].showIdle(); if (firstPlayerIndex != -1){ endTurn(); } else { endThrowToCentre(); }; return; }; spark.fadeOut(_local3); } private function endThrowToCentre():void{ playerStatusArray[currentPlayerIndex].showInactive(); if ((((selfDistance == -1)) || ((opponentDistance == -1)))){ currentPlayerIndex = ((currentPlayerIndex + 1) % playerInfos.length); startThrowToCentre(); } else { centreArrow.visible = false; if (selfDistance <= opponentDistance){ firstPlayerIndex = selfIndex; message.showCloser(); } else { firstPlayerIndex = ((selfIndex + 1) % playerInfos.length); message.showOpponentCloser(); }; timer = new NewTimer(Config.MESSAGE_WHOCLOSER_DURATION, 1); timer.addEventListener(TimerEvent.TIMER, endShowWhoCloser); timer.start(); }; } private function endShowWhoCloser(_arg1:TimerEvent):void{ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, endShowWhoCloser); if (selfDistance <= opponentDistance){ firstPlayerIndex = selfIndex; message.showFirst(); } else { firstPlayerIndex = ((selfIndex + 1) % playerInfos.length); message.showOpponentFirst(); }; timer = new NewTimer(Config.MESSAGE_WHOFIRST_DURATION, 1); timer.addEventListener(TimerEvent.TIMER, endShowWhoFirst); timer.start(); } private function endShowWhoFirst(_arg1:TimerEvent):void{ var _local2:int; timer.stop(); timer.removeEventListener(TimerEvent.TIMER, endShowWhoFirst); message.hide(); currentPlayerIndex = firstPlayerIndex; startTime = NewTimer.getTimer(); timer = new NewTimer(1, 0); timer.addEventListener(TimerEvent.TIMER, onTransition); timer.start(); } private function onTransition(_arg1:TimerEvent):void{ var _local4:int; var _local2:int = NewTimer.getTimer(); var _local3:Number = ((_local2 - startTime) / Config.TRANSITION_DURATION); if (_local3 > 1){ _local3 = 1; }; windMeter.alpha = _local3; centreCross.alpha = (1 - _local3); _local4 = 0; while (_local4 < playerStatusArray.length) { playerStatusArray[_local4].fadeDistance((1 - _local3)); _local4++; }; if (_local3 == 1){ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onTransition); startTurn(); return; }; if (_arg1){ _arg1.updateAfterEvent(); }; } private function endTurn():void{ playerStatusArray[currentPlayerIndex].showInactive(); if (monstersArray[((currentPlayerIndex + 1) % playerInfos.length)].hitPoint == 0){ ranks = [1, 1]; ranks[currentPlayerIndex] = 0; Object(parent).stopGameMusic(); if (ranks[selfIndex] == 0){ message.showWin(); soundWin.play(); } else { message.showLose(); soundLose.play(); }; timer = new NewTimer(Config.MESSAGE_PLAYAGAIN_DELAY, 1); timer.addEventListener(TimerEvent.TIMER, showPlayAgain); timer.start(); } else { currentPlayerIndex = ((currentPlayerIndex + 1) % playerInfos.length); startTurn(); }; } public function clockFinished(_arg1:Clock):void{ if (currentPlayerIndex != selfIndex){ return; }; sendMessage("playerTimesUp", currentPlayerIndex); playerTimesUp(currentPlayerIndex); } public function playerTimesUp(_arg1:int):void{ stopEverything(); if (_arg1 == selfIndex){ ranks = [0, 0]; ranks[selfIndex] = 1; message.showTimesUp(); } else { ranks = [1, 1]; ranks[selfIndex] = 0; message.showOpponentTimesUp(); }; timer = new NewTimer(Config.MESSAGE_TIMESUP_DURATION, 1); timer.addEventListener(TimerEvent.TIMER, showPlayAgain); timer.start(); } private function showPlayAgain(_arg1:TimerEvent=null):void{ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, showPlayAgain); Object(parent).gameEnded(ranks); Object(parent).stopGameMusic(); message.showPlayAgain(); } private function showHome(_arg1:TimerEvent=null):void{ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, showHome); Object(parent).gameEnded(ranks); Object(parent).stopGameMusic(); message.showHome(); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 87
//Main (com.novelgames.multiplayerflashgames.snowball.Main) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.events.*; import com.novelgames.lobby.*; import flash.text.*; import com.novelgames.multiplayerflashgames.common.*; import flash.media.*; import flash.net.*; import mochi.as3.*; import flash.system.*; import flash.external.*; public dynamic class Main extends MainDevelopment { public var lobby:Lobby; public var textbox:TextField; public var title:Title; public var FupaBar:MovieClip; public var AD_ID:String; public var swfname:String; public var swfheight:String; public var swfwidth:String; public var embedcode:String; public var wfAlreadyLoaded:Boolean; public var mcWF:MovieClip; public function Main(){ addFrameScript(0, frame1); __setProp_lobby_Scene1_Layer4_0(); } public function start():void{ FupaBar.mouseChildren = true; FupaBar.mouseEnabled = true; } public function loadWildfire(_arg1:Event):void{ var ldr:Loader; var evt = _arg1; if (wfAlreadyLoaded){ mcWF.visible = true; return; }; wfAlreadyLoaded = true; addChild(mcWF).name = "mcWF"; mcWF.x = 15; mcWF.y = 42; var ModuleID = "PostModule1"; var cfg:Object = {}; cfg["width"] = "400"; cfg["height"] = "300"; cfg["widgetTitle"] = "Multiplayer Snowball Duel by Fupa.com"; cfg["advancedTracking"] = "true"; cfg["useFacebookMystuff"] = "false"; cfg["partner"] = "228491"; cfg["UIConfig"] = "<config baseTheme=\"v2\"><display showDesktop=\"true\" showEmail=\"true\" showBookmark=\"true\" showCloseButton=\"true\"></display><body><controls><snbuttons iconsOnly=\"true\"></snbuttons></controls></body></config>"; cfg["defaultContent"] = this.embedcode; ldr = new Loader(); cfg["onClose"] = function (_arg1:Object):void{ mcWF.visible = false; var _local2 = ldr.content; _local2["INIT"](); }; var url:String = ("http://cdn.gigya.com/WildFire/swf/wildfireInAS3.swf?ModuleID=" + ModuleID); var urlReq:URLRequest = new URLRequest(url); mcWF[ModuleID] = cfg; ldr.load(urlReq); mcWF.addChild(ldr); } public function loadEmbed(_arg1:Event):void{ var evt = _arg1; var url:String = ("http://www.fupa.com/embed/?swf=" + this.swfname); var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } public function loadNext(_arg1:Event):void{ var evt = _arg1; var url:String = ("http://www.fupa.com/?swf=" + this.swfname); var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } public function loadFupa(_arg1:Event):void{ var evt = _arg1; var url = "http://games.fupa.com/aw.aspx?A=37"; var request:URLRequest = new URLRequest(url); try { navigateToURL(request, "_blank"); } catch(e:Error) { trace("Error occurred!"); }; } override protected function getGame():Game{ return (new Game()); } override protected function getMusicGame():Sound{ return (new MusicGame()); } override protected function getButtonSoundOver():Sound{ return (new ButtonSoundOver()); } override protected function getButtonSoundClick():Sound{ return (new ButtonSoundClick()); } function __setProp_lobby_Scene1_Layer4_0(){ try { lobby["componentInspectorSetting"] = true; } catch(e:Error) { }; lobby.actionDisconnected = "disconnected"; lobby.actionPlayerDisconnected = "playerDisconnected"; lobby.actionReceiveChatMessage = ""; lobby.actionReceiveGameMessage = "receiveGameMessage"; lobby.actionStartGame = "startGame"; lobby.afterGameEndedAction = ""; lobby.afterJoinRoomAction = ""; lobby.afterJoinTableAction = ""; lobby.allowEnterAsGuest = true; lobby.allowLoginThroughFacebook = false; lobby.chatEnabled = true; lobby.chatHideTime = 200; lobby.chatMaxLength = 100; lobby.chatShowBubble = true; lobby.chatStayTime = 10000; lobby.enabled = true; lobby.encrypted = false; lobby.enterType = "name"; lobby.facebookLoginURL = "http://mmo.fupa.com/lobby/facebookLogin.aspx"; lobby.forgetPasswordURL = "http://mmo.fupa.com/lobby/forgetPassword.aspx"; lobby.gameDescription = ""; lobby.gameDescriptionFlashVars = "gameDescription"; lobby.gameID = "2"; lobby.gameIDFlashVars = "gameID"; lobby.gameName = ""; lobby.gameNameFlashVars = "gameName"; lobby.gamePictureURL = ""; lobby.gamePictureURLFlashVars = "gamePictureURL"; lobby.guestName = "Guest"; lobby.hashKey = "kbq8q7gfgb1uyi2n2cn09389znznk1qpeiopqie90198bcajkb98cx897hwjknmz"; lobby.lobbyDefaultFilter = "world"; lobby.lobbyType = "normal"; lobby.lobbyURLGetGameInfo = "http://mmo.fupa.com/lobby/getGameInfo.aspx"; lobby.lobbyURLGetMessages = "http://mmo.fupa.com/lobby/getMessages.aspx"; lobby.lobbyURLJoinRoom = "http://mmo.fupa.com/lobby/joinRoom.aspx"; lobby.lobbyURLSendMessages = "http://mmo.fupa.com/lobby/sendMessages.aspx"; lobby.playerFacebookFriendIDsFlashVars = "playerFacebookFriendIDs"; lobby.playerFacebookUserIDFlashVars = "playerFacebookUserID"; lobby.playerFacebookUserNameFlashVars = "playerFacebookUserName"; lobby.playerFacebookUserPictureFlashVars = "playerFacebookUserPicture"; lobby.playerIDFlashVars = "playerID"; lobby.playerNameFlashVars = "playerName"; lobby.playerPictureURLFlashVars = "playerPictureURL"; lobby.possibleNoOfPlayers = [2]; lobby.registerURL = "http://mmo.fupa.com/lobby/register.aspx"; lobby.robotName = ""; lobby.robotNameFlashVars = "robotName"; lobby.roomInsideScrollDistance = 100; lobby.roomInsideScrollSpeed = 600; lobby.savePictureURL = "http://mmo.fupa.com/lobby/savePicture.aspx"; lobby.shareFacebookURL = "http://mmo.fupa.com/lobby/shareFacebook.aspx"; lobby.shareMySpaceURL = "http://mmo.fupa.com/lobby/shareMySpace.aspx"; lobby.shareSendEmailURL = "http://mmo.fupa.com/lobby/shareSendEmail.aspx"; lobby.shareShowFacebook = false; lobby.shareShowMySpace = false; lobby.shareShowSendEmail = false; lobby.shareShowTwitter = false; lobby.shareTwitterURL = "http://mmo.fupa.com/lobby/shareTwitter.aspx"; lobby.shareURL = ""; lobby.siteID = "1"; lobby.siteIDFlashVars = "siteID"; lobby.tableIDFlashVars = "tableID"; lobby.tableNoOfPlayersFlashVars = "tableNoOfPlayers"; lobby.tableNoOfRobotsFlashVars = "tableNoOfRobots"; lobby.tablePlayerNamesFlashVars = "tablePlayerNames"; lobby.visible = true; try { lobby["componentInspectorSetting"] = false; } catch(e:Error) { }; } function frame1(){ AD_ID = "c992318ee36af551"; MochiAd.showPreGameAd({id:AD_ID, clip:root, ad_finished:start, res:"600x430"}); MochiBot.track(this, "0786a80a"); stop(); lobby.gameID = "90566"; lobby.lobbyType = "autoMatch"; swfname = "snowball_mp.swf"; swfheight = "430"; swfwidth = "600"; embedcode = (((((((((((("<object width=\"" + this.swfwidth) + "\" height=\"") + this.swfheight) + "\"><param name=\"movie\" value=\"http://www.fupa.com/games/") + this.swfname) + "\"></param><param name=\"wmode\" value=\"transparent\"></param><embed src=\"http://www.fupa.com/games/") + this.swfname) + "\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"") + this.swfwidth) + "\" height=\"") + this.swfheight) + "\"></embed></object>"); textbox.htmlText = (textbox.htmlText + "<br/><br/><a href=\"http://www.fupa.com/\">Free Online Games</a> - Play over 8000 free games online including flash games , internet games , family friendly games , and all free games.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Puzzles.html\">Free Online Puzzles Games</a> - Play over 2000 free puzzle games online including internet games , flash games, all free games, and family friendly games.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Dress-Up.html\">Free Online Dress Up Games</a> - Play over 1300 free dressup games online where you can dress up with all kinds of clothes, dolls, sunglasses, hats, bags and more in these fun online games!<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Strategy.html\">Free Online Strategy Games</a> - Play over 140 free strategy games online where you can play all kinds of tower defense games and other strategy games to test your metal!<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Word.html\">Free Online Word Games</a> - Play over 40 free word games online for people who love their word and letter games for free online. Get out your dictionary and get your word on!<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Cards.html\">Free Online Cards Games</a> - Play over 50 free card games online including Texas Holdem, Freecell, solitaire, and many more card games.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Action.html\">Free Online Action Games</a> - Play over 1200 free action games online where you can compete against other people for the best action game high score online.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Adventure.html\">Free Online Adventure Games</a> - Play over 200 free adventure games online for fun adventures that the whole family will love playing free games on the internet.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/BoardGame.html\">Free Online Board Games</a> - Play over 60 free board games online like checkers, chess, chinese checkers and other such classic board games for free fun.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Shooting.html\">Free Online Shooting Games</a> - Play over 900 free shooting games online to get your fun time playing flash games online the internet for free.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Driving.html\">Free Online Driving Games</a> - Play over 120 free driving games online where you can play racing games, motocross games, big truck games, and all kinds of car games.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Sports.html\">Free Online Sports Games</a> - Play over 450 free sports games online including football games, basketball games, pool games, baseball games, and other fun sports games.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Memory.html\">Free Online Memory Games</a> - Play over 60 free memory games online to improve your memory and have fun playing flash games for free on the internet.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Casino.html\">Free Online Casino Games</a> - Play over 50 free casino games online where you can play slots, poker, roulette and many more fun free casino games online.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Fighting.html\">Free Online Fighting Games</a> - Play over 100 free fighting games online including fun flash games, two person games, and classic fighting games for free online.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Other.html\">Free Online Other Games</a> - Play over 1200 free other games online where all of the other games that do not fit in other game categories go to live and have fun.<br/><br/>"); textbox.htmlText = (textbox.htmlText + "<a href=\"http://www.fupa.com/flash-games/Multiplayer.html\">Free Online Multiplayer Games</a> - Play over 100 free multiplayer games online to compete against other people in multiplayer flash online games for fun on the internet."); FupaBar.bar_frame.width = stage.stageWidth; FupaBar.bar_frame.x = -((FupaBar.bar_frame.width / 2)); FupaBar.logo.x = -(((FupaBar.bar_frame.width / 2) - 10)); FupaBar.control_buttons.x = ((FupaBar.bar_frame.width / 2) - (FupaBar.control_buttons.width + 10)); FupaBar.x = (stage.stageWidth / 2); FupaBar.y = (stage.stageHeight - (FupaBar.height / 2)); FupaBar.mouseChildren = false; FupaBar.mouseEnabled = false; Security.allowDomain("cdn.gigya.com"); Security.allowInsecureDomain("cdn.gigya.com"); wfAlreadyLoaded = false; mcWF = new MovieClip(); FupaBar.logo.addEventListener(MouseEvent.CLICK, loadFupa); FupaBar.control_buttons.embed.addEventListener(MouseEvent.CLICK, loadEmbed); FupaBar.control_buttons.nextbtn.addEventListener(MouseEvent.CLICK, loadNext); FupaBar.control_buttons.share.addEventListener(MouseEvent.CLICK, loadWildfire); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 88
//Message (com.novelgames.multiplayerflashgames.snowball.Message) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.events.*; public class Message extends MovieClip { private var messagePlayAgain:MessagePlayAgain; public function Message(){ hide(); } public function hide():void{ gotoAndStop("hide"); } public function showNewGame():void{ gotoAndStop("newGame"); } public function showThrowToCentre():void{ gotoAndStop("throwToCentre"); } public function showCloser():void{ gotoAndStop("closer"); } public function showOpponentCloser():void{ gotoAndStop("opponentCloser"); } public function showWaiting():void{ gotoAndStop("waiting"); } public function showFirst():void{ gotoAndStop("first"); } public function showOpponentFirst():void{ gotoAndStop("opponentFirst"); } public function showTimesUp():void{ gotoAndStop("timesUp"); } public function showOpponentTimesUp():void{ gotoAndStop("opponentTimesUp"); } public function showBothTimesUp():void{ gotoAndStop("bothTimesUp"); } public function showDisconnected():void{ gotoAndStop("disconnected"); } public function showOpponentDisconnected():void{ gotoAndStop("opponentDisconnected"); } public function showWin():void{ gotoAndStop("win"); } public function showLose():void{ gotoAndStop("lose"); } public function showPlayAgain():void{ messagePlayAgain = new MessagePlayAgain(); messagePlayAgain.playAgainButton.addEventListener(MouseEvent.CLICK, onClickPlayAgainButton); messagePlayAgain.homeButton.addEventListener(MouseEvent.CLICK, onClickHomeButton); this.addChild(messagePlayAgain); } public function showHome():void{ messagePlayAgain = new MessagePlayAgain(); messagePlayAgain.playAgainButton.visible = false; messagePlayAgain.homeButton.y = ((messagePlayAgain.homeButton.y + messagePlayAgain.playAgainButton.y) / 2); messagePlayAgain.homeButton.addEventListener(MouseEvent.CLICK, onClickHomeButton); this.addChild(messagePlayAgain); } private function onClickPlayAgainButton(_arg1:MouseEvent):void{ Object(parent.parent).playAgain(); } private function onClickHomeButton(_arg1:MouseEvent):void{ Object(parent.parent).gotoTitlePage(); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 89
//MessagePlayAgain (com.novelgames.multiplayerflashgames.snowball.MessagePlayAgain) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; public dynamic class MessagePlayAgain extends MovieClip { public var playAgainButton:SimpleButton; public var homeButton:SimpleButton; } }//package com.novelgames.multiplayerflashgames.snowball
Section 90
//Monster (com.novelgames.multiplayerflashgames.snowball.Monster) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.events.*; public class Monster extends MovieClip { public var hitPoint:int; protected var idleMovie:MovieClip; protected var aimMovie:MovieClip; protected var throwMovie:MovieClip; protected var handMovie:MovieClip; public function initialize():void{ hitPoint = Config.MONSTER_HITPOINT; idleMovie.gotoAndStop(((1 + Config.MONSTER_HITPOINT) - hitPoint)); aimMovie.gotoAndStop(((1 + Config.MONSTER_HITPOINT) - hitPoint)); throwMovie.gotoAndStop(((1 + Config.MONSTER_HITPOINT) - hitPoint)); gotoAndStop(1); showIdle(); } public function showIdle():void{ idleMovie.visible = true; aimMovie.visible = false; throwMovie.visible = false; idleMovie.gotoAndStop(((1 + Config.MONSTER_HITPOINT) - hitPoint)); this.removeEventListener(Event.ENTER_FRAME, checkThrowEnd); gotoAndStop(1); } public function showAim():void{ idleMovie.visible = false; aimMovie.visible = true; throwMovie.visible = false; aimMovie.gotoAndStop(((1 + Config.MONSTER_HITPOINT) - hitPoint)); showArrow(); } public function showThrow():void{ idleMovie.visible = false; aimMovie.visible = false; throwMovie.visible = true; throwMovie.gotoAndStop(((1 + Config.MONSTER_HITPOINT) - hitPoint)); } public function showArrow():void{ handMovie.showArrow(); } public function hideArrow():void{ handMovie.hideArrow(); } public function updateAngle(_arg1:Number):void{ handMovie.rotation = -(_arg1); } public function updateForce(_arg1:Number):void{ handMovie.updateForce(_arg1); } public function startThrow():void{ showAim(); hideArrow(); this.addEventListener(Event.ENTER_FRAME, checkAimEnd); gotoAndPlay(1); } private function checkAimEnd(_arg1:Event):void{ if (currentFrame != totalFrames){ return; }; this.removeEventListener(Event.ENTER_FRAME, checkAimEnd); this.addEventListener(Event.ENTER_FRAME, checkThrowEnd); gotoAndPlay(1); showThrow(); } private function checkThrowEnd(_arg1:Event):void{ if (currentFrame != totalFrames){ return; }; this.removeEventListener(Event.ENTER_FRAME, checkThrowEnd); gotoAndStop(1); showIdle(); } public function hit():void{ hitPoint--; showIdle(); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 91
//Monster0 (com.novelgames.multiplayerflashgames.snowball.Monster0) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; public class Monster0 extends Monster { public var idle:MovieClip; public var hitBox:MovieClip; public var throws:MovieClip; public var hand:MonsterHand; public var aim:MovieClip; public function Monster0(){ idleMovie = idle; aimMovie = aim; throwMovie = throws; handMovie = hand; showIdle(); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 92
//Monster0HandMovie (com.novelgames.multiplayerflashgames.snowball.Monster0HandMovie) package com.novelgames.multiplayerflashgames.snowball { public dynamic class Monster0HandMovie extends MonsterHand { } }//package com.novelgames.multiplayerflashgames.snowball
Section 93
//Monster1 (com.novelgames.multiplayerflashgames.snowball.Monster1) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; public class Monster1 extends Monster { public var idle:MovieClip; public var hitBox:MovieClip; public var throws:MovieClip; public var hand:MonsterHand; public var aim:MovieClip; public function Monster1(){ idleMovie = idle; aimMovie = aim; throwMovie = throws; handMovie = hand; showIdle(); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 94
//Monster1HandMovie (com.novelgames.multiplayerflashgames.snowball.Monster1HandMovie) package com.novelgames.multiplayerflashgames.snowball { public dynamic class Monster1HandMovie extends MonsterHand { } }//package com.novelgames.multiplayerflashgames.snowball
Section 95
//MonsterHand (com.novelgames.multiplayerflashgames.snowball.MonsterHand) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; public class MonsterHand extends MovieClip { var arrow:ThrowArrow; public function MonsterHand(){ gotoAndStop(1); } public function showArrow():void{ if (arrow != null){ return; }; arrow = new ThrowArrow(); arrow.x = Config.THROWARROW_POSITIONOFFSET; arrow.scaleX = -1; this.addChild(arrow); } public function hideArrow():void{ if (arrow == null){ return; }; this.removeChild(arrow); arrow = null; } public function updateForce(_arg1:Number):void{ arrow.updateForce(_arg1); } public function showIdle():void{ gotoAndStop(totalFrames); } public function showAim():void{ gotoAndStop(1); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 96
//MusicGame (com.novelgames.multiplayerflashgames.snowball.MusicGame) package com.novelgames.multiplayerflashgames.snowball { import com.novelgames.multiplayerflashgames.common.*; public dynamic class MusicGame extends NewMusic { } }//package com.novelgames.multiplayerflashgames.snowball
Section 97
//PlayerStatus (com.novelgames.multiplayerflashgames.snowball.PlayerStatus) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.text.*; import com.novelgames.multiplayerflashgames.common.*; public class PlayerStatus { private var youTextMovie:MovieClip; private var nameText:TextField; private var distanceMarker:DistanceMarker; private var clock:Clock; public function initialize(_arg1:MovieClip, _arg2:TextField, _arg3:DistanceMarker, _arg4:Clock):void{ this.youTextMovie = _arg1; this.nameText = _arg2; this.distanceMarker = _arg3; this.clock = _arg4; showInactive(); } public function setName(_arg1:Array, _arg2:int, _arg3:int):void{ nameText.text = _arg1[_arg2].name; if (_arg2 == _arg3){ youTextMovie.visible = true; nameText.visible = false; } else { youTextMovie.visible = false; nameText.visible = true; }; } public function showDistance(_arg1:Number, _arg2:Number):void{ distanceMarker.showDistance(_arg1, _arg2); } public function hideDistance():void{ distanceMarker.hide(); } public function fadeDistance(_arg1:Number):void{ distanceMarker.alpha = _arg1; } public function startClock(_arg1:int):void{ clock.startClock(_arg1); } public function stopClock():void{ clock.stopClock(); } public function showActive():void{ youTextMovie.alpha = 1; nameText.alpha = 1; } public function showInactive():void{ youTextMovie.alpha = 0.5; nameText.alpha = 0.5; } } }//package com.novelgames.multiplayerflashgames.snowball
Section 98
//Robot (com.novelgames.multiplayerflashgames.snowball.Robot) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.events.*; import com.novelgames.multiplayerflashgames.common.*; public class Robot extends MovieClip { private var selfIndex:int; private var randomNumberGenerator:RandomNumberGenerator; private var game:Game; private var angle:Number; private var speed:Number; private var timer:NewTimer; public function Robot(_arg1:int, _arg2:int, _arg3:Game){ this.selfIndex = _arg1; this.randomNumberGenerator = new RandomNumberGenerator(_arg2); this.game = _arg3; } public function syncAllPlayersReady():void{ game.robotSendSynchronizeMessage(selfIndex, "allPlayersReady"); } public function startThrowToCentre():void{ var _local1:Number = (Math.abs((game.monstersArray[selfIndex].x - (Config.GAMESTAGE_WIDTH / 2))) / Config.PIXELSPERMETRE); angle = Config.ROBOT_NORMTHROWANGLE; angle = (angle + (Config.ROBOT_ANGLEERROR - ((randomNumberGenerator.getRandomNumber() * Config.ROBOT_ANGLEERROR) * 2))); if (angle < Config.THROWARROW_ANGLE_RANGE[0]){ angle = Config.THROWARROW_ANGLE_RANGE[0]; } else { if (angle > Config.THROWARROW_ANGLE_RANGE[1]){ angle = Config.THROWARROW_ANGLE_RANGE[1]; }; }; speed = Math.sqrt((((_local1 * 0.5) * Config.GRAVITY) / (Math.cos(((angle * Math.PI) / 180)) * Math.sin(((angle * Math.PI) / 180))))); speed = (speed - game.windSpeed); speed = (speed + (Config.ROBOT_FORCEERROR - ((randomNumberGenerator.getRandomNumber() * Config.ROBOT_FORCEERROR) * 2))); game.robotSendMessage(selfIndex, "startThrowSnowball", angle, speed); } public function startTurn():void{ var _local2:int; var _local3:int; var _local4:int; var _local1:Number = (Math.abs((game.monstersArray[0].x - game.monstersArray[1].x)) / Config.PIXELSPERMETRE); angle = Config.ROBOT_NORMTHROWANGLE; angle = (angle + (Config.ROBOT_ANGLEERROR - ((randomNumberGenerator.getRandomNumber() * Config.ROBOT_ANGLEERROR) * 2))); if (angle < Config.THROWARROW_ANGLE_RANGE[0]){ angle = Config.THROWARROW_ANGLE_RANGE[0]; } else { if (angle > Config.THROWARROW_ANGLE_RANGE[1]){ angle = Config.THROWARROW_ANGLE_RANGE[1]; }; }; speed = Math.sqrt((((_local1 * 0.5) * Config.GRAVITY) / (Math.cos(((angle * Math.PI) / 180)) * Math.sin(((angle * Math.PI) / 180))))); speed = (speed - game.windSpeed); speed = (speed + (Config.ROBOT_FORCEERROR - ((randomNumberGenerator.getRandomNumber() * Config.ROBOT_FORCEERROR) * 2))); if (speed < Config.THROWARROW_FORCE_RANGE[0]){ speed = Config.THROWARROW_FORCE_RANGE[0]; } else { if (speed > Config.THROWARROW_FORCE_RANGE[1]){ speed = Config.THROWARROW_FORCE_RANGE[1]; }; }; _local3 = Config.ROBOT_AIMTIMERANGE[0]; _local4 = Config.ROBOT_AIMTIMERANGE[1]; _local2 = (_local3 + Math.floor((randomNumberGenerator.getRandomNumber() * (_local4 - _local3)))); timer = new NewTimer(_local2, 1); timer.addEventListener(TimerEvent.TIMER, startThrow); timer.start(); } private function startThrow(_arg1:TimerEvent):void{ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, startThrow); game.robotSendMessage(selfIndex, "startThrowSnowball", angle, speed); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 99
//Snowball (com.novelgames.multiplayerflashgames.snowball.Snowball) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.geom.*; public class Snowball extends MovieClip { public var angle:Number; public var force:Number; public var speedX:Number; public var speedY:Number; public var accX:Number; public var accY:Number; private var mass:Number; private var startX:Number; private var startY:Number; public var timeSinceStart:Number; public function Snowball(){ initialize(); } public function initialize():void{ mass = Config.SNOWBALL_MASS; } public function show():void{ visible = true; } public function hide():void{ visible = false; } public function setAngle(_arg1:Number):void{ this.angle = _arg1; } public function setForce(_arg1:Number):void{ this.force = _arg1; } public function findInitialSpeed(_arg1:Number):void{ speedX = (_arg1 + ((Math.cos(((angle * Math.PI) / 180)) * force) / mass)); speedY = ((-(Math.sin(((angle * Math.PI) / 180))) * force) / mass); accX = 0; accY = Config.GRAVITY; startX = x; startY = y; timeSinceStart = 0; } public function flight(_arg1:Number, _arg2:Number, _arg3:int, _arg4:int):void{ var _local5:Number = (_arg4 / 1000); timeSinceStart = (timeSinceStart + (_arg4 / 1000)); x = (startX + (Config.PIXELSPERMETRE * (speedX * timeSinceStart))); y = (startY + (Config.PIXELSPERMETRE * ((speedY * timeSinceStart) + (((0.5 * _arg1) * timeSinceStart) * timeSinceStart)))); } public function getPositionAtTime(_arg1:int):Point{ var _local2:Point; var _local3:Number; var _local4:Number; var _local5:Number = (_arg1 / 1000); _local3 = (startX + (Config.PIXELSPERMETRE * ((speedX * _local5) + (((0.5 * accX) * _local5) * _local5)))); _local4 = (startY + (Config.PIXELSPERMETRE * ((speedY * _local5) + (((0.5 * accY) * _local5) * _local5)))); return (new Point(_local3, _local4)); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 100
//SoundHit (com.novelgames.multiplayerflashgames.snowball.SoundHit) package com.novelgames.multiplayerflashgames.snowball { import com.novelgames.multiplayerflashgames.common.*; public dynamic class SoundHit extends NewSound { } }//package com.novelgames.multiplayerflashgames.snowball
Section 101
//SoundLose (com.novelgames.multiplayerflashgames.snowball.SoundLose) package com.novelgames.multiplayerflashgames.snowball { import com.novelgames.multiplayerflashgames.common.*; public dynamic class SoundLose extends NewSound { } }//package com.novelgames.multiplayerflashgames.snowball
Section 102
//SoundMiss (com.novelgames.multiplayerflashgames.snowball.SoundMiss) package com.novelgames.multiplayerflashgames.snowball { import com.novelgames.multiplayerflashgames.common.*; public dynamic class SoundMiss extends NewSound { } }//package com.novelgames.multiplayerflashgames.snowball
Section 103
//SoundThrow (com.novelgames.multiplayerflashgames.snowball.SoundThrow) package com.novelgames.multiplayerflashgames.snowball { import com.novelgames.multiplayerflashgames.common.*; public dynamic class SoundThrow extends NewSound { } }//package com.novelgames.multiplayerflashgames.snowball
Section 104
//SoundWin (com.novelgames.multiplayerflashgames.snowball.SoundWin) package com.novelgames.multiplayerflashgames.snowball { import com.novelgames.multiplayerflashgames.common.*; public dynamic class SoundWin extends NewSound { } }//package com.novelgames.multiplayerflashgames.snowball
Section 105
//Spark (com.novelgames.multiplayerflashgames.snowball.Spark) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; public class Spark extends MovieClip { public function Spark(){ stop(); this["cacheAsBitmap"] = true; } public function hide():void{ visible = false; } public function showMiss(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; this.visible = true; this.alpha = 1; gotoAndStop("miss"); } public function showHit(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; this.visible = true; this.alpha = 1; gotoAndStop("hit"); } public function fadeOut(_arg1:Number):void{ alpha = (1 - _arg1); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 106
//ThrowArrow (com.novelgames.multiplayerflashgames.snowball.ThrowArrow) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; public class ThrowArrow extends MovieClip { public var arrowMask:MovieClip; public function ThrowArrow(){ arrowMask.x = 0; } public function show():void{ visible = true; } public function hide():void{ visible = false; } public function updateForce(_arg1:Number):void{ var _local2:Number = Config.THROWARROW_FORCE_RANGE[0]; var _local3:Number = Config.THROWARROW_FORCE_RANGE[1]; var _local4:Number = (_local3 - _local2); var _local5:Number = ((_arg1 - _local2) / _local4); arrowMask.x = (-(_local5) * arrowMask.width); } } }//package com.novelgames.multiplayerflashgames.snowball
Section 107
//WindMeter (com.novelgames.multiplayerflashgames.snowball.WindMeter) package com.novelgames.multiplayerflashgames.snowball { import flash.display.*; import flash.events.*; import com.novelgames.multiplayerflashgames.common.*; import flash.utils.*; public class WindMeter extends MovieClip { public var cups:MovieClip; public var hitBox:MovieClip; public var arrow:MovieClip; private var speed:Number; private var absSpeed:Number; private var startRotation:Number; private var startSpeed:Number; private var absStartSpeed:Number; private var startCupsTime:Number; private var startArrowTime:Number; private var cupsIntervalID:Timer; private var arrowIntervalID:Timer; public function initialize():void{ speed = 0; absSpeed = 0; arrow.scaleX = 1; } public function setWind(_arg1:Number):void{ startRotation = cups.rotation; startSpeed = speed; absStartSpeed = absSpeed; startCupsTime = NewTimer.getTimer(); startArrowTime = startCupsTime; speed = ((Config.WINDMETER_MAXSPINSPEED * _arg1) / Config.WINDSPEED_MAXIMUM); absSpeed = Math.abs(speed); if (cupsIntervalID){ cupsIntervalID.stop(); }; cupsIntervalID = new NewTimer(1, 0); cupsIntervalID.addEventListener(TimerEvent.TIMER, onCupsChangeTime); cupsIntervalID.start(); if ((((((startSpeed >= 0)) && ((speed < 0)))) || ((((startSpeed < 0)) && ((speed >= 0)))))){ if (arrowIntervalID){ arrowIntervalID.stop(); }; arrowIntervalID = new NewTimer(1, 0); arrowIntervalID.addEventListener(TimerEvent.TIMER, onArrowChangeTime); arrowIntervalID.start(); }; } private function onCupsChangeTime(_arg1:TimerEvent):void{ var _local2:Number = NewTimer.getTimer(); var _local3:Number = (_local2 - startCupsTime); var _local4:Boolean; if (absSpeed >= absStartSpeed){ cups.rotation = ((startRotation + ((absStartSpeed * _local3) / 1000)) + (((Config.WINDMETER_SPINACCELERATION * _local3) * _local3) / 2000000)); if ((absStartSpeed + ((Config.WINDMETER_SPINACCELERATION * _local3) / 1000)) >= absSpeed){ _local4 = true; }; } else { cups.rotation = ((startRotation + ((absStartSpeed * _local3) / 1000)) - (((Config.WINDMETER_SPINACCELERATION * _local3) * _local3) / 2000000)); if ((absStartSpeed - ((Config.WINDMETER_SPINACCELERATION * _local3) / 1000)) <= absSpeed){ _local4 = true; }; }; if (_local4){ startRotation = cups.rotation; startCupsTime = _local2; cupsIntervalID.stop(); cupsIntervalID = new NewTimer(1, 0); cupsIntervalID.addEventListener(TimerEvent.TIMER, onCupsTime); cupsIntervalID.start(); }; _arg1.updateAfterEvent(); } private function onCupsTime(_arg1:TimerEvent):void{ var _local2:Number = NewTimer.getTimer(); cups.rotation = (startRotation + ((absSpeed * (_local2 - startCupsTime)) / 1000)); _arg1.updateAfterEvent(); } private function onArrowChangeTime(_arg1:TimerEvent):void{ var _local2:Number = NewTimer.getTimer(); var _local3:Number = ((_local2 - startArrowTime) / Config.WINDMETER_ARROWTIME); if (_local3 > 1){ _local3 = 1; }; if ((((startSpeed >= 0)) && ((speed < 0)))){ arrow.scaleX = (1 - (2 * _local3)); } else { arrow.scaleX = (-1 + (2 * _local3)); }; if (_local3 == 1){ arrowIntervalID.stop(); }; _arg1.updateAfterEvent(); } public function show():void{ visible = true; } public function hide():void{ visible = false; } } }//package com.novelgames.multiplayerflashgames.snowball
Section 108
//BaseButton (fl.controls.BaseButton) package fl.controls { import flash.display.*; import flash.events.*; import fl.core.*; import flash.utils.*; import fl.events.*; public class BaseButton extends UIComponent { protected var pressTimer:Timer; protected var _autoRepeat:Boolean;// = false protected var _selected:Boolean;// = false protected var background:DisplayObject; private var unlockedMouseState:String; protected var mouseState:String; private var _mouseStateLocked:Boolean;// = false private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35}; public function BaseButton(){ buttonMode = true; mouseChildren = false; useHandCursor = false; setupMouseEvents(); setMouseState("up"); pressTimer = new Timer(1, 0); pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true); } override public function get enabled():Boolean{ return (super.enabled); } protected function startPress():void{ if (_autoRepeat){ pressTimer.delay = Number(getStyleValue("repeatDelay")); pressTimer.start(); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function drawLayout():void{ background.width = width; background.height = height; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseEnabled = _arg1; } public function set autoRepeat(_arg1:Boolean):void{ _autoRepeat = _arg1; } protected function mouseEventHandler(_arg1:MouseEvent):void{ if (_arg1.type == MouseEvent.MOUSE_DOWN){ setMouseState("down"); startPress(); } else { if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){ setMouseState("over"); endPress(); } else { if (_arg1.type == MouseEvent.ROLL_OUT){ setMouseState("up"); endPress(); }; }; }; } protected function drawBackground():void{ var _local1:String = (enabled) ? mouseState : "disabled"; if (selected){ _local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1)); }; _local1 = (_local1 + "Skin"); var _local2:DisplayObject = background; background = getDisplayObjectInstance(getStyleValue(_local1)); addChildAt(background, 0); if (((!((_local2 == null))) && (!((_local2 == background))))){ removeChild(_local2); }; } public function get selected():Boolean{ return (_selected); } protected function setupMouseEvents():void{ addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true); } protected function endPress():void{ pressTimer.reset(); } public function set mouseStateLocked(_arg1:Boolean):void{ _mouseStateLocked = _arg1; if (_arg1 == false){ setMouseState(unlockedMouseState); } else { unlockedMouseState = mouseState; }; } public function get autoRepeat():Boolean{ return (_autoRepeat); } public function set selected(_arg1:Boolean):void{ if (_selected == _arg1){ return; }; _selected = _arg1; invalidate(InvalidationType.STATE); } protected function buttonDown(_arg1:TimerEvent):void{ if (!_autoRepeat){ endPress(); return; }; if (pressTimer.currentCount == 1){ pressTimer.delay = Number(getStyleValue("repeatInterval")); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } public function setMouseState(_arg1:String):void{ if (_mouseStateLocked){ unlockedMouseState = _arg1; return; }; if (mouseState == _arg1){ return; }; mouseState = _arg1; invalidate(InvalidationType.STATE); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 109
//Button (fl.controls.Button) package fl.controls { import flash.display.*; import fl.core.*; import fl.managers.*; public class Button extends LabelButton implements IFocusManagerComponent { protected var _emphasized:Boolean;// = false protected var emphasizedBorder:DisplayObject; private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2}; public static var createAccessibilityImplementation:Function; public function set emphasized(_arg1:Boolean):void{ _emphasized = _arg1; invalidate(InvalidationType.STYLES); } override protected function initializeAccessibility():void{ if (Button.createAccessibilityImplementation != null){ Button.createAccessibilityImplementation(this); }; } protected function drawEmphasized():void{ var _local2:Number; if (emphasizedBorder != null){ removeChild(emphasizedBorder); }; emphasizedBorder = null; if (!_emphasized){ return; }; var _local1:Object = getStyleValue("emphasizedSkin"); if (_local1 != null){ emphasizedBorder = getDisplayObjectInstance(_local1); }; if (emphasizedBorder != null){ addChildAt(emphasizedBorder, 0); _local2 = Number(getStyleValue("emphasizedPadding")); emphasizedBorder.x = (emphasizedBorder.y = -(_local2)); emphasizedBorder.width = (width + (_local2 * 2)); emphasizedBorder.height = (height + (_local2 * 2)); }; } public function get emphasized():Boolean{ return (_emphasized); } override protected function draw():void{ if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){ drawEmphasized(); }; super.draw(); if (emphasizedBorder != null){ setChildIndex(emphasizedBorder, (numChildren - 1)); }; } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; var _local3:*; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("emphasizedPadding")); if ((((_local2 < 0)) || (!(_emphasized)))){ _local2 = 0; }; _local3 = getStyleValue("focusRectPadding"); _local3 = ((_local3)==null) ? 2 : _local3; _local3 = (_local3 + _local2); uiFocusRect.x = -(_local3); uiFocusRect.y = -(_local3); uiFocusRect.width = (width + (_local3 * 2)); uiFocusRect.height = (height + (_local3 * 2)); }; } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles)); } } }//package fl.controls
Section 110
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement) package fl.controls { public class ButtonLabelPlacement { public static const TOP:String = "top"; public static const LEFT:String = "left"; public static const BOTTOM:String = "bottom"; public static const RIGHT:String = "right"; } }//package fl.controls
Section 111
//LabelButton (fl.controls.LabelButton) package fl.controls { import flash.display.*; import flash.events.*; import flash.text.*; import fl.core.*; import fl.managers.*; import fl.events.*; import flash.ui.*; public class LabelButton extends BaseButton implements IFocusManagerComponent { protected var _toggle:Boolean;// = false public var textField:TextField; protected var mode:String;// = "center" protected var _labelPlacement:String;// = "right" protected var oldMouseState:String; protected var _label:String;// = "Label" protected var icon:DisplayObject; private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false}; public static var createAccessibilityImplementation:Function; override protected function draw():void{ if (textField.text != _label){ label = _label; }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); drawIcon(); drawTextFormat(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } override protected function drawLayout():void{ var _local7:Number; var _local8:Number; var _local1:Number = Number(getStyleValue("textPadding")); var _local2:String = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement; textField.height = (textField.textHeight + 4); var _local3:Number = (textField.textWidth + 4); var _local4:Number = (textField.textHeight + 4); var _local5:Number = ((icon)==null) ? 0 : (icon.width + _local1); var _local6:Number = ((icon)==null) ? 0 : (icon.height + _local1); textField.visible = (label.length > 0); if (icon != null){ icon.x = Math.round(((width - icon.width) / 2)); icon.y = Math.round(((height - icon.height) / 2)); }; if (textField.visible == false){ textField.width = 0; textField.height = 0; } else { if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){ _local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1)))); if ((height - 2) > _local4){ _local8 = _local4; } else { _local8 = (height - 2); }; _local3 = _local7; textField.width = _local3; _local4 = _local8; textField.height = _local4; textField.x = Math.round(((width - _local3) / 2)); textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0)); if (icon != null){ icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1)); }; } else { _local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1)))); _local3 = _local7; textField.width = _local3; textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0)); textField.y = Math.round(((height - textField.height) / 2)); if (icon != null){ icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1)); }; }; }; super.drawLayout(); } protected function toggleSelected(_arg1:MouseEvent):void{ selected = !(selected); dispatchEvent(new Event(Event.CHANGE, true)); } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ setMouseState(oldMouseState); oldMouseState = null; endPress(); dispatchEvent(new MouseEvent(MouseEvent.CLICK)); }; } public function get labelPlacement():String{ return (_labelPlacement); } public function get toggle():Boolean{ return (_toggle); } protected function setEmbedFont(){ var _local1:Object = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } override public function get selected():Boolean{ return ((_toggle) ? _selected : false); } override protected function configUI():void{ super.configUI(); textField = new TextField(); textField.type = TextFieldType.DYNAMIC; textField.selectable = false; addChild(textField); } override protected function initializeAccessibility():void{ if (LabelButton.createAccessibilityImplementation != null){ LabelButton.createAccessibilityImplementation(this); }; } public function set labelPlacement(_arg1:String):void{ _labelPlacement = _arg1; invalidate(InvalidationType.SIZE); } protected function drawIcon():void{ var _local1:DisplayObject = icon; var _local2:String = (enabled) ? mouseState : "disabled"; if (selected){ _local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1)); }; _local2 = (_local2 + "Icon"); var _local3:Object = getStyleValue(_local2); if (_local3 == null){ _local3 = getStyleValue("icon"); }; if (_local3 != null){ icon = getDisplayObjectInstance(_local3); }; if (icon != null){ addChildAt(icon, 1); }; if (((!((_local1 == null))) && (!((_local1 == icon))))){ removeChild(_local1); }; } public function set label(_arg1:String):void{ _label = _arg1; if (textField.text != _label){ textField.text = _label; dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE)); }; invalidate(InvalidationType.SIZE); invalidate(InvalidationType.STYLES); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ if (oldMouseState == null){ oldMouseState = mouseState; }; setMouseState("down"); startPress(); }; } public function set toggle(_arg1:Boolean):void{ if (((!(_arg1)) && (super.selected))){ selected = false; }; _toggle = _arg1; if (_toggle){ addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true); } else { removeEventListener(MouseEvent.CLICK, toggleSelected); }; invalidate(InvalidationType.STATE); } override public function set selected(_arg1:Boolean):void{ _selected = _arg1; if (_toggle){ invalidate(InvalidationType.STATE); }; } protected function drawTextFormat():void{ var _local1:Object = UIComponent.getStyleDefinition(); var _local2:TextFormat = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); var _local3:TextFormat = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); } public function get label():String{ return (_label); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition())); } } }//package fl.controls
Section 112
//ComponentShim (fl.core.ComponentShim) package fl.core { import flash.display.*; public dynamic class ComponentShim extends MovieClip { } }//package fl.core
Section 113
//InvalidationType (fl.core.InvalidationType) package fl.core { public class InvalidationType { public static const SIZE:String = "size"; public static const ALL:String = "all"; public static const DATA:String = "data"; public static const SCROLL:String = "scroll"; public static const STATE:String = "state"; public static const STYLES:String = "styles"; public static const SELECTED:String = "selected"; public static const RENDERER_STYLES:String = "rendererStyles"; } }//package fl.core
Section 114
//UIComponent (fl.core.UIComponent) package fl.core { import flash.display.*; import flash.events.*; import flash.text.*; import flash.utils.*; import fl.managers.*; import fl.events.*; import flash.system.*; public class UIComponent extends Sprite { protected var _x:Number; protected var _enabled:Boolean;// = true protected var callLaterMethods:Dictionary; private var _mouseFocusEnabled:Boolean;// = true private var tempText:TextField; private var _focusEnabled:Boolean;// = true protected var startHeight:Number; protected var _height:Number; protected var invalidateFlag:Boolean;// = false protected var _oldIMEMode:String;// = null protected var _inspector:Boolean;// = false protected var startWidth:Number; public var focusTarget:IFocusManagerComponent; protected var errorCaught:Boolean;// = false protected var invalidHash:Object; protected var sharedStyles:Object; protected var uiFocusRect:DisplayObject; protected var isLivePreview:Boolean;// = false protected var _imeMode:String;// = null protected var _width:Number; protected var instanceStyles:Object; public var version:String;// = "3.0.0.16" protected var isFocused:Boolean;// = false protected var _y:Number; public static var inCallLaterPhase:Boolean = false; private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)}; public static var createAccessibilityImplementation:Function; private static var focusManagers:Dictionary = new Dictionary(false); public function UIComponent(){ instanceStyles = {}; sharedStyles = {}; invalidHash = {}; callLaterMethods = new Dictionary(); StyleManager.registerInstance(this); configUI(); invalidate(InvalidationType.ALL); tabEnabled = (this is IFocusManagerComponent); focusRect = false; if (tabEnabled){ addEventListener(FocusEvent.FOCUS_IN, focusInHandler); addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler); addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); }; initializeFocusManager(); addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true); } public function getStyle(_arg1:String):Object{ return (instanceStyles[_arg1]); } protected function checkLivePreview():Boolean{ var className:String; if (parent == null){ return (false); }; try { className = getQualifiedClassName(parent); } catch(e:Error) { }; return ((className == "fl.livepreview::LivePreviewParent")); } private function callLaterDispatcher(_arg1:Event):void{ var _local3:Object; if (_arg1.type == Event.ADDED_TO_STAGE){ removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher); stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); return; }; _arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher); if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); return; }; inCallLaterPhase = true; var _local2:Dictionary = callLaterMethods; for (_local3 in _local2) { _local3(); delete _local2[_local3]; }; inCallLaterPhase = false; } protected function validate():void{ invalidHash = {}; } protected function focusOutHandler(_arg1:FocusEvent):void{ if (isOurFocus((_arg1.target as DisplayObject))){ drawFocus(false); isFocused = false; }; } public function set mouseFocusEnabled(_arg1:Boolean):void{ _mouseFocusEnabled = _arg1; } public function getFocus():InteractiveObject{ if (stage){ return (stage.focus); }; return (null); } override public function get height():Number{ return (_height); } private function addedHandler(_arg1:Event):void{ removeEventListener("addedToStage", addedHandler); initializeFocusManager(); } protected function getStyleValue(_arg1:String):Object{ return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]); } public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{ invalidHash[_arg1] = true; if (_arg2){ this.callLater(draw); }; } protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((_arg1 == this)); } public function get enabled():Boolean{ return (_enabled); } protected function getScaleX():Number{ return (super.scaleX); } protected function getScaleY():Number{ return (super.scaleY); } public function get focusEnabled():Boolean{ return (_focusEnabled); } protected function afterComponentParameters():void{ } override public function get scaleY():Number{ return ((height / startHeight)); } protected function setIMEMode(_arg1:Boolean){ var enabled = _arg1; if (_imeMode != null){ if (enabled){ IME.enabled = true; _oldIMEMode = IME.conversionMode; try { if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _imeMode; }; errorCaught = false; } catch(e:Error) { errorCaught = true; throw (new Error(("IME mode not supported: " + _imeMode))); }; } else { if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _oldIMEMode; }; IME.enabled = false; }; }; } protected function draw():void{ if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } override public function set height(_arg1:Number):void{ if (_height == _arg1){ return; }; setSize(width, _arg1); } protected function configUI():void{ isLivePreview = checkLivePreview(); var _local1:Number = rotation; rotation = 0; var _local2:Number = super.width; var _local3:Number = super.height; var _local4 = 1; super.scaleY = _local4; super.scaleX = _local4; setSize(_local2, _local3); move(super.x, super.y); rotation = _local1; startWidth = _local2; startHeight = _local3; if (numChildren > 0){ removeChildAt(0); }; } protected function setScaleY(_arg1:Number):void{ super.scaleY = _arg1; } override public function get scaleX():Number{ return ((width / startWidth)); } protected function setScaleX(_arg1:Number):void{ super.scaleX = _arg1; } private function initializeFocusManager():void{ if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true); } else { createFocusManager(); }; } protected function keyDownHandler(_arg1:KeyboardEvent):void{ } public function set focusManager(_arg1:IFocusManager):void{ UIComponent.focusManagers[this] = _arg1; } public function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } protected function isInvalid(_arg1:String, ... _args):Boolean{ if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){ return (true); }; while (_args.length > 0) { if (invalidHash[_args.pop()]){ return (true); }; }; return (false); } public function setStyle(_arg1:String, _arg2:Object):void{ if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; instanceStyles[_arg1] = _arg2; invalidate(InvalidationType.STYLES); } override public function get visible():Boolean{ return (super.visible); } protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (isOurFocus((_arg1.target as DisplayObject))){ _local2 = focusManager; if (((_local2) && (_local2.showFocusIndicator))){ drawFocus(true); isFocused = true; }; }; } public function get componentInspectorSetting():Boolean{ return (_inspector); } override public function get x():Number{ return ((isNaN(_x)) ? super.x : _x); } override public function get y():Number{ return ((isNaN(_y)) ? super.y : _y); } public function set enabled(_arg1:Boolean):void{ if (_arg1 == _enabled){ return; }; _enabled = _arg1; invalidate(InvalidationType.STATE); } public function setSize(_arg1:Number, _arg2:Number):void{ _width = _arg1; _height = _arg2; invalidate(InvalidationType.SIZE); dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false)); } protected function keyUpHandler(_arg1:KeyboardEvent):void{ } public function setSharedStyle(_arg1:String, _arg2:Object):void{ if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; sharedStyles[_arg1] = _arg2; if (instanceStyles[_arg1] == null){ invalidate(InvalidationType.STYLES); }; } public function set focusEnabled(_arg1:Boolean):void{ _focusEnabled = _arg1; } override public function set width(_arg1:Number):void{ if (_width == _arg1){ return; }; setSize(_arg1, height); } public function setFocus():void{ if (stage){ stage.focus = this; }; } override public function set scaleX(_arg1:Number):void{ setSize((startWidth * _arg1), height); } public function get mouseFocusEnabled():Boolean{ return (_mouseFocusEnabled); } override public function set scaleY(_arg1:Number):void{ setSize(width, (startHeight * _arg1)); } protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{ var skin = _arg1; var classDef:Object; if ((skin is Class)){ return ((new (skin) as DisplayObject)); }; if ((skin is DisplayObject)){ (skin as DisplayObject).x = 0; (skin as DisplayObject).y = 0; return ((skin as DisplayObject)); }; try { classDef = getDefinitionByName(skin.toString()); } catch(e:Error) { try { classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object); } catch(e:Error) { }; }; if (classDef == null){ return (null); }; return ((new (classDef) as DisplayObject)); } protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{ var _local3:String; for (_local3 in _arg2) { _arg1.setStyle(_local3, getStyleValue(_arg2[_local3])); }; } protected function initializeAccessibility():void{ if (UIComponent.createAccessibilityImplementation != null){ UIComponent.createAccessibilityImplementation(this); }; } public function get focusManager():IFocusManager{ var _local1:DisplayObject = this; while (_local1) { if (UIComponent.focusManagers[_local1] != null){ return (IFocusManager(UIComponent.focusManagers[_local1])); }; _local1 = _local1.parent; }; return (null); } override public function get width():Number{ return (_width); } protected function beforeComponentParameters():void{ } protected function callLater(_arg1:Function):void{ if (inCallLaterPhase){ return; }; callLaterMethods[_arg1] = true; if (stage != null){ stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); } else { addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); }; } public function move(_arg1:Number, _arg2:Number):void{ _x = _arg1; _y = _arg2; super.x = Math.round(_arg1); super.y = Math.round(_arg2); dispatchEvent(new ComponentEvent(ComponentEvent.MOVE)); } public function validateNow():void{ invalidate(InvalidationType.ALL, false); draw(); } override public function set visible(_arg1:Boolean):void{ if (super.visible == _arg1){ return; }; super.visible = _arg1; var _local2:String = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE; dispatchEvent(new ComponentEvent(_local2, true)); } protected function createFocusManager():void{ if (focusManagers[stage] == null){ focusManagers[stage] = new FocusManager(stage); }; } protected function hookAccessibility(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, hookAccessibility); initializeAccessibility(); } public function set componentInspectorSetting(_arg1:Boolean):void{ _inspector = _arg1; if (_inspector){ beforeComponentParameters(); } else { afterComponentParameters(); }; } override public function set y(_arg1:Number):void{ move(_x, _arg1); } public function drawFocus(_arg1:Boolean):void{ var _local2:Number; isFocused = _arg1; if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){ removeChild(uiFocusRect); uiFocusRect = null; }; if (_arg1){ uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite); if (uiFocusRect == null){ return; }; _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = -(_local2); uiFocusRect.y = -(_local2); uiFocusRect.width = (width + (_local2 * 2)); uiFocusRect.height = (height + (_local2 * 2)); addChildAt(uiFocusRect, 0); }; } override public function set x(_arg1:Number):void{ move(_arg1, _y); } public function drawNow():void{ draw(); } public static function getStyleDefinition():Object{ return (defaultStyles); } public static function mergeStyles(... _args):Object{ var _local5:Object; var _local6:String; var _local2:Object = {}; var _local3:uint = _args.length; var _local4:uint; while (_local4 < _local3) { _local5 = _args[_local4]; for (_local6 in _local5) { if (_local2[_local6] != null){ } else { _local2[_local6] = _args[_local4][_local6]; }; }; _local4++; }; return (_local2); } } }//package fl.core
Section 115
//ComponentEvent (fl.events.ComponentEvent) package fl.events { import flash.events.*; public class ComponentEvent extends Event { public static const HIDE:String = "hide"; public static const BUTTON_DOWN:String = "buttonDown"; public static const MOVE:String = "move"; public static const RESIZE:String = "resize"; public static const ENTER:String = "enter"; public static const LABEL_CHANGE:String = "labelChange"; public static const SHOW:String = "show"; public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return (formatToString("ComponentEvent", "type", "bubbles", "cancelable")); } override public function clone():Event{ return (new ComponentEvent(type, bubbles, cancelable)); } } }//package fl.events
Section 116
//FocusManager (fl.managers.FocusManager) package fl.managers { import fl.controls.*; import flash.display.*; import flash.events.*; import flash.text.*; import fl.core.*; import flash.utils.*; import flash.ui.*; public class FocusManager implements IFocusManager { private var focusableObjects:Dictionary; private var _showFocusIndicator:Boolean;// = true private var defButton:Button; private var focusableCandidates:Array; private var _form:DisplayObjectContainer; private var _defaultButtonEnabled:Boolean;// = true private var activated:Boolean;// = false private var _defaultButton:Button; private var calculateCandidates:Boolean;// = true private var lastFocus:InteractiveObject; private var lastAction:String; public function FocusManager(_arg1:DisplayObjectContainer){ focusableObjects = new Dictionary(true); if (_arg1 != null){ _form = _arg1; addFocusables(DisplayObject(_arg1)); _arg1.addEventListener(Event.ADDED, addedHandler); _arg1.addEventListener(Event.REMOVED, removedHandler); activate(); }; } public function get showFocusIndicator():Boolean{ return (_showFocusIndicator); } private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{ var _local7:DisplayObject; var _local8:IFocusManagerGroup; var _local9:int; var _local10:DisplayObject; var _local11:IFocusManagerGroup; var _local5:int = focusableCandidates.length; var _local6:int = _arg1; while (true) { if (_arg2){ _arg1--; } else { _arg1++; }; if (_arg3){ if (((_arg2) && ((_arg1 < 0)))){ break; }; if (((!(_arg2)) && ((_arg1 == _local5)))){ break; }; } else { _arg1 = ((_arg1 + _local5) % _local5); if (_local6 == _arg1){ break; }; }; if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){ _local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1])); if ((_local7 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local7); _local9 = 0; while (_local9 < focusableCandidates.length) { _local10 = focusableCandidates[_local9]; if ((_local10 is IFocusManagerGroup)){ _local11 = IFocusManagerGroup(_local10); if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){ _arg1 = _local9; break; }; }; _local9++; }; }; return (_arg1); }; }; return (_arg1); } private function mouseFocusChangeHandler(_arg1:FocusEvent):void{ if ((_arg1.relatedObject is TextField)){ return; }; _arg1.preventDefault(); } public function set form(_arg1:DisplayObjectContainer):void{ _form = _arg1; } private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{ var focusable:IFocusManagerComponent; var io:InteractiveObject; var doc:DisplayObjectContainer; var i:int; var child:DisplayObject; var o = _arg1; var skipTopLevel = _arg2; if (!skipTopLevel){ if ((o is IFocusManagerComponent)){ focusable = IFocusManagerComponent(o); if (focusable.focusEnabled){ if (((focusable.tabEnabled) && (isTabVisible(o)))){ focusableObjects[o] = true; calculateCandidates = true; }; o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; } else { if ((o is InteractiveObject)){ io = (o as InteractiveObject); if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){ focusableObjects[io] = true; calculateCandidates = true; }; io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; }; }; if ((o is DisplayObjectContainer)){ doc = DisplayObjectContainer(o); o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){ i = 0; while (i < doc.numChildren) { try { child = doc.getChildAt(i); if (child != null){ addFocusables(doc.getChildAt(i)); }; } catch(error:SecurityError) { }; i = (i + 1); }; }; }; } private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{ return (_arg1.getChildIndex(_arg2)); } public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{ var _local2:InteractiveObject = _arg1; while (_arg1) { if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){ return (_arg1); }; _arg1 = _arg1.parent; }; return (_local2); } private function focusOutHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject = (_arg1.target as InteractiveObject); } private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{ var _local3:IFocusManagerGroup; if (!isEnabledAndVisible(_arg1)){ return (false); }; if ((_arg1 is IFocusManagerGroup)){ _local3 = IFocusManagerGroup(_arg1); if (_arg2 == _local3.groupName){ return (false); }; }; return (true); } private function setFocusToNextObject(_arg1:FocusEvent):void{ if (!hasFocusableObjects()){ return; }; var _local2:InteractiveObject = getNextFocusManagerComponent(_arg1.shiftKey); if (_local2){ setFocus(_local2); }; } private function sortFocusableObjectsTabIndex():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){ focusableCandidates.push(_local2); }; }; focusableCandidates.sort(sortByTabIndex); } private function removeFocusables(_arg1:DisplayObject):void{ var _local2:Object; var _local3:DisplayObject; if ((_arg1 is DisplayObjectContainer)){ _arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); _arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); for (_local2 in focusableObjects) { _local3 = DisplayObject(_local2); if (DisplayObjectContainer(_arg1).contains(_local3)){ if (_local3 == lastFocus){ lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local2]; calculateCandidates = true; }; }; }; } private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{ while (_arg1 != InteractiveObject(form)) { if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){ return (_arg1); }; _arg1 = _arg1.parent; if (_arg1 == null){ break; }; }; return (null); } public function sendDefaultButtonEvent():void{ defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } private function addedHandler(_arg1:Event):void{ var _local2:DisplayObject = DisplayObject(_arg1.target); if (_local2.stage){ addFocusables(DisplayObject(_arg1.target)); }; } private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{ var _local3:TextField; var _local4:SimpleButton; var _local2:DisplayObjectContainer = DisplayObject(form).parent; while (_arg1 != _local2) { if ((_arg1 is UIComponent)){ if (!UIComponent(_arg1).enabled){ return (false); }; } else { if ((_arg1 is TextField)){ _local3 = TextField(_arg1); if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){ return (false); }; } else { if ((_arg1 is SimpleButton)){ _local4 = SimpleButton(_arg1); if (!_local4.enabled){ return (false); }; }; }; }; if (!_arg1.visible){ return (false); }; _arg1 = _arg1.parent; }; return (true); } private function tabChildrenChangeHandler(_arg1:Event):void{ if (_arg1.target != _arg1.currentTarget){ return; }; calculateCandidates = true; var _local2:DisplayObjectContainer = DisplayObjectContainer(_arg1.target); if (_local2.tabChildren){ addFocusables(_local2, true); } else { removeFocusables(_local2); }; } private function deactivateHandler(_arg1:Event):void{ var _local2:InteractiveObject = InteractiveObject(_arg1.target); } public function setFocus(_arg1:InteractiveObject):void{ if ((_arg1 is IFocusManagerComponent)){ IFocusManagerComponent(_arg1).setFocus(); } else { form.stage.focus = _arg1; }; } public function getFocus():InteractiveObject{ var _local1:InteractiveObject = form.stage.focus; return (findFocusManagerComponent(_local1)); } private function hasFocusableObjects():Boolean{ var _local1:Object; for (_local1 in focusableObjects) { return (true); }; return (false); } private function tabIndexChangeHandler(_arg1:Event):void{ calculateCandidates = true; } public function set defaultButton(_arg1:Button):void{ var _local2:Button = (_arg1) ? Button(_arg1) : null; if (_local2 != _defaultButton){ if (_defaultButton){ _defaultButton.emphasized = false; }; if (defButton){ defButton.emphasized = false; }; _defaultButton = _local2; defButton = _local2; if (_local2){ _local2.emphasized = true; }; }; } private function sortFocusableObjects():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){ sortFocusableObjectsTabIndex(); return; }; focusableCandidates.push(_local2); }; focusableCandidates.sort(sortByDepth); } private function keyFocusChangeHandler(_arg1:FocusEvent):void{ showFocusIndicator = true; if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){ setFocusToNextObject(_arg1); _arg1.preventDefault(); }; } private function getIndexOfFocusedObject(_arg1:DisplayObject):int{ var _local2:int = focusableCandidates.length; var _local3:int; _local3 = 0; while (_local3 < _local2) { if (focusableCandidates[_local3] == _arg1){ return (_local3); }; _local3++; }; return (-1); } public function hideFocus():void{ } private function removedHandler(_arg1:Event):void{ var _local2:int; var _local4:InteractiveObject; var _local3:DisplayObject = DisplayObject(_arg1.target); if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){ if (_local3 == lastFocus){ IFocusManagerComponent(lastFocus).drawFocus(false); lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local3]; calculateCandidates = true; } else { if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){ _local4 = (_local3 as InteractiveObject); if (_local4){ if (_local4 == lastFocus){ lastFocus = null; }; delete focusableObjects[_local4]; calculateCandidates = true; }; _local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); }; }; removeFocusables(_local3); } private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{ var _local5:int; var _local6:String; var _local7:String; var _local3 = ""; var _local4 = ""; var _local8 = "0000"; var _local9:DisplayObject = DisplayObject(_arg1); var _local10:DisplayObject = DisplayObject(_arg2); while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) { _local5 = getChildIndex(_local9.parent, _local9); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local3 = (_local7 + _local3); _local9 = _local9.parent; }; while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) { _local5 = getChildIndex(_local10.parent, _local10); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local4 = (_local7 + _local4); _local10 = _local10.parent; }; return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0); } public function get defaultButton():Button{ return (_defaultButton); } private function activateHandler(_arg1:Event):void{ var _local2:InteractiveObject = InteractiveObject(_arg1.target); if (lastFocus){ if ((lastFocus is IFocusManagerComponent)){ IFocusManagerComponent(lastFocus).setFocus(); } else { form.stage.focus = lastFocus; }; }; lastAction = "ACTIVATE"; } public function showFocus():void{ } public function set defaultButtonEnabled(_arg1:Boolean):void{ _defaultButtonEnabled = _arg1; } public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{ var _local8:IFocusManagerGroup; if (!hasFocusableObjects()){ return (null); }; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; var _local2:DisplayObject = form.stage.focus; _local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2))); var _local3 = ""; if ((_local2 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local2); _local3 = _local8.groupName; }; var _local4:int = getIndexOfFocusedObject(_local2); var _local5:Boolean; var _local6:int = _local4; if (_local4 == -1){ if (_arg1){ _local4 = focusableCandidates.length; }; _local5 = true; }; var _local7:int = getIndexOfNextObject(_local4, _arg1, _local5, _local3); return (findFocusManagerComponent(focusableCandidates[_local7])); } private function mouseDownHandler(_arg1:MouseEvent):void{ if (_arg1.isDefaultPrevented()){ return; }; var _local2:InteractiveObject = getTopLevelFocusTarget(InteractiveObject(_arg1.target)); if (!_local2){ return; }; showFocusIndicator = false; if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){ setFocus(_local2); }; lastAction = "MOUSEDOWN"; } private function isTabVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer = _arg1.parent; while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) { if (!_local2.tabChildren){ return (false); }; _local2 = _local2.parent; }; return (true); } public function get nextTabIndex():int{ return (0); } private function keyDownHandler(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.TAB){ lastAction = "KEY"; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; }; if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){ sendDefaultButtonEvent(); }; } private function focusInHandler(_arg1:FocusEvent):void{ var _local3:Button; var _local2:InteractiveObject = InteractiveObject(_arg1.target); if (form.contains(_local2)){ lastFocus = findFocusManagerComponent(InteractiveObject(_local2)); if ((lastFocus is Button)){ _local3 = Button(lastFocus); if (defButton){ defButton.emphasized = false; defButton = _local3; _local3.emphasized = true; }; } else { if (((defButton) && (!((defButton == _defaultButton))))){ defButton.emphasized = false; defButton = _defaultButton; _defaultButton.emphasized = true; }; }; }; } private function tabEnabledChangeHandler(_arg1:Event):void{ calculateCandidates = true; var _local2:InteractiveObject = InteractiveObject(_arg1.target); var _local3 = (focusableObjects[_local2] == true); if (_local2.tabEnabled){ if (((!(_local3)) && (isTabVisible(_local2)))){ if (!(_local2 is IFocusManagerComponent)){ _local2.focusRect = false; }; focusableObjects[_local2] = true; }; } else { if (_local3){ delete focusableObjects[_local2]; }; }; } public function set showFocusIndicator(_arg1:Boolean):void{ _showFocusIndicator = _arg1; } public function get form():DisplayObjectContainer{ return (_form); } private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{ return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2)); } public function get defaultButtonEnabled():Boolean{ return (_defaultButtonEnabled); } public function activate():void{ if (activated){ return; }; form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true); form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true); form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true); form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true); form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = true; if (lastFocus){ setFocus(lastFocus); }; } public function deactivate():void{ form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler); form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.removeEventListener(Event.ACTIVATE, activateHandler); form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler); form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = false; } } }//package fl.managers
Section 117
//IFocusManager (fl.managers.IFocusManager) package fl.managers { import fl.controls.*; import flash.display.*; public interface IFocusManager { function getFocus():InteractiveObject; function deactivate():void; function set defaultButton(_arg1:Button):void; function set showFocusIndicator(_arg1:Boolean):void; function get defaultButtonEnabled():Boolean; function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject; function get nextTabIndex():int; function get defaultButton():Button; function get showFocusIndicator():Boolean; function hideFocus():void; function activate():void; function showFocus():void; function set defaultButtonEnabled(_arg1:Boolean):void; function setFocus(_arg1:InteractiveObject):void; function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject; } }//package fl.managers
Section 118
//IFocusManagerComponent (fl.managers.IFocusManagerComponent) package fl.managers { public interface IFocusManagerComponent { function set focusEnabled(_arg1:Boolean):void; function drawFocus(_arg1:Boolean):void; function setFocus():void; function get focusEnabled():Boolean; function get tabEnabled():Boolean; function get tabIndex():int; function get mouseFocusEnabled():Boolean; } }//package fl.managers
Section 119
//IFocusManagerGroup (fl.managers.IFocusManagerGroup) package fl.managers { public interface IFocusManagerGroup { function get groupName():String; function get selected():Boolean; function set groupName(_arg1:String):void; function set selected(_arg1:Boolean):void; } }//package fl.managers
Section 120
//StyleManager (fl.managers.StyleManager) package fl.managers { import flash.text.*; import fl.core.*; import flash.utils.*; public class StyleManager { private var classToInstancesDict:Dictionary; private var globalStyles:Object; private var styleToClassesHash:Object; private var classToStylesDict:Dictionary; private var classToDefaultStylesDict:Dictionary; private static var _instance:StyleManager; public function StyleManager(){ styleToClassesHash = {}; classToInstancesDict = new Dictionary(true); classToStylesDict = new Dictionary(true); classToDefaultStylesDict = new Dictionary(true); globalStyles = UIComponent.getStyleDefinition(); } public static function clearComponentStyle(_arg1:Object, _arg2:String):void{ var _local3:Class = getClassDef(_arg1); var _local4:Object = getInstance().classToStylesDict[_local3]; if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){ delete _local4[_arg2]; invalidateComponentStyle(_local3, _arg2); }; } private static function getClassDef(_arg1:Object):Class{ var component = _arg1; if ((component is Class)){ return ((component as Class)); }; try { return ((getDefinitionByName(getQualifiedClassName(component)) as Class)); } catch(e:Error) { if ((component is UIComponent)){ try { return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class)); } catch(e:Error) { }; }; }; return (null); } public static function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Class = getClassDef(_arg1); var _local5:Object = getInstance().classToStylesDict[_local4]; if (_local5 == null){ _local5 = (getInstance().classToStylesDict[_local4] = {}); }; if (_local5 == _arg3){ return; }; _local5[_arg2] = _arg3; invalidateComponentStyle(_local4, _arg2); } private static function setSharedStyles(_arg1:UIComponent):void{ var _local5:String; var _local2:StyleManager = getInstance(); var _local3:Class = getClassDef(_arg1); var _local4:Object = _local2.classToDefaultStylesDict[_local3]; for (_local5 in _local4) { _arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5)); }; } public static function getComponentStyle(_arg1:Object, _arg2:String):Object{ var _local3:Class = getClassDef(_arg1); var _local4:Object = getInstance().classToStylesDict[_local3]; return (((_local4)==null) ? null : _local4[_arg2]); } private static function getInstance(){ if (_instance == null){ _instance = new (StyleManager); }; return (_instance); } private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{ var _local4:Object; var _local5:UIComponent; var _local3:Dictionary = getInstance().classToInstancesDict[_arg1]; if (_local3 == null){ return; }; for (_local4 in _local3) { _local5 = (_local4 as UIComponent); if (_local5 == null){ } else { _local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2)); }; }; } private static function invalidateStyle(_arg1:String):void{ var _local3:Object; var _local2:Dictionary = getInstance().styleToClassesHash[_arg1]; if (_local2 == null){ return; }; for (_local3 in _local2) { invalidateComponentStyle(Class(_local3), _arg1); }; } public static function registerInstance(_arg1:UIComponent):void{ var target:Class; var defaultStyles:Object; var styleToClasses:Object; var n:String; var instance = _arg1; var inst:StyleManager = getInstance(); var classDef:Class = getClassDef(instance); if (classDef == null){ return; }; if (inst.classToInstancesDict[classDef] == null){ inst.classToInstancesDict[classDef] = new Dictionary(true); target = classDef; while (defaultStyles == null) { if (target["getStyleDefinition"] != null){ defaultStyles = target["getStyleDefinition"](); break; }; try { target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class); } catch(err:Error) { try { target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class); } catch(e:Error) { defaultStyles = UIComponent.getStyleDefinition(); break; }; }; }; styleToClasses = inst.styleToClassesHash; for (n in defaultStyles) { if (styleToClasses[n] == null){ styleToClasses[n] = new Dictionary(true); }; styleToClasses[n][classDef] = true; }; inst.classToDefaultStylesDict[classDef] = defaultStyles; if (inst.classToStylesDict[classDef] == null){ inst.classToStylesDict[classDef] = {}; }; }; inst.classToInstancesDict[classDef][instance] = true; setSharedStyles(instance); } public static function getStyle(_arg1:String):Object{ return (getInstance().globalStyles[_arg1]); } private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{ var _local3:Class = getClassDef(_arg1); var _local4:StyleManager = getInstance(); var _local5:Object = _local4.classToStylesDict[_local3][_arg2]; if (_local5 != null){ return (_local5); }; _local5 = _local4.globalStyles[_arg2]; if (_local5 != null){ return (_local5); }; return (_local4.classToDefaultStylesDict[_local3][_arg2]); } public static function setStyle(_arg1:String, _arg2:Object):void{ var _local3:Object = getInstance().globalStyles; if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; _local3[_arg1] = _arg2; invalidateStyle(_arg1); } } }//package fl.managers
Section 121
//MochiAd (mochi.as3.MochiAd) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiAd { public static function getVersion():String{ return ("3.0 as3"); } 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); } 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 showPreGameAd(_arg1:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var complete:Boolean; var unloaded:Boolean; var sendHostProgress:Boolean; var fn:Function; 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, no_progress_bar:false, 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"); }, ad_skipped:function ():void{ }, ad_progress:function (_arg1:Number):void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){ options.ad_started(); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); 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 (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); var fn:Function = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; var wh:Array = MochiAd._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); if (options.no_progress_bar){ bar.visible = false; delete options.no_progress_bar; } else { 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 { MochiAd.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){ MochiAd.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){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; 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; }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; mc.rpcTestFn = function (_arg1:String):Object{ trace(("[MOCHIAD rpcTestFn] " + _arg1)); return (_arg1); }; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; sendHostProgress = false; mc.sendHostLoadProgress = function (_arg1:String):void{ sendHostProgress = true; }; 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); options.ad_progress(_local10); if (sendHostProgress){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local7}); if (_local7 == 100){ sendHostProgress = false; }; }; if (!chk.showing){ _local11 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local11 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if ((((_local3 > chk.ad_timeout)) && ((_local7 == 100)))){ 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 showClickAwayAd(_arg1:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var options = _arg1; var DEFAULTS:Object = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{ }, ad_finished:function ():void{ }, 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"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; var wh:Array = MochiAd._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_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; var sendHostProgress:Boolean; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local4:Number; if (!this.parent){ delete this.onEnterFrame; return; }; var _local1:Object = this.parent._mochiad_ctr; var _local2:Number = (getTimer() - this.started); var _local3:Boolean; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; _local3 = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.root == null){ _local3 = true; }; if (_local3){ delete this.onEnterFrame; }; }; doOnEnterFrame(chk); } 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"); }, ad_skipped:function ():void{ }}; options = MochiAd._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 (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; var wh:Array = MochiAd._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 { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; 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); }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; 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 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if (_local2 > chk.ad_timeout){ 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 showPreloaderAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); MochiAd.showPreGameAd(_arg1); } public static function showTimedAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); MochiAd.showInterLevelAd(_arg1); } public static function _allowDomains(_arg1:String):String{ var _local2:String = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType == "application"){ return (_local2); }; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function load(_arg1:Object):MovieClip{ var clip:Object; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; 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 = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!MochiAd._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; var mc:MovieClip = createEmptyMovieClip(clip, "_mochiad", depth); var wh:Array = MochiAd._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; } else { trace("[MochiAd] NOTE: Security Sandbox Violation errors below are normal"); }; 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; mc.lcName = name; lv.lc = name; lv.st = getTimer(); loader = new Loader(); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime())); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{ trace("[MochiAds] Blocked URL"); }); loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (_arg1.origFrameRate != undefined){ _arg1.stage.frameRate = _arg1.origFrameRate; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad._containerLCName != undefined){ _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"}); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } 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 _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } 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 _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 rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{ var _local4:Object; var _local5:Object; switch (_arg3.id){ case "setValue": MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value); break; case "getValue": _local4 = MochiAd.getValue(_arg1, _arg3.objectName); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4); break; case "runMethod": _local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5); break; default: trace(("[mochiads rpc] unknown rpc id: " + _arg3.id)); }; } public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Array = _arg2.split("."); var _local5:Number = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return; }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; _arg1[_local4[_local5]] = _arg3; } public static function getValue(_arg1:Object, _arg2:String):Object{ var _local3:Array = _arg2.split("."); var _local4:Number = 0; while (_local4 < (_local3.length - 1)) { if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){ return (undefined); }; _arg1 = _arg1[_local3[_local4]]; _local4++; }; return (_arg1[_local3[_local4]]); } public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{ var _local4:Array = _arg2.split("."); var _local5:Number = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return (undefined); }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; if (typeof(_arg1[_local4[_local5]]) == "function"){ return (_arg1[_local4[_local5]].apply(_arg1, _arg3)); }; return (undefined); } public static function adShowing(_arg1:Object):void{ _arg1.origFrameRate = _arg1.stage.frameRate; _arg1.stage.frameRate = 30; } } }//package mochi.as3
Section 122
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package

Library Items

Symbol 1 Sound {com.novelgames.multiplayerflashgames.snowball.SoundWin}
Symbol 2 Sound {com.novelgames.multiplayerflashgames.snowball.SoundThrow}
Symbol 3 Sound {com.novelgames.multiplayerflashgames.snowball.SoundMiss}
Symbol 4 Sound {com.novelgames.multiplayerflashgames.snowball.SoundLose}
Symbol 5 Sound {com.novelgames.multiplayerflashgames.snowball.SoundHit}
Symbol 6 Sound {com.novelgames.multiplayerflashgames.snowball.MusicGame}
Symbol 7 Sound {com.novelgames.multiplayerflashgames.snowball.ButtonSoundOver}
Symbol 8 Sound {com.novelgames.multiplayerflashgames.snowball.ButtonSoundClick}
Symbol 9 GraphicUsed by:14
Symbol 10 GraphicUsed by:11 148 392
Symbol 11 MovieClipUses:10Used by:14
Symbol 12 GraphicUsed by:14
Symbol 13 GraphicUsed by:14
Symbol 14 MovieClip {com.novelgames.multiplayerflashgames.snowball.ThrowArrow}Uses:9 11 12 13
Symbol 15 FontUsed by:16 20 27 28 30 32 36 38 40 42 44 46 48 50 52 54 56 58 60 123 124 126 232
Symbol 16 TextUses:15Used by:17
Symbol 17 MovieClipUses:16Used by:19
Symbol 18 GraphicUsed by:19 22 34 234
Symbol 19 ButtonUses:17 18Used by:23
Symbol 20 TextUses:15Used by:21
Symbol 21 MovieClipUses:20Used by:22
Symbol 22 ButtonUses:21 18Used by:23
Symbol 23 MovieClip {com.novelgames.multiplayerflashgames.snowball.MessagePlayAgain}Uses:19 22
Symbol 24 BitmapUsed by:25
Symbol 25 GraphicUses:24Used by:26
Symbol 26 MovieClipUses:25Used by:35 148 239
Symbol 27 TextUses:15Used by:29
Symbol 28 TextUses:15Used by:29
Symbol 29 MovieClipUses:27 28Used by:35
Symbol 30 TextUses:15Used by:31
Symbol 31 MovieClipUses:30Used by:35
Symbol 32 TextUses:15Used by:33
Symbol 33 MovieClipUses:32Used by:34
Symbol 34 ButtonUses:33 18Used by:35 239
Symbol 35 MovieClip {com.novelgames.multiplayerflashgames.common.Instructions}Uses:26 29 31 34
Symbol 36 TextUses:15Used by:37
Symbol 37 MovieClipUses:36Used by:62
Symbol 38 TextUses:15Used by:39
Symbol 39 MovieClipUses:38Used by:62
Symbol 40 TextUses:15Used by:41
Symbol 41 MovieClipUses:40Used by:62
Symbol 42 TextUses:15Used by:43
Symbol 43 MovieClipUses:42Used by:62
Symbol 44 TextUses:15Used by:45
Symbol 45 MovieClipUses:44Used by:62
Symbol 46 TextUses:15Used by:47
Symbol 47 MovieClipUses:46Used by:62
Symbol 48 TextUses:15Used by:49
Symbol 49 MovieClipUses:48Used by:62
Symbol 50 TextUses:15Used by:51
Symbol 51 MovieClipUses:50Used by:62
Symbol 52 TextUses:15Used by:53
Symbol 53 MovieClipUses:52Used by:62
Symbol 54 TextUses:15Used by:55
Symbol 55 MovieClipUses:54Used by:62
Symbol 56 TextUses:15Used by:57
Symbol 57 MovieClipUses:56Used by:62
Symbol 58 TextUses:15Used by:59
Symbol 59 MovieClipUses:58Used by:62
Symbol 60 TextUses:15Used by:61
Symbol 61 MovieClipUses:60Used by:62
Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message}Uses:37 39 41 43 45 47 49 51 53 55 57 59 61Used by:148
Symbol 63 GraphicUsed by:65 231
Symbol 64 GraphicUsed by:65
Symbol 65 MovieClip {com.novelgames.multiplayerflashgames.snowball.Spark}Uses:63 64Used by:148
Symbol 66 GraphicUsed by:75 81 87
Symbol 67 GraphicUsed by:68
Symbol 68 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1HandMovie}Uses:67Used by:75 81 87 137 231
Symbol 69 GraphicUsed by:75
Symbol 70 GraphicUsed by:71
Symbol 71 MovieClipUses:70Used by:75 81 87 137 231
Symbol 72 GraphicUsed by:75 100
Symbol 73 GraphicUsed by:75
Symbol 74 GraphicUsed by:75
Symbol 75 MovieClipUses:66 68 69 71 72 73 74Used by:91
Symbol 76 GraphicUsed by:77
Symbol 77 MovieClip {com.novelgames.multiplayerflashgames.snowball.Snowball}Uses:76Used by:81 87 104 109 148
Symbol 78 GraphicUsed by:81
Symbol 79 GraphicUsed by:81
Symbol 80 GraphicUsed by:81
Symbol 81 MovieClipUses:66 77 68 78 71 79 80Used by:91
Symbol 82 GraphicUsed by:87
Symbol 83 GraphicUsed by:87 109
Symbol 84 GraphicUsed by:87
Symbol 85 GraphicUsed by:87
Symbol 86 GraphicUsed by:87
Symbol 87 MovieClipUses:66 77 68 82 71 83 84 85 86Used by:91
Symbol 88 MovieClip {com.novelgames.multiplayerflashgames.snowball.MonsterHand}Used by:91 110
Symbol 89 GraphicUsed by:90 111 141
Symbol 90 MovieClipUses:89Used by:91 110
Symbol 91 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1}Uses:75 81 87 88 90Used by:148
Symbol 92 GraphicUsed by:100 104 109
Symbol 93 GraphicUsed by:94
Symbol 94 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0HandMovie}Uses:93Used by:100 104 109 140 231
Symbol 95 GraphicUsed by:100
Symbol 96 GraphicUsed by:97
Symbol 97 MovieClipUses:96Used by:100 104 109 140 231
Symbol 98 GraphicUsed by:100
Symbol 99 GraphicUsed by:100
Symbol 100 MovieClipUses:92 94 95 97 72 98 99Used by:110
Symbol 101 GraphicUsed by:104
Symbol 102 GraphicUsed by:104
Symbol 103 GraphicUsed by:104
Symbol 104 MovieClipUses:92 77 94 101 97 102 103Used by:110
Symbol 105 GraphicUsed by:109
Symbol 106 GraphicUsed by:109
Symbol 107 GraphicUsed by:109
Symbol 108 GraphicUsed by:109
Symbol 109 MovieClipUses:92 77 94 105 97 83 106 107 108Used by:110
Symbol 110 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0}Uses:100 104 109 88 90Used by:148
Symbol 111 MovieClipUses:89Used by:117
Symbol 112 GraphicUsed by:117
Symbol 113 GraphicUsed by:114
Symbol 114 MovieClipUses:113Used by:117
Symbol 115 GraphicUsed by:116
Symbol 116 MovieClipUses:115Used by:117
Symbol 117 MovieClip {com.novelgames.multiplayerflashgames.snowball.WindMeter}Uses:111 112 114 116Used by:148
Symbol 118 GraphicUsed by:119
Symbol 119 MovieClipUses:118Used by:148
Symbol 120 GraphicUsed by:121
Symbol 121 MovieClipUses:120Used by:122
Symbol 122 MovieClipUses:121Used by:148
Symbol 123 EditableTextUses:15Used by:148
Symbol 124 TextUses:15Used by:125
Symbol 125 MovieClipUses:124Used by:148
Symbol 126 EditableTextUses:15Used by:148
Symbol 127 GraphicUsed by:130
Symbol 128 MovieClipUsed by:130
Symbol 129 GraphicUsed by:130
Symbol 130 MovieClip {com.novelgames.multiplayerflashgames.common.Clock}Uses:127 128 129Used by:148
Symbol 131 FontUsed by:132 133 138 156 168 174 235 236 237 541
Symbol 132 EditableTextUses:131 191Used by:137
Symbol 133 TextUses:131Used by:134
Symbol 134 MovieClipUses:133Used by:137 140
Symbol 135 GraphicUsed by:137
Symbol 136 GraphicUsed by:137 140
Symbol 137 MovieClip {com.novelgames.multiplayerflashgames.snowball.DistanceMarker1}Uses:132 134 68 135 71 136Used by:148
Symbol 138 EditableTextUses:131 191Used by:140
Symbol 139 GraphicUsed by:140
Symbol 140 MovieClip {com.novelgames.multiplayerflashgames.snowball.DistanceMarker0}Uses:138 134 94 139 97 136Used by:148
Symbol 141 MovieClipUses:89Used by:148
Symbol 142 GraphicUsed by:143
Symbol 143 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsButton}Uses:142Used by:148
Symbol 144 GraphicUsed by:145
Symbol 145 MovieClip {com.novelgames.multiplayerflashgames.common.InstructionsButton}Uses:144Used by:148
Symbol 146 GraphicUsed by:147
Symbol 147 MovieClip {com.novelgames.multiplayerflashgames.common.ChatButton}Uses:146Used by:148
Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game}Uses:26 117 119 122 110 91 123 125 126 130 137 140 10 77 65 141 143 145 147 62
Symbol 149 FontUsed by:150
Symbol 150 EditableTextUses:149Used by:151
Symbol 151 MovieClip {com.novelgames.multiplayerflashgames.common.COPYRIGHT}Uses:150
Symbol 152 GraphicUsed by:184
Symbol 153 GraphicUsed by:154
Symbol 154 MovieClipUses:153Used by:184
Symbol 155 GraphicUsed by:166
Symbol 156 TextUses:131Used by:157
Symbol 157 MovieClipUses:156Used by:166
Symbol 158 FontUsed by:159 161 178 182
Symbol 159 TextUses:158Used by:160
Symbol 160 MovieClipUses:159Used by:166
Symbol 161 TextUses:158Used by:162
Symbol 162 MovieClipUses:161Used by:166
Symbol 163 GraphicUsed by:165
Symbol 164 GraphicUsed by:165
Symbol 165 MovieClipUses:163 164Used by:166
Symbol 166 MovieClipUses:155 157 160 162 165Used by:184
Symbol 167 GraphicUsed by:172
Symbol 168 TextUses:131Used by:169
Symbol 169 MovieClipUses:168Used by:172
Symbol 170 GraphicUsed by:171
Symbol 171 MovieClipUses:170Used by:172 176
Symbol 172 MovieClipUses:167 169 171Used by:184
Symbol 173 GraphicUsed by:176
Symbol 174 TextUses:131Used by:175
Symbol 175 MovieClipUses:174Used by:176
Symbol 176 MovieClipUses:173 175 171Used by:184
Symbol 177 GraphicUsed by:181
Symbol 178 TextUses:158Used by:179
Symbol 179 MovieClipUses:178Used by:181
Symbol 180 GraphicUsed by:181
Symbol 181 ButtonUses:177 179 180Used by:184
Symbol 182 TextUses:158Used by:183
Symbol 183 MovieClipUses:182Used by:184
Symbol 184 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsDialog}Uses:152 154 166 172 176 181 183
Symbol 185 GraphicUsed by:213 308 319 321 327 330 353 356 360 363 418 449 515 516 517 518 519 521 524 527 530 533 536 539
Symbol 186 GraphicUsed by:187
Symbol 187 MovieClipUses:186Used by:213 308 319 321 327 330 353 356 360 363 418 449 506 515 516 517 518 519 521 524 527 530 533 536 539
Symbol 188 GraphicUsed by:213 319 321 521
Symbol 189 FontUsed by:190 224 225 309 320 323 326 328 329 332 337 354 355 358 359 361 362 370 371 372 373 397 463 479 484 486 492 499 505 520 522 523 525 526 528 529 531 532 534 535 537 538
Symbol 190 EditableTextUses:189Used by:213
Symbol 191 FontUsed by:132 138 192 194 196 198 200 202 206 251 253 268 271 273 275 280 282 284 286 288 290 292 294 296 298 300 302 304 306 310 313 324 333 335 338 340 344 348 351 380 383 388 395 398 401 408 410 412 416 439 441 444 447 457 460 465 468 471 474 477 481 490 496 500 502 507 510 512 541
Symbol 192 TextUses:191Used by:193
Symbol 193 MovieClipUses:192Used by:213 319 321 327 330 521 524 527
Symbol 194 TextUses:191Used by:195
Symbol 195 MovieClipUses:194Used by:204
Symbol 196 TextUses:191Used by:197
Symbol 197 MovieClipUses:196Used by:204
Symbol 198 TextUses:191Used by:199
Symbol 199 MovieClipUses:198Used by:204
Symbol 200 TextUses:191Used by:201
Symbol 201 MovieClipUses:200Used by:204
Symbol 202 TextUses:191Used by:203
Symbol 203 MovieClipUses:202Used by:204
Symbol 204 MovieClipUses:195 197 199 201 203Used by:213 321 330 360 363 518 519 527 533 539
Symbol 205 GraphicUsed by:209 498
Symbol 206 TextUses:191Used by:207
Symbol 207 MovieClipUses:206Used by:209
Symbol 208 GraphicUsed by:209 498
Symbol 209 ButtonUses:205 207 208Used by:213 319 321 327 330 521 524 527
Symbol 210 GraphicUsed by:212
Symbol 211 GraphicUsed by:212
Symbol 212 ButtonUses:210 211Used by:213 278 279 308 319 321 327 330 353 356 360 363 378 418 449 506 509 516 517 518 519 521 524 527 530 533 536 539
Symbol 213 MovieClip {com.novelgames.lobby.NameNoFacebookFailedPage}Uses:185 187 188 190 193 204 209 212Used by:540
Symbol 214 GraphicUsed by:223 489
Symbol 215 MovieClipUsed by:223 279 489
Symbol 216 GraphicUsed by:223 489
Symbol 217 GraphicUsed by:223 489
Symbol 218 GraphicUsed by:223 489
Symbol 219 GraphicUsed by:223 489
Symbol 220 GraphicUsed by:223 489
Symbol 221 GraphicUsed by:223 489
Symbol 222 GraphicUsed by:223 489
Symbol 223 MovieClipUses:214 215 216 217 218 219 220 221 222Used by:226
Symbol 224 EditableTextUses:189Used by:226
Symbol 225 EditableTextUses:189Used by:226
Symbol 226 MovieClip {com.novelgames.lobby.ChatTextBubble}Uses:223 224 225Used by:540
Symbol 227 GraphicUsed by:231
Symbol 228 GraphicUsed by:231
Symbol 229 GraphicUsed by:231
Symbol 230 GraphicUsed by:231
Symbol 231 MovieClipUses:227 94 228 97 229 68 230 71 63Used by:239
Symbol 232 TextUses:15Used by:233
Symbol 233 MovieClipUses:232Used by:234
Symbol 234 ButtonUses:233 18Used by:239
Symbol 235 TextUses:131Used by:238
Symbol 236 TextUses:131Used by:238
Symbol 237 TextUses:131Used by:238
Symbol 238 MovieClipUses:235 236 237Used by:239
Symbol 239 MovieClip {com.novelgames.multiplayerflashgames.common.Title}Uses:26 231 34 234 238Used by:Timeline
Symbol 240 MovieClip {fl.core.ComponentShim}Used by:540
Symbol 241 GraphicUsed by:242
Symbol 242 MovieClip {com.novelgames.lobby.RoomInsideMask}Uses:241Used by:279
Symbol 243 GraphicUsed by:279
Symbol 244 GraphicUsed by:245 377
Symbol 245 MovieClipUses:244Used by:279
Symbol 246 GraphicUsed by:248
Symbol 247 GraphicUsed by:248
Symbol 248 ButtonUses:246 247Used by:279
Symbol 249 GraphicUsed by:250
Symbol 250 MovieClipUses:249Used by:257
Symbol 251 TextUses:191Used by:252
Symbol 252 MovieClipUses:251Used by:257
Symbol 253 TextUses:191Used by:254
Symbol 254 MovieClipUses:253Used by:257
Symbol 255 GraphicUsed by:256
Symbol 256 MovieClipUses:255Used by:257
Symbol 257 MovieClipUses:250 252 254 256Used by:279
Symbol 258 GraphicUsed by:278
Symbol 259 GraphicUsed by:260
Symbol 260 MovieClipUses:259Used by:278 393 509
Symbol 261 GraphicUsed by:278
Symbol 262 GraphicUsed by:263
Symbol 263 MovieClip {com.novelgames.lobby.RoomInsideBackground}Uses:262Used by:278 540
Symbol 264 GraphicUsed by:278 437
Symbol 265 GraphicUsed by:278 452
Symbol 266 GraphicUsed by:267 456
Symbol 267 MovieClipUses:266Used by:278
Symbol 268 TextUses:191Used by:269
Symbol 269 MovieClipUses:268Used by:278 487
Symbol 270 GraphicUsed by:278
Symbol 271 TextUses:191Used by:272
Symbol 272 MovieClipUses:271Used by:278
Symbol 273 TextUses:191Used by:274
Symbol 274 MovieClipUses:273Used by:278
Symbol 275 TextUses:191Used by:276
Symbol 276 MovieClipUses:275Used by:278
Symbol 277 GraphicUsed by:278
Symbol 278 MovieClipUses:258 260 261 263 264 265 267 269 270 272 274 276 277 212Used by:279
Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC}Uses:242 215 243 245 212 248 257 278Used by:540
Symbol 280 TextUses:191Used by:281
Symbol 281 MovieClipUses:280Used by:308
Symbol 282 TextUses:191Used by:283
Symbol 283 MovieClipUses:282Used by:308
Symbol 284 TextUses:191Used by:285
Symbol 285 MovieClipUses:284Used by:308
Symbol 286 TextUses:191Used by:287
Symbol 287 MovieClipUses:286Used by:308
Symbol 288 TextUses:191Used by:289
Symbol 289 MovieClipUses:288Used by:308
Symbol 290 TextUses:191Used by:291
Symbol 291 MovieClipUses:290Used by:308
Symbol 292 TextUses:191Used by:293
Symbol 293 MovieClipUses:292Used by:308
Symbol 294 TextUses:191Used by:295
Symbol 295 MovieClipUses:294Used by:308
Symbol 296 TextUses:191Used by:297
Symbol 297 MovieClipUses:296Used by:308
Symbol 298 TextUses:191Used by:299
Symbol 299 MovieClipUses:298Used by:308
Symbol 300 TextUses:191Used by:301
Symbol 301 MovieClipUses:300Used by:308
Symbol 302 TextUses:191Used by:303
Symbol 303 MovieClipUses:302Used by:308
Symbol 304 TextUses:191Used by:305
Symbol 305 MovieClipUses:304Used by:308
Symbol 306 TextUses:191Used by:307
Symbol 307 MovieClipUses:306Used by:308
Symbol 308 MovieClip {com.novelgames.lobby.StatusMC}Uses:185 187 281 212 283 285 287 289 291 293 295 297 299 301 303 305 307Used by:540
Symbol 309 EditableTextUses:189Used by:319
Symbol 310 TextUses:191Used by:311
Symbol 311 MovieClipUses:310Used by:319 321 327 330 353 356 360 517 518 533 536 539
Symbol 312 GraphicUsed by:318 342 350
Symbol 313 TextUses:191Used by:314
Symbol 314 MovieClipUses:313Used by:318
Symbol 315 GraphicUsed by:316 318
Symbol 316 MovieClipUses:315Used by:318 418 449
Symbol 317 GraphicUsed by:318 342 350
Symbol 318 ButtonUses:312 314 316 317 315Used by:319 321 327 330 353 356 360 516 517 518 519 533
Symbol 319 MovieClip {com.novelgames.lobby.NamePage}Uses:185 187 188 309 193 209 212 311 318Used by:540
Symbol 320 EditableTextUses:189Used by:321
Symbol 321 MovieClip {com.novelgames.lobby.NameFailedPage}Uses:185 187 188 320 193 204 209 212 311 318Used by:540
Symbol 322 GraphicUsed by:327 330 524 527
Symbol 323 EditableTextUses:189Used by:327
Symbol 324 TextUses:191Used by:325
Symbol 325 MovieClipUses:324Used by:327 330 524 527
Symbol 326 EditableTextUses:189Used by:327
Symbol 327 MovieClip {com.novelgames.lobby.NameEmailPage}Uses:185 187 322 323 193 325 326 209 212 311 318Used by:540
Symbol 328 EditableTextUses:189Used by:330
Symbol 329 EditableTextUses:189Used by:330
Symbol 330 MovieClip {com.novelgames.lobby.NameEmailFailedPage}Uses:185 187 322 328 193 325 329 204 311 209 212 318Used by:540
Symbol 331 GraphicUsed by:353 356 530 536
Symbol 332 EditableTextUses:189Used by:353
Symbol 333 TextUses:191Used by:334
Symbol 334 MovieClipUses:333Used by:353 356 360 363 530 533 536 539
Symbol 335 TextUses:191Used by:336
Symbol 336 MovieClipUses:335Used by:353 356 360 363 530 533 536 539
Symbol 337 EditableTextUses:189Used by:353
Symbol 338 TextUses:191Used by:339
Symbol 339 MovieClipUses:338Used by:353 356 360 363 530 533 536 539
Symbol 340 TextUses:191Used by:341
Symbol 341 MovieClipUses:340Used by:342
Symbol 342 ButtonUses:312 341 317Used by:353 356 360 363 530 533 536 539
Symbol 343 GraphicUsed by:347 514
Symbol 344 TextUses:191Used by:345
Symbol 345 MovieClipUses:344Used by:347
Symbol 346 GraphicUsed by:347 514
Symbol 347 ButtonUses:343 345 346Used by:353 356 360 363 530 533 536 539
Symbol 348 TextUses:191Used by:349
Symbol 349 MovieClipUses:348Used by:350
Symbol 350 ButtonUses:312 349 317Used by:353 360 517 518 536 539
Symbol 351 TextUses:191Used by:352
Symbol 352 MovieClipUses:351Used by:353 356 360 363 530 533 536 539
Symbol 353 MovieClip {com.novelgames.lobby.LoginPage}Uses:185 187 331 332 334 336 337 339 311 342 347 350 352 212 318Used by:540
Symbol 354 EditableTextUses:189Used by:356
Symbol 355 EditableTextUses:189Used by:356
Symbol 356 MovieClip {com.novelgames.lobby.LoginNoGuestPage}Uses:185 187 331 354 334 336 355 339 311 347 352 212 318 342Used by:540
Symbol 357 GraphicUsed by:360 363 533 539
Symbol 358 EditableTextUses:189Used by:360
Symbol 359 EditableTextUses:189Used by:360
Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage}Uses:185 187 357 358 334 336 359 339 204 347 352 212 311 342 350 318Used by:540
Symbol 361 EditableTextUses:189Used by:363
Symbol 362 EditableTextUses:189Used by:363
Symbol 363 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookFailedPage}Uses:185 187 357 361 334 336 362 339 204 212 347 342 352Used by:540
Symbol 364 GraphicUsed by:378
Symbol 365 GraphicUsed by:375
Symbol 366 GraphicUsed by:368
Symbol 367 GraphicUsed by:368
Symbol 368 MovieClipUses:366 367Used by:375
Symbol 369 GraphicUsed by:375
Symbol 370 EditableTextUses:189Used by:375
Symbol 371 EditableTextUses:189Used by:375
Symbol 372 EditableTextUses:189Used by:375
Symbol 373 EditableTextUses:189Used by:375
Symbol 374 GraphicUsed by:375
Symbol 375 MovieClipUses:365 368 369 370 371 372 373 374Used by:378
Symbol 376 GraphicUsed by:377
Symbol 377 ButtonUses:244 376Used by:378
Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC}Uses:364 375 377 212Used by:540
Symbol 379 GraphicUsed by:393 509
Symbol 380 TextUses:191Used by:381
Symbol 381 MovieClipUses:380Used by:393
Symbol 382 GraphicUsed by:386
Symbol 383 TextUses:191Used by:384
Symbol 384 MovieClipUses:383Used by:386
Symbol 385 GraphicUsed by:386
Symbol 386 ButtonUses:382 384 385Used by:393
Symbol 387 GraphicUsed by:391
Symbol 388 TextUses:191Used by:389
Symbol 389 MovieClipUses:388Used by:391
Symbol 390 GraphicUsed by:391
Symbol 391 ButtonUses:387 389 390Used by:393
Symbol 392 MovieClipUses:10Used by:393 509
Symbol 393 MovieClip {com.novelgames.lobby.InviteDialog}Uses:379 260 381 386 391 392Used by:540
Symbol 394 GraphicUsed by:418
Symbol 395 TextUses:191Used by:396
Symbol 396 MovieClipUses:395Used by:418
Symbol 397 EditableTextUses:189Used by:418
Symbol 398 TextUses:191Used by:399
Symbol 399 MovieClipUses:398Used by:418
Symbol 400 GraphicUsed by:403
Symbol 401 TextUses:191Used by:402
Symbol 402 MovieClipUses:401Used by:403
Symbol 403 MovieClipUses:400 402Used by:418 449
Symbol 404 GraphicUsed by:405
Symbol 405 MovieClipUses:404Used by:418 449
Symbol 406 GraphicUsed by:407
Symbol 407 MovieClipUses:406Used by:418 449
Symbol 408 TextUses:191Used by:409
Symbol 409 MovieClipUses:408Used by:418 449
Symbol 410 TextUses:191Used by:411
Symbol 411 MovieClipUses:410Used by:418 449
Symbol 412 TextUses:191Used by:413
Symbol 413 MovieClipUses:412Used by:418 449
Symbol 414 GraphicUsed by:415
Symbol 415 MovieClipUses:414Used by:418 449
Symbol 416 TextUses:191Used by:417
Symbol 417 MovieClipUses:416Used by:418 449
Symbol 418 MovieClip {com.novelgames.lobby.RankPage}Uses:185 187 394 396 397 399 403 405 407 316 409 411 413 415 417 212Used by:540
Symbol 419 GraphicUsed by:437
Symbol 420 GraphicUsed by:436
Symbol 421 GraphicUsed by:436
Symbol 422 GraphicUsed by:436
Symbol 423 GraphicUsed by:436
Symbol 424 GraphicUsed by:436
Symbol 425 GraphicUsed by:436
Symbol 426 GraphicUsed by:436
Symbol 427 GraphicUsed by:436
Symbol 428 GraphicUsed by:436
Symbol 429 GraphicUsed by:436
Symbol 430 GraphicUsed by:436
Symbol 431 GraphicUsed by:436
Symbol 432 GraphicUsed by:436
Symbol 433 GraphicUsed by:436
Symbol 434 GraphicUsed by:436
Symbol 435 GraphicUsed by:436
Symbol 436 MovieClipUses:420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435Used by:437
Symbol 437 MovieClip {com.novelgames.lobby.Player}Uses:264 419 436Used by:452 540
Symbol 438 GraphicUsed by:449
Symbol 439 TextUses:191Used by:440
Symbol 440 MovieClipUses:439Used by:449
Symbol 441 TextUses:191Used by:442
Symbol 442 MovieClipUses:441Used by:449
Symbol 443 GraphicUsed by:449
Symbol 444 TextUses:191Used by:445
Symbol 445 MovieClipUses:444Used by:449
Symbol 446 GraphicUsed by:449
Symbol 447 TextUses:191Used by:448
Symbol 448 MovieClipUses:447Used by:449
Symbol 449 MovieClip {com.novelgames.lobby.ResultPage}Uses:185 187 438 440 442 403 405 407 316 409 411 413 415 417 212 443 445 446 448Used by:540
Symbol 450 GraphicUsed by:451
Symbol 451 MovieClipUses:450Used by:452
Symbol 452 MovieClip {com.novelgames.lobby.Table}Uses:437 265 451Used by:540
Symbol 453 GraphicUsed by:456
Symbol 454 GraphicUsed by:456
Symbol 455 GraphicUsed by:456
Symbol 456 MovieClipUses:266 453 454 455Used by:459 462 464 467 470 473 476 480 483 485 487
Symbol 457 TextUses:191Used by:458
Symbol 458 MovieClipUses:457Used by:459
Symbol 459 MovieClip {com.novelgames.lobby.BubbleInvite}Uses:456 458Used by:540
Symbol 460 TextUses:191Used by:461
Symbol 461 MovieClipUses:460Used by:462
Symbol 462 MovieClip {com.novelgames.lobby.BubbleJoinTable}Uses:456 461Used by:540
Symbol 463 EditableTextUses:189Used by:464
Symbol 464 MovieClip {com.novelgames.lobby.BubbleName}Uses:456 463Used by:540
Symbol 465 TextUses:191Used by:466
Symbol 466 MovieClipUses:465Used by:467
Symbol 467 MovieClip {com.novelgames.lobby.BubbleOpenTable}Uses:456 466Used by:540
Symbol 468 TextUses:191Used by:469
Symbol 469 MovieClipUses:468Used by:470
Symbol 470 MovieClip {com.novelgames.lobby.BubblePlaying}Uses:456 469Used by:540
Symbol 471 TextUses:191Used by:472
Symbol 472 MovieClipUses:471Used by:473 485
Symbol 473 MovieClip {com.novelgames.lobby.BubbleStart}Uses:456 472Used by:540
Symbol 474 TextUses:191Used by:475
Symbol 475 MovieClipUses:474Used by:476
Symbol 476 MovieClip {com.novelgames.lobby.BubbleView}Uses:456 475Used by:540
Symbol 477 TextUses:191Used by:478
Symbol 478 MovieClipUses:477Used by:480 485
Symbol 479 EditableTextUses:189Used by:480
Symbol 480 MovieClip {com.novelgames.lobby.BubbleWaiting}Uses:456 478 479Used by:540
Symbol 481 TextUses:191Used by:482
Symbol 482 MovieClipUses:481Used by:483
Symbol 483 MovieClip {com.novelgames.lobby.BubbleWaitingHost}Uses:456 482Used by:540
Symbol 484 EditableTextUses:189Used by:485
Symbol 485 MovieClip {com.novelgames.lobby.BubbleWaitingOrStart}Uses:456 484 478 472Used by:540
Symbol 486 EditableTextUses:189Used by:487
Symbol 487 MovieClip {com.novelgames.lobby.BubbleYou}Uses:456 269 486Used by:540
Symbol 488 GraphicUsed by:489
Symbol 489 MovieClipUses:214 488 215 216 217 218 219 220 221 222Used by:493
Symbol 490 TextUses:191Used by:491
Symbol 491 MovieClipUses:490Used by:493
Symbol 492 EditableTextUses:189Used by:493
Symbol 493 MovieClip {com.novelgames.lobby.ChatInputBubble}Uses:489 491 492Used by:540
Symbol 494 GraphicUsed by:506
Symbol 495 GraphicUsed by:506
Symbol 496 TextUses:191Used by:497
Symbol 497 MovieClipUses:496Used by:498
Symbol 498 ButtonUses:205 497 208Used by:506
Symbol 499 EditableTextUses:189Used by:506
Symbol 500 TextUses:191Used by:501
Symbol 501 MovieClipUses:500Used by:506
Symbol 502 TextUses:191Used by:503
Symbol 503 MovieClipUses:502Used by:506
Symbol 504 GraphicUsed by:506
Symbol 505 EditableTextUses:189Used by:506
Symbol 506 MovieClip {com.novelgames.lobby.EmailPage}Uses:494 187 212 495 498 499 501 503 504 505Used by:540
Symbol 507 TextUses:191Used by:508
Symbol 508 MovieClipUses:507Used by:509
Symbol 509 MovieClip {com.novelgames.lobby.AutoMatchDialogMC}Uses:379 260 508 212 392Used by:540
Symbol 510 TextUses:191Used by:511
Symbol 511 MovieClipUses:510Used by:515
Symbol 512 TextUses:191Used by:513
Symbol 513 MovieClipUses:512Used by:514
Symbol 514 ButtonUses:343 513 346Used by:515
Symbol 515 MovieClip {com.novelgames.lobby.FacebookContinuePage}Uses:185 187 511 514Used by:540
Symbol 516 MovieClip {com.novelgames.lobby.FacebookNoGuestPage}Uses:185 187 212 318Used by:540
Symbol 517 MovieClip {com.novelgames.lobby.FacebookPage}Uses:185 187 311 212 318 350Used by:540
Symbol 518 MovieClip {com.novelgames.lobby.FacebookFailedPage}Uses:185 187 311 204 212 318 350Used by:540
Symbol 519 MovieClip {com.novelgames.lobby.FacebookNoGuestFailedPage}Uses:185 187 204 212 318Used by:540
Symbol 520 EditableTextUses:189Used by:521
Symbol 521 MovieClip {com.novelgames.lobby.NameNoFacebookPage}Uses:185 187 188 520 193 209 212Used by:540
Symbol 522 EditableTextUses:189Used by:524
Symbol 523 EditableTextUses:189Used by:524
Symbol 524 MovieClip {com.novelgames.lobby.NameEmailNoFacebookPage}Uses:185 187 322 522 193 325 523 209 212Used by:540
Symbol 525 EditableTextUses:189Used by:527
Symbol 526 EditableTextUses:189Used by:527
Symbol 527 MovieClip {com.novelgames.lobby.NameEmailNoFacebookFailedPage}Uses:185 187 322 525 193 325 526 204 209 212Used by:540
Symbol 528 EditableTextUses:189Used by:530
Symbol 529 EditableTextUses:189Used by:530
Symbol 530 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookPage}Uses:185 187 331 528 334 336 529 339 347 342 352 212Used by:540
Symbol 531 EditableTextUses:189Used by:533
Symbol 532 EditableTextUses:189Used by:533
Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage}Uses:185 187 357 531 334 336 532 339 204 212 311 347 352 318 342Used by:540
Symbol 534 EditableTextUses:189Used by:536
Symbol 535 EditableTextUses:189Used by:536
Symbol 536 MovieClip {com.novelgames.lobby.LoginNoFacebookPage}Uses:185 187 331 534 334 336 535 339 311 347 342 350 352 212Used by:540
Symbol 537 EditableTextUses:189Used by:539
Symbol 538 EditableTextUses:189Used by:539
Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage}Uses:185 187 357 537 334 336 538 339 311 204 347 342 350 352 212Used by:540
Symbol 540 MovieClip {com.novelgames.lobby.Lobby}Uses:279 240 308 319 321 327 330 353 356 360 363 378 393 418 437 449 263 452 459 462 464 467 470 473 476 480 483 485 487 493 226 506 509 515 516 517 518 519 521 213 524 527 530 533 536 539Used by:Timeline
Symbol 541 EditableTextUses:131 191Used by:Timeline
Symbol 542 GraphicUsed by:543
Symbol 543 MovieClipUses:542Used by:556
Symbol 544 GraphicUsed by:547 549 551
Symbol 545 FontUsed by:546 548 550 553
Symbol 546 TextUses:545Used by:547
Symbol 547 ButtonUses:544 546Used by:552
Symbol 548 TextUses:545Used by:549
Symbol 549 ButtonUses:544 548Used by:552
Symbol 550 TextUses:545Used by:551
Symbol 551 ButtonUses:544 550Used by:552
Symbol 552 MovieClipUses:547 549 551Used by:556
Symbol 553 TextUses:545Used by:555
Symbol 554 GraphicUsed by:555
Symbol 555 ButtonUses:553 554Used by:556
Symbol 556 MovieClipUses:543 552 555Used by:Timeline

Instance Names

"title"Frame 1Symbol 239 MovieClip {com.novelgames.multiplayerflashgames.common.Title}
"lobby"Frame 1Symbol 540 MovieClip {com.novelgames.lobby.Lobby}
"textbox"Frame 1Symbol 541 EditableText
"FupaBar"Frame 1Symbol 556 MovieClip
"arrowMask"Symbol 14 MovieClip {com.novelgames.multiplayerflashgames.snowball.ThrowArrow} Frame 1Symbol 11 MovieClip
"playAgainButton"Symbol 23 MovieClip {com.novelgames.multiplayerflashgames.snowball.MessagePlayAgain} Frame 1Symbol 19 Button
"homeButton"Symbol 23 MovieClip {com.novelgames.multiplayerflashgames.snowball.MessagePlayAgain} Frame 1Symbol 22 Button
"startButton"Symbol 35 MovieClip {com.novelgames.multiplayerflashgames.common.Instructions} Frame 1Symbol 34 Button
"hand"Symbol 75 MovieClip Frame 1Symbol 68 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1HandMovie}
"hand"Symbol 81 MovieClip Frame 1Symbol 68 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1HandMovie}
"hand"Symbol 87 MovieClip Frame 1Symbol 68 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1HandMovie}
"throws"Symbol 91 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1} Frame 1Symbol 75 MovieClip
"aim"Symbol 91 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1} Frame 1Symbol 81 MovieClip
"idle"Symbol 91 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1} Frame 1Symbol 87 MovieClip
"hand"Symbol 91 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1} Frame 1Symbol 88 MovieClip {com.novelgames.multiplayerflashgames.snowball.MonsterHand}
"hitBox"Symbol 91 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1} Frame 1Symbol 90 MovieClip
"hand"Symbol 100 MovieClip Frame 1Symbol 94 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0HandMovie}
"hand"Symbol 104 MovieClip Frame 1Symbol 94 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0HandMovie}
"hand"Symbol 109 MovieClip Frame 1Symbol 94 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0HandMovie}
"throws"Symbol 110 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0} Frame 1Symbol 100 MovieClip
"aim"Symbol 110 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0} Frame 1Symbol 104 MovieClip
"idle"Symbol 110 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0} Frame 1Symbol 109 MovieClip
"hand"Symbol 110 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0} Frame 1Symbol 88 MovieClip {com.novelgames.multiplayerflashgames.snowball.MonsterHand}
"hitBox"Symbol 110 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0} Frame 1Symbol 90 MovieClip
"hitBox"Symbol 117 MovieClip {com.novelgames.multiplayerflashgames.snowball.WindMeter} Frame 1Symbol 111 MovieClip
"cups"Symbol 117 MovieClip {com.novelgames.multiplayerflashgames.snowball.WindMeter} Frame 1Symbol 114 MovieClip
"arrow"Symbol 117 MovieClip {com.novelgames.multiplayerflashgames.snowball.WindMeter} Frame 1Symbol 116 MovieClip
"theMask"Symbol 130 MovieClip {com.novelgames.multiplayerflashgames.common.Clock} Frame 1Symbol 128 MovieClip
"distanceText"Symbol 137 MovieClip {com.novelgames.multiplayerflashgames.snowball.DistanceMarker1} Frame 1Symbol 132 EditableText
"distanceText"Symbol 140 MovieClip {com.novelgames.multiplayerflashgames.snowball.DistanceMarker0} Frame 1Symbol 138 EditableText
"windMeter"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 117 MovieClip {com.novelgames.multiplayerflashgames.snowball.WindMeter}
"centreCross"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 119 MovieClip
"centreArrow"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 122 MovieClip
"monster1"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 110 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0}
"monster0"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 91 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1}
"nameText0"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 123 EditableText
"youTextMovie0"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 125 MovieClip
"nameText1"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 126 EditableText
"youTextMovie1"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 125 MovieClip
"clock1"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 130 MovieClip {com.novelgames.multiplayerflashgames.common.Clock}
"clock0"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 130 MovieClip {com.novelgames.multiplayerflashgames.common.Clock}
"distanceMarker0"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 137 MovieClip {com.novelgames.multiplayerflashgames.snowball.DistanceMarker1}
"distanceMarker1"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 140 MovieClip {com.novelgames.multiplayerflashgames.snowball.DistanceMarker0}
"snowball"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 77 MovieClip {com.novelgames.multiplayerflashgames.snowball.Snowball}
"spark"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 65 MovieClip {com.novelgames.multiplayerflashgames.snowball.Spark}
"mouseHitArea"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 141 MovieClip
"optionsButton"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 143 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsButton}
"instructionsButton"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 145 MovieClip {com.novelgames.multiplayerflashgames.common.InstructionsButton}
"message"Symbol 148 MovieClip {com.novelgames.multiplayerflashgames.snowball.Game} Frame 1Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message}
"text"Symbol 151 MovieClip {com.novelgames.multiplayerflashgames.common.COPYRIGHT} Frame 1Symbol 150 EditableText
"onButton"Symbol 166 MovieClip Frame 1Symbol 165 MovieClip
"offButton"Symbol 166 MovieClip Frame 1Symbol 165 MovieClip
"offSlider"Symbol 172 MovieClip Frame 1Symbol 171 MovieClip
"onSlider"Symbol 172 MovieClip Frame 1Symbol 171 MovieClip
"offSlider"Symbol 176 MovieClip Frame 1Symbol 171 MovieClip
"onSlider"Symbol 176 MovieClip Frame 1Symbol 171 MovieClip
"separator0"Symbol 184 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsDialog} Frame 1Symbol 154 MovieClip
"separator1"Symbol 184 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsDialog} Frame 1Symbol 154 MovieClip
"fullScreen"Symbol 184 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsDialog} Frame 1Symbol 166 MovieClip
"music"Symbol 184 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsDialog} Frame 1Symbol 172 MovieClip
"sound"Symbol 184 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsDialog} Frame 1Symbol 176 MovieClip
"okButton"Symbol 184 MovieClip {com.novelgames.multiplayerflashgames.common.OptionsDialog} Frame 1Symbol 181 Button
"nameText"Symbol 213 MovieClip {com.novelgames.lobby.NameNoFacebookFailedPage} Frame 1Symbol 190 EditableText
"reasonText"Symbol 213 MovieClip {com.novelgames.lobby.NameNoFacebookFailedPage} Frame 1Symbol 204 MovieClip
"submitButton"Symbol 213 MovieClip {com.novelgames.lobby.NameNoFacebookFailedPage} Frame 1Symbol 209 Button
"closeButton"Symbol 213 MovieClip {com.novelgames.lobby.NameNoFacebookFailedPage} Frame 1Symbol 212 Button
"point"Symbol 223 MovieClip Frame 1Symbol 215 MovieClip
"background"Symbol 226 MovieClip {com.novelgames.lobby.ChatTextBubble} Frame 1Symbol 223 MovieClip
"messageText"Symbol 226 MovieClip {com.novelgames.lobby.ChatTextBubble} Frame 1Symbol 224 EditableText
"nameText"Symbol 226 MovieClip {com.novelgames.lobby.ChatTextBubble} Frame 1Symbol 225 EditableText
"handb"Symbol 231 MovieClip Frame 1Symbol 94 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster0HandMovie}
"handa"Symbol 231 MovieClip Frame 1Symbol 68 MovieClip {com.novelgames.multiplayerflashgames.snowball.Monster1HandMovie}
"startButton"Symbol 239 MovieClip {com.novelgames.multiplayerflashgames.common.Title} Frame 1Symbol 34 Button
"moreGamesButton"Symbol 239 MovieClip {com.novelgames.multiplayerflashgames.common.Title} Frame 1Symbol 234 Button
"bubble"Symbol 278 MovieClip Frame 1Symbol 267 MovieClip
"bubble"Symbol 278 MovieClip Frame 1Symbol 267 MovieClip
"bubble"Symbol 278 MovieClip Frame 1Symbol 267 MovieClip
"closeButton"Symbol 278 MovieClip Frame 1Symbol 212 Button
"theMask"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 242 MovieClip {com.novelgames.lobby.RoomInsideMask}
"backgroundHolder"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 215 MovieClip
"thingsHolder"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 215 MovieClip
"namesHolder"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 215 MovieClip
"bubblesHolder"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 215 MovieClip
"arrowRight"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 245 MovieClip
"arrowDown"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 245 MovieClip
"arrowLeft"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 245 MovieClip
"arrowUp"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 245 MovieClip
"arrowDownRight"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 245 MovieClip
"arrowUpLeft"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 245 MovieClip
"arrowDownLeft"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 245 MovieClip
"arrowUpRight"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 245 MovieClip
"closeButton"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 212 Button
"helpButton"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 248 Button
"filterText"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 257 MovieClip
"helpDialog"Symbol 279 MovieClip {com.novelgames.lobby.RoomInsideMC} Frame 1Symbol 278 MovieClip
"closeButton"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 1Symbol 212 Button
"nameText"Symbol 319 MovieClip {com.novelgames.lobby.NamePage} Frame 1Symbol 309 EditableText
"submitButton"Symbol 319 MovieClip {com.novelgames.lobby.NamePage} Frame 1Symbol 209 Button
"closeButton"Symbol 319 MovieClip {com.novelgames.lobby.NamePage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 319 MovieClip {com.novelgames.lobby.NamePage} Frame 1Symbol 318 Button
"nameText"Symbol 321 MovieClip {com.novelgames.lobby.NameFailedPage} Frame 1Symbol 320 EditableText
"reasonText"Symbol 321 MovieClip {com.novelgames.lobby.NameFailedPage} Frame 1Symbol 204 MovieClip
"submitButton"Symbol 321 MovieClip {com.novelgames.lobby.NameFailedPage} Frame 1Symbol 209 Button
"closeButton"Symbol 321 MovieClip {com.novelgames.lobby.NameFailedPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 321 MovieClip {com.novelgames.lobby.NameFailedPage} Frame 1Symbol 318 Button
"nameText"Symbol 327 MovieClip {com.novelgames.lobby.NameEmailPage} Frame 1Symbol 323 EditableText
"emailText"Symbol 327 MovieClip {com.novelgames.lobby.NameEmailPage} Frame 1Symbol 326 EditableText
"submitButton"Symbol 327 MovieClip {com.novelgames.lobby.NameEmailPage} Frame 1Symbol 209 Button
"closeButton"Symbol 327 MovieClip {com.novelgames.lobby.NameEmailPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 327 MovieClip {com.novelgames.lobby.NameEmailPage} Frame 1Symbol 318 Button
"nameText"Symbol 330 MovieClip {com.novelgames.lobby.NameEmailFailedPage} Frame 1Symbol 328 EditableText
"emailText"Symbol 330 MovieClip {com.novelgames.lobby.NameEmailFailedPage} Frame 1Symbol 329 EditableText
"reasonText"Symbol 330 MovieClip {com.novelgames.lobby.NameEmailFailedPage} Frame 1Symbol 204 MovieClip
"submitButton"Symbol 330 MovieClip {com.novelgames.lobby.NameEmailFailedPage} Frame 1Symbol 209 Button
"closeButton"Symbol 330 MovieClip {com.novelgames.lobby.NameEmailFailedPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 330 MovieClip {com.novelgames.lobby.NameEmailFailedPage} Frame 1Symbol 318 Button
"usernameText"Symbol 353 MovieClip {com.novelgames.lobby.LoginPage} Frame 1Symbol 332 EditableText
"passwordText"Symbol 353 MovieClip {com.novelgames.lobby.LoginPage} Frame 1Symbol 337 EditableText
"registerButton"Symbol 353 MovieClip {com.novelgames.lobby.LoginPage} Frame 1Symbol 342 Button
"submitButton"Symbol 353 MovieClip {com.novelgames.lobby.LoginPage} Frame 1Symbol 347 Button
"enterAsGuestButton"Symbol 353 MovieClip {com.novelgames.lobby.LoginPage} Frame 1Symbol 350 Button
"forgetPasswordButton"Symbol 353 MovieClip {com.novelgames.lobby.LoginPage} Frame 1Symbol 352 MovieClip
"closeButton"Symbol 353 MovieClip {com.novelgames.lobby.LoginPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 353 MovieClip {com.novelgames.lobby.LoginPage} Frame 1Symbol 318 Button
"usernameText"Symbol 356 MovieClip {com.novelgames.lobby.LoginNoGuestPage} Frame 1Symbol 354 EditableText
"passwordText"Symbol 356 MovieClip {com.novelgames.lobby.LoginNoGuestPage} Frame 1Symbol 355 EditableText
"submitButton"Symbol 356 MovieClip {com.novelgames.lobby.LoginNoGuestPage} Frame 1Symbol 347 Button
"forgetPasswordButton"Symbol 356 MovieClip {com.novelgames.lobby.LoginNoGuestPage} Frame 1Symbol 352 MovieClip
"closeButton"Symbol 356 MovieClip {com.novelgames.lobby.LoginNoGuestPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 356 MovieClip {com.novelgames.lobby.LoginNoGuestPage} Frame 1Symbol 318 Button
"registerButton"Symbol 356 MovieClip {com.novelgames.lobby.LoginNoGuestPage} Frame 1Symbol 342 Button
"usernameText"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 358 EditableText
"passwordText"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 359 EditableText
"reasonText"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 204 MovieClip
"submitButton"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 347 Button
"forgetPasswordButton"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 352 MovieClip
"closeButton"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 212 Button
"registerButton"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 342 Button
"enterAsGuestButton"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 350 Button
"facebookLoginButton"Symbol 360 MovieClip {com.novelgames.lobby.LoginFailedPage} Frame 1Symbol 318 Button
"usernameText"Symbol 363 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookFailedPage} Frame 1Symbol 361 EditableText
"passwordText"Symbol 363 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookFailedPage} Frame 1Symbol 362 EditableText
"reasonText"Symbol 363 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookFailedPage} Frame 1Symbol 204 MovieClip
"closeButton"Symbol 363 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookFailedPage} Frame 1Symbol 212 Button
"submitButton"Symbol 363 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookFailedPage} Frame 1Symbol 347 Button
"registerButton"Symbol 363 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookFailedPage} Frame 1Symbol 342 Button
"forgetPasswordButton"Symbol 363 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookFailedPage} Frame 1Symbol 352 MovieClip
"door"Symbol 375 MovieClip Frame 1Symbol 368 MovieClip
"roomNameText"Symbol 375 MovieClip Frame 1Symbol 370 EditableText
"noOfPlayersText"Symbol 375 MovieClip Frame 1Symbol 371 EditableText
"roomCapacityText"Symbol 375 MovieClip Frame 1Symbol 372 EditableText
"slashText"Symbol 375 MovieClip Frame 1Symbol 373 EditableText
"room0"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 375 MovieClip
"room2"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 375 MovieClip
"room4"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 375 MovieClip
"room1"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 375 MovieClip
"room3"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 375 MovieClip
"room5"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 375 MovieClip
"nextPageButton"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 377 Button
"previousPageButton"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 377 Button
"closeButton"Symbol 378 MovieClip {com.novelgames.lobby.RoomsMC} Frame 1Symbol 212 Button
"rejectButton"Symbol 393 MovieClip {com.novelgames.lobby.InviteDialog} Frame 1Symbol 386 Button
"acceptButton"Symbol 393 MovieClip {com.novelgames.lobby.InviteDialog} Frame 1Symbol 391 Button
"tableMask"Symbol 393 MovieClip {com.novelgames.lobby.InviteDialog} Frame 1Symbol 392 MovieClip
"rankText"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 397 EditableText
"shareBackground"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 403 MovieClip
"twitterButton"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 405 MovieClip
"mySpaceButton"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 407 MovieClip
"facebookButton"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 316 MovieClip
"facebookText"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 409 MovieClip
"twitterText"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 411 MovieClip
"mySpaceText"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 413 MovieClip
"emailButton"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 415 MovieClip
"emailText"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 417 MovieClip
"closeButton"Symbol 418 MovieClip {com.novelgames.lobby.RankPage} Frame 1Symbol 212 Button
"shareBackground"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 403 MovieClip
"twitterButton"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 405 MovieClip
"mySpaceButton"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 407 MovieClip
"facebookButton"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 316 MovieClip
"facebookText"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 409 MovieClip
"twitterText"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 411 MovieClip
"mySpaceText"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 413 MovieClip
"emailButton"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 415 MovieClip
"emailText"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 417 MovieClip
"closeButton"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1Symbol 212 Button
"viewer"Symbol 452 MovieClip {com.novelgames.lobby.Table} Frame 1Symbol 437 MovieClip {com.novelgames.lobby.Player}
"player"Symbol 452 MovieClip {com.novelgames.lobby.Table} Frame 1Symbol 437 MovieClip {com.novelgames.lobby.Player}
"toys"Symbol 452 MovieClip {com.novelgames.lobby.Table} Frame 1Symbol 451 MovieClip
"bubble"Symbol 459 MovieClip {com.novelgames.lobby.BubbleInvite} Frame 1Symbol 456 MovieClip
"bubble"Symbol 462 MovieClip {com.novelgames.lobby.BubbleJoinTable} Frame 1Symbol 456 MovieClip
"bubble"Symbol 464 MovieClip {com.novelgames.lobby.BubbleName} Frame 1Symbol 456 MovieClip
"nameText"Symbol 464 MovieClip {com.novelgames.lobby.BubbleName} Frame 1Symbol 463 EditableText
"bubble"Symbol 467 MovieClip {com.novelgames.lobby.BubbleOpenTable} Frame 1Symbol 456 MovieClip
"bubble"Symbol 470 MovieClip {com.novelgames.lobby.BubblePlaying} Frame 1Symbol 456 MovieClip
"bubble"Symbol 473 MovieClip {com.novelgames.lobby.BubbleStart} Frame 1Symbol 456 MovieClip
"bubble"Symbol 476 MovieClip {com.novelgames.lobby.BubbleView} Frame 1Symbol 456 MovieClip
"bubble"Symbol 480 MovieClip {com.novelgames.lobby.BubbleWaiting} Frame 1Symbol 456 MovieClip
"possibleNoOfPlayersText"Symbol 480 MovieClip {com.novelgames.lobby.BubbleWaiting} Frame 1Symbol 479 EditableText
"bubble"Symbol 483 MovieClip {com.novelgames.lobby.BubbleWaitingHost} Frame 1Symbol 456 MovieClip
"bubble"Symbol 485 MovieClip {com.novelgames.lobby.BubbleWaitingOrStart} Frame 1Symbol 456 MovieClip
"possibleNoOfPlayersText"Symbol 485 MovieClip {com.novelgames.lobby.BubbleWaitingOrStart} Frame 1Symbol 484 EditableText
"bubble"Symbol 487 MovieClip {com.novelgames.lobby.BubbleYou} Frame 1Symbol 456 MovieClip
"nameText"Symbol 487 MovieClip {com.novelgames.lobby.BubbleYou} Frame 1Symbol 486 EditableText
"point"Symbol 489 MovieClip Frame 1Symbol 215 MovieClip
"background"Symbol 493 MovieClip {com.novelgames.lobby.ChatInputBubble} Frame 1Symbol 489 MovieClip
"typeText"Symbol 493 MovieClip {com.novelgames.lobby.ChatInputBubble} Frame 1Symbol 491 MovieClip
"text"Symbol 493 MovieClip {com.novelgames.lobby.ChatInputBubble} Frame 1Symbol 492 EditableText
"closeButton"Symbol 506 MovieClip {com.novelgames.lobby.EmailPage} Frame 1Symbol 212 Button
"sendButton"Symbol 506 MovieClip {com.novelgames.lobby.EmailPage} Frame 1Symbol 498 Button
"ownEmailText"Symbol 506 MovieClip {com.novelgames.lobby.EmailPage} Frame 1Symbol 499 EditableText
"friendEmailsText"Symbol 506 MovieClip {com.novelgames.lobby.EmailPage} Frame 1Symbol 505 EditableText
"closeButton"Symbol 509 MovieClip {com.novelgames.lobby.AutoMatchDialogMC} Frame 1Symbol 212 Button
"tableMask"Symbol 509 MovieClip {com.novelgames.lobby.AutoMatchDialogMC} Frame 1Symbol 392 MovieClip
"continueButton"Symbol 515 MovieClip {com.novelgames.lobby.FacebookContinuePage} Frame 1Symbol 514 Button
"closeButton"Symbol 516 MovieClip {com.novelgames.lobby.FacebookNoGuestPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 516 MovieClip {com.novelgames.lobby.FacebookNoGuestPage} Frame 1Symbol 318 Button
"closeButton"Symbol 517 MovieClip {com.novelgames.lobby.FacebookPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 517 MovieClip {com.novelgames.lobby.FacebookPage} Frame 1Symbol 318 Button
"enterAsGuestButton"Symbol 517 MovieClip {com.novelgames.lobby.FacebookPage} Frame 1Symbol 350 Button
"reasonText"Symbol 518 MovieClip {com.novelgames.lobby.FacebookFailedPage} Frame 1Symbol 204 MovieClip
"closeButton"Symbol 518 MovieClip {com.novelgames.lobby.FacebookFailedPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 518 MovieClip {com.novelgames.lobby.FacebookFailedPage} Frame 1Symbol 318 Button
"enterAsGuestButton"Symbol 518 MovieClip {com.novelgames.lobby.FacebookFailedPage} Frame 1Symbol 350 Button
"reasonText"Symbol 519 MovieClip {com.novelgames.lobby.FacebookNoGuestFailedPage} Frame 1Symbol 204 MovieClip
"closeButton"Symbol 519 MovieClip {com.novelgames.lobby.FacebookNoGuestFailedPage} Frame 1Symbol 212 Button
"facebookLoginButton"Symbol 519 MovieClip {com.novelgames.lobby.FacebookNoGuestFailedPage} Frame 1Symbol 318 Button
"nameText"Symbol 521 MovieClip {com.novelgames.lobby.NameNoFacebookPage} Frame 1Symbol 520 EditableText
"submitButton"Symbol 521 MovieClip {com.novelgames.lobby.NameNoFacebookPage} Frame 1Symbol 209 Button
"closeButton"Symbol 521 MovieClip {com.novelgames.lobby.NameNoFacebookPage} Frame 1Symbol 212 Button
"nameText"Symbol 524 MovieClip {com.novelgames.lobby.NameEmailNoFacebookPage} Frame 1Symbol 522 EditableText
"emailText"Symbol 524 MovieClip {com.novelgames.lobby.NameEmailNoFacebookPage} Frame 1Symbol 523 EditableText
"submitButton"Symbol 524 MovieClip {com.novelgames.lobby.NameEmailNoFacebookPage} Frame 1Symbol 209 Button
"closeButton"Symbol 524 MovieClip {com.novelgames.lobby.NameEmailNoFacebookPage} Frame 1Symbol 212 Button
"nameText"Symbol 527 MovieClip {com.novelgames.lobby.NameEmailNoFacebookFailedPage} Frame 1Symbol 525 EditableText
"emailText"Symbol 527 MovieClip {com.novelgames.lobby.NameEmailNoFacebookFailedPage} Frame 1Symbol 526 EditableText
"reasonText"Symbol 527 MovieClip {com.novelgames.lobby.NameEmailNoFacebookFailedPage} Frame 1Symbol 204 MovieClip
"submitButton"Symbol 527 MovieClip {com.novelgames.lobby.NameEmailNoFacebookFailedPage} Frame 1Symbol 209 Button
"closeButton"Symbol 527 MovieClip {com.novelgames.lobby.NameEmailNoFacebookFailedPage} Frame 1Symbol 212 Button
"usernameText"Symbol 530 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookPage} Frame 1Symbol 528 EditableText
"passwordText"Symbol 530 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookPage} Frame 1Symbol 529 EditableText
"submitButton"Symbol 530 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookPage} Frame 1Symbol 347 Button
"registerButton"Symbol 530 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookPage} Frame 1Symbol 342 Button
"forgetPasswordButton"Symbol 530 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookPage} Frame 1Symbol 352 MovieClip
"closeButton"Symbol 530 MovieClip {com.novelgames.lobby.LoginNoGuestFacebookPage} Frame 1Symbol 212 Button
"usernameText"Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage} Frame 1Symbol 531 EditableText
"passwordText"Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage} Frame 1Symbol 532 EditableText
"reasonText"Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage} Frame 1Symbol 204 MovieClip
"closeButton"Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage} Frame 1Symbol 212 Button
"submitButton"Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage} Frame 1Symbol 347 Button
"forgetPasswordButton"Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage} Frame 1Symbol 352 MovieClip
"facebookLoginButton"Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage} Frame 1Symbol 318 Button
"registerButton"Symbol 533 MovieClip {com.novelgames.lobby.LoginNoGuestFailedPage} Frame 1Symbol 342 Button
"usernameText"Symbol 536 MovieClip {com.novelgames.lobby.LoginNoFacebookPage} Frame 1Symbol 534 EditableText
"passwordText"Symbol 536 MovieClip {com.novelgames.lobby.LoginNoFacebookPage} Frame 1Symbol 535 EditableText
"submitButton"Symbol 536 MovieClip {com.novelgames.lobby.LoginNoFacebookPage} Frame 1Symbol 347 Button
"registerButton"Symbol 536 MovieClip {com.novelgames.lobby.LoginNoFacebookPage} Frame 1Symbol 342 Button
"enterAsGuestButton"Symbol 536 MovieClip {com.novelgames.lobby.LoginNoFacebookPage} Frame 1Symbol 350 Button
"forgetPasswordButton"Symbol 536 MovieClip {com.novelgames.lobby.LoginNoFacebookPage} Frame 1Symbol 352 MovieClip
"closeButton"Symbol 536 MovieClip {com.novelgames.lobby.LoginNoFacebookPage} Frame 1Symbol 212 Button
"usernameText"Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage} Frame 1Symbol 537 EditableText
"passwordText"Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage} Frame 1Symbol 538 EditableText
"reasonText"Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage} Frame 1Symbol 204 MovieClip
"submitButton"Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage} Frame 1Symbol 347 Button
"registerButton"Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage} Frame 1Symbol 342 Button
"enterAsGuestButton"Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage} Frame 1Symbol 350 Button
"forgetPasswordButton"Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage} Frame 1Symbol 352 MovieClip
"closeButton"Symbol 539 MovieClip {com.novelgames.lobby.LoginNoFacebookFailedPage} Frame 1Symbol 212 Button
"share"Symbol 552 MovieClip Frame 1Symbol 547 Button
"embed"Symbol 552 MovieClip Frame 1Symbol 549 Button
"nextbtn"Symbol 552 MovieClip Frame 1Symbol 551 Button
"bar_frame"Symbol 556 MovieClip Frame 1Symbol 543 MovieClip
"control_buttons"Symbol 556 MovieClip Frame 1Symbol 552 MovieClip
"logo"Symbol 556 MovieClip Frame 1Symbol 555 Button

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 11284 bytes "<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmln ..."
Protect (24)Timeline Frame 10 bytes ""

Labels

"game"Frame 1
"hide"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 1
"newGame"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 7
"waiting"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 16
"throwToCentre"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 23
"closer"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 35
"opponentCloser"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 42
"first"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 55
"opponentFirst"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 60
"disconnected"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 72
"opponentDisconnected"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 83
"timesUp"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 101
"opponentTimesUp"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 109
"win"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 123
"lose"Symbol 62 MovieClip {com.novelgames.multiplayerflashgames.snowball.Message} Frame 128
"miss"Symbol 65 MovieClip {com.novelgames.multiplayerflashgames.snowball.Spark} Frame 1
"hit"Symbol 65 MovieClip {com.novelgames.multiplayerflashgames.snowball.Spark} Frame 7
"on"Symbol 165 MovieClip Frame 1
"off"Symbol 165 MovieClip Frame 6
"failed"Symbol 204 MovieClip Frame 1
"nameRejected"Symbol 204 MovieClip Frame 9
"loginFailed"Symbol 204 MovieClip Frame 21
"roomFull"Symbol 204 MovieClip Frame 32
"bottomRight"Symbol 223 MovieClip Frame 1
"bottomLeft"Symbol 223 MovieClip Frame 12
"topLeft"Symbol 223 MovieClip Frame 22
"topRight"Symbol 223 MovieClip Frame 29
"rightTop"Symbol 223 MovieClip Frame 37
"rightBottom"Symbol 223 MovieClip Frame 45
"leftBottom"Symbol 223 MovieClip Frame 55
"leftTop"Symbol 223 MovieClip Frame 64
"world"Symbol 257 MovieClip Frame 1
"friends"Symbol 257 MovieClip Frame 7
"wait"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 1
"disconnected"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 7
"loadFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 19
"joinRoomFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 30
"leaveRoomFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 43
"openTableFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 57
"joinTableFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 71
"leaveTableFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 84
"robotJoinTableFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 98
"inviteFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 115
"invitationSent"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 128
"startGameFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 141
"sendingEmails"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 155
"sendEmailsFailed"Symbol 308 MovieClip {com.novelgames.lobby.StatusMC} Frame 168
"closed"Symbol 368 MovieClip Frame 1
"opened"Symbol 368 MovieClip Frame 9
"_up"Symbol 375 MovieClip Frame 1
"_over"Symbol 375 MovieClip Frame 7
"human"Symbol 437 MovieClip {com.novelgames.lobby.Player} Frame 1
"robot"Symbol 437 MovieClip {com.novelgames.lobby.Player} Frame 9
"loading"Symbol 437 MovieClip {com.novelgames.lobby.Player} Frame 16
"picture"Symbol 437 MovieClip {com.novelgames.lobby.Player} Frame 24
"win"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 1
"draw"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 7
"lose"Symbol 449 MovieClip {com.novelgames.lobby.ResultPage} Frame 14
"downRight"Symbol 456 MovieClip Frame 1
"downLeft"Symbol 456 MovieClip Frame 11
"upRight"Symbol 456 MovieClip Frame 20
"upLeft"Symbol 456 MovieClip Frame 28
"bottomRight"Symbol 489 MovieClip Frame 1
"bottomLeft"Symbol 489 MovieClip Frame 12
"topLeft"Symbol 489 MovieClip Frame 22
"topRight"Symbol 489 MovieClip Frame 29
"rightTop"Symbol 489 MovieClip Frame 37
"rightBottom"Symbol 489 MovieClip Frame 45
"leftBottom"Symbol 489 MovieClip Frame 55
"leftTop"Symbol 489 MovieClip Frame 64




http://swfchan.com/42/206741/info.shtml
Created: 9/10 -2018 18:23:34 Last modified: 9/10 -2018 18:23:34 Server time: 03/05 -2024 11:32:58