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

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

Snood.swf

This is the info page for
Flash #206106

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


Text
200+

+175

+150

+125

+100

+75

+50

+25

<p align="right"><font face="Verdana" size="10" color="#000000" letterSpacing="0.000000" kerning="1"><b><i>Style: </i></b></font></p>

<p align="left"><font face="Verdana" size="10" color="#000000" letterSpacing="0.000000" kerning="1"><b><i>Difficulty: </i></b></font></p>

<p align="right"><font face="Crystal Italic" size="32" color="#7ad18f" letterSpacing="0.000000" kerning="1">0123456</font></p>

<p align="right"><font face="Crystal Italic" size="32" color="#7ad18f" letterSpacing="0.000000" kerning="1">012</font></p>

<p align="left"><font face="Crystal Italic" size="24" color="#7ad18f" letterSpacing="0.000000" kerning="1">TIME ATTACK</font></p>

<p align="left"><font face="Crystal Italic" size="24" color="#7ad18f" letterSpacing="0.000000" kerning="1">CHILD</font></p>

<p align="center"><font face="Komika Display" size="16" color="#feca33" letterSpacing="0.000000" kerning="1">in</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Pro Mode</font></p>

<p align="center"><font face="Komika Display" size="16" color="#feca33" letterSpacing="0.000000" kerning="1">playername</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">We are experiencing </font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">technical difficulties.</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Please try again later.</font></p>

<p align="center"><font face="Komika Display" size="16" color="#000000" letterSpacing="0.000000" kerning="1">(Most likely due to maintenance.)</font></p>

<p align="center"><font face="Komika Display" size="36" color="#feca33" letterSpacing="0.000000" kerning="1">SORRY!</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">classic</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">new</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">child</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">easy</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">medium</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">hard</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">evil</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">Challenge your </font></p><p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">opponent to:</font></p>

<p align="center"><font face="Komika Display" size="24" color="#fee333" letterSpacing="0.000000" kerning="1">Play Alone</font></p>

<p align="center"><font face="Komika Display" size="24" color="#fee333" letterSpacing="0.000000" kerning="1">Play Alone</font></p>

<p align="center"><font face="Komika Display" size="24" color="#fee333" letterSpacing="0.000000" kerning="1">Against Online Opponent</font></p>

<p align="center"><font face="Komika Display" size="24" color="#fee333" letterSpacing="0.000000" kerning="1">Against Online Opponent</font></p>

<p align="center"><font face="Komika Display" size="24" color="#fee333" letterSpacing="0.000000" kerning="1">Opponent Plays Later</font></p>

<p align="center"><font face="Komika Display" size="24" color="#fee333" letterSpacing="0.000000" kerning="1">Opponent Plays Later</font></p>

<p align="right"><font face="Komika Display" size="28" color="#ffffff" letterSpacing="-1.000000" kerning="1">99</font></p>

<p align="left"><font face="Komika Display" size="28" color="#ffffff" letterSpacing="-1.000000" kerning="1">new</font></p>

<p align="right"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="-1.000000" kerning="1">99</font></p>

<p align="left"><font face="Komika Display" size="18" color="#ffffff" letterSpacing="-1.000000" kerning="1">challenges to level up!</font></p>

<p align="justify"><font face="Komika Display" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">You don&apos;t have enough Monkey Points to buy this feature. Click the coins to learn how to earn additional Monkey Point for FREE!</font></p>

<p align="center"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">TiME ATTACK</font></p><p align="center"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Mode</font></p>

<p align="center"><font face="Komika Display" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">Ratchet up the tension as the clock ticks down on timed rounds.</font></p>

<p align="left"><font face="Komika Display" size="52" color="#feca33" letterSpacing="0.000000" kerning="1">????</font></p>

<p align="center"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Monkey Points!</font></p>

<p align="left"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Only</font></p>

<p align="center"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">PUZZLE</font></p><p align="center"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Mode</font></p>

<p align="center"><font face="Komika Display" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">90 unique layouts test your brains and skill.</font></p><p align="center"><font face="Komika Display" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">Child to Evil difficulty!</font></p>

<p align="left"><font face="Komika Display" size="52" color="#feca33" letterSpacing="0.000000" kerning="1">????</font></p>

<p align="center"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Monkey Points!</font></p>

<p align="left"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Only</font></p>

<p align="center"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">NO ADS!</font></p>

<p align="center"><font face="Komika Display" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">Never slow down for </font></p><p align="center"><font face="Komika Display" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">an ad again!</font></p>

<p align="left"><font face="Komika Display" size="52" color="#feca33" letterSpacing="0.000000" kerning="1">????</font></p>

<p align="center"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Monkey Points!</font></p>

<p align="left"><font face="Komika Display" size="32" color="#ffffff" letterSpacing="0.000000" kerning="1">Only</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">ON</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">OFF</font></p>

<p align="center"><font face="Komika Display" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1">selected modes</font></p>

<p align="center"><font face="Komika Display" size="10" color="#000000" letterSpacing="0.000000" kerning="1">Mode</font></p><p align="center"><font face="Komika Display" size="10" color="#000000" letterSpacing="0.000000" kerning="1">play</font></p>

vs Opponent

Date

PTS

PTS

Live!

<p align="left"><font face="Komika Display" size="26" color="#feca33" letterSpacing="-1.000000" kerning="1">2345 Monkey Points</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Thank you for visiting</font></p>

R

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">is sponsored by...</font></p>

<p align="center"><font face="Komika Display" size="32" color="#f3c10d" letterSpacing="0.000000" kerning="1">You Win</font></p>

<p align="center"><font face="Komika Display" size="32" color="#f3c10d" letterSpacing="0.000000" kerning="1">Monkey Points</font></p>

<p align="center"><font face="Komika Display" size="56" color="#f3c10d" letterSpacing="0.000000" kerning="1">2500</font></p>

<p align="center"><font face="Komika Display" size="22" color="#feca33" letterSpacing="0.000000" kerning="1">line1</font></p><p align="center"><font face="Komika Display" size="22" color="#feca33" letterSpacing="0.000000" kerning="1">line2</font></p><p align="center"><font face="Komika Display" size="22" color="#feca33" letterSpacing="0.000000" kerning="1">line3</font></p><p align="center"><font face="Komika Display" size="22" color="#feca33" letterSpacing="0.000000" kerning="1">line4</font></p><p align="center"><font face="Komika Display" size="22" color="#feca33" letterSpacing="0.000000" kerning="1">line5</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Thank you for inviting your friends!</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Once they join, you win an in game </font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Scratch Card </font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">that could be worth up to</font></p>

<p align="left"><font face="Komika Display" size="36" color="#feca33" letterSpacing="0.000000" kerning="1">22</font></p>

<p align="left"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">Monkey Points</font></p>

<p align="center"><font face="Komika Display" size="36" color="#feca33" letterSpacing="0.000000" kerning="1">Whatever you get points for </font></p><p align="center"><font face="Komika Display" size="36" color="#feca33" letterSpacing="0.000000" kerning="1">in 3 lines.</font></p>

<p align="left"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">2345 Monkey Points</font></p>

<p align="center"><font face="Komika Display" size="22" color="#feca33" letterSpacing="0.000000" kerning="1">CATEGORY</font></p>

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">in the category of</font></p>

LEVEL

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">You reached the new level of</font></p>

<p align="left"><font face="Komika Display" size="24" color="#feca33" letterSpacing="0.000000" kerning="1">2345 Monkey Points</font></p>

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">Description of the</font></p><p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">new achievement.</font></p>

ACHIEVEMENT

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">You attained a new achievement:</font></p>

<p align="center"><font face="Komika Display" size="18" color="#000000" letterSpacing="0.000000" kerning="1">Chat, Call, IM, e-mail, or yell loudly </font></p><p align="center"><font face="Komika Display" size="18" color="#000000" letterSpacing="0.000000" kerning="1">to your friend and tell them to open </font></p><p align="center"><font face="Komika Display" size="18" color="#000000" letterSpacing="0.000000" kerning="1">&quot;Notifications&quot; in the bottom right </font></p><p align="center"><font face="Komika Display" size="18" color="#000000" letterSpacing="0.000000" kerning="1">of their browser window.</font></p>

Chat (34)

See All

Notifications

Your Name has challenged
you to a LIVE! game of Snood.

- CLICK HERE TO PLAY -
Try to accept soon while he is
still online. 2 seconds ago

<p align="center"><font face="Komika Display" size="24" color="#feca33" letterSpacing="0.000000" kerning="1">Waiting for your opponent </font></p><p align="center"><font face="Komika Display" size="24" color="#feca33" letterSpacing="0.000000" kerning="1">to accept your challenge...</font></p>

<p align="center"><font face="Komika Display" size="24" color="#feca33" letterSpacing="0.000000" kerning="1">You and your opponent are connected.</font></p>

<p align="center"><font face="Komika Display" size="24" color="#feca33" letterSpacing="0.000000" kerning="1">The game is about to start!</font></p>

<p align="center"><font face="Komika Display" size="24" color="#feca33" letterSpacing="0.000000" kerning="1">Waiting for your opponent to press</font></p>

<p align="center"><font face="Komika Display" size="24" color="#feca33" letterSpacing="0.000000" kerning="1">Your opponent has not yet accepted your challenge. What would you like to do?</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line1</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line2</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line3</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line4</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line5</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line6</font></p>

<p align="left"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">Each turn you may launch a randomly selected snood into the play field.</font></p>

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">Snoods can be launched directly at a target or ricocheted off the walls for extra style points.</font></p>

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">Snoods teleported off the field will also release any other snoods hanging from them.</font></p>

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">Connect 3 or more snoods together to teleport them off the play field. </font></p>

<p align="left"><font face="Komika Display" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1">don&apos;t show instructions for this mode again</font></p>

<p align="left"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">Style points are given for more difficult or stylish shots like bouncing snoods off the wall or releasing groups of snoods. </font></p>

<p align="left"><font face="Komika Display" size="22" color="#0494f2" letterSpacing="0.000000" kerning="1">Bank Shot</font></p>

<p align="left"><font face="Komika Display" size="22" color="#0494f2" letterSpacing="0.000000" kerning="1">Streak</font></p>

<p align="left"><font face="Komika Display" size="52" color="#ffffff" letterSpacing="0.000000" kerning="1">+5</font></p>

<p align="left"><font face="Komika Display" size="52" color="#ffffff" letterSpacing="0.000000" kerning="1">+15</font></p>

<p align="right"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">Sometimes on later levels you may </font></p><p align="right"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">encounter sleeping snoods, they must first </font></p><p align="right"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">be woken up before they will react to other snoods.</font></p>

<p align="right"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">The danger meter builds with each snood launched, and recedes when snoods are released. If the danger meter fills, the snoods descend. </font></p>

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">If they descend past the bottom of the playfield, the game is over. </font></p>

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">The round is cleared when all snoods are teleported off. </font></p>

<p align="right"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">next</font></p>

<p align="right"><font face="Komika Display" size="18" color="#7f0009" letterSpacing="0.000000" kerning="1">next</font></p>

<p align="right"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">next</font></p>

<p align="center"><font face="Komika Display" size="16" color="#feca33" letterSpacing="0.000000" kerning="1">loadingmessage</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Message goes in here</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line2</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line3</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line4</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line5</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Message goes in here</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line2</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line3</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line4</font></p><p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">line5</font></p>

<p align="center"><font face="Komika Display" size="22" color="#feca33" letterSpacing="0.000000" kerning="1">You haven&apos;t played any challenges yet.</font></p>

<p align="left"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">Status</font></p>

<p align="left"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">Contestant</font></p>

<p align="left"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">Mode</font></p>

<p align="left"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">Date</font></p>

<p align="left"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">Score</font></p>

<p align="left"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">Action</font></p>

<p align="left"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Overall Ranking</font></p>

<p align="center"><font face="Komika Display" size="32" color="#feca33" letterSpacing="0.000000" kerning="1">Text</font></p>

<p align="left"><font face="Komika Display" size="36" color="#feca33" letterSpacing="0.000000" kerning="1">10/10</font></p>

<p align="left"><font face="Komika Display" size="36" color="#feca33" letterSpacing="-1.000000" kerning="1">Jason</font></p>

<p align="right"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">#456</font></p>

<p align="center"><font face="Komika Display" size="20" color="#ff0000" letterSpacing="0.000000" kerning="1">ACHIEVEMENT</font></p>

<p align="center"><font face="Komika Display" size="16" color="#000000" letterSpacing="0.000000" kerning="1">line1</font></p><p align="center"><font face="Komika Display" size="16" color="#000000" letterSpacing="0.000000" kerning="1">line2</font></p><p align="center"><font face="Komika Display" size="16" color="#000000" letterSpacing="0.000000" kerning="1">line3</font></p>

<p align="center"><font face="Komika Display" size="40" color="#feca33" letterSpacing="0.000000" kerning="1">4 achievements</font></p>

<p align="center"><font face="Komika Display" size="30" color="#feca33" letterSpacing="0.000000" kerning="1">Jason</font></p>

<p align="right"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">#456</font></p>

<p align="center"><font face="Komika Display" size="12" color="#000000" letterSpacing="-0.500000" kerning="1">Achieve-</font></p><p align="center"><font face="Komika Display" size="12" color="#000000" letterSpacing="-0.500000" kerning="1">ments</font></p>

<p align="center"><font face="Komika Display" size="12" color="#000000" letterSpacing="0.000000" kerning="1">Text Here</font></p><p align="center"></p>

<p align="left"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">level chart</font></p>

<p align="left"><font face="Komika Display" size="18" color="#7f0009" letterSpacing="0.000000" kerning="1">level chart</font></p>

<p align="left"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">level chart</font></p>

<p align="left"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">detailed stats</font></p>

<p align="left"><font face="Komika Display" size="18" color="#7f0009" letterSpacing="0.000000" kerning="1">detailed stats</font></p>

<p align="left"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">detailed stats</font></p>

<p align="right"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">done</font></p>

<p align="right"><font face="Komika Display" size="18" color="#7f0009" letterSpacing="0.000000" kerning="1">done</font></p>

<p align="right"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">done</font></p>

<p align="left"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">back</font></p>

<p align="left"><font face="Komika Display" size="18" color="#7f0009" letterSpacing="0.000000" kerning="1">back</font></p>

<p align="left"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">back</font></p>

<p align="left"><font face="Komika Display" size="20" color="#feca33" letterSpacing="0.000000" kerning="1">Definition</font></p>

<p align="left"><font face="Komika Display" size="24" color="#feca33" letterSpacing="0.000000" kerning="1">Tips</font></p>

<p align="left"><font face="Komika Display" size="12" color="#feca33" letterSpacing="0.000000" kerning="1">line1</font></p><p align="left"><font face="Komika Display" size="12" color="#feca33" letterSpacing="0.000000" kerning="1">line2</font></p><p align="left"><font face="Komika Display" size="12" color="#feca33" letterSpacing="0.000000" kerning="1">line3</font></p><p align="left"><font face="Komika Display" size="12" color="#feca33" letterSpacing="0.000000" kerning="1">line4</font></p><p align="left"><font face="Komika Display" size="12" color="#feca33" letterSpacing="0.000000" kerning="1">line5</font></p><p align="left"><font face="Komika Display" size="12" color="#feca33" letterSpacing="0.000000" kerning="1">line6</font></p>

<p align="left"><font face="Komika Display" size="16" color="#feca33" letterSpacing="0.000000" kerning="1">line1</font></p><p align="left"><font face="Komika Display" size="16" color="#feca33" letterSpacing="0.000000" kerning="1">line2</font></p><p align="left"><font face="Komika Display" size="16" color="#feca33" letterSpacing="0.000000" kerning="1">line3</font></p><p align="left"><font face="Komika Display" size="16" color="#feca33" letterSpacing="0.000000" kerning="1">line4</font></p>

<p align="center"><font face="Komika Display" size="12" color="#000000" letterSpacing="0.000000" kerning="1">Players Per Level</font></p>

<p align="center"><font face="Komika Display" size="18" color="#feca33" letterSpacing="0.000000" kerning="1">Definition</font></p>

<p align="left"></p>

<p align="left"><font face="Komika Display" size="16" color="#000000" letterSpacing="0.000000" kerning="1">online only</font></p>

<p align="right"><font face="Komika Display" size="14" color="#000000" letterSpacing="0.000000" kerning="1">Warning: Child and Easy difficulty games do not count towards earning new levels.</font></p>

<p align="right"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Score:</font></p>

<p align="right"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Style Bonus:</font></p>

<p align="right"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Snoods Used Bonus:</font></p>

<p align="right"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Clearance Bonus:</font></p>

<p align="right"><font face="Komika Display" size="20" color="#000000" letterSpacing="0.000000" kerning="1">Snoods Used:</font></p>

<p align="right"><font face="Komika Display" size="30" color="#feca33" letterSpacing="0.000000" kerning="1">TOTAL:</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">12345678</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">12345678</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">12345678</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">12345678</font></p>

<p align="center"><font face="Komika Display" size="30" color="#feca33" letterSpacing="0.000000" kerning="1">12345678</font></p>

<p align="center"><font face="Komika Display" size="20" color="#000000" letterSpacing="0.000000" kerning="1">12345678</font></p>

<p align="right"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Score:</font></p>

<p align="right"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Style Bonus:</font></p>

<p align="right"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Snoods Used Bonus:</font></p>

<p align="right"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">Clearance Bonus:</font></p>

<p align="right"><font face="Komika Display" size="20" color="#000000" letterSpacing="0.000000" kerning="1">Snoods Used:</font></p>

<p align="right"><font face="Komika Display" size="30" color="#feca33" letterSpacing="0.000000" kerning="1">TOTAL:</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="30" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="26" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="30" color="#feca33" letterSpacing="0.000000" kerning="1">1234567</font></p>

<p align="center"><font face="Komika Display" size="20" color="#000000" letterSpacing="0.000000" kerning="1">123456</font></p>

<p align="center"><font face="Komika Display" size="20" color="#000000" letterSpacing="0.000000" kerning="1">123456</font></p>

<p align="center"><font face="Komika Display" size="22" color="#feca33" letterSpacing="0.000000" kerning="1">No Matches Found</font></p>

ActionScript [AS3]

Section 1
//aif (button_press_1.aif) package button_press_1 { import flash.media.*; public dynamic class aif extends Sound { } }//package button_press_1
Section 2
//aif (buttonclick.aif) package buttonclick { import flash.media.*; public dynamic class aif extends Sound { } }//package buttonclick
Section 3
//aif (cannon_fire.aif) package cannon_fire { import flash.media.*; public dynamic class aif extends Sound { } }//package cannon_fire
Section 4
//aif (challengeconfirm.aif) package challengeconfirm { import flash.media.*; public dynamic class aif extends Sound { } }//package challengeconfirm
Section 5
//aif (challengeplay.aif) package challengeplay { import flash.media.*; public dynamic class aif extends Sound { } }//package challengeplay
Section 6
//aif (challengeremove.aif) package challengeremove { import flash.media.*; public dynamic class aif extends Sound { } }//package challengeremove
Section 7
//aif (ClickTest.aif) package ClickTest { import flash.media.*; public dynamic class aif extends Sound { } }//package ClickTest
Section 8
//MD5 (com.adobe.crypto.MD5) package com.adobe.crypto { import com.adobe.utils.*; public class MD5 { public static function hash(_arg1:String):String{ var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local2 = 1732584193; var _local3 = -271733879; var _local4 = -1732584194; var _local5 = 271733878; var _local10:Array = createBlocks(_arg1); var _local11:int = _local10.length; var _local12:int; while (_local12 < _local11) { _local6 = _local2; _local7 = _local3; _local8 = _local4; _local9 = _local5; _local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 0)], 7, -680876936); _local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 1)], 12, -389564586); _local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 2)], 17, 606105819); _local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 3)], 22, -1044525330); _local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 4)], 7, -176418897); _local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 5)], 12, 1200080426); _local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 6)], 17, -1473231341); _local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 7)], 22, -45705983); _local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 8)], 7, 1770035416); _local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 9)], 12, -1958414417); _local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 10)], 17, -42063); _local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 11)], 22, -1990404162); _local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 12)], 7, 1804603682); _local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 13)], 12, -40341101); _local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 14)], 17, -1502002290); _local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 15)], 22, 1236535329); _local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 1)], 5, -165796510); _local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 6)], 9, -1069501632); _local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 11)], 14, 643717713); _local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 0)], 20, -373897302); _local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 5)], 5, -701558691); _local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 10)], 9, 38016083); _local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 15)], 14, -660478335); _local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 4)], 20, -405537848); _local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 9)], 5, 568446438); _local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 14)], 9, -1019803690); _local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 3)], 14, -187363961); _local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 8)], 20, 1163531501); _local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 13)], 5, -1444681467); _local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 2)], 9, -51403784); _local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 7)], 14, 1735328473); _local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 12)], 20, -1926607734); _local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 5)], 4, -378558); _local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 8)], 11, -2022574463); _local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 11)], 16, 1839030562); _local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 14)], 23, -35309556); _local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 1)], 4, -1530992060); _local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 4)], 11, 1272893353); _local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 7)], 16, -155497632); _local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 10)], 23, -1094730640); _local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 13)], 4, 681279174); _local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 0)], 11, -358537222); _local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 3)], 16, -722521979); _local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 6)], 23, 76029189); _local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 9)], 4, -640364487); _local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 12)], 11, -421815835); _local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 15)], 16, 530742520); _local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 2)], 23, -995338651); _local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 0)], 6, -198630844); _local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 7)], 10, 1126891415); _local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 14)], 15, -1416354905); _local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 5)], 21, -57434055); _local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 12)], 6, 1700485571); _local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 3)], 10, -1894986606); _local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 10)], 15, -1051523); _local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 1)], 21, -2054922799); _local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 8)], 6, 1873313359); _local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 15)], 10, -30611744); _local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 6)], 15, -1560198380); _local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 13)], 21, 1309151649); _local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 4)], 6, -145523070); _local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 11)], 10, -1120210379); _local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 2)], 15, 718787259); _local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 9)], 21, -343485551); _local2 = (_local2 + _local6); _local3 = (_local3 + _local7); _local4 = (_local4 + _local8); _local5 = (_local5 + _local9); _local12 = (_local12 + 16); }; return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5))); } private static function f(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg2) | (~(_arg1) & _arg3))); } private static function g(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg3) | (_arg2 & ~(_arg3)))); } private static function h(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 ^ _arg2) ^ _arg3)); } private static function i(_arg1:int, _arg2:int, _arg3:int):int{ return ((_arg2 ^ (_arg1 | ~(_arg3)))); } private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{ var _local9:int = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8); return ((IntUtil.rol(_local9, _arg7) + _arg3)); } private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function createBlocks(_arg1:String):Array{ var _local2:Array = new Array(); var _local3:int = (_arg1.length * 8); var _local4 = 0xFF; var _local5:int; while (_local5 < _local3) { _local2[(_local5 >> 5)] = (_local2[(_local5 >> 5)] | ((_arg1.charCodeAt((_local5 / 8)) & _local4) << (_local5 % 32))); _local5 = (_local5 + 8); }; _local2[(_local3 >> 5)] = (_local2[(_local3 >> 5)] | (128 << (_local3 % 32))); _local2[((((_local3 + 64) >>> 9) << 4) + 14)] = _local3; return (_local2); } } }//package com.adobe.crypto
Section 9
//JSON (com.adobe.serialization.json.JSON) package com.adobe.serialization.json { public class JSON { public static function encode(_arg1:Object):String{ var _local2:JSONEncoder = new JSONEncoder(_arg1); return (_local2.getString()); } public static function decode(_arg1:String){ var _local2:JSONDecoder = new JSONDecoder(_arg1); return (_local2.getValue()); } } }//package com.adobe.serialization.json
Section 10
//JSONDecoder (com.adobe.serialization.json.JSONDecoder) package com.adobe.serialization.json { public class JSONDecoder { private var value; private var tokenizer:JSONTokenizer; private var token:JSONToken; public function JSONDecoder(_arg1:String){ tokenizer = new JSONTokenizer(_arg1); nextToken(); value = parseValue(); } public function getValue(){ return (value); } private function nextToken():JSONToken{ return ((token = tokenizer.getNextToken())); } private function parseArray():Array{ var _local1:Array = new Array(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (_local1); }; while (true) { _local1.push(parseValue()); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACKET){ return (_local1); }; if (token.type == JSONTokenType.COMMA){ nextToken(); } else { tokenizer.parseError(("Expecting ] or , but found " + token.value)); }; }; return (null); } private function parseObject():Object{ var _local2:String; var _local1:Object = new Object(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (_local1); }; while (true) { if (token.type == JSONTokenType.STRING){ _local2 = String(token.value); nextToken(); if (token.type == JSONTokenType.COLON){ nextToken(); _local1[_local2] = parseValue(); nextToken(); if (token.type == JSONTokenType.RIGHT_BRACE){ return (_local1); }; if (token.type == JSONTokenType.COMMA){ nextToken(); } else { tokenizer.parseError(("Expecting } or , but found " + token.value)); }; } else { tokenizer.parseError(("Expecting : but found " + token.value)); }; } else { tokenizer.parseError(("Expecting string but found " + token.value)); }; }; return (null); } private function parseValue():Object{ switch (token.type){ case JSONTokenType.LEFT_BRACE: return (parseObject()); case JSONTokenType.LEFT_BRACKET: return (parseArray()); case JSONTokenType.STRING: case JSONTokenType.NUMBER: case JSONTokenType.TRUE: case JSONTokenType.FALSE: case JSONTokenType.NULL: return (token.value); default: tokenizer.parseError(("Unexpected " + token.value)); }; return (null); } } }//package com.adobe.serialization.json
Section 11
//JSONEncoder (com.adobe.serialization.json.JSONEncoder) package com.adobe.serialization.json { import flash.utils.*; public class JSONEncoder { private var jsonString:String; public function JSONEncoder(_arg1){ jsonString = convertToString(_arg1); } public function getString():String{ return (jsonString); } private function convertToString(_arg1):String{ if ((_arg1 is String)){ return (escapeString((_arg1 as String))); }; if ((_arg1 is Number)){ return ((isFinite((_arg1 as Number))) ? _arg1.toString() : "null"); } else { if ((_arg1 is Boolean)){ return ((_arg1) ? "true" : "false"); } else { if ((_arg1 is Array)){ return (arrayToString((_arg1 as Array))); }; if ((((_arg1 is Object)) && (!((_arg1 == null))))){ return (objectToString(_arg1)); }; }; }; return ("null"); } private function escapeString(_arg1:String):String{ var _local3:String; var _local6:String; var _local7:String; var _local2 = ""; var _local4:Number = _arg1.length; var _local5:int; while (_local5 < _local4) { _local3 = _arg1.charAt(_local5); switch (_local3){ case "\"": _local2 = (_local2 + "\\\""); break; case "\\": _local2 = (_local2 + "\\\\"); break; case "\b": _local2 = (_local2 + "\\b"); break; case "\f": _local2 = (_local2 + "\\f"); break; case "\n": _local2 = (_local2 + "\\n"); break; case "\r": _local2 = (_local2 + "\\r"); break; case "\t": _local2 = (_local2 + "\\t"); break; default: if (_local3 < " "){ _local6 = _local3.charCodeAt(0).toString(16); _local7 = ((_local6.length == 2)) ? "00" : "000"; _local2 = (_local2 + (("\\u" + _local7) + _local6)); } else { _local2 = (_local2 + _local3); }; }; _local5++; }; return ((("\"" + _local2) + "\"")); } private function arrayToString(_arg1:Array):String{ var _local2 = ""; var _local3:int; while (_local3 < _arg1.length) { if (_local2.length > 0){ _local2 = (_local2 + ","); }; _local2 = (_local2 + convertToString(_arg1[_local3])); _local3++; }; return ((("[" + _local2) + "]")); } private function objectToString(_arg1:Object):String{ var value:Object; var key:String; var v:XML; var o = _arg1; var s = ""; var classInfo:XML = describeType(o); if (classInfo.@name.toString() == "Object"){ for (key in o) { value = o[key]; if ((value is Function)){ } else { if (s.length > 0){ s = (s + ","); }; s = (s + ((escapeString(key) + ":") + convertToString(value))); }; }; } else { for each (v in classInfo..*.(((name() == "variable")) || ((name() == "accessor")))) { if (s.length > 0){ s = (s + ","); }; s = (s + ((escapeString(v.@name.toString()) + ":") + convertToString(o[v.@name]))); }; }; return ((("{" + s) + "}")); } } }//package com.adobe.serialization.json
Section 12
//JSONParseError (com.adobe.serialization.json.JSONParseError) package com.adobe.serialization.json { public class JSONParseError extends Error { private var _location:int; private var _text:String; public function JSONParseError(_arg1:String="", _arg2:int=0, _arg3:String=""){ super(_arg1); _location = _arg2; _text = _arg3; } public function get location():int{ return (_location); } public function get text():String{ return (_text); } } }//package com.adobe.serialization.json
Section 13
//JSONToken (com.adobe.serialization.json.JSONToken) package com.adobe.serialization.json { public class JSONToken { private var _type:int; private var _value:Object; public function JSONToken(_arg1:int=-1, _arg2:Object=null){ _type = _arg1; _value = _arg2; } public function get type():int{ return (_type); } public function set type(_arg1:int):void{ _type = _arg1; } public function get value():Object{ return (_value); } public function set value(_arg1:Object):void{ _value = _arg1; } } }//package com.adobe.serialization.json
Section 14
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer) package com.adobe.serialization.json { public class JSONTokenizer { private var obj:Object; private var jsonString:String; private var loc:int; private var ch:String; public function JSONTokenizer(_arg1:String){ jsonString = _arg1; loc = 0; nextChar(); } public function getNextToken():JSONToken{ var _local2:String; var _local3:String; var _local4:String; var _local1:JSONToken = new JSONToken(); skipIgnored(); switch (ch){ case "{": _local1.type = JSONTokenType.LEFT_BRACE; _local1.value = "{"; nextChar(); break; case "}": _local1.type = JSONTokenType.RIGHT_BRACE; _local1.value = "}"; nextChar(); break; case "[": _local1.type = JSONTokenType.LEFT_BRACKET; _local1.value = "["; nextChar(); break; case "]": _local1.type = JSONTokenType.RIGHT_BRACKET; _local1.value = "]"; nextChar(); break; case ",": _local1.type = JSONTokenType.COMMA; _local1.value = ","; nextChar(); break; case ":": _local1.type = JSONTokenType.COLON; _local1.value = ":"; nextChar(); break; case "t": _local2 = ((("t" + nextChar()) + nextChar()) + nextChar()); if (_local2 == "true"){ _local1.type = JSONTokenType.TRUE; _local1.value = true; nextChar(); } else { parseError(("Expecting 'true' but found " + _local2)); }; break; case "f": _local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar()); if (_local3 == "false"){ _local1.type = JSONTokenType.FALSE; _local1.value = false; nextChar(); } else { parseError(("Expecting 'false' but found " + _local3)); }; break; case "n": _local4 = ((("n" + nextChar()) + nextChar()) + nextChar()); if (_local4 == "null"){ _local1.type = JSONTokenType.NULL; _local1.value = null; nextChar(); } else { parseError(("Expecting 'null' but found " + _local4)); }; break; case "\"": _local1 = readString(); break; default: if (((isDigit(ch)) || ((ch == "-")))){ _local1 = readNumber(); } else { if (ch == ""){ return (null); }; parseError((("Unexpected " + ch) + " encountered")); }; }; return (_local1); } private function readString():JSONToken{ var _local3:String; var _local4:int; var _local1:JSONToken = new JSONToken(); _local1.type = JSONTokenType.STRING; var _local2 = ""; nextChar(); while (((!((ch == "\""))) && (!((ch == ""))))) { if (ch == "\\"){ nextChar(); switch (ch){ case "\"": _local2 = (_local2 + "\""); break; case "/": _local2 = (_local2 + "/"); break; case "\\": _local2 = (_local2 + "\\"); break; case "b": _local2 = (_local2 + "\b"); break; case "f": _local2 = (_local2 + "\f"); break; case "n": _local2 = (_local2 + "\n"); break; case "r": _local2 = (_local2 + "\r"); break; case "t": _local2 = (_local2 + "\t"); break; case "u": _local3 = ""; _local4 = 0; while (_local4 < 4) { if (!isHexDigit(nextChar())){ parseError((" Excepted a hex digit, but found: " + ch)); }; _local3 = (_local3 + ch); _local4++; }; _local2 = (_local2 + String.fromCharCode(parseInt(_local3, 16))); break; default: _local2 = (_local2 + ("\\" + ch)); }; } else { _local2 = (_local2 + ch); }; nextChar(); }; if (ch == ""){ parseError("Unterminated string literal"); }; nextChar(); _local1.value = _local2; return (_local1); } private function readNumber():JSONToken{ var _local1:JSONToken = new JSONToken(); _local1.type = JSONTokenType.NUMBER; var _local2 = ""; if (ch == "-"){ _local2 = (_local2 + "-"); nextChar(); }; if (!isDigit(ch)){ parseError("Expecting a digit"); }; if (ch == "0"){ _local2 = (_local2 + ch); nextChar(); if (isDigit(ch)){ parseError("A digit cannot immediately follow 0"); }; } else { while (isDigit(ch)) { _local2 = (_local2 + ch); nextChar(); }; }; if (ch == "."){ _local2 = (_local2 + "."); nextChar(); if (!isDigit(ch)){ parseError("Expecting a digit"); }; while (isDigit(ch)) { _local2 = (_local2 + ch); nextChar(); }; }; if ((((ch == "e")) || ((ch == "E")))){ _local2 = (_local2 + "e"); nextChar(); if ((((ch == "+")) || ((ch == "-")))){ _local2 = (_local2 + ch); nextChar(); }; if (!isDigit(ch)){ parseError("Scientific notation number needs exponent value"); }; while (isDigit(ch)) { _local2 = (_local2 + ch); nextChar(); }; }; var _local3:Number = Number(_local2); if (((isFinite(_local3)) && (!(isNaN(_local3))))){ _local1.value = _local3; return (_local1); }; parseError((("Number " + _local3) + " is not valid!")); return (null); } private function nextChar():String{ return ((ch = jsonString.charAt(loc++))); } private function skipIgnored():void{ skipWhite(); skipComments(); skipWhite(); } private function skipComments():void{ if (ch == "/"){ nextChar(); switch (ch){ case "/": do { nextChar(); } while (((!((ch == "\n"))) && (!((ch == ""))))); nextChar(); break; case "*": nextChar(); while (true) { if (ch == "*"){ nextChar(); if (ch == "/"){ nextChar(); break; }; } else { nextChar(); }; if (ch == ""){ parseError("Multi-line comment not closed"); }; }; break; default: parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )")); }; }; } private function skipWhite():void{ while (isWhiteSpace(ch)) { nextChar(); }; } private function isWhiteSpace(_arg1:String):Boolean{ return ((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n")))); } private function isDigit(_arg1:String):Boolean{ return ((((_arg1 >= "0")) && ((_arg1 <= "9")))); } private function isHexDigit(_arg1:String):Boolean{ var _local2:String = _arg1.toUpperCase(); return (((isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F")))))); } public function parseError(_arg1:String):void{ throw (new JSONParseError(_arg1, loc, jsonString)); } } }//package com.adobe.serialization.json
Section 15
//JSONTokenType (com.adobe.serialization.json.JSONTokenType) package com.adobe.serialization.json { public class JSONTokenType { public static const UNKNOWN:int = -1; public static const COMMA:int = 0; public static const LEFT_BRACE:int = 1; public static const RIGHT_BRACE:int = 2; public static const LEFT_BRACKET:int = 3; public static const RIGHT_BRACKET:int = 4; public static const COLON:int = 6; public static const TRUE:int = 7; public static const FALSE:int = 8; public static const NULL:int = 9; public static const STRING:int = 10; public static const NUMBER:int = 11; } }//package com.adobe.serialization.json
Section 16
//IntUtil (com.adobe.utils.IntUtil) package com.adobe.utils { public class IntUtil { private static var hexChars:String = "0123456789abcdef"; public static function rol(_arg1:int, _arg2:int):int{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } public static function ror(_arg1:int, _arg2:int):uint{ var _local3:int = (32 - _arg2); return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3)))); } public static function toHex(_arg1:int, _arg2:Boolean=false):String{ var _local4:int; var _local5:int; var _local3 = ""; if (_arg2){ _local4 = 0; while (_local4 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15)))); _local4++; }; } else { _local5 = 0; while (_local5 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15)))); _local5++; }; }; return (_local3); } } }//package com.adobe.utils
Section 17
//IMonsterDebuggerConnection (com.demonsters.debugger.IMonsterDebuggerConnection) package com.demonsters.debugger { interface IMonsterDebuggerConnection { function processQueue():void; function set address(_arg1:String):void; function get connected():Boolean; function connect():void; function send(_arg1:String, _arg2:Object, _arg3:Boolean=false):void; } }//package com.demonsters.debugger
Section 18
//MonsterDebugger (com.demonsters.debugger.MonsterDebugger) package com.demonsters.debugger { import flash.display.*; public class MonsterDebugger { static const VERSION:Number = 3.02; private static var _enabled:Boolean = true; private static var _initialized:Boolean = false; public static var logger:Function; public static function get enabled():Boolean{ return (_enabled); } public static function trace(_arg1, _arg2, _arg3:String="", _arg4:String="", _arg5:uint=0, _arg6:int=5):void{ if (((_initialized) && (_enabled))){ MonsterDebuggerCore.trace(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); }; } public static function log(... _args):void{ var target:String; var stack:String; var lines:Array; var s:String; var bracketIndex:int; var methodIndex:int; var args = _args; if (((_initialized) && (_enabled))){ if (args.length == 0){ return; }; target = "Log"; try { throw (new Error()); } catch(e:Error) { stack = e.getStackTrace(); if (((!((stack == null))) && (!((stack == ""))))){ stack = stack.split("\t").join(""); lines = stack.split("\n"); if (lines.length > 2){ lines.shift(); lines.shift(); s = lines[0]; s = s.substring(3, s.length); bracketIndex = s.indexOf("["); methodIndex = s.indexOf("/"); if (bracketIndex == -1){ bracketIndex = s.length; }; if (methodIndex == -1){ methodIndex = bracketIndex; }; target = MonsterDebuggerUtils.parseType(s.substring(0, methodIndex)); if (target == "<anonymous>"){ target = ""; }; if (target == ""){ target = "Log"; }; }; }; }; if (args.length == 1){ MonsterDebuggerCore.trace(target, args[0], "", "", 0, 5); } else { MonsterDebuggerCore.trace(target, args, "", "", 0, 5); }; }; } public static function clear():void{ if (((_initialized) && (_enabled))){ MonsterDebuggerCore.clear(); }; } public static function set enabled(_arg1:Boolean):void{ _enabled = _arg1; } public static function snapshot(_arg1, _arg2:DisplayObject, _arg3:String="", _arg4:String=""):void{ if (((_initialized) && (_enabled))){ MonsterDebuggerCore.snapshot(_arg1, _arg2, _arg3, _arg4); }; } public static function inspect(_arg1):void{ if (((_initialized) && (_enabled))){ MonsterDebuggerCore.inspect(_arg1); }; } public static function breakpoint(_arg1, _arg2:String="breakpoint"):void{ if (((_initialized) && (_enabled))){ MonsterDebuggerCore.breakpoint(_arg1, _arg2); }; } public static function initialize(_arg1:Object, _arg2:String="127.0.0.1"):void{ if (!_initialized){ _initialized = true; MonsterDebuggerCore.base = _arg1; MonsterDebuggerCore.initialize(); MonsterDebuggerConnection.initialize(); MonsterDebuggerConnection.address = _arg2; MonsterDebuggerConnection.connect(); }; } } }//package com.demonsters.debugger
Section 19
//MonsterDebuggerConnection (com.demonsters.debugger.MonsterDebuggerConnection) package com.demonsters.debugger { class MonsterDebuggerConnection { private static var connector:IMonsterDebuggerConnection; static function initialize():void{ connector = new MonsterDebuggerConnectionDefault(); } static function processQueue():void{ connector.processQueue(); } static function set address(_arg1:String):void{ connector.address = _arg1; } static function get connected():Boolean{ return (connector.connected); } static function connect():void{ connector.connect(); } static function send(_arg1:String, _arg2:Object, _arg3:Boolean=false):void{ connector.send(_arg1, _arg2, _arg3); } } }//package com.demonsters.debugger
Section 20
//MonsterDebuggerConnectionDefault (com.demonsters.debugger.MonsterDebuggerConnectionDefault) package com.demonsters.debugger { import flash.events.*; import flash.system.*; import com.demonsters.debugger.*; import flash.net.*; import flash.utils.*; class MonsterDebuggerConnectionDefault implements IMonsterDebuggerConnection { private const MAX_QUEUE_LENGTH:int = 500; private var _length:uint; private var _package:ByteArray; private var _queue:Array; private var _connecting:Boolean; private var _socket:Socket; private var _timeout:Timer; private var _port:int; private var _retry:Timer; private var _bytes:ByteArray; private var _process:Boolean; private var _address:String; function MonsterDebuggerConnectionDefault(){ _queue = []; super(); _socket = new Socket(); _socket.addEventListener(Event.CONNECT, connectHandler, false, 0, false); _socket.addEventListener(Event.CLOSE, closeHandler, false, 0, false); _socket.addEventListener(IOErrorEvent.IO_ERROR, closeHandler, false, 0, false); _socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, closeHandler, false, 0, false); _socket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler, false, 0, false); _connecting = false; _process = false; _address = "127.0.0.1"; _port = 5840; _timeout = new Timer(2000, 1); _timeout.addEventListener(TimerEvent.TIMER, closeHandler, false, 0, false); _retry = new Timer(1000, 1); _retry.addEventListener(TimerEvent.TIMER, retryHandler, false, 0, false); } private function dataHandler(_arg1:ProgressEvent):void{ _bytes = new ByteArray(); _socket.readBytes(_bytes, 0, _socket.bytesAvailable); _bytes.position = 0; processPackage(); } public function send(_arg1:String, _arg2:Object, _arg3:Boolean=false):void{ var _local4:ByteArray; if (((((_arg3) && ((_arg1 == MonsterDebuggerCore.ID)))) && (_socket.connected))){ _local4 = new MonsterDebuggerData(_arg1, _arg2).bytes; _socket.writeUnsignedInt(_local4.length); _socket.writeBytes(_local4); _socket.flush(); return; }; _queue.push(new MonsterDebuggerData(_arg1, _arg2)); if (_queue.length > MAX_QUEUE_LENGTH){ _queue.shift(); }; if (_queue.length > 0){ next(); }; } public function get connected():Boolean{ if (_socket == null){ return (false); }; return (_socket.connected); } private function next():void{ if (!MonsterDebugger.enabled){ return; }; if (!_process){ return; }; if (!_socket.connected){ connect(); return; }; var _local1:ByteArray = MonsterDebuggerData(_queue.shift()).bytes; _socket.writeUnsignedInt(_local1.length); _socket.writeBytes(_local1); _socket.flush(); _local1 = null; if (_queue.length > 0){ next(); }; } private function retryHandler(_arg1:TimerEvent):void{ _retry.stop(); connect(); } private function processPackage():void{ var _local1:uint; var _local2:MonsterDebuggerData; if (_bytes.bytesAvailable == 0){ return; }; if (_length == 0){ _length = _bytes.readUnsignedInt(); _package = new ByteArray(); }; if ((((_package.length < _length)) && ((_bytes.bytesAvailable > 0)))){ _local1 = _bytes.bytesAvailable; if (_local1 > (_length - _package.length)){ _local1 = (_length - _package.length); }; _bytes.readBytes(_package, _package.length, _local1); }; if (((!((_length == 0))) && ((_package.length == _length)))){ _local2 = MonsterDebuggerData.read(_package); if (_local2.id != null){ MonsterDebuggerCore.handle(_local2); }; _length = 0; _package = null; }; if ((((_length == 0)) && ((_bytes.bytesAvailable > 0)))){ processPackage(); }; } public function set address(_arg1:String):void{ _address = _arg1; } private function connectHandler(_arg1:Event):void{ _timeout.stop(); _retry.stop(); _connecting = false; _bytes = new ByteArray(); _package = new ByteArray(); _length = 0; _socket.writeUTFBytes(("<hello/>" + "\n")); _socket.writeByte(0); _socket.flush(); } public function processQueue():void{ if (!_process){ _process = true; if (_queue.length > 0){ next(); }; }; } private function closeHandler(_arg1:Event=null):void{ MonsterDebuggerUtils.resume(); if (!_retry.running){ _connecting = false; _process = false; _timeout.stop(); _retry.reset(); _retry.start(); }; } public function connect():void{ if (((!(_connecting)) && (MonsterDebugger.enabled))){ try { Security.loadPolicyFile(((("xmlsocket://" + _address) + ":") + _port)); _connecting = true; _socket.connect(_address, _port); _retry.stop(); _timeout.reset(); _timeout.start(); } catch(e:Error) { closeHandler(); }; }; } } }//package com.demonsters.debugger
Section 21
//MonsterDebuggerConstants (com.demonsters.debugger.MonsterDebuggerConstants) package com.demonsters.debugger { class MonsterDebuggerConstants { static const ICON_DISPLAY_OBJECT:String = "iconDisplayObject"; static const TYPE_BOOLEAN:String = "Boolean"; static const TYPE_VECTOR:String = "Vector."; static const TYPE_XMLLIST:String = "XMLList"; static const COMMAND_TRACE:String = "TRACE"; static const ICON_ROOT:String = "iconRoot"; static const TYPE_NOT_FOUND:String = "Not found"; static const ACCESS_METHOD:String = "method"; static const TYPE_XMLVALUE:String = "XMLValue"; static const COMMAND_NOTFOUND:String = "NOTFOUND"; static const COMMAND_MONITOR:String = "MONITOR"; static const COMMAND_STOP_HIGHLIGHT:String = "STOP_HIGHLIGHT"; static const ACCESS_CONSTANT:String = "constant"; static const TYPE_FUNCTION:String = "Function"; static const TYPE_UINT:String = "uint"; static const COMMAND_INFO:String = "INFO"; static const TYPE_INT:String = "int"; static const TYPE_XMLATTRIBUTE:String = "XMLAttribute"; static const COMMAND_SNAPSHOT:String = "SNAPSHOT"; static const ICON_DEFAULT:String = "iconDefault"; static const ICON_VARIABLE_READONLY:String = "iconVariableReadonly"; static const COMMAND_BASE:String = "BASE"; static const ICON_XMLATTRIBUTE:String = "iconXMLAttribute"; static const TYPE_BYTEARRAY:String = "ByteArray"; static const COMMAND_GET_PROPERTIES:String = "GET_PROPERTIES"; static const TYPE_XML:String = "XML"; static const TYPE_NULL:String = "null"; static const TYPE_XMLNODE:String = "XMLNode"; static const ICON_VARIABLE_WRITEONLY:String = "iconVariableWriteonly"; static const TYPE_WARNING:String = "Warning"; static const PERMISSION_READWRITE:String = "readwrite"; static const PERMISSION_WRITEONLY:String = "writeonly"; static const COMMAND_HIGHLIGHT:String = "HIGHLIGHT"; static const TYPE_VOID:String = "void"; static const ICON_VARIABLE:String = "iconVariable"; static const TYPE_METHOD:String = "MethodClosure"; static const COMMAND_GET_PREVIEW:String = "GET_PREVIEW"; static const COMMAND_GET_FUNCTIONS:String = "GET_FUNCTIONS"; static const COMMAND_HELLO:String = "HELLO"; static const TYPE_UNREADABLE:String = "Unreadable"; static const PERMISSION_READONLY:String = "readonly"; static const ICON_XMLNODE:String = "iconXMLNode"; static const COMMAND_CLEAR_TRACES:String = "CLEAR_TRACES"; static const TYPE_STRING:String = "String"; static const ACCESS_DISPLAY_OBJECT:String = "displayObject"; static const COMMAND_RESUME:String = "RESUME"; static const COMMAND_PAUSE:String = "PAUSE"; static const COMMAND_START_HIGHLIGHT:String = "START_HIGHLIGHT"; static const ICON_WARNING:String = "iconWarning"; static const COMMAND_SET_PROPERTY:String = "SET_PROPERTY"; static const ICON_XMLVALUE:String = "iconXMLValue"; static const ACCESS_ACCESSOR:String = "accessor"; static const COMMAND_CALL_METHOD:String = "CALL_METHOD"; static const COMMAND_SAMPLES:String = "SAMPLES"; static const ICON_FUNCTION:String = "iconFunction"; static const COMMAND_INSPECT:String = "INSPECT"; static const TYPE_OBJECT:String = "Object"; static const TYPE_NUMBER:String = "Number"; static const TYPE_ARRAY:String = "Array"; static const ACCESS_VARIABLE:String = "variable"; static const COMMAND_GET_OBJECT:String = "GET_OBJECT"; static const DELIMITER:String = "."; } }//package com.demonsters.debugger
Section 22
//MonsterDebuggerCore (com.demonsters.debugger.MonsterDebuggerCore) package com.demonsters.debugger { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.geom.*; import com.demonsters.debugger.*; import flash.utils.*; import flash.external.*; class MonsterDebuggerCore { private static const HIGHLITE_COLOR:uint = 3381759; private static const MONITOR_UPDATE:int = 1000; static const ID:String = "com.demonsters.debugger.core"; private static var _monitorSprite:Sprite; private static var _highlightInfo:TextField; private static var _monitorStart:Number; private static var _monitorTime:Number; private static var _highlightUpdate:Boolean; private static var _monitorFrames:int; private static var _highlightTarget:DisplayObject; private static var _monitorTimer:Timer; private static var _base:Object = null; private static var _highlight:Sprite; private static var _highlightMouse:Boolean; private static var _stage:Stage = null; private static function send(_arg1:Object, _arg2:Boolean=false):void{ if (MonsterDebugger.enabled){ MonsterDebuggerConnection.send(MonsterDebuggerCore.ID, _arg1, _arg2); }; } static function snapshot(_arg1, _arg2:DisplayObject, _arg3:String="", _arg4:String=""):void{ var _local5:BitmapData; var _local6:ByteArray; var _local7:Object; if (MonsterDebugger.enabled){ _local5 = MonsterDebuggerUtils.snapshot(_arg2); if (_local5 != null){ _local6 = _local5.getPixels(new Rectangle(0, 0, _local5.width, _local5.height)); _local7 = {command:MonsterDebuggerConstants.COMMAND_SNAPSHOT, memory:MonsterDebuggerUtils.getMemory(), date:new Date(), target:String(_arg1), reference:MonsterDebuggerUtils.getReferenceID(_arg1), bytes:_local6, width:_local5.width, height:_local5.height, person:_arg3, label:_arg4}; send(_local7); }; }; } static function trace(_arg1, _arg2, _arg3:String="", _arg4:String="", _arg5:uint=0, _arg6:int=5):void{ var _local7:XML; var _local8:Object; if (MonsterDebugger.enabled){ _local7 = XML(MonsterDebuggerUtils.parse(_arg2, "", 1, _arg6, false)); _local8 = {command:MonsterDebuggerConstants.COMMAND_TRACE, memory:MonsterDebuggerUtils.getMemory(), date:new Date(), target:String(_arg1), reference:MonsterDebuggerUtils.getReferenceID(_arg1), xml:_local7, person:_arg3, label:_arg4, color:_arg5}; send(_local8); }; } static function sendInformation():void{ var UIComponentClass:*; var tmpLocation:String; var tmpTitle:String; var NativeApplicationClass:*; var descriptor:XML; var ns:Namespace; var filename:String; var FileClass:*; var slash:int; var playerType:String = Capabilities.playerType; var playerVersion:String = Capabilities.version; var isDebugger:Boolean = Capabilities.isDebugger; var isFlex:Boolean; var fileTitle = ""; var fileLocation = ""; try { UIComponentClass = getDefinitionByName("mx.core::UIComponent"); if (UIComponentClass != null){ isFlex = true; }; } catch(e1:Error) { }; if ((((_base is DisplayObject)) && (_base.hasOwnProperty("loaderInfo")))){ if (DisplayObject(_base).loaderInfo != null){ fileLocation = unescape(DisplayObject(_base).loaderInfo.url); }; }; if (_base.hasOwnProperty("stage")){ if (((!((_base["stage"] == null))) && ((_base["stage"] is Stage)))){ fileLocation = unescape(Stage(_base["stage"]).loaderInfo.url); }; }; if ((((playerType == "ActiveX")) || ((playerType == "PlugIn")))){ if (ExternalInterface.available){ try { tmpLocation = ExternalInterface.call("window.location.href.toString"); tmpTitle = ExternalInterface.call("window.document.title.toString"); if (tmpLocation != null){ fileLocation = tmpLocation; }; if (tmpTitle != null){ fileTitle = tmpTitle; }; } catch(e2:Error) { }; }; }; if (playerType == "Desktop"){ try { NativeApplicationClass = getDefinitionByName("flash.desktop::NativeApplication"); if (NativeApplicationClass != null){ descriptor = NativeApplicationClass["nativeApplication"]["applicationDescriptor"]; ns = descriptor.namespace(); filename = descriptor.ns::filename; FileClass = getDefinitionByName("flash.filesystem::File"); if (Capabilities.os.toLowerCase().indexOf("windows") != -1){ filename = (filename + ".exe"); fileLocation = FileClass["applicationDirectory"]["resolvePath"](filename)["nativePath"]; } else { if (Capabilities.os.toLowerCase().indexOf("mac") != -1){ filename = (filename + ".app"); fileLocation = FileClass["applicationDirectory"]["resolvePath"](filename)["nativePath"]; }; }; }; } catch(e3:Error) { }; }; if ((((fileTitle == "")) && (!((fileLocation == ""))))){ slash = Math.max(fileLocation.lastIndexOf("\\"), fileLocation.lastIndexOf("/")); if (slash != -1){ fileTitle = fileLocation.substring((slash + 1), fileLocation.lastIndexOf(".")); } else { fileTitle = fileLocation; }; }; if (fileTitle == ""){ fileTitle = "Application"; }; var data:Object = {command:MonsterDebuggerConstants.COMMAND_INFO, debuggerVersion:MonsterDebugger.VERSION, playerType:playerType, playerVersion:playerVersion, isDebugger:isDebugger, isFlex:isFlex, fileLocation:fileLocation, fileTitle:fileTitle}; send(data, true); MonsterDebuggerConnection.processQueue(); } static function clear():void{ if (MonsterDebugger.enabled){ send({command:MonsterDebuggerConstants.COMMAND_CLEAR_TRACES}); }; } static function get base(){ return (_base); } private static function monitorTimerCallback(_arg1:TimerEvent):void{ var _local2:Number; var _local3:Number; var _local4:uint; var _local5:uint; var _local6:Object; if (MonsterDebugger.enabled){ _local2 = new Date().time; _local3 = (_local2 - _monitorTime); _local4 = ((_monitorFrames / _local3) * 1000); _local5 = 0; if (_stage == null){ if (((((_base.hasOwnProperty("stage")) && (!((_base["stage"] == null))))) && ((_base["stage"] is Stage)))){ _stage = Stage(_base["stage"]); }; }; if (_stage != null){ _local5 = _stage.frameRate; }; _monitorFrames = 0; _monitorTime = _local2; if (MonsterDebuggerConnection.connected){ _local6 = {command:MonsterDebuggerConstants.COMMAND_MONITOR, memory:MonsterDebuggerUtils.getMemory(), fps:_local4, fpsMovie:_local5, time:_local2}; send(_local6); }; }; } private static function highlightClicked(_arg1:MouseEvent):void{ _arg1.preventDefault(); _arg1.stopImmediatePropagation(); highlightClear(); _highlightTarget = MonsterDebuggerUtils.getObjectUnderPoint(_stage, new Point(_stage.mouseX, _stage.mouseY)); _highlightMouse = false; _highlight.removeEventListener(MouseEvent.CLICK, highlightClicked); _highlight.mouseEnabled = false; if (_highlightTarget != null){ inspect(_highlightTarget); highlightDraw(false); }; send({command:MonsterDebuggerConstants.COMMAND_STOP_HIGHLIGHT}); } static function initialize():void{ _monitorTime = new Date().time; _monitorStart = new Date().time; _monitorFrames = 0; _monitorTimer = new Timer(MONITOR_UPDATE); _monitorTimer.addEventListener(TimerEvent.TIMER, monitorTimerCallback, false, 0, true); _monitorTimer.start(); if (((((_base.hasOwnProperty("stage")) && (!((_base["stage"] == null))))) && ((_base["stage"] is Stage)))){ _stage = (_base["stage"] as Stage); }; _monitorSprite = new Sprite(); _monitorSprite.addEventListener(Event.ENTER_FRAME, frameHandler, false, 0, true); var _local1:TextFormat = new TextFormat(); _local1.font = "Arial"; _local1.color = 0xFFFFFF; _local1.size = 11; _local1.leftMargin = 5; _local1.rightMargin = 5; _highlightInfo = new TextField(); _highlightInfo.embedFonts = false; _highlightInfo.autoSize = TextFieldAutoSize.LEFT; _highlightInfo.mouseWheelEnabled = false; _highlightInfo.mouseEnabled = false; _highlightInfo.condenseWhite = false; _highlightInfo.embedFonts = false; _highlightInfo.multiline = false; _highlightInfo.selectable = false; _highlightInfo.wordWrap = false; _highlightInfo.defaultTextFormat = _local1; _highlightInfo.text = ""; _highlight = new Sprite(); _highlightMouse = false; _highlightTarget = null; _highlightUpdate = false; } private static function highlightDraw(_arg1:Boolean):void{ var fill = _arg1; if (_highlightTarget == null){ return; }; var boundsOuter:Rectangle = _highlightTarget.getBounds(_stage); if ((_highlightTarget is Stage)){ boundsOuter.x = 0; boundsOuter.y = 0; boundsOuter.width = _highlightTarget["stageWidth"]; boundsOuter.height = _highlightTarget["stageHeight"]; } else { boundsOuter.x = int((boundsOuter.x + 0.5)); boundsOuter.y = int((boundsOuter.y + 0.5)); boundsOuter.width = int((boundsOuter.width + 0.5)); boundsOuter.height = int((boundsOuter.height + 0.5)); }; var boundsInner:Rectangle = boundsOuter.clone(); boundsInner.x = (boundsInner.x + 2); boundsInner.y = (boundsInner.y + 2); boundsInner.width = (boundsInner.width - 4); boundsInner.height = (boundsInner.height - 4); if (boundsInner.width < 0){ boundsInner.width = 0; }; if (boundsInner.height < 0){ boundsInner.height = 0; }; _highlight.graphics.clear(); _highlight.graphics.beginFill(HIGHLITE_COLOR, 1); _highlight.graphics.drawRect(boundsOuter.x, boundsOuter.y, boundsOuter.width, boundsOuter.height); _highlight.graphics.drawRect(boundsInner.x, boundsInner.y, boundsInner.width, boundsInner.height); if (fill){ _highlight.graphics.beginFill(HIGHLITE_COLOR, 0.25); _highlight.graphics.drawRect(boundsInner.x, boundsInner.y, boundsInner.width, boundsInner.height); }; if (_highlightTarget.name != null){ _highlightInfo.text = ((String(_highlightTarget.name) + " - ") + String(MonsterDebuggerDescribeType.get(_highlightTarget).@name)); } else { _highlightInfo.text = String(MonsterDebuggerDescribeType.get(_highlightTarget).@name); }; var boundsText:Rectangle = new Rectangle(boundsOuter.x, (boundsOuter.y - (_highlightInfo.textHeight + 3)), (_highlightInfo.textWidth + 15), (_highlightInfo.textHeight + 5)); if (boundsText.y < 0){ boundsText.y = (boundsOuter.y + boundsOuter.height); }; if ((boundsText.y + boundsText.height) > _stage.stageHeight){ boundsText.y = (_stage.stageHeight - boundsText.height); }; if (boundsText.x < 0){ boundsText.x = 0; }; if ((boundsText.x + boundsText.width) > _stage.stageWidth){ boundsText.x = (_stage.stageWidth - boundsText.width); }; _highlight.graphics.beginFill(HIGHLITE_COLOR, 1); _highlight.graphics.drawRect(boundsText.x, boundsText.y, boundsText.width, boundsText.height); _highlight.graphics.endFill(); _highlightInfo.x = boundsText.x; _highlightInfo.y = boundsText.y; try { _stage.addChild(_highlight); _stage.addChild(_highlightInfo); } catch(e:Error) { }; } private static function handleInternal(_arg1:MonsterDebuggerData):void{ var obj:*; var xml:XML; var method:Function; var displayObject:DisplayObject; var bitmapData:BitmapData; var bytes:ByteArray; var item = _arg1; switch (item.data["command"]){ case MonsterDebuggerConstants.COMMAND_HELLO: sendInformation(); break; case MonsterDebuggerConstants.COMMAND_BASE: obj = MonsterDebuggerUtils.getObject(_base, "", 0); if (obj != null){ xml = XML(MonsterDebuggerUtils.parse(obj, "", 1, 2, true)); send({command:MonsterDebuggerConstants.COMMAND_BASE, xml:xml}); }; break; case MonsterDebuggerConstants.COMMAND_INSPECT: obj = MonsterDebuggerUtils.getObject(_base, item.data["target"], 0); if (obj != null){ _base = obj; xml = XML(MonsterDebuggerUtils.parse(obj, "", 1, 2, true)); send({command:MonsterDebuggerConstants.COMMAND_BASE, xml:xml}); }; break; case MonsterDebuggerConstants.COMMAND_GET_OBJECT: obj = MonsterDebuggerUtils.getObject(_base, item.data["target"], 0); if (obj != null){ xml = XML(MonsterDebuggerUtils.parse(obj, item.data["target"], 1, 2, true)); send({command:MonsterDebuggerConstants.COMMAND_GET_OBJECT, xml:xml}); }; break; case MonsterDebuggerConstants.COMMAND_GET_PROPERTIES: obj = MonsterDebuggerUtils.getObject(_base, item.data["target"], 0); if (obj != null){ xml = XML(MonsterDebuggerUtils.parse(obj, item.data["target"], 1, 1, false)); send({command:MonsterDebuggerConstants.COMMAND_GET_PROPERTIES, xml:xml}); }; break; case MonsterDebuggerConstants.COMMAND_GET_FUNCTIONS: obj = MonsterDebuggerUtils.getObject(_base, item.data["target"], 0); if (obj != null){ xml = XML(MonsterDebuggerUtils.parseFunctions(obj, item.data["target"])); send({command:MonsterDebuggerConstants.COMMAND_GET_FUNCTIONS, xml:xml}); }; break; case MonsterDebuggerConstants.COMMAND_SET_PROPERTY: obj = MonsterDebuggerUtils.getObject(_base, item.data["target"], 1); if (obj != null){ try { obj[item.data["name"]] = item.data["value"]; send({command:MonsterDebuggerConstants.COMMAND_SET_PROPERTY, target:item.data["target"], value:obj[item.data["name"]]}); } catch(e1:Error) { }; }; break; case MonsterDebuggerConstants.COMMAND_GET_PREVIEW: obj = MonsterDebuggerUtils.getObject(_base, item.data["target"], 0); if (((!((obj == null))) && (MonsterDebuggerUtils.isDisplayObject(obj)))){ displayObject = (obj as DisplayObject); bitmapData = MonsterDebuggerUtils.snapshot(displayObject, new Rectangle(0, 0, 300, 300)); if (bitmapData != null){ bytes = bitmapData.getPixels(new Rectangle(0, 0, bitmapData.width, bitmapData.height)); send({command:MonsterDebuggerConstants.COMMAND_GET_PREVIEW, bytes:bytes, width:bitmapData.width, height:bitmapData.height}); }; }; break; case MonsterDebuggerConstants.COMMAND_CALL_METHOD: method = MonsterDebuggerUtils.getObject(_base, item.data["target"], 0); if (((!((method == null))) && ((method is Function)))){ if (item.data["returnType"] == MonsterDebuggerConstants.TYPE_VOID){ method.apply(null, item.data["arguments"]); } else { try { obj = method.apply(null, item.data["arguments"]); xml = XML(MonsterDebuggerUtils.parse(obj, "", 1, 5, false)); send({command:MonsterDebuggerConstants.COMMAND_CALL_METHOD, id:item.data["id"], xml:xml}); } catch(e2:Error) { }; }; }; break; case MonsterDebuggerConstants.COMMAND_PAUSE: MonsterDebuggerUtils.pause(); send({command:MonsterDebuggerConstants.COMMAND_PAUSE}); break; case MonsterDebuggerConstants.COMMAND_RESUME: MonsterDebuggerUtils.resume(); send({command:MonsterDebuggerConstants.COMMAND_RESUME}); break; case MonsterDebuggerConstants.COMMAND_HIGHLIGHT: obj = MonsterDebuggerUtils.getObject(_base, item.data["target"], 0); if (((!((obj == null))) && (MonsterDebuggerUtils.isDisplayObject(obj)))){ if (((!((DisplayObject(obj).stage == null))) && ((DisplayObject(obj).stage is Stage)))){ _stage = obj["stage"]; }; if (_stage != null){ highlightClear(); send({command:MonsterDebuggerConstants.COMMAND_STOP_HIGHLIGHT}); _highlight.removeEventListener(MouseEvent.CLICK, highlightClicked); _highlight.mouseEnabled = false; _highlightTarget = DisplayObject(obj); _highlightMouse = false; _highlightUpdate = true; }; }; break; case MonsterDebuggerConstants.COMMAND_START_HIGHLIGHT: highlightClear(); _highlight.addEventListener(MouseEvent.CLICK, highlightClicked, false, 0, true); _highlight.mouseEnabled = true; _highlightTarget = null; _highlightMouse = true; _highlightUpdate = true; send({command:MonsterDebuggerConstants.COMMAND_START_HIGHLIGHT}); break; case MonsterDebuggerConstants.COMMAND_STOP_HIGHLIGHT: highlightClear(); _highlight.removeEventListener(MouseEvent.CLICK, highlightClicked); _highlight.mouseEnabled = false; _highlightTarget = null; _highlightMouse = false; _highlightUpdate = false; send({command:MonsterDebuggerConstants.COMMAND_STOP_HIGHLIGHT}); break; }; } static function inspect(_arg1):void{ var _local2:*; var _local3:XML; if (MonsterDebugger.enabled){ _base = _arg1; _local2 = MonsterDebuggerUtils.getObject(_base, "", 0); if (_local2 != null){ _local3 = XML(MonsterDebuggerUtils.parse(_local2, "", 1, 2, true)); send({command:MonsterDebuggerConstants.COMMAND_BASE, xml:_local3}); }; }; } private static function frameHandler(_arg1:Event):void{ if (MonsterDebugger.enabled){ _monitorFrames++; if (_highlightUpdate){ highlightUpdate(); }; }; } static function set base(_arg1):void{ _base = _arg1; } private static function highlightUpdate():void{ var _local1:*; highlightClear(); if (_highlightMouse){ if (((((_base.hasOwnProperty("stage")) && (!((_base["stage"] == null))))) && ((_base["stage"] is Stage)))){ _stage = (_base["stage"] as Stage); }; if (Capabilities.playerType == "Desktop"){ _local1 = getDefinitionByName("flash.desktop::NativeApplication"); if (((!((_local1 == null))) && (!((_local1["nativeApplication"]["activeWindow"] == null))))){ _stage = _local1["nativeApplication"]["activeWindow"]["stage"]; }; }; if (_stage == null){ _highlight.removeEventListener(MouseEvent.CLICK, highlightClicked); _highlight.mouseEnabled = false; _highlightTarget = null; _highlightMouse = false; _highlightUpdate = false; return; }; _highlightTarget = MonsterDebuggerUtils.getObjectUnderPoint(_stage, new Point(_stage.mouseX, _stage.mouseY)); if (_highlightTarget != null){ highlightDraw(true); }; return; }; if (_highlightTarget != null){ if ((((_highlightTarget.stage == null)) || ((_highlightTarget.parent == null)))){ _highlight.removeEventListener(MouseEvent.CLICK, highlightClicked); _highlight.mouseEnabled = false; _highlightTarget = null; _highlightMouse = false; _highlightUpdate = false; return; }; highlightDraw(false); }; } static function handle(_arg1:MonsterDebuggerData):void{ if (MonsterDebugger.enabled){ if ((((_arg1.id == null)) || ((_arg1.id == "")))){ return; }; if (_arg1.id == MonsterDebuggerCore.ID){ handleInternal(_arg1); }; }; } static function breakpoint(_arg1, _arg2:String="breakpoint"):void{ var _local3:XML; var _local4:Object; if (((MonsterDebugger.enabled) && (MonsterDebuggerConnection.connected))){ _local3 = MonsterDebuggerUtils.stackTrace(); _local4 = {command:MonsterDebuggerConstants.COMMAND_PAUSE, memory:MonsterDebuggerUtils.getMemory(), date:new Date(), target:String(_arg1), reference:MonsterDebuggerUtils.getReferenceID(_arg1), stack:_local3, id:_arg2}; send(_local4); MonsterDebuggerUtils.pause(); }; } private static function highlightClear():void{ if (((!((_highlight == null))) && (!((_highlight.parent == null))))){ _highlight.parent.removeChild(_highlight); _highlight.graphics.clear(); _highlight.x = 0; _highlight.y = 0; }; if (((!((_highlightInfo == null))) && (!((_highlightInfo.parent == null))))){ _highlightInfo.parent.removeChild(_highlightInfo); _highlightInfo.x = 0; _highlightInfo.y = 0; }; } } }//package com.demonsters.debugger
Section 23
//MonsterDebuggerData (com.demonsters.debugger.MonsterDebuggerData) package com.demonsters.debugger { import flash.utils.*; public class MonsterDebuggerData { private var _data:Object; private var _id:String; public function MonsterDebuggerData(_arg1:String, _arg2:Object){ _id = _arg1; _data = _arg2; } public function get data():Object{ return (_data); } public function set bytes(_arg1:ByteArray):void{ var value = _arg1; var bytesId:ByteArray = new ByteArray(); var bytesData:ByteArray = new ByteArray(); try { value.readBytes(bytesId, 0, value.readUnsignedInt()); value.readBytes(bytesData, 0, value.readUnsignedInt()); _id = (bytesId.readObject() as String); _data = (bytesData.readObject() as Object); } catch(e:Error) { _id = null; _data = null; }; bytesId = null; bytesData = null; } public function get id():String{ return (_id); } public function get bytes():ByteArray{ var _local1:ByteArray = new ByteArray(); var _local2:ByteArray = new ByteArray(); _local1.writeObject(_id); _local2.writeObject(_data); var _local3:ByteArray = new ByteArray(); _local3.writeUnsignedInt(_local1.length); _local3.writeBytes(_local1); _local3.writeUnsignedInt(_local2.length); _local3.writeBytes(_local2); _local3.position = 0; _local1 = null; _local2 = null; return (_local3); } public static function read(_arg1:ByteArray):MonsterDebuggerData{ var _local2:MonsterDebuggerData = new MonsterDebuggerData(null, null); _local2.bytes = _arg1; return (_local2); } } }//package com.demonsters.debugger
Section 24
//MonsterDebuggerDescribeType (com.demonsters.debugger.MonsterDebuggerDescribeType) package com.demonsters.debugger { import com.demonsters.debugger.*; import flash.utils.*; class MonsterDebuggerDescribeType { private static var cache:Object = {}; static function get(_arg1):XML{ var _local2:String = getQualifiedClassName(_arg1); if ((_local2 in cache)){ return (cache[_local2]); }; var _local3:XML = describeType(_arg1); cache[_local2] = _local3; return (_local3); } } }//package com.demonsters.debugger
Section 25
//MonsterDebuggerUtils (com.demonsters.debugger.MonsterDebuggerUtils) package com.demonsters.debugger { import flash.display.*; import flash.system.*; import flash.geom.*; import com.demonsters.debugger.*; import flash.utils.*; class MonsterDebuggerUtils { private static var _references:Dictionary = new Dictionary(true); private static var _reference:int = 0; public static function snapshot(_arg1:DisplayObject, _arg2:Rectangle=null):BitmapData{ var bitmapData:BitmapData; var m:Matrix; var scaled:Rectangle; var s:Number; var b:BitmapData; var object = _arg1; var rectangle = _arg2; if (object == null){ return (null); }; var visible:Boolean = object.visible; var alpha:Number = object.alpha; var rotation:Number = object.rotation; var scaleX:Number = object.scaleX; var scaleY:Number = object.scaleY; try { object.visible = true; object.alpha = 1; object.rotation = 0; object.scaleX = 1; object.scaleY = 1; } catch(e1:Error) { }; var bounds:Rectangle = object.getBounds(object); bounds.x = int((bounds.x + 0.5)); bounds.y = int((bounds.y + 0.5)); bounds.width = int((bounds.width + 0.5)); bounds.height = int((bounds.height + 0.5)); if ((object is Stage)){ bounds.x = 0; bounds.y = 0; bounds.width = Stage(object).stageWidth; bounds.height = Stage(object).stageHeight; }; bitmapData = null; if ((((bounds.width <= 0)) || ((bounds.height <= 0)))){ return (null); }; try { bitmapData = new BitmapData(bounds.width, bounds.height, false, 0xFFFFFF); m = new Matrix(); m.tx = -(bounds.x); m.ty = -(bounds.y); bitmapData.draw(object, m, null, null, null, false); } catch(e2:Error) { bitmapData = null; }; try { object.visible = visible; object.alpha = alpha; object.rotation = rotation; object.scaleX = scaleX; object.scaleY = scaleY; } catch(e3:Error) { }; if (bitmapData == null){ return (null); }; if (rectangle != null){ if ((((bounds.width <= rectangle.width)) && ((bounds.height <= rectangle.height)))){ return (bitmapData); }; scaled = bounds.clone(); scaled.width = rectangle.width; scaled.height = (rectangle.width * (bounds.height / bounds.width)); if (scaled.height > rectangle.height){ scaled = bounds.clone(); scaled.width = (rectangle.height * (bounds.width / bounds.height)); scaled.height = rectangle.height; }; s = (scaled.width / bounds.width); try { b = new BitmapData(scaled.width, scaled.height, false, 0); m = new Matrix(); m.scale(s, s); b.draw(bitmapData, m, null, null, null, true); bitmapData.dispose(); bitmapData = b; } catch(e4:Error) { bitmapData.dispose(); bitmapData = null; }; }; return (bitmapData); } private static function parseClass(_arg1, _arg2:String, _arg3:XML, _arg4:int=1, _arg5:int=5, _arg6:Boolean=true):XML{ var key:String; var itemsArrayLength:int; var item:*; var itemXML:XML; var itemAccess:String; var itemPermission:String; var itemIcon:String; var itemType:String; var itemName:String; var itemTarget:String; var i:int; var prop:*; var displayObject:DisplayObjectContainer; var displayObjects:Array; var child:DisplayObject; var object = _arg1; var target = _arg2; var description = _arg3; var currentDepth = _arg4; var maxDepth = _arg5; var includeDisplayObjects = _arg6; var rootXML:XML = new XML("<root/>"); var nodeXML:XML = new XML("<node/>"); var variables:XMLList = description..variable; var accessors:XMLList = description..accessor; var constants:XMLList = description..constant; var isDynamic:Boolean = description.@isDynamic; var variablesLength:int = variables.length(); var accessorsLength:int = accessors.length(); var constantsLength:int = constants.length(); var childLength:int; var keys:Object = {}; var itemsArray:Array = []; if (isDynamic){ for (prop in object) { key = String(prop); if (!keys.hasOwnProperty(key)){ keys[key] = key; itemName = key; itemType = parseType(getQualifiedClassName(object[key])); itemTarget = ((target + ".") + key); itemAccess = MonsterDebuggerConstants.ACCESS_VARIABLE; itemPermission = MonsterDebuggerConstants.PERMISSION_READWRITE; itemIcon = MonsterDebuggerConstants.ICON_VARIABLE; itemsArray[itemsArray.length] = {name:itemName, type:itemType, target:itemTarget, access:itemAccess, permission:itemPermission, icon:itemIcon}; }; }; }; i = 0; while (i < variablesLength) { key = variables[i].@name; if (!keys.hasOwnProperty(key)){ keys[key] = key; itemName = key; itemType = parseType(variables[i].@type); itemTarget = ((target + ".") + key); itemAccess = MonsterDebuggerConstants.ACCESS_VARIABLE; itemPermission = MonsterDebuggerConstants.PERMISSION_READWRITE; itemIcon = MonsterDebuggerConstants.ICON_VARIABLE; itemsArray[itemsArray.length] = {name:itemName, type:itemType, target:itemTarget, access:itemAccess, permission:itemPermission, icon:itemIcon}; }; i = (i + 1); }; i = 0; while (i < accessorsLength) { key = accessors[i].@name; if (!keys.hasOwnProperty(key)){ keys[key] = key; itemName = key; itemType = parseType(accessors[i].@type); itemTarget = ((target + ".") + key); itemAccess = MonsterDebuggerConstants.ACCESS_ACCESSOR; itemPermission = MonsterDebuggerConstants.PERMISSION_READWRITE; itemIcon = MonsterDebuggerConstants.ICON_VARIABLE; if (accessors[i].@access == MonsterDebuggerConstants.PERMISSION_READONLY){ itemPermission = MonsterDebuggerConstants.PERMISSION_READONLY; itemIcon = MonsterDebuggerConstants.ICON_VARIABLE_READONLY; }; if (accessors[i].@access == MonsterDebuggerConstants.PERMISSION_WRITEONLY){ itemPermission = MonsterDebuggerConstants.PERMISSION_WRITEONLY; itemIcon = MonsterDebuggerConstants.ICON_VARIABLE_WRITEONLY; }; itemsArray[itemsArray.length] = {name:itemName, type:itemType, target:itemTarget, access:itemAccess, permission:itemPermission, icon:itemIcon}; }; i = (i + 1); }; i = 0; while (i < constantsLength) { key = constants[i].@name; if (!keys.hasOwnProperty(key)){ keys[key] = key; itemName = key; itemType = parseType(constants[i].@type); itemTarget = ((target + ".") + key); itemAccess = MonsterDebuggerConstants.ACCESS_CONSTANT; itemPermission = MonsterDebuggerConstants.PERMISSION_READONLY; itemIcon = MonsterDebuggerConstants.ICON_VARIABLE_READONLY; itemsArray[itemsArray.length] = {name:itemName, type:itemType, target:itemTarget, access:itemAccess, permission:itemPermission, icon:itemIcon}; }; i = (i + 1); }; itemsArray.sortOn("name", Array.CASEINSENSITIVE); if (((includeDisplayObjects) && ((object is DisplayObjectContainer)))){ displayObject = DisplayObjectContainer(object); displayObjects = []; childLength = displayObject.numChildren; i = 0; while (i < childLength) { child = null; try { child = displayObject.getChildAt(i); } catch(e1:Error) { }; if (child != null){ itemXML = MonsterDebuggerDescribeType.get(child); itemType = parseType(itemXML.@name); itemName = "DisplayObject"; if (child.name != null){ itemName = (itemName + (" - " + child.name)); }; itemTarget = ((((target + ".") + "getChildAt(") + i) + ")"); itemAccess = MonsterDebuggerConstants.ACCESS_DISPLAY_OBJECT; itemPermission = MonsterDebuggerConstants.PERMISSION_READWRITE; itemIcon = ((child is DisplayObjectContainer)) ? MonsterDebuggerConstants.ICON_ROOT : MonsterDebuggerConstants.ICON_DISPLAY_OBJECT; displayObjects[displayObjects.length] = {name:itemName, type:itemType, target:itemTarget, access:itemAccess, permission:itemPermission, icon:itemIcon, index:i}; }; i = (i + 1); }; displayObjects.sortOn("name", Array.CASEINSENSITIVE); itemsArray = displayObjects.concat(itemsArray); }; itemsArrayLength = itemsArray.length; i = 0; while (i < itemsArrayLength) { itemType = itemsArray[i].type; itemName = itemsArray[i].name; itemTarget = itemsArray[i].target; itemPermission = itemsArray[i].permission; itemAccess = itemsArray[i].access; itemIcon = itemsArray[i].icon; if (itemPermission == MonsterDebuggerConstants.PERMISSION_WRITEONLY){ } else { try { if (itemAccess == MonsterDebuggerConstants.ACCESS_DISPLAY_OBJECT){ item = DisplayObjectContainer(object).getChildAt(itemsArray[i].index); } else { item = object[itemName]; }; } catch(e2:Error) { item = null; }; if ((((((((((((itemType == MonsterDebuggerConstants.TYPE_STRING)) || ((itemType == MonsterDebuggerConstants.TYPE_BOOLEAN)))) || ((itemType == MonsterDebuggerConstants.TYPE_NUMBER)))) || ((itemType == MonsterDebuggerConstants.TYPE_INT)))) || ((itemType == MonsterDebuggerConstants.TYPE_UINT)))) || ((itemType == MonsterDebuggerConstants.TYPE_FUNCTION)))){ nodeXML = new XML("<node/>"); nodeXML.@icon = itemIcon; nodeXML.@label = ((((itemName + " (") + itemType) + ") = ") + printValue(item, itemType, true)); nodeXML.@name = itemName; nodeXML.@type = itemType; nodeXML.@value = printValue(item, itemType); nodeXML.@target = itemTarget; nodeXML.@access = itemAccess; nodeXML.@permission = itemPermission; rootXML.appendChild(nodeXML); } else { nodeXML = new XML("<node/>"); nodeXML.@icon = itemIcon; nodeXML.@label = (((itemName + " (") + itemType) + ")"); nodeXML.@name = itemName; nodeXML.@type = itemType; nodeXML.@target = itemTarget; nodeXML.@access = itemAccess; nodeXML.@permission = itemPermission; if (item == null){ nodeXML.@icon = MonsterDebuggerConstants.ICON_WARNING; nodeXML.@label = (nodeXML.@label + " = null"); }; nodeXML.appendChild(parse(item, itemTarget, (currentDepth + 1), maxDepth, includeDisplayObjects).children()); rootXML.appendChild(nodeXML); }; }; i = (i + 1); }; return (rootXML); } private static function parseArray(_arg1, _arg2:String, _arg3:int=1, _arg4:int=5, _arg5:Boolean=true):XML{ var _local7:XML; var _local13:*; var _local6:XML = new XML("<root/>"); var _local8 = ""; var _local9 = ""; var _local10:int; var _local11:Array = []; var _local12:Boolean; for (_local13 in _arg1) { if (!(_local13 is int)){ _local12 = false; }; _local11.push(_local13); }; if (_local12){ _local11.sort(Array.NUMERIC); } else { _local11.sort(Array.CASEINSENSITIVE); }; _local10 = 0; while (_local10 < _local11.length) { _local8 = parseType(MonsterDebuggerDescribeType.get(_arg1[_local11[_local10]]).@name); _local9 = ((_arg2 + ".") + String(_local11[_local10])); if ((((((((((((_local8 == MonsterDebuggerConstants.TYPE_STRING)) || ((_local8 == MonsterDebuggerConstants.TYPE_BOOLEAN)))) || ((_local8 == MonsterDebuggerConstants.TYPE_NUMBER)))) || ((_local8 == MonsterDebuggerConstants.TYPE_INT)))) || ((_local8 == MonsterDebuggerConstants.TYPE_UINT)))) || ((_local8 == MonsterDebuggerConstants.TYPE_FUNCTION)))){ _local7 = new XML("<node/>"); _local7.@icon = MonsterDebuggerConstants.ICON_VARIABLE; _local7.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local7.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local7.@label = ((((("[" + _local11[_local10]) + "] (") + _local8) + ") = ") + printValue(_arg1[_local11[_local10]], _local8, true)); _local7.@name = (("[" + _local11[_local10]) + "]"); _local7.@type = _local8; _local7.@value = printValue(_arg1[_local11[_local10]], _local8); _local7.@target = _local9; _local6.appendChild(_local7); } else { _local7 = new XML("<node/>"); _local7.@icon = MonsterDebuggerConstants.ICON_VARIABLE; _local7.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local7.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local7.@label = (((("[" + _local11[_local10]) + "] (") + _local8) + ")"); _local7.@name = (("[" + _local11[_local10]) + "]"); _local7.@type = _local8; _local7.@value = ""; _local7.@target = _local9; if (_arg1[_local11[_local10]] == null){ _local7.@icon = MonsterDebuggerConstants.ICON_WARNING; _local7.@label = (_local7.@label + " = null"); }; _local7.appendChild(parse(_arg1[_local11[_local10]], _local9, (_arg3 + 1), _arg4, _arg5).children()); _local6.appendChild(_local7); }; _local10++; }; return (_local6); } public static function parseFunctions(_arg1, _arg2:String=""):XML{ var itemXML:XML; var key:String; var returnType:String; var parameters:XMLList; var parametersLength:int; var args:Array; var argsString:String; var methodXML:XML; var parameterXML:XML; var object = _arg1; var target = _arg2; var rootXML:XML = new XML("<root/>"); var description:XML = MonsterDebuggerDescribeType.get(object); var type:String = parseType(description.@name); var itemType = ""; var itemName = ""; var itemTarget = ""; var keys:Object = {}; var methods:XMLList = description..method; var methodsArr:Array = []; var methodsLength:int = methods.length(); var optional:Boolean; var i:int; var n:int; itemXML = new XML("<node/>"); itemXML.@icon = MonsterDebuggerConstants.ICON_DEFAULT; itemXML.@label = (("(" + type) + ")"); itemXML.@target = target; i = 0; while (i < methodsLength) { key = methods[i].@name; try { if (!keys.hasOwnProperty(key)){ keys[key] = key; methodsArr[methodsArr.length] = {name:key, xml:methods[i], access:MonsterDebuggerConstants.ACCESS_METHOD}; }; } catch(e:Error) { }; i = (i + 1); }; methodsArr.sortOn("name", Array.CASEINSENSITIVE); methodsLength = methodsArr.length; i = 0; while (i < methodsLength) { itemType = MonsterDebuggerConstants.TYPE_FUNCTION; itemName = methodsArr[i].xml.@name; itemTarget = ((target + MonsterDebuggerConstants.DELIMITER) + itemName); returnType = parseType(methodsArr[i].xml.@returnType); parameters = methodsArr[i].xml..parameter; parametersLength = parameters.length(); args = []; argsString = ""; optional = false; n = 0; while (n < parametersLength) { if ((((parameters[n].@optional == "true")) && (!(optional)))){ optional = true; args[args.length] = "["; }; args[args.length] = parseType(parameters[n].@type); n = (n + 1); }; if (optional){ args[args.length] = "]"; }; argsString = args.join(", "); argsString = argsString.replace("[, ", "["); argsString = argsString.replace(", ]", "]"); methodXML = new XML("<node/>"); methodXML.@icon = MonsterDebuggerConstants.ICON_FUNCTION; methodXML.@type = MonsterDebuggerConstants.TYPE_FUNCTION; methodXML.@access = MonsterDebuggerConstants.ACCESS_METHOD; methodXML.@label = ((((itemName + "(") + argsString) + "):") + returnType); methodXML.@name = itemName; methodXML.@target = itemTarget; methodXML.@args = argsString; methodXML.@returnType = returnType; n = 0; while (n < parametersLength) { parameterXML = new XML("<node/>"); parameterXML.@type = parseType(parameters[n].@type); parameterXML.@index = parameters[n].@index; parameterXML.@optional = parameters[n].@optional; methodXML.appendChild(parameterXML); n = (n + 1); }; itemXML.appendChild(methodXML); i = (i + 1); }; rootXML.appendChild(itemXML); return (rootXML); } public static function parseXMLList(_arg1, _arg2:String="", _arg3:int=1, _arg4:int=-1):XML{ var _local5:XML = new XML("<root/>"); if (((!((_arg4 == -1))) && ((_arg3 > _arg4)))){ return (_local5); }; var _local6:int; while (_local6 < _arg1.length()) { _local5.appendChild(parseXML(_arg1[_local6], (((_arg2 + ".") + String(_local6)) + ".children()"), _arg3, _arg4).children()); _local6++; }; return (_local5); } public static function parseXML(_arg1, _arg2:String="", _arg3:int=1, _arg4:int=-1):XML{ var _local6:XML; var _local7:XML; var _local9:String; var _local5:XML = new XML("<root/>"); var _local8:int; if (((!((_arg4 == -1))) && ((_arg3 > _arg4)))){ return (_local5); }; if (_arg2.indexOf("@") != -1){ _local6 = new XML("<node/>"); _local6.@icon = MonsterDebuggerConstants.ICON_XMLATTRIBUTE; _local6.@type = MonsterDebuggerConstants.TYPE_XMLATTRIBUTE; _local6.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local6.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local6.@label = _arg1; _local6.@name = ""; _local6.@value = _arg1; _local6.@target = _arg2; _local5.appendChild(_local6); } else { if (((("name" in _arg1)) && ((_arg1.name() == null)))){ _local6 = new XML("<node/>"); _local6.@icon = MonsterDebuggerConstants.ICON_XMLVALUE; _local6.@type = MonsterDebuggerConstants.TYPE_XMLVALUE; _local6.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local6.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local6.@label = ((("(" + MonsterDebuggerConstants.TYPE_XMLVALUE) + ") = ") + printValue(_arg1, MonsterDebuggerConstants.TYPE_XMLVALUE, true)); _local6.@name = ""; _local6.@value = printValue(_arg1, MonsterDebuggerConstants.TYPE_XMLVALUE); _local6.@target = _arg2; _local5.appendChild(_local6); } else { if (((("hasSimpleContent" in _arg1)) && (_arg1.hasSimpleContent()))){ _local6 = new XML("<node/>"); _local6.@icon = MonsterDebuggerConstants.ICON_XMLNODE; _local6.@type = MonsterDebuggerConstants.TYPE_XMLNODE; _local6.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local6.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local6.@label = (((_arg1.name() + " (") + MonsterDebuggerConstants.TYPE_XMLNODE) + ")"); _local6.@name = _arg1.name(); _local6.@value = ""; _local6.@target = _arg2; if (_arg1 != ""){ _local7 = new XML("<node/>"); _local7.@icon = MonsterDebuggerConstants.ICON_XMLVALUE; _local7.@type = MonsterDebuggerConstants.TYPE_XMLVALUE; _local7.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local7.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local7.@label = ((("(" + MonsterDebuggerConstants.TYPE_XMLVALUE) + ") = ") + printValue(_arg1, MonsterDebuggerConstants.TYPE_XMLVALUE)); _local7.@name = ""; _local7.@value = printValue(_arg1, MonsterDebuggerConstants.TYPE_XMLVALUE); _local7.@target = _arg2; _local6.appendChild(_local7); }; _local8 = 0; while (_local8 < _arg1.attributes().length()) { _local7 = new XML("<node/>"); _local7.@icon = MonsterDebuggerConstants.ICON_XMLATTRIBUTE; _local7.@type = MonsterDebuggerConstants.TYPE_XMLATTRIBUTE; _local7.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local7.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local7.@label = ((((("@" + _arg1.attributes()[_local8].name()) + " (") + MonsterDebuggerConstants.TYPE_XMLATTRIBUTE) + ") = ") + _arg1.attributes()[_local8]); _local7.@name = ""; _local7.@value = _arg1.attributes()[_local8]; _local7.@target = (((_arg2 + ".") + "@") + _arg1.attributes()[_local8].name()); _local6.appendChild(_local7); _local8++; }; _local5.appendChild(_local6); } else { _local6 = new XML("<node/>"); _local6.@icon = MonsterDebuggerConstants.ICON_XMLNODE; _local6.@type = MonsterDebuggerConstants.TYPE_XMLNODE; _local6.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local6.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local6.@label = (((_arg1.name() + " (") + MonsterDebuggerConstants.TYPE_XMLNODE) + ")"); _local6.@name = _arg1.name(); _local6.@value = ""; _local6.@target = _arg2; _local8 = 0; while (_local8 < _arg1.attributes().length()) { _local7 = new XML("<node/>"); _local7.@icon = MonsterDebuggerConstants.ICON_XMLATTRIBUTE; _local7.@type = MonsterDebuggerConstants.TYPE_XMLATTRIBUTE; _local7.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local7.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local7.@label = ((((("@" + _arg1.attributes()[_local8].name()) + " (") + MonsterDebuggerConstants.TYPE_XMLATTRIBUTE) + ") = ") + _arg1.attributes()[_local8]); _local7.@name = ""; _local7.@value = _arg1.attributes()[_local8]; _local7.@target = (((_arg2 + ".") + "@") + _arg1.attributes()[_local8].name()); _local6.appendChild(_local7); _local8++; }; _local8 = 0; while (_local8 < _arg1.children().length()) { _local9 = ((((_arg2 + ".") + "children()") + ".") + _local8); _local6.appendChild(parseXML(_arg1.children()[_local8], _local9, (_arg3 + 1), _arg4).children()); _local8++; }; _local5.appendChild(_local6); }; }; }; return (_local5); } public static function resume():Boolean{ try { System.resume(); return (true); } catch(e:Error) { }; return (false); } public static function getObjectUnderPoint(_arg1:DisplayObjectContainer, _arg2:Point):DisplayObject{ var _local3:Array; var _local4:DisplayObject; var _local6:DisplayObject; if (_arg1.areInaccessibleObjectsUnderPoint(_arg2)){ return (_arg1); }; _local3 = _arg1.getObjectsUnderPoint(_arg2); _local3.reverse(); if ((((_local3 == null)) || ((_local3.length == 0)))){ return (_arg1); }; _local4 = _local3[0]; _local3.length = 0; while (true) { _local3[_local3.length] = _local4; if (_local4.parent == null){ break; }; _local4 = _local4.parent; }; _local3.reverse(); var _local5:int; while (_local5 < _local3.length) { _local6 = _local3[_local5]; if ((_local6 is DisplayObjectContainer)){ _local4 = _local6; if (!DisplayObjectContainer(_local6).mouseChildren){ break; }; } else { break; }; _local5++; }; return (_local4); } public static function getReferenceID(_arg1):String{ if ((_arg1 in _references)){ return (_references[_arg1]); }; var _local2:String = ("#" + String(_reference)); _references[_arg1] = _local2; _reference++; return (_local2); } public static function printValue(_arg1, _arg2:String, _arg3:Boolean=false):String{ if (_arg2 == MonsterDebuggerConstants.TYPE_BYTEARRAY){ return ((_arg1["length"] + " bytes")); }; if (_arg1 == null){ return ("null"); }; var _local4:String = String(_arg1); if (((_arg3) && ((_local4.length > 140)))){ _local4 = (_local4.substr(0, 140) + "..."); }; return (_local4); } private static function parseObject(_arg1, _arg2:String, _arg3:int=1, _arg4:int=5, _arg5:Boolean=true):XML{ var _local8:XML; var _local14:*; var _local6:XML = new XML("<root/>"); var _local7:XML = new XML("<node/>"); var _local9 = ""; var _local10 = ""; var _local11:int; var _local12:Array = []; var _local13:Boolean; for (_local14 in _arg1) { if (!(_local14 is int)){ _local13 = false; }; _local12.push(_local14); }; if (_local13){ _local12.sort(Array.NUMERIC); } else { _local12.sort(Array.CASEINSENSITIVE); }; _local11 = 0; while (_local11 < _local12.length) { _local9 = parseType(MonsterDebuggerDescribeType.get(_arg1[_local12[_local11]]).@name); _local10 = ((_arg2 + ".") + _local12[_local11]); if ((((((((((((_local9 == MonsterDebuggerConstants.TYPE_STRING)) || ((_local9 == MonsterDebuggerConstants.TYPE_BOOLEAN)))) || ((_local9 == MonsterDebuggerConstants.TYPE_NUMBER)))) || ((_local9 == MonsterDebuggerConstants.TYPE_INT)))) || ((_local9 == MonsterDebuggerConstants.TYPE_UINT)))) || ((_local9 == MonsterDebuggerConstants.TYPE_FUNCTION)))){ _local8 = new XML("<node/>"); _local8.@icon = MonsterDebuggerConstants.ICON_VARIABLE; _local8.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local8.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local8.@label = ((((_local12[_local11] + " (") + _local9) + ") = ") + printValue(_arg1[_local12[_local11]], _local9, true)); _local8.@name = _local12[_local11]; _local8.@type = _local9; _local8.@value = printValue(_arg1[_local12[_local11]], _local9); _local8.@target = _local10; _local7.appendChild(_local8); } else { _local8 = new XML("<node/>"); _local8.@icon = MonsterDebuggerConstants.ICON_VARIABLE; _local8.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local8.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local8.@label = (((_local12[_local11] + " (") + _local9) + ")"); _local8.@name = _local12[_local11]; _local8.@type = _local9; _local8.@value = ""; _local8.@target = _local10; if (_arg1[_local12[_local11]] == null){ _local8.@icon = MonsterDebuggerConstants.ICON_WARNING; _local8.@label = (_local8.@label + " = null"); }; _local8.appendChild(parse(_arg1[_local12[_local11]], _local10, (_arg3 + 1), _arg4, _arg5).children()); _local7.appendChild(_local8); }; _local11++; }; _local6.appendChild(_local7.children()); return (_local6); } public static function parse(_arg1, _arg2:String="", _arg3:int=1, _arg4:int=5, _arg5:Boolean=true):XML{ var _local14:XML; var _local6:XML = new XML("<root/>"); var _local7:XML = new XML("<node/>"); var _local8:XML = new XML(); var _local9 = ""; var _local10 = ""; var _local11:Boolean; var _local12:String; var _local13:String = MonsterDebuggerConstants.ICON_ROOT; if (((!((_arg4 == -1))) && ((_arg3 > _arg4)))){ return (_local6); }; if (_arg1 == null){ _local9 = "null"; _local12 = "null"; _local13 = MonsterDebuggerConstants.ICON_WARNING; } else { _local8 = MonsterDebuggerDescribeType.get(_arg1); _local9 = parseType(_local8.@name); _local10 = parseType(_local8.@base); _local11 = _local8.@isDynamic; if ((_arg1 is Class)){ _local12 = ("Class = " + _local9); _local9 = "Class"; _local7.appendChild(parseClass(_arg1, _arg2, _local8, _arg3, _arg4, _arg5).children()); } else { if (_local9 == MonsterDebuggerConstants.TYPE_XML){ _local7.appendChild(parseXML(_arg1, (_arg2 + ".children()"), _arg3, _arg4).children()); } else { if (_local9 == MonsterDebuggerConstants.TYPE_XMLLIST){ _local12 = (((_local9 + " [") + String(_arg1.length())) + "]"); _local7.appendChild(parseXMLList(_arg1, _arg2, _arg3, _arg4).children()); } else { if ((((_local9 == MonsterDebuggerConstants.TYPE_ARRAY)) || ((_local9.indexOf(MonsterDebuggerConstants.TYPE_VECTOR) == 0)))){ _local12 = (((_local9 + " [") + String(_arg1["length"])) + "]"); _local7.appendChild(parseArray(_arg1, _arg2, _arg3, _arg4).children()); } else { if ((((((((((_local9 == MonsterDebuggerConstants.TYPE_STRING)) || ((_local9 == MonsterDebuggerConstants.TYPE_BOOLEAN)))) || ((_local9 == MonsterDebuggerConstants.TYPE_NUMBER)))) || ((_local9 == MonsterDebuggerConstants.TYPE_INT)))) || ((_local9 == MonsterDebuggerConstants.TYPE_UINT)))){ _local7.appendChild(parseBasics(_arg1, _arg2, _local9).children()); } else { if (_local9 == MonsterDebuggerConstants.TYPE_OBJECT){ _local7.appendChild(parseObject(_arg1, _arg2, _arg3, _arg4, _arg5).children()); } else { _local7.appendChild(parseClass(_arg1, _arg2, _local8, _arg3, _arg4, _arg5).children()); }; }; }; }; }; }; }; if (_arg3 == 1){ _local14 = new XML("<node/>"); _local14.@icon = _local13; _local14.@label = _local9; _local14.@type = _local9; _local14.@target = _arg2; if (_local12 != null){ _local14.@label = _local12; }; _local14.appendChild(_local7.children()); _local6.appendChild(_local14); } else { _local6.appendChild(_local7.children()); }; return (_local6); } public static function parseType(_arg1:String):String{ var _local2:String; var _local3:String; if (_arg1.indexOf("::") != -1){ _arg1 = _arg1.substring((_arg1.indexOf("::") + 2), _arg1.length); }; if (_arg1.indexOf("::") != -1){ _local2 = _arg1.substring(0, (_arg1.indexOf("<") + 1)); _local3 = _arg1.substring((_arg1.indexOf("::") + 2), _arg1.length); _arg1 = (_local2 + _local3); }; _arg1 = _arg1.replace("()", ""); _arg1 = _arg1.replace(MonsterDebuggerConstants.TYPE_METHOD, MonsterDebuggerConstants.TYPE_FUNCTION); return (_arg1); } public static function getReference(_arg1:String){ var _local2:*; var _local3:String; if (_arg1.charAt(0) != "#"){ return (null); }; for (_local2 in _references) { _local3 = _references[_local2]; if (_local3 == _arg1){ return (_local2); }; }; return (null); } public static function pause():Boolean{ try { System.pause(); return (true); } catch(e:Error) { }; return (false); } public static function getMemory():uint{ return (System.totalMemory); } public static function getObject(_arg1, _arg2:String="", _arg3:int=0){ var index:Number; var base = _arg1; var target = _arg2; var parent = _arg3; if ((((target == null)) || ((target == "")))){ return (base); }; if (target.charAt(0) == "#"){ return (getReference(target)); }; var object:* = base; var splitted:Array = target.split(MonsterDebuggerConstants.DELIMITER); var i:int; while (i < (splitted.length - parent)) { if (splitted[i] != ""){ try { if (splitted[i] == "children()"){ object = object.children(); } else { if ((((object is DisplayObjectContainer)) && ((splitted[i].indexOf("getChildAt(") == 0)))){ index = splitted[i].substring(11, splitted[i].indexOf(")", 11)); object = DisplayObjectContainer(object).getChildAt(index); } else { object = object[splitted[i]]; }; }; } catch(e:Error) { break; }; }; i = (i + 1); }; return (object); } public static function stackTrace():XML{ var childXML:XML; var stack:String; var lines:Array; var i:int; var s:String; var bracketIndex:int; var methodIndex:int; var classname:String; var method:String; var file:String; var line:String; var functionXML:XML; var rootXML:XML = new XML("<root/>"); childXML = new XML("<node/>"); try { throw (new Error()); } catch(e:Error) { stack = e.getStackTrace(); if ((((stack == null)) || ((stack == "")))){ return (new XML("<root><error>Stack unavailable</error></root>")); }; stack = stack.split("\t").join(""); lines = stack.split("\n"); if (lines.length <= 4){ return (new XML("<root><error>Stack to short</error></root>")); }; lines.shift(); lines.shift(); lines.shift(); lines.shift(); i = 0; while (i < lines.length) { s = lines[i]; s = s.substring(3, s.length); bracketIndex = s.indexOf("["); methodIndex = s.indexOf("/"); if (bracketIndex == -1){ bracketIndex = s.length; }; if (methodIndex == -1){ methodIndex = bracketIndex; }; classname = MonsterDebuggerUtils.parseType(s.substring(0, methodIndex)); method = ""; file = ""; line = ""; if (((!((methodIndex == s.length))) && (!((methodIndex == bracketIndex))))){ method = s.substring((methodIndex + 1), bracketIndex); }; if (bracketIndex != s.length){ file = s.substring((bracketIndex + 1), s.lastIndexOf(":")); line = s.substring((s.lastIndexOf(":") + 1), (s.length - 1)); }; functionXML = new XML("<node/>"); functionXML.@classname = classname; functionXML.@method = method; functionXML.@file = file; functionXML.@line = line; childXML.appendChild(functionXML); i = (i + 1); }; }; rootXML.appendChild(childXML.children()); return (rootXML); } public static function isDisplayObject(_arg1):Boolean{ return ((((_arg1 is DisplayObject)) || ((_arg1 is DisplayObjectContainer)))); } private static function parseBasics(_arg1, _arg2:String, _arg3:String):XML{ var _local4:XML = new XML("<root/>"); var _local5:XML = new XML("<node/>"); _local5.@icon = MonsterDebuggerConstants.ICON_VARIABLE; _local5.@access = MonsterDebuggerConstants.ACCESS_VARIABLE; _local5.@permission = MonsterDebuggerConstants.PERMISSION_READWRITE; _local5.@label = ((_arg3 + " = ") + printValue(_arg1, _arg3, true)); _local5.@name = ""; _local5.@type = _arg3; _local5.@value = printValue(_arg1, _arg3); _local5.@target = _arg2; _local4.appendChild(_local5); return (_local4); } } }//package com.demonsters.debugger
Section 26
//CampaignInfo (com.google.analytics.campaign.CampaignInfo) package com.google.analytics.campaign { import com.google.analytics.utils.*; public class CampaignInfo { private var _new:Boolean; private var _empty:Boolean; public function CampaignInfo(_arg1:Boolean=true, _arg2:Boolean=false){ _empty = _arg1; _new = _arg2; } public function isEmpty():Boolean{ return (_empty); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (((!(isEmpty())) && (isNew()))){ _local1.utmcn = utmcn; }; if (((!(isEmpty())) && (!(isNew())))){ _local1.utmcr = utmcr; }; return (_local1); } public function isNew():Boolean{ return (_new); } public function get utmcn():String{ return ("1"); } public function get utmcr():String{ return ("1"); } } }//package com.google.analytics.campaign
Section 27
//CampaignKey (com.google.analytics.campaign.CampaignKey) package com.google.analytics.campaign { public class CampaignKey { public var UCMD:String;// = "utm_medium" public var UCID:String;// = "utm_id" public var UCTR:String;// = "utm_term" public var UCSR:String;// = "utm_source" public var UCNO:String;// = "utm_nooverride" public var UCCN:String;// = "utm_campaign" public var UGCLID:String;// = "gclid" public var UCCT:String;// = "utm_content" public function CampaignKey(){ UCCN = "utm_campaign"; UCCT = "utm_content"; UCID = "utm_id"; UCMD = "utm_medium"; UCNO = "utm_nooverride"; UCSR = "utm_source"; UCTR = "utm_term"; UGCLID = "gclid"; super(); } } }//package com.google.analytics.campaign
Section 28
//CampaignManager (com.google.analytics.campaign.CampaignManager) package com.google.analytics.campaign { import com.google.analytics.core.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; public class CampaignManager { private var _config:Configuration; private var _domainHash:Number; private var _debug:DebugConfiguration; private var _timeStamp:Number; private var _referrer:String; private var _buffer:Buffer; public static const trackingDelimiter:String = "|"; public function CampaignManager(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Number, _arg5:String, _arg6:Number){ _config = _arg1; _debug = _arg2; _buffer = _arg3; _domainHash = _arg4; _referrer = _arg5; _timeStamp = _arg6; } public function hasNoOverride(_arg1:String):Boolean{ var _local2:CampaignKey; var _local3:Variables; var _local4:String; _local2 = _config.campaignKey; if (_arg1 == ""){ return (false); }; _local3 = new Variables(_arg1); _local4 = ""; if (_local3.hasOwnProperty(_local2.UCNO)){ _local4 = _local3[_local2.UCNO]; switch (_local4){ case "1": return (true); case "": case "0": default: return (false); }; }; return (false); } public function getCampaignInformation(_arg1:String, _arg2:Boolean):CampaignInfo{ var _local3:CampaignInfo; var _local4:CampaignTracker; var _local5:Boolean; var _local6:Boolean; var _local7:int; var _local8:CampaignTracker; var _local9:int; _local3 = new CampaignInfo(); _local5 = false; _local6 = false; _local7 = 0; if (((_config.allowLinker) && (_buffer.isGenuine()))){ if (!_buffer.hasUTMZ()){ return (_local3); }; }; _local4 = getTrackerFromSearchString(_arg1); if (isValid(_local4)){ _local6 = hasNoOverride(_arg1); if (((_local6) && (!(_buffer.hasUTMZ())))){ return (_local3); }; }; if (!isValid(_local4)){ _local4 = getOrganicCampaign(); if (((!(_buffer.hasUTMZ())) && (isIgnoredKeyword(_local4)))){ return (_local3); }; }; if (((!(isValid(_local4))) && (_arg2))){ _local4 = getReferrerCampaign(); if (((!(_buffer.hasUTMZ())) && (isIgnoredReferral(_local4)))){ return (_local3); }; }; if (!isValid(_local4)){ if (((!(_buffer.hasUTMZ())) && (_arg2))){ _local4 = getDirectCampaign(); }; }; if (!isValid(_local4)){ return (_local3); }; if (((_buffer.hasUTMZ()) && (!(_buffer.utmz.isEmpty())))){ _local8 = new CampaignTracker(); _local8.fromTrackerString(_buffer.utmz.campaignTracking); _local5 = (_local8.toTrackerString() == _local4.toTrackerString()); _local7 = _buffer.utmz.responseCount; }; if (((!(_local5)) || (_arg2))){ _local9 = _buffer.utma.sessionCount; _local7++; if (_local9 == 0){ _local9 = 1; }; _buffer.utmz.domainHash = _domainHash; _buffer.utmz.campaignCreation = _timeStamp; _buffer.utmz.campaignSessions = _local9; _buffer.utmz.responseCount = _local7; _buffer.utmz.campaignTracking = _local4.toTrackerString(); _debug.info(_buffer.utmz.toString(), VisualDebugMode.geek); _local3 = new CampaignInfo(false, true); } else { _local3 = new CampaignInfo(false, false); }; return (_local3); } public function isValid(_arg1:CampaignTracker):Boolean{ if (((_arg1) && (_arg1.isValid()))){ return (true); }; return (false); } public function getTrackerFromSearchString(_arg1:String):CampaignTracker{ var _local2:CampaignTracker; var _local3:CampaignTracker; var _local4:CampaignKey; var _local5:Variables; _local2 = getOrganicCampaign(); _local3 = new CampaignTracker(); _local4 = _config.campaignKey; if (_arg1 == ""){ return (_local3); }; _local5 = new Variables(_arg1); if (_local5.hasOwnProperty(_local4.UCID)){ _local3.id = _local5[_local4.UCID]; }; if (_local5.hasOwnProperty(_local4.UCSR)){ _local3.source = _local5[_local4.UCSR]; }; if (_local5.hasOwnProperty(_local4.UGCLID)){ _local3.clickId = _local5[_local4.UGCLID]; }; if (_local5.hasOwnProperty(_local4.UCCN)){ _local3.name = _local5[_local4.UCCN]; } else { _local3.name = "(not set)"; }; if (_local5.hasOwnProperty(_local4.UCMD)){ _local3.medium = _local5[_local4.UCMD]; } else { _local3.medium = "(not set)"; }; if (_local5.hasOwnProperty(_local4.UCTR)){ _local3.term = _local5[_local4.UCTR]; } else { if (((_local2) && (!((_local2.term == ""))))){ _local3.term = _local2.term; }; }; if (_local5.hasOwnProperty(_local4.UCCT)){ _local3.content = _local5[_local4.UCCT]; }; return (_local3); } public function getOrganicCampaign():CampaignTracker{ var _local1:CampaignTracker; var _local2:URL; var _local3:String; var _local4:Array; var _local5:OrganicReferrer; var _local6:String; if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){ return (_local1); }; _local2 = new URL(_referrer); _local3 = ""; if (_local2.hostName != ""){ if (_local2.hostName.indexOf(".") > -1){ _local4 = _local2.hostName.split("."); switch (_local4.length){ case 2: _local3 = _local4[0]; break; case 3: _local3 = _local4[1]; break; }; }; }; if (_config.organic.match(_local3)){ _local5 = _config.organic.getReferrerByName(_local3); _local6 = _config.organic.getKeywordValue(_local5, _local2.search); _local1 = new CampaignTracker(); _local1.source = _local5.engine; _local1.name = "(organic)"; _local1.medium = "organic"; _local1.term = _local6; }; return (_local1); } public function isIgnoredReferral(_arg1:CampaignTracker):Boolean{ if (((_arg1) && ((_arg1.medium == "referral")))){ return (_config.organic.isIgnoredReferral(_arg1.source)); }; return (false); } public function getDirectCampaign():CampaignTracker{ var _local1:CampaignTracker; _local1 = new CampaignTracker(); _local1.source = "(direct)"; _local1.name = "(direct)"; _local1.medium = "(none)"; return (_local1); } public function isIgnoredKeyword(_arg1:CampaignTracker):Boolean{ if (((_arg1) && ((_arg1.medium == "organic")))){ return (_config.organic.isIgnoredKeyword(_arg1.term)); }; return (false); } public function getReferrerCampaign():CampaignTracker{ var _local1:CampaignTracker; var _local2:URL; var _local3:String; var _local4:String; if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){ return (_local1); }; _local2 = new URL(_referrer); _local3 = _local2.hostName; _local4 = _local2.path; if (_local3.indexOf("www.") == 0){ _local3 = _local3.substr(4); }; _local1 = new CampaignTracker(); _local1.source = _local3; _local1.name = "(referral)"; _local1.medium = "referral"; _local1.content = _local4; return (_local1); } public static function isInvalidReferrer(_arg1:String):Boolean{ var _local2:URL; if ((((((_arg1 == "")) || ((_arg1 == "-")))) || ((_arg1 == "0")))){ return (true); }; if (_arg1.indexOf("://") > -1){ _local2 = new URL(_arg1); if ((((_local2.protocol == Protocols.file)) || ((_local2.protocol == Protocols.none)))){ return (true); }; }; return (false); } public static function isFromGoogleCSE(_arg1:String, _arg2:Configuration):Boolean{ var _local3:URL; _local3 = new URL(_arg1); if (_local3.hostName.indexOf(_arg2.google) > -1){ if (_local3.search.indexOf((_arg2.googleSearchParam + "=")) > -1){ if (_local3.path == ("/" + _arg2.googleCsePath)){ return (true); }; }; }; return (false); } } }//package com.google.analytics.campaign
Section 29
//CampaignTracker (com.google.analytics.campaign.CampaignTracker) package com.google.analytics.campaign { import com.google.analytics.utils.*; public class CampaignTracker { public var content:String; public var id:String; public var clickId:String; public var name:String; public var term:String; public var medium:String; public var source:String; public function CampaignTracker(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:String="", _arg5:String="", _arg6:String="", _arg7:String=""){ this.id = _arg1; this.source = _arg2; this.clickId = _arg3; this.name = _arg4; this.medium = _arg5; this.term = _arg6; this.content = _arg7; } public function toTrackerString():String{ var _local1:Array; _local1 = []; _addIfNotEmpty(_local1, "utmcsr=", source); _addIfNotEmpty(_local1, "utmccn=", name); _addIfNotEmpty(_local1, "utmcmd=", medium); _addIfNotEmpty(_local1, "utmctr=", term); _addIfNotEmpty(_local1, "utmcct=", content); _addIfNotEmpty(_local1, "utmcid=", id); _addIfNotEmpty(_local1, "utmgclid=", clickId); return (_local1.join(CampaignManager.trackingDelimiter)); } public function isValid():Boolean{ if (((((!((id == ""))) || (!((source == ""))))) || (!((clickId == ""))))){ return (true); }; return (false); } private function _addIfNotEmpty(_arg1:Array, _arg2:String, _arg3:String):void{ if (_arg3 != ""){ _arg3 = _arg3.split("+").join("%20"); _arg3 = _arg3.split(" ").join("%20"); _arg1.push((_arg2 + _arg3)); }; } public function fromTrackerString(_arg1:String):void{ var _local2:String; var _local3:Variables; _local2 = _arg1.split(CampaignManager.trackingDelimiter).join("&"); _local3 = new Variables(_local2); if (_local3.hasOwnProperty("utmcid")){ this.id = _local3["utmcid"]; }; if (_local3.hasOwnProperty("utmcsr")){ this.source = _local3["utmcsr"]; }; if (_local3.hasOwnProperty("utmccn")){ this.name = _local3["utmccn"]; }; if (_local3.hasOwnProperty("utmcmd")){ this.medium = _local3["utmcmd"]; }; if (_local3.hasOwnProperty("utmctr")){ this.term = _local3["utmctr"]; }; if (_local3.hasOwnProperty("utmcct")){ this.content = _local3["utmcct"]; }; if (_local3.hasOwnProperty("utmgclid")){ this.clickId = _local3["utmgclid"]; }; } } }//package com.google.analytics.campaign
Section 30
//BrowserInfo (com.google.analytics.core.BrowserInfo) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.utils.*; public class BrowserInfo { private var _config:Configuration; private var _info:Environment; public function BrowserInfo(_arg1:Configuration, _arg2:Environment){ _config = _arg1; _info = _arg2; } public function get utmul():String{ return (_info.language.toLowerCase()); } public function get utmje():String{ return ("0"); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function get utmsr():String{ return (((_info.screenWidth + "x") + _info.screenHeight)); } public function get utmcs():String{ return (_info.languageEncoding); } public function get utmfl():String{ var _local1:Version; if (_config.detectFlash){ _local1 = _info.flashVersion; return (((((_local1.major + ".") + _local1.minor) + " r") + _local1.build)); }; return ("-"); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; _local1.utmcs = utmcs; _local1.utmsr = utmsr; _local1.utmsc = utmsc; _local1.utmul = utmul; _local1.utmje = utmje; _local1.utmfl = utmfl; return (_local1); } public function get utmsc():String{ return ((_info.screenColorDepth + "-bit")); } } }//package com.google.analytics.core
Section 31
//Buffer (com.google.analytics.core.Buffer) package com.google.analytics.core { import flash.events.*; import flash.net.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import com.google.analytics.data.*; public dynamic class Buffer { private var _SO:SharedObject; private var _OBJ:Object; private var _utma:UTMA; private var _utmb:UTMB; private var _utmc:UTMC; private var _debug:DebugConfiguration; private var _utmk:UTMK; private var _config:Configuration; private var _utmv:UTMV; private var _utmz:UTMZ; private var _volatile:Boolean; public function Buffer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Boolean=false, _arg4:Object=null){ var _local5:Boolean; var _local6:String; super(); _config = _arg1; _debug = _arg2; UTMB.defaultTimespan = _config.sessionTimeout; UTMZ.defaultTimespan = _config.conversionTimeout; if (!_arg3){ _SO = SharedObject.getLocal(_config.cookieName, _config.cookiePath); _local5 = false; if (_SO.data.utma){ if (!hasUTMA()){ _createUMTA(); }; _utma.fromSharedObject(_SO.data.utma); if (_debug.verbose){ _debug.info(("found: " + _utma.toString(true)), VisualDebugMode.geek); }; if (_utma.isExpired()){ if (_debug.verbose){ _debug.warning("UTMA has expired", VisualDebugMode.advanced); }; _clearUTMA(); _local5 = true; }; }; if (_SO.data.utmb){ if (!hasUTMB()){ _createUMTB(); }; _utmb.fromSharedObject(_SO.data.utmb); if (_debug.verbose){ _debug.info(("found: " + _utmb.toString(true)), VisualDebugMode.geek); }; if (_utmb.isExpired()){ if (_debug.verbose){ _debug.warning("UTMB has expired", VisualDebugMode.advanced); }; _clearUTMB(); _local5 = true; }; }; if (_SO.data.utmc){ delete _SO.data.utmc; _local5 = true; }; if (_SO.data.utmk){ if (!hasUTMK()){ _createUMTK(); }; _utmk.fromSharedObject(_SO.data.utmk); if (_debug.verbose){ _debug.info(("found: " + _utmk.toString()), VisualDebugMode.geek); }; }; if (_SO.data.utmv){ if (!hasUTMV()){ _createUMTV(); }; _utmv.fromSharedObject(_SO.data.utmv); if (_debug.verbose){ _debug.info(("found: " + _utmv.toString(true)), VisualDebugMode.geek); }; if (_utmv.isExpired()){ if (_debug.verbose){ _debug.warning("UTMV has expired", VisualDebugMode.advanced); }; _clearUTMV(); _local5 = true; }; }; if (_SO.data.utmz){ if (!hasUTMZ()){ _createUMTZ(); }; _utmz.fromSharedObject(_SO.data.utmz); if (_debug.verbose){ _debug.info(("found: " + _utmz.toString(true)), VisualDebugMode.geek); }; if (_utmz.isExpired()){ if (_debug.verbose){ _debug.warning("UTMZ has expired", VisualDebugMode.advanced); }; _clearUTMZ(); _local5 = true; }; }; if (_local5){ save(); }; } else { _OBJ = new Object(); if (_arg4){ for (_local6 in _arg4) { _OBJ[_local6] = _arg4[_local6]; }; }; }; _volatile = _arg3; } public function save():void{ var flushStatus:String; if (!isVolatile()){ flushStatus = null; try { flushStatus = _SO.flush(); } catch(e:Error) { _debug.warning("Error...Could not write SharedObject to disk"); }; switch (flushStatus){ case SharedObjectFlushStatus.PENDING: _debug.info("Requesting permission to save object..."); _SO.addEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus); break; case SharedObjectFlushStatus.FLUSHED: _debug.info("Value flushed to disk."); break; }; }; } public function get utmv():UTMV{ if (!hasUTMV()){ _createUMTV(); }; return (_utmv); } public function clearCookies():void{ utma.reset(); utmb.reset(); utmc.reset(); utmz.reset(); utmv.reset(); utmk.reset(); } public function get utmz():UTMZ{ if (!hasUTMZ()){ _createUMTZ(); }; return (_utmz); } public function hasUTMA():Boolean{ if (_utma){ return (true); }; return (false); } public function hasUTMB():Boolean{ if (_utmb){ return (true); }; return (false); } public function isGenuine():Boolean{ if (!hasUTMK()){ return (true); }; return ((utmk.hash == generateCookiesHash())); } public function resetCurrentSession():void{ _clearUTMB(); _clearUTMC(); save(); } public function hasUTMC():Boolean{ if (_utmc){ return (true); }; return (false); } public function hasUTMK():Boolean{ if (_utmk){ return (true); }; return (false); } public function generateCookiesHash():Number{ var _local1:String; _local1 = ""; _local1 = (_local1 + utma.valueOf()); _local1 = (_local1 + utmb.valueOf()); _local1 = (_local1 + utmc.valueOf()); _local1 = (_local1 + utmz.valueOf()); _local1 = (_local1 + utmv.valueOf()); return (Utils.generateHash(_local1)); } private function _createUMTA():void{ _utma = new UTMA(); _utma.proxy = this; } private function _createUMTB():void{ _utmb = new UTMB(); _utmb.proxy = this; } private function _createUMTC():void{ _utmc = new UTMC(); } public function hasUTMV():Boolean{ if (_utmv){ return (true); }; return (false); } private function _createUMTK():void{ _utmk = new UTMK(); _utmk.proxy = this; } public function hasUTMZ():Boolean{ if (_utmz){ return (true); }; return (false); } private function _createUMTV():void{ _utmv = new UTMV(); _utmv.proxy = this; } private function _createUMTZ():void{ _utmz = new UTMZ(); _utmz.proxy = this; } public function updateUTMA(_arg1:Number):void{ if (_debug.verbose){ _debug.info((("updateUTMA( " + _arg1) + " )"), VisualDebugMode.advanced); }; if (!utma.isEmpty()){ if (isNaN(utma.sessionCount)){ utma.sessionCount = 1; } else { utma.sessionCount = (utma.sessionCount + 1); }; utma.lastTime = utma.currentTime; utma.currentTime = _arg1; }; } private function _onFlushStatus(_arg1:NetStatusEvent):void{ _debug.info("User closed permission dialog..."); switch (_arg1.info.code){ case "SharedObject.Flush.Success": _debug.info("User granted permission -- value saved."); break; case "SharedObject.Flush.Failed": _debug.info("User denied permission -- value not saved."); break; }; _SO.removeEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus); } private function _clearUTMA():void{ _utma = null; if (!isVolatile()){ _SO.data.utma = null; delete _SO.data.utma; }; } private function _clearUTMC():void{ _utmc = null; } private function _clearUTMB():void{ _utmb = null; if (!isVolatile()){ _SO.data.utmb = null; delete _SO.data.utmb; }; } public function update(_arg1:String, _arg2):void{ if (isVolatile()){ _OBJ[_arg1] = _arg2; } else { _SO.data[_arg1] = _arg2; }; } private function _clearUTMZ():void{ _utmz = null; if (!isVolatile()){ _SO.data.utmz = null; delete _SO.data.utmz; }; } private function _clearUTMV():void{ _utmv = null; if (!isVolatile()){ _SO.data.utmv = null; delete _SO.data.utmv; }; } public function isVolatile():Boolean{ return (_volatile); } public function get utma():UTMA{ if (!hasUTMA()){ _createUMTA(); }; return (_utma); } public function get utmb():UTMB{ if (!hasUTMB()){ _createUMTB(); }; return (_utmb); } public function get utmc():UTMC{ if (!hasUTMC()){ _createUMTC(); }; return (_utmc); } public function get utmk():UTMK{ if (!hasUTMK()){ _createUMTK(); }; return (_utmk); } } }//package com.google.analytics.core
Section 32
//DocumentInfo (com.google.analytics.core.DocumentInfo) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.utils.*; import com.google.analytics.external.*; public class DocumentInfo { private var _config:Configuration; private var _utmr:String; private var _adSense:AdSenseGlobals; private var _info:Environment; private var _pageURL:String; public function DocumentInfo(_arg1:Configuration, _arg2:Environment, _arg3:String, _arg4:String=null, _arg5:AdSenseGlobals=null){ _config = _arg1; _info = _arg2; _utmr = _arg3; _pageURL = _arg4; _adSense = _arg5; } public function get utmr():String{ if (!_utmr){ return ("-"); }; return (_utmr); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } private function _renderPageURL(_arg1:String=""):String{ var _local2:String; var _local3:String; _local2 = _info.locationPath; _local3 = _info.locationSearch; if (((!(_arg1)) || ((_arg1 == "")))){ _arg1 = (_local2 + unescape(_local3)); }; return (_arg1); } public function get utmp():String{ return (_renderPageURL(_pageURL)); } private function _generateHitId():Number{ var _local1:Number; if (((_adSense.hid) && (!((_adSense.hid == ""))))){ _local1 = Number(_adSense.hid); } else { _local1 = Math.round((Math.random() * 2147483647)); _adSense.hid = String(_local1); }; return (_local1); } public function get utmhid():String{ return (String(_generateHitId())); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (((_config.detectTitle) && (!((utmdt == ""))))){ _local1.utmdt = utmdt; }; _local1.utmhid = utmhid; _local1.utmr = utmr; _local1.utmp = utmp; return (_local1); } public function get utmdt():String{ return (_info.documentTitle); } } }//package com.google.analytics.core
Section 33
//Domain (com.google.analytics.core.Domain) package com.google.analytics.core { import com.google.analytics.debug.*; public class Domain { private var _mode:DomainNameMode; private var _name:String; private var _debug:DebugConfiguration; public function Domain(_arg1:DomainNameMode=null, _arg2:String="", _arg3:DebugConfiguration=null){ _debug = _arg3; if (_arg1 == null){ _arg1 = DomainNameMode.auto; }; _mode = _arg1; if (_arg1 == DomainNameMode.custom){ this.name = _arg2; } else { _name = _arg2; }; } public function get mode():DomainNameMode{ return (_mode); } public function set mode(_arg1:DomainNameMode):void{ _mode = _arg1; if (_mode == DomainNameMode.none){ _name = ""; }; } public function get name():String{ return (_name); } public function set name(_arg1:String):void{ if (((!((_arg1.charAt(0) == "."))) && (_debug))){ _debug.warning(("missing leading period \".\", cookie will only be accessible on " + _arg1), VisualDebugMode.geek); }; _name = _arg1; } } }//package com.google.analytics.core
Section 34
//DomainNameMode (com.google.analytics.core.DomainNameMode) package com.google.analytics.core { public class DomainNameMode { private var _value:int; private var _name:String; public static const custom:DomainNameMode = new DomainNameMode(2, "custom"); ; public static const none:DomainNameMode = new DomainNameMode(0, "none"); ; public static const auto:DomainNameMode = new DomainNameMode(1, "auto"); ; public function DomainNameMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.core
Section 35
//EventInfo (com.google.analytics.core.EventInfo) package com.google.analytics.core { import com.google.analytics.utils.*; import com.google.analytics.data.*; public class EventInfo { private var _isEventHit:Boolean; private var _ext10:X10; private var _x10:X10; public function EventInfo(_arg1:Boolean, _arg2:X10, _arg3:X10=null){ _isEventHit = _arg1; _x10 = _arg2; _ext10 = _arg3; } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function get utmt():String{ return ("event"); } public function get utme():String{ return (_x10.renderMergedUrlString(_ext10)); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (_isEventHit){ _local1.utmt = utmt; }; _local1.utme = utme; return (_local1); } } }//package com.google.analytics.core
Section 36
//EventTracker (com.google.analytics.core.EventTracker) package com.google.analytics.core { import com.google.analytics.v4.*; public class EventTracker { private var _parent:GoogleAnalyticsAPI; public var name:String; public function EventTracker(_arg1:String, _arg2:GoogleAnalyticsAPI){ this.name = _arg1; _parent = _arg2; } public function trackEvent(_arg1:String, _arg2:String=null, _arg3:Number=NaN):Boolean{ return (_parent.trackEvent(name, _arg1, _arg2, _arg3)); } } }//package com.google.analytics.core
Section 37
//ga_internal (com.google.analytics.core.ga_internal) package com.google.analytics.core { public namespace ga_internal; }//package com.google.analytics.core
Section 38
//GIFRequest (com.google.analytics.core.GIFRequest) package com.google.analytics.core { import flash.display.*; import flash.events.*; import flash.system.*; import flash.net.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; public class GIFRequest { private var _info:Environment; private var _count:int; private var _utmac:String; private var _alertcount:int; private var _debug:DebugConfiguration; private var _lastRequest:URLRequest; private var _buffer:Buffer; private var _config:Configuration; private var _requests:Array; public function GIFRequest(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Environment){ _config = _arg1; _debug = _arg2; _buffer = _arg3; _info = _arg4; _count = 0; _alertcount = 0; _requests = []; } public function get utmn():String{ return ((Utils.generate32bitRandom() as String)); } public function onIOError(_arg1:IOErrorEvent):void{ var _local2:String; var _local3:String; var _local4:String; _local2 = _lastRequest.url; _local3 = String((_requests.length - 1)); _local4 = (("Gif Request #" + _local3) + " failed"); if (_debug.GIFRequests){ if (!_debug.verbose){ if (_local2.indexOf("?") > -1){ _local2 = _local2.split("?")[0]; }; _local2 = _shortenURL(_local2); }; if (int(_debug.mode) > int(VisualDebugMode.basic)){ _local4 = (_local4 + ((" \"" + _local2) + "\" does not exists or is unreachable")); }; _debug.failure(_local4); } else { _debug.warning(_local4); }; _removeListeners(_arg1.target); } public function send(_arg1:String, _arg2:Variables=null, _arg3:Boolean=false, _arg4:Boolean=false):void{ var _local5:String; var _local6:URLRequest; var _local7:URLRequest; _utmac = _arg1; if (!_arg2){ _arg2 = new Variables(); }; _arg2.URIencode = false; _arg2.pre = ["utmwv", "utmn", "utmhn", "utmt", "utme", "utmcs", "utmsr", "utmsc", "utmul", "utmje", "utmfl", "utmdt", "utmhid", "utmr", "utmp"]; _arg2.post = ["utmcc"]; if (_debug.verbose){ _debug.info(((("tracking: " + _buffer.utmb.trackCount) + "/") + _config.trackingLimitPerSession), VisualDebugMode.geek); }; if ((((_buffer.utmb.trackCount < _config.trackingLimitPerSession)) || (_arg3))){ if (_arg4){ updateToken(); }; if (((((_arg3) || (!(_arg4)))) || ((_buffer.utmb.token >= 1)))){ if (((!(_arg3)) && (_arg4))){ _buffer.utmb.token = (_buffer.utmb.token - 1); }; _buffer.utmb.trackCount = (_buffer.utmb.trackCount + 1); if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); }; _arg2.utmwv = utmwv; _arg2.utmn = Utils.generate32bitRandom(); if (_info.domainName != ""){ _arg2.utmhn = _info.domainName; }; if (_config.sampleRate < 1){ _arg2.utmsp = (_config.sampleRate * 100); }; if ((((_config.serverMode == ServerOperationMode.local)) || ((_config.serverMode == ServerOperationMode.both)))){ _local5 = _info.locationSWFPath; if (_local5.lastIndexOf("/") > 0){ _local5 = _local5.substring(0, _local5.lastIndexOf("/")); }; _local6 = new URLRequest(); if (_config.localGIFpath.indexOf("http") == 0){ _local6.url = _config.localGIFpath; } else { _local6.url = (_local5 + _config.localGIFpath); }; _local6.url = (_local6.url + ("?" + _arg2.toString())); if (((_debug.active) && (_debug.GIFRequests))){ _debugSend(_local6); } else { sendRequest(_local6); }; }; if ((((_config.serverMode == ServerOperationMode.remote)) || ((_config.serverMode == ServerOperationMode.both)))){ _local7 = new URLRequest(); if (_info.protocol == Protocols.HTTPS){ _local7.url = _config.secureRemoteGIFpath; } else { if (_info.protocol == Protocols.HTTP){ _local7.url = _config.remoteGIFpath; } else { _local7.url = _config.remoteGIFpath; }; }; _arg2.utmac = utmac; _arg2.utmcc = encodeURIComponent(utmcc); _local7.url = (_local7.url + ("?" + _arg2.toString())); if (((_debug.active) && (_debug.GIFRequests))){ _debugSend(_local7); } else { sendRequest(_local7); }; }; }; }; } public function onSecurityError(_arg1:SecurityErrorEvent):void{ if (_debug.GIFRequests){ _debug.failure(_arg1.text); }; } public function get utmsp():String{ return (((_config.sampleRate * 100) as String)); } public function get utmcc():String{ var _local1:Array; _local1 = []; if (_buffer.hasUTMA()){ _local1.push((_buffer.utma.toURLString() + ";")); }; if (_buffer.hasUTMZ()){ _local1.push((_buffer.utmz.toURLString() + ";")); }; if (_buffer.hasUTMV()){ _local1.push((_buffer.utmv.toURLString() + ";")); }; return (_local1.join("+")); } public function get utmac():String{ return (_utmac); } public function get utmwv():String{ return (_config.version); } public function sendRequest(_arg1:URLRequest):void{ var loader:Loader; var context:LoaderContext; var request = _arg1; loader = new Loader(); loader.name = String(_count++); context = new LoaderContext(false); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); _lastRequest = request; _requests[loader.name] = new RequestObject(request); try { loader.load(request, context); } catch(e:Error) { _debug.failure("\"Loader.load()\" could not instanciate Gif Request"); }; } private function _removeListeners(_arg1:Object):void{ _arg1.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); _arg1.removeEventListener(Event.COMPLETE, onComplete); } public function updateToken():void{ var _local1:Number; var _local2:Number; _local1 = new Date().getTime(); _local2 = ((_local1 - _buffer.utmb.lastTime) * (_config.tokenRate / 1000)); if (_debug.verbose){ _debug.info(("tokenDelta: " + _local2), VisualDebugMode.geek); }; if (_local2 >= 1){ _buffer.utmb.token = Math.min(Math.floor((_buffer.utmb.token + _local2)), _config.bucketCapacity); _buffer.utmb.lastTime = _local1; if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); }; }; } private function _shortenURL(_arg1:String):String{ var _local2:Array; if (_arg1.length > 60){ _local2 = _arg1.split("/"); while (_arg1.length > 60) { _local2.shift(); _arg1 = ("../" + _local2.join("/")); }; }; return (_arg1); } public function get utmhn():String{ return (_info.domainName); } private function _debugSend(_arg1:URLRequest):void{ var _local2:String; var _local3:String; _local2 = ""; switch (_debug.mode){ case VisualDebugMode.geek: _local2 = ((("Gif Request #" + _alertcount) + ":\n") + _arg1.url); break; case VisualDebugMode.advanced: _local3 = _arg1.url; if (_local3.indexOf("?") > -1){ _local3 = _local3.split("?")[0]; }; _local3 = _shortenURL(_local3); _local2 = (((("Send Gif Request #" + _alertcount) + ":\n") + _local3) + " ?"); break; case VisualDebugMode.basic: default: _local2 = (((("Send " + _config.serverMode.toString()) + " Gif Request #") + _alertcount) + " ?"); }; _debug.alertGifRequest(_local2, _arg1, this); _alertcount++; } public function onComplete(_arg1:Event):void{ var _local2:String; var _local3:String; var _local4:String; _local2 = _arg1.target.loader.name; _requests[_local2].complete(); _local3 = (("Gif Request #" + _local2) + " sent"); _local4 = _requests[_local2].request.url; if (_debug.GIFRequests){ if (!_debug.verbose){ if (_local4.indexOf("?") > -1){ _local4 = _local4.split("?")[0]; }; _local4 = _shortenURL(_local4); }; if (int(_debug.mode) > int(VisualDebugMode.basic)){ _local3 = (_local3 + ((" to \"" + _local4) + "\"")); }; _debug.success(_local3); } else { _debug.info(_local3); }; _removeListeners(_arg1.target); } } }//package com.google.analytics.core
Section 39
//IdleTimer (com.google.analytics.core.IdleTimer) package com.google.analytics.core { import flash.display.*; import flash.events.*; import flash.utils.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; public class IdleTimer { private var _loop:Timer; private var _stage:Stage; private var _lastMove:int; private var _debug:DebugConfiguration; private var _session:Timer; private var _inactivity:Number; private var _buffer:Buffer; public function IdleTimer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:DisplayObject, _arg4:Buffer){ var _local5:Number; var _local6:Number; var _local7:Number; super(); _local5 = _arg1.idleLoop; _local6 = _arg1.idleTimeout; _local7 = _arg1.sessionTimeout; _loop = new Timer((_local5 * 1000)); _session = new Timer((_local7 * 1000), 1); _debug = _arg2; _stage = _arg3.stage; _buffer = _arg4; _lastMove = getTimer(); _inactivity = (_local6 * 1000); _loop.addEventListener(TimerEvent.TIMER, checkForIdle); _session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession); _stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); _debug.info(((((("delay: " + _local5) + "sec , inactivity: ") + _local6) + "sec, sessionTimeout: ") + _local7), VisualDebugMode.geek); _loop.start(); } private function onMouseMove(_arg1:MouseEvent):void{ _lastMove = getTimer(); if (_session.running){ _debug.info("session timer reset", VisualDebugMode.geek); _session.reset(); }; } public function endSession(_arg1:TimerEvent):void{ _session.removeEventListener(TimerEvent.TIMER_COMPLETE, endSession); _debug.info("session timer end session", VisualDebugMode.geek); _session.reset(); _buffer.resetCurrentSession(); _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); _debug.info(_buffer.utmc.toString(), VisualDebugMode.geek); _session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession); } public function checkForIdle(_arg1:TimerEvent):void{ var _local2:int; _local2 = getTimer(); if ((_local2 - _lastMove) >= _inactivity){ if (!_session.running){ _debug.info("session timer start", VisualDebugMode.geek); _session.start(); }; }; } } }//package com.google.analytics.core
Section 40
//Organic (com.google.analytics.core.Organic) package com.google.analytics.core { import com.google.analytics.utils.*; public class Organic { private var _sourcesCache:Array; private var _sourcesEngine:Array; private var _ignoredKeywords:Array; private var _ignoredReferralsCache:Object; private var _ignoredReferrals:Array; private var _ignoredKeywordsCache:Object; private var _sources:Array; public static var throwErrors:Boolean = false; public function Organic(){ _sources = []; _sourcesCache = []; _sourcesEngine = []; _ignoredReferrals = []; _ignoredReferralsCache = {}; _ignoredKeywords = []; _ignoredKeywordsCache = {}; } public function getKeywordValue(_arg1:OrganicReferrer, _arg2:String):String{ var _local3:String; _local3 = _arg1.keyword; return (getKeywordValueFromPath(_local3, _arg2)); } public function isIgnoredKeyword(_arg1:String):Boolean{ if (_ignoredKeywordsCache.hasOwnProperty(_arg1)){ return (true); }; return (false); } public function isIgnoredReferral(_arg1:String):Boolean{ if (_ignoredReferralsCache.hasOwnProperty(_arg1)){ return (true); }; return (false); } public function clear():void{ clearEngines(); clearIgnoredReferrals(); clearIgnoredKeywords(); } public function get ignoredKeywordsCount():int{ return (_ignoredKeywords.length); } public function match(_arg1:String):Boolean{ if (_arg1 == ""){ return (false); }; _arg1 = _arg1.toLowerCase(); if (_sourcesEngine[_arg1] != undefined){ return (true); }; return (false); } public function get count():int{ return (_sources.length); } public function addSource(_arg1:String, _arg2:String):void{ var _local3:OrganicReferrer; _local3 = new OrganicReferrer(_arg1, _arg2); if (_sourcesCache[_local3.toString()] == undefined){ _sources.push(_local3); _sourcesCache[_local3.toString()] = (_sources.length - 1); if (_sourcesEngine[_local3.engine] == undefined){ _sourcesEngine[_local3.engine] = [(_sources.length - 1)]; } else { _sourcesEngine[_local3.engine].push((_sources.length - 1)); }; } else { if (throwErrors){ throw (new Error((_local3.toString() + " already exists, we don't add it."))); }; }; } public function clearIgnoredKeywords():void{ _ignoredKeywords = []; _ignoredKeywordsCache = {}; } public function clearEngines():void{ _sources = []; _sourcesCache = []; _sourcesEngine = []; } public function get ignoredReferralsCount():int{ return (_ignoredReferrals.length); } public function addIgnoredReferral(_arg1:String):void{ if (_ignoredReferralsCache[_arg1] == undefined){ _ignoredReferrals.push(_arg1); _ignoredReferralsCache[_arg1] = (_ignoredReferrals.length - 1); } else { if (throwErrors){ throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it."))); }; }; } public function clearIgnoredReferrals():void{ _ignoredReferrals = []; _ignoredReferralsCache = {}; } public function getReferrerByName(_arg1:String):OrganicReferrer{ var _local2:int; if (match(_arg1)){ _local2 = _sourcesEngine[_arg1][0]; return (_sources[_local2]); }; return (null); } public function addIgnoredKeyword(_arg1:String):void{ if (_ignoredKeywordsCache[_arg1] == undefined){ _ignoredKeywords.push(_arg1); _ignoredKeywordsCache[_arg1] = (_ignoredKeywords.length - 1); } else { if (throwErrors){ throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it."))); }; }; } public function get sources():Array{ return (_sources); } public static function getKeywordValueFromPath(_arg1:String, _arg2:String):String{ var _local3:String; var _local4:Variables; if (_arg2.indexOf((_arg1 + "=")) > -1){ if (_arg2.charAt(0) == "?"){ _arg2 = _arg2.substr(1); }; _arg2 = _arg2.split("+").join("%20"); _local4 = new Variables(_arg2); _local3 = _local4[_arg1]; }; return (_local3); } } }//package com.google.analytics.core
Section 41
//OrganicReferrer (com.google.analytics.core.OrganicReferrer) package com.google.analytics.core { public class OrganicReferrer { private var _engine:String; private var _keyword:String; public function OrganicReferrer(_arg1:String, _arg2:String){ this.engine = _arg1; this.keyword = _arg2; } public function set engine(_arg1:String):void{ _engine = _arg1.toLowerCase(); } public function get keyword():String{ return (_keyword); } public function toString():String{ return (((engine + "?") + keyword)); } public function get engine():String{ return (_engine); } public function set keyword(_arg1:String):void{ _keyword = _arg1.toLowerCase(); } } }//package com.google.analytics.core
Section 42
//RequestObject (com.google.analytics.core.RequestObject) package com.google.analytics.core { import flash.net.*; import flash.utils.*; public class RequestObject { public var start:int; public var request:URLRequest; public var end:int; public function RequestObject(_arg1:URLRequest){ start = getTimer(); this.request = _arg1; } public function toString():String{ var _local1:Array; _local1 = []; _local1.push((("duration: " + duration) + "ms")); _local1.push(("url: " + request.url)); return ((("{ " + _local1.join(", ")) + " }")); } public function get duration():int{ if (!hasCompleted()){ return (0); }; return ((end - start)); } public function hasCompleted():Boolean{ return ((end > 0)); } public function complete():void{ end = getTimer(); } } }//package com.google.analytics.core
Section 43
//ServerOperationMode (com.google.analytics.core.ServerOperationMode) package com.google.analytics.core { public class ServerOperationMode { private var _value:int; private var _name:String; public static const both:ServerOperationMode = new ServerOperationMode(2, "both"); ; public static const remote:ServerOperationMode = new ServerOperationMode(1, "remote"); ; public static const local:ServerOperationMode = new ServerOperationMode(0, "local"); ; public function ServerOperationMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.core
Section 44
//TrackerCache (com.google.analytics.core.TrackerCache) package com.google.analytics.core { import com.google.analytics.v4.*; import flash.errors.*; public class TrackerCache implements GoogleAnalyticsAPI { public var tracker:GoogleAnalyticsAPI; private var _ar:Array; public static var CACHE_THROW_ERROR:Boolean; public function TrackerCache(_arg1:GoogleAnalyticsAPI=null){ this.tracker = _arg1; _ar = []; } public function size():uint{ return (_ar.length); } public function flush():void{ var _local1:Object; var _local2:String; var _local3:Array; var _local4:int; var _local5:int; if (tracker == null){ return; }; if (size() > 0){ _local4 = _ar.length; while (_local5 < _local4) { _local1 = _ar.shift(); _local2 = (_local1.name as String); _local3 = (_local1.args as Array); if (((!((_local2 == null))) && ((_local2 in tracker)))){ (tracker[_local2] as Function).apply(tracker, _local3); }; _local5++; }; }; } public function enqueue(_arg1:String, ... _args):Boolean{ if (_arg1 == null){ return (false); }; _ar.push({name:_arg1, args:_args}); return (true); } public function link(_arg1:String, _arg2:Boolean=false):void{ enqueue("link", _arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ enqueue("addOrganic", _arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ enqueue("setAllowLinker", _arg1); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ enqueue("trackEvent", _arg1, _arg2, _arg3, _arg4); return (true); } public function trackTrans():void{ enqueue("trackTrans"); } public function trackPageview(_arg1:String=""):void{ enqueue("trackPageview", _arg1); } public function setClientInfo(_arg1:Boolean):void{ enqueue("setClientInfo", _arg1); } public function getClientInfo():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getClientInfo' method for the moment.")); }; return (false); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ enqueue("linkByPost", _arg1, _arg2); } public function setCookieTimeout(_arg1:int):void{ enqueue("setCookieTimeout", _arg1); } public function isEmpty():Boolean{ return ((_ar.length == 0)); } public function resetSession():void{ enqueue("resetSession"); } public function setDetectFlash(_arg1:Boolean):void{ enqueue("setDetectFlash", _arg1); } public function clear():void{ _ar = []; } public function getDetectTitle():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectTitle' method for the moment.")); }; return (false); } public function setCampNameKey(_arg1:String):void{ enqueue("setCampNameKey", _arg1); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ enqueue("addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function createEventTracker(_arg1:String):EventTracker{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'createEventTracker' method for the moment.")); }; return (null); } public function setVar(_arg1:String):void{ enqueue("setVar", _arg1); } public function clearIgnoredOrganic():void{ enqueue("clearIgnoredOrganic"); } public function setDomainName(_arg1:String):void{ enqueue("setDomainName", _arg1); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'addTrans' method for the moment.")); }; return (null); } public function setCampSourceKey(_arg1:String):void{ enqueue("setCampSourceKey", _arg1); } public function setCampContentKey(_arg1:String):void{ enqueue("setCampContentKey", _arg1); } public function clearIgnoredRef():void{ enqueue("clearIgnoredRef"); } public function setLocalServerMode():void{ enqueue("setLocalServerMode"); } public function getLocalGifPath():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getLocalGifPath' method for the moment.")); }; return (""); } public function setAllowAnchor(_arg1:Boolean):void{ enqueue("setAllowAnchor", _arg1); } public function setLocalGifPath(_arg1:String):void{ enqueue("setLocalGifPath", _arg1); } public function getVersion():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getVersion' method for the moment.")); }; return (""); } public function setCookiePath(_arg1:String):void{ enqueue("setCookiePath", _arg1); } public function setSampleRate(_arg1:Number):void{ enqueue("setSampleRate", _arg1); } public function setAllowHash(_arg1:Boolean):void{ enqueue("setAllowHash", _arg1); } public function addIgnoredOrganic(_arg1:String):void{ enqueue("addIgnoredOrganic", _arg1); } public function setCampNOKey(_arg1:String):void{ enqueue("setCampNOKey", _arg1); } public function getServiceMode():ServerOperationMode{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getServiceMode' method for the moment.")); }; return (null); } public function setLocalRemoteServerMode():void{ enqueue("setLocalRemoteServerMode"); } public function cookiePathCopy(_arg1:String):void{ enqueue("cookiePathCopy", _arg1); } public function setDetectTitle(_arg1:Boolean):void{ enqueue("setDetectTitle", _arg1); } public function getDetectFlash():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectFlash' method for the moment.")); }; return (false); } public function setCampaignTrack(_arg1:Boolean):void{ enqueue("setCampaignTrack", _arg1); } public function clearOrganic():void{ enqueue("clearOrganic"); } public function setCampTermKey(_arg1:String):void{ enqueue("setCampTermKey", _arg1); } public function addIgnoredRef(_arg1:String):void{ enqueue("addIgnoredRef", _arg1); } public function setCampMediumKey(_arg1:String):void{ enqueue("setCampMediumKey", _arg1); } public function setSessionTimeout(_arg1:int):void{ enqueue("setSessionTimeout", _arg1); } public function setRemoteServerMode():void{ enqueue("setRemoteServerMode"); } public function element(){ return (_ar[0]); } public function getAccount():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getAccount' method for the moment.")); }; return (""); } } }//package com.google.analytics.core
Section 45
//TrackerMode (com.google.analytics.core.TrackerMode) package com.google.analytics.core { public class TrackerMode { public static const BRIDGE:String = "Bridge"; public static const AS3:String = "AS3"; } }//package com.google.analytics.core
Section 46
//Utils (com.google.analytics.core.Utils) package com.google.analytics.core { public class Utils { public static function trim(_arg1:String, _arg2:Boolean=false):String{ var _local3:Array; var _local4:String; var _local5:int; var _local6:int; var _local7:int; if (_arg1 == ""){ return (""); }; _local3 = [" ", "\n", "\r", "\t"]; _local4 = _arg1; if (_arg2){ _local5 = 0; while ((((_local5 < _local3.length)) && ((_local4.indexOf(_local3[_local5]) > -1)))) { _local4 = _local4.split(_local3[_local5]).join(""); _local5++; }; } else { _local6 = 0; while ((((_local6 < _local4.length)) && ((_local3.indexOf(_local4.charAt(_local6)) > -1)))) { _local6++; }; _local4 = _local4.substr(_local6); _local7 = (_local4.length - 1); while ((((_local7 >= 0)) && ((_local3.indexOf(_local4.charAt(_local7)) > -1)))) { _local7--; }; _local4 = _local4.substring(0, (_local7 + 1)); }; return (_local4); } public static function generateHash(_arg1:String):int{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; _local2 = 1; _local3 = 0; if (((!((_arg1 == null))) && (!((_arg1 == ""))))){ _local2 = 0; _local4 = (_arg1.length - 1); while (_local4 >= 0) { _local5 = _arg1.charCodeAt(_local4); _local2 = ((((_local2 << 6) & 268435455) + _local5) + (_local5 << 14)); _local3 = (_local2 & 266338304); if (_local3 != 0){ _local2 = (_local2 ^ (_local3 >> 21)); }; _local4--; }; }; return (_local2); } public static function generate32bitRandom():int{ return (Math.round((Math.random() * 2147483647))); } public static function validateAccount(_arg1:String):Boolean{ var _local2:RegExp; _local2 = /^UA-[0-9]*-[0-9]*$/; return (_local2.test(_arg1)); } } }//package com.google.analytics.core
Section 47
//Cookie (com.google.analytics.data.Cookie) package com.google.analytics.data { public interface Cookie { function toURLString():String; function toSharedObject():Object; function set creation(_arg1:Date):void; function fromSharedObject(_arg1:Object):void; function get expiration():Date; function isExpired():Boolean; function set expiration(_arg1:Date):void; function get creation():Date; } }//package com.google.analytics.data
Section 48
//UTMA (com.google.analytics.data.UTMA) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMA extends UTMCookie { private var _domainHash:Number; private var _firstTime:Number; private var _currentTime:Number; private var _sessionId:Number; private var _lastTime:Number; private var _sessionCount:Number; public function UTMA(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:Number=NaN){ super("utma", "__utma", ["domainHash", "sessionId", "firstTime", "lastTime", "currentTime", "sessionCount"], (Timespan.twoyears * 1000)); this.domainHash = _arg1; this.sessionId = _arg2; this.firstTime = _arg3; this.lastTime = _arg4; this.currentTime = _arg5; this.sessionCount = _arg6; } public function get lastTime():Number{ return (_lastTime); } public function set lastTime(_arg1:Number):void{ _lastTime = _arg1; update(); } public function get sessionCount():Number{ return (_sessionCount); } public function get firstTime():Number{ return (_firstTime); } public function set sessionId(_arg1:Number):void{ _sessionId = _arg1; update(); } public function set sessionCount(_arg1:Number):void{ _sessionCount = _arg1; update(); } public function set firstTime(_arg1:Number):void{ _firstTime = _arg1; update(); } public function set currentTime(_arg1:Number):void{ _currentTime = _arg1; update(); } public function get sessionId():Number{ return (_sessionId); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get currentTime():Number{ return (_currentTime); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 49
//UTMB (com.google.analytics.data.UTMB) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMB extends UTMCookie { private var _lastTime:Number; private var _domainHash:Number; private var _trackCount:Number; private var _token:Number; public static var defaultTimespan:Number = Timespan.thirtyminutes; public function UTMB(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN){ super("utmb", "__utmb", ["domainHash", "trackCount", "token", "lastTime"], (defaultTimespan * 1000)); this.domainHash = _arg1; this.trackCount = _arg2; this.token = _arg3; this.lastTime = _arg4; } public function get token():Number{ return (_token); } public function set trackCount(_arg1:Number):void{ _trackCount = _arg1; update(); } public function set lastTime(_arg1:Number):void{ _lastTime = _arg1; update(); } public function get lastTime():Number{ return (_lastTime); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } public function set token(_arg1:Number):void{ _token = _arg1; update(); } public function get trackCount():Number{ return (_trackCount); } } }//package com.google.analytics.data
Section 50
//UTMC (com.google.analytics.data.UTMC) package com.google.analytics.data { public class UTMC extends UTMCookie { private var _domainHash:Number; public function UTMC(_arg1:Number=NaN){ super("utmc", "__utmc", ["domainHash"]); this.domainHash = _arg1; } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 51
//UTMCookie (com.google.analytics.data.UTMCookie) package com.google.analytics.data { import com.google.analytics.core.*; public class UTMCookie implements Cookie { protected var inURL:String; protected var name:String; private var _creation:Date; private var _expiration:Date; public var proxy:Buffer; private var _timespan:Number; protected var fields:Array; public function UTMCookie(_arg1:String, _arg2:String, _arg3:Array, _arg4:Number=0){ this.name = _arg1; this.inURL = _arg2; this.fields = _arg3; _timestamp(_arg4); } public function isEmpty():Boolean{ var _local1:int; var _local2:String; var _local3:int; _local1 = 0; _local3 = 0; while (_local3 < fields.length) { _local2 = fields[_local3]; if ((((this[_local2] is Number)) && (isNaN(this[_local2])))){ _local1++; } else { if ((((this[_local2] is String)) && ((this[_local2] == "")))){ _local1++; }; }; _local3++; }; if (_local1 == fields.length){ return (true); }; return (false); } protected function update():void{ resetTimestamp(); if (proxy){ proxy.update(name, toSharedObject()); }; } public function fromSharedObject(_arg1:Object):void{ var _local2:String; var _local3:int; var _local4:int; _local3 = fields.length; _local4 = 0; while (_local4 < _local3) { _local2 = fields[_local4]; if (_arg1[_local2]){ this[_local2] = _arg1[_local2]; }; _local4++; }; if (_arg1.creation){ this.creation = _arg1.creation; }; if (_arg1.expiration){ this.expiration = _arg1.expiration; }; } private function _timestamp(_arg1:Number):void{ creation = new Date(); _timespan = _arg1; if (_arg1 > 0){ expiration = new Date((creation.valueOf() + _arg1)); }; } public function isExpired():Boolean{ var _local1:Date; var _local2:Number; _local1 = new Date(); _local2 = (expiration.valueOf() - _local1.valueOf()); if (_local2 <= 0){ return (true); }; return (false); } public function set expiration(_arg1:Date):void{ _expiration = _arg1; } public function get creation():Date{ return (_creation); } public function reset():void{ var _local1:String; var _local2:int; _local2 = 0; while (_local2 < fields.length) { _local1 = fields[_local2]; if ((this[_local1] is Number)){ this[_local1] = NaN; } else { if ((this[_local1] is String)){ this[_local1] = ""; }; }; _local2++; }; resetTimestamp(); update(); } public function valueOf():String{ var _local1:Array; var _local2:String; var _local3:*; var _local4:int; _local1 = []; _local4 = 0; while (_local4 < fields.length) { _local2 = fields[_local4]; _local3 = this[_local2]; if ((_local3 is String)){ if (_local3 == ""){ _local3 = "-"; _local1.push(_local3); } else { _local1.push(_local3); }; } else { if ((_local3 is Number)){ if (_local3 == 0){ _local1.push(_local3); } else { if (isNaN(_local3)){ _local3 = "-"; _local1.push(_local3); } else { _local1.push(_local3); }; }; }; }; _local4++; }; return (("" + _local1.join("."))); } public function resetTimestamp(_arg1:Number=NaN):void{ if (!isNaN(_arg1)){ _timespan = _arg1; }; _creation = null; _expiration = null; _timestamp(_timespan); } public function get expiration():Date{ if (_expiration){ return (_expiration); }; return (new Date((new Date().valueOf() + 1000))); } public function toURLString():String{ return (((inURL + "=") + valueOf())); } public function toSharedObject():Object{ var _local1:Object; var _local2:String; var _local3:*; var _local4:int; _local1 = {}; _local4 = 0; for (;_local4 < fields.length;_local4++) { _local2 = fields[_local4]; _local3 = this[_local2]; if ((_local3 is String)){ _local1[_local2] = _local3; } else { if (_local3 == 0){ _local1[_local2] = _local3; } else { if (isNaN(_local3)){ continue; } else { _local1[_local2] = _local3; }; }; }; }; _local1.creation = creation; _local1.expiration = expiration; return (_local1); } public function toString(_arg1:Boolean=false):String{ var _local2:Array; var _local3:String; var _local4:*; var _local5:int; var _local6:int; var _local7:String; _local2 = []; _local5 = fields.length; _local6 = 0; for (;_local6 < _local5;_local6++) { _local3 = fields[_local6]; _local4 = this[_local3]; if ((_local4 is String)){ _local2.push((((_local3 + ": \"") + _local4) + "\"")); } else { if (_local4 == 0){ _local2.push(((_local3 + ": ") + _local4)); } else { if (isNaN(_local4)){ continue; } else { _local2.push(((_local3 + ": ") + _local4)); }; }; }; }; _local7 = (((name.toUpperCase() + " {") + _local2.join(", ")) + "}"); if (_arg1){ _local7 = (_local7 + (((" creation:" + creation) + ", expiration:") + expiration)); }; return (_local7); } public function set creation(_arg1:Date):void{ _creation = _arg1; } } }//package com.google.analytics.data
Section 52
//UTMK (com.google.analytics.data.UTMK) package com.google.analytics.data { public class UTMK extends UTMCookie { private var _hash:Number; public function UTMK(_arg1:Number=NaN){ super("utmk", "__utmk", ["hash"]); this.hash = _arg1; } public function get hash():Number{ return (_hash); } public function set hash(_arg1:Number):void{ _hash = _arg1; update(); } } }//package com.google.analytics.data
Section 53
//UTMV (com.google.analytics.data.UTMV) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMV extends UTMCookie { private var _domainHash:Number; private var _value:String; public function UTMV(_arg1:Number=NaN, _arg2:String=""){ super("utmv", "__utmv", ["domainHash", "value"], (Timespan.twoyears * 1000)); this.domainHash = _arg1; this.value = _arg2; } public function get value():String{ return (_value); } public function set value(_arg1:String):void{ _value = _arg1; update(); } override public function toURLString():String{ return (((inURL + "=") + encodeURI(valueOf()))); } public function get domainHash():Number{ return (_domainHash); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } } }//package com.google.analytics.data
Section 54
//UTMZ (com.google.analytics.data.UTMZ) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMZ extends UTMCookie { private var _domainHash:Number; private var _campaignSessions:Number; private var _campaignTracking:String; private var _responseCount:Number; private var _campaignCreation:Number; public static var defaultTimespan:Number = Timespan.sixmonths; public function UTMZ(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:String=""){ super("utmz", "__utmz", ["domainHash", "campaignCreation", "campaignSessions", "responseCount", "campaignTracking"], (defaultTimespan * 1000)); this.domainHash = _arg1; this.campaignCreation = _arg2; this.campaignSessions = _arg3; this.responseCount = _arg4; this.campaignTracking = _arg5; } public function get campaignCreation():Number{ return (_campaignCreation); } public function set campaignSessions(_arg1:Number):void{ _campaignSessions = _arg1; update(); } public function set responseCount(_arg1:Number):void{ _responseCount = _arg1; update(); } public function set campaignCreation(_arg1:Number):void{ _campaignCreation = _arg1; update(); } public function get campaignSessions():Number{ return (_campaignSessions); } public function get responseCount():Number{ return (_responseCount); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get campaignTracking():String{ return (_campaignTracking); } public function set campaignTracking(_arg1:String):void{ _campaignTracking = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 55
//X10 (com.google.analytics.data.X10) package com.google.analytics.data { public class X10 { private var _delimEnd:String;// = ")" private var _delimSet:String;// = "*" private var _escapeChar:String;// = "'" private var _delimBegin:String;// = "(" private var _delimNumValue:String;// = "!" private var _key:String;// = "k" private var _set:Array; private var _projectData:Object; private var _hasData:int; private var _escapeCharMap:Object; private var _minimum:int; private var _value:String;// = "v" public function X10(){ _key = "k"; _value = "v"; _set = [_key, _value]; _delimBegin = "("; _delimEnd = ")"; _delimSet = "*"; _delimNumValue = "!"; _escapeChar = "'"; super(); _projectData = {}; _escapeCharMap = {}; _escapeCharMap[_escapeChar] = "'0"; _escapeCharMap[_delimEnd] = "'1"; _escapeCharMap[_delimSet] = "'2"; _escapeCharMap[_delimNumValue] = "'3"; _minimum = 1; } private function _clearInternal(_arg1:Number, _arg2:String):void{ var _local3:Boolean; var _local4:int; var _local5:int; if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){ _projectData[_arg1][_arg2] = undefined; _local3 = true; _local5 = _set.length; _local4 = 0; while (_local4 < _local5) { if (_projectData[_arg1][_set[_local4]] != undefined){ _local3 = false; break; }; _local4++; }; if (_local3){ _projectData[_arg1] = undefined; _hasData = (_hasData - 1); }; }; } public function hasData():Boolean{ return ((_hasData > 0)); } private function _setInternal(_arg1:Number, _arg2:String, _arg3:Number, _arg4:String):void{ if (!hasProject(_arg1)){ _projectData[_arg1] = {}; }; if (_projectData[_arg1][_arg2] == undefined){ _projectData[_arg1][_arg2] = []; }; _projectData[_arg1][_arg2][_arg3] = _arg4; _hasData = (_hasData + 1); } public function hasProject(_arg1:Number):Boolean{ return (_projectData[_arg1]); } public function clearKey(_arg1:Number):void{ _clearInternal(_arg1, _key); } private function _renderDataType(_arg1:Array):String{ var _local2:Array; var _local3:String; var _local4:int; _local2 = []; _local4 = 0; while (_local4 < _arg1.length) { if (_arg1[_local4] != undefined){ _local3 = ""; if (((!((_local4 == _minimum))) && ((_arg1[(_local4 - 1)] == undefined)))){ _local3 = (_local3 + _local4.toString()); _local3 = (_local3 + _delimNumValue); }; _local3 = (_local3 + _escapeExtensibleValue(_arg1[_local4])); _local2.push(_local3); }; _local4++; }; return (((_delimBegin + _local2.join(_delimSet)) + _delimEnd)); } public function getKey(_arg1:Number, _arg2:Number):String{ return ((_getInternal(_arg1, _key, _arg2) as String)); } public function clearValue(_arg1:Number):void{ _clearInternal(_arg1, _value); } public function renderMergedUrlString(_arg1:X10=null):String{ var _local2:Array; var _local3:String; if (!_arg1){ return (renderUrlString()); }; _local2 = [_arg1.renderUrlString()]; for (_local3 in _projectData) { if (((hasProject(Number(_local3))) && (!(_arg1.hasProject(Number(_local3)))))){ _local2.push((_local3 + _renderProject(_projectData[_local3]))); }; }; return (_local2.join("")); } public function setValue(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ if (((((!((Math.round(_arg3) == _arg3))) || (isNaN(_arg3)))) || ((_arg3 == Infinity)))){ return (false); }; _setInternal(_arg1, _value, _arg2, _arg3.toString()); return (true); } public function renderUrlString():String{ var _local1:Array; var _local2:String; _local1 = []; for (_local2 in _projectData) { if (hasProject(Number(_local2))){ _local1.push((_local2 + _renderProject(_projectData[_local2]))); }; }; return (_local1.join("")); } private function _getInternal(_arg1:Number, _arg2:String, _arg3:Number):Object{ if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){ return (_projectData[_arg1][_arg2][_arg3]); }; return (undefined); } public function setKey(_arg1:Number, _arg2:Number, _arg3:String):Boolean{ _setInternal(_arg1, _key, _arg2, _arg3); return (true); } public function getValue(_arg1:Number, _arg2:Number){ var _local3:*; _local3 = _getInternal(_arg1, _value, _arg2); if (_local3 == null){ return (null); }; return (Number(_local3)); } private function _renderProject(_arg1:Object):String{ var _local2:String; var _local3:Boolean; var _local4:int; var _local5:Array; var _local6:int; _local2 = ""; _local3 = false; _local6 = _set.length; _local4 = 0; while (_local4 < _local6) { _local5 = _arg1[_set[_local4]]; if (_local5){ if (_local3){ _local2 = (_local2 + _set[_local4]); }; _local2 = (_local2 + _renderDataType(_local5)); _local3 = false; } else { _local3 = true; }; _local4++; }; return (_local2); } private function _escapeExtensibleValue(_arg1:String):String{ var _local2:String; var _local3:int; var _local4:String; var _local5:String; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { _local4 = _arg1.charAt(_local3); _local5 = _escapeCharMap[_local4]; if (_local5){ _local2 = (_local2 + _local5); } else { _local2 = (_local2 + _local4); }; _local3++; }; return (_local2); } } }//package com.google.analytics.data
Section 56
//_Style (com.google.analytics.debug._Style) package com.google.analytics.debug { import flash.text.*; import flash.net.*; public class _Style { public var borderColor:uint; public var backgroundColor:uint; private var _sheet:StyleSheet; public var roundedCorner:uint; public var alertColor:uint; public var infoColor:uint; public var successColor:uint; private var _loader:URLLoader; public var failureColor:uint; private var _defaultSheet:String; public var warningColor:uint; public function _Style(){ _sheet = new StyleSheet(); _loader = new URLLoader(); _init(); } private function _parseSheet(_arg1:String):void{ _sheet.parseCSS(_arg1); } public function get sheet():StyleSheet{ return (_sheet); } private function _init():void{ _defaultSheet = ""; _defaultSheet = (_defaultSheet + "a{text-decoration: underline;}\n"); _defaultSheet = (_defaultSheet + ".uiLabel{color: #000000;font-family: Arial;font-size: 12;margin-left: 2;margin-right: 2;}\n"); _defaultSheet = (_defaultSheet + ".uiWarning{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlert{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiInfo{color: #000000;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiSuccess{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiFailure{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlertAction{color: #ffffff;text-align: center;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlertTitle{color: #ffffff;font-family: Arial;font-size: 16;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + "\n"); roundedCorner = 6; backgroundColor = 0xCCCCCC; borderColor = 0x555555; infoColor = 16777113; alertColor = 0xFFCC00; warningColor = 0xCC0000; successColor = 0xFF00; failureColor = 0xFF0000; _parseSheet(_defaultSheet); } } }//package com.google.analytics.debug
Section 57
//Alert (com.google.analytics.debug.Alert) package com.google.analytics.debug { import flash.events.*; public class Alert extends Label { public var actionOnNextLine:Boolean;// = true public var autoClose:Boolean;// = true private var _actions:Array; public function Alert(_arg1:String, _arg2:Array, _arg3:String="uiAlert", _arg4:uint=0, _arg5:Align=null, _arg6:Boolean=false, _arg7:Boolean=true){ var _local8:int; autoClose = true; actionOnNextLine = true; if (_arg4 == 0){ _arg4 = Style.alertColor; }; if (_arg5 == null){ _arg5 = Align.center; }; super(_arg1, _arg3, _arg4, _arg5, _arg6); this.selectable = true; super.mouseChildren = true; this.buttonMode = true; this.mouseEnabled = true; this.useHandCursor = true; this.actionOnNextLine = _arg7; _actions = []; _local8 = 0; while (_local8 < _arg2.length) { _arg2[_local8].container = this; _actions.push(_arg2[_local8]); _local8++; }; } protected function getAction(_arg1:String):AlertAction{ var _local2:int; _local2 = 0; while (_local2 < _actions.length) { if (_arg1 == _actions[_local2].activator){ return (_actions[_local2]); }; _local2++; }; return (null); } override protected function layout():void{ super.layout(); _defineActions(); } protected function spaces(_arg1:int):String{ var _local2:String; var _local3:String; var _local4:int; _local2 = ""; _local3 = " "; _local4 = 0; while (_local4 < (_arg1 + 1)) { _local2 = (_local2 + _local3); _local4++; }; return (_local2); } override public function onLink(_arg1:TextEvent):void{ var _local2:AlertAction; if (isValidAction(_arg1.text)){ _local2 = getAction(_arg1.text); if (_local2){ _local2.execute(); }; }; if (autoClose){ close(); }; } protected function isValidAction(_arg1:String):Boolean{ var _local2:int; _local2 = 0; while (_local2 < _actions.length) { if (_arg1 == _actions[_local2].activator){ return (true); }; _local2++; }; return (false); } private function _defineActions():void{ var _local1:String; var _local2:Array; var _local3:AlertAction; var _local4:int; _local1 = ""; if (actionOnNextLine){ _local1 = (_local1 + "\n"); } else { _local1 = (_local1 + " |"); }; _local1 = (_local1 + " "); _local2 = []; _local4 = 0; while (_local4 < _actions.length) { _local3 = _actions[_local4]; _local2.push((((("<a href=\"event:" + _local3.activator) + "\">") + _local3.name) + "</a>")); _local4++; }; _local1 = (_local1 + _local2.join(" | ")); appendText(_local1, "uiAlertAction"); } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 58
//AlertAction (com.google.analytics.debug.AlertAction) package com.google.analytics.debug { public class AlertAction { public var container:Alert; private var _callback; public var name:String; public var activator:String; public function AlertAction(_arg1:String, _arg2:String, _arg3){ this.name = _arg1; this.activator = _arg2; _callback = _arg3; } public function execute():void{ if (_callback){ if ((_callback is Function)){ (_callback as Function)(); } else { if ((_callback is String)){ var _local1 = container; _local1[_callback](); }; }; }; } } }//package com.google.analytics.debug
Section 59
//Align (com.google.analytics.debug.Align) package com.google.analytics.debug { public class Align { private var _value:int; private var _name:String; public static const bottomRight:Align = new Align(18, "bottomRight"); ; public static const right:Align = new Align(16, "right"); ; public static const left:Align = new Align(32, "left"); ; public static const topRight:Align = new Align(17, "topRight"); ; public static const bottom:Align = new Align(2, "bottom"); ; public static const bottomLeft:Align = new Align(34, "bottomLeft"); ; public static const topLeft:Align = new Align(33, "topLeft"); ; public static const center:Align = new Align(0x0100, "center"); ; public static const none:Align = new Align(0, "none"); ; public static const top:Align = new Align(1, "top"); ; public function Align(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.debug
Section 60
//Background (com.google.analytics.debug.Background) package com.google.analytics.debug { import flash.display.*; public class Background { public static function drawRounded(_arg1, _arg2:Graphics, _arg3:uint=0, _arg4:uint=0):void{ var _local5:uint; var _local6:uint; var _local7:uint; _local7 = Style.roundedCorner; if ((((_arg3 > 0)) && ((_arg4 > 0)))){ _local5 = _arg3; _local6 = _arg4; } else { _local5 = _arg1.width; _local6 = _arg1.height; }; if (((_arg1.stickToEdge) && (!((_arg1.alignement == Align.none))))){ switch (_arg1.alignement){ case Align.top: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, _local7); break; case Align.topLeft: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, 0, _local7); break; case Align.topRight: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, 0); break; case Align.bottom: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, _local7, 0, 0); break; case Align.bottomLeft: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, 0); break; case Align.bottomRight: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, 0, 0); break; case Align.left: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, _local7); break; case Align.right: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, _local7, 0); break; case Align.center: _arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7); break; }; } else { _arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7); }; } } }//package com.google.analytics.debug
Section 61
//Debug (com.google.analytics.debug.Debug) package com.google.analytics.debug { import flash.events.*; import flash.ui.*; public class Debug extends Label { private var _lines:Array; private var _preferredForcedWidth:uint;// = 540 public var maxLines:uint;// = 16 private var _linediff:int;// = 0 public static var count:uint = 0; public function Debug(_arg1:uint=0, _arg2:Align=null, _arg3:Boolean=false){ _linediff = 0; _preferredForcedWidth = 540; maxLines = 16; if (_arg2 == null){ _arg2 = Align.bottom; }; super("", "uiLabel", _arg1, _arg2, _arg3); this.name = ("Debug" + count++); _lines = []; selectable = true; addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function close():void{ dispose(); } public function writeBold(_arg1:String):void{ write(_arg1, true); } override protected function dispose():void{ removeEventListener(KeyboardEvent.KEY_DOWN, onKey); super.dispose(); } override public function get forcedWidth():uint{ if (this.parent){ if (UISprite(this.parent).forcedWidth > _preferredForcedWidth){ return (_preferredForcedWidth); }; return (UISprite(this.parent).forcedWidth); } else { }; return (!NULL!); } private function onKey(_arg1:KeyboardEvent=null):void{ var _local2:Array; switch (_arg1.keyCode){ case Keyboard.DOWN: _local2 = _getLinesToDisplay(1); break; case Keyboard.UP: _local2 = _getLinesToDisplay(-1); break; default: _local2 = null; }; if (_local2 == null){ return; }; text = _local2.join("\n"); } public function write(_arg1:String, _arg2:Boolean=false):void{ var _local3:Array; var _local4:String; var _local5:String; var _local6:int; var _local7:Array; if (_arg1.indexOf("") > -1){ _local3 = _arg1.split("\n"); } else { _local3 = [_arg1]; }; _local4 = ""; _local5 = ""; if (_arg2){ _local4 = "<b>"; _local5 = "</b>"; }; _local6 = 0; while (_local6 < _local3.length) { _lines.push(((_local4 + _local3[_local6]) + _local5)); _local6++; }; _local7 = _getLinesToDisplay(); text = _local7.join("\n"); } private function _getLinesToDisplay(_arg1:int=0):Array{ var _local2:Array; var _local3:uint; var _local4:uint; if ((_lines.length - 1) > maxLines){ if ((_linediff <= 0)){ _linediff = (_linediff + _arg1); } else { if ((((_linediff > 0)) && ((_arg1 < 0)))){ _linediff = (_linediff + _arg1); }; }; _local3 = ((_lines.length - maxLines) + _linediff); _local4 = (_local3 + maxLines); _local2 = _lines.slice(_local3, _local4); } else { _local2 = _lines; }; return (_local2); } } }//package com.google.analytics.debug
Section 62
//DebugConfiguration (com.google.analytics.debug.DebugConfiguration) package com.google.analytics.debug { import com.google.analytics.core.*; import flash.net.*; import flash.utils.*; import flash.ui.*; public class DebugConfiguration { public var showHideKey:Number; private var _mode:VisualDebugMode; private var _verbose:Boolean;// = false public var destroyKey:Number; public var GIFRequests:Boolean;// = false public var infoTimeout:Number;// = 1000 public var showInfos:Boolean;// = true public var minimizedOnStart:Boolean;// = false private var _active:Boolean;// = false public var traceOutput:Boolean;// = false public var layout:ILayout; public var warningTimeout:Number;// = 1500 public var javascript:Boolean;// = false public var showWarnings:Boolean;// = true private var _visualInitialized:Boolean;// = false public function DebugConfiguration(){ _active = false; _verbose = false; _visualInitialized = false; _mode = VisualDebugMode.basic; traceOutput = false; javascript = false; GIFRequests = false; showInfos = true; infoTimeout = 1000; showWarnings = true; warningTimeout = 1500; minimizedOnStart = false; showHideKey = Keyboard.SPACE; destroyKey = Keyboard.BACKSPACE; super(); } public function get verbose():Boolean{ return (_verbose); } public function set verbose(_arg1:Boolean):void{ _verbose = _arg1; } public function set mode(_arg1):void{ if ((_arg1 is String)){ switch (_arg1){ case "geek": _arg1 = VisualDebugMode.geek; break; case "advanced": _arg1 = VisualDebugMode.advanced; break; case "basic": default: _arg1 = VisualDebugMode.basic; }; }; _mode = _arg1; } public function success(_arg1:String):void{ if (layout){ layout.createSuccessAlert(_arg1); }; if (traceOutput){ trace((("[+] " + _arg1) + " !!")); }; } public function get active():Boolean{ return (_active); } private function _initializeVisual():void{ if (layout){ layout.init(); _visualInitialized = true; }; } private function _destroyVisual():void{ if (((layout) && (_visualInitialized))){ layout.destroy(); }; } public function warning(_arg1:String, _arg2:VisualDebugMode=null):void{ if (_filter(_arg2)){ return; }; if (((layout) && (showWarnings))){ layout.createWarning(_arg1); }; if (traceOutput){ trace((("## " + _arg1) + " ##")); }; } private function _filter(_arg1:VisualDebugMode=null):Boolean{ return (((_arg1) && ((int(_arg1) >= int(this.mode))))); } public function failure(_arg1:String):void{ if (layout){ layout.createFailureAlert(_arg1); }; if (traceOutput){ trace((("[-] " + _arg1) + " !!")); }; } public function get mode(){ return (_mode); } public function set active(_arg1:Boolean):void{ _active = _arg1; if (_active){ _initializeVisual(); } else { _destroyVisual(); }; } protected function trace(_arg1:String):void{ var _local2:Array; var _local3:String; var _local4:String; var _local5:int; var _local6:int; var _local7:Array; var _local8:int; _local2 = []; _local3 = ""; _local4 = ""; if (this.mode == VisualDebugMode.geek){ _local3 = (getTimer() + " - "); _local4 = (new Array(_local3.length).join(" ") + " "); }; if (_arg1.indexOf("\n") > -1){ _local7 = _arg1.split("\n"); _local8 = 0; while (_local8 < _local7.length) { if (_local7[_local8] == ""){ } else { if (_local8 == 0){ _local2.push((_local3 + _local7[_local8])); } else { _local2.push((_local4 + _local7[_local8])); }; }; _local8++; }; } else { _local2.push((_local3 + _arg1)); }; _local5 = _local2.length; _local6 = 0; while (_local6 < _local5) { trace(_local2[_local6]); _local6++; }; } public function alert(_arg1:String):void{ if (layout){ layout.createAlert(_arg1); }; if (traceOutput){ trace((("!! " + _arg1) + " !!")); }; } public function info(_arg1:String, _arg2:VisualDebugMode=null):void{ if (_filter(_arg2)){ return; }; if (((layout) && (showInfos))){ layout.createInfo(_arg1); }; if (traceOutput){ trace(_arg1); }; } public function alertGifRequest(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{ if (layout){ layout.createGIFRequestAlert(_arg1, _arg2, _arg3); }; if (traceOutput){ trace(((">> " + _arg1) + " <<")); }; } } }//package com.google.analytics.debug
Section 63
//FailureAlert (com.google.analytics.debug.FailureAlert) package com.google.analytics.debug { public class FailureAlert extends Alert { public function FailureAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){ var _local4:Align; var _local5:Boolean; var _local6:Boolean; _local4 = Align.bottomLeft; _local5 = true; _local6 = false; if (_arg1.verbose){ _arg2 = ((("<u><span class=\"uiAlertTitle\">Failure</span>" + spaces(18)) + "</u>\n\n") + _arg2); _local4 = Align.center; _local5 = false; _local6 = true; }; super(_arg2, _arg3, "uiFailure", Style.failureColor, _local4, _local5, _local6); } } }//package com.google.analytics.debug
Section 64
//GIFRequestAlert (com.google.analytics.debug.GIFRequestAlert) package com.google.analytics.debug { public class GIFRequestAlert extends Alert { public function GIFRequestAlert(_arg1:String, _arg2:Array){ super(_arg1, _arg2); } } }//package com.google.analytics.debug
Section 65
//ILayout (com.google.analytics.debug.ILayout) package com.google.analytics.debug { import flash.display.*; import com.google.analytics.core.*; import flash.net.*; public interface ILayout { function createWarning(_arg1:String):void; function addToStage(_arg1:DisplayObject):void; function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void; function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void; function createInfo(_arg1:String):void; function createFailureAlert(_arg1:String):void; function addToPanel(_arg1:String, _arg2:DisplayObject):void; function init():void; function createSuccessAlert(_arg1:String):void; function createVisualDebug():void; function createAlert(_arg1:String):void; function destroy():void; function bringToFront(_arg1:DisplayObject):void; function isAvailable():Boolean; } }//package com.google.analytics.debug
Section 66
//Info (com.google.analytics.debug.Info) package com.google.analytics.debug { import flash.events.*; import flash.utils.*; public class Info extends Label { private var _timer:Timer; public function Info(_arg1:String="", _arg2:uint=3000){ super(_arg1, "uiInfo", Style.infoColor, Align.top, true); if (_arg2 > 0){ _timer = new Timer(_arg2, 1); _timer.start(); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true); }; } public function onComplete(_arg1:TimerEvent):void{ close(); } override public function onLink(_arg1:TextEvent):void{ switch (_arg1.text){ case "hide": close(); break; }; } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 67
//Label (com.google.analytics.debug.Label) package com.google.analytics.debug { import flash.display.*; import flash.text.*; import flash.events.*; public class Label extends UISprite { private var _text:String; private var _textField:TextField; private var _color:uint; protected var selectable:Boolean; public var stickToEdge:Boolean; private var _background:Shape; private var _tag:String; public static var count:uint = 0; public function Label(_arg1:String="", _arg2:String="uiLabel", _arg3:uint=0, _arg4:Align=null, _arg5:Boolean=false){ this.name = ("Label" + count++); selectable = false; _background = new Shape(); _textField = new TextField(); _text = _arg1; _tag = _arg2; if (_arg4 == null){ _arg4 = Align.none; }; this.alignement = _arg4; this.stickToEdge = _arg5; if (_arg3 == 0){ _arg3 = Style.backgroundColor; }; _color = _arg3; _textField.addEventListener(TextEvent.LINK, onLink); } override protected function dispose():void{ _textField.removeEventListener(TextEvent.LINK, onLink); super.dispose(); } private function _draw():void{ var _local1:Graphics; var _local2:uint; var _local3:uint; _local1 = _background.graphics; _local1.clear(); _local1.beginFill(_color); _local2 = _textField.width; _local3 = _textField.height; if (forcedWidth > 0){ _local2 = forcedWidth; }; Background.drawRounded(this, _local1, _local2, _local3); _local1.endFill(); } override protected function layout():void{ _textField.type = TextFieldType.DYNAMIC; _textField.autoSize = TextFieldAutoSize.LEFT; _textField.background = false; _textField.selectable = selectable; _textField.multiline = true; _textField.styleSheet = Style.sheet; this.text = _text; addChild(_background); addChild(_textField); } public function get text():String{ return (_textField.text); } public function set tag(_arg1:String):void{ _tag = _arg1; text = ""; } public function set text(_arg1:String):void{ if (_arg1 == ""){ _arg1 = _text; }; _textField.htmlText = (((("<span class=\"" + tag) + "\">") + _arg1) + "</span>"); _text = _arg1; _draw(); resize(); } public function appendText(_arg1:String, _arg2:String=""):void{ if (_arg1 == ""){ return; }; if (_arg2 == ""){ _arg2 = tag; }; _textField.htmlText = (_textField.htmlText + (((("<span class=\"" + _arg2) + "\">") + _arg1) + "</span>")); _text = (_text + _arg1); _draw(); resize(); } public function onLink(_arg1:TextEvent):void{ } public function get tag():String{ return (_tag); } } }//package com.google.analytics.debug
Section 68
//Layout (com.google.analytics.debug.Layout) package com.google.analytics.debug { import flash.display.*; import flash.events.*; import com.google.analytics.core.*; import flash.net.*; import com.google.analytics.*; public class Layout implements ILayout { private var _display:DisplayObject; private var _infoQueue:Array; private var _maxCharPerLine:int;// = 85 private var _hasInfo:Boolean; private var _warningQueue:Array; private var _hasDebug:Boolean; private var _hasWarning:Boolean; private var _mainPanel:Panel; private var _GRAlertQueue:Array; private var _debug:DebugConfiguration; public var visualDebug:Debug; private var _hasGRAlert:Boolean; public function Layout(_arg1:DebugConfiguration, _arg2:DisplayObject){ _maxCharPerLine = 85; super(); _display = _arg2; _debug = _arg1; _hasWarning = false; _hasInfo = false; _hasDebug = false; _hasGRAlert = false; _warningQueue = []; _infoQueue = []; _GRAlertQueue = []; } private function onKey(_arg1:KeyboardEvent=null):void{ switch (_arg1.keyCode){ case _debug.showHideKey: _mainPanel.visible = !(_mainPanel.visible); break; case _debug.destroyKey: destroy(); break; }; } public function bringToFront(_arg1:DisplayObject):void{ _display.stage.setChildIndex(_arg1, (_display.stage.numChildren - 1)); } public function createFailureAlert(_arg1:String):void{ var _local2:AlertAction; var _local3:Alert; if (_debug.verbose){ _arg1 = _filterMaxChars(_arg1); _local2 = new AlertAction("Close", "close", "close"); } else { _local2 = new AlertAction("X", "close", "close"); }; _local3 = new FailureAlert(_debug, _arg1, [_local2]); addToPanel("analytics", _local3); if (_hasDebug){ if (_debug.verbose){ _arg1 = _arg1.split("\n").join(""); _arg1 = _filterMaxChars(_arg1, 66); }; visualDebug.writeBold(_arg1); }; } public function init():void{ var _local1:int; var _local2:uint; var _local3:uint; var _local4:Panel; _local1 = 10; _local2 = (_display.stage.stageWidth - (_local1 * 2)); _local3 = (_display.stage.stageHeight - (_local1 * 2)); _local4 = new Panel("analytics", _local2, _local3); _local4.alignement = Align.top; _local4.stickToEdge = false; _local4.title = ("Google Analytics v" + GATracker.version); _mainPanel = _local4; addToStage(_local4); bringToFront(_local4); if (_debug.minimizedOnStart){ _mainPanel.onToggle(); }; createVisualDebug(); _display.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey, false, 0, true); } public function addToPanel(_arg1:String, _arg2:DisplayObject):void{ var _local3:DisplayObject; var _local4:Panel; _local3 = _display.stage.getChildByName(_arg1); if (_local3){ _local4 = (_local3 as Panel); _local4.addData(_arg2); } else { trace((("panel \"" + _arg1) + "\" not found")); }; } private function _clearInfo(_arg1:Event):void{ _hasInfo = false; if (_infoQueue.length > 0){ createInfo(_infoQueue.shift()); }; } private function _filterMaxChars(_arg1:String, _arg2:int=0):String{ var _local3:String; var _local4:Array; var _local5:Array; var _local6:String; var _local7:int; _local3 = "\n"; _local4 = []; _local5 = _arg1.split(_local3); if (_arg2 == 0){ _arg2 = _maxCharPerLine; }; _local7 = 0; while (_local7 < _local5.length) { _local6 = _local5[_local7]; while (_local6.length > _arg2) { _local4.push(_local6.substr(0, _arg2)); _local6 = _local6.substring(_arg2); }; _local4.push(_local6); _local7++; }; return (_local4.join(_local3)); } public function createWarning(_arg1:String):void{ var _local2:Warning; if (((_hasWarning) || (!(isAvailable())))){ _warningQueue.push(_arg1); return; }; _arg1 = _filterMaxChars(_arg1); _hasWarning = true; _local2 = new Warning(_arg1, _debug.warningTimeout); addToPanel("analytics", _local2); _local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearWarning, false, 0, true); if (_hasDebug){ visualDebug.writeBold(_arg1); }; } private function _clearGRAlert(_arg1:Event):void{ _hasGRAlert = false; if (_GRAlertQueue.length > 0){ createGIFRequestAlert.apply(this, _GRAlertQueue.shift()); }; } public function createSuccessAlert(_arg1:String):void{ var _local2:AlertAction; var _local3:Alert; if (_debug.verbose){ _arg1 = _filterMaxChars(_arg1); _local2 = new AlertAction("Close", "close", "close"); } else { _local2 = new AlertAction("X", "close", "close"); }; _local3 = new SuccessAlert(_debug, _arg1, [_local2]); addToPanel("analytics", _local3); if (_hasDebug){ if (_debug.verbose){ _arg1 = _arg1.split("\n").join(""); _arg1 = _filterMaxChars(_arg1, 66); }; visualDebug.writeBold(_arg1); }; } public function isAvailable():Boolean{ return (!((_display.stage == null))); } public function createAlert(_arg1:String):void{ var _local2:Alert; _arg1 = _filterMaxChars(_arg1); _local2 = new Alert(_arg1, [new AlertAction("Close", "close", "close")]); addToPanel("analytics", _local2); if (_hasDebug){ visualDebug.writeBold(_arg1); }; } public function createInfo(_arg1:String):void{ var _local2:Info; if (((_hasInfo) || (!(isAvailable())))){ _infoQueue.push(_arg1); return; }; _arg1 = _filterMaxChars(_arg1); _hasInfo = true; _local2 = new Info(_arg1, _debug.infoTimeout); addToPanel("analytics", _local2); _local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearInfo, false, 0, true); if (_hasDebug){ visualDebug.write(_arg1); }; } public function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{ var f:Function; var gra:GIFRequestAlert; var message = _arg1; var request = _arg2; var ref = _arg3; if (_hasGRAlert){ _GRAlertQueue.push([message, request, ref]); return; }; _hasGRAlert = true; f = function ():void{ ref.sendRequest(request); }; message = _filterMaxChars(message); gra = new GIFRequestAlert(message, [new AlertAction("OK", "ok", f), new AlertAction("Cancel", "cancel", "close")]); addToPanel("analytics", gra); gra.addEventListener(Event.REMOVED_FROM_STAGE, _clearGRAlert, false, 0, true); if (_hasDebug){ if (_debug.verbose){ message = message.split("\n").join(""); message = _filterMaxChars(message, 66); }; visualDebug.write(message); }; } public function createVisualDebug():void{ if (!visualDebug){ visualDebug = new Debug(); visualDebug.alignement = Align.bottom; visualDebug.stickToEdge = true; addToPanel("analytics", visualDebug); _hasDebug = true; }; } public function addToStage(_arg1:DisplayObject):void{ _display.stage.addChild(_arg1); } private function _clearWarning(_arg1:Event):void{ _hasWarning = false; if (_warningQueue.length > 0){ createWarning(_warningQueue.shift()); }; } public function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void{ var _local4:Panel; _local4 = new Panel(_arg1, _arg2, _arg3); _local4.alignement = Align.center; _local4.stickToEdge = false; addToStage(_local4); bringToFront(_local4); } public function destroy():void{ _mainPanel.close(); _debug.layout = null; } } }//package com.google.analytics.debug
Section 69
//Margin (com.google.analytics.debug.Margin) package com.google.analytics.debug { public class Margin { public var bottom:int; public var top:int; public var right:int; public var left:int; public function Margin(_arg1:int=0, _arg2:int=0, _arg3:int=0, _arg4:int=0){ this.top = _arg1; this.bottom = _arg2; this.left = _arg3; this.right = _arg4; } } }//package com.google.analytics.debug
Section 70
//Panel (com.google.analytics.debug.Panel) package com.google.analytics.debug { import flash.display.*; import flash.events.*; public class Panel extends UISprite { protected var baseAlpha:Number; private var _border:Shape; private var _name:String; private var _title:Label; private var _data:UISprite; private var _backgroundColor:uint; private var _colapsed:Boolean; private var _stickToEdge:Boolean; private var _background:Shape; private var _savedW:uint; private var _mask:Sprite; private var _savedH:uint; private var _borderColor:uint; public function Panel(_arg1:String, _arg2:uint, _arg3:uint, _arg4:uint=0, _arg5:uint=0, _arg6:Number=0.3, _arg7:Align=null, _arg8:Boolean=false){ _name = _arg1; this.name = _arg1; this.mouseEnabled = false; _colapsed = false; forcedWidth = _arg2; forcedHeight = _arg3; this.baseAlpha = _arg6; _background = new Shape(); _data = new UISprite(); _data.forcedWidth = _arg2; _data.forcedHeight = _arg3; _data.mouseEnabled = false; _title = new Label(_arg1, "uiLabel", 0xFFFFFF, Align.topLeft, _arg8); _title.buttonMode = true; _title.margin.top = 0.6; _title.margin.left = 0.6; _title.addEventListener(MouseEvent.CLICK, onToggle); _title.mouseChildren = false; _border = new Shape(); _mask = new Sprite(); _mask.useHandCursor = false; _mask.mouseEnabled = false; _mask.mouseChildren = false; if (_arg7 == null){ _arg7 = Align.none; }; this.alignement = _arg7; this.stickToEdge = _arg8; if (_arg4 == 0){ _arg4 = Style.backgroundColor; }; _backgroundColor = _arg4; if (_arg5 == 0){ _arg5 = Style.borderColor; }; _borderColor = _arg5; } public function set stickToEdge(_arg1:Boolean):void{ _stickToEdge = _arg1; _title.stickToEdge = _arg1; } public function onToggle(_arg1:MouseEvent=null):void{ if (_colapsed){ _data.visible = true; } else { _data.visible = false; }; _colapsed = !(_colapsed); _update(); resize(); } override protected function dispose():void{ _title.removeEventListener(MouseEvent.CLICK, onToggle); super.dispose(); } private function _draw():void{ var _local1:uint; var _local2:uint; var _local3:Graphics; var _local4:Graphics; var _local5:Graphics; var _local6:Graphics; if (((_savedW) && (_savedH))){ forcedWidth = _savedW; forcedHeight = _savedH; }; if (!_colapsed){ _local1 = forcedWidth; _local2 = forcedHeight; } else { _local1 = _title.width; _local2 = _title.height; _savedW = forcedWidth; _savedH = forcedHeight; forcedWidth = _local1; forcedHeight = _local2; }; _local3 = _background.graphics; _local3.clear(); _local3.beginFill(_backgroundColor); Background.drawRounded(this, _local3, _local1, _local2); _local3.endFill(); _local4 = _data.graphics; _local4.clear(); _local4.beginFill(_backgroundColor, 0); Background.drawRounded(this, _local4, _local1, _local2); _local4.endFill(); _local5 = _border.graphics; _local5.clear(); _local5.lineStyle(0.1, _borderColor); Background.drawRounded(this, _local5, _local1, _local2); _local5.endFill(); _local6 = _mask.graphics; _local6.clear(); _local6.beginFill(_backgroundColor); Background.drawRounded(this, _local6, (_local1 + 1), (_local2 + 1)); _local6.endFill(); } override protected function layout():void{ _update(); addChild(_background); addChild(_data); addChild(_title); addChild(_border); addChild(_mask); mask = _mask; } public function get title():String{ return (_title.text); } public function get stickToEdge():Boolean{ return (_stickToEdge); } public function set title(_arg1:String):void{ _title.text = _arg1; } private function _update():void{ _draw(); if (baseAlpha < 1){ _background.alpha = baseAlpha; _border.alpha = baseAlpha; }; } public function addData(_arg1:DisplayObject):void{ _data.addChild(_arg1); } public function close():void{ dispose(); if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 71
//Style (com.google.analytics.debug.Style) package com.google.analytics.debug { public const Style:_Style = new _Style(); }//package com.google.analytics.debug
Section 72
//SuccessAlert (com.google.analytics.debug.SuccessAlert) package com.google.analytics.debug { public class SuccessAlert extends Alert { public function SuccessAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){ var _local4:Align; var _local5:Boolean; var _local6:Boolean; _local4 = Align.bottomLeft; _local5 = true; _local6 = false; if (_arg1.verbose){ _arg2 = ((("<u><span class=\"uiAlertTitle\">Success</span>" + spaces(18)) + "</u>\n\n") + _arg2); _local4 = Align.center; _local5 = false; _local6 = true; }; super(_arg2, _arg3, "uiSuccess", Style.successColor, _local4, _local5, _local6); } } }//package com.google.analytics.debug
Section 73
//UISprite (com.google.analytics.debug.UISprite) package com.google.analytics.debug { import flash.display.*; import flash.events.*; public class UISprite extends Sprite { private var _forcedHeight:uint; protected var listenResize:Boolean; public var alignement:Align; private var _forcedWidth:uint; public var margin:Margin; protected var alignTarget:DisplayObject; public function UISprite(_arg1:DisplayObject=null){ listenResize = false; alignement = Align.none; this.alignTarget = _arg1; margin = new Margin(); addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage); addEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage); } protected function dispose():void{ var _local1:DisplayObject; var _local2:int; _local2 = 0; while (_local2 < numChildren) { _local1 = getChildAt(_local2); if (_local1){ removeChild(_local1); }; _local2++; }; } protected function layout():void{ } public function get forcedHeight():uint{ if (_forcedHeight){ return (_forcedHeight); }; return (height); } public function alignTo(_arg1:Align, _arg2:DisplayObject=null):void{ var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:UISprite; if (_arg2 == null){ if ((parent is Stage)){ _arg2 = this.stage; } else { _arg2 = parent; }; }; if (_arg2 == this.stage){ if (this.stage == null){ return; }; _local3 = this.stage.stageHeight; _local4 = this.stage.stageWidth; _local5 = 0; _local6 = 0; } else { _local7 = (_arg2 as UISprite); if (_local7.forcedHeight){ _local3 = _local7.forcedHeight; } else { _local3 = _local7.height; }; if (_local7.forcedWidth){ _local4 = _local7.forcedWidth; } else { _local4 = _local7.width; }; _local5 = 0; _local6 = 0; }; switch (_arg1){ case Align.top: x = ((_local4 / 2) - (forcedWidth / 2)); y = (_local6 + margin.top); break; case Align.bottom: x = ((_local4 / 2) - (forcedWidth / 2)); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; case Align.left: x = (_local5 + margin.left); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.right: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.center: x = ((_local4 / 2) - (forcedWidth / 2)); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.topLeft: x = (_local5 + margin.left); y = (_local6 + margin.top); break; case Align.topRight: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = (_local6 + margin.top); break; case Align.bottomLeft: x = (_local5 + margin.left); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; case Align.bottomRight: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; }; if (((!(listenResize)) && (!((_arg1 == Align.none))))){ _arg2.addEventListener(Event.RESIZE, onResize, false, 0, true); listenResize = true; }; this.alignement = _arg1; this.alignTarget = _arg2; } public function get forcedWidth():uint{ if (_forcedWidth){ return (_forcedWidth); }; return (width); } protected function onResize(_arg1:Event):void{ resize(); } private function _onRemovedFromStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage); removeEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage); dispose(); } public function resize():void{ if (alignement != Align.none){ alignTo(alignement, alignTarget); }; } private function _onAddedToStage(_arg1:Event):void{ layout(); resize(); } public function set forcedHeight(_arg1:uint):void{ _forcedHeight = _arg1; } public function set forcedWidth(_arg1:uint):void{ _forcedWidth = _arg1; } } }//package com.google.analytics.debug
Section 74
//Warning (com.google.analytics.debug.Warning) package com.google.analytics.debug { import flash.events.*; import flash.utils.*; public class Warning extends Label { private var _timer:Timer; public function Warning(_arg1:String="", _arg2:uint=3000){ super(_arg1, "uiWarning", Style.warningColor, Align.top, false); margin.top = 32; if (_arg2 > 0){ _timer = new Timer(_arg2, 1); _timer.start(); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true); }; } public function onComplete(_arg1:TimerEvent):void{ close(); } override public function onLink(_arg1:TextEvent):void{ switch (_arg1.text){ case "hide": close(); break; }; } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 75
//VisualDebugMode (com.google.analytics.debug.VisualDebugMode) package com.google.analytics.debug { public class VisualDebugMode { private var _value:int; private var _name:String; public static const advanced:VisualDebugMode = new VisualDebugMode(1, "advanced"); ; public static const geek:VisualDebugMode = new VisualDebugMode(2, "geek"); ; public static const basic:VisualDebugMode = new VisualDebugMode(0, "basic"); ; public function VisualDebugMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.debug
Section 76
//AnalyticsEvent (com.google.analytics.events.AnalyticsEvent) package com.google.analytics.events { import flash.events.*; import com.google.analytics.*; public class AnalyticsEvent extends Event { public var tracker:AnalyticsTracker; public static const READY:String = "ready"; public function AnalyticsEvent(_arg1:String, _arg2:AnalyticsTracker, _arg3:Boolean=false, _arg4:Boolean=false){ super(_arg1, _arg3, _arg4); this.tracker = _arg2; } override public function clone():Event{ return (new AnalyticsEvent(type, tracker, bubbles, cancelable)); } } }//package com.google.analytics.events
Section 77
//AdSenseGlobals (com.google.analytics.external.AdSenseGlobals) package com.google.analytics.external { import com.google.analytics.debug.*; public class AdSenseGlobals extends JavascriptProxy { private var _gaGlobalVerified:Boolean;// = false public static var gaGlobal_js:XML = <script> <![CDATA[ function() { try { gaGlobal } catch(e) { gaGlobal = {} ; } } ]]> </script> ; public function AdSenseGlobals(_arg1:DebugConfiguration){ _gaGlobalVerified = false; super(_arg1); } public function set vid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.vid", _arg1); } public function get hid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.hid")); } public function get dh():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.dh")); } public function get gaGlobal():Object{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal")); } public function set hid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.hid", _arg1); } public function get sid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.sid")); } private function _verify():void{ if (!_gaGlobalVerified){ executeBlock(gaGlobal_js); _gaGlobalVerified = true; }; } public function get vid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.vid")); } public function set sid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.sid", _arg1); } } }//package com.google.analytics.external
Section 78
//HTMLDOM (com.google.analytics.external.HTMLDOM) package com.google.analytics.external { import com.google.analytics.debug.*; public class HTMLDOM extends JavascriptProxy { private var _referrer:String; private var _protocol:String; private var _host:String; private var _location:String; private var _pathname:String; private var _title:String; private var _characterSet:String; private var _search:String; private var _language:String; private var _colorDepth:String; public static var cache_properties_js:XML = <script> <![CDATA[ function() { var obj = {}; obj.host = document.location.host; obj.language = navigator.language ? navigator.language : navigator.browserLanguage; obj.characterSet = document.characterSet ? document.characterSet : document.charset; obj.colorDepth = window.screen.colorDepth; obj.location = document.location.toString(); obj.pathname = document.location.pathname; obj.protocol = document.location.protocol; obj.search = document.location.search; obj.referrer = document.referrer; obj.title = document.title; return obj; } ]]> </script> ; public function HTMLDOM(_arg1:DebugConfiguration){ super(_arg1); } public function get search():String{ if (_search){ return (_search); }; if (!isAvailable()){ return (null); }; _search = getProperty("document.location.search"); return (_search); } public function get location():String{ if (_location){ return (_location); }; if (!isAvailable()){ return (null); }; _location = getPropertyString("document.location"); return (_location); } public function get pathname():String{ if (_pathname){ return (_pathname); }; if (!isAvailable()){ return (null); }; _pathname = getProperty("document.location.pathname"); return (_pathname); } public function get referrer():String{ if (_referrer){ return (_referrer); }; if (!isAvailable()){ return (null); }; _referrer = getProperty("document.referrer"); return (_referrer); } public function get protocol():String{ if (_protocol){ return (_protocol); }; if (!isAvailable()){ return (null); }; _protocol = getProperty("document.location.protocol"); return (_protocol); } public function cacheProperties():void{ var _local1:Object; if (!isAvailable()){ return; }; _local1 = call(cache_properties_js); if (_local1){ _host = _local1.host; _language = _local1.language; _characterSet = _local1.characterSet; _colorDepth = _local1.colorDepth; _location = _local1.location; _pathname = _local1.pathname; _protocol = _local1.protocol; _search = _local1.search; _referrer = _local1.referrer; _title = _local1.title; }; } public function get colorDepth():String{ if (_colorDepth){ return (_colorDepth); }; if (!isAvailable()){ return (null); }; _colorDepth = getProperty("window.screen.colorDepth"); return (_colorDepth); } public function get title():String{ if (_title){ return (_title); }; if (!isAvailable()){ return (null); }; _title = getProperty("document.title"); return (_title); } public function get host():String{ if (_host){ return (_host); }; if (!isAvailable()){ return (null); }; _host = getProperty("document.location.host"); return (_host); } public function get characterSet():String{ var _local1:String; if (_characterSet){ return (_characterSet); }; if (!isAvailable()){ return (null); }; _local1 = getProperty("document.characterSet"); if (_local1 == null){ _local1 = getProperty("document.charset"); }; _characterSet = _local1; return (_characterSet); } public function get language():String{ var _local1:String; if (_language){ return (_language); }; if (!isAvailable()){ return (null); }; _local1 = getProperty("navigator.language"); if (_local1 == null){ _local1 = getProperty("navigator.browserLanguage"); }; _language = _local1; return (_language); } } }//package com.google.analytics.external
Section 79
//JavascriptProxy (com.google.analytics.external.JavascriptProxy) package com.google.analytics.external { import flash.system.*; import com.google.analytics.debug.*; import flash.external.*; public class JavascriptProxy { private var _notAvailableWarning:Boolean;// = true private var _debug:DebugConfiguration; public static var setProperty_js:XML = <script> <![CDATA[ function( path , value ) { var paths; var prop; if( path.indexOf(".") > 0 ) { paths = path.split("."); prop = paths.pop() ; } else { paths = []; prop = path; } var target = window ; var len = paths.length ; for( var i = 0 ; i < len ; i++ ) { target = target[ paths[i] ] ; } target[ prop ] = value ; } ]]> </script> ; public static var hasProperty_js:XML = <script> <![CDATA[ function( path ) { var paths; if( path.indexOf(".") > 0 ) { paths = path.split("."); } else { paths = [path]; } var target = window ; var len = paths.length ; for( var i = 0 ; i < len ; i++ ) { target = target[ paths[i] ] ; } if( target ) { return true; } else { return false; } } ]]> </script> ; public static var setPropertyRef_js:XML = <script> <![CDATA[ function( path , target ) { var paths; var prop; if( path.indexOf(".") > 0 ) { paths = path.split("."); prop = paths.pop() ; } else { paths = []; prop = path; } alert( "paths:"+paths.length+", prop:"+prop ); var targets; var name; if( target.indexOf(".") > 0 ) { targets = target.split("."); name = targets.pop(); } else { targets = []; name = target; } alert( "targets:"+targets.length+", name:"+name ); var root = window; var len = paths.length; for( var i = 0 ; i < len ; i++ ) { root = root[ paths[i] ] ; } var ref = window; var depth = targets.length; for( var j = 0 ; j < depth ; j++ ) { ref = ref[ targets[j] ] ; } root[ prop ] = ref[name] ; } ]]> </script> ; public function JavascriptProxy(_arg1:DebugConfiguration){ _notAvailableWarning = true; super(); _debug = _arg1; } public function getProperty(_arg1:String){ return (call((_arg1 + ".valueOf"))); } public function hasProperty(_arg1:String):Boolean{ return (call(hasProperty_js, _arg1)); } public function setProperty(_arg1:String, _arg2):void{ call(setProperty_js, _arg1, _arg2); } public function executeBlock(_arg1:String):void{ var data = _arg1; if (isAvailable()){ try { ExternalInterface.call(data); } catch(e:SecurityError) { if (_debug.javascript){ _debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML."); }; } catch(e:Error) { if (_debug.javascript){ _debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message)); }; }; }; } public function getPropertyString(_arg1:String):String{ return (call((_arg1 + ".toString"))); } public function setPropertyByReference(_arg1:String, _arg2:String):void{ call(setPropertyRef_js, _arg1, _arg2); } public function call(_arg1:String, ... _args){ var output:String; var functionName = _arg1; var args = _args; if (isAvailable()){ try { if (((_debug.javascript) && (_debug.verbose))){ output = ""; output = ("Flash->JS: " + functionName); output = (output + "( "); if (args.length > 0){ output = (output + args.join(",")); }; output = (output + " )"); _debug.info(output); }; args.unshift(functionName); return (ExternalInterface.call.apply(ExternalInterface, args)); } catch(e:SecurityError) { if (_debug.javascript){ _debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML."); }; } catch(e:Error) { if (_debug.javascript){ _debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message)); }; }; }; return (null); } public function isAvailable():Boolean{ var _local1:Boolean; _local1 = ExternalInterface.available; if (((_local1) && ((Capabilities.playerType == "External")))){ _local1 = false; }; if (((((!(_local1)) && (_debug.javascript))) && (_notAvailableWarning))){ _debug.warning("ExternalInterface is not available."); _notAvailableWarning = false; }; return (_local1); } } }//package com.google.analytics.external
Section 80
//Environment (com.google.analytics.utils.Environment) package com.google.analytics.utils { import flash.system.*; import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.external.*; public class Environment { private var _dom:HTMLDOM; private var _appName:String; private var _debug:DebugConfiguration; private var _appVersion:Version; private var _url:String; private var _protocol:Protocols; private var _userAgent:UserAgent; public function Environment(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:DebugConfiguration=null, _arg5:HTMLDOM=null){ var _local6:Version; super(); if (_arg2 == ""){ if (isAIR()){ _arg2 = "AIR"; } else { _arg2 = "Flash"; }; }; if (_arg3 == ""){ _local6 = flashVersion; } else { _local6 = Version.fromString(_arg3); }; _url = _arg1; _appName = _arg2; _appVersion = _local6; _debug = _arg4; _dom = _arg5; } public function isAIR():Boolean{ return ((((playerType == "Desktop")) && ((Security.sandboxType.toString() == "application")))); } public function get playerType():String{ return (Capabilities.playerType); } public function get locationSearch():String{ var _local1:String; _local1 = _dom.search; if (_local1){ return (_local1); }; return (""); } public function get protocol():Protocols{ if (!_protocol){ _findProtocol(); }; return (_protocol); } public function get flashVersion():Version{ var _local1:Version; _local1 = Version.fromString(Capabilities.version.split(" ")[1], ","); return (_local1); } public function get screenWidth():Number{ return (Capabilities.screenResolutionX); } public function get languageEncoding():String{ var _local1:String; if (System.useCodePage){ _local1 = _dom.characterSet; if (_local1){ return (_local1); }; return ("-"); }; return ("UTF-8"); } public function get appName():String{ return (_appName); } public function get screenColorDepth():String{ var _local1:String; var _local2:String; switch (Capabilities.screenColor){ case "bw": _local1 = "1"; break; case "gray": _local1 = "2"; break; case "color": default: _local1 = "24"; }; _local2 = _dom.colorDepth; if (_local2){ _local1 = _local2; }; return (_local1); } private function _findProtocol():void{ var _local1:Protocols; var _local2:String; var _local3:String; var _local4:String; var _local5:String; _local1 = Protocols.none; if (_url != ""){ _local4 = _url.toLowerCase(); _local5 = _local4.substr(0, 5); switch (_local5){ case "file:": _local1 = Protocols.file; break; case "http:": _local1 = Protocols.HTTP; break; case "https": if (_local4.charAt(5) == ":"){ _local1 = Protocols.HTTPS; }; break; default: _protocol = Protocols.none; }; }; _local2 = _dom.protocol; _local3 = (_local1.toString() + ":").toLowerCase(); if (((((_local2) && (!((_local2 == _local3))))) && (_debug))){ _debug.warning(((("Protocol mismatch: SWF=" + _local3) + ", DOM=") + _local2)); }; _protocol = _local1; } public function get locationSWFPath():String{ return (_url); } public function get platform():String{ var _local1:String; _local1 = Capabilities.manufacturer; return (_local1.split("Adobe ")[1]); } public function get operatingSystem():String{ return (Capabilities.os); } public function set appName(_arg1:String):void{ _appName = _arg1; userAgent.applicationProduct = _arg1; } public function get userAgent():UserAgent{ if (!_userAgent){ _userAgent = new UserAgent(this, appName, appVersion.toString(4)); }; return (_userAgent); } ga_internal function set url(_arg1:String):void{ _url = _arg1; } public function get referrer():String{ var _local1:String; _local1 = _dom.referrer; if (_local1){ return (_local1); }; if (protocol == Protocols.file){ return ("localhost"); }; return (""); } public function isInHTML():Boolean{ return ((Capabilities.playerType == "PlugIn")); } public function get language():String{ var _local1:String; var _local2:String; _local1 = _dom.language; _local2 = Capabilities.language; if (_local1){ if ((((_local1.length > _local2.length)) && ((_local1.substr(0, _local2.length) == _local2)))){ _local2 = _local1; }; }; return (_local2); } public function get domainName():String{ var _local1:String; var _local2:String; var _local3:int; if ((((protocol == Protocols.HTTP)) || ((protocol == Protocols.HTTPS)))){ _local1 = _url.toLowerCase(); if (protocol == Protocols.HTTP){ _local2 = _local1.split("http://").join(""); } else { if (protocol == Protocols.HTTPS){ _local2 = _local1.split("https://").join(""); }; }; _local3 = _local2.indexOf("/"); if (_local3 > -1){ _local2 = _local2.substring(0, _local3); }; return (_local2); }; if (protocol == Protocols.file){ return ("localhost"); }; return (""); } public function set userAgent(_arg1:UserAgent):void{ _userAgent = _arg1; } public function set appVersion(_arg1:Version):void{ _appVersion = _arg1; userAgent.applicationVersion = _arg1.toString(4); } public function get screenHeight():Number{ return (Capabilities.screenResolutionY); } public function get locationPath():String{ var _local1:String; _local1 = _dom.pathname; if (_local1){ return (_local1); }; return (""); } public function get documentTitle():String{ var _local1:String; _local1 = _dom.title; if (_local1){ return (_local1); }; return (""); } public function get appVersion():Version{ return (_appVersion); } } }//package com.google.analytics.utils
Section 81
//Protocols (com.google.analytics.utils.Protocols) package com.google.analytics.utils { public class Protocols { private var _value:int; private var _name:String; public static const none:Protocols = new Protocols(0, "none"); ; public static const HTTPS:Protocols = new Protocols(3, "HTTPS"); ; public static const file:Protocols = new Protocols(1, "file"); ; public static const HTTP:Protocols = new Protocols(2, "HTTP"); ; public function Protocols(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.utils
Section 82
//Timespan (com.google.analytics.utils.Timespan) package com.google.analytics.utils { public class Timespan { public static var sixmonths:Number = 15768000; public static var twoyears:Number = 63072000; public static var thirtyminutes:Number = 1800; } }//package com.google.analytics.utils
Section 83
//URL (com.google.analytics.utils.URL) package com.google.analytics.utils { public class URL { private var _url:String; public function URL(_arg1:String=""){ _url = _arg1.toLowerCase(); } public function get domain():String{ var _local1:Array; if (((!((hostName == ""))) && ((hostName.indexOf(".") > -1)))){ _local1 = hostName.split("."); switch (_local1.length){ case 2: return (hostName); case 3: if (_local1[1] == "co"){ return (hostName); }; _local1.shift(); return (_local1.join(".")); case 4: _local1.shift(); return (_local1.join(".")); }; }; return (""); } public function get path():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf(hostName) == 0){ _local1 = _local1.substr(hostName.length); }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[0]; }; if (_local1.charAt(0) != "/"){ _local1 = ("/" + _local1); }; return (_local1); } public function get search():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf(hostName) == 0){ _local1 = _local1.substr(hostName.length); }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[1]; } else { _local1 = ""; }; return (_local1); } public function get subDomain():String{ if (((!((domain == ""))) && (!((domain == hostName))))){ return (hostName.split(("." + domain)).join("")); }; return (""); } public function get protocol():Protocols{ var _local1:String; _local1 = _url.split("://")[0]; switch (_local1){ case "file": return (Protocols.file); case "http": return (Protocols.HTTP); case "https": return (Protocols.HTTPS); default: return (Protocols.none); }; } public function get hostName():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf("/") > -1){ _local1 = _local1.split("/")[0]; }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[0]; }; if ((((protocol == Protocols.file)) || ((protocol == Protocols.none)))){ return (""); }; return (_local1); } } }//package com.google.analytics.utils
Section 84
//UserAgent (com.google.analytics.utils.UserAgent) package com.google.analytics.utils { import flash.system.*; import com.google.analytics.core.*; public class UserAgent { private var _version:Version; private var _localInfo:Environment; private var _applicationProduct:String; public static var minimal:Boolean = false; public function UserAgent(_arg1:Environment, _arg2:String="", _arg3:String=""){ _localInfo = _arg1; applicationProduct = _arg2; _version = Version.fromString(_arg3); } public function get tamarinProductToken():String{ if (UserAgent.minimal){ return (""); }; if (System.vmVersion){ return (("Tamarin/" + Utils.trim(System.vmVersion, true))); }; return (""); } public function set applicationProduct(_arg1:String):void{ _applicationProduct = _arg1; } public function get applicationVersion():String{ return (_version.toString(2)); } public function get applicationProductToken():String{ var _local1:String; _local1 = applicationProduct; if (applicationVersion != ""){ _local1 = (_local1 + ("/" + applicationVersion)); }; return (_local1); } public function get vendorProductToken():String{ var _local1:String; _local1 = ""; if (_localInfo.isAIR()){ _local1 = (_local1 + "AIR"); } else { _local1 = (_local1 + "FlashPlayer"); }; _local1 = (_local1 + "/"); _local1 = (_local1 + _version.toString(3)); return (_local1); } public function toString():String{ var _local1:String; _local1 = ""; _local1 = (_local1 + applicationProductToken); if (applicationComment != ""){ _local1 = (_local1 + (" " + applicationComment)); }; if (tamarinProductToken != ""){ _local1 = (_local1 + (" " + tamarinProductToken)); }; if (vendorProductToken != ""){ _local1 = (_local1 + (" " + vendorProductToken)); }; return (_local1); } public function get applicationComment():String{ var _local1:Array; _local1 = []; _local1.push(_localInfo.platform); _local1.push(_localInfo.playerType); if (!UserAgent.minimal){ _local1.push(_localInfo.operatingSystem); _local1.push(_localInfo.language); }; if (Capabilities.isDebugger){ _local1.push("DEBUG"); }; if (_local1.length > 0){ return ((("(" + _local1.join("; ")) + ")")); }; return (""); } public function set applicationVersion(_arg1:String):void{ _version = Version.fromString(_arg1); } public function get applicationProduct():String{ return (_applicationProduct); } } }//package com.google.analytics.utils
Section 85
//Variables (com.google.analytics.utils.Variables) package com.google.analytics.utils { import flash.net.*; public dynamic class Variables { public var post:Array; public var URIencode:Boolean; public var pre:Array; public var sort:Boolean;// = true public function Variables(_arg1:String=null, _arg2:Array=null, _arg3:Array=null){ pre = []; post = []; sort = true; super(); if (_arg1){ decode(_arg1); }; if (_arg2){ this.pre = _arg2; }; if (_arg3){ this.post = _arg3; }; } private function _join(_arg1:Variables):void{ var _local2:String; if (!_arg1){ return; }; for (_local2 in _arg1) { this[_local2] = _arg1[_local2]; }; } public function join(... _args):void{ var _local2:int; var _local3:int; _local2 = _args.length; _local3 = 0; while (_local3 < _local2) { if (!(_args[_local3] is Variables)){ } else { _join(_args[_local3]); }; _local3++; }; } public function toString():String{ var _local1:Array; var _local2:String; var _local3:String; var _local4:String; var _local5:int; var _local6:int; var _local7:String; var _local8:String; _local1 = []; for (_local3 in this) { _local2 = this[_local3]; if (URIencode){ _local2 = encodeURI(_local2); }; _local1.push(((_local3 + "=") + _local2)); }; if (sort){ _local1.sort(); }; if (pre.length > 0){ pre.reverse(); _local5 = 0; while (_local5 < pre.length) { _local7 = pre[_local5]; _local6 = 0; while (_local6 < _local1.length) { _local4 = _local1[_local6]; if (_local4.indexOf(_local7) == 0){ _local1.unshift(_local1.splice(_local6, 1)[0]); }; _local6++; }; _local5++; }; pre.reverse(); }; if (post.length > 0){ _local5 = 0; while (_local5 < post.length) { _local8 = post[_local5]; _local6 = 0; while (_local6 < _local1.length) { _local4 = _local1[_local6]; if (_local4.indexOf(_local8) == 0){ _local1.push(_local1.splice(_local6, 1)[0]); }; _local6++; }; _local5++; }; }; return (_local1.join("&")); } public function decode(_arg1:String):void{ var _local2:Array; var _local3:String; var _local4:String; var _local5:String; var _local6:Array; var _local7:int; if (_arg1 == ""){ return; }; if (_arg1.indexOf("&") > -1){ _local2 = _arg1.split("&"); } else { _local2 = [_arg1]; }; _local7 = 0; while (_local7 < _local2.length) { _local3 = _local2[_local7]; if (_local3.indexOf("=") > -1){ _local6 = _local3.split("="); _local4 = _local6[0]; _local5 = decodeURI(_local6[1]); this[_local4] = _local5; }; _local7++; }; } public function toURLVariables():URLVariables{ var _local1:URLVariables; var _local2:String; _local1 = new URLVariables(); for (_local2 in this) { _local1[_local2] = this[_local2]; }; return (_local1); } } }//package com.google.analytics.utils
Section 86
//Version (com.google.analytics.utils.Version) package com.google.analytics.utils { public class Version { private var _maxBuild:uint;// = 0xFF private var _maxMinor:uint;// = 15 private var _maxMajor:uint;// = 15 private var _revision:uint; private var _separator:String;// = "." private var _maxRevision:uint;// = 0xFFFF private var _build:uint; private var _minor:uint; private var _major:uint; public function Version(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0){ var _local5:Version; _maxMajor = 15; _maxMinor = 15; _maxBuild = 0xFF; _maxRevision = 0xFFFF; _separator = "."; super(); if ((((((((_arg1 > _maxMajor)) && ((_arg2 == 0)))) && ((_arg3 == 0)))) && ((_arg4 == 0)))){ _local5 = Version.fromNumber(_arg1); _arg1 = _local5.major; _arg2 = _local5.minor; _arg3 = _local5.build; _arg4 = _local5.revision; }; this.major = _arg1; this.minor = _arg2; this.build = _arg3; this.revision = _arg4; } public function toString(_arg1:int=0):String{ var _local2:Array; if ((((_arg1 <= 0)) || ((_arg1 > 4)))){ _arg1 = getFields(); }; switch (_arg1){ case 1: _local2 = [major]; break; case 2: _local2 = [major, minor]; break; case 3: _local2 = [major, minor, build]; break; case 4: default: _local2 = [major, minor, build, revision]; }; return (_local2.join(_separator)); } public function get revision():uint{ return (_revision); } public function set build(_arg1:uint):void{ _build = Math.min(_arg1, _maxBuild); } public function set minor(_arg1:uint):void{ _minor = Math.min(_arg1, _maxMinor); } public function get build():uint{ return (_build); } public function set major(_arg1:uint):void{ _major = Math.min(_arg1, _maxMajor); } public function get minor():uint{ return (_minor); } public function valueOf():uint{ return (((((major << 28) | (minor << 24)) | (build << 16)) | revision)); } public function get major():uint{ return (_major); } public function set revision(_arg1:uint):void{ _revision = Math.min(_arg1, _maxRevision); } private function getFields():int{ var _local1:int; _local1 = 4; if (revision == 0){ _local1--; }; if ((((_local1 == 3)) && ((build == 0)))){ _local1--; }; if ((((_local1 == 2)) && ((minor == 0)))){ _local1--; }; return (_local1); } public function equals(_arg1):Boolean{ if (!(_arg1 is Version)){ return (false); }; if ((((((((_arg1.major == major)) && ((_arg1.minor == minor)))) && ((_arg1.build == build)))) && ((_arg1.revision == revision)))){ return (true); }; return (false); } public static function fromString(_arg1:String="", _arg2:String="."):Version{ var _local3:Version; var _local4:Array; _local3 = new (Version); if ((((_arg1 == "")) || ((_arg1 == null)))){ return (_local3); }; if (_arg1.indexOf(_arg2) > -1){ _local4 = _arg1.split(_arg2); _local3.major = parseInt(_local4[0]); _local3.minor = parseInt(_local4[1]); _local3.build = parseInt(_local4[2]); _local3.revision = parseInt(_local4[3]); } else { _local3.major = parseInt(_arg1); }; return (_local3); } public static function fromNumber(_arg1:Number=0):Version{ var _local2:Version; _local2 = new (Version); if (((((((((((isNaN(_arg1)) || ((_arg1 == 0)))) || ((_arg1 < 0)))) || ((_arg1 == Number.MAX_VALUE)))) || ((_arg1 == Number.POSITIVE_INFINITY)))) || ((_arg1 == Number.NEGATIVE_INFINITY)))){ return (_local2); }; _local2.major = (_arg1 >>> 28); _local2.minor = ((_arg1 & 251658240) >>> 24); _local2.build = ((_arg1 & 0xFF0000) >>> 16); _local2.revision = (_arg1 & 0xFFFF); return (_local2); } } }//package com.google.analytics.utils
Section 87
//Bridge (com.google.analytics.v4.Bridge) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.external.*; public class Bridge implements GoogleAnalyticsAPI { private var _debug:DebugConfiguration; private var _proxy:JavascriptProxy; private var _jsContainer:String;// = "_GATracker" private var _hasGATracker:Boolean;// = false private var _account:String; private static var _linkTrackingObject_js:XML = <script> <![CDATA[ function( container , target ) { var targets ; var name ; if( target.indexOf(".") > 0 ) { targets = target.split("."); name = targets.pop(); } else { targets = []; name = target; } var ref = window; var depth = targets.length; for( var j = 0 ; j < depth ; j++ ) { ref = ref[ targets[j] ] ; } window[container][target] = ref[name] ; } ]]> </script> ; private static var _createTrackingObject_js:XML = <script> <![CDATA[ function( acct ) { _GATracker[acct] = _gat._getTracker(acct); } ]]> </script> ; private static var _injectTrackingObject_js:XML = <script> <![CDATA[ function() { try { _GATracker } catch(e) { _GATracker = {}; } } ]]> </script> ; private static var _checkGAJS_js:XML = <script> <![CDATA[ function() { if( _gat && _gat._getTracker ) { return true; } return false; } ]]> </script> ; private static var _checkValidTrackingObject_js:XML = <script> <![CDATA[ function(acct) { if( _GATracker[acct] && (_GATracker[acct]._getAccount) ) { return true ; } else { return false; } } ]]> </script> ; public function Bridge(_arg1:String, _arg2:DebugConfiguration, _arg3:JavascriptProxy){ var _local4:String; var _local5:String; var _local6:String; _hasGATracker = false; _jsContainer = "_GATracker"; super(); _account = _arg1; _debug = _arg2; _proxy = _arg3; if (!_checkGAJS()){ _local4 = ""; _local4 = (_local4 + "ga.js not found, be sure to check if\n"); _local4 = (_local4 + "<script src=\"http://www.google-analytics.com/ga.js\"></script>\n"); _local4 = (_local4 + "is included in the HTML."); _debug.warning(_local4); throw (new Error(_local4)); }; if (!_hasGATracker){ if (((_debug.javascript) && (_debug.verbose))){ _local5 = ""; _local5 = (_local5 + "The Google Analytics tracking code was not found on the container page\n"); _local5 = (_local5 + "we create it"); _debug.info(_local5, VisualDebugMode.advanced); }; _injectTrackingObject(); }; if (Utils.validateAccount(_arg1)){ _createTrackingObject(_arg1); } else { if (_checkTrackingObject(_arg1)){ _linkTrackingObject(_arg1); } else { _local6 = ""; _local6 = (_local6 + (("JS Object \"" + _arg1) + "\" doesn't exist in DOM\n")); _local6 = (_local6 + "Bridge object not created."); _debug.warning(_local6); throw (new Error(_local6)); }; }; } public function link(_arg1:String, _arg2:Boolean=false):void{ _debug.info((((("link( " + _arg1) + ", ") + _arg2) + " )")); _call("_link", _arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ _debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )")); _call("_addOrganic", _arg1); } public function setAllowLinker(_arg1:Boolean):void{ _debug.info((("setAllowLinker( " + _arg1) + " )")); _call("_setAllowLinker", _arg1); } private function _linkTrackingObject(_arg1:String):void{ _proxy.call(_linkTrackingObject_js, _jsContainer, _arg1); } public function setClientInfo(_arg1:Boolean):void{ _debug.info((("setClientInfo( " + _arg1) + " )")); _call("_setClientInfo", _arg1); } public function trackTrans():void{ _debug.info("trackTrans()"); _call("_trackTrans"); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ var _local5:int; _local5 = 2; if (((_arg3) && (!((_arg3 == ""))))){ _local5 = 3; }; if ((((_local5 == 3)) && (!(isNaN(_arg4))))){ _local5 = 4; }; switch (_local5){ case 4: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2, _arg3, _arg4)); case 3: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2, _arg3)); case 2: default: _debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2)); }; } public function trackPageview(_arg1:String=""):void{ _debug.info((("trackPageview( " + _arg1) + " )")); _call("_trackPageview", _arg1); } public function setCookieTimeout(_arg1:int):void{ _debug.info((("setCookieTimeout( " + _arg1) + " )")); _call("_setCookieTimeout", _arg1); } private function _checkValidTrackingObject(_arg1:String):Boolean{ return (_proxy.call(_checkValidTrackingObject_js, _arg1)); } private function _checkGAJS():Boolean{ return (_proxy.call(_checkGAJS_js)); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _debug.warning((((("linkByPost( " + _arg1) + ", ") + _arg2) + " ) not implemented")); } public function getClientInfo():Boolean{ _debug.info("getClientInfo()"); return (_call("_getClientInfo")); } private function _call(_arg1:String, ... _args){ _args.unshift(((((("window." + _jsContainer) + "[\"") + _account) + "\"].") + _arg1)); return (_proxy.call.apply(_proxy, _args)); } public function hasGAJS():Boolean{ return (_checkGAJS()); } private function _checkTrackingObject(_arg1:String):Boolean{ var _local2:Boolean; var _local3:Boolean; _local2 = _proxy.hasProperty(_arg1); _local3 = _proxy.hasProperty((_arg1 + "._getAccount")); return (((_local2) && (_local3))); } public function resetSession():void{ _debug.warning("resetSession() not implemented"); } public function getDetectTitle():Boolean{ _debug.info("getDetectTitle()"); return (_call("_getDetectTitle")); } public function setDetectFlash(_arg1:Boolean):void{ _debug.info((("setDetectFlash( " + _arg1) + " )")); _call("_setDetectFlash", _arg1); } public function setCampNameKey(_arg1:String):void{ _debug.info((("setCampNameKey( " + _arg1) + " )")); _call("_setCampNameKey", _arg1); } public function createEventTracker(_arg1:String):EventTracker{ _debug.info((("createEventTracker( " + _arg1) + " )")); return (new EventTracker(_arg1, this)); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _debug.info((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " )")); _call("_addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function clearIgnoredOrganic():void{ _debug.info("clearIgnoredOrganic()"); _call("_clearIgnoreOrganic"); } public function setVar(_arg1:String):void{ _debug.info((("setVar( " + _arg1) + " )")); _call("_setVar", _arg1); } public function setDomainName(_arg1:String):void{ _debug.info((("setDomainName( " + _arg1) + " )")); _call("_setDomainName", _arg1); } public function hasTrackingAccount(_arg1:String):Boolean{ if (Utils.validateAccount(_arg1)){ return (_checkValidTrackingObject(_arg1)); }; return (_checkTrackingObject(_arg1)); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ _debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " )")); _call("_addTrans", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8); return (null); } public function setCampSourceKey(_arg1:String):void{ _debug.info((("setCampSourceKey( " + _arg1) + " )")); _call("_setCampSourceKey", _arg1); } public function setCampContentKey(_arg1:String):void{ _debug.info((("setCampContentKey( " + _arg1) + " )")); _call("_setCampContentKey", _arg1); } public function clearIgnoredRef():void{ _debug.info("clearIgnoredRef()"); _call("_clearIgnoreRef"); } public function setLocalServerMode():void{ _debug.info("setLocalServerMode()"); _call("_setLocalServerMode"); } public function getLocalGifPath():String{ _debug.info("getLocalGifPath()"); return (_call("_getLocalGifPath")); } public function setAllowAnchor(_arg1:Boolean):void{ _debug.info((("setAllowAnchor( " + _arg1) + " )")); _call("_setAllowAnchor", _arg1); } public function setLocalGifPath(_arg1:String):void{ _debug.info((("setLocalGifPath( " + _arg1) + " )")); _call("_setLocalGifPath", _arg1); } public function getVersion():String{ _debug.info("getVersion()"); return (_call("_getVersion")); } private function _injectTrackingObject():void{ _proxy.executeBlock(_injectTrackingObject_js); _hasGATracker = true; } public function setCookiePath(_arg1:String):void{ _debug.info((("setCookiePath( " + _arg1) + " )")); _call("_setCookiePath", _arg1); } public function setSampleRate(_arg1:Number):void{ _debug.info((("setSampleRate( " + _arg1) + " )")); _call("_setSampleRate", _arg1); } public function setAllowHash(_arg1:Boolean):void{ _debug.info((("setAllowHash( " + _arg1) + " )")); _call("_setAllowHash", _arg1); } public function addIgnoredOrganic(_arg1:String):void{ _debug.info((("addIgnoredOrganic( " + _arg1) + " )")); _call("_addIgnoredOrganic", _arg1); } public function setCampNOKey(_arg1:String):void{ _debug.info((("setCampNOKey( " + _arg1) + " )")); _call("_setCampNOKey", _arg1); } public function cookiePathCopy(_arg1:String):void{ _debug.info((("cookiePathCopy( " + _arg1) + " )")); _call("_cookiePathCopy", _arg1); } public function setLocalRemoteServerMode():void{ _debug.info("setLocalRemoteServerMode()"); _call("_setLocalRemoteServerMode"); } public function getServiceMode():ServerOperationMode{ _debug.info("getServiceMode()"); return (_call("_getServiceMode")); } public function setDetectTitle(_arg1:Boolean):void{ _debug.info((("setDetectTitle( " + _arg1) + " )")); _call("_setDetectTitle", _arg1); } public function setCampTermKey(_arg1:String):void{ _debug.info((("setCampTermKey( " + _arg1) + " )")); _call("_setCampTermKey", _arg1); } private function _createTrackingObject(_arg1:String):void{ _proxy.call(_createTrackingObject_js, _arg1); } public function getDetectFlash():Boolean{ _debug.info("getDetectFlash()"); return (_call("_getDetectFlash")); } public function setCampaignTrack(_arg1:Boolean):void{ _debug.info((("setCampaignTrack( " + _arg1) + " )")); _call("_setCampaignTrack", _arg1); } public function clearOrganic():void{ _debug.info("clearOrganic()"); _call("_clearOrganic"); } public function addIgnoredRef(_arg1:String):void{ _debug.info((("addIgnoredRef( " + _arg1) + " )")); _call("_addIgnoredRef", _arg1); } public function setCampMediumKey(_arg1:String):void{ _debug.info((("setCampMediumKey( " + _arg1) + " )")); _call("_setCampMediumKey", _arg1); } public function setSessionTimeout(_arg1:int):void{ _debug.info((("setSessionTimeout( " + _arg1) + " )")); _call("_setSessionTimeout", _arg1); } public function setRemoteServerMode():void{ _debug.info("setRemoteServerMode()"); _call("_setRemoteServerMode"); } public function getAccount():String{ _debug.info("getAccount()"); return (_call("_getAccount")); } } }//package com.google.analytics.v4
Section 88
//Configuration (com.google.analytics.v4.Configuration) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; import com.google.analytics.campaign.*; public class Configuration { public var serverMode:ServerOperationMode; public var detectFlash:Boolean;// = true public var allowLocalTracking:Boolean;// = true public var secureRemoteGIFpath:String;// = "https://ssl.google-analytics.com/__utm.gif" public var hasSiteOverlay:Boolean;// = false private var _version:String;// = "4.3as" public var allowDomainHash:Boolean;// = true public var detectClientInfo:Boolean;// = true public var idleLoop:Number;// = 30 public var isTrackOutboundSubdomains:Boolean;// = false public var cookiePath:String;// = "/" public var transactionFieldDelim:String;// = "|" private var _organic:Organic; private var _cookieName:String;// = "analytics" public var campaignKey:CampaignKey; public var google:String;// = "google" public var googleCsePath:String;// = "cse" public var bucketCapacity:Number;// = 10 private var _sampleRate:Number;// = 1 public var remoteGIFpath:String;// = "http://www.google-analytics.com/__utm.gif" public var googleSearchParam:String;// = "q" public var allowLinker:Boolean;// = false public var maxOutboundLinkExamined:Number;// = 1000 private var _debug:DebugConfiguration; private var _trackingLimitPerSession:int;// = 500 private var _domain:Domain; public var allowAnchor:Boolean;// = false public var tokenCliff:int;// = 10 public var sessionTimeout:Number; public var idleTimeout:Number;// = 60 public var campaignTracking:Boolean;// = true public var domainName:String;// = "" public var detectTitle:Boolean;// = true public var tokenRate:Number;// = 0.2 public var conversionTimeout:Number; public var localGIFpath:String;// = "/__utm.gif" public function Configuration(_arg1:DebugConfiguration=null){ _version = "4.3as"; _sampleRate = 1; _trackingLimitPerSession = 500; _organic = new Organic(); googleCsePath = "cse"; googleSearchParam = "q"; google = "google"; _cookieName = "analytics"; allowDomainHash = true; allowAnchor = false; allowLinker = false; hasSiteOverlay = false; tokenRate = 0.2; conversionTimeout = Timespan.sixmonths; sessionTimeout = Timespan.thirtyminutes; idleLoop = 30; idleTimeout = 60; maxOutboundLinkExamined = 1000; tokenCliff = 10; bucketCapacity = 10; detectClientInfo = true; detectFlash = true; detectTitle = true; campaignKey = new CampaignKey(); campaignTracking = true; isTrackOutboundSubdomains = false; serverMode = ServerOperationMode.remote; localGIFpath = "/__utm.gif"; remoteGIFpath = "http://www.google-analytics.com/__utm.gif"; secureRemoteGIFpath = "https://ssl.google-analytics.com/__utm.gif"; cookiePath = "/"; transactionFieldDelim = "|"; domainName = ""; allowLocalTracking = true; super(); _debug = _arg1; _domain = new Domain(DomainNameMode.auto, "", _debug); serverMode = ServerOperationMode.remote; _initOrganicSources(); } public function get organic():Organic{ return (_organic); } public function get trackingLimitPerSession():int{ return (_trackingLimitPerSession); } private function _initOrganicSources():void{ addOrganicSource(google, googleSearchParam); addOrganicSource("yahoo", "p"); addOrganicSource("msn", "q"); addOrganicSource("aol", "query"); addOrganicSource("aol", "encquery"); addOrganicSource("lycos", "query"); addOrganicSource("ask", "q"); addOrganicSource("altavista", "q"); addOrganicSource("netscape", "query"); addOrganicSource("cnn", "query"); addOrganicSource("looksmart", "qt"); addOrganicSource("about", "terms"); addOrganicSource("mamma", "query"); addOrganicSource("alltheweb", "q"); addOrganicSource("gigablast", "q"); addOrganicSource("voila", "rdata"); addOrganicSource("virgilio", "qs"); addOrganicSource("live", "q"); addOrganicSource("baidu", "wd"); addOrganicSource("alice", "qs"); addOrganicSource("yandex", "text"); addOrganicSource("najdi", "q"); addOrganicSource("aol", "q"); addOrganicSource("club-internet", "q"); addOrganicSource("mama", "query"); addOrganicSource("seznam", "q"); addOrganicSource("search", "q"); addOrganicSource("wp", "szukaj"); addOrganicSource("onet", "qt"); addOrganicSource("netsprint", "q"); addOrganicSource("google.interia", "q"); addOrganicSource("szukacz", "q"); addOrganicSource("yam", "k"); addOrganicSource("pchome", "q"); addOrganicSource("kvasir", "searchExpr"); addOrganicSource("sesam", "q"); addOrganicSource("ozu", "q"); addOrganicSource("terra", "query"); addOrganicSource("nostrum", "query"); addOrganicSource("mynet", "q"); addOrganicSource("ekolay", "q"); addOrganicSource("search.ilse", "search_for"); } public function get sampleRate():Number{ return (_sampleRate); } public function get cookieName():String{ return (_cookieName); } public function addOrganicSource(_arg1:String, _arg2:String):void{ var engine = _arg1; var keyword = _arg2; try { _organic.addSource(engine, keyword); } catch(e:Error) { if (((_debug) && (_debug.active))){ _debug.warning(e.message); }; }; } public function get domain():Domain{ return (_domain); } public function set sampleRate(_arg1:Number):void{ if (_arg1 <= 0){ _arg1 = 0.1; }; if (_arg1 > 1){ _arg1 = 1; }; _arg1 = Number(_arg1.toFixed(2)); _sampleRate = _arg1; } public function get version():String{ return (_version); } } }//package com.google.analytics.v4
Section 89
//GoogleAnalyticsAPI (com.google.analytics.v4.GoogleAnalyticsAPI) package com.google.analytics.v4 { import com.google.analytics.core.*; public interface GoogleAnalyticsAPI { function getServiceMode():ServerOperationMode; function setLocalRemoteServerMode():void; function setCampSourceKey(_arg1:String):void; function setCampContentKey(_arg1:String):void; function addOrganic(_arg1:String, _arg2:String):void; function setDetectFlash(_arg1:Boolean):void; function resetSession():void; function setCampTermKey(_arg1:String):void; function setCampNameKey(_arg1:String):void; function addIgnoredOrganic(_arg1:String):void; function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void; function setAllowLinker(_arg1:Boolean):void; function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object; function getDetectFlash():Boolean; function setCampaignTrack(_arg1:Boolean):void; function createEventTracker(_arg1:String):EventTracker; function setCookieTimeout(_arg1:int):void; function setAllowAnchor(_arg1:Boolean):void; function trackTrans():void; function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean; function trackPageview(_arg1:String=""):void; function setLocalGifPath(_arg1:String):void; function getVersion():String; function getLocalGifPath():String; function setVar(_arg1:String):void; function clearIgnoredOrganic():void; function setCampMediumKey(_arg1:String):void; function addIgnoredRef(_arg1:String):void; function setClientInfo(_arg1:Boolean):void; function setCookiePath(_arg1:String):void; function setSampleRate(_arg1:Number):void; function setSessionTimeout(_arg1:int):void; function setRemoteServerMode():void; function clearIgnoredRef():void; function linkByPost(_arg1:Object, _arg2:Boolean=false):void; function setLocalServerMode():void; function setDetectTitle(_arg1:Boolean):void; function setAllowHash(_arg1:Boolean):void; function clearOrganic():void; function getAccount():String; function setDomainName(_arg1:String):void; function link(_arg1:String, _arg2:Boolean=false):void; function setCampNOKey(_arg1:String):void; function getClientInfo():Boolean; function cookiePathCopy(_arg1:String):void; function getDetectTitle():Boolean; } }//package com.google.analytics.v4
Section 90
//Tracker (com.google.analytics.v4.Tracker) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; import com.google.analytics.data.*; import com.google.analytics.external.*; import com.google.analytics.campaign.*; public class Tracker implements GoogleAnalyticsAPI { private const EVENT_TRACKER_LABEL_KEY_NUM:int = 3; private const EVENT_TRACKER_VALUE_VALUE_NUM:int = 1; private const EVENT_TRACKER_PROJECT_ID:int = 5; private const EVENT_TRACKER_OBJECT_NAME_KEY_NUM:int = 1; private const EVENT_TRACKER_TYPE_KEY_NUM:int = 2; private var _adSense:AdSenseGlobals; private var _eventTracker:X10; private var _noSessionInformation:Boolean;// = false private var _browserInfo:BrowserInfo; private var _debug:DebugConfiguration; private var _isNewVisitor:Boolean;// = false private var _buffer:Buffer; private var _config:Configuration; private var _x10Module:X10; private var _campaign:CampaignManager; private var _formatedReferrer:String; private var _timeStamp:Number; private var _info:Environment; private var _domainHash:Number; private var _campaignInfo:CampaignInfo; private var _gifRequest:GIFRequest; private var _hasInitData:Boolean;// = false private var _account:String; public function Tracker(_arg1:String, _arg2:Configuration, _arg3:DebugConfiguration, _arg4:Environment, _arg5:Buffer, _arg6:GIFRequest, _arg7:AdSenseGlobals){ var _local8:String; _hasInitData = false; _isNewVisitor = false; _noSessionInformation = false; super(); _account = _arg1; _config = _arg2; _debug = _arg3; _info = _arg4; _buffer = _arg5; _gifRequest = _arg6; _adSense = _arg7; if (!Utils.validateAccount(_arg1)){ _local8 = (("Account \"" + _arg1) + "\" is not valid."); _debug.warning(_local8); throw (new Error(_local8)); }; _initData(); } private function _doTracking():Boolean{ if (((((!((_info.protocol == Protocols.file))) && (!((_info.protocol == Protocols.none))))) && (_isNotGoogleSearch()))){ return (true); }; if (_config.allowLocalTracking){ return (true); }; return (false); } public function addOrganic(_arg1:String, _arg2:String):void{ _debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )")); _config.organic.addSource(_arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ _config.allowLinker = _arg1; _debug.info((("setAllowLinker( " + _config.allowLinker) + " )")); } public function trackPageview(_arg1:String=""):void{ _debug.info((("trackPageview( " + _arg1) + " )")); if (_doTracking()){ _initData(); _trackMetrics(_arg1); _noSessionInformation = false; } else { _debug.warning((("trackPageview( " + _arg1) + " ) failed")); }; } public function setCookieTimeout(_arg1:int):void{ _config.conversionTimeout = _arg1; _debug.info((("setCookieTimeout( " + _config.conversionTimeout) + " )")); } public function trackTrans():void{ _debug.warning("trackTrans() not implemented"); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ var _local5:Boolean; var _local6:int; _local5 = true; _local6 = 2; if (((!((_arg1 == ""))) && (!((_arg2 == ""))))){ _eventTracker.clearKey(EVENT_TRACKER_PROJECT_ID); _eventTracker.clearValue(EVENT_TRACKER_PROJECT_ID); _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_OBJECT_NAME_KEY_NUM, _arg1); _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_TYPE_KEY_NUM, _arg2); if (((_arg3) && (!((_arg3 == ""))))){ _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_LABEL_KEY_NUM, _arg3); _local6 = 3; if (!isNaN(_arg4)){ _local5 = _eventTracker.setValue(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_VALUE_VALUE_NUM, _arg4); _local6 = 4; }; }; if (_local5){ _debug.info(((("valid event tracking call\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek); _sendXEvent(_eventTracker); }; } else { _debug.warning(((("event tracking call is not valid, failed!\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek); _local5 = false; }; switch (_local6){ case 4: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )")); break; case 3: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )")); break; case 2: default: _debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )")); }; return (_local5); } public function setClientInfo(_arg1:Boolean):void{ _config.detectClientInfo = _arg1; _debug.info((("setClientInfo( " + _config.detectClientInfo) + " )")); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _debug.warning((("linkByPost( " + [_arg1, _arg2].join(", ")) + " ) not implemented")); } private function _initData():void{ var _local1:String; var _local2:String; if (!_hasInitData){ _updateDomainName(); _domainHash = _getDomainHash(); _timeStamp = Math.round((new Date().getTime() / 1000)); if (_debug.verbose){ _local1 = ""; _local1 = (_local1 + "_initData 0"); _local1 = (_local1 + ("\ndomain name: " + _config.domainName)); _local1 = (_local1 + ("\ndomain hash: " + _domainHash)); _local1 = (_local1 + (((("\ntimestamp: " + _timeStamp) + " (") + new Date((_timeStamp * 1000))) + ")")); _debug.info(_local1, VisualDebugMode.geek); }; }; if (_doTracking()){ _handleCookie(); }; if (!_hasInitData){ if (_doTracking()){ _formatedReferrer = _formatReferrer(); _browserInfo = new BrowserInfo(_config, _info); _debug.info(("browserInfo: " + _browserInfo.toURLString()), VisualDebugMode.advanced); if (_config.campaignTracking){ _campaign = new CampaignManager(_config, _debug, _buffer, _domainHash, _formatedReferrer, _timeStamp); _campaignInfo = _campaign.getCampaignInformation(_info.locationSearch, _noSessionInformation); _debug.info(("campaignInfo: " + _campaignInfo.toURLString()), VisualDebugMode.advanced); }; }; _x10Module = new X10(); _eventTracker = new X10(); _hasInitData = true; }; if (_config.hasSiteOverlay){ _debug.warning("Site Overlay is not supported"); }; if (_debug.verbose){ _local2 = ""; _local2 = (_local2 + "_initData (misc)"); _local2 = (_local2 + ("\nflash version: " + _info.flashVersion.toString(4))); _local2 = (_local2 + ("\nprotocol: " + _info.protocol)); _local2 = (_local2 + (("\ndefault domain name (auto): \"" + _info.domainName) + "\"")); _local2 = (_local2 + ("\nlanguage: " + _info.language)); _local2 = (_local2 + ("\ndomain hash: " + _getDomainHash())); _local2 = (_local2 + ("\nuser-agent: " + _info.userAgent)); _debug.info(_local2, VisualDebugMode.geek); }; } public function getDetectTitle():Boolean{ _debug.info("getDetectTitle()"); return (_config.detectTitle); } public function resetSession():void{ _debug.info("resetSession()"); _buffer.resetCurrentSession(); } private function _sendXEvent(_arg1:X10=null):void{ var _local2:Variables; var _local3:EventInfo; var _local4:Variables; var _local5:Variables; _initData(); if (_takeSample()){ _local2 = new Variables(); _local2.URIencode = true; _local3 = new EventInfo(true, _x10Module, _arg1); _local4 = _local3.toVariables(); _local5 = _renderMetricsSearchVariables(); _local2.join(_local4, _local5); _gifRequest.send(_account, _local2, false, true); }; } public function setDetectFlash(_arg1:Boolean):void{ _config.detectFlash = _arg1; _debug.info((("setDetectFlash( " + _config.detectFlash) + " )")); } public function setCampNameKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCCN = _arg1; _local2 = (("setCampNameKey( " + _config.campaignKey.UCCN) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCCN]")); } else { _debug.info(_local2); }; } private function _formatReferrer():String{ var _local1:String; var _local2:String; var _local3:URL; var _local4:URL; _local1 = _info.referrer; if ((((_local1 == "")) || ((_local1 == "localhost")))){ _local1 = "-"; } else { _local2 = _info.domainName; _local3 = new URL(_local1); _local4 = new URL(("http://" + _local2)); if (_local3.hostName == _local2){ return ("-"); }; if (_local4.domain == _local3.domain){ if (_local4.subDomain != _local3.subDomain){ _local1 = "0"; }; }; if ((((_local1.charAt(0) == "[")) && (_local1.charAt((_local1.length - 1))))){ _local1 = "-"; }; }; _debug.info(("formated referrer: " + _local1), VisualDebugMode.advanced); return (_local1); } private function _visitCode():Number{ if (_debug.verbose){ _debug.info(("visitCode: " + _buffer.utma.sessionId), VisualDebugMode.geek); }; return (_buffer.utma.sessionId); } public function createEventTracker(_arg1:String):EventTracker{ _debug.info((("createEventTracker( " + _arg1) + " )")); return (new EventTracker(_arg1, this)); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _debug.warning((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " ) not implemented")); } public function clearIgnoredOrganic():void{ _debug.info("clearIgnoredOrganic()"); _config.organic.clearIgnoredKeywords(); } public function setVar(_arg1:String):void{ var _local2:Variables; if (((!((_arg1 == ""))) && (_isNotGoogleSearch()))){ _initData(); _buffer.utmv.domainHash = _domainHash; _buffer.utmv.value = _arg1; if (_debug.verbose){ _debug.info(_buffer.utmv.toString(), VisualDebugMode.geek); }; _debug.info((("setVar( " + _arg1) + " )")); if (_takeSample()){ _local2 = new Variables(); _local2.utmt = "var"; _gifRequest.send(_account, _local2); }; } else { _debug.warning((("setVar \"" + _arg1) + "\" is ignored")); }; } public function setDomainName(_arg1:String):void{ if (_arg1 == "auto"){ _config.domain.mode = DomainNameMode.auto; } else { if (_arg1 == "none"){ _config.domain.mode = DomainNameMode.none; } else { _config.domain.mode = DomainNameMode.custom; _config.domain.name = _arg1; }; }; _updateDomainName(); _debug.info((("setDomainName( " + _config.domainName) + " )")); } public function getClientInfo():Boolean{ _debug.info("getClientInfo()"); return (_config.detectClientInfo); } private function _updateDomainName():void{ var _local1:String; if (_config.domain.mode == DomainNameMode.auto){ _local1 = _info.domainName; if (_local1.substring(0, 4) == "www."){ _local1 = _local1.substring(4); }; _config.domain.name = _local1; }; _config.domainName = _config.domain.name.toLowerCase(); _debug.info(("domain name: " + _config.domainName), VisualDebugMode.advanced); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ _debug.warning((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " ) not implemented")); return (null); } public function setCampContentKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCCT = _arg1; _local2 = (("setCampContentKey( " + _config.campaignKey.UCCT) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCCT]")); } else { _debug.info(_local2); }; } private function _handleCookie():void{ var _local1:String; var _local2:String; var _local3:Array; var _local4:String; if (_config.allowLinker){ }; if (((_buffer.hasUTMA()) && (!(_buffer.utma.isEmpty())))){ if (((!(_buffer.hasUTMB())) || (!(_buffer.hasUTMC())))){ _buffer.updateUTMA(_timeStamp); _noSessionInformation = true; }; if (_debug.verbose){ _debug.info(("from cookie " + _buffer.utma.toString()), VisualDebugMode.geek); }; } else { _debug.info("create a new utma", VisualDebugMode.advanced); _buffer.utma.domainHash = _domainHash; _buffer.utma.sessionId = _getUniqueSessionId(); _buffer.utma.firstTime = _timeStamp; _buffer.utma.lastTime = _timeStamp; _buffer.utma.currentTime = _timeStamp; _buffer.utma.sessionCount = 1; if (_debug.verbose){ _debug.info(_buffer.utma.toString(), VisualDebugMode.geek); }; _noSessionInformation = true; _isNewVisitor = true; }; if (((_adSense.gaGlobal) && ((_adSense.dh == String(_domainHash))))){ if (_adSense.sid){ _buffer.utma.currentTime = Number(_adSense.sid); if (_debug.verbose){ _local1 = ""; _local1 = (_local1 + "AdSense sid found\n"); _local1 = (_local1 + (((("Override currentTime(" + _buffer.utma.currentTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")")); _debug.info(_local1, VisualDebugMode.geek); }; }; if (_isNewVisitor){ if (_adSense.sid){ _buffer.utma.lastTime = Number(_adSense.sid); if (_debug.verbose){ _local2 = ""; _local2 = (_local2 + "AdSense sid found (new visitor)\n"); _local2 = (_local2 + (((("Override lastTime(" + _buffer.utma.lastTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")")); _debug.info(_local2, VisualDebugMode.geek); }; }; if (_adSense.vid){ _local3 = _adSense.vid.split("."); _buffer.utma.sessionId = Number(_local3[0]); _buffer.utma.firstTime = Number(_local3[1]); if (_debug.verbose){ _local4 = ""; _local4 = (_local4 + "AdSense vid found (new visitor)\n"); _local4 = (_local4 + (((("Override sessionId(" + _buffer.utma.sessionId) + ") from AdSense vid(") + Number(_local3[0])) + ")\n")); _local4 = (_local4 + (((("Override firstTime(" + _buffer.utma.firstTime) + ") from AdSense vid(") + Number(_local3[1])) + ")")); _debug.info(_local4, VisualDebugMode.geek); }; }; if (_debug.verbose){ _debug.info(("AdSense modified : " + _buffer.utma.toString()), VisualDebugMode.geek); }; }; }; _buffer.utmb.domainHash = _domainHash; if (isNaN(_buffer.utmb.trackCount)){ _buffer.utmb.trackCount = 0; }; if (isNaN(_buffer.utmb.token)){ _buffer.utmb.token = _config.tokenCliff; }; if (isNaN(_buffer.utmb.lastTime)){ _buffer.utmb.lastTime = _buffer.utma.currentTime; }; _buffer.utmc.domainHash = _domainHash; if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.advanced); _debug.info(_buffer.utmc.toString(), VisualDebugMode.advanced); }; } public function setLocalServerMode():void{ _config.serverMode = ServerOperationMode.local; _debug.info("setLocalServerMode()"); } private function _renderMetricsSearchVariables(_arg1:String=""):Variables{ var _local2:Variables; var _local3:DocumentInfo; var _local4:Variables; var _local5:Variables; _local2 = new Variables(); _local2.URIencode = true; _local3 = new DocumentInfo(_config, _info, _formatedReferrer, _arg1, _adSense); _debug.info(("docInfo: " + _local3.toURLString()), VisualDebugMode.geek); if (_config.campaignTracking){ _local4 = _campaignInfo.toVariables(); }; _local5 = _browserInfo.toVariables(); _local2.join(_local3.toVariables(), _local5, _local4); return (_local2); } public function clearIgnoredRef():void{ _debug.info("clearIgnoredRef()"); _config.organic.clearIgnoredReferrals(); } public function setCampSourceKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCSR = _arg1; _local2 = (("setCampSourceKey( " + _config.campaignKey.UCSR) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCSR]")); } else { _debug.info(_local2); }; } public function getLocalGifPath():String{ _debug.info("getLocalGifPath()"); return (_config.localGIFpath); } public function setLocalGifPath(_arg1:String):void{ _config.localGIFpath = _arg1; _debug.info((("setLocalGifPath( " + _config.localGIFpath) + " )")); } public function getVersion():String{ _debug.info("getVersion()"); return (_config.version); } public function setAllowAnchor(_arg1:Boolean):void{ _config.allowAnchor = _arg1; _debug.info((("setAllowAnchor( " + _config.allowAnchor) + " )")); } private function _isNotGoogleSearch():Boolean{ var _local1:String; var _local2:Boolean; var _local3:Boolean; var _local4:Boolean; var _local5:Boolean; _local1 = _config.domainName; _local2 = (_local1.indexOf("www.google.") < 0); _local3 = (_local1.indexOf(".google.") < 0); _local4 = (_local1.indexOf("google.") < 0); _local5 = (_local1.indexOf("google.org") > -1); return (((((((((_local2) || (_local3))) || (_local4))) || (!((_config.cookiePath == "/"))))) || (_local5))); } public function setSampleRate(_arg1:Number):void{ if (_arg1 < 0){ _debug.warning("sample rate can not be negative, ignoring value."); } else { _config.sampleRate = _arg1; }; _debug.info((("setSampleRate( " + _config.sampleRate) + " )")); } private function _takeSample():Boolean{ if (_debug.verbose){ _debug.info((((("takeSample: (" + (_visitCode() % 10000)) + ") < (") + (_config.sampleRate * 10000)) + ")"), VisualDebugMode.geek); }; return (((_visitCode() % 10000) < (_config.sampleRate * 10000))); } public function setCookiePath(_arg1:String):void{ _config.cookiePath = _arg1; _debug.info((("setCookiePath( " + _config.cookiePath) + " )")); } public function setAllowHash(_arg1:Boolean):void{ _config.allowDomainHash = _arg1; _debug.info((("setAllowHash( " + _config.allowDomainHash) + " )")); } private function _generateUserDataHash():Number{ var _local1:String; _local1 = ""; _local1 = (_local1 + _info.appName); _local1 = (_local1 + _info.appVersion); _local1 = (_local1 + _info.language); _local1 = (_local1 + _info.platform); _local1 = (_local1 + _info.userAgent.toString()); _local1 = (_local1 + (((_info.screenWidth + "x") + _info.screenHeight) + _info.screenColorDepth)); _local1 = (_local1 + _info.referrer); return (Utils.generateHash(_local1)); } public function addIgnoredOrganic(_arg1:String):void{ _debug.info((("addIgnoredOrganic( " + _arg1) + " )")); _config.organic.addIgnoredKeyword(_arg1); } public function setLocalRemoteServerMode():void{ _config.serverMode = ServerOperationMode.both; _debug.info("setLocalRemoteServerMode()"); } public function cookiePathCopy(_arg1:String):void{ _debug.warning((("cookiePathCopy( " + _arg1) + " ) not implemented")); } public function setDetectTitle(_arg1:Boolean):void{ _config.detectTitle = _arg1; _debug.info((("setDetectTitle( " + _config.detectTitle) + " )")); } public function setCampTermKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCTR = _arg1; _local2 = (("setCampTermKey( " + _config.campaignKey.UCTR) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCTR]")); } else { _debug.info(_local2); }; } public function getServiceMode():ServerOperationMode{ _debug.info("getServiceMode()"); return (_config.serverMode); } public function setCampNOKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCNO = _arg1; _local2 = (("setCampNOKey( " + _config.campaignKey.UCNO) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCNO]")); } else { _debug.info(_local2); }; } private function _trackMetrics(_arg1:String=""):void{ var _local2:Variables; var _local3:Variables; var _local4:Variables; var _local5:EventInfo; if (_takeSample()){ _local2 = new Variables(); _local2.URIencode = true; if (((_x10Module) && (_x10Module.hasData()))){ _local5 = new EventInfo(false, _x10Module); _local3 = _local5.toVariables(); }; _local4 = _renderMetricsSearchVariables(_arg1); _local2.join(_local3, _local4); _gifRequest.send(_account, _local2); }; } public function setCampaignTrack(_arg1:Boolean):void{ _config.campaignTracking = _arg1; _debug.info((("setCampaignTrack( " + _config.campaignTracking) + " )")); } public function addIgnoredRef(_arg1:String):void{ _debug.info((("addIgnoredRef( " + _arg1) + " )")); _config.organic.addIgnoredReferral(_arg1); } public function clearOrganic():void{ _debug.info("clearOrganic()"); _config.organic.clearEngines(); } public function getDetectFlash():Boolean{ _debug.info("getDetectFlash()"); return (_config.detectFlash); } public function setCampMediumKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCMD = _arg1; _local2 = (("setCampMediumKey( " + _config.campaignKey.UCMD) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCMD]")); } else { _debug.info(_local2); }; } private function _getUniqueSessionId():Number{ var _local1:Number; _local1 = ((Utils.generate32bitRandom() ^ _generateUserDataHash()) * 2147483647); _debug.info(("Session ID: " + _local1), VisualDebugMode.geek); return (_local1); } private function _getDomainHash():Number{ if (((((!(_config.domainName)) || ((_config.domainName == "")))) || ((_config.domain.mode == DomainNameMode.none)))){ _config.domainName = ""; return (1); }; _updateDomainName(); if (_config.allowDomainHash){ return (Utils.generateHash(_config.domainName)); }; return (1); } public function setSessionTimeout(_arg1:int):void{ _config.sessionTimeout = _arg1; _debug.info((("setSessionTimeout( " + _config.sessionTimeout) + " )")); } public function getAccount():String{ _debug.info("getAccount()"); return (_account); } public function link(_arg1:String, _arg2:Boolean=false):void{ _debug.warning((("link( " + [_arg1, _arg2].join(", ")) + " ) not implemented")); } public function setRemoteServerMode():void{ _config.serverMode = ServerOperationMode.remote; _debug.info("setRemoteServerMode()"); } } }//package com.google.analytics.v4
Section 91
//AnalyticsTracker (com.google.analytics.AnalyticsTracker) package com.google.analytics { import flash.events.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; public interface AnalyticsTracker extends GoogleAnalyticsAPI, IEventDispatcher { function set config(_arg1:Configuration):void; function isReady():Boolean; function get mode():String; function set debug(_arg1:DebugConfiguration):void; function get account():String; function set mode(_arg1:String):void; function get config():Configuration; function get debug():DebugConfiguration; function set account(_arg1:String):void; function get visualDebug():Boolean; function set visualDebug(_arg1:Boolean):void; } }//package com.google.analytics
Section 92
//API (com.google.analytics.API) package com.google.analytics { import com.google.analytics.utils.*; public class API { public static var version:Version = new Version(); version.major = 1; version.minor = 0; version.build = 1; version.revision = "$Rev: 234 $ ".split(" ")[1]; } }//package com.google.analytics
Section 93
//GATracker (com.google.analytics.GATracker) package com.google.analytics { import flash.display.*; import flash.events.*; import com.google.analytics.core.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; import com.google.analytics.external.*; import com.google.analytics.events.*; public class GATracker implements AnalyticsTracker { private var _adSense:AdSenseGlobals; private var _env:Environment; private var _visualDebug:Boolean; private var _idleTimer:IdleTimer; private var _debug:DebugConfiguration; private var _buffer:Buffer; private var _config:Configuration; private var _mode:String; private var _display:DisplayObject; private var _jsproxy:JavascriptProxy; private var _dom:HTMLDOM; private var _eventDispatcher:EventDispatcher; private var _ready:Boolean;// = false private var _gifRequest:GIFRequest; private var _account:String; private var _tracker:GoogleAnalyticsAPI; public static var version:Version = API.version; public static var autobuild:Boolean = true; public function GATracker(_arg1:DisplayObject, _arg2:String, _arg3:String="AS3", _arg4:Boolean=false, _arg5:Configuration=null, _arg6:DebugConfiguration=null){ _ready = false; super(); _display = _arg1; _eventDispatcher = new EventDispatcher(this); _tracker = new TrackerCache(); this.account = _arg2; this.mode = _arg3; this.visualDebug = _arg4; if (!_arg6){ this.debug = new DebugConfiguration(); }; if (!_arg5){ this.config = new Configuration(_arg6); }; if (autobuild){ _factory(); }; } public function link(_arg1:String, _arg2:Boolean=false):void{ _tracker.link(_arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ _tracker.addOrganic(_arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ _tracker.setAllowLinker(_arg1); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4)); } public function setCookieTimeout(_arg1:int):void{ _tracker.setCookieTimeout(_arg1); } public function trackTrans():void{ _tracker.trackTrans(); } public function trackPageview(_arg1:String=""):void{ _tracker.trackPageview(_arg1); } public function getClientInfo():Boolean{ return (_tracker.getClientInfo()); } public function setClientInfo(_arg1:Boolean):void{ _tracker.setClientInfo(_arg1); } public function get account():String{ return (_account); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _tracker.linkByPost(_arg1, _arg2); } public function getDetectTitle():Boolean{ return (_tracker.getDetectTitle()); } public function dispatchEvent(_arg1:Event):Boolean{ return (_eventDispatcher.dispatchEvent(_arg1)); } public function get config():Configuration{ return (_config); } public function set mode(_arg1:String):void{ _mode = _arg1; } public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _eventDispatcher.removeEventListener(_arg1, _arg2, _arg3); } public function setDetectFlash(_arg1:Boolean):void{ _tracker.setDetectFlash(_arg1); } public function resetSession():void{ _tracker.resetSession(); } public function setCampNameKey(_arg1:String):void{ _tracker.setCampNameKey(_arg1); } public function get debug():DebugConfiguration{ return (_debug); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } private function _bridgeFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account)); return (new Bridge(account, _debug, _jsproxy)); } public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public function clearIgnoredOrganic():void{ _tracker.clearIgnoredOrganic(); } public function set account(_arg1:String):void{ _account = _arg1; } public function setVar(_arg1:String):void{ _tracker.setVar(_arg1); } public function build():void{ if (!isReady()){ _factory(); }; } public function setDomainName(_arg1:String):void{ _tracker.setDomainName(_arg1); } public function createEventTracker(_arg1:String):EventTracker{ return (_tracker.createEventTracker(_arg1)); } public function set config(_arg1:Configuration):void{ _config = _arg1; } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8)); } public function setCampSourceKey(_arg1:String):void{ _tracker.setCampSourceKey(_arg1); } public function setCampContentKey(_arg1:String):void{ _tracker.setCampContentKey(_arg1); } public function willTrigger(_arg1:String):Boolean{ return (_eventDispatcher.willTrigger(_arg1)); } public function setLocalServerMode():void{ _tracker.setLocalServerMode(); } public function isReady():Boolean{ return (_ready); } public function getLocalGifPath():String{ return (_tracker.getLocalGifPath()); } public function setAllowAnchor(_arg1:Boolean):void{ _tracker.setAllowAnchor(_arg1); } public function clearIgnoredRef():void{ _tracker.clearIgnoredRef(); } public function get mode():String{ return (_mode); } public function set debug(_arg1:DebugConfiguration):void{ _debug = _arg1; } public function setLocalGifPath(_arg1:String):void{ _tracker.setLocalGifPath(_arg1); } public function getVersion():String{ return (_tracker.getVersion()); } public function setSampleRate(_arg1:Number):void{ _tracker.setSampleRate(_arg1); } public function setCookiePath(_arg1:String):void{ _tracker.setCookiePath(_arg1); } public function setAllowHash(_arg1:Boolean):void{ _tracker.setAllowHash(_arg1); } public function setCampNOKey(_arg1:String):void{ _tracker.setCampNOKey(_arg1); } public function addIgnoredOrganic(_arg1:String):void{ _tracker.addIgnoredOrganic(_arg1); } public function setLocalRemoteServerMode():void{ _tracker.setLocalRemoteServerMode(); } public function cookiePathCopy(_arg1:String):void{ _tracker.cookiePathCopy(_arg1); } private function _factory():void{ var _local1:GoogleAnalyticsAPI; var _local2:TrackerCache; _jsproxy = new JavascriptProxy(debug); if (visualDebug){ debug.layout = new Layout(debug, _display); debug.active = visualDebug; }; _local2 = (_tracker as TrackerCache); switch (mode){ case TrackerMode.BRIDGE: _local1 = _bridgeFactory(); break; case TrackerMode.AS3: default: _local1 = _trackerFactory(); }; if (!_local2.isEmpty()){ _local2.tracker = _local1; _local2.flush(); }; _tracker = _local1; _ready = true; dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this)); } public function setCampTermKey(_arg1:String):void{ _tracker.setCampTermKey(_arg1); } private function _trackerFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account)); _adSense = new AdSenseGlobals(debug); _dom = new HTMLDOM(debug); _dom.cacheProperties(); _env = new Environment("", "", "", debug, _dom); _buffer = new Buffer(config, debug, false); _gifRequest = new GIFRequest(config, debug, _buffer, _env); _idleTimer = new IdleTimer(config, debug, _display, _buffer); _env.url = _display.stage.loaderInfo.url; return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense)); } public function setDetectTitle(_arg1:Boolean):void{ _tracker.setDetectTitle(_arg1); } public function getServiceMode():ServerOperationMode{ return (_tracker.getServiceMode()); } public function clearOrganic():void{ _tracker.clearOrganic(); } public function setCampaignTrack(_arg1:Boolean):void{ _tracker.setCampaignTrack(_arg1); } public function addIgnoredRef(_arg1:String):void{ _tracker.addIgnoredRef(_arg1); } public function set visualDebug(_arg1:Boolean):void{ _visualDebug = _arg1; } public function setCampMediumKey(_arg1:String):void{ _tracker.setCampMediumKey(_arg1); } public function setSessionTimeout(_arg1:int):void{ _tracker.setSessionTimeout(_arg1); } public function getDetectFlash():Boolean{ return (_tracker.getDetectFlash()); } public function get visualDebug():Boolean{ return (_visualDebug); } public function getAccount():String{ return (_tracker.getAccount()); } public function hasEventListener(_arg1:String):Boolean{ return (_eventDispatcher.hasEventListener(_arg1)); } public function setRemoteServerMode():void{ _tracker.setRemoteServerMode(); } } var _local1:* = ServerOperationMode; return (_local1); }//package com.google.analytics
Section 94
//MindJoltAPI (com.mindjolt.MindJoltAPI) package com.mindjolt { import flash.display.*; import flash.events.*; import flash.system.*; import flash.net.*; import com.rkg.firebug.*; public class MindJoltAPI { public static var service:Object = {connect:load_service}; public static var ad:Object = {showPreGameAd:showPreGameAd}; private static var gameKey:String; private static var clip:MovieClip; private static var callback:Function; private static var options:Object; private static var version:String = "1.0.4"; public static function showPreGameAd(_arg1:Object=null):void{ Console.log("[MindJoltAPI][showPreGameAd]"); if (clip == null){ Console.log("[MindJoltAPI] You must call MindJoltAPI.service.connect before MindJoltAPI.ad.showPreGameAd."); }; if (_arg1 == null){ _arg1 = {}; }; if (service.showPreGameAd != undefined){ service.showPreGameAd(_arg1); } else { MindJoltAPI.options = _arg1; if (_arg1["ad_started"] == null){ _arg1["clip"].stop(); }; }; } private static function load_service_complete(_arg1:Event):void{ var e = _arg1; Console.log(("[MindJoltAPI][load_service_complete] e.currentTarget: " + e.currentTarget)); try { if (((!((e.currentTarget.content == null))) && (!((e.currentTarget.content.service == null))))){ service = e.currentTarget.content.service; Console.log("[MindJoltAPI] service successfully loaded"); service.connect(gameKey, clip, callback); if (options != null){ service.showPreGameAd(options); }; service.getLogger().info((("MindJoltAPI loader version [" + version) + "]")); } else { Console.log("[MindJoltAPI] failed to load"); }; } catch(err) { Console.log(("[MindJoltAPI][load_service_complete] error: " + err.msg)); }; } private static function load_service(_arg1:String, _arg2:MovieClip, _arg3:Function=null):void{ var _local4:Object; var _local5:Loader; Console.log("[MindJoltAPI][load_service]"); MindJoltAPI.gameKey = _arg1; MindJoltAPI.clip = _arg2; MindJoltAPI.callback = _arg3; if (service.submitScore == null){ Security.allowDomain("static.mindjolt.com"); _local4 = LoaderInfo(_arg2.root.loaderInfo).parameters; _local5 = new Loader(); _local5.contentLoaderInfo.addEventListener(Event.COMPLETE, load_service_complete); _local5.load(new URLRequest(((_local4.mjPath) || ("http://static.mindjolt.com/api/as3/api_local_as3.swf")))); _arg2.addChild(_local5); }; } } }//package com.mindjolt
Section 95
//AdEvent (com.rkg.ad.AdEvent) package com.rkg.ad { import flash.events.*; public class AdEvent extends Event { public static const AD_STARTED:String = "adStarted"; public static const AD_LOADED:String = "adLoaded"; public static const AD_FINISHED:String = "adFinished"; public function AdEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return ((((((("[AdEvent type=" + type) + " bubbles=") + bubbles) + " cancelable=") + cancelable) + "]")); } } }//package com.rkg.ad
Section 96
//ConsoleSprite (com.rkg.display.ConsoleSprite) package com.rkg.display { import flash.display.*; import flash.text.*; public class ConsoleSprite extends Sprite { protected var mTextField:TextField;// = null protected static var mInstance:ConsoleSprite = null; public function ConsoleSprite(){ if (mInstance != null){ throw (new Error("ConsoleSprite is a singleton, already instantiated")); }; } public function init(_arg1:int, _arg2:int):void{ this.graphics.beginFill(0xFFFFFF); this.graphics.drawRect(0, 0, _arg1, _arg2); this.graphics.endFill(); mTextField = new TextField(); mTextField.multiline = true; mTextField.wordWrap = true; mTextField.width = _arg1; mTextField.height = _arg2; mTextField.text = "Console start\n"; this.addChild(mTextField); } public function set text(_arg1:String):void{ mTextField.text = _arg1; } public function get text():String{ return (mTextField.text); } public function clear():void{ mTextField.text = ""; } public function print(_arg1:String):void{ mTextField.appendText((_arg1 + "\n")); } public static function get Instance():ConsoleSprite{ if (mInstance == null){ mInstance = new (ConsoleSprite); }; return (mInstance); } } }//package com.rkg.display
Section 97
//FacebookConstants (com.rkg.facebook.FacebookConstants) package com.rkg.facebook { public class FacebookConstants { public static var DEFAULT_PIC:String = "http://static.ak.fbcdn.net/pics/d_silhouette.gif"; public static var DEFAULT_PIC_SQUARE:String = "http://static.ak.fbcdn.net/pics/q_silhouette.gif"; } }//package com.rkg.facebook
Section 98
//FacebookRequest (com.rkg.facebook.FacebookRequest) package com.rkg.facebook { import flash.events.*; import flash.net.*; import flash.utils.*; import com.adobe.serialization.json.*; import com.rkg.firebug.*; import com.adobe.crypto.*; public class FacebookRequest { public var method:String; public var urlRequest:URLRequest; public var urlVariables:URLVariables; public var urlLoader:URLLoader; public var onComplete:Function; public var onError:Function; public var extra:Object; public var timer:Timer; public var timedOut:Boolean; public static const TIME_OUT:int = 30000; public function FacebookRequest(_arg1:String, _arg2:Function, _arg3:Function=null, _arg4:Object=null){ urlRequest = new URLRequest(FacebookSession.apiUrl); urlVariables = new URLVariables(); method = _arg1; onComplete = _arg2; onError = _arg3; extra = _arg4; urlVariables.api_key = FacebookSession.appKey; urlVariables.v = FacebookSession.apiVersion; urlVariables.session_key = FacebookSession.sessionKey; urlVariables.format = "JSON"; urlVariables.method = method; urlVariables.ss = "true"; urlVariables.call_id = FacebookSession.callId; FacebookSession.callId++; } public function addParam(_arg1:String, _arg2:Object):void{ urlVariables[_arg1] = _arg2.toString(); } public function go():void{ var _local3:Object; var _local1 = ""; var _local2:Array = new Array(); for (_local3 in urlVariables) { _local2.push(((_local3.toString() + "=") + urlVariables[_local3].toString())); }; _local1 = (_local2.sort().join("") + FacebookSession.appSecret); _local1 = MD5.hash(_local1); urlVariables.sig = _local1; urlRequest.data = urlVariables; urlRequest.method = URLRequestMethod.POST; FacebookSession.loadURL(urlRequest, onRequestComplete, onRequestError); timedOut = false; timer = new Timer(TIME_OUT); timer.addEventListener(TimerEvent.TIMER, onTimerEvent); timer.start(); } public function onTimerEvent(_arg1:TimerEvent):void{ timedOut = true; shutdownTimer(); if (onError != null){ onError(extra); }; } public function shutdownTimer():void{ if (timer != null){ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onTimerEvent); timer = null; }; } public function onRequestComplete(_arg1:Event, _arg2:URLLoader):void{ if (timedOut == true){ return; }; shutdownTimer(); var _local3:Object = JSON.decode(_arg2.data); if (_local3.error_code != undefined){ Console.log(((("got facebook error " + _local3.error_message) + " from ") + method)); Console.log(_arg2.data); trace(((("got facebook error " + _local3.error_message) + " from ") + method)); trace(_arg2.data); if (onError != null){ onError(extra); }; } else { Console.log(("success :" + _arg2.data)); onRequestSuccess(_local3); }; } public function onRequestError(_arg1:Event, _arg2:URLLoader):void{ if (timedOut == true){ return; }; shutdownTimer(); var _local3:Object = JSON.decode(_arg2.data); Console.log(((("got facebook error " + _local3.error_message) + " from ") + method)); Console.log(_arg2.data); if (onError != null){ onError(extra); }; } public function onRequestSuccess(_arg1:Object):void{ trace(("got result from " + method)); if (onComplete != null){ onComplete(_arg1, extra); }; } } }//package com.rkg.facebook
Section 99
//FacebookSession (com.rkg.facebook.FacebookSession) package com.rkg.facebook { import flash.display.*; import flash.events.*; import flash.net.*; public class FacebookSession { public static var apiUrl:String = "http://api.facebook.com/restserver.php"; public static var apiVersion:String = "1.0"; public static var appKey:String; public static var appSecret:String; public static var callId:int = 0; public static var sessionKey:String; public static var externalServerUrl:String; public static var onComplete:Function; public static var isInFacebook:Boolean = false; public static var facebookUid:String = ""; public static var ready:Boolean = false; public static function initFromSWFParams(_arg1:LoaderInfo, _arg2:Function):void{ var _local6:String; var _local7:String; var _local8:URLRequest; var _local9:URLVariables; var _local10:String; var _local3:Object = _arg1.parameters; onComplete = _arg2; if (!_local3.hasOwnProperty("fb_sig")){ ready = true; if (onComplete != null){ onComplete(); }; return; }; facebookUid = _local3["fb_sig_user"]; appKey = _local3["fb_sig_api_key"]; appSecret = _local3["fb_sig_ss"]; sessionKey = _local3["fb_sig_session_key"]; var _local4 = ""; var _local5:Array = new Array(); for (_local6 in _local3) { if (_local6.substr(0, 7) == "fb_sig_"){ _local10 = ((_local6.substr(7) + "=") + _local3[_local6].toString()); _local5.push(_local10); }; }; _local4 = _local5.sort().join(""); _local7 = (_local3["service"] + "validate/validate_swf_params"); _local8 = new URLRequest(_local7); _local8.method = URLRequestMethod.POST; _local9 = new URLVariables(); _local9.p = _local4; _local9.s = _local3["fb_sig"]; _local8.data = _local9; loadURL(_local8, onValidateComplete); } public static function onValidateComplete(_arg1:Event, _arg2:URLLoader):void{ if (_arg2.data == "true"){ trace("we're in facebook"); ready = true; isInFacebook = true; if (onComplete != null){ onComplete(); }; }; } public static function loadURL(_arg1:URLRequest, _arg2:Function, _arg3:Function=null):void{ var urlLoader:URLLoader; var urlRequest = _arg1; var onComplete = _arg2; var onError = _arg3; urlLoader = new URLLoader(urlRequest); urlLoader.addEventListener(Event.COMPLETE, function (_arg1:Event):void{ if (onComplete != null){ onComplete(_arg1, urlLoader); }; }); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:Event):void{ trace("IO error during facebook request"); if (onError != null){ onError(_arg1, urlLoader); }; }); urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:Event):void{ trace("Security error during facebook request"); if (onError != null){ onError(_arg1, urlLoader); }; }); urlLoader.load(urlRequest); } } }//package com.rkg.facebook
Section 100
//FriendImagesRequest (com.rkg.facebook.FriendImagesRequest) package com.rkg.facebook { public class FriendImagesRequest extends FacebookRequest { public var default_pic:String; public var default_pic_square:String; public function FriendImagesRequest(_arg1:Object, _arg2:Function, _arg3:Function=null, _arg4:Object=null){ default_pic = FacebookConstants.DEFAULT_PIC; default_pic_square = FacebookConstants.DEFAULT_PIC_SQUARE; super("Fql.query", _arg2, _arg3, _arg4); var _local5 = ""; _local5 = (_local5 + "select uid,name,first_name,last_name,pic_square,online_presence from user where "); if (_arg1["installedOnly"]){ _local5 = (_local5 + "is_app_user=1 and "); }; if (_arg1["includeSelf"]){ _local5 = (((_local5 + "(uid=") + FacebookSession.facebookUid) + " or "); }; _local5 = (((_local5 + "uid in (select uid1 from friend where uid2=") + FacebookSession.facebookUid) + ")"); if (_arg1["includeSelf"]){ _local5 = (_local5 + ")"); }; trace(_local5); addParam("query", _local5); go(); } override public function onRequestSuccess(_arg1:Object):void{ var _local2:Array = (_arg1 as Array); var _local3:int; while (_local3 < _local2.length) { if ((((_local2[_local3].pic == null)) || ((_local2[_local3].pic.length == 0)))){ _local2[_local3].pic = default_pic; }; if ((((_local2[_local3].pic_square == null)) || ((_local2[_local3].pic_square.length == 0)))){ _local2[_local3].pic_square = default_pic_square; }; _local3++; }; if (onComplete != null){ onComplete(_arg1, extra); }; } } }//package com.rkg.facebook
Section 101
//UserImageRequest (com.rkg.facebook.UserImageRequest) package com.rkg.facebook { import flash.events.*; import flash.net.*; import flash.utils.*; import com.rkg.firebug.*; public class UserImageRequest extends FacebookRequest { protected var mParams:Object; public var default_pic:String; public var default_pic_square:String; protected static var sRequestCache:Dictionary; protected static var sCache:Dictionary; public function UserImageRequest(_arg1:Object, _arg2:Function, _arg3:Function=null, _arg4:Object=null){ var _local5:String; default_pic = FacebookConstants.DEFAULT_PIC; default_pic_square = FacebookConstants.DEFAULT_PIC_SQUARE; if (sCache == null){ sCache = new Dictionary(); }; if ((_arg1["uid"] in sCache)){ _arg2(sCache[_arg1["uid"]], _arg4); } else { mParams = _arg1; if (sRequestCache == null){ sRequestCache = new Dictionary(); }; super("Fql.query", _arg2, _arg3, _arg4); if ((_arg1["uid"] in sRequestCache)){ sRequestCache[mParams["uid"]].push(this); } else { sRequestCache[mParams["uid"]] = new Array(); _local5 = ""; _local5 = (_local5 + "select uid,name,first_name,pic_square from user where "); _local5 = (((_local5 + "(uid=") + _arg1["uid"]) + ")"); trace(_local5); addParam("query", _local5); go(); }; }; } override public function onRequestSuccess(_arg1:Object):void{ var arr:Array; var i:int; var data = _arg1; try { sCache[mParams["uid"]] = data; if ((((data[0].pic == null)) || ((data[0].pic.length == 0)))){ data[0].pic = default_pic; }; if ((((data[0].pic_square == null)) || ((data[0].pic_square.length == 0)))){ data[0].pic_square = default_pic_square; }; if (onComplete != null){ onComplete(data, extra); }; arr = sRequestCache[mParams["uid"]]; i = 0; while (i < arr.length) { if (arr[i].onComplete != null){ arr[i].onComplete(data, arr[i].extra); }; i = (i + 1); }; delete sRequestCache[mParams["uid"]]; } catch(error:Error) { Console.log(((("UserImageRequest.onRequestSuccess ERROR:" + error.message) + "\nDATA:") + data)); }; } public function doRequestCacheError():void{ var _local1:Array = sRequestCache[mParams["uid"]]; var _local2:int; while (_local2 < _local1.length) { if (_local1[_local2].onError != null){ _local1[_local2].onError(_local1[_local2].extra); }; _local2++; }; delete sRequestCache[mParams["uid"]]; } override public function onRequestError(_arg1:Event, _arg2:URLLoader):void{ if (timedOut == true){ return; }; shutdownTimer(); super.onRequestError(_arg1, _arg2); doRequestCacheError(); } override public function onTimerEvent(_arg1:TimerEvent):void{ super.onTimerEvent(_arg1); doRequestCacheError(); } } }//package com.rkg.facebook
Section 102
//Console (com.rkg.firebug.Console) package com.rkg.firebug { import flash.external.*; public class Console { public static var enabled:Boolean = true; public static function log(_arg1:Object):void{ var obj = _arg1; try { if (enabled){ ExternalInterface.call("console.log", obj); }; } catch(error:Error) { trace(error.message); }; } } }//package com.rkg.firebug
Section 103
//SoundManager (com.rkg.media.SoundManager) package com.rkg.media { import flash.events.*; import flash.system.*; import flash.media.*; import flash.net.*; import com.adobe.serialization.json.*; public class SoundManager { protected var mSoundDef:Object;// = null protected var mSwfFile:String;// = null protected var mApplicationDomain:ApplicationDomain;// = null protected var mSoundTransform:SoundTransform; protected var mBackgroundSoundTransform:SoundTransform; protected var mLoopSoundTransform:SoundTransform; protected var mMasterSoundTransform:SoundTransform; protected var mMusicChannel:SoundChannel;// = null protected var mMusicAudioId:String;// = null protected var mMute:Boolean;// = false protected var mMusic:Boolean;// = true protected var mMusicTime:Number;// = 0 protected var mLoopList:Array; protected var mCommand:int;// = 0 protected var mFadeoutTime:Number; protected var mFadeoutTimeInv:Number; protected var mMusicFadeTime:Number; protected var mMusicFadeTimeInv:Number; protected var mLoopFadeoutTime:Number; protected var mLoopFadeoutTimeInv:Number; protected var mMusicFadeoutTime:Number; protected var mMusicFadeoutTimeInv:Number; protected var mMusicFadeoutSoundTransform:SoundTransform; protected var mStartMusicFunction:Function; protected var mStartMusicObject:Object; public static const MAX_BACKGROUND_VOLUME:Number = 0.15; public static const MAX_SOUND_VOLUME:Number = 0.25; public static const MAX_MASTER_VOLUME:Number = 1; public static const SOUND_DEFS:String = "{"sound":["ClickTest.aif","cannon_fire.aif","snood_bounce.aif","snood_stick.aif","fanfare_a.aif","fanfare_02.aif","fanfare_full.aif","fanfare_bonus.aif","transport.aif","stone_rumble.aif","stone_explode.aif","da_bomb0_02.aif","da_bomb.aif","drill_press.aif","rowbuilder.aif","wedied.aif","button_press_1.aif","fireworks_1.aif","teleout_02.aif","transition_02.aif","round_complete_03.aif","red_plasma_warn.aif","red_plasma_warn.aif","numbskulls.aif","revers_gun.aif","red_plasma_retract.aif","snood_laugh_01.aif","snood_laugh_04.aif","snood_laugh_05.aif","countdown.aif","buttonclick.aif","challengeconfirm.aif","challengeplay.aif","challengeremove.aif","litttlepage.aif","monkeycoin.aif","out01.aif","out02.aif","scratch.aif","selectfriend.aif","swish01.aif","swish02.aif","swish03.aif","swish04.aif","triumph.aif"],"music":["geji.mp3","gejisglide.mp3","jakescitydiner.mp3","midoribescatchoftheday.mp3","spikeypyramids.mp3","sunnybreeze.mp3","zodedforest.mp3"]}"; public static const DEFAULT_FADE_TIME:Number = 2; public static const COMMAND_NONE:int = 0; public static const COMMAND_MASTER_FADEOUT_STOP:int = (1 << 0); public static const COMMAND_FADE_MUSIC:int = (1 << 1); public static const COMMAND_LOOPS_FADEOUT_STOP:int = (1 << 2); public static const COMMAND_MUSIC_FADEOUT_STOP:int = (1 << 3); public static const COMMAND_START_MUSIC:int = (1 << 4); protected static var mInstance:SoundManager = null; public function SoundManager(){ if (mInstance != null){ throw (new Error("SoundManager is a singleton, do not instantiate")); }; mLoopList = new Array(); } public function loadSounds(_arg1:ApplicationDomain):void{ mSoundDef = JSON.decode(SOUND_DEFS); mSoundTransform = new SoundTransform(); mSoundTransform.volume = MAX_SOUND_VOLUME; mLoopSoundTransform = new SoundTransform(); mLoopSoundTransform.volume = MAX_SOUND_VOLUME; mBackgroundSoundTransform = new SoundTransform(); mBackgroundSoundTransform.volume = MAX_BACKGROUND_VOLUME; mMasterSoundTransform = new SoundTransform(); mMasterSoundTransform.volume = MAX_MASTER_VOLUME; SoundMixer.soundTransform = mMasterSoundTransform; mApplicationDomain = _arg1; } public function set vol(_arg1:Number):void{ mSoundTransform.volume = _arg1; } public function get vol():Number{ return (mSoundTransform.volume); } public function systemReset():void{ SoundMixer.stopAll(); startMaster(); } public function makeSoundTransform(_arg1:Object):SoundTransform{ var _local3:String; var _local2:SoundTransform = new SoundTransform(); for (_local3 in _arg1) { if (_local2.hasOwnProperty(_local3)){ _local2[_local3] = _arg1[_local3]; }; }; return (_local2); } public function playRandom(_arg1:Array, _arg2:Object=null):SoundChannel{ var _local3:int = (Math.random() * _arg1.length); var _local4:Object = _arg1[_local3]; var _local5:SoundChannel; if ((_local4 is String)){ _local5 = play((_local4 as String), _arg2); } else { if ((_local4 is int)){ _local5 = playByIndex((_local4 as int), _arg2); }; }; return (_local5); } public function playByIndex(_arg1:int, _arg2:Object=null):SoundChannel{ return (play(mSoundDef.sound[_arg1], _arg2)); } public function play(_arg1:String, _arg2:Object=null):SoundChannel{ trace(("[SoundManager][play] audioId: " + _arg1)); var _local3:SoundTransform = mSoundTransform; if (_arg2 != null){ _local3 = makeSoundTransform(_arg2); }; var _local4:Class = (mApplicationDomain.getDefinition(_arg1) as Class); var _local5:Sound = new (_local4); return (_local5.play(0, 0, _local3)); } public function playLoopByIndex(_arg1:int, _arg2:Number, _arg3:Object=null):SoundChannel{ return (playLoop(mSoundDef.sound[_arg1], _arg2, _arg3)); } public function playLoop(_arg1:String, _arg2:Number, _arg3:Object=null):SoundChannel{ var _local4:SoundTransform = mLoopSoundTransform; if (_arg3 != null){ _local4 = makeSoundTransform(_arg3); }; var _local5:int; var _local6:Class = (mApplicationDomain.getDefinition(_arg1) as Class); var _local7:Sound = new (_local6); _local5 = int(((_arg2 * 1000) / _local7.length)); var _local8:SoundChannel = _local7.play(0, (_local5 + 1), _local4); _local8.addEventListener(Event.SOUND_COMPLETE, onLoopComplete); mLoopList.push(_local8); return (_local8); } public function playLoopCountByIndex(_arg1:int, _arg2:Number, _arg3:Object=null):SoundChannel{ return (playLoopCount(mSoundDef.sound[_arg1], _arg2, _arg3)); } public function playLoopCount(_arg1:String, _arg2:Number, _arg3:Object=null):SoundChannel{ var _local4:SoundTransform = mLoopSoundTransform; if (_arg3 != null){ _local4 = makeSoundTransform(_arg3); }; var _local5:Class = (mApplicationDomain.getDefinition(_arg1) as Class); var _local6:Sound = new (_local5); var _local7:SoundChannel = _local6.play(0, _arg2, _local4); _local7.addEventListener(Event.SOUND_COMPLETE, onLoopComplete); mLoopList.push(_local7); return (_local7); } public function onLoopComplete(_arg1:Event):void{ var _local2:int = mLoopList.indexOf(_arg1.target); if (_local2 >= 0){ mLoopList.splice(_local2, 1); }; } public function playAsMusicByIndex(_arg1:int, _arg2:Number):void{ playAsMusic(mSoundDef.sound[_arg1], _arg2); } public function playAsMusic(_arg1:String, _arg2:Number):void{ startMusic(startPlayAsMusic, {id:_arg1, time:_arg2}); } public function startPlayAsMusic(_arg1:Object):void{ var _local2:Class = (mApplicationDomain.getDefinition(_arg1.id) as Class); var _local3:Sound = new (_local2); var _local4:int = int(((_arg1.time * 1000) / _local3.length)); mMusicChannel = _local3.play(0, (_local4 + 1), mBackgroundSoundTransform); mMusicChannel.addEventListener(Event.SOUND_COMPLETE, onAsMusicComplete); mMusicAudioId = _arg1.id; mMusicTime = _arg1.time; } public function onAsMusicComplete(_arg1:Event):void{ if (mMusicAudioId != null){ playAsMusic(mMusicAudioId, mMusicTime); }; } public function get musicList():Array{ return (mSoundDef.music); } public function playMusic(_arg1:String):void{ startMusic(startPlayMusic, {id:_arg1}); } public function startPlayMusic(_arg1:Object):void{ var _local2:Class = (mApplicationDomain.getDefinition(_arg1.id) as Class); var _local3:Sound = new (_local2); mMusicChannel = _local3.play(0, 0, mBackgroundSoundTransform); mMusicChannel.addEventListener(Event.SOUND_COMPLETE, onMusicComplete); mMusicAudioId = _arg1.id; mMusicTime = -1; } public function onMusicIOError(_arg1:IOErrorEvent):void{ trace(("Couldn't load " + _arg1.text)); if (mMusicChannel != null){ mMusicChannel.stop(); }; mMusicChannel = null; mMusicAudioId = null; } public function onMusicComplete(_arg1:Event):void{ if (mMusicAudioId != null){ playMusic(mMusicAudioId); }; } public function isPlayingMusic():Boolean{ return (Boolean(!((mMusicChannel == null)))); } public function stopAll():void{ mCommand = (mCommand | COMMAND_MASTER_FADEOUT_STOP); mFadeoutTime = DEFAULT_FADE_TIME; mFadeoutTimeInv = (1 / DEFAULT_FADE_TIME); } public function stopMusic():void{ if (mMusicChannel != null){ mCommand = (mCommand | COMMAND_MUSIC_FADEOUT_STOP); mMusicFadeoutTime = DEFAULT_FADE_TIME; mMusicFadeoutTimeInv = (1 / DEFAULT_FADE_TIME); mMusicFadeoutSoundTransform = new SoundTransform(); mMusicFadeoutSoundTransform.volume = mBackgroundSoundTransform.volume; }; } public function startMusic(_arg1:Function, _arg2:Object):void{ mStartMusicFunction = _arg1; mStartMusicObject = _arg2; mCommand = (mCommand | COMMAND_START_MUSIC); stopMusic(); } public function stopLoops():void{ mCommand = (mCommand | COMMAND_LOOPS_FADEOUT_STOP); mLoopFadeoutTime = DEFAULT_FADE_TIME; mLoopFadeoutTimeInv = (1 / DEFAULT_FADE_TIME); } public function startMaster():void{ if (mMute == false){ mMasterSoundTransform.volume = MAX_MASTER_VOLUME; SoundMixer.soundTransform = mMasterSoundTransform; } else { mMasterSoundTransform.volume = 0; SoundMixer.soundTransform = mMasterSoundTransform; }; } public function startAll():void{ if (mMute == false){ mMasterSoundTransform.volume = MAX_MASTER_VOLUME; SoundMixer.soundTransform = mMasterSoundTransform; } else { mMasterSoundTransform.volume = 0; SoundMixer.soundTransform = mMasterSoundTransform; }; mLoopSoundTransform.volume = MAX_SOUND_VOLUME; if (mMusic == true){ mBackgroundSoundTransform.volume = MAX_BACKGROUND_VOLUME; } else { mBackgroundSoundTransform.volume = 0; }; } public function music(_arg1:Boolean):void{ if (mMusic != _arg1){ mMusic = _arg1; if (mMusicChannel != null){ mCommand = (mCommand | COMMAND_FADE_MUSIC); mMusicFadeTime = DEFAULT_FADE_TIME; mMusicFadeTimeInv = (1 / DEFAULT_FADE_TIME); } else { mBackgroundSoundTransform.volume = 0; }; }; } public function mute(_arg1:Boolean):void{ if (_arg1){ mMute = true; mMasterSoundTransform.volume = 0; SoundMixer.soundTransform = mMasterSoundTransform; } else { mMute = false; mMasterSoundTransform.volume = MAX_MASTER_VOLUME; SoundMixer.soundTransform = mMasterSoundTransform; }; } public function get masterVolume():Number{ return (mMasterSoundTransform.volume); } public function set masterVolume(_arg1:Number):void{ mMasterSoundTransform.volume = _arg1; SoundMixer.soundTransform = mMasterSoundTransform; } public function update(_arg1:Number):void{ if ((mCommand & COMMAND_MASTER_FADEOUT_STOP) != 0){ updateMasterFadeoutStop(_arg1); }; if ((mCommand & COMMAND_FADE_MUSIC) != 0){ updateFadeMusic(_arg1); }; if ((mCommand & COMMAND_LOOPS_FADEOUT_STOP) != 0){ updateLoopsFadeoutStop(_arg1); }; if ((mCommand & COMMAND_MUSIC_FADEOUT_STOP) != 0){ updateMusicFadeoutStop(_arg1); }; if ((mCommand & COMMAND_START_MUSIC) != 0){ updateStartMusic(_arg1); }; } public function updateLoopsFadeoutStop(_arg1:Number):void{ var _local3:int; var _local4:SoundChannel; mLoopFadeoutTime = (mLoopFadeoutTime - _arg1); var _local2:Number = ((MAX_SOUND_VOLUME * mLoopFadeoutTime) * mLoopFadeoutTimeInv); if (mLoopSoundTransform.volume > _local2){ mLoopSoundTransform.volume = _local2; if (_local2 < 0){ _local2 = 0; }; _local3 = 0; while (_local3 < mLoopList.length) { mLoopList[_local3].soundTransform = mLoopSoundTransform; _local3++; }; }; if (mLoopFadeoutTime <= 0){ while (mLoopList.length > 0) { _local4 = mLoopList.pop(); _local4.stop(); }; mCommand = (mCommand & ~(COMMAND_LOOPS_FADEOUT_STOP)); }; } public function updateMusicFadeoutStop(_arg1:Number):void{ mMusicFadeoutTime = (mMusicFadeoutTime - _arg1); var _local2:Number = ((MAX_BACKGROUND_VOLUME * mMusicFadeoutTime) * mMusicFadeoutTimeInv); if ((((mMusic == true)) && ((mMusicFadeoutSoundTransform.volume > _local2)))){ if (_local2 < 0){ _local2 = 0; }; mMusicFadeoutSoundTransform.volume = _local2; if (((!((mMusicChannel == null))) && (!((mMusicFadeoutSoundTransform == null))))){ mMusicChannel.soundTransform = mMusicFadeoutSoundTransform; }; }; if (mMusicFadeoutTime <= 0){ if (mMusicChannel != null){ mMusicChannel.stop(); mMusicChannel = null; }; mMusicAudioId = null; mCommand = (mCommand & ~(COMMAND_MUSIC_FADEOUT_STOP)); }; } public function updateMasterFadeoutStop(_arg1:Number):void{ mFadeoutTime = (mFadeoutTime - _arg1); var _local2:Number = ((MAX_MASTER_VOLUME * mFadeoutTime) * mFadeoutTimeInv); if ((((mMute == false)) && ((mMasterSoundTransform.volume > _local2)))){ if (_local2 < 0){ _local2 = 0; }; mMasterSoundTransform.volume = _local2; SoundMixer.soundTransform = mMasterSoundTransform; }; if (mFadeoutTime <= 0){ SoundMixer.stopAll(); mMusicChannel = null; mMusicAudioId = null; while (mLoopList.length > 0) { mLoopList.pop(); }; mCommand = (mCommand & ~(COMMAND_MASTER_FADEOUT_STOP)); startMaster(); }; } public function updateFadeMusic(_arg1:Number):void{ mMusicFadeTime = (mMusicFadeTime - _arg1); var _local2:Number = ((MAX_BACKGROUND_VOLUME * mMusicFadeTime) * mMusicFadeTimeInv); if (mMusic){ _local2 = (MAX_BACKGROUND_VOLUME - _local2); }; if (mMusicChannel != null){ if (_local2 < 0){ _local2 = 0; }; if (_local2 > 1){ _local2 = 1; }; mBackgroundSoundTransform.volume = _local2; mMusicChannel.soundTransform = mBackgroundSoundTransform; }; if (mMusicFadeTime <= 0){ mCommand = (mCommand & ~(COMMAND_FADE_MUSIC)); }; } public function updateStartMusic(_arg1:Number):void{ var _local2:Boolean = Boolean(((mCommand & COMMAND_MUSIC_FADEOUT_STOP) == 0)); var _local3:Boolean = Boolean(!(((mCommand & COMMAND_START_MUSIC) == 0))); if (((_local2) && (_local3))){ mStartMusicFunction(mStartMusicObject); mCommand = (mCommand & ~(COMMAND_START_MUSIC)); }; } public static function get Instance():SoundManager{ if (mInstance == null){ mInstance = new (SoundManager); }; return (mInstance); } } }//package com.rkg.media
Section 104
//Analytics (com.rkg.net.Analytics) package com.rkg.net { import flash.display.*; import com.google.analytics.*; public class Analytics { protected var mReady:Boolean;// = false public var Tracker:AnalyticsTracker;// = null protected static var mInstance:Analytics = null; public function Analytics(){ if (mInstance != null){ throw (new Error("Analytics is a singleton, already instantiated")); }; } public function init(_arg1:DisplayObject, _arg2:String):void{ Tracker = new GATracker(_arg1, _arg2, "AS3", false); } public function trackPage(_arg1:String):void{ if (Tracker != null){ Tracker.trackPageview(_arg1); }; trace(_arg1); } public static function get Instance():Analytics{ if (mInstance == null){ mInstance = new (Analytics); }; return (mInstance); } } }//package com.rkg.net
Section 105
//ServerCom (com.rkg.net.ServerCom) package com.rkg.net { import flash.events.*; import flash.net.*; import flash.utils.*; import com.adobe.serialization.json.*; import com.rkg.firebug.*; import com.adobe.crypto.*; public class ServerCom extends EventDispatcher { public var service:String;// = null public var player_id:String;// = null public var extras:Object;// = null public var timer:Timer;// = null public var timedOut:Boolean;// = false public static const TIME_OUT:int = 20000; public static const COMMAND_SCORE_GET:String = "score/get/"; public static const COMMAND_SCORE_REPORT:String = "score/report/"; public static const COMMAND_SCORE_RANKING:String = "score/ranking/"; public static const COMMAND_SCORE_GLOBAL_RANKING:String = "score/global_ranking/"; public static const COMMAND_SCORE_RESET:String = "score/reset/"; public static const COMMAND_SCORE_STATIC_DATA:String = "score/static_data"; public static const COMMAND_SCORE_SEND_FEED:String = "score/send_feed/"; public static const COMMAND_SCORE_EARN_ACHIEVEMENT:String = "score/earn_achievement/"; public static const COMMAND_CHALLENGE_GET:String = "challenge/get/"; public static const COMMAND_CHALLENGE_START:String = "challenge/start/"; public static const COMMAND_CHALLENGE_NEW:String = "challenge/new/"; public static const COMMAND_CHALLENGE_USER:String = "challenge/user/"; public static const COMMAND_CHALLENGE_HIDE:String = "challenge/hide/"; public static const COMMAND_CHALLENGE_FORFEIT:String = "challenge/forfeit/"; public static const COMMAND_DICT_LOOKUP:String = "dict_wrapper/lookup"; public static const COMMAND_CHALLENGE_NOTIFY:String = "challenge/notify/"; public static const COMMAND_POINT_BUY_PRO:String = "point/buy_pro/"; public static const COMMAND_POINT_MODIFY_FEATURE:String = "point/modify_feature/"; public static const COMMAND_POINT_FEATURES:String = "point/features/"; public static const MW_SECRET1:String = "ewrlkt3465"; public static const MW_SECRET2:String = "h4t12ssdjaewdsa"; public static const SN_SECRET1:String = "77afds37467y"; public static const SN_SECRET2:String = "lfa63hu4abvhn"; protected static var sSecret1:String = "ewrlkt3465"; protected static var sSecret2:String = "h4t12ssdjaewdsa"; public function ServerCom(_arg1:String, _arg2:String){ this.service = _arg1; this.player_id = _arg2; } protected function secret():String{ return ((sSecret1 + sSecret2)); } protected function sendCommand(_arg1:String, _arg2:Object=null, _arg3:String="GET"):void{ var loader:URLLoader; var request:URLRequest; var variables:URLVariables; var timestamp:Date; var key_str:String; var key_list:Array; var key:String; var key2:String; var command = _arg1; var params = _arg2; var method = _arg3; try { loader = new URLLoader(); request = new URLRequest(); if (params != null){ variables = new URLVariables(); timestamp = new Date(); key_str = ""; key_list = new Array(); for (key in params) { if (params[key] != null){ variables[key] = params[key]; }; }; for (key2 in variables) { key_list.push(key2); key_str = (key_str + variables[key2].toString()); }; variables.mg_timestamp = timestamp.time.toString(); variables.mg_random = Math.random(); variables.mg_user = this.player_id; variables.mg_vars = key_list.join(":"); variables.mg_client = "flash"; key_str = (key_str + (((((variables.mg_timestamp + variables.mg_random.toString()) + variables.mg_user) + variables.mg_client) + command) + this.secret())); variables.mg_sig = MD5.hash(key_str); request.data = variables; }; request.url = (this.service + command); request.method = method; loader.load(request); loader.addEventListener(Event.COMPLETE, decodeJSON); loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); timedOut = false; timer = new Timer(TIME_OUT); timer.addEventListener(TimerEvent.TIMER, onTimerEvent); timer.start(); trace("****SeverCom:BEGIN****"); trace(request.url); trace("****SeverCom:END****"); } catch(error:Error) { trace(error.message); throw (new Error("ServerCom.sendCommand Error")); }; } public function shutdownTimer():void{ if (timer != null){ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, onTimerEvent); timer = null; }; } public function onTimerEvent(_arg1:TimerEvent):void{ timedOut = true; shutdownTimer(); var _local2:ServerEvent = new ServerEvent(ServerEvent.SERVER_IOERROR); _local2.replyObject = "ServerCom timed out"; _local2.extras = extras; this.dispatchEvent(_local2); } protected function argToString(_arg1:Object):String{ var _local3:String; var _local2:String = new String(); for (_local3 in _arg1) { if (_local2.length > 0){ _local2 = (_local2 + "&"); }; _local2 = (_local2 + ((_local3 + "=") + _arg1[_local3])); }; return (_local2); } public function dictLookup(_arg1:String):void{ var _local2:Object = new Object(); _local2.word = _arg1; var _local3:String = COMMAND_DICT_LOOKUP; sendCommand(_local3, _local2); } public function scoreReport(_arg1:Object):void{ var _local2:String = (COMMAND_SCORE_REPORT + this.player_id); sendCommand(_local2, _arg1, URLRequestMethod.POST); } public function scoreGet(_arg1:Boolean=false, _arg2:Boolean=false):void{ var _local3:Object = new Object(); _local3.check_progress = _arg1; _local3.challenge_available_count = _arg2; var _local4:String = (COMMAND_SCORE_GET + this.player_id); sendCommand(_local4, _local3); } public function scoreReset():void{ var _local1:String = (COMMAND_SCORE_RESET + this.player_id); sendCommand(_local1, {}, URLRequestMethod.POST); } public function scoreSendFeedAchievement(_arg1:String):void{ var _local2:String = (COMMAND_SCORE_SEND_FEED + this.player_id); var _local3:Object = new Object(); _local3.mode = "achievement"; _local3.param0 = _arg1; sendCommand(_local2, _local3, URLRequestMethod.POST); } public function scoreSendFeedLevelup(_arg1:String, _arg2:int):void{ var _local3:String = (COMMAND_SCORE_SEND_FEED + this.player_id); var _local4:Object = new Object(); _local4.mode = "levelup"; _local4.param0 = _arg1; _local4.param1 = _arg2; sendCommand(_local3, _local4, URLRequestMethod.POST); } public function scoreRanking(_arg1:int, _arg2:int=-2, _arg3:int=2):void{ var _local4:Object = new Object(); _local4.score_type = _arg1; _local4.min = _arg2; _local4.max = _arg3; var _local5:String = (COMMAND_SCORE_RANKING + this.player_id); sendCommand(_local5, _local4); } public function globalRanking(_arg1:int, _arg2:int=1, _arg3:int=10):void{ var _local4:Object = new Object(); _local4.score_type = _arg1; _local4.ranking_page = _arg2; _local4.ranking_per_page = _arg3; var _local5:String = (COMMAND_SCORE_GLOBAL_RANKING + this.player_id); sendCommand(_local5, _local4); } public function scoreEarnAchievement(_arg1:String, _arg2:Boolean=true, _arg3:Object=null):void{ var _local4:Object = new Object(); _local4.type = _arg1; _local4.award = _arg2; if (_arg3 != null){ _local4.send_feed = _arg3; }; var _local5:String = (COMMAND_SCORE_EARN_ACHIEVEMENT + this.player_id); sendCommand(_local5, _local4); } public function scoreStaticData():void{ sendCommand(COMMAND_SCORE_STATIC_DATA); } public function challengeUser(_arg1:int=1, _arg2:int=10, _arg3:Boolean=false):void{ var _local4:Object = new Object(); _local4.page = _arg1; _local4.per_page = _arg2; if (_arg3 == true){ _local4.open = _arg3; }; var _local5:String = (COMMAND_CHALLENGE_USER + this.player_id); sendCommand(_local5, _local4); } public function challengeNew(_arg1:String, _arg2:String, _arg3:int=0, _arg4:int=1, _arg5:Boolean=true, _arg6:int=0):void{ var _local7:Object = new Object(); _local7.mode = _arg2; _local7.seed = _arg3; _local7.games_total = _arg4; _local7.difficulty = _arg6; if (_arg5 == true){ _local7.start = true; }; var _local8:String = (((COMMAND_CHALLENGE_NEW + this.player_id) + "/") + _arg1); sendCommand(_local8, _local7, URLRequestMethod.POST); } public function challengeGet(_arg1:String):void{ var _local2:String = (((COMMAND_CHALLENGE_GET + this.player_id) + "/") + _arg1); sendCommand(_local2, {}); } public function challengeStart(_arg1:String, _arg2:int):void{ var _local3:Object = new Object(); _local3.games_played = _arg2; var _local4:String = (((COMMAND_CHALLENGE_START + this.player_id) + "/") + _arg1); sendCommand(_local4, _local3, URLRequestMethod.POST); } public function challengeHide(_arg1:String):void{ var _local2:String = (((COMMAND_CHALLENGE_HIDE + this.player_id) + "/") + _arg1); sendCommand(_local2, {}, URLRequestMethod.POST); } public function challengeForfeit(_arg1:String):void{ var _local2:String = (((COMMAND_CHALLENGE_FORFEIT + this.player_id) + "/") + _arg1); sendCommand(_local2, {}, URLRequestMethod.POST); } public function sendLiveGameNotification(_arg1:String, _arg2:String, _arg3:String, _arg4:int=1, _arg5:int=0):void{ var _local6:Object = new Object(); _local6.mode = _arg3; _local6.games_total = _arg4; _local6.difficulty = _arg5; var _local7:String = (((((COMMAND_CHALLENGE_NOTIFY + this.player_id) + "/") + _arg1) + "/") + _arg2); sendCommand(_local7, _local6, URLRequestMethod.POST); } public function challengeNotifyLiveReminder(_arg1:String, _arg2:String, _arg3:String):void{ var _local4:Object = new Object(); _local4.mode = _arg3; _local4.content = "remind"; var _local5:String = (((((COMMAND_CHALLENGE_NOTIFY + this.player_id) + "/") + _arg1) + "/") + _arg2); sendCommand(_local5, _local4, URLRequestMethod.POST); } public function challengeNotifyReminder(_arg1:String, _arg2:String, _arg3:String):void{ var _local4:Object = new Object(); _local4.mode = _arg3; _local4.content = "remind"; var _local5:String = (((((COMMAND_CHALLENGE_NOTIFY + this.player_id) + "/") + _arg1) + "/") + _arg2); sendCommand(_local5, _local4, URLRequestMethod.POST); } public function challengeNotifyLiveCancel(_arg1:String, _arg2:String, _arg3:String):void{ var _local4:Object = new Object(); _local4.mode = _arg3; _local4.content = "cancel"; var _local5:String = (((((COMMAND_CHALLENGE_NOTIFY + this.player_id) + "/") + _arg1) + "/") + _arg2); sendCommand(_local5, _local4, URLRequestMethod.POST); } public function pointBuyPro():void{ var _local1:String = COMMAND_POINT_BUY_PRO; sendCommand(_local1, {}, URLRequestMethod.POST); } public function modifyFeature(_arg1:String, _arg2:String):void{ var _local3:String = COMMAND_POINT_MODIFY_FEATURE; var _local4:Object = new Object(); _local4.feature = _arg1; _local4.change = _arg2; sendCommand(_local3, _local4, URLRequestMethod.POST); } public function getFeatures():void{ var _local1:String = COMMAND_POINT_FEATURES; sendCommand(_local1, {}); } public function decodeJSON(_arg1:Event):void{ var loader:URLLoader; var reply:Object; var serverEvent:ServerEvent; var event = _arg1; if (timedOut == true){ return; }; shutdownTimer(); try { loader = URLLoader(event.target); reply = JSON.decode(loader.data); if (reply.hasOwnProperty("error")){ Console.log("ServerCom server error reply: "); Console.log(reply); serverEvent = new ServerEvent(ServerEvent.SERVER_ERROR); serverEvent.replyObject = reply; serverEvent.extras = extras; this.dispatchEvent(serverEvent); } else { serverEvent = new ServerEvent(ServerEvent.SERVER_REPLY); serverEvent.replyObject = reply; serverEvent.extras = extras; this.dispatchEvent(serverEvent); }; } catch(error:Error) { Console.log(("ServerCom decodeJSON Error: " + error.message)); throw (new Error("ServerCom.decodeJSON Error")); }; } public function onIOError(_arg1:IOErrorEvent):void{ if (timedOut == true){ return; }; shutdownTimer(); Console.log("ServerCom IOError: "); Console.log(_arg1); var _local2:ServerEvent = new ServerEvent(ServerEvent.SERVER_IOERROR); _local2.replyObject = _arg1.toString(); _local2.extras = extras; this.dispatchEvent(_local2); } public static function init(_arg1:String, _arg2:String):void{ sSecret1 = _arg1; sSecret2 = _arg2; } } }//package com.rkg.net
Section 106
//ServerEvent (com.rkg.net.ServerEvent) package com.rkg.net { import flash.events.*; public class ServerEvent extends Event { public var replyObject:Object; public var extras:Object; public static const SERVER_REPLY:String = "serverReply"; public static const SERVER_ERROR:String = "serverError"; public static const SERVER_IOERROR:String = "serverIOError"; public function ServerEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function clone():Event{ var _local1:ServerEvent = new ServerEvent(type, bubbles, cancelable); _local1.replyObject = this.replyObject; _local1.extras = this.extras; return (_local1); } override public function toString():String{ return ((((((("[ServerEvent type=" + type) + " bubbles=") + bubbles) + " cancelable=") + cancelable) + "]")); } } }//package com.rkg.net
Section 107
//aif (countdown.aif) package countdown { import flash.media.*; public dynamic class aif extends Sound { } }//package countdown
Section 108
//aif (da_bomb.aif) package da_bomb { import flash.media.*; public dynamic class aif extends Sound { } }//package da_bomb
Section 109
//aif (drill_press.aif) package drill_press { import flash.media.*; public dynamic class aif extends Sound { } }//package drill_press
Section 110
//aif (fanfare_02.aif) package fanfare_02 { import flash.media.*; public dynamic class aif extends Sound { } }//package fanfare_02
Section 111
//aif (fanfare_a.aif) package fanfare_a { import flash.media.*; public dynamic class aif extends Sound { } }//package fanfare_a
Section 112
//aif (fanfare_bonus.aif) package fanfare_bonus { import flash.media.*; public dynamic class aif extends Sound { } }//package fanfare_bonus
Section 113
//aif (fanfare_full.aif) package fanfare_full { import flash.media.*; public dynamic class aif extends Sound { } }//package fanfare_full
Section 114
//aif (fireworks_1.aif) package fireworks_1 { import flash.media.*; public dynamic class aif extends Sound { } }//package fireworks_1
Section 115
//UILoader (fl.containers.UILoader) package fl.containers { import flash.display.*; import fl.core.*; import flash.events.*; import flash.system.*; import flash.net.*; import flash.utils.*; import fl.events.*; public class UILoader extends UIComponent { protected var contentInited:Boolean;// = false protected var _maintainAspectRatio:Boolean;// = true protected var loader:Loader; protected var _autoLoad:Boolean;// = true protected var contentClip:Sprite; protected var _scaleContent:Boolean;// = true protected var _source:Object; private static var defaultStyles:Object = {}; protected function _unload(_arg1:Boolean=false):void{ var throwError = _arg1; if (loader != null){ clearLoadEvents(); contentClip.removeChild(loader); try { loader.close(); } catch(e:Error) { }; try { loader.unload(); } catch(e) { if (throwError){ throw (e); }; }; loader = null; return; }; contentInited = false; if (contentClip.numChildren){ contentClip.removeChildAt(0); }; } protected function handleComplete(_arg1:Event):void{ clearLoadEvents(); passEvent(_arg1); } override public function setSize(_arg1:Number, _arg2:Number):void{ if (((!(_scaleContent)) && ((_width > 0)))){ return; }; super.setSize(_arg1, _arg2); } override protected function draw():void{ if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function handleError(_arg1:Event):void{ passEvent(_arg1); clearLoadEvents(); loader.contentLoaderInfo.removeEventListener(Event.INIT, handleInit); } protected function initLoader():void{ loader = new Loader(); contentClip.addChild(loader); } protected function clearLoadEvents():void{ loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, handleError); loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, handleError); loader.contentLoaderInfo.removeEventListener(Event.OPEN, passEvent); loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, passEvent); loader.contentLoaderInfo.removeEventListener(HTTPStatusEvent.HTTP_STATUS, passEvent); loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, handleComplete); } protected function drawLayout():void{ var _local2:Number; var _local3:Number; var _local6:LoaderInfo; if (!contentInited){ return; }; var _local1:Boolean; if (loader){ _local6 = loader.contentLoaderInfo; _local2 = _local6.width; _local3 = _local6.height; } else { _local2 = contentClip.width; _local3 = contentClip.height; }; var _local4:Number = _width; var _local5:Number = _height; if (!_scaleContent){ _width = contentClip.width; _height = contentClip.height; } else { sizeContent(contentClip, _local2, _local3, _width, _height); }; if (((!((_local4 == _width))) || (!((_local5 == _height))))){ dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, true)); }; } public function get scaleContent():Boolean{ return (_scaleContent); } override protected function configUI():void{ super.configUI(); contentClip = new Sprite(); addChild(contentClip); } public function get maintainAspectRatio():Boolean{ return (_maintainAspectRatio); } protected function passEvent(_arg1:Event):void{ dispatchEvent(_arg1); } public function get bytesTotal():uint{ return (((((loader == null)) || ((loader.contentLoaderInfo == null)))) ? 0 : loader.contentLoaderInfo.bytesTotal); } protected function sizeContent(_arg1:DisplayObject, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ var _local8:Number; var _local9:Number; var _local6:Number = _arg4; var _local7:Number = _arg5; if (_maintainAspectRatio){ _local8 = (_arg4 / _arg5); _local9 = (_arg2 / _arg3); if (_local8 < _local9){ _local7 = (_local6 / _local9); } else { _local6 = (_local7 * _local9); }; }; _arg1.width = _local6; _arg1.height = _local7; _arg1.x = ((_arg4 / 2) - (_local6 / 2)); _arg1.y = ((_arg5 / 2) - (_local7 / 2)); } public function get source():Object{ return (_source); } public function set scaleContent(_arg1:Boolean):void{ if (_scaleContent == _arg1){ return; }; _scaleContent = _arg1; invalidate(InvalidationType.SIZE); } public function get bytesLoaded():uint{ return (((((loader == null)) || ((loader.contentLoaderInfo == null)))) ? 0 : loader.contentLoaderInfo.bytesLoaded); } public function loadBytes(_arg1:ByteArray, _arg2:LoaderContext=null):void{ var bytes = _arg1; var context = _arg2; _unload(); initLoader(); try { loader.loadBytes(bytes, context); } catch(error) { throw (error); }; } protected function handleInit(_arg1:Event):void{ loader.contentLoaderInfo.removeEventListener(Event.INIT, handleInit); contentInited = true; passEvent(_arg1); invalidate(InvalidationType.SIZE); } public function set autoLoad(_arg1:Boolean):void{ _autoLoad = _arg1; if (((((((_autoLoad) && ((loader == null)))) && (!((_source == null))))) && (!((_source == ""))))){ load(); }; } public function load(_arg1:URLRequest=null, _arg2:LoaderContext=null):void{ _unload(); if ((((((_arg1 == null)) || ((_arg1.url == null)))) && ((((_source == null)) || ((_source == "")))))){ return; }; var _local3:DisplayObject = getDisplayObjectInstance(source); if (_local3 != null){ contentClip.addChild(_local3); contentInited = true; invalidate(InvalidationType.SIZE); return; }; if (_arg1 == null){ _arg1 = new URLRequest(_source.toString()); }; if (_arg2 == null){ _arg2 = new LoaderContext(false, ApplicationDomain.currentDomain); }; initLoader(); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, handleError, false, 0, true); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleError, false, 0, true); loader.contentLoaderInfo.addEventListener(Event.OPEN, passEvent, false, 0, true); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, passEvent, false, 0, true); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleComplete, false, 0, true); loader.contentLoaderInfo.addEventListener(Event.INIT, handleInit, false, 0, true); loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, passEvent, false, 0, true); loader.load(_arg1, _arg2); } public function get percentLoaded():Number{ return (((bytesTotal)<=0) ? 0 : ((bytesLoaded / bytesTotal) * 100)); } public function set maintainAspectRatio(_arg1:Boolean):void{ _maintainAspectRatio = _arg1; invalidate(InvalidationType.SIZE); } public function get autoLoad():Boolean{ return (_autoLoad); } public function set source(_arg1:Object):void{ if (_arg1 == ""){ return; }; _source = _arg1; _unload(); if (((_autoLoad) && (!((_source == null))))){ load(); }; } public function close():void{ try { loader.close(); } catch(error) { throw (error); }; } public function get content():DisplayObject{ if (loader != null){ return (loader.content); }; if (contentClip.numChildren){ return (contentClip.getChildAt(0)); }; return (null); } public function unload():void{ _source = null; _unload(true); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.containers
Section 116
//BaseButton (fl.controls.BaseButton) package fl.controls { import flash.display.*; import fl.core.*; import flash.events.*; 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 117
//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 118
//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 119
//CheckBox (fl.controls.CheckBox) package fl.controls { import flash.display.*; public class CheckBox extends LabelButton { private static var defaultStyles:Object = {icon:null, upIcon:"CheckBox_upIcon", downIcon:"CheckBox_downIcon", overIcon:"CheckBox_overIcon", disabledIcon:"CheckBox_disabledIcon", selectedDisabledIcon:"CheckBox_selectedDisabledIcon", focusRectSkin:null, focusRectPadding:null, selectedUpIcon:"CheckBox_selectedUpIcon", selectedDownIcon:"CheckBox_selectedDownIcon", selectedOverIcon:"CheckBox_selectedOverIcon", textFormat:null, disabledTextFormat:null, embedFonts:null, textPadding:5}; public static var createAccessibilityImplementation:Function; override protected function drawBackground():void{ } override public function get toggle():Boolean{ return (true); } override protected function initializeAccessibility():void{ if (CheckBox.createAccessibilityImplementation != null){ CheckBox.createAccessibilityImplementation(this); }; } override public function set toggle(_arg1:Boolean):void{ throw (new Error("Warning: You cannot change a CheckBox's toggle.")); } override public function get autoRepeat():Boolean{ return (false); } override public function set autoRepeat(_arg1:Boolean):void{ } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = (background.x - _local2); uiFocusRect.y = (background.y - _local2); uiFocusRect.width = (background.width + (_local2 << 1)); uiFocusRect.height = (background.height + (_local2 << 1)); }; } override protected function configUI():void{ super.configUI(); super.toggle = true; var _local1:Shape = new Shape(); var _local2:Graphics = _local1.graphics; _local2.beginFill(0, 0); _local2.drawRect(0, 0, 100, 100); _local2.endFill(); background = (_local1 as DisplayObject); addChildAt(background, 0); } override protected function drawLayout():void{ super.drawLayout(); var _local1:Number = Number(getStyleValue("textPadding")); switch (_labelPlacement){ case ButtonLabelPlacement.RIGHT: icon.x = _local1; textField.x = (icon.x + (icon.width + _local1)); background.width = ((textField.x + textField.width) + _local1); background.height = (Math.max(textField.height, icon.height) + (_local1 * 2)); break; case ButtonLabelPlacement.LEFT: icon.x = ((width - icon.width) - _local1); textField.x = (((width - icon.width) - (_local1 * 2)) - textField.width); background.width = ((textField.width + icon.width) + (_local1 * 3)); background.height = (Math.max(textField.height, icon.height) + (_local1 * 2)); break; case ButtonLabelPlacement.TOP: case ButtonLabelPlacement.BOTTOM: background.width = (Math.max(textField.width, icon.width) + (_local1 * 2)); background.height = ((textField.height + icon.height) + (_local1 * 3)); break; }; background.x = Math.min((icon.x - _local1), (textField.x - _local1)); background.y = Math.min((icon.y - _local1), (textField.y - _local1)); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 120
//Label (fl.controls.Label) package fl.controls { import fl.core.*; import flash.text.*; import fl.events.*; public class Label extends UIComponent { protected var _savedHTML:String; protected var _html:Boolean;// = false public var textField:TextField; protected var actualHeight:Number; protected var actualWidth:Number; protected var defaultLabel:String;// = "Label" private static var defaultStyles:Object = {textFormat:null, embedFonts:false}; public function Label(){ text = defaultLabel; actualWidth = _width; actualHeight = _height; } override public function setSize(_arg1:Number, _arg2:Number):void{ actualWidth = _arg1; actualHeight = _arg2; super.setSize(_arg1, _arg2); } override protected function draw():void{ var _local1:Object; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawTextFormat(); _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; if (textField.autoSize != TextFieldAutoSize.NONE){ invalidate(InvalidationType.SIZE, false); }; }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } override public function get width():Number{ if (((!((textField.autoSize == TextFieldAutoSize.NONE))) && (!(wordWrap)))){ return (_width); }; return (actualWidth); } public function get condenseWhite():Boolean{ return (textField.condenseWhite); } protected function drawLayout():void{ var _local2:Number; var _local3:Number; var _local1:Boolean; textField.width = width; textField.height = height; if (textField.autoSize != TextFieldAutoSize.NONE){ _local2 = textField.width; _local3 = textField.height; _local1 = ((!((_width == _local2))) || (!((_height == _local3)))); _width = _local2; _height = _local3; switch (textField.autoSize){ case TextFieldAutoSize.CENTER: textField.x = ((actualWidth / 2) - (textField.width / 2)); break; case TextFieldAutoSize.LEFT: textField.x = 0; break; case TextFieldAutoSize.RIGHT: textField.x = -((textField.width - actualWidth)); break; }; } else { textField.width = actualWidth; textField.height = actualHeight; textField.x = 0; }; if (_local1){ dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, true)); }; } public function get autoSize():String{ return (textField.autoSize); } override public function set width(_arg1:Number):void{ actualWidth = _arg1; super.width = _arg1; } public function get selectable():Boolean{ return (textField.selectable); } public function set condenseWhite(_arg1:Boolean):void{ textField.condenseWhite = _arg1; if (textField.autoSize != TextFieldAutoSize.NONE){ invalidate(InvalidationType.SIZE); }; } public function set text(_arg1:String):void{ if (_arg1 == text){ return; }; if (((componentInspectorSetting) && ((_arg1 == defaultLabel)))){ return; }; _html = false; textField.text = _arg1; if (textField.autoSize != TextFieldAutoSize.NONE){ invalidate(InvalidationType.SIZE); }; } override protected function configUI():void{ super.configUI(); textField = new TextField(); addChild(textField); textField.type = TextFieldType.DYNAMIC; textField.selectable = false; textField.wordWrap = false; } public function set autoSize(_arg1:String):void{ textField.autoSize = _arg1; invalidate(InvalidationType.SIZE); } override public function get height():Number{ if (((!((textField.autoSize == TextFieldAutoSize.NONE))) && (wordWrap))){ return (_height); }; return (actualHeight); } public function set wordWrap(_arg1:Boolean):void{ textField.wordWrap = _arg1; if (textField.autoSize != TextFieldAutoSize.NONE){ invalidate(InvalidationType.SIZE); }; } public function set selectable(_arg1:Boolean):void{ textField.selectable = _arg1; } public function get text():String{ return (textField.text); } protected function drawTextFormat():void{ var _local2:Object; var _local1:TextFormat = (getStyleValue("textFormat") as TextFormat); if (_local1 == null){ _local2 = UIComponent.getStyleDefinition(); _local1 = (enabled) ? (_local2.defaultTextFormat as TextFormat) : (_local2.defaultDisabledTextFormat as TextFormat); }; textField.defaultTextFormat = _local1; textField.setTextFormat(_local1); if (((_html) && (!((_savedHTML == null))))){ htmlText = _savedHTML; }; } public function get wordWrap():Boolean{ return (textField.wordWrap); } public function set htmlText(_arg1:String):void{ if (_arg1 == htmlText){ return; }; if (((componentInspectorSetting) && ((_arg1 == "")))){ return; }; _html = true; _savedHTML = _arg1; textField.htmlText = _arg1; if (textField.autoSize != TextFieldAutoSize.NONE){ invalidate(InvalidationType.SIZE); }; } public function get htmlText():String{ return (textField.htmlText); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 121
//LabelButton (fl.controls.LabelButton) package fl.controls { import flash.display.*; import fl.core.*; import flash.text.*; import flash.events.*; 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 122
//TextInput (fl.controls.TextInput) package fl.controls { import flash.display.*; import fl.core.*; import flash.text.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.ui.*; public class TextInput extends UIComponent implements IFocusManagerComponent { protected var _html:Boolean;// = false protected var background:DisplayObject; protected var _savedHTML:String; protected var _editable:Boolean;// = true public var textField:TextField; private static var defaultStyles:Object = {upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:0, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function set alwaysShowSelection(_arg1:Boolean):void{ textField.alwaysShowSelection = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; updateTextFieldType(); } public function get imeMode():String{ return (_imeMode); } protected function handleChange(_arg1:Event):void{ _arg1.stopPropagation(); dispatchEvent(new Event(Event.CHANGE, true)); } public function set imeMode(_arg1:String):void{ _imeMode = _arg1; } protected function setEmbedFont(){ var _local1:Object = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } protected function drawLayout():void{ var _local1:Number = Number(getStyleValue("textPadding")); if (background != null){ background.width = width; background.height = height; }; textField.width = (width - (2 * _local1)); textField.height = (height - (2 * _local1)); textField.x = (textField.y = _local1); } public function set condenseWhite(_arg1:Boolean):void{ textField.condenseWhite = _arg1; } public function get textWidth():Number{ return (textField.textWidth); } override protected function focusOutHandler(_arg1:FocusEvent):void{ super.focusOutHandler(_arg1); if (editable){ setIMEMode(false); }; } override public function setFocus():void{ stage.focus = textField; } public function set displayAsPassword(_arg1:Boolean):void{ textField.displayAsPassword = _arg1; } protected function drawBackground():void{ var _local1:DisplayObject = background; var _local2:String = (enabled) ? "upSkin" : "disabledSkin"; background = getDisplayObjectInstance(getStyleValue(_local2)); if (background == null){ return; }; addChildAt(background, 0); if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){ removeChild(_local1); }; } public function get text():String{ return (textField.text); } public function set maxChars(_arg1:int):void{ textField.maxChars = _arg1; } public function set horizontalScrollPosition(_arg1:int):void{ textField.scrollH = _arg1; } override protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((((_arg1 == textField)) || (super.isOurFocus(_arg1)))); } public function get textHeight():Number{ return (textField.textHeight); } public function get restrict():String{ return (textField.restrict); } public function get alwaysShowSelection():Boolean{ return (textField.alwaysShowSelection); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ var _local1:Object; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawTextFormat(); drawBackground(); _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } public function set editable(_arg1:Boolean):void{ _editable = _arg1; updateTextFieldType(); } public function setSelection(_arg1:int, _arg2:int):void{ textField.setSelection(_arg1, _arg2); } public function get condenseWhite():Boolean{ return (textField.condenseWhite); } public function get displayAsPassword():Boolean{ return (textField.displayAsPassword); } public function get selectionBeginIndex():int{ return (textField.selectionBeginIndex); } override protected function configUI():void{ super.configUI(); tabChildren = true; textField = new TextField(); addChild(textField); updateTextFieldType(); textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true); textField.addEventListener(Event.CHANGE, handleChange, false, 0, true); textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true); } public function get maxChars():int{ return (textField.maxChars); } public function set text(_arg1:String):void{ textField.text = _arg1; _html = false; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); } protected function updateTextFieldType():void{ textField.type = (((enabled) && (editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC; textField.selectable = enabled; } protected function handleKeyDown(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.ENTER){ dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true)); }; } public function get horizontalScrollPosition():int{ return (textField.scrollH); } public function get selectionEndIndex():int{ return (textField.selectionEndIndex); } public function get editable():Boolean{ return (_editable); } public function get maxHorizontalScrollPosition():int{ return (textField.maxScrollH); } public function appendText(_arg1:String):void{ textField.appendText(_arg1); } 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(); if (_html){ textField.htmlText = _savedHTML; }; } public function get length():int{ return (textField.length); } public function set htmlText(_arg1:String):void{ if (_arg1 == ""){ text = ""; return; }; _html = true; _savedHTML = _arg1; textField.htmlText = _arg1; invalidate(InvalidationType.DATA); invalidate(InvalidationType.STYLES); } protected function handleTextInput(_arg1:TextEvent):void{ _arg1.stopPropagation(); dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text)); } public function set restrict(_arg1:String):void{ if (((componentInspectorSetting) && ((_arg1 == "")))){ _arg1 = null; }; textField.restrict = _arg1; } public function getLineMetrics(_arg1:int):TextLineMetrics{ return (textField.getLineMetrics(_arg1)); } override public function drawFocus(_arg1:Boolean):void{ if (focusTarget != null){ focusTarget.drawFocus(_arg1); return; }; super.drawFocus(_arg1); } override protected function focusInHandler(_arg1:FocusEvent):void{ if (_arg1.target == this){ stage.focus = textField; }; var _local2:IFocusManager = focusManager; if (((editable) && (_local2))){ _local2.showFocusIndicator = true; if (((textField.selectable) && ((textField.selectionBeginIndex == textField.selectionBeginIndex)))){ setSelection(0, textField.length); }; }; super.focusInHandler(_arg1); if (editable){ setIMEMode(true); }; } public function get htmlText():String{ return (textField.htmlText); } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 123
//ComponentShim (fl.core.ComponentShim) package fl.core { import flash.display.*; public dynamic class ComponentShim extends MovieClip { } }//package fl.core
Section 124
//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 125
//UIComponent (fl.core.UIComponent) package fl.core { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.utils.*; import fl.managers.*; import fl.events.*; 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 126
//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 127
//FocusManager (fl.managers.FocusManager) package fl.managers { import fl.controls.*; import flash.display.*; import fl.core.*; import flash.text.*; import flash.events.*; 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 128
//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 129
//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 130
//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 131
//StyleManager (fl.managers.StyleManager) package fl.managers { import fl.core.*; import flash.text.*; 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 132
//DifficultyEnum (gamecode.DifficultyEnum) package gamecode { public class DifficultyEnum { public static const DIFFICULTY_CHILD:int = 0; public static const DIFFICULTY_EASY:int = 1; public static const DIFFICULTY_MEDIUM:int = 2; public static const DIFFICULTY_HARD:int = 3; public static const DIFFICULTY_EVIL:int = 4; public static const DIFFICULTY_MAX:int = 5; } }//package gamecode
Section 133
//GameConstants (gamecode.GameConstants) package gamecode { public class GameConstants { public static const BOARD_WIDTH:int = 9; public static const BOARD_HEIGHT:int = 13; public static const BOARD_PIXEL_WIDTH:int = 320; public static const BOARD_PIXEL_HEIGHT:int = 480; public static const BORDER_PIXELS:int = 4; public static const SNOOD_WIDTH:int = 32; public static const SNOOD_HEIGHT:int = 32; public static const SNOOD_WIDTH2:int = 16; public static const SNOOD_HEIGHT2:int = 16; public static const SPACE_BETWEEN_SNOODS:int = 1; public static const EXPLOSION_FRAMES:int = 30; } }//package gamecode
Section 134
//GameLive (gamecode.GameLive) package gamecode { import livecode.*; public class GameLive { private var gameManager:GameManager;// = null private var smartFoxManager:SmartFoxManager;// = null private var energyTarget:Number;// = 0 private var boardUpdate:String;// = null public function GameLive(_arg1:GameManager, _arg2:SmartFoxManager){ gameManager = _arg1; if (_arg2 != null){ smartFoxManager = _arg2; } else { smartFoxManager = SmartFoxManager.Instance; }; smartFoxManager.handleBoardUpdate = this.handleBoardUpdate; smartFoxManager.handledAddSnoodToLobMessage = this.handledAddSnoodToLobMessage; smartFoxManager.handleGameEndedMessage = this.handleGameEndedMessage; smartFoxManager.sendBoardUpdate = this.sendBoardUpdate; } public function sendBoardUpdate():void{ var _local6:String; var _local7:int; var _local8:String; var _local11:int; var _local1:GameplayManager = gameManager.gameplayManagerArray[0]; var _local2:GameStats = gameManager.gameStats; var _local3:Gun = _local1.gun; var _local4:SnoodBoard = _local1.snoodBoard; var _local5:String = _local4.packedSnoodBuffer; var _local9:Array = ["1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";"]; var _local10:int; _local11 = 0; while (_local11 < _local9.length) { _local10 = Math.max(_local10, _local5.lastIndexOf(_local9[_local11])); _local11++; }; _local6 = _local5.slice(0, (_local10 + 1)); _local7 = (_local3.energyTarget * 10000); energyTarget = _local7; energyTarget = (energyTarget / 100); _local8 = smartFoxManager.createPacket(SmartFoxManager.PACKET_TYPE_BOARD_UPDATE, ((_local6 + ",") + energyTarget)); if (smartFoxManager.opponentSmartFoxManagerVersion > 0){ _local8 = (_local8 + ("," + _local2.score)); _local8 = (_local8 + ("," + _local2.snoodsUsed)); _local8 = (_local8 + ("," + _local3.snoodOnDeck.type)); _local8 = (_local8 + ("," + _local3.snoodNextToFire.type)); _local8 = (_local8 + ("," + _local1.lastGunAngle)); _local8 = (_local8 + ("," + _local1.lastFiredType)); _local8 = (_local8 + ("," + _local4.snoodBeingLobbedRowCol.x)); _local8 = (_local8 + ("," + _local4.snoodBeingLobbedRowCol.y)); _local8 = (_local8 + ("," + (_local1.lobbingSnood) ? 1 : 0)); }; smartFoxManager.sendPublicMessage(_local8); _local1.lastFiredType = SnoodTypeEnum.SNOOD_TYPE_INVALID; _local1.lobbingSnood = false; } public function handleBoardUpdate(_arg1:String):void{ var _local5:int; var _local6:Array; var _local2:GameplayManager = gameManager.gameplayManagerArray[1]; var _local3:SnoodBoard = _local2.snoodBoard; var _local4:Gun = _local2.gun; _local6 = _arg1.split(","); if (smartFoxManager.opponentSmartFoxManagerVersion > 0){ _local2.player2Queue.push([_local6[0], (Number(_local6[1]) / 100), int(_local6[2]), int(_local6[3]), int(_local6[4]), int(_local6[5]), Number(_local6[6]), int(_local6[7]), int(_local6[8]), int(_local6[9]), Boolean((_local6[10] == 1))]); } else { _local2.gun.energyTarget = (Number(_local6[1]) / 100); _local3.updateFromString(_local6[0]); }; } public function sendAddSnoodToLobMessage(_arg1:int):void{ var _local2:String; if (smartFoxManager.opponentSmartFoxManagerVersion > 0){ _local2 = smartFoxManager.createPacket(SmartFoxManager.PACKET_TYPE_SNOOB_LOB, _arg1.toString()); smartFoxManager.sendPublicMessage(_local2); } else { _local2 = smartFoxManager.createPacket(SmartFoxManager.PACKET_TYPE_SNOOB_LOB, ""); smartFoxManager.sendPublicMessage(_local2); }; } public function handledAddSnoodToLobMessage(_arg1:String):void{ var _local2:int; if (smartFoxManager.opponentSmartFoxManagerVersion > 0){ gameManager.gameplayManagerArray[1].snoodBoard.snoodsToBeSent.push(int(_arg1)); } else { _local2 = gameManager.getRandomSnoodType(gameManager.gameplayManagerArray[1].snoodRand); gameManager.gameplayManagerArray[0].snoodBoard.snoodsToBeLobbed.push(_local2); }; } public function sendGameEndedMessage():void{ var _local4:Date; if (smartFoxManager.sentGameEndedMessage == true){ return; }; if (gameManager.sentEndOfGameMessage == true){ return; }; var _local1:Boolean = gameManager.gameStats.won; sendBoardUpdate(); if (_local1){ _local4 = new Date(); gameManager.gameStats.timeStamp = _local4.time; }; if (gameManager.consoleSprite){ gameManager.consoleSprite.print(("Multiplayer: sendGameEndedMessage: timeStamp=" + gameManager.gameStats.timeStamp.toString())); }; var _local2:String = (((((((((((((_local1) ? "1" : "0" + ",") + gameManager.gameStats.score.toString(16)) + ",") + gameManager.gameStats.styleBonus.toString(16)) + ",") + gameManager.gameStats.snoodsUsed.toString(16)) + ",") + gameManager.gameStats.snoodsUsedBonus.toString(16)) + ",") + gameManager.gameStats.totalScore.toString(16)) + ",") + (_local1) ? gameManager.gameStats.timeStamp.toString(16) : "0"); var _local3:String = smartFoxManager.createPacket(SmartFoxManager.PACKET_TYPE_GAME_ENDED, _local2); smartFoxManager.sendPublicMessage(_local3); gameManager.sentEndOfGameMessage = true; smartFoxManager.sentGameEndedMessage = true; } public function handleGameEndedMessage(_arg1:String):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:uint; if (gameManager.receivedEndOfGameMessage == true){ return; }; var _local2:Array = _arg1.split(","); if (_local2.length == 7){ _local3 = parseInt(_local2[0], 16); _local4 = parseInt(_local2[1], 16); _local5 = parseInt(_local2[2], 16); _local6 = parseInt(_local2[3], 16); _local7 = parseInt(_local2[4], 16); _local8 = parseInt(_local2[5], 16); _local9 = parseInt(_local2[6], 16); gameManager.gameStats.setOpponentScoreData(_local4, _local5, _local6, _local7, _local8); if (gameManager.consoleSprite){ gameManager.consoleSprite.print(("Multiplayer: handleGameEndedMessage timeStamp=" + _local9.toString())); }; if (_local9 != 0){ gameManager.gameStats.timeStamp = _local9; }; if (_local3 == 1){ gameManager.gameStats.setWinOrLose(false); } else { gameManager.gameStats.setWinOrLose(true); }; gameManager.receivedEndOfGameMessage = true; gameManager.gameplayManagerArray[0].gunEnabled = false; smartFoxManager.opponentReadyToPlay = false; smartFoxManager.isInGame = false; smartFoxManager.isInMatch = false; }; } } }//package gamecode
Section 135
//GameManager (gamecode.GameManager) package gamecode { import flash.display.*; import flash.events.*; import com.rkg.media.*; import flash.media.*; import livecode.*; import flash.geom.*; import flash.utils.*; import com.rkg.display.*; import com.rkg.firebug.*; import flash.filters.*; public class GameManager extends MovieClip { private var lastTime:int; private var exclamationMatrix:Matrix; private var exclamation:Exclamation; public var border:Border; private var borderText:BorderText; private var borderLeftData:BitmapData; private var borderRightData:BitmapData; private var borderRightMatrix:Matrix; public var playerRect:Rectangle; public var numPlayers:int;// = 1 public var gameplayManagerArray:Array; public var starField:StarField;// = null public var gameLive:GameLive;// = null public var smartFoxManager:SmartFoxManager;// = null public var gameStats:GameStats; public var options:Options; public var puzzle:Puzzle; public var story:Story; public var snoodArt:SnoodArt; public var puzzleRand:SeededRand; public var isTimeAttackPaused:Boolean;// = false public var animationTimer:int; public var animationInterval:int; public var timeBetweenUpdates:int; public var currentElapsedTime:int; public var numGamesWithoutRestarting:int; public var demoMode:Boolean; public var playingAttractMovie:Boolean; public var playingStoryMovie:Boolean; public var playPuzzleMovie:Boolean; public var scoreAtBeginningOfThisRound:int; public var justFinishedFailingTimeAttackOrClassic:Boolean; public var sentEndOfGameMessage:Boolean;// = false public var receivedEndOfGameMessage:Boolean;// = false public var continuingFromSavedGame:Boolean;// = false private var bitmapData:BitmapData;// = null public var bitmap:Bitmap;// = null public var thumbnailDataArray:Array; public var thumbnailArray:Array; public var mouseClick:Boolean;// = false public var menuComm:Object;// = null public var soundManager:SoundManager;// = null public var consoleSprite:ConsoleSprite;// = null public function GameManager(){ exclamationMatrix = new Matrix(); exclamation = new Exclamation(); border = new Border(); borderText = new BorderText(); playerRect = new Rectangle(0, 0, 645, 500); gameplayManagerArray = []; puzzleRand = new SeededRand(); thumbnailDataArray = []; thumbnailArray = []; super(); if (stage){ soundManager = null; init(); startGame(bitmap); }; } public function init():void{ timeBetweenUpdates = 0; currentElapsedTime = 0; starField = new StarField(); gameStats = new GameStats(this); options = new Options(this); puzzle = new Puzzle(this); story = new Story(this); snoodArt = new SnoodArt(this); playingAttractMovie = false; playPuzzleMovie = false; playingStoryMovie = false; justFinishedFailingTimeAttackOrClassic = false; animationInterval = (1000 / 60); numGamesWithoutRestarting = 0; borderLeftData = new BitmapData(160, 500, false, 0); borderRightData = new BitmapData(160, 500, false, 0); borderLeftData.draw(border); borderRightData.draw(border, new Matrix(1, 0, 0, 1, (160 - 645), 0)); borderRightMatrix = new Matrix(1, 0, 0, 1, (645 - 160), 0); if (((!((menuComm == null))) && (menuComm.hasOwnProperty("onGameComplete")))){ soundManager = menuComm.soundManager; }; if (((!((menuComm == null))) && (menuComm.hasOwnProperty("consoleSprite")))){ consoleSprite = menuComm.consoleSprite; }; resize(); } function destroy(){ var _local1:GameplayManager; var _local2:BitmapData; var _local3:Bitmap; cleanup(); if (starField){ starField = null; }; while (gameplayManagerArray.length > 0) { _local1 = gameplayManagerArray.pop(); _local1.destroy(); }; while (thumbnailDataArray.length) { _local2 = thumbnailDataArray.pop(); if (_local2){ _local2.dispose(); _local2 = null; }; }; while (thumbnailArray.length) { _local3 = thumbnailArray.pop(); }; } public function setThumbnail(_arg1:int, _arg2:BitmapData):void{ var _local3:Number = Math.max((48 / _arg2.width), (48 / _arg2.height)); var _local4:Rectangle = new Rectangle(4, 4, 48, 48); var _local5:Matrix = new Matrix(_local3, 0, 0, _local3, 4, 4); var _local6:BitmapData = new BitmapData(56, 56, false, 0xFFFFFF); var _local7:Bitmap = new Bitmap(_local6); _local6.draw(_arg2, _local5, null, null, _local4, true); thumbnailDataArray[_arg1] = _local6; _local7.filters = [new DropShadowFilter()]; thumbnailArray[_arg1] = _local7; } public function setPuzzleRand(_arg1:uint):void{ var _local2:Date; if (((!((menuComm == null))) && (menuComm.hasOwnProperty("seed")))){ _arg1 = menuComm.seed; } else { _local2 = new Date(); _arg1 = _local2.time; }; puzzleRand.sSeededRand(_arg1); } public function startGame(_arg1:Bitmap):void{ var gameplayManager:GameplayManager; var seed:uint; var date:Date; var bitmapIn = _arg1; var i:int; if (((!((menuComm == null))) && (menuComm.hasOwnProperty("seed")))){ seed = menuComm.seed; } else { date = new Date(); seed = date.time; }; bitmap = bitmapIn; scoreAtBeginningOfThisRound = gameStats.score; sentEndOfGameMessage = false; receivedEndOfGameMessage = false; while (gameplayManagerArray.length > 0) { gameplayManager = gameplayManagerArray.pop(); gameplayManager.destroy(); }; if (options.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER){ numPlayers = 2; gameplayManagerArray[0] = new GameplayManager(this, 0, playerRect); gameplayManagerArray[1] = new GameplayManager(this, 1, playerRect); try { smartFoxManager = new SmartFoxManager(); gameLive = new GameLive(this, smartFoxManager); smartFoxManager.startSession(); } catch(e:Error) { trace(e.message); smartFoxManager = null; gameLive = new GameLive(this, null); }; gameplayManager = gameplayManagerArray[0]; gameplayManager.init(seed); gameplayManager = gameplayManagerArray[1]; gameplayManager.init(seed); } else { numPlayers = 1; gameplayManagerArray[0] = new GameplayManager(this, 0, playerRect); gameplayManager = gameplayManagerArray[0]; gameplayManager.init(seed); setBorderText(); }; lastTime = getTimer(); if (snoodArt){ snoodArt.destroy(); }; snoodArt = new SnoodArt(this); if (soundManager == null){ if (!hasEventListener(Event.ENTER_FRAME)){ addEventListener(Event.ENTER_FRAME, enterFrameEventHandler); }; this.stage.addEventListener(MouseEvent.CLICK, mouseClickEvent); }; } public function stopGame():void{ var _local1:int; var _local2:GameplayManager; var _local3:SeededRand = new SeededRand(); _local3.sSeededRand(menuComm.seed); menuComm.seed = _local3.seededRandInt(); if (soundManager == null){ if (hasEventListener(Event.ENTER_FRAME)){ removeEventListener(Event.ENTER_FRAME, enterFrameEventHandler); }; this.stage.removeEventListener(MouseEvent.CLICK, mouseClickEvent); }; } public function setBorderText():void{ switch (options.mode){ case GameModeEnum.GAME_MODE_CLASSIC: borderText.mode.text = "CLASSIC"; break; case GameModeEnum.GAME_MODE_PUZZLE: borderText.mode.text = "PUZZLE"; break; case GameModeEnum.GAME_MODE_TIME_ATTACK: borderText.mode.text = "TIME ATTACK"; break; case GameModeEnum.GAME_MODE_STORY: borderText.mode.text = "STORY"; break; }; } public function switchToSinglePlayer():void{ var _local1:GameplayManager; var _local2:BitmapData; var _local3:Bitmap; _local1 = gameplayManagerArray.pop(); _local1.destroy(); options.gameType = GameTypeEnum.GAME_TYPE_SINGLEPLAYER; numPlayers = 1; while (thumbnailDataArray.length) { _local2 = thumbnailDataArray.pop(); if (_local2){ _local2.dispose(); _local2 = null; }; }; while (thumbnailArray.length) { _local3 = thumbnailArray.pop(); }; _local1 = gameplayManagerArray[0]; _local1.resize(playerRect); setBorderText(); } public function playSFX(_arg1:int, _arg2:Object=null):SoundChannel{ if (soundManager != null){ return (soundManager.playByIndex(_arg1, _arg2)); }; return (null); } public function playSFXLoops(_arg1:int, _arg2:int, _arg3:Object=null):SoundChannel{ if (soundManager != null){ return (soundManager.playLoopCountByIndex(_arg1, _arg2, _arg3)); }; return (null); } public function playRandomLaugh():void{ var _local1:int = (Math.random() * 3); switch (_local1){ case 0: playSFX(SfxIdsEnum.SFX_ID_SNOOD_LAUGH_01); break; case 1: playSFX(SfxIdsEnum.SFX_ID_SNOOD_LAUGH_04); break; case 2: playSFX(SfxIdsEnum.SFX_ID_SNOOD_LAUGH_05); break; }; } public function randomNumber(_arg1:Number, _arg2:Number):Number{ var _local3:Number = (Math.random() * (_arg2 - _arg1)); return ((_arg1 + _local3)); } public function randomInt(_arg1:int, _arg2:int):int{ var _local3:int = (Math.random() * ((_arg2 - _arg1) + 1)); return ((_arg1 + _local3)); } public function seededRandomNumber(_arg1:SeededRand, _arg2:Number, _arg3:Number):Number{ var _local4:Number = (_arg1.seededRand() * (_arg3 - _arg2)); return ((_arg2 + _local4)); } public function seededRandomInt(_arg1:SeededRand, _arg2:int, _arg3:int):int{ var _local4:int = (_arg1.seededRand() * ((_arg3 - _arg2) + 1)); return ((_arg2 + _local4)); } public function getRandomSnoodType(_arg1:SeededRand):int{ return (seededRandomInt(_arg1, SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID, SnoodTypeEnum.SNOOD_TYPE_MAX_NON_MAGIC)); } function getRandomStartingMood(_arg1:SeededRand):int{ return (seededRandomInt(_arg1, SnoodMoodEnum.SNOOD_MOOD_NEUTRAL, SnoodMoodEnum.SNOOD_MOOD_SPECIAL)); } public function getRandomMagicSnoodType(_arg1:SeededRand):int{ var _local2:Number = _arg1.seededRand(); var _local3:int = SnoodTypeEnum.SNOOD_TYPE_JOKER; if (_local2 < 0.33){ _local3 = SnoodTypeEnum.SNOOD_TYPE_WILDCARD; } else { if (_local2 <= 0.66){ _local3 = SnoodTypeEnum.SNOOD_TYPE_ROCK; }; }; return (_local3); } private function returnToMenus():void{ stopGame(); if (((!((menuComm == null))) && (menuComm.hasOwnProperty("onGameComplete")))){ var _local1 = menuComm; _local1["onGameComplete"](); }; } private function cleanup():void{ if (bitmapData){ bitmapData.dispose(); bitmapData = null; }; } public function resize():void{ cleanup(); starField.resize(playerRect); if (soundManager == null){ bitmapData = new BitmapData(playerRect.width, playerRect.height, false, 0); bitmap = new Bitmap(bitmapData); bitmap.x = (-((playerRect.width - 645)) / 2); bitmap.y = (-((playerRect.height - 500)) / 2); while (numChildren > 0) { removeChildAt(0); }; addChild(bitmap); }; } public function enterFrameEventHandler(_arg1:Event):void{ var _local2:int = getTimer(); var _local3:int = (_local2 - lastTime); lastTime = _local2; update(_local3); draw(bitmapData); } public function update(_arg1:int):void{ var i:int; var gameplayManager:GameplayManager; var deltaTime = _arg1; var gameOver:Boolean; try { starField.draw(deltaTime); } catch(err) { Console.log(("[GameManager][update] starField error=" + err.message)); }; try { if (gameplayManagerArray){ i = 0; while (i < gameplayManagerArray.length) { gameplayManager = gameplayManagerArray[i]; if (gameplayManager){ gameOver = Boolean(((gameOver) || (gameplayManager.update(deltaTime)))); }; i = (i + 1); }; }; } catch(err) { Console.log(("[GameManager][update] for loop error=" + err.message)); }; if (gameOver){ if (options.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER){ if (!sentEndOfGameMessage){ gameLive.sendGameEndedMessage(); }; if (((sentEndOfGameMessage) && (((receivedEndOfGameMessage) || (((!((SmartFoxManager.Instance == null))) && ((SmartFoxManager.Instance.opponentSmartFoxManagerVersion == 0)))))))){ returnToMenus(); }; } else { returnToMenus(); }; }; mouseClick = false; } public function draw(_arg1:BitmapData):void{ var _local2:int; var _local3:GameplayManager; var _local4:SnoodBoard; if (options.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER){ _arg1.fillRect(playerRect, 0); _local2 = 0; while (_local2 < gameplayManagerArray.length) { _local3 = gameplayManagerArray[_local2]; _local3.draw(_arg1, starField, thumbnailArray[_local2]); _local2++; }; _local2 = 0; while (_local2 < gameplayManagerArray.length) { _local3 = gameplayManagerArray[_local2]; _local4 = _local3.snoodBoard; if (_local4.snoodBeingSent){ _local4.snoodBeingSent.draw(_arg1, null, playerRect); }; if ((((_local2 == 0)) || (((!((SmartFoxManager.Instance == null))) && ((SmartFoxManager.Instance.opponentSmartFoxManagerVersion > 0)))))){ if (_local4.snoodToBeLobbed){ _local4.snoodToBeLobbed.draw(_arg1, null, playerRect); exclamationMatrix.tx = _local4.snoodToBeLobbed.xPos; exclamationMatrix.ty = _local4.snoodToBeLobbed.yPos; _arg1.draw(exclamation, exclamationMatrix, null, null, null, true); }; if (_local4.snoodBeingLobbed){ _local4.snoodBeingLobbed.draw(_arg1, null, playerRect); }; }; _local2++; }; } else { _local3 = gameplayManagerArray[0]; _local3.draw(_arg1, starField, thumbnailArray[0]); _arg1.draw(borderLeftData); _arg1.draw(borderRightData, borderRightMatrix); borderText.score.text = gameStats.score.toString(); borderText.snoodsused.text = gameStats.snoodsUsed.toString(); _arg1.draw(borderText); }; } private function mouseClickEvent(_arg1:MouseEvent):void{ if (mouseEnabled){ mouseClick = true; }; } } }//package gamecode
Section 136
//GameModeEnum (gamecode.GameModeEnum) package gamecode { public class GameModeEnum { public static const GAME_MODE_CLASSIC:int = 0; public static const GAME_MODE_PUZZLE:int = 1; public static const GAME_MODE_TIME_ATTACK:int = 2; public static const GAME_MODE_STORY:int = 3; public static const GAME_MODE_MAX:int = 4; } }//package gamecode
Section 137
//GameplayManager (gamecode.GameplayManager) package gamecode { import flash.display.*; import flash.geom.*; import com.rkg.firebug.*; import flash.ui.*; public class GameplayManager { private var playfieldRect:Rectangle; public var starFieldMatrix:Matrix; public var playfieldIndex:int; public var vise:Vise;// = null public var gun:Gun;// = null public var hud:Hud;// = null public var styleBonus:StyleBonus; public var snoodBoard:SnoodBoard;// = null public var snoodGroupManager:Array; public var savedBoard:String; public var savedEnergy:Number; public var savedSnoodTypeInGun:int; public var savedSnoodTypeOnDeck:int; public var thumbnailMatrix:Matrix; public var thumbnailPoint:Point; public var gunEnabled:Boolean;// = true public var boardRand:SeededRand; public var snoodRand:SeededRand; public var lobRand:SeededRand; public var moodRand:SeededRand; public var player2Queue:Array; public var player2Command:Array;// = null public var player2State:int; public var lobbingSnood:Boolean;// = false public var lastGunAngle:Number;// = 0 public var lastFiredType:int; private var gameOver:Boolean;// = false private var gameManager:GameManager; private static const gunAngleMin:Number = -1.4307963267949; private static const gunAngleDelta:Number = 2.86; public function GameplayManager(_arg1:GameManager, _arg2:int, _arg3:Rectangle){ snoodGroupManager = []; boardRand = new SeededRand(); snoodRand = new SeededRand(); lobRand = new SeededRand(); moodRand = new SeededRand(); player2Queue = []; player2State = Player2StateEnum.PLAYER2_STATE_WAITING; lastFiredType = SnoodTypeEnum.SNOOD_TYPE_INVALID; super(); gameManager = _arg1; playfieldIndex = _arg2; snoodBoard = new SnoodBoard(gameManager, this); vise = new Vise(gameManager, this); gun = new Gun(gameManager, this); hud = new Hud(gameManager, this); styleBonus = new StyleBonus(gameManager, this); snoodBoard.boardActive = false; resize(_arg3); } public function init(_arg1:uint){ gameOver = false; gunEnabled = true; boardRand.sSeededRand(_arg1); snoodRand.sSeededRand(_arg1); lobRand.sSeededRand(_arg1); moodRand.sSeededRand(_arg1); snoodBoard.boardActive = true; lobbingSnood = false; if (gameManager.options.mode == GameModeEnum.GAME_MODE_PUZZLE){ gameManager.puzzle.loadPuzzle(gameManager.puzzle.puzzleNumber); initializeGameBoardWithPuzzle(gameManager.puzzle); } else { if ((((gameManager.options.mode == GameModeEnum.GAME_MODE_CLASSIC)) || ((gameManager.options.mode == GameModeEnum.GAME_MODE_TIME_ATTACK)))){ initializeRandomGameBoard(false); } else { if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ initUnsavedStoryBoard(); }; }; }; gun.init(); } function destroy(){ Mouse.show(); if (vise){ vise.destroy(); vise = null; }; if (gun){ gun.destroy(); gun = null; }; if (snoodBoard){ snoodBoard = null; }; if (hud){ hud = null; }; if (styleBonus){ styleBonus.destroy(); styleBonus = null; }; snoodGroupManager = []; } public function update(_arg1:int):Boolean{ var interp:Number; var deltaTime = _arg1; var msx:Number = gameManager.stage.mouseX; var stageWidth:Number = gameManager.stage.stageWidth; if (playfieldIndex == 0){ try { interp = (((msx / stageWidth) * 2) - 0.5); interp = Math.min(Math.max(0, interp), 1); gun.gunAngle = (gunAngleMin + (gunAngleDelta * interp)); if (((gunEnabled) && (gameManager.mouseClick))){ gun.fireSnood(); }; } catch(err) { Console.log(("[GamePlayManager][update] 1 error=" + err.message)); }; } else { if (player2State){ switch (player2State){ case Player2StateEnum.PLAYER2_STATE_WAITING: if (player2Queue.length > 0){ player2Command = player2Queue.shift(); player2State = Player2StateEnum.PLAYER2_STATE_AIMING; }; break; case Player2StateEnum.PLAYER2_STATE_AIMING: if (gun.gunAngle < player2Command[6]){ gun.gunAngle = Math.min(player2Command[6], (gun.gunAngle + ((deltaTime / 1000) * Math.PI))); } else { if (gun.gunAngle > player2Command[6]){ gun.gunAngle = Math.max(player2Command[6], (gun.gunAngle - ((deltaTime / 1000) * Math.PI))); } else { if (gun.gunAngle == player2Command[6]){ if (player2Command[7] != SnoodTypeEnum.SNOOD_TYPE_INVALID){ if (player2Command[10]){ if (snoodBoard.snoodToBeLobbed != null){ snoodBoard.snoodToBeLobbed.type = player2Command[7]; snoodBoard.snoodBeingLobbedRowCol = new Point(player2Command[8], player2Command[9]); gun.justFired = false; snoodBoard.lobSnoodIfOneAvailable(); player2State = Player2StateEnum.PLAYER2_STATE_UPDATING; }; } else { if (gun.isFiringEnabled()){ gun.snoodNextToFire.type = player2Command[7]; gun.snoodOnDeck.type = player2Command[5]; gun.fireSnood(); player2State = Player2StateEnum.PLAYER2_STATE_UPDATING; }; }; } else { snoodBoard.boardChanged = true; player2State = Player2StateEnum.PLAYER2_STATE_UPDATING; }; }; }; }; break; case Player2StateEnum.PLAYER2_STATE_UPDATING: if (((((((snoodBoard.boardChanged) && (!(snoodBoard.snoodCurrentlyFalling)))) && (!((gun.snoodNextToFire == null))))) && (!((gun.snoodOnDeck == null))))){ snoodBoard.boardChanged = false; snoodBoard.updateFromString(player2Command[0]); gun.energyTarget = player2Command[1]; gameManager.gameStats.opponentScore = player2Command[2]; gameManager.gameStats.opponentSnoodsUsed = player2Command[3]; if (gun.snoodOnDeck != null){ gun.snoodOnDeck.type = player2Command[4]; }; if (gun.snoodNextToFire != null){ gun.snoodNextToFire.type = player2Command[5]; }; player2State = Player2StateEnum.PLAYER2_STATE_WAITING; }; break; }; }; }; try { gameOver = Boolean(((gameOver) || (snoodBoard.update(deltaTime)))); } catch(err) { Console.log(("[GamePlayManager][update] gameover error=" + err.message)); }; try { vise.update(deltaTime); } catch(err) { Console.log(("[GamePlayManager][update] vise error=" + err.message)); }; try { gun.update(deltaTime); } catch(err) { Console.log(("[GamePlayManager][update] gun error=" + err.message)); }; try { if (snoodBoard.snoodBeingSent){ snoodBoard.updateSnoodBeingSent(deltaTime); }; if (snoodBoard.snoodBeingLobbed){ snoodBoard.updateSnoodBeingLobbed(deltaTime); }; } catch(err) { Console.log(("[GamePlayManager][update] snoodBoard error=" + err.message)); }; try { styleBonus.update(deltaTime); } catch(err) { Console.log(("[GamePlayManager][update] styleBonus error=" + err.message)); }; try { hud.update(deltaTime); } catch(err) { Console.log(("[GamePlayManager][update] hud error=" + err.message)); }; return (gameOver); } public function draw(_arg1:BitmapData, _arg2:StarField, _arg3:Bitmap):void{ _arg1.draw(_arg2.bitmapData, starFieldMatrix); vise.draw(_arg1, playfieldRect); snoodBoard.draw(_arg1, playfieldRect); gun.draw(_arg1, playfieldRect); if (_arg3){ _arg1.draw(_arg3, thumbnailMatrix, null, null, null, true); }; styleBonus.draw(_arg1, playfieldRect); if (gameManager.options.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER){ hud.draw(_arg1, playfieldRect); }; } public function resize(_arg1:Rectangle):void{ var _local2:Number = Math.min((_arg1.width / 645), (_arg1.height / 500)); var _local3:int = (320 * _local2); var _local4:int = (480 * _local2); var _local5:Number = (_arg1.width * 0.5); var _local6:Number = (_arg1.width * 0.25); var _local7:int = ((_arg1.width - _local3) / 2); var _local8:int = (_local6 - (_local3 / 2)); var _local9:int = (_arg1.width - (_local8 + _local3)); var _local10:int = ((_arg1.height - _local4) / 2); if (gameManager.numPlayers == 1){ playfieldRect = new Rectangle(_local7, _local10, _local3, _local4); } else { if (playfieldIndex == 0){ playfieldRect = new Rectangle(_local8, _local10, _local3, _local4); } else { playfieldRect = new Rectangle(_local9, _local10, _local3, _local4); }; }; starFieldMatrix = new Matrix(1, 0, 0, 1, playfieldRect.x, playfieldRect.y); snoodBoard.resize(playfieldRect); vise.resize(playfieldRect); gun.resize(playfieldRect); styleBonus.resize(playfieldRect); hud.resize(playfieldRect); thumbnailPoint = new Point((playfieldRect.x + (282 * _local2)), (playfieldRect.y + (444 * _local2))); thumbnailMatrix = new Matrix(); thumbnailMatrix.translate(-28, -28); if (playfieldIndex == 0){ thumbnailMatrix.rotate((-(Math.PI) / 32)); } else { thumbnailMatrix.rotate((Math.PI / 32)); }; thumbnailMatrix.translate(thumbnailPoint.x, thumbnailPoint.y); } public function initUnsavedStoryBoard():void{ var _local2:int; var _local3:Boolean; var _local1:int = gameManager.story.getBoardType(); if (_local1 == 2){ snoodBoard.updateFromString(savedBoard); } else { if (_local1 == 0){ _local2 = gameManager.story.getPuzzleNumber(); } else { _local3 = gameManager.story.getMixMode(); }; if ((((_local1 == 1)) && (!(_local3)))){ initializeRandomGameBoard(false); } else { if (_local1 == 0){ gameManager.puzzle.loadPuzzle(_local2); initializeGameBoardWithPuzzle(gameManager.puzzle); } else { initializeRandomGameBoard(true); }; }; }; } public function getBoardLastRow():int{ var _local1:int; if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ if (gameManager.story.getMixMode()){ if (gameManager.story.step == 0){ _local1 = (GameConstants.BOARD_HEIGHT - 9); } else { if (gameManager.story.step == 1){ _local1 = (GameConstants.BOARD_HEIGHT - 10); } else { if (gameManager.story.step == 2){ _local1 = (GameConstants.BOARD_HEIGHT - 11); }; }; }; } else { _local1 = (GameConstants.BOARD_HEIGHT - 8); }; } else { switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_CHILD: _local1 = (GameConstants.BOARD_HEIGHT - 8); break; case DifficultyEnum.DIFFICULTY_EASY: _local1 = (GameConstants.BOARD_HEIGHT - 7); break; case DifficultyEnum.DIFFICULTY_MEDIUM: _local1 = (GameConstants.BOARD_HEIGHT - 6); break; case DifficultyEnum.DIFFICULTY_HARD: _local1 = (GameConstants.BOARD_HEIGHT - 5); break; case DifficultyEnum.DIFFICULTY_EVIL: _local1 = (GameConstants.BOARD_HEIGHT - 4); break; }; }; return (_local1); } public function initializeRandomGameBoard(_arg1:Boolean):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:Snood; var _local7:Boolean; _local2 = 0; while (_local2 < GameConstants.BOARD_HEIGHT) { _local3 = 0; while (_local3 < GameConstants.BOARD_WIDTH) { _local4 = gameManager.getRandomSnoodType(snoodRand); _local5 = gameManager.getRandomStartingMood(moodRand); if (boardRand.seededRand() < getNumbskullChance()){ _local4 = SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL; } else { if (((((!(_arg1)) && (!((_local2 == 0))))) && ((boardRand.seededRand() < getMagicSnoodChance())))){ _local4 = gameManager.getRandomMagicSnoodType(snoodRand); } else { if (boardRand.seededRand() < getSleepingSnoodChance()){ _local5 = SnoodMoodEnum.SNOOD_MOOD_ASLEEP; }; }; }; if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ if ((((gameManager.story.phase == 0)) && ((gameManager.story.step == 0)))){ _local7 = true; }; } else { if (_arg1){ _local7 = Boolean((boardRand.seededRand() < 0.5)); } else { if (gameManager.options.classicMode){ _local7 = true; }; }; }; if (_local2 < getBoardLastRow()){ _local6 = new Snood(_local4, _local5, _local7, SnoodStateEnum.SNOOD_STATE_IN_BOARD, _local2, _local3, gameManager, this); _local6.xPos = snoodBoard.getXPosition(_local3, _local2); _local6.yPos = snoodBoard.getYPosition(_local3, _local2); _local6.starterSnood = true; } else { _local6 = null; }; snoodBoard.setSnood(_local6, _local3, _local2); _local3++; }; _local2++; }; recalculateBoardLists(); snoodBoard.updateSnoodPresence(); } public function initializeGameBoardWithPuzzle(_arg1:Puzzle):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:Snood; var _local7:Boolean; _local2 = 0; while (_local2 < GameConstants.BOARD_HEIGHT) { _local3 = 0; while (_local3 < GameConstants.BOARD_WIDTH) { _local4 = _arg1.getPuzzleEntry(_local2, _local3); _local5 = gameManager.getRandomStartingMood(moodRand); if (((!((_local4 == SnoodTypeEnum.SNOOD_TYPE_INVALID))) && ((_local2 < (GameConstants.BOARD_HEIGHT - 1))))){ if (_arg1.isMagicSnoodPuzzle()){ if (_local4 == SnoodTypeEnum.SNOOD_TYPE_GEJI){ _local4 = _arg1.getReplacementMagicSnood(); }; } else { if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ if (_arg1.isSpecialStoryPuzzle()){ if (_local4 == _arg1.getStorySnoodToReplace()){ _local4 = _arg1.getReplacementStorySnood(snoodRand); _local5 = SnoodMoodEnum.SNOOD_MOOD_ASLEEP; }; }; }; }; if (((gameManager.options.classicMode) && (!((gameManager.options.mode == GameModeEnum.GAME_MODE_STORY))))){ _local7 = true; }; _local6 = new Snood(_local4, _local5, _local7, SnoodStateEnum.SNOOD_STATE_IN_BOARD, _local2, _local3, gameManager, this); _local6.xPos = snoodBoard.getXPosition(_local3, _local2); _local6.yPos = snoodBoard.getYPosition(_local3, _local2); _local6.starterSnood = true; } else { _local6 = null; }; snoodBoard.setSnood(_local6, _local3, _local2); _local3++; }; _local2++; }; recalculateBoardLists(); snoodBoard.updateSnoodPresence(); } public function updateSnoodBoardConnections():int{ var _local1:int = snoodBoard.updateConnections(); return (_local1); } public function buildBoardSnoodGroupLists():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:Snood; var _local7:Snood; var _local8:Array; var _local9:Array; var _local10:Array; var _local11:Boolean; var _local12:Array = [[], [], [], [], [], [], [], [], [], [], []]; snoodGroupManager = []; _local4 = 0; while (_local4 < GameConstants.BOARD_HEIGHT) { _local5 = 0; while (_local5 < GameConstants.BOARD_WIDTH) { _local6 = snoodBoard.getSnood(_local5, _local4); if (_local6){ if (!_local6.getSleeping()){ _local6.group = null; _local8 = _local12[(_local6.type - 1)]; _local8.push(_local6); }; }; _local5++; }; _local4++; }; snoodGroupManager = []; while (_local12.length > 0) { _local8 = _local12.shift(); while (_local8.length > 0) { _local6 = _local8.shift(); _local11 = false; _local1 = 0; while ((((_local1 < snoodGroupManager.length)) && (!(_local11)))) { _local9 = snoodGroupManager[_local1]; _local7 = _local9[0]; if (_local6.type == _local7.type){ _local2 = 0; while ((((_local2 < _local9.length)) && (!(_local11)))) { _local7 = _local9[_local2]; if (((_local6.isNeighbor(_local7)) && ((_local6.type == _local7.type)))){ _local6.group = _local9; _local9.push(_local6); _local11 = true; }; _local2++; }; }; _local1++; }; if (!_local11){ snoodGroupManager.push([_local6]); _local6.group = snoodGroupManager[(snoodGroupManager.length - 1)]; }; }; }; _local1 = 0; while (_local1 < snoodGroupManager.length) { _local9 = snoodGroupManager[_local1]; _local2 = (_local1 + 1); while (_local2 < snoodGroupManager.length) { _local10 = snoodGroupManager[_local2]; if (isNeighboringGroup(_local9, _local10, false)){ while (_local10.length > 0) { _local6 = _local10.shift(); _local6.group = _local9; _local9 = _local9.concat(_local6); }; snoodGroupManager.splice(_local2, 1); snoodGroupManager[_local1] = _local9; _local3 = 0; while (_local3 < _local9.length) { _local6 = _local9[_local3]; _local6.group = _local9; _local3++; }; } else { _local2++; }; }; _local1++; }; } public function recalculateBoardLists():int{ buildBoardSnoodGroupLists(); return (updateSnoodBoardConnections()); } public function getNumbskullChance():Number{ var _local1:Number = -1; switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_EVIL: _local1 = 0.08; break; case DifficultyEnum.DIFFICULTY_HARD: _local1 = 0.06; break; case DifficultyEnum.DIFFICULTY_CHILD: case DifficultyEnum.DIFFICULTY_EASY: case DifficultyEnum.DIFFICULTY_MEDIUM: _local1 = 0; break; }; if (_local1 == -1){ Error("GameplayManager:getNumbskullChance"); }; return (_local1); } private function getSleepingSnoodChance():Number{ var _local1:Number = -1; switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_EVIL: _local1 = 0.15; break; case DifficultyEnum.DIFFICULTY_HARD: _local1 = 0.08; break; case DifficultyEnum.DIFFICULTY_MEDIUM: _local1 = 0.04; break; case DifficultyEnum.DIFFICULTY_CHILD: case DifficultyEnum.DIFFICULTY_EASY: _local1 = 0; break; }; if (_local1 == -1){ Error("GameplayManager:getSleepingSnoodChance"); }; return (_local1); } public function getMagicSnoodChance():Number{ var _local1 = -1; if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ if (gameManager.story.getMagicSnoodsAvailable()){ _local1 = 0; }; }; if (_local1 == -1){ switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_EVIL: case DifficultyEnum.DIFFICULTY_HARD: _local1 = 0; break; case DifficultyEnum.DIFFICULTY_CHILD: _local1 = 0.02; break; case DifficultyEnum.DIFFICULTY_EASY: _local1 = 0.01; break; case DifficultyEnum.DIFFICULTY_MEDIUM: _local1 = 0.005; break; }; }; if (_local1 == -1){ Error("GameplayManager:getMagicSnoodChance"); }; return (_local1); } public function isNeighboringGroup(_arg1:Array, _arg2:Array, _arg3:Boolean):Boolean{ var i:int; var j:int; var group1 = _arg1; var group2 = _arg2; var withWildCards = _arg3; var snood1:Snood = group1[0]; var snood2:Snood = group2[0]; var returnVal:Boolean; try { if (((!((group1 == group2))) && ((((snood1.type == snood2.type)) || (((withWildCards) && ((((snood1.type == SnoodTypeEnum.SNOOD_TYPE_WILDCARD)) || ((snood2.type == SnoodTypeEnum.SNOOD_TYPE_WILDCARD)))))))))){ try { i = 0; while (i < group1.length) { snood1 = group1[i]; j = 0; while (j < group2.length) { snood2 = group2[j]; if (snood1.isNeighbor(snood2)){ return (true); }; j = (j + 1); }; i = (i + 1); }; } catch(err) { Console.log(("[GameplayManager][isNeighboringGroup] loop error=" + err.message)); }; }; } catch(err) { Console.log(("[GameplayManager][isNeighboringGroup] function error=" + err.message)); }; return (false); } public function showGroups():void{ var _local1:int; var _local2:int; var _local3:Array; var _local4:Snood; _local1 = 0; while (_local1 < snoodGroupManager.length) { trace("SnoodGroup", _local1); _local3 = snoodGroupManager[_local1]; _local2 = 0; while (_local2 < _local3.length) { _local4 = _local3[_local2]; trace("Snood", _local4.col, _local4.row, _local4.type); _local2++; }; trace(""); _local1++; }; } } }//package gamecode
Section 138
//GameStats (gamecode.GameStats) package gamecode { public class GameStats { public var snoodsUsed:int; public var score:int; public var styleBonus:int; public var snoodsTeleported:int; public var snoodsReleased:int; public var totalScore:int; public var maxStyleBonus:int; public var snoodsUsedBonus:int; public var completionBonus:int; public var previousScore:int; public var previousStyleBonus:int; public var previousTotalScore:int; public var previousSnoodsUsed:int; public var previousSnoodsUsedBonus:int; public var previousCompletionBonus:int; public var opponentScore:int; public var opponentStyleBonus:int; public var opponentSnoodsUsed:int; public var opponentSnoodsUsedBonus:int; public var opponentTotalScore:int; public var timeStamp:Number; public var won:Boolean; public var haveOpponentScore:Boolean; public var hasBeenRegistered:Boolean; public var youWonChallenge:Boolean; public var opponentWonChallenge:Boolean; private var gameManager:GameManager; public static const COMPLETION_BONUS:int = 250; public function GameStats(_arg1:GameManager){ gameManager = _arg1; startGame(); score = 0; completionBonus = 0; haveOpponentScore = false; hasBeenRegistered = false; } public function startGame():void{ timeStamp = 0; snoodsUsed = 0; styleBonus = 0; snoodsTeleported = 0; snoodsReleased = 0; maxStyleBonus = 0; } public function resetScore():void{ score = 0; totalScore = 0; } public function clearStyleBonus():void{ maxStyleBonus = 0; styleBonus = 0; } public function incrementStyleBonus(_arg1:int):void{ if (_arg1 > maxStyleBonus){ maxStyleBonus = _arg1; }; styleBonus = (styleBonus + _arg1); } public function clearPreviousStats():void{ previousScore = 0; previousStyleBonus = 0; previousSnoodsUsed = 0; previousSnoodsUsedBonus = 0; previousCompletionBonus = 0; previousTotalScore = 0; } public function resetToPreviousStats():void{ score = previousTotalScore; styleBonus = 0; snoodsUsed = 0; snoodsUsedBonus = 0; completionBonus = 0; totalScore = previousTotalScore; } public function setPreviousStats():void{ previousScore = score; previousStyleBonus = styleBonus; previousSnoodsUsed = snoodsUsed; previousSnoodsUsedBonus = snoodsUsedBonus; previousCompletionBonus = completionBonus; previousTotalScore = totalScore; } public function setScoreToPreviousTotalScore(){ score = totalScore; } public function setOpponentScoreData(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{ if (gameManager.options.gameType != GameTypeEnum.GAME_TYPE_MULTIPLAYER){ throw (new Error("GameStats.setOpponentScoreData() not multiplayer game")); }; haveOpponentScore = true; opponentScore = _arg1; opponentStyleBonus = _arg2; opponentSnoodsUsed = _arg3; opponentSnoodsUsedBonus = _arg4; opponentTotalScore = _arg5; } public function getSnoodsUsedBonus():int{ var _local1:int; switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_CHILD: _local1 = (50 - snoodsUsed); break; case DifficultyEnum.DIFFICULTY_EASY: _local1 = (60 - snoodsUsed); break; case DifficultyEnum.DIFFICULTY_MEDIUM: _local1 = (70 - snoodsUsed); break; case DifficultyEnum.DIFFICULTY_HARD: _local1 = (80 - snoodsUsed); break; case DifficultyEnum.DIFFICULTY_EVIL: _local1 = (90 - snoodsUsed); break; }; _local1 = Math.max((_local1 * 100), 100); return (_local1); } public function setWinOrLose(_arg1:Boolean):void{ if ((((((gameManager.options.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER)) && (gameManager.receivedEndOfGameMessage))) && (gameManager.sentEndOfGameMessage))){ return; }; won = _arg1; if (_arg1){ completionBonus = COMPLETION_BONUS; snoodsUsedBonus = getSnoodsUsedBonus(); } else { completionBonus = 0; snoodsUsedBonus = 0; }; totalScore = (((score + styleBonus) + snoodsUsedBonus) + completionBonus); if (gameManager.consoleSprite){ gameManager.consoleSprite.print(("setWinOrLose " + _arg1)); }; } } }//package gamecode
Section 139
//GameTypeEnum (gamecode.GameTypeEnum) package gamecode { public class GameTypeEnum { public static const GAME_TYPE_SINGLEPLAYER:int = 0; public static const GAME_TYPE_MULTIPLAYER:int = 1; public static const GAME_TYPE_CHALLENGE:int = 2; public static const GAME_TYPE_MAX:int = 3; } }//package gamecode
Section 140
//Gun (gamecode.Gun) package gamecode { import flash.display.*; import flash.events.*; import com.rkg.media.*; import flash.media.*; import flash.geom.*; import com.rkg.firebug.*; public class Gun { private var gunBackgroundData:BitmapData; private var gunBackgroundMatrix:Matrix; private var gunBackground2Data:BitmapData; private var gunBackground2Matrix:Matrix; private var gunBackground2ColorTranform:ColorTransform; public var gunForegroundData:BitmapData; public var gunForegroundMatrix:Matrix; private var gunArray:Array; public var gunPivot:Point; public var gunAngle:Number;// = 0 public var currentGun:BitmapData; public var gunMatrix:Matrix; public var gunFrame:Number;// = 0 public var gunCoverData:BitmapData; public var gunCoverMatrix:Matrix; public var deckToGunFrameCounter:int; private var SNOOD_FIRE_MAGNITUDE:Number;// = 16 private var ENERGY_FRAMERATE:Number;// = 125 private var ENERGY_INCREMENT_PER_SHOT:Number;// = 0.12 private var MINIMUM_TIME_BETWEEN_FIRINGS:int;// = 500 private var BARREL_WIDTH:Number;// = 24 private var BARREL_HEIGHT:Number;// = 48 private var GUN_ANGLE_STEP:Number;// = 0.015 private var GUN_ANGLE_MIN:Number;// = 0.14 private var GUN_ANGLE_MAX:Number;// = 3 public var SNOOD_ON_DECK_X_POSITION:Number;// = 26 public var SNOOD_ON_DECK_Y_POSITION:Number;// = 445 public var SNOOD_NEXT_TO_FIRE_X_POSITION:Number;// = 155 public var SNOOD_NEXT_TO_FIRE_Y_POSITION:Number;// = 445 private var MAX_POSITIONS_IN_TRAIL:Number;// = 1500 private var CHILD_ENERGY_VELOCITY:Number;// = 0.01 private var EASY_ENERGY_VELOCITY:Number;// = 0.02 private var MEDIUM_ENERGY_VELOCITY:Number;// = 0.03 private var HARD_ENERGY_VELOCITY:Number;// = 0.04 private var EVIL_ENERGY_VELOCITY:Number;// = 0.05 public var DECK_TO_GUN_FRAMES:int;// = 12 private var energyArray:Array; private var energyScaler:Number; private var energyFrame:Number;// = 0 private var energyAngle:Number;// = 0 public var energyAmount:Number;// = 0 public var currentEnergy:BitmapData; public var energyMatrix:Matrix; public var energyTarget:Number;// = 0 public var energyColorTransform:ColorTransform; private var top:Number; private var bottom:Number; private var left:Number; private var right:Number; private var fireTimer:int;// = 0 private var timeLastFired:int;// = 0 private var xTrail:Array; private var yTrail:Array; private var trailTotalTime:int;// = 0 private var gameManager:GameManager; private var gameplayManager:GameplayManager; private var snoodBoard:SnoodBoard; public var snoodNextToFire:Snood; public var snoodOnDeck:Snood; public var firstSnoodGottenOnDeck:Boolean; public var numBanksLastFired:int; public var justFired:Boolean; private var gunEnergySoundChannel:SoundChannel;// = null private var gunEnergyVolume025:Number; private var gunEnergyVolume100:Number; public function Gun(_arg1:GameManager, _arg2:GameplayManager){ gunBackground2ColorTranform = new ColorTransform(1, 1, 1, 0.5); gunArray = []; gunPivot = new Point(); energyArray = []; energyColorTransform = new ColorTransform(1, 0, 0, 1, 0, 0, 0, 0); xTrail = []; yTrail = []; super(); gameManager = _arg1; gameplayManager = _arg2; snoodBoard = gameplayManager.snoodBoard; gunFrame = 0; if (gameManager.continuingFromSavedGame){ energyAmount = gameplayManager.savedEnergy; energyTarget = gameplayManager.savedEnergy; } else { energyAmount = 0; energyTarget = 0; }; firstSnoodGottenOnDeck = true; timeLastFired = -1; fireTimer = 0; deckToGunFrameCounter = 0; gunAngle = 0; gunEnergyVolume025 = (SoundManager.MAX_SOUND_VOLUME * 0.25); gunEnergyVolume100 = (SoundManager.MAX_SOUND_VOLUME * 1); } public function init():void{ createInitialSnoodInGun(); createNewOnDeckSnood(); } function destroy():void{ var _local1:int; var _local2:BitmapData; if (gunBackgroundData){ gunBackgroundData.dispose(); }; if (gunBackground2Data){ gunBackground2Data.dispose(); }; if (gunForegroundData){ gunForegroundData.dispose(); }; _local1 = 0; while (_local1 < gunArray.length) { _local2 = gunArray[_local1]; if (_local2){ _local2.dispose(); }; _local1++; }; _local1 = 0; while (_local1 < energyArray.length) { _local2 = energyArray[_local1]; if (_local2){ _local2.dispose(); }; _local1++; }; } public function update(_arg1:int):void{ var sin:Number; var offset:Point; var snoodType:int; var classic:Boolean; var top:Number; var left:Number; var deltaTime = _arg1; var iEnergyFrame:int = energyFrame; var speed:Number = (deltaTime / 4000); var iGunFrame:int; fireTimer = (fireTimer + deltaTime); try { if ((((((((gameManager.options.mode == GameModeEnum.GAME_MODE_TIME_ATTACK)) && ((gameplayManager.playfieldIndex == 0)))) && (!(gameplayManager.styleBonus.styleAnimationPlaying)))) && (!(gameManager.isTimeAttackPaused)))){ energyTarget = (energyTarget + (getEnergyVelocity() * (deltaTime / 1000))); if (energyTarget > 1){ snoodBoard.pushDown(); energyTarget = 0; gameplayManager.lastGunAngle = gunAngle; gameplayManager.lastFiredType = SnoodTypeEnum.SNOOD_TYPE_INVALID; snoodBoard.boardChanged = true; }; }; } catch(err) { Console.log(("[Gun][update] error=" + err.message)); }; if (deckToGunFrameCounter > 0){ deckToGunFrameCounter--; if (deckToGunFrameCounter == 0){ snoodNextToFire = snoodOnDeck; snoodType = snoodNextToFire.type; classic = snoodNextToFire.classic; snoodNextToFire.state = SnoodStateEnum.SNOOD_STATE_IN_GUN; snoodNextToFire.xPos = SNOOD_NEXT_TO_FIRE_X_POSITION; snoodNextToFire.yPos = SNOOD_NEXT_TO_FIRE_Y_POSITION; createNewOnDeckSnood(); }; }; if (energyAmount != energyTarget){ if (energyAmount > energyTarget){ energyAmount = Math.max((energyAmount - speed), energyTarget); } else { energyAmount = Math.min((energyAmount + speed), energyTarget); }; }; if (energyAmount > 0.76){ energyAngle = ((energyAngle + (deltaTime / 250)) % (Math.PI * 2)); sin = Math.sin(energyAngle); energyColorTransform.greenMultiplier = (0.4 + (sin * 0.4)); energyColorTransform.redMultiplier = (0.9 - (sin * 0.1)); if (gunEnergySoundChannel == null){ if (energyAmount > 0.88){ gunEnergySoundChannel = gameManager.playSFX(SfxIdsEnum.SFX_ID_RED_PLASMA_WARN, {volume:gunEnergyVolume100}); } else { gunEnergySoundChannel = gameManager.playSFX(SfxIdsEnum.SFX_ID_RED_PLASMA_WARN_SOFT, {volume:gunEnergyVolume025}); }; if (gunEnergySoundChannel != null){ gunEnergySoundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundCompleteEventHandler); }; }; } else { energyAngle = (Math.PI * 1.5); energyColorTransform.redMultiplier = Math.min((energyColorTransform.redMultiplier + (1 / 60)), 1); energyColorTransform.greenMultiplier = Math.max((energyColorTransform.greenMultiplier - (1 / 60)), 0); }; currentEnergy = energyArray[iEnergyFrame]; energyFrame = ((energyFrame + (deltaTime / ENERGY_FRAMERATE)) % energyArray.length); energyMatrix.tx = (right - (energyAmount * energyScaler)); if (gunFrame > 0){ gunFrame = (gunFrame + ((deltaTime * gunArray.length) / 200)); if (gunFrame >= gunArray.length){ gunFrame = 0; }; }; iGunFrame = gunFrame; currentGun = gunArray[iGunFrame]; gunMatrix.identity(); gunMatrix.translate((-(currentGun.width) / 2), -(currentGun.height)); gunMatrix.rotate(gunAngle); gunMatrix.translate(gunPivot.x, gunPivot.y); if (snoodNextToFire){ snoodNextToFire.update(deltaTime); }; if (snoodOnDeck){ snoodOnDeck.update(deltaTime); }; if (((((((gameplayManager.gunEnabled) && (justFired))) && (isFiringEnabled()))) && ((gameplayManager.playfieldIndex == 0)))){ justFired = false; gameplayManager.snoodBoard.lobSnoodIfOneAvailable(); }; } private function onSoundCompleteEventHandler(_arg1:Event):void{ gunEnergySoundChannel = null; } public function draw(_arg1:BitmapData, _arg2:Rectangle):void{ _arg1.draw(gunBackground2Data, gunBackground2Matrix, gunBackground2ColorTranform, BlendMode.NORMAL, null, false); _arg1.draw(gunBackgroundData, gunBackgroundMatrix, null, null, null, false); _arg1.draw(currentEnergy, energyMatrix, energyColorTransform, BlendMode.ADD, _arg2, true); if (deckToGunFrameCounter){ snoodOnDeck.draw(_arg1, snoodBoard.snoodBoardMatrix, _arg2); }; _arg1.draw(gunForegroundData, gunForegroundMatrix, null, null, null, false); _arg1.draw(currentGun, gunMatrix, null, null, _arg2, true); _arg1.draw(gunCoverData, gunCoverMatrix, null, null, null, true); } public function resize(_arg1:Rectangle):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:BitmapData; var _local7:int; var _local8:int; var _local9:Point = new Point(); var _local10:BitmapData = new Energy(0x0200, 0x0100); left = _arg1.x; right = (left + _arg1.width); top = _arg1.y; bottom = (top + _arg1.height); _local5 = (_arg1.width / 320); gunBackgroundData = new BitmapData(Math.ceil((207.1 * _local5)), Math.ceil((78.8 * _local5)), true, 0); gunBackgroundMatrix = new Matrix(1, 0, 0, 1, left, (bottom - gunBackgroundData.height)); gunBackgroundData.draw(new GunBackground(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, null, null, true); gunBackground2Data = new BitmapData(Math.ceil((119 * _local5)), Math.ceil((72.8 * _local5)), false, 0); gunBackground2Matrix = new Matrix(1, 0, 0, 1, (right - gunBackground2Data.width), (bottom - gunBackground2Data.height)); gunBackground2Data.draw(new GunBackground2(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, null, null, true); gunForegroundData = new BitmapData(Math.ceil((320 * _local5)), Math.ceil((67.7 * _local5)), true, 0); gunForegroundMatrix = new Matrix(1, 0, 0, 1, left, (bottom - gunForegroundData.height)); gunForegroundData.draw(new GunForeground(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, BlendMode.NORMAL, null, true); gunArray[0] = new BitmapData(Math.ceil((99 * _local5)), Math.ceil((85.2 * _local5)), true, 0); gunArray[0].draw(new Gun0(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, null, null, true); gunArray[1] = new BitmapData(Math.ceil((99 * _local5)), Math.ceil((73 * _local5)), true, 0); gunArray[1].draw(new Gun1(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, null, null, true); gunArray[2] = new BitmapData(Math.ceil((99 * _local5)), Math.ceil((81.1 * _local5)), true, 0); gunArray[2].draw(new Gun2(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, null, null, true); gunArray[3] = new BitmapData(Math.ceil((99 * _local5)), Math.ceil((89.9 * _local5)), true, 0); gunArray[3].draw(new Gun3(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, null, null, true); gunArray[4] = new BitmapData(Math.ceil((99 * _local5)), Math.ceil((98 * _local5)), true, 0); gunArray[4].draw(new Gun4(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, null, null, true); gunPivot.x = (left + (157.7 * _local5)); gunPivot.y = (top + (444.4 * _local5)); currentGun = gunArray[0]; gunMatrix = new Matrix(); gunMatrix.translate((-(currentGun.width) / 2), -(currentGun.height)); gunMatrix.rotate(gunAngle); gunMatrix.translate(gunPivot.x, gunPivot.y); gunCoverData = new BitmapData(Math.ceil((_local5 * 62.7)), Math.ceil((_local5 * 62.7)), true, 0); gunCoverData.draw(new GunCover(), new Matrix(_local5, 0, 0, _local5, 0, 0), null, null, null, true); gunCoverMatrix = new Matrix(1, 0, 0, 1, (left + (124.2 * _local5)), (top + (413.4 * _local5))); _local7 = 0; while (_local7 < 16) { _local8 = (_local8 / 4); _local6 = new BitmapData(128, 64, true, 0); _local6.copyPixels(_local10, new Rectangle(((_local7 % 4) * 128), (_local8 * 64), 128, 64), _local9); energyArray[_local7] = _local6; _local7++; }; currentEnergy = energyArray[0]; energyScaler = (_local5 * 128); energyMatrix = new Matrix(_local5, 0, 0, _local5, right, (bottom - ((currentEnergy.height + 15) * _local5))); _local10.dispose(); } public function isFiringEnabled():Boolean{ if (((((((((((((((((((snoodBoard.snoodBeingFired) || (snoodBoard.snoodCurrentlyFalling))) || (snoodBoard.rockSnoodActive))) || (!((snoodBoard.explodingSnoodGroup.length == 0))))) || (snoodBoard.dying))) || (snoodBoard.jokerSnoodActive))) || ((energyAmount < energyTarget)))) || ((timeLastFired > (fireTimer - MINIMUM_TIME_BETWEEN_FIRINGS))))) || ((snoodNextToFire == null)))) || ((snoodOnDeck == null)))){ return (false); }; return (true); } public function getShootingTimeExpired():Boolean{ return (Boolean(((fireTimer - timeLastFired) >= trailTotalTime))); } public function getXYTrail():Point{ if (fireTimer >= timeLastFired){ Error("Gun:GetXYTrail"); }; var _local1:Number = (fireTimer - timeLastFired); var _local2:Number = Math.min((_local1 / trailTotalTime), 1); var _local3:Number = (_local2 * (xTrail.length - 1)); var _local4:int = _local3; var _local5:int = Math.min(_local4, (xTrail.length - 1)); var _local6:int = Math.min((_local4 + 1), (xTrail.length - 1)); var _local7:Point = new Point(); var _local8:Number = (_local3 - _local4); var _local9:Number = (1 - _local8); _local7.x = ((_local9 * xTrail[_local5]) + (_local8 * xTrail[_local6])); _local7.y = ((_local9 * yTrail[_local5]) + (_local8 * yTrail[_local6])); return (_local7); } public function fireSnood():void{ if (isFiringEnabled()){ gameplayManager.lastGunAngle = gunAngle; gameplayManager.lastFiredType = snoodNextToFire.type; justFired = true; snoodNextToFire.state = SnoodStateEnum.SNOOD_STATE_BEING_FIRED; getSnoodFireInfo(); snoodBoard.snoodBeingFired = snoodNextToFire; if (((!((snoodNextToFire.type == SnoodTypeEnum.SNOOD_TYPE_ROCK))) && (!((snoodNextToFire.type == SnoodTypeEnum.SNOOD_TYPE_JOKER))))){ if (gameManager.options.mode != GameModeEnum.GAME_MODE_TIME_ATTACK){ incrementEnergyPercent(ENERGY_INCREMENT_PER_SHOT); }; }; deckToGunFrameCounter = DECK_TO_GUN_FRAMES; gameManager.playSFX(SfxIdsEnum.SFX_ID_FIRE_SNOOD); gunFrame = 0.0001; if (gameplayManager.playfieldIndex == 0){ gameManager.gameStats.snoodsUsed++; }; timeLastFired = fireTimer; snoodNextToFire = null; }; } private function getSnoodFireInfo():void{ var _local5:int; var _local6:int; var _local8:int; var _local11:Point; var _local12:Snood; var _local13:Number; var _local1:Number = -((SNOOD_FIRE_MAGNITUDE * Math.cos(gunAngle))); var _local2:Number = (SNOOD_FIRE_MAGNITUDE * Math.sin(gunAngle)); var _local3:Number = SNOOD_NEXT_TO_FIRE_X_POSITION; var _local4:Number = SNOOD_NEXT_TO_FIRE_Y_POSITION; var _local7:Boolean; var _local9:Array = [-4, 4, 0]; var _local10:Array = [-4, -4, 0]; var _local14:int = GameConstants.SNOOD_WIDTH2; var _local15:int = (320 - _local14); snoodNextToFire.xPos = _local3; snoodNextToFire.yPos = _local4; snoodNextToFire.setVelocity(_local2, _local1); trailTotalTime = 0; numBanksLastFired = 0; xTrail = []; yTrail = []; while (!(_local7)) { _local8 = 0; while (_local8 < 3) { _local11 = snoodBoard.getRowCol((_local3 + _local9[_local8]), (_local4 + _local10[_local8])); _local12 = snoodBoard.getSnood(_local11.x, _local11.y); if (_local11.y < 0){ _local7 = true; } else { if ((((((_local8 == 2)) && ((_local11.y == 0)))) && ((_local12 == null)))){ _local7 = true; _local5 = _local11.y; _local6 = _local11.x; } else { if (((_local12) && (!((_local12.state == SnoodStateEnum.SNOOD_STATE_FALLING))))){ _local7 = true; } else { _local5 = _local11.y; _local6 = _local11.x; }; }; }; _local8++; }; if (!_local7){ xTrail.push(_local3); yTrail.push(_local4); trailTotalTime = (trailTotalTime + (1000 / 180)); }; _local3 = (_local3 + (_local2 / 3)); _local4 = (_local4 + (_local1 / 3)); if (_local3 < _local14){ _local13 = (_local14 - _local3); _local3 = (_local14 + _local13); _local2 = -(_local2); numBanksLastFired++; } else { if (_local3 > _local15){ _local13 = (_local15 - _local3); _local3 = (_local15 + _local13); _local2 = -(_local2); numBanksLastFired++; }; }; }; _local3 = snoodBoard.getXPosition(_local6, _local5); _local4 = snoodBoard.getYPosition(_local6, _local5); while (yTrail[(yTrail.length - 1)] <= _local4) { xTrail.pop(); yTrail.pop(); trailTotalTime = (trailTotalTime - (1000 / 180)); }; xTrail.push(_local3); yTrail.push(_local4); trailTotalTime = (trailTotalTime + (1000 / 180)); snoodBoard.setFiringDestinationCell(_local6, _local5); } public function getValidNewSnoodType():int{ var _local1:int = gameManager.getRandomSnoodType(gameplayManager.snoodRand); var _local2:int; if (snoodBoard.checkOnlyNumbskulls()){ _local1 = gameManager.getRandomSnoodType(gameplayManager.snoodRand); } else { if (!snoodBoard.getAnyTypePresent()){ _local1 = gameManager.getRandomSnoodType(gameplayManager.snoodRand); } else { while (!(snoodBoard.getIsTypePresent(_local1))) { _local2++; if (_local2 >= 100){ Error("Gun:getValidSnoodType Assert Counter >= 100"); }; _local1 = gameManager.getRandomSnoodType(gameplayManager.snoodRand); }; }; }; return (_local1); } private function createInitialSnoodInGun():void{ var _local1:Boolean; var _local2:int = getValidNewSnoodType(); if (gameManager.continuingFromSavedGame){ _local2 = gameplayManager.savedSnoodTypeInGun; }; if (gameManager.story.getMixMode()){ _local1 = Boolean((gameplayManager.snoodRand.seededRand() < 0.5)); }; if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ if ((((gameManager.story.phase == 0)) && ((gameManager.story.step == 0)))){ _local1 = true; }; } else { if (gameManager.options.classicMode){ _local1 = true; }; }; snoodNextToFire = new Snood(_local2, 0, _local1, SnoodStateEnum.SNOOD_STATE_IN_GUN, 0, 0, gameManager, gameplayManager); snoodNextToFire.xPos = SNOOD_NEXT_TO_FIRE_X_POSITION; snoodNextToFire.yPos = SNOOD_NEXT_TO_FIRE_Y_POSITION; } private function getCheeseFactor():Number{ var _local1:Number; switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_CHILD: _local1 = 0.1; break; case DifficultyEnum.DIFFICULTY_EASY: _local1 = 0.06; break; case DifficultyEnum.DIFFICULTY_MEDIUM: _local1 = 0.03; break; case DifficultyEnum.DIFFICULTY_HARD: _local1 = 0; break; case DifficultyEnum.DIFFICULTY_EVIL: _local1 = 0; break; }; return (_local1); } private function createNewOnDeckSnood():void{ var _local2:Number; var _local1:Boolean; var _local3:int = getValidNewSnoodType(); if ((((((gameManager.options.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER)) && ((gameplayManager.playfieldIndex == 1)))) && (!((gameplayManager.player2Command == null))))){ _local3 = gameplayManager.player2Command[4]; }; if (((firstSnoodGottenOnDeck) && (gameManager.continuingFromSavedGame))){ firstSnoodGottenOnDeck = false; _local3 = gameplayManager.savedSnoodTypeOnDeck; }; if (gameManager.options.mode != GameModeEnum.GAME_MODE_PUZZLE){ if (gameplayManager.snoodRand.seededRand() < getCheeseFactor()){ if (((!((gameManager.options.mode == GameModeEnum.GAME_MODE_STORY))) || (!(gameManager.story.getMixMode())))){ _local3 = gameManager.getRandomMagicSnoodType(gameplayManager.snoodRand); }; }; }; if (gameManager.story.getMixMode()){ _local1 = Boolean((gameplayManager.snoodRand.seededRand() < 0.5)); if (gameManager.story.step == 0){ _local2 = 0.1; } else { if (gameManager.story.step == 1){ _local2 = 0.083; } else { _local2 = 0.067; }; }; if (gameplayManager.snoodRand.seededRand() < _local2){ _local3 = SnoodTypeEnum.SNOOD_TYPE_ROCK; }; }; if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ if ((((gameManager.story.phase == 0)) && ((gameManager.story.step == 0)))){ _local1 = true; }; } else { if (gameManager.options.classicMode){ _local1 = true; }; }; snoodOnDeck = new Snood(_local3, 0, _local1, SnoodStateEnum.SNOOD_STATE_ON_DECK, 0, 0, gameManager, gameplayManager); snoodOnDeck.xPos = SNOOD_ON_DECK_X_POSITION; snoodOnDeck.yPos = SNOOD_ON_DECK_Y_POSITION; } private function getEnergyVelocity():Number{ var _local1:Number; switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_CHILD: _local1 = CHILD_ENERGY_VELOCITY; break; case DifficultyEnum.DIFFICULTY_EASY: _local1 = EASY_ENERGY_VELOCITY; break; case DifficultyEnum.DIFFICULTY_MEDIUM: _local1 = MEDIUM_ENERGY_VELOCITY; break; case DifficultyEnum.DIFFICULTY_HARD: _local1 = HARD_ENERGY_VELOCITY; break; case DifficultyEnum.DIFFICULTY_EVIL: _local1 = EVIL_ENERGY_VELOCITY; break; }; return (_local1); } public function incrementEnergyPercent(_arg1:Number):void{ var _local2:Number = 1; if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ if (gameManager.story.getMixMode()){ if (gameManager.story.step == 0){ _local2 = 0.5; } else { if (gameManager.story.step == 1){ _local2 = 0.75; }; }; }; }; energyTarget = (energyTarget + (_arg1 * _local2)); } public function decrementEnergyPercent(_arg1:Number):void{ var _local2:Number = 1; if (gameManager.options.mode != GameModeEnum.GAME_MODE_TIME_ATTACK){ if (gameManager.options.mode == GameModeEnum.GAME_MODE_STORY){ if (gameManager.story.getMixMode()){ if (gameManager.story.step == 0){ _local2 = 2; } else { if (gameManager.story.step == 1){ _local2 = 1.5; }; }; }; }; energyTarget = Math.max(0, (energyTarget - (_arg1 * _local2))); }; } } }//package gamecode
Section 141
//Hud (gamecode.Hud) package gamecode { import flash.display.*; import flash.geom.*; public class Hud { private const TIME_UNTIL_BOTTOM_BAR_DISAPPEARS:int = 10000; private var oldSnoodsUsed:int; private var oldScore:int; private var totalTime:int;// = 0 private var drawBottomPiece:Boolean; private var drawTopPiece:Boolean; private var gameManager:GameManager; private var gameplayManager:GameplayManager; private var hudTopPiece:HudPiece; private var hudBottomPiece:HudPiece; private var hudTopMatrix:Matrix; private var hudBottomMatrix:Matrix; public function Hud(_arg1:GameManager, _arg2:GameplayManager){ hudTopPiece = new HudPiece(); hudBottomPiece = new HudPiece(); super(); gameManager = _arg1; gameplayManager = _arg2; drawBottomPiece = true; drawTopPiece = Boolean(!((gameManager.options.mode == GameModeEnum.GAME_MODE_STORY))); oldSnoodsUsed = -1; oldScore = -1; totalTime = 0; } public function showBottomHUDAgain():void{ totalTime = 0; drawBottomPiece = true; } public function update(_arg1:int):void{ var _local2:int; var _local3:int; totalTime = (totalTime + _arg1); if (gameplayManager.playfieldIndex == 0){ _local2 = gameManager.gameStats.score; _local3 = gameManager.gameStats.snoodsUsed; } else { _local2 = gameManager.gameStats.opponentScore; _local3 = gameManager.gameStats.opponentSnoodsUsed; }; if (oldScore != _local2){ oldScore = _local2; hudTopPiece.left.text = ("Score: " + _local2); }; if (oldSnoodsUsed != _local3){ oldSnoodsUsed = _local3; hudTopPiece.right.text = ("Snoods Used: " + _local3); }; if (totalTime < TIME_UNTIL_BOTTOM_BAR_DISAPPEARS){ switch (gameManager.options.mode){ case GameModeEnum.GAME_MODE_PUZZLE: hudBottomPiece.right.text = "Type: Puzzle"; break; case GameModeEnum.GAME_MODE_STORY: hudBottomPiece.right.text = "Type: Story"; break; case GameModeEnum.GAME_MODE_TIME_ATTACK: hudBottomPiece.right.text = "Type: Attack"; break; case GameModeEnum.GAME_MODE_CLASSIC: hudBottomPiece.right.text = "Type: Classic"; break; }; if (gameManager.options.mode != GameModeEnum.GAME_MODE_STORY){ switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_CHILD: hudBottomPiece.left.text = "Difficulty: Child"; break; case DifficultyEnum.DIFFICULTY_EASY: hudBottomPiece.left.text = "Difficulty: Easy"; break; case DifficultyEnum.DIFFICULTY_MEDIUM: hudBottomPiece.left.text = "Difficulty: Medium"; break; case DifficultyEnum.DIFFICULTY_HARD: hudBottomPiece.left.text = "Difficulty: Hard"; break; case DifficultyEnum.DIFFICULTY_EVIL: hudBottomPiece.left.text = "Difficulty: Evil"; break; }; } else { hudBottomPiece.left.text = ""; }; } else { drawBottomPiece = false; }; } public function draw(_arg1:BitmapData, _arg2:Rectangle):void{ if (drawTopPiece){ _arg1.draw(hudTopPiece, hudTopMatrix, null, null, null, true); }; if (drawBottomPiece){ _arg1.draw(hudBottomPiece, hudBottomMatrix, null, null, null, true); }; } public function resize(_arg1:Rectangle):void{ var _local2:Number = (_arg1.width / 320); hudTopMatrix = new Matrix(_local2, 0, 0, _local2, _arg1.x, _arg1.y); hudBottomMatrix = new Matrix(_local2, 0, 0, _local2, _arg1.x, ((_arg1.y + _arg1.height) - (13 * _local2))); } } }//package gamecode
Section 142
//Options (gamecode.Options) package gamecode { public class Options { public var classicMode:Boolean; private var difficulty:int; private var inGameDifficulty:int; public var mode:int; public var gameType:int; private var gameManager:GameManager; public function Options(_arg1:GameManager){ gameManager = _arg1; classicMode = false; difficulty = DifficultyEnum.DIFFICULTY_MEDIUM; inGameDifficulty = DifficultyEnum.DIFFICULTY_MEDIUM; mode = GameModeEnum.GAME_MODE_CLASSIC; gameType = GameTypeEnum.GAME_TYPE_SINGLEPLAYER; } public function getDifficulty():int{ return (difficulty); } public function setDifficulty(_arg1:int):void{ difficulty = _arg1; inGameDifficulty = _arg1; } public function setInGameDifficulty(_arg1:int):void{ inGameDifficulty = _arg1; } function getInGameDifficulty():int{ switch (mode){ case GameModeEnum.GAME_MODE_CLASSIC: case GameModeEnum.GAME_MODE_TIME_ATTACK: return (Math.min((inGameDifficulty + gameManager.numGamesWithoutRestarting), DifficultyEnum.DIFFICULTY_EVIL)); case GameModeEnum.GAME_MODE_STORY: return (DifficultyEnum.DIFFICULTY_EASY); default: return (difficulty); }; } } }//package gamecode
Section 143
//Player2StateEnum (gamecode.Player2StateEnum) package gamecode { public class Player2StateEnum { public static const PLAYER2_STATE_WAITING:int = 0; public static const PLAYER2_STATE_AIMING:int = 1; public static const PLAYER2_STATE_UPDATING:int = 2; } }//package gamecode
Section 144
//Puzzle (gamecode.Puzzle) package gamecode { public class Puzzle { private var puzzleEntry:Array; public var puzzleNumber:int; public var lastMultiplayerPuzzleIndex:int; public var totalHackCounter:int;// = 0 private var gameManager:GameManager; private static const NUM_PUZZLES_PER_DIFFICULTY_IN_PUZZLE_MODE:int = 18; private static const puzzleNames:Array = ["Sunny Day", "Gated Jake", "Snood Columns", "Snood Rows", "Chandelier", "Snood Blocks", "Devils Tri", "4 Wilds 4 U", "Stalactite", "Oh Midoribe", "La Bomba", "Warship", "Choose A Side", "Gates of Heck", "Dead Flowers", "Mining 4 Gold", "Against Wall", "Bank Shot", "Off Balance", "Numbskull", "Snow Forts", "BurberSnood", "Maginot Line", "Spreadem", "Lod of Zod", "I Like Spike", "Hurricane", "Wayvee Gravee", "United Snoods", "1 Shod Zod", "Union Jake", "Wedged", "The Jack", "Midoribe Wall", "Hellz Bellz", "They All Fall", "What The Heck", "Hard Pressed", "Starfish", "Chip Away", "Fuse", "Mildreds Legs", "2 Fronts", "Rebound", "Lombard St", "Crammed In", "Great Wall", "Bombastic", "Space Invader", "Walker", "Jailcell", "Where's Zod", "Lineup", "Conundrum", "Geji Geji Geji", "Strip Mining", "HaveANiceDay", "Spelunking", "Patience", "Connect Dots", "Hang 6", "7734", "Church-o-Jake", "Jaws Of Life", "Numbskull Pie", "KrookiD", "Spiked Punch", "Game Stopper", "Widow Maker", "Hourglass", "Think Quick", "Hidden Gems", "Split Road", "Chip Away", "Crackshot", "Say Whut?", "Inverted", "Underground", "Dashed Hopes", "3VIL", "Hatchet Job", "Thread Needle", "Layer Cake", "Sumthin Fishy", "See The Light", "Ego Killer", "Oh Fudge", "Far Far Away", "End Game", "IL TORMENTO"]; private static const puzzles:Array = [["111111111", "111111111", "011111111", "111111110", "111111111", "111111110", "111111111", "111111111", "111111111", "000000000", "000000000", "000000000"], ["333333333", "333333333", "333333333", "333333333", "333333333", "333333333", "333333333", "333333333", "888800888", "800000008", "000000000", "000000000"], ["275566331", "275566331", "275566331", "275566331", "275566331", "275566331", "275566331", "275566331", "275566331", "000000000", "000000000", "000000000"], ["333333333", "777777777", "666666666", "555555555", "444444444", "222222222", "111111111", "333333333", "000000000", "000000000", "000000000", "000000000"], ["000088000", "004484400", "004388340", "043282340", "043211234", "043212340", "004322340", "004333400", "000444400", "000000000", "000000000", "000000000"], ["022556633", "225566330", "334411770", "334411770", "055772266", "557722660", "334411550", "334411550", "000000000", "000000000", "000000000", "000000000"], ["081111118", "802222208", "080666608", "800444008", "080033008", "880030088", "088000088", "888000888", "088800888", "000000000", "000000000", "000000000"], ["183888682", "183886828", "000080000", "000880000", "113386622", "505005050", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000"], ["000111000", "000110000", "000444000", "006666000", "007777700", "033333300", "002222200", "004444000", "000666000", "000770000", "000000000", "000000000"], ["777777777", "127656160", "525772615", "127277741", "573212477", "141255657", "531354147", "517164157", "000000000", "000000000", "000000000", "000000000"], ["000888800", "008111800", "008111180", "081111180", "008111180", "008111800", "000811800", "000818000", "000001010", "000001100", "000000000", "000000000"], ["066600666", "111606111", "033166133", "333161333", "033166133", "551666155", "055466455", "055444550", "005555550", "000000000", "000000000", "000000000"], ["066600111", "677808331", "067500431", "675808431", "067500431", "675808431", "067500431", "067808310", "006600110", "000000000", "000000000", "000000000"], ["011111111", "888808888", "088800888", "888000888", "088000088", "880000088", "080000008", "800000008", "000000000", "000000000", "000000000", "000000000"], ["011000000", "181003300", "011003830", "000003300", "006600000", "068600440", "006600484", "000000440", "022000000", "282000550", "022000585", "000000550"], ["000000000", "000000000", "000811800", "008888800", "000000000", "330000033", "005000050", "000000000", "000000000", "000000000", "000000000", "000000000"], ["733333331", "700000001", "700000001", "700000001", "700000001", "700000001", "700000001", "700000001", "700000001", "700000001", "700000001", "700000001"], ["000011111", "000011110", "000011111", "000888888", "000000000", "000000000", "000000000", "000000000", "888888000", "000000000", "000000000", "000000000"], ["123764512", "123764512", "512376451", "512376451", "451237645", "451237645", "645123764", "645123764", "000000000", "000000000", "000000000", "000000000"], ["000000000", "008888000", "088888880", "880880880", "080080080", "880880880", "088808880", "008888000", "008888800", "000000000", "000000000", "000000000"], ["000000100", "000080000", "003008800", "000800000", "008800070", "000008000", "060000880", "008000000", "088000005", "000000800", "000000088", "000000000"], ["363636363", "171717170", "363636363", "171717170", "363636363", "171717170", "363636363", "171717170", "000000000", "000000000", "000000000", "000000000"], ["888080888", "001111000", "000888000", "003333000", "888080888", "006666000", "000888000", "005555000", "888080888", "000000000", "000000000", "000000000"], ["000888033", "000880050", "000888000", "008888000", "008883800", "008088000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000"], ["000000000", "222222222", "000000000", "111111111", "000000000", "444444444", "000000000", "777777777", "000000000", "000000000", "000000000", "600000006"], ["757575757", "038338300", "757575757", "038338300", "757575757", "038338300", "757575757", "660000660", "040000040", "000000000", "000000000", "000000000"], ["000080000", "333333000", "005776800", "051146600", "021434120", "066411500", "008677500", "003333330", "000080000", "000000000", "000000000", "000000000"], ["033033033", "888080888", "044044044", "020222020", "011011011", "333030333", "055055055", "070777070", "000666600", "000000000", "000000000", "000000000"], ["383838880", "383836660", "383838880", "383836660", "383838880", "666666660", "888888880", "666666660", "888888880", "666666660", "000000000", "000000000"], ["080080080", "008008000", "080080080", "008668000", "808666808", "008668000", "080080080", "008008000", "080080080", "008008000", "000000000", "000000000"], ["683868386", "683863860", "038363830", "383863830", "666666666", "888868880", "363363363", "683863860", "683868386", "000000000", "000000000", "000000000"], ["088888888", "800483008", "080088008", "811080118", "080888808", "000000000", "011100111", "005000500", "000000000", "000000000", "000000000", "000000000"], ["533777335", "553773550", "566373665", "686336860", "668636866", "688118860", "680818086", "800000080", "800000008", "000000000", "000000000", "000000000"], ["434343434", "224224220", "434343434", "262626260", "262626262", "611261120", "018181818", "181818180", "018181818", "777777770", "000000000", "000000000"], ["077888770", "783333870", "780808087", "808008080", "006060600", "080440800", "080888080", "400000040", "088888880", "000000000", "000000000", "000000000"], ["880000088", "440838033", "330088066", "220000033", "330838077", "110880033", "330000055", "550000033", "330000044", "770000033", "330000011", "000000033"], ["083888838", "834080438", "064000046", "701101107", "044411444", "336616633", "066555566", "655777556", "088877888", "880000088", "000000000", "000000000"], ["882288228", "822282228", "888288288", "822282228", "833388338", "866686668", "877788778", "833383338", "080000008", "000000000", "000000000", "000000000"], ["354251451", "451456537", "625652514", "435155421", "155555554", "646555624", "621557536", "165754574", "555858855", "888000888", "000000000", "000000000"], ["830000008", "888000018", "833000888", "805000118", "840000508", "888000028", "844000888", "805000228", "800000508", "000000000", "000000000", "000000000"], ["111111111", "188888881", "182727281", "187444781", "186424681", "187444781", "882727281", "000000781", "000000081", "000000081", "000000000", "000000000"], ["088888888", "555555555", "044444444", "333333333", "011111111", "666666666", "055544555", "777727777", "026633662", "200000002", "020000002", "200000002"], ["888888881", "346526341", "065261181", "526448781", "061187581", "448750881", "087508081", "550800081", "888000081", "000000081", "000000001", "000000000"], ["022888110", "026885100", "006685500", "006885000", "000888000", "088888800", "008888800", "000880000", "000080000", "000880000", "000080000", "000000000"], ["322222222", "311136132", "742222222", "121473674", "642222222", "731575752", "462222222", "123157571", "222222222", "888888882", "000000000", "000000000"], ["888888888", "844884488", "844484448", "822882288", "833888338", "866886688", "880888088", "800000080", "000000000", "000000000", "000000000", "000000000"], ["800070008", "800000080", "088808880", "034561200", "002165430", "034561200", "002165430", "000000000", "088888880", "000000000", "000000000", "000000000"], ["333333338", "888888888", "642674211", "333333350", "888888800", "117427888", "053333333", "008888888", "888632711", "000000050", "000000000", "000000000"], ["202020202", "000000000", "010101010", "000000000", "606060606", "000000000", "030303030", "000000000", "080000008", "880080088", "000000000", "000000000"], ["084555548", "842222248", "084444448", "081111180", "081333318", "813808318", "083800838", "088000880", "067000076", "670000076", "000000000", "000000000"], ["784818583", "784818583", "784818583", "784818583", "784818583", "784818583", "784818583", "784818583", "784818583", "780000083", "070000003", "000000000"], ["811333333", "861333333", "811333333", "833333333", "833333333", "833333330", "833333333", "833333330", "888888880", "777777700", "000000000", "000000000"], ["073512640", "000000000", "088088088", "000000000", "008808800", "000000000", "088088088", "000000000", "880880880", "000000000", "000000000", "000000000"], ["244446572", "285844682", "286788582", "244414472", "288874882", "214435182", "264851442", "288136882", "022222222", "000000000", "000000000", "000000000"], ["000383000", "000880000", "000686000", "000880000", "000888000", "003883000", "000080000", "000880000", "000555000", "005885000", "008888800", "000000000"], ["081111180", "081111800", "008888800", "008888022", "330888005", "508008000", "000000000", "000000000", "000000066", "440000050", "050000000", "000000000"], ["000111000", "011111100", "010010010", "100110010", "111111111", "101111010", "010000010", "011111100", "000111000", "000000000", "000000000", "000000000"], ["000088000", "008888800", "088888888", "088888888", "000888888", "000388888", "000888888", "088888888", "008888880", "000888000", "000000000", "000000000"], ["766066066", "725252520", "700000000", "788888880", "877000888", "870000080", "877000000", "888888000", "888000000", "000000000", "000000000", "000000000"], ["000000000", "810302068", "000000000", "870808048", "000000000", "860203018", "000000000", "840808078", "000000000", "500000005", "000000000", "000000000"], ["000080000", "480880810", "080868080", "008118000", "380444087", "800880080", "000000000", "000000000", "580000086", "800000080", "000000000", "000000000"], ["021333120", "021441200", "007666700", "000000000", "008888800", "000000000", "008888800", "000000000", "000888000", "000000000", "000000000", "000000000"], ["333333333", "333333333", "037654217", "000000030", "765421763", "300000000", "317654217", "000000003", "671245673", "000000000", "000000000", "000000000"], ["888888888", "884883880", "808888808", "808888080", "808888808", "006644000", "000505000", "660000440", "050000050", "000000000", "440000066", "500000050"], ["011111111", "088888880", "020000002", "088888880", "040000004", "088888880", "070000007", "088888880", "000000000", "000000000", "000000000", "000000000"], ["200200200", "001001001", "300300300", "005005005", "600600600", "007007007", "400400400", "008008000", "000000000", "000000000", "000000000", "000000000"], ["000000000", "222288888", "000000000", "888881111", "000000000", "666688888", "000000000", "888887777", "000000000", "000000000", "400000004", "000000000"], ["811100088", "811100088", "811000088", "816888880", "816000888", "866000080", "800000000", "888888000", "000000000", "000000000", "000000000", "000000000"], ["888888888", "800800008", "855882208", "811866008", "833884408", "800800008", "880880888", "000000008", "000000008", "000000008", "000000008", "000000000"], ["008888800", "000880000", "000183000", "000880000", "000888000", "000880000", "000486000", "004886000", "008888800", "000000000", "000000000", "000000000"], ["888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "088888888", "888888888", "087633678", "800000008"], ["002088010", "888888888", "612214113", "375436572", "436727164", "724162411", "142672736", "263243176", "743476363", "000000000", "000000000", "000000000"], ["803137308", "801547080", "800564008", "800360080", "880030088", "880000880", "888000888", "880000880", "880000088", "800000080", "000000000", "000000000"], ["686838286", "643127664", "838286848", "127664312", "286848187", "664312766", "848187868", "000000000", "000000000", "000000000", "000000000", "000000000"], ["088811888", "888818888", "088800888", "838808848", "083800848", "838808848", "080800808", "880808088", "088000088", "880000088", "080000008", "800000008"], ["800000008", "804050388", "884455338", "886828188", "886425318", "884858388", "880000008", "800000088", "880000008", "800000088", "770000077", "000000000"], ["000838000", "808778080", "880848088", "808248080", "000828000", "888118888", "888858888", "008758000", "000878000", "000000000", "000000000", "000000000"], ["888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "713457621", "265000243", "100000005", "300000007", "600000006"], ["586838285", "643121564", "838285848", "124564312", "285848183", "464312455", "848381858", "000000000", "000000000", "000000000", "000000000", "000000000"], ["000088000", "008888800", "008288380", "048888840", "022211333", "858676858", "046766764", "684878486", "077111177", "684888486", "000000000", "000000000"], ["000088888", "000888888", "000388888", "088888888", "000000888", "000000145", "000000062", "000000070", "000000000", "000000000", "000000000", "000000000"], ["886681188", "868888188", "808888808", "088888800", "088888880", "088888880", "808888880", "808888808", "880888808", "880888088", "888000088", "888000888"], ["044400444", "666606666", "077700777", "555505555", "033300333", "222202222", "011100111", "444404444", "066600666", "777707777", "055500555", "333303333"], ["000000000", "110000011", "888800888", "888808888", "888800888", "888808888", "888800888", "888808888", "888800888", "888808888", "888800888", "880000088"], ["111111888", "111118888", "111168888", "118888888", "567547276", "373734520", "542412373", "235275450", "274125712", "000000000", "000000000", "000000000"], ["615336671", "315888537", "444313744", "888262888", "631663353", "135888617", "000008000", "000080000", "000008000", "000000000", "000000000", "000000000"], ["154351431", "666677770", "688888887", "531541253", "077776666", "788888886", "351425432", "666677775", "688888887", "330000044", "000000000", "000000000"], ["888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "888888888", "300888007"], ["800207778", "822000508", "801000208", "806004008", "800300448", "833000508", "807000608", "805001008", "080000118", "880000088", "088000088", "888000888"], ["000088000", "008888800", "008288380", "048888840", "022211333", "858676858", "046766764", "684878486", "077111177", "684888486", "000000000", "000000000"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["133121331", "213113120", "112313211", "102332010", "220232022", "200110020", "200010002", "000000000", "000000000", "000000000", "000000000", "000000000"], ["202020202", "030330300", "202020202", "030330300", "202020202", "030330300", "202020202", "330000330", "010000010", "000000000", "000000000", "000000000"], ["131313131", "221221221", "131313131", "202020202", "202020202", "030303030", "012121212", "121212121", "012121212", "333333333", "000000000", "000000000"], ["001626100", "243333420", "241262142", "412662140", "026010620", "010440100", "010333010", "430110340", "066242660", "000000000", "000000000", "000000000"], ["023611632", "234030432", "064000046", "201101102", "042433424", "336616633", "062144126", "644131446", "022233222", "000000000", "000000000", "000000000"], ["033666633", "162242261", "044111144", "332242233", "061133116", "344666443", "062244226", "111121111", "036633663", "300000003", "030000003", "000000000"], ["555222333", "333474555", "224664774", "411422466", "774664114", "411422466", "664774114", "422466477", "033000550", "000000000", "000000000", "000000000"], ["332244226", "311353132", "766355322", "474353744", "477422772", "474154741", "366355366", "555222333", "000000000", "000000000", "000000000", "000000000"], ["305030503", "000000000", "010201020", "000000000", "206040602", "000000000", "070676070", "000000000", "020000002", "740020047", "000000000", "000000000"], ["305353503", "000710000", "000353000", "000640000", "500535005", "000120000", "000353000", "004276000", "005353500", "000000000", "000000000", "000000000"], ["371234563", "005462000", "500171005", "500360005", "000000000", "535000535", "000000000", "350000053", "000000000", "500000005", "000000000", "000000000"], ["353535353", "110440110", "553767355", "220000220", "336633633", "550550550", "370030073", "504004050", "000040000", "000000000", "000000000", "000000000"], ["385535583", "538558355", "330888033", "855338580", "333885355", "555338333", "383888585", "555533330", "008050800", "000000000", "000000000", "000000000"], ["838533853", "855355538", "583558335", "335385853", "050305030", "838538388", "385838583", "000000000", "000000000", "000000000", "000000000", "000000000"], ["885855858", "833383338", "838555583", "838383838", "858855885", "833383338", "858855858", "000000000", "000000000", "000000000", "000000000", "000000000"], ["000060000", "360660650", "060666060", "006226000", "160777061", "600660060", "000000000", "000000000", "560000063", "600000060", "000000000", "000000000"], ["000066000", "006666600", "006566360", "067676760", "035533553", "762616267", "055772211", "636563656", "071235117", "656365636", "000000000", "000000000"], ["152371231", "666666660", "135727531", "226363622", "017717717", "666666666", "353535353", "211773775", "566000662", "000000000", "000000000", "000000000"], ["000444400", "008848800", "004244340", "048888840", "022211333", "858676858", "046766764", "684878486", "077111177", "000000000", "000000000", "000000000"], ["000022888", "000222888", "000322882", "028828222", "000000828", "000000145", "000000068", "000000070", "000000000", "000000000", "000000000", "000000000"], ["055500555", "188101881", "022500522", "388707883", "044500544", "688303886", "077500577", "188101881", "023100132", "377000773", "043100134", "000000000"], ["000088000", "528888835", "008288380", "548888845", "022211333", "868676868", "046766764", "684878486", "077111177", "000000000", "000000000", "000000000"], ["164371431", "665675770", "688888887", "531541253", "077776666", "788888886", "351425432", "666677775", "688888887", "330000044", "000000000", "000000000"], ["736828337", "213883120", "515282515", "184334810", "228262822", "548118450", "204878402", "700880007", "000000000", "000000000", "000000000", "000000000"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"], ["100000002", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "000000000", "300000004"]]; private static const childPuzzles:Array = [4, 5, 6, 12, 15]; private static const easyPuzzles:Array = [22, 26, 28, 33, 35]; private static const mediumPuzzles:Array = [42, 47, 49, 53, 54]; private static const hardPuzzles:Array = [60, 61, 62, 63, 72]; private static const evilPuzzles:Array = [76, 79, 80, 85, 87]; public function Puzzle(_arg1:GameManager){ puzzleEntry = []; super(); gameManager = _arg1; puzzleNumber = getStartingPuzzleNumber(); lastMultiplayerPuzzleIndex = -1; } public function getPuzzleName(_arg1:int):String{ if (_arg1 < 90){ return (puzzleNames[_arg1]); }; return ("Story"); } public function getCurrentPuzzleName():String{ return (getPuzzleName((puzzleNumber - 1))); } public function resetPuzzleNumber():void{ var _local1:int = gameManager.options.gameType; if ((((_local1 == GameTypeEnum.GAME_TYPE_MULTIPLAYER)) || ((_local1 == GameTypeEnum.GAME_TYPE_CHALLENGE)))){ lastMultiplayerPuzzleIndex = -1; nextMultiplayerPuzzle(); } else { puzzleNumber = getStartingPuzzleNumber(); }; } public function loadPuzzle(_arg1:int):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:String; var _local2:Array = puzzles[(_arg1 - 1)]; puzzleNumber = _arg1; if ((((puzzleNumber > 90)) || ((puzzleNumber < 1)))){ if (gameManager.consoleSprite){ gameManager.consoleSprite.print(("loadPuzzle " + puzzleNumber)); }; }; _local3 = 0; while (_local3 < 12) { _local6 = _local2[_local3]; _local4 = 0; while (_local4 < GameConstants.BOARD_WIDTH) { _local5 = ((_local3 * GameConstants.BOARD_WIDTH) + _local4); switch (_local6.charAt(_local4)){ case "0": puzzleEntry[_local5] = SnoodTypeEnum.SNOOD_TYPE_INVALID; break; case "1": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 0); break; case "2": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 1); break; case "3": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 2); break; case "4": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 3); break; case "5": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 4); break; case "6": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 5); break; case "7": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 6); break; case "8": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 7); break; case "9": puzzleEntry[_local5] = (SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID + 8); break; }; _local4++; }; _local3++; }; } public function getPuzzleEntry(_arg1:int, _arg2:int):int{ return (puzzleEntry[((_arg1 * GameConstants.BOARD_WIDTH) + _arg2)]); } public function hasNextPuzzle():Boolean{ var _local1:Boolean; var _local2:int = gameManager.options.gameType; if (_local2 == GameTypeEnum.GAME_TYPE_SINGLEPLAYER){ if ((puzzleNumber + 1) >= (getStartingPuzzleNumber() + NUM_PUZZLES_PER_DIFFICULTY_IN_PUZZLE_MODE)){ return (false); }; }; return (_local1); } public function nextPuzzle():Boolean{ var _local1:int = gameManager.options.gameType; if ((((_local1 == GameTypeEnum.GAME_TYPE_MULTIPLAYER)) || ((_local1 == GameTypeEnum.GAME_TYPE_CHALLENGE)))){ nextMultiplayerPuzzle(); return (true); }; puzzleNumber++; if (puzzleNumber >= (getStartingPuzzleNumber() + NUM_PUZZLES_PER_DIFFICULTY_IN_PUZZLE_MODE)){ return (false); }; return (true); } public function nextMultiplayerPuzzle():void{ var _local1:int; do { _local1 = (uint(gameManager.puzzleRand.seededRandInt()) % childPuzzles.length); } while (_local1 == lastMultiplayerPuzzleIndex); switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_CHILD: puzzleNumber = childPuzzles[_local1]; if (gameManager.consoleSprite){ gameManager.consoleSprite.print(((("Child = " + _local1) + " ") + puzzleNumber)); }; break; case DifficultyEnum.DIFFICULTY_EASY: puzzleNumber = easyPuzzles[_local1]; if (gameManager.consoleSprite){ gameManager.consoleSprite.print(((("Easy = " + _local1) + " ") + puzzleNumber)); }; break; case DifficultyEnum.DIFFICULTY_MEDIUM: puzzleNumber = mediumPuzzles[_local1]; if (gameManager.consoleSprite){ gameManager.consoleSprite.print(((("Medium = " + _local1) + " ") + puzzleNumber)); }; break; case DifficultyEnum.DIFFICULTY_HARD: puzzleNumber = hardPuzzles[_local1]; if (gameManager.consoleSprite){ gameManager.consoleSprite.print(((("Hard = " + _local1) + " ") + puzzleNumber)); }; break; case DifficultyEnum.DIFFICULTY_EVIL: puzzleNumber = evilPuzzles[_local1]; if (gameManager.consoleSprite){ gameManager.consoleSprite.print(((("Evil = " + _local1) + " ") + puzzleNumber)); }; break; }; lastMultiplayerPuzzleIndex = _local1; } private function getStartingPuzzleNumber():int{ switch (gameManager.options.getInGameDifficulty()){ case DifficultyEnum.DIFFICULTY_CHILD: return (1); case DifficultyEnum.DIFFICULTY_EASY: return (19); case DifficultyEnum.DIFFICULTY_MEDIUM: return (37); case DifficultyEnum.DIFFICULTY_HARD: return (55); case DifficultyEnum.DIFFICULTY_EVIL: return (73); default: Error("Puzzle:getStartingPuzzleNumber"); return (1); }; } public function puzzleIsGameOver():Boolean{ var _local1:int = getStartingPuzzleNumber(); if (puzzleNumber == (_local1 + 18)){ return (true); }; return (false); } public function isMagicSnoodPuzzle():Boolean{ switch (puzzleNumber){ case 8: case 16: case 24: case 32: case 40: case 48: case 56: case 64: case 72: case 80: case 90: case 123: case 124: case 125: return (true); }; return (false); } public function getReplacementMagicSnood():int{ var _local1:int; switch (puzzleNumber){ case 8: _local1 = SnoodTypeEnum.SNOOD_TYPE_WILDCARD; break; case 16: case 40: case 48: case 56: case 72: case 90: case 124: _local1 = SnoodTypeEnum.SNOOD_TYPE_ROCK; break; case 24: case 32: case 64: case 125: _local1 = SnoodTypeEnum.SNOOD_TYPE_JOKER; break; case 80: if ((totalHackCounter % 2)){ _local1 = SnoodTypeEnum.SNOOD_TYPE_JOKER; } else { _local1 = SnoodTypeEnum.SNOOD_TYPE_ROCK; }; totalHackCounter++; break; case 123: if (totalHackCounter == 0){ _local1 = SnoodTypeEnum.SNOOD_TYPE_WILDCARD; } else { if (totalHackCounter == 3){ _local1 = SnoodTypeEnum.SNOOD_TYPE_JOKER; } else { _local1 = SnoodTypeEnum.SNOOD_TYPE_ROCK; }; }; totalHackCounter++; break; default: Error("Puzzle:getReplacementMagicSnood"); break; }; return (_local1); } public function isSpecialStoryPuzzle():Boolean{ switch (puzzleNumber){ case 117: case 118: case 119: case 120: case 121: case 122: return (true); }; return (false); } public function getStorySnoodToReplace():int{ var _local1:int; switch (puzzleNumber){ case 117: case 118: case 119: _local1 = SnoodTypeEnum.SNOOD_TYPE_ZOD; break; case 120: _local1 = SnoodTypeEnum.SNOOD_TYPE_SPIKE; break; case 121: _local1 = SnoodTypeEnum.SNOOD_TYPE_MILDRED; break; case 122: _local1 = SnoodTypeEnum.SNOOD_TYPE_GEJI; break; }; return (_local1); } public function canAppearInPuzzle(_arg1:int):Boolean{ var _local2:Boolean; switch (puzzleNumber){ case 117: case 118: case 119: if ((((_arg1 == SnoodTypeEnum.SNOOD_TYPE_ZOD)) || ((_arg1 == SnoodTypeEnum.SNOOD_TYPE_SPIKE)))){ _local2 = false; } else { _local2 = true; }; break; }; return (_local2); } public function getReplacementStorySnood(_arg1:SeededRand):int{ var _local2:int; var _local3:Boolean; while (!(_local3)) { _local2 = gameManager.getRandomSnoodType(_arg1); if (canAppearInPuzzle(_local2)){ _local3 = true; }; }; return (_local2); } } }//package gamecode
Section 145
//SeededRand (gamecode.SeededRand) package gamecode { public class SeededRand { private var sSeededRandHigh:uint;// = 1 private var sSeededRandLow:uint; public function SeededRand(){ sSeededRandLow = (1 ^ 1231121986); super(); } public function seededRand():Number{ sSeededRandHigh = ((sSeededRandHigh << 16) + (sSeededRandHigh >>> 16)); sSeededRandHigh = (sSeededRandHigh + sSeededRandLow); sSeededRandLow = (sSeededRandLow + sSeededRandHigh); return ((sSeededRandHigh / 4294967295)); } public function seededRandInt():int{ sSeededRandHigh = ((sSeededRandHigh << 16) + (sSeededRandHigh >>> 16)); sSeededRandHigh = (sSeededRandHigh + sSeededRandLow); sSeededRandLow = (sSeededRandLow + sSeededRandHigh); return (sSeededRandHigh); } public function getCurrentSeedInt():int{ return (sSeededRandHigh); } public function sSeededRand(_arg1:uint):void{ sSeededRandHigh = _arg1; sSeededRandLow = (_arg1 ^ 1231121986); } } }//package gamecode
Section 146
//SfxIdsEnum (gamecode.SfxIdsEnum) package gamecode { public class SfxIdsEnum { public static const SFX_ID_GUN_TILT_CLICK:int = 0; public static const SFX_ID_FIRE_SNOOD:int = 1; public static const SFX_ID_SNOOD_BOUNCE:int = 2; public static const SFX_ID_SNOOD_LAND:int = 3; public static const SFX_ID_FANFARE_A:int = 4; public static const SFX_ID_FANFARE_02:int = 5; public static const SFX_ID_FANFARE_FULL:int = 6; public static const SFX_ID_FANFARE_BONUS:int = 7; public static const SFX_ID_TRANSPORT:int = 8; public static const SFX_ID_STONE_RUMBLE:int = 9; public static const SFX_ID_STONE_EXPLODE:int = 10; public static const SFX_ID_BOMB_RUMBLE:int = 11; public static const SFX_ID_BOMB_EXPLODE:int = 12; public static const SFX_ID_DRILL_PRESS:int = 13; public static const SFX_ID_ROWBUILDER:int = 14; public static const SFX_ID_WEDIED:int = 15; public static const SFX_ID_MENU_BUTTON_CLICK:int = 16; public static const SFX_ID_FIREWORKS_1:int = 17; public static const SFX_ID_TELEOUT_02:int = 18; public static const SFX_ID_TRANSITION_02:int = 19; public static const SFX_ID_ROUND_COMPLETE_03:int = 20; public static const SFX_ID_RED_PLASMA_WARN:int = 21; public static const SFX_ID_RED_PLASMA_WARN_SOFT:int = 22; public static const SFX_ID_NUMBSKULLS:int = 23; public static const SFX_ID_REVERSE_GUN:int = 24; public static const SFX_ID_RED_PLASMA_RETRACT:int = 25; public static const SFX_ID_SNOOD_LAUGH_01:int = 26; public static const SFX_ID_SNOOD_LAUGH_04:int = 27; public static const SFX_ID_SNOOD_LAUGH_05:int = 28; public static const SFX_ID_COUNTDOWN:int = 29; public static const SFX_ID_MAX:int = 30; } }//package gamecode
Section 147
//Snood (gamecode.Snood) package gamecode { import flash.display.*; import flash.geom.*; import com.rkg.firebug.*; public class Snood { public var state:int; public var type:int; public var mood:int; public var moodLocked:Boolean; public var row:int; public var col:int; public var xPos:Number; public var yPos:Number; public var xVel:Number; public var yVel:Number; public var xAcc:Number; public var yAcc:Number; public var rotAngle:Number; public var rotVel:Number; public var lobScale:Number;// = 1 public var connected:Boolean; public var starterSnood:Boolean; public var explodingTime:int; public var disintegratingTime:Number; public var spreadingID:int; public var spreadingTime:Number; public var warping:Boolean; public var starterNodeVisited:Boolean; public var blinking:Boolean; public var timeOfNextBlink:Number; public var blinkTimeToStop:Number; public var timer:int; public var classic:Boolean; public var wakeUpNextFrame:Boolean; public var numBanks:int; public var group:Array; private var gameManager:GameManager; private var gameplayManager:GameplayManager; private var snoodBoard:SnoodBoard; private static const EXPLODE_TIME:int = 300; private static const RANDOM_SNOODS:int = 1; private static const SNOOD_FORCE_PERCENT:int = 40; private static const SNOOD_FALL_VELOCITY:Number = -0.5; private static const SNOOD_FALL_ACCELERATION:Number = 0.2; private static const SHAKE_MAGNITUDE:int = 5; private static const TOTAL_DISINTEGRATION_FRAMES:int = 4; private static const DISINTEGRATION_TIME:int = 500; private static const SPREADING_TIME:int = 200; private static const MAGIC_SNOOD_Y_POS_WARP_THRESHOLD:int = 250; private static const MAGIC_SNOOD_WARP_DEST_X:int = 160; private static const MAGIC_SNOOD_WARP_DEST_Y:int = 460; private static const MAGIC_SNOOD_WARP_SPEED:Number = 20; private static const ANIMATION_FRAME_RATE:Number = 15; private static const TIME_BETWEEN_BLINKS_MIN:int = 4000; private static const TIME_BETWEEN_BLINKS_MAX:int = 20000; private static const TIME_OF_BLINK_MIN:int = 150; private static const TIME_OF_BLINK_MAX:int = 250; private static const DOUBLE_BLINK_TIME:int = 150; private static const DOUBLE_BLINK_PERCENT:Number = 0.15; private static const leftEdge:Number = 16; private static const rightEdge:Number = 304; private static const topEdge:Number = 16; private static const bottomEdge:Number = 464; public function Snood(_arg1:int, _arg2:int, _arg3:Boolean, _arg4:int, _arg5:int, _arg6:int, _arg7:GameManager, _arg8:GameplayManager){ gameManager = _arg7; gameplayManager = _arg8; snoodBoard = gameplayManager.snoodBoard; mood = _arg2; moodLocked = false; type = _arg1; state = _arg4; row = _arg5; col = _arg6; rotAngle = 0; xPos = 0; yPos = 0; xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; rotVel = 0; connected = false; explodingTime = 0; disintegratingTime = 0; spreadingTime = 0; blinking = false; timeOfNextBlink = 0; blinkTimeToStop = 0; wakeUpNextFrame = false; classic = _arg3; numBanks = 0; } function update(_arg1:int):void{ var deltaTimeFloat:Number; var distPast:Number; var deltaX:Number; var deltaY:Number; var angle:Number; var currentSnoodInSpot:Snood; var deltaTime = _arg1; try { deltaTimeFloat = (deltaTime / 16.6667); xPos = (xPos + (xVel * deltaTimeFloat)); xVel = (xVel + (xAcc * deltaTimeFloat)); if (xPos < leftEdge){ distPast = (leftEdge - xPos); xPos = (leftEdge + distPast); xVel = -(xVel); gameManager.playSFX(SfxIdsEnum.SFX_ID_SNOOD_BOUNCE); numBanks++; } else { if (xPos > rightEdge){ distPast = (xPos - rightEdge); xPos = (rightEdge - distPast); xVel = -(xVel); gameManager.playSFX(SfxIdsEnum.SFX_ID_SNOOD_BOUNCE); numBanks++; }; }; yPos = (yPos + (yVel * deltaTimeFloat)); yVel = (yVel + (yAcc * deltaTimeFloat)); rotAngle = (rotAngle + (rotVel * deltaTimeFloat)); switch (state){ case SnoodStateEnum.SNOOD_STATE_IN_BOARD: timer = (timer + deltaTime); if ((((((((mood == SnoodMoodEnum.SNOOD_MOOD_SPECIAL)) || ((mood == SnoodMoodEnum.SNOOD_MOOD_VISE_ALERT)))) || ((mood == SnoodMoodEnum.SNOOD_MOOD_HAPPY)))) || ((mood == SnoodMoodEnum.SNOOD_MOOD_ASLEEP)))){ blinking = false; } else { if ((((((((((mood == SnoodMoodEnum.SNOOD_MOOD_NEUTRAL)) || ((mood == SnoodMoodEnum.SNOOD_MOOD_ANGRY)))) || ((mood == SnoodMoodEnum.SNOOD_MOOD_WORRIED)))) || ((mood == SnoodMoodEnum.SNOOD_MOOD_SAD)))) || ((mood == SnoodMoodEnum.SNOOD_MOOD_DYING)))){ if (blinking == false){ if (timeOfNextBlink < timer){ blinking = true; blinkTimeToStop = (timer + gameManager.seededRandomInt(gameplayManager.moodRand, TIME_OF_BLINK_MIN, TIME_OF_BLINK_MAX)); }; } else { if (blinkTimeToStop < timer){ timeOfNextBlink = (timer + gameManager.seededRandomInt(gameplayManager.moodRand, TIME_BETWEEN_BLINKS_MIN, TIME_BETWEEN_BLINKS_MAX)); if (gameplayManager.moodRand.seededRand() < DOUBLE_BLINK_PERCENT){ timeOfNextBlink = (timer + DOUBLE_BLINK_TIME); }; blinking = false; }; }; } else { Error("snood:update:SnoodStateEnum.SNOOD_STATE_IN_BOARD"); }; }; break; case SnoodStateEnum.SNOOD_STATE_FALLING: if (yPos > bottomEdge){ if ((((((type == SnoodTypeEnum.SNOOD_TYPE_ROCK)) || ((type == SnoodTypeEnum.SNOOD_TYPE_JOKER)))) || ((type == SnoodTypeEnum.SNOOD_TYPE_WILDCARD)))){ if (gameplayManager.gun.deckToGunFrameCounter == 0){ gameplayManager.gun.snoodNextToFire.type = type; snoodBoard.setSnood(null, col, row); }; } else { snoodBoard.setSnood(null, col, row); }; } else { if ((((((type == SnoodTypeEnum.SNOOD_TYPE_ROCK)) || ((type == SnoodTypeEnum.SNOOD_TYPE_JOKER)))) || ((type == SnoodTypeEnum.SNOOD_TYPE_WILDCARD)))){ if ((((yPos >= MAGIC_SNOOD_Y_POS_WARP_THRESHOLD)) && (!(warping)))){ warping = true; deltaX = (MAGIC_SNOOD_WARP_DEST_X - xPos); deltaY = (MAGIC_SNOOD_WARP_DEST_Y - yPos); angle = Math.atan2(deltaY, deltaX); setVelocity((MAGIC_SNOOD_WARP_SPEED * Math.cos(angle)), (MAGIC_SNOOD_WARP_SPEED * Math.sin(angle))); xAcc = 0; yAcc = 0; gameManager.playSFX(SfxIdsEnum.SFX_ID_REVERSE_GUN); }; }; }; break; case SnoodStateEnum.SNOOD_STATE_BEING_FIRED: break; case SnoodStateEnum.SNOOD_STATE_IN_GUN: case SnoodStateEnum.SNOOD_STATE_ON_DECK: case SnoodStateEnum.SNOOD_STATE_EXPLODING: break; case SnoodStateEnum.SNOOD_STATE_ON_MINIBOARD: case SnoodStateEnum.SNOOD_STATE_BEING_LOBBED: break; case SnoodStateEnum.SNOOD_STATE_DISINTEGRATING: disintegratingTime = (disintegratingTime + deltaTime); if (disintegratingTime > DISINTEGRATION_TIME){ snoodBoard.setSnood(null, col, row); }; break; case SnoodStateEnum.SNOOD_STATE_SPREADING: spreadingTime = (spreadingTime + deltaTime); if (spreadingTime > SPREADING_TIME){ snoodBoard.setSnood(this, col, row); state = SnoodStateEnum.SNOOD_STATE_IN_BOARD; snoodBoard.spreadingSnoods[(spreadingID + 1)] = null; }; break; }; if (wakeUpNextFrame){ if (mood == SnoodMoodEnum.SNOOD_MOOD_ASLEEP){ mood = SnoodMoodEnum.SNOOD_MOOD_ANGRY; }; wakeUpNextFrame = false; }; } catch(err) { Console.log(("[Snood][update] error=" + err.message)); }; } private function smoothingTest(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ var _local4:int = _arg1; var _local5:int = _arg2; return (Boolean(((((!((_local4 == _arg1))) || (!((_local5 == _arg2))))) || (!((_arg3 == 0)))))); } public function interpolate(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return ((_arg1 + ((_arg2 - _arg1) * _arg3))); } public function draw(_arg1:BitmapData, _arg2:Matrix, _arg3:Rectangle):void{ var _local12:Array; var _local13:BitmapData; var _local14:Boolean; var _local15:Number; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 1; var _local8:int; var _local9:Array = [13, 12, 4, 3]; var _local10:Array = [0, 2, 3, 5, 7, 11, 9, 10, 12]; var _local11:Matrix = new Matrix(); if ((((((((type == SnoodTypeEnum.SNOOD_TYPE_ROCK)) && ((state == SnoodStateEnum.SNOOD_STATE_SHAKING)))) && ((col == snoodBoard.rockSnoodCol)))) && ((row == snoodBoard.rockSnoodRow)))){ _local4 = gameManager.seededRandomInt(gameplayManager.moodRand, 1, SHAKE_MAGNITUDE); _local5 = gameManager.seededRandomInt(gameplayManager.moodRand, 1, SHAKE_MAGNITUDE); }; if (type == SnoodTypeEnum.SNOOD_TYPE_ROCK){ if (state == SnoodStateEnum.SNOOD_STATE_DISINTEGRATING){ _local7 = 2; }; }; if (state == SnoodStateEnum.SNOOD_STATE_SPREADING){ _local6 = ((spreadingID * -(GameConstants.SNOOD_WIDTH)) + (spreadingID * ((GameConstants.SNOOD_WIDTH * spreadingTime) / SPREADING_TIME))); }; if (state == SnoodStateEnum.SNOOD_STATE_EXPLODING){ _local7 = ((GameConstants.EXPLOSION_FRAMES - snoodBoard.explosionFrameCounter) / GameConstants.EXPLOSION_FRAMES); }; if (state == SnoodStateEnum.SNOOD_STATE_ON_DECK){ if (!isMagic()){ if (gameplayManager.gun.deckToGunFrameCounter == 0){ xPos = gameplayManager.gun.SNOOD_ON_DECK_X_POSITION; yPos = gameplayManager.gun.SNOOD_ON_DECK_Y_POSITION; _local8 = _local9[3]; } else { _local15 = (gameplayManager.gun.deckToGunFrameCounter / gameplayManager.gun.DECK_TO_GUN_FRAMES); _local8 = Math.min(interpolate(3, 0, _local15), 3); _local8 = _local9[_local8]; xPos = interpolate(gameplayManager.gun.SNOOD_NEXT_TO_FIRE_X_POSITION, gameplayManager.gun.SNOOD_ON_DECK_X_POSITION, _local15); yPos = interpolate(gameplayManager.gun.SNOOD_NEXT_TO_FIRE_Y_POSITION, gameplayManager.gun.SNOOD_ON_DECK_Y_POSITION, _local15); }; }; }; if ((((((state == SnoodStateEnum.SNOOD_STATE_IN_BOARD)) || ((state == SnoodStateEnum.SNOOD_STATE_BEING_LOBBED)))) || ((state == SnoodStateEnum.SNOOD_STATE_ON_MINIBOARD)))){ _local8 = _local10[mood]; if (blinking){ _local8 = (_local8 + 1); }; }; if (isMagic()){ _local8 = 0; if (type == SnoodTypeEnum.SNOOD_TYPE_ROCK){ if (state == SnoodStateEnum.SNOOD_STATE_DISINTEGRATING){ _local8 = (TOTAL_DISINTEGRATION_FRAMES * (disintegratingTime / DISINTEGRATION_TIME)); if (_local8 > (TOTAL_DISINTEGRATION_FRAMES - 1)){ _local8 = (TOTAL_DISINTEGRATION_FRAMES - 1); }; }; }; }; _local12 = gameManager.snoodArt.snoodTypeArray[type]; _local13 = _local12[_local8]; if ((((state == SnoodStateEnum.SNOOD_STATE_ON_MINIBOARD)) || ((state == SnoodStateEnum.SNOOD_STATE_BEING_LOBBED)))){ _local7 = (_local7 * lobScale); _local11.translate(-(GameConstants.SNOOD_WIDTH2), -(GameConstants.SNOOD_HEIGHT2)); _local11.rotate((rotAngle / 2)); _local11.scale(_local7, _local7); _local11.translate(((xPos + _local4) + _local6), (yPos + _local5)); _local14 = smoothingTest(((xPos + _local4) + _local6), (yPos + _local5), (rotAngle / 2)); _arg1.draw(_local13, _local11, null, BlendMode.NORMAL, _arg3, _local14); } else { _local11.translate(-(GameConstants.SNOOD_WIDTH2), -(GameConstants.SNOOD_HEIGHT2)); _local11.rotate((rotAngle / 2)); _local11.scale(_local7, _local7); _local11.translate(((xPos + _local4) + _local6), (yPos + _local5)); _local11.concat(_arg2); _local14 = smoothingTest(((xPos + _local4) + _local6), (yPos + _local5), (rotAngle / 2)); _arg1.draw(_local13, _local11, null, BlendMode.NORMAL, _arg3, _local14); }; if (state == SnoodStateEnum.SNOOD_STATE_EXPLODING){ _local8 = ((snoodBoard.explosionFrameCounter * 4) / GameConstants.EXPLOSION_FRAMES); _local8 = Math.min(_local8, 3); _local11.identity(); _local11.translate(-(GameConstants.SNOOD_WIDTH2), -(GameConstants.SNOOD_WIDTH2)); _local11.rotate((rotAngle / 2)); _local11.translate(xPos, yPos); _local11.concat(_arg2); _local13 = gameManager.snoodArt.explosionArray[_local8]; _local14 = smoothingTest(xPos, yPos, (rotAngle / 2)); _arg1.draw(_local13, _local11, null, BlendMode.NORMAL, _arg3, _local14); if (snoodBoard.explosionFrameCounter >= (GameConstants.EXPLOSION_FRAMES * 0.85)){ snoodBoard.setSnood(null, col, row); }; }; } public function setRandomNewMood():void{ var _local1:int; if (!moodLocked){ _local1 = gameManager.seededRandomInt(gameplayManager.moodRand, SnoodMoodEnum.SNOOD_MOOD_NEUTRAL, SnoodMoodEnum.SNOOD_MOOD_SPECIAL); while (_local1 == mood) { _local1 = gameManager.seededRandomInt(gameplayManager.moodRand, SnoodMoodEnum.SNOOD_MOOD_NEUTRAL, SnoodMoodEnum.SNOOD_MOOD_SPECIAL); }; mood = _local1; }; } function setState(_arg1:int):void{ if (_arg1 != state){ state = _arg1; switch (state){ case SnoodStateEnum.SNOOD_STATE_FALLING: yVel = SNOOD_FALL_VELOCITY; yAcc = SNOOD_FALL_ACCELERATION; rotVel = gameManager.seededRandomNumber(gameplayManager.moodRand, (Math.PI * (10 / 180)), (Math.PI * (20 / 180))); if (gameplayManager.moodRand.seededRand() < 0.5){ rotVel = -(rotVel); }; break; case SnoodStateEnum.SNOOD_STATE_IN_BOARD: xVel = 0; yVel = 0; xAcc = 0; yAcc = 0; break; case SnoodStateEnum.SNOOD_STATE_EXPLODING: rotVel = 30; if (type != SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL){ gameManager.gameStats.snoodsTeleported++; }; break; case SnoodStateEnum.SNOOD_STATE_DISINTEGRATING: disintegratingTime = 0; break; }; }; } public function isMagic():Boolean{ return (Boolean((((((type == SnoodTypeEnum.SNOOD_TYPE_ROCK)) || ((type == SnoodTypeEnum.SNOOD_TYPE_JOKER)))) || ((type == SnoodTypeEnum.SNOOD_TYPE_WILDCARD))))); } public function getSleeping():Boolean{ return (Boolean((mood == SnoodMoodEnum.SNOOD_MOOD_ASLEEP))); } public function setSleeping():void{ mood = SnoodMoodEnum.SNOOD_MOOD_ASLEEP; } public function setVelocity(_arg1:Number, _arg2:Number):void{ xVel = _arg1; yVel = _arg2; } public function rowIsOffset(_arg1:int):Boolean{ return (Boolean(((_arg1 % 2) == 1))); } public function isNeighbor(_arg1:Snood):Boolean{ var _local2:Boolean; var _local3:int = _arg1.row; var _local4:int = _arg1.col; if (this == _arg1){ _local2 = false; } else { if (Math.abs((_local3 - row)) > 1){ _local2 = false; } else { if (Math.abs((_local4 - col)) > 1){ _local2 = false; } else { if (((!((row == _local3))) && (!((col == _local4))))){ if (rowIsOffset(row)){ if (col != (_local4 - 1)){ _local2 = false; }; } else { if (col != (_local4 + 1)){ _local2 = false; }; }; }; }; }; }; return (_local2); } } }//package gamecode
Section 148
//SnoodArt (gamecode.SnoodArt) package gamecode { import flash.display.*; import flash.geom.*; public class SnoodArt { public var snoodTypeArray:Array; public var explosionArray:Array; private var gameManager:GameManager; public function SnoodArt(_arg1:GameManager){ snoodTypeArray = [[], [], [], [], [], [], [], [], [], [], [], []]; explosionArray = []; super(); gameManager = _arg1; generateSnoods(gameManager.options.classicMode); } private function cleanup():void{ var _local1:BitmapData; var _local2:int; var _local3:Array; _local2 = 0; while (_local2 < 11) { _local3 = snoodTypeArray[_local2]; while (_local3.length > 0) { _local1 = _local3.pop(); if (_local1){ _local1.dispose(); }; }; _local2++; }; _local2 = 0; while (_local2 < 4) { _local1 = explosionArray.pop(); if (_local1){ _local1.dispose(); }; _local2++; }; } public function destroy():void{ cleanup(); } public function generateSnoods(_arg1:Boolean):void{ var _local2:Array; var _local3:BitmapData; var _local4:int; var _local5:int; var _local6:* = new Rectangle(0, 0, GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT); var _local7:Point = new Point(); var _local8:BitmapData = new SnoodsAll(0x0200, 0x0200); var _local9:BitmapData = new Explosion(128, 32); cleanup(); _local4 = SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID; while (_local4 < SnoodTypeEnum.SNOOD_TYPE_ROCK) { _local2 = snoodTypeArray[_local4]; if (_arg1){ _local6.x = ((_local4 + 7) * GameConstants.SNOOD_WIDTH); } else { _local6.x = ((_local4 - 1) * GameConstants.SNOOD_WIDTH); }; _local5 = 0; while (_local5 < 15) { _local6.y = (_local5 * GameConstants.SNOOD_HEIGHT); _local3 = new BitmapData(GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT, true, 0); _local3.copyPixels(_local8, _local6, _local7); _local2[_local5] = _local3; _local5++; }; _local4++; }; _local2 = snoodTypeArray[SnoodTypeEnum.SNOOD_TYPE_ROCK]; _local6.y = (15 * GameConstants.SNOOD_HEIGHT); _local2 = snoodTypeArray[SnoodTypeEnum.SNOOD_TYPE_ROCK]; _local4 = 0; while (_local4 < 5) { if (_arg1){ _local6.x = ((_local4 + 11) * GameConstants.SNOOD_WIDTH); } else { _local6.x = ((_local4 + 3) * GameConstants.SNOOD_WIDTH); }; _local3 = new BitmapData(GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT, true, 0); _local3.copyPixels(_local8, _local6, _local7); _local2[_local4] = _local3; _local4++; }; _local2 = snoodTypeArray[SnoodTypeEnum.SNOOD_TYPE_WILDCARD]; _local6.y = (15 * GameConstants.SNOOD_HEIGHT); if (_arg1){ _local6.x = (9 * GameConstants.SNOOD_WIDTH); } else { _local6.x = (1 * GameConstants.SNOOD_WIDTH); }; _local3 = new BitmapData(GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT, true, 0); _local3.copyPixels(_local8, _local6, _local7); _local2[0] = _local3; _local2 = snoodTypeArray[SnoodTypeEnum.SNOOD_TYPE_JOKER]; _local6.y = (15 * GameConstants.SNOOD_HEIGHT); if (_arg1){ _local6.x = (10 * GameConstants.SNOOD_WIDTH); } else { _local6.x = (2 * GameConstants.SNOOD_WIDTH); }; _local3 = new BitmapData(GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT, true, 0); _local3.copyPixels(_local8, _local6, _local7); _local2[0] = _local3; _local6.x = 0; _local6.y = 0; _local3 = new BitmapData(GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT, true, 0); _local3.copyPixels(_local9, _local6, _local7); explosionArray[0] = _local3; _local6.x = GameConstants.SNOOD_WIDTH; _local6.y = 0; _local3 = new BitmapData(GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT, true, 0); _local3.copyPixels(_local9, _local6, _local7); explosionArray[1] = _local3; _local6.x = (2 * GameConstants.SNOOD_WIDTH); _local6.y = 0; _local3 = new BitmapData(GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT, true, 0); _local3.copyPixels(_local9, _local6, _local7); explosionArray[2] = _local3; _local6.x = (3 * GameConstants.SNOOD_WIDTH); _local6.y = 0; _local3 = new BitmapData(GameConstants.SNOOD_WIDTH, GameConstants.SNOOD_HEIGHT, true, 0); _local3.copyPixels(_local9, _local6, _local7); explosionArray[3] = _local3; if (_local8){ _local8.dispose(); }; if (_local9){ _local9.dispose(); }; } } }//package gamecode
Section 149
//SnoodBoard (gamecode.SnoodBoard) package gamecode { import flash.display.*; import flash.geom.*; import com.rkg.firebug.*; public class SnoodBoard { private var snoodBoardRect:Rectangle; private var allSnoodsExploding:Boolean; public var boardChanged:Boolean;// = false public var snoodBoardMatrix:Matrix; public var STARTING_VISE_OFFSET:int;// = 16 public var snoodArray:Array; public var lastSnoodMoodUpdateTime:int; public var currentSnoodMoodTime:int; public var packedSnoodBuffer:String;// = "" public var boardPosArrayX:Array; public var boardPosArrayY:Array; public var yOffset:Number; public var destYOffset:Number; public var boardActive:Boolean; public var snoodBeingFired:Snood; public var firingDestCellRow:int; public var firingDestCellCol:int; public var snoodFiringDistanceMinimum:Number; public var collidedWithDestinationCell:Boolean; public var explodingSnoodGroup:Array; public var explosionFrameCounter:Number;// = 0 public var typesPresentOnBoard:Array; public var snoodCurrentlyFalling:Boolean; public var snoodToBeLobbed:Snood; public var snoodBeingLobbed:Snood; public var snoodBeingLobbedEndPos:Point; public var snoodBeingLobbedTime:int; public var snoodBeingLobbedRowCol:Point; public var snoodBeingSent:Snood; private var snoodBeingSentStartPos:Point; private var snoodBeingSentTime:int; public var rockSnoodActive:Boolean; public var rockSnoodActiveTime:int; public var rockSnoodRow:int; public var rockSnoodCol:int; public var jokerSnoodActive:Boolean; public var jokerSnoodActiveTime:int; public var jokerSnoodRow:int; public var jokerSnoodCol:int; public var spreadingSnoods:Array; public var spreadType:int; public var storyTime:int; public var showingResults:Boolean; public var dying:Boolean; public var dyingUpdateTime:int; public var postDeathTimer:int; public var moodCurrentTime:int; public var lastMoodUpdateTime:int; public var releaseStreak:int;// = 0 public var snoodsToBeSent:Array; public var snoodsToBeLobbed:Array; private var gameManager:GameManager; private var gameplayManager:GameplayManager; private static const MOOD_UPDATE_DELTA_TIME:int = 1000; private static const TURN_SNOOD_BOARD_OFF:int = 0; private static const Y_OFFSET_JUMP:Number = 1; private static const Y_OFFSET_NEGATIVE_JUMP = 2; private static const ROCK_TIMEOUT:int = 750; private static const JOKER_TIMEOUT:int = 0; private static const STORY_INTRO_TIMEOUT:int = 10000; private static const DIE_SECONDS_PER_ROW:int = 100; private static const DEATH_AFTER_ALL_NUMBSKULLS_TIME:int = 3000; private static const PACKED_SNOOD_BUFFER_SIZE_IN_BYTES:int = 117; private static const SNOOD_LOB_DURATION:int = 500; public function SnoodBoard(_arg1:GameManager, _arg2:GameplayManager){ var _local3:int; var _local4:int; snoodArray = []; boardPosArrayX = []; boardPosArrayY = []; explodingSnoodGroup = []; typesPresentOnBoard = []; snoodBeingLobbedRowCol = new Point(); spreadingSnoods = []; snoodsToBeSent = []; snoodsToBeLobbed = []; super(); gameManager = _arg1; gameplayManager = _arg2; _local3 = 0; while (_local3 < GameConstants.BOARD_WIDTH) { _local4 = 0; while (_local4 < GameConstants.BOARD_HEIGHT) { setPosition(_local3, _local4, getPosX(_local3, _local4), getPosY(_local3, _local4)); setSnood(null, _local3, _local4); _local4++; }; _local3++; }; boardActive = false; dying = false; showingResults = false; snoodBeingFired = null; moodCurrentTime = 0; lastMoodUpdateTime = 0; yOffset = STARTING_VISE_OFFSET; destYOffset = STARTING_VISE_OFFSET; explosionFrameCounter = 0; rockSnoodActive = false; rockSnoodRow = -1; rockSnoodCol = -1; jokerSnoodActive = false; jokerSnoodRow = -1; jokerSnoodCol = -1; } public function update(_arg1:int):Boolean{ var col:int; var row:int; var i:int; var x:int; var y:int; var xPos:Number; var yPos:Number; var yPosMax:Number; var trail:Point; var index2:int; var snood:Snood; var rockSnood:Snood; var snoodsFalling:int; var topMostRow:int; var styleBonus:int; var multiplier:int; var foundAtLeastOneSnood:Boolean; var deltaTime = _arg1; var gun:Gun = gameplayManager.gun; try { if (((allSnoodsExploding) || (!((explodingSnoodGroup.length == 0))))){ explosionFrameCounter = Math.min((explosionFrameCounter + (deltaTime / 16.6667)), GameConstants.EXPLOSION_FRAMES); }; } catch(err) { Console.log(("[SnoodBoard][update] 1 error=" + err.message)); }; if ((((destYOffset > yOffset)) && (!(dying)))){ yOffset = Math.min(destYOffset, (yOffset + Y_OFFSET_JUMP)); } else { if (destYOffset < yOffset){ yOffset = Math.max(destYOffset, (yOffset - Y_OFFSET_NEGATIVE_JUMP)); }; }; try { if (dying){ dyingUpdateTime = (dyingUpdateTime + deltaTime); topMostRow = Math.max(0, (GameConstants.BOARD_HEIGHT - (dyingUpdateTime / DIE_SECONDS_PER_ROW))); col = 0; while (col < GameConstants.BOARD_WIDTH) { row = (GameConstants.BOARD_HEIGHT - 1); while (row >= topMostRow) { snood = getSnood(col, row); if (snood){ snood.type = SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL; snood.mood = SnoodMoodEnum.SNOOD_MOOD_DYING; snood.update(deltaTime); }; row = (row - 1); }; col = (col + 1); }; if ((((((topMostRow == 0)) && ((postDeathTimer > DEATH_AFTER_ALL_NUMBSKULLS_TIME)))) && ((allSnoodsExploding == false)))){ explodeAllSnoods(); allSnoodsExploding = true; explosionFrameCounter = 0; }; if (((allSnoodsExploding) && ((explosionFrameCounter >= GameConstants.EXPLOSION_FRAMES)))){ gameplayManager.gunEnabled = false; dying = false; if ((((gameplayManager.playfieldIndex == 0)) && (!(gameManager.sentEndOfGameMessage)))){ gameManager.gameStats.setWinOrLose(false); if ((((gameManager.options.mode == GameModeEnum.GAME_MODE_PUZZLE)) || ((gameManager.options.mode == GameModeEnum.GAME_MODE_STORY)))){ showingResults = true; gameManager.continuingFromSavedGame = false; } else { gameManager.justFinishedFailingTimeAttackOrClassic = true; }; }; return (true); } else { postDeathTimer = (postDeathTimer + deltaTime); }; return (false); }; } catch(err) { Console.log(("[SnoodBoard][update] dying error=" + err.message)); }; try { snoodCurrentlyFalling = false; if (rockSnoodActive){ rockSnoodActiveTime = (rockSnoodActiveTime + deltaTime); if (rockSnoodActiveTime > ROCK_TIMEOUT){ rockSnood = getSnood(rockSnoodCol, rockSnoodRow); if (rockSnood){ rockSnood.setState(SnoodStateEnum.SNOOD_STATE_DISINTEGRATING); rockSnoodActive = false; snoodsFalling = 0; y = Math.max((rockSnood.row - 2), 0); while (y < Math.min((rockSnood.row + 2), GameConstants.BOARD_HEIGHT)) { x = Math.max((rockSnood.col - 2), 0); while (x < Math.min((rockSnood.col + 2), GameConstants.BOARD_WIDTH)) { snood = getSnood(x, y); if (((snood) && (snood.isNeighbor(rockSnood)))){ snood.setState(SnoodStateEnum.SNOOD_STATE_FALLING); snoodsFalling = (snoodsFalling + 1); }; x = (x + 1); }; y = (y + 1); }; snoodsFalling = gameplayManager.recalculateBoardLists(); if (rockSnood.classic){ gameManager.playSFX(SfxIdsEnum.SFX_ID_STONE_EXPLODE); } else { gameManager.playSFX(SfxIdsEnum.SFX_ID_BOMB_EXPLODE); }; if (snoodsFalling > 0){ gun.decrementEnergyPercent((snoodsFalling * 0.1)); if (gameplayManager.playfieldIndex == 0){ gameManager.gameStats.score = (gameManager.gameStats.score + (snoodsFalling * 10)); }; if ((((snoodsFalling > 0)) && ((snoodsFalling < 3)))){ gameManager.playSFX(SfxIdsEnum.SFX_ID_FANFARE_A); } else { if (snoodsFalling >= 3){ gameManager.playSFX(SfxIdsEnum.SFX_ID_FANFARE_FULL); }; }; styleBonus = 0; if (gun.numBanksLastFired > 0){ styleBonus = (styleBonus + (5 * snoodsFalling)); } else { if (snoodsFalling >= 4){ multiplier = (snoodsFalling / 2); styleBonus = (styleBonus + (5 * multiplier)); }; }; releaseStreak++; if (releaseStreak > 1){ styleBonus = (styleBonus + (15 * (releaseStreak - 1))); }; if (styleBonus != 0){ styleBonus = (styleBonus * StyleBonus.STYLE_MULTIPLIER); gameplayManager.styleBonus.playStyleBonusAnimation(styleBonus, rockSnood.xPos, rockSnood.yPos); gameManager.gameStats.incrementStyleBonus(styleBonus); sendSnood(rockSnood); }; recursiveClearStarter(rockSnoodRow, rockSnoodCol, -1, -1); updateConnections(); if (checkOnlyNumbskulls()){ makeAllSnoodsFall(); }; }; }; }; }; } catch(err) { Console.log(("[SnoodBoard][update] rockSnoodActive error=" + err.message)); }; try { if (jokerSnoodActive){ if ((((((spreadingSnoods[0] == null)) && ((spreadingSnoods[1] == null)))) && ((spreadingSnoods[2] == null)))){ jokerSnoodActive = false; }; }; } catch(err) { Console.log(("[SnoodBoard][update] jokerSnoodActive error=" + err.message)); }; try { foundAtLeastOneSnood = false; yPosMax = 0; row = (GameConstants.BOARD_HEIGHT - 1); while (row >= topMostRow) { col = 0; while (col < GameConstants.BOARD_WIDTH) { xPos = getXPosition(col, row); yPos = getYPosition(col, row); snood = getSnood(col, row); if (snood){ if ((((yPos > yPosMax)) && ((snood.state == SnoodStateEnum.SNOOD_STATE_IN_BOARD)))){ yPosMax = yPos; }; foundAtLeastOneSnood = true; if (snood.state == SnoodStateEnum.SNOOD_STATE_FALLING){ snoodCurrentlyFalling = true; } else { snood.xPos = xPos; snood.yPos = yPos; }; }; col = (col + 1); }; row = (row - 1); }; } catch(err) { Console.log(("[SnoodBoard][update] 2 error=" + err.message)); }; try { row = (GameConstants.BOARD_HEIGHT - 1); while (row >= topMostRow) { col = 0; while (col < GameConstants.BOARD_WIDTH) { snood = getSnood(col, row); if (snood){ snood.update(deltaTime); }; col = (col + 1); }; row = (row - 1); }; } catch(err) { Console.log(("[SnoodBoard][update] update snoods error=" + err.message)); }; try { if (jokerSnoodActive){ i = 0; while (i < 3) { if (spreadingSnoods[i]){ snood = spreadingSnoods[i]; snood.update(deltaTime); }; i = (i + 1); }; }; } catch(err) { Console.log(("[SnoodBoard][update] jokersnoodActive error=" + err.message)); }; try { if (snoodBeingFired == null){ snoodFiringDistanceMinimum = 1600; collidedWithDestinationCell = false; } else { snoodBeingFired.update(deltaTime); try { trail = gun.getXYTrail(); } catch(err) { Console.log(("[SnoodBoard][update] trail error=" + err.message)); }; try { snoodBeingFired.xPos = trail.x; snoodBeingFired.yPos = trail.y; } catch(err) { Console.log(("[SnoodBoard][update] xpos/ypos error=" + err.message)); }; if (gun.getShootingTimeExpired()){ try { attachSnoodToBoard(snoodBeingFired, firingDestCellCol, firingDestCellRow); snoodBeingFired = null; } catch(err) { Console.log(("[SnoodBoard][update] gun error=" + err.message)); }; }; }; } catch(err) { Console.log(("[SnoodBoard][update] snoodBeingfired error=" + err.message)); }; try { if ((((snoodsToBeLobbed.length > 0)) && ((snoodToBeLobbed == null)))){ createNewSnoodToBeLobbed(); }; } catch(err) { Console.log(("[SnoodBoard][update] snoods lobbed error=" + err.message)); }; try { updateSnoodMoods(deltaTime); if ((((((((((((gameManager.options.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER)) && (boardChanged))) && ((gameplayManager.playfieldIndex == 0)))) && (!((gun.snoodNextToFire == null))))) && (!((gun.snoodOnDeck == null))))) && (!(snoodCurrentlyFalling)))){ fillPackedBuffer(); boardChanged = false; gameManager.gameLive.sendBoardUpdate(); }; } catch(err) { Console.log(("[SnoodBoard][update] snood moods error=" + err.message)); }; try { if (((((!(foundAtLeastOneSnood)) && (boardActive))) && ((explodingSnoodGroup.length == 0)))){ gameplayManager.gunEnabled = false; destYOffset = STARTING_VISE_OFFSET; if (destYOffset == yOffset){ boardActive = false; if ((((gameplayManager.playfieldIndex == 0)) && (!(gameManager.sentEndOfGameMessage)))){ gameManager.gameStats.setWinOrLose(true); }; showingResults = true; return (true); }; }; } catch(err) { Console.log(("[SnoodBoard][update] set win or lose error=" + err.message)); }; try { if (yPosMax >= 400){ if ((((((gameManager.options.mode == GameModeEnum.GAME_MODE_STORY)) && ((gameManager.story.phase == 0)))) && ((gameManager.story.step == 0)))){ gameplayManager.gunEnabled = false; if ((((gameplayManager.playfieldIndex == 0)) && (!(gameManager.sentEndOfGameMessage)))){ gameManager.gameStats.setWinOrLose(false); }; return (true); } else { if (!showingResults){ if ((((gameplayManager.playfieldIndex == 0)) && (!(gameManager.sentEndOfGameMessage)))){ gameManager.gameStats.setWinOrLose(false); }; dying = true; dyingUpdateTime = 0; postDeathTimer = 0; gameManager.playSFX(SfxIdsEnum.SFX_ID_WEDIED); }; }; }; } catch(err) { Console.log(("[SnoodBoard][update] last update error=" + err.message)); }; return (false); } public function draw(_arg1:BitmapData, _arg2:Rectangle):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:Snood; var _local7:Gun = gameplayManager.gun; _local3 = 0; while (_local3 < GameConstants.BOARD_HEIGHT) { _local4 = 0; while (_local4 < GameConstants.BOARD_WIDTH) { _local6 = getSnood(_local4, _local3); if (_local6){ switch (_local6.state){ case SnoodStateEnum.SNOOD_STATE_IN_BOARD: case SnoodStateEnum.SNOOD_STATE_FALLING: case SnoodStateEnum.SNOOD_STATE_SHAKING: case SnoodStateEnum.SNOOD_STATE_DISINTEGRATING: _local6.draw(_arg1, snoodBoardMatrix, _arg2); break; case SnoodStateEnum.SNOOD_STATE_EXPLODING: if (_local6.type == SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL){ _local6.draw(_arg1, snoodBoardMatrix, _arg2); }; break; }; }; _local4++; }; _local3++; }; if (snoodBeingFired){ if (snoodBeingFired.state == SnoodStateEnum.SNOOD_STATE_BEING_FIRED){ snoodBeingFired.draw(_arg1, snoodBoardMatrix, _arg2); } else { Error("SnoodBoard:Draw snoodBeingFired"); }; }; if (_local7){ if (((_local7.snoodNextToFire) && ((_local7.deckToGunFrameCounter == 0)))){ _local7.snoodNextToFire.draw(_arg1, snoodBoardMatrix, _arg2); }; if (_local7.snoodOnDeck){ _local7.snoodOnDeck.draw(_arg1, snoodBoardMatrix, _arg2); }; }; if (explodingSnoodGroup.length != 0){ _local5 = 0; while (_local5 < explodingSnoodGroup.length) { _local6 = explodingSnoodGroup[_local5]; _local6.draw(_arg1, snoodBoardMatrix, _arg2); if (explosionFrameCounter >= GameConstants.EXPLOSION_FRAMES){ setSnood(null, _local6.col, _local6.row); }; _local5++; }; if (explosionFrameCounter >= GameConstants.EXPLOSION_FRAMES){ explodingSnoodGroup = []; explosionFrameCounter = 0; }; }; if (jokerSnoodActive){ _local5 = 0; while (_local5 < 3) { _local6 = spreadingSnoods[_local5]; if (_local6){ _local6.draw(_arg1, snoodBoardMatrix, _arg2); }; _local5++; }; }; } public function resize(_arg1:Rectangle):void{ var _local2:Number = (_arg1.width / 320); snoodBoardMatrix = new Matrix(_local2, 0, 0, _local2, _arg1.x, _arg1.y); } private function sendSnood(_arg1:Snood):void{ var _local2:int; if (gameManager.options.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER){ if (gameplayManager.playfieldIndex == 0){ _local2 = gameManager.getRandomSnoodType(gameplayManager.snoodRand); showSendingSnoodLob(new Point(_arg1.xPos, _arg1.yPos), _local2); gameManager.gameLive.sendAddSnoodToLobMessage(_local2); } else { _local2 = snoodsToBeSent.shift(); showSendingSnoodLob(new Point(_arg1.xPos, _arg1.yPos), _local2); }; }; } private function explodeAllSnoods():void{ var _local1:int; var _local2:int; var _local3:Snood; _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local1 = (GameConstants.BOARD_HEIGHT - 1); while (_local1 >= 0) { _local3 = getSnood(_local2, _local1); if (_local3){ _local3.setState(SnoodStateEnum.SNOOD_STATE_EXPLODING); }; _local1--; }; _local2++; }; gameManager.playSFX(SfxIdsEnum.SFX_ID_NUMBSKULLS); } public function checkOnlyNumbskulls():Boolean{ var _local3:int; var _local4:int; var _local5:Snood; var _local1:Boolean; var _local2:Boolean; _local4 = 0; while (_local4 < GameConstants.BOARD_WIDTH) { _local3 = (GameConstants.BOARD_HEIGHT - 1); while (_local3 >= 0) { _local5 = getSnood(_local4, _local3); if (_local5){ if (_local5.state == SnoodStateEnum.SNOOD_STATE_IN_BOARD){ _local2 = true; if (_local5.type != SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL){ _local1 = true; }; }; }; _local3--; }; _local4++; }; return (Boolean(((_local2) && (!(_local1))))); } private function attachSnoodToBoard(_arg1:Snood, _arg2:int, _arg3:int):void{ var snoodGroup:Array; var wildcardGroup:Array; var typeCountArray:Array; var i:int; var snood:Snood; var snoodType:int; var scoreIncrement:int; var styleBonus:int; var multiplier:int; var snoodToAttach = _arg1; var col = _arg2; var row = _arg3; var explodedGroup:Boolean; var numFalling:int; var gun:Gun = gameplayManager.gun; try { snoodToAttach.setState(SnoodStateEnum.SNOOD_STATE_IN_BOARD); snoodToAttach.row = row; snoodToAttach.col = col; snoodToAttach.xPos = getXPosition(col, row); snoodToAttach.yPos = getYPosition(col, row); } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] beginning err: " + err)); }; try { if (snoodToAttach.type != SnoodTypeEnum.SNOOD_TYPE_JOKER){ setSnood(snoodToAttach, col, row); }; gameplayManager.buildBoardSnoodGroupLists(); snoodGroup = snoodToAttach.group; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] build snood groups err: " + err)); }; if (((((((snoodGroup) && ((snoodGroup.length >= 3)))) && (!((snoodToAttach.type == SnoodTypeEnum.SNOOD_TYPE_ROCK))))) && (!((snoodToAttach.type == SnoodTypeEnum.SNOOD_TYPE_JOKER))))){ try { createExplodingGroup(snoodGroup); gameplayManager.buildBoardSnoodGroupLists(); explodedGroup = true; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] create exploding err: " + err)); }; } else { if (snoodToAttach.type == SnoodTypeEnum.SNOOD_TYPE_WILDCARD){ try { typeCountArray = []; i = 0; while (i < SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL) { typeCountArray[i] = 0; i = (i + 1); }; wildcardGroup = [snoodToAttach]; i = 0; while (i < gameplayManager.snoodGroupManager.length) { snoodGroup = gameplayManager.snoodGroupManager[i]; if (gameplayManager.isNeighboringGroup(wildcardGroup, snoodGroup, true)){ snood = snoodGroup[0]; snoodType = snood.type; if ((((snoodType >= SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID)) && ((snoodType < SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL)))){ typeCountArray[snoodType] = (typeCountArray[snoodType] + snoodGroup.length); }; }; i = (i + 1); }; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] wildcard err: " + err)); }; try { i = 0; while (i < gameplayManager.snoodGroupManager.length) { snoodGroup = gameplayManager.snoodGroupManager[i]; if (gameplayManager.isNeighboringGroup(wildcardGroup, snoodGroup, true)){ try { snood = snoodGroup[0]; snoodType = snood.type; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] err: " + err)); }; if ((((snoodType >= SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID)) && ((snoodType < SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL)))){ if (typeCountArray[snoodType] >= 2){ createExplodingGroup(snoodGroup); }; }; }; i = (i + 1); }; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] loop err: " + err)); }; try { createExplodingGroup(snoodToAttach.group); gameplayManager.buildBoardSnoodGroupLists(); explodedGroup = true; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] exploding err: " + err)); }; } else { if (snoodToAttach.type == SnoodTypeEnum.SNOOD_TYPE_ROCK){ try { snoodToAttach.setState(SnoodStateEnum.SNOOD_STATE_SHAKING); rockSnoodActive = true; rockSnoodActiveTime = 0; rockSnoodCol = snoodToAttach.col; rockSnoodRow = snoodToAttach.row; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] snood rock err0: " + err.message)); }; try { if (((snoodToAttach.classic) && (gameManager))){ gameManager.playSFX(SfxIdsEnum.SFX_ID_STONE_RUMBLE); } else { gameManager.playSFX(SfxIdsEnum.SFX_ID_BOMB_RUMBLE); }; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] snood rock err1: " + err.message)); }; try { row = 0; while (row < GameConstants.BOARD_HEIGHT) { col = 0; while (col < GameConstants.BOARD_WIDTH) { snood = getSnood(col, row); if (snood){ if (snood.isNeighbor(snoodToAttach)){ snood.mood = SnoodMoodEnum.SNOOD_MOOD_WORRIED; snood.moodLocked = true; }; }; col = (col + 1); }; row = (row + 1); }; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] snood rock err2: " + err.message)); }; } else { if (snoodToAttach.type == SnoodTypeEnum.SNOOD_TYPE_JOKER){ try { gameManager.playSFX(SfxIdsEnum.SFX_ID_ROWBUILDER); jokerSnoodActive = true; jokerSnoodActiveTime = 0; jokerSnoodCol = snoodToAttach.col; jokerSnoodRow = snoodToAttach.row; spreadType = gun.getValidNewSnoodType(); i = 0; while (i < 3) { if ((((((jokerSnoodCol + i) - 1) >= 0)) && ((((jokerSnoodCol + i) - 1) < GameConstants.BOARD_WIDTH)))){ snood = new Snood(spreadType, 0, snoodToAttach.classic, SnoodStateEnum.SNOOD_STATE_SPREADING, jokerSnoodRow, ((jokerSnoodCol + i) - 1), gameManager, gameplayManager); snood.spreadingID = (i - 1); snood.xPos = getXPosition(((jokerSnoodCol + i) - 1), jokerSnoodRow); snood.yPos = getYPosition(((jokerSnoodCol + i) - 1), jokerSnoodRow); spreadingSnoods[i] = snood; }; i = (i + 1); }; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] joker err: " + err)); }; } else { try { row = 0; while (row < GameConstants.BOARD_HEIGHT) { col = 0; while (col < GameConstants.BOARD_WIDTH) { snood = getSnood(col, row); if (snood){ if (((snood.isNeighbor(snoodToAttach)) && (!((snoodToAttach.mood == SnoodMoodEnum.SNOOD_MOOD_ASLEEP))))){ if (snood.mood == SnoodMoodEnum.SNOOD_MOOD_ASLEEP){ snood.wakeUpNextFrame = true; } else { if (snood.type == snoodToAttach.type){ snood.mood = SnoodMoodEnum.SNOOD_MOOD_HAPPY; } else { if (gameplayManager.moodRand.seededRand() < 0.5){ snood.mood = SnoodMoodEnum.SNOOD_MOOD_WORRIED; } else { snood.mood = SnoodMoodEnum.SNOOD_MOOD_ANGRY; }; }; }; }; }; col = (col + 1); }; row = (row + 1); }; } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] all other snoods err: " + err)); }; }; }; }; }; try { numFalling = gameplayManager.recalculateBoardLists(); if (checkOnlyNumbskulls()){ makeAllSnoodsFall(); }; scoreIncrement = 0; i = 0; while (i < gameplayManager.snoodGroupManager.length) { snoodGroup = gameplayManager.snoodGroupManager[i]; snood = snoodGroup[0]; if (snood.state == SnoodStateEnum.SNOOD_STATE_FALLING){ scoreIncrement = (scoreIncrement + ((snoodGroup.length * snoodGroup.length) * 10)); }; i = (i + 1); }; if (gameplayManager.playfieldIndex == 0){ gameManager.gameStats.score = (gameManager.gameStats.score + scoreIncrement); }; styleBonus = 0; if (numFalling == 0){ releaseStreak = 0; } else { if (gun.numBanksLastFired > 0){ styleBonus = (5 * numFalling); } else { if (numFalling >= 4){ multiplier = (numFalling / 2); styleBonus = (styleBonus + (multiplier * 5)); }; }; releaseStreak++; if (releaseStreak > 1){ styleBonus = (styleBonus + (15 * (releaseStreak - 1))); }; if (styleBonus != 0){ styleBonus = (styleBonus * StyleBonus.STYLE_MULTIPLIER); gameplayManager.styleBonus.playStyleBonusAnimation(styleBonus, snoodToAttach.xPos, snoodToAttach.yPos); gameManager.gameStats.incrementStyleBonus(styleBonus); sendSnood(snoodToAttach); }; }; if (((!(explodedGroup)) && ((numFalling == 0)))){ gameManager.playSFX(SfxIdsEnum.SFX_ID_SNOOD_LAND); } else { if ((((numFalling > 0)) && ((numFalling < 3)))){ gameManager.playSFX(SfxIdsEnum.SFX_ID_FANFARE_A); gun.decrementEnergyPercent(0.3); } else { if (numFalling >= 3){ gameManager.playSFX(SfxIdsEnum.SFX_ID_FANFARE_FULL); gun.decrementEnergyPercent(0.4); } else { gameManager.playSFX(SfxIdsEnum.SFX_ID_TRANSPORT); }; }; }; if (gun.energyTarget >= 1){ if (gameManager.options.mode != GameModeEnum.GAME_MODE_TIME_ATTACK){ gun.energyTarget = 0; pushDown(); gameManager.playSFX(SfxIdsEnum.SFX_ID_RED_PLASMA_RETRACT); }; }; updateSnoodPresence(); } catch(err) { Console.log(("[SnoodBoard][attachSnoodToBoard] other err: " + err)); }; } private function createExplodingGroup(_arg1:Array):void{ var _local2:Snood; var _local3:int; _local3 = 0; while (_local3 < _arg1.length) { _local2 = _arg1[_local3]; if (_local2){ explodingSnoodGroup.push(_local2); _local2.setState(SnoodStateEnum.SNOOD_STATE_EXPLODING); recursiveClearStarter(_local2.row, _local2.col, -1, -1); }; _local3++; }; if (gameplayManager.playfieldIndex == 0){ gameManager.gameStats.score = (gameManager.gameStats.score + ((_arg1.length * _arg1.length) + 1)); }; } private function makeAllSnoodsFall():void{ var _local1:int; var _local2:int; var _local3:Snood; _local1 = 0; while (_local1 < GameConstants.BOARD_HEIGHT) { _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local3 = getSnood(_local2, _local1); if (_local3){ if (_local3.state == SnoodStateEnum.SNOOD_STATE_IN_BOARD){ _local3.setState(SnoodStateEnum.SNOOD_STATE_FALLING); }; }; _local2++; }; _local1++; }; } public function updateSnoodPresence():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:Snood; var _local5:int; _local1 = 0; while (_local1 < SnoodTypeEnum.SNOOD_TYPE_MAX) { typesPresentOnBoard[_local1] = false; _local1++; }; _local2 = 0; while (_local2 < GameConstants.BOARD_HEIGHT) { _local3 = 0; while (_local3 < GameConstants.BOARD_WIDTH) { _local4 = getSnood(_local3, _local2); if (_local4){ _local5 = _local4.type; typesPresentOnBoard[_local5] = true; }; _local3++; }; _local2++; }; } public function getIsTypePresent(_arg1:int):Boolean{ return (typesPresentOnBoard[_arg1]); } public function getAnyTypePresent():Boolean{ var _local1:int; _local1 = 0; while (_local1 < SnoodTypeEnum.SNOOD_TYPE_MAX) { if (typesPresentOnBoard[_local1]){ return (true); }; _local1++; }; return (false); } private function updateSnoodMoods(_arg1:int):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local7:Snood; var _local6:int = (GameConstants.BOARD_WIDTH * GameConstants.BOARD_HEIGHT); moodCurrentTime = (moodCurrentTime + _arg1); if ((moodCurrentTime - lastMoodUpdateTime) > MOOD_UPDATE_DELTA_TIME){ _local2 = gameManager.seededRandomInt(gameplayManager.moodRand, (_local6 / 20), (_local6 / 10)); lastMoodUpdateTime = moodCurrentTime; _local3 = 0; while (_local3 < _local2) { _local4 = gameManager.seededRandomInt(gameplayManager.moodRand, 0, (GameConstants.BOARD_WIDTH - 1)); _local5 = gameManager.seededRandomInt(gameplayManager.moodRand, 0, (GameConstants.BOARD_HEIGHT - 1)); _local7 = getSnood(_local4, _local5); if (((((((_local7) && ((_local7.state == SnoodStateEnum.SNOOD_STATE_IN_BOARD)))) && (!((_local7.mood == SnoodMoodEnum.SNOOD_MOOD_ASLEEP))))) && (!((_local7.mood == SnoodMoodEnum.SNOOD_MOOD_DYING))))){ _local7.setRandomNewMood(); }; _local3++; }; }; } public function pushDown():void{ destYOffset = (destYOffset + GameConstants.SNOOD_HEIGHT); setTopRowSnoodsViseMood(); } private function setTopRowSnoodsViseMood():void{ var _local1:int; var _local2:Snood; _local1 = 0; while (_local1 < GameConstants.BOARD_WIDTH) { _local2 = getSnood(_local1, 0); if (_local2){ _local2.mood = SnoodMoodEnum.SNOOD_MOOD_VISE_ALERT; }; _local1++; }; } private function setPosition(_arg1:int, _arg2:int, _arg3:Number, _arg4:Number):void{ var _local5:int = ((_arg2 * GameConstants.BOARD_WIDTH) + _arg1); boardPosArrayX[_local5] = _arg3; boardPosArrayY[_local5] = _arg4; } public function getXPosition(_arg1:int, _arg2:int):Number{ var _local3:int = ((_arg2 * GameConstants.BOARD_WIDTH) + _arg1); return (boardPosArrayX[_local3]); } public function getYPosition(_arg1:int, _arg2:int):Number{ var _local3:int = ((_arg2 * GameConstants.BOARD_WIDTH) + _arg1); return ((boardPosArrayY[_local3] + yOffset)); } public function getPosX(_arg1:int, _arg2:int):Number{ if (rowIsOffset(_arg2)){ return (((GameConstants.SNOOD_WIDTH + GameConstants.BORDER_PIXELS) + (_arg1 * (GameConstants.SNOOD_WIDTH + GameConstants.SPACE_BETWEEN_SNOODS)))); }; return (((GameConstants.SNOOD_WIDTH2 + GameConstants.BORDER_PIXELS) + (_arg1 * (GameConstants.SNOOD_WIDTH + GameConstants.SPACE_BETWEEN_SNOODS)))); } public function getPosY(_arg1:int, _arg2:int):Number{ var _local3:Number = (GameConstants.SNOOD_HEIGHT2 + (_arg2 * GameConstants.SNOOD_HEIGHT)); return (_local3); } public function getRowCol(_arg1:int, _arg2:int):Point{ var _local3:int; var _local4:int; _local3 = Math.min(((_arg2 - yOffset) / GameConstants.SNOOD_HEIGHT), (GameConstants.BOARD_HEIGHT - 1)); _local4 = Math.min(((rowIsOffset(_local3)) ? (_arg1 - GameConstants.SNOOD_WIDTH2) : _arg1 / GameConstants.SNOOD_WIDTH), (GameConstants.BOARD_WIDTH - 1)); return (new Point(_local4, _local3)); } public function getSnood(_arg1:int, _arg2:int):Snood{ var _local3:int = ((_arg2 * GameConstants.BOARD_WIDTH) + _arg1); return (snoodArray[_local3]); } public function setSnood(_arg1:Snood, _arg2:int, _arg3:int):void{ var _local4:int = ((_arg3 * GameConstants.BOARD_WIDTH) + _arg2); snoodArray[_local4] = _arg1; boardChanged = true; } public function fillPackedBuffer():void{ var _local5:Snood; var _local1:int = SnoodTypeEnum.SNOOD_TYPE_FIRST_VALID; var _local2:int = ((destYOffset - STARTING_VISE_OFFSET) / GameConstants.SNOOD_HEIGHT); var _local3:int; var _local4:int; packedSnoodBuffer = ""; _local3 = 0; while (_local3 < _local2) { packedSnoodBuffer = (packedSnoodBuffer + "000000000"); _local3++; }; _local3 = 0; while (_local3 < (GameConstants.BOARD_HEIGHT - _local2)) { _local4 = 0; while (_local4 < GameConstants.BOARD_WIDTH) { _local5 = getSnood(_local4, _local3); _local1 = SnoodTypeEnum.SNOOD_TYPE_INVALID; if (((_local5) && (!((_local5.state == SnoodStateEnum.SNOOD_STATE_FALLING))))){ _local1 = _local5.type; }; if ((_local4 + ((_local3 + _local2) * GameConstants.BOARD_WIDTH)) < PACKED_SNOOD_BUFFER_SIZE_IN_BYTES){ switch (_local1){ case SnoodTypeEnum.SNOOD_TYPE_INVALID: packedSnoodBuffer.concat("0"); break; case SnoodTypeEnum.SNOOD_TYPE_SUNNY: packedSnoodBuffer.concat("1"); break; case SnoodTypeEnum.SNOOD_TYPE_MILDRED: packedSnoodBuffer.concat("2"); break; case SnoodTypeEnum.SNOOD_TYPE_JAKE: packedSnoodBuffer.concat("3"); break; case SnoodTypeEnum.SNOOD_TYPE_SPIKE: packedSnoodBuffer.concat("4"); break; case SnoodTypeEnum.SNOOD_TYPE_GEJI: packedSnoodBuffer.concat("5"); break; case SnoodTypeEnum.SNOOD_TYPE_ZOD: packedSnoodBuffer.concat("6"); break; case SnoodTypeEnum.SNOOD_TYPE_MIDORIBE: packedSnoodBuffer.concat("7"); break; case SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL: packedSnoodBuffer.concat("8"); break; case SnoodTypeEnum.SNOOD_TYPE_ROCK: packedSnoodBuffer.concat("9"); break; case SnoodTypeEnum.SNOOD_TYPE_JOKER: packedSnoodBuffer.concat(":"); break; case SnoodTypeEnum.SNOOD_TYPE_WILDCARD: packedSnoodBuffer.concat(";"); break; }; packedSnoodBuffer = packedSnoodBuffer.concat(_local1); } else { Error("SnoodBoard:fillPackedBuffer"); }; _local4++; }; _local3++; }; } private function getSnoodTypeFromString(_arg1:String):int{ switch (_arg1){ case "1": return (SnoodTypeEnum.SNOOD_TYPE_SUNNY); case "2": return (SnoodTypeEnum.SNOOD_TYPE_MILDRED); case "3": return (SnoodTypeEnum.SNOOD_TYPE_JAKE); case "4": return (SnoodTypeEnum.SNOOD_TYPE_SPIKE); case "5": return (SnoodTypeEnum.SNOOD_TYPE_GEJI); case "6": return (SnoodTypeEnum.SNOOD_TYPE_ZOD); case "7": return (SnoodTypeEnum.SNOOD_TYPE_MIDORIBE); case "8": return (SnoodTypeEnum.SNOOD_TYPE_NUMBSKULL); case "9": return (SnoodTypeEnum.SNOOD_TYPE_ROCK); case ":": return (SnoodTypeEnum.SNOOD_TYPE_JOKER); case ";": return (SnoodTypeEnum.SNOOD_TYPE_WILDCARD); }; return (SnoodTypeEnum.SNOOD_TYPE_INVALID); } public function updateFromString(_arg1:String):void{ var _local2:int; var _local3:int; var _local4:Snood; var _local5:int; var _local7:String; var _local8:int; var _local6:Boolean = gameManager.options.classicMode; var _local9:String = new String(_arg1); var _local10:String = _local9.slice(0, GameConstants.BOARD_WIDTH); destYOffset = STARTING_VISE_OFFSET; while (_local10.localeCompare("000000000") == 0) { destYOffset = (destYOffset + GameConstants.SNOOD_HEIGHT); _local9 = _local9.slice(GameConstants.BOARD_WIDTH); _local10 = _local9.slice(0, GameConstants.BOARD_WIDTH); }; _local2 = 0; while (_local2 < GameConstants.BOARD_HEIGHT) { _local3 = 0; while (_local3 < GameConstants.BOARD_WIDTH) { _local4 = getSnood(_local3, _local2); _local8 = ((_local2 * GameConstants.BOARD_WIDTH) + _local3); if (_local8 < _local9.length){ _local7 = _local9.substr(_local8, 1); _local5 = getSnoodTypeFromString(_local7); if (_local5 != SnoodTypeEnum.SNOOD_TYPE_INVALID){ if (_local4){ _local4.type = _local5; } else { _local4 = new Snood(_local5, 0, _local6, SnoodStateEnum.SNOOD_STATE_IN_BOARD, 0, 0, gameManager, gameplayManager); _local4.row = _local2; _local4.col = _local3; _local4.xPos = getXPosition(_local3, _local2); _local4.yPos = getYPosition(_local3, _local2); setSnood(_local4, _local3, _local2); }; } else { if (_local4){ _local4.setState(SnoodStateEnum.SNOOD_STATE_EXPLODING); explodingSnoodGroup.push(_local4); }; }; } else { if (_local4){ _local4.setState(SnoodStateEnum.SNOOD_STATE_EXPLODING); explodingSnoodGroup.push(_local4); }; }; _local3++; }; _local2++; }; } public function updateConnections():int{ var _local1:int; var _local2:int; var _local3:Snood; var _local4:int; _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local1 = 0; while (_local1 < GameConstants.BOARD_HEIGHT) { _local3 = getSnood(_local2, _local1); if (_local3){ _local3.connected = false; }; _local1++; }; _local2++; }; _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local1 = 0; while (_local1 < GameConstants.BOARD_HEIGHT) { _local3 = getSnood(_local2, _local1); if (((((_local3) && (!((_local3.state == SnoodStateEnum.SNOOD_STATE_FALLING))))) && (!((_local3.state == SnoodStateEnum.SNOOD_STATE_EXPLODING))))){ if ((((_local1 == 0)) || (_local3.starterSnood))){ recursiveMarkConnected(_local1, _local2); }; }; _local1++; }; _local2++; }; _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local1 = 0; while (_local1 < GameConstants.BOARD_HEIGHT) { _local3 = getSnood(_local2, _local1); if (_local3){ if (((((!(_local3.connected)) && (!((_local3.state == SnoodStateEnum.SNOOD_STATE_EXPLODING))))) && (((!((_local3.type == SnoodTypeEnum.SNOOD_TYPE_ROCK))) || ((_local3.state == SnoodStateEnum.SNOOD_STATE_IN_BOARD)))))){ _local3.setState(SnoodStateEnum.SNOOD_STATE_FALLING); _local4++; }; }; _local1++; }; _local2++; }; return (_local4); } private function recursiveMarkConnected(_arg1:int, _arg2:int):void{ var _local3:int = (_arg1 % 2); var _local4:Snood = getSnood(_arg2, _arg1); if (((((((((((_local4) && (!(_local4.connected)))) && ((_arg1 >= 0)))) && ((_arg1 < GameConstants.BOARD_HEIGHT)))) && ((_arg2 >= 0)))) && ((_arg2 < GameConstants.BOARD_WIDTH)))){ if (((!((_local4.state == SnoodStateEnum.SNOOD_STATE_FALLING))) && (!((_local4.state == SnoodStateEnum.SNOOD_STATE_EXPLODING))))){ _local4.connected = true; recursiveMarkConnected((_arg1 - 1), ((_arg2 - 1) + _local3)); recursiveMarkConnected((_arg1 - 1), (_arg2 + _local3)); recursiveMarkConnected(_arg1, (_arg2 - 1)); recursiveMarkConnected(_arg1, (_arg2 + 1)); recursiveMarkConnected((_arg1 + 1), ((_arg2 - 1) + _local3)); recursiveMarkConnected((_arg1 + 1), (_arg2 + _local3)); }; }; } private function startClearStarterRecursion(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{ var _local5:Snood; _arg1 = 0; while (_arg1 < GameConstants.BOARD_HEIGHT) { _arg2 = 0; while (_arg2 < GameConstants.BOARD_WIDTH) { _local5 = getSnood(_arg2, _arg1); if (_local5){ _local5.starterNodeVisited = false; }; _arg2++; }; _arg1++; }; recursiveClearStarter(_arg1, _arg2, _arg3, _arg4); } private function recursiveClearStarter(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{ var _local5:int = (_arg1 % 2); var _local6:Snood = getSnood(_arg2, _arg1); if (((((((((((_local6) && (!(_local6.starterNodeVisited)))) && ((_arg1 >= 0)))) && ((_arg1 < GameConstants.BOARD_HEIGHT)))) && ((_arg2 >= 0)))) && ((_arg2 < GameConstants.BOARD_WIDTH)))){ _local6.starterSnood = false; _local6.starterNodeVisited = true; if (((!(((_arg1 - 1) == _arg3))) || (!((((_arg2 - 1) + _local5) == _arg4))))){ recursiveClearStarter((_arg1 - 1), ((_arg2 - 1) + _local5), _arg1, _arg2); }; if (((!(((_arg1 - 1) == _arg3))) || (!(((_arg2 + _local5) == _arg4))))){ recursiveClearStarter((_arg1 - 1), (_arg2 + _local5), _arg1, _arg2); }; if (((!((_arg1 == _arg3))) || (!(((_arg2 - 1) == _arg4))))){ recursiveClearStarter(_arg1, (_arg2 - 1), _arg1, _arg2); }; if (((!((_arg1 == _arg3))) || (!(((_arg2 + 1) == _arg4))))){ recursiveClearStarter(_arg1, (_arg2 + 1), _arg1, _arg2); }; if (((!(((_arg1 + 1) == _arg3))) || (!((((_arg2 - 1) + _local5) == _arg4))))){ recursiveClearStarter((_arg1 + 1), ((_arg2 - 1) + _local5), _arg1, _arg2); }; if (((!(((_arg1 + 1) == _arg3))) || (!(((_arg2 + _local5) == _arg4))))){ recursiveClearStarter((_arg1 + 1), (_arg2 + _local5), _arg1, _arg2); }; }; } private function rowIsOffset(_arg1:int):Boolean{ var _local2:* = false; if ((_arg1 % 2) == 1){ _local2 = true; }; return (_local2); } public function setFiringDestinationCell(_arg1:int, _arg2:int):void{ firingDestCellCol = _arg1; firingDestCellRow = _arg2; } public function showBoard():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:Snood; _local1 = 0; while (_local1 < GameConstants.BOARD_HEIGHT) { _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local3 = ((_local1 * GameConstants.BOARD_WIDTH) + _local2); _local4 = snoodArray[_local3]; trace("snoodBoard", _local2, _local1, _local3, _local4); _local2++; }; _local1++; }; } public function getYOffset():Number{ return ((yOffset * snoodBoardMatrix.d)); } public function getViseMoving():Number{ return ((yOffset - destYOffset)); } private function canLob():Boolean{ return (Boolean(((((((((((!((snoodBeingFired == null))) || (snoodCurrentlyFalling))) || (rockSnoodActive))) || (!((explodingSnoodGroup.length == 0))))) || (dying))) || (jokerSnoodActive)))); } private function createNewSnoodToBeLobbed():void{ var _local1:int; var _local2:String = snoodsToBeLobbed.shift(); if (_local2 == ""){ _local1 = gameManager.getRandomSnoodType(gameplayManager.snoodRand); } else { _local1 = int(_local2); }; snoodToBeLobbed = new Snood(_local1, SnoodMoodEnum.SNOOD_MOOD_ASLEEP, gameManager.options.classicMode, SnoodStateEnum.SNOOD_STATE_ON_MINIBOARD, 0, 0, gameManager, gameplayManager); snoodToBeLobbed.xPos = gameplayManager.thumbnailPoint.x; snoodToBeLobbed.yPos = gameplayManager.thumbnailPoint.y; snoodToBeLobbed.lobScale = 1; gameManager.playRandomLaugh(); } private function showSendingSnoodLob(_arg1:Point, _arg2:int):void{ if (snoodBeingSent == null){ snoodBeingSent = new Snood(_arg2, SnoodMoodEnum.SNOOD_MOOD_ASLEEP, gameManager.options.classicMode, SnoodStateEnum.SNOOD_STATE_ON_MINIBOARD, 0, 0, gameManager, gameplayManager); snoodBeingSentStartPos = new Point((_arg1.x + snoodBoardMatrix.tx), (_arg1.y + snoodBoardMatrix.ty)); snoodBeingSent.xPos = snoodBeingSentStartPos.x; snoodBeingSent.yPos = snoodBeingSentStartPos.y; snoodBeingSentTime = 0; }; } private function interpolate(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return ((_arg1 + ((_arg2 - _arg1) * _arg3))); } public function updateSnoodBeingSent(_arg1:int):void{ snoodBeingSentTime = (snoodBeingSentTime + _arg1); var _local2:Number = Math.min((snoodBeingSentTime / SNOOD_LOB_DURATION), 1); var _local3:Point = snoodBeingSentStartPos; var _local4:Point = gameManager.gameplayManagerArray[(1 - gameplayManager.playfieldIndex)].thumbnailPoint; if (_local2 != 1){ snoodBeingSent.xPos = interpolate(_local3.x, _local4.x, _local2); snoodBeingSent.yPos = interpolate(_local3.y, _local4.y, _local2); snoodBeingSent.lobScale = (1 + Math.sin((_local2 * Math.PI))); } else { gameManager.gameplayManagerArray[(1 - gameplayManager.playfieldIndex)].snoodBoard.snoodsToBeLobbed.push(String(snoodBeingSent.type)); snoodBeingSent = null; }; } public function updateSnoodBeingLobbed(_arg1:int):void{ snoodBeingLobbedTime = (snoodBeingLobbedTime + _arg1); var _local2:Number = Math.min((snoodBeingLobbedTime / SNOOD_LOB_DURATION), 1); var _local3:Point = gameplayManager.thumbnailPoint; var _local4:Point = snoodBeingLobbedEndPos; if (_local2 != 1){ snoodBeingLobbed.xPos = interpolate(_local3.x, (_local4.x + snoodBoardMatrix.tx), _local2); snoodBeingLobbed.yPos = interpolate(_local3.y, (_local4.y + snoodBoardMatrix.ty), _local2); snoodBeingLobbed.lobScale = (1 + Math.sin((_local2 * Math.PI))); } else { snoodBeingLobbed.lobScale = 1; attachSnoodToBoard(snoodBeingLobbed, snoodBeingLobbedRowCol.x, snoodBeingLobbedRowCol.y); snoodBeingLobbed = null; }; } private function getSpotToLobSnood():Point{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local7:Boolean; var _local8:Snood; var _local5:Array = []; var _local6:int; var _local9:Array = []; _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local7 = false; _local1 = (GameConstants.BOARD_HEIGHT - 1); while (_local1 >= 0) { _local8 = getSnood(_local2, _local1); if (((((_local8) || ((_local1 == 0)))) && (!(_local7)))){ if (_local8){ _local5[_local2] = (_local1 + 1); } else { _local5[_local2] = _local1; }; if (_local1 > _local6){ _local6 = _local1; }; }; _local7 = Boolean(!((_local8 == null))); _local1--; }; _local2++; }; _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local9[_local2] = _local2; _local2++; }; _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local1 = gameManager.seededRandomInt(gameplayManager.lobRand, 0, (GameConstants.BOARD_WIDTH - 1)); _local4 = _local9[_local2]; _local9[_local2] = _local9[_local1]; _local9[_local1] = _local4; _local2++; }; _local2 = 0; while (_local2 < GameConstants.BOARD_WIDTH) { _local3 = _local9[_local2]; if (_local5[_local3] <= _local6){ break; }; _local2++; }; return (new Point(_local3, _local5[_local3])); } public function lobSnoodIfOneAvailable():void{ if (((snoodToBeLobbed) && (!(canLob())))){ snoodBeingLobbed = snoodToBeLobbed; snoodToBeLobbed = null; if (gameplayManager.playfieldIndex == 0){ snoodBeingLobbedRowCol = getSpotToLobSnood(); gameplayManager.lobbingSnood = true; gameplayManager.lastGunAngle = gameplayManager.gun.gunAngle; gameplayManager.lastFiredType = snoodBeingLobbed.type; }; snoodBeingLobbedEndPos = new Point(getPosX(snoodBeingLobbedRowCol.x, snoodBeingLobbedRowCol.y), getPosY(snoodBeingLobbedRowCol.x, snoodBeingLobbedRowCol.y)); snoodBeingLobbed.setState(SnoodStateEnum.SNOOD_STATE_BEING_LOBBED); snoodBeingLobbedTime = 0; }; } } }//package gamecode
Section 150
//SnoodMoodEnum (gamecode.SnoodMoodEnum) package gamecode { public class SnoodMoodEnum { public static const SNOOD_MOOD_NEUTRAL:int = 0; public static const SNOOD_MOOD_HAPPY:int = 1; public static const SNOOD_MOOD_ANGRY:int = 2; public static const SNOOD_MOOD_WORRIED:int = 3; public static const SNOOD_MOOD_SAD:int = 4; public static const SNOOD_MOOD_SPECIAL:int = 5; public static const SNOOD_MOOD_ASLEEP:int = 6; public static const SNOOD_MOOD_VISE_ALERT:int = 7; public static const SNOOD_MOOD_DYING:int = 8; public static const SNOOD_MOOD_MAX:int = 9; } }//package gamecode
Section 151
//SnoodStateEnum (gamecode.SnoodStateEnum) package gamecode { public class SnoodStateEnum { public static const SNOOD_STATE_INVALID:int = 0; public static const SNOOD_STATE_IN_BOARD:int = 1; public static const SNOOD_STATE_FALLING:int = 2; public static const SNOOD_STATE_ON_DECK:int = 3; public static const SNOOD_STATE_IN_GUN:int = 4; public static const SNOOD_STATE_BEING_FIRED:int = 5; public static const SNOOD_STATE_EXPLODING:int = 6; public static const SNOOD_STATE_SHAKING:int = 7; public static const SNOOD_STATE_DISINTEGRATING:int = 8; public static const SNOOD_STATE_SPREADING:int = 9; public static const SNOOD_STATE_BEHIND_ON_DECK:int = 10; public static const SNOOD_STATE_BEHIND_FIRED:int = 11; public static const SNOOD_STATE_ON_MINIBOARD:int = 12; public static const SNOOD_STATE_BEING_LOBBED:int = 13; public static const SNOOD_STATE_MAX:int = 12; } }//package gamecode
Section 152
//SnoodTypeEnum (gamecode.SnoodTypeEnum) package gamecode { public class SnoodTypeEnum { public static const SNOOD_TYPE_INVALID:int = 0; public static const SNOOD_TYPE_SUNNY:int = 1; public static const SNOOD_TYPE_MILDRED:int = 2; public static const SNOOD_TYPE_JAKE:int = 3; public static const SNOOD_TYPE_SPIKE:int = 4; public static const SNOOD_TYPE_GEJI:int = 5; public static const SNOOD_TYPE_ZOD:int = 6; public static const SNOOD_TYPE_MIDORIBE:int = 7; public static const SNOOD_TYPE_NUMBSKULL:int = 8; public static const SNOOD_TYPE_ROCK:int = 9; public static const SNOOD_TYPE_JOKER:int = 10; public static const SNOOD_TYPE_WILDCARD:int = 11; public static const SNOOD_TYPE_MAX:int = 12; public static const SNOOD_TYPE_FIRST_VALID:int = 1; public static const SNOOD_TYPE_MAX_NON_MAGIC:int = 7; public static const SNOOD_FORCE_TYPE:int = 11; } }//package gamecode
Section 153
//StarField (gamecode.StarField) package gamecode { import flash.display.*; import flash.geom.*; public class StarField { public var bitmapData:BitmapData; private var stars:BitmapData; private var blueNebula:BitmapData; private var greenNebula:BitmapData; private var redNebula:BitmapData; private var skyData:BitmapData; private var playFieldRect:Rectangle; private var scrollPos:Number;// = 0 private var rot:Number;// = 0 private var scrollMatrix:Matrix; private var scl:Number; private var pfWidth:int; private var pfHeight:int; private var halfWidth:Number; private var halfHeight:Number; public function StarField(){ scrollMatrix = new Matrix(1, 0, 0, 1, 0, 0); super(); } function cleanup():void{ if (stars){ stars.dispose(); }; if (blueNebula){ blueNebula.dispose(); }; if (greenNebula){ greenNebula.dispose(); }; if (redNebula){ redNebula.dispose(); }; if (bitmapData){ bitmapData.dispose(); }; if (skyData){ skyData.dispose(); }; } function draw(_arg1:int):void{ var _local2:Matrix = new Matrix(); scrollPos = ((scrollPos + (_arg1 / 60000)) % 1); scrollMatrix.ty = (scrollPos * -(playFieldRect.height)); bitmapData.draw(skyData, scrollMatrix, null, null, playFieldRect, true); rot = ((rot + (_arg1 / 40000)) % 1); _local2.identity(); _local2.translate(-32, -32); _local2.rotate(((rot * Math.PI) * 2)); _local2.scale((scl * (575 / 64)), (scl * (575 / 64))); _local2.translate(halfWidth, halfHeight); bitmapData.draw(greenNebula, _local2, null, BlendMode.NORMAL, playFieldRect, true); _local2.identity(); _local2.translate(-32, -32); _local2.rotate(((rot * Math.PI) * 2)); _local2.scale((scl * (700 / 64)), (scl * (700 / 64))); _local2.translate((((rot * (playFieldRect.width + (scl * 700))) - (scl * 350)) * scl), halfHeight); bitmapData.draw(redNebula, _local2, null, BlendMode.NORMAL, playFieldRect, true); _local2.identity(); _local2.translate(-32, -32); _local2.rotate(((rot * Math.PI) * -2)); _local2.scale((scl * (700 / 64)), (scl * (700 / 64))); _local2.translate(halfWidth, halfHeight); bitmapData.draw(blueNebula, _local2, null, BlendMode.NORMAL, playFieldRect, true); } public function resize(_arg1:Rectangle){ var _local2:Matrix; cleanup(); scl = Math.min((_arg1.width / 645), (_arg1.height / 500)); pfWidth = (320 * scl); pfHeight = (480 * scl); bitmapData = new BitmapData(pfWidth, pfHeight, false, 0); playFieldRect = new Rectangle(0, 0, pfWidth, pfHeight); halfWidth = (pfWidth / 2); halfHeight = (pfHeight / 2); stars = new Stars(192, 0x0100); blueNebula = new BlueNebula(64, 64); greenNebula = new GreenNebula(64, 64); redNebula = new RedNebula(64, 64); skyData = new BitmapData(pfWidth, (pfHeight * 2), false, 0); _local2 = new Matrix((pfWidth / stars.width), 0, 0, (pfHeight / stars.height), 0, 0); skyData.draw(stars, _local2, null, null, null, true); _local2.ty = pfHeight; skyData.draw(stars, _local2, null, null, null, true); } } }//package gamecode
Section 154
//StatusTypeEnum (gamecode.StatusTypeEnum) package gamecode { public class StatusTypeEnum { public static const STATUS_TYPE_INVALID:int = 0; public static const STATUS_TYPE_WIN:int = 1; public static const STATUS_TYPE_LOSE:int = 2; public static const STATUS_TYPE_TIE:int = 3; public static const STATUS_TYPE_OPEN:int = 4; public static const STATUS_TYPE_FORFEIT:int = 5; public static const STATUS_TYPE_MAX:int = 6; } }//package gamecode
Section 155
//Story (gamecode.Story) package gamecode { public class Story { private var gameManager:GameManager; public var phase:int; public var step:int; public function Story(_arg1:GameManager){ gameManager = _arg1; phase = 0; step = 0; } public function reset():void{ phase = 0; step = 0; } function getBoardType():int{ if ((((phase == 1)) && ((step == 0)))){ return (2); }; if ((((phase <= 1)) || ((phase >= 10)))){ return (1); }; return (0); } public function getPuzzleNumber():int{ if (getBoardType() == 0){ Error("Story:getPuzzleNumber"); }; return (((96 + (phase * 3)) + step)); } public function getMixMode():Boolean{ return (Boolean((phase == 10))); } public function getMagicSnoodsAvailable():Boolean{ return (Boolean((phase > 2))); } public function getCinematicName():String{ var _local1:String; if (phase < 10){ _local1 = ("Cinematic_00" + phase); } else { _local1 = ("Cinematic_0" + phase); }; return (_local1); } } }//package gamecode
Section 156
//StyleBonus (gamecode.StyleBonus) package gamecode { import flash.display.*; import flash.geom.*; public class StyleBonus { private var TOTAL_STYLE_DURATION:int;// = 3000 private var STARS_DURATION:int;// = 1250 private var NUM_STARS_FRAMES:int;// = 8 private var STYLE_VELOCITY_MAGNITUDE_X:Number;// = 36 private var STYLE_VELOCITY_MAGNITUDE_Y:Number;// = -36 private var NUM_FIREWORKS:int;// = 10 private var FIREWORK_X_MIN:Number;// = 25 private var FIREWORK_X_MAX:Number;// = 75 private var FIREWORK_Y_MIN:Number;// = 40 private var FIREWORK_Y_MAX:Number;// = 100 private var FIREWORK_MIN_SCALE_PERCENT:Number;// = 0.6 private var FIREWORK_MAX_SCALE_PERCENT:Number;// = 1.3 private var FIREWORK_MIN_TIME_STEP:int;// = 0 private var FIREWORK_MAX_TIME_STEP:int;// = 250 private var NUM_FIREWORKS_FRAMES:int;// = 8 private var FIREWORK_DURATION:Number;// = 1400 private var bonusArray:Array; private var starEffectArray:Array; private var fireworksBitmapDataArray:Array; public var styleAnimationPlaying:Boolean; private var previousStyleAnimationPlaying:Boolean; private var styleX:Number; private var styleY:Number; private var stylePoints:int; private var styleTimer:Number; private var styleVelocityX:int; private var styleVelocityY:int; private var styleBonusMatrix:Matrix; private var fireworksArray:Array; private var fireworkColorTransform:ColorTransform; private var fireworksActive:Boolean; private var gameManager:GameManager; private var gameplayManager:GameplayManager; public static const STYLE_MULTIPLIER:int = 5; public function StyleBonus(_arg1:GameManager, _arg2:GameplayManager){ var _local3:int; bonusArray = []; starEffectArray = []; fireworksBitmapDataArray = []; fireworksArray = []; fireworkColorTransform = new ColorTransform(); super(); gameManager = _arg1; gameplayManager = _arg2; styleAnimationPlaying = false; previousStyleAnimationPlaying = false; fireworksActive = false; bonusArray[0] = new Plus25(); bonusArray[1] = new Plus50(); bonusArray[2] = new Plus75(); bonusArray[3] = new Plus100(); bonusArray[4] = new Plus125(); bonusArray[5] = new Plus150(); bonusArray[6] = new Plus175(); bonusArray[7] = new Plus200(); starEffectArray[0] = new StarEffect0(); starEffectArray[1] = new StarEffect1(); starEffectArray[2] = new StarEffect2(); starEffectArray[3] = new StarEffect3(); starEffectArray[4] = new StarEffect4(); starEffectArray[5] = new StarEffect5(); starEffectArray[6] = new StarEffect6(); fireworksBitmapDataArray[0] = new Fireworks0(128, 128); fireworksBitmapDataArray[1] = new Fireworks1(128, 128); fireworksBitmapDataArray[2] = new Fireworks2(128, 128); fireworksBitmapDataArray[3] = new Fireworks3(128, 128); fireworksBitmapDataArray[4] = new Fireworks4(128, 128); fireworksBitmapDataArray[5] = new Fireworks5(128, 128); fireworksBitmapDataArray[6] = new Fireworks6(128, 128); fireworksBitmapDataArray[7] = new Fireworks7(128, 128); } public function destroy():void{ var _local1:BitmapData; while (fireworksBitmapDataArray.length > 0) { _local1 = fireworksBitmapDataArray.pop(); if (_local1){ _local1.dispose(); }; }; } public function resize(_arg1:Rectangle):void{ var _local2:Number = (_arg1.width / 320); styleBonusMatrix = new Matrix(_local2, 0, 0, _local2, _arg1.x, _arg1.y); } private function initFireworks():void{ var _local2:int; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:int; var _local1:int; _local2 = 0; while (_local2 < NUM_FIREWORKS) { _local5 = gameManager.randomNumber(FIREWORK_MIN_SCALE_PERCENT, FIREWORK_MAX_SCALE_PERCENT); _local3 = gameManager.randomNumber(FIREWORK_X_MIN, FIREWORK_X_MAX); if ((((((Math.random() < 0.5)) && (((styleX - _local3) > 0)))) || (((styleX + _local3) > 320)))){ _local3 = -(_local3); }; _local4 = gameManager.randomNumber(FIREWORK_Y_MIN, FIREWORK_Y_MAX); if (Math.random() < 0.5){ _local4 = -(_local4); }; _local6 = (styleX + _local3); _local7 = (styleY + _local4); _local1 = (_local1 + gameManager.randomInt(FIREWORK_MIN_TIME_STEP, FIREWORK_MAX_TIME_STEP)); _local11 = _local1; _local8 = 0; _local10 = 0; _local9 = 0; while (((_local8 + _local10) + _local9) < 0.6) { _local8 = (gameManager.randomInt(0, 5) / 5); _local10 = (gameManager.randomInt(0, 5) / 5); _local9 = (gameManager.randomInt(0, 5) / 5); }; fireworksArray[_local2] = [false, _local6, _local7, _local5, _local11, _local8, _local9, _local10]; _local2++; }; } public function playStyleBonusAnimation(_arg1:int, _arg2:Number, _arg3:Number):void{ var _local4:int; styleAnimationPlaying = true; styleTimer = 0; styleX = _arg2; styleY = _arg3; stylePoints = _arg1; if (stylePoints <= (10 * STYLE_MULTIPLIER)){ _local4 = 0; } else { if (stylePoints <= (20 * STYLE_MULTIPLIER)){ _local4 = 1; } else { if (stylePoints <= (30 * STYLE_MULTIPLIER)){ _local4 = 2; } else { _local4 = 3; }; }; }; gameManager.playSFXLoops(SfxIdsEnum.SFX_ID_FANFARE_02, _local4); if (styleX > 160){ styleVelocityX = -(STYLE_VELOCITY_MAGNITUDE_X); } else { styleVelocityX = STYLE_VELOCITY_MAGNITUDE_X; }; styleVelocityY = STYLE_VELOCITY_MAGNITUDE_Y; fireworksActive = false; if ((((stylePoints > (35 * STYLE_MULTIPLIER))) && (!((gameManager.options.mode == GameModeEnum.GAME_MODE_TIME_ATTACK))))){ fireworksActive = true; initFireworks(); }; } public function update(_arg1:int):void{ var _local2:int; var _local3:Array; var _local4:Number = 0; if (styleAnimationPlaying){ styleTimer = (styleTimer + _arg1); if (fireworksActive){ _local3 = fireworksArray[(fireworksArray.length - 1)]; _local4 = _local3[4]; }; if (styleTimer > (_local4 + FIREWORK_DURATION)){ styleAnimationPlaying = false; } else { if (styleTimer < STARS_DURATION){ styleX = (styleX + (styleVelocityX * (_arg1 / 1000))); styleY = (styleY + (styleVelocityY * (_arg1 / 1000))); }; }; }; } private function getStyleFrame():int{ var _local1:int = Math.min((((stylePoints / STYLE_MULTIPLIER) - 5) / 5), 7); return (_local1); } public function draw(_arg1:BitmapData, _arg2:Rectangle):void{ var _local3:int; var _local4:Matrix; var _local5:int; var _local10:Array; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local6:Number = (styleX + _arg2.x); var _local7:Number = (styleY + _arg2.y); var _local8:Array = [-35, -30, 35, 40]; var _local9:Array = [35, -27, 40, -32]; if (styleAnimationPlaying){ _local5 = Math.min((starEffectArray.length * (styleTimer / STARS_DURATION)), (starEffectArray.length - 1)); _local4 = new Matrix(); _local4.translate(-29.65, -29.275); _local4.scale((110 / 70), (110 / 70)); _local4.translate(_local6, _local7); _arg1.draw(starEffectArray[_local5], _local4, null, null, _arg2, true); _local5 = Math.max(0, (_local5 - 1)); _local3 = 0; while (_local3 < 4) { _local4 = new Matrix(); _local4.translate(-29.65, -29.275); _local4.translate((_local6 + _local8[_local3]), (_local7 + _local9[_local3])); _arg1.draw(starEffectArray[_local5], _local4, null, null, _arg2, true); _local3++; }; if (gameManager.options.mode != GameModeEnum.GAME_MODE_STORY){ _local4 = new Matrix(); _local4.translate(_local6, _local7); _local5 = getStyleFrame(); _arg1.draw(bonusArray[_local5], _local4, null, null, _arg2, true); }; if (fireworksActive){ _local3 = 0; while (_local3 < NUM_FIREWORKS) { _local10 = fireworksArray[_local3]; _local17 = _local10[4]; if ((((styleTimer > _local17)) && ((styleTimer < (_local17 + FIREWORK_DURATION))))){ if (_local10[0] == false){ _local10[0] = true; gameManager.playSFX(SfxIdsEnum.SFX_ID_FIREWORKS_1); }; _local5 = Math.min((fireworksBitmapDataArray.length * ((styleTimer - _local17) / STARS_DURATION)), (fireworksBitmapDataArray.length - 1)); fireworkColorTransform.redMultiplier = _local10[5]; fireworkColorTransform.greenMultiplier = _local10[6]; fireworkColorTransform.blueMultiplier = _local10[7]; _local4 = new Matrix(); _local4.translate(-64, -64); _local4.scale(_local10[3], _local10[3]); _local4.translate((_local10[1] + _arg2.x), (_local10[2] + _arg2.y)); _arg1.draw(fireworksBitmapDataArray[_local5], _local4, fireworkColorTransform, null, _arg2, true); }; _local3++; }; }; }; } } }//package gamecode
Section 157
//Vise (gamecode.Vise) package gamecode { import flash.display.*; import flash.geom.*; public class Vise { private var currentBitmap:BitmapData; private var viseArray:Array; private var currentIndex:int;// = 0 private var matrix:Matrix; private var baseY:Number; private var snoundPlaying:Boolean;// = false private var gameManager:GameManager; private var gameplayManager:GameplayManager; private var snoodBoard:SnoodBoard; public function Vise(_arg1:GameManager, _arg2:GameplayManager){ viseArray = []; super(); gameManager = _arg1; gameplayManager = _arg2; snoodBoard = gameplayManager.snoodBoard; } function destroy(){ var _local2:BitmapData; var _local1:int; _local1 = 0; while (_local1 < viseArray.length) { _local2 = viseArray[_local1]; if (_local2){ _local2.dispose(); }; _local1++; }; } public function update(_arg1:int):void{ var _local2:Number = snoodBoard.getViseMoving(); if (_local2 != 0){ if (!snoundPlaying){ snoundPlaying = true; gameManager.playSFX(SfxIdsEnum.SFX_ID_DRILL_PRESS); }; if (_local2 > 0){ currentIndex = (currentIndex - 1); if (currentIndex < 0){ currentIndex = 8; }; } else { currentIndex = ((currentIndex + 1) % 9); }; currentBitmap = viseArray[currentIndex]; } else { if (snoundPlaying){ snoundPlaying = false; }; }; } public function draw(_arg1:BitmapData, _arg2:Rectangle):void{ matrix.ty = (baseY + snoodBoard.getYOffset()); _arg1.draw(currentBitmap, matrix, null, null, _arg2, true); } public function resize(_arg1:Rectangle):void{ var _local2:Number = (_arg1.width / 320); var _local3:VectorVise = new VectorVise(); var _local4:int; var _local5:BitmapData; var _local6:Matrix = new Matrix(_local2, 0, 0, _local2, 0, 0); _local4 = 0; while (_local4 < 9) { _local5 = viseArray[_local4]; if (_local5){ _local5.dispose(); }; _local5 = new BitmapData(_arg1.width, _arg1.width, true, 0); _local3.animWheel0.gotoAndStop((_local4 + 1)); _local3.animWheel1.gotoAndStop((_local4 + 1)); _local3.animWheel2.gotoAndStop((_local4 + 1)); _local3.animWheel3.gotoAndStop((_local4 + 1)); _local3.animWheel4.gotoAndStop((_local4 + 1)); _local3.animWheel5.gotoAndStop((_local4 + 1)); _local3.animWheel6.gotoAndStop((_local4 + 1)); _local3.animWheel7.gotoAndStop((_local4 + 1)); _local3.animWheel8.gotoAndStop((_local4 + 1)); _local3.animWheel9.gotoAndStop((_local4 + 1)); _local3.animWheel10.gotoAndStop((_local4 + 1)); _local3.animWheel11.gotoAndStop((_local4 + 1)); _local3.animWheel12.gotoAndStop((_local4 + 1)); _local5.draw(_local3, _local6, null, null, null, true); viseArray[_local4] = _local5; _local4++; }; currentBitmap = viseArray[0]; matrix = new Matrix(1, 0, 0, 1, _arg1.x); baseY = (_arg1.y - currentBitmap.height); } } }//package gamecode
Section 158
//mp3 (gejisglide.mp3) package gejisglide { import flash.media.*; public dynamic class mp3 extends Sound { } }//package gejisglide
Section 159
//PropTween (gs.core.tween.PropTween) package gs.core.tween { public class PropTween { public var target:Object; public var property:String; public var start:Number; public var change:Number; public var name:String; public var isPlugin:Boolean; public var nextNode:PropTween; public var prevNode:PropTween; public function PropTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:PropTween=null){ this.target = _arg1; this.property = _arg2; this.start = _arg3; this.change = _arg4; this.name = _arg5; this.isPlugin = _arg6; this.nextNode = _arg7; } } }//package gs.core.tween
Section 160
//SimpleTimeline (gs.core.tween.SimpleTimeline) package gs.core.tween { public class SimpleTimeline extends Tweenable { protected var _firstChild:Tweenable; protected var _lastChild:Tweenable; public var autoRemoveChildren:Boolean; public function SimpleTimeline(_arg1:Object=null){ super(0, _arg1); } public function addChild(_arg1:Tweenable):void{ if (((!((_arg1.timeline == null))) && (!(_arg1.gc)))){ _arg1.timeline.remove(_arg1); }; if (_firstChild != null){ _firstChild.prevNode = _arg1; _arg1.nextNode = _firstChild; } else { _arg1.nextNode = null; }; _firstChild = _arg1; _arg1.prevNode = null; _arg1.timeline = this; _arg1.gc = false; } public function remove(_arg1:Tweenable):void{ if (_arg1.nextNode != null){ _arg1.nextNode.prevNode = _arg1.prevNode; } else { if (_lastChild == _arg1){ _lastChild = _arg1.prevNode; }; }; if (_arg1.prevNode != null){ _arg1.prevNode.nextNode = _arg1.nextNode; } else { if (_firstChild == _arg1){ _firstChild = _arg1.nextNode; }; }; _arg1.gc = true; _arg1.active = false; } override public function renderTime(_arg1:Number):void{ this.cachedTotalTime = (this.cachedTime = _arg1); var _local2:Tweenable = _firstChild; while (_local2 != null) { if (((_local2.active) || ((((_arg1 >= _local2.startTime)) && (!(_local2.cachedPaused)))))){ _local2.renderTime(((_arg1 - _local2.startTime) * _local2.cachedTimeScale)); }; _local2 = _local2.nextNode; }; } } }//package gs.core.tween
Section 161
//Tweenable (gs.core.tween.Tweenable) package gs.core.tween { import gs.*; public class Tweenable { protected var _delay:Number; protected var _hasUpdate:Boolean; public var vars:Object; public var startTime:Number; public var active:Boolean; public var gc:Boolean; public var initted:Boolean; public var timeline:SimpleTimeline; public var cachedTime:Number; public var cachedTotalTime:Number; public var cachedDuration:Number; public var cachedTotalDuration:Number; public var cachedTimeScale:Number; public var nextNode:Tweenable; public var prevNode:Tweenable; public var cacheIsDirty:Boolean; public var cachedPaused:Boolean; public var data; public static const version:Number = 0.1; protected static var _classInitted:Boolean; public function Tweenable(_arg1:Number=0, _arg2:Object=null){ this.vars = ((_arg2) || ({})); this.cachedDuration = (this.cachedTotalDuration = ((_arg1) || (0))); _delay = ((this.vars.delay) || (0)); this.cachedTimeScale = ((this.vars.timeScale) || (1)); this.active = Boolean((((_arg1 == 0)) && ((_delay == 0)))); this.cachedTotalTime = (this.cachedTime = 0); this.data = this.vars.data; if (!_classInitted){ if (isNaN(TweenLite.rootFrame)){ TweenLite.initClass(); _classInitted = true; } else { return; }; }; var _local3:SimpleTimeline = ((this.vars.timeline is SimpleTimeline)) ? this.vars.timeline : (this.vars.useFrames) ? TweenLite.rootFramesTimeline : TweenLite.rootTimeline; this.startTime = (_local3.cachedTotalTime + _delay); _local3.addChild(this); } public function renderTime(_arg1:Number):void{ } public function complete(_arg1:Boolean=false):void{ } public function get delay():Number{ return (_delay); } public function set delay(_arg1:Number):void{ this.startTime = (this.startTime + (_arg1 - _delay)); _delay = _arg1; } public function get duration():Number{ return (this.cachedDuration); } public function set duration(_arg1:Number):void{ this.cachedDuration = (this.cachedTotalDuration = _arg1); } public function get totalDuration():Number{ return (this.cachedTotalDuration); } public function set totalDuration(_arg1:Number):void{ this.duration = _arg1; } public function get enabled():Boolean{ return (!(this.gc)); } public function set enabled(_arg1:Boolean):void{ var _local2:Object; if (_arg1 == this.gc){ if (_arg1){ if ((this is TweenLite)){ _local2 = (this as TweenLite).target; if (!(_local2 in TweenLite.masterList)){ TweenLite.masterList[_local2] = [this]; } else { TweenLite.masterList[_local2].push(this); }; }; this.timeline.addChild(this); } else { this.timeline.remove(this); }; }; } } }//package gs.core.tween
Section 162
//Back (gs.easing.Back) package gs.easing { public class Back { public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{ _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2)); } public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2)); }; _arg1 = (_arg1 - 2); _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2)); } } }//package gs.easing
Section 163
//AutoAlphaPlugin (gs.plugins.AutoAlphaPlugin) package gs.plugins { import flash.display.*; import gs.*; public class AutoAlphaPlugin extends VisiblePlugin { protected var _ignoreVisible:Boolean; public static const VERSION:Number = 2; public static const API:Number = 1; public function AutoAlphaPlugin(){ this.propName = "autoAlpha"; this.overwriteProps = ["alpha", "visible"]; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ init(_arg1, Boolean(!((_arg2 == 0))), _arg3); addTween(_arg1, "alpha", _arg1.alpha, _arg2, "alpha"); return (true); } override public function killProps(_arg1:Object):void{ super.killProps(_arg1); _ignoreVisible = Boolean(("visible" in _arg1)); } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); if (!_ignoreVisible){ super.changeFactor = _arg1; }; } } }//package gs.plugins
Section 164
//EndArrayPlugin (gs.plugins.EndArrayPlugin) package gs.plugins { import flash.display.*; import gs.*; public class EndArrayPlugin extends TweenPlugin { protected var _a:Array; protected var _info:Array; public static const VERSION:Number = 1.5; public static const API:Number = 1; public function EndArrayPlugin(){ _info = []; super(); this.propName = "endArray"; this.overwriteProps = ["endArray"]; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){ return (false); }; init((_arg1 as Array), _arg2); return (true); } public function init(_arg1:Array, _arg2:Array):void{ _a = _arg1; var _local3:int = (_arg2.length - 1); while (_local3 > -1) { if (((!((_arg1[_local3] == _arg2[_local3]))) && (!((_arg1[_local3] == null))))){ _info[_info.length] = new ArrayTweenInfo(_local3, _a[_local3], (_arg2[_local3] - _a[_local3])); }; _local3--; }; } override public function set changeFactor(_arg1:Number):void{ var _local2:int; var _local3:ArrayTweenInfo; var _local4:Number; var _local5:int; if (this.round){ _local2 = (_info.length - 1); while (_local2 > -1) { _local3 = _info[_local2]; _local4 = (_local3.start + (_local3.change * _arg1)); _local5 = ((_local4)<0) ? -1 : 1; _a[_local3.index] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4); _local2--; }; } else { _local2 = (_info.length - 1); while (_local2 > -1) { _local3 = _info[_local2]; _a[_local3.index] = (_local3.start + (_local3.change * _arg1)); _local2--; }; }; } } }//package gs.plugins class ArrayTweenInfo { public var index:uint; public var start:Number; public var change:Number; private function ArrayTweenInfo(_arg1:uint, _arg2:Number, _arg3:Number){ this.index = _arg1; this.start = _arg2; this.change = _arg3; } }
Section 165
//FramePlugin (gs.plugins.FramePlugin) package gs.plugins { import flash.display.*; import gs.*; public class FramePlugin extends TweenPlugin { public var frame:int; protected var _target:MovieClip; public static const VERSION:Number = 1.01; public static const API:Number = 1; public function FramePlugin(){ this.propName = "frame"; this.overwriteProps = ["frame", "frameLabel"]; this.round = true; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ if (((!((_arg1 is MovieClip))) || (isNaN(_arg2)))){ return (false); }; _target = (_arg1 as MovieClip); this.frame = _target.currentFrame; addTween(this, "frame", this.frame, _arg2, "frame"); return (true); } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _target.gotoAndStop(this.frame); } } }//package gs.plugins
Section 166
//RemoveTintPlugin (gs.plugins.RemoveTintPlugin) package gs.plugins { import flash.display.*; import gs.*; public class RemoveTintPlugin extends TintPlugin { public static const VERSION:Number = 1.01; public static const API:Number = 1; public function RemoveTintPlugin(){ this.propName = "removeTint"; } } }//package gs.plugins
Section 167
//TintPlugin (gs.plugins.TintPlugin) package gs.plugins { import flash.display.*; import gs.core.tween.*; import flash.geom.*; import gs.*; public class TintPlugin extends TweenPlugin { protected var _target:DisplayObject; protected var _ct:ColorTransform; protected var _ignoreAlpha:Boolean; public static const VERSION:Number = 1.1; public static const API:Number = 1; protected static var _props:Array = ["redMultiplier", "greenMultiplier", "blueMultiplier", "alphaMultiplier", "redOffset", "greenOffset", "blueOffset", "alphaOffset"]; public function TintPlugin(){ this.propName = "tint"; this.overwriteProps = ["tint"]; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ if (!(_arg1 is DisplayObject)){ return (false); }; var _local4:ColorTransform = new ColorTransform(); if (((!((_arg2 == null))) && (!((_arg3.vars.removeTint == true))))){ _local4.color = uint(_arg2); }; _ignoreAlpha = true; init((_arg1 as DisplayObject), _local4); return (true); } public function init(_arg1:DisplayObject, _arg2:ColorTransform):void{ var _local3:int; var _local4:String; _target = _arg1; _ct = _target.transform.colorTransform; _local3 = (_props.length - 1); while (_local3 > -1) { _local4 = _props[_local3]; if (_ct[_local4] != _arg2[_local4]){ _tweens[_tweens.length] = new PropTween(_ct, _local4, _ct[_local4], (_arg2[_local4] - _ct[_local4]), "tint", false); }; _local3--; }; } override public function set changeFactor(_arg1:Number):void{ var _local2:ColorTransform; updateTweens(_arg1); if (_ignoreAlpha){ _local2 = _target.transform.colorTransform; _ct.alphaMultiplier = _local2.alphaMultiplier; _ct.alphaOffset = _local2.alphaOffset; }; _target.transform.colorTransform = _ct; } } }//package gs.plugins
Section 168
//TweenPlugin (gs.plugins.TweenPlugin) package gs.plugins { import gs.core.tween.*; import gs.*; public class TweenPlugin { public var propName:String; public var overwriteProps:Array; public var round:Boolean; public var onComplete:Function; protected var _tweens:Array; protected var _changeFactor:Number;// = 0 public static const VERSION:Number = 1.03; public static const API:Number = 1; public function TweenPlugin(){ _tweens = []; super(); } public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ addTween(_arg1, this.propName, _arg1[this.propName], _arg2, this.propName); return (true); } protected function addTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4, _arg5:String=null):void{ var _local6:Number; if (_arg4 != null){ _local6 = ((typeof(_arg4))=="number") ? (_arg4 - _arg3) : Number(_arg4); if (_local6 != 0){ _tweens[_tweens.length] = new PropTween(_arg1, _arg2, _arg3, _local6, ((_arg5) || (_arg2)), false); }; }; } protected function updateTweens(_arg1:Number):void{ var _local2:int; var _local3:PropTween; var _local4:Number; var _local5:int; if (this.round){ _local2 = (_tweens.length - 1); while (_local2 > -1) { _local3 = _tweens[_local2]; _local4 = (_local3.start + (_local3.change * _arg1)); _local5 = ((_local4)<0) ? -1 : 1; _local3.target[_local3.property] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4); _local2--; }; } else { _local2 = (_tweens.length - 1); while (_local2 > -1) { _local3 = _tweens[_local2]; _local3.target[_local3.property] = (_local3.start + (_local3.change * _arg1)); _local2--; }; }; } public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _changeFactor = _arg1; } public function get changeFactor():Number{ return (_changeFactor); } public function killProps(_arg1:Object):void{ var _local2:int; _local2 = (this.overwriteProps.length - 1); while (_local2 > -1) { if ((this.overwriteProps[_local2] in _arg1)){ this.overwriteProps.splice(_local2, 1); }; _local2--; }; _local2 = (_tweens.length - 1); while (_local2 > -1) { if ((_tweens[_local2].name in _arg1)){ _tweens.splice(_local2, 1); }; _local2--; }; } public static function activate(_arg1:Array):Boolean{ var _local2:int; var _local3:Object; _local2 = (_arg1.length - 1); while (_local2 > -1) { _local3 = new (_arg1[_local2]); TweenLite.plugins[_local3.propName] = _arg1[_local2]; _local2--; }; return (true); } } }//package gs.plugins
Section 169
//VisiblePlugin (gs.plugins.VisiblePlugin) package gs.plugins { import flash.display.*; import gs.*; public class VisiblePlugin extends TweenPlugin { protected var _target:Object; protected var _tween:TweenLite; protected var _visible:Boolean; protected var _hideAtStart:Boolean; public static const VERSION:Number = 1.51; public static const API:Number = 1; public function VisiblePlugin(){ this.propName = "visible"; this.overwriteProps = ["visible"]; this.onComplete = onCompleteTween; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ init(_arg1, Boolean(_arg2), _arg3); return (true); } protected function init(_arg1:Object, _arg2:Boolean, _arg3:TweenLite):void{ _target = _arg1; _tween = _arg3; _visible = _arg2; if ((((((_tween.vars.runBackwards == true)) && (!((_tween.vars.renderOnStart == false))))) && ((_arg2 == false)))){ _hideAtStart = true; }; } public function onCompleteTween():void{ if (((!(_hideAtStart)) && (((!((_tween.cachedTime == 0))) || ((_tween.duration == 0)))))){ _target.visible = _visible; }; } override public function set changeFactor(_arg1:Number):void{ if (((_hideAtStart) && ((_tween.cachedTotalTime == 0)))){ _target.visible = false; } else { if (_target.visible != true){ _target.visible = true; }; }; } } }//package gs.plugins
Section 170
//VolumePlugin (gs.plugins.VolumePlugin) package gs.plugins { import flash.display.*; import flash.media.*; import gs.*; public class VolumePlugin extends TweenPlugin { protected var _target:Object; protected var _st:SoundTransform; public static const VERSION:Number = 1.01; public static const API:Number = 1; public function VolumePlugin(){ this.propName = "volume"; this.overwriteProps = ["volume"]; } override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{ if (((isNaN(_arg2)) || (!(_arg1.hasOwnProperty("soundTransform"))))){ return (false); }; _target = _arg1; _st = _target.soundTransform; addTween(_st, "volume", _st.volume, _arg2, "volume"); return (true); } override public function set changeFactor(_arg1:Number):void{ updateTweens(_arg1); _target.soundTransform = _st; } } }//package gs.plugins
Section 171
//OverwriteManager (gs.OverwriteManager) package gs { import gs.core.tween.*; import flash.utils.*; import flash.errors.*; public class OverwriteManager { public static const version:Number = 5; public static const NONE:int = 0; public static const ALL:int = 1; public static const AUTO:int = 2; public static const CONCURRENT:int = 3; public static var mode:int; public static var enabled:Boolean; public static function init(_arg1:int=2):int{ if (TweenLite.version < 11){ trace("TweenLite warning: Your TweenLite class needs to be updated to work with OverwriteManager (or you may need to clear your ASO files). Please download and install the latest version from http://www.tweenlite.com."); }; TweenLite.overwriteManager = OverwriteManager; mode = _arg1; enabled = true; return (mode); } public static function manageOverwrites(_arg1:TweenLite, _arg2:Object, _arg3:Array):void{ var _local9:int; var _local10:TweenLite; var _local11:Number; var _local12:Number; var _local13:Tweenable; var _local14:Number; var _local15:SimpleTimeline; var _local4:Object = _arg1.vars; var _local5:int = ((_local4.overwrite)==undefined) ? mode : int(_local4.overwrite); if ((((_local5 < 2)) || ((_arg3 == null)))){ return; }; var _local6:Number = _arg1.startTime; var _local7:Array = []; var _local8:Array = []; _local9 = (_arg3.length - 1); while (_local9 > -1) { _local10 = _arg3[_local9]; if ((((_local10 == _arg1)) || (_local10.gc))){ } else { if (((((_local10.active) && (getGlobalActive(_local10)))) || ((((((_local10.timeline == _arg1.timeline)) && ((_local10.startTime <= _local6)))) && (((_local10.startTime + _local10.totalDuration) > _local6)))))){ _local7[_local7.length] = _local10; } else { if (_local10.timeline != _arg1.timeline){ _local8[_local8.length] = _local10; }; }; }; _local9--; }; if (_local8.length != 0){ _local11 = _arg1.cachedTimeScale; _local12 = _local6; _local15 = _arg1.timeline; while (_local15 != null) { _local11 = (_local11 * _local15.cachedTimeScale); _local12 = (_local12 + _local15.startTime); _local15 = _local15.timeline; }; _local6 = (_local11 * _local12); _local9 = (_local8.length - 1); while (_local9 > -1) { _local13 = _local8[_local9]; _local11 = _local13.cachedTimeScale; _local12 = _local13.startTime; _local15 = _local13.timeline; while (_local15 != null) { _local11 = (_local11 * _local15.cachedTimeScale); _local12 = (_local12 + _local15.startTime); _local15 = _local15.timeline; }; _local14 = (_local11 * _local12); if ((((_local14 <= _local6)) && (((_local14 + (_local13.totalDuration * _local11)) > _local6)))){ _local7[_local7.length] = _local13; }; _local9--; }; }; if (_local7.length == 0){ return; }; if (_local5 == AUTO){ _local9 = (_local7.length - 1); while (_local9 > -1) { _local7[_local9].killVars(_arg2); _local9--; }; } else { _local9 = (_local7.length - 1); while (_local9 > -1) { _local7[_local9].enabled = false; _local9--; }; }; } public static function getGlobalActive(_arg1:Tweenable):Boolean{ var _local2:Tweenable = _arg1; while (_local2 != null) { if (!_local2.active){ return (false); }; _local2 = _local2.timeline; }; return (true); } } }//package gs
Section 172
//TimelineLite (gs.TimelineLite) package gs { import gs.core.tween.*; import flash.utils.*; public class TimelineLite extends SimpleTimeline { protected var _reversed:Boolean; protected var _pauseTime:Number; protected var _labels:Object; public static const version:Number = 0.41; public static const ALIGN_SEQUENCE:String = "sequence"; public static const ALIGN_START:String = "start"; public static const ALIGN_INIT:String = "init"; protected static var _defaultTweenClass:Class; private static var _overwriteMode:int = (OverwriteManager.enabled) ? OverwriteManager.mode : OverwriteManager.init(); ; public function TimelineLite(_arg1:Object=null){ var $vars = _arg1; super($vars); if (this.vars.paused == true){ this.paused = true; }; _labels = {}; this.autoRemoveChildren = Boolean((this.vars.autoRemoveChildren == true)); _hasUpdate = Boolean((typeof(this.vars.onUpdate) == "function")); if (_defaultTweenClass == null){ try { _defaultTweenClass = (getDefinitionByName("gs.TweenMax") as Class); } catch($e:Error) { _defaultTweenClass = TweenLite; }; }; if ((this.vars.tweens is Array)){ this.insertMultiple(this.vars.tweens, 0, ((this.vars.align) || (ALIGN_INIT)), ((this.vars.stagger) || (0)), this.vars.tweenClass); }; } override public function addChild(_arg1:Tweenable):void{ var _local2:Tweenable; var _local3:Number; setDirtyCache(true); if (((!((_arg1.timeline == null))) && (!(_arg1.gc)))){ _arg1.timeline.remove(_arg1); }; _arg1.timeline = this; if (_firstChild == null){ _firstChild = (_lastChild = _arg1); _arg1.nextNode = (_arg1.prevNode = null); } else { _local2 = _lastChild; _local3 = _arg1.startTime; while (((!((_local2 == null))) && ((_local3 < _local2.startTime)))) { _local2 = _local2.prevNode; }; if (_local2 == null){ _firstChild.prevNode = _arg1; _arg1.nextNode = _firstChild; _arg1.prevNode = null; _firstChild = _arg1; } else { if (_local2.nextNode != null){ _local2.nextNode.prevNode = _arg1; } else { if (_local2 == _lastChild){ _lastChild = _arg1; }; }; _arg1.prevNode = _local2; _arg1.nextNode = _local2.nextNode; _local2.nextNode = _arg1; }; }; _arg1.gc = false; _arg1.active = Boolean(((((!(_arg1.cachedPaused)) && ((_arg1.cachedTotalTime > 0)))) && ((_arg1.cachedTotalTime < _arg1.cachedTotalDuration)))); } override public function remove(_arg1:Tweenable):void{ super.remove(_arg1); setDirtyCache(true); } public function insert(_arg1:Tweenable, _arg2=0):void{ if (typeof(_arg2) == "string"){ _arg2 = ((_labels[_arg2]) || (0)); }; _arg1.startTime = (_arg2 + _arg1.delay); addChild(_arg1); } public function append(_arg1:Tweenable):void{ insert(_arg1, ((_lastChild)==null) ? 0 : (_lastChild.startTime + _lastChild.totalDuration)); } public function prepend(_arg1:Tweenable, _arg2:Boolean=false):void{ var _local4:Number; var _local5:Tweenable; var _local6:String; var _local3:Number = 0; if (_firstChild != null){ _local3 = _firstChild.startTime; _local4 = (_arg1.totalDuration + _arg1.delay); _local5 = _firstChild; while (_local5 != null) { _local5.startTime = (_local5.startTime + _local4); _local5 = _local5.nextNode; }; if (_arg2){ for (_local6 in _labels) { _labels[_local6] = (_labels[_local6] + _local4); }; }; }; insert(_arg1, _local3); } public function addLabel(_arg1:String, _arg2:Number):void{ _labels[_arg1] = _arg2; } public function restart(_arg1:Boolean=false):void{ this.totalTime = (_arg1) ? -(_delay) : 0; this.paused = false; } public function play():void{ this.paused = false; } public function stop():void{ this.paused = true; } public function gotoAndPlay(_arg1):void{ goto(_arg1); this.paused = false; } public function gotoAndStop(_arg1):void{ goto(_arg1); this.paused = true; } public function goto(_arg1):void{ if (typeof(_arg1) == "string"){ _arg1 = _labels[_arg1]; }; if (!isNaN(_arg1)){ this.totalTime = _arg1; }; } public function reverse(_arg1:Boolean=true):void{ this.startTime = (this.timeline.cachedTotalTime - ((1 - this.totalProgress) * this.totalDuration)); _reversed = !(_reversed); setDirtyCache(false); if (_arg1){ this.paused = false; if (this.progress == 1){ this.totalTime = 0; }; } else { this.enabled = true; }; } override public function renderTime(_arg1:Number):void{ var _local4:Tweenable; var _local5:Boolean; var _local6:Boolean; var _local2:Number = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration; var _local3:Number = this.cachedTime; if (_arg1 >= _local2){ if (_reversed){ forceChildrenToBeginning(); } else { forceChildrenToEnd(); }; _local6 = true; _local5 = _local6; } else { if (_arg1 <= 0){ if (_arg1 < 0){ this.active = false; }; if (_reversed){ forceChildrenToEnd(); } else { forceChildrenToBeginning(); }; _local6 = true; } else { this.cachedTotalTime = (this.cachedTime = (_reversed) ? (_local2 - _arg1) : _arg1); }; }; if (!this.initted){ this.active = (this.initted = true); if (this.vars.onStart != null){ this.vars.onStart.apply(null, this.vars.onStartParams); }; } else { if (this.cachedTime == _local3){ return; }; }; if (_local6){ } else { if ((this.cachedTime - _local3) > 0){ _local4 = _firstChild; while (_local4 != null) { if (((_local4.active) || (((!(_local4.cachedPaused)) && ((_local4.startTime <= this.cachedTime)))))){ _local4.renderTime(((this.cachedTime - _local4.startTime) * _local4.cachedTimeScale)); }; _local4 = _local4.nextNode; }; } else { _local4 = _lastChild; while (_local4 != null) { if (((_local4.active) || (((!(_local4.cachedPaused)) && ((_local4.startTime <= _local3)))))){ _local4.renderTime(((this.cachedTime - _local4.startTime) * _local4.cachedTimeScale)); }; _local4 = _local4.prevNode; }; }; }; if (_hasUpdate){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local5){ complete(true); }; } protected function forceChildrenToBeginning():void{ this.cachedTotalTime = (this.cachedTime = 0); var _local1:Tweenable = _firstChild; while (_local1 != null) { if (((_local1.active) || (((!(_local1.cachedPaused)) && (!((_local1.cachedTotalTime == 0))))))){ _local1.renderTime(0); }; _local1 = _local1.nextNode; }; } protected function forceChildrenToEnd():void{ this.cachedTotalTime = this.cachedTotalDuration; this.cachedTime = this.cachedDuration; var _local1:Tweenable = _firstChild; while (_local1 != null) { if (((_local1.active) || (((!(_local1.cachedPaused)) && (!((_local1.cachedTotalTime == _local1.cachedTotalDuration))))))){ _local1.renderTime(_local1.cachedTotalDuration); }; _local1 = _local1.nextNode; }; } override public function complete(_arg1:Boolean=false):void{ if (!_arg1){ renderTime(this.totalDuration); return; }; if (this.timeline.autoRemoveChildren){ this.timeline.remove(this); } else { this.active = false; }; if (this.vars.onComplete != null){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); }; } public function getChildren(_arg1:Boolean=true, _arg2:Boolean=true, _arg3:Boolean=true):Array{ var _local4:Array = []; var _local5:Tweenable = _firstChild; while (_local5 != null) { if ((_local5 is TweenLite)){ if (_arg2){ _local4[_local4.length] = _local5; }; } else { if (_arg3){ _local4[_local4.length] = _local5; }; if (_arg1){ _local4.concat((_local5 as TimelineLite).getChildren(true, _arg2, _arg3)); }; }; _local5 = _local5.nextNode; }; return (_local4); } public function getTweensOf(_arg1:Object, _arg2:Boolean=true):Array{ var _local5:int; var _local3:Array = getChildren(_arg2, true, false); var _local4:Array = []; var _local6:uint = _local3.length; _local5 = 0; while (_local5 < _local6) { if (_local3[_local5].target == _arg1){ _local4[_local4.length] = _local3[_local5]; }; _local5++; }; return (_local4); } public function killTweensOf(_arg1:Object, _arg2:Boolean=true):void{ var _local4:int; var _local3:Array = getTweensOf(_arg1, _arg2); _local4 = (_local3.length - 1); while (_local4 > -1) { _local3[_local4].enabled = false; _local4--; }; } public function insertMultiple(_arg1:Array, _arg2=0, _arg3:String="init", _arg4:Number=0, _arg5:Class=null):void{ var _local6:int; var _local7:Object; var _local8:Tweenable; if (_arg5 == null){ _arg5 = _defaultTweenClass; }; var _local9:Number = ((_arg2) || (0)); var _local10:uint = _arg1.length; if (typeof(_arg2) == "string"){ _local9 = ((_labels[_arg2]) || (0)); }; _local6 = 0; while (_local6 < _local10) { _local7 = _arg1[_local6]; if ((_local7 is Tweenable)){ _local8 = (_local7 as Tweenable); } else { if ((_local7 is Array)){ _local8 = new _arg5(_local7[0], _local7[1], _local7[2]); } else { if ((_local7 is Function)){ _local8 = new TweenLite(_local7, 0, {delay:0.002, onComplete:_local7, overwrite:0}); } else { _local8 = new TimelineLite(_local7); }; }; }; insert(_local8, _local9); if (_arg3 == ALIGN_SEQUENCE){ _local9 = (_local8.startTime + _local8.totalDuration); } else { if (_arg3 == ALIGN_START){ _local8.startTime = (_local8.startTime - _local8.delay); }; }; if ((_local7 is Function)){ _local8.startTime = (_local8.startTime - 0.002); if (_arg3 == ALIGN_SEQUENCE){ _local9 = (_local9 - 0.002); }; }; _local9 = (_local9 + _arg4); _local6++; }; setDirtyCache(true); } protected function setDirtyCache(_arg1:Boolean=true):void{ var _local2:Tweenable = (_arg1) ? this : this.timeline; while (_local2 != null) { _local2.cacheIsDirty = true; _local2 = _local2.timeline; }; } override public function set delay(_arg1:Number):void{ super.delay = _arg1; setDirtyCache(true); } public function get progress():Number{ return ((_reversed) ? (1 - (this.cachedTime / this.duration)) : (this.cachedTime / this.duration)); } public function set progress(_arg1:Number):void{ this.totalTime = (_reversed) ? ((1 - _arg1) * this.duration) : (this.duration * _arg1); } public function get totalProgress():Number{ return ((_reversed) ? (1 - (this.cachedTotalTime / this.totalDuration)) : (this.cachedTotalTime / this.totalDuration)); } public function set totalProgress(_arg1:Number):void{ this.totalTime = (_reversed) ? ((1 - _arg1) * this.totalDuration) : (this.totalDuration * _arg1); } public function get time():Number{ return (this.cachedTime); } public function set time(_arg1:Number):void{ this.totalTime = _arg1; } public function get totalTime():Number{ return (this.cachedTotalTime); } public function set totalTime(_arg1:Number):void{ this.startTime = (this.timeline.cachedTotalTime - _arg1); renderTime(_arg1); setDirtyCache(false); this.enabled = true; } override public function get duration():Number{ var _local1:Number; if (this.cacheIsDirty){ _local1 = this.totalDuration; }; return (this.cachedDuration); } override public function set duration(_arg1:Number):void{ this.timeScale = (this.duration / _arg1); } override public function get totalDuration():Number{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Tweenable; var _local5:Number; var _local6:Tweenable; if (this.cacheIsDirty){ _local1 = 0; _local2 = 0; _local4 = _firstChild; _local5 = -(Infinity); while (_local4 != null) { _local6 = _local4.nextNode; if (((!(_local4.cachedPaused)) || (this.cachedPaused))){ if (_local4.startTime < _local5){ this.addChild(_local4); _local5 = _local4.prevNode.startTime; } else { _local5 = _local4.startTime; }; if (_local4.startTime < _local1){ _local1 = _local4.startTime; }; _local3 = (_local4.startTime + _local4.totalDuration); if (_local3 > _local2){ _local2 = _local3; }; }; _local4 = _local6; }; this.cachedDuration = (this.cachedTotalDuration = (_local2 - _local1)); this.cacheIsDirty = false; }; return (this.cachedTotalDuration); } override public function set totalDuration(_arg1:Number):void{ this.timeScale = (this.totalDuration / _arg1); } public function get timeScale():Number{ return (this.cachedTimeScale); } public function set timeScale(_arg1:Number):void{ this.startTime = (this.cachedTotalTime - (((this.cachedTotalTime - this.startTime) * this.cachedTimeScale) / _arg1)); this.cachedTimeScale = _arg1; setDirtyCache(false); } public function get reversed():Boolean{ return (_reversed); } public function set reversed(_arg1:Boolean):void{ if (_arg1 != _reversed){ reverse(true); }; } public function get paused():Boolean{ return (this.cachedPaused); } public function set paused(_arg1:Boolean):void{ if (_arg1 != this.cachedPaused){ if (_arg1){ _pauseTime = this.timeline.cachedTotalTime; } else { this.startTime = (this.startTime + (this.timeline.cachedTotalTime - _pauseTime)); }; setDirtyCache(false); this.cachedPaused = _arg1; this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration)))); }; if (((!(_arg1)) && (this.gc))){ this.enabled = true; }; } public function get useFrames():Boolean{ var _local1:SimpleTimeline = this.timeline; while (_local1.timeline != null) { _local1 = _local1.timeline; }; return (Boolean((_local1 == TweenLite.rootFramesTimeline))); } } }//package gs
Section 173
//TweenLite (gs.TweenLite) package gs { import flash.display.*; import flash.events.*; import gs.core.tween.*; import flash.utils.*; import gs.plugins.*; public class TweenLite extends Tweenable { public var target:Object; public var ease:Function; protected var _firstPropTween:PropTween; protected var _overwrittenProps:Object; protected var _tweenLookup:Object; protected var _hasPlugins:Boolean; public static const version:Number = 11.01; public static var plugins:Object = {}; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; public static var defaultEase:Function = TweenLite.easeOut; public static var overwriteManager:Object; public static var rootFrame:Number; public static var rootTimeline:SimpleTimeline; public static var rootFramesTimeline:SimpleTimeline; public static var masterList:Dictionary = new Dictionary(false); public static var timingSprite:Sprite = new Sprite(); protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, renderOnStart:1, proxiedEase:1, easeParams:1, yoyo:1, loop:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, orientToBezier:1, persist:1, timeScale:1, repeat:1, repeatDelay:1, timeline:1, data:1}; public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){ var _local4:int; var _local5:Array; var _local6:TweenLite; super(_arg2, _arg3); if (_arg1 == null){ return; }; this.target = _arg1; this.ease = ((typeof(this.vars.ease))!="function") ? defaultEase : this.vars.ease; if (this.vars.easeParams != null){ this.vars.proxiedEase = this.ease; this.ease = easeProxy; }; _tweenLookup = {}; if (!(_arg1 in masterList)){ masterList[_arg1] = [this]; } else { _local4 = ((((_arg3.overwrite == undefined)) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite); if (_local4 == 1){ _local5 = masterList[_arg1]; for each (_local6 in _local5) { if (!_local6.gc){ _local6.timeline.remove(_local6); }; }; masterList[_arg1] = [this]; } else { masterList[_arg1].push(this); }; }; if (((this.active) || ((((this.vars.runBackwards == true)) && (!((this.vars.renderOnStart == true))))))){ renderTime((this.active) ? this.cachedDuration : 0); }; } protected function init():void{ var _local1:String; var _local2:int; var _local3:*; var _local5:PropTween; var _local4:Object = ((this.vars.isTV)==true) ? this.vars.exposedVars : this.vars; _tweenLookup = {}; if (((!((_local4.timeScale == undefined))) && ((this.target is Tweenable)))){ _firstPropTween = insertPropTween(this.target, "timeScale", this.target.timeScale, _local4.timeScale, "timeScale", false, _firstPropTween); }; for (_local1 in _local4) { if ((_local1 in _reservedProps)){ } else { if ((_local1 in plugins)){ _local3 = new (plugins[_local1]); if (_local3.onInitTween(this.target, _local4[_local1], this) == false){ _firstPropTween = insertPropTween(this.target, _local1, this.target[_local1], _local4[_local1], _local1, false, _firstPropTween); } else { _firstPropTween = insertPropTween(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true, _firstPropTween); _hasPlugins = true; }; } else { _firstPropTween = insertPropTween(this.target, _local1, this.target[_local1], _local4[_local1], _local1, false, _firstPropTween); }; }; }; if (this.vars.runBackwards == true){ _local5 = this._firstPropTween; while (_local5 != null) { _local5.start = (_local5.start + _local5.change); _local5.change = -(_local5.change); _local5 = _local5.nextNode; }; }; _hasUpdate = Boolean(!((this.vars.onUpdate == null))); if (_overwrittenProps != null){ killVars(_overwrittenProps); }; if (((((TweenLite.overwriteManager.enabled) && (!((this._firstPropTween == null))))) && ((this.target in masterList)))){ overwriteManager.manageOverwrites(this, _tweenLookup, masterList[this.target]); }; this.initted = true; } protected function insertPropTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4, _arg5:String, _arg6:Boolean, _arg7:PropTween):PropTween{ var _local9:Array; var _local10:int; var _local8:PropTween = new PropTween(_arg1, _arg2, _arg3, ((typeof(_arg4))=="number") ? (_arg4 - _arg3) : Number(_arg4), _arg5, _arg6, _arg7); if (_arg7 != null){ _arg7.prevNode = _local8; }; if (((_arg6) && ((_arg5 == "_MULTIPLE_")))){ _local9 = _arg1.overwriteProps; _local10 = (_local9.length - 1); while (_local10 > -1) { _tweenLookup[_local9[_local10]] = _local8; _local10--; }; } else { _tweenLookup[_arg5] = _local8; }; return (_local8); } override public function renderTime(_arg1:Number):void{ var _local2:Number; var _local3:Boolean; var _local4:Number = this.cachedTime; if (_arg1 >= this.cachedDuration){ this.cachedTotalTime = (this.cachedTime = this.cachedDuration); _local2 = 1; _local3 = true; } else { if (_arg1 <= 0){ _local2 = 0; this.cachedTotalTime = (this.cachedTime = _local2); if (_arg1 < 0){ this.active = false; }; } else { this.cachedTotalTime = (this.cachedTime = _arg1); _local2 = this.ease(_arg1, 0, 1, this.cachedDuration); }; }; if (!this.initted){ init(); this.active = true; if (this.vars.onStart != null){ this.vars.onStart.apply(null, this.vars.onStartParams); }; } else { if (this.cachedTime == _local4){ return; }; }; var _local5:PropTween = _firstPropTween; while (_local5 != null) { _local5.target[_local5.property] = (_local5.start + (_local2 * _local5.change)); _local5 = _local5.nextNode; }; if (_hasUpdate){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local3){ complete(true); }; } override public function complete(_arg1:Boolean=false):void{ var _local2:PropTween; if (!_arg1){ renderTime(this.cachedTotalDuration); return; }; if (_hasPlugins){ _local2 = _firstPropTween; while (_local2 != null) { if (((_local2.isPlugin) && (!((_local2.target.onComplete == null))))){ _local2.target.onComplete(); }; _local2 = _local2.nextNode; }; }; if (this.timeline.autoRemoveChildren){ this.timeline.remove(this); } else { this.active = false; }; if (this.vars.onComplete != null){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); }; } public function killVars(_arg1:Object):void{ var _local2:String; var _local3:PropTween; if (_overwrittenProps == null){ _overwrittenProps = {}; }; for (_local2 in _arg1) { if ((_local2 in _tweenLookup)){ _local3 = _tweenLookup[_local2]; if (((_local3.isPlugin) && ((_local3.name == "_MULTIPLE_")))){ _local3.target.killProps(_arg1); if (_local3.target.overwriteProps.length == 0){ removePropTween(_local3); delete _tweenLookup[_local2]; }; } else { removePropTween(_local3); delete _tweenLookup[_local2]; }; }; _overwrittenProps[_local2] = 1; }; } protected function removePropTween(_arg1:PropTween):void{ if (_arg1.nextNode != null){ _arg1.nextNode.prevNode = _arg1.prevNode; }; if (_arg1.prevNode != null){ _arg1.prevNode.nextNode = _arg1.nextNode; } else { if (_firstPropTween == _arg1){ _firstPropTween = _arg1.nextNode; }; }; } protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams))); } public static function initClass():void{ TweenPlugin.activate([TintPlugin, RemoveTintPlugin, FramePlugin, AutoAlphaPlugin, VisiblePlugin, VolumePlugin, EndArrayPlugin]); rootFrame = 0; rootTimeline = new SimpleTimeline(null); rootFramesTimeline = new SimpleTimeline(null); rootTimeline.startTime = (getTimer() * 0.001); rootFramesTimeline.startTime = rootFrame; rootTimeline.autoRemoveChildren = (rootFramesTimeline.autoRemoveChildren = true); timingSprite.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true); if (overwriteManager == null){ overwriteManager = {mode:1, enabled:false}; }; } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ return (new TweenLite(_arg1, _arg2, _arg3)); } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ _arg3.runBackwards = true; return (new TweenLite(_arg1, _arg2, _arg3)); } public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null, _arg4:Boolean=false):TweenLite{ return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, useFrames:_arg4, overwrite:0})); } protected static function updateAll(_arg1:Event=null):void{ var _local2:Dictionary; var _local3:Object; var _local4:Array; var _local5:int; rootTimeline.renderTime((((getTimer() * 0.001) - rootTimeline.startTime) * rootTimeline.cachedTimeScale)); rootFrame++; rootFramesTimeline.renderTime((rootFrame * rootFramesTimeline.cachedTimeScale)); if (!(rootFrame % 30)){ _local2 = masterList; for (_local3 in _local2) { _local4 = _local2[_local3]; _local5 = (_local4.length - 1); while (_local5 > -1) { if (_local4[_local5].gc){ _local4.splice(_local5, 1); }; _local5--; }; if (_local4.length == 0){ delete _local2[_local3]; }; }; }; } public static function removeTween(_arg1:TweenLite):void{ if (_arg1 != null){ _arg1.timeline.remove(_arg1); }; } public static function killTweensOf(_arg1:Object, _arg2:Boolean=false):void{ var _local3:Array; var _local4:int; if (((!((_arg1 == null))) && ((_arg1 in masterList)))){ _local3 = masterList[_arg1]; _local4 = (_local3.length - 1); while (_local4 > -1) { if (!_local3[_local4].gc){ if (_arg2){ _local3[_local4].complete(false); } else { _local3[_local4].timeline.remove((_local3[_local4] as Tweenable)); }; }; _local4--; }; delete masterList[_arg1]; }; } protected static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } } }//package gs
Section 174
//Room (it.gotoandplay.smartfoxserver.data.Room) package it.gotoandplay.smartfoxserver.data { public class Room { private var id:int; private var name:String; private var maxUsers:int; private var maxSpectators:int; private var temp:Boolean; private var game:Boolean; private var priv:Boolean; private var limbo:Boolean; private var userCount:int; private var specCount:int; private var myPlayerIndex:int; private var userList:Array; private var variables:Array; public function Room(_arg1:int, _arg2:String, _arg3:int, _arg4:int, _arg5:Boolean, _arg6:Boolean, _arg7:Boolean, _arg8:Boolean, _arg9:int=0, _arg10:int=0){ this.id = _arg1; this.name = _arg2; this.maxSpectators = _arg4; this.maxUsers = _arg3; this.temp = _arg5; this.game = _arg6; this.priv = _arg7; this.limbo = _arg8; this.userCount = _arg9; this.specCount = _arg10; this.userList = []; this.variables = []; } public function addUser(_arg1:User, _arg2:int):void{ userList[_arg2] = _arg1; if (((this.game) && (_arg1.isSpectator()))){ specCount++; } else { userCount++; }; } public function removeUser(_arg1:int):void{ var _local2:User = userList[_arg1]; if (((this.game) && (_local2.isSpectator()))){ specCount--; } else { userCount--; }; delete userList[_arg1]; } public function getUserList():Array{ return (this.userList); } public function getUser(_arg1):User{ var _local3:String; var _local4:User; var _local2:User; if (typeof(_arg1) == "number"){ _local2 = userList[_arg1]; } else { if (typeof(_arg1) == "string"){ for (_local3 in userList) { _local4 = this.userList[_local3]; if (_local4.getName() == _arg1){ _local2 = _local4; break; }; }; }; }; return (_local2); } public function clearUserList():void{ this.userList = []; this.userCount = 0; this.specCount = 0; } public function getVariable(_arg1:String){ return (variables[_arg1]); } public function getVariables():Array{ return (variables); } public function setVariables(_arg1:Array):void{ this.variables = _arg1; } public function clearVariables():void{ this.variables = []; } public function getName():String{ return (this.name); } public function getId():int{ return (this.id); } public function isTemp():Boolean{ return (this.temp); } public function isGame():Boolean{ return (this.game); } public function isPrivate():Boolean{ return (this.priv); } public function getUserCount():int{ return (this.userCount); } public function getSpectatorCount():int{ return (this.specCount); } public function getMaxUsers():int{ return (this.maxUsers); } public function getMaxSpectators():int{ return (this.maxSpectators); } public function setMyPlayerIndex(_arg1:int):void{ this.myPlayerIndex = _arg1; } public function getMyPlayerIndex():int{ return (this.myPlayerIndex); } public function setIsLimbo(_arg1:Boolean):void{ this.limbo = _arg1; } public function isLimbo():Boolean{ return (this.limbo); } public function setUserCount(_arg1:int):void{ this.userCount = _arg1; } public function setSpectatorCount(_arg1:int):void{ this.specCount = _arg1; } } }//package it.gotoandplay.smartfoxserver.data
Section 175
//User (it.gotoandplay.smartfoxserver.data.User) package it.gotoandplay.smartfoxserver.data { public class User { private var id:int; private var name:String; private var variables:Array; private var isSpec:Boolean; private var isMod:Boolean; private var pId:int; public function User(_arg1:int, _arg2:String){ this.id = _arg1; this.name = _arg2; this.variables = []; this.isSpec = false; this.isMod = false; } public function getId():int{ return (this.id); } public function getName():String{ return (this.name); } public function getVariable(_arg1:String){ return (this.variables[_arg1]); } public function getVariables():Array{ return (this.variables); } public function setVariables(_arg1:Object):void{ var _local2:String; var _local3:*; for (_local2 in _arg1) { _local3 = _arg1[_local2]; if (_local3 != null){ this.variables[_local2] = _local3; } else { delete this.variables[_local2]; }; }; } public function clearVariables():void{ this.variables = []; } public function setIsSpectator(_arg1:Boolean):void{ this.isSpec = _arg1; } public function isSpectator():Boolean{ return (this.isSpec); } public function setModerator(_arg1:Boolean):void{ this.isMod = _arg1; } public function isModerator():Boolean{ return (this.isMod); } public function getPlayerId():int{ return (this.pId); } public function setPlayerId(_arg1:int):void{ this.pId = _arg1; } } }//package it.gotoandplay.smartfoxserver.data
Section 176
//ExtHandler (it.gotoandplay.smartfoxserver.handlers.ExtHandler) package it.gotoandplay.smartfoxserver.handlers { import it.gotoandplay.smartfoxserver.*; import it.gotoandplay.smartfoxserver.util.*; public class ExtHandler implements IMessageHandler { private var sfs:SmartFoxClient; public function ExtHandler(_arg1:SmartFoxClient){ this.sfs = _arg1; } public function handleMessage(_arg1:Object, _arg2:String):void{ var _local3:Object; var _local4:SFSEvent; var _local5:XML; var _local6:String; var _local7:int; var _local8:String; var _local9:Object; if (_arg2 == SmartFoxClient.XTMSG_TYPE_XML){ _local5 = (_arg1 as XML); _local6 = _local5.body.@action; _local7 = int(_local5.body.@id); if (_local6 == "xtRes"){ _local8 = _local5.body.toString(); _local9 = ObjectSerializer.getInstance().deserialize(_local8); _local3 = {}; _local3.dataObj = _local9; _local3.type = _arg2; _local4 = new SFSEvent(SFSEvent.onExtensionResponse, _local3); sfs.dispatchEvent(_local4); }; } else { if (_arg2 == SmartFoxClient.XTMSG_TYPE_JSON){ _local3 = {}; _local3.dataObj = _arg1.o; _local3.type = _arg2; _local4 = new SFSEvent(SFSEvent.onExtensionResponse, _local3); sfs.dispatchEvent(_local4); } else { if (_arg2 == SmartFoxClient.XTMSG_TYPE_STR){ _local3 = {}; _local3.dataObj = _arg1; _local3.type = _arg2; _local4 = new SFSEvent(SFSEvent.onExtensionResponse, _local3); sfs.dispatchEvent(_local4); }; }; }; } } }//package it.gotoandplay.smartfoxserver.handlers
Section 177
//IMessageHandler (it.gotoandplay.smartfoxserver.handlers.IMessageHandler) package it.gotoandplay.smartfoxserver.handlers { public interface IMessageHandler { function handleMessage(_arg1:Object, _arg2:String):void; } }//package it.gotoandplay.smartfoxserver.handlers
Section 178
//SysHandler (it.gotoandplay.smartfoxserver.handlers.SysHandler) package it.gotoandplay.smartfoxserver.handlers { import it.gotoandplay.smartfoxserver.*; import it.gotoandplay.smartfoxserver.data.*; import flash.utils.*; import it.gotoandplay.smartfoxserver.util.*; public class SysHandler implements IMessageHandler { private var sfs:SmartFoxClient; private var handlersTable:Array; public function SysHandler(_arg1:SmartFoxClient){ this.sfs = _arg1; handlersTable = []; handlersTable["apiOK"] = this.handleApiOK; handlersTable["apiKO"] = this.handleApiKO; handlersTable["logOK"] = this.handleLoginOk; handlersTable["logKO"] = this.handleLoginKo; handlersTable["logout"] = this.handleLogout; handlersTable["rmList"] = this.handleRoomList; handlersTable["uCount"] = this.handleUserCountChange; handlersTable["joinOK"] = this.handleJoinOk; handlersTable["joinKO"] = this.handleJoinKo; handlersTable["uER"] = this.handleUserEnterRoom; handlersTable["userGone"] = this.handleUserLeaveRoom; handlersTable["pubMsg"] = this.handlePublicMessage; handlersTable["prvMsg"] = this.handlePrivateMessage; handlersTable["dmnMsg"] = this.handleAdminMessage; handlersTable["modMsg"] = this.handleModMessage; handlersTable["dataObj"] = this.handleASObject; handlersTable["rVarsUpdate"] = this.handleRoomVarsUpdate; handlersTable["roomAdd"] = this.handleRoomAdded; handlersTable["roomDel"] = this.handleRoomDeleted; handlersTable["rndK"] = this.handleRandomKey; handlersTable["roundTripRes"] = this.handleRoundTripBench; handlersTable["uVarsUpdate"] = this.handleUserVarsUpdate; handlersTable["createRmKO"] = this.handleCreateRoomError; handlersTable["bList"] = this.handleBuddyList; handlersTable["bUpd"] = this.handleBuddyListUpdate; handlersTable["bAdd"] = this.handleBuddyAdded; handlersTable["roomB"] = this.handleBuddyRoom; handlersTable["leaveRoom"] = this.handleLeaveRoom; handlersTable["swSpec"] = this.handleSpectatorSwitched; handlersTable["bPrm"] = this.handleAddBuddyPermission; handlersTable["remB"] = this.handleRemoveBuddy; } public function handleMessage(_arg1:Object, _arg2:String):void{ var _local3:XML = (_arg1 as XML); var _local4:String = _local3.body.@action; var _local5:Function = handlersTable[_local4]; if (_local5 != null){ _local5.apply(this, [_arg1]); } else { trace(("Unknown sys command: " + _local4)); }; } public function handleApiOK(_arg1:Object):void{ sfs.isConnected = true; var _local2:SFSEvent = new SFSEvent(SFSEvent.onConnection, {success:true}); sfs.dispatchEvent(_local2); } public function handleApiKO(_arg1:Object):void{ var _local2:Object = {}; _local2.success = false; _local2.error = "API are obsolete, please upgrade"; var _local3:SFSEvent = new SFSEvent(SFSEvent.onConnection, _local2); sfs.dispatchEvent(_local3); } public function handleLoginOk(_arg1:Object):void{ var _local2:int = int(_arg1.body.login.@id); var _local3:int = int(_arg1.body.login.@mod); var _local4:String = _arg1.body.login.@n; sfs.amIModerator = (_local3 == 1); sfs.myUserId = _local2; sfs.myUserName = _local4; sfs.playerId = -1; var _local5:Object = {}; _local5.success = true; _local5.name = _local4; _local5.error = ""; var _local6:SFSEvent = new SFSEvent(SFSEvent.onLogin, _local5); sfs.dispatchEvent(_local6); sfs.getRoomList(); } public function handleLoginKo(_arg1:Object):void{ var _local2:Object = {}; _local2.success = false; _local2.error = _arg1.body.login.@e; var _local3:SFSEvent = new SFSEvent(SFSEvent.onLogin, _local2); sfs.dispatchEvent(_local3); } public function handleLogout(_arg1:Object):void{ sfs.__logout(); var _local2:SFSEvent = new SFSEvent(SFSEvent.onLogout, {}); sfs.dispatchEvent(_local2); } public function handleRoomList(_arg1:Object):void{ var _local3:XML; var _local4:Object; var _local5:SFSEvent; var _local6:int; var _local7:Room; sfs.clearRoomList(); var _local2:Array = sfs.getAllRooms(); for each (_local3 in _arg1.body.rmList.rm) { _local6 = int(_local3.@id); _local7 = new Room(_local6, _local3.n, int(_local3.@maxu), int(_local3.@maxs), (_local3.@temp == "1"), (_local3.@game == "1"), (_local3.@priv == "1"), (_local3.@lmb == "1"), int(_local3.@ucnt), int(_local3.@scnt)); if (_local3.vars.toString().length > 0){ populateVariables(_local7.getVariables(), _local3); }; _local2[_local6] = _local7; }; _local4 = {}; _local4.roomList = _local2; _local5 = new SFSEvent(SFSEvent.onRoomListUpdate, _local4); sfs.dispatchEvent(_local5); } public function handleUserCountChange(_arg1:Object):void{ var _local6:Object; var _local7:SFSEvent; var _local2:int = int(_arg1.body.@u); var _local3:int = int(_arg1.body.@s); var _local4:int = int(_arg1.body.@r); var _local5:Room = sfs.getAllRooms()[_local4]; if (_local5 != null){ _local5.setUserCount(_local2); _local5.setSpectatorCount(_local3); _local6 = {}; _local6.room = _local5; _local7 = new SFSEvent(SFSEvent.onUserCountChange, _local6); sfs.dispatchEvent(_local7); }; } public function handleJoinOk(_arg1:Object):void{ var _local7:XML; var _local8:Object; var _local9:SFSEvent; var _local10:String; var _local11:int; var _local12:Boolean; var _local13:Boolean; var _local14:int; var _local15:User; var _local2:int = int(_arg1.body.@r); var _local3:XMLList = _arg1.body; var _local4:XMLList = _arg1.body.uLs.u; var _local5:int = int(_arg1.body.pid.@id); sfs.activeRoomId = _local2; var _local6:Room = sfs.getRoom(_local2); _local6.clearUserList(); sfs.playerId = _local5; _local6.setMyPlayerIndex(_local5); if (_local3.vars.toString().length > 0){ _local6.clearVariables(); populateVariables(_local6.getVariables(), _local3); }; for each (_local7 in _local4) { _local10 = _local7.n; _local11 = int(_local7.@i); _local12 = ((_local7.@m == "1")) ? true : false; _local13 = ((_local7.@s == "1")) ? true : false; _local14 = ((_local7.@p == null)) ? -1 : int(_local7.@p); _local15 = new User(_local11, _local10); _local15.setModerator(_local12); _local15.setIsSpectator(_local13); _local15.setPlayerId(_local14); if (_local7.vars.toString().length > 0){ populateVariables(_local15.getVariables(), _local7); }; _local6.addUser(_local15, _local11); }; sfs.changingRoom = false; _local8 = {}; _local8.room = _local6; _local9 = new SFSEvent(SFSEvent.onJoinRoom, _local8); sfs.dispatchEvent(_local9); } public function handleJoinKo(_arg1:Object):void{ sfs.changingRoom = false; var _local2:Object = {}; _local2.error = _arg1.body.error.@msg; var _local3:SFSEvent = new SFSEvent(SFSEvent.onJoinRoomError, _local2); sfs.dispatchEvent(_local3); } public function handleUserEnterRoom(_arg1:Object):void{ var _local2:int = int(_arg1.body.@r); var _local3:int = int(_arg1.body.u.@i); var _local4:String = _arg1.body.u.n; var _local5 = (_arg1.body.u.@m == "1"); var _local6 = (_arg1.body.u.@s == "1"); var _local7:int = ((_arg1.body.u.@p)!=null) ? int(_arg1.body.u.@p) : -1; var _local8:XMLList = _arg1.body.u.vars["var"]; var _local9:Room = sfs.getRoom(_local2); var _local10:User = new User(_local3, _local4); _local10.setModerator(_local5); _local10.setIsSpectator(_local6); _local10.setPlayerId(_local7); _local9.addUser(_local10, _local3); if (_arg1.body.u.vars.toString().length > 0){ populateVariables(_local10.getVariables(), _arg1.body.u); }; var _local11:Object = {}; _local11.roomId = _local2; _local11.user = _local10; var _local12:SFSEvent = new SFSEvent(SFSEvent.onUserEnterRoom, _local11); sfs.dispatchEvent(_local12); } public function handleUserLeaveRoom(_arg1:Object):void{ var _local2:int = int(_arg1.body.user.@id); var _local3:int = int(_arg1.body.@r); var _local4:Room = sfs.getRoom(_local3); var _local5:String = _local4.getUser(_local2).getName(); _local4.removeUser(_local2); var _local6:Object = {}; _local6.roomId = _local3; _local6.userId = _local2; _local6.userName = _local5; var _local7:SFSEvent = new SFSEvent(SFSEvent.onUserLeaveRoom, _local6); sfs.dispatchEvent(_local7); } public function handlePublicMessage(_arg1:Object):void{ var _local2:int = int(_arg1.body.@r); var _local3:int = int(_arg1.body.user.@id); var _local4:String = _arg1.body.txt; var _local5:User = sfs.getRoom(_local2).getUser(_local3); var _local6:Object = {}; _local6.message = Entities.decodeEntities(_local4); _local6.sender = _local5; _local6.roomId = _local2; var _local7:SFSEvent = new SFSEvent(SFSEvent.onPublicMessage, _local6); sfs.dispatchEvent(_local7); } public function handlePrivateMessage(_arg1:Object):void{ var _local2:int = int(_arg1.body.@r); var _local3:int = int(_arg1.body.user.@id); var _local4:String = _arg1.body.txt; var _local5:User = sfs.getRoom(_local2).getUser(_local3); var _local6:Object = {}; _local6.message = Entities.decodeEntities(_local4); _local6.sender = _local5; _local6.roomId = _local2; _local6.userId = _local3; var _local7:SFSEvent = new SFSEvent(SFSEvent.onPrivateMessage, _local6); sfs.dispatchEvent(_local7); } public function handleAdminMessage(_arg1:Object):void{ var _local2:int = int(_arg1.body.@r); var _local3:int = int(_arg1.body.user.@id); var _local4:String = _arg1.body.txt; var _local5:Object = {}; _local5.message = Entities.decodeEntities(_local4); var _local6:SFSEvent = new SFSEvent(SFSEvent.onAdminMessage, _local5); sfs.dispatchEvent(_local6); } public function handleModMessage(_arg1:Object):void{ var _local2:int = int(_arg1.body.@r); var _local3:int = int(_arg1.body.user.@id); var _local4:String = _arg1.body.txt; var _local5:User; var _local6:Room = sfs.getRoom(_local2); if (_local6 != null){ _local5 = sfs.getRoom(_local2).getUser(_local3); }; var _local7:Object = {}; _local7.message = Entities.decodeEntities(_local4); _local7.sender = _local5; var _local8:SFSEvent = new SFSEvent(SFSEvent.onModeratorMessage, _local7); sfs.dispatchEvent(_local8); } public function handleASObject(_arg1:Object):void{ var _local2:int = int(_arg1.body.@r); var _local3:int = int(_arg1.body.user.@id); var _local4:String = _arg1.body.dataObj; var _local5:User = sfs.getRoom(_local2).getUser(_local3); var _local6:Object = ObjectSerializer.getInstance().deserialize(new XML(_local4)); var _local7:Object = {}; _local7.obj = _local6; _local7.sender = _local5; var _local8:SFSEvent = new SFSEvent(SFSEvent.onObjectReceived, _local7); sfs.dispatchEvent(_local8); } public function handleRoomVarsUpdate(_arg1:Object):void{ var _local2:int = int(_arg1.body.@r); var _local3:int = int(_arg1.body.user.@id); var _local4:Room = sfs.getRoom(_local2); var _local5:Array = []; if (_arg1.body.vars.toString().length > 0){ populateVariables(_local4.getVariables(), _arg1.body, _local5); }; var _local6:Object = {}; _local6.room = _local4; _local6.changedVars = _local5; var _local7:SFSEvent = new SFSEvent(SFSEvent.onRoomVariablesUpdate, _local6); sfs.dispatchEvent(_local7); } public function handleUserVarsUpdate(_arg1:Object):void{ var _local3:Array; var _local6:Room; var _local7:Object; var _local8:SFSEvent; var _local2:int = int(_arg1.body.user.@id); var _local4:User; var _local5:User; if (_arg1.body.vars.toString().length > 0){ for each (_local6 in sfs.getAllRooms()) { _local4 = _local6.getUser(_local2); if (_local4 != null){ if (_local5 == null){ _local5 = _local4; }; _local3 = []; populateVariables(_local4.getVariables(), _arg1.body, _local3); }; }; _local7 = {}; _local7.user = _local5; _local7.changedVars = _local3; _local8 = new SFSEvent(SFSEvent.onUserVariablesUpdate, _local7); sfs.dispatchEvent(_local8); }; } private function handleRoomAdded(_arg1:Object):void{ var _local2:int = int(_arg1.body.rm.@id); var _local3:String = _arg1.body.rm.name; var _local4:int = int(_arg1.body.rm.@max); var _local5:int = int(_arg1.body.rm.@spec); var _local6:Boolean = ((_arg1.body.rm.@temp == "1")) ? true : false; var _local7:Boolean = ((_arg1.body.rm.@game == "1")) ? true : false; var _local8:Boolean = ((_arg1.body.rm.@priv == "1")) ? true : false; var _local9:Boolean = ((_arg1.body.rm.@limbo == "1")) ? true : false; var _local10:Room = new Room(_local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9); var _local11:Array = sfs.getAllRooms(); _local11[_local2] = _local10; if (_arg1.body.rm.vars.toString().length > 0){ populateVariables(_local10.getVariables(), _arg1.body.rm); }; var _local12:Object = {}; _local12.room = _local10; var _local13:SFSEvent = new SFSEvent(SFSEvent.onRoomAdded, _local12); sfs.dispatchEvent(_local13); } private function handleRoomDeleted(_arg1:Object):void{ var _local2:int = int(_arg1.body.rm.@id); var _local3:Array = sfs.getAllRooms(); var _local4:Object = {}; _local4.room = _local3[_local2]; delete _local3[_local2]; var _local5:SFSEvent = new SFSEvent(SFSEvent.onRoomDeleted, _local4); sfs.dispatchEvent(_local5); } private function handleRandomKey(_arg1:Object):void{ var _local2:String = _arg1.body.k.toString(); var _local3:Object = {}; _local3.key = _local2; var _local4:SFSEvent = new SFSEvent(SFSEvent.onRandomKey, _local3); sfs.dispatchEvent(_local4); } private function handleRoundTripBench(_arg1:Object):void{ var _local2:int = getTimer(); var _local3:int = (_local2 - sfs.getBenchStartTime()); var _local4:Object = {}; _local4.elapsed = _local3; var _local5:SFSEvent = new SFSEvent(SFSEvent.onRoundTripResponse, _local4); sfs.dispatchEvent(_local5); } private function handleCreateRoomError(_arg1:Object):void{ var _local2:String = _arg1.body.room.@e; var _local3:Object = {}; _local3.error = _local2; var _local4:SFSEvent = new SFSEvent(SFSEvent.onCreateRoomError, _local3); sfs.dispatchEvent(_local4); } private function handleBuddyList(_arg1:Object):void{ var _local4:Object; var _local7:XML; var _local8:XML; var _local9:XMLList; var _local10:XML; var _local2:XMLList = _arg1.body.bList; var _local3:XMLList = _arg1.body.mv; var _local5:Object = {}; var _local6:SFSEvent; if (((!((_local3 == null))) && ((_local3.toString().length > 0)))){ for each (_local7 in _local3.v) { sfs.myBuddyVars[_local7.@n.toString()] = _local7.toString(); }; }; if (((!((_local2 == null))) && (!((_local2.b.length == null))))){ if (_local2.toString().length > 0){ for each (_local8 in _local2.b) { _local4 = {}; _local4.isOnline = ((_local8.@s == "1")) ? true : false; _local4.name = _local8.n.toString(); _local4.id = _local8.@i; _local4.isBlocked = ((_local8.@x == "1")) ? true : false; _local4.variables = {}; _local9 = _local8.vs; if (_local9.toString().length > 0){ for each (_local10 in _local9.v) { _local4.variables[_local10.@n.toString()] = _local10.toString(); }; }; sfs.buddyList.push(_local4); }; }; _local5.list = sfs.buddyList; _local6 = new SFSEvent(SFSEvent.onBuddyList, _local5); sfs.dispatchEvent(_local6); } else { _local5.error = _arg1.body.err.toString(); _local6 = new SFSEvent(SFSEvent.onBuddyListError, _local5); sfs.dispatchEvent(_local6); }; } private function handleBuddyListUpdate(_arg1:Object):void{ var _local4:Object; var _local5:XMLList; var _local6:Object; var _local7:Boolean; var _local8:String; var _local9:XML; var _local2:Object = {}; var _local3:SFSEvent; if (_arg1.body.b != null){ _local4 = {}; _local4.isOnline = ((_arg1.body.b.@s == "1")) ? true : false; _local4.name = _arg1.body.b.n.toString(); _local4.id = _arg1.body.b.@i; _local4.isBlocked = ((_arg1.body.b.@x == "1")) ? true : false; _local5 = _arg1.body.b.vs; _local6 = null; _local7 = false; for (_local8 in sfs.buddyList) { _local6 = sfs.buddyList[_local8]; if (_local6.name == _local4.name){ sfs.buddyList[_local8] = _local4; _local4.isBlocked = _local6.isBlocked; _local4.variables = _local6.variables; if (_local5.toString().length > 0){ for each (_local9 in _local5.v) { _local4.variables[_local9.@n.toString()] = _local9.toString(); }; }; _local7 = true; break; }; }; if (_local7){ _local2.buddy = _local4; _local3 = new SFSEvent(SFSEvent.onBuddyListUpdate, _local2); sfs.dispatchEvent(_local3); }; } else { _local2.error = _arg1.body.err.toString(); _local3 = new SFSEvent(SFSEvent.onBuddyListError, _local2); sfs.dispatchEvent(_local3); }; } private function handleAddBuddyPermission(_arg1:Object):void{ var _local2:Object = {}; _local2.sender = _arg1.body.n.toString(); _local2.message = ""; if (_arg1.body.txt != undefined){ _local2.message = Entities.decodeEntities(_arg1.body.txt); }; var _local3:SFSEvent = new SFSEvent(SFSEvent.onBuddyPermissionRequest, _local2); sfs.dispatchEvent(_local3); } private function handleBuddyAdded(_arg1:Object):void{ var _local6:XML; var _local2:Object = {}; _local2.isOnline = ((_arg1.body.b.@s == "1")) ? true : false; _local2.name = _arg1.body.b.n.toString(); _local2.id = _arg1.body.b.@i; _local2.isBlocked = ((_arg1.body.b.@x == "1")) ? true : false; _local2.variables = {}; var _local3:XMLList = _arg1.body.b.vs; if (_local3.toString().length > 0){ for each (_local6 in _local3.v) { _local2.variables[_local6.@n.toString()] = _local6.toString(); }; }; sfs.buddyList.push(_local2); var _local4:Object = {}; _local4.list = sfs.buddyList; var _local5:SFSEvent = new SFSEvent(SFSEvent.onBuddyList, _local4); sfs.dispatchEvent(_local5); } private function handleRemoveBuddy(_arg1:Object):void{ var _local4:String; var _local5:Object; var _local6:SFSEvent; var _local2:String = _arg1.body.n.toString(); var _local3:Object; for (_local4 in sfs.buddyList) { _local3 = sfs.buddyList[_local4]; if (_local3.name == _local2){ delete sfs.buddyList[_local4]; _local5 = {}; _local5.list = sfs.buddyList; _local6 = new SFSEvent(SFSEvent.onBuddyList, _local5); sfs.dispatchEvent(_local6); break; }; }; } private function handleBuddyRoom(_arg1:Object):void{ var _local2:String = _arg1.body.br.@r; var _local3:Array = _local2.split(","); var _local4:int; while (_local4 < _local3.length) { _local3[_local4] = int(_local3[_local4]); _local4++; }; var _local5:Object = {}; _local5.idList = _local3; var _local6:SFSEvent = new SFSEvent(SFSEvent.onBuddyRoom, _local5); sfs.dispatchEvent(_local6); } private function handleLeaveRoom(_arg1:Object):void{ var _local2:int = int(_arg1.body.rm.@id); var _local3:Object = {}; _local3.roomId = _local2; var _local4:SFSEvent = new SFSEvent(SFSEvent.onRoomLeft, _local3); sfs.dispatchEvent(_local4); } private function handleSpectatorSwitched(_arg1:Object):void{ var _local5:int; var _local6:User; var _local7:Object; var _local8:SFSEvent; var _local2:int = int(_arg1.body.@r); var _local3:int = int(_arg1.body.pid.@id); var _local4:Room = sfs.getRoom(_local2); if (_local3 > 0){ _local4.setUserCount((_local4.getUserCount() + 1)); _local4.setSpectatorCount((_local4.getSpectatorCount() - 1)); }; if (_arg1.body.pid.@u != undefined){ _local5 = int(_arg1.body.pid.@u); _local6 = _local4.getUser(_local5); if (_local6 != null){ _local6.setIsSpectator(false); _local6.setPlayerId(_local3); }; } else { sfs.playerId = _local3; _local7 = {}; _local7.success = (sfs.playerId > 0); _local7.newId = sfs.playerId; _local7.room = _local4; _local8 = new SFSEvent(SFSEvent.onSpectatorSwitched, _local7); sfs.dispatchEvent(_local8); }; } private function populateVariables(_arg1:Array, _arg2:Object, _arg3:Array=null):void{ var _local4:XML; var _local5:String; var _local6:String; var _local7:String; for each (_local4 in _arg2.vars["var"]) { _local5 = _local4.@n; _local6 = _local4.@t; _local7 = _local4; if (_arg3 != null){ _arg3.push(_local5); _arg3[_local5] = true; }; if (_local6 == "b"){ _arg1[_local5] = ((_local7 == "1")) ? true : false; } else { if (_local6 == "n"){ _arg1[_local5] = Number(_local7); } else { if (_local6 == "s"){ _arg1[_local5] = _local7; } else { if (_local6 == "x"){ delete _arg1[_local5]; }; }; }; }; }; } public function dispatchDisconnection():void{ var _local1:SFSEvent = new SFSEvent(SFSEvent.onConnectionLost, null); sfs.dispatchEvent(_local1); } } }//package it.gotoandplay.smartfoxserver.handlers
Section 179
//HttpConnection (it.gotoandplay.smartfoxserver.http.HttpConnection) package it.gotoandplay.smartfoxserver.http { import flash.events.*; import flash.net.*; public class HttpConnection extends EventDispatcher { private var sessionId:String; private var connected:Boolean;// = false private var ipAddr:String; private var port:int; private var webUrl:String; private var urlLoaderFactory:LoaderFactory; private var urlRequest:URLRequest; private var codec:IHttpProtocolCodec; private static const HANDSHAKE:String = "connect"; private static const DISCONNECT:String = "disconnect"; private static const CONN_LOST:String = "ERR#01"; public static const HANDSHAKE_TOKEN:String = "#"; private static const servletUrl:String = "BlueBox/HttpBox.do"; private static const paramName:String = "sfsHttp"; public function HttpConnection(){ codec = new RawProtocolCodec(); urlLoaderFactory = new LoaderFactory(handleResponse, handleIOError); } public function getSessionId():String{ return (this.sessionId); } public function isConnected():Boolean{ return (this.connected); } public function connect(_arg1:String, _arg2:int=8080):void{ this.ipAddr = _arg1; this.port = _arg2; this.webUrl = ((((("http://" + this.ipAddr) + ":") + this.port) + "/") + servletUrl); this.sessionId = null; urlRequest = new URLRequest(webUrl); urlRequest.method = URLRequestMethod.POST; send(HANDSHAKE); } public function close():void{ send(DISCONNECT); } public function send(_arg1:String):void{ var _local2:URLVariables; var _local3:URLLoader; if (((((connected) || (((!(connected)) && ((_arg1 == HANDSHAKE)))))) || (((!(connected)) && ((_arg1 == "poll")))))){ _local2 = new URLVariables(); _local2[paramName] = codec.encode(this.sessionId, _arg1); urlRequest.data = _local2; if (_arg1 != "poll"){ trace(("[ Send ]: " + urlRequest.data)); }; _local3 = urlLoaderFactory.getLoader(); _local3.data = _local2; _local3.load(urlRequest); }; } private function handleResponse(_arg1:Event):void{ var _local4:HttpEvent; var _local2:URLLoader = (_arg1.target as URLLoader); var _local3:String = (_local2.data as String); var _local5:Object = {}; if (_local3.charAt(0) == HANDSHAKE_TOKEN){ if (sessionId == null){ sessionId = codec.decode(_local3); connected = true; _local5.sessionId = this.sessionId; _local5.success = true; _local4 = new HttpEvent(HttpEvent.onHttpConnect, _local5); dispatchEvent(_local4); } else { trace("**ERROR** SessionId is being rewritten"); }; } else { if (_local3.indexOf(CONN_LOST) == 0){ _local5.data = {}; _local4 = new HttpEvent(HttpEvent.onHttpClose, _local5); } else { _local5.data = _local3; _local4 = new HttpEvent(HttpEvent.onHttpData, _local5); }; dispatchEvent(_local4); }; } private function handleIOError(_arg1:IOErrorEvent):void{ var _local2:Object = {}; _local2.message = _arg1.text; var _local3:HttpEvent = new HttpEvent(HttpEvent.onHttpError, _local2); dispatchEvent(_local3); } } }//package it.gotoandplay.smartfoxserver.http
Section 180
//HttpEvent (it.gotoandplay.smartfoxserver.http.HttpEvent) package it.gotoandplay.smartfoxserver.http { import flash.events.*; public class HttpEvent extends Event { public var params:Object; private var evtType:String; public static const onHttpData:String = "onHttpData"; public static const onHttpError:String = "onHttpError"; public static const onHttpConnect:String = "onHttpConnect"; public static const onHttpClose:String = "onHttpClose"; public function HttpEvent(_arg1:String, _arg2:Object){ super(_arg1); this.params = _arg2; this.evtType = _arg1; } override public function clone():Event{ return (new HttpEvent(this.evtType, this.params)); } override public function toString():String{ return (formatToString("HttpEvent", "type", "bubbles", "cancelable", "eventPhase", "params")); } } }//package it.gotoandplay.smartfoxserver.http
Section 181
//IHttpProtocolCodec (it.gotoandplay.smartfoxserver.http.IHttpProtocolCodec) package it.gotoandplay.smartfoxserver.http { public interface IHttpProtocolCodec { function encode(_arg1:String, _arg2:String):String; function decode(_arg1:String):String; } }//package it.gotoandplay.smartfoxserver.http
Section 182
//LoaderFactory (it.gotoandplay.smartfoxserver.http.LoaderFactory) package it.gotoandplay.smartfoxserver.http { import flash.events.*; import flash.net.*; public class LoaderFactory { private var loadersPool:Array; private var currentLoaderIndex:int; private static const DEFAULT_POOL_SIZE:int = 8; public function LoaderFactory(_arg1:Function, _arg2:Function, _arg3:int=8){ var _local5:URLLoader; super(); loadersPool = []; var _local4:int; while (_local4 < _arg3) { _local5 = new URLLoader(); _local5.dataFormat = URLLoaderDataFormat.TEXT; _local5.addEventListener(Event.COMPLETE, _arg1); _local5.addEventListener(IOErrorEvent.IO_ERROR, _arg2); _local5.addEventListener(IOErrorEvent.NETWORK_ERROR, _arg2); loadersPool.push(_local5); _local4++; }; currentLoaderIndex = 0; } public function getLoader():URLLoader{ var _local1:URLLoader = loadersPool[currentLoaderIndex]; currentLoaderIndex++; if (currentLoaderIndex >= loadersPool.length){ currentLoaderIndex = 0; }; return (_local1); } } }//package it.gotoandplay.smartfoxserver.http
Section 183
//RawProtocolCodec (it.gotoandplay.smartfoxserver.http.RawProtocolCodec) package it.gotoandplay.smartfoxserver.http { public class RawProtocolCodec implements IHttpProtocolCodec { private static const SESSION_ID_LEN:int = 32; public function encode(_arg1:String, _arg2:String):String{ return ((((_arg1 == null)) ? "" : _arg1 + _arg2)); } public function decode(_arg1:String):String{ var _local2:String; if (_arg1.charAt(0) == HttpConnection.HANDSHAKE_TOKEN){ _local2 = _arg1.substr(1, SESSION_ID_LEN); }; return (_local2); } } }//package it.gotoandplay.smartfoxserver.http
Section 184
//Entities (it.gotoandplay.smartfoxserver.util.Entities) package it.gotoandplay.smartfoxserver.util { public class Entities { private static var ascTab:Array; private static var ascTabRev:Array; private static var hexTable:Array; public static function encodeEntities(_arg1:String):String{ var _local4:String; var _local5:int; var _local2 = ""; var _local3:int; while (_local3 < _arg1.length) { _local4 = _arg1.charAt(_local3); _local5 = _arg1.charCodeAt(_local3); if ((((((_local5 == 9)) || ((_local5 == 10)))) || ((_local5 == 13)))){ _local2 = (_local2 + _local4); } else { if ((((_local5 >= 32)) && ((_local5 <= 126)))){ if (ascTab[_local4] != null){ _local2 = (_local2 + ascTab[_local4]); } else { _local2 = (_local2 + _local4); }; } else { _local2 = (_local2 + _local4); }; }; _local3++; }; return (_local2); } public static function decodeEntities(_arg1:String):String{ var _local2:String; var _local3:String; var _local4:String; var _local5:String; var _local6:String; var _local7:int; _local2 = ""; while (_local7 < _arg1.length) { _local3 = _arg1.charAt(_local7); if (_local3 == "&"){ _local4 = _local3; do { _local7++; _local5 = _arg1.charAt(_local7); _local4 = (_local4 + _local5); } while (((!((_local5 == ";"))) && ((_local7 < _arg1.length)))); _local6 = ascTabRev[_local4]; if (_local6 != null){ _local2 = (_local2 + _local6); } else { _local2 = (_local2 + String.fromCharCode(getCharCode(_local4))); }; } else { _local2 = (_local2 + _local3); }; _local7++; }; return (_local2); } public static function getCharCode(_arg1:String):Number{ var _local2:String = _arg1.substr(3, _arg1.length); _local2 = _local2.substr(0, (_local2.length - 1)); return (Number(("0x" + _local2))); } ascTab = []; ascTab[">"] = "&gt;"; ascTab["<"] = "&lt;"; ascTab["&"] = "&amp;"; ascTab["'"] = "&apos;"; ascTab["\""] = "&quot;"; ascTabRev = []; ascTabRev["&gt;"] = ">"; ascTabRev["&lt;"] = "<"; ascTabRev["&amp;"] = "&"; ascTabRev["&apos;"] = "'"; ascTabRev["&quot;"] = "\""; hexTable = new Array(); hexTable["0"] = 0; hexTable["1"] = 1; hexTable["2"] = 2; hexTable["3"] = 3; hexTable["4"] = 4; hexTable["5"] = 5; hexTable["6"] = 6; hexTable["7"] = 7; hexTable["8"] = 8; hexTable["9"] = 9; hexTable["A"] = 10; hexTable["B"] = 11; hexTable["C"] = 12; hexTable["D"] = 13; hexTable["E"] = 14; hexTable["F"] = 15; } }//package it.gotoandplay.smartfoxserver.util
Section 185
//ObjectSerializer (it.gotoandplay.smartfoxserver.util.ObjectSerializer) package it.gotoandplay.smartfoxserver.util { public class ObjectSerializer { private var debug:Boolean; private var eof:String; private var tabs:String; private static var instance:ObjectSerializer; public function ObjectSerializer(_arg1:Boolean=false){ this.tabs = "\t\t\t\t\t\t\t\t\t\t\t\t\t"; setDebug(_arg1); } private function setDebug(_arg1:Boolean):void{ this.debug = _arg1; if (this.debug){ this.eof = "\n"; } else { this.eof = ""; }; } public function serialize(_arg1:Object):String{ var _local2:Object = {}; obj2xml(_arg1, _local2); return (_local2.xmlStr); } public function deserialize(_arg1:String):Object{ var _local2:XML = new XML(_arg1); var _local3:Object = {}; xml2obj(_local2, _local3); return (_local3); } private function obj2xml(_arg1:Object, _arg2:Object, _arg3:int=0, _arg4:String=""):void{ var _local5:String; var _local6:String; var _local7:String; var _local8:*; if (_arg3 == 0){ _arg2.xmlStr = ("<dataObj>" + this.eof); } else { if (this.debug){ _arg2.xmlStr = (_arg2.xmlStr + this.tabs.substr(0, _arg3)); }; _local6 = ((_arg1 is Array)) ? "a" : "o"; _arg2.xmlStr = (_arg2.xmlStr + ((((("<obj t='" + _local6) + "' o='") + _arg4) + "'>") + this.eof)); }; for (_local5 in _arg1) { _local7 = typeof(_arg1[_local5]); _local8 = _arg1[_local5]; if ((((((((_local7 == "boolean")) || ((_local7 == "number")))) || ((_local7 == "string")))) || ((_local7 == "null")))){ if (_local7 == "boolean"){ _local8 = Number(_local8); } else { if (_local7 == "null"){ _local7 = "x"; _local8 = ""; } else { if (_local7 == "string"){ _local8 = Entities.encodeEntities(_local8); }; }; }; if (this.debug){ _arg2.xmlStr = (_arg2.xmlStr + this.tabs.substr(0, (_arg3 + 1))); }; _arg2.xmlStr = (_arg2.xmlStr + ((((((("<var n='" + _local5) + "' t='") + _local7.substr(0, 1)) + "'>") + _local8) + "</var>") + this.eof)); } else { if (_local7 == "object"){ obj2xml(_local8, _arg2, (_arg3 + 1), _local5); if (this.debug){ _arg2.xmlStr = (_arg2.xmlStr + this.tabs.substr(0, (_arg3 + 1))); }; _arg2.xmlStr = (_arg2.xmlStr + ("</obj>" + this.eof)); }; }; }; if (_arg3 == 0){ _arg2.xmlStr = (_arg2.xmlStr + ("</dataObj>" + this.eof)); }; } private function xml2obj(_arg1:XML, _arg2:Object):void{ var _local5:String; var _local6:XML; var _local7:String; var _local8:String; var _local9:String; var _local10:String; var _local11:String; var _local3:int; var _local4:XMLList = _arg1.children(); for each (_local6 in _local4) { _local5 = _local6.name().toString(); if (_local5 == "obj"){ _local7 = _local6.@o; _local8 = _local6.@t; if (_local8 == "a"){ _arg2[_local7] = []; } else { if (_local8 == "o"){ _arg2[_local7] = {}; }; }; xml2obj(_local6, _arg2[_local7]); } else { if (_local5 == "var"){ _local9 = _local6.@n; _local10 = _local6.@t; _local11 = _local6.toString(); if (_local10 == "b"){ _arg2[_local9] = ((_local11 == "0")) ? false : true; } else { if (_local10 == "n"){ _arg2[_local9] = Number(_local11); } else { if (_local10 == "s"){ _arg2[_local9] = _local11; } else { if (_local10 == "x"){ _arg2[_local9] = null; }; }; }; }; }; }; }; } private function encodeEntities(_arg1:String):String{ return (_arg1); } public static function getInstance(_arg1:Boolean=false):ObjectSerializer{ if (instance == null){ instance = new ObjectSerializer(_arg1); }; return (instance); } } }//package it.gotoandplay.smartfoxserver.util
Section 186
//SFSEvent (it.gotoandplay.smartfoxserver.SFSEvent) package it.gotoandplay.smartfoxserver { import flash.events.*; public class SFSEvent extends Event { public var params:Object; public static const onAdminMessage:String = "onAdminMessage"; public static const onBuddyList:String = "onBuddyList"; public static const onBuddyListError:String = "onBuddyListError"; public static const onBuddyListUpdate:String = "onBuddyListUpdate"; public static const onBuddyPermissionRequest:String = "onBuddyPermissionRequest"; public static const onBuddyRoom:String = "onBuddyRoom"; public static const onConfigLoadFailure:String = "onConfigLoadFailure"; public static const onConfigLoadSuccess:String = "onConfigLoadSuccess"; public static const onConnection:String = "onConnection"; public static const onConnectionLost:String = "onConnectionLost"; public static const onCreateRoomError:String = "onCreateRoomError"; public static const onDebugMessage:String = "onDebugMessage"; public static const onExtensionResponse:String = "onExtensionResponse"; public static const onJoinRoom:String = "onJoinRoom"; public static const onJoinRoomError:String = "onJoinRoomError"; public static const onLogin:String = "onLogin"; public static const onLogout:String = "onLogout"; public static const onModeratorMessage:String = "onModMessage"; public static const onObjectReceived:String = "onObjectReceived"; public static const onPrivateMessage:String = "onPrivateMessage"; public static const onPublicMessage:String = "onPublicMessage"; public static const onRandomKey:String = "onRandomKey"; public static const onRoomAdded:String = "onRoomAdded"; public static const onRoomDeleted:String = "onRoomDeleted"; public static const onRoomLeft:String = "onRoomLeft"; public static const onRoomListUpdate:String = "onRoomListUpdate"; public static const onRoomVariablesUpdate:String = "onRoomVariablesUpdate"; public static const onRoundTripResponse:String = "onRoundTripResponse"; public static const onSpectatorSwitched:String = "onSpectatorSwitched"; public static const onUserCountChange:String = "onUserCountChange"; public static const onUserEnterRoom:String = "onUserEnterRoom"; public static const onUserLeaveRoom:String = "onUserLeaveRoom"; public static const onUserVariablesUpdate:String = "onUserVariablesUpdate"; public function SFSEvent(_arg1:String, _arg2:Object){ super(_arg1); this.params = _arg2; } override public function clone():Event{ return (new SFSEvent(this.type, this.params)); } override public function toString():String{ return (formatToString("SFSEvent", "type", "bubbles", "cancelable", "eventPhase", "params")); } } }//package it.gotoandplay.smartfoxserver
Section 187
//SmartFoxClient (it.gotoandplay.smartfoxserver.SmartFoxClient) package it.gotoandplay.smartfoxserver { import flash.events.*; import it.gotoandplay.smartfoxserver.data.*; import flash.net.*; import flash.utils.*; import com.adobe.serialization.json.*; import it.gotoandplay.smartfoxserver.util.*; import it.gotoandplay.smartfoxserver.handlers.*; import it.gotoandplay.smartfoxserver.http.*; public class SmartFoxClient extends EventDispatcher { private var roomList:Array; private var connected:Boolean; private var benchStartTime:int; private var sysHandler:SysHandler; private var extHandler:ExtHandler; private var majVersion:Number; private var minVersion:Number; private var subVersion:Number; private var messageHandlers:Array; private var socketConnection:Socket; private var byteBuffer:ByteArray; private var autoConnectOnConfigSuccess:Boolean;// = false public var ipAddress:String; public var port:int;// = 9339 public var defaultZone:String; private var isHttpMode:Boolean;// = false private var _httpPollSpeed:int; private var httpConnection:HttpConnection; public var blueBoxIpAddress:String; public var blueBoxPort:Number;// = 0 public var smartConnect:Boolean;// = true public var buddyList:Array; public var myBuddyVars:Array; public var debug:Boolean; public var myUserId:int; public var myUserName:String; public var playerId:int; public var amIModerator:Boolean; public var activeRoomId:int; public var changingRoom:Boolean; public var httpPort:int;// = 8080 public var properties:Object;// = null private static const EOM:int = 0; private static const MSG_XML:String = "<"; private static const MSG_JSON:String = "{"; public static const MODMSG_TO_USER:String = "u"; public static const MODMSG_TO_ROOM:String = "r"; public static const MODMSG_TO_ZONE:String = "z"; public static const XTMSG_TYPE_XML:String = "xml"; public static const XTMSG_TYPE_STR:String = "str"; public static const XTMSG_TYPE_JSON:String = "json"; public static const CONNECTION_MODE_DISCONNECTED:String = "disconnected"; public static const CONNECTION_MODE_SOCKET:String = "socket"; public static const CONNECTION_MODE_HTTP:String = "http"; private static var MSG_STR:String = "%"; private static var MIN_POLL_SPEED:Number = 0; private static var DEFAULT_POLL_SPEED:Number = 750; private static var MAX_POLL_SPEED:Number = 10000; private static var HTTP_POLL_REQUEST:String = "poll"; public function SmartFoxClient(_arg1:Boolean=false){ _httpPollSpeed = DEFAULT_POLL_SPEED; super(); this.majVersion = 1; this.minVersion = 5; this.subVersion = 7; this.activeRoomId = -1; this.debug = _arg1; this.messageHandlers = []; setupMessageHandlers(); socketConnection = new Socket(); socketConnection.addEventListener(Event.CONNECT, handleSocketConnection); socketConnection.addEventListener(Event.CLOSE, handleSocketDisconnection); socketConnection.addEventListener(ProgressEvent.SOCKET_DATA, handleSocketData); socketConnection.addEventListener(IOErrorEvent.IO_ERROR, handleIOError); socketConnection.addEventListener(IOErrorEvent.NETWORK_ERROR, handleIOError); socketConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError); httpConnection = new HttpConnection(); httpConnection.addEventListener(HttpEvent.onHttpConnect, handleHttpConnect); httpConnection.addEventListener(HttpEvent.onHttpClose, handleHttpClose); httpConnection.addEventListener(HttpEvent.onHttpData, handleHttpData); httpConnection.addEventListener(HttpEvent.onHttpError, handleHttpError); byteBuffer = new ByteArray(); } public function get rawProtocolSeparator():String{ return (MSG_STR); } public function set rawProtocolSeparator(_arg1:String):void{ if (((!((_arg1 == "<"))) && (!((_arg1 == "{"))))){ MSG_STR = _arg1; }; } public function get isConnected():Boolean{ return (this.connected); } public function set isConnected(_arg1:Boolean):void{ this.connected = _arg1; } public function get httpPollSpeed():int{ return (this._httpPollSpeed); } public function set httpPollSpeed(_arg1:int):void{ if ((((_arg1 >= 0)) && ((_arg1 <= 10000)))){ this._httpPollSpeed = _arg1; }; } public function loadConfig(_arg1:String="config.xml", _arg2:Boolean=true):void{ this.autoConnectOnConfigSuccess = _arg2; var _local3:URLLoader = new URLLoader(); _local3.addEventListener(Event.COMPLETE, onConfigLoadSuccess); _local3.addEventListener(IOErrorEvent.IO_ERROR, onConfigLoadFailure); _local3.load(new URLRequest(_arg1)); } public function getConnectionMode():String{ var _local1:String = CONNECTION_MODE_DISCONNECTED; if (this.isConnected){ if (this.isHttpMode){ _local1 = CONNECTION_MODE_HTTP; } else { _local1 = CONNECTION_MODE_SOCKET; }; }; return (_local1); } public function connect(_arg1:String, _arg2:int=9339):void{ if (!connected){ initialize(); this.ipAddress = _arg1; this.port = _arg2; socketConnection.connect(_arg1, _arg2); } else { debugMessage("*** ALREADY CONNECTED ***"); }; } public function disconnect():void{ connected = false; if (!isHttpMode){ socketConnection.close(); } else { httpConnection.close(); }; sysHandler.dispatchDisconnection(); } public function addBuddy(_arg1:String):void{ var _local2:String; if (((!((_arg1 == myUserName))) && (!(checkBuddyDuplicates(_arg1))))){ _local2 = (("<n>" + _arg1) + "</n>"); send({t:"sys"}, "addB", -1, _local2); }; } public function autoJoin():void{ if (!checkRoomList()){ return; }; var _local1:Object = {t:"sys"}; this.send(_local1, "autoJoin", (this.activeRoomId) ? this.activeRoomId : -1, ""); } public function clearBuddyList():void{ buddyList = []; send({t:"sys"}, "clearB", -1, ""); var _local1:Object = {}; _local1.list = buddyList; var _local2:SFSEvent = new SFSEvent(SFSEvent.onBuddyList, _local1); dispatchEvent(_local2); } public function createRoom(_arg1:Object, _arg2:int=-1):void{ var _local10:String; if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; if (_arg2 == -1){ _arg2 = activeRoomId; }; var _local3:Object = {t:"sys"}; var _local4:String = (_arg1.isGame) ? "1" : "0"; var _local5 = "1"; var _local6:String = ((_arg1.maxUsers == null)) ? "0" : String(_arg1.maxUsers); var _local7:String = ((_arg1.maxSpectators == null)) ? "0" : String(_arg1.maxSpectators); var _local8:String = (_arg1.joinAsSpectator) ? "1" : "0"; if (((_arg1.isGame) && (!((_arg1.exitCurrentRoom == null))))){ _local5 = (_arg1.exitCurrentRoom) ? "1" : "0"; }; var _local9 = (((((((("<room tmp='1' gam='" + _local4) + "' spec='") + _local7) + "' exit='") + _local5) + "' jas='") + _local8) + "'>"); _local9 = (_local9 + (("<name><![CDATA[" + ((_arg1.name == null)) ? "" : _arg1.name) + "]]></name>")); _local9 = (_local9 + (("<pwd><![CDATA[" + ((_arg1.password == null)) ? "" : _arg1.password) + "]]></pwd>")); _local9 = (_local9 + (("<max>" + _local6) + "</max>")); if (_arg1.uCount != null){ _local9 = (_local9 + (("<uCnt>" + (_arg1.uCount) ? "1" : "0") + "</uCnt>")); }; if (_arg1.extension != null){ _local9 = (_local9 + ("<xt n='" + _arg1.extension.name)); _local9 = (_local9 + (("' s='" + _arg1.extension.script) + "' />")); }; if (_arg1.vars == null){ _local9 = (_local9 + "<vars></vars>"); } else { _local9 = (_local9 + "<vars>"); for (_local10 in _arg1.vars) { _local9 = (_local9 + getXmlRoomVariable(_arg1.vars[_local10])); }; _local9 = (_local9 + "</vars>"); }; _local9 = (_local9 + "</room>"); send(_local3, "createRoom", _arg2, _local9); } public function getAllRooms():Array{ return (roomList); } public function getBuddyByName(_arg1:String):Object{ var _local2:Object; for each (_local2 in buddyList) { if (_local2.name == _arg1){ return (_local2); }; }; return (null); } public function getBuddyById(_arg1:int):Object{ var _local2:Object; for each (_local2 in buddyList) { if (_local2.id == _arg1){ return (_local2); }; }; return (null); } public function getBuddyRoom(_arg1:Object):void{ if (_arg1.id != -1){ send({t:"sys"}, "roomB", -1, (("<b id='" + _arg1.id) + "' />")); }; } public function getRoom(_arg1:int):Room{ if (!checkRoomList()){ return (null); }; return (roomList[_arg1]); } public function getRoomByName(_arg1:String):Room{ var _local3:Room; if (!checkRoomList()){ return (null); }; var _local2:Room; for each (_local3 in roomList) { if (_local3.getName() == _arg1){ _local2 = _local3; break; }; }; return (_local2); } public function getRoomList():void{ var _local1:Object = {t:"sys"}; send(_local1, "getRmList", activeRoomId, ""); } public function getActiveRoom():Room{ if (((!(checkRoomList())) || (!(checkJoin())))){ return (null); }; return (roomList[activeRoomId]); } public function getRandomKey():void{ send({t:"sys"}, "rndK", -1, ""); } public function getUploadPath():String{ return ((((("http://" + this.ipAddress) + ":") + this.httpPort) + "/default/uploads/")); } public function getVersion():String{ return (((((this.majVersion + ".") + this.minVersion) + ".") + this.subVersion)); } public function joinRoom(_arg1, _arg2:String="", _arg3:Boolean=false, _arg4:Boolean=false, _arg5:int=-1):void{ var _local8:Room; var _local9:Object; var _local10:String; var _local11:int; var _local12:String; if (!checkRoomList()){ return; }; var _local6 = -1; var _local7:int = (_arg3) ? 1 : 0; if (!this.changingRoom){ if (typeof(_arg1) == "number"){ _local6 = int(_arg1); } else { if (typeof(_arg1) == "string"){ for each (_local8 in roomList) { if (_local8.getName() == _arg1){ _local6 = _local8.getId(); break; }; }; }; }; if (_local6 != -1){ _local9 = {t:"sys"}; _local10 = (_arg4) ? "0" : "1"; _local11 = ((_arg5 > -1)) ? _arg5 : activeRoomId; if (activeRoomId == -1){ _local10 = "0"; _local11 = -1; }; _local12 = (((((((((("<room id='" + _local6) + "' pwd='") + _arg2) + "' spec='") + _local7) + "' leave='") + _local10) + "' old='") + _local11) + "' />"); send(_local9, "joinRoom", activeRoomId, _local12); changingRoom = true; } else { debugMessage("SmartFoxError: requested room to join does not exist!"); }; }; } public function leaveRoom(_arg1:int):void{ if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; var _local2:Object = {t:"sys"}; var _local3 = (("<rm id='" + _arg1) + "' />"); send(_local2, "leaveRoom", _arg1, _local3); } public function loadBuddyList():void{ send({t:"sys"}, "loadB", -1, ""); } public function login(_arg1:String, _arg2:String, _arg3:String):void{ var _local4:Object = {t:"sys"}; var _local5 = (((((("<login z='" + _arg1) + "'><nick><![CDATA[") + _arg2) + "]]></nick><pword><![CDATA[") + _arg3) + "]]></pword></login>"); send(_local4, "login", 0, _local5); } public function logout():void{ var _local1:Object = {t:"sys"}; send(_local1, "logout", -1, ""); } public function removeBuddy(_arg1:String):void{ var _local3:Object; var _local4:String; var _local5:Object; var _local6:String; var _local7:Object; var _local8:SFSEvent; var _local2:Boolean; for (_local4 in buddyList) { _local3 = buddyList[_local4]; if (_local3.name == _arg1){ delete buddyList[_local4]; _local2 = true; break; }; }; if (_local2){ _local5 = {t:"sys"}; _local6 = (("<n>" + _arg1) + "</n>"); send(_local5, "remB", -1, _local6); _local7 = {}; _local7.list = buddyList; _local8 = new SFSEvent(SFSEvent.onBuddyList, _local7); dispatchEvent(_local8); }; } public function roundTripBench():void{ this.benchStartTime = getTimer(); send({t:"sys"}, "roundTrip", activeRoomId, ""); } public function sendBuddyPermissionResponse(_arg1:Boolean, _arg2:String):void{ var _local3:Object = {t:"sys"}; var _local4 = (((("<n res='" + (_arg1) ? "g" : "r") + "'>") + _arg2) + "</n>"); send(_local3, "bPrm", -1, _local4); } public function sendPublicMessage(_arg1:String, _arg2:int=-1):void{ if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; if (_arg2 == -1){ _arg2 = activeRoomId; }; var _local3:Object = {t:"sys"}; var _local4 = (("<txt><![CDATA[" + Entities.encodeEntities(_arg1)) + "]]></txt>"); send(_local3, "pubMsg", _arg2, _local4); } public function sendPrivateMessage(_arg1:String, _arg2:int, _arg3:int=-1):void{ if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; if (_arg3 == -1){ _arg3 = activeRoomId; }; var _local4:Object = {t:"sys"}; var _local5 = (((("<txt rcp='" + _arg2) + "'><![CDATA[") + Entities.encodeEntities(_arg1)) + "]]></txt>"); send(_local4, "prvMsg", _arg3, _local5); } public function sendModeratorMessage(_arg1:String, _arg2:String, _arg3:int=-1):void{ if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; var _local4:Object = {t:"sys"}; var _local5 = (((((("<txt t='" + _arg2) + "' id='") + _arg3) + "'><![CDATA[") + Entities.encodeEntities(_arg1)) + "]]></txt>"); send(_local4, "modMsg", activeRoomId, _local5); } public function sendObject(_arg1:Object, _arg2:int=-1):void{ if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; if (_arg2 == -1){ _arg2 = activeRoomId; }; var _local3 = (("<![CDATA[" + ObjectSerializer.getInstance().serialize(_arg1)) + "]]>"); var _local4:Object = {t:"sys"}; send(_local4, "asObj", _arg2, _local3); } public function sendObjectToGroup(_arg1:Object, _arg2:Array, _arg3:int=-1):void{ var _local5:String; var _local6:Object; var _local7:String; if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; if (_arg3 == -1){ _arg3 = activeRoomId; }; var _local4 = ""; for (_local5 in _arg2) { if (!isNaN(_arg2[_local5])){ _local4 = (_local4 + (_arg2[_local5] + ",")); }; }; _local4 = _local4.substr(0, (_local4.length - 1)); _arg1._$$_ = _local4; _local6 = {t:"sys"}; _local7 = (("<![CDATA[" + ObjectSerializer.getInstance().serialize(_arg1)) + "]]>"); send(_local6, "asObjG", _arg3, _local7); } public function sendXtMessage(_arg1:String, _arg2:String, _arg3, _arg4:String="xml", _arg5:int=-1):void{ var _local6:Object; var _local7:Object; var _local8:String; var _local9:String; var _local10:Number; var _local11:Object; var _local12:Object; var _local13:String; if (!checkRoomList()){ return; }; if (_arg5 == -1){ _arg5 = activeRoomId; }; if (_arg4 == XTMSG_TYPE_XML){ _local6 = {t:"xt"}; _local7 = {name:_arg1, cmd:_arg2, param:_arg3}; _local8 = (("<![CDATA[" + ObjectSerializer.getInstance().serialize(_local7)) + "]]>"); send(_local6, "xtReq", _arg5, _local8); } else { if (_arg4 == XTMSG_TYPE_STR){ _local9 = ((((((((MSG_STR + "xt") + MSG_STR) + _arg1) + MSG_STR) + _arg2) + MSG_STR) + _arg5) + MSG_STR); _local10 = 0; while (_local10 < _arg3.length) { _local9 = (_local9 + (_arg3[_local10].toString() + MSG_STR)); _local10++; }; sendString(_local9); } else { if (_arg4 == XTMSG_TYPE_JSON){ _local11 = {}; _local11.x = _arg1; _local11.c = _arg2; _local11.r = _arg5; _local11.p = _arg3; _local12 = {}; _local12.t = "xt"; _local12.b = _local11; _local13 = JSON.encode(_local12); sendJson(_local13); }; }; }; } public function setBuddyBlockStatus(_arg1:String, _arg2:Boolean):void{ var _local4:String; var _local5:Object; var _local6:SFSEvent; var _local3:Object = getBuddyByName(_arg1); if (_local3 != null){ if (_local3.isBlocked != _arg2){ _local3.isBlocked = _arg2; _local4 = (((("<n x='" + (_arg2) ? "1" : "0") + "'>") + _arg1) + "</n>"); send({t:"sys"}, "setB", -1, _local4); _local5 = {}; _local5.buddy = _local3; _local6 = new SFSEvent(SFSEvent.onBuddyListUpdate, _local5); dispatchEvent(_local6); }; }; } public function setBuddyVariables(_arg1:Array):void{ var _local4:String; var _local5:String; var _local2:Object = {t:"sys"}; var _local3 = "<vars>"; for (_local4 in _arg1) { _local5 = _arg1[_local4]; if (myBuddyVars[_local4] != _local5){ myBuddyVars[_local4] = _local5; _local3 = (_local3 + (((("<var n='" + _local4) + "'><![CDATA[") + _local5) + "]]></var>")); }; }; _local3 = (_local3 + "</vars>"); this.send(_local2, "setBvars", -1, _local3); } public function setRoomVariables(_arg1:Array, _arg2:int=-1, _arg3:Boolean=true):void{ var _local5:String; var _local6:Object; if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; if (_arg2 == -1){ _arg2 = activeRoomId; }; var _local4:Object = {t:"sys"}; if (_arg3){ _local5 = "<vars>"; } else { _local5 = "<vars so='0'>"; }; for each (_local6 in _arg1) { _local5 = (_local5 + getXmlRoomVariable(_local6)); }; _local5 = (_local5 + "</vars>"); send(_local4, "setRvars", _arg2, _local5); } public function setUserVariables(_arg1:Object, _arg2:int=-1):void{ if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; if (_arg2 == -1){ _arg2 = activeRoomId; }; var _local3:Object = {t:"sys"}; var _local4:Room = getActiveRoom(); var _local5:User = _local4.getUser(myUserId); _local5.setVariables(_arg1); var _local6:String = getXmlUserVariable(_arg1); send(_local3, "setUvars", _arg2, _local6); } public function switchSpectator(_arg1:int=-1):void{ if (((!(checkRoomList())) || (!(checkJoin())))){ return; }; if (_arg1 == -1){ _arg1 = activeRoomId; }; send({t:"sys"}, "swSpec", _arg1, ""); } public function uploadFile(_arg1:FileReference, _arg2:int=-1, _arg3:String="", _arg4:int=-1):void{ if (_arg2 == -1){ _arg2 = this.myUserId; }; if (_arg3 == ""){ _arg3 = this.myUserName; }; if (_arg4 == -1){ _arg4 = this.httpPort; }; _arg1.upload(new URLRequest(((((((("http://" + this.ipAddress) + ":") + _arg4) + "/default/Upload.py?id=") + _arg2) + "&nick=") + _arg3))); debugMessage(((((((("[UPLOAD]: http://" + this.ipAddress) + ":") + _arg4) + "/default/Upload.py?id=") + _arg2) + "&nick=") + _arg3)); } public function __logout():void{ initialize(true); } public function sendString(_arg1:String):void{ debugMessage((("[Sending - STR]: " + _arg1) + "\n")); if (isHttpMode){ httpConnection.send(_arg1); } else { writeToSocket(_arg1); }; } public function sendJson(_arg1:String):void{ debugMessage((("[Sending - JSON]: " + _arg1) + "\n")); if (isHttpMode){ httpConnection.send(_arg1); } else { writeToSocket(_arg1); }; } public function getBenchStartTime():int{ return (this.benchStartTime); } public function clearRoomList():void{ this.roomList = []; } private function initialize(_arg1:Boolean=false):void{ this.changingRoom = false; this.amIModerator = false; this.playerId = -1; this.activeRoomId = -1; this.myUserId = -1; this.myUserName = ""; this.roomList = []; this.buddyList = []; this.myBuddyVars = []; if (!_arg1){ this.connected = false; this.isHttpMode = false; }; } private function onConfigLoadSuccess(_arg1:Event):void{ var _local4:SFSEvent; var _local2:URLLoader = (_arg1.target as URLLoader); var _local3:XML = new XML(_local2.data); this.ipAddress = (this.blueBoxIpAddress = _local3.ip); this.port = int(_local3.port); this.defaultZone = _local3.zone; if (_local3.blueBoxIpAddress != undefined){ this.blueBoxIpAddress = _local3.blueBoxIpAddress; }; if (_local3.blueBoxPort != undefined){ this.blueBoxPort = _local3.blueBoxPort; }; if (_local3.debug != undefined){ this.debug = ((_local3.debug.toLowerCase() == "true")) ? true : false; }; if (_local3.smartConnect != undefined){ this.smartConnect = ((_local3.smartConnect.toLowerCase() == "true")) ? true : false; }; if (_local3.httpPort != undefined){ this.httpPort = int(_local3.httpPort); }; if (_local3.httpPollSpeed != undefined){ this.httpPollSpeed = int(_local3.httpPollSpeed); }; if (_local3.rawProtocolSeparator != undefined){ rawProtocolSeparator = _local3.rawProtocolSeparator; }; if (autoConnectOnConfigSuccess){ this.connect(ipAddress, port); } else { _local4 = new SFSEvent(SFSEvent.onConfigLoadSuccess, {}); dispatchEvent(_local4); }; } private function onConfigLoadFailure(_arg1:IOErrorEvent):void{ var _local2:Object = {message:_arg1.text}; var _local3:SFSEvent = new SFSEvent(SFSEvent.onConfigLoadFailure, _local2); dispatchEvent(_local3); } private function setupMessageHandlers():void{ sysHandler = new SysHandler(this); extHandler = new ExtHandler(this); addMessageHandler("sys", sysHandler); addMessageHandler("xt", extHandler); } private function addMessageHandler(_arg1:String, _arg2:IMessageHandler):void{ if (this.messageHandlers[_arg1] == null){ this.messageHandlers[_arg1] = _arg2; } else { debugMessage((("Warning, message handler called: " + _arg1) + " already exist!")); }; } private function debugMessage(_arg1:String):void{ var _local2:SFSEvent; if (this.debug){ trace(_arg1); _local2 = new SFSEvent(SFSEvent.onDebugMessage, {message:_arg1}); dispatchEvent(_local2); }; } private function send(_arg1:Object, _arg2:String, _arg3:Number, _arg4:String):void{ var _local5:String = makeXmlHeader(_arg1); _local5 = (_local5 + ((((((("<body action='" + _arg2) + "' r='") + _arg3) + "'>") + _arg4) + "</body>") + closeHeader())); debugMessage((("[Sending]: " + _local5) + "\n")); if (isHttpMode){ httpConnection.send(_local5); } else { writeToSocket(_local5); }; } private function writeToSocket(_arg1:String):void{ var _local2:ByteArray = new ByteArray(); _local2.writeMultiByte(_arg1, "utf-8"); _local2.writeByte(0); socketConnection.writeBytes(_local2); socketConnection.flush(); } private function makeXmlHeader(_arg1:Object):String{ var _local3:String; var _local2 = "<msg"; for (_local3 in _arg1) { _local2 = (_local2 + ((((" " + _local3) + "='") + _arg1[_local3]) + "'")); }; _local2 = (_local2 + ">"); return (_local2); } private function closeHeader():String{ return ("</msg>"); } private function checkBuddyDuplicates(_arg1:String):Boolean{ var _local3:Object; var _local2:Boolean; for each (_local3 in buddyList) { if (_local3.name == _arg1){ _local2 = true; break; }; }; return (_local2); } private function xmlReceived(_arg1:String):void{ var _local2:XML = new XML(_arg1); var _local3:String = _local2.@t; var _local4:String = _local2.body.@action; var _local5:int = _local2.body.@r; var _local6:IMessageHandler = messageHandlers[_local3]; if (_local6 != null){ _local6.handleMessage(_local2, XTMSG_TYPE_XML); }; } private function jsonReceived(_arg1:String):void{ var _local2:Object = JSON.decode(_arg1); var _local3:String = _local2["t"]; var _local4:IMessageHandler = messageHandlers[_local3]; if (_local4 != null){ _local4.handleMessage(_local2["b"], XTMSG_TYPE_JSON); }; } private function strReceived(_arg1:String):void{ var _local2:Array = _arg1.substr(1, (_arg1.length - 2)).split(MSG_STR); var _local3:String = _local2[0]; var _local4:IMessageHandler = messageHandlers[_local3]; if (_local4 != null){ _local4.handleMessage(_local2.splice(1, (_local2.length - 1)), XTMSG_TYPE_STR); }; } private function getXmlRoomVariable(_arg1:Object):String{ var _local2:String = _arg1.name.toString(); var _local3:* = _arg1.val; var _local4:String = (_arg1.priv) ? "1" : "0"; var _local5:String = (_arg1.persistent) ? "1" : "0"; var _local6:String; var _local7 = typeof(_local3); if (_local7 == "boolean"){ _local6 = "b"; _local3 = (_local3) ? "1" : "0"; } else { if (_local7 == "number"){ _local6 = "n"; } else { if (_local7 == "string"){ _local6 = "s"; } else { if ((((((_local3 == null)) && ((_local7 == "object")))) || ((_local7 == "undefined")))){ _local6 = "x"; _local3 = ""; }; }; }; }; if (_local6 != null){ return ((((((((((("<var n='" + _local2) + "' t='") + _local6) + "' pr='") + _local4) + "' pe='") + _local5) + "'><![CDATA[") + _local3) + "]]></var>")); }; return (""); } private function getXmlUserVariable(_arg1:Object):String{ var _local3:*; var _local4:String; var _local5:String; var _local6:String; var _local2 = "<vars>"; for (_local6 in _arg1) { _local3 = _arg1[_local6]; _local5 = typeof(_local3); _local4 = null; if (_local5 == "boolean"){ _local4 = "b"; _local3 = (_local3) ? "1" : "0"; } else { if (_local5 == "number"){ _local4 = "n"; } else { if (_local5 == "string"){ _local4 = "s"; } else { if ((((((_local3 == null)) && ((_local5 == "object")))) || ((_local5 == "undefined")))){ _local4 = "x"; _local3 = ""; }; }; }; }; if (_local4 != null){ _local2 = (_local2 + (((((("<var n='" + _local6) + "' t='") + _local4) + "'><![CDATA[") + _local3) + "]]></var>")); }; }; _local2 = (_local2 + "</vars>"); return (_local2); } private function checkRoomList():Boolean{ var _local1:Boolean; if ((((roomList == null)) || ((roomList.length == 0)))){ _local1 = false; errorTrace("The room list is empty!\nThe client API cannot function properly until the room list is populated.\nPlease consult the documentation for more infos."); }; return (_local1); } private function checkJoin():Boolean{ var _local1:Boolean; if (activeRoomId < 0){ _local1 = false; errorTrace("You haven't joined any rooms!\nIn order to interact with the server you should join at least one room.\nPlease consult the documentation for more infos."); }; return (_local1); } private function errorTrace(_arg1:String):void{ trace("\n****************************************************************"); trace("Internal error:"); trace(_arg1); trace("****************************************************************"); } private function handleHttpConnect(_arg1:HttpEvent):void{ this.handleSocketConnection(null); connected = true; httpConnection.send(HTTP_POLL_REQUEST); } private function handleHttpClose(_arg1:HttpEvent):void{ initialize(); var _local2:SFSEvent = new SFSEvent(SFSEvent.onConnectionLost, {}); dispatchEvent(_local2); } private function handleHttpData(_arg1:HttpEvent):void{ var _local4:String; var _local5:int; var _local2:String = (_arg1.params.data as String); var _local3:Array = _local2.split("\n"); if (_local3[0] != ""){ _local5 = 0; while (_local5 < (_local3.length - 1)) { _local4 = _local3[_local5]; if (_local4.length > 0){ handleMessage(_local4); }; _local5++; }; if (this._httpPollSpeed > 0){ setTimeout(this.handleDelayedPoll, this._httpPollSpeed); } else { handleDelayedPoll(); }; }; } private function handleDelayedPoll():void{ httpConnection.send(HTTP_POLL_REQUEST); } private function handleHttpError(_arg1:HttpEvent):void{ trace("HttpError"); if (!connected){ dispatchConnectionError(); }; } private function handleSocketConnection(_arg1:Event):void{ var _local2:Object = {t:"sys"}; var _local3 = (((("<ver v='" + this.majVersion.toString()) + this.minVersion.toString()) + this.subVersion.toString()) + "' />"); send(_local2, "verChk", 0, _local3); } private function handleSocketDisconnection(_arg1:Event):void{ initialize(); var _local2:SFSEvent = new SFSEvent(SFSEvent.onConnectionLost, {}); dispatchEvent(_local2); } private function handleIOError(_arg1:IOErrorEvent):void{ tryBlueBoxConnection(_arg1); } private function tryBlueBoxConnection(_arg1:ErrorEvent):void{ var _local2:String; var _local3:int; if (!connected){ if (smartConnect){ debugMessage("Socket connection failed. Trying BlueBox"); isHttpMode = true; _local2 = ((blueBoxIpAddress)!=null) ? blueBoxIpAddress : ipAddress; _local3 = ((blueBoxPort)!=0) ? blueBoxPort : httpPort; httpConnection.connect(_local2, _local3); } else { dispatchConnectionError(); }; } else { dispatchEvent(_arg1); debugMessage(("[WARN] Connection error: " + _arg1.text)); }; } private function handleSocketError(_arg1:SecurityErrorEvent):void{ debugMessage(("Socket Error: " + _arg1.text)); } private function handleSecurityError(_arg1:SecurityErrorEvent):void{ tryBlueBoxConnection(_arg1); } private function handleSocketData(_arg1:Event):void{ var _local3:int; var _local2:int = socketConnection.bytesAvailable; while (--_local2 >= 0) { _local3 = socketConnection.readByte(); if (_local3 != 0){ byteBuffer.writeByte(_local3); } else { handleMessage(byteBuffer.toString()); byteBuffer = new ByteArray(); }; }; } private function handleMessage(_arg1:String):void{ if (_arg1 != "ok"){ debugMessage((((("[ RECEIVED ]: " + _arg1) + ", (len: ") + _arg1.length) + ")")); }; var _local2:String = _arg1.charAt(0); if (_local2 == MSG_XML){ xmlReceived(_arg1); } else { if (_local2 == MSG_STR){ strReceived(_arg1); } else { if (_local2 == MSG_JSON){ jsonReceived(_arg1); }; }; }; } private function dispatchConnectionError():void{ var _local1:Object = {}; _local1.success = false; _local1.error = "I/O Error"; var _local2:SFSEvent = new SFSEvent(SFSEvent.onConnection, _local1); dispatchEvent(_local2); } } }//package it.gotoandplay.smartfoxserver
Section 188
//aif (litttlepage.aif) package litttlepage { import flash.media.*; public dynamic class aif extends Sound { } }//package litttlepage
Section 189
//SmartFoxManager (livecode.SmartFoxManager) package livecode { import flash.events.*; import it.gotoandplay.smartfoxserver.*; import it.gotoandplay.smartfoxserver.data.*; import flash.utils.*; import it.gotoandplay.smartfoxserver.util.*; import it.gotoandplay.smartfoxserver.handlers.*; import it.gotoandplay.smartfoxserver.http.*; import com.rkg.display.*; public class SmartFoxManager { public var smartFox:SmartFoxClient; public var config:String;// = "smartFoxConfig.xml" public var roomNameBeingCreated:String;// = "" public var buddy:Object; public var buddyName:String;// = "" public var personThatChallengedMe:String;// = "" public var userIdThatChallengedMe:int; public var isChallenging:Boolean;// = false public var hasCreatedChallengeRoom:Boolean;// = false public var isConnected:Boolean;// = false public var buddyListLoaded:Boolean;// = false public var clearedBuddyList:Boolean;// = false public var isRoomListUpdated:Boolean;// = false public var isInGame:Boolean;// = false public var isInMatch:Boolean;// = false public var isLoggedIn:Boolean;// = false public var sentGameEndedMessage:Boolean;// = false public var myGameId:int; public var opponentName:String;// = "" public var nameOfPersonIAmCurrentlyChallenging:String;// = "" public var pushDenyingName:String;// = "" public var personThatChallengedMeRoomId:int; public var hasSavedBoardUpdate:Boolean;// = false public var opponentReadyToPlay:Boolean;// = false public var savedBoardUpdate:String; public var opponentSmartFoxManagerVersion:int;// = 0 public var opponentTookTooLong:Boolean;// = false public var opponentTookTooLongInGame:Boolean;// = false public var opponentHasNotAcceptedTimer:Timer; public var opponentHasNotAcceptedInGameTimer:Timer; public var timeSinceLastPacket:int; public var timeSinceKeepAlive:int; public var isDenying:Boolean;// = false public var timedOut:Boolean;// = false public var needToShowDisconnectedPopup:Boolean;// = false public var hasShownDisconnectedPopup:Boolean;// = false public var needToEndSession:Boolean;// = false public var lastRoom:int;// = -1 public var consoleSprite:ConsoleSprite;// = null public var sendBoardUpdate:Function;// = null public var handleConfigLoadSuccess:Function;// = null public var handleDenyChallengeMessage:Function;// = null public var handleChallengeMessage:Function;// = null public var handleBoardUpdate:Function;// = null public var handledAddSnoodToLobMessage:Function;// = null public var handleGameEndedMessage:Function;// = null public var handleReadyToPlayMessage:Function;// = null public var handleOnJoinRoomError:Function;// = null public var handleCreateRoomError:Function;// = null public var isMultiplayerGame:Function;// = null public var isPuzzleGame:Function;// = null public var getGameMode:Function;// = null public var getDifficulty:Function;// = null public var setGameSeed:Function;// = null public static const SNOOD_SMARTFOXMANAGER_VERSION:int = 1; public static const SNOOD_SMARTFOXMANAGER_FLASH_COMPATIBLE_VERSION:int = 1; public static const ROOM_PASSWORD:String = ""; public static const PACKET_TYPE_ACCEPT_RANDOM_CHALLENGE:String = "A"; public static const PACKET_TYPE_CHALLENGE:String = "C"; public static const PACKET_TYPE_DENY_CHALLENGE:String = "D"; public static const PACKET_TYPE_RANDOM_ROOM_CREATED:String = "E"; public static const PACKET_TYPE_GAME_ENDED:String = "G"; public static const PACKET_TYPE_KEEP_ALIVE:String = "K"; public static const PACKET_TYPE_SNOOB_LOB:String = "L"; public static const PACKET_TYPE_READY_TO_PLAY:String = "P"; public static const PACKET_TYPE_RANDOM_CHALLENGE:String = "R"; public static const PACKET_TYPE_BOARD_UPDATE:String = "U"; public static const PACKET_TYPE_SEPERATOR_STRING:String = "@"; public static const LOBBY_ROOM_ID:int = 2; public static const RANDOM_ROOM_ID:int = -3; public static const RANDOM_INVITE_INTERVAL:int = 2000; public static const BOARD_UPDATE_INTERVAL:int = 5000; public static const RANDOM_PEOPLE_TO_INVITE_AT_A_TIME:int = 1; public static const NOT_ACCEPTED_TIME_OUT:int = 120000; public static const NOT_ACCEPTED_IN_GAME_TIME_OUT:int = 30000; public static const TIMEOUT_INTERVAL:int = 30000; public static const SMART_FOX_URL:String = "sf-001.rkg-dev.com"; public static const SMART_FOX_PORT:int = 9339; private static var sInstance:SmartFoxManager = null; public function SmartFoxManager(){ if (sInstance != null){ throw (new Error("SmartFoxManager is a singleton, already instantiated.")); }; sentGameEndedMessage = false; userIdThatChallengedMe = -1; needToEndSession = false; opponentHasNotAcceptedTimer = new Timer(NOT_ACCEPTED_TIME_OUT, 1); opponentHasNotAcceptedInGameTimer = new Timer(NOT_ACCEPTED_IN_GAME_TIME_OUT, 1); } public function init(_arg1:String=null):void{ if (_arg1 != null){ config = _arg1; }; } public function update(_arg1:int):void{ if (((isInMatch) && (!(timedOut)))){ timeSinceLastPacket = (timeSinceLastPacket + _arg1); timeSinceKeepAlive = (timeSinceKeepAlive + _arg1); if (timeSinceKeepAlive > (TIMEOUT_INTERVAL / 2)){ sendKeepAlive(); timeSinceKeepAlive = 0; }; if (timeSinceLastPacket > TIMEOUT_INTERVAL){ timedOut = true; opponentReadyToPlay = false; needToShowDisconnectedPopup = true; timeSinceLastPacket = 0; }; }; if (needToEndSession){ needToEndSession = false; endSession(); }; } public function destroy():void{ endSession(); cleanup(); } public function onConfigLoadSuccess(_arg1:SFSEvent):void{ if (handleConfigLoadSuccess != null){ handleConfigLoadSuccess(); }; } public function onConnectionHandler(_arg1:SFSEvent):void{ if (_arg1.params.success){ isConnected = true; } else { isConnected = false; needToEndSession = true; }; } public function login(_arg1:String):void{ myGameId = 0; smartFox.login(smartFox.defaultZone, _arg1, ""); } public function onLoginHandler(_arg1:SFSEvent):void{ if (_arg1.params.success){ isLoggedIn = true; smartFox.loadBuddyList(); } else { isLoggedIn = false; needToEndSession = true; }; } public function getChallengeIndex():int{ var _local1:int = (myGameId - 1); if (((!((_local1 == 0))) && (!((_local1 == 1))))){ if (consoleSprite){ consoleSprite.print(("Multiplayer: ERROR getChallengeIndex != 0 or 1 = " + _local1)); }; }; return (_local1); } public function onRoomListUpdateHandler(_arg1:SFSEvent):void{ isRoomListUpdated = true; } public function onConnectionLostHandler(_arg1:SFSEvent):void{ needToEndSession = true; if (((!((isMultiplayerGame == null))) && (isMultiplayerGame()))){ needToShowDisconnectedPopup = true; } else { startSession(); }; } public function joinRoom(_arg1:int):void{ smartFox.joinRoom(_arg1, ROOM_PASSWORD, false, false, -1); lastRoom = _arg1; } public function randomInt(_arg1:int, _arg2:int):int{ var _local3:int = (Math.random() * ((_arg2 - _arg1) + 1)); return ((_arg1 + _local3)); } public function createRoom(_arg1:String):void{ var _local2:Object = new Object(); _local2.name = _arg1; _local2.isGame = true; _local2.maxUsers = 2; _local2.maxSpectators = 0; _local2.password = ROOM_PASSWORD; _local2.exitCurrentRoom = true; roomNameBeingCreated = _arg1; smartFox.createRoom(_local2); } public function makeRoomNameForBuddy(_arg1:String):String{ return ((smartFox.myUserName + _arg1)); } public function createRoomForBuddy():void{ var _local1:String; if (buddyName != ""){ _local1 = makeRoomNameForBuddy(buddyName); buddyName = ""; createRoom(_local1); hasCreatedChallengeRoom = true; }; } public function onCreateRoomErrorHandler(_arg1:SFSEvent):void{ if (handleCreateRoomError != null){ handleCreateRoomError(_arg1.params.error); }; } public function onJoinRoomHandler(_arg1:SFSEvent):void{ var _local4:Date; var _local5:Array; var _local6:Object; var _local2:int; var _local3:Room = _arg1.params.room; lastRoom = _local3.getId(); if (smartFox.activeRoomId == LOBBY_ROOM_ID){ return; }; if (_local3){ if (!hasCreatedChallengeRoom){ _local2 = _local3.getVariable("seed"); if (((!((_local2 == 0))) && (!((setGameSeed == null))))){ setGameSeed(_local2); }; timedOut = false; hasShownDisconnectedPopup = false; } else { if (((((!((this.buddy == null))) && (!((this.buddy.name == null))))) && ((this.buddy.name.length > 0)))){ _local4 = new Date(); _local2 = _local4.time; _local5 = new Array(); _local6 = new Object(); _local6.name = "seed"; _local6.val = _local2; _local6.priv = false; _local5.push(_local6); smartFox.setRoomVariables(_local5, smartFox.activeRoomId, true); if (setGameSeed != null){ setGameSeed(_local2); }; timedOut = false; hasShownDisconnectedPopup = false; if (this.buddy.isOnline){ if (isChallenging){ sendChallengeMessageTo(buddy.buddyId); this.buddy = null; }; } else { isChallenging = true; this.buddy = null; }; }; }; }; } public function onJoinRoomErrorHandler(_arg1:SFSEvent):void{ personThatChallengedMe = ""; if (handleOnJoinRoomError != null){ handleOnJoinRoomError(); }; } public function handleBuddy(_arg1:Object):void{ buddy = _arg1; if (isChallenging){ myGameId = 1; createRoomForBuddy(); } else { if (isDenying){ isDenying = false; userIdThatChallengedMe = buddy.buddyId; denyChallenge(pushDenyingName); pushDenyingName = ""; buddy = null; } else { smartFox.getBuddyRoom(_arg1); }; }; } public function hasntAcceptedTimeout(_arg1:TimerEvent):void{ opponentHasNotAcceptedTimer.stop(); opponentTookTooLong = true; } public function hasntAcceptedInGameTimeout(_arg1:TimerEvent):void{ opponentHasNotAcceptedInGameTimer.stop(); opponentTookTooLongInGame = true; } public function joinBuddyRoom(_arg1:String):void{ var _local2:Object = smartFox.getBuddyByName(_arg1); buddyName = _arg1; if (!_local2){ smartFox.addBuddy(buddyName); } else { handleBuddy(_local2); }; } public function denyUserByName(_arg1:String):void{ isDenying = true; isChallenging = false; joinBuddyRoom(_arg1); } public function challengeBuddy(_arg1:String):void{ opponentTookTooLong = false; nameOfPersonIAmCurrentlyChallenging = _arg1; opponentHasNotAcceptedTimer.reset(); opponentHasNotAcceptedTimer.start(); isChallenging = true; isDenying = false; joinBuddyRoom(_arg1); } public function findBuddyByName(_arg1:Array, _arg2:String):Object{ var _local3:Object; var _local4:int; while (_local4 < _arg1.length) { if (_arg1[_local4].name == _arg2){ _local3 = _arg1[_local4]; break; }; _local4++; }; return (_local3); } public function onBuddyListHandler(_arg1:SFSEvent):void{ var _local2:Array; var _local3:Object; trace("onBuddyListHandler start"); if (buddyListLoaded == false){ buddyListLoaded = true; smartFox.clearBuddyList(); } else { if (clearedBuddyList == false){ clearedBuddyList = true; } else { _local2 = (_arg1.params.list as Array); _local3 = findBuddyByName(_local2, buddyName); if (_local3){ handleBuddy(_local3); }; }; }; trace("onBuddyListHandler end"); } public function onBuddyRoomHandler(_arg1:SFSEvent):void{ var _local2:Array = _arg1.params.idList; var _local3:int = _local2[0]; buddyName = ""; buddy = null; myGameId = 2; smartFox.joinRoom(_local3); } public function onUserEnterRoomHandler(_arg1:SFSEvent):void{ var _local2:int = _arg1.params.roomId; var _local3:User = _arg1.params.user; if (_local3.getId() == smartFox.myUserId){ this.lastRoom = _local2; }; if (_local2 == LOBBY_ROOM_ID){ if (this.isChallenging){ if (_local3.getName() == this.buddyName){ if (!this.hasCreatedChallengeRoom){ createRoomForBuddy(); }; sendChallengeMessageTo(_local3.getId()); this.isChallenging = false; }; }; } else { if (_local3.getId() != smartFox.myUserId){ nameOfPersonIAmCurrentlyChallenging = ""; opponentName = _local3.getName(); }; }; } public function onUserLeaveRoomHandler(_arg1:SFSEvent):void{ var _local2:int = _arg1.params.roomId; var _local3:int = _arg1.params.userId; var _local4:String = _arg1.params.userName; if (_local2 != LOBBY_ROOM_ID){ if (_local3 != smartFox.myUserId){ needToShowDisconnectedPopup = true; } else { lastRoom = -1; }; isInMatch = false; opponentReadyToPlay = false; timeSinceLastPacket = 0; }; } public function cancelChallenge():void{ opponentHasNotAcceptedTimer.reset(); opponentTookTooLong = false; isChallenging = false; nameOfPersonIAmCurrentlyChallenging = ""; if (buddyName){ smartFox.removeBuddy(buddyName); buddyName = ""; }; hasCreatedChallengeRoom = false; } public function denyChallenge(_arg1:String):void{ if (personThatChallengedMe != ""){ if (userIdThatChallengedMe == -1){ pushDenyingName = _arg1; denyUserByName(personThatChallengedMe); } else { if (_arg1 == ""){ _arg1 = smartFox.myUserName; }; sendDenyChallengeMessageTo(userIdThatChallengedMe, _arg1); userIdThatChallengedMe = -1; }; personThatChallengedMe = ""; }; } public function joinRoomOfPersonThatChallengedMe():void{ opponentName = personThatChallengedMe; if (personThatChallengedMeRoomId > 0){ joinRoom(personThatChallengedMeRoomId); personThatChallengedMeRoomId = 0; } else { if (personThatChallengedMe != ""){ joinBuddyRoom(personThatChallengedMe); personThatChallengedMe = ""; userIdThatChallengedMe = -1; }; }; } public function switchToSinglePlayer(){ onGameEnded(); } public function createPacket(_arg1:String, _arg2:String):String{ return (((((myGameId + PACKET_TYPE_SEPERATOR_STRING) + _arg1) + PACKET_TYPE_SEPERATOR_STRING) + _arg2)); } public function sendReadyToPlayMessage():void{ var _local1:String = createPacket(PACKET_TYPE_READY_TO_PLAY, ""); sendPublicMessage(_local1); } public function sendDenyChallengeMessageTo(_arg1:int, _arg2:String):void{ var _local3:String = ((PACKET_TYPE_DENY_CHALLENGE + PACKET_TYPE_SEPERATOR_STRING) + _arg2); sendPrivateMessage(_local3, _arg1); } public function sendChallengeMessageTo(_arg1:int):void{ var _local2:*; if (((!(isInGame)) && (!(isInMatch)))){ _local2 = ((((((((PACKET_TYPE_CHALLENGE + PACKET_TYPE_SEPERATOR_STRING) + smartFox.myUserName) + ",") + smartFox.myUserId) + ",") + getGameMode()) + ",") + getDifficulty()); sendPrivateMessage(_local2, _arg1); }; } public function sendPublicMessage(_arg1:String):void{ timeSinceKeepAlive = 0; smartFox.sendPublicMessage(_arg1); } public function sendPrivateMessage(_arg1:String, _arg2:int):void{ smartFox.sendPrivateMessage(_arg1, _arg2); } public function onGameStarted():void{ isInGame = true; if (isInMatch){ timeSinceLastPacket = 0; }; isInMatch = true; if (!opponentReadyToPlay){ opponentTookTooLongInGame = false; opponentHasNotAcceptedInGameTimer.reset(); opponentHasNotAcceptedInGameTimer.start(); }; isChallenging = false; hasCreatedChallengeRoom = false; sentGameEndedMessage = false; initUserVariables(); sendReadyToPlayMessage(); } public function onGameEnded():void{ personThatChallengedMe = ""; isInGame = false; } public function sendKeepAlive(){ var _local1:String = createPacket(PACKET_TYPE_KEEP_ALIVE, ""); sendPublicMessage(_local1); } public function getSavedBoardUpdate():String{ if (hasSavedBoardUpdate){ hasSavedBoardUpdate = false; return (savedBoardUpdate); }; return (null); } public function onPublicMessageHandler(_arg1:SFSEvent):void{ var _local2:String; var _local3:Array; var _local4:int; if (isLoggedIn){ _local2 = _arg1.params.message; _local3 = _local2.split(PACKET_TYPE_SEPERATOR_STRING); if (_local3.length == 3){ _local4 = _local3[0]; if (_local4 != myGameId){ timeSinceLastPacket = 0; switch (_local3[1]){ case PACKET_TYPE_BOARD_UPDATE: if (handleBoardUpdate != null){ handleBoardUpdate(_local3[2]); }; break; case PACKET_TYPE_SNOOB_LOB: if (handledAddSnoodToLobMessage != null){ handledAddSnoodToLobMessage(_local3[2]); }; break; case PACKET_TYPE_GAME_ENDED: if (handleGameEndedMessage != null){ handleGameEndedMessage(_local3[2]); }; break; case PACKET_TYPE_READY_TO_PLAY: if (handleReadyToPlayMessage != null){ handleReadyToPlayMessage(_local3[2]); }; break; case PACKET_TYPE_KEEP_ALIVE: break; default: if (consoleSprite){ consoleSprite.print("Multiplayer: Unknown public packet type"); }; break; }; }; }; }; } public function onPrivateMessageHandler(_arg1:SFSEvent):void{ var _local2:int = _arg1.params.userId; if (_local2 == smartFox.myUserId){ return; }; var _local3:String = _arg1.params.message; var _local4:Array = _local3.split(PACKET_TYPE_SEPERATOR_STRING); if (_local4.length != 2){ return; }; var _local5:String = _local4[0]; var _local6:String = _local4[1]; switch (_local5){ case PACKET_TYPE_CHALLENGE: handleChallengeMessage(_local6); break; case PACKET_TYPE_DENY_CHALLENGE: handleDenyChallengeMessage(_local6); break; }; } public function onUserVariablesUpdate(_arg1:SFSEvent):void{ var _local4:String; trace("onUserVariablesUpdate"); var _local2:Object = _arg1.params.changedVars; var _local3:User = _arg1.params.user; if (_local3.getId() != smartFox.myUserId){ for (_local4 in _local2) { if (_local4 == "version"){ opponentSmartFoxManagerVersion = (_local3.getVariable(_local4) as int); }; }; }; } public function initUserVariables():void{ var _local1:Object = new Object(); _local1["version"] = SNOOD_SMARTFOXMANAGER_VERSION; smartFox.setUserVariables(_local1); } public function hasUserVariable(_arg1:User, _arg2:String):Boolean{ var _local5:String; var _local3:Boolean; var _local4:Array = (_arg1.getVariables() as Array); for (_local5 in _local4) { if (_local5 == _arg2){ _local3 = true; break; }; }; return (_local3); } public function getOpponentSmartFoxManagerVersion():int{ var _local1:Room = smartFox.getRoom(smartFox.activeRoomId); var _local2:int = getOpponentUserId(); var _local3:User = _local1.getUser(_local2); var _local4:int; if (hasUserVariable(_local3, "version")){ _local4 = _local3.getVariable("version"); }; return (_local4); } public function getOpponentUserId():int{ var _local4:String; var _local1:Room = smartFox.getRoom(smartFox.activeRoomId); var _local2:Object = _local1.getUserList(); var _local3 = -1; for (_local4 in _local2) { if (_local2[_local4].getId() != smartFox.myUserId){ _local3 = _local2[_local4].getId(); break; }; }; return (_local3); } public function getOpponentName():String{ var _local1:Room; var _local2:Object; var _local3:String; if ((((opponentName == null)) || ((opponentName.length == 0)))){ _local1 = smartFox.getRoom(smartFox.activeRoomId); _local2 = _local1.getUserList(); for (_local3 in _local2) { if (_local2[_local3].getId() != smartFox.myUserId){ opponentName = _local2[_local3].getName(); break; }; }; }; return (opponentName); } public function logout():void{ isConnected = false; isRoomListUpdated = false; isLoggedIn = false; lastRoom = -1; buddy = null; buddyName = ""; roomNameBeingCreated = ""; opponentName = ""; personThatChallengedMe = ""; pushDenyingName = ""; nameOfPersonIAmCurrentlyChallenging = ""; smartFox.logout(); isInGame = false; isInMatch = false; opponentReadyToPlay = false; opponentHasNotAcceptedTimer.reset(); opponentHasNotAcceptedInGameTimer.reset(); needToShowDisconnectedPopup = false; hasShownDisconnectedPopup = false; } public function endSession():void{ if (smartFox != null){ logout(); smartFox.disconnect(); smartFox = null; }; } public function startSession():void{ if (consoleSprite){ consoleSprite.text = "Multiplayer: Begin startSession"; }; if (smartFox == null){ smartFox = new SmartFoxClient(); smartFox.addEventListener(SFSEvent.onConfigLoadSuccess, onConfigLoadSuccess); smartFox.addEventListener(SFSEvent.onConnection, onConnectionHandler); smartFox.addEventListener(SFSEvent.onLogin, onLoginHandler); smartFox.addEventListener(SFSEvent.onRoomListUpdate, onRoomListUpdateHandler); smartFox.addEventListener(SFSEvent.onConnectionLost, onConnectionLostHandler); smartFox.addEventListener(SFSEvent.onCreateRoomError, onCreateRoomErrorHandler); smartFox.addEventListener(SFSEvent.onJoinRoom, onJoinRoomHandler); smartFox.addEventListener(SFSEvent.onJoinRoomError, onJoinRoomErrorHandler); smartFox.addEventListener(SFSEvent.onBuddyList, onBuddyListHandler); smartFox.addEventListener(SFSEvent.onBuddyRoom, onBuddyRoomHandler); smartFox.addEventListener(SFSEvent.onUserEnterRoom, onUserEnterRoomHandler); smartFox.addEventListener(SFSEvent.onUserLeaveRoom, onUserLeaveRoomHandler); smartFox.addEventListener(SFSEvent.onPublicMessage, onPublicMessageHandler); smartFox.addEventListener(SFSEvent.onPrivateMessage, onPrivateMessageHandler); smartFox.addEventListener(SFSEvent.onUserVariablesUpdate, onUserVariablesUpdate); opponentHasNotAcceptedTimer.reset(); opponentHasNotAcceptedTimer.addEventListener(TimerEvent.TIMER_COMPLETE, hasntAcceptedTimeout); opponentHasNotAcceptedInGameTimer.reset(); opponentHasNotAcceptedInGameTimer.addEventListener(TimerEvent.TIMER_COMPLETE, hasntAcceptedInGameTimeout); }; if (!smartFox.isConnected){ smartFox.loadConfig(config, true); }; timedOut = false; } public function cleanup():void{ if (smartFox){ smartFox.removeEventListener(SFSEvent.onConfigLoadSuccess, onConfigLoadSuccess); smartFox.removeEventListener(SFSEvent.onConnection, onConnectionHandler); smartFox.removeEventListener(SFSEvent.onLogin, onLoginHandler); smartFox.removeEventListener(SFSEvent.onRoomListUpdate, onRoomListUpdateHandler); smartFox.removeEventListener(SFSEvent.onConnectionLost, onConnectionLostHandler); smartFox.removeEventListener(SFSEvent.onCreateRoomError, onCreateRoomErrorHandler); smartFox.removeEventListener(SFSEvent.onJoinRoom, onJoinRoomHandler); smartFox.removeEventListener(SFSEvent.onJoinRoomError, onJoinRoomErrorHandler); smartFox.removeEventListener(SFSEvent.onBuddyList, onBuddyListHandler); smartFox.removeEventListener(SFSEvent.onBuddyRoom, onBuddyRoomHandler); smartFox.removeEventListener(SFSEvent.onUserEnterRoom, onUserEnterRoomHandler); smartFox.removeEventListener(SFSEvent.onUserLeaveRoom, onUserLeaveRoomHandler); smartFox.removeEventListener(SFSEvent.onPublicMessage, onPublicMessageHandler); smartFox.removeEventListener(SFSEvent.onPrivateMessage, onPrivateMessageHandler); smartFox.removeEventListener(SFSEvent.onUserVariablesUpdate, onUserVariablesUpdate); smartFox = null; }; if (opponentHasNotAcceptedTimer){ opponentHasNotAcceptedTimer.stop(); opponentHasNotAcceptedTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, hasntAcceptedTimeout); }; if (opponentHasNotAcceptedInGameTimer){ opponentHasNotAcceptedInGameTimer.stop(); opponentHasNotAcceptedInGameTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, hasntAcceptedInGameTimeout); }; } public static function get Instance():SmartFoxManager{ if (sInstance == null){ sInstance = new (SmartFoxManager); }; return (sInstance); } } }//package livecode
Section 190
//Crossdomain (menucode.facebook.Crossdomain) package menucode.facebook { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.net.*; import com.rkg.firebug.*; public class Crossdomain { public static var mDomains:Object = new Object(); public static function loadCrossdomain(_arg1:String):void{ if (mDomains.hasOwnProperty(_arg1)){ return; }; mDomains[_arg1] = true; var _local2 = (("http://" + _arg1) + "/crossdomain.xml"); Console.log(("loading crossdomain : " + _local2)); Security.loadPolicyFile(_local2); } public static function loadCrossdomainFromUrl(_arg1:String):void{ var _local2:String = _arg1.split("/")[2]; loadCrossdomain(_local2); } } }//package menucode.facebook
Section 191
//FriendPager (menucode.facebook.FriendPager) package menucode.facebook { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.net.*; import flash.utils.*; import com.rkg.firebug.*; import com.rkg.facebook.*; public class FriendPager extends Sprite { protected var mFriends:Array; protected var mFx:int; protected var mFy:int; protected var mCurrentOffset:int;// = 0 protected var mFriendsPerPage:int;// = 0 public var mWidth:int; public var mHeight:int; public var mMask:Sprite; public var mMaskedChild:Sprite; public var mPageCt:int; public var mSelected:Array; protected var mFriendSprites:Array; protected var mScrolling:int;// = 0 protected var mScrollStart:int; protected var mCurrentPage:int;// = 0 protected var mOpts:Object; protected var mPageWidth:int; public static const BORDER:int = 8; public static const LEFT:int = -1; public static const RIGHT:int = 1; public static const SCROLL_TIME:int = 500; public function FriendPager(_arg1:int, _arg2:int, _arg3:Array, _arg4:Object):void{ mOpts = _arg4; mFx = _arg1; mFy = _arg2; mFriends = _arg3; mFriendsPerPage = (mFx * mFy); mPageCt = int(((mFriends.length + (mFriendsPerPage - 1)) / mFriendsPerPage)); mWidth = ((mFx * (FriendSprite.WIDTH + BORDER)) + BORDER); mHeight = ((mFy * (FriendSprite.HEIGHT + BORDER)) + BORDER); mPageWidth = (mFx * (FriendSprite.WIDTH + BORDER)); mMask = new Sprite(); mMask.graphics.beginFill(0xFF0000); mMask.graphics.drawRect(0, 0, (mWidth - 1), (mHeight - 1)); mMask.graphics.endFill(); addChild(mMask); mMaskedChild = new Sprite(); mMaskedChild.mask = mMask; addChild(mMaskedChild); mFriendSprites = new Array(); mSelected = new Array(); mCurrentPage = 0; setOffset(0); addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function canScroll(_arg1:int):Boolean{ if (mScrolling != 0){ return (false); }; var _local2:int = (mCurrentPage + _arg1); if ((((_local2 < 0)) || ((_local2 >= mPageCt)))){ return (false); }; return (true); } public function doScroll(_arg1:int):void{ if (!canScroll(_arg1)){ return; }; mScrollStart = getTimer(); mScrolling = _arg1; } public function getPageCt():int{ return (mPageCt); } public function setPage(_arg1:int):void{ if (_arg1 < 0){ _arg1 = 0; }; if (_arg1 >= mPageCt){ _arg1 = (mPageCt - 1); }; mScrolling = 0; setOffset((_arg1 * mPageWidth)); updatePageWithEvent(_arg1); } public function onEnterFrame(_arg1:Event):void{ var _local3:int; if (mScrolling == 0){ return; }; var _local2:Number = (getTimer() - mScrollStart); _local2 = (_local2 / SCROLL_TIME); if (_local2 > 1){ _local3 = (mCurrentPage + mScrolling); setOffset((_local3 * mPageWidth)); mScrolling = 0; updatePageWithEvent(_local3); } else { _local2 = ((Math.sin(((_local2 - 0.5) * 3.1415926)) + 1) / 2); setOffset(((mCurrentPage * mPageWidth) + ((_local2 * mPageWidth) * mScrolling))); }; } public function updatePageWithEvent(_arg1:int):void{ var _local2:int = mCurrentPage; mCurrentPage = _arg1; var _local3:FriendPagerEvent = new FriendPagerEvent(FriendPagerEvent.PAGE_CHANGE); _local3.mCurrentPage = mCurrentPage; _local3.mPrevPage = _local2; dispatchEvent(_local3); } public function freeSprite(_arg1:FriendSprite):void{ _arg1.setInfo(null, null, null); mMaskedChild.removeChild(_arg1); mFriendSprites[_arg1.mFid] = null; } public function allocSprite(_arg1:int):FriendSprite{ var _local2:FriendSprite = new FriendSprite(); var _local3:Object = mFriends[_arg1]; _local2.mFid = _arg1; mMaskedChild.addChild(_local2); mFriendSprites[_arg1] = _local2; _local2.setInfo(mFriends[_arg1].pic_square, _local3.first_name, _local3.last_name, false); _local2.addEventListener(MouseEvent.CLICK, onFriendClick); _local2.setSelected(mSelected[_local2.mFid]); return (_local2); } public function onFriendClick(_arg1:MouseEvent):void{ var _local4:int; var _local2:FriendSprite = (_arg1.currentTarget as FriendSprite); if (!mOpts["multiSelect"]){ _local4 = 0; while (_local4 < mFriends.length) { mSelected[_local4] = false; if (mFriendSprites[_local4]){ mFriendSprites[_local4].setSelected(false); }; _local4++; }; }; mSelected[_local2.mFid] = !(mSelected[_local2.mFid]); _local2.setSelected(mSelected[_local2.mFid]); var _local3:FriendPagerEvent = new FriendPagerEvent(FriendPagerEvent.FRIEND_SELECT); _local3.mSelectedFriend = _local2.mFid; dispatchEvent(_local3); Console.log(("clicked on " + _local2.mFid)); } public function processSlot(_arg1:int, _arg2:int):void{ var _local3:int = (_arg1 / mFriendsPerPage); var _local4:int = ((_arg1 % mFriendsPerPage) / mFx); var _local5:int = (_arg1 % mFx); var _local6:FriendSprite = mFriendSprites[_arg1]; var _local7:int = ((_local3 * mFx) + _local5); _local7 = (BORDER + (_local7 * (BORDER + FriendSprite.WIDTH))); _local7 = (_local7 - _arg2); if ((((_local7 < (-(mWidth) / 2))) || ((_local7 > ((mWidth * 3) / 2))))){ if (_local6 != null){ freeSprite(_local6); }; } else { if (_local6 == null){ _local6 = allocSprite(_arg1); }; _local6.x = _local7; _local6.y = (BORDER + (_local4 * (FriendSprite.HEIGHT + BORDER))); }; } public function setOffset(_arg1:int):void{ var _local2:int; _local2 = 0; while (_local2 < mFriends.length) { processSlot(_local2, _arg1); _local2++; }; mCurrentOffset = _arg1; } } }//package menucode.facebook
Section 192
//FriendPagerEvent (menucode.facebook.FriendPagerEvent) package menucode.facebook { import flash.events.*; public class FriendPagerEvent extends Event { public var mCurrentPage; public var mPrevPage; public var mSelectedFriend; public static const PAGE_CHANGE:String = "page_change"; public static const FRIEND_SELECT:String = "friend_select"; public function FriendPagerEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package menucode.facebook
Section 193
//FriendPhoto (menucode.facebook.FriendPhoto) package menucode.facebook { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.net.*; import flash.utils.*; import com.rkg.firebug.*; import com.rkg.facebook.*; public class FriendPhoto extends Sprite { protected var mLoader:Loader; protected var mBitmap:Bitmap; protected var mWidth:int; protected var mHeight:int; protected var mUrl:String; protected var mDefaultPhoto:Boolean; protected var mOnCompleteCB:Function; protected var monCompleteCBExtra:Object; public static var defaultPicSquare:String = FacebookConstants.DEFAULT_PIC_SQUARE; public static var gRequestCache:Dictionary; public static var gCache:Dictionary; public function FriendPhoto(_arg1:String, _arg2:int, _arg3:int, _arg4:Boolean=true, _arg5:Function=null, _arg6:Object=null){ mOnCompleteCB = _arg5; monCompleteCBExtra = _arg6; mDefaultPhoto = false; mWidth = _arg2; mHeight = _arg3; mUrl = _arg1; if (gCache == null){ gCache = new Dictionary(); }; if (gRequestCache == null){ gRequestCache = new Dictionary(); }; doLoad(_arg1, _arg4); } public function doLoad(_arg1:String, _arg2:Boolean=true):void{ var _local3:Dictionary = gCache; var _local4:Dictionary = gRequestCache; if (gCache[_arg1] != null){ loadFromCache(_arg1); } else { if ((((gRequestCache == null)) || ((_arg2 == false)))){ loadPhoto(_arg1); } else { if ((_arg1 in gRequestCache)){ gRequestCache[_arg1].push(this); } else { gRequestCache[_arg1] = new Array(); loadPhoto(_arg1); }; }; }; } public function loadFromCache(_arg1:String):void{ mBitmap = new Bitmap(gCache[_arg1]); mBitmap.smoothing = true; addChild(mBitmap); updateDimensions(mWidth, mHeight); if (mOnCompleteCB != null){ mOnCompleteCB(this, monCompleteCBExtra); }; } public function loadPhoto(_arg1:String):void{ Crossdomain.loadCrossdomainFromUrl(_arg1); mLoader = new Loader(); var _local2:URLRequest = new URLRequest(_arg1); var _local3:LoaderContext = new LoaderContext(); _local3.checkPolicyFile = true; mLoader.load(_local2, _local3); mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete); mLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError); mLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onLoadError); addChild(mLoader); } public function updateDimensions(_arg1, _arg2):void{ var _local3:DisplayObject; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; mWidth = _arg1; mHeight = _arg2; if (mBitmap){ _local3 = mBitmap; _local4 = mBitmap.bitmapData.width; _local5 = mBitmap.bitmapData.height; } else { if (mLoader){ if (mLoader.contentLoaderInfo){ _local3 = mLoader; _local4 = mLoader.contentLoaderInfo.width; _local5 = mLoader.contentLoaderInfo.height; } else { return; }; } else { return; }; }; var _local9:Number = 4; _local6 = (Number(_local4) / Number(_local5)); _local7 = (Number((mWidth - _local9)) / Number((mHeight - _local9))); if (_local6 > _local7){ _local8 = ((mWidth - _local9) / _local4); } else { _local8 = ((mHeight - _local9) / _local5); }; _local3.width = (_local4 * _local8); _local3.height = (_local5 * _local8); _local3.x = ((mWidth - _local3.width) / 2); _local3.y = ((mHeight - _local3.height) / 2); } public function onLoadComplete(_arg1:Event):void{ var arr:Array; var i:int; var bmp:Bitmap; var bd:BitmapData; var evt = _arg1; var obj:LoaderInfo = mLoader.contentLoaderInfo; updateDimensions(mWidth, mHeight); try { bmp = (obj.content as Bitmap); if (bmp != null){ bmp.smoothing = true; }; bd = bmp.bitmapData; gCache[mUrl] = bd; if (((!((gRequestCache == null))) && ((mUrl in gRequestCache)))){ arr = gRequestCache[mUrl]; i = 0; while (i < arr.length) { arr[i].loadFromCache(mUrl); i = (i + 1); }; delete gRequestCache[mUrl]; }; if (mOnCompleteCB != null){ mOnCompleteCB(this, monCompleteCBExtra); }; } catch(e:Error) { Console.log(("FriendPhoto.onLoadComplete error: " + e.message)); if (mDefaultPhoto == false){ mDefaultPhoto = true; doLoadOnRequestCache(); mUrl = defaultPicSquare; doLoad(mUrl, false); Console.log(("loading default " + mUrl)); }; }; } public function doLoadOnRequestCache():void{ var _local1:Array; var _local2:int; if (((!((gRequestCache == null))) && ((mUrl in gRequestCache)))){ _local1 = gRequestCache[mUrl]; _local2 = 0; while (_local2 < _local1.length) { _local1[_local2].doLoad(defaultPicSquare, false); _local2++; }; delete gRequestCache[mUrl]; }; } public function onLoadError(_arg1:Event):void{ Console.log("loader had an error!"); Console.log(("url : " + mUrl)); clear(); if (mDefaultPhoto == false){ mDefaultPhoto = true; doLoadOnRequestCache(); mUrl = defaultPicSquare; doLoad(mUrl, false); }; } public function clear():void{ if (mLoader != null){ if (mLoader.contentLoaderInfo != null){ mLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadComplete); mLoader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onLoadError); mLoader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onLoadError); }; removeChild(mLoader); mLoader = null; }; if (mBitmap != null){ removeChild(mBitmap); mBitmap = null; }; } public function getBitmapData():BitmapData{ return (gCache[mUrl]); } } }//package menucode.facebook
Section 194
//FriendPickerEvent (menucode.facebook.FriendPickerEvent) package menucode.facebook { import flash.events.*; public class FriendPickerEvent extends Event { public var mSelectedFriendIds:Array; public static const SELECTED:String = "selected"; public static const CANCELLED:String = "cancelled"; public function FriendPickerEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package menucode.facebook
Section 195
//FriendSprite (menucode.facebook.FriendSprite) package menucode.facebook { import flash.display.*; import flash.text.*; import flash.events.*; import flash.net.*; public class FriendSprite extends Sprite { public var mPhoto:FriendPhoto; public var mTextField1:TextField; public var mTextField2:TextField; public var mUrl:String; public var mFirstName:String; public var mLastName:String; public var mFid:int; public var mOverlay:Sprite; public var mSel:Boolean; public var mWidth:int; public var mHeight:int; public var mImgHeight:int; public var mFontSize:int; public static const WIDTH:int = 56; public static const HEIGHT:int = 76; public static const IMG_HEIGHT:int = 52; public static const FONT_SIZE:int = 10; public function FriendSprite(_arg1=56, _arg2=76, _arg3=52, _arg4=10):void{ mWidth = _arg1; mHeight = _arg2; mImgHeight = _arg3; mFontSize = _arg4; mSel = false; buttonMode = true; useHandCursor = true; } public function setSelected(_arg1:Boolean):void{ if (_arg1 == mSel){ return; }; if (mOverlay != null){ removeChild(mOverlay); mOverlay = null; }; if (_arg1){ mOverlay = new Sprite(); mOverlay.graphics.lineStyle(1, 0); mOverlay.graphics.beginFill(0xFFFFFF, 0.5); mOverlay.graphics.drawRect(0, 0, (mWidth - 1), (mHeight - 1)); mOverlay.graphics.endFill(); addChild(mOverlay); }; mSel = _arg1; } public function destroyPhoto():void{ if (mPhoto){ mPhoto.clear(); removeChild(mPhoto); mPhoto = null; }; } public function updateTextField(_arg1:TextField, _arg2:String):TextField{ var _local3:TextFormat; var _local4:TextLineMetrics; if (_arg1 != null){ removeChild(_arg1); _arg1 = null; }; if (_arg2 != null){ _arg1 = new TextField(); _arg1.text = _arg2; _local3 = new TextFormat(); _local3.font = "Arial"; _local3.size = mFontSize; _arg1.antiAliasType = AntiAliasType.ADVANCED; _arg1.setTextFormat(_local3); addChild(_arg1); _local4 = _arg1.getLineMetrics(0); _arg1.x = ((mWidth - _local4.width) / 2); _arg1.y = mImgHeight; _arg1.width = (_local4.width + 10); _arg1.height = (((_local4.descent + _local4.ascent) + _local4.leading) + 5); }; return (_arg1); } public function setInfo(_arg1:String, _arg2:String, _arg3:String, _arg4:Boolean=true):void{ if (mUrl != _arg1){ destroyPhoto(); mUrl = _arg1; if (mUrl != null){ mPhoto = new FriendPhoto(mUrl, mWidth, mImgHeight, _arg4); addChild(mPhoto); }; }; if (_arg2 != mFirstName){ mFirstName = _arg2; mTextField1 = updateTextField(mTextField1, mFirstName); }; if (_arg3 != mLastName){ mLastName = _arg3; mTextField2 = updateTextField(mTextField2, mLastName); if (mTextField2){ mTextField2.y = (mTextField2.y + mFontSize); }; }; } } }//package menucode.facebook
Section 196
//PageDot (menucode.facebook.PageDot) package menucode.facebook { import flash.display.*; import flash.events.*; import flash.geom.*; public class PageDot extends Friendsdiamond { public var mPageId:int; protected var mColorTransform:ColorTransform; protected var mNoColorTransform:ColorTransform; public static const DOT_SIZE:int = 8; public static const SEL_COLOR:int = 0xFFFFFF; public static const UNSEL_COLOR:int = 10104114; public function PageDot(_arg1:int):void{ mNoColorTransform = new ColorTransform(); mColorTransform = new ColorTransform(); mColorTransform.color = SEL_COLOR; mPageId = _arg1; setSel(false); } public function setSel(_arg1:Boolean):void{ var _local2:ColorTransform; if (_arg1){ _local2 = mColorTransform; } else { _local2 = mNoColorTransform; }; this.transform.colorTransform = _local2; } } }//package menucode.facebook
Section 197
//UITitleMenu (menucode.titlescreen.UITitleMenu) package menucode.titlescreen { import flash.display.*; import flash.text.*; import flash.events.*; import flash.geom.*; import gs.*; import flash.net.*; import gs.easing.*; import flash.filters.*; public class UITitleMenu extends MovieClip { public var FlashVars:Object;// = null private var easingMethod:Function; private var easingDuration:Number;// = 0.3 private var easingStagger:Number;// = 0.05 private var page01Tweens:Array; private var page0TimeLine:TimelineLite; private var page1Tweens:Array; private var page1TimeLine:TimelineLite; private var page2Tweens:Array; private var page2TimeLine:TimelineLite; private var page3Tweens:Array; private var page3TimeLine:TimelineLite; private var blackAndWhite:ColorMatrixFilter; private var proTimeattack:Boolean; private var proPuzzle:Boolean; private var proNoads:Boolean; private var tooltipTimeattack:MovieClip; private var tooltipPuzzle:MovieClip; private var tooltipNoads:MovieClip; private var monkeyPoints:int; private var costTimeattack:int; private var costPuzzle:int; private var costNoads:int; private var selectedState:String; private var selectedMode:String; private var selectedInstructions:String; private var selectedSnoods:String; private var selectedDifficulty:String; private var progressCommand:String; private var progressCommandPlus:String; private var page0:Page0; private var page1:Page1; private var page2:Page2; private var page3:Page3; private static const STATE_CLASSIC:String = "classic"; private static const STATE_TIMEATTACK:String = "timeattack"; private static const STATE_PUZZLE:String = "puzzle"; private static const STATE_CHALLENGES:String = "challenges"; private static const STATE_RANKINGS:String = "rankings"; private static const STATE_FEATURESTORE:String = "featurestore"; private static const MODE_SINGLEPLAYER:String = "singleplayer"; private static const MODE_LIVE:String = "live"; private static const MODE_CHALLENGE:String = "challenge"; private static const INSTRUCTIONS_ALL:String = "all"; private static const INSTRUCTIONS_NONE:String = "none"; private static const SNOODS_NEW:String = "new_snoods"; private static const SNOODS_CLASSIC:String = "classic_snoods"; private static const DIFFICULTY_CHILD:String = "child"; private static const DIFFICULTY_EASY:String = "easy"; private static const DIFFICULTY_MEDIUM:String = "medium"; private static const DIFFICULTY_HARD:String = "hard"; private static const DIFFICULTY_EVIL:String = "evil"; public function UITitleMenu(){ easingMethod = Back.easeOut; blackAndWhite = new ColorMatrixFilter([0.3086, 0.6094, 0.082, 0, -10, 0.3086, 0.6094, 0.082, 0, -10, 0.3086, 0.6094, 0.082, 0, -10, 0, 0, 0, 1, 0]); super(); if (stage != null){ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; }; startUp(); } private function startUp():void{ page0 = new Page0(); page1 = new Page1(); page2 = new Page2(); page3 = new Page3(); setupPage0(); setupPage1(); setupPage2(); setupPage3(); setMonkeyPoints(0); setCosts(0, 0, 0); } private function setupPage0():void{ page0.visible = false; page0.snoodlogo.cacheAsBitmap = true; page0.snoodplanet.cacheAsBitmap = true; page0TimeLine = new TimelineLite(); page0TimeLine.insertMultiple([TweenLite.from(page0.snoodlogo, easingDuration, {y:"-400", alpha:1, ease:easingMethod}), TweenLite.from(page0.jake, easingDuration, {x:"-400", alpha:1, ease:easingMethod}), TweenLite.from(page0.snoodplanet, easingDuration, {x:"300", y:"300", alpha:1, ease:easingMethod})], 0.1, TimelineLite.ALIGN_INIT, easingStagger); page0TimeLine.reverse(); page0TimeLine.stop(); } private function setupPage1():void{ } private function setupPage2():void{ } private function setupPage3():void{ page3.visible = false; page3.mj_logo.buttonMode = true; page3.mj_logo.addEventListener(MouseEvent.CLICK, onMindjolt, false, 0, true); page3.buttonclassic.addEventListener(MouseEvent.CLICK, onButtonClassic, false, 0, true); page3.grouptimeattack.buttontimeattack.addEventListener(MouseEvent.CLICK, onButtonTimeAttack, false, 0, true); page3.groupdifficulty.buttondifficulty.addEventListener(MouseEvent.CLICK, onButtonDifficulty, false, 0, true); page3.groupsnoods.buttonsnoods.addEventListener(MouseEvent.CLICK, onButtonSnoods, false, 0, true); page3.groupdifficulty.buttondifficulty.addEventListener(MouseEvent.MOUSE_OVER, onButtonRollover, false, 0, true); page3.groupsnoods.buttonsnoods.addEventListener(MouseEvent.MOUSE_OVER, onButtonRollover, false, 0, true); setSnoods(SNOODS_NEW); setDifficulty(DIFFICULTY_MEDIUM); createPage3Timeline(); } private function createPage3Timeline():void{ page3TimeLine = new TimelineLite(); page3TimeLine.insertMultiple([TweenLite.from(page3.grouptimeattack, easingDuration, {x:"200", scaleX:"1.5", alpha:0, ease:easingMethod}), TweenLite.from(page3.groupsnoods, easingDuration, {y:"100", scaleY:"1.5", alpha:0, ease:easingMethod})], 0, TimelineLite.ALIGN_INIT, easingStagger); page3TimeLine.reverse(); page3TimeLine.stop(); } private function onMindjolt(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.mindjolt.com"), "_tab"); } private function onButtonClassic(_arg1:MouseEvent):void{ trace("[UITitleMenu][onButtonClassic]"); progressCommand = "clearscreen"; selectedState = STATE_CLASSIC; doPageOut(page3, page3TimeLine); dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.CLICK, STATE_CLASSIC)); } private function onButtonTimeAttack(_arg1:MouseEvent):void{ progressCommand = "clearscreen"; selectedState = STATE_TIMEATTACK; doPageOut(page3, page3TimeLine); dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.CLICK, STATE_TIMEATTACK)); } private function onButtonPuzzle(_arg1:MouseEvent):void{ if (proPuzzle == true){ removeToolTips(); progressCommand = "clearscreen"; selectedState = STATE_PUZZLE; doPageOut(page3, page3TimeLine); dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.CLICK, STATE_PUZZLE)); } else { if (tooltipPuzzle.clicktobuyanim.visible == true){ if (tooltipPuzzle.clicktobuyanim.clicktobuy.currentLabel == "click"){ tooltipPuzzle.clicktobuyanim.clicktobuy.gotoAndPlay("confirm"); } else { dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.ADD_FEATURE, "puzzle")); removeToolTips(); }; }; }; } private function onButtonNoads(_arg1:MouseEvent):void{ if (proNoads == false){ if (tooltipNoads.clicktobuyanim.visible == true){ if (tooltipNoads.clicktobuyanim.clicktobuy.currentLabel == "click"){ tooltipNoads.clicktobuyanim.clicktobuy.gotoAndPlay("confirm"); } else { dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.ADD_FEATURE, "no_ads")); removeToolTips(); }; }; }; } private function onButtonSnoods(_arg1:MouseEvent):void{ switch (selectedSnoods){ case SNOODS_CLASSIC: setSnoods(SNOODS_NEW); break; case SNOODS_NEW: setSnoods(SNOODS_CLASSIC); break; }; dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.CLICK, selectedSnoods)); } private function onButtonDifficulty(_arg1:MouseEvent):void{ switch (selectedDifficulty){ case DIFFICULTY_CHILD: setDifficulty(DIFFICULTY_EASY); break; case DIFFICULTY_EASY: setDifficulty(DIFFICULTY_MEDIUM); break; case DIFFICULTY_MEDIUM: setDifficulty(DIFFICULTY_HARD); break; case DIFFICULTY_HARD: setDifficulty(DIFFICULTY_EVIL); break; case DIFFICULTY_EVIL: setDifficulty(DIFFICULTY_CHILD); break; }; dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.CLICK, selectedDifficulty)); } private function onButtonP3Back(_arg1:MouseEvent):void{ progressCommand = "page2in"; doPageOut(page3, page3TimeLine); dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.CLICK, "back")); } private function onButtonRollover(_arg1:MouseEvent):void{ dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.ROLLOVER)); } private function onProButtonOver(_arg1:MouseEvent):void{ switch (_arg1.currentTarget.name){ case "buttontimeattack": if (proTimeattack == false){ addChild(tooltipTimeattack); tooltipTimeattack.clicktobuyanim.clicktobuy.gotoAndStop("click"); if (monkeyPoints < costTimeattack){ tooltipTimeattack.morepoints.visible = true; tooltipTimeattack.clicktobuyanim.visible = false; } else { tooltipTimeattack.morepoints.visible = false; tooltipTimeattack.clicktobuyanim.visible = true; }; }; break; case "buttonpuzzle": if (proPuzzle == false){ addChild(tooltipPuzzle); tooltipPuzzle.clicktobuyanim.clicktobuy.gotoAndStop("click"); if (monkeyPoints < costPuzzle){ tooltipPuzzle.morepoints.visible = true; tooltipPuzzle.clicktobuyanim.visible = false; } else { tooltipPuzzle.morepoints.visible = false; tooltipPuzzle.clicktobuyanim.visible = true; }; }; break; case "buttonnoads": if (proNoads == false){ addChild(tooltipNoads); tooltipNoads.clicktobuyanim.clicktobuy.gotoAndStop("click"); if (monkeyPoints < costNoads){ tooltipNoads.morepoints.visible = true; tooltipNoads.clicktobuyanim.visible = false; } else { tooltipNoads.morepoints.visible = false; tooltipNoads.clicktobuyanim.visible = true; }; }; break; }; } private function onProButtonOut(_arg1:MouseEvent):void{ removeToolTips(); } private function removeToolTips():void{ if (this.contains(tooltipTimeattack) == true){ removeChild(tooltipTimeattack); }; if (this.contains(tooltipPuzzle) == true){ removeChild(tooltipPuzzle); }; if (this.contains(tooltipNoads) == true){ removeChild(tooltipNoads); }; } private function doPageIn(_arg1:MovieClip, _arg2:TimelineLite):void{ trace(("[UITitleMenu][doPageIn] inPage: " + _arg1)); addChild(_arg1); _arg1.visible = true; _arg1.mouseChildren = false; if (_arg2.reversed == true){ _arg2.reverse(); }; _arg2.progress = 0; _arg2.play(); _arg2.vars = {onComplete:doPageInComplete, onCompleteParams:[_arg1, _arg2]}; dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.PAGE_IN, _arg2.getChildren().length)); } private function doPageInComplete(_arg1:MovieClip, _arg2:TimelineLite):void{ trace(("[UITitleMenu][doPageInComplete] inPage: " + _arg1)); _arg2.progress = 1; _arg2.stop(); _arg1.mouseChildren = true; if (_arg1 == page0){ progressCommand = progressCommandPlus; checkProgressCommand(); }; } private function doPageOut(_arg1:MovieClip, _arg2:TimelineLite):void{ trace(("[UITitleMenu][doPageOut] inPage: " + _arg1)); _arg1.mouseChildren = false; _arg2.progress = 0; _arg2.reverse(); _arg2.vars = {onComplete:doPageOutComplete, onCompleteParams:[_arg1, _arg2]}; dispatchEvent(new UITitleMenuUIEvent(UITitleMenuUIEvent.PAGE_OUT, _arg2.getChildren().length)); } private function doPageOutComplete(_arg1:MovieClip, _arg2:TimelineLite):void{ trace(("[UITitleMenu][doPageOutComplete] inPage: " + _arg1)); _arg2.progress = 1; _arg2.stop(); _arg1.visible = false; if (_arg1.parent != null){ _arg1.parent.removeChild(_arg1); }; checkProgressCommand(); } private function checkProgressCommand():void{ switch (progressCommand){ case "page0in": doPageIn(page0, page0TimeLine); break; case "page3in": if ((((selectedMode == MODE_SINGLEPLAYER)) || ((selectedMode == null)))){ page3.challengemessage.visible = false; } else { page3.challengemessage.visible = true; }; doPageIn(page3, page3TimeLine); break; case "clearscreen": progressCommand = "dispatchevent"; doPageOut(page0, page0TimeLine); break; case "dispatchevent": dispatchEvent(new UITitleMenuEvent(UITitleMenuEvent.EVENT, selectedState, selectedMode, selectedInstructions, selectedSnoods, selectedDifficulty)); break; }; } public function setSelectedMode(_arg1:String):void{ switch (_arg1){ case MODE_SINGLEPLAYER: case MODE_LIVE: case MODE_CHALLENGE: selectedMode = _arg1; break; default: break; }; } public function setInstructions(_arg1:String):void{ if (((!((_arg1 == INSTRUCTIONS_ALL))) && (!((_arg1 == INSTRUCTIONS_NONE))))){ selectedInstructions = INSTRUCTIONS_ALL; } else { selectedInstructions = _arg1; }; } public function setSnoods(_arg1:String):void{ if (((!((_arg1 == SNOODS_CLASSIC))) && (!((_arg1 == SNOODS_NEW))))){ selectedSnoods = SNOODS_NEW; } else { selectedSnoods = _arg1; }; switch (selectedSnoods){ case SNOODS_NEW: page3.groupsnoods.snoodstoggle.gotoAndStop("new"); break; case SNOODS_CLASSIC: page3.groupsnoods.snoodstoggle.gotoAndStop("classic"); break; }; } public function setDifficulty(_arg1:String):void{ if (((((((((!((_arg1 == DIFFICULTY_CHILD))) && (!((_arg1 == DIFFICULTY_EASY))))) && (!((_arg1 == DIFFICULTY_MEDIUM))))) && (!((_arg1 == DIFFICULTY_HARD))))) && (!((_arg1 == DIFFICULTY_EVIL))))){ selectedDifficulty = DIFFICULTY_MEDIUM; } else { selectedDifficulty = _arg1; }; switch (selectedDifficulty){ case DIFFICULTY_CHILD: page3.groupdifficulty.difficultytoggle.gotoAndStop("child"); break; case DIFFICULTY_EASY: page3.groupdifficulty.difficultytoggle.gotoAndStop("easy"); break; case DIFFICULTY_MEDIUM: page3.groupdifficulty.difficultytoggle.gotoAndStop("medium"); break; case DIFFICULTY_HARD: page3.groupdifficulty.difficultytoggle.gotoAndStop("hard"); break; case DIFFICULTY_EVIL: page3.groupdifficulty.difficultytoggle.gotoAndStop("evil"); break; }; } public function setProTimeattack(_arg1:Boolean):void{ switch (_arg1){ case true: proTimeattack = true; page3.grouptimeattack.buttontimeattack.filters = []; page3.grouptimeattack.profeature.visible = false; break; case false: proTimeattack = false; page3.grouptimeattack.buttontimeattack.filters = [blackAndWhite]; page3.grouptimeattack.profeature.visible = true; break; }; } public function setProPuzzle(_arg1:Boolean):void{ switch (_arg1){ case true: proPuzzle = true; page3.grouppuzzle.buttonpuzzle.filters = []; page3.grouppuzzle.profeature.visible = false; break; case false: proPuzzle = false; page3.grouppuzzle.buttonpuzzle.filters = [blackAndWhite]; page3.grouppuzzle.profeature.visible = true; break; }; } public function setProNoads(_arg1:Boolean):void{ switch (_arg1){ case true: proNoads = true; page3.groupnoads.buttonnoads.filters = []; page3.groupnoads.visible = false; break; case false: proNoads = false; page3.groupnoads.buttonnoads.filters = [blackAndWhite]; page3.groupnoads.visible = true; page3.groupnoads.profeature.visible = true; break; }; } public function setMonkeyPoints(_arg1:int):void{ monkeyPoints = _arg1; } public function setCosts(_arg1:int, _arg2:int, _arg3:int):void{ costTimeattack = _arg1; costPuzzle = _arg2; costNoads = _arg3; if (tooltipTimeattack){ tooltipTimeattack.cost.text = costTimeattack; }; if (tooltipPuzzle){ tooltipPuzzle.cost.text = costPuzzle; }; if (tooltipNoads){ tooltipNoads.cost.text = costNoads; }; } public function setFeatures(_arg1:Array):void{ var _local3:Object; var _local2:int; while (_local2 < _arg1.length) { _local3 = _arg1[_local2]; switch (_local3["name"]){ case "no_ads": costNoads = _local3["points"]; if (tooltipNoads){ tooltipNoads.cost.text = costNoads; }; break; case "time_attack": costTimeattack = _local3["points"]; if (tooltipTimeattack){ tooltipTimeattack.cost.text = costTimeattack; }; break; case "puzzle": costPuzzle = _local3["points"]; if (tooltipPuzzle){ tooltipPuzzle.cost.text = costPuzzle; }; break; }; _local2++; }; } private function setTestListener():void{ addEventListener(UITitleMenuEvent.EVENT, onUIEvent, false, 0, true); } private function onUIEvent(_arg1:UITitleMenuEvent):void{ resetTitleMenu(); } public function resetTitleMenu():void{ if ((((((page1.visible == false)) && ((page2.visible == false)))) && ((page3.visible == false)))){ selectedState = ""; selectedMode = ""; progressCommand = "page0in"; progressCommandPlus = "page1in"; checkProgressCommand(); }; } public function enterAt(_arg1:int):void{ trace(("[UITitleMenu][enterAt] page: " + _arg1)); if (this[("page" + _arg1.toString())].visible == false){ trace((("[UITitleMenu][enterAt] page" + _arg1) + ".visible = false")); if (page0.visible == false){ progressCommand = "page0in"; progressCommandPlus = (("page" + _arg1.toString()) + "in"); doPageIn(page0, page0TimeLine); } else { progressCommand = (("page" + _arg1.toString()) + "in"); }; }; var _local2:Boolean; if (((!((page3.visible == false))) && (!((_arg1 == 3))))){ doPageOut(page3, page3TimeLine); _local2 = false; }; if ((((((((_local2 == true)) && ((page1.visible == false)))) && ((page2.visible == false)))) && ((page3.visible == false)))){ checkProgressCommand(); }; } } }//package menucode.titlescreen
Section 198
//UITitleMenuEvent (menucode.titlescreen.UITitleMenuEvent) package menucode.titlescreen { import flash.events.*; public class UITitleMenuEvent extends Event { public var state:String; public var mode:String; public var instructions:String; public var snoods:String; public var difficulty:String; public static const EVENT = "event"; public function UITitleMenuEvent(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String, _arg6:String){ super(_arg1, true); state = _arg2; mode = _arg3; instructions = _arg4; snoods = _arg5; difficulty = _arg6; } } }//package menucode.titlescreen
Section 199
//UITitleMenuJake (menucode.titlescreen.UITitleMenuJake) package menucode.titlescreen { import flash.display.*; import flash.events.*; import flash.utils.*; public class UITitleMenuJake extends MovieClip { private var angle:Number;// = 1 private var angle2:Number;// = 1 private var savedY:Number; private var currentTime:Number; private var startTime:Number; private var maxTime:Number;// = 2000 private var frameStartTime:Number; private var frameRate:int;// = 35 private var frameTime:Number; public function UITitleMenuJake(){ frameTime = (1000 / frameRate); super(); savedY = y; this.gotoAndStop(1); startTime = getTimer(); frameStartTime = getTimer(); addEventListener(Event.ENTER_FRAME, updateFrame, false, 0, true); } private function updateFrame(_arg1:Event):void{ currentTime = getTimer(); if ((currentTime - frameStartTime) > frameTime){ if ((currentTime - startTime) > maxTime){ if (this.currentFrame == 2){ this.gotoAndStop(1); maxTime = randomize(400, 8000); startTime = getTimer(); } else { this.gotoAndStop(2); maxTime = randomize(50, 200); startTime = getTimer(); }; }; y = (savedY - Math.abs((Math.sin(angle) * 10))); rotation = (0 + (Math.cos(angle2) * 10)); angle = (angle + 0.15); angle2 = (angle2 + 0.05); frameStartTime = getTimer(); }; } private function randomize(_arg1:Number, _arg2:Number):Number{ return (((Math.random() * (_arg2 - _arg1)) + _arg1)); } } }//package menucode.titlescreen
Section 200
//UITitleMenuUIEvent (menucode.titlescreen.UITitleMenuUIEvent) package menucode.titlescreen { import flash.events.*; public class UITitleMenuUIEvent extends Event { public var data:Object;// = null public static const PAGE_IN = "uitmPageIn"; public static const PAGE_OUT = "uitmPageOut"; public static const ROLLOVER = "uitmRollover"; public static const CLICK = "uitmClick"; public static const ADD_FEATURE = "uitmAddFeature"; public function UITitleMenuUIEvent(_arg1:String, _arg2:Object=null){ this.data = _arg2; super(_arg1, true); } } }//package menucode.titlescreen
Section 201
//AchievementTooltip (menucode.AchievementTooltip) package menucode { import flash.display.*; import flash.events.*; public class AchievementTooltip extends MovieClip { public var icon:IconSetup; public var tooltip:TooltipSetup; public function AchievementTooltip(){ buttonMode = true; useHandCursor = true; doHide(); addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); } private function doHide():void{ icon.visible = false; tooltip.visible = false; } private function doShow():void{ icon.visible = true; tooltip.visible = true; } private function onMouseOver(_arg1:MouseEvent):void{ doShow(); } private function onMouseOut(_arg1:MouseEvent):void{ doHide(); } } }//package menucode
Section 202
//AnimatedPager (menucode.AnimatedPager) package menucode { import flash.display.*; import flash.events.*; import flash.utils.*; public class AnimatedPager extends Sprite { public var frameBorder:int;// = 0 public var scrollTime:int;// = 500 protected var mSampleWidth:int;// = 0 protected var mSampleHeight:int;// = 0 protected var mRows:int; protected var mCols:int; protected var mPerPage:int; protected var mDataList:Array; protected var mObjectList:Array; protected var mMask:Sprite; protected var mMaskedChild:Sprite; protected var mWidth:int; protected var mHeight:int; protected var mPageWidth:int; protected var mPageHeight:int; protected var mPageOffset:int; protected var mCurrentPage:int; protected var mCurrentOffset:int;// = 0 protected var mScrolling:int;// = 0 protected var mScrollStart:int; protected var mOrientation:int;// = 0 public static const BORDER:int = 8; public static const LEFT:int = -1; public static const RIGHT:int = 1; public static const UP:int = -1; public static const DOWN:int = 1; public static const SCROLL_TIME:int = 500; public static const HORIZONTAL:int = 0; public static const VERTICAL:int = 1; public function AnimatedPager(_arg1:int, _arg2:int, _arg3:Array, _arg4:int, _arg5:int){ mSampleWidth = _arg4; mSampleHeight = _arg5; mRows = _arg1; mCols = _arg2; mPerPage = (_arg1 * _arg2); mWidth = ((mCols * (mSampleWidth + this.frameBorder)) + this.frameBorder); mHeight = ((mRows * (mSampleHeight + this.frameBorder)) + this.frameBorder); mPageWidth = (mCols * (mSampleWidth + this.frameBorder)); mPageHeight = (mRows * (mSampleHeight + this.frameBorder)); mDataList = _arg3; mObjectList = new Array(); mPageOffset = mPageWidth; mMask = new Sprite(); mMask.graphics.beginFill(0xFF0000); mMask.graphics.drawRect(0, 0, (mWidth - 1), (mHeight - 1)); mMask.graphics.endFill(); addChild(mMask); mMaskedChild = new Sprite(); mMaskedChild.mask = mMask; addChild(mMaskedChild); mCurrentPage = 0; setOffset(0); addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function getCurrentPage():int{ return (mCurrentPage); } public function getPageCount():int{ return (((mDataList.length + (mPerPage - 1)) / mPerPage)); } public function setOrientation(_arg1:int):void{ switch (_arg1){ case VERTICAL: mPageOffset = mPageHeight; mOrientation = _arg1; break; case HORIZONTAL: mPageOffset = mPageWidth; mOrientation = _arg1; break; }; } public function canScroll(_arg1:int):Boolean{ if (mScrolling != 0){ return (false); }; var _local2:int = (mCurrentPage + _arg1); var _local3:int = getPageCount(); if ((((_local2 < 0)) || ((_local2 >= _local3)))){ return (false); }; return (true); } public function doScroll(_arg1:int):void{ if (!canScroll(_arg1)){ return; }; mScrollStart = getTimer(); mScrolling = _arg1; } public function setOffset(_arg1:int):void{ var _local2:int; _local2 = 0; while (_local2 < mDataList.length) { processSlot(_local2, _arg1); _local2++; }; mCurrentOffset = _arg1; } public function freeDisplayObject(_arg1:DisplayObject):void{ if (_arg1.parent == mMaskedChild){ mMaskedChild.removeChild(_arg1); }; mObjectList[mObjectList.indexOf(_arg1)] = null; } public function allocDisplayObject(_arg1:int):DisplayObject{ var _local2:DisplayObject = (mDataList[_arg1] as DisplayObject); mObjectList[_arg1] = _local2; mMaskedChild.addChild(_local2); return (_local2); } public function processVert(_arg1:int, _arg2:int):void{ var _local3:int = (_arg1 / mPerPage); var _local4:int = ((_arg1 % mPerPage) / mRows); var _local5:int = (_arg1 % mRows); var _local6:DisplayObject = mObjectList[_arg1]; var _local7:int = ((_local3 * mRows) + _local5); _local7 = (this.frameBorder + (_local7 * (this.frameBorder + mSampleHeight))); _local7 = (_local7 - _arg2); if ((((_local7 < (-(mHeight) / 2))) || ((_local7 > ((mHeight * 3) / 2))))){ if (_local6 != null){ freeDisplayObject(_local6); }; } else { if (_local6 == null){ _local6 = allocDisplayObject(_arg1); }; _local6.x = (this.frameBorder + (_local4 * (mSampleWidth + this.frameBorder))); _local6.y = _local7; }; } public function processHorz(_arg1:int, _arg2:int):void{ var _local3:int = (_arg1 / mPerPage); var _local4:int = ((_arg1 % mPerPage) / mCols); var _local5:int = (_arg1 % mCols); var _local6:DisplayObject = mObjectList[_arg1]; var _local7:int = ((_local3 * mCols) + _local5); _local7 = (this.frameBorder + (_local7 * (this.frameBorder + mSampleWidth))); _local7 = (_local7 - _arg2); if ((((_local7 < (-(mWidth) / 2))) || ((_local7 > ((mWidth * 3) / 2))))){ if (_local6 != null){ freeDisplayObject(_local6); }; } else { if (_local6 == null){ _local6 = allocDisplayObject(_arg1); }; _local6.x = _local7; _local6.y = (this.frameBorder + (_local4 * (mSampleHeight + this.frameBorder))); }; } public function processSlot(_arg1:int, _arg2:int):void{ var _local3:Array = [processHorz, processVert]; var _local4 = _local3; _local4[mOrientation](_arg1, _arg2); } public function setPage(_arg1:int):void{ var _local2:int = getPageCount(); if (_arg1 < 0){ _arg1 = 0; }; if (_arg1 >= _local2){ _arg1 = (_local2 - 1); }; mScrolling = 0; setOffset((_arg1 * mPageOffset)); updatePageWithEvent(_arg1); } public function updatePageWithEvent(_arg1:int):void{ var _local2:int = mCurrentPage; mCurrentPage = _arg1; var _local3:AnimatedPagerEvent = new AnimatedPagerEvent(AnimatedPagerEvent.PAGE_CHANGE); _local3.mCurrentPage = mCurrentPage; _local3.mPrevPage = _local2; dispatchEvent(_local3); } public function onEnterFrame(_arg1:Event):void{ var _local3:int; if (mScrolling == 0){ return; }; var _local2:Number = (getTimer() - mScrollStart); _local2 = (_local2 / this.scrollTime); if (_local2 > 1){ _local3 = (mCurrentPage + mScrolling); setOffset((_local3 * mPageOffset)); mScrolling = 0; updatePageWithEvent(_local3); } else { _local2 = ((Math.sin(((_local2 - 0.5) * 3.1415926)) + 1) / 2); setOffset(((mCurrentPage * mPageOffset) + ((_local2 * mPageOffset) * mScrolling))); }; } public function getWidth():int{ return (mWidth); } public function getHeight():int{ return (mHeight); } public function getDataList():Array{ return (mDataList); } public function numColumns():int{ return (mCols); } public function numRows():int{ return (mRows); } public function isScrolling():Boolean{ if (mScrolling != 0){ return (true); }; return (false); } public function clearPager():void{ var _local1:DisplayObject; while (mObjectList.length > 0) { _local1 = mObjectList.pop(); if (_local1 != null){ _local1.parent.removeChild(_local1); }; }; } } }//package menucode
Section 203
//AnimatedPagerEvent (menucode.AnimatedPagerEvent) package menucode { import flash.events.*; public class AnimatedPagerEvent extends Event { public var mCurrentPage; public var mPrevPage; public static const PAGE_CHANGE:String = "page_change"; public function AnimatedPagerEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package menucode
Section 204
//BasePage (menucode.BasePage) package menucode { import flash.display.*; import menucode.*; class BasePage extends Sprite { protected var mState:int;// = -1 protected var mNextState:int;// = -1 public static const STATE_INVALID:int = -1; public function get state():int{ return (mState); } public function requestState(_arg1:int):Boolean{ mNextState = _arg1; return (true); } public function exitState(_arg1:int):void{ } public function enterState(_arg1:int):void{ } public function updateState():void{ if (mNextState != mState){ exitState(mState); enterState(mNextState); mState = mNextState; }; } public function enterFrame(_arg1:Number):void{ updateState(); } public function enterPage(_arg1:int, _arg2:Object):void{ } public function get pageDisplay():DisplayObject{ return (this); } public function clearDisplay():void{ } } }//package menucode
Section 205
//ChallengeListPage (menucode.ChallengeListPage) package menucode { import flash.display.*; import flash.text.*; import flash.events.*; import com.rkg.media.*; import com.rkg.net.*; import menucode.facebook.*; import gamecode.*; import com.rkg.facebook.*; public class ChallengeListPage extends BasePage { protected var mBusy:Boolean;// = false protected var mDict:Object;// = null protected var mCurrentTab:int;// = -1 protected var mTabs:Array;// = null protected var mTabRadio:RankingRadioGroup;// = null public static const PER_PAGE:int = 10; public static const STATE_INIT:int = 0; public static const STATE_IDLE:int = 1; public static const ENTER_INIT:int = 0; public static const EXIT_PLAY:int = 0; public static const EXIT_ERROR:int = 1; public static const TAB_ALL:int = 0; public static const TAB_OPEN:int = 1; public static const NUM_TABS:int = 2; public function ChallengeListPage(){ var _local1:MovieClip = MenuMain.Instance.ChallengesPage; _local1.UpArrow.addEventListener(MouseEvent.CLICK, onUpArrow); _local1.DownArrow.addEventListener(MouseEvent.CLICK, onDownArrow); _local1.UpArrow.visible = false; _local1.DownArrow.visible = false; _local1.nochallenge.visible = false; _local1.Header.visible = false; _local1.RefreshButton.addEventListener(MouseEvent.CLICK, onRefreshButton); _local1.BackButton.visible = false; _local1.NextButton.visible = true; _local1.ChallengesTabHeader.tablabel.text = "Challenges"; makeDictionary(); mTabs = new Array(NUM_TABS); _local1.AllTab.tablabel.text = "All"; _local1.OpenTab.tablabel.text = "Open"; _local1.AllTab.buttonMode = true; _local1.AllTab.useHandCursor = true; _local1.OpenTab.buttonMode = true; _local1.OpenTab.useHandCursor = true; mTabRadio = new RankingRadioGroup(); mTabRadio.addEventListener(RadioButtonGroup.SELECT, onTabSelect); mTabRadio.addButton(_local1.AllTab, TAB_ALL); mTabRadio.addButton(_local1.OpenTab, TAB_OPEN); } public function doTailStripAlpha(_arg1:Array):void{ var _local2:int = (_arg1.length - PER_PAGE); var _local3:int = _local2; while (_local3 < _arg1.length) { _arg1[_local3].alpha = (((_local3 & 1))==0) ? 0.8 : 1; _local3++; }; } public function recordListLength(_arg1:Array):int{ return ((_arg1.length - PER_PAGE)); } public function pushRecordList(_arg1:Array, _arg2):void{ _arg1.splice(-(PER_PAGE), 0, _arg2); } public function makeBlankRecords(_arg1:Object):void{ var _local3:ChallengeRecordStrip; var _local2:int; while (_local2 < PER_PAGE) { _local3 = new ChallengeRecordStrip(); _local3.alpha = (((_local2 & 1))==0) ? 0.8 : 1; _local3.scaleY = (Number(32) / Number(_local3.height)); _arg1.recordList.push(_local3); _local2++; }; } public function makeTabObject(_arg1:Object):Object{ var _local2:Object = new Object(); _local2.totalPages = _arg1.page_total; _local2.perPage = _arg1.per_page; _local2.recordList = new Array(); var _local3:ChallengeRecord = new ChallengeRecord(); var _local4 = 32; _local2.pager = new AnimatedPager(_local2.perPage, 1, _local2.recordList, _local3.width, _local4); _local2.pager.addEventListener(AnimatedPagerEvent.PAGE_CHANGE, onPageChange); _local2.pager.setOrientation(AnimatedPager.VERTICAL); _local2.pager.x = 15; _local2.pager.y = 130; makeBlankRecords(_local2); this.addChild(_local2.pager); return (_local2); } public function makeDictionary():void{ mDict = new Object(); mDict["win"] = "won"; mDict["lose"] = "lost"; mDict["forfeit"] = "lost"; mDict["tie"] = "tie"; mDict["open"] = "open"; mDict["ch1"] = "Classic"; mDict["ch2"] = "Puzzle"; mDict["ch3"] = "Time Attack"; mDict["mp1"] = "Classic Live"; mDict["mp2"] = "Puzzle Live"; mDict["mp3"] = "Time Attack Live"; mDict["no_score"] = "???"; mDict["forfeit_score"] = "forfeit"; mDict["na_score"] = "n/a"; mDict["no_challenges"] = "You don't have any challenges."; mDict["no_open_challenges"] = "You don't have any open challenges."; } public function showWaiting(_arg1:String):void{ mBusy = true; mTabRadio.busy = true; Waiting.show(_arg1); } public function hideWaiting():void{ mBusy = false; mTabRadio.busy = false; Waiting.hide(); } override public function exitState(_arg1:int):void{ } override public function enterState(_arg1:int):void{ switch (_arg1){ case STATE_INIT: hideWaiting(); clearTable(); mTabRadio.select(MenuMain.Instance.ChallengesPage.AllTab); break; default: break; }; } override public function enterFrame(_arg1:Number):void{ super.enterFrame(_arg1); switch (mState){ case STATE_INIT: requestState(STATE_IDLE); break; case STATE_IDLE: break; default: break; }; } override public function enterPage(_arg1:int, _arg2:Object):void{ requestState(ENTER_INIT); } public function exitTab(_arg1:int):void{ var _local2:Object = mTabs[_arg1]; if (_local2 != null){ _local2.pager.visible = false; }; } public function enterTab(_arg1:int):void{ var _local4:String; var _local2:MovieClip = MenuMain.Instance.ChallengesPage; var _local3:Object = mTabs[_arg1]; if (_local3 == null){ getChallengeList(1, onGetReply, ((_arg1)==TAB_OPEN) ? true : false); } else { if (recordListLength(_local3.recordList) == 0){ _local3.pager.visible = false; _local2.nochallenge.visible = true; _local2.Header.visible = false; _local4 = ((_arg1)==TAB_ALL) ? "no_challenges" : "no_open_challenges"; _local2.nochallenge.nochallengetext.text = mDict[_local4]; updateArrows(); } else { _local3.pager.visible = true; _local2.nochallenge.visible = false; _local2.Header.visible = true; updateArrows(); }; }; } public function onTabSelect(_arg1:Event):void{ var _local2:int = (_arg1.target.getSelectedData() as int); if (mCurrentTab != _local2){ exitTab(mCurrentTab); mCurrentTab = _local2; enterTab(mCurrentTab); }; SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function onRefreshButton(_arg1:MouseEvent):void{ clearTable(); mTabRadio.select(mTabRadio.getSelectedObject()); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function showPage():void{ MenuMain.Instance.hideTitleMenu(); MenuMain.Instance.showChallengeListDisplay(); } public function updateArrows():void{ MenuMain.Instance.ChallengesPage.UpArrow.visible = false; MenuMain.Instance.ChallengesPage.DownArrow.visible = false; var _local1:int = (mTabRadio.getSelectedData() as int); var _local2:Object = mTabs[_local1]; if (_local2 == null){ return; }; var _local3:int = _local2.pager.getCurrentPage(); if (_local3 > 0){ MenuMain.Instance.ChallengesPage.UpArrow.visible = true; }; if ((((_local3 >= 0)) && (((_local3 + 1) < _local2.totalPages)))){ MenuMain.Instance.ChallengesPage.DownArrow.visible = true; }; } public function clearTable():void{ mCurrentTab = -1; while (this.numChildren) { this.removeChildAt(0); }; var _local1:int; while (_local1 < mTabs.length) { mTabs[_local1] = null; _local1++; }; } public function getChallengeList(_arg1:int, _arg2:Function, _arg3:Boolean=false):void{ var _local4:ServerCom; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ showWaiting(Constants.RETRIEVING_DATA); _local4 = new ServerCom(FlashVars.service, FlashVars.player_id); _local4.addEventListener(ServerEvent.SERVER_REPLY, _arg2); _local4.addEventListener(ServerEvent.SERVER_ERROR, onGetReplyError); _local4.addEventListener(ServerEvent.SERVER_IOERROR, onGetIOError); _local4.challengeUser(_arg1, PER_PAGE, _arg3); } else { MenuMain.Instance.ChallengesPage.UpArrow.visible = false; MenuMain.Instance.ChallengesPage.DownArrow.visible = false; }; } public function onGetReply(_arg1:ServerEvent):void{ var _local6:String; var _local2:Object = _arg1.replyObject; var _local3:int = (mTabRadio.getSelectedData() as int); if (mTabs[_local3] == null){ mTabs[_local3] = makeTabObject(_local2); }; var _local4:Object = mTabs[_local3]; var _local5:MovieClip = MenuMain.Instance.ChallengesPage; if (_local2.challenges.length == 0){ _local4.pager.visible = false; _local5.nochallenge.visible = true; _local5.Header.visible = false; _local6 = ((_local3)==TAB_ALL) ? "no_challenges" : "no_open_challenges"; _local5.nochallenge.nochallengetext.text = mDict[_local6]; hideWaiting(); updateArrows(); showPage(); } else { _local4.pager.visible = true; _local5.nochallenge.visible = false; _local5.Header.visible = true; doPage(_local4, _local2.challenges); _local4.pager.setPage(0); hideWaiting(); updateArrows(); showPage(); }; } public function onScrollReply(_arg1:ServerEvent):void{ var _local2:Object = _arg1.replyObject; var _local3:int = (mTabRadio.getSelectedData() as int); var _local4:Object = mTabs[_local3]; _local4.totalPages = _local2.page_total; _local4.perPage = _local2.per_page; doPage(_local4, _local2.challenges); _local4.pager.clearPager(); _local4.pager.setPage(_local4.pager.getCurrentPage()); _local4.pager.doScroll(1); hideWaiting(); } public function onGetReplyError(_arg1:ServerEvent):void{ hideWaiting(); var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onErrorOK); trace("GetReplyError"); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=get_challenge")); } public function onIOError(_arg1:ServerEvent):void{ hideWaiting(); var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onErrorOK); trace("IOError"); } public function onGetIOError(_arg1:ServerEvent):void{ onIOError(_arg1); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=get_challenge")); } public function onRemindIOError(_arg1:ServerEvent):void{ onIOError(_arg1); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=remind_challenge")); } public function onRemoveIOError(_arg1:ServerEvent):void{ onIOError(_arg1); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=remove_challenge")); } public function onErrorOK(_arg1:MouseEvent):void{ _arg1.target.removeEventListener(MouseEvent.CLICK, onErrorOK); exitError(); } public function exitError():void{ var _local1:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local1.exitCode = EXIT_ERROR; _local1.pageObject = this; MenuMain.Instance.dispatchEvent(_local1); } public function doPage(_arg1:Object, _arg2:Array):void{ var _local5:Object; var _local6:ChallengeRecord; var _local3:int = recordListLength(_arg1.recordList); var _local4:int; while (_local4 < _arg2.length) { _local5 = _arg2[_local4]; _local6 = new ChallengeRecord(); doStripAlpha(_local6, (_local3 + _local4)); doStatus(_local6, _local5.status); _local6.Mode.text = (mDict[_local5.mode] + ((_local5.games_total)>1) ? (("\n" + _local5.games_total.toString()) + " Rounds") : ""); doFacebookInfo(_local6, _local5.player_index, _local5.challenger_id); doDateInfo(_local6, _local5.created_at); doScores(_local6, _local5); doActionInfo(_local6, _local5); pushRecordList(_arg1.recordList, _local6); _local4++; }; doTailStripAlpha(_arg1.recordList); } public function doScores(_arg1:ChallengeRecord, _arg2:Object):void{ var _local3:int = GameReport.getGameType(_arg2["mode"]); if (_local3 == GameTypeEnum.GAME_TYPE_MULTIPLAYER){ _arg1.LiveNoScore.visible = true; _arg1.YourScore.visible = false; _arg1.OpponentScore.visible = false; } else { _arg1.LiveNoScore.visible = false; _arg1.YourScore.visible = true; _arg1.OpponentScore.visible = true; if (_arg2["status"] == "forfeit"){ _arg1.YourScore.text = mDict["forfeit_score"]; _arg1.OpponentScore.text = mDict["na_score"]; } else { if (_arg2["challenger_status"] == "forfeit"){ _arg1.YourScore.text = mDict["na_score"]; _arg1.OpponentScore.text = mDict["forfeit_score"]; } else { if (_arg2["game_status"] == "played"){ _arg1.YourScore.text = _arg2.score_total; _arg1.OpponentScore.text = ((_arg2["challenger_game_status"])=="played") ? _arg2.challenger_score : mDict["no_score"]; } else { _arg1.YourScore.text = mDict["no_score"]; _arg1.OpponentScore.text = mDict["no_score"]; }; }; }; }; } public function doStripAlpha(_arg1:ChallengeRecord, _arg2:int):void{ _arg1.strip.alpha = (((_arg2 & 1))==0) ? 0.8 : 1; } public function doStatus(_arg1:ChallengeRecord, _arg2:String):void{ _arg1.statusicon.gotoAndStop(mDict[_arg2]); } public function doActionInfo(_arg1:ChallengeRecord, _arg2:Object):void{ var rec = _arg1; var challenge = _arg2; if (challenge["game_status"] == false){ rec.actionbutton.gotoAndStop("play"); rec.actionbutton.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){ playChallenge(challenge); }); } else { if ((((challenge.player_index == 0)) && ((challenge["challenger_game_status"] == false)))){ rec.actionbutton.gotoAndStop("remind"); rec.actionbutton.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){ remindChallenge(challenge); }); } else { rec.actionbutton.gotoAndStop("remove"); rec.actionbutton.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){ removeChallenge(challenge, rec); }); }; }; } public function doDateInfo(_arg1:ChallengeRecord, _arg2:String):void{ var _local3:Date = Utils.stringToDateTime(_arg2); var _local4:Date = new Date(); if ((((((_local4.fullYearUTC == _local3.fullYearUTC)) && ((_local4.monthUTC == _local3.monthUTC)))) && ((_local4.dateUTC == _local3.dateUTC)))){ _arg1.Date.text = Utils.dateTohhmm(_local3); } else { _arg1.Date.text = Utils.dateToMMDDYY(_local3); }; } public function doFacebookInfo(_arg1:ChallengeRecord, _arg2:int, _arg3:String):void{ var facebook_id:String; var fbParams:Object; var extra:Object; var rec = _arg1; var player_index = _arg2; var challenger_id = _arg3; try { rec.OpponentPortrait.buttonMode = true; rec.OpponentPortrait.useHandCursor = true; rec.OpponentPortrait.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){ Utils.doFacebookPage(challenger_id); }); rec.VsOpponent.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){ Utils.doFacebookPage(challenger_id); }); rec.VsOpponent.text = "waiting..."; facebook_id = challenger_id.substring(Constants.FACEBOOK_PREFIX.length); fbParams = new Object(); extra = new Object(); extra.picContainer = rec.OpponentPortrait; extra.nameField = rec.VsOpponent; extra.player_index = player_index; fbParams.uid = facebook_id; if (extra.picContainer.hasOwnProperty("loadinganimation")){ extra.picContainer.loadinganimation.play(); extra.picContainer.loadinganimation.visible = true; }; new UserImageRequest(fbParams, onDoFacebookInfo, null, extra); } catch(error:Error) { trace(error.message); }; } public function onDoFacebookInfo(_arg1:Array, _arg2:Object):void{ var _local3:FriendPhoto; var _local4:String; var _local5:String; if (_arg1.length > 0){ _local3 = new FriendPhoto(_arg1[0].pic_square, 70, 70); if (_arg2.picContainer != null){ _arg2.picContainer.addChild(_local3); if (_arg2.picContainer.hasOwnProperty("loadinganimation")){ _arg2.picContainer.loadinganimation.stop(); _arg2.picContainer.loadinganimation.visible = false; }; if (_arg2.picContainer.parent.hasOwnProperty("nophoto")){ _arg2.picContainer.parent.nophoto.visible = false; }; }; if (_arg2.nameField != null){ _local4 = _arg1[0].name; _local5 = null; if (_arg2.player_index == 0){ _local5 = ("You vs " + _local4); } else { _local5 = (_local4 + " vs You"); }; _arg2.nameField.text = _local5; }; }; } public function onUpArrow(_arg1:MouseEvent):void{ if (mBusy == true){ return; }; var _local2:int = (mTabRadio.getSelectedData() as int); var _local3:Object = mTabs[_local2]; _local3.pager.doScroll(-1); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function onDownArrow(_arg1:MouseEvent):void{ if (mBusy == true){ return; }; var _local2:int = (mTabRadio.getSelectedData() as int); var _local3:Object = mTabs[_local2]; var _local4:int = (_local3.pager.getPageCount() - 1); var _local5:int = _local3.pager.getCurrentPage(); var _local6:* = (_local5 + 1); if (_local6 < _local4){ _local3.pager.doScroll(1); } else { if (_local4 < _local3.totalPages){ getChallengeList((_local4 + 1), onScrollReply, ((_local2)==TAB_OPEN) ? true : false); }; }; SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function remindChallenge(_arg1:Object):void{ var _local2:ServerCom; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ showWaiting(Constants.SENDING_NOTIFICATION); _local2 = new ServerCom(FlashVars.service, FlashVars.player_id); _local2.addEventListener(ServerEvent.SERVER_REPLY, onRemindReply); _local2.addEventListener(ServerEvent.SERVER_ERROR, onRemindReplyError); _local2.addEventListener(ServerEvent.SERVER_IOERROR, onRemindIOError); _local2.challengeNotifyReminder(_arg1.challenger_id, _arg1.id, _arg1.mode); }; SoundManager.Instance.play(Constants.SOUND_REMIND_CHALLENGE); } public function onRemindReply(_arg1:ServerEvent):void{ hideWaiting(); new OkPopup("Your opponent has been notified."); } public function onRemindReplyError(_arg1:ServerEvent):void{ hideWaiting(); new OkErrorPopup(); } public function removeChallenge(_arg1:Object, _arg2:ChallengeRecord):void{ var _local3:ServerCom; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ showWaiting(Constants.REMOVING_ENTRY); _local3 = new ServerCom(FlashVars.service, FlashVars.player_id); _local3.addEventListener(ServerEvent.SERVER_REPLY, onRemoveReply); _local3.addEventListener(ServerEvent.SERVER_ERROR, onRemoveReplyError); _local3.addEventListener(ServerEvent.SERVER_IOERROR, onRemoveIOError); _local3.extras = _arg2; _local3.challengeHide(_arg1.id); }; SoundManager.Instance.play(Constants.SOUND_REMOVE_CHALLENGE); } public function onRemoveReply(_arg1:ServerEvent):void{ var _local5:MovieClip; var _local6:String; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:ChallengeRecord; var _local2:int = (mTabRadio.getSelectedData() as int); var _local3:Object = mTabs[_local2]; hideWaiting(); var _local4:int = _local3.recordList.indexOf(_arg1.extras); _local3.recordList.splice(_local4, 1); if (recordListLength(_local3.recordList) == 0){ _local5 = MenuMain.Instance.ChallengesPage; _local5.nochallenge.visible = true; _local5.Header.visible = false; _local6 = ((_local2)==TAB_ALL) ? "no_challenges" : "no_open_challenges"; _local5.nochallenge.nochallengetext.text = mDict[_local6]; _local3.pager.visible = false; } else { _local7 = recordListLength(_local3.recordList); _local8 = _local4; while (_local8 < _local7) { _local11 = _local3.recordList[_local8]; doStripAlpha(_local11, _local8); _local8++; }; _local9 = _local3.pager.getCurrentPage(); _local10 = (_local7 / PER_PAGE); if ((((_local10 == _local9)) && (((_local10 + 1) < _local3.totalPages)))){ getChallengeList(((_local10 + 1) + 1), onRemoveGetReply, ((_local2)==TAB_OPEN) ? true : false); } else { _local3.pager.clearPager(); _local3.pager.setPage(_local3.pager.getCurrentPage()); }; }; doTailStripAlpha(_local3.recordList); } public function onRemoveReplyError(_arg1:ServerEvent):void{ hideWaiting(); new OkErrorPopup(); } public function onRemoveGetReply(_arg1:ServerEvent):void{ var _local2:Object = _arg1.replyObject; var _local3:int = (mTabRadio.getSelectedData() as int); var _local4:Object = mTabs[_local3]; _local4.totalPages = _local2.page_total; _local4.perPage = _local2.per_page; doPage(_local4, _local2.challenges); _local4.pager.clearPager(); _local4.pager.setPage(_local4.pager.getCurrentPage()); hideWaiting(); } public function delistDisplay():void{ var _local1:MovieClip = MenuMain.Instance.ChallengesPage; MenuMain.Instance.delist(_local1); MenuMain.Instance.delist(this.pageDisplay); } public function playChallenge(_arg1:Object):void{ var _local2:Object = GameSetup; GameSetup.gameType = GameTypeEnum.GAME_TYPE_CHALLENGE; GameSetup.challengeId = _arg1.id; GameSetup.seed = _arg1.seed; GameSetup.opponentId = _arg1.challenger_id; GameSetup.gameMode = GameReport.getGameMode(_arg1.mode); GameSetup.rounds = _arg1.games_total; GameSetup.difficulty = _arg1.difficulty; GameSetup.isNetwork = false; GameSetup.playerIds = null; GameSetup.localPlayerId = 0; GameSetup.masterPlayerId = -1; delistDisplay(); var _local3:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local3.exitCode = EXIT_PLAY; _local3.pageObject = this; _local3.pageParams = new Object(); _local3.pageParams.challenge = _arg1; MenuMain.Instance.dispatchEvent(_local3); SoundManager.Instance.play(Constants.SOUND_PLAY_CHALLENGE); } public function onPageChange(_arg1:AnimatedPagerEvent):void{ updateArrows(); } public function unitTest():void{ var _local1:Array = [{score2_total:0, status:"win", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}]; var _local2:Object = {pages_total:10, per_page:10}; mTabs[0] = makeTabObject(_local2); mTabs[0].totalPages = 10; mTabs[0].perPage = 10; doPage(mTabs[0], _local1); updateArrows(); showPage(); } function unitTest_addPage():void{ var _local1:Array = [{score2_total:0, status:"2nd", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}, {score2_total:0, status:"open", challenger_id:"facebook:1494405962", player_index:1, played_at:null, created_at:"2009-03-24T23:36:07-07:00", seed:1011913361, challenger_score:430, challenger_score2:56, games_played:0, games_total:1, user_id:"facebook:571323477", games_played?:false, challenger_played?:true, challenger_status:"open", score_total:0, mode:"ch1", id:"ch:fb:1494405962:0"}]; doPage(mTabs[0], _local1); } } }//package menucode
Section 206
//ChallengePage (menucode.ChallengePage) package menucode { import flash.display.*; import flash.text.*; import flash.events.*; import com.rkg.net.*; import menucode.facebook.*; import flash.utils.*; import gamecode.*; import com.rkg.facebook.*; public class ChallengePage extends BasePage { protected var mVSScreenChallengeFlags:uint;// = 0 protected var mVSScreenChallenge:VSScreenChallenge;// = null protected var mChallengeObject:Object;// = null protected var mChallengers:Array; protected var mTimer:Timer; protected var mPageParams:Object;// = null protected var mNewChallenge:Boolean;// = false protected var mExitCode:int;// = 0 public static const FACEBOOK:String = "facebook:"; public static const STATE_INIT:int = 0; public static const STATE_VERIFY_CHALLENGE:int = 2; public static const STATE_SEND_CHALLENGE:int = 3; public static const STATE_EXIT:int = 4; public static const STATE_DISPLAY_CHALLENGE:int = 5; public static const ENTER_INIT:int = 0; public static const ENTER_CHALLENGE:int = 1; public static const ENTER_ANNOUNCE:int = 2; public static const EXIT_PLAY:int = 0; public static const EXIT_FAIL:int = 1; public static const VS_PLAYER_FBINFO:uint = (1 << 0); public static const VS_OPPONENT_FBINFO:uint = (1 << 1); public function ChallengePage(){ mChallengers = new Array(); requestState(STATE_INIT); } override public function enterPage(_arg1:int, _arg2:Object):void{ var _local3:Date; mNewChallenge = false; mPageParams = _arg2; switch (_arg1){ case ENTER_INIT: _local3 = new Date(); GameSetup.seed = _local3.time; requestState(STATE_SEND_CHALLENGE); break; case ENTER_CHALLENGE: requestState(STATE_VERIFY_CHALLENGE); break; case ENTER_ANNOUNCE: requestState(STATE_DISPLAY_CHALLENGE); break; default: break; }; } override public function clearDisplay():void{ while (mChallengers.length > 0) { this.removeChild(mChallengers.pop()); }; } override public function enterState(_arg1:int):void{ switch (_arg1){ case STATE_INIT: break; case STATE_SEND_CHALLENGE: sendChallenge(); break; case STATE_VERIFY_CHALLENGE: verifyChallenge(GameSetup.challengeId); break; case STATE_EXIT: switch (mExitCode){ case EXIT_PLAY: exitPlay(mChallengeObject, mNewChallenge); break; case EXIT_FAIL: exitFail(mChallengeObject); break; }; break; case STATE_DISPLAY_CHALLENGE: showVSScreenChallenge(); break; default: break; }; } override public function enterFrame(_arg1:Number):void{ super.enterFrame(_arg1); switch (mState){ case STATE_INIT: break; case STATE_VERIFY_CHALLENGE: break; case STATE_SEND_CHALLENGE: break; case STATE_EXIT: break; case STATE_DISPLAY_CHALLENGE: updateVSScreenChallenge(); break; default: break; }; } public function showVSScreenChallenge():void{ var gameText:String; var facebook_id:String; var opponent_id:String; if (mVSScreenChallenge == null){ mVSScreenChallenge = new VSScreenChallenge(); }; mVSScreenChallenge.stop(); switch (GameSetup.gameMode){ case GameModeEnum.GAME_MODE_CLASSIC: gameText = "Classic"; break; case GameModeEnum.GAME_MODE_TIME_ATTACK: gameText = "Time Attack"; break; case GameModeEnum.GAME_MODE_PUZZLE: gameText = "Puzzle"; break; case GameModeEnum.GAME_MODE_STORY: gameText = "Story"; break; default: throw (new Error(("ChallengePage.showVSScreenChallenge() GameSetup.gameMode not supported " + GameSetup.gameMode))); }; mVSScreenChallenge.gametype.gametypetext.text = gameText; mVSScreenChallengeFlags = (mVSScreenChallengeFlags & ~(VS_PLAYER_FBINFO)); mVSScreenChallengeFlags = (mVSScreenChallengeFlags & ~(VS_OPPONENT_FBINFO)); if (FlashVars.player_id != null){ facebook_id = FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length); try { new FbInfo(facebook_id, mVSScreenChallenge.playerportrait.portraitholder, mVSScreenChallenge.playername.nametext, onPlayerFbInfoDone, onPlayerFbInfoDone); } catch(error:Error) { trace(error.message); }; }; try { opponent_id = GameSetup.opponentId.substring(Constants.FACEBOOK_PREFIX.length); new FbInfo(opponent_id, mVSScreenChallenge.opponentportrait.portraitholder, mVSScreenChallenge.opponentname.nametext, onOpponentFbInfoDone, onOpponentFbInfoDone); } catch(error:Error) { trace(error.message); }; } public function onPlayerFbInfoDone():void{ mVSScreenChallengeFlags = (mVSScreenChallengeFlags | VS_PLAYER_FBINFO); updateStartVSScreenChallenge(); } public function onOpponentFbInfoDone():void{ mVSScreenChallengeFlags = (mVSScreenChallengeFlags | VS_OPPONENT_FBINFO); updateStartVSScreenChallenge(); } public function updateStartVSScreenChallenge():void{ var _local1:uint = (VS_PLAYER_FBINFO | VS_OPPONENT_FBINFO); if ((mVSScreenChallengeFlags & _local1) == _local1){ this.addChild(mVSScreenChallenge); mVSScreenChallenge.gotoAndPlay(1); }; } public function updateVSScreenChallenge():void{ if (mVSScreenChallenge == null){ return; }; if (mVSScreenChallenge.currentFrame == mVSScreenChallenge.totalFrames){ mVSScreenChallenge.stop(); mTimer = new Timer(3000); mTimer.addEventListener(TimerEvent.TIMER, onVSScreenChallengeTimer); mTimer.start(); }; } public function onVSScreenChallengeTimer(_arg1:TimerEvent):void{ if (mTimer == null){ return; }; if (mState == STATE_EXIT){ return; }; mTimer.removeEventListener(TimerEvent.TIMER, onVSScreenChallengeTimer); mTimer.stop(); mTimer = null; if (((!((mVSScreenChallenge == null))) && (!((mVSScreenChallenge.parent == null))))){ mVSScreenChallenge.parent.removeChild(mVSScreenChallenge); mVSScreenChallenge = null; }; mExitCode = EXIT_PLAY; requestState(STATE_EXIT); } public function exitPlay(_arg1:Object, _arg2:Boolean=false):void{ var _local3:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local3.exitCode = EXIT_PLAY; _local3.pageObject = this; _local3.pageParams = new Object(); _local3.pageParams.challenge = _arg1; if (_arg2 == true){ _local3.pageParams.challenge_started = _arg2; }; MenuMain.Instance.dispatchEvent(_local3); } public function exitFail(_arg1:Object=null):void{ var _local2:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local2.exitCode = EXIT_FAIL; _local2.pageObject = this; _local2.pageParams = _arg1; MenuMain.Instance.dispatchEvent(_local2); } public function sendChallenge():void{ var _local1:ServerCom; var _local2:String; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ _local1 = new ServerCom(FlashVars.service, FlashVars.player_id); _local1.addEventListener(ServerEvent.SERVER_REPLY, onSendChallengeReply); _local1.addEventListener(ServerEvent.SERVER_ERROR, onSendChallengeReplyError); _local1.addEventListener(ServerEvent.SERVER_IOERROR, onSendChallengeIOError); _local2 = GameReport.makeGameMode(GameSetup.gameType, GameSetup.gameMode); _local1.challengeNew(GameSetup.opponentId, _local2, GameSetup.seed, GameSetup.rounds, true, GameSetup.difficulty); } else { mExitCode = EXIT_FAIL; mChallengeObject = null; requestState(STATE_EXIT); }; } public function onSendChallengeReply(_arg1:ServerEvent):void{ trace(Utils.objectToString(_arg1.replyObject, 3)); trace(("id:" + _arg1.replyObject.id)); GameSetup.challengeId = _arg1.replyObject.id; mChallengeObject = _arg1.replyObject; mNewChallenge = true; if (((((!((mPageParams == null))) && (mPageParams.hasOwnProperty("showVS")))) && ((mPageParams["showVS"] == true)))){ requestState(STATE_DISPLAY_CHALLENGE); } else { mExitCode = EXIT_PLAY; requestState(STATE_EXIT); }; } public function onSendChallengeReplyError(_arg1:ServerEvent):void{ var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, directToMainMenu); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=send_challenge")); } public function onSendChallengeIOError(_arg1:ServerEvent):void{ var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, directToMainMenu); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=send_challenge")); } public function verifyChallenge(_arg1:String):void{ var _local2:ServerCom; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ _local2 = new ServerCom(FlashVars.service, FlashVars.player_id); _local2.addEventListener(ServerEvent.SERVER_REPLY, onGetChallengeReply); _local2.addEventListener(ServerEvent.SERVER_ERROR, onGetChallengeError); _local2.addEventListener(ServerEvent.SERVER_IOERROR, onGetChallengeIOError); _local2.challengeGet(_arg1); } else { mExitCode = EXIT_FAIL; mChallengeObject = null; requestState(STATE_EXIT); }; } public function onGetChallengeReply(_arg1:ServerEvent):void{ var _local2:OkPopup; var _local3:Object; var _local4:Array; var _local5:String; var _local6:String; var _local7:Object; var _local8:String; var _local9:String; var _local10:OkErrorPopup; if (_arg1.replyObject != null){ _local3 = _arg1.replyObject; GameSetup.challengeId = _local3.id; GameSetup.seed = _local3.seed; GameSetup.opponentId = _local3.challenger_id; GameSetup.gameMode = GameReport.getGameMode(_local3.mode); GameSetup.rounds = _local3.games_total; GameSetup.startDifficulty = _local3.difficulty; GameSetup.difficulty = _local3.difficulty; if (_local3.status === "forfeit"){ _local2 = new OkPopup("You forfeited this game."); _local2.data = _local3; _local2.addEventListener(MouseEvent.CLICK, directToMainMenu); } else { if (_local3.challenger_status === "forfeit"){ _local2 = new OkPopup("Your challenger forfeited this game."); _local2.data = _local3; _local2.addEventListener(MouseEvent.CLICK, directToMainMenu); } else { if (_local3.status === "open"){ _local4 = _local3.id.split(":"); _local5 = FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length); if (_local4[2] === _local5){ _local2 = new OkPopup("This is a challenge you issued."); _local2.data = _local3; _local2.addEventListener(MouseEvent.CLICK, directToMainMenu); } else { mChallengeObject = _local3; requestState(STATE_DISPLAY_CHALLENGE); }; } else { _local6 = null; _local7 = {win:"won", lose:"lost", tie:"tied"}; for (_local8 in _local7) { if (_local3.status === _local8){ _local6 = _local7[_local8]; break; }; }; if (_local6 == null){ throw (new Error(("ChallengePage Error: Challenge status not supported: " + _local3.status))); }; _local9 = ((((("You " + _local6) + " this challenge ") + _local3.score_total) + " to ") + _local3.challenger_score); _local2 = new OkPopup(_local9); _local2.data = _local3; _local2.addEventListener(MouseEvent.CLICK, directToMainMenu); }; }; }; } else { _local10 = new OkErrorPopup(); _local10.addEventListener(MouseEvent.CLICK, directToMainMenu); }; } public function onGetChallengeError(_arg1:ServerEvent):void{ var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, directToMainMenu); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=get_challenge")); } public function onGetChallengeIOError(_arg1:ServerEvent):void{ var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, directToMainMenu); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=get_challenge")); } protected function directToMainMenu(_arg1:Event):void{ mExitCode = EXIT_FAIL; mChallengeObject = null; requestState(STATE_EXIT); } protected function rematch(_arg1:Event):void{ var _local2:Date = new Date(); GameSetup.seed = _local2.time; requestState(STATE_SEND_CHALLENGE); } } }//package menucode
Section 207
//ChallengeStart (menucode.ChallengeStart) package menucode { import flash.events.*; import com.rkg.net.*; import com.rkg.display.*; public class ChallengeStart { protected var mGamePage:GamePage;// = null protected var mChallengeId:String;// = null public function ChallengeStart(_arg1:GamePage){ mGamePage = _arg1; mChallengeId = GameSetup.challengeId; go(); } protected function go():void{ var _local1:ServerCom = new ServerCom(FlashVars.service, FlashVars.player_id); _local1.addEventListener(ServerEvent.SERVER_REPLY, onChallengeStartServerReply); _local1.addEventListener(ServerEvent.SERVER_ERROR, onChallengeStartError); _local1.addEventListener(ServerEvent.SERVER_IOERROR, onChallengeStartIOError); _local1.challengeStart(mChallengeId, 0); } protected function onChallengeStartServerReply(_arg1:ServerEvent):void{ var _local2:Object = _arg1.replyObject; if (_local2.status === "forfeit"){ exitChallengeError(_local2); mGamePage.requestState(GamePage.STATE_WAITING); } else { if (_local2.challenger_status === "forfeit"){ exitChallengeError(_local2); mGamePage.requestState(GamePage.STATE_WAITING); } else { if (_local2.status === "open"){ mGamePage.requestState(GamePage.STATE_GET_READY); } else { throw (new Error("Unhandled case for ChallengeStart callback")); }; }; }; } protected function exitChallengeError(_arg1:Object):void{ var _local2:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local2.exitCode = GamePage.EXIT_CHALLENGE_ERROR; _local2.pageObject = mGamePage; _local2.pageParams = _arg1; MenuMain.Instance.dispatchEvent(_local2); } protected function onChallengeStartError(_arg1:ServerEvent):void{ var _local2:ServerCom = new ServerCom(FlashVars.service, FlashVars.player_id); _local2.addEventListener(ServerEvent.SERVER_REPLY, onChallengeStartServerReply); _local2.addEventListener(ServerEvent.SERVER_ERROR, onChallengeGetError); _local2.addEventListener(ServerEvent.SERVER_IOERROR, onChallengeGetIOError); _local2.challengeGet(mChallengeId); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=start_challenge")); } protected function onChallengeGetError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = ("There was an error reported from our servers: " + _arg1.replyObject); var _local2:* = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onOKChallengeGetError); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=get_challenge")); } protected function onChallengeGetIOError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = ("There was an IOError communicating with our servers: " + _arg1.replyObject); var _local2:* = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onOKChallengeGetError); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=get_challenge")); } protected function onOKChallengeGetError(_arg1:MouseEvent):void{ exitChallengeError(null); } protected function onChallengeStartIOError(_arg1:ServerEvent):void{ exitChallengeError(null); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=start_challenge")); } } }//package menucode
Section 208
//Constants (menucode.Constants) package menucode { import menucode.*; class Constants { public static const CLEAR_COLOR:uint = 8821927; public static const BLACK:uint = 0; public static const WHITE:uint = 0xFFFFFF; public static const GREY:uint = 0x888888; public static const RED:uint = 16746632; public static const BLUE:int = 8947967; public static const GREEN:int = 8978312; public static const GOLD:int = 16768290; public static const FONT:String = "VinqueFont"; public static const MAX_DISPLAYABLE_SUBWORDS = 25; public static const FACEBOOK_PREFIX:String = "facebook:"; public static const RESOURCE_VERSION_CONSTANT:String = "?version=6"; public static const CHECKING_FOR_NEWS:String = "checking for news"; public static const REMOVING_ENTRY:String = "removing entry"; public static const REPORTING_SCORE:String = "reporting score"; public static const RETRIEVING_DATA:String = "retrieving data"; public static const SENDING_NOTIFICATION:String = "sending notification"; public static const WAITING_FOR_OPPONENT:String = "waiting for opponent"; public static const WAITING_FOR_RESPONSE:String = "waiting for response"; public static const UPDATING:String = "updating"; public static const SOUND_BUTTONCLICK:String = "buttonclick.aif"; public static const SOUND_REMIND_CHALLENGE:String = "buttonclick.aif"; public static const SOUND_REMOVE_CHALLENGE:String = "challengeremove.aif"; public static const SOUND_PLAY_CHALLENGE:String = "fanfare_02.aif"; public static const SOUND_COIN:String = "monkeycoin.aif"; public static const SOUND_CONFIRM_CHALLENGE:String = "fanfare_bonus.aif"; public static const SOUND_SELECT_FRIEND_LIST:Array = ["snood_laugh_01.aif", "snood_laugh_04.aif", "snood_laugh_05.aif"]; public static const SOUND_SCRATCH:String = "scratch.aif"; public static const SOUND_WAITINGICON_PAGETURN:String = "teleout_02.aif"; public static const SOUND_TRIUMPH:String = "round_complete_03.aif"; public static const SOUND_SWISH01:String = "swish01.aif"; public static const SOUND_SWISH02:String = "swish02.aif"; public static const SOUND_SWISH03:String = "swish03.aif"; public static const SOUND_SWISH04:String = "swish04.aif"; public static const SOUND_OUT01:String = "out01.aif"; public static const SOUND_OUT02:String = "out02.aif"; public static function get RESOURCE_VERSION():String{ if (FlashVars.canvas_base_url != null){ return (RESOURCE_VERSION_CONSTANT); }; return (""); } } }//package menucode
Section 209
//ControlPanel (menucode.ControlPanel) package menucode { import flash.display.*; import flash.events.*; import flash.utils.*; public class ControlPanel extends Sprite { public var corner:Corner; private var trigger:String;// = "none" private var scaler:String;// = "none" private var currentTime:Number; private var startTime:Number; private var showDelay:Number; private var minCornerScale:Number; private var maxCornerScale:Number; private var scaleStep:Number; private var buttons:Buttons; public function ControlPanel(){ showDelay = 500; minCornerScale = 1; maxCornerScale = 3; scaleStep = 0.5; corner.scaleX = (corner.scaleY = minCornerScale); buttons = new Buttons(); buttons.soundicon.gotoAndStop("on"); buttons.musicicon.gotoAndStop("on"); buttons.qualityicon.gotoAndStop("on"); buttons.soundicon.buttonMode = true; buttons.soundicon.useHandCursor = true; buttons.musicicon.buttonMode = true; buttons.musicicon.useHandCursor = true; buttons.qualityicon.buttonMode = true; buttons.qualityicon.useHandCursor = true; corner.fold.addEventListener(MouseEvent.CLICK, onCornerClick); corner.fold.buttonMode = true; corner.fold.useHandCursor = true; addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); buttons.soundicon.addEventListener(MouseEvent.CLICK, onSoundIconClick); buttons.soundicon.addEventListener(MouseEvent.MOUSE_OVER, onIconOver); buttons.soundicon.addEventListener(MouseEvent.MOUSE_OUT, onIconOut); buttons.musicicon.addEventListener(MouseEvent.CLICK, onMusicIconClick); buttons.musicicon.addEventListener(MouseEvent.MOUSE_OVER, onIconOver); buttons.musicicon.addEventListener(MouseEvent.MOUSE_OUT, onIconOut); buttons.qualityicon.addEventListener(MouseEvent.CLICK, onQualityIconClick); buttons.qualityicon.addEventListener(MouseEvent.MOUSE_OVER, onIconOver); buttons.qualityicon.addEventListener(MouseEvent.MOUSE_OUT, onIconOut); if (stage != null){ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; }; } private function updateFrame(_arg1:Event):void{ currentTime = getTimer(); switch (trigger){ case "show": if ((currentTime - startTime) > showDelay){ trigger = "none"; if (corner.scaleX < maxCornerScale){ corner.ring.visible = false; scaler = "grow"; }; }; break; case "hide": if ((currentTime - startTime) > showDelay){ trigger = "none"; if (corner.scaleX > minCornerScale){ showIcons(false); scaler = "shrink"; }; }; break; }; switch (scaler){ case "grow": corner.scaleX = (corner.scaleY = (corner.scaleY + scaleStep)); if (corner.scaleX >= maxCornerScale){ scaler = "none"; corner.scaleX = (corner.scaleY = maxCornerScale); showIcons(true); }; break; case "shrink": corner.scaleX = (corner.scaleY = (corner.scaleY - scaleStep)); if (corner.scaleX <= minCornerScale){ scaler = "none"; corner.scaleX = (corner.scaleY = minCornerScale); corner.ring.ringslice.gotoAndPlay(1); corner.ring.visible = true; removeEventListener(Event.ENTER_FRAME, updateFrame); }; break; }; } private function showIcons(_arg1:Boolean):void{ if (_arg1 == false){ if (contains(buttons) == true){ removeChild(buttons); }; } else { if (contains(buttons) == false){ addChild(buttons); }; }; } private function onSoundIconClick(_arg1:Event):void{ if (buttons.soundicon.currentLabel == "on"){ buttons.soundicon.gotoAndStop("off"); dispatchEvent(new ControlPanelEvent(ControlPanelEvent.SOUND, "off")); } else { buttons.soundicon.gotoAndStop("on"); dispatchEvent(new ControlPanelEvent(ControlPanelEvent.SOUND, "on")); }; } private function onMusicIconClick(_arg1:Event):void{ if (buttons.musicicon.currentLabel == "on"){ buttons.musicicon.gotoAndStop("off"); dispatchEvent(new ControlPanelEvent(ControlPanelEvent.MUSIC, "off")); } else { buttons.musicicon.gotoAndStop("on"); dispatchEvent(new ControlPanelEvent(ControlPanelEvent.MUSIC, "on")); }; } private function onQualityIconClick(_arg1:Event):void{ if (buttons.qualityicon.currentLabel == "on"){ buttons.qualityicon.gotoAndStop("off"); dispatchEvent(new ControlPanelEvent(ControlPanelEvent.QUALITY, "off")); } else { buttons.qualityicon.gotoAndStop("on"); dispatchEvent(new ControlPanelEvent(ControlPanelEvent.QUALITY, "on")); }; } private function onQuitIconClick(_arg1:Event):void{ dispatchEvent(new ControlPanelEvent(ControlPanelEvent.QUIT)); } private function onIconOver(_arg1:Event):void{ _arg1.currentTarget.scaleX = (_arg1.currentTarget.scaleY = 1.1); } private function onIconOut(_arg1:Event):void{ _arg1.currentTarget.scaleX = (_arg1.currentTarget.scaleY = 1); } private function onMouseOver(_arg1:Event):void{ addEventListener(Event.ENTER_FRAME, updateFrame, false, 0, true); startTime = getTimer(); trigger = "show"; } private function onMouseOut(_arg1:Event):void{ if (corner.scaleX == minCornerScale){ removeEventListener(Event.ENTER_FRAME, updateFrame); }; startTime = getTimer(); trigger = "hide"; } private function onCornerClick(_arg1:Event):void{ trigger = "none"; if (contains(buttons) == true){ showIcons(false); scaler = "shrink"; } else { corner.ring.visible = false; scaler = "grow"; }; } public function set sound(_arg1:Boolean):void{ var _local2:String = (_arg1) ? "on" : "off"; buttons.soundicon.gotoAndStop(_local2); } public function set music(_arg1:Boolean):void{ var _local2:String = (_arg1) ? "on" : "off"; buttons.musicicon.gotoAndStop(_local2); } public function set quality(_arg1:Boolean):void{ var _local2:String = (_arg1) ? "on" : "off"; buttons.qualityicon.gotoAndStop(_local2); } } }//package menucode
Section 210
//ControlPanelEvent (menucode.ControlPanelEvent) package menucode { import flash.events.*; public class ControlPanelEvent extends Event { public var state:String; public static const SOUND = "sound"; public static const MUSIC = "music"; public static const QUALITY = "quality"; public static const QUIT = "quit"; public function ControlPanelEvent(_arg1:String, _arg2:String="none"){ super(_arg1, true); state = _arg2; } } }//package menucode
Section 211
//EventPopup (menucode.EventPopup) package menucode { import flash.display.*; import flash.events.*; import com.rkg.media.*; import flash.ui.*; public class EventPopup extends Sprite { public var Flags:uint; public var setNonPermFeedCallback:Function;// = null protected var mEventList:Array;// = null protected var mCurrentIndex:int;// = -1 protected var mCurrentPop:MovieClip;// = null protected var mClasses:Object;// = null protected var mDone:Boolean;// = false protected var mHaveOpenedFeedDialog:Boolean;// = false public static const PERM_FEED_PERIOD:int = 604800000; public static const PERM_FEED_LIMIT:int = 3; public static const FLAG_RANK:int = (1 << 0); public static const FLAG_ACHIEVEMENT:int = (1 << 1); public static const FLAG_POINTS:int = (1 << 2); public static const FLAG_SMALL_POINTS:int = (1 << 3); public static const FLAG_SCRATCHCARDS:int = (1 << 4); public static const FLAG_WELCOME:int = (1 << 5); public static const FLAG_BIG:uint = ((((FLAG_RANK | FLAG_ACHIEVEMENT) | FLAG_POINTS) | FLAG_SCRATCHCARDS) | FLAG_WELCOME); public static const FLAG_ALL:uint = (((((FLAG_RANK | FLAG_ACHIEVEMENT) | FLAG_POINTS) | FLAG_SMALL_POINTS) | FLAG_SCRATCHCARDS) | FLAG_WELCOME); public static var sFeedCount:int = 0; public static var sPermFeed:Boolean = false; public static var sNonPermFeed:Date = null; public static var sFeedDialogOpen:Boolean = false; public function EventPopup(){ Flags = FLAG_BIG; super(); mClasses = new Object(); mClasses["levelup"] = {className:PopupNewrank, flag:FLAG_RANK}; mClasses["achievement"] = {className:PopupNewachievement, flag:FLAG_ACHIEVEMENT}; mClasses["points"] = {className:PopupPoints, flag:FLAG_POINTS}; mClasses["points_small"] = {className:PopupPointsSmall, flag:FLAG_SMALL_POINTS}; mClasses["scratch_card"] = {className:PopupScratchcard, flag:FLAG_SCRATCHCARDS}; mClasses["added_game"] = {className:PopupWelcome, flag:FLAG_WELCOME}; mDone = false; mHaveOpenedFeedDialog = false; } public function isFlag(_arg1:int):Boolean{ return (Boolean(!(((Flags & _arg1) == 0)))); } public function init(_arg1:Array):void{ mEventList = _arg1; mDone = false; mHaveOpenedFeedDialog = false; sortEventList(_arg1); doPop(0); } public function sortOnScoreType(_arg1:Object, _arg2:Object):int{ var _local3:Object = StaticDesc.Instance.getScoreByName(_arg1.score_type); var _local4:Object = StaticDesc.Instance.getScoreByName(_arg2.score_type); if (_local3.index < _local4.index){ return (-1); }; if (_local3.index > _local4.index){ return (1); }; return (0); } public function sortEventList(_arg1:Array):void{ if (StaticDesc.Instance.hasData() == false){ return; }; var _local2:Array = new Array(); var _local3 = -1; var _local4:int; while (_local4 < _arg1.length) { if (_arg1[_local4].type === "levelup"){ if (_local3 == -1){ _local3 = _local4; }; _local2.push(_arg1[_local4]); _arg1.splice(_local4, 1); } else { _local4++; }; }; _local2.sort(sortOnScoreType); _local4 = 0; while (_local4 < _local2.length) { _arg1.splice(_local3, 0, _local2[_local4]); _local4++; }; } public function checkWhenToShowFeed(_arg1:Object, _arg2:String):Boolean{ var _local4:Object; var _local5:String; var _local3:Boolean; if (_arg1.hasOwnProperty("feed")){ _local4 = _arg1["feed"]; if (_local4.hasOwnProperty("show_dialog_when") == false){ if (_arg2 == "open"){ _local3 = true; }; } else { _local5 = _local4["show_dialog_when"]; if (_arg2 == _local5){ _local3 = true; }; }; }; return (_local3); } public function onFeedDialogClosed(_arg1:Object):void{ sFeedDialogOpen = false; } public function doEventFeed(_arg1:Object, _arg2:String):void{ if ((((EventPopup.sPermFeed == false)) && (checkWhenToShowFeed(_arg1, _arg2)))){ if (checkPermFeed()){ trace("showEventFeed perm_dialog_after = true"); _arg1.feed.perm_dialog_after = true; }; Mouse.show(); sFeedDialogOpen = true; }; } public function showEventFeed(_arg1:String):void{ var _local2:Object = mEventList[mCurrentIndex]; doEventFeed(_local2, _arg1); } public function showEvent(_arg1:Object):Boolean{ var _local2:Boolean; var _local3:String = Constants.SOUND_TRIUMPH; if (_arg1.point_total){ }; if (isFlag(mClasses[_arg1.type].flag)){ mCurrentPop = new mClasses[_arg1.type].className(); if ((mCurrentPop is PopupNewrank)){ initPopupNewrank((mCurrentPop as PopupNewrank), _arg1); mCurrentPop.continuebutton.addEventListener(MouseEvent.CLICK, onContinueButton); mCurrentPop.addEventListener(Event.ENTER_FRAME, onPopupFrame); } else { if ((mCurrentPop is PopupNewachievement)){ initPopupNewachievement((mCurrentPop as PopupNewachievement), _arg1); mCurrentPop.continuebutton.addEventListener(MouseEvent.CLICK, onContinueButton); mCurrentPop.addEventListener(Event.ENTER_FRAME, onPopupFrame); } else { if ((mCurrentPop is PopupPoints)){ initPopupPoints((mCurrentPop as PopupPoints), _arg1); mCurrentPop.continuebutton.addEventListener(MouseEvent.CLICK, onContinueButton); _local3 = Constants.SOUND_COIN; } else { if ((mCurrentPop is PopupPointsSmall)){ initPopupPointsSmall((mCurrentPop as PopupPointsSmall), _arg1); mCurrentPop.addEventListener(Event.ENTER_FRAME, onEnterFrameEvent); _local3 = Constants.SOUND_COIN; } else { if ((mCurrentPop is PopupScratchcard)){ initPopupScratchCard((mCurrentPop as PopupScratchcard), _arg1); mCurrentPop.continuebutton.addEventListener(MouseEvent.CLICK, onContinueButton); } else { if ((mCurrentPop is PopupWelcome)){ initPopupWelcome((mCurrentPop as PopupWelcome), _arg1); mCurrentPop.continuebutton.addEventListener(MouseEvent.CLICK, onContinueButton); mCurrentPop.addEventListener(Event.ENTER_FRAME, onPopupFrame); }; }; }; }; }; }; SoundManager.Instance.play(_local3); this.addChild(mCurrentPop); doEventFeed(_arg1, "open"); _local2 = true; }; return (_local2); } public function onPopupFrame(_arg1:Event):void{ if (_arg1.target.currentLabel === "coins"){ _arg1.target.removeEventListener(Event.ENTER_FRAME, onPopupFrame); SoundManager.Instance.play(Constants.SOUND_COIN); }; } public function onContinueButton(_arg1:MouseEvent):void{ if (((!((mCurrentPop == null))) && ((mCurrentPop.parent == this)))){ mCurrentPop.mouseEnabled = false; mCurrentPop.mouseChildren = false; mCurrentPop.continuebutton.removeEventListener(MouseEvent.CLICK, onContinueButton); showEventFeed("close"); this.removeChild(mCurrentPop); mCurrentPop = null; doPop((mCurrentIndex + 1)); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); }; } public function checkPermFeed():Boolean{ var _local2:Date; var _local3:Number; var _local1:Boolean; EventPopup.sFeedCount++; trace(("feed count=" + EventPopup.sFeedCount)); if (EventPopup.sFeedCount < PERM_FEED_LIMIT){ _local1 = false; } else { if (EventPopup.sNonPermFeed != null){ _local2 = new Date(); _local3 = (_local2.time - EventPopup.sNonPermFeed.time); if (_local3 < PERM_FEED_PERIOD){ trace(("perm feed request not allowed time=" + _local3.toString())); _local1 = false; }; }; }; return (_local1); } public function onPermDialogClosed(_arg1:Object):void{ if (_arg1){ EventPopup.sPermFeed = true; } else { EventPopup.sNonPermFeed = new Date(); if (setNonPermFeedCallback != null){ setNonPermFeedCallback(EventPopup.sNonPermFeed); }; }; } public function onEnterFrameEvent(_arg1:Event):void{ var _local2:int = _arg1.currentTarget.totalFrames; var _local3:int = _arg1.currentTarget.currentFrame; if (_local3 == _local2){ _arg1.currentTarget.stop(); if (mCurrentPop != null){ mCurrentPop.removeEventListener(Event.ENTER_FRAME, onEnterFrameEvent); }; showEventFeed("close"); if (((!((mCurrentPop == null))) && ((mCurrentPop.parent == this)))){ this.removeChild(mCurrentPop); }; mCurrentPop = null; doPop((mCurrentIndex + 1)); }; } public function doPop(_arg1:int):void{ var _local2:Boolean; if (_arg1 < mEventList.length){ mCurrentIndex = _arg1; _local2 = false; while ((((mCurrentIndex < mEventList.length)) && ((_local2 == false)))) { _local2 = showEvent(mEventList[mCurrentIndex]); if (_local2 == false){ mCurrentIndex = (mCurrentIndex + 1); }; }; if (_local2 == false){ mDone = true; }; } else { mDone = true; }; } public function isDone():Boolean{ return (mDone); } public function initPopupNewrank(_arg1:PopupNewrank, _arg2:Object):void{ var _local3:Object; var _local4:Object; if (StaticDesc.Instance.hasData() == false){ return; }; if (_arg2.type === "levelup"){ _local3 = StaticDesc.Instance.getScoreByName(_arg2.score_type); _local4 = StaticDesc.Instance.getLevelByIndexPorperty(_arg2.level); _arg1.rankportrait.addChild(RankingInfoEx.newPortrait(_arg2.level)); _arg1.rankline.linetext.text = _local4.verbose_name; _arg1.categoryline.linetext.text = _local3.verbose_name; _arg1.earnedline.linetext.text = _arg2.points.toString(); }; } public function initPopupNewachievement(_arg1:PopupNewachievement, _arg2:Object):void{ var achievementObj:Object; var pop = _arg1; var evtObj = _arg2; if (StaticDesc.Instance.hasData() == false){ return; }; if (evtObj.type === "achievement"){ achievementObj = StaticDesc.Instance.getAchievementByName(evtObj.achievement_type); try { pop.achievement.addChild(RankingInfoEx.newAchievementIcon(evtObj.achievement_type)); } catch(error:Error) { trace(("unsupported achievement type: " + evtObj.achievement_type)); trace(error.message); }; pop.achievementline.linetext.text = achievementObj.verbose_name; pop.descriptionline.linetext.text = evtObj.desc; pop.earnedline.linetext.text = evtObj.points.toString(); }; } public function initPopupPoints(_arg1:PopupPoints, _arg2:Object):void{ if (StaticDesc.Instance.hasData() == false){ return; }; if (_arg2.type === "points"){ _arg1.eventline.linetext.text = _arg2.desc; _arg1.earnedline.linetext.text = _arg2.points.toString(); }; } public function initPopupPointsSmall(_arg1:PopupPointsSmall, _arg2:Object):void{ if (StaticDesc.Instance.hasData() == false){ return; }; if (_arg2.type === "points_small"){ _arg1.points.linetext.text = _arg2.points.toString(); }; } public function initPopupScratchCard(_arg1:PopupScratchcard, _arg2:Object):void{ if (_arg2.type === "scratch_card"){ _arg1.message.linetext.text = _arg2.desc; _arg1.reward.rewardtext.text = _arg2.points.toString(); }; } public function initPopupWelcome(_arg1:PopupWelcome, _arg2:Object):void{ if (_arg2.type === "added_game"){ _arg1.earnedline.linetext.text = _arg2.points.toString(); }; } } }//package menucode
Section 212
//Factory (menucode.Factory) package menucode { import flash.text.*; import menucode.*; class Factory { public var mFonts:Object; protected var mUseEmbeddedFonts:Boolean;// = true protected var mTextFormats:Object; protected var mTextFieldPool:Array; protected var mTextFieldList:Array; protected static var mInstance:Factory = null; function Factory(){ mFonts = new Object(); mTextFormats = new Object(); mTextFieldPool = new Array(); mTextFieldList = new Array(); super(); if (mInstance != null){ throw (new Error("Factory is a singleton, already instantiated")); }; initFonts(); enumerateEmbeddedFonts(); } protected function initFonts():void{ mFonts["VinqueFont"] = new Komika(); } protected function getFontClass(_arg1:String):Font{ var _local2:Font; if (mFonts.hasOwnProperty(_arg1)){ _local2 = mFonts[_arg1]; } else { throw (new Error(("There is no fontClass " + _arg1))); }; return (_local2); } protected function enumerateEmbeddedFonts():void{ trace("**** Embedded Fonts ****"); var _local1:Array = Font.enumerateFonts(false); var _local2:int; while (_local2 < _local1.length) { trace(_local1[_local2].fontName); _local2++; }; } public function getEmbeddedFont(_arg1:String):Font{ var _local2:Font; var _local3:Array = Font.enumerateFonts(false); var _local4:int; while (_local4 < _local3.length) { if (_local3[_local4].fontName == _arg1){ _local2 = _local3[_local4]; break; }; _local4++; }; if (_local2 == null){ throw (new Error(("There is no embedded font with fontName=" + _arg1))); }; return (_local2); } public function hasEmbeddedFont(_arg1:String):Boolean{ var _local2:Boolean; var _local3:Array = Font.enumerateFonts(false); var _local4:int; while (_local4 < _local3.length) { if (_local3[_local4].fontName == _arg1){ _local2 = true; break; }; _local4++; }; return (_local2); } public function getTextFormat(_arg1:String, _arg2:int, _arg3:uint=0):TextFormat{ var key:String; var font:Font; var tformat:TextFormat; var fontClass = _arg1; var size = _arg2; var color = _arg3; key = ((((fontClass + "_") + size) + "_") + color); try { font = getFontClass(fontClass); if (hasEmbeddedFont(font.fontName)){ if (!mTextFormats.hasOwnProperty(key)){ mTextFormats[key] = new TextFormat(font.fontName, size, color); }; }; } catch(error:Error) { trace(error.message); mUseEmbeddedFonts = false; if (!mTextFormats.hasOwnProperty(key)){ tformat = new TextFormat(); tformat.size = size; tformat.color = color; mTextFormats[key] = tformat; }; }; return (mTextFormats[key]); } protected function dumpTextFormats(){ var _local1:String; var _local2:TextFormat; trace("[TextFormats]"); for (_local1 in mTextFormats) { _local2 = mTextFormats[_local1]; trace(((((((_local1 + ":") + _local2.font) + "_") + _local2.size) + "_") + _local2.color)); }; } public function allocTextField():TextField{ var _local1:TextField; if (mTextFieldPool.length > 0){ trace("newTextField: from pool"); _local1 = mTextFieldPool.pop(); } else { trace("newTextField: new"); _local1 = new TextField(); }; mTextFieldList.push(_local1); return (_local1); } public function makeTextField(_arg1:String, _arg2:TextFormat, _arg3:Boolean=false):TextField{ var _local4:TextField; if (_arg3 == true){ _local4 = allocTextField(); } else { _local4 = new TextField(); }; if (mUseEmbeddedFonts){ _local4.embedFonts = true; _local4.defaultTextFormat = _arg2; }; _local4.cacheAsBitmap = true; _local4.text = _arg1; _local4.setTextFormat(_arg2); _local4.width = (_local4.textWidth + 4); _local4.height = (_local4.textHeight + 4); return (_local4); } public function recycleTextField(_arg1:TextField):void{ var _local2:int = mTextFieldList.indexOf(_arg1); if (_local2 >= 0){ trace("recycleTextField"); mTextFieldList.splice(_local2, 1); mTextFieldPool.push(_arg1); } else { throw (new Error("Factory.recycleTextField: textfield not created by Factory!")); }; } public static function get Instance():Factory{ if (mInstance == null){ mInstance = new (Factory); }; return (mInstance); } } }//package menucode
Section 213
//FbInfo (menucode.FbInfo) package menucode { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import menucode.facebook.*; import com.rkg.firebug.*; import com.rkg.facebook.*; class FbInfo { protected var useFullName:Boolean;// = false protected var onCompleteCB:Function;// = null protected var onErrorCB:Function;// = null function FbInfo(_arg1:String, _arg2:DisplayObjectContainer, _arg3:TextField, _arg4:Function=null, _arg5:Function=null, _arg6:Boolean=false):void{ onCompleteCB = _arg4; onErrorCB = _arg5; useFullName = _arg6; var _local7:Object = new Object(); var _local8:Object = new Object(); _local8.picContainer = _arg2; _local8.nameField = _arg3; _local7.uid = _arg1; if (_local8.nameField != null){ _local8.nameField.text = "loading..."; }; if (_local8.picContainer != null){ removeOldPhoto(_local8.picContainer); if (_local8.picContainer.parent != null){ if (_local8.picContainer.parent.hasOwnProperty("loadinganimation")){ _local8.picContainer.parent.loadinganimation.play(); _local8.picContainer.parent.loadinganimation.visible = true; }; if (_local8.picContainer.parent.hasOwnProperty("nophoto")){ _local8.picContainer.parent.nophoto.visible = true; }; }; }; new UserImageRequest(_local7, onUserFacebookPic, onError, _local8); } public function removeOldPhoto(_arg1:DisplayObjectContainer):void{ var _local3:DisplayObject; var _local2:int; while (_local2 < _arg1.numChildren) { _local3 = _arg1.getChildAt(_local2); if ((_local3 is FriendPhoto)){ _arg1.removeChild(_local3); } else { _local2++; }; }; } public function onUserFacebookPic(_arg1:Array, _arg2:Object):void{ var _local3:FriendPhoto; trace("fbInfo.onUserFacebookPic"); if (_arg1.length > 0){ _local3 = new FriendPhoto(_arg1[0].pic_square, 70, 70, true, onFriendPhotoComplete, _arg2); if (_arg2.picContainer != null){ _arg2.picContainer.addChild(_local3); if (_arg2.picContainer.parent != null){ if (_arg2.picContainer.parent.hasOwnProperty("loadinganimation")){ _arg2.picContainer.parent.loadinganimation.stop(); _arg2.picContainer.parent.loadinganimation.visible = false; }; if (_arg2.picContainer.parent.hasOwnProperty("nophoto")){ _arg2.picContainer.parent.nophoto.visible = false; }; }; }; if (_arg2.nameField != null){ if (useFullName == true){ _arg2.nameField.text = _arg1[0].name; } else { _arg2.nameField.text = _arg1[0].first_name; }; }; }; } public function onFriendPhotoComplete(_arg1:FriendPhoto, _arg2:Object):void{ if (_arg2.picContainer != null){ _arg2.picContainer.addChild(_arg1); }; if (onCompleteCB != null){ onCompleteCB(); }; } public function onError(_arg1:Object):void{ trace("fbInfo.onError"); if (((!((_arg1.picContainer == null))) && (!((_arg1.picContainer.parent == null))))){ if (_arg1.picContainer.parent.hasOwnProperty("loadinganimation")){ _arg1.picContainer.parent.loadinganimation.stop(); _arg1.picContainer.parent.loadinganimation.visible = false; }; }; if (_arg1.nameField != null){ _arg1.nameField.text = "unknown"; }; if (onErrorCB != null){ onErrorCB(); }; } } }//package menucode
Section 214
//FlashVars (menucode.FlashVars) package menucode { class FlashVars { public static var ga_code:String = null; public static var remote_ip:String = null; public static var service:String = null; public static var player_id:String = null; public static var resource_path:String = null; public static var mode:String = null; public static var challenge_id:String = null; public static var room_id:String = null; public static var seed:int = 1; public static var canvas_base_url:String = null; public static var rankings_tab:String = null; public static var challenge_user_id:String = null; public static var game_mode:String = null; public static var difficulty:String = null; } }//package menucode
Section 215
//FriendPicker (menucode.FriendPicker) package menucode { import fl.controls.*; import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import menucode.facebook.*; import flash.net.*; import com.rkg.display.*; import com.rkg.facebook.*; public class FriendPicker extends Sprite { public var mWidth:int; public var mHeight:int; protected var mFriendSprites:Array; protected var mFriends:Array; protected var mFilteredFriends:Array; protected var mFriendPager:FriendPager; protected var mLeft:Object; protected var mRight:Object; protected var mCaption:TextField; protected var mOpts:Object; protected var mDots:Array; protected var mTextField:TextField; protected var mTextPrompt:TextField; protected var mOnlineCheckbox:CheckBox; public static const CAPTION_FONT_SIZE:int = 20; public static const PAGER_VOFFSET = 0; public static const DOT_OFFSET:int = 9; public static const DOT_SPACE:int = 16; public static const DOT_Y:int = 32; public static const ARROW_X:int = 30; public static const ARROW_Y:int = 36; public static const ARROW_SCALE:Number = 0.3; public static const BUTTON_WIDTH:int = 48; public static const BUTTON_HEIGHT:int = 15; public static const BUTTON_FONTSIZE:int = 10; public static const BUTTON_BOTTOM_OFFSET:int = 6; public static const BUTTON_SPACING:int = 10; public function FriendPicker(_arg1:int, _arg2:int, _arg3:Object):void{ var w = _arg1; var h = _arg2; var opts = _arg3; super(); mWidth = w; mHeight = h; renderBackground(); mOpts = opts; Waiting.show(Constants.RETRIEVING_DATA); try { new FriendImagesRequest(opts, onFriends, onFriendsError); } catch(error:Error) { trace(error.message); makeCaption(); makeControls(); }; mDots = null; addEventListener(Event.ADDED_TO_STAGE, function (_arg1:Event):void{ stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey); }); addEventListener(Event.REMOVED_FROM_STAGE, function (_arg1:Event):void{ stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKey); }); } public function get opts():Object{ return (mOpts); } public function makeCaption():void{ if (!mOpts["caption"]){ return; }; mCaption = new TextField(); mCaption.text = mOpts["caption"]; var _local1:TextFormat = new TextFormat(); _local1.font = "Arial"; _local1.size = CAPTION_FONT_SIZE; mCaption.antiAliasType = AntiAliasType.ADVANCED; mCaption.setTextFormat(_local1); addChild(mCaption); var _local2:TextLineMetrics = mCaption.getLineMetrics(0); mCaption.y = 4; mCaption.width = (_local2.width + 32); mCaption.height = _local2.height; mCaption.x = ((mWidth - mCaption.width) / 2); } public function makeControls():void{ if (mOpts["leftArrow"]){ mLeft = mOpts["leftArrow"]; mOpts["leftArrow"].addEventListener(MouseEvent.CLICK, onArrowClick); }; if (mOpts["rightArrow"]){ mRight = mOpts["rightArrow"]; mOpts["rightArrow"].addEventListener(MouseEvent.CLICK, onArrowClick); }; if (mOpts["okButton"] != false){ mOpts["okButton"].addEventListener(MouseEvent.CLICK, onOKButton); }; if (mOpts["cancelable"]){ if (mOpts["cancelButton"]){ mOpts["okButton"].addEventListener(MouseEvent.CLICK, onCancelButton); }; }; var f:TextFormat; if (mOpts["searchField"]){ mTextField = mOpts["searchField"]; mTextField.text = ""; mTextField.addEventListener(Event.CHANGE, onTextChange); f = new TextFormat(); f.font = "Arial"; f.size = 10; mTextPrompt = new TextField(); mTextPrompt.type = TextFieldType.DYNAMIC; mTextPrompt.text = "Start typing a friend's name"; mTextPrompt.textColor = 0; mTextPrompt.setTextFormat(f); mTextField.parent.addChild(mTextPrompt); mTextPrompt.x = mTextField.x; mTextPrompt.y = mTextField.y; mTextPrompt.width = mTextField.width; mTextPrompt.height = mTextField.height; mTextPrompt.addEventListener(MouseEvent.MOUSE_DOWN, function (_arg1:MouseEvent):void{ mTextField.parent.removeChild(mTextPrompt); mTextPrompt = null; if (stage != null){ stage.focus = mTextField; }; }); } else { mTextField = new TextField(); mTextField.type = TextFieldType.INPUT; mTextField.background = true; mTextField.backgroundColor = 0xFFFFFF; mTextField.border = true; mTextField.borderColor = 0; f = new TextFormat(); f.font = "Arial"; f.size = 10; mTextField.antiAliasType = AntiAliasType.ADVANCED; mTextField.setTextFormat(f); mTextField.defaultTextFormat = f; mTextField.width = 160; mTextField.height = 17; mTextField.x = ((mWidth - mTextField.width) / 2); mTextField.y = (DOT_Y + 15); addChild(mTextField); mTextField.addEventListener(Event.CHANGE, onTextChange); mTextPrompt = new TextField(); mTextPrompt.type = TextFieldType.DYNAMIC; mTextPrompt.text = "Start typing a friend's name"; mTextPrompt.textColor = 0; mTextPrompt.setTextFormat(f); addChild(mTextPrompt); mTextPrompt.x = mTextField.x; mTextPrompt.y = mTextField.y; mTextPrompt.width = mTextField.width; mTextPrompt.addEventListener(MouseEvent.MOUSE_DOWN, function (_arg1:MouseEvent):void{ removeChild(mTextPrompt); mTextPrompt = null; stage.focus = mTextField; }); }; if (mOpts.hasOwnProperty("online")){ if (mOpts["onlineCheckbox"] != false){ mOnlineCheckbox = mOpts["onlineCheckbox"]; mOnlineCheckbox.addEventListener(MouseEvent.CLICK, onOnlineCheckboxClick); mOnlineCheckbox.selected = mOpts["online"]; } else { if (!mOpts.hasOwnProperty("onlineCheckbox")){ mOnlineCheckbox = new CheckBox(); mOnlineCheckbox.label = "online only"; mOnlineCheckbox.selected = mOpts["online"]; mOnlineCheckbox.x = ((mTextField.x + mTextField.width) + 10); mOnlineCheckbox.y = (DOT_Y + 15); mOnlineCheckbox.addEventListener(MouseEvent.CLICK, onOnlineCheckboxClick); addChild(mOnlineCheckbox); }; }; }; } public function makePageDots():void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:PageDot; if (mDots){ _local5 = 0; while (_local5 < mDots.length) { removeChild(mDots[_local5]); mDots[_local5] = null; _local5++; }; mDots = null; }; mDots = new Array(); var _local1:int = mFriendPager.getPageCt(); if (_local1 > 1){ _local2 = DOT_SPACE; while (true) { _local3 = ((_local1 * (_local2 + PageDot.DOT_SIZE)) + _local2); _local4 = ((mWidth - _local3) / 2); if (_local4 > 20){ break; }; _local2--; if (_local2 == 0){ break; }; }; if (_local2 > 0){ _local5 = 0; while (_local5 < _local1) { _local6 = new PageDot(_local5); _local6.x = ((_local4 + _local2) + (_local5 * (_local2 + PageDot.DOT_SIZE))); _local6.y = ((mFriendPager.y + mFriendPager.height) + DOT_OFFSET); _local6.addEventListener(MouseEvent.CLICK, onDotClick); addChild(_local6); mDots.push(_local6); _local5++; }; mDots[0].setSel(true); }; }; } public function onKey(_arg1:KeyboardEvent):void{ var _local2:int = _arg1.keyCode; if ((((_local2 >= 97)) && ((_local2 <= 122)))){ _local2 = (_local2 - 32); }; if ((((_local2 < 65)) || ((_local2 > 90)))){ return; }; trace(("key press : " + _local2)); } public function onTextChange(_arg1:Event):void{ var online:Boolean; var evt = _arg1; if (mTextPrompt != null){ mTextField.parent.removeChild(mTextPrompt); mTextPrompt = null; }; if (!mFriendPager){ return; }; try { nukePager(); online = (mOpts.hasOwnProperty("online")) ? mOpts["online"] : false; setFilter(mTextField.text, online); makePager(); makePageDots(); pageUpdated(0); } catch(error:Error) { trace(error.message); }; } public function filterOnline(_arg1:Boolean):void{ var bFilter = _arg1; try { nukePager(); setFilter(mTextField.text, bFilter); makePager(); makePageDots(); pageUpdated(0); } catch(error:Error) { trace(error.message); }; } public function onOnlineCheckboxClick(_arg1:Event):void{ mOpts["online"] = _arg1.target.selected; filterOnline(mOpts["online"]); } public function isOnline(_arg1:Object):Boolean{ if ((((_arg1.online_presence === "active")) || ((_arg1.online_presence === "idle")))){ return (true); }; return (false); } public function setFilter(_arg1:String, _arg2:Boolean):void{ if (!mFriends){ return; }; mFilteredFriends = new Array(); var _local3:int; while (_local3 < mFriends.length) { if (((_arg2) && (!(isOnline(mFriends[_local3]))))){ } else { if (!_arg1){ mFilteredFriends.push(mFriends[_local3]); } else { _arg1 = _arg1.toLowerCase(); if (mFriends[_local3].first_name){ //unresolved if mFilteredFriends.push(mFriends[_local3]); } else { if (mFriends[_local3].last_name){ if (mFriends[_local3].last_name.substr(0, _arg1.length).toLowerCase() == _arg1){ mFilteredFriends.push(mFriends[_local3]); }; }; }; }; }; _local3++; }; } public function onDotClick(_arg1:MouseEvent):void{ var _local2:int = (_arg1.target as PageDot).mPageId; mFriendPager.setPage(_local2); } public function onFriendSelect(_arg1:FriendPagerEvent):void{ var _local2:FriendPickerEvent = new FriendPickerEvent(FriendPickerEvent.SELECTED); _local2.mSelectedFriendIds = new Array(); _local2.mSelectedFriendIds.push(mFilteredFriends[_arg1.mSelectedFriend].uid); dispatchEvent(_local2); } public function onOKButton(_arg1:Event):void{ if (!mFriendPager){ return; }; var _local2:FriendPickerEvent = new FriendPickerEvent(FriendPickerEvent.SELECTED); _local2.mSelectedFriendIds = new Array(); var _local3:int; while (_local3 < mFilteredFriends.length) { if (mFriendPager.mSelected[_local3]){ _local2.mSelectedFriendIds.push(mFilteredFriends[_local3].uid); }; _local3++; }; dispatchEvent(_local2); } public function getFriend(_arg1:int):Object{ var _local2:Object; var _local3:int; while (_local3 < mFriends.length) { if (mFriends[_local3].uid == _arg1){ _local2 = mFriends[_local3]; break; }; _local3++; }; return (_local2); } public function onCancelButton(_arg1:Event):void{ var _local2:FriendPickerEvent = new FriendPickerEvent(FriendPickerEvent.CANCELLED); dispatchEvent(_local2); } public function onArrowClick(_arg1:MouseEvent):void{ if (!mFriendPager){ return; }; if (_arg1.target == mLeft){ mFriendPager.doScroll(FriendPager.LEFT); }; if (_arg1.target == mRight){ mFriendPager.doScroll(FriendPager.RIGHT); }; } public function compareFriends(_arg1:Object, _arg2:Object):int{ if (_arg1.first_name < _arg2.first_name){ return (-1); }; if (_arg1.first_name > _arg2.first_name){ return (1); }; return (0); } public function makePager():void{ trace("making pager!"); nukePager(); mFriendPager = new FriendPager(8, 3, mFilteredFriends, mOpts); addChild(mFriendPager); mFriendPager.addEventListener(FriendPagerEvent.PAGE_CHANGE, onPageChange); mFriendPager.addEventListener(FriendPagerEvent.FRIEND_SELECT, onFriendSelect); mFriendPager.x = ((mWidth - mFriendPager.mWidth) / 2); mFriendPager.y = 0; if (((mOpts.hasOwnProperty("onMakePager")) && (!((mOpts["onMakePager"] == null))))){ var _local1 = mOpts; _local1["onMakePager"](Boolean((mFilteredFriends.length > 0))); }; } public function nukePager():void{ if (mFriendPager){ mFriendPager.removeEventListener(FriendPagerEvent.PAGE_CHANGE, onPageChange); removeChild(mFriendPager); mFriendPager = null; }; } public function onFriendsError(_arg1:Object):void{ Waiting.hide(); ConsoleSprite.Instance.text = ("There was an error retrieving friends list " + _arg1); var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onFriendsErrorOk); } public function onFriendsErrorOk(_arg1:MouseEvent):void{ if (((mOpts.hasOwnProperty("onFriendsError")) && (!((mOpts["onFriendsError"] == null))))){ var _local2 = mOpts; _local2["onFriendsError"](); }; } public function onFriends(_arg1:Array, _arg2:Object):void{ Waiting.hide(); _arg1 = _arg1.sort(compareFriends); mFriends = _arg1; var _local3:Boolean = (mOpts.hasOwnProperty("online")) ? mOpts["online"] : false; setFilter(null, _local3); makePager(); makeCaption(); makeControls(); makePageDots(); setArrowVisibility(); } public function onPageChange(_arg1:FriendPagerEvent):void{ pageUpdated(_arg1.mCurrentPage); } public function pageUpdated(_arg1:int):void{ var _local2:int; if (mDots != null){ _local2 = 0; while (_local2 < mDots.length) { (mDots[_local2] as PageDot).setSel((_local2 == _arg1)); _local2++; }; }; setArrowVisibility(); } public function setArrowVisibility(){ if (mFriendPager != null){ mLeft.visible = mFriendPager.canScroll(FriendPager.LEFT); mRight.visible = mFriendPager.canScroll(FriendPager.RIGHT); }; } public function renderBackground():void{ graphics.clear(); graphics.beginFill(15790335, 0); graphics.drawRect(0, 0, (mWidth - 1), (mHeight - 1)); graphics.endFill(); } } }//package menucode
Section 216
//GameInstructions (menucode.GameInstructions) package menucode { import flash.display.*; import flash.events.*; import com.rkg.media.*; import flash.utils.*; import gamecode.*; public class GameInstructions extends Sprite { protected var mInstructions:Instructions;// = null protected var mDone:Boolean;// = false protected var mCurrentInstruction:int;// = -1 protected var mSequence:Array;// = null public static const READY:String = "ready"; public static const SEQUENCE_STORY:Array = ["page01", "page02"]; public static const SEQUENCE_CLASSIC:Array = ["page01", "page02"]; public static const SEQUENCE_TIME_ATTACK:Array = ["page01", "page02"]; public static const SEQUENCE_PUZZLE:Array = ["page01", "page02"]; public function GameInstructions(){ trace("[GameInstructions]"); mInstructions = new Instructions(); this.addChild(mInstructions); mInstructions.stop(); mInstructions.showtoggle.gotoAndStop("off"); mInstructions.showtoggle.addEventListener(MouseEvent.CLICK, onShowToggle); mInstructions.continuebutton.doubleClickEnabled = true; mInstructions.continuebutton.addEventListener(MouseEvent.CLICK, onClick); mInstructions.continuebutton.addEventListener(MouseEvent.DOUBLE_CLICK, onDoubleClick); mDone = false; } public function onInstructionsFrames(_arg1:Event):void{ if (_arg1.target.currentLabel == READY){ _arg1.target.removeEventListener(Event.ENTER_FRAME, onInstructionsFrames); doNext(); }; } public function get instructions():Instructions{ return (mInstructions); } public function start():void{ mDone = false; mInstructions.addEventListener(Event.ENTER_FRAME, onInstructionsFrames); mCurrentInstruction = 0; switch (GameSetup.gameMode){ case GameModeEnum.GAME_MODE_STORY: trace("[GameInstructions][start] GAME_MODE_STORY"); mSequence = SEQUENCE_STORY; break; case GameModeEnum.GAME_MODE_CLASSIC: trace("[GameInstructions][start] GAME_MODE_CLASSIC"); mSequence = SEQUENCE_CLASSIC; break; case GameModeEnum.GAME_MODE_TIME_ATTACK: mSequence = SEQUENCE_TIME_ATTACK; break; case GameModeEnum.GAME_MODE_PUZZLE: mSequence = SEQUENCE_PUZZLE; break; default: throw (new Error(("GameInstructions.start(): unsupported game mode " + GameSetup.gameMode))); }; doInstruction(mCurrentInstruction); } public function doNext():void{ mCurrentInstruction = (mCurrentInstruction + 1); if (mCurrentInstruction < mSequence.length){ doInstruction(mCurrentInstruction); } else { mInstructions.stop(); mDone = true; }; } public function onClickTimer(_arg1:TimerEvent):void{ _arg1.target.stop(); _arg1.target.removeEventListener(TimerEvent.TIMER, onClickTimer); if (mDone){ return; }; doNext(); } public function onClick(_arg1:MouseEvent):void{ var _local2:Timer = new Timer(500); _local2.addEventListener(TimerEvent.TIMER, onClickTimer); _local2.start(); if (mCurrentInstruction < mSequence.length){ SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } else { SoundManager.Instance.play(Constants.SOUND_CONFIRM_CHALLENGE); }; } public function onDoubleClick(_arg1:MouseEvent):void{ mInstructions.stop(); mDone = true; SoundManager.Instance.play(Constants.SOUND_CONFIRM_CHALLENGE); } public function isDone():Boolean{ return (mDone); } public function doInstruction(_arg1:int):void{ trace("[GameInstructions][doInstruction]"); mInstructions.gotoAndPlay(mSequence[_arg1]); } public function onShowToggle(_arg1:MouseEvent):void{ if (mInstructions.showtoggle.currentLabel === "off"){ mInstructions.showtoggle.gotoAndStop("on"); } else { mInstructions.showtoggle.gotoAndStop("off"); }; } public function initToggle(_arg1:Boolean):void{ if (_arg1){ mInstructions.showtoggle.gotoAndStop("on"); } else { mInstructions.showtoggle.gotoAndStop("off"); }; } } }//package menucode
Section 217
//GamePage (menucode.GamePage) package menucode { import flash.display.*; import menucode.*; import flash.events.*; import com.rkg.media.*; import com.rkg.net.*; import menucode.facebook.*; import flash.net.*; import gamecode.*; import com.rkg.display.*; import flash.ui.*; class GamePage extends BasePage { protected var mGameInitialized:Boolean;// = false protected var mGame:GameManager;// = null protected var mMenuComm:MenuComm;// = null protected var mReportScoreObject:Object;// = null protected var mPageParams:Object;// = null protected var mExitCode:int;// = 0 protected var mEnterCode:int;// = 0 protected var mPlayerSprite:Sprite;// = null protected var mOpponentSprite:Sprite;// = null protected var mGetReady:PopupGetready;// = null protected var mMouseFirstHidden:Boolean;// = false public static const ENTER_START_GAME:int = 0; public static const ENTER_CONTINUE_GAME:int = 1; public static const EXIT_GAME_NORMAL:int = 0; public static const EXIT_CHALLENGE_ERROR:int = 1; public static const EXIT_REPORT_ERROR:int = 2; public static const EXIT_GAME_KILLED:int = 3; public static const STATE_PLAY:int = 0; public static const STATE_EXIT:int = 1; public static const STATE_INIT:int = 2; public static const STATE_BUSY:int = 3; public static const STATE_WAITING:int = 4; public static const STATE_KILL_GAME:int = 5; public static const STATE_GET_READY:int = 6; function GamePage(){ mMenuComm = new MenuComm(); mMenuComm.onGameComplete = this.onGameCompleteCallback; mMenuComm.soundManager = SoundManager.Instance; mMenuComm.consoleSprite = ConsoleSprite.Instance; mPlayerSprite = new Sprite(); mOpponentSprite = new Sprite(); mGame = new GameManager(); Sprite(this).buttonMode = true; this.addChild(mGame); } override public function exitState(_arg1:int):void{ switch (_arg1){ case STATE_INIT: initGameUI(); break; case STATE_GET_READY: shutdownGetReady(); break; }; } override public function enterState(_arg1:int):void{ var _local2:String; switch (_arg1){ case STATE_INIT: mMouseFirstHidden = false; hideMouse(); break; case STATE_GET_READY: initGetReady(); break; case STATE_PLAY: _local2 = GameReport.makeGameMode(GameSetup.gameType, GameSetup.gameMode); Analytics.Instance.trackPage(((FlashVars.service + "flash/game/start?mode=") + _local2)); SoundManager.Instance.playMusic("gejisglide.mp3"); break; case STATE_EXIT: Mouse.show(); SoundManager.Instance.stopMusic(); removeEventListeners(); releaseCanvas(); exitGame(); break; case STATE_KILL_GAME: mGame.stopGame(); break; }; } override public function enterFrame(_arg1:Number):void{ var seconds = _arg1; if (this.parent == null){ return; }; super.enterFrame(seconds); switch (mState){ case STATE_INIT: initGame(); break; case STATE_GET_READY: updateGetReady(seconds); break; case STATE_PLAY: try { hideMouse(); } catch(e:Error) { trace(("[GamePage][enterFrame] hideMouse error=" + e.message)); }; try { mGame.update(int((seconds * 1000))); } catch(e:Error) { trace(("[GamePage][enterFrame] update error=" + e.message)); }; try { mGame.draw(MenuMain.Instance.mCanvasBitmapData); } catch(e:Error) { trace(("[GamePage][enterFrame] draw error=" + e.message)); }; break; case STATE_KILL_GAME: mExitCode = EXIT_GAME_KILLED; requestState(STATE_EXIT); break; }; } override public function enterPage(_arg1:int, _arg2:Object):void{ var _local3:Date; mEnterCode = _arg1; mPageParams = _arg2; ConsoleSprite.Instance.print(("GamePage enterCode=" + _arg1)); switch (_arg1){ case ENTER_START_GAME: switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_SINGLEPLAYER: _local3 = new Date(); GameSetup.seed = _local3.time; break; }; mMenuComm.seed = GameSetup.seed; break; case ENTER_CONTINUE_GAME: break; }; requestState(STATE_INIT); } public function convertToSingleplayer():void{ mGame.switchToSinglePlayer(); } public function resetScore():void{ var _local1:Object = mGame["gameStats"]; _local1.resetScore(); } protected function hideMouse():void{ if ((((((mMouseFirstHidden == false)) && ((MenuMain.Instance.isShowingPopup() == false)))) && ((EventPopup.sFeedDialogOpen == false)))){ Mouse.hide(); mMouseFirstHidden = true; }; } protected function initGameUI():void{ grabCanvas(); mReportScoreObject = null; if (!mGameInitialized){ mGame.menuComm = mMenuComm; mGame.init(); mGameInitialized = true; }; removeGameInternalEnterFrameListener(); setupGameOptions(); if (mEnterCode == ENTER_START_GAME){ switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_MULTIPLAYER: case GameTypeEnum.GAME_TYPE_CHALLENGE: mGame.setPuzzleRand(GameSetup.seed); break; }; mGame.puzzle.resetPuzzleNumber(); }; addEventListeners(); ConsoleSprite.Instance.print(("In MenuComm.seed=" + mMenuComm.seed.toString())); mGame.gameStats.startGame(); mGame.startGame(MenuMain.Instance.mCanvasBitmap); mGame.update(0); mGame.draw(MenuMain.Instance.mCanvasBitmapData); } protected function setupGameOptions():void{ if ((((mGame == null)) || ((mGame.hasOwnProperty("options") == false)))){ return; }; var _local1:Object = mGame["options"]; if (_local1.hasOwnProperty("mode")){ _local1["mode"] = GameSetup.gameMode; }; if (_local1.hasOwnProperty("gameType")){ _local1["gameType"] = GameSetup.gameType; }; if (_local1.hasOwnProperty("setDifficulty")){ _local1.setDifficulty(GameSetup.startDifficulty); }; if (_local1.hasOwnProperty("setInGameDifficulty")){ _local1.setInGameDifficulty(GameSetup.difficulty); }; if (_local1.hasOwnProperty("classicMode")){ _local1["classicMode"] = GameSetup.classicSnoods; }; } protected function onGameCompleteCallback():void{ var _local1:Object; var _local2:String; trace("[GamePage][onGameCompleteCallback]"); ConsoleSprite.Instance.print(("Out MenuComm.seed=" + mMenuComm.seed.toString())); if (mState == STATE_BUSY){ return; }; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_SINGLEPLAYER: _local2 = GameReport.makeGameString(FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length)); GameReport.removeGame(_local2); break; }; _local1 = new Object(); _local1.options = mGame.options; _local1.gameStats = mGame.gameStats; _local1.puzzle = mGame.puzzle; _local1.onReportComplete = this.handleReportComplete; _local1.onReportError = this.handleReportError; _local1.onReportIOError = this.handleReportIOError; if (GameReport.sendReport(_local1) == true){ requestState(STATE_BUSY); Waiting.show(Constants.REPORTING_SCORE); } else { mExitCode = EXIT_GAME_NORMAL; requestState(STATE_EXIT); }; } else { mExitCode = EXIT_GAME_NORMAL; requestState(STATE_EXIT); }; } protected function exitGame():void{ trace("[GamePage][exitGame]"); var _local1:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local1.exitCode = mExitCode; _local1.pageObject = this; var _local2:* = new Object(); if (mReportScoreObject != null){ _local2["reportScore"] = mReportScoreObject; }; _local2["gameManager"] = mGame; _local1.pageParams = _local2; MenuMain.Instance.dispatchEvent(_local1); } protected function removeGameInternalEnterFrameListener():void{ if (mGame.hasEventListener(Event.ENTER_FRAME)){ mGame.removeEventListener(Event.ENTER_FRAME, mGame.enterFrameEventHandler); }; } protected function addEventListeners():void{ trace(("[GamePage][addEventListeners] mc_mousedetect: " + mGame.border.mc_mousedetect)); this.addEventListener(MouseEvent.CLICK, mouseClickEvent); MenuMain.Instance.controlpanel.addEventListener(MouseEvent.MOUSE_OVER, onControlPanelMouseOver); MenuMain.Instance.controlpanel.addEventListener(MouseEvent.MOUSE_OUT, onControlPanelMouseOut); } protected function removeEventListeners():void{ Mouse.show(); this.removeEventListener(MouseEvent.CLICK, mouseClickEvent); MenuMain.Instance.controlpanel.removeEventListener(MouseEvent.MOUSE_OVER, onControlPanelMouseOver); MenuMain.Instance.controlpanel.removeEventListener(MouseEvent.MOUSE_OUT, onControlPanelMouseOut); } protected function onMouseRollover(_arg1:MouseEvent):void{ mGame.mouseEnabled = true; if (mMouseFirstHidden == true){ Mouse.hide(); }; } protected function onMouseLeave(_arg1:MouseEvent):void{ Mouse.show(); } private function mouseClickEvent(_arg1:MouseEvent):void{ if (mGame.mouseEnabled){ Mouse.hide(); mGame.mouseClick = true; }; } protected function onControlPanelMouseOver(_arg1:MouseEvent):void{ mGame.mouseEnabled = false; } protected function onControlPanelMouseOut(_arg1:MouseEvent):void{ mGame.mouseEnabled = true; } protected function handleReportComplete(_arg1:ServerEvent):void{ Waiting.hide(); mReportScoreObject = _arg1.replyObject; mExitCode = EXIT_GAME_NORMAL; requestState(STATE_EXIT); } protected function handleReportError(_arg1:ServerEvent):void{ Waiting.hide(); mReportScoreObject = null; ConsoleSprite.Instance.print(("There was an error reporting your score: " + _arg1.replyObject)); var _local2:* = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, handleOKReportScoreError); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=report_score")); } protected function handleReportIOError(_arg1:ServerEvent):void{ Waiting.hide(); mReportScoreObject = null; ConsoleSprite.Instance.print(("There was an IOError reporting your score: " + _arg1.replyObject)); var _local2:* = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, handleOKReportScoreError); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=report_score")); } protected function handleOKReportScoreError(_arg1:MouseEvent):void{ mExitCode = EXIT_REPORT_ERROR; requestState(STATE_EXIT); } protected function initGame():void{ switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_SINGLEPLAYER: requestState(STATE_BUSY); singleplayerStart(); break; case GameTypeEnum.GAME_TYPE_CHALLENGE: requestState(STATE_BUSY); challengeStart(); break; case GameTypeEnum.GAME_TYPE_MULTIPLAYER: loadFacebookInfos(); requestState(STATE_GET_READY); break; }; } protected function singleplayerStart():void{ var _local1:String; var _local2:Object; var _local3:String; var _local4:int; var _local5:ServerCom; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ _local1 = GameReport.makeGameString(FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length)); _local2 = GameReport.checkOldGame(_local1, FlashVars.player_id); if (_local2 != null){ _local5 = new ServerCom(FlashVars.service, FlashVars.player_id); _local5.scoreReport(_local2); GameReport.removeGame(_local1); }; _local3 = GameReport.makeGameMode(GameSetup.gameType, GameSetup.gameMode); _local4 = GameSetup.startDifficulty; GameReport.writeGame(_local1, FlashVars.player_id, _local3, _local4); }; switch (GameSetup.gameMode){ case GameModeEnum.GAME_MODE_TIME_ATTACK: requestState(STATE_GET_READY); break; default: requestState(STATE_PLAY); break; }; } protected function challengeStart():void{ if (((((!((mPageParams == null))) && (mPageParams.hasOwnProperty("challenge_started")))) && ((mPageParams["challenge_started"] == true)))){ mPageParams["challenge_started"] = false; requestState(STATE_GET_READY); } else { if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ new ChallengeStart(this); } else { requestState(STATE_GET_READY); }; }; } protected function grabCanvas():void{ this.addChild(MenuMain.Instance.mCanvasBitmap); } protected function releaseCanvas():void{ MenuMain.Instance.addChildAt(MenuMain.Instance.mCanvasBitmap, 0); } protected function loadFacebookInfos():void{ var facebook_id:String; var opponent_id:String; if (FlashVars.player_id != null){ facebook_id = FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length); try { new FbInfo(facebook_id, mPlayerSprite, null, onPlayerFbInfoDone, onPlayerFbInfoError); } catch(error:Error) { mMenuComm.consoleSprite.print(("error: loadFacebookInfos " + error.message)); }; }; try { opponent_id = GameSetup.opponentId.substring(Constants.FACEBOOK_PREFIX.length); new FbInfo(opponent_id, mOpponentSprite, null, onOpponentFbInfoDone, onOpponentFbInfoError); } catch(error:Error) { mMenuComm.consoleSprite.print(("error: loadFacebookInfos " + error.message)); }; } protected function onPlayerFbInfoDone():void{ var friendPhoto:FriendPhoto; trace("onPlayerFbInfoDone"); try { friendPhoto = (mPlayerSprite.getChildAt(0) as FriendPhoto); mGame.setThumbnail(0, friendPhoto.getBitmapData()); } catch(e:Error) { trace(("onPlayerFbInfoDone error=" + e.message)); }; } protected function onPlayerFbInfoError():void{ trace("onPlayerFbInfoError"); } protected function onOpponentFbInfoDone():void{ var friendPhoto:FriendPhoto; trace("onOpponentFbInfoDone"); try { friendPhoto = (mOpponentSprite.getChildAt(0) as FriendPhoto); mGame.setThumbnail(1, friendPhoto.getBitmapData()); } catch(e:Error) { trace(("onOpponentFbInfoDone error=" + e.message)); }; } protected function onOpponentFbInfoError():void{ trace("onOpponentFbInfoError"); } public function getGameManager():GameManager{ return (mGame); } public function initGetReady():void{ if (mGetReady == null){ mGetReady = new PopupGetready(); }; this.addChild(mGetReady); mGetReady.gotoAndPlay("start"); SoundManager.Instance.playByIndex(SfxIdsEnum.SFX_ID_COUNTDOWN); } public function shutdownGetReady():void{ if (mGetReady == null){ return; }; mGetReady.gotoAndStop("end"); if (mGetReady.parent != null){ mGetReady.parent.removeChild(mGetReady); }; } public function updateGetReady(_arg1:Number):void{ if (mGetReady == null){ return; }; if (mGetReady.currentFrame == mGetReady.totalFrames){ mGetReady.stop(); requestState(STATE_PLAY); }; } } }//package menucode
Section 218
//GameReport (menucode.GameReport) package menucode { import com.rkg.net.*; import flash.net.*; import gamecode.*; import com.adobe.serialization.json.*; public class GameReport { public static const STATUS_LOSE:int = 0; public static const STATUS_TIE:int = 1; public static const STATUS_WIN:int = 2; public static const ARG_MULTIPLAYER:String = "mp"; public static const ARG_SINGLEPLAYER:String = "sp"; public static const ARG_CHALLENGE:String = "ch"; public static const ARG_LOSE:String = "lose"; public static const ARG_TIE:String = "tie"; public static const ARG_WIN:String = "win"; public static const ARG_FORFEIT:String = "forfeit"; public static const RANKTYPE_OVERALL:int = 0; public static const RANKTYPE_PLAYED:int = 1; public static const RANKTYPE_WORD_PLAY:int = 2; public static const RANKTYPE_TIME_ATTACK:int = 3; public static const RANKTYPE_PRO:int = 4; public static const RANKTYPE_MP_PLAYED:int = 5; public static const RANKTYPE_MP_WORD_PLAY:int = 6; public static const RANKTYPE_MP_TIME_ATTACK:int = 7; public static const RANKTYPE_MP_PRO:int = 8; public static const RANKTYPE_EVANGELISM:int = 9; public static const RANKTYPE_ACHIEVEMENTS:int = 10; public static const NUM_RANKTYPES:int = 11; public static const TYPE = [ARG_SINGLEPLAYER, ARG_MULTIPLAYER, ARG_CHALLENGE]; public static const STATUS = [null, ARG_WIN, ARG_LOSE, ARG_TIE]; protected static function getModeArg(_arg1:int):String{ var _local2:int = (_arg1 + 1); return (_local2.toString()); } protected static function getTypeArg(_arg1:int):String{ return (TYPE[_arg1]); } protected static function getStatusArg(_arg1:int):String{ return (STATUS[_arg1]); } public static function makeGameMode(_arg1:int, _arg2:int):String{ return ((getTypeArg(_arg1) + getModeArg(_arg2))); } public static function getGameType(_arg1:String):int{ var _local3:int; var _local2:String = _arg1.substring(0, 2); switch (_local2){ case ARG_SINGLEPLAYER: _local3 = GameTypeEnum.GAME_TYPE_SINGLEPLAYER; break; case ARG_MULTIPLAYER: _local3 = GameTypeEnum.GAME_TYPE_MULTIPLAYER; break; case ARG_CHALLENGE: _local3 = GameTypeEnum.GAME_TYPE_CHALLENGE; break; default: throw (new Error((("game type " + _local2) + " not supported"))); }; return (_local3); } public static function getGameMode(_arg1:String):int{ var _local2:int = parseInt(_arg1.substring(2)); return ((_local2 - 1)); } public static function makeReport(_arg1:Object):Object{ var _local2:Object = _arg1["options"]; var _local3:Object = _arg1["gameStats"]; var _local4:Object = new Object(); _local4["mode"] = makeGameMode(_local2["gameType"], _local2["mode"]); var _local5:int = determineWinStatus(_local2, _local3); _local4["status"] = getStatusArg(_local5); fillScoreReport(_local4, _arg1); switch (_local2.gameType){ case GameTypeEnum.GAME_TYPE_MULTIPLAYER: fillLiveChallengeReport(_local4, _local3); break; case GameTypeEnum.GAME_TYPE_CHALLENGE: fillChallengeReport(_local4); break; }; return (_local4); } public static function determineWinStatus(_arg1:Object, _arg2:Object):int{ var _local3:int; if (_arg2["won"]){ _local3 = StatusTypeEnum.STATUS_TYPE_WIN; } else { _local3 = StatusTypeEnum.STATUS_TYPE_LOSE; }; return (_local3); } public static function fillScoreReport(_arg1:Object, _arg2:Object):void{ var _local7:Object; var _local3:Object = _arg2["options"]; var _local4:Object = _arg2["gameStats"]; var _local5:Object = _arg2["puzzle"]; var _local6:int; switch (_local3["mode"]){ case GameModeEnum.GAME_MODE_PUZZLE: _local6 = (_local5["puzzleNumber"] - 1); if (_local6 < 0){ throw (new Error(("fillScoreReport error invalid puzzle score2=" + _local6.toString()))); }; break; default: break; }; _arg1["games_played"] = 1; _arg1["score"] = _local4["totalScore"]; _arg1["score2"] = _local6; _arg1["score3"] = 0; _arg1["style_point_max"] = _local4["maxStyleBonus"]; _arg1["difficulty"] = _local3.getDifficulty(); switch (_local3["gameType"]){ case GameTypeEnum.GAME_TYPE_CHALLENGE: _local7 = new Object(); _local7["score"] = _local4["score"]; _local7["styleBonus"] = _local4["styleBonus"]; _local7["snoodsUsed"] = _local4["snoodsUsed"]; _local7["snoodsUsedBonus"] = _local4["snoodsUsedBonus"]; _local7["completionBonus"] = _local4["completionBonus"]; _arg1["extra_data"] = JSON.encode(_local7); break; }; } public static function fillChallengeReport(_arg1:Object):void{ _arg1["challenge_id"] = GameSetup.challengeId; _arg1["challenger_id"] = GameSetup.opponentId; } public static function fillLiveChallengeReport(_arg1:Object, _arg2:Object):void{ var _local3:uint = _arg2["timeStamp"]; var _local4:String; var _local5:int = MenuLive.Instance.smartFoxManager.getChallengeIndex(); if (_local5 == 0){ _local4 = ((((("mp:" + FlashVars.player_id) + ":") + GameSetup.opponentId) + ":") + _local3.toString()); } else { _local4 = ((((("mp:" + GameSetup.opponentId) + ":") + FlashVars.player_id) + ":") + _local3.toString()); }; _arg1["challenge_id"] = _local4; _arg1["challenger_id"] = GameSetup.opponentId; _arg1["challenge_index"] = _local5; _arg1["challenger_source"] = GameSetup.liveGameSource; _arg1["challenger_score"] = _arg2["opponentTotalScore"]; } public static function sendReport(_arg1:Object):Boolean{ var _local3:Object; var _local4:ServerCom; var _local2:Boolean; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ _local3 = makeReport(_arg1); _local4 = new ServerCom(FlashVars.service, FlashVars.player_id); _local4.addEventListener(ServerEvent.SERVER_REPLY, _arg1.onReportComplete); _local4.addEventListener(ServerEvent.SERVER_ERROR, _arg1.onReportError); _local4.addEventListener(ServerEvent.SERVER_IOERROR, _arg1.onReportIOError); _local4.scoreReport(_local3); _local2 = true; Analytics.Instance.trackPage(((((((FlashVars.service + "flash/score/report?mode=") + _local3["mode"]) + "&score=") + _local3["score"]) + "&result=") + _local3["status"])); }; return (_local2); } public static function checkOldGame(_arg1:String, _arg2:String):Object{ var so:SharedObject; var game_string = _arg1; var player_id = _arg2; var report:Object; try { so = SharedObject.getLocal(game_string); if (((so.data.hasOwnProperty("player_id")) && ((so.data["player_id"] === player_id)))){ report = new Object(); report["mode"] = so.data["mode"]; report["status"] = ARG_FORFEIT; report["score"] = 0; report["score2"] = 0; report["games_played"] = 1; report["style_point_max"] = 0; report["difficulty"] = so.data["difficulty"]; so.clear(); }; } catch(error:Error) { trace(error.message); }; return (report); } public static function removeGame(_arg1:String):void{ var so:SharedObject; var game_string = _arg1; try { so = SharedObject.getLocal(game_string); so.clear(); } catch(error:Error) { trace(error.message); }; } public static function writeGame(_arg1:String, _arg2:String, _arg3:String, _arg4:int):void{ var so:SharedObject; var now:Date; var game_string = _arg1; var player_id = _arg2; var game_mode = _arg3; var difficulty = _arg4; try { so = SharedObject.getLocal(game_string); so.setProperty("player_id", player_id); so.setProperty("mode", game_mode); so.setProperty("difficulty", difficulty); now = new Date(); so.setProperty("timestamp", now.time); so.flush(); } catch(error:Error) { trace(error.message); }; } public static function makeGameString(_arg1:String):String{ var _local2:String = ("snood_game_" + _arg1); return (_local2); } } }//package menucode
Section 219
//GameSetup (menucode.GameSetup) package menucode { import gamecode.*; public class GameSetup { public static const LIVEMODE_RANDOM_GAME:int = 0; public static const LIVEMODE_NEW_GAME:int = 1; public static const LIVEMODE_JOIN_GAME:int = 2; public static const LIVE_SOURCE_FRIEND:String = "friend"; public static const LIVE_SOURCE_ROOM:String = "room"; public static const LIVE_SOURCE_RANDOM:String = "random"; public static const FEATURE_PRO:String = "pro"; public static const FEATURE_STORY:String = "story"; public static const FEATURE_TIME_ATTACK:String = "time_attack"; public static const FEATURE_PUZZLE:String = "puzzle"; public static const FEATURE_NO_ADS:String = "no_ads"; public static var instructionsType:String = null; public static var instructionsList:Array = new Array(GameModeEnum.GAME_MODE_MAX); public static var classicSnoods:Boolean = false; public static var admin:Boolean = false; public static var startDifficulty:int; public static var difficulty:int; public static var gameMode:int; public static var liveMode:int; public static var gameType:int; public static var rounds:int; public static var isNetwork:Boolean; public static var playerIds:Array = null; public static var localPlayerId:int; public static var masterPlayerId:int; public static var seed:int; public static var challengeId:String = null; public static var opponentId:String = null; public static var liveId:String = null; public static var liveURL:String = null; public static var liveGameSource:String = null; public static var pro:Boolean = false; public static var practice:Boolean = false; public static var features:Array = null; public static var monkeyPoints:int; public static function hasFeature(_arg1:String):Boolean{ if (GameSetup.features == null){ return (false); }; var _local2:Boolean; var _local3:int; while (_local3 < GameSetup.features.length) { if (GameSetup.features[_local3] == _arg1){ _local2 = true; break; }; _local3++; }; return (_local2); } public static function addFeature(_arg1:String):void{ if (GameSetup.features == null){ GameSetup.features = new Array(); }; GameSetup.features.push(_arg1); } } }//package menucode
Section 220
//MenuBackground (menucode.MenuBackground) package menucode { import flash.display.*; import flash.geom.*; public class MenuBackground extends MovieClip { private var stars:BitmapData; private var blueNebula:BitmapData; private var greenNebula:BitmapData; private var redNebula:BitmapData; private var skyData:BitmapData; private var clipRect:Rectangle; private var scrollPos:Number;// = 0 private var scrollMatrix:Matrix; private var rot:Number;// = 0 private var scl:Number; public function MenuBackground(){ scrollMatrix = new Matrix(1, 0, 0, 1, 0, 0); super(); stars = new Stars(0x0200, 0x0100); blueNebula = new BlueNebula(64, 64); greenNebula = new GreenNebula(64, 64); redNebula = new RedNebula(64, 64); resize(new Rectangle(0, 0, 645, 500)); } public function resize(_arg1:Rectangle):void{ var _local2:Matrix; clipRect = _arg1; scl = Math.max((_arg1.width / 645), (_arg1.height / 500)); skyData = new BitmapData(_arg1.width, (_arg1.height * 2), false, 0); _local2 = new Matrix((_arg1.width / stars.width), 0, 0, (_arg1.height / stars.height), 0, 0); skyData.draw(stars, _local2, null, null, null, true); _local2.ty = _arg1.height; skyData.draw(stars, _local2, null, null, null, true); } function destroy():void{ if (stars){ stars.dispose(); }; if (blueNebula){ blueNebula.dispose(); }; if (greenNebula){ greenNebula.dispose(); }; if (redNebula){ redNebula.dispose(); }; if (skyData){ skyData.dispose(); }; } function update(_arg1:int):void{ scrollPos = ((scrollPos + (_arg1 / 60000)) % 1); scrollMatrix.ty = (scrollPos * -(clipRect.height)); rot = ((rot + (_arg1 / 40000)) % 1); } function draw(_arg1:BitmapData):void{ var _local2:Matrix = new Matrix(); _arg1.draw(skyData, scrollMatrix, null, null, clipRect, true); _local2.identity(); _local2.translate(-32, -32); _local2.rotate(((rot * Math.PI) * 2)); _local2.scale((scl * (1500 / 64)), (scl * (1500 / 64))); _local2.translate((450 * scl), (170 * scl)); _arg1.draw(greenNebula, _local2, null, BlendMode.NORMAL, clipRect, true); _local2.identity(); _local2.translate(-32, -32); _local2.rotate(((rot * Math.PI) * 2)); _local2.scale((scl * (1100 / 64)), (scl * (1100 / 64))); _local2.translate((((rot * 2000) - 550) * scl), (170 * scl)); _arg1.draw(redNebula, _local2, null, BlendMode.NORMAL, clipRect, true); _local2.identity(); _local2.translate(-32, -32); _local2.rotate(((rot * Math.PI) * -2)); _local2.scale((scl * (0x0400 / 64)), (scl * (0x0400 / 64))); _local2.translate((450 * scl), (170 * scl)); _arg1.draw(blueNebula, _local2, null, BlendMode.NORMAL, clipRect, true); } } }//package menucode
Section 221
//MenuComm (menucode.MenuComm) package menucode { import com.rkg.media.*; import com.rkg.display.*; public class MenuComm { public var onGameComplete:Function;// = null public var soundManager:SoundManager;// = null public var consoleSprite:ConsoleSprite;// = null public var seed:uint;// = 1 } }//package menucode
Section 222
//MenuLive (menucode.MenuLive) package menucode { import flash.events.*; import livecode.*; import gamecode.*; import flash.ui.*; public class MenuLive { public var smartFoxManager:SmartFoxManager;// = null protected var mCommand:int;// = 0 public var mCommandState:int;// = 0 public var mAcceptChallengeRoomId:int;// = -1 protected var hasSetUserVariables:Boolean;// = false public static const COMMAND_NONE:int = 0; public static const COMMAND_LOGIN_TO_LOBBY:int = 1; public static const COMMAND_ISSUE_CHALLENGE:int = 2; public static const COMMAND_ACCEPT_CHALLENGE:int = 3; private static var sInstance:MenuLive = null; public function MenuLive(){ if (sInstance != null){ throw (new Error("MenuLive is a singleton, already instantiated")); }; } public function init(_arg1:SmartFoxManager):void{ smartFoxManager = _arg1; smartFoxManager.handleConfigLoadSuccess = this.handleConfigLoadSuccess; smartFoxManager.handleDenyChallengeMessage = this.handleDenyChallengeMessage; smartFoxManager.handleChallengeMessage = this.handleChallengeMessage; smartFoxManager.handleReadyToPlayMessage = this.handleReadyToPlayMessage; smartFoxManager.handleOnJoinRoomError = this.handleOnJoinRoomError; smartFoxManager.handleCreateRoomError = this.handleCreateRoomError; smartFoxManager.isMultiplayerGame = this.isMultiplayerGame; smartFoxManager.getGameMode = this.getGameMode; smartFoxManager.getDifficulty = this.getDifficulty; smartFoxManager.isPuzzleGame = this.isPuzzleGame; smartFoxManager.setGameSeed = this.setGameSeed; } public function isLoggedIn():Boolean{ return (smartFoxManager.isLoggedIn); } private function isMultiplayerGame():Boolean{ return (Boolean((GameSetup.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER))); } private function getGameMode():int{ return (GameSetup.gameMode); } private function getDifficulty():int{ return (GameSetup.startDifficulty); } private function isPuzzleGame():Boolean{ return (Boolean((GameSetup.gameMode == GameModeEnum.GAME_MODE_PUZZLE))); } private function handleConfigLoadSuccess():void{ } private function setGameSeed(_arg1:int):void{ GameSetup.seed = _arg1; } private function handleChallengeMessage(_arg1:String):void{ var _local2:Array; if (((((!(smartFoxManager.isInGame)) && (!(smartFoxManager.isInMatch)))) && ((smartFoxManager.personThatChallengedMe == "")))){ _local2 = _arg1.split(","); if (_local2.length == 4){ smartFoxManager.personThatChallengedMe = _local2[0]; smartFoxManager.userIdThatChallengedMe = _local2[1]; GameSetup.gameMode = _local2[2]; GameSetup.startDifficulty = _local2[3]; GameSetup.difficulty = _local2[3]; }; }; } private function handleDenyChallengeMessage(_arg1:String):void{ if (_arg1.localeCompare(smartFoxManager.nameOfPersonIAmCurrentlyChallenging) == 0){ smartFoxManager.cancelChallenge(); }; } public function handleReadyToPlayMessage(_arg1:String):void{ smartFoxManager.opponentReadyToPlay = true; smartFoxManager.opponentTookTooLongInGame = false; smartFoxManager.opponentHasNotAcceptedTimer.reset(); smartFoxManager.opponentHasNotAcceptedInGameTimer.reset(); if (MenuMain.Instance.isState(MenuMain.STATE_LIVE_WAITING_REMATCH)){ MenuMain.Instance.requestState(MenuMain.STATE_PLAY); }; } public function yesToRematch(_arg1:Event):void{ if (MenuMain.Instance.isState(MenuMain.STATE_SCORE_SUMMARY)){ MenuMain.Instance.Pages[MenuMain.SCORE_PAGE].requestState(ScorePage.STATE_EXIT_REMATCH); }; } public function noToRematch(_arg1:Event):void{ } public function yesToSingleplayer(_arg1:Event):void{ endSession(); MenuMain.Instance.yesToSingleplayer(); } public function noToSingleplayer(_arg1:Event):void{ endSession(); MenuMain.Instance.noToSingleplayer(); } public function handleOnJoinRoomError():void{ var _local1 = "The game you are trying to join is no longer available"; var _local2:OkPopup = new OkPopup(_local1); _local2.addEventListener(MouseEvent.CLICK, handleOnJoinRoomErrorOK); } public function handleOnJoinRoomErrorOK(_arg1:MouseEvent):void{ endSession(); MenuMain.Instance.requestState(MenuMain.STATE_TITLE_MENU); } public function handleCreateRoomError(_arg1):void{ } public function loginToLobby():Boolean{ var _local1:Boolean; if ((((((mCommand == COMMAND_NONE)) && (!((FlashVars.player_id == null))))) && ((smartFoxManager.isLoggedIn == false)))){ mCommand = COMMAND_LOGIN_TO_LOBBY; mCommandState = 0; _local1 = true; }; return (_local1); } public function endSession():Boolean{ smartFoxManager.needToEndSession = true; mCommandState = 0; mCommand = COMMAND_NONE; return (true); } public function challenge(_arg1:String):Boolean{ var _local2:Boolean; if ((((mCommand == COMMAND_NONE)) && ((smartFoxManager.isLoggedIn == true)))){ smartFoxManager.challengeBuddy(_arg1); mCommand = COMMAND_ISSUE_CHALLENGE; mCommandState = 0; _local2 = true; }; return (_local2); } public function acceptChallenge():Boolean{ var _local1:Boolean; if (mCommand == COMMAND_NONE){ mAcceptChallengeRoomId = parseInt(GameSetup.liveId); smartFoxManager.personThatChallengedMeRoomId = mAcceptChallengeRoomId; mCommand = COMMAND_ACCEPT_CHALLENGE; mCommandState = 0; _local1 = true; }; return (_local1); } public function startGame():Boolean{ var _local1:Boolean; if (mCommand == COMMAND_NONE){ smartFoxManager.onGameStarted(); mCommand = COMMAND_NONE; mCommandState = 0; _local1 = true; }; return (_local1); } public function parseLiveId(_arg1:String):Object{ var _local2:Object = new Object(); var _local3:Array = _arg1.split(":"); _local2.gameMode = _local3[0]; _local2.difficulty = _local3[1]; _local2.roomId = _local3[2]; return (_local2); } public function parseRoomIdForOpponentId(_arg1:String):String{ var _local2:String = FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length); var _local3:String = _arg1; var _local4:String = _local3.substring(0, (_local3.length - _local2.length)); return (_local4); } public function updateChecks():void{ var _local1:String; var _local2:YesNoPopup; if ((((smartFoxManager.needToShowDisconnectedPopup == true)) && ((smartFoxManager.hasShownDisconnectedPopup == false)))){ if (!smartFoxManager.isLoggedIn){ smartFoxManager.needToShowDisconnectedPopup = false; smartFoxManager.hasShownDisconnectedPopup = false; } else { if (MenuMain.Instance.isState(MenuMain.STATE_SCORE_SUMMARY) == false){ _local1 = "Your opponent has left the game. Do you want to continue as single player?"; _local2 = new YesNoPopup(_local1); _local2.addEventListener(YesNoPopup.POPUP_YES_EVENT, yesToSingleplayer); _local2.addEventListener(YesNoPopup.POPUP_NO_EVENT, noToSingleplayer); Mouse.show(); smartFoxManager.needToShowDisconnectedPopup = false; smartFoxManager.hasShownDisconnectedPopup = true; }; }; }; } public function update():void{ if (smartFoxManager == null){ return; }; updateChecks(); switch (mCommand){ case COMMAND_LOGIN_TO_LOBBY: updateLoginToLobby(); break; case COMMAND_ISSUE_CHALLENGE: updateIssueChallenge(); break; case COMMAND_ACCEPT_CHALLENGE: updateAcceptChallenge(); break; }; } public function updateLoginToLobby():void{ var _local1:String; switch (mCommandState){ case 0: smartFoxManager.startSession(); mCommandState = 1; break; case 1: if (smartFoxManager.isConnected == true){ _local1 = FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length); smartFoxManager.login(_local1); mCommandState = 2; }; break; case 2: if (smartFoxManager.isLoggedIn == true){ mCommandState = 3; }; break; case 3: if (smartFoxManager.isRoomListUpdated == true){ mCommandState = 4; }; break; case 4: if (smartFoxManager.clearedBuddyList == true){ smartFoxManager.smartFox.autoJoin(); mCommandState = 5; }; break; case 5: if (smartFoxManager.lastRoom != -1){ mCommandState = 6; }; break; case 6: mCommand = COMMAND_NONE; break; }; } public function updateIssueChallenge():void{ switch (mCommandState){ case 0: if ((((smartFoxManager.hasCreatedChallengeRoom == true)) && (!((smartFoxManager.smartFox.activeRoomId == SmartFoxManager.LOBBY_ROOM_ID))))){ GameSetup.liveId = smartFoxManager.smartFox.activeRoomId.toString(); smartFoxManager.initUserVariables(); mCommandState = 1; }; break; case 1: if (((!((smartFoxManager.opponentName == null))) && ((smartFoxManager.opponentName.length > 0)))){ MenuMain.Instance.requestState(MenuMain.STATE_ANNOUNCE_LIVE); mCommand = COMMAND_NONE; }; break; }; } public function updateAcceptChallenge():void{ var version:int; try { if (mCommandState < 6){ updateLoginToLobby(); } else { if (smartFoxManager.smartFox.activeRoomId == SmartFoxManager.LOBBY_ROOM_ID){ smartFoxManager.myGameId = 2; hasSetUserVariables = false; smartFoxManager.joinRoomOfPersonThatChallengedMe(); } else { if (smartFoxManager.smartFox.activeRoomId == mAcceptChallengeRoomId){ if (hasSetUserVariables == false){ smartFoxManager.initUserVariables(); hasSetUserVariables = true; }; version = smartFoxManager.getOpponentSmartFoxManagerVersion(); if ((((version < SmartFoxManager.SNOOD_SMARTFOXMANAGER_FLASH_COMPATIBLE_VERSION)) || (!((GameSetup.seed == 0))))){ GameSetup.opponentId = (Constants.FACEBOOK_PREFIX + smartFoxManager.getOpponentName()); if (version < SmartFoxManager.SNOOD_SMARTFOXMANAGER_FLASH_COMPATIBLE_VERSION){ if (GameSetup.gameMode == GameModeEnum.GAME_MODE_PUZZLE){ if (GameSetup.seed != 0){ smartFoxManager.onGameStarted(); MenuMain.Instance.requestState(MenuMain.STATE_PLAY); mCommand = COMMAND_NONE; }; } else { smartFoxManager.onGameStarted(); MenuMain.Instance.requestState(MenuMain.STATE_PLAY); mCommand = COMMAND_NONE; }; } else { MenuMain.Instance.requestState(MenuMain.STATE_ANNOUNCE_LIVE); mCommand = COMMAND_NONE; }; }; }; }; }; } catch(e:Error) { trace(("MenuLive.updateAcceptChallenge error=" + e.message)); }; } public static function get Instance():MenuLive{ if (sInstance == null){ sInstance = new (MenuLive); }; return (sInstance); } } }//package menucode
Section 223
//MenuMain (menucode.MenuMain) package menucode { import fl.controls.*; import flash.display.*; import flash.text.*; import flash.events.*; import com.rkg.media.*; import flash.system.*; import livecode.*; import com.rkg.net.*; import flash.geom.*; import com.demonsters.debugger.*; import menucode.facebook.*; import flash.net.*; import flash.utils.*; import gamecode.*; import com.rkg.display.*; import menucode.titlescreen.*; import com.rkg.ad.*; import com.mindjolt.*; import com.rkg.firebug.*; import com.rkg.facebook.*; import net.hires.debug.*; import flash.ui.*; public class MenuMain extends MovieClip { public var LoadingPage:UILoading; protected var mDebugStats:Stats;// = null protected var mLastFrame:int; protected var mPages:Array; protected var mCurrentPage:int; protected var mState:int;// = -1 protected var mStateParams:Object;// = null protected var mNextState:int;// = -1 protected var mNextStateParams:Object;// = null protected var mEventPop:EventPopup;// = null protected var mEventPopupDone:Boolean;// = false protected var mPrefs:SharedObject;// = null protected var mindjoltOnTop;// = true protected var mindjoltComplete;// = false public var mc_mindjolt:MovieClip; public var mRetry:Boolean;// = false public var mRematch:Boolean;// = false public var mDeactivated:Boolean;// = false public var mMouseOut:Boolean;// = false public var mStageFocus; public var OKErrorPopup:MovieClip;// = null public var OKJakePopup:MovieClip;// = null public var mInstructions:GameInstructions;// = null public var FriendSelectPage:MovieClip; public var RankingPage:UIRanking; public var controlpanel:ControlPanel; public var OKPopup:UIPopup; public var YesNoPopupObject:UIYesNoPopup; public var Scoring1P:MovieClip; public var Scoring2P:MovieClip; public var ScoringWin:MovieClip; public var ScoringLose:MovieClip; public var ChallengesPage:MovieClip; public var mCanvasBitmapData:BitmapData;// = null public var mCanvasBitmap:Bitmap;// = null public var mMenuBackground:MenuBackground;// = null public var mTitleMenu:UITitleMenu;// = null protected var mFirstInitialized:Boolean;// = false protected var mHideMonkeyLoader:Boolean;// = false protected var mMonkeyLoaderHidden:Boolean;// = false protected var mSkipAdvertisement:Boolean;// = false protected var mAdSavedVolume:Number; public var mContinuePlay:Boolean;// = false public var mPopupPostinvite:PopupPostinvite;// = null public var mPopupLive:PopupLive;// = null public var mPopupLiveTimer:Number;// = 0 public static const STATE_INVALID:int = -1; public static const STATE_INIT:int = 0; public static const STATE_TITLE_MENU:int = 1; public static const STATE_EVENT_POPUP:int = 2; public static const STATE_PLAY:int = 3; public static const STATE_CHALLENGE_SUMMARY:int = 4; public static const STATE_ADVERTISE:int = 5; public static const STATE_LIVE_WAITING:int = 6; public static const STATE_SELECT_FRIEND:int = 7; public static const STATE_SETUP_CHALLENGE:int = 8; public static const STATE_RESPOND_CHALLENGE:int = 9; public static const STATE_POST_INVITE:int = 10; public static const STATE_RANKING:int = 11; public static const STATE_INSTRUCTIONS:int = 12; public static const STATE_LIVE_WAITING_REMATCH:int = 13; public static const STATE_LIVE_SELECT_FRIEND:int = 14; public static const STATE_RESPOND_LIVE:int = 15; public static const STATE_LIVE_READY:int = 16; public static const STATE_ANNOUNCE_LIVE:int = 17; public static const STATE_ANNOUNCE_CHALLENGE:int = 18; public static const STATE_SCORE_SUMMARY:int = 19; public static const STATE_CHALLENGE_LIST:int = 20; public static const INSERT_PAGE_LAYER:int = 3; public static const INSERT_PAGE_ON_TOP:int = -1; public static const INVALID_PAGE:int = -1; public static const GAME_PAGE:int = 0; public static const CHALLENGE_PAGE:int = 1; public static const PICKFRIEND_PAGE:int = 2; public static const RANKING_PAGE:int = 3; public static const CHALLENGE_LIST_PAGE:int = 4; public static const SCORE_PAGE:int = 5; private static const UITM_STATE_STORY:String = "story"; private static const UITM_STATE_CLASSIC:String = "classic"; private static const UITM_STATE_TIMEATTACK:String = "timeattack"; private static const UITM_STATE_PUZZLE:String = "puzzle"; private static const UITM_STATE_CHALLENGES:String = "challenges"; private static const UITM_STATE_RANKINGS:String = "rankings"; private static const UITM_STATE_FEATURESTORE:String = "featurestore"; private static const UITM_MODE_SINGLEPLAYER:String = "singleplayer"; private static const UITM_MODE_LIVE:String = "live"; private static const UITM_MODE_CHALLENGE:String = "challenge"; private static const UITM_INSTRUCTIONS_ALL:String = "all"; private static const UITM_INSTRUCTIONS_NONE:String = "none"; private static const UITM_INSTRUCTIONS_MODE:String = "mode"; private static const UITM_SNOODS_NEW:String = "new_snoods"; private static const UITM_SNOODS_CLASSIC:String = "classic_snoods"; private static const UITM_DIFFICULTY_CHILD:String = "child"; private static const UITM_DIFFICULTY_EASY:String = "easy"; private static const UITM_DIFFICULTY_MEDIUM:String = "medium"; private static const UITM_DIFFICULTY_HARD:String = "hard"; private static const UITM_DIFFICULTY_EVIL:String = "evil"; private static const UITM_DIFFICULTY_STRINGS:Array = [UITM_DIFFICULTY_CHILD, UITM_DIFFICULTY_EASY, UITM_DIFFICULTY_MEDIUM, UITM_DIFFICULTY_HARD, UITM_DIFFICULTY_EVIL]; public static var POPUP_LIVE_TIME:Number = 120; protected static var mInstance:MenuMain = null; public function MenuMain(){ trace("[MenuMain]"); MonsterDebugger.initialize(this); mInstance = this; mLastFrame = getTimer(); this.stop(); this.addEventListener(Event.ENTER_FRAME, this.enterFrame); } public function initCanvas():void{ mCanvasBitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, false, 0); mCanvasBitmap = new Bitmap(mCanvasBitmapData); } public function get Pages():Array{ return (mPages); } public function enlist(_arg1:DisplayObjectContainer, _arg2:DisplayObject){ if (((!((_arg1 == null))) && (!((_arg2 == null))))){ _arg1.addChild(_arg2); }; } public function enlistAtObject(_arg1:DisplayObjectContainer, _arg2:DisplayObject, _arg3:DisplayObject):void{ var _local4:int; if (((((!((_arg1 == null))) && (!((_arg2 == null))))) && (!((_arg3 == null))))){ _local4 = _arg1.getChildIndex(_arg2); if (_local4 >= 0){ _arg1.addChildAt(_arg3, _local4); } else { _arg1.addChild(_arg3); }; }; } public function delist(_arg1:DisplayObject){ if (((!((_arg1 == null))) && (!((_arg1.parent == null))))){ _arg1.parent.removeChild(_arg1); }; } public function delistAll():void{ while (this.numChildren > 0) { this.removeChildAt(0); }; } public function onPopupPostinviteContinue(_arg1:MouseEvent):void{ delist(mPopupPostinvite); requestState(STATE_EVENT_POPUP); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function onPopupPostinviteInvite(_arg1:MouseEvent):void{ SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function liveSetupSelectAnotherOpponent():void{ GameSetup.liveId = null; GameSetup.liveGameSource = GameSetup.LIVE_SOURCE_FRIEND; requestState(STATE_LIVE_SELECT_FRIEND); } public function liveSetupSingleplayer():void{ if (MenuLive.Instance.isLoggedIn()){ MenuLive.Instance.endSession(); }; GameSetup.gameType = GameTypeEnum.GAME_TYPE_SINGLEPLAYER; requestState(STATE_PLAY); } public function onLiveSelectAnotherOpponent(_arg1:MouseEvent):void{ sendLiveCancel(liveSetupSelectAnotherOpponent); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function onLiveResend(_arg1:MouseEvent):void{ var _local2:ServerCom; var _local3:String; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ _local2 = new ServerCom(FlashVars.service, FlashVars.player_id); _local2.addEventListener(ServerEvent.SERVER_REPLY, onLiveRemindReply); _local2.addEventListener(ServerEvent.SERVER_ERROR, onLiveRemindReplyError); _local2.addEventListener(ServerEvent.SERVER_IOERROR, onLiveRemindIOError); _local3 = GameReport.makeGameMode(GameSetup.gameMode, GameSetup.gameType); _local2.challengeNotifyLiveReminder(GameSetup.opponentId, GameSetup.liveId, _local3); }; SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function onLiveRemindReply(_arg1:ServerEvent):void{ new OkPopup("A reminder of this game has been sent"); mPopupLive.gotoAndPlay("waiting"); mPopupLiveTimer = POPUP_LIVE_TIME; } public function onLiveRemindReplyError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = ("There was an error with sending a reminder for this game. Please try again." + _arg1.replyObject); new OkErrorPopup(); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=live_remind")); } public function onLiveRemindIOError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = ("There was an IOError when sending a reminder for this game. Please try again." + _arg1.replyObject); new OkErrorPopup(); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=live_remind")); } public function onLiveSingleplayer(_arg1:MouseEvent):void{ sendLiveCancel(liveSetupSingleplayer); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function sendLiveCancel(_arg1:Function):void{ var _local2:ServerCom; var _local3:String; if (MenuLive.Instance.isLoggedIn()){ MenuLive.Instance.endSession(); }; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ _local2 = new ServerCom(FlashVars.service, FlashVars.player_id); _local2.addEventListener(ServerEvent.SERVER_REPLY, onLiveCancelReply); _local2.addEventListener(ServerEvent.SERVER_ERROR, onLiveCancelReplyError); _local2.addEventListener(ServerEvent.SERVER_IOERROR, onLiveCancelIOError); _local3 = GameReport.makeGameMode(GameSetup.gameMode, GameSetup.gameType); _local2.extras = _arg1; _local2.challengeNotifyLiveCancel(GameSetup.opponentId, GameSetup.liveId, _local3); }; } public function onLiveCancelReply(_arg1:ServerEvent):void{ var _local2:* = new OkPopup("Your cancellation of live game has been sent."); _local2.data = _arg1.extras; _local2.addEventListener(MouseEvent.CLICK, onOKLiveCancel); } public function onLiveCancelReplyError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = ("There was an error in sending cancellation." + _arg1.replyObject); var _local2:* = new OkErrorPopup(); _local2.data = _arg1.extras; _local2.addEventListener(MouseEvent.CLICK, onOKLiveCancel); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=live_cancel")); } public function onLiveCancelIOError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = ("There was an IOError in sending cancellation." + _arg1.replyObject); var _local2:* = new OkErrorPopup(); _local2.data = _arg1.extras; _local2.addEventListener(MouseEvent.CLICK, onOKLiveCancel); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=live_cancel")); } public function onOKLiveCancel(_arg1:MouseEvent):void{ var _local2:* = _arg1.target.data; _local2(); } public function loadTitleMenu():void{ trace("[MenuMain][loadTitleMeu]"); mTitleMenu = new UITitleMenu(); this.addChild(mTitleMenu); mTitleMenu.FlashVars = FlashVars; mTitleMenu.addEventListener(UITitleMenuEvent.EVENT, onTitleMenuEvent); mTitleMenu.addEventListener(UITitleMenuUIEvent.PAGE_IN, onTitleMenuPageIn); mTitleMenu.addEventListener(UITitleMenuUIEvent.PAGE_OUT, onTitleMenuPageOut); mTitleMenu.addEventListener(UITitleMenuUIEvent.CLICK, onTitleMenuButtonClick); mTitleMenu.addEventListener(UITitleMenuUIEvent.ADD_FEATURE, onTitleMenuAddFeature); hideTitleMenu(); } public function isTitleMenuReady():Boolean{ return (true); } public function loadMenuBackground():void{ mMenuBackground = new MenuBackground(); this.addChildAt(mMenuBackground, 0); } public function updateMenuBackground(_arg1:int):void{ if (mCanvasBitmapData == null){ return; }; mMenuBackground.update(_arg1); mMenuBackground.draw(mCanvasBitmapData); } protected function playDelayedAudio(_arg1:TimerEvent):void{ _arg1.target.removeEventListener(TimerEvent.TIMER, playDelayedAudio); SoundManager.Instance.play(_arg1.target.extra); } protected function onTitleMenuPageIn(_arg1:UITitleMenuUIEvent):void{ } protected function onTitleMenuPageOut(_arg1:UITitleMenuUIEvent):void{ var _local6:TimerEx; var _local2:Array = [Constants.SOUND_OUT01, Constants.SOUND_OUT02]; var _local3:int = (_arg1.data as int); var _local4:int; var _local5:int; while (_local5 < _local3) { if (_local5 == 0){ SoundManager.Instance.play(_local2[_local4]); } else { _local6 = new TimerEx((_local5 * 50)); _local6.extra = _local2[_local4]; _local6.addEventListener(TimerEvent.TIMER, playDelayedAudio); _local6.start(); }; _local4 = (((_local4 + 1))<_local2.length) ? (_local4 + 1) : 0; _local5++; }; } protected function onTitleMenuButtonClick(_arg1:UITitleMenuUIEvent):void{ var _local2:String; if (_arg1.data != null){ switch (_arg1.data){ case UITM_INSTRUCTIONS_ALL: case UITM_INSTRUCTIONS_NONE: case UITM_INSTRUCTIONS_MODE: GameSetup.instructionsType = (_arg1.data as String); break; case UITM_SNOODS_NEW: GameSetup.classicSnoods = false; break; case UITM_SNOODS_CLASSIC: GameSetup.classicSnoods = true; break; case UITM_DIFFICULTY_CHILD: case UITM_DIFFICULTY_EASY: case UITM_DIFFICULTY_MEDIUM: case UITM_DIFFICULTY_HARD: case UITM_DIFFICULTY_EVIL: GameSetup.startDifficulty = getDifficultyEnum((_arg1.data as String)); break; }; if (mPrefs.data["instructions_pref"] != GameSetup.instructionsType){ setInstructionsPrefType(GameSetup.instructionsType); }; if (mPrefs.data["classic_snoods"] != GameSetup.classicSnoods){ setClassicSnoodsPref(GameSetup.classicSnoods); }; if (mPrefs.data["difficulty"] != GameSetup.startDifficulty){ setDifficultyPref(GameSetup.startDifficulty); }; _local2 = (_arg1.data as String); Analytics.Instance.trackPage(((FlashVars.service + "flash/menu?button=") + _local2)); }; SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } protected function onTitleMenuAddFeature(_arg1:UITitleMenuUIEvent):void{ var _local2:String; var _local3:ServerCom; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ Waiting.show(Constants.UPDATING); mTitleMenu.mouseEnabled = false; mTitleMenu.mouseChildren = false; _local2 = (_arg1.data as String); _local3 = new ServerCom(FlashVars.service, FlashVars.player_id); _local3.extras = _local2; _local3.addEventListener(ServerEvent.SERVER_REPLY, onAddFeatureReply); _local3.addEventListener(ServerEvent.SERVER_ERROR, onAddFeatureReplyError); _local3.addEventListener(ServerEvent.SERVER_IOERROR, onAddFeatureIOError); _local3.modifyFeature(_local2, "add"); Analytics.Instance.trackPage(((FlashVars.service + "flash/menu?button=buy_") + _local2)); }; } private function onAddFeatureReply(_arg1:ServerEvent):void{ var _local4:EventPopup; var _local5:Array; var _local6:int; var _local7:Object; Waiting.hide(); mTitleMenu.mouseEnabled = true; mTitleMenu.mouseChildren = true; var _local2:int = parseInt(_arg1.replyObject.point_total); GameSetup.monkeyPoints = _local2; mTitleMenu.setMonkeyPoints(_local2); var _local3:String = (_arg1.target.extras as String); switch (_local3){ case GameSetup.FEATURE_TIME_ATTACK: mTitleMenu.setProTimeattack(true); break; case GameSetup.FEATURE_NO_ADS: mTitleMenu.setProNoads(true); break; case GameSetup.FEATURE_PUZZLE: mTitleMenu.setProPuzzle(true); break; default: trace((("add " + _local3) + " not supported")); break; }; GameSetup.features = _arg1.replyObject.features; if (_arg1.replyObject.hasOwnProperty("events")){ _local4 = new EventPopup(); _local5 = _arg1.replyObject["events"]; _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6]; _local4.doEventFeed(_local7, "open"); _local6++; }; }; } private function onAddFeatureReplyError(_arg1:ServerEvent):void{ Waiting.hide(); mTitleMenu.mouseEnabled = true; mTitleMenu.mouseChildren = true; new OkPopup("There was an Error adding feature"); trace("onAddFeatureReplyError"); var _local2:String = (_arg1.target.extras as String); Analytics.Instance.trackPage(((FlashVars.service + "flash/error/network/backend?type=buy_") + _local2)); } private function onAddFeatureIOError(_arg1:ServerEvent):void{ Waiting.hide(); mTitleMenu.mouseEnabled = true; mTitleMenu.mouseChildren = true; new OkPopup("There was an IOError adding feature"); trace("onAddFeatureIOError"); var _local2:String = (_arg1.target.extras as String); Analytics.Instance.trackPage(((FlashVars.service + "flash/error/network/timeout?type=buy_") + _local2)); } protected function getDifficultyEnum(_arg1:String):int{ return (UITM_DIFFICULTY_STRINGS.indexOf(_arg1)); } protected function onTitleMenuEvent(_arg1:UITitleMenuEvent):void{ var _local2:String = _arg1.state; var _local3:String = _arg1.mode; var _local4:String = _arg1.instructions; var _local5:String = _arg1.snoods; var _local6:String = _arg1.difficulty; GameSetup.instructionsType = _local4; GameSetup.startDifficulty = getDifficultyEnum(_local6); GameSetup.difficulty = GameSetup.startDifficulty; switch (_local5){ case UITM_SNOODS_NEW: GameSetup.classicSnoods = false; break; case UITM_SNOODS_CLASSIC: GameSetup.classicSnoods = true; break; }; switch (_local3){ case UITM_MODE_SINGLEPLAYER: GameSetup.gameType = GameTypeEnum.GAME_TYPE_SINGLEPLAYER; break; case UITM_MODE_LIVE: GameSetup.gameType = GameTypeEnum.GAME_TYPE_MULTIPLAYER; break; case UITM_MODE_CHALLENGE: GameSetup.gameType = GameTypeEnum.GAME_TYPE_CHALLENGE; break; }; switch (_local2){ case UITM_STATE_STORY: GameSetup.gameMode = GameModeEnum.GAME_MODE_STORY; GameSetup.rounds = 1; setupGame(); hideTitleMenu(); break; case UITM_STATE_CLASSIC: GameSetup.gameMode = GameModeEnum.GAME_MODE_CLASSIC; GameSetup.rounds = 1; setupGame(); hideTitleMenu(); break; case UITM_STATE_TIMEATTACK: GameSetup.gameMode = GameModeEnum.GAME_MODE_TIME_ATTACK; GameSetup.rounds = 1; setupGame(); hideTitleMenu(); break; case UITM_STATE_PUZZLE: GameSetup.gameMode = GameModeEnum.GAME_MODE_PUZZLE; GameSetup.rounds = 1; setupGame(); hideTitleMenu(); break; case UITM_STATE_CHALLENGES: requestState(STATE_CHALLENGE_LIST); break; case UITM_STATE_RANKINGS: requestState(STATE_RANKING); break; case UITM_STATE_FEATURESTORE: mTitleMenu.enterAt(3); break; }; } public function initFlashVars():void{ var _local1:Object = stage.loaderInfo.parameters; FlashVars.resource_path = "resource/"; if (_local1.hasOwnProperty("path")){ FlashVars.resource_path = _local1["path"]; }; if (_local1.hasOwnProperty("service")){ FlashVars.service = _local1["service"]; }; if (_local1.hasOwnProperty("ga_code")){ FlashVars.ga_code = _local1["ga_code"]; }; if (_local1.hasOwnProperty("remote_ip")){ FlashVars.remote_ip = _local1["remote_ip"]; }; if (_local1.hasOwnProperty("player_id")){ FlashVars.player_id = _local1["player_id"]; }; if (_local1.hasOwnProperty("mode")){ FlashVars.mode = _local1["mode"]; }; if (_local1.hasOwnProperty("challenge_id")){ FlashVars.challenge_id = _local1["challenge_id"]; }; if (_local1.hasOwnProperty("room_id")){ FlashVars.room_id = _local1["room_id"]; }; if (_local1.hasOwnProperty("seed")){ FlashVars.seed = parseInt(_local1["seed"]); }; if (_local1.hasOwnProperty("canvas_base_url")){ FlashVars.canvas_base_url = _local1["canvas_base_url"]; }; if (_local1.hasOwnProperty("rankings_tab")){ FlashVars.rankings_tab = _local1["rankings_tab"]; }; if (_local1.hasOwnProperty("challenge_user_id")){ FlashVars.challenge_user_id = _local1["challenge_user_id"]; }; if (_local1.hasOwnProperty("game_mode")){ FlashVars.game_mode = _local1["game_mode"]; }; if (_local1.hasOwnProperty("difficulty")){ FlashVars.difficulty = _local1["difficulty"]; }; } public function initSecurity():void{ Security.allowDomain("*"); } private function mindjoltLoad(){ trace("[MenuMain][mindjoltLoad]"); this.mindjoltComplete = true; Security.allowDomain("mindjolt.com"); MindJoltAPI.service.connect("GDXTDF1NVPOCMV9D", this, mindjoltConnected); MindJoltAPI.ad.showPreGameAd({clip:mc_mindjolt, ad_started:mindjoltAdStarted, ad_finished:mindjoltAdCompleted}); } public function mindjoltConnected(_arg1:Boolean){ trace(("[MenuMain][mindjoltConnected] " + _arg1)); this.visible = true; } protected function mindjoltAdStarted():void{ trace("[MenuMain][mindjoltAdCompleted]"); mindjoltOnTop = true; } protected function mindjoltAdCompleted():void{ trace("[MenuMain][mindjoltAdCompleted]"); mindjoltOnTop = false; } private function mindjoltClicked(_arg1:MouseEvent):void{ navigateToUrl(new URLRequest("http://www.mindjolt.com", "_tab")); } public function mindjoltGameOver():void{ trace("[MenuMain][mindjoltGameOver]"); showTitleMenu(3); } public function mindjoltBackToMain(){ trace("[MenuMain][mindjoltBackToMain]"); requestState(STATE_TITLE_MENU); } public function isState(_arg1:int):Boolean{ return (Boolean((_arg1 == mState))); } public function onStageMouseOut(_arg1:MouseEvent):void{ mMouseOut = true; } public function onStageLeave(_arg1:Event):void{ mMouseOut = true; } public function onStageMouseMove(_arg1:MouseEvent):void{ mMouseOut = false; } public function firstInit():Boolean{ trace("[MenuMain][firstInit]"); if (stage == null){ return (false); }; stage.addEventListener(Event.MOUSE_LEAVE, onStageLeave); stage.addEventListener(MouseEvent.MOUSE_MOVE, onStageMouseMove); mFirstInitialized = true; stage.scaleMode = StageScaleMode.NO_SCALE; mDebugStats = new Stats({bg:0x202020, fps:0xC0C0C0, ms:0x505050, mem:0x707070, memmax:0xA0A0A0}); initFlashVars(); initSecurity(); Console.enabled = true; initCanvas(); ServerCom.init(ServerCom.SN_SECRET1, ServerCom.SN_SECRET2); FriendPhoto.defaultPicSquare = ((FlashVars.resource_path + "q_silhouette.gif") + Constants.RESOURCE_VERSION); SoundManager.Instance.loadSounds(ApplicationDomain.currentDomain); loadTitleMenu(); loadMenuBackground(); Factory.Instance; ConsoleSprite.Instance.init(stage.stageWidth, stage.stageHeight); MenuLive.Instance.init(SmartFoxManager.Instance); StaticDesc.Instance; if (FlashVars.ga_code != null){ Analytics.Instance.init(this, FlashVars.ga_code); }; Waiting.Instance; OKErrorPopup = new UIProblemPopup(); OKJakePopup = new PopupDifficulty(); mPopupLive = new PopupLive(); mCurrentPage = INVALID_PAGE; initEventListeners(); initUIObjects(); requestState(STATE_INIT); return (true); } public function isConsoleOn():Boolean{ return (Boolean(!((ConsoleSprite.Instance.parent == null)))); } public function showConsole():void{ if (ConsoleSprite.Instance == null){ return; }; enlist(this, ConsoleSprite.Instance); } public function hideConsole():void{ if (ConsoleSprite.Instance.parent != null){ ConsoleSprite.Instance.parent.removeChild(ConsoleSprite.Instance); }; } public function enlistOkPopup():void{ enlist(this, OKPopup); } public function delistOkPopup():void{ delist(OKPopup); } public function enlistYesNoPopup():void{ enlist(this, YesNoPopupObject); } public function delistYesNoPopup():void{ delist(YesNoPopupObject); } public function showRankingDisplay():void{ enlist(this, RankingPage); gotoPage(RANKING_PAGE, INSERT_PAGE_ON_TOP); enlist(this, controlpanel); } public function showChallengeListDisplay():void{ enlist(this, ChallengesPage); enlist(this, mPages[CHALLENGE_LIST_PAGE]); } public function hideChallengeListDisplay():void{ delist(ChallengesPage); } public function showSelectGameModeDisplay(_arg1:int=1):void{ trace("[MenuMain][showSelectGameModeDisplay]"); if (_arg1 >= 1){ showTitleMenu(_arg1); }; } public function requestState(_arg1:int, _arg2:Object=null):Boolean{ trace("[MenuMain][requestState]"); mNextState = _arg1; mNextStateParams = _arg2; return (true); } public function exitState(_arg1:int, _arg2:Object):void{ switch (_arg1){ case STATE_INVALID: break; case STATE_INIT: break; case STATE_POST_INVITE: break; case STATE_EVENT_POPUP: cleanupEventPopup(); break; case STATE_TITLE_MENU: switch (mNextState){ case STATE_RANKING: case STATE_CHALLENGE_LIST: break; default: hideTitleMenu(); break; }; break; case STATE_LIVE_WAITING: delist(mPopupLive); break; case STATE_LIVE_WAITING_REMATCH: delist(mPopupLive); break; case STATE_LIVE_READY: break; case STATE_SELECT_FRIEND: delist(FriendSelectPage); break; case STATE_LIVE_SELECT_FRIEND: delist(FriendSelectPage); break; case STATE_INSTRUCTIONS: delist(mInstructions); break; case STATE_PLAY: switch (mNextState){ case STATE_SCORE_SUMMARY: break; default: break; }; break; case STATE_CHALLENGE_SUMMARY: PlayerManager.Instance.destroyPlayers(); break; case STATE_RANKING: mPages[RANKING_PAGE].clearDisplay(); delist(RankingPage); gotoPage(INVALID_PAGE); break; case STATE_CHALLENGE_LIST: hideChallengeListDisplay(); gotoPage(INVALID_PAGE); break; case STATE_SCORE_SUMMARY: mPages[SCORE_PAGE].hidePage(); break; default: break; }; if (((!((mState == STATE_INVALID))) || (!((mState == STATE_INIT))))){ enlist(this, controlpanel); }; } public function enterState(_arg1:int, _arg2:Object):void{ var _local3:int; var _local4:Boolean; var _local5:Boolean; var _local6:int; var _local7:int; var _local8:Object; var _local9:String; var _local10:String; trace(("[MenuMain][enterState] enter: " + _arg1)); switch (_arg1){ case STATE_INIT: initPages(); break; case STATE_POST_INVITE: if (mPopupPostinvite == null){ mPopupPostinvite = new PopupPostinvite(); mPopupPostinvite.continuebutton.addEventListener(MouseEvent.CLICK, onPopupPostinviteContinue); mPopupPostinvite.invitegroup.invitebutton.addEventListener(MouseEvent.CLICK, onPopupPostinviteInvite); }; enlist(this, mPopupPostinvite); break; case STATE_EVENT_POPUP: mEventPopupDone = false; _local4 = ((_arg2)==null) ? true : false; _local5 = getScoreWithCheckProgress(_local4); if (!_local5){ hideMonkeyLoader(); }; break; case STATE_TITLE_MENU: trace("[MenuMain][enterState] STATE_TITLE_MENU"); _local6 = 3; if (_arg2 != null){ _local6 = (_arg2 as int); } else { GameSetup.opponentId = null; }; showSelectGameModeDisplay(_local6); mTitleMenu.mouseChildren = true; break; case STATE_INSTRUCTIONS: trace("[MenuMain][enterState] STATE_INSTRUCTIONS"); if (mInstructions == null){ mInstructions = new GameInstructions(); mInstructions.instructions.showtoggle.addEventListener(MouseEvent.CLICK, onToggleInstructions); }; enlist(this, mInstructions); mInstructions.initToggle(Boolean((GameSetup.instructionsList[GameSetup.gameMode] == false))); mInstructions.start(); break; case STATE_PLAY: _local7 = GamePage.ENTER_START_GAME; if (mContinuePlay == true){ _local7 = GamePage.ENTER_CONTINUE_GAME; mContinuePlay = false; }; mPages[GAME_PAGE].enterPage(_local7, _arg2); gotoPage(GAME_PAGE); break; case STATE_LIVE_WAITING: mPopupLive.gotoAndPlay("waiting"); switch (GameSetup.liveGameSource){ case GameSetup.LIVE_SOURCE_FRIEND: mPopupLive.notification.visible = true; mPopupLive.timeoutgroup.ResendButton.visible = true; mPopupLiveTimer = POPUP_LIVE_TIME; break; case GameSetup.LIVE_SOURCE_RANDOM: mPopupLive.notification.visible = false; mPopupLive.timeoutgroup.ResendButton.visible = false; mPopupLiveTimer = POPUP_LIVE_TIME; break; }; enlist(this, mPopupLive); break; case STATE_LIVE_WAITING_REMATCH: mPopupLive.gotoAndPlay("waiting"); mPopupLive.notification.visible = false; mPopupLive.timeoutgroup.ResendButton.visible = false; mPopupLiveTimer = POPUP_LIVE_TIME; enlist(this, mPopupLive); break; case STATE_LIVE_READY: break; case STATE_SELECT_FRIEND: enlist(this, FriendSelectPage); FriendSelectPage.header1.visible = true; FriendSelectPage.header2.visible = false; mPages[PICKFRIEND_PAGE].enterPage(PickFriendPage.ENTER_INIT, null); gotoPage(PICKFRIEND_PAGE, (this.getChildIndex(FriendSelectPage) + 1)); break; case STATE_LIVE_SELECT_FRIEND: enlist(this, FriendSelectPage); FriendSelectPage.header1.visible = true; FriendSelectPage.header2.visible = false; mPages[PICKFRIEND_PAGE].enterPage(PickFriendPage.ENTER_INIT, {online:true, live:true}); gotoPage(PICKFRIEND_PAGE, (this.getChildIndex(FriendSelectPage) + 1)); Analytics.Instance.trackPage((FlashVars.service + "flash/menu?screen=pickfriend_live")); break; case STATE_SETUP_CHALLENGE: hideTitleMenu(); _local8 = null; if (mState != STATE_SELECT_FRIEND){ _local8 = new Object(); _local8["showVS"] = true; }; mPages[CHALLENGE_PAGE].enterPage(ChallengePage.ENTER_INIT, _local8); gotoPage(CHALLENGE_PAGE); break; case STATE_RESPOND_CHALLENGE: hideTitleMenu(); mPages[CHALLENGE_PAGE].enterPage(ChallengePage.ENTER_CHALLENGE, null); gotoPage(CHALLENGE_PAGE); break; case STATE_RESPOND_LIVE: hideTitleMenu(); GameSetup.liveGameSource = GameSetup.LIVE_SOURCE_ROOM; MenuLive.Instance.acceptChallenge(); break; case STATE_ANNOUNCE_LIVE: case STATE_ANNOUNCE_CHALLENGE: mPages[CHALLENGE_PAGE].enterPage(ChallengePage.ENTER_ANNOUNCE, _arg2); gotoPage(CHALLENGE_PAGE); break; case STATE_SCORE_SUMMARY: trace(("[MenuMain][enterState] player won: " + _arg2.gameManager.gameStats.won)); trace(("[MenuMain][enterState] player score: " + _arg2.gameManager.gameStats.totalScore)); if (_arg2.gameManager.gameStats.won){ trace("[MenuMain][enterState] show score summary"); mPages[SCORE_PAGE].enterPage(ScorePage.ENTER_INIT, _arg2); gotoPage(SCORE_PAGE); } else { mCurrentPage = INVALID_PAGE; trace(("[MenuMain][goAfterAdvertisement] difficulty: " + UITM_DIFFICULTY_STRINGS[GameSetup.difficulty])); trace(("[MenuMain][goAfterAdvertisement] gameMode : " + GameSetup.gameMode)); _local9 = "classic"; if (GameSetup.gameMode != 0){ _local9 = "time"; }; _local10 = ((_local9 + ":") + UITM_DIFFICULTY_STRINGS[GameSetup.difficulty]); mindjoltGameOver(); _arg2.gameManager.gameStats.resetScore(); }; break; case STATE_RANKING: switch (mState){ case STATE_TITLE_MENU: case STATE_INIT: break; default: break; }; Analytics.Instance.trackPage((FlashVars.service + "flash/menu?screen=ranking")); break; case STATE_ADVERTISE: mSkipAdvertisement = true; break; case STATE_CHALLENGE_LIST: mPages[CHALLENGE_LIST_PAGE].enterPage(ChallengeListPage.ENTER_INIT, null); gotoPage(CHALLENGE_LIST_PAGE); Analytics.Instance.trackPage((FlashVars.service + "flash/menu?screen=challenge_manager")); break; default: break; }; if (((!((mState == STATE_INVALID))) || (!((mState == STATE_INIT))))){ enlist(this, controlpanel); if (OKPopup.parent != null){ enlist(this, OKPopup); }; if (YesNoPopupObject.parent != null){ enlist(this, YesNoPopupObject); }; if (OKJakePopup.parent != null){ enlist(this, OKJakePopup); }; if (OKErrorPopup.parent != null){ enlist(this, OKErrorPopup); }; }; } public function updateState():void{ if (mNextState != mState){ trace(("[MenuMain][updateState] mNextState: " + mNextState)); exitState(mState, mStateParams); enterState(mNextState, mNextStateParams); mState = mNextState; mStateParams = mNextStateParams; }; } public function gotoPage(_arg1:int, _arg2:int=-1):void{ trace("[MenuMain][gotoPage]"); if (mCurrentPage != INVALID_PAGE){ delist(mPages[mCurrentPage].pageDisplay); }; mCurrentPage = _arg1; if (mCurrentPage != INVALID_PAGE){ if (_arg2 == INSERT_PAGE_ON_TOP){ enlist(this, mPages[mCurrentPage].pageDisplay); } else { if (_arg2 >= this.numChildren){ enlist(this, mPages[mCurrentPage].pageDisplay); } else { this.addChildAt(mPages[mCurrentPage].pageDisplay, _arg2); }; }; }; } public function initPages():void{ mPages = new Array(); mPages[GAME_PAGE] = new GamePage(); mPages[SCORE_PAGE] = new ScorePage(); } public function initMode():void{ var _local1:String; trace("[MenuMain][initMode]"); if (FlashVars.challenge_id != null){ GameSetup.gameType = GameTypeEnum.GAME_TYPE_CHALLENGE; GameSetup.challengeId = FlashVars.challenge_id; GameSetup.seed = FlashVars.seed; requestState(STATE_EVENT_POPUP, {nextState:STATE_RESPOND_CHALLENGE}); } else { if (FlashVars.room_id != null){ GameSetup.gameType = GameTypeEnum.GAME_TYPE_MULTIPLAYER; GameSetup.liveId = FlashVars.room_id; if (FlashVars.game_mode != null){ GameSetup.gameMode = GameReport.getGameMode(FlashVars.game_mode); }; if (FlashVars.difficulty != null){ GameSetup.startDifficulty = parseInt(FlashVars.difficulty); GameSetup.difficulty = GameSetup.startDifficulty; }; requestState(STATE_EVENT_POPUP, {nextState:STATE_RESPOND_LIVE}); } else { if (FlashVars.mode === "rankings"){ _local1 = "overall"; if (FlashVars.rankings_tab != null){ _local1 = FlashVars.rankings_tab; }; requestState(STATE_RANKING, {rankings_tab:_local1}); } else { if (FlashVars.mode === "challenge_manager"){ requestState(STATE_CHALLENGE_LIST); } else { if (FlashVars.mode === "post_invite"){ requestState(STATE_POST_INVITE); } else { if (FlashVars.mode === "challenge_user"){ if (FlashVars.challenge_user_id != null){ GameSetup.opponentId = FlashVars.challenge_user_id; }; if (FlashVars.game_mode != null){ GameSetup.gameMode = GameReport.getGameMode(FlashVars.game_mode); GameSetup.gameType = GameReport.getGameType(FlashVars.game_mode); GameSetup.rounds = 1; }; if (FlashVars.game_mode == null){ GameSetup.gameType = GameTypeEnum.GAME_TYPE_CHALLENGE; requestState(STATE_EVENT_POPUP, {nextState:STATE_TITLE_MENU, nextStateParams:3}); } else { if (FlashVars.challenge_user_id == null){ requestState(STATE_EVENT_POPUP, {nextState:STATE_SELECT_FRIEND}); } else { requestState(STATE_EVENT_POPUP, {nextState:STATE_SETUP_CHALLENGE}); }; }; } else { trace("[MenuMain][initMode] request STATE_EVENT_POPUP"); requestState(STATE_EVENT_POPUP); }; }; }; }; }; }; } public function hideTitleMenu():void{ trace("[MenuMain][hideTitleMenu]"); delist(mTitleMenu); } public function showTitleMenu(_arg1:int):void{ trace(("[MenuMain][showTitleMenu] code: " + _arg1)); if (mTitleMenu != null){ enlist(this, mTitleMenu); }; if (mTitleMenu != null){ mTitleMenu.enterAt(_arg1); }; } public function initUIObjects():void{ delist(controlpanel); delist(LoadingPage); if (OKPopup){ delist(OKPopup); }; delist(YesNoPopupObject); if (RankingPage){ delist(RankingPage); }; if (FriendSelectPage){ delist(FriendSelectPage); }; delist(Scoring1P); delist(Scoring2P); delist(ScoringWin); delist(ScoringLose); delist(ChallengesPage); } public function onControlPanelRollover(_arg1:MouseEvent):void{ trace("[MenuMain][onControlPanelRollover]"); Mouse.show(); } public function initEventListeners():void{ stage.addEventListener(KeyboardEvent.KEY_DOWN, this.handleKeyDown); this.addEventListener(PageEvent.EXIT_PAGE, this.handleExitPageEvent); this.controlpanel.addEventListener(ControlPanelEvent.SOUND, onControlPanelSound); this.controlpanel.addEventListener(ControlPanelEvent.MUSIC, onControlPanelMusic); this.controlpanel.addEventListener(ControlPanelEvent.QUALITY, onControlPanelQuality); this.controlpanel.addEventListener(ControlPanelEvent.QUIT, onControlPanelQuit); this.controlpanel.addEventListener(MouseEvent.ROLL_OVER, onControlPanelRollover); stage.addEventListener(Event.DEACTIVATE, this.handleDeactivateEvent); stage.addEventListener(Event.ACTIVATE, this.handleActivateEvent); } public function initPrefs():void{ var prefString:String; var i:int; var prop:String; trace("[MenuMain][initPrefs]"); try { prefString = "snood_prefs"; if (FlashVars.player_id != null){ prefString = (prefString + ("_" + FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length))); }; mPrefs = SharedObject.getLocal(prefString); if (mPrefs != null){ if (mPrefs.data.hasOwnProperty("mute")){ if (mPrefs.data.mute == true){ this.controlpanel.sound = false; } else { this.controlpanel.sound = true; }; SoundManager.Instance.mute(mPrefs.data.mute); }; if (mPrefs.data.hasOwnProperty("music")){ this.controlpanel.music = mPrefs.data.music; SoundManager.Instance.music(mPrefs.data.music); }; if (mPrefs.data.hasOwnProperty("quality")){ if (mPrefs.data.quality === StageQuality.HIGH){ this.controlpanel.quality = true; } else { this.controlpanel.quality = false; }; if (stage.quality != mPrefs.data.quality){ stage.quality = mPrefs.data.quality; }; }; GameSetup.instructionsList[GameSetup.gameMode]; i = 0; while (i < GameModeEnum.GAME_MODE_MAX) { prop = ("instructions_" + i.toString()); if (mPrefs.data.hasOwnProperty(prop)){ GameSetup.instructionsList[i] = mPrefs.data[prop]; } else { GameSetup.instructionsList[i] = true; }; i = (i + 1); }; if (mPrefs.data.hasOwnProperty("instructions_pref")){ mTitleMenu.setInstructions(mPrefs.data.instructions_pref); GameSetup.instructionsType = mPrefs.data.instructions_pref; } else { mTitleMenu.setInstructions(UITM_INSTRUCTIONS_ALL); GameSetup.instructionsType = UITM_INSTRUCTIONS_ALL; }; if (mPrefs.data.hasOwnProperty("non_perm_feed")){ EventPopup.sNonPermFeed = new Date(); EventPopup.sNonPermFeed.time = mPrefs.data.non_perm_feed; }; if (mPrefs.data.hasOwnProperty("classic_snoods")){ GameSetup.classicSnoods = mPrefs.data.classic_snoods; mTitleMenu.setSnoods((GameSetup.classicSnoods) ? UITM_SNOODS_CLASSIC : UITM_SNOODS_NEW); }; if (mPrefs.data.hasOwnProperty("difficulty")){ GameSetup.startDifficulty = mPrefs.data.difficulty; GameSetup.difficulty = GameSetup.startDifficulty; mTitleMenu.setDifficulty(UITM_DIFFICULTY_STRINGS[GameSetup.startDifficulty]); }; }; } catch(error:Error) { trace(error.message); }; } public function setClassicSnoodsPref(_arg1:Boolean):void{ var classic = _arg1; try { mPrefs.setProperty("classic_snoods", classic); mPrefs.flush(); } catch(error:Error) { trace(error.message); }; } public function setDifficultyPref(_arg1:int):void{ var difficulty = _arg1; try { mPrefs.setProperty("difficulty", difficulty); mPrefs.flush(); } catch(error:Error) { trace(error.message); }; } public function setNonPermFeed(_arg1:Date):void{ var date = _arg1; try { mPrefs.setProperty("non_perm_feed", date.time); mPrefs.flush(); } catch(error:Error) { trace(error.message); }; } public function initLive():void{ } public function handleDeactivateEvent(_arg1:Event):void{ mDeactivated = true; } public function handleActivateEvent(_arg1:Event):void{ mDeactivated = false; } public function isDeactivated():Boolean{ return (mDeactivated); } public function isMouseOut():Boolean{ return (mMouseOut); } public function hasStageFocus():Boolean{ return (Boolean(!((mStageFocus == null)))); } public function showActivatePrompt():void{ var _local1:OkPopup = new OkPopup("Please click to resume."); _local1.addEventListener(MouseEvent.CLICK, onActivate); } public function onActivate(_arg1:MouseEvent):void{ trace(("[MenuMain][doState] gamemanager: " + mPages[mCurrentPage].getGameManager())); mDeactivated = false; mPages[mCurrentPage].getGameManager().isTimeAttackPaused = false; } public function isShowingPopup():Boolean{ var _local1:Boolean; if (((!((mState == STATE_INVALID))) || (!((mState == STATE_INIT))))){ if (OKPopup.parent != null){ _local1 = true; }; if (YesNoPopupObject.parent != null){ _local1 = true; }; if (OKJakePopup.parent != null){ _local1 = true; }; if (OKErrorPopup.parent != null){ _local1 = true; }; }; return (_local1); } public function updateCurrentPage(_arg1:Number):void{ if (mCurrentPage >= 0){ mPages[mCurrentPage].enterFrame(_arg1); }; } public function updateMonkeyLoaderProgress(_arg1:int):void{ var totalbytes:int; var loadedbytes:int; var mc:MovieClip; var percent = _arg1; try { totalbytes = 100; loadedbytes = percent; mc = (this.parent as MovieClip); mc.updateProgress(loadedbytes, totalbytes); } catch(e:Error) { trace("Monkwerks: not using MonkeyLoader"); }; } public function updateSystemsReady():int{ var _local1:Boolean; var _local2:int; if (mFirstInitialized == false){ if (firstInit()){ _local2 = (_local2 + 10); }; } else { _local2 = (_local2 + 10); }; _local2 = (_local2 + 10); _local2 = (_local2 + 10); _local2 = (_local2 + 10); if (StaticDesc.Instance.isReady()){ _local2 = (_local2 + 10); }; _local2 = (_local2 + 10); if (isTitleMenuReady()){ _local2 = (_local2 + 10); }; if ((((_local1 == true)) && (!((FlashVars.remote_ip == null))))){ ConsoleSprite.Instance.print(("Remote IP=" + FlashVars.remote_ip)); new OkErrorPopup(); }; if (_local2 >= 70){ _local2 = 100; }; return (_local2); } public function hideMonkeyLoader():void{ var _local1:MovieClip; if ((((mHideMonkeyLoader == true)) && ((mMonkeyLoaderHidden == false)))){ updateMonkeyLoaderProgress(100); try { _local1 = (this.parent as MovieClip); _local1.delistMonkeyLoaderComponents(); } catch(error:Error) { }; mMonkeyLoaderHidden = true; }; this.addChildAt(mCanvasBitmap, 0); } public function doState(_arg1:Number):void{ var _local2:int; var _local3:Object; switch (mState){ case STATE_INIT: initPrefs(); initMode(); break; case STATE_TITLE_MENU: break; case STATE_EVENT_POPUP: _local2 = STATE_TITLE_MENU; _local3 = null; if (mStateParams != null){ if (mStateParams.hasOwnProperty("nextState")){ _local2 = mStateParams.nextState; }; if (mStateParams.hasOwnProperty("nextStateParams")){ _local3 = mStateParams.nextStateParams; }; }; updateEventPopup(_local2, _local3); break; case STATE_INSTRUCTIONS: if ((((mInstructions == null)) || (mInstructions.isDone()))){ requestState(STATE_PLAY, mStateParams); }; break; case STATE_RANKING: mPages[RANKING_PAGE].enterFrame(_arg1); break; case STATE_LIVE_WAITING: if (mPopupLiveTimer > 0){ mPopupLiveTimer = (mPopupLiveTimer - _arg1); if (mPopupLiveTimer <= 0){ mPopupLive.gotoAndPlay("timeout"); }; }; break; case STATE_LIVE_WAITING_REMATCH: if (mPopupLiveTimer > 0){ mPopupLiveTimer = (mPopupLiveTimer - _arg1); if (mPopupLiveTimer <= 0){ mStateParams[ScorePage.SKIP_EVENTS] = true; requestState(STATE_SCORE_SUMMARY, mStateParams); }; }; break; case STATE_PLAY: updateCurrentPage(_arg1); break; case STATE_SELECT_FRIEND: case STATE_LIVE_SELECT_FRIEND: case STATE_SETUP_CHALLENGE: case STATE_RESPOND_CHALLENGE: case STATE_CHALLENGE_LIST: case STATE_ANNOUNCE_LIVE: case STATE_ANNOUNCE_CHALLENGE: updateCurrentPage(_arg1); break; case STATE_LIVE_READY: break; case STATE_SCORE_SUMMARY: updateCurrentPage(_arg1); break; case STATE_ADVERTISE: if (mSkipAdvertisement){ goAfterAdvertisement(); }; break; case STATE_CHALLENGE_SUMMARY: case STATE_POST_INVITE: case STATE_RESPOND_LIVE: case STATE_LIVE_READY: break; case STATE_INVALID: mFirstInitialized = false; mHideMonkeyLoader = false; mMonkeyLoaderHidden = false; mState = STATE_INVALID; mNextState = STATE_INVALID; break; default: break; }; } public function enterFrame(_arg1:Event):void{ var _local5:int; if (stage != null){ mStageFocus = stage.focus; }; var _local2:int = getTimer(); var _local3:int = (_local2 - mLastFrame); var _local4:Number = (_local3 * 0.001); mLastFrame = _local2; if (mHideMonkeyLoader == false){ if (((!((this.OKErrorPopup == null))) && (!((this.OKErrorPopup.parent == null))))){ return; }; _local5 = updateSystemsReady(); updateMonkeyLoaderProgress(_local5); if (_local5 == 100){ mHideMonkeyLoader = true; }; return; }; SoundManager.Instance.update(_local4); Waiting.Instance.update(_local4); updateState(); MenuLive.Instance.update(); if (mState != STATE_PLAY){ updateMenuBackground(_local3); }; doState(_local4); if (mc_mindjolt){ if (!mindjoltComplete){ this.mindjoltLoad(); } else { if (((mindjoltOnTop) && (!((this.getChildIndex(mc_mindjolt) == (this.numChildren - 1)))))){ this.addChildAt(mc_mindjolt, (this.numChildren - 1)); }; }; }; } public function handleChallengeRedirect(_arg1:Object):int{ var _local2:int = STATE_TITLE_MENU; if (_arg1 != null){ _local2 = STATE_CHALLENGE_SUMMARY; }; return (_local2); } public function handleExitPageEvent(_arg1:PageEvent):void{ var _local2:BasePage; trace(("[MenuMain][handleExitGamePage] coming from GamePage: " + (_local2 == mPages[GAME_PAGE]))); _local2 = _arg1.pageObject; var _local3:Object = _arg1.pageParams; var _local4:int = _arg1.exitCode; if (((!((_local2.pageDisplay == null))) && ((_local2.pageDisplay.parent == this)))){ delist(_local2.pageDisplay); }; if (_local2 == mPages[GAME_PAGE]){ handleExitGamePage(_local4, _local3); } else { if (_local2 == mPages[CHALLENGE_PAGE]){ handleExitChallengePage(_local4, _local3); } else { if (_local2 == mPages[CHALLENGE_LIST_PAGE]){ handleExitChallengeListPage(_local4, _local3); } else { if (_local2 == mPages[PICKFRIEND_PAGE]){ handleExitPickFriendPage(_local4, _local3); } else { if (_local2 == mPages[SCORE_PAGE]){ handleExitScorePage(_local4, _local3); }; }; }; }; }; } public function handleExitGamePage(_arg1:int, _arg2:Object):void{ switch (_arg1){ case GamePage.EXIT_GAME_NORMAL: trace(("[MenuMain][handleExitGamePage] pageParams : " + _arg2)); requestState(STATE_SCORE_SUMMARY, _arg2); break; case GamePage.EXIT_CHALLENGE_ERROR: delistAll(); requestState(STATE_EVENT_POPUP); break; case GamePage.EXIT_REPORT_ERROR: if (MenuLive.Instance.isLoggedIn()){ MenuLive.Instance.endSession(); }; delistAll(); requestState(STATE_EVENT_POPUP); break; case GamePage.EXIT_GAME_KILLED: delistAll(); requestState(STATE_EVENT_POPUP); break; }; } public function handleExitChallengePage(_arg1:int, _arg2:Object):void{ switch (_arg1){ case ChallengePage.EXIT_FAIL: mCurrentPage = INVALID_PAGE; requestState(handleChallengeRedirect(_arg2), _arg2); break; case ChallengePage.EXIT_PLAY: switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_MULTIPLAYER: requestState(STATE_LIVE_READY, _arg2); break; case GameTypeEnum.GAME_TYPE_CHALLENGE: mCurrentPage = INVALID_PAGE; if (instructionsEnabled()){ requestState(STATE_INSTRUCTIONS, _arg2); } else { requestState(STATE_PLAY, _arg2); }; break; }; break; default: break; }; } public function handleExitChallengeListPage(_arg1:int, _arg2:Object):void{ switch (_arg1){ case ChallengeListPage.EXIT_PLAY: requestState(STATE_ANNOUNCE_CHALLENGE, _arg2); break; case ChallengeListPage.EXIT_ERROR: requestState(STATE_TITLE_MENU); break; default: break; }; } public function handleExitPickFriendPage(_arg1:int, _arg2:Object):void{ switch (_arg1){ case PickFriendPage.EXIT_PICKED: mCurrentPage = INVALID_PAGE; switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_MULTIPLAYER: requestState(STATE_LIVE_WAITING); break; case GameTypeEnum.GAME_TYPE_CHALLENGE: requestState(STATE_SETUP_CHALLENGE); break; }; break; case PickFriendPage.EXIT_ERROR: switch (mState){ case STATE_SELECT_FRIEND: mPages[mCurrentPage].clearDisplay(); delist(mPages[mCurrentPage].pageDisplay); mCurrentPage = INVALID_PAGE; requestState(STATE_TITLE_MENU, 3); break; case STATE_LIVE_SELECT_FRIEND: mPages[mCurrentPage].clearDisplay(); delist(mPages[mCurrentPage].pageDisplay); mCurrentPage = INVALID_PAGE; requestState(STATE_TITLE_MENU, 3); break; default: break; }; break; default: break; }; } public function handleExitScorePageRematch(_arg1:int, _arg2:Object):void{ switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_MULTIPLAYER: case GameTypeEnum.GAME_TYPE_CHALLENGE: requestState(STATE_SETUP_CHALLENGE, _arg2); break; default: break; }; var _local3:String = GameReport.makeGameMode(GameSetup.gameType, GameSetup.gameMode); Analytics.Instance.trackPage(((FlashVars.service + "flash/menu?button=rematch_") + _local3)); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function handleExitScorePage(_arg1:int, _arg2:Object):void{ switch (_arg1){ case ScorePage.EXIT_REMATCH: mContinuePlay = true; handleExitScorePageRematch(_arg1, _arg2); break; case ScorePage.EXIT_RETRY: mContinuePlay = true; requestState(STATE_PLAY, _arg2); break; case ScorePage.EXIT_CONTINUE: mContinuePlay = true; requestState(STATE_PLAY, _arg2); break; case ScorePage.EXIT_ERROR: case ScorePage.EXIT_NORMAL: default: mCurrentPage = INVALID_PAGE; goAfterAdvertisement(); break; }; } public function yesToSingleplayer():void{ GameSetup.gameType = GameTypeEnum.GAME_TYPE_SINGLEPLAYER; switch (mState){ case STATE_PLAY: mMenuBackground.draw(mCanvasBitmapData); mPages[GAME_PAGE].convertToSingleplayer(); break; case STATE_LIVE_WAITING: case STATE_ANNOUNCE_LIVE: case STATE_LIVE_WAITING_REMATCH: case STATE_SCORE_SUMMARY: requestState(STATE_PLAY); break; default: requestState(STATE_TITLE_MENU); break; }; } public function noToSingleplayer():void{ switch (mState){ case STATE_PLAY: mPages[GAME_PAGE].requestState(GamePage.STATE_KILL_GAME); break; case STATE_LIVE_WAITING_REMATCH: mCurrentPage = INVALID_PAGE; requestState(STATE_ADVERTISE, mStateParams); break; default: requestState(STATE_TITLE_MENU); break; }; } private function setupGame():void{ switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_SINGLEPLAYER: if (instructionsEnabled()){ requestState(STATE_INSTRUCTIONS); } else { requestState(STATE_PLAY); }; break; case GameTypeEnum.GAME_TYPE_MULTIPLAYER: GameSetup.liveId = null; GameSetup.liveGameSource = GameSetup.LIVE_SOURCE_FRIEND; MenuLive.Instance.loginToLobby(); requestState(STATE_LIVE_SELECT_FRIEND); break; case GameTypeEnum.GAME_TYPE_CHALLENGE: if (GameSetup.opponentId != null){ requestState(STATE_SETUP_CHALLENGE); } else { requestState(STATE_SELECT_FRIEND); }; break; default: break; }; } private function onBackButtonClick(_arg1:MouseEvent):void{ switch (mState){ case STATE_SELECT_FRIEND: mPages[mCurrentPage].clearDisplay(); delist(mPages[mCurrentPage].pageDisplay); mCurrentPage = INVALID_PAGE; requestState(STATE_TITLE_MENU, 3); break; case STATE_LIVE_SELECT_FRIEND: mPages[mCurrentPage].clearDisplay(); delist(mPages[mCurrentPage].pageDisplay); MenuLive.Instance.endSession(); mCurrentPage = INVALID_PAGE; requestState(STATE_TITLE_MENU, 3); break; case STATE_RANKING: mPages[mCurrentPage].clearDisplay(); if (mStateParams == null){ requestState(STATE_TITLE_MENU); } else { requestState(STATE_EVENT_POPUP); }; break; case STATE_CHALLENGE_LIST: requestState(STATE_EVENT_POPUP); break; default: break; }; SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } private function onChallengeButtonClick(_arg1:MouseEvent):void{ GameSetup.gameType = GameTypeEnum.GAME_TYPE_CHALLENGE; requestState(STATE_TITLE_MENU, 3); mTitleMenu.setSelectedMode(UITM_MODE_CHALLENGE); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } private function onLiveReadyPlayButtonClick(_arg1:MouseEvent):void{ mPopupLive.gotoAndPlay("playwaiting"); SoundManager.Instance.play(Constants.SOUND_CONFIRM_CHALLENGE); } public function instructionsEnabled():Boolean{ var _local1:Boolean; switch (GameSetup.instructionsType){ case UITM_INSTRUCTIONS_ALL: _local1 = true; break; case UITM_INSTRUCTIONS_NONE: _local1 = false; break; case UITM_INSTRUCTIONS_MODE: default: _local1 = GameSetup.instructionsList[GameSetup.gameMode]; break; }; return (_local1); } public function setInstructionsPrefType(_arg1:String):void{ var type = _arg1; try { mPrefs.setProperty("instructions_pref", type); mPrefs.flush(); } catch(error:Error) { trace(error.message); }; } public function enableInstructionsPref(_arg1:String, _arg2:Boolean):void{ var instructionsStr = _arg1; var enable = _arg2; try { mPrefs.setProperty(instructionsStr, enable); mPrefs.flush(); } catch(error:Error) { trace(error.message); }; } public function onToggleInstructions(_arg1:MouseEvent):void{ var _local2:Boolean; GameSetup.instructionsList[GameSetup.gameMode] = !(GameSetup.instructionsList[GameSetup.gameMode]); _local2 = GameSetup.instructionsList[GameSetup.gameMode]; GameSetup.instructionsType = (_local2) ? UITM_INSTRUCTIONS_ALL : UITM_INSTRUCTIONS_NONE; setInstructionsPrefType(GameSetup.instructionsType); mTitleMenu.setInstructions(GameSetup.instructionsType); } public function onControlPanelSound(_arg1:ControlPanelEvent):void{ var mute:Boolean; var evt = _arg1; if (evt.state === "on"){ mute = false; } else { mute = true; }; SoundManager.Instance.mute(mute); try { mPrefs.setProperty("mute", mute); mPrefs.flush(); } catch(error:Error) { trace(error.message); }; } public function onControlPanelMusic(_arg1:ControlPanelEvent):void{ var music:Boolean; var evt = _arg1; if (evt.state === "on"){ music = true; } else { music = false; }; SoundManager.Instance.music(music); try { mPrefs.setProperty("music", music); mPrefs.flush(); } catch(error:Error) { trace(error.message); }; } public function onControlPanelQuality(_arg1:ControlPanelEvent):void{ var evt = _arg1; if (evt.state === "on"){ stage.quality = StageQuality.HIGH; } else { stage.quality = StageQuality.MEDIUM; }; try { mPrefs.setProperty("quality", stage.quality.toLowerCase()); mPrefs.flush(); } catch(error:Error) { trace(error.message); }; } public function onControlPanelQuit(_arg1:ControlPanelEvent):void{ if (MenuLive.Instance.isLoggedIn()){ MenuLive.Instance.endSession(); }; switch (mState){ case STATE_PLAY: mPages[GAME_PAGE].resetScore(); mPages[GAME_PAGE].requestState(GamePage.STATE_KILL_GAME); break; case STATE_TITLE_MENU: mTitleMenu.enterAt(1); break; default: delistAll(); requestState(STATE_EVENT_POPUP); break; }; } public function onDetailedButtonClick(_arg1:MouseEvent):void{ SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); Analytics.Instance.trackPage((FlashVars.service + "flash/menu?button=stats_detail")); } public function onAdLoadedTimer(_arg1:TimerEvent):void{ } public function onAdLoaded(_arg1:AdEvent):void{ } public function goAfterAdvertisement(_arg1:Boolean=false):void{ var _local2:String; var _local3:String; SoundManager.Instance.systemReset(); if ((((mStateParams == null)) || (!(mStateParams.hasOwnProperty("reportScore"))))){ trace(("[MenuMain][goAfterAdvertisement] difficulty: " + UITM_DIFFICULTY_STRINGS[GameSetup.difficulty])); trace(("[MenuMain][goAfterAdvertisement] gameMode : " + GameSetup.gameMode)); _local2 = "classic"; if (GameSetup.gameMode != 0){ _local2 = "time"; }; _local3 = ((_local2 + ":") + UITM_DIFFICULTY_STRINGS[GameSetup.difficulty]); mindjoltGameOver(); mStateParams.gameManager.gameStats.resetScore(); } else { if (_arg1){ RankingPage.mouseChildren = false; RankingPage.LeftArrow.visible = false; RankingPage.RightArrow.visible = false; RankingPage.BackButton.visible = false; RankingPage.NextButton.visible = false; showRankingDisplay(); }; requestState(STATE_RANKING, mStateParams); }; } public function onAdFinished(_arg1:AdEvent):void{ } public function getScoreWithCheckProgress(_arg1:Boolean=true):Boolean{ var _local3:ServerCom; var _local2:Boolean; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ Waiting.show(Constants.CHECKING_FOR_NEWS); _local3 = new ServerCom(FlashVars.service, FlashVars.player_id); _local3.addEventListener(ServerEvent.SERVER_REPLY, onCheckProgressReply); _local3.addEventListener(ServerEvent.SERVER_ERROR, onCheckProgressReplyError); _local3.addEventListener(ServerEvent.SERVER_IOERROR, onCheckProgressIOError); _local3.extras = _arg1; _local3.scoreGet(true, true); } else { mEventPopupDone = true; _local2 = false; }; return (_local2); } public function cleanupEventPopup():void{ if (mEventPop != null){ if (mEventPop.parent == this){ delist(mEventPop); }; mEventPop = null; }; } public function updateEventPopup(_arg1:int, _arg2:Object=null):void{ if (((!((mEventPop == null))) && (mEventPop.isDone()))){ mEventPopupDone = true; }; if (mEventPopupDone == true){ requestState(_arg1, _arg2); }; } public function initEventPopup(_arg1:Object, _arg2:uint):void{ var _local4:Array; var _local3:Boolean = _arg1.hasOwnProperty("events"); if (_local3 == false){ mEventPopupDone = true; } else { _local4 = _arg1["events"]; if (_local4.length == 0){ mEventPopupDone = true; } else { if (mEventPop == null){ mEventPop = new EventPopup(); mEventPop.setNonPermFeedCallback = this.setNonPermFeed; mEventPop.Flags = _arg2; enlist(this, mEventPop); }; mEventPop.init(_local4); }; }; } public function onCheckProgressReply(_arg1:ServerEvent):void{ var _local3:int; var _local2:Object = _arg1.replyObject; Waiting.hide(); if (_local2.hasOwnProperty("points")){ GameSetup.monkeyPoints = _local2["points"]; mTitleMenu.setMonkeyPoints(GameSetup.monkeyPoints); }; if (_local2.hasOwnProperty("features")){ GameSetup.features = _local2["features"]; mTitleMenu.setProPuzzle(GameSetup.hasFeature(GameSetup.FEATURE_PUZZLE)); mTitleMenu.setProTimeattack(GameSetup.hasFeature(GameSetup.FEATURE_TIME_ATTACK)); mTitleMenu.setProNoads(GameSetup.hasFeature(GameSetup.FEATURE_NO_ADS)); mTitleMenu.setFeatures(StaticDesc.Instance.features); }; if (_local2.hasOwnProperty("admin")){ if (GameSetup.admin != true){ GameSetup.admin = _local2["admin"]; }; }; hideMonkeyLoader(); initEventPopup(_local2, EventPopup.FLAG_ALL); } public function onCheckProgressReplyError(_arg1:ServerEvent):void{ Waiting.hide(); ConsoleSprite.Instance.text = ("Our servers reported an error:" + _arg1.replyObject); var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onCheckProgressOkError); trace(_arg1.replyObject.error); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=get_score")); } public function onCheckProgressIOError(_arg1:ServerEvent):void{ Waiting.hide(); ConsoleSprite.Instance.text = ("The network has reported an IOError:" + _arg1.replyObject); var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onCheckProgressOkError); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=get_score")); } public function onCheckProgressOkError(_arg1:MouseEvent):void{ mEventPopupDone = true; hideMonkeyLoader(); } public function handleKeyDown(_arg1:KeyboardEvent){ var _local2:Number; if (GameSetup.admin == false){ return; }; switch (_arg1.keyCode){ case Keyboard.F1: case Keyboard.F2: case Keyboard.HOME: if (isConsoleOn()){ hideConsole(); } else { showConsole(); }; break; case Keyboard.DELETE: ConsoleSprite.Instance.text = ""; break; case Keyboard.F3: if (mDebugStats != null){ if (mDebugStats.parent == null){ mDebugStats.addListeners(); enlist(stage, mDebugStats); } else { mDebugStats.removeListeners(); delist(mDebugStats); }; }; break; case Keyboard.F5: _local2 = this.stage.frameRate; if (_local2 == 30){ _local2 = 60; } else { if (_local2 == 60){ _local2 = 120; } else { if (_local2 == 120){ _local2 = 30; }; }; }; this.stage.frameRate = _local2; break; case Keyboard.F6: if (Waiting.isWaiting() == false){ Waiting.show("test waiting"); } else { Waiting.hide(); }; break; case Keyboard.F8: ConsoleSprite.Instance.text = "*****\n"; drawList(stage); trace("*****"); break; case Keyboard.F9: ConsoleSprite.Instance.print(FlashVars.remote_ip); break; }; } public function drawList(_arg1, _arg2:String=""):void{ var _local3:int; var _local4:*; if ((_arg1 is DisplayObjectContainer)){ _local3 = 0; while (_local3 < _arg1.numChildren) { _local4 = _arg1.getChildAt(_local3); ConsoleSprite.Instance.print((((_arg2 + _local4) + ":") + _local4.name)); drawList(_local4, (_arg2 + " ")); _local3++; }; }; } public function onTestScratchContinue(_arg1:MouseEvent):void{ _arg1.target.removeEventListener(MouseEvent.CLICK, onTestScratchContinue); if (_arg1.target.parent.parent != null){ _arg1.target.parent.parent.removeChild(_arg1.target.parent); }; } public static function get Instance():MenuMain{ return (mInstance); } } }//package menucode
Section 224
//OkErrorPopup (menucode.OkErrorPopup) package menucode { import flash.display.*; import menucode.*; import flash.events.*; class OkErrorPopup extends OkPopup { override protected function get ui():MovieClip{ return (MenuMain.Instance.OKErrorPopup); } override public function setMsg(_arg1:String):void{ } override public function getMsg():String{ return (""); } } }//package menucode
Section 225
//OkJakePopup (menucode.OkJakePopup) package menucode { import flash.display.*; import menucode.*; import flash.events.*; class OkJakePopup extends OkPopup { function OkJakePopup(_arg1:String=null):void{ super(_arg1); } override protected function get ui():MovieClip{ return (MenuMain.Instance.OKJakePopup); } override public function setMsg(_arg1:String):void{ ui.message.messagetext.text = _arg1; } override public function getMsg():String{ return (ui.message.messagetext.text); } } }//package menucode
Section 226
//OkPopup (menucode.OkPopup) package menucode { import flash.display.*; import menucode.*; import flash.events.*; import com.rkg.media.*; import flash.ui.*; class OkPopup extends EventDispatcher { public var data:Object; function OkPopup(_arg1:String=null){ Mouse.show(); var _local2 = ""; if (_arg1 != null){ _local2 = _arg1; }; setMsg(_local2); addEventListeners(); enlist(); } protected function get ui():MovieClip{ return (MenuMain.Instance.OKPopup); } public function setMsg(_arg1:String):void{ ui.Message.text = _arg1; } public function getMsg():String{ return (ui.Message.text); } protected function enlist():void{ MenuMain.Instance.enlist(MenuMain.Instance, ui); } protected function delist():void{ MenuMain.Instance.delist(ui); } protected function addEventListeners():void{ ui.OKButton.addEventListener(MouseEvent.CLICK, onClick); } protected function removeEventListeners():void{ ui.OKButton.removeEventListener(MouseEvent.CLICK, onClick); } protected function onClick(_arg1:MouseEvent):void{ Mouse.hide(); delist(); removeEventListeners(); this.dispatchEvent(_arg1); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } } }//package menucode
Section 227
//PageEvent (menucode.PageEvent) package menucode { import menucode.*; import flash.events.*; class PageEvent extends Event { public var exitCode:int; public var pageObject:BasePage; public var pageParams:Object; public static const EXIT_PAGE:String = "exitPage"; public static const PAGETURN_COMPLETE:String = "pageTurn"; function PageEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function clone():Event{ var _local1:PageEvent = new PageEvent(type, bubbles, cancelable); _local1.pageObject = this.pageObject; _local1.pageParams = this.pageParams; return (_local1); } override public function toString():String{ return ((((((("[PageEvent type=" + type) + " bubbles=") + bubbles) + " cancelable=") + cancelable) + "]")); } } }//package menucode
Section 228
//PickFriendPage (menucode.PickFriendPage) package menucode { import flash.display.*; import flash.text.*; import flash.events.*; import com.rkg.media.*; import com.rkg.net.*; import menucode.facebook.*; import gamecode.*; import com.rkg.display.*; import com.rkg.facebook.*; public class PickFriendPage extends BasePage { protected var mPageParams:Object; protected var mFriendPicker:FriendPicker; protected var mTargetId:String; protected var mSprite:Sprite; protected var mVSScreenFlags:uint;// = 0 protected var mVSScreen:VSScreen;// = null protected var mLive:Boolean;// = false public static const FACEBOOK:String = "facebook:"; public static const STATE_INIT:int = 0; public static const STATE_PICKING:int = 1; public static const STATE_PICKED:int = 2; public static const STATE_DONE:int = 3; public static const STATE_SEND_LIVE_NOTIFICATION:int = 4; public static const STATE_CREATE_LIVE_CHALLENGE:int = 5; public static const STATE_BUSY:int = 6; public static const ENTER_INIT:int = 0; public static const EXIT_PICKED:int = 0; public static const EXIT_ERROR:int = 1; public static const VS_PLAYER_FBINFO:uint = (1 << 0); public static const VS_OPPONENT_FBINFO:uint = (1 << 1); public function PickFriendPage(){ requestState(STATE_INIT); mSprite = new Sprite(); this.addChild(mSprite); var _local1:MovieClip = MenuMain.Instance.FriendSelectPage; _local1.header1.removeChild(_local1.header1.onlinetoggle); _local1.header1.removeChild(_local1.header1.onlineprompt); _local1.messageline.visible = false; } override public function enterPage(_arg1:int, _arg2:Object):void{ mPageParams = _arg2; switch (_arg1){ case ENTER_INIT: mTargetId = null; requestState(STATE_INIT); break; default: break; }; } override public function get pageDisplay():DisplayObject{ return (mSprite); } override public function clearDisplay():void{ if (Waiting.isWaiting()){ Waiting.hide(); }; if (mFriendPicker != null){ mSprite.removeChild(mFriendPicker); mFriendPicker = null; }; if (mVSScreen != null){ if (mVSScreen.parent != null){ mVSScreen.parent.removeChild(mVSScreen); }; mVSScreen = null; }; } public function handleOnlineToggle(_arg1:MouseEvent):void{ var _local2:MovieClip = MenuMain.Instance.FriendSelectPage; var _local3:int = _local2.header1.onlinetoggle.currentFrame; var _local4:Array = _local2.header1.onlinetoggle.currentLabels; var _local5:String; var _local6:int; while (_local6 < _local4.length) { if (_local4[_local6].frame == _local3){ _local5 = _local4[_local6].name; break; }; _local6++; }; if (_local5 === "on"){ _local2.header1.onlinetoggle.gotoAndStop("off"); if (mFriendPicker != null){ mFriendPicker.opts["online"] = false; mFriendPicker.filterOnline(false); }; } else { _local2.header1.onlinetoggle.gotoAndStop("on"); if (mFriendPicker != null){ mFriendPicker.opts["online"] = true; mFriendPicker.filterOnline(true); }; }; SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function setupPage():void{ var page:MovieClip = MenuMain.Instance.FriendSelectPage; mLive = false; var initialOnlineFilter:Boolean; if (mPageParams != null){ if (mPageParams.hasOwnProperty("online")){ initialOnlineFilter = mPageParams["online"]; }; if (mPageParams.hasOwnProperty("live")){ mLive = mPageParams["live"]; }; }; showMainUI(); page.LeftArrow.visible = false; page.RightArrow.visible = false; page.header1.SearchField.text = ""; page.header1.SearchField.x = ((MenuMain.Instance.stage.stageWidth - page.header1.SearchField.width) >> 1); page.messageline.visible = false; try { mFriendPicker = new FriendPicker(0x0200, 300, {okButton:false, searchField:page.header1.SearchField, onlineCheckbox:false, leftArrow:page.LeftArrow, rightArrow:page.RightArrow, multiSelect:false, pages:false, onMakePager:onMakePager, onFriendsError:onFriendsError}); mSprite.addChild(mFriendPicker); mSprite.x = 70; mSprite.y = 150; mFriendPicker.x = 0; mFriendPicker.y = 0; mFriendPicker.visible = true; mFriendPicker.addEventListener(FriendPickerEvent.SELECTED, onFriendPickerSelected); page.LeftArrow.addEventListener(MouseEvent.CLICK, doClickAudio); page.RightArrow.addEventListener(MouseEvent.CLICK, doClickAudio); } catch(error:Error) { trace(error.message); }; } public function doClickAudio(_arg1:MouseEvent):void{ SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } override public function enterState(_arg1:int):void{ switch (_arg1){ case STATE_DONE: mVSScreen.gotoAndStop(0); mVSScreen.visible = false; mFriendPicker.visible = false; if (mVSScreen.parent != null){ mVSScreen.parent.removeChild(mVSScreen); }; exitPickedFriend(mTargetId); break; default: break; }; } override public function enterFrame(_arg1:Number):void{ var _local2:Boolean; super.enterFrame(_arg1); switch (mState){ case STATE_INIT: setupPage(); requestState(STATE_PICKING); break; case STATE_PICKING: break; case STATE_PICKED: if ((((mLive == true)) && ((GameSetup.liveId == null)))){ break; }; requestState(STATE_DONE); break; case STATE_DONE: break; case STATE_SEND_LIVE_NOTIFICATION: if (GameSetup.liveId != null){ sendLiveNotification(); requestState(STATE_BUSY); }; break; case STATE_CREATE_LIVE_CHALLENGE: _local2 = MenuLive.Instance.challenge(mTargetId.toString()); if (_local2 == true){ requestState(STATE_SEND_LIVE_NOTIFICATION); }; break; default: break; }; } public function exitError():void{ var _local1:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local1.exitCode = EXIT_ERROR; _local1.pageObject = this; _local1.pageParams = null; clearDisplay(); MenuMain.Instance.dispatchEvent(_local1); } public function exitPickedFriend(_arg1:String):void{ GameSetup.opponentId = (FACEBOOK + _arg1.toString()); var _local2:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local2.exitCode = EXIT_PICKED; _local2.pageObject = this; _local2.pageParams = null; clearDisplay(); MenuMain.Instance.dispatchEvent(_local2); } public function onFriendPickerSelected_OLD(_arg1:FriendPickerEvent):void{ var _local2:Array = _arg1.mSelectedFriendIds; if ((((_local2 == null)) || ((_local2.length == 0)))){ return; }; mTargetId = _local2[0]; if ((((mTargetId == null)) || ((mTargetId == "")))){ return; }; mFriendPicker.visible = false; exitPickedFriend(mTargetId); } public function onFriendPickerSelected(_arg1:FriendPickerEvent):void{ var _local2:Array = _arg1.mSelectedFriendIds; if ((((_local2 == null)) || ((_local2.length == 0)))){ return; }; mTargetId = _local2[0]; if ((((mTargetId == null)) || ((mTargetId == "")))){ return; }; mFriendPicker.visible = false; showVSScreen(); hideMainUI(); SoundManager.Instance.playRandom(Constants.SOUND_SELECT_FRIEND_LIST); } public function hideMainUI():void{ var _local1:MovieClip = MenuMain.Instance.FriendSelectPage; _local1.buttongroupback.visible = false; _local1.LeftArrow.visible = false; _local1.RightArrow.visible = false; } public function showMainUI():void{ var _local1:MovieClip = MenuMain.Instance.FriendSelectPage; _local1.buttongroupback.visible = true; if (mFriendPicker != null){ mFriendPicker.setArrowVisibility(); }; } public function updateVSScreen():void{ var _local1:uint = (VS_PLAYER_FBINFO | VS_OPPONENT_FBINFO); if ((mVSScreenFlags & _local1) == _local1){ mVSScreen.visible = true; mVSScreen.gotoAndPlay(1); }; } public function onPlayerFbInfoDone():void{ mVSScreenFlags = (mVSScreenFlags | VS_PLAYER_FBINFO); updateVSScreen(); } public function onOpponentFbInfoDone():void{ mVSScreenFlags = (mVSScreenFlags | VS_OPPONENT_FBINFO); updateVSScreen(); } public function showVSScreen():void{ var facebook_id:String; mVSScreen = new VSScreen(); mVSScreen.stop(); var page:MovieClip = MenuMain.Instance.FriendSelectPage; var index:int = MenuMain.Instance.getChildIndex(page); MenuMain.Instance.addChildAt(mVSScreen, (index + 1)); mVSScreen.backbutton.addEventListener(MouseEvent.CLICK, onVSScreenCancel); mVSScreen.okbutton.addEventListener(MouseEvent.CLICK, onVSScreenOK); mVSScreenFlags = (mVSScreenFlags & ~(VS_PLAYER_FBINFO)); mVSScreenFlags = (mVSScreenFlags & ~(VS_OPPONENT_FBINFO)); if (FlashVars.player_id != null){ facebook_id = FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length); try { new FbInfo(facebook_id, mVSScreen.playerportrait.portraitholder, mVSScreen.playername.nametext, onPlayerFbInfoDone, onPlayerFbInfoDone); } catch(error:Error) { trace(error.message); }; }; try { new FbInfo(mTargetId, mVSScreen.opponentportrait.portraitholder, mVSScreen.opponentname.nametext, onOpponentFbInfoDone, onOpponentFbInfoDone); } catch(error:Error) { trace(error.message); }; page.header1.visible = false; page.header2.visible = true; } public function onVSScreenCancel(_arg1:MouseEvent):void{ mVSScreen.gotoAndStop(0); mVSScreen.visible = false; mFriendPicker.visible = true; if (mVSScreen.parent != null){ mVSScreen.parent.removeChild(mVSScreen); }; var _local2:MovieClip = MenuMain.Instance.FriendSelectPage; _local2.header1.visible = true; _local2.header2.visible = false; showMainUI(); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } public function onVSScreenOK(_arg1:MouseEvent):void{ GameSetup.opponentId = (FACEBOOK + mTargetId.toString()); switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_MULTIPLAYER: requestState(STATE_CREATE_LIVE_CHALLENGE); break; case GameTypeEnum.GAME_TYPE_CHALLENGE: vssPicked(); break; }; mVSScreen.mouseEnabled = false; mVSScreen.mouseChildren = false; SoundManager.Instance.play(Constants.SOUND_CONFIRM_CHALLENGE); } public function vssPicked():void{ requestState(STATE_PICKED); mVSScreen.gotoAndStop(0); mVSScreen.visible = false; mFriendPicker.visible = false; if (mVSScreen.parent != null){ mVSScreen.parent.removeChild(mVSScreen); }; } public function onMakePager(_arg1:Boolean):void{ var _local2:MovieClip = MenuMain.Instance.FriendSelectPage; if (_arg1){ _local2.messageline.visible = false; } else { _local2.messageline.visible = true; }; } public function onFriendsError():void{ exitError(); } public function sendLiveNotification():void{ var _local1:ServerCom; var _local2:String; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ Waiting.show(Constants.SENDING_NOTIFICATION); _local1 = new ServerCom(FlashVars.service, FlashVars.player_id); _local1.addEventListener(ServerEvent.SERVER_REPLY, onCreateLiveGameReply); _local1.addEventListener(ServerEvent.SERVER_ERROR, onCreateLiveGameReplyError); _local1.addEventListener(ServerEvent.SERVER_IOERROR, onCreateLiveGameIOError); _local2 = GameReport.makeGameMode(GameSetup.gameType, GameSetup.gameMode); _local1.sendLiveGameNotification(GameSetup.opponentId, GameSetup.liveId, _local2, GameSetup.rounds, GameSetup.difficulty); }; } public function onCreateLiveGameReply(_arg1:ServerEvent):void{ trace("onCreateLiveGameReply"); Waiting.hide(); vssPicked(); } public function onCreateLiveGameReplyError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = ("There was an error sending notification of game:" + _arg1.replyObject); Waiting.hide(); new OkErrorPopup(); } public function onCreateLiveGameIOError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = ("There was an IOError while sending notification of game:" + _arg1.replyObject); Waiting.hide(); new OkErrorPopup(); } } }//package menucode
Section 229
//Player (menucode.Player) package menucode { import menucode.*; class Player { protected var mPlayerId:int; protected var mScoreList:Array; protected var mFlags:int; protected static const LEFT_GAME:int = 1; function Player(){ mPlayerId = -1; mScoreList = new Array(); mScoreList.push(new PlayerScore()); mScoreList.push(new PlayerScore()); mScoreList.push(new PlayerScore()); mScoreList.push(new PlayerScore()); mScoreList.push(new PlayerScore()); } public function clear():void{ var _local1:PlayerScore; mPlayerId = -1; for each (_local1 in mScoreList) { _local1.clearScore(); }; } public function get playerId():int{ return (mPlayerId); } public function set playerId(_arg1:int):void{ mPlayerId = _arg1; } public function getScore(_arg1:int):PlayerScore{ return (mScoreList[_arg1]); } public function get scoreList():Array{ return (mScoreList); } public function get totalScore():PlayerScore{ var _local2:PlayerScore; var _local1:PlayerScore = new PlayerScore(); for each (_local2 in mScoreList) { _local1.addScore(_local2); }; return (_local1); } public function get leftGame():Boolean{ return (Boolean(!(((mFlags & LEFT_GAME) == 0)))); } public function set leftGame(_arg1:Boolean):void{ if (_arg1 == true){ mFlags = (mFlags | LEFT_GAME); } else { mFlags = (mFlags & ~(LEFT_GAME)); }; } } }//package menucode
Section 230
//PlayerManager (menucode.PlayerManager) package menucode { import menucode.*; class PlayerManager { protected var mPlayerPool:Array; protected var mPlayerList:Array; public static const MAX_PLAYERS = 2; protected static var mInstance:PlayerManager = null; function PlayerManager(){ if (mInstance != null){ throw (new Error("PlayerManager is a singleton, already instantiated")); }; mPlayerPool = new Array(MAX_PLAYERS); mPlayerList = new Array(); var _local1:int; while (_local1 < MAX_PLAYERS) { mPlayerPool[_local1] = new Player(); _local1++; }; } public function destroyPlayers():void{ var _local2:Player; var _local1:int = mPlayerList.length; while (_local1 > 0) { _local2 = mPlayerList.pop(); _local2.clear(); mPlayerPool.push(_local2); _local1--; }; } public function createPlayer(_arg1:int):Player{ if (mPlayerPool.length == 0){ throw (new Error("createPlayer: exceed max players")); }; var _local2:Player = mPlayerPool.pop(); _local2.playerId = _arg1; mPlayerList.push(_local2); return (_local2); } public function getPlayerById(_arg1:int):Player{ var _local2:int; while (_local2 < mPlayerList.length) { if (mPlayerList[_local2].playerId == _arg1){ return (mPlayerList[_local2]); }; _local2++; }; return (null); } public function getOpponentOfPlayerById(_arg1:int):Player{ if (mPlayerList.length != 2){ throw (new Error("PlayerManger.getOpponentOfPlayerById Error: only is supported for games with two players")); }; var _local2:Player; if (mPlayerList[0].playerId == _arg1){ _local2 = mPlayerList[1]; } else { if (mPlayerList[1].playerId == _arg1){ _local2 = mPlayerList[0]; } else { throw (new Error(("PlayerManger.getOpponentOfPlayerById Error: no player with playerId=" + _arg1))); }; }; if (_local2.playerId == _arg1){ throw (new Error(("PlayerManger.getOpponentOfPlayerById Error: opponent also has playerId=" + _arg1))); }; return (_local2); } public function getPlayerAt(_arg1:int):Player{ if ((((_arg1 < 0)) || ((_arg1 >= mPlayerList.length)))){ throw (new Error("PlayerManager.getPlayerAt(): invalid index value")); }; return (mPlayerList[_arg1]); } public function get numPlayers():int{ return (mPlayerList.length); } public static function get Instance():PlayerManager{ if (mInstance == null){ mInstance = new (PlayerManager); }; return (mInstance); } } }//package menucode
Section 231
//PlayerScore (menucode.PlayerScore) package menucode { import menucode.*; import com.adobe.serialization.json.*; class PlayerScore { protected var mPoints:int; protected var mMistakes:int; protected var mTotalLetters:int; protected var mLetterCount:int; protected var mSeedwordCount:int; protected var mPageCount:int; protected var mSubwordCount:int; protected var mRedwordCount:int; protected var mCompleteCount:int; protected var mBonuswordCount:int; protected var m50Count:int; protected var m75Count:int; protected var m100Count:int; protected var m150Count:int; protected var mRoundCompletedness:int; public function clearScore():void{ mPoints = 0; mMistakes = 0; mTotalLetters = 0; mLetterCount = 0; mSeedwordCount = 0; mPageCount = 0; mSubwordCount = 0; mRedwordCount = 0; mCompleteCount = 0; mBonuswordCount = 0; m50Count = 0; m75Count = 0; m100Count = 0; m150Count = 0; } public function get points():int{ return (mPoints); } public function get mistakes():int{ return (mMistakes); } public function get totalLetters():int{ return (mTotalLetters); } public function get letterCount():int{ return (mLetterCount); } public function get seedwordCount():int{ return (mSeedwordCount); } public function get pageCount():int{ return (mPageCount); } public function get subwordCount():int{ return (mSubwordCount); } public function get redwordCount():int{ return (mRedwordCount); } public function get completeCount():int{ return (mCompleteCount); } public function get bonuswordCount():int{ return (mBonuswordCount); } public function get fiftyCount():int{ return (m50Count); } public function get seventyfiveCount():int{ return (m75Count); } public function get hundredCount():int{ return (m100Count); } public function get hundredfiftyCount():int{ return (m150Count); } public function get roundCompleteness():Number{ return ((Number(mLetterCount) / Number(mTotalLetters))); } public function set points(_arg1:int):void{ mPoints = _arg1; } public function set totalLetters(_arg1:int):void{ mTotalLetters = _arg1; } public function addPoints(_arg1:int):void{ mPoints = (mPoints + _arg1); } public function addMistakes(_arg1:int):void{ mMistakes = (mMistakes + _arg1); } public function addTotalLetters(_arg1:int):void{ mTotalLetters = (mTotalLetters + _arg1); } public function addLetterCount(_arg1:int):void{ mLetterCount = (mLetterCount + _arg1); } public function addSeedwordCount(_arg1:int):void{ mSeedwordCount = (mSeedwordCount + _arg1); } public function addPageCount(_arg1:int):void{ mPageCount = (mPageCount + _arg1); } public function addSubwordCount(_arg1:int):void{ mSubwordCount = (mSubwordCount + _arg1); } public function addRedwordCount(_arg1:int):void{ mRedwordCount = (mRedwordCount + _arg1); } public function addCompleteCount(_arg1:int):void{ mCompleteCount = (mCompleteCount + _arg1); } public function addBonuswordCount(_arg1:int):void{ mBonuswordCount = (mBonuswordCount + _arg1); } public function add50Count(_arg1:int):void{ m50Count = (m50Count + _arg1); } public function add75Count(_arg1:int):void{ m75Count = (m75Count + _arg1); } public function add100Count(_arg1:int):void{ m100Count = (m100Count + _arg1); } public function add150Count(_arg1:int):void{ m150Count = (m150Count + _arg1); } public function addRoundCompleteness(_arg1:Number):void{ mRoundCompletedness = (mRoundCompletedness + _arg1); } public function addScore(_arg1:PlayerScore):void{ this.addPoints(_arg1.points); this.addMistakes(_arg1.mistakes); this.addTotalLetters(_arg1.totalLetters); this.addLetterCount(_arg1.letterCount); this.addSeedwordCount(_arg1.seedwordCount); this.addPageCount(_arg1.pageCount); this.addSubwordCount(_arg1.subwordCount); this.addRedwordCount(_arg1.redwordCount); this.addCompleteCount(_arg1.completeCount); this.addBonuswordCount(_arg1.bonuswordCount); this.add50Count(_arg1.fiftyCount); this.add75Count(_arg1.seventyfiveCount); this.add100Count(_arg1.hundredCount); this.add150Count(_arg1.hundredfiftyCount); } public function serialize():String{ var _local1:Object = new Object(); _local1.points = this.points; _local1.mistakes = this.mistakes; _local1.totalLetters = this.totalLetters; _local1.letterCount = this.letterCount; _local1.seedwordCount = this.seedwordCount; _local1.pageCount = this.pageCount; _local1.subwordCount = this.subwordCount; _local1.redwordCount = this.redwordCount; _local1.completeCount = this.completeCount; _local1.bonuswordCount = this.bonuswordCount; _local1.fiftyCount = this.fiftyCount; _local1.seventyfiveCount = this.seventyfiveCount; _local1.hundredCount = this.hundredCount; _local1.hundredfiftyCount = this.hundredfiftyCount; _local1.roundCompleteness = this.roundCompleteness; return (JSON.encode(_local1)); } public static function averageRoundCompleteness(_arg1:Array):Number{ var _local2:Number = 0; var _local3:int; while (_local3 < _arg1.length) { _local2 = (_local2 + _arg1[_local3].roundCompleteness); _local3++; }; return ((_local2 / _arg1.length)); } public static function summary(_arg1:Array):Object{ var _local3:PlayerScore; var _local4:Object; var _local2:PlayerScore = new (PlayerScore); for each (_local3 in _arg1) { _local2.addScore(_local3); }; _local4 = new Object(); _local4.gamesPlayed = _arg1.length; _local4.points = _local2.points; _local4.mistakes = _local2.mistakes; _local4.totalLetters = _local2.totalLetters; _local4.letterCount = _local2.letterCount; _local4.seedwordCount = _local2.seedwordCount; _local4.pageCount = _local2.pageCount; _local4.subwordCount = _local2.subwordCount; _local4.redwordCount = _local2.redwordCount; _local4.completeCount = _local2.completeCount; _local4.bonuswordCount = _local2.bonuswordCount; _local4.fiftyCount = _local2.fiftyCount; _local4.seventyfiveCount = _local2.seventyfiveCount; _local4.hundredCount = _local2.hundredCount; _local4.hundredfiftyCount = _local2.hundredfiftyCount; _local4.roundCompleteness = averageRoundCompleteness(_arg1); return (_local4); } } }//package menucode
Section 232
//RadioButtonGroup (menucode.RadioButtonGroup) package menucode { import flash.display.*; import flash.events.*; import flash.utils.*; public class RadioButtonGroup extends EventDispatcher { private var mDict:Dictionary; private var mSelectedObject:DisplayObject; public static const SELECT:String = "RadioButtonGroupSelect"; public function RadioButtonGroup(){ mDict = new Dictionary(); mSelectedObject = null; } protected function drawAsSelected(_arg1:DisplayObject):void{ _arg1.alpha = 1; } protected function drawAsUnselected(_arg1:DisplayObject):void{ _arg1.alpha = 0.25; } protected function updateDisplay():void{ var _local1:Object; var _local2:Object; for (_local1 in mDict) { _local2 = (mSelectedObject as Object); if (_local1 == _local2){ drawAsSelected((_local1 as DisplayObject)); } else { drawAsUnselected((_local1 as DisplayObject)); }; }; } protected function onButtonClick(_arg1:MouseEvent):void{ select((_arg1.currentTarget as DisplayObject)); } public function addButton(_arg1:DisplayObject, _arg2):void{ mDict[_arg1] = _arg2; _arg1.addEventListener(MouseEvent.CLICK, onButtonClick); if (mSelectedObject == null){ mSelectedObject = _arg1; drawAsSelected(_arg1); } else { drawAsUnselected(_arg1); }; } public function select(_arg1:DisplayObject):void{ if (mDict[_arg1] != null){ mSelectedObject = _arg1; updateDisplay(); this.dispatchEvent(new Event(RadioButtonGroup.SELECT)); } else { throw (new Error("RadioButtonGroup Error: object is not in the radio button group")); }; } public function getSelectedObject():DisplayObject{ return (mSelectedObject); } public function getSelectedData(){ return (mDict[mSelectedObject]); } } }//package menucode
Section 233
//RankingInfoEx (menucode.RankingInfoEx) package menucode { import flash.display.*; import flash.text.*; import flash.events.*; import flash.utils.*; public class RankingInfoEx extends RankingInfo { protected var mVisibleOffset:int;// = 0 public static const VISIBLE_WIDTH:int = 152; public static const PORTRAITS:Array = [Rank01, Rank02, Rank03, Rank04, Rank05, Rank06, Rank07, Rank08, Rank09, Rank10]; public static const ACHIEVEMENTS:Object = {first_game:{anchor:"anchor01", class_type:Achievement01}, first_mp:{anchor:"anchor02", class_type:Achievement02}, perfect_word_play:{anchor:"anchor03", class_type:Achievement03}, good_time_attack:{anchor:"anchor04", class_type:Achievement04}, fifty_games:{anchor:"anchor05", class_type:Achievement05}, twenty_five_mp_won:{anchor:"anchor06", class_type:Achievement06}, twenty_five_invited:{anchor:"anchor07", class_type:Achievement07}, all_level_5:{anchor:"anchor09", class_type:Achievement09}, ten_banger:{anchor:"anchor10", class_type:Achievement10}, perfect_pro:{anchor:"anchor08", class_type:Achievement08}}; public function RankingInfoEx(_arg1:Object):void{ var fbInfo:FbInfo; var ranking = _arg1; super(); this.ranknumber.text = ("#" + ranking.rank); var portrait:DisplayObject = newPortrait(ranking.level); this.rankportraitholder.addChild(portrait); var nameTextField:TextField; if (ranking.hasOwnProperty("name")){ this.playername.text = ranking.name; } else { this.playername.text = ""; nameTextField = this.playername; }; var scoreText:String = ((ranking.score.toString() + " ") + ranking.unit); this.score.text = scoreText; doAchievementTooltips(this.achievements); if (ranking.hasOwnProperty("achievements")){ this.achievements.visible = true; portrait.visible = false; doAchievements(this.achievements, ranking.achievements); } else { this.achievements.visible = false; }; try { fbInfo = new FbInfo(ranking.id.substring(Constants.FACEBOOK_PREFIX.length), this.portraitholder.portraitholder, nameTextField, onFbInfoDone, onFbInfoDone, true); } catch(error:Error) { trace(error.message); }; this.portraitholder.buttonMode = true; this.portraitholder.useHandCursor = true; this.portraitholder.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){ Utils.doFacebookPage(ranking.id); }); this.playername.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){ Utils.doFacebookPage(ranking.id); }); mVisibleOffset = ((portrait.width - VISIBLE_WIDTH) >> 1); } public function onFbInfoDone():void{ this.cacheAsBitmap = true; } public function getVisibleOffset():int{ return (mVisibleOffset); } public static function newAchievementIcon(_arg1:String):DisplayObject{ if (StaticDesc.Instance.hasData() == false){ throw (new Error("RankingInfoEx.newAchievement() error: StaticDesc not allocated.")); }; var _local2:Object = StaticDesc.Instance.getAchievementByName(_arg1); var _local3:String = Utils.intToString(2, _local2.icon_index); var _local4:Class = (getDefinitionByName(("Achievement" + _local3)) as Class); return (new (_local4)); } public static function newPortrait(_arg1:int, _arg2:Boolean=true):DisplayObject{ var _local3:int = (_arg1 % PORTRAITS.length); var _local4:MovieClip = new (PORTRAITS[_local3]); if (_arg2){ _local4.title.visible = true; } else { _local4.title.visible = false; }; _local4.cacheAsBitmap = true; return (_local4); } public static function doAchievementTooltips(_arg1:MovieClip):void{ var arr:Array; var i:int; var index:int; var id:String; var tooltip:String; var panel = _arg1; try { arr = StaticDesc.Instance.achievements; i = 0; while (i < arr.length) { index = arr[i].icon_index; id = Utils.intToString(2, index); tooltip = ("tooltip" + id); if (panel.hasOwnProperty(tooltip)){ panel[tooltip].tooltip.title.text = arr[i].verbose_name; panel[tooltip].tooltip.description.text = arr[i].desc; }; i = (i + 1); }; } catch(error:Error) { trace(error.message); }; } public static function doAchievements(_arg1:MovieClip, _arg2:Array):void{ var type:String; var achievement:Object; var id:String; var iconClass:Class; var anchor:String; var tooltip:String; var instance:MovieClip; var insertIndex:int; var panel = _arg1; var arr = _arg2; var i:int; while (i < arr.length) { type = arr[i]; try { achievement = StaticDesc.Instance.getAchievementByName(type); id = Utils.intToString(2, achievement.icon_index); iconClass = (getDefinitionByName(("Achievement" + id)) as Class); anchor = ("anchor" + id); tooltip = ("tooltip" + id); instance = (new (iconClass) as MovieClip); instance.x = panel[anchor].x; instance.y = panel[anchor].y; instance.scaleX = panel[anchor].scaleX; instance.scaleY = panel[anchor].scaleY; instance.mouseEnabled = false; instance.mouseChildren = false; if (panel.hasOwnProperty(tooltip)){ insertIndex = panel.getChildIndex(panel[tooltip]); panel.addChildAt(instance, (insertIndex + 1)); } else { panel.addChild(instance); }; } catch(error:Error) { trace(("unsupported achievement of type: " + type)); trace(error.message); }; i = (i + 1); }; } } }//package menucode
Section 234
//RankingRadioGroup (menucode.RankingRadioGroup) package menucode { import flash.display.*; import flash.events.*; import flash.utils.*; public class RankingRadioGroup extends RadioButtonGroup { public var busy:Boolean;// = false override protected function drawAsSelected(_arg1:DisplayObject):void{ if (_arg1 == null){ return; }; var _local2:MovieClip = (_arg1 as MovieClip); _local2.tabselected.visible = true; _local2.tabunselected.visible = false; } override protected function drawAsUnselected(_arg1:DisplayObject):void{ if (_arg1 == null){ return; }; var _local2:MovieClip = (_arg1 as MovieClip); _local2.tabselected.visible = false; _local2.tabunselected.visible = true; } override protected function onButtonClick(_arg1:MouseEvent):void{ if (!busy){ select((_arg1.currentTarget as DisplayObject)); }; } } }//package menucode
Section 235
//ScorePage (menucode.ScorePage) package menucode { import flash.display.*; import flash.events.*; import com.rkg.media.*; import gamecode.*; public class ScorePage extends BasePage { protected var mPageParams:Object;// = null protected var mExitCode:int;// = 0 protected var mScoreBoard:MovieClip;// = null protected var mEventPop:EventPopup;// = null protected var mEventPopupDone:Boolean;// = false public static const SKIP_EVENTS:String = "skip_events"; public static const ENTER_INIT:int = 0; public static const EXIT_NORMAL:int = 0; public static const EXIT_ERROR:int = 1; public static const EXIT_REMATCH:int = 2; public static const EXIT_RETRY:int = 3; public static const EXIT_CONTINUE:int = 4; public static const STATE_INIT:int = 0; public static const STATE_BUSY:int = 1; public static const STATE_EXIT:int = 2; public static const STATE_READY:int = 3; public static const STATE_EVENTS:int = 4; public static const STATE_EXIT_REMATCH:int = 5; override public function enterState(_arg1:int):void{ switch (_arg1){ case STATE_EXIT: hidePage(); exitPage(); break; case STATE_EVENTS: initEvents(EventPopup.FLAG_ALL); break; }; } override public function enterFrame(_arg1:Number):void{ super.enterFrame(_arg1); switch (mState){ case STATE_INIT: initScoring(); showPage(); if (((mPageParams.hasOwnProperty(SKIP_EVENTS)) && ((mPageParams[SKIP_EVENTS] == true)))){ requestState(STATE_READY); } else { requestState(STATE_EVENTS); }; SoundManager.Instance.playByIndex(SfxIdsEnum.SFX_ID_ROUND_COMPLETE_03); break; case STATE_EVENTS: updateEvents(); break; case STATE_EXIT_REMATCH: resetScore(); setupNextBoard(); mExitCode = EXIT_REMATCH; requestState(STATE_EXIT); break; }; } override public function enterPage(_arg1:int, _arg2:Object):void{ mPageParams = _arg2; requestState(STATE_INIT); } public function showPage():void{ MenuMain.Instance.enlist(MenuMain.Instance, mScoreBoard); } public function hidePage():void{ MenuMain.Instance.delist(mScoreBoard); } protected function doPlayerPortrait():void{ var facebook_id:String; if (((!((FlashVars.player_id == null))) && (!((mScoreBoard == null))))){ facebook_id = FlashVars.player_id.substring(Constants.FACEBOOK_PREFIX.length); try { new FbInfo(facebook_id, mScoreBoard.player.portraitholder, null); } catch(error:Error) { trace(error.message); }; }; } protected function doOpponentPortrait():void{ var facebook_id:String; var opponentId:String = GameSetup.opponentId; if (opponentId != null){ facebook_id = opponentId.substring(Constants.FACEBOOK_PREFIX.length); try { new FbInfo(facebook_id, mScoreBoard.opponent.portraitholder, null); } catch(error:Error) { trace(error.message); }; }; } protected function doWinner(_arg1:int, _arg2:int):void{ if (mScoreBoard == null){ return; }; if (_arg1 < _arg2){ mScoreBoard.win2.visible = true; } else { if (_arg1 > _arg2){ mScoreBoard.win1.visible = true; }; }; } protected function initEvents(_arg1:uint):void{ mEventPopupDone = false; var _local2:uint = _arg1; if (mPageParams.hasOwnProperty("reportScore")){ initEventPopup(mPageParams.reportScore, _local2); } else { mEventPopupDone = true; }; } public function initEventPopup(_arg1:Object, _arg2:uint):void{ var _local4:Array; var _local3:Boolean = _arg1.hasOwnProperty("events"); if (_local3 == false){ mEventPopupDone = true; } else { _local4 = _arg1["events"]; if (_local4.length == 0){ mEventPopupDone = true; } else { if (mEventPop == null){ mEventPop = new EventPopup(); mEventPop.setNonPermFeedCallback = MenuMain.Instance.setNonPermFeed; mEventPop.Flags = _arg2; stage.addChild(mEventPop); }; mEventPop.init(_local4); }; }; } protected function updateEvents():void{ if (((!((mEventPop == null))) && (mEventPop.isDone()))){ mEventPopupDone = true; }; if (mEventPopupDone == true){ if (((!((mEventPop == null))) && (!((mEventPop.parent == null))))){ mEventPop.parent.removeChild(mEventPop); mEventPop = null; }; requestState(STATE_READY); }; } protected function initScoring():void{ if (mPageParams.hasOwnProperty("gameManager") == false){ mExitCode = EXIT_ERROR; requestState(STATE_EXIT); } else { switch (GameSetup.gameType){ case GameTypeEnum.GAME_TYPE_SINGLEPLAYER: initSingleplayerScore(); break; case GameTypeEnum.GAME_TYPE_MULTIPLAYER: initMultiplayerScore(); break; case GameTypeEnum.GAME_TYPE_CHALLENGE: initChallengeScore(); break; }; }; } protected function initSingleplayerScore():void{ mScoreBoard = MenuMain.Instance.Scoring1P; mScoreBoard.tryagainbutton.visible = false; mScoreBoard.exitbutton.visible = false; mScoreBoard.continuebutton.visible = false; mScoreBoard.roundscore.visible = false; mScoreBoard.finalscore.visible = false; mScoreBoard.difficultywarning.visible = false; switch (GameSetup.gameMode){ case GameModeEnum.GAME_MODE_TIME_ATTACK: case GameModeEnum.GAME_MODE_CLASSIC: switch (GameSetup.startDifficulty){ case DifficultyEnum.DIFFICULTY_CHILD: case DifficultyEnum.DIFFICULTY_EASY: mScoreBoard.difficultywarning.visible = true; break; }; break; }; var _local1:Object = mPageParams["gameManager"]; var _local2:Object = _local1["gameStats"]; if (_local2["won"] == true){ if (hasNextBoard()){ mScoreBoard.roundscore.visible = true; } else { mScoreBoard.finalscore.visible = true; }; mScoreBoard.continuebutton.visible = true; mScoreBoard.continuebutton.addEventListener(MouseEvent.CLICK, onContinueEvent); mScoreBoard.exitbutton.visible = true; mScoreBoard.exitbutton.addEventListener(MouseEvent.CLICK, onExitEvent); } else { mScoreBoard.finalscore.visible = true; mScoreBoard.tryagainbutton.visible = true; mScoreBoard.exitbutton.visible = true; mScoreBoard.tryagainbutton.addEventListener(MouseEvent.CLICK, onRetryEvent); mScoreBoard.exitbutton.addEventListener(MouseEvent.CLICK, onExitEvent); }; doPlayerPortrait(); mScoreBoard.snoodsused.text = _local2["snoodsUsed"].toString(); mScoreBoard.score.text = _local2["score"].toString(); mScoreBoard.stylebonus.text = _local2["styleBonus"].toString(); mScoreBoard.snoodsbonus1.text = _local2["snoodsUsedBonus"].toString(); mScoreBoard.clearancebonus.text = _local2["completionBonus"].toString(); mScoreBoard.total.text = _local2["totalScore"].toString(); } protected function initMultiplayerScore():void{ var _local1:Object = mPageParams["gameManager"]; var _local2:Object = _local1["gameStats"]; if (_local2.won){ mScoreBoard = MenuMain.Instance.ScoringWin; } else { mScoreBoard = MenuMain.Instance.ScoringLose; }; mScoreBoard.exitbutton.addEventListener(MouseEvent.CLICK, onExitEvent); mScoreBoard.rematchbutton.addEventListener(MouseEvent.CLICK, onRematchEvent); } protected function initMultiplayerScore_DEPRECATED():void{ mScoreBoard = MenuMain.Instance.Scoring2P; mScoreBoard.win1.visible = false; mScoreBoard.win2.visible = false; doPlayerPortrait(); doOpponentPortrait(); var _local1:Object = mPageParams["gameManager"]; var _local2:Object = _local1["gameStats"]; mScoreBoard.snoodsused1.text = _local2["snoodsUsed"].toString(); mScoreBoard.score1.text = _local2["score"].toString(); mScoreBoard.stylebonus1.text = _local2["styleBonus"].toString(); mScoreBoard.snoodsbonus1.text = _local2["snoodsUsedBonus"].toString(); mScoreBoard.clearancebonus1.text = _local2["completionBonus"].toString(); mScoreBoard.total1.text = _local2["totalScore"].toString(); mScoreBoard.snoodsused2.text = _local2["opponentSnoodsUsed"].toString(); mScoreBoard.score2.text = _local2["opponentScore"].toString(); mScoreBoard.stylebonus2.text = _local2["opponentStyleBonus"].toString(); mScoreBoard.snoodsbonus2.text = _local2["opponentSnoodsUsedBonus"].toString(); mScoreBoard.clearancebonus2.text = "XX"; mScoreBoard.total2.text = _local2["opponentTotalScore"].toString(); mScoreBoard.exitbutton.addEventListener(MouseEvent.CLICK, onExitEvent); mScoreBoard.rematchbutton.addEventListener(MouseEvent.CLICK, onRematchEvent); } protected function initChallengeScore():void{ var _local11:Object; var _local12:Object; var _local13:Object; mScoreBoard = MenuMain.Instance.Scoring2P; mScoreBoard.win1.visible = false; mScoreBoard.win2.visible = false; doPlayerPortrait(); doOpponentPortrait(); var _local1:Object = mPageParams["gameManager"]; var _local2:Object = _local1["gameStats"]; mScoreBoard.snoodsused1.text = _local2["snoodsUsed"].toString(); mScoreBoard.score1.text = _local2["score"].toString(); mScoreBoard.stylebonus1.text = _local2["styleBonus"].toString(); mScoreBoard.snoodsbonus1.text = _local2["snoodsUsedBonus"].toString(); mScoreBoard.clearancebonus1.text = _local2["completionBonus"].toString(); mScoreBoard.total1.text = _local2["totalScore"].toString(); var _local3 = "XX"; var _local4:String = _local3; var _local5:String = _local3; var _local6:String = _local3; var _local7:String = _local3; var _local8:String = _local3; var _local9:String = _local3; var _local10:Object; if (mPageParams.hasOwnProperty("reportScore")){ _local11 = mPageParams["reportScore"]; if (_local11.hasOwnProperty("challenges")){ _local12 = _local11["challenges"]; if (_local12.hasOwnProperty("current")){ _local10 = _local12["current"]; }; }; }; if (_local10 != null){ _local13 = null; if (((_local10.hasOwnProperty("challenger_extra_data")) && (!((_local10["challenger_extra_data"] == null))))){ _local13 = _local10["challenger_extra_data"]; }; if (_local10.challenger_status === "open"){ if (_local10["challenger_game_status"] == "played"){ _local3 = "--"; _local4 = _local3; _local5 = _local3; _local6 = _local3; _local7 = _local3; _local8 = _local3; _local9 = _local3; } else { _local9 = "open"; }; } else { if (_local10.challenger_status === "forfeit"){ _local9 = "forfeit"; } else { _local3 = "--"; _local9 = _local10.challenger_score; doWinner((_local2["totalScore"] as int), (_local10.challenger_score as int)); if (_local13 != null){ _local4 = _local13["snoodsUsed"].toString(); _local5 = _local13["score"].toString(); _local6 = _local13["styleBonus"].toString(); _local7 = _local13["snoodsUsedBonus"].toString(); _local8 = _local13["completionBonus"].toString(); } else { _local4 = _local3; _local5 = _local3; _local6 = _local3; _local7 = _local3; _local8 = _local3; }; }; }; }; mScoreBoard.snoodsused2.text = _local4; mScoreBoard.score2.text = _local5; mScoreBoard.stylebonus2.text = _local6; mScoreBoard.snoodsbonus2.text = _local7; mScoreBoard.clearancebonus2.text = _local8; mScoreBoard.total2.text = _local9; mScoreBoard.exitbutton.addEventListener(MouseEvent.CLICK, onExitEvent); mScoreBoard.rematchbutton.addEventListener(MouseEvent.CLICK, onRematchEvent); } protected function resetScore():void{ var _local1:Object = mPageParams["gameManager"]; var _local2:Object = _local1["gameStats"]; _local2.resetScore(); } protected function resetDifficulty():void{ GameSetup.difficulty = GameSetup.startDifficulty; } protected function increaseDifficulty():void{ var _local1:* = (GameSetup.difficulty + 1); if (_local1 > DifficultyEnum.DIFFICULTY_EVIL){ _local1 = DifficultyEnum.DIFFICULTY_EVIL; }; GameSetup.difficulty = _local1; } protected function resetBoard():void{ var _local1:Object; var _local2:Object; switch (GameSetup.gameMode){ case GameModeEnum.GAME_MODE_PUZZLE: _local1 = mPageParams["gameManager"]; _local2 = _local1["puzzle"]; _local2.resetPuzzleNumber(); break; }; } protected function hasNextBoard():Boolean{ var _local2:Object; var _local3:Object; var _local1:Boolean; switch (GameSetup.gameMode){ case GameModeEnum.GAME_MODE_PUZZLE: _local2 = mPageParams["gameManager"]; _local3 = _local2["puzzle"]; _local1 = _local3.hasNextPuzzle(); break; }; return (_local1); } protected function setupNextBoard():Boolean{ var _local2:Object; var _local3:Object; var _local1:Boolean; switch (GameSetup.gameMode){ case GameModeEnum.GAME_MODE_PUZZLE: _local2 = mPageParams["gameManager"]; _local3 = _local2["puzzle"]; _local1 = Boolean(_local3.nextPuzzle()); break; }; return (_local1); } protected function onRematchEvent(_arg1:MouseEvent):void{ if (mState == STATE_EVENTS){ return; }; _arg1.target.removeEventListener(MouseEvent.CLICK, onRematchEvent); requestState(STATE_EXIT_REMATCH); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } protected function onExitEvent(_arg1:MouseEvent):void{ if (mState == STATE_EVENTS){ return; }; resetBoard(); resetDifficulty(); if (_arg1){ _arg1.target.removeEventListener(MouseEvent.CLICK, onExitEvent); }; mExitCode = EXIT_NORMAL; requestState(STATE_EXIT); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } protected function onRetryEvent(_arg1:MouseEvent):void{ if (mState == STATE_EVENTS){ return; }; var _local2:Object = mPageParams["gameManager"]; var _local3:Object = _local2["gameStats"]; switch (GameSetup.gameMode){ case GameModeEnum.GAME_MODE_PUZZLE: _local3.resetToPreviousStats(); break; default: resetDifficulty(); resetScore(); break; }; _arg1.target.removeEventListener(MouseEvent.CLICK, onRetryEvent); mExitCode = EXIT_RETRY; requestState(STATE_EXIT); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } protected function onContinueEvent(_arg1:MouseEvent):void{ var _local4:String; var _local5:OkJakePopup; if (mState == STATE_EVENTS){ return; }; _arg1.target.removeEventListener(MouseEvent.CLICK, onContinueEvent); var _local2:Object = mPageParams["gameManager"]; var _local3:Object = _local2["gameStats"]; _local3.setScoreToPreviousTotalScore(); _local3.setPreviousStats(); increaseDifficulty(); if (setupNextBoard()){ mExitCode = EXIT_CONTINUE; requestState(STATE_EXIT); } else { _local4 = null; if (GameSetup.startDifficulty == DifficultyEnum.DIFFICULTY_EVIL){ _local4 = "Wow! You beat the Evil Level! You are a Snood Savior!"; } else { _local4 = "Your Snood-Fu is Strong! You should Snood up a level"; }; _local5 = new OkJakePopup(_local4); _local5.addEventListener(MouseEvent.CLICK, onContinueOKEvent); }; SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } protected function onContinueOKEvent(_arg1:MouseEvent):void{ _arg1.target.removeEventListener(MouseEvent.CLICK, onContinueOKEvent); resetBoard(); resetDifficulty(); resetScore(); mExitCode = EXIT_NORMAL; requestState(STATE_EXIT); } protected function exitPage():void{ if ((((GameSetup.gameType == GameTypeEnum.GAME_TYPE_MULTIPLAYER)) && (!((mExitCode == EXIT_REMATCH))))){ MenuLive.Instance.endSession(); }; var _local1:PageEvent = new PageEvent(PageEvent.EXIT_PAGE); _local1.exitCode = mExitCode; _local1.pageObject = this; _local1.pageParams = mPageParams; MenuMain.Instance.dispatchEvent(_local1); } } }//package menucode
Section 236
//ScratchFoil (menucode.ScratchFoil) package menucode { import flash.display.*; import flash.events.*; import com.rkg.media.*; import flash.media.*; public class ScratchFoil extends MovieClip { public var foil:ScratchFoilBase; private var scratchCoin:ScratchCoin; private var dragStatus:Boolean;// = false private var drawStatus:Boolean;// = false private var maskBitmapData:BitmapData; private var maskBitmap:Bitmap; private var totalPixels:Number; private var scratchSoundLock:Boolean;// = false private var scratchSoundChannel:SoundChannel; public static const SCRATCH_DISTANCE:int = 25; public function ScratchFoil(){ if (stage != null){ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; }; buttonMode = true; useHandCursor = true; setupMask(); setupCoin(); addEventListener(MouseEvent.MOUSE_OVER, onMouseOver, false, 0, true); addEventListener(MouseEvent.MOUSE_OUT, onMouseOut, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, onMouseUp, false, 0, true); addEventListener(Event.ENTER_FRAME, updateFrame, false, 0, true); } private function updateFrame(_arg1:Event):void{ var _local2:int; var _local3:int; var _local4:int; if (dragStatus == true){ if ((((scratchSoundLock == false)) && ((drawStatus == true)))){ _local2 = (mouseX - scratchCoin.x); _local3 = (mouseY - scratchCoin.y); _local4 = ((_local2 * _local2) + (_local3 * _local3)); trace(("deltaSquare " + _local4.toString())); if (_local4 >= (SCRATCH_DISTANCE * SCRATCH_DISTANCE)){ scratchSoundLock = true; scratchSoundChannel = SoundManager.Instance.play(Constants.SOUND_SCRATCH); scratchSoundChannel.addEventListener(Event.SOUND_COMPLETE, onScratchSoundComplete); }; }; scratchCoin.x = mouseX; scratchCoin.y = mouseY; if (drawStatus == true){ maskBitmapData.draw(scratchCoin, scratchCoin.transform.matrix, null, BlendMode.ERASE, null, false); }; }; } private function onScratchSoundComplete(_arg1:Event):void{ scratchSoundLock = false; } private function onMouseOver(_arg1:MouseEvent):void{ scratchCoin.visible = true; dragStatus = true; } private function onMouseOut(_arg1:MouseEvent):void{ scratchCoin.visible = false; dragStatus = false; } private function onMouseDown(_arg1:MouseEvent):void{ drawStatus = true; } private function onMouseUp(_arg1:MouseEvent):void{ drawStatus = false; analyzeMask(); } private function analyzeMask():void{ var _local2:Number; var _local4:int; var _local1:int; var _local3:int; while (_local3 < maskBitmapData.width) { _local4 = 0; while (_local4 < maskBitmapData.height) { _local2 = maskBitmapData.getPixel32(_local3, _local4); if (_local2 == 0){ _local1++; }; _local4++; }; _local3++; }; if (_local1 > (totalPixels * 0.7)){ wrapUp(); }; } private function wrapUp():void{ removeChild(maskBitmap); removeChild(foil); removeChild(scratchCoin); maskBitmapData.dispose(); dragStatus = false; drawStatus = false; removeEventListener(MouseEvent.MOUSE_OVER, onMouseOver); removeEventListener(MouseEvent.MOUSE_OUT, onMouseOut); removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); removeEventListener(Event.ENTER_FRAME, updateFrame); var _local1:MovieClip = (parent as MovieClip); _local1.gotoAndPlay("continue"); } private function setupMask():void{ maskBitmapData = new BitmapData(this.width, this.height, true, 4294967295); maskBitmap = new Bitmap(maskBitmapData, "auto", false); totalPixels = (maskBitmapData.width * maskBitmapData.height); addChild(maskBitmap); foil.cacheAsBitmap = true; maskBitmap.cacheAsBitmap = true; foil.mask = maskBitmap; } private function setupCoin():void{ scratchCoin = new ScratchCoin(); addChild(scratchCoin); scratchCoin.cacheAsBitmap = true; scratchCoin.mouseEnabled = false; scratchCoin.mouseChildren = false; scratchCoin.visible = false; } } }//package menucode
Section 237
//StaticDesc (menucode.StaticDesc) package menucode { import flash.events.*; import com.rkg.net.*; import com.rkg.display.*; public class StaticDesc { protected var mStatic:Object;// = null protected var mReady:Boolean;// = false protected static var mInstance:StaticDesc = null; public function StaticDesc(){ if (mInstance != null){ throw (new Error("StaticDesc is a singleton, already instantiated.")); }; getStaticData(); } public function getStaticData():void{ var _local1:ServerCom; if (((!((FlashVars.service == null))) && (!((FlashVars.player_id == null))))){ _local1 = new ServerCom(FlashVars.service, FlashVars.player_id); _local1.addEventListener(ServerEvent.SERVER_REPLY, onGetScoreStaticReply); _local1.addEventListener(ServerEvent.SERVER_ERROR, onGetScoreStaticReplyError); _local1.addEventListener(ServerEvent.SERVER_IOERROR, onIOError); _local1.scoreStaticData(); } else { mReady = true; }; } public function onGetScoreStaticReply(_arg1:ServerEvent):void{ mStatic = _arg1.replyObject; mReady = true; } public function onGetScoreStaticReplyError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = (("Our servers reported an error." + _arg1.replyObject) + "\n"); if (FlashVars.remote_ip != null){ ConsoleSprite.Instance.print(("Remote ip=" + FlashVars.remote_ip)); }; var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onErrorOK); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/backend?type=static_data")); } public function onIOError(_arg1:ServerEvent):void{ ConsoleSprite.Instance.text = (("There was a network IOError." + _arg1.replyObject) + "\n"); if (FlashVars.remote_ip != null){ ConsoleSprite.Instance.print(("Remote ip=" + FlashVars.remote_ip)); }; var _local2:OkErrorPopup = new OkErrorPopup(); _local2.addEventListener(MouseEvent.CLICK, onErrorOK); Analytics.Instance.trackPage((FlashVars.service + "flash/error/network/timeout?type=static_data")); } public function onErrorOK(_arg1:MouseEvent):void{ _arg1.target.removeEventListener(MouseEvent.CLICK, onErrorOK); mReady = true; } public function isReady():Boolean{ return (mReady); } public function hasData():Boolean{ return (Boolean(!((mStatic == null)))); } public function get achievements():Array{ return (mStatic.achievements); } public function get scores():Array{ return (mStatic.scores); } public function get levels():Array{ return (mStatic.levels); } public function get features():Array{ return (mStatic.features); } public function get all():Object{ return (mStatic); } public function getObject(_arg1:Array, _arg2:String):Object{ var _local5:Object; var _local3:Object; var _local4:int; while (_local4 < _arg1.length) { _local5 = _arg1[_local4]; if (_local5["name"] === _arg2){ _local3 = _local5; break; }; _local4++; }; return (_local3); } public function getScoreByName(_arg1:String):Object{ return (getObject(mStatic.scores, _arg1)); } public function getAchievementByName(_arg1:String):Object{ return (getObject(mStatic.achievements, _arg1)); } public function getLevelByName(_arg1:String):Object{ return (getObject(mStatic.levels, _arg1)); } public function getLevelByIndexPorperty(_arg1:String):Object{ var _local5:Object; var _local2:Object; var _local3:Array = mStatic.levels; var _local4:int; while (_local4 < _local3.length) { _local5 = _local3[_local4]; if (_local5["index"] == _arg1){ _local2 = _local5; break; }; _local4++; }; return (_local2); } public static function get Instance():StaticDesc{ if (mInstance == null){ mInstance = new (StaticDesc); }; return (mInstance); } } }//package menucode
Section 238
//TimerEx (menucode.TimerEx) package menucode { import flash.utils.*; public class TimerEx extends Timer { public var extra:Object;// = null public function TimerEx(_arg1:Number, _arg2:int=0){ super(_arg1, _arg2); } } }//package menucode
Section 239
//Utils (menucode.Utils) package menucode { import flash.geom.*; import flash.net.*; public class Utils { public static const DEBUG:Boolean = true; public static const CHARCODE_A:int = "A".charCodeAt(0); public static const CHARCODE_Z:int = "Z".charCodeAt(0); public static const CHARCODE_a:int = "a".charCodeAt(0); public static const CHARCODE_CONVERSION:int = (CHARCODE_a - CHARCODE_A); public static function trace(_arg1):void{ if (DEBUG){ trace(_arg1); }; } public static function stringToBoolean(_arg1:String):Boolean{ if (_arg1.toLowerCase() == "true"){ return (true); }; return (false); } public static function stringToColor(_arg1:String):uint{ var _local2:int = _arg1.indexOf("#"); if (_local2 >= 0){ return (uint(parseInt(_arg1.substring((_local2 + 1)), 16))); }; return (uint(parseInt(_arg1))); } public static function isWhitespace(_arg1:String):Boolean{ return (Boolean((((((((((_arg1 == "\r")) || ((_arg1 == "\n")))) || ((_arg1 == "\f")))) || ((_arg1 == "\t")))) || ((_arg1 == " "))))); } public static function trim(_arg1:String):String{ var _local2:Array = _arg1.split(""); while (isWhitespace(_local2[0])) { _local2.shift(); }; while (isWhitespace(_local2[(_local2.length - 1)])) { _local2.pop(); }; return (_local2.join("")); } public static function charCodeToLowercase(_arg1:int):int{ if ((((_arg1 >= CHARCODE_A)) && ((_arg1 <= CHARCODE_Z)))){ _arg1 = (_arg1 + CHARCODE_CONVERSION); }; return (_arg1); } public static function distanceSquared(_arg1:Point, _arg2:Point):Number{ var _local3:Number = (_arg2.x - _arg1.x); var _local4:Number = (_arg2.y - _arg1.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function arrayToString(_arg1:Array, _arg2:int=0):String{ if (_arg2 == 0){ return (_arg1.toString()); }; var _local3:String = new String(); _local3 = (_local3 + "["); var _local4:int; while (_local4 < _arg1.length) { if (_local4 > 0){ _local3 = (_local3 + ","); }; _local3 = (_local3 + objectToString(_arg1[_local4], (_arg2 - 1))); _local4++; }; _local3 = (_local3 + "]"); return (_local3); } public static function objectToString(_arg1:Object, _arg2:int=0):String{ var _local5:String; if (_arg1 == null){ return ("null"); }; if (_arg1.constructor == Array){ return (arrayToString((_arg1 as Array), _arg2)); }; if ((((_arg2 == 0)) || (!((_arg1.constructor == Object))))){ return (_arg1.toString()); }; var _local3:int; var _local4:String = new String(); _local4 = (_local4 + "{"); for (_local5 in _arg1) { if (_local3 > 0){ _local4 = (_local4 + ","); }; _local4 = (_local4 + (_local5 + ":")); _local4 = (_local4 + objectToString(_arg1[_local5], (_arg2 - 1))); _local3 = (_local3 + 1); }; _local4 = (_local4 + "}"); return (_local4); } public static function intToString(_arg1:int, _arg2:int):String{ var _local3:Array = _arg2.toString().split(""); while (_local3.length < _arg1) { _local3.unshift("0"); }; return (_local3.join("")); } public static function append(_arg1:Array, _arg2:Array):void{ var _local3:int; while (_local3 < _arg2.length) { _arg1.push(_arg2[_local3]); _local3++; }; } public static function prepend(_arg1:Array, _arg2:Array):void{ var _local3:int = (_arg2.length - 1); while (_local3 >= 0) { _arg1.unshift(_arg2[_local3]); _local3--; }; } public static function dateToString(_arg1:Date, _arg2:String="-"):String{ return (((((_arg1.fullYear + _arg2) + Utils.intToString(2, (_arg1.month + 1))) + _arg2) + Utils.intToString(2, _arg1.date))); } public static function dateToMMDDYY(_arg1:Date, _arg2:String="/"):String{ var _local3:int = (_arg1.fullYear % 100); return (((((Utils.intToString(2, (_arg1.month + 1)) + _arg2) + Utils.intToString(2, _arg1.date)) + _arg2) + Utils.intToString(2, _local3))); } public static function dateTohhmm(_arg1:Date):String{ return (((Utils.intToString(2, _arg1.hours) + ":") + Utils.intToString(2, _arg1.minutes))); } public static function stringToDateTime(_arg1:String):Date{ var _local2:Array = _arg1.split(/[-T+:]/); var _local3:Date = new Date(_local2[0], (_local2[1] - 1), _local2[2], _local2[3], _local2[4], _local2[5], 0); return (_local3); } public static function asciiToHexString(_arg1:String):String{ var _local4:Number; var _local2:Array = []; var _local3:int; while (_local3 < _arg1.length) { _local4 = _arg1.charCodeAt(_local3); _local2.push(_local4.toString(16)); _local3++; }; return (_local2.join("")); } public static function hexStringToAscii(_arg1:String):String{ var _local4:String; var _local5:Number; var _local6:String; var _local2:Array = []; var _local3:int; while (_local3 < _arg1.length) { _local4 = _arg1.substring(_local3, (_local3 + 2)); _local5 = parseInt(_local4, 16); _local6 = String.fromCharCode(_local5); _local2.push(_local6); _local3 = (_local3 + 2); }; return (_local2.join("")); } public static function doFacebookPage(_arg1:String):void{ var _local2:String = _arg1.substring(Constants.FACEBOOK_PREFIX.length); navigateToURL(new URLRequest((("http://www.facebook.com/profile.php?id=" + _local2) + "&ref=nf")), "_blank"); } } }//package menucode
Section 240
//Waiting (menucode.Waiting) package menucode { import flash.events.*; import com.rkg.media.*; public class Waiting { protected var mTimer:Number; protected var mWaitingIcon:Loadingicon; public static const DELAY:Number = 5; protected static var mInstance:Waiting = null; public function Waiting(){ if (mInstance != null){ throw (new Error("Waiting is a singleton, already instantiated")); }; mTimer = -1; mWaitingIcon = new Loadingicon(); mWaitingIcon.stop(); } public function get icon():Loadingicon{ return (mWaitingIcon); } public function setTimer(_arg1:Number):void{ mTimer = _arg1; } public function update(_arg1:Number):void{ if (mWaitingIcon == null){ return; }; if (mWaitingIcon.visible == false){ return; }; if (mTimer > 0){ mTimer = (mTimer - _arg1); if ((((mTimer <= 0)) && ((mWaitingIcon.parent == null)))){ MenuMain.Instance.addChild(mWaitingIcon); }; }; } public function onBookEnterFrame(_arg1:Event):void{ if (mWaitingIcon == null){ return; }; if (mWaitingIcon.visible == false){ return; }; if (mWaitingIcon.parent == null){ return; }; if (mWaitingIcon.loadingbook.currentFrame == 1){ SoundManager.Instance.play(Constants.SOUND_WAITINGICON_PAGETURN); }; } public static function get Instance():Waiting{ if (mInstance == null){ mInstance = new (Waiting); }; return (mInstance); } public static function show(_arg1:String, _arg2:Number=5):void{ Instance.icon.visible = true; Instance.icon.play(); Instance.icon.x = (MenuMain.Instance.stage.stageWidth >> 1); Instance.icon.y = (MenuMain.Instance.stage.stageHeight >> 1); Instance.icon.loadingbook.addEventListener(Event.ENTER_FRAME, Instance.onBookEnterFrame); if (_arg1 != null){ Instance.icon.loadingmessage.text = _arg1; }; if (_arg2 > 0){ Instance.setTimer(_arg2); } else { MenuMain.Instance.addChild(Instance.icon); }; } public static function hide():void{ Instance.icon.visible = false; Instance.icon.stop(); Instance.icon.loadingbook.removeEventListener(Event.ENTER_FRAME, Instance.onBookEnterFrame); if (Instance.icon.parent != null){ Instance.icon.parent.removeChild(Instance.icon); }; } public static function isWaiting():Boolean{ return (Boolean((Instance.icon.visible == true))); } } }//package menucode
Section 241
//YesNoPopup (menucode.YesNoPopup) package menucode { import flash.display.*; import menucode.*; import flash.events.*; import com.rkg.media.*; class YesNoPopup extends OkPopup { public static const POPUP_YES_EVENT:String = "PopUpYesEvent"; public static const POPUP_NO_EVENT:String = "PopUpNoEvent"; function YesNoPopup(_arg1:String=null){ super(_arg1); } override protected function get ui():MovieClip{ return (MenuMain.Instance.YesNoPopupObject); } override protected function addEventListeners():void{ ui.YesButton.addEventListener(MouseEvent.CLICK, onYesClick); ui.NoButton.addEventListener(MouseEvent.CLICK, onNoClick); } override protected function removeEventListeners():void{ ui.YesButton.removeEventListener(MouseEvent.CLICK, onYesClick); ui.NoButton.removeEventListener(MouseEvent.CLICK, onNoClick); } protected function onYesClick(_arg1:MouseEvent):void{ delist(); removeEventListeners(); this.dispatchEvent(new Event(YesNoPopup.POPUP_YES_EVENT)); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } protected function onNoClick(_arg1:MouseEvent):void{ MenuMain.Instance.delistYesNoPopup(); removeEventListeners(); this.dispatchEvent(new Event(YesNoPopup.POPUP_NO_EVENT)); SoundManager.Instance.play(Constants.SOUND_BUTTONCLICK); } } }//package menucode
Section 242
//aif (monkeycoin.aif) package monkeycoin { import flash.media.*; public dynamic class aif extends Sound { } }//package monkeycoin
Section 243
//Stats (net.hires.debug.Stats) package net.hires.debug { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.geom.*; import flash.utils.*; public class Stats extends Sprite { private var _xml:XML; private var _text:TextField; private var _style:StyleSheet; private var _timer:uint; private var _fps:uint; private var _ms:uint; private var _ms_prev:uint; private var _mem:Number; private var _mem_max:Number; private var _graph:BitmapData; private var _rectangle:Rectangle; private var _fps_graph:uint; private var _mem_graph:uint; private var _mem_max_graph:uint; private var _theme:Object; public function Stats(_arg1:Object=null):void{ _theme = {bg:51, fps:0xFFFF00, ms:0xFF00, mem:0xFFFF, memmax:0xFF0070}; super(); if (_arg1){ if (_arg1.bg != null){ _theme.bg = _arg1.bg; }; if (_arg1.fps != null){ _theme.fps = _arg1.fps; }; if (_arg1.ms != null){ _theme.ms = _arg1.ms; }; if (_arg1.mem != null){ _theme.mem = _arg1.mem; }; if (_arg1.memmax != null){ _theme.memmax = _arg1.memmax; }; }; addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true); } private function init(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, init); graphics.beginFill(_theme.bg); graphics.drawRect(0, 0, 70, 50); graphics.endFill(); _mem_max = 0; _xml = <xml><fps>FPS:</fps><ms>MS:</ms><mem>MEM:</mem><memMax>MAX:</memMax></xml> ; _style = new StyleSheet(); _style.setStyle("xml", {fontSize:"9px", fontFamily:"_sans", leading:"-2px"}); _style.setStyle("fps", {color:hex2css(_theme.fps)}); _style.setStyle("ms", {color:hex2css(_theme.ms)}); _style.setStyle("mem", {color:hex2css(_theme.mem)}); _style.setStyle("memMax", {color:hex2css(_theme.memmax)}); _text = new TextField(); _text.width = 70; _text.height = 50; _text.styleSheet = _style; _text.condenseWhite = true; _text.selectable = false; _text.mouseEnabled = false; addChild(_text); var _local2:Bitmap = new Bitmap((_graph = new BitmapData(70, 50, false, _theme.bg))); _local2.y = 50; addChild(_local2); _rectangle = new Rectangle(0, 0, 1, _graph.height); } public function addListeners():void{ addEventListener(MouseEvent.CLICK, onClick); addEventListener(Event.ENTER_FRAME, update); } public function removeListeners():void{ removeEventListener(MouseEvent.CLICK, onClick); removeEventListener(Event.ENTER_FRAME, update); } private function update(_arg1:Event):void{ _timer = getTimer(); if ((_timer - 1000) > _ms_prev){ _ms_prev = _timer; _mem = Number((System.totalMemory * 9.54E-7).toFixed(3)); _mem_max = ((_mem_max > _mem)) ? _mem_max : _mem; _fps_graph = Math.min(50, ((_fps / stage.frameRate) * 50)); _mem_graph = (Math.min(50, Math.sqrt(Math.sqrt((_mem * 5000)))) - 2); _mem_max_graph = (Math.min(50, Math.sqrt(Math.sqrt((_mem_max * 5000)))) - 2); _graph.scroll(1, 0); _graph.fillRect(_rectangle, _theme.bg); _graph.setPixel(0, (_graph.height - _fps_graph), _theme.fps); _graph.setPixel(0, (_graph.height - ((_timer - _ms) >> 1)), _theme.ms); _graph.setPixel(0, (_graph.height - _mem_graph), _theme.mem); _graph.setPixel(0, (_graph.height - _mem_max_graph), _theme.memmax); _xml.fps = ((("FPS: " + _fps) + " / ") + stage.frameRate); _xml.mem = ("MEM: " + _mem); _xml.memMax = ("MAX: " + _mem_max); _fps = 0; }; _fps++; _xml.ms = ("MS: " + (_timer - _ms)); _ms = _timer; _text.htmlText = _xml; } private function onClick(_arg1:MouseEvent):void{ if (((mouseY / height) > 0.5)){ stage.frameRate--; } else { stage.frameRate++; }; _xml.fps = ((("FPS: " + _fps) + " / ") + stage.frameRate); _text.htmlText = _xml; } private function hex2css(_arg1:int):String{ return (("#" + _arg1.toString(16))); } } }//package net.hires.debug
Section 244
//aif (numbskulls.aif) package numbskulls { import flash.media.*; public dynamic class aif extends Sound { } }//package numbskulls
Section 245
//aif (out01.aif) package out01 { import flash.media.*; public dynamic class aif extends Sound { } }//package out01
Section 246
//aif (out02.aif) package out02 { import flash.media.*; public dynamic class aif extends Sound { } }//package out02
Section 247
//aif (red_plasma_retract.aif) package red_plasma_retract { import flash.media.*; public dynamic class aif extends Sound { } }//package red_plasma_retract
Section 248
//aif (red_plasma_warn.aif) package red_plasma_warn { import flash.media.*; public dynamic class aif extends Sound { } }//package red_plasma_warn
Section 249
//aif (revers_gun.aif) package revers_gun { import flash.media.*; public dynamic class aif extends Sound { } }//package revers_gun
Section 250
//aif (round_complete_03.aif) package round_complete_03 { import flash.media.*; public dynamic class aif extends Sound { } }//package round_complete_03
Section 251
//aif (rowbuilder.aif) package rowbuilder { import flash.media.*; public dynamic class aif extends Sound { } }//package rowbuilder
Section 252
//aif (scratch.aif) package scratch { import flash.media.*; public dynamic class aif extends Sound { } }//package scratch
Section 253
//aif (selectfriend.aif) package selectfriend { import flash.media.*; public dynamic class aif extends Sound { } }//package selectfriend
Section 254
//aif (snood_bounce.aif) package snood_bounce { import flash.media.*; public dynamic class aif extends Sound { } }//package snood_bounce
Section 255
//aif (snood_laugh_01.aif) package snood_laugh_01 { import flash.media.*; public dynamic class aif extends Sound { } }//package snood_laugh_01
Section 256
//aif (snood_laugh_04.aif) package snood_laugh_04 { import flash.media.*; public dynamic class aif extends Sound { } }//package snood_laugh_04
Section 257
//aif (snood_laugh_05.aif) package snood_laugh_05 { import flash.media.*; public dynamic class aif extends Sound { } }//package snood_laugh_05
Section 258
//aif (snood_stick.aif) package snood_stick { import flash.media.*; public dynamic class aif extends Sound { } }//package snood_stick
Section 259
//ZzzAnim_162 (SnoodGame_fla.ZzzAnim_162) package SnoodGame_fla { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class ZzzAnim_162 extends MovieClip { public function ZzzAnim_162(){ addFrameScript(0, frame1); } function frame1(){ this.gotoAndPlay(Math.round((Math.random() * 60))); } } }//package SnoodGame_fla
Section 260
//aif (stone_explode.aif) package stone_explode { import flash.media.*; public dynamic class aif extends Sound { } }//package stone_explode
Section 261
//aif (stone_rumble.aif) package stone_rumble { import flash.media.*; public dynamic class aif extends Sound { } }//package stone_rumble
Section 262
//aif (swish01.aif) package swish01 { import flash.media.*; public dynamic class aif extends Sound { } }//package swish01
Section 263
//aif (swish02.aif) package swish02 { import flash.media.*; public dynamic class aif extends Sound { } }//package swish02
Section 264
//aif (swish03.aif) package swish03 { import flash.media.*; public dynamic class aif extends Sound { } }//package swish03
Section 265
//aif (swish04.aif) package swish04 { import flash.media.*; public dynamic class aif extends Sound { } }//package swish04
Section 266
//aif (teleout_02.aif) package teleout_02 { import flash.media.*; public dynamic class aif extends Sound { } }//package teleout_02
Section 267
//aif (transition_02.aif) package transition_02 { import flash.media.*; public dynamic class aif extends Sound { } }//package transition_02
Section 268
//aif (transport.aif) package transport { import flash.media.*; public dynamic class aif extends Sound { } }//package transport
Section 269
//aif (triumph.aif) package triumph { import flash.media.*; public dynamic class aif extends Sound { } }//package triumph
Section 270
//aif (wedied.aif) package wedied { import flash.media.*; public dynamic class aif extends Sound { } }//package wedied
Section 271
//Achievement01 (Achievement01) package { import flash.display.*; public dynamic class Achievement01 extends MovieClip { } }//package
Section 272
//Achievement02 (Achievement02) package { import flash.display.*; public dynamic class Achievement02 extends MovieClip { } }//package
Section 273
//Achievement03 (Achievement03) package { import flash.display.*; public dynamic class Achievement03 extends MovieClip { } }//package
Section 274
//Achievement04 (Achievement04) package { import flash.display.*; public dynamic class Achievement04 extends MovieClip { } }//package
Section 275
//Achievement05 (Achievement05) package { import flash.display.*; public dynamic class Achievement05 extends MovieClip { } }//package
Section 276
//Achievement06 (Achievement06) package { import flash.display.*; public dynamic class Achievement06 extends MovieClip { } }//package
Section 277
//Achievement07 (Achievement07) package { import flash.display.*; public dynamic class Achievement07 extends MovieClip { } }//package
Section 278
//Achievement08 (Achievement08) package { import flash.display.*; public dynamic class Achievement08 extends MovieClip { } }//package
Section 279
//Achievement09 (Achievement09) package { import flash.display.*; public dynamic class Achievement09 extends MovieClip { } }//package
Section 280
//Achievement10 (Achievement10) package { import flash.display.*; public dynamic class Achievement10 extends MovieClip { } }//package
Section 281
//AchievementAnchor (AchievementAnchor) package { import flash.display.*; public dynamic class AchievementAnchor extends MovieClip { } }//package
Section 282
//AchievementPanelBig (AchievementPanelBig) package { import flash.display.*; public dynamic class AchievementPanelBig extends MovieClip { public var tooltip05:AchievementTooltip05; public var anchor06:AchievementAnchor; public var anchor07:AchievementAnchor; public var anchor04:AchievementAnchor; public var tooltip08:AchievementTooltip08; public var anchor05:AchievementAnchor; public var tooltip09:AchievementTooltip09; public var anchor02:AchievementAnchor; public var anchor03:AchievementAnchor; public var anchor01:AchievementAnchor; public var anchor10:AchievementAnchor; public var tooltip02:AchievementTooltip02; public var tooltip10:AchievementTooltip10; public var tooltip03:AchievementTooltip03; public var tooltip01:AchievementTooltip01; public var tooltip06:AchievementTooltip06; public var anchor08:AchievementAnchor; public var tooltip07:AchievementTooltip07; public var anchor09:AchievementAnchor; public var tooltip04:AchievementTooltip04; } }//package
Section 283
//AchievementPanelBigBase (AchievementPanelBigBase) package { import flash.display.*; public dynamic class AchievementPanelBigBase extends MovieClip { } }//package
Section 284
//AchievementPlayerInfo (AchievementPlayerInfo) package { import flash.display.*; import flash.text.*; public dynamic class AchievementPlayerInfo extends MovieClip { public var achievementsnumber:TextField; public var ranknumber:TextField; public var portrait:Portrait; public var playername:TextField; } }//package
Section 285
//AchievementsPanelSmall (AchievementsPanelSmall) package { import flash.display.*; public dynamic class AchievementsPanelSmall extends MovieClip { public var anchor06:AchievementAnchor; public var anchor07:AchievementAnchor; public var anchor04:AchievementAnchor; public var anchor05:AchievementAnchor; public var anchor02:AchievementAnchor; public var anchor03:AchievementAnchor; public var anchor10:AchievementAnchor; public var anchor01:AchievementAnchor; public var anchor08:AchievementAnchor; public var anchor09:AchievementAnchor; } }//package
Section 286
//AchievementsTabButton (AchievementsTabButton) package { import flash.display.*; public dynamic class AchievementsTabButton extends MovieClip { public var tabselected:RankingsBottomTabSelected; public var tabunselected:RankingsBottomTabUnselected; } }//package
Section 287
//AchievementTooltip01 (AchievementTooltip01) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip01 extends AchievementTooltip { public function AchievementTooltip01(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(1); } } }//package
Section 288
//AchievementTooltip02 (AchievementTooltip02) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip02 extends AchievementTooltip { public function AchievementTooltip02(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(2); } } }//package
Section 289
//AchievementTooltip03 (AchievementTooltip03) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip03 extends AchievementTooltip { public function AchievementTooltip03(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(3); } } }//package
Section 290
//AchievementTooltip04 (AchievementTooltip04) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip04 extends AchievementTooltip { public function AchievementTooltip04(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(4); } } }//package
Section 291
//AchievementTooltip05 (AchievementTooltip05) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip05 extends AchievementTooltip { public function AchievementTooltip05(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(5); } } }//package
Section 292
//AchievementTooltip06 (AchievementTooltip06) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip06 extends AchievementTooltip { public function AchievementTooltip06(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(6); } } }//package
Section 293
//AchievementTooltip07 (AchievementTooltip07) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip07 extends AchievementTooltip { public function AchievementTooltip07(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(7); } } }//package
Section 294
//AchievementTooltip08 (AchievementTooltip08) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip08 extends AchievementTooltip { public function AchievementTooltip08(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(8); } } }//package
Section 295
//AchievementTooltip09 (AchievementTooltip09) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip09 extends AchievementTooltip { public function AchievementTooltip09(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(9); } } }//package
Section 296
//AchievementTooltip10 (AchievementTooltip10) package { import flash.display.*; import flash.text.*; import menucode.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class AchievementTooltip10 extends AchievementTooltip { public function AchievementTooltip10(){ addFrameScript(0, frame1); } function frame1(){ icon.gotoAndStop(10); } } }//package
Section 297
//ActionButton (ActionButton) package { import flash.display.*; public dynamic class ActionButton extends MovieClip { } }//package
Section 298
//ActionButtonBaseGreen (ActionButtonBaseGreen) package { import flash.display.*; public dynamic class ActionButtonBaseGreen extends SimpleButton { } }//package
Section 299
//ActionButtonBaseRed (ActionButtonBaseRed) package { import flash.display.*; public dynamic class ActionButtonBaseRed extends SimpleButton { } }//package
Section 300
//ActionButtonBaseYellow (ActionButtonBaseYellow) package { import flash.display.*; public dynamic class ActionButtonBaseYellow extends SimpleButton { } }//package
Section 301
//ArrowBack (ArrowBack) package { import flash.display.*; public dynamic class ArrowBack extends SimpleButton { } }//package
Section 302
//ArrowDone (ArrowDone) package { import flash.display.*; public dynamic class ArrowDone extends SimpleButton { } }//package
Section 303
//ArrowNext (ArrowNext) package { import flash.display.*; public dynamic class ArrowNext extends SimpleButton { } }//package
Section 304
//Arrows (Arrows) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class Arrows extends MovieClip { public function Arrows(){ addFrameScript(14, frame15, 29, frame30, 44, frame45); } function frame15(){ this.gotoAndPlay("waiting"); } function frame30(){ this.gotoAndPlay("ready"); } function frame45(){ this.gotoAndPlay("timeout"); } } }//package
Section 305
//Black (Black) package { import flash.display.*; public dynamic class Black extends MovieClip { } }//package
Section 306
//BlueNebula (BlueNebula) package { import flash.display.*; public dynamic class BlueNebula extends BitmapData { public function BlueNebula(_arg1:int=64, _arg2:int=64){ super(_arg1, _arg2); } } }//package
Section 307
//Border (Border) package { import flash.display.*; public dynamic class Border extends MovieClip { public var mc_mousedetect:MovieClip; } }//package
Section 308
//BorderText (BorderText) package { import flash.display.*; import flash.text.*; public dynamic class BorderText extends MovieClip { public var snoodsused:TextField; public var score:TextField; public var mode:TextField; public var difficulty:TextField; } }//package
Section 309
//Button_1player (Button_1player) package { import flash.display.*; public dynamic class Button_1player extends SimpleButton { } }//package
Section 310
//Button_2pmanager (Button_2pmanager) package { import flash.display.*; public dynamic class Button_2pmanager extends SimpleButton { } }//package
Section 311
//Button_addtoprofile (Button_addtoprofile) package { import flash.display.*; public dynamic class Button_addtoprofile extends SimpleButton { } }//package
Section 312
//Button_back (Button_back) package { import flash.display.*; public dynamic class Button_back extends SimpleButton { } }//package
Section 313
//Button_challenge (Button_challenge) package { import flash.display.*; public dynamic class Button_challenge extends SimpleButton { } }//package
Section 314
//Button_challengeafriend (Button_challengeafriend) package { import flash.display.*; public dynamic class Button_challengeafriend extends SimpleButton { } }//package
Section 315
//Button_challengeanother (Button_challengeanother) package { import flash.display.*; public dynamic class Button_challengeanother extends SimpleButton { } }//package
Section 316
//Button_check (Button_check) package { import flash.display.*; public dynamic class Button_check extends SimpleButton { } }//package
Section 317
//Button_classic (Button_classic) package { import flash.display.*; public dynamic class Button_classic extends SimpleButton { } }//package
Section 318
//Button_continue (Button_continue) package { import flash.display.*; public dynamic class Button_continue extends SimpleButton { } }//package
Section 319
//Button_credits (Button_credits) package { import flash.display.*; public dynamic class Button_credits extends SimpleButton { } }//package
Section 320
//Button_difficulty (Button_difficulty) package { import flash.display.*; public dynamic class Button_difficulty extends SimpleButton { } }//package
Section 321
//Button_exit (Button_exit) package { import flash.display.*; public dynamic class Button_exit extends SimpleButton { } }//package
Section 322
//Button_featurestore (Button_featurestore) package { import flash.display.*; public dynamic class Button_featurestore extends SimpleButton { } }//package
Section 323
//Button_gameguide (Button_gameguide) package { import flash.display.*; public dynamic class Button_gameguide extends SimpleButton { } }//package
Section 324
//Button_instructions (Button_instructions) package { import flash.display.*; public dynamic class Button_instructions extends SimpleButton { } }//package
Section 325
//Button_invit (Button_invit) package { import flash.display.*; public dynamic class Button_invit extends SimpleButton { } }//package
Section 326
//Button_inviteanother (Button_inviteanother) package { import flash.display.*; public dynamic class Button_inviteanother extends SimpleButton { } }//package
Section 327
//Button_live (Button_live) package { import flash.display.*; public dynamic class Button_live extends SimpleButton { } }//package
Section 328
//Button_noads (Button_noads) package { import flash.display.*; public dynamic class Button_noads extends SimpleButton { } }//package
Section 329
//Button_play (Button_play) package { import flash.display.*; public dynamic class Button_play extends SimpleButton { } }//package
Section 330
//Button_playalone (Button_playalone) package { import flash.display.*; public dynamic class Button_playalone extends SimpleButton { } }//package
Section 331
//Button_puzzle (Button_puzzle) package { import flash.display.*; public dynamic class Button_puzzle extends SimpleButton { } }//package
Section 332
//Button_rankings (Button_rankings) package { import flash.display.*; public dynamic class Button_rankings extends SimpleButton { } }//package
Section 333
//Button_rematch (Button_rematch) package { import flash.display.*; public dynamic class Button_rematch extends SimpleButton { } }//package
Section 334
//Button_resendwait (Button_resendwait) package { import flash.display.*; public dynamic class Button_resendwait extends SimpleButton { } }//package
Section 335
//Button_singleplayer (Button_singleplayer) package { import flash.display.*; public dynamic class Button_singleplayer extends SimpleButton { } }//package
Section 336
//Button_snoods (Button_snoods) package { import flash.display.*; public dynamic class Button_snoods extends SimpleButton { } }//package
Section 337
//Button_story (Button_story) package { import flash.display.*; public dynamic class Button_story extends SimpleButton { } }//package
Section 338
//Button_timeattack (Button_timeattack) package { import flash.display.*; public dynamic class Button_timeattack extends SimpleButton { } }//package
Section 339
//Button_tryagain (Button_tryagain) package { import flash.display.*; public dynamic class Button_tryagain extends SimpleButton { } }//package
Section 340
//buttongroup_back (buttongroup_back) package { import flash.display.*; public dynamic class buttongroup_back extends MovieClip { public var BackButton:ArrowBack; } }//package
Section 341
//buttongroup_play (buttongroup_play) package { import flash.display.*; public dynamic class buttongroup_play extends MovieClip { public var PlayButton:Button_play; } }//package
Section 342
//buttongroup_timeout (buttongroup_timeout) package { import flash.display.*; public dynamic class buttongroup_timeout extends MovieClip { public var AloneButton:Button_playalone; public var ResendButton:Button_resendwait; public var AnotherButton:Button_challengeanother; } }//package
Section 343
//Buttons (Buttons) package { import flash.display.*; public dynamic class Buttons extends MovieClip { public var musicicon:Controlicon_music; public var quiticon:Controlicon_quit; public var qualityicon:Controlicon_quality; public var soundicon:Controlicon_sound; } }//package
Section 344
//ChallengeIndicator (ChallengeIndicator) package { import flash.display.*; import flash.text.*; public dynamic class ChallengeIndicator extends MovieClip { public var challengecounter:TextField; } }//package
Section 345
//Challengemessage (Challengemessage) package { import flash.display.*; public dynamic class Challengemessage extends MovieClip { } }//package
Section 346
//ChallengeRecord (ChallengeRecord) package { import flash.display.*; import flash.text.*; public dynamic class ChallengeRecord extends MovieClip { public var YourScore:TextField; public var strip:ChallengeRecordStrip; public var OpponentScore:TextField; public var statusicon:StatusIcon; public var Mode:TextField; public var OpponentPortrait:Portrait; public var Date:TextField; public var VsOpponent:TextField; public var actionbutton:ActionButton; public var LiveNoScore:TextField; } }//package
Section 347
//ChallengeRecordHeader (ChallengeRecordHeader) package { import flash.display.*; public dynamic class ChallengeRecordHeader extends MovieClip { } }//package
Section 348
//ChallengeRecordStrip (ChallengeRecordStrip) package { import flash.display.*; public dynamic class ChallengeRecordStrip extends MovieClip { } }//package
Section 349
//ChallengeRefreshButton (ChallengeRefreshButton) package { import flash.display.*; public dynamic class ChallengeRefreshButton extends SimpleButton { } }//package
Section 350
//ChallengesBkg (ChallengesBkg) package { import flash.display.*; public dynamic class ChallengesBkg extends MovieClip { } }//package
Section 351
//ChallengesBkgSetup (ChallengesBkgSetup) package { import flash.display.*; public dynamic class ChallengesBkgSetup extends MovieClip { } }//package
Section 352
//ClickToBuy (ClickToBuy) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class ClickToBuy extends MovieClip { public function ClickToBuy(){ addFrameScript(0, frame1, 6, frame7); } function frame1(){ this.stop(); } function frame7(){ this.stop(); } } }//package
Section 353
//ClickToBuyAnim (ClickToBuyAnim) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class ClickToBuyAnim extends MovieClip { public var clicktobuy:ClickToBuy; public function ClickToBuyAnim(){ addFrameScript(0, frame1); } function frame1(){ this.mouseEnabled = false; this.mouseChildren = false; } } }//package
Section 354
//Coins_line2 (Coins_line2) package { import flash.display.*; import flash.text.*; public dynamic class Coins_line2 extends MovieClip { public var linetext:TextField; } }//package
Section 355
//ContinueButton (ContinueButton) package { import flash.display.*; public dynamic class ContinueButton extends SimpleButton { } }//package
Section 356
//Controlicon_music (Controlicon_music) package { import flash.display.*; public dynamic class Controlicon_music extends MovieClip { } }//package
Section 357
//Controlicon_quality (Controlicon_quality) package { import flash.display.*; public dynamic class Controlicon_quality extends MovieClip { } }//package
Section 358
//Controlicon_quit (Controlicon_quit) package { import flash.display.*; public dynamic class Controlicon_quit extends MovieClip { } }//package
Section 359
//Controlicon_sound (Controlicon_sound) package { import flash.display.*; public dynamic class Controlicon_sound extends MovieClip { } }//package
Section 360
//Corner (Corner) package { import flash.display.*; public dynamic class Corner extends MovieClip { public var ring:Ring; public var fold:Fold; public var white:White; } }//package
Section 361
//Crystal (Crystal) package { import flash.text.*; public dynamic class Crystal extends Font { } }//package
Section 362
//DangerMeter (DangerMeter) package { import flash.display.*; public dynamic class DangerMeter extends MovieClip { } }//package
Section 363
//DangerMeterAnim (DangerMeterAnim) package { import flash.display.*; public dynamic class DangerMeterAnim extends MovieClip { } }//package
Section 364
//DetailedStatsButton (DetailedStatsButton) package { import flash.display.*; public dynamic class DetailedStatsButton extends SimpleButton { } }//package
Section 365
//Difficulty_message (Difficulty_message) package { import flash.display.*; import flash.text.*; public dynamic class Difficulty_message extends MovieClip { public var messagetext:TextField; } }//package
Section 366
//DifficultyToggle (DifficultyToggle) package { import flash.display.*; public dynamic class DifficultyToggle extends MovieClip { } }//package
Section 367
//Energy (Energy) package { import flash.display.*; public dynamic class Energy extends BitmapData { public function Energy(_arg1:int=0x0200, _arg2:int=0x0100){ super(_arg1, _arg2); } } }//package
Section 368
//Exclamation (Exclamation) package { import flash.display.*; public dynamic class Exclamation extends MovieClip { } }//package
Section 369
//Explosion (Explosion) package { import flash.display.*; public dynamic class Explosion extends BitmapData { public function Explosion(_arg1:int=128, _arg2:int=32){ super(_arg1, _arg2); } } }//package
Section 370
//FinalScore (FinalScore) package { import flash.display.*; public dynamic class FinalScore extends MovieClip { } }//package
Section 371
//Fireworks0 (Fireworks0) package { import flash.display.*; public dynamic class Fireworks0 extends BitmapData { public function Fireworks0(_arg1:int=128, _arg2:int=128){ super(_arg1, _arg2); } } }//package
Section 372
//Fireworks1 (Fireworks1) package { import flash.display.*; public dynamic class Fireworks1 extends BitmapData { public function Fireworks1(_arg1:int=128, _arg2:int=128){ super(_arg1, _arg2); } } }//package
Section 373
//Fireworks2 (Fireworks2) package { import flash.display.*; public dynamic class Fireworks2 extends BitmapData { public function Fireworks2(_arg1:int=128, _arg2:int=128){ super(_arg1, _arg2); } } }//package
Section 374
//Fireworks3 (Fireworks3) package { import flash.display.*; public dynamic class Fireworks3 extends BitmapData { public function Fireworks3(_arg1:int=128, _arg2:int=128){ super(_arg1, _arg2); } } }//package
Section 375
//Fireworks4 (Fireworks4) package { import flash.display.*; public dynamic class Fireworks4 extends BitmapData { public function Fireworks4(_arg1:int=128, _arg2:int=128){ super(_arg1, _arg2); } } }//package
Section 376
//Fireworks5 (Fireworks5) package { import flash.display.*; public dynamic class Fireworks5 extends BitmapData { public function Fireworks5(_arg1:int=128, _arg2:int=128){ super(_arg1, _arg2); } } }//package
Section 377
//Fireworks6 (Fireworks6) package { import flash.display.*; public dynamic class Fireworks6 extends BitmapData { public function Fireworks6(_arg1:int=128, _arg2:int=128){ super(_arg1, _arg2); } } }//package
Section 378
//Fireworks7 (Fireworks7) package { import flash.display.*; public dynamic class Fireworks7 extends BitmapData { public function Fireworks7(_arg1:int=128, _arg2:int=128){ super(_arg1, _arg2); } } }//package
Section 379
//focusRectSkin (focusRectSkin) package { import flash.display.*; public dynamic class focusRectSkin extends MovieClip { } }//package
Section 380
//Fold (Fold) package { import flash.display.*; public dynamic class Fold extends MovieClip { } }//package
Section 381
//FriendBkg (FriendBkg) package { import flash.display.*; public dynamic class FriendBkg extends MovieClip { } }//package
Section 382
//Friendsdiamond (Friendsdiamond) package { import flash.display.*; public dynamic class Friendsdiamond extends MovieClip { } }//package
Section 383
//Friendsindicator (Friendsindicator) package { import flash.display.*; import flash.text.*; public dynamic class Friendsindicator extends MovieClip { public var friendcounter:TextField; } }//package
Section 384
//Getready_numbers (Getready_numbers) package { import flash.display.*; public dynamic class Getready_numbers extends MovieClip { } }//package
Section 385
//GreenNebula (GreenNebula) package { import flash.display.*; public dynamic class GreenNebula extends BitmapData { public function GreenNebula(_arg1:int=64, _arg2:int=64){ super(_arg1, _arg2); } } }//package
Section 386
//group_2pmanager (group_2pmanager) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class group_2pmanager extends MovieClip { public var challengeindicator:ChallengeIndicator; public var button2pmanager:Button_2pmanager; public function group_2pmanager(){ addFrameScript(0, frame1); } function frame1(){ challengeindicator.mouseEnabled = false; challengeindicator.mouseChildren = false; } } }//package
Section 387
//group_difficulty (group_difficulty) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class group_difficulty extends MovieClip { public var difficultytoggle:DifficultyToggle; public var buttondifficulty:Button_difficulty; public function group_difficulty(){ addFrameScript(0, frame1); } function frame1(){ difficultytoggle.mouseEnabled = false; difficultytoggle.mouseChildren = false; } } }//package
Section 388
//group_instructions (group_instructions) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class group_instructions extends MovieClip { public var buttoninstructions:Button_instructions; public var instructionstoggle:InstructionsToggle; public function group_instructions(){ addFrameScript(0, frame1); } function frame1(){ instructionstoggle.mouseEnabled = false; instructionstoggle.mouseChildren = false; } } }//package
Section 389
//group_invite (group_invite) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class group_invite extends MovieClip { public var friendsindicator:Friendsindicator; public var buttoninvite:Button_invit; public function group_invite(){ addFrameScript(0, frame1); } function frame1(){ friendsindicator.mouseEnabled = false; friendsindicator.mouseChildren = false; } } }//package
Section 390
//group_noads (group_noads) package { import flash.display.*; public dynamic class group_noads extends MovieClip { public var buttonnoads:Button_noads; public var profeature:ProFeatureAnim; } }//package
Section 391
//group_puzzle (group_puzzle) package { import flash.display.*; public dynamic class group_puzzle extends MovieClip { public var buttonpuzzle:Button_puzzle; public var profeature:ProFeatureAnim; } }//package
Section 392
//group_snoods (group_snoods) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class group_snoods extends MovieClip { public var buttonsnoods:Button_snoods; public var snoodstoggle:SnoodsToggle; public function group_snoods(){ addFrameScript(0, frame1); } function frame1(){ snoodstoggle.mouseEnabled = false; snoodstoggle.mouseChildren = false; } } }//package
Section 393
//group_story (group_story) package { import flash.display.*; public dynamic class group_story extends MovieClip { public var profeature:ProFeatureAnim; public var buttonstory:Button_story; } }//package
Section 394
//group_timeattack (group_timeattack) package { import flash.display.*; public dynamic class group_timeattack extends MovieClip { public var buttontimeattack:Button_timeattack; public var profeature:ProFeatureAnim; } }//package
Section 395
//Gun0 (Gun0) package { import flash.display.*; public dynamic class Gun0 extends MovieClip { } }//package
Section 396
//Gun1 (Gun1) package { import flash.display.*; public dynamic class Gun1 extends MovieClip { } }//package
Section 397
//Gun2 (Gun2) package { import flash.display.*; public dynamic class Gun2 extends MovieClip { } }//package
Section 398
//Gun3 (Gun3) package { import flash.display.*; public dynamic class Gun3 extends MovieClip { } }//package
Section 399
//Gun4 (Gun4) package { import flash.display.*; public dynamic class Gun4 extends MovieClip { } }//package
Section 400
//GunBackground (GunBackground) package { import flash.display.*; public dynamic class GunBackground extends MovieClip { } }//package
Section 401
//GunBackground2 (GunBackground2) package { import flash.display.*; public dynamic class GunBackground2 extends MovieClip { } }//package
Section 402
//GunCover (GunCover) package { import flash.display.*; public dynamic class GunCover extends MovieClip { } }//package
Section 403
//GunForeground (GunForeground) package { import flash.display.*; public dynamic class GunForeground extends MovieClip { } }//package
Section 404
//Header1 (Header1) package { import flash.display.*; import flash.text.*; public dynamic class Header1 extends MovieClip { public var onlineprompt:TextField; public var SearchField:TextField; public var onlinetoggle:OnlineOnlyToggle; } }//package
Section 405
//Header2 (Header2) package { import flash.display.*; public dynamic class Header2 extends MovieClip { } }//package
Section 406
//HudPiece (HudPiece) package { import flash.display.*; import flash.text.*; public dynamic class HudPiece extends MovieClip { public var left:TextField; public var right:TextField; } }//package
Section 407
//IconSetup (IconSetup) package { import flash.display.*; public dynamic class IconSetup extends MovieClip { public var icon03:Achievement03; public var icon04:Achievement04; public var icon05:Achievement05; public var icon06:Achievement06; public var icon07:Achievement07; public var icon08:Achievement08; public var icon09:Achievement09; public var icon10:Achievement10; public var icon01:Achievement01; public var icon02:Achievement02; } }//package
Section 408
//Instrpage01 (Instrpage01) package { import flash.display.*; public dynamic class Instrpage01 extends MovieClip { } }//package
Section 409
//Instrpage01_anim01 (Instrpage01_anim01) package { import flash.display.*; public dynamic class Instrpage01_anim01 extends MovieClip { } }//package
Section 410
//Instrpage01_anim02 (Instrpage01_anim02) package { import flash.display.*; public dynamic class Instrpage01_anim02 extends MovieClip { } }//package
Section 411
//Instrpage02 (Instrpage02) package { import flash.display.*; public dynamic class Instrpage02 extends MovieClip { } }//package
Section 412
//Instructions (Instructions) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class Instructions extends MovieClip { public var instrpage02:Instrpage02; public var instrpage01:Instrpage01; public var showtoggle:OnlineOnlyToggle; public var continuebutton:ContinueButton; public function Instructions(){ addFrameScript(4, frame5, 10, frame11, 16, frame17); } function frame5(){ this.stop(); } function frame11(){ this.stop(); } function frame17(){ this.stop(); } } }//package
Section 413
//InstructionsToggle (InstructionsToggle) package { import flash.display.*; public dynamic class InstructionsToggle extends MovieClip { } }//package
Section 414
//JakeWin (JakeWin) package { import flash.display.*; public dynamic class JakeWin extends MovieClip { } }//package
Section 415
//JakeWorried (JakeWorried) package { import flash.display.*; public dynamic class JakeWorried extends MovieClip { } }//package
Section 416
//Komika (Komika) package { import flash.text.*; public dynamic class Komika extends Font { } }//package
Section 417
//KomikaDisplay (KomikaDisplay) package { import flash.text.*; public dynamic class KomikaDisplay extends Font { } }//package
Section 418
//LevelChartButton (LevelChartButton) package { import flash.display.*; public dynamic class LevelChartButton extends SimpleButton { } }//package
Section 419
//Loadingicon (Loadingicon) package { import flash.display.*; import flash.text.*; public dynamic class Loadingicon extends MovieClip { public var loadingbook:MovieClip; public var loadingmessage:TextField; } }//package
Section 420
//LogoAchievements (LogoAchievements) package { import flash.display.*; public dynamic class LogoAchievements extends MovieClip { } }//package
Section 421
//LogoChallenge (LogoChallenge) package { import flash.display.*; public dynamic class LogoChallenge extends MovieClip { } }//package
Section 422
//LogoInstructions (LogoInstructions) package { import flash.display.*; public dynamic class LogoInstructions extends MovieClip { } }//package
Section 423
//LogoIssuechallenge (LogoIssuechallenge) package { import flash.display.*; public dynamic class LogoIssuechallenge extends MovieClip { } }//package
Section 424
//LogoPickafriend (LogoPickafriend) package { import flash.display.*; public dynamic class LogoPickafriend extends MovieClip { } }//package
Section 425
//LogoRankings (LogoRankings) package { import flash.display.*; public dynamic class LogoRankings extends MovieClip { } }//package
Section 426
//mc_mindjolt (mc_mindjolt) package { import flash.display.*; public dynamic class mc_mindjolt extends MovieClip { } }//package
Section 427
//MonkeyCoin (MonkeyCoin) package { import flash.display.*; public dynamic class MonkeyCoin extends MovieClip { } }//package
Section 428
//Newachievement_line1 (Newachievement_line1) package { import flash.display.*; public dynamic class Newachievement_line1 extends MovieClip { } }//package
Section 429
//Newachievement_line2 (Newachievement_line2) package { import flash.display.*; import flash.text.*; public dynamic class Newachievement_line2 extends MovieClip { public var linetext:TextField; } }//package
Section 430
//Newachievement_line3 (Newachievement_line3) package { import flash.display.*; import flash.text.*; public dynamic class Newachievement_line3 extends MovieClip { public var linetext:TextField; } }//package
Section 431
//Newrank_line1 (Newrank_line1) package { import flash.display.*; public dynamic class Newrank_line1 extends MovieClip { } }//package
Section 432
//Newrank_line2 (Newrank_line2) package { import flash.display.*; import flash.text.*; public dynamic class Newrank_line2 extends MovieClip { public var linetext:TextField; } }//package
Section 433
//Newrank_line3 (Newrank_line3) package { import flash.display.*; public dynamic class Newrank_line3 extends MovieClip { } }//package
Section 434
//Newrank_line4 (Newrank_line4) package { import flash.display.*; import flash.text.*; public dynamic class Newrank_line4 extends MovieClip { public var linetext:TextField; } }//package
Section 435
//Newrank_line5 (Newrank_line5) package { import flash.display.*; import flash.text.*; public dynamic class Newrank_line5 extends MovieClip { public var linetext:TextField; } }//package
Section 436
//NoChallenges (NoChallenges) package { import flash.display.*; import flash.text.*; public dynamic class NoChallenges extends MovieClip { public var nochallengetext:TextField; } }//package
Section 437
//Notification (Notification) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class Notification extends MovieClip { public function Notification(){ addFrameScript(0, frame1, 5, frame6); } function frame1(){ this.stop(); } function frame6(){ this.stop(); } } }//package
Section 438
//OnlineOnlyToggle (OnlineOnlyToggle) package { import flash.display.*; public dynamic class OnlineOnlyToggle extends MovieClip { } }//package
Section 439
//OpponentPortrait (OpponentPortrait) package { import flash.display.*; public dynamic class OpponentPortrait extends MovieClip { public var portrait:PortraitO; } }//package
Section 440
//OppSnood (OppSnood) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class OppSnood extends MovieClip { public function OppSnood(){ addFrameScript(0, frame1); } function frame1(){ this.stop(); } } }//package
Section 441
//Page0 (Page0) package { import flash.display.*; import menucode.titlescreen.*; public dynamic class Page0 extends MovieClip { public var jake:UITitleMenuJake; public var snoodlogo:SnoodLogo; public var snoodplanet:SnoodPlanet; } }//package
Section 442
//Page1 (Page1) package { import flash.display.*; public dynamic class Page1 extends MovieClip { public var buttoncredits:Button_credits; public var buttonaddtoprofile:Button_addtoprofile; public var group2pmanager:group_2pmanager; public var groupinvite:group_invite; public var buttonrankings:Button_rankings; } }//package
Section 443
//Page2 (Page2) package { import flash.display.*; public dynamic class Page2 extends MovieClip { public var buttongameguide:Button_gameguide; public var buttonchallenge:Button_challenge; public var button1player:Button_1player; public var buttonlive:Button_live; } }//package
Section 444
//Page3 (Page3) package { import flash.display.*; public dynamic class Page3 extends MovieClip { public var groupsnoods:group_snoods; public var grouptimeattack:group_timeattack; public var buttonclassic:Button_classic; public var groupdifficulty:group_difficulty; public var groupnoads:group_noads; public var grouppuzzle:group_puzzle; public var mj_logo:MovieClip; public var challengemessage:Challengemessage; } }//package
Section 445
//Planet (Planet) package { import flash.display.*; public dynamic class Planet extends BitmapData { public function Planet(_arg1:int=124, _arg2:int=94){ super(_arg1, _arg2); } } }//package
Section 446
//Plus100 (Plus100) package { import flash.display.*; public dynamic class Plus100 extends MovieClip { } }//package
Section 447
//Plus125 (Plus125) package { import flash.display.*; public dynamic class Plus125 extends MovieClip { } }//package
Section 448
//Plus150 (Plus150) package { import flash.display.*; public dynamic class Plus150 extends MovieClip { } }//package
Section 449
//Plus175 (Plus175) package { import flash.display.*; public dynamic class Plus175 extends MovieClip { } }//package
Section 450
//Plus200 (Plus200) package { import flash.display.*; public dynamic class Plus200 extends MovieClip { } }//package
Section 451
//Plus25 (Plus25) package { import flash.display.*; public dynamic class Plus25 extends MovieClip { } }//package
Section 452
//Plus50 (Plus50) package { import flash.display.*; public dynamic class Plus50 extends MovieClip { } }//package
Section 453
//Plus75 (Plus75) package { import flash.display.*; public dynamic class Plus75 extends MovieClip { } }//package
Section 454
//Points_line1 (Points_line1) package { import flash.display.*; import flash.text.*; public dynamic class Points_line1 extends MovieClip { public var linetext:TextField; } }//package
Section 455
//PopupDifficulty (PopupDifficulty) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupDifficulty extends MovieClip { public var OKButton:Button_check; public var sheet:PopupSheet; public var message:Difficulty_message; public function PopupDifficulty(){ addFrameScript(30, frame31); } function frame31(){ this.stop(); } } }//package
Section 456
//PopupGetready (PopupGetready) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupGetready extends MovieClip { public var numbers:Getready_numbers; public function PopupGetready(){ addFrameScript(0, frame1, 38, frame39, 69, frame70, 104, frame105); } function frame1(){ numbers.gotoAndStop(1); } function frame39(){ numbers.gotoAndStop(2); } function frame70(){ numbers.gotoAndStop(3); } function frame105(){ this.stop(); } } }//package
Section 457
//PopupLevelchart (PopupLevelchart) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupLevelchart extends MovieClip { public var continuebutton:ContinueButton; public var rank10:Rank10; public var rank01:Rank01; public var rank02:Rank02; public var rank03:Rank03; public var rank04:Rank04; public var rank05:Rank05; public var rank06:Rank06; public var rank07:Rank07; public var rank08:Rank08; public var rank09:Rank09; public function PopupLevelchart(){ addFrameScript(38, frame39); } function frame39(){ this.stop(); } } }//package
Section 458
//PopupLive (PopupLive) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupLive extends MovieClip { public var playgroup:buttongroup_play; public var timeoutgroup:buttongroup_timeout; public var you:YouSnood; public var opponent:OppSnood; public var arrowanimation:Arrows; public var notification:Notification; public function PopupLive(){ addFrameScript(19, frame20, 25, frame26, 29, frame30, 30, frame31, 34, frame35, 35, frame36, 39, frame40, 40, frame41, 44, frame45); } function frame20(){ arrowanimation.gotoAndStop("waiting"); } function frame26(){ arrowanimation.gotoAndPlay("waiting"); you.gotoAndStop("waiting"); opponent.gotoAndStop("waiting"); } function frame30(){ notification.gotoAndPlay("fadein"); this.stop(); } function frame31(){ notification.gotoAndPlay("fadeout"); arrowanimation.gotoAndStop("ready"); you.gotoAndStop("ready"); opponent.gotoAndStop("ready"); } function frame35(){ this.stop(); } function frame36(){ arrowanimation.gotoAndPlay("ready"); you.gotoAndStop("ready"); opponent.gotoAndStop("ready"); } function frame40(){ this.stop(); } function frame41(){ notification.gotoAndPlay("fadeout"); arrowanimation.gotoAndPlay("timeout"); you.gotoAndStop("timeout"); opponent.gotoAndStop("timeout"); } function frame45(){ this.stop(); } } }//package
Section 459
//PopupNewachievement (PopupNewachievement) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupNewachievement extends MovieClip { public var continuebutton:ContinueButton; public var achievement:AchievementAnchor; public var earnedline:Newrank_line5; public var achievementline:Newachievement_line2; public var descriptionline:Newachievement_line3; public function PopupNewachievement(){ addFrameScript(62, frame63); } function frame63(){ this.stop(); } } }//package
Section 460
//PopupNewrank (PopupNewrank) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupNewrank extends MovieClip { public var rankportrait:RankportraitHolder; public var categoryline:Newrank_line4; public var rankline:Newrank_line2; public var continuebutton:ContinueButton; public var earnedline:Newrank_line5; public function PopupNewrank(){ addFrameScript(64, frame65); } function frame65(){ this.stop(); } } }//package
Section 461
//PopupPoints (PopupPoints) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupPoints extends MovieClip { public var continuebutton:ContinueButton; public var earnedline:Coins_line2; public var eventline:Points_line1; public function PopupPoints(){ addFrameScript(36, frame37); } function frame37(){ this.stop(); } } }//package
Section 462
//PopupPointsSmall (PopupPointsSmall) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupPointsSmall extends MovieClip { public var points:Small_line1; public var monkeypoints:Small_line2; public function PopupPointsSmall(){ addFrameScript(54, frame55); } function frame55(){ this.stop(); } } }//package
Section 463
//PopupPostinvite (PopupPostinvite) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupPostinvite extends MovieClip { public var continuebutton:ContinueButton; public var invitegroup:Postinvite_invitebuttongroup; public var message:Postinvite_message; public function PopupPostinvite(){ addFrameScript(34, frame35); } function frame35(){ this.stop(); } } }//package
Section 464
//PopupScratchcard (PopupScratchcard) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupScratchcard extends MovieClip { public var continuebutton:ContinueButton; public var reward:ScratchReward; public var message:Scratch_line1; public function PopupScratchcard(){ addFrameScript(34, frame35, 47, frame48); } function frame35(){ this.stop(); } function frame48(){ this.stop(); } } }//package
Section 465
//PopupSheet (PopupSheet) package { import flash.display.*; public dynamic class PopupSheet extends MovieClip { } }//package
Section 466
//PopupSparks (PopupSparks) package { import flash.display.*; public dynamic class PopupSparks extends MovieClip { } }//package
Section 467
//PopupSponsored (PopupSponsored) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupSponsored extends MovieClip { public function PopupSponsored(){ addFrameScript(18, frame19); } function frame19(){ this.gotoAndPlay("loop"); } } }//package
Section 468
//PopupWelcome (PopupWelcome) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class PopupWelcome extends MovieClip { public var sheet:PopupSheet; public var continuebutton:ContinueButton; public var earnedline:Welcome_points; public var message:Welcome_message; public function PopupWelcome(){ addFrameScript(49, frame50); } function frame50(){ this.stop(); } } }//package
Section 469
//Portrait (Portrait) package { import flash.display.*; public dynamic class Portrait extends MovieClip { public var loadinganimation:PortraitLoading; public var nophoto:PortraitNophoto; public var portraitholder:PortraitHolder; } }//package
Section 470
//PortraitHolder (PortraitHolder) package { import flash.display.*; public dynamic class PortraitHolder extends MovieClip { } }//package
Section 471
//PortraitHolderO (PortraitHolderO) package { import flash.display.*; public dynamic class PortraitHolderO extends MovieClip { } }//package
Section 472
//PortraitLoading (PortraitLoading) package { import flash.display.*; public dynamic class PortraitLoading extends MovieClip { } }//package
Section 473
//PortraitNophoto (PortraitNophoto) package { import flash.display.*; public dynamic class PortraitNophoto extends MovieClip { } }//package
Section 474
//PortraitO (PortraitO) package { import flash.display.*; public dynamic class PortraitO extends MovieClip { public var loadinganimation:PortraitLoading; public var nophoto:PortraitNophoto; public var portraitholder:PortraitHolderO; } }//package
Section 475
//Postinvite_invitebuttongroup (Postinvite_invitebuttongroup) package { import flash.display.*; public dynamic class Postinvite_invitebuttongroup extends MovieClip { public var invitebutton:Button_inviteanother; } }//package
Section 476
//Postinvite_message (Postinvite_message) package { import flash.display.*; import flash.text.*; public dynamic class Postinvite_message extends MovieClip { public var linetext:TextField; } }//package
Section 477
//ProFeatureAnim (ProFeatureAnim) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class ProFeatureAnim extends MovieClip { public function ProFeatureAnim(){ addFrameScript(0, frame1); } function frame1(){ this.mouseEnabled = false; this.mouseChildren = false; } } }//package
Section 478
//Rank01 (Rank01) package { import flash.display.*; public dynamic class Rank01 extends MovieClip { public var title:Rank01title; } }//package
Section 479
//Rank01title (Rank01title) package { import flash.display.*; public dynamic class Rank01title extends MovieClip { } }//package
Section 480
//Rank02 (Rank02) package { import flash.display.*; public dynamic class Rank02 extends MovieClip { public var title:Rank02title; } }//package
Section 481
//Rank02title (Rank02title) package { import flash.display.*; public dynamic class Rank02title extends MovieClip { } }//package
Section 482
//Rank03 (Rank03) package { import flash.display.*; public dynamic class Rank03 extends MovieClip { public var title:Rank03title; } }//package
Section 483
//Rank03title (Rank03title) package { import flash.display.*; public dynamic class Rank03title extends MovieClip { } }//package
Section 484
//Rank04 (Rank04) package { import flash.display.*; public dynamic class Rank04 extends MovieClip { public var title:Rank04title; } }//package
Section 485
//Rank04title (Rank04title) package { import flash.display.*; public dynamic class Rank04title extends MovieClip { } }//package
Section 486
//Rank05 (Rank05) package { import flash.display.*; public dynamic class Rank05 extends MovieClip { public var title:Rank05title; } }//package
Section 487
//Rank05title (Rank05title) package { import flash.display.*; public dynamic class Rank05title extends MovieClip { } }//package
Section 488
//Rank06 (Rank06) package { import flash.display.*; public dynamic class Rank06 extends MovieClip { public var title:Rank06title; } }//package
Section 489
//Rank06title (Rank06title) package { import flash.display.*; public dynamic class Rank06title extends MovieClip { } }//package
Section 490
//Rank07 (Rank07) package { import flash.display.*; public dynamic class Rank07 extends MovieClip { public var title:Rank07title; } }//package
Section 491
//Rank07title (Rank07title) package { import flash.display.*; public dynamic class Rank07title extends MovieClip { } }//package
Section 492
//Rank08 (Rank08) package { import flash.display.*; public dynamic class Rank08 extends MovieClip { public var title:Rank08title; } }//package
Section 493
//Rank08title (Rank08title) package { import flash.display.*; public dynamic class Rank08title extends MovieClip { } }//package
Section 494
//Rank09 (Rank09) package { import flash.display.*; public dynamic class Rank09 extends MovieClip { public var title:Rank09title; } }//package
Section 495
//Rank09title (Rank09title) package { import flash.display.*; public dynamic class Rank09title extends MovieClip { } }//package
Section 496
//Rank10 (Rank10) package { import flash.display.*; public dynamic class Rank10 extends MovieClip { public var title:Rank10title; } }//package
Section 497
//Rank10title (Rank10title) package { import flash.display.*; public dynamic class Rank10title extends MovieClip { } }//package
Section 498
//RankBkg (RankBkg) package { import flash.display.*; public dynamic class RankBkg extends MovieClip { } }//package
Section 499
//RankFrame (RankFrame) package { import flash.display.*; public dynamic class RankFrame extends MovieClip { } }//package
Section 500
//RankGraphHolder (RankGraphHolder) package { import flash.display.*; public dynamic class RankGraphHolder extends MovieClip { } }//package
Section 501
//RankingGraph (RankingGraph) package { import flash.display.*; public dynamic class RankingGraph extends MovieClip { public var graphholder:RankGraphHolder; } }//package
Section 502
//RankingInfo (RankingInfo) package { import flash.display.*; import flash.text.*; public dynamic class RankingInfo extends MovieClip { public var rankportraitholder:RankportraitHolder; public var score:TextField; public var ranknumber:TextField; public var achievements:AchievementsPanelSmall; public var playername:TextField; public var portraitholder:Portrait; } }//package
Section 503
//RankingsBottomTabButton (RankingsBottomTabButton) package { import flash.display.*; import flash.text.*; public dynamic class RankingsBottomTabButton extends MovieClip { public var tabselected:RankingsBottomTabSelected; public var tabunselected:RankingsBottomTabUnselected; public var portraitholder:RankportraitHolder; public var tablabel:TextField; } }//package
Section 504
//RankingsBottomTabSelected (RankingsBottomTabSelected) package { import flash.display.*; public dynamic class RankingsBottomTabSelected extends MovieClip { } }//package
Section 505
//RankingsBottomTabUnselected (RankingsBottomTabUnselected) package { import flash.display.*; public dynamic class RankingsBottomTabUnselected extends MovieClip { } }//package
Section 506
//RankingsOverall (RankingsOverall) package { import flash.display.*; import flash.text.*; public dynamic class RankingsOverall extends MovieClip { public var tablabel:TextField; } }//package
Section 507
//RankingsScrollArrow (RankingsScrollArrow) package { import flash.display.*; public dynamic class RankingsScrollArrow extends SimpleButton { } }//package
Section 508
//RankingsScrollCenter (RankingsScrollCenter) package { import flash.display.*; public dynamic class RankingsScrollCenter extends SimpleButton { } }//package
Section 509
//RankingsScrollDoubleArrow (RankingsScrollDoubleArrow) package { import flash.display.*; public dynamic class RankingsScrollDoubleArrow extends SimpleButton { } }//package
Section 510
//RankingsTabButton (RankingsTabButton) package { import flash.display.*; import flash.text.*; public dynamic class RankingsTabButton extends MovieClip { public var tabselected:RankingsTabSelected; public var tabunselected:RankingsTabUnselected; public var tablabel:TextField; } }//package
Section 511
//RankingsTabSelected (RankingsTabSelected) package { import flash.display.*; public dynamic class RankingsTabSelected extends MovieClip { } }//package
Section 512
//RankingsTabUnselected (RankingsTabUnselected) package { import flash.display.*; public dynamic class RankingsTabUnselected extends MovieClip { } }//package
Section 513
//RankportraitHolder (RankportraitHolder) package { import flash.display.*; public dynamic class RankportraitHolder extends MovieClip { } }//package
Section 514
//RedNebula (RedNebula) package { import flash.display.*; public dynamic class RedNebula extends BitmapData { public function RedNebula(_arg1:int=64, _arg2:int=64){ super(_arg1, _arg2); } } }//package
Section 515
//Ring (Ring) package { import flash.display.*; public dynamic class Ring extends MovieClip { public var ringslice:MovieClip; } }//package
Section 516
//RoundScore (RoundScore) package { import flash.display.*; public dynamic class RoundScore extends MovieClip { } }//package
Section 517
//Scratch_line1 (Scratch_line1) package { import flash.display.*; import flash.text.*; public dynamic class Scratch_line1 extends MovieClip { public var linetext:TextField; } }//package
Section 518
//ScratchCoin (ScratchCoin) package { import flash.display.*; public dynamic class ScratchCoin extends MovieClip { } }//package
Section 519
//ScratchFoil (ScratchFoil) package { import menucode.*; public dynamic class ScratchFoil extends ScratchFoil { } }//package
Section 520
//ScratchFoilBase (ScratchFoilBase) package { import flash.display.*; public dynamic class ScratchFoilBase extends MovieClip { } }//package
Section 521
//ScratchReward (ScratchReward) package { import flash.display.*; import flash.text.*; public dynamic class ScratchReward extends MovieClip { public var rewardtext:TextField; public var text1:TextField; public var text2:TextField; } }//package
Section 522
//ScratchToWin (ScratchToWin) package { import flash.display.*; public dynamic class ScratchToWin extends MovieClip { } }//package
Section 523
//SkullHappy (SkullHappy) package { import flash.display.*; public dynamic class SkullHappy extends MovieClip { } }//package
Section 524
//SkullLose (SkullLose) package { import flash.display.*; public dynamic class SkullLose extends MovieClip { } }//package
Section 525
//SkullWorried (SkullWorried) package { import flash.display.*; public dynamic class SkullWorried extends MovieClip { } }//package
Section 526
//Small_line1 (Small_line1) package { import flash.display.*; import flash.text.*; public dynamic class Small_line1 extends MovieClip { public var linetext:TextField; } }//package
Section 527
//Small_line2 (Small_line2) package { import flash.display.*; import flash.text.*; public dynamic class Small_line2 extends MovieClip { public var linetext:TextField; } }//package
Section 528
//SnoodLogo (SnoodLogo) package { import flash.display.*; public dynamic class SnoodLogo extends MovieClip { } }//package
Section 529
//SnoodPlanet (SnoodPlanet) package { import flash.display.*; public dynamic class SnoodPlanet extends MovieClip { } }//package
Section 530
//SnoodsAll (SnoodsAll) package { import flash.display.*; public dynamic class SnoodsAll extends BitmapData { public function SnoodsAll(_arg1:int=0x0200, _arg2:int=0x0200){ super(_arg1, _arg2); } } }//package
Section 531
//SnoodsToggle (SnoodsToggle) package { import flash.display.*; public dynamic class SnoodsToggle extends MovieClip { } }//package
Section 532
//StarEffect0 (StarEffect0) package { import flash.display.*; public dynamic class StarEffect0 extends MovieClip { } }//package
Section 533
//StarEffect1 (StarEffect1) package { import flash.display.*; public dynamic class StarEffect1 extends MovieClip { } }//package
Section 534
//StarEffect2 (StarEffect2) package { import flash.display.*; public dynamic class StarEffect2 extends MovieClip { } }//package
Section 535
//StarEffect3 (StarEffect3) package { import flash.display.*; public dynamic class StarEffect3 extends MovieClip { } }//package
Section 536
//StarEffect4 (StarEffect4) package { import flash.display.*; public dynamic class StarEffect4 extends MovieClip { } }//package
Section 537
//StarEffect5 (StarEffect5) package { import flash.display.*; public dynamic class StarEffect5 extends MovieClip { } }//package
Section 538
//StarEffect6 (StarEffect6) package { import flash.display.*; public dynamic class StarEffect6 extends MovieClip { } }//package
Section 539
//Stars (Stars) package { import flash.display.*; public dynamic class Stars extends BitmapData { public function Stars(_arg1:int=192, _arg2:int=0x0100){ super(_arg1, _arg2); } } }//package
Section 540
//StatusIcon (StatusIcon) package { import flash.display.*; public dynamic class StatusIcon extends MovieClip { } }//package
Section 541
//TextInput_disabledSkin (TextInput_disabledSkin) package { import flash.display.*; public dynamic class TextInput_disabledSkin extends MovieClip { } }//package
Section 542
//TextInput_upSkin (TextInput_upSkin) package { import flash.display.*; public dynamic class TextInput_upSkin extends MovieClip { } }//package
Section 543
//ToolTipNoads (ToolTipNoads) package { import flash.display.*; import flash.text.*; public dynamic class ToolTipNoads extends MovieClip { public var cost:TextField; public var morepoints:MovieClip; public var clicktobuyanim:ClickToBuyAnim; } }//package
Section 544
//ToolTipPuzzle (ToolTipPuzzle) package { import flash.display.*; import flash.text.*; public dynamic class ToolTipPuzzle extends MovieClip { public var cost:TextField; public var morepoints:MovieClip; public var clicktobuyanim:ClickToBuyAnim; } }//package
Section 545
//TooltipSetup (TooltipSetup) package { import flash.display.*; import flash.text.*; public dynamic class TooltipSetup extends MovieClip { public var description:TextField; public var title:TextField; } }//package
Section 546
//ToolTipTimeattack (ToolTipTimeattack) package { import flash.display.*; import flash.text.*; public dynamic class ToolTipTimeattack extends MovieClip { public var cost:TextField; public var morepoints:MovieClip; public var clicktobuyanim:ClickToBuyAnim; } }//package
Section 547
//UILoading (UILoading) package { import flash.display.*; public dynamic class UILoading extends MovieClip { public var LoadingIcon:Loadingicon; } }//package
Section 548
//UIPopup (UIPopup) package { import flash.display.*; import flash.text.*; public dynamic class UIPopup extends MovieClip { public var OKButton:Button_check; public var Message:TextField; } }//package
Section 549
//UIProblemPopup (UIProblemPopup) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class UIProblemPopup extends MovieClip { public var message2:TextField; public var OKButton:Button_check; public var message3:TextField; public var message1:TextField; public var monk:YouSnood; public function UIProblemPopup(){ addFrameScript(0, frame1); } function frame1(){ monk.gotoAndStop("timeout"); } } }//package
Section 550
//UIRanking (UIRanking) package { import flash.display.*; import flash.text.*; public dynamic class UIRanking extends MovieClip { public var rankbutton:RankingsTabButton; public var NearRightPortrait:RankingInfo; public var SP2:RankingsBottomTabButton; public var NearLeftPortrait:RankingInfo; public var FarRightPortrait:RankingInfo; public var playerinfo:AchievementPlayerInfo; public var AchievementDefinition:TextField; public var InfoPortrait:RankingInfo; public var MP1:RankingsBottomTabButton; public var MP2:RankingsBottomTabButton; public var CenterPortrait:RankingInfo; public var GuideTips:TextField; public var RightArrow:RankingsScrollArrow; public var Achievements:AchievementsTabButton; public var LevelchartButton:LevelChartButton; public var BackButton:ArrowBack; public var LeftArrow:RankingsScrollArrow; public var DetailedButton:DetailedStatsButton; public var AchievementsLogoVectorHolder:LogoAchievements; public var FastRightArrow:RankingsScrollDoubleArrow; public var achievements:AchievementPanelBig; public var FarLeftPortrait:RankingInfo; public var NextButton:ArrowDone; public var RankingsLogoVectorHolder:LogoRankings; public var FastLeftArrow:RankingsScrollDoubleArrow; public var GraphHeader:TextField; public var Evangelism:RankingsBottomTabButton; public var CenterArrow:RankingsScrollCenter; public var GuideTipsContent:TextField; public var SPPRO:RankingsBottomTabButton; public var globalrankbutton:RankingsTabButton; public var InfoGraph:RankingGraph; public var Overall:RankingsBottomTabButton; public var RankingTabHeader:RankingsOverall; public var infobutton:RankingsTabButton; public var MPPRO:RankingsBottomTabButton; public var MP:RankingsBottomTabButton; public var GuideDefContent:TextField; public var GuideDefinition:TextField; public var SP:RankingsBottomTabButton; public var SP1:RankingsBottomTabButton; } }//package
Section 551
//UIScoring1P (UIScoring1P) package { import flash.display.*; import flash.text.*; public dynamic class UIScoring1P extends MovieClip { public var snoodsused:TextField; public var score:TextField; public var player:Portrait; public var difficultywarning:TextField; public var continuebutton:Button_continue; public var tryagainbutton:Button_tryagain; public var exitbutton:Button_exit; public var total:TextField; public var stylebonus:TextField; public var snoodsbonus1:TextField; public var finalscore:FinalScore; public var roundscore:RoundScore; public var clearancebonus:TextField; } }//package
Section 552
//UIScoring2P (UIScoring2P) package { import flash.display.*; import flash.text.*; public dynamic class UIScoring2P extends MovieClip { public var player:Portrait; public var clearancebonus1:TextField; public var clearancebonus2:TextField; public var total1:TextField; public var total2:TextField; public var opponent:PortraitO; public var win1:Win; public var win2:Win; public var snoodsused2:TextField; public var snoodsbonus2:TextField; public var exitbutton:Button_exit; public var stylebonus2:TextField; public var stylebonus1:TextField; public var snoodsused1:TextField; public var snoodsbonus1:TextField; public var finalscore:FinalScore; public var rematchbutton:Button_rematch; public var score1:TextField; public var score2:TextField; } }//package
Section 553
//UIScoringLose (UIScoringLose) package { import flash.display.*; public dynamic class UIScoringLose extends MovieClip { public var exitbutton:Button_exit; public var rematchbutton:Button_rematch; } }//package
Section 554
//UIScoringWin (UIScoringWin) package { import flash.display.*; public dynamic class UIScoringWin extends MovieClip { public var exitbutton:Button_exit; public var rematchbutton:Button_rematch; } }//package
Section 555
//UIYesNoPopup (UIYesNoPopup) package { import flash.display.*; import flash.text.*; public dynamic class UIYesNoPopup extends MovieClip { public var NoButton:Button_back; public var YesButton:Button_check; public var Message:TextField; } }//package
Section 556
//VectorVise (VectorVise) package { import flash.display.*; public dynamic class VectorVise extends MovieClip { public var animWheel7:MovieClip; public var animWheel8:MovieClip; public var animWheel9:MovieClip; public var animWheel10:MovieClip; public var animWheel11:MovieClip; public var animWheel12:MovieClip; public var animWheel0:MovieClip; public var animWheel1:MovieClip; public var animWheel2:MovieClip; public var animWheel3:MovieClip; public var animWheel4:MovieClip; public var animWheel5:MovieClip; public var animWheel6:MovieClip; } }//package
Section 557
//Welcome (Welcome) package { import flash.display.*; public dynamic class Welcome extends MovieClip { } }//package
Section 558
//Welcome_message (Welcome_message) package { import flash.display.*; import flash.text.*; public dynamic class Welcome_message extends MovieClip { public var linetext:TextField; } }//package
Section 559
//Welcome_points (Welcome_points) package { import flash.display.*; import flash.text.*; public dynamic class Welcome_points extends MovieClip { public var linetext:TextField; } }//package
Section 560
//White (White) package { import flash.display.*; public dynamic class White extends MovieClip { } }//package
Section 561
//Win (Win) package { import flash.display.*; public dynamic class Win extends MovieClip { } }//package
Section 562
//WinBase (WinBase) package { import flash.display.*; public dynamic class WinBase extends MovieClip { } }//package
Section 563
//VSgametype (VSgametype) package { import flash.display.*; import flash.text.*; public dynamic class VSgametype extends MovieClip { public var gametypetext:TextField; } }//package
Section 564
//VSname (VSname) package { import flash.display.*; import flash.text.*; public dynamic class VSname extends MovieClip { public var nametext:TextField; } }//package
Section 565
//VSScreen (VSScreen) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class VSScreen extends MovieClip { public var backbutton:Button_back; public var opponentname:VSname; public var playerportrait:Portrait; public var opponentportrait:PortraitO; public var playername:VSname; public var okbutton:Button_check; public function VSScreen(){ addFrameScript(24, frame25); } function frame25(){ this.stop(); } } }//package
Section 566
//VSScreenChallenge (VSScreenChallenge) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class VSScreenChallenge extends MovieClip { public var opponentname:VSname; public var playerportrait:Portrait; public var gametype:VSgametype; public var opponentportrait:PortraitO; public var playername:VSname; public function VSScreenChallenge(){ addFrameScript(24, frame25); } function frame25(){ this.stop(); } } }//package
Section 567
//YouSnood (YouSnood) package { import flash.display.*; import flash.text.*; import flash.events.*; import flash.system.*; import flash.media.*; import flash.geom.*; import flash.net.*; import flash.utils.*; import flash.filters.*; import flash.ui.*; import flash.external.*; import flash.errors.*; import flash.accessibility.*; public dynamic class YouSnood extends MovieClip { public var goodmonk:MovieClip; public function YouSnood(){ addFrameScript(0, frame1); } function frame1(){ this.stop(); } } }//package

Library Items

Symbol 1 Font {Crystal}Used by:193 194 195 196
Symbol 2 Font {KomikaDisplay}Used by:219 220 222 258 259 260 261 280 281 289 290 291 292 293 309 324 327 331 334 338 341 352 353 371 372 406 410 411 412 413 414 426 427 428 429 430 433 434 435 436 437 440 441 442 464 465 466 467 468 469 489 491 513 526 527 528 530 540 545 547 554 556 561 563 565 567 569 577 579 581 608 651 653 655 656 658 724 739 740 741 742 748 757 758 759 760 761 764 768 769 770 792 793 794 810 814 816 826 828 829 830 831 832 833 849 863 868 869 870 897 898 918 919 920 926 929 931 932 933 936 937 938 941 942 943 946 947 948 954 955 956 957 958 959 970 971 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1048
Symbol 3 Sound {wedied.aif}
Symbol 4 Sound {triumph.aif}
Symbol 5 Sound {transport.aif}
Symbol 6 Sound {transition_02.aif}
Symbol 7 Sound {teleout_02.aif}
Symbol 8 Sound {swish04.aif}
Symbol 9 Sound {swish03.aif}
Symbol 10 Sound {swish02.aif}
Symbol 11 Sound {swish01.aif}
Symbol 12 Sound {stone_rumble.aif}
Symbol 13 Sound {stone_explode.aif}
Symbol 14 Sound {snood_stick.aif}
Symbol 15 Sound {snood_laugh_05.aif}
Symbol 16 Sound {snood_laugh_04.aif}
Symbol 17 Sound {snood_laugh_01.aif}
Symbol 18 Sound {snood_bounce.aif}
Symbol 19 Sound {selectfriend.aif}
Symbol 20 Sound {scratch.aif}
Symbol 21 Sound {rowbuilder.aif}
Symbol 22 Sound {round_complete_03.aif}
Symbol 23 Sound {revers_gun.aif}
Symbol 24 Sound {red_plasma_warn.aif}
Symbol 25 Sound {red_plasma_retract.aif}
Symbol 26 Sound {out02.aif}
Symbol 27 Sound {out01.aif}
Symbol 28 Sound {numbskulls.aif}
Symbol 29 Sound {monkeycoin.aif}
Symbol 30 Sound {litttlepage.aif}
Symbol 31 Sound {gejisglide.mp3}
Symbol 32 Sound {fireworks_1.aif}
Symbol 33 Sound {fanfare_full.aif}
Symbol 34 Sound {fanfare_bonus.aif}
Symbol 35 Sound {fanfare_a.aif}
Symbol 36 Sound {fanfare_02.aif}
Symbol 37 Sound {drill_press.aif}
Symbol 38 Sound {da_bomb.aif}
Symbol 39 Sound {countdown.aif}
Symbol 40 Sound {ClickTest.aif}
Symbol 41 Sound {challengeremove.aif}
Symbol 42 Sound {challengeplay.aif}
Symbol 43 Sound {challengeconfirm.aif}
Symbol 44 Sound {cannon_fire.aif}
Symbol 45 Sound {button_press_1.aif}
Symbol 46 Sound {buttonclick.aif}
Symbol 47 Bitmap {Stars}
Symbol 48 Bitmap {SnoodsAll}
Symbol 49 Bitmap {RedNebula}
Symbol 50 Bitmap {Planet}
Symbol 51 Bitmap {GreenNebula}
Symbol 52 Bitmap {Fireworks7}
Symbol 53 Bitmap {Fireworks6}
Symbol 54 Bitmap {Fireworks5}
Symbol 55 Bitmap {Fireworks4}
Symbol 56 Bitmap {Fireworks3}
Symbol 57 Bitmap {Fireworks2}
Symbol 58 Bitmap {Fireworks1}
Symbol 59 Bitmap {Fireworks0}
Symbol 60 Bitmap {Explosion}
Symbol 61 Bitmap {Energy}
Symbol 62 Bitmap {BlueNebula}
Symbol 63 GraphicUsed by:123
Symbol 64 GraphicUsed by:65
Symbol 65 MovieClipUses:64Used by:66
Symbol 66 MovieClipUses:65Used by:123
Symbol 67 GraphicUsed by:68
Symbol 68 MovieClipUses:67Used by:69
Symbol 69 MovieClipUses:68Used by:123
Symbol 70 GraphicUsed by:71
Symbol 71 MovieClipUses:70Used by:72
Symbol 72 MovieClipUses:71Used by:123
Symbol 73 GraphicUsed by:74
Symbol 74 MovieClipUses:73Used by:75
Symbol 75 MovieClipUses:74Used by:123
Symbol 76 GraphicUsed by:80
Symbol 77 GraphicUsed by:79
Symbol 78 GraphicUsed by:79
Symbol 79 MovieClipUses:77 78Used by:80
Symbol 80 MovieClipUses:76 79Used by:81
Symbol 81 MovieClipUses:80Used by:123
Symbol 82 GraphicUsed by:83
Symbol 83 MovieClipUses:82Used by:84
Symbol 84 MovieClipUses:83Used by:123
Symbol 85 GraphicUsed by:86
Symbol 86 MovieClipUses:85Used by:87
Symbol 87 MovieClipUses:86Used by:123
Symbol 88 GraphicUsed by:89
Symbol 89 MovieClipUses:88Used by:90
Symbol 90 MovieClipUses:89Used by:123
Symbol 91 GraphicUsed by:92
Symbol 92 MovieClipUses:91Used by:93
Symbol 93 MovieClipUses:92Used by:123
Symbol 94 GraphicUsed by:95
Symbol 95 MovieClipUses:94Used by:96
Symbol 96 MovieClipUses:95Used by:123
Symbol 97 GraphicUsed by:98
Symbol 98 MovieClipUses:97Used by:99
Symbol 99 MovieClipUses:98Used by:123
Symbol 100 GraphicUsed by:101
Symbol 101 MovieClipUses:100Used by:102
Symbol 102 MovieClipUses:101Used by:123
Symbol 103 GraphicUsed by:104
Symbol 104 MovieClipUses:103Used by:105
Symbol 105 MovieClipUses:104Used by:123
Symbol 106 GraphicUsed by:123
Symbol 107 GraphicUsed by:108 110 112 114 116
Symbol 108 MovieClipUses:107Used by:123
Symbol 109 GraphicUsed by:123
Symbol 110 MovieClipUses:107Used by:123
Symbol 111 GraphicUsed by:123
Symbol 112 MovieClipUses:107Used by:123
Symbol 113 GraphicUsed by:123
Symbol 114 MovieClipUses:107Used by:123
Symbol 115 GraphicUsed by:123
Symbol 116 MovieClipUses:107Used by:123
Symbol 117 GraphicUsed by:123
Symbol 118 GraphicUsed by:119 121
Symbol 119 MovieClipUses:118Used by:123
Symbol 120 GraphicUsed by:123
Symbol 121 MovieClipUses:118Used by:123
Symbol 122 GraphicUsed by:123
Symbol 123 MovieClip {VectorVise}Uses:63 66 69 72 75 81 84 87 90 93 96 99 102 105 106 108 109 110 111 112 113 114 115 116 117 119 120 121 122
Symbol 124 GraphicUsed by:125
Symbol 125 MovieClipUses:124Used by:133 169 263
Symbol 126 MovieClip {fl.core.ComponentShim}Used by:133 169 263
Symbol 127 GraphicUsed by:128
Symbol 128 MovieClip {TextInput_disabledSkin}Uses:127Used by:133
Symbol 129 GraphicUsed by:130
Symbol 130 MovieClip {TextInput_upSkin}Uses:129Used by:133
Symbol 131 GraphicUsed by:132
Symbol 132 MovieClip {focusRectSkin}Uses:131Used by:133
Symbol 133 MovieClip {fl.controls.TextInput}Uses:125 126 128 130 132
Symbol 134 GraphicUsed by:135
Symbol 135 MovieClip {StarEffect6}Uses:134
Symbol 136 GraphicUsed by:137
Symbol 137 MovieClip {StarEffect5}Uses:136
Symbol 138 GraphicUsed by:139
Symbol 139 MovieClip {StarEffect4}Uses:138
Symbol 140 GraphicUsed by:141
Symbol 141 MovieClip {StarEffect3}Uses:140
Symbol 142 GraphicUsed by:143
Symbol 143 MovieClip {StarEffect2}Uses:142
Symbol 144 GraphicUsed by:145
Symbol 145 MovieClip {StarEffect1}Uses:144
Symbol 146 GraphicUsed by:147
Symbol 147 MovieClip {StarEffect0}Uses:146
Symbol 148 FontUsed by:149 151 153 155 157 159 161 163
Symbol 149 TextUses:148Used by:150
Symbol 150 MovieClip {Plus200}Uses:149
Symbol 151 TextUses:148Used by:152
Symbol 152 MovieClip {Plus175}Uses:151
Symbol 153 TextUses:148Used by:154
Symbol 154 MovieClip {Plus150}Uses:153
Symbol 155 TextUses:148Used by:156
Symbol 156 MovieClip {Plus125}Uses:155
Symbol 157 TextUses:148Used by:158
Symbol 158 MovieClip {Plus100}Uses:157
Symbol 159 TextUses:148Used by:160
Symbol 160 MovieClip {Plus75}Uses:159
Symbol 161 TextUses:148Used by:162
Symbol 162 MovieClip {Plus50}Uses:161
Symbol 163 TextUses:148Used by:164
Symbol 164 MovieClip {Plus25}Uses:163
Symbol 165 GraphicUsed by:166
Symbol 166 MovieClip {Exclamation}Uses:165
Symbol 167 GraphicUsed by:168 215 230 233 400
Symbol 168 MovieClip {mc_mindjolt}Uses:167
Symbol 169 MovieClip {fl.controls.Label}Uses:125 126
Symbol 170 GraphicUsed by:174
Symbol 171 FontUsed by:172 173
Symbol 172 EditableTextUses:171Used by:174
Symbol 173 EditableTextUses:171Used by:174
Symbol 174 MovieClip {HudPiece}Uses:170 172 173
Symbol 175 GraphicUsed by:176
Symbol 176 MovieClip {GunForeground}Uses:175
Symbol 177 GraphicUsed by:178
Symbol 178 MovieClip {GunCover}Uses:177
Symbol 179 GraphicUsed by:180
Symbol 180 MovieClip {GunBackground2}Uses:179
Symbol 181 GraphicUsed by:182
Symbol 182 MovieClip {GunBackground}Uses:181
Symbol 183 GraphicUsed by:184
Symbol 184 MovieClip {Gun4}Uses:183
Symbol 185 GraphicUsed by:186
Symbol 186 MovieClip {Gun3}Uses:185
Symbol 187 GraphicUsed by:188
Symbol 188 MovieClip {Gun2}Uses:187
Symbol 189 GraphicUsed by:190
Symbol 190 MovieClip {Gun1}Uses:189
Symbol 191 GraphicUsed by:192
Symbol 192 MovieClip {Gun0}Uses:191
Symbol 193 EditableTextUses:1Used by:197
Symbol 194 EditableTextUses:1Used by:197
Symbol 195 EditableTextUses:1Used by:197
Symbol 196 EditableTextUses:1Used by:197
Symbol 197 MovieClip {BorderText}Uses:193 194 195 196
Symbol 198 GraphicUsed by:218
Symbol 199 GraphicUsed by:218
Symbol 200 GraphicUsed by:201 703
Symbol 201 MovieClipUses:200Used by:218
Symbol 202 GraphicUsed by:203
Symbol 203 MovieClipUses:202Used by:218
Symbol 204 GraphicUsed by:205 676
Symbol 205 MovieClipUses:204Used by:218
Symbol 206 GraphicUsed by:207 664
Symbol 207 MovieClipUses:206Used by:218
Symbol 208 GraphicUsed by:209
Symbol 209 MovieClipUses:208Used by:218
Symbol 210 GraphicUsed by:211 252
Symbol 211 MovieClipUses:210Used by:218
Symbol 212 GraphicUsed by:213
Symbol 213 MovieClip {SnoodLogo}Uses:212Used by:218 393
Symbol 214 GraphicUsed by:218
Symbol 215 MovieClipUses:167Used by:218
Symbol 216 GraphicUsed by:217
Symbol 217 MovieClipUses:216Used by:218
Symbol 218 MovieClip {Border}Uses:198 199 201 203 205 207 209 211 213 214 215 217
Symbol 219 EditableTextUses:2Used by:221
Symbol 220 EditableTextUses:2Used by:221
Symbol 221 MovieClip {VSgametype}Uses:219 220Used by:236
Symbol 222 EditableTextUses:2Used by:223
Symbol 223 MovieClip {VSname}Uses:222Used by:236 247
Symbol 224 GraphicUsed by:225
Symbol 225 MovieClip {PortraitHolder}Uses:224Used by:230
Symbol 226 GraphicUsed by:227
Symbol 227 MovieClip {PortraitNophoto}Uses:226Used by:230 233
Symbol 228 GraphicUsed by:229
Symbol 229 MovieClip {PortraitLoading}Uses:228Used by:230 233
Symbol 230 MovieClip {Portrait}Uses:167 225 227 229Used by:236 247 486 871 921 1008 1035
Symbol 231 GraphicUsed by:232
Symbol 232 MovieClip {PortraitHolderO}Uses:231Used by:233
Symbol 233 MovieClip {PortraitO}Uses:167 232 227 229Used by:236 247 727 1035
Symbol 234 GraphicUsed by:235
Symbol 235 MovieClipUses:234Used by:236 247 1035
Symbol 236 MovieClip {VSScreenChallenge}Uses:221 223 230 233 235
Symbol 237 GraphicUsed by:239 244 571
Symbol 238 GraphicUsed by:239 241 242
Symbol 239 MovieClipUses:237 238Used by:242
Symbol 240 GraphicUsed by:241 242 245 246
Symbol 241 MovieClipUses:240 238Used by:242
Symbol 242 Button {Button_back}Uses:239 241 240 238Used by:247 815
Symbol 243 GraphicUsed by:244 245 246
Symbol 244 MovieClipUses:237 243Used by:246
Symbol 245 MovieClipUses:240 243Used by:246
Symbol 246 Button {Button_check}Uses:244 245 240 243Used by:247 262 726 815 817
Symbol 247 MovieClip {VSScreen}Uses:242 246 223 230 233 235
Symbol 248 GraphicUsed by:249 663
Symbol 249 MovieClipUses:248Used by:262 512 532 544 558 574 583 660 718 726 775 815 817 1008 1035 1040 1047
Symbol 250 GraphicUsed by:251
Symbol 251 MovieClip {PopupSheet}Uses:250Used by:262 512 532 544 558 574 583 660 726 815 817 1008 1035 1040 1047
Symbol 252 MovieClipUses:210Used by:257 512 681 682 726 738 747 774
Symbol 253 GraphicUsed by:254
Symbol 254 MovieClip {JakeWin}Uses:253Used by:257 1040
Symbol 255 GraphicUsed by:256
Symbol 256 MovieClip {JakeWorried}Uses:255Used by:257
Symbol 257 MovieClip {YouSnood}Uses:252 254 256Used by:262 660
Symbol 258 EditableTextUses:2Used by:262
Symbol 259 EditableTextUses:2Used by:262
Symbol 260 EditableTextUses:2Used by:262
Symbol 261 EditableTextUses:2Used by:262
Symbol 262 MovieClip {UIProblemPopup}Uses:249 251 246 257 258 259 260 261
Symbol 263 MovieClip {fl.containers.UILoader}Uses:125 126
Symbol 264 MovieClip {menucode.titlescreen.UITitleMenu}
Symbol 265 GraphicUsed by:268 297 312 326 333 340 367 376 381 395 586
Symbol 266 GraphicUsed by:268 271 272 275 278 279 285 287 288 297 299 300 312 314 315 318 320 321 326 329 330 333 336 337 340 343 344 346 348 349 356 358 359 362 364 365 367 369 370 376 378 379 381 383 384 395 397 398 445 447 448 453 455 456
Symbol 267 GraphicUsed by:268
Symbol 268 MovieClipUses:265 266 267Used by:272
Symbol 269 GraphicUsed by:271 272 299 300 314 315 329 330 336 337 343 344 369 370 378 379 383 384 397 398 455 456 589 590
Symbol 270 GraphicUsed by:271 272
Symbol 271 MovieClipUses:269 266 270Used by:272
Symbol 272 Button {Button_classic}Uses:268 271 269 266 270Used by:323
Symbol 273 GraphicUsed by:275 285 318 346 356 362 445 535 593 598 603 821 979 984 989 1013
Symbol 274 GraphicUsed by:275
Symbol 275 MovieClipUses:273 266 274Used by:279
Symbol 276 GraphicUsed by:278 279 287 288 320 321 348 349 358 359 364 365 447 448 453 537 538 595 596 600 601 605 606 823 824 981 982 986 987 991 992 1015 1016
Symbol 277 GraphicUsed by:278 279
Symbol 278 MovieClipUses:276 266 277Used by:279
Symbol 279 Button {Button_snoods}Uses:275 278 276 266 277Used by:283
Symbol 280 EditableTextUses:2Used by:282
Symbol 281 EditableTextUses:2Used by:282
Symbol 282 MovieClip {SnoodsToggle}Uses:280 281Used by:283
Symbol 283 MovieClip {group_snoods}Uses:279 282Used by:323
Symbol 284 GraphicUsed by:285
Symbol 285 MovieClipUses:273 266 284Used by:288
Symbol 286 GraphicUsed by:287 288
Symbol 287 MovieClipUses:276 266 286Used by:288
Symbol 288 Button {Button_difficulty}Uses:285 287 276 266 286Used by:295
Symbol 289 EditableTextUses:2Used by:294
Symbol 290 EditableTextUses:2Used by:294
Symbol 291 EditableTextUses:2Used by:294
Symbol 292 EditableTextUses:2Used by:294
Symbol 293 EditableTextUses:2Used by:294
Symbol 294 MovieClip {DifficultyToggle}Uses:289 290 291 292 293Used by:295
Symbol 295 MovieClip {group_difficulty}Uses:288 294Used by:323
Symbol 296 GraphicUsed by:297
Symbol 297 MovieClipUses:265 266 296Used by:300
Symbol 298 GraphicUsed by:299 300
Symbol 299 MovieClipUses:269 266 298Used by:300
Symbol 300 Button {Button_timeattack}Uses:297 299 269 266 298Used by:304
Symbol 301 GraphicUsed by:302
Symbol 302 MovieClipUses:301Used by:303
Symbol 303 MovieClip {ProFeatureAnim}Uses:302Used by:304 316 322 399
Symbol 304 MovieClip {group_timeattack}Uses:300 303Used by:323
Symbol 305 GraphicUsed by:308
Symbol 306 GraphicUsed by:307
Symbol 307 MovieClipUses:306Used by:308
Symbol 308 MovieClipUses:305 307Used by:323
Symbol 309 EditableTextUses:2Used by:310
Symbol 310 MovieClip {Challengemessage}Uses:309Used by:323
Symbol 311 GraphicUsed by:312
Symbol 312 MovieClipUses:265 266 311Used by:315
Symbol 313 GraphicUsed by:314 315
Symbol 314 MovieClipUses:269 266 313Used by:315
Symbol 315 Button {Button_puzzle}Uses:312 314 269 266 313Used by:316
Symbol 316 MovieClip {group_puzzle}Uses:315 303Used by:323
Symbol 317 GraphicUsed by:318
Symbol 318 MovieClipUses:273 266 317Used by:321
Symbol 319 GraphicUsed by:320 321
Symbol 320 MovieClipUses:276 266 319Used by:321
Symbol 321 Button {Button_noads}Uses:318 320 276 266 319Used by:322
Symbol 322 MovieClip {group_noads}Uses:321 303Used by:323
Symbol 323 MovieClip {Page3}Uses:272 283 295 304 308 310 316 322
Symbol 324 EditableTextUses:2Used by:326
Symbol 325 GraphicUsed by:326
Symbol 326 MovieClipUses:265 266 324 325Used by:330
Symbol 327 EditableTextUses:2Used by:329 330
Symbol 328 GraphicUsed by:329 330
Symbol 329 MovieClipUses:269 266 327 328Used by:330
Symbol 330 Button {Button_1player}Uses:326 329 269 266 327 328Used by:350
Symbol 331 EditableTextUses:2Used by:333
Symbol 332 GraphicUsed by:333
Symbol 333 MovieClipUses:265 266 331 332Used by:337
Symbol 334 EditableTextUses:2Used by:336 337
Symbol 335 GraphicUsed by:336 337
Symbol 336 MovieClipUses:269 266 334 335Used by:337
Symbol 337 Button {Button_live}Uses:333 336 269 266 334 335Used by:350
Symbol 338 EditableTextUses:2Used by:340
Symbol 339 GraphicUsed by:340
Symbol 340 MovieClipUses:265 266 338 339Used by:344
Symbol 341 EditableTextUses:2Used by:343 344
Symbol 342 GraphicUsed by:343 344
Symbol 343 MovieClipUses:269 266 341 342Used by:344
Symbol 344 Button {Button_challenge}Uses:340 343 269 266 341 342Used by:350
Symbol 345 GraphicUsed by:346
Symbol 346 MovieClipUses:273 266 345Used by:349
Symbol 347 GraphicUsed by:348 349
Symbol 348 MovieClipUses:276 266 347Used by:349
Symbol 349 Button {Button_gameguide}Uses:346 348 276 266 347Used by:350
Symbol 350 MovieClip {Page2}Uses:330 337 344 349
Symbol 351 GraphicUsed by:354
Symbol 352 EditableTextUses:2Used by:354
Symbol 353 EditableTextUses:2Used by:354
Symbol 354 MovieClip {ChallengeIndicator}Uses:351 352 353Used by:360
Symbol 355 GraphicUsed by:356
Symbol 356 MovieClipUses:273 266 355Used by:359
Symbol 357 GraphicUsed by:358 359
Symbol 358 MovieClipUses:276 266 357Used by:359
Symbol 359 Button {Button_2pmanager}Uses:356 358 276 266 357Used by:360
Symbol 360 MovieClip {group_2pmanager}Uses:354 359Used by:385
Symbol 361 GraphicUsed by:362
Symbol 362 MovieClipUses:273 266 361Used by:365
Symbol 363 GraphicUsed by:364 365
Symbol 364 MovieClipUses:276 266 363Used by:365
Symbol 365 Button {Button_rankings}Uses:362 364 276 266 363Used by:385
Symbol 366 GraphicUsed by:367
Symbol 367 MovieClipUses:265 266 366Used by:370
Symbol 368 GraphicUsed by:369 370
Symbol 369 MovieClipUses:269 266 368Used by:370
Symbol 370 Button {Button_invit}Uses:367 369 269 266 368Used by:374
Symbol 371 EditableTextUses:2Used by:373
Symbol 372 EditableTextUses:2Used by:373
Symbol 373 MovieClip {Friendsindicator}Uses:371 372Used by:374
Symbol 374 MovieClip {group_invite}Uses:370 373Used by:385
Symbol 375 GraphicUsed by:376
Symbol 376 MovieClipUses:265 266 375Used by:379
Symbol 377 GraphicUsed by:378 379
Symbol 378 MovieClipUses:269 266 377Used by:379
Symbol 379 Button {Button_addtoprofile}Uses:376 378 269 266 377Used by:385
Symbol 380 GraphicUsed by:381
Symbol 381 MovieClipUses:265 266 380Used by:384
Symbol 382 GraphicUsed by:383 384
Symbol 383 MovieClipUses:269 266 382Used by:384
Symbol 384 Button {Button_credits}Uses:381 383 269 266 382Used by:385
Symbol 385 MovieClip {Page1}Uses:360 365 374 379 384
Symbol 386 GraphicUsed by:387
Symbol 387 MovieClip {SnoodPlanet}Uses:386Used by:393
Symbol 388 GraphicUsed by:392
Symbol 389 GraphicUsed by:392
Symbol 390 GraphicUsed by:392
Symbol 391 GraphicUsed by:392
Symbol 392 MovieClip {menucode.titlescreen.UITitleMenuJake}Uses:388 389 390 391Used by:393
Symbol 393 MovieClip {Page0}Uses:387 213 392
Symbol 394 GraphicUsed by:395
Symbol 395 MovieClipUses:265 266 394Used by:398
Symbol 396 GraphicUsed by:397 398
Symbol 397 MovieClipUses:269 266 396Used by:398
Symbol 398 Button {Button_story}Uses:395 397 269 266 396Used by:399
Symbol 399 MovieClip {group_story}Uses:398 303
Symbol 400 MovieClip {Black}Uses:167Used by:425 432 439
Symbol 401 GraphicUsed by:402 629
Symbol 402 MovieClipUses:401Used by:405
Symbol 403 GraphicUsed by:404
Symbol 404 MovieClipUses:403Used by:405
Symbol 405 MovieClipUses:402 404Used by:407
Symbol 406 EditableTextUses:2Used by:407
Symbol 407 MovieClipUses:405 406Used by:425 432 439
Symbol 408 GraphicUsed by:409
Symbol 409 MovieClipUses:408Used by:425 432 439
Symbol 410 EditableTextUses:2Used by:425
Symbol 411 EditableTextUses:2Used by:425
Symbol 412 EditableTextUses:2Used by:425
Symbol 413 EditableTextUses:2Used by:425
Symbol 414 EditableTextUses:2Used by:425
Symbol 415 GraphicUsed by:425 432 439
Symbol 416 GraphicUsed by:425
Symbol 417 GraphicUsed by:418
Symbol 418 MovieClipUses:417Used by:425 432 439
Symbol 419 GraphicUsed by:420
Symbol 420 MovieClipUses:419Used by:423
Symbol 421 GraphicUsed by:422
Symbol 422 MovieClipUses:421Used by:423
Symbol 423 MovieClip {ClickToBuy}Uses:420 422Used by:424
Symbol 424 MovieClip {ClickToBuyAnim}Uses:423Used by:425 432 439
Symbol 425 MovieClip {ToolTipTimeattack}Uses:400 407 409 410 411 412 413 414 415 416 418 424
Symbol 426 EditableTextUses:2Used by:432
Symbol 427 EditableTextUses:2Used by:432
Symbol 428 EditableTextUses:2Used by:432
Symbol 429 EditableTextUses:2Used by:432
Symbol 430 EditableTextUses:2Used by:432
Symbol 431 GraphicUsed by:432
Symbol 432 MovieClip {ToolTipPuzzle}Uses:400 407 409 426 427 428 429 430 415 431 418 424
Symbol 433 EditableTextUses:2Used by:439
Symbol 434 EditableTextUses:2Used by:439
Symbol 435 EditableTextUses:2Used by:439
Symbol 436 EditableTextUses:2Used by:439
Symbol 437 EditableTextUses:2Used by:439
Symbol 438 GraphicUsed by:439
Symbol 439 MovieClip {ToolTipNoads}Uses:400 407 409 433 434 435 436 437 415 438 418 424
Symbol 440 EditableTextUses:2Used by:443
Symbol 441 EditableTextUses:2Used by:443
Symbol 442 EditableTextUses:2Used by:443
Symbol 443 MovieClip {InstructionsToggle}Uses:440 441 442Used by:449
Symbol 444 GraphicUsed by:445
Symbol 445 MovieClipUses:273 266 444Used by:448
Symbol 446 GraphicUsed by:447 448
Symbol 447 MovieClipUses:276 266 446Used by:448
Symbol 448 Button {Button_instructions}Uses:445 447 276 266 446Used by:449
Symbol 449 MovieClip {group_instructions}Uses:448 443
Symbol 450 GraphicUsed by:451
Symbol 451 Button {Button_singleplayer}Uses:450
Symbol 452 GraphicUsed by:453
Symbol 453 MovieClipUses:276 266 452Used by:456
Symbol 454 GraphicUsed by:455 456
Symbol 455 MovieClipUses:269 266 454Used by:456
Symbol 456 Button {Button_featurestore}Uses:453 455 269 266 454
Symbol 457 GraphicUsed by:461
Symbol 458 GraphicUsed by:461
Symbol 459 GraphicUsed by:461
Symbol 460 GraphicUsed by:461
Symbol 461 MovieClip {StatusIcon}Uses:457 458 459 460Used by:486
Symbol 462 GraphicUsed by:463
Symbol 463 MovieClip {ChallengeRecordStrip}Uses:462Used by:486
Symbol 464 EditableTextUses:2Used by:486
Symbol 465 EditableTextUses:2Used by:486
Symbol 466 EditableTextUses:2Used by:486
Symbol 467 EditableTextUses:2Used by:486
Symbol 468 EditableTextUses:2Used by:486
Symbol 469 EditableTextUses:2Used by:486
Symbol 470 GraphicUsed by:474
Symbol 471 GraphicUsed by:474
Symbol 472 GraphicUsed by:474
Symbol 473 GraphicUsed by:474
Symbol 474 Button {ActionButtonBaseGreen}Uses:470 471 472 473Used by:485
Symbol 475 GraphicUsed by:479
Symbol 476 GraphicUsed by:479
Symbol 477 GraphicUsed by:479
Symbol 478 GraphicUsed by:479
Symbol 479 Button {ActionButtonBaseRed}Uses:475 476 477 478Used by:485
Symbol 480 GraphicUsed by:484
Symbol 481 GraphicUsed by:484
Symbol 482 GraphicUsed by:484
Symbol 483 GraphicUsed by:484
Symbol 484 Button {ActionButtonBaseYellow}Uses:480 481 482 483Used by:485
Symbol 485 MovieClip {ActionButton}Uses:474 479 484Used by:486
Symbol 486 MovieClip {ChallengeRecord}Uses:463 464 465 466 467 468 230 469 461 485
Symbol 487 GraphicUsed by:488
Symbol 488 MovieClip {Welcome}Uses:487Used by:512
Symbol 489 EditableTextUses:2Used by:490
Symbol 490 MovieClip {Welcome_points}Uses:489Used by:512
Symbol 491 EditableTextUses:2Used by:492
Symbol 492 MovieClip {Welcome_message}Uses:491Used by:512
Symbol 493 GraphicUsed by:497
Symbol 494 GraphicUsed by:497
Symbol 495 GraphicUsed by:497
Symbol 496 GraphicUsed by:497
Symbol 497 Button {ContinueButton}Uses:493 494 495 496Used by:512 532 544 558 574 583 718 775
Symbol 498 GraphicUsed by:502
Symbol 499 FontUsed by:500
Symbol 500 TextUses:499Used by:502
Symbol 501 GraphicUsed by:502
Symbol 502 MovieClipUses:498 500 501Used by:512 514 775 811 928
Symbol 503 GraphicUsed by:504
Symbol 504 MovieClip {PopupSparks}Uses:503Used by:512 544 558 574 583 744 756
Symbol 505 GraphicUsed by:511
Symbol 506 GraphicUsed by:507
Symbol 507 MovieClipUses:506Used by:511
Symbol 508 GraphicUsed by:511
Symbol 509 GraphicUsed by:510
Symbol 510 MovieClipUses:509Used by:511
Symbol 511 MovieClip {MonkeyCoin}Uses:505 507 508 510Used by:512 553 558 574 583
Symbol 512 MovieClip {PopupWelcome}Uses:249 492 497 490 251 488 252 502 504 511
Symbol 513 EditableTextUses:2Used by:514
Symbol 514 MovieClipUses:502 513Used by:515
Symbol 515 MovieClip {PopupSponsored}Uses:514
Symbol 516 GraphicUsed by:517
Symbol 517 MovieClip {ScratchCoin}Uses:516
Symbol 518 GraphicUsed by:519
Symbol 519 MovieClip {ScratchToWin}Uses:518Used by:532
Symbol 520 ShapeTweeningUsed by:523
Symbol 521 GraphicUsed by:523
Symbol 522 GraphicUsed by:523
Symbol 523 MovieClip {ScratchFoilBase}Uses:520 521 522Used by:524
Symbol 524 MovieClip {ScratchFoil}Uses:523Used by:532
Symbol 525 GraphicUsed by:529
Symbol 526 EditableTextUses:2Used by:529
Symbol 527 EditableTextUses:2Used by:529
Symbol 528 EditableTextUses:2Used by:529
Symbol 529 MovieClip {ScratchReward}Uses:525 526 527 528Used by:532
Symbol 530 EditableTextUses:2Used by:531
Symbol 531 MovieClip {Scratch_line1}Uses:530Used by:532
Symbol 532 MovieClip {PopupScratchcard}Uses:249 251 531 529 524 497 519
Symbol 533 GraphicUsed by:535 537 538 586 589 590 593 595 596 598 600 601 603 605 606 821 823 824 979 981 982 984 986 987 989 991 992 1013 1015 1016
Symbol 534 GraphicUsed by:535
Symbol 535 MovieClipUses:273 533 534Used by:538
Symbol 536 GraphicUsed by:537 538
Symbol 537 MovieClipUses:276 533 536Used by:538
Symbol 538 Button {Button_inviteanother}Uses:535 537 276 533 536Used by:539
Symbol 539 MovieClip {Postinvite_invitebuttongroup}Uses:538Used by:544
Symbol 540 EditableTextUses:2Used by:541
Symbol 541 MovieClip {Postinvite_message}Uses:540Used by:544
Symbol 542 GraphicUsed by:543
Symbol 543 MovieClipUses:542Used by:544
Symbol 544 MovieClip {PopupPostinvite}Uses:249 541 539 497 251 543 504
Symbol 545 EditableTextUses:2Used by:546
Symbol 546 MovieClip {Small_line1}Uses:545Used by:553
Symbol 547 EditableTextUses:2Used by:548
Symbol 548 MovieClip {Small_line2}Uses:547Used by:553
Symbol 549 ShapeTweeningUsed by:553
Symbol 550 GraphicUsed by:553
Symbol 551 ShapeTweeningUsed by:553
Symbol 552 GraphicUsed by:553
Symbol 553 MovieClip {PopupPointsSmall}Uses:549 548 546 511 550 551 552
Symbol 554 EditableTextUses:2Used by:555
Symbol 555 MovieClip {Points_line1}Uses:554Used by:558
Symbol 556 EditableTextUses:2Used by:557
Symbol 557 MovieClip {Coins_line2}Uses:556Used by:558
Symbol 558 MovieClip {PopupPoints}Uses:249 555 557 497 251 511 504
Symbol 559 GraphicUsed by:560
Symbol 560 MovieClip {RankportraitHolder}Uses:559Used by:574 921 930
Symbol 561 EditableTextUses:2Used by:562
Symbol 562 MovieClip {Newrank_line4}Uses:561Used by:574
Symbol 563 EditableTextUses:2Used by:564
Symbol 564 MovieClip {Newrank_line3}Uses:563Used by:574
Symbol 565 EditableTextUses:2Used by:566
Symbol 566 MovieClip {Newrank_line2}Uses:565Used by:574
Symbol 567 EditableTextUses:2Used by:568
Symbol 568 MovieClip {Newrank_line1}Uses:567Used by:574
Symbol 569 EditableTextUses:2Used by:570
Symbol 570 MovieClip {Newrank_line5}Uses:569Used by:574 583
Symbol 571 MovieClipUses:237Used by:574 583 723 811 1008 1035
Symbol 572 GraphicUsed by:573
Symbol 573 MovieClipUses:572Used by:574 583
Symbol 574 MovieClip {PopupNewrank}Uses:249 251 560 562 564 566 568 570 497 571 573 504 511
Symbol 575 GraphicUsed by:576
Symbol 576 MovieClip {AchievementAnchor}Uses:575Used by:583 911 917
Symbol 577 EditableTextUses:2Used by:578
Symbol 578 MovieClip {Newachievement_line3}Uses:577Used by:583
Symbol 579 EditableTextUses:2Used by:580
Symbol 580 MovieClip {Newachievement_line2}Uses:579Used by:583
Symbol 581 EditableTextUses:2Used by:582
Symbol 582 MovieClip {Newachievement_line1}Uses:581Used by:583
Symbol 583 MovieClip {PopupNewachievement}Uses:249 251 576 578 580 582 570 497 571 573 504 511
Symbol 584 GraphicUsed by:585
Symbol 585 MovieClipUses:584Used by:586
Symbol 586 MovieClipUses:265 533 585Used by:590
Symbol 587 GraphicUsed by:588 590
Symbol 588 MovieClipUses:587Used by:589
Symbol 589 MovieClipUses:269 533 588Used by:590 657
Symbol 590 Button {Button_play}Uses:586 589 269 533 587Used by:591
Symbol 591 MovieClip {buttongroup_play}Uses:590Used by:660
Symbol 592 GraphicUsed by:593
Symbol 593 MovieClipUses:273 533 592Used by:596
Symbol 594 GraphicUsed by:595 596
Symbol 595 MovieClipUses:276 533 594Used by:596
Symbol 596 Button {Button_playalone}Uses:593 595 276 533 594Used by:607
Symbol 597 GraphicUsed by:598
Symbol 598 MovieClipUses:273 533 597Used by:601
Symbol 599 GraphicUsed by:600 601
Symbol 600 MovieClipUses:276 533 599Used by:601
Symbol 601 Button {Button_resendwait}Uses:598 600 276 533 599Used by:607
Symbol 602 GraphicUsed by:603
Symbol 603 MovieClipUses:273 533 602Used by:606
Symbol 604 GraphicUsed by:605 606
Symbol 605 MovieClipUses:276 533 604Used by:606
Symbol 606 Button {Button_challengeanother}Uses:603 605 276 533 604Used by:607
Symbol 607 MovieClip {buttongroup_timeout}Uses:596 601 606Used by:660
Symbol 608 EditableTextUses:2Used by:609
Symbol 609 MovieClipUses:608Used by:630
Symbol 610 GraphicUsed by:611
Symbol 611 MovieClipUses:610Used by:629
Symbol 612 GraphicUsed by:629
Symbol 613 BitmapUsed by:614
Symbol 614 GraphicUses:613Used by:629
Symbol 615 BitmapUsed by:616
Symbol 616 GraphicUses:615Used by:629
Symbol 617 FontUsed by:618 623 626
Symbol 618 TextUses:617Used by:629
Symbol 619 GraphicUsed by:620
Symbol 620 MovieClipUses:619Used by:621
Symbol 621 MovieClipUses:620Used by:629
Symbol 622 GraphicUsed by:629
Symbol 623 TextUses:617Used by:629
Symbol 624 FontUsed by:625
Symbol 625 TextUses:624Used by:629
Symbol 626 TextUses:617Used by:629
Symbol 627 BitmapUsed by:628
Symbol 628 GraphicUses:627Used by:629
Symbol 629 MovieClipUses:611 401 612 614 616 618 621 622 623 625 626 628Used by:630
Symbol 630 MovieClipUses:609 629Used by:631
Symbol 631 MovieClip {Notification}Uses:630Used by:660
Symbol 632 GraphicUsed by:633
Symbol 633 MovieClipUses:632Used by:638 714 715 882
Symbol 634 GraphicUsed by:635
Symbol 635 MovieClip {SkullHappy}Uses:634Used by:638
Symbol 636 GraphicUsed by:637
Symbol 637 MovieClip {SkullWorried}Uses:636Used by:638
Symbol 638 MovieClip {OppSnood}Uses:633 635 637Used by:660
Symbol 639 GraphicUsed by:650
Symbol 640 ShapeTweeningUsed by:650
Symbol 641 ShapeTweeningUsed by:650
Symbol 642 GraphicUsed by:650
Symbol 643 GraphicUsed by:650
Symbol 644 ShapeTweeningUsed by:650
Symbol 645 ShapeTweeningUsed by:650
Symbol 646 GraphicUsed by:650
Symbol 647 ShapeTweeningUsed by:650
Symbol 648 ShapeTweeningUsed by:650
Symbol 649 GraphicUsed by:650
Symbol 650 MovieClip {Arrows}Uses:639 640 641 642 643 644 645 646 647 648 649Used by:660
Symbol 651 EditableTextUses:2Used by:652
Symbol 652 MovieClipUses:651Used by:660
Symbol 653 EditableTextUses:2Used by:654
Symbol 654 MovieClipUses:653Used by:660
Symbol 655 EditableTextUses:2Used by:657
Symbol 656 EditableTextUses:2Used by:657
Symbol 657 MovieClipUses:655 656 589Used by:660
Symbol 658 EditableTextUses:2Used by:659
Symbol 659 MovieClipUses:658Used by:660
Symbol 660 MovieClip {PopupLive}Uses:249 591 607 631 251 638 257 650 652 654 657 659
Symbol 661 GraphicUsed by:662
Symbol 662 MovieClip {Rank10title}Uses:661Used by:667
Symbol 663 MovieClip {RankBkg}Uses:248Used by:667 673 678 682 688 694 700 705 711 715
Symbol 664 MovieClipUses:206Used by:667 894
Symbol 665 GraphicUsed by:666
Symbol 666 MovieClip {RankFrame}Uses:665Used by:667 673 678 682 688 694 700 705 711 715
Symbol 667 MovieClip {Rank10}Uses:663 664 662 666Used by:718
Symbol 668 GraphicUsed by:669
Symbol 669 MovieClip {Rank09title}Uses:668Used by:673
Symbol 670 GraphicUsed by:671
Symbol 671 MovieClipUses:670Used by:672 673
Symbol 672 MovieClipUses:671Used by:673
Symbol 673 MovieClip {Rank09}Uses:663 671 672 669 666Used by:718
Symbol 674 GraphicUsed by:675
Symbol 675 MovieClip {Rank08title}Uses:674Used by:678
Symbol 676 MovieClipUses:204Used by:677 678 738 744 882
Symbol 677 MovieClipUses:676Used by:678
Symbol 678 MovieClip {Rank08}Uses:663 676 677 675 666Used by:718
Symbol 679 GraphicUsed by:680
Symbol 680 MovieClip {Rank07title}Uses:679Used by:682
Symbol 681 MovieClipUses:252Used by:682
Symbol 682 MovieClip {Rank07}Uses:663 252 681 680 666Used by:718
Symbol 683 GraphicUsed by:684
Symbol 684 MovieClip {Rank06title}Uses:683Used by:688
Symbol 685 GraphicUsed by:686
Symbol 686 MovieClipUses:685Used by:687 688 744 774 827 882
Symbol 687 MovieClipUses:686Used by:688
Symbol 688 MovieClip {Rank06}Uses:663 686 687 684 666Used by:718
Symbol 689 GraphicUsed by:690
Symbol 690 MovieClip {Rank05title}Uses:689Used by:694
Symbol 691 GraphicUsed by:692
Symbol 692 MovieClipUses:691Used by:693 694 882
Symbol 693 MovieClipUses:692Used by:694
Symbol 694 MovieClip {Rank05}Uses:663 692 693 690 666Used by:718
Symbol 695 GraphicUsed by:696
Symbol 696 MovieClip {Rank04title}Uses:695Used by:700
Symbol 697 GraphicUsed by:698
Symbol 698 MovieClipUses:697Used by:699 700 738 774 882
Symbol 699 MovieClipUses:698Used by:700
Symbol 700 MovieClip {Rank04}Uses:663 698 699 696 666Used by:718
Symbol 701 GraphicUsed by:702
Symbol 702 MovieClip {Rank03title}Uses:701Used by:705
Symbol 703 MovieClipUses:200Used by:704 705 738 744 876 882
Symbol 704 MovieClipUses:703Used by:705
Symbol 705 MovieClip {Rank03}Uses:663 703 704 702 666Used by:718
Symbol 706 GraphicUsed by:707
Symbol 707 MovieClip {Rank02title}Uses:706Used by:711
Symbol 708 GraphicUsed by:709
Symbol 709 MovieClipUses:708Used by:710 711 747 882
Symbol 710 MovieClipUses:709Used by:711
Symbol 711 MovieClip {Rank02}Uses:663 709 710 707 666Used by:718
Symbol 712 GraphicUsed by:713
Symbol 713 MovieClip {Rank01title}Uses:712Used by:715
Symbol 714 MovieClipUses:633Used by:715
Symbol 715 MovieClip {Rank01}Uses:663 633 714 713 666Used by:718
Symbol 716 GraphicUsed by:717
Symbol 717 MovieClipUses:716Used by:718
Symbol 718 MovieClip {PopupLevelchart}Uses:249 715 711 705 700 694 688 682 678 673 667 497 717
Symbol 719 GraphicUsed by:722
Symbol 720 GraphicUsed by:722
Symbol 721 GraphicUsed by:722
Symbol 722 MovieClip {Getready_numbers}Uses:719 720 721Used by:723
Symbol 723 MovieClip {PopupGetready}Uses:571 722
Symbol 724 EditableTextUses:2Used by:725
Symbol 725 MovieClip {Difficulty_message}Uses:724Used by:726
Symbol 726 MovieClip {PopupDifficulty}Uses:249 725 246 251 252
Symbol 727 MovieClip {OpponentPortrait}Uses:233
Symbol 728 GraphicUsed by:729
Symbol 729 MovieClip {LogoInstructions}Uses:728Used by:775
Symbol 730 GraphicUsed by:732
Symbol 731 GraphicUsed by:732
Symbol 732 MovieClip {OnlineOnlyToggle}Uses:730 731Used by:775 972
Symbol 733 GraphicUsed by:734
Symbol 734 MovieClipUses:733Used by:735
Symbol 735 MovieClipUses:734Used by:738 744 747
Symbol 736 GraphicUsed by:737
Symbol 737 MovieClipUses:736Used by:738 744 774
Symbol 738 MovieClip {Instrpage01_anim01}Uses:737 698 252 703 735 676Used by:747
Symbol 739 EditableTextUses:2Used by:747
Symbol 740 EditableTextUses:2Used by:747
Symbol 741 EditableTextUses:2Used by:747
Symbol 742 EditableTextUses:2Used by:747
Symbol 743 GraphicUsed by:744
Symbol 744 MovieClip {Instrpage01_anim02}Uses:737 743 735 676 703 686 504Used by:747
Symbol 745 GraphicUsed by:746
Symbol 746 MovieClipUses:745Used by:747 774
Symbol 747 MovieClip {Instrpage01}Uses:735 252 709 738 739 740 741 742 744 746Used by:775
Symbol 748 EditableTextUses:2Used by:775
Symbol 749 GraphicUsed by:774
Symbol 750 ShapeTweeningUsed by:755
Symbol 751 GraphicUsed by:752
Symbol 752 MovieClip {DangerMeter}Uses:751Used by:755
Symbol 753 ShapeTweeningUsed by:755
Symbol 754 GraphicUsed by:755
Symbol 755 MovieClip {DangerMeterAnim}Uses:750 752 753 754Used by:774
Symbol 756 MovieClipUses:504Used by:774
Symbol 757 EditableTextUses:2Used by:774
Symbol 758 EditableTextUses:2Used by:774
Symbol 759 EditableTextUses:2Used by:774
Symbol 760 EditableTextUses:2Used by:774
Symbol 761 EditableTextUses:2Used by:774
Symbol 762 GraphicUsed by:763
Symbol 763 MovieClipUses:762Used by:774
Symbol 764 EditableTextUses:2Used by:774
Symbol 765 GraphicUsed by:766
Symbol 766 MovieClipUses:765Used by:767
Symbol 767 MovieClip {SnoodGame_fla.ZzzAnim_162}Uses:766Used by:774
Symbol 768 EditableTextUses:2Used by:774
Symbol 769 EditableTextUses:2Used by:774
Symbol 770 EditableTextUses:2Used by:774
Symbol 771 GraphicUsed by:772
Symbol 772 MovieClipUses:771Used by:773
Symbol 773 MovieClipUses:772Used by:774
Symbol 774 MovieClip {Instrpage02}Uses:749 746 755 756 252 698 686 757 758 759 760 761 737 763 764 767 768 769 770 773Used by:775
Symbol 775 MovieClip {Instructions}Uses:249 497 732 729 502 747 748 774
Symbol 776 GraphicUsed by:777
Symbol 777 MovieClip {Friendsdiamond}Uses:776
Symbol 778 GraphicUsed by:779
Symbol 779 MovieClip {Controlicon_quit}Uses:778Used by:790
Symbol 780 GraphicUsed by:783 786 789
Symbol 781 GraphicUsed by:783
Symbol 782 GraphicUsed by:783
Symbol 783 MovieClip {Controlicon_quality}Uses:780 781 782Used by:790
Symbol 784 GraphicUsed by:786
Symbol 785 GraphicUsed by:786
Symbol 786 MovieClip {Controlicon_music}Uses:780 784 785Used by:790
Symbol 787 GraphicUsed by:789
Symbol 788 GraphicUsed by:789
Symbol 789 MovieClip {Controlicon_sound}Uses:780 787 788Used by:790
Symbol 790 MovieClip {Buttons}Uses:789 786 783 779
Symbol 791 GraphicUsed by:796 935 940 945 950
Symbol 792 EditableTextUses:2Used by:796
Symbol 793 EditableTextUses:2Used by:796
Symbol 794 EditableTextUses:2Used by:796
Symbol 795 GraphicUsed by:796
Symbol 796 Button {ArrowNext}Uses:791 792 793 794 795
Symbol 797 GraphicUsed by:798
Symbol 798 MovieClip {AchievementPanelBigBase}Uses:797
Symbol 799 GraphicUsed by:800
Symbol 800 MovieClip {Fold}Uses:799Used by:808
Symbol 801 GraphicUsed by:802
Symbol 802 MovieClipUses:801Used by:803
Symbol 803 MovieClipUses:802Used by:805
Symbol 804 GraphicUsed by:805
Symbol 805 MovieClip {Ring}Uses:803 804Used by:808
Symbol 806 GraphicUsed by:807
Symbol 807 MovieClip {White}Uses:806Used by:808
Symbol 808 MovieClip {Corner}Uses:807 805 800Used by:809
Symbol 809 MovieClip {menucode.ControlPanel}Uses:808Used by:Timeline
Symbol 810 EditableTextUses:2Used by:812
Symbol 811 MovieClipUses:571 502Used by:812
Symbol 812 MovieClip {Loadingicon}Uses:810 811Used by:813
Symbol 813 MovieClip {UILoading}Uses:812Used by:Timeline
Symbol 814 EditableTextUses:2Used by:815
Symbol 815 MovieClip {UIYesNoPopup}Uses:249 251 246 242 814Used by:Timeline
Symbol 816 EditableTextUses:2Used by:817
Symbol 817 MovieClip {UIPopup}Uses:249 251 246 816Used by:Timeline
Symbol 818 GraphicUsed by:819
Symbol 819 MovieClip {LogoChallenge}Uses:818Used by:1050
Symbol 820 GraphicUsed by:821
Symbol 821 MovieClipUses:273 533 820Used by:824
Symbol 822 GraphicUsed by:823 824
Symbol 823 MovieClipUses:276 533 822Used by:824
Symbol 824 Button {Button_challengeafriend}Uses:821 823 276 533 822Used by:827
Symbol 825 GraphicUsed by:827
Symbol 826 EditableTextUses:2Used by:827
Symbol 827 MovieClip {NoChallenges}Uses:825 686 824 826Used by:1050
Symbol 828 EditableTextUses:2Used by:834
Symbol 829 EditableTextUses:2Used by:834
Symbol 830 EditableTextUses:2Used by:834
Symbol 831 EditableTextUses:2Used by:834
Symbol 832 EditableTextUses:2Used by:834
Symbol 833 EditableTextUses:2Used by:834
Symbol 834 MovieClip {ChallengeRecordHeader}Uses:828 829 830 831 832 833Used by:1050
Symbol 835 GraphicUsed by:836
Symbol 836 MovieClipUses:835Used by:838
Symbol 837 GraphicUsed by:838
Symbol 838 Button {ChallengeRefreshButton}Uses:836 837Used by:1050
Symbol 839 GraphicUsed by:840
Symbol 840 MovieClip {ChallengesBkg}Uses:839Used by:843
Symbol 841 GraphicUsed by:842
Symbol 842 MovieClipUses:841Used by:843
Symbol 843 MovieClip {ChallengesBkgSetup}Uses:840 842Used by:1050
Symbol 844 GraphicUsed by:845
Symbol 845 MovieClip {LogoRankings}Uses:844Used by:964
Symbol 846 GraphicUsed by:847
Symbol 847 MovieClip {LogoAchievements}Uses:846Used by:964
Symbol 848 GraphicUsed by:850
Symbol 849 EditableTextUses:2Used by:850
Symbol 850 MovieClip {RankingsOverall}Uses:848 849Used by:964 1050
Symbol 851 GraphicUsed by:852
Symbol 852 MovieClipUses:851Used by:854
Symbol 853 GraphicUsed by:854
Symbol 854 Button {RankingsScrollCenter}Uses:852 853Used by:964
Symbol 855 GraphicUsed by:856
Symbol 856 MovieClipUses:855Used by:858
Symbol 857 GraphicUsed by:858
Symbol 858 Button {RankingsScrollDoubleArrow}Uses:856 857Used by:964
Symbol 859 GraphicUsed by:860
Symbol 860 MovieClip {RankingsTabSelected}Uses:859Used by:866
Symbol 861 GraphicUsed by:862
Symbol 862 MovieClip {RankingsTabUnselected}Uses:861Used by:866
Symbol 863 EditableTextUses:2Used by:866
Symbol 864 GraphicUsed by:865
Symbol 865 MovieClipUses:864Used by:866 928 930
Symbol 866 MovieClip {RankingsTabButton}Uses:862 860 863 865Used by:964 1050
Symbol 867 GraphicUsed by:871
Symbol 868 EditableTextUses:2Used by:871
Symbol 869 EditableTextUses:2Used by:871
Symbol 870 EditableTextUses:2Used by:871
Symbol 871 MovieClip {AchievementPlayerInfo}Uses:867 868 869 230 870Used by:964
Symbol 872 GraphicUsed by:900 901 902 903 904 905 906 907 908 909
Symbol 873 GraphicUsed by:876
Symbol 874 GraphicUsed by:876
Symbol 875 GraphicUsed by:876 878 880 882 884 886 888 890 892 894
Symbol 876 MovieClip {Achievement01}Uses:873 703 874 875Used by:895
Symbol 877 GraphicUsed by:878
Symbol 878 MovieClip {Achievement02}Uses:877 875Used by:895
Symbol 879 GraphicUsed by:880
Symbol 880 MovieClip {Achievement03}Uses:879 875Used by:895
Symbol 881 GraphicUsed by:882
Symbol 882 MovieClip {Achievement04}Uses:881 709 698 686 692 633 703 676 875Used by:895
Symbol 883 GraphicUsed by:884
Symbol 884 MovieClip {Achievement05}Uses:883 875Used by:895
Symbol 885 GraphicUsed by:886
Symbol 886 MovieClip {Achievement06}Uses:885 875Used by:895
Symbol 887 GraphicUsed by:888
Symbol 888 MovieClip {Achievement07}Uses:887 875Used by:895
Symbol 889 GraphicUsed by:890
Symbol 890 MovieClip {Achievement08}Uses:889 875Used by:895
Symbol 891 GraphicUsed by:892
Symbol 892 MovieClip {Achievement09}Uses:891 875Used by:895
Symbol 893 GraphicUsed by:894
Symbol 894 MovieClip {Achievement10}Uses:893 664 875Used by:895
Symbol 895 MovieClip {IconSetup}Uses:876 878 880 882 884 886 888 890 892 894Used by:900 901 902 903 904 905 906 907 908 909
Symbol 896 GraphicUsed by:899
Symbol 897 EditableTextUses:2Used by:899
Symbol 898 EditableTextUses:2Used by:899
Symbol 899 MovieClip {TooltipSetup}Uses:896 897 898Used by:900 901 902 903 904 905 906 907 908 909
Symbol 900 MovieClip {AchievementTooltip10}Uses:872 895 899Used by:911
Symbol 901 MovieClip {AchievementTooltip09}Uses:872 895 899Used by:911
Symbol 902 MovieClip {AchievementTooltip08}Uses:872 895 899Used by:911
Symbol 903 MovieClip {AchievementTooltip07}Uses:872 895 899Used by:911
Symbol 904 MovieClip {AchievementTooltip06}Uses:872 895 899Used by:911
Symbol 905 MovieClip {AchievementTooltip05}Uses:872 895 899Used by:911
Symbol 906 MovieClip {AchievementTooltip04}Uses:872 895 899Used by:911
Symbol 907 MovieClip {AchievementTooltip03}Uses:872 895 899Used by:911
Symbol 908 MovieClip {AchievementTooltip02}Uses:872 895 899Used by:911
Symbol 909 MovieClip {AchievementTooltip01}Uses:872 895 899Used by:911
Symbol 910 GraphicUsed by:911
Symbol 911 MovieClip {AchievementPanelBig}Uses:910 576 909 908 907 906 905 904 903 902 901 900Used by:964
Symbol 912 GraphicUsed by:913
Symbol 913 MovieClip {RankGraphHolder}Uses:912Used by:915
Symbol 914 GraphicUsed by:915
Symbol 915 MovieClip {RankingGraph}Uses:914 913Used by:964
Symbol 916 GraphicUsed by:917
Symbol 917 MovieClip {AchievementsPanelSmall}Uses:916 576Used by:921
Symbol 918 EditableTextUses:2Used by:921
Symbol 919 EditableTextUses:2Used by:921
Symbol 920 EditableTextUses:2Used by:921
Symbol 921 MovieClip {RankingInfo}Uses:560 917 918 919 920 230Used by:964
Symbol 922 GraphicUsed by:923
Symbol 923 MovieClip {RankingsBottomTabSelected}Uses:922Used by:928 930
Symbol 924 GraphicUsed by:925
Symbol 925 MovieClip {RankingsBottomTabUnselected}Uses:924Used by:928 930
Symbol 926 EditableTextUses:2Used by:928
Symbol 927 GraphicUsed by:928
Symbol 928 MovieClip {AchievementsTabButton}Uses:923 925 926 927 502 865Used by:964
Symbol 929 EditableTextUses:2Used by:930
Symbol 930 MovieClip {RankingsBottomTabButton}Uses:925 923 560 929 865Used by:964
Symbol 931 EditableTextUses:2Used by:935
Symbol 932 EditableTextUses:2Used by:935
Symbol 933 EditableTextUses:2Used by:935
Symbol 934 GraphicUsed by:935
Symbol 935 Button {LevelChartButton}Uses:791 931 932 933 934Used by:964
Symbol 936 EditableTextUses:2Used by:940
Symbol 937 EditableTextUses:2Used by:940
Symbol 938 EditableTextUses:2Used by:940
Symbol 939 GraphicUsed by:940
Symbol 940 Button {DetailedStatsButton}Uses:791 936 937 938 939Used by:964
Symbol 941 EditableTextUses:2Used by:945
Symbol 942 EditableTextUses:2Used by:945
Symbol 943 EditableTextUses:2Used by:945
Symbol 944 GraphicUsed by:945
Symbol 945 Button {ArrowDone}Uses:791 941 942 943 944Used by:964 1050
Symbol 946 EditableTextUses:2Used by:950
Symbol 947 EditableTextUses:2Used by:950
Symbol 948 EditableTextUses:2Used by:950
Symbol 949 GraphicUsed by:950
Symbol 950 Button {ArrowBack}Uses:791 946 947 948 949Used by:964 973 1050
Symbol 951 GraphicUsed by:952
Symbol 952 MovieClipUses:951Used by:964
Symbol 953 GraphicUsed by:964
Symbol 954 EditableTextUses:2Used by:964
Symbol 955 EditableTextUses:2Used by:964
Symbol 956 EditableTextUses:2Used by:964
Symbol 957 EditableTextUses:2Used by:964
Symbol 958 EditableTextUses:2Used by:964
Symbol 959 EditableTextUses:2Used by:964
Symbol 960 GraphicUsed by:961
Symbol 961 MovieClipUses:960Used by:963
Symbol 962 GraphicUsed by:963
Symbol 963 Button {RankingsScrollArrow}Uses:961 962Used by:964 1049 1050
Symbol 964 MovieClip {UIRanking}Uses:945 950 940 935 952 953 930 928 921 915 954 955 956 957 958 959 911 871 866 963 858 854 850 847 845Used by:Timeline
Symbol 965 GraphicUsed by:966
Symbol 966 MovieClip {LogoIssuechallenge}Uses:965Used by:967
Symbol 967 MovieClip {Header2}Uses:966Used by:1049
Symbol 968 GraphicUsed by:969
Symbol 969 MovieClip {LogoPickafriend}Uses:968Used by:972
Symbol 970 EditableTextUses:2Used by:972
Symbol 971 EditableTextUses:2Used by:972
Symbol 972 MovieClip {Header1}Uses:970 971 732 969Used by:1049
Symbol 973 MovieClip {buttongroup_back}Uses:950Used by:1049
Symbol 974 GraphicUsed by:975
Symbol 975 MovieClip {FriendBkg}Uses:974Used by:1049
Symbol 976 GraphicUsed by:977
Symbol 977 MovieClip {RoundScore}Uses:976Used by:1008
Symbol 978 GraphicUsed by:979
Symbol 979 MovieClipUses:273 533 978Used by:982
Symbol 980 GraphicUsed by:981 982
Symbol 981 MovieClipUses:276 533 980Used by:982
Symbol 982 Button {Button_continue}Uses:979 981 276 533 980Used by:1008
Symbol 983 GraphicUsed by:984
Symbol 984 MovieClipUses:273 533 983Used by:987
Symbol 985 GraphicUsed by:986 987
Symbol 986 MovieClipUses:276 533 985Used by:987
Symbol 987 Button {Button_tryagain}Uses:984 986 276 533 985Used by:1008
Symbol 988 GraphicUsed by:989
Symbol 989 MovieClipUses:273 533 988Used by:992
Symbol 990 GraphicUsed by:991 992
Symbol 991 MovieClipUses:276 533 990Used by:992
Symbol 992 Button {Button_exit}Uses:989 991 276 533 990Used by:1008 1035 1040 1047
Symbol 993 EditableTextUses:2Used by:1008
Symbol 994 EditableTextUses:2Used by:1008
Symbol 995 EditableTextUses:2Used by:1008
Symbol 996 EditableTextUses:2Used by:1008
Symbol 997 EditableTextUses:2Used by:1008
Symbol 998 EditableTextUses:2Used by:1008
Symbol 999 EditableTextUses:2Used by:1008
Symbol 1000 EditableTextUses:2Used by:1008
Symbol 1001 EditableTextUses:2Used by:1008
Symbol 1002 EditableTextUses:2Used by:1008
Symbol 1003 EditableTextUses:2Used by:1008
Symbol 1004 EditableTextUses:2Used by:1008
Symbol 1005 EditableTextUses:2Used by:1008
Symbol 1006 GraphicUsed by:1007
Symbol 1007 MovieClip {FinalScore}Uses:1006Used by:1008 1035
Symbol 1008 MovieClip {UIScoring1P}Uses:249 251 571 987 992 993 982 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 230 1007 977Used by:Timeline
Symbol 1009 GraphicUsed by:1010
Symbol 1010 MovieClip {WinBase}Uses:1009Used by:1011
Symbol 1011 MovieClip {Win}Uses:1010Used by:1035
Symbol 1012 GraphicUsed by:1013
Symbol 1013 MovieClipUses:273 533 1012Used by:1016
Symbol 1014 GraphicUsed by:1015 1016
Symbol 1015 MovieClipUses:276 533 1014Used by:1016
Symbol 1016 Button {Button_rematch}Uses:1013 1015 276 533 1014Used by:1035 1040 1047
Symbol 1017 EditableTextUses:2Used by:1035
Symbol 1018 EditableTextUses:2Used by:1035
Symbol 1019 EditableTextUses:2Used by:1035
Symbol 1020 EditableTextUses:2Used by:1035
Symbol 1021 EditableTextUses:2Used by:1035
Symbol 1022 EditableTextUses:2Used by:1035
Symbol 1023 EditableTextUses:2Used by:1035
Symbol 1024 EditableTextUses:2Used by:1035
Symbol 1025 EditableTextUses:2Used by:1035
Symbol 1026 EditableTextUses:2Used by:1035
Symbol 1027 EditableTextUses:2Used by:1035
Symbol 1028 EditableTextUses:2Used by:1035
Symbol 1029 EditableTextUses:2Used by:1035
Symbol 1030 EditableTextUses:2Used by:1035
Symbol 1031 EditableTextUses:2Used by:1035
Symbol 1032 EditableTextUses:2Used by:1035
Symbol 1033 EditableTextUses:2Used by:1035
Symbol 1034 EditableTextUses:2Used by:1035
Symbol 1035 MovieClip {UIScoring2P}Uses:249 251 571 1016 992 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 230 233 235 1007 1011Used by:Timeline
Symbol 1036 GraphicUsed by:1037
Symbol 1037 MovieClipUses:1036Used by:1040
Symbol 1038 GraphicUsed by:1039
Symbol 1039 MovieClipUses:1038Used by:1040
Symbol 1040 MovieClip {UIScoringWin}Uses:249 251 1016 992 254 1037 1039Used by:Timeline
Symbol 1041 GraphicUsed by:1042
Symbol 1042 MovieClip {SkullLose}Uses:1041Used by:1047
Symbol 1043 GraphicUsed by:1044
Symbol 1044 MovieClipUses:1043Used by:1047
Symbol 1045 GraphicUsed by:1046
Symbol 1046 MovieClipUses:1045Used by:1047
Symbol 1047 MovieClip {UIScoringLose}Uses:249 251 1016 992 1042 1044 1046Used by:Timeline
Symbol 1048 EditableTextUses:2Used by:1049
Symbol 1049 MovieClipUses:975 1048 963 973 972 967Used by:Timeline
Symbol 1050 MovieClipUses:843 945 950 963 838 834 866 850 827 819Used by:Timeline
Symbol 1051 MovieClip {fl.controls.Button}
Symbol 1052 MovieClip {fl.controls.CheckBox}

Instance Names

"ScoringLose"Frame 1Symbol 1047 MovieClip {UIScoringLose}
"ScoringWin"Frame 1Symbol 1040 MovieClip {UIScoringWin}
"Scoring2P"Frame 1Symbol 1035 MovieClip {UIScoring2P}
"Scoring1P"Frame 1Symbol 1008 MovieClip {UIScoring1P}
"FriendSelectPage"Frame 1Symbol 1049 MovieClip
"RankingPage"Frame 1Symbol 964 MovieClip {UIRanking}
"ChallengesPage"Frame 1Symbol 1050 MovieClip
"OKPopup"Frame 1Symbol 817 MovieClip {UIPopup}
"YesNoPopupObject"Frame 1Symbol 815 MovieClip {UIYesNoPopup}
"LoadingPage"Frame 1Symbol 813 MovieClip {UILoading}
"controlpanel"Frame 1Symbol 809 MovieClip {menucode.ControlPanel}
"animWheel12"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 66 MovieClip
"animWheel11"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 69 MovieClip
"animWheel10"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 72 MovieClip
"animWheel9"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 75 MovieClip
"animWheel8"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 81 MovieClip
"animWheel7"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 84 MovieClip
"animWheel6"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 87 MovieClip
"animWheel5"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 90 MovieClip
"animWheel4"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 93 MovieClip
"animWheel3"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 96 MovieClip
"animWheel2"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 99 MovieClip
"animWheel1"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 102 MovieClip
"animWheel0"Symbol 123 MovieClip {VectorVise} Frame 1Symbol 105 MovieClip
"right"Symbol 174 MovieClip {HudPiece} Frame 1Symbol 172 EditableText
"left"Symbol 174 MovieClip {HudPiece} Frame 1Symbol 173 EditableText
"score"Symbol 197 MovieClip {BorderText} Frame 1Symbol 193 EditableText
"snoodsused"Symbol 197 MovieClip {BorderText} Frame 1Symbol 194 EditableText
"mode"Symbol 197 MovieClip {BorderText} Frame 1Symbol 195 EditableText
"difficulty"Symbol 197 MovieClip {BorderText} Frame 1Symbol 196 EditableText
"mc_mousedetect"Symbol 218 MovieClip {Border} Frame 1Symbol 217 MovieClip
"gametypetext"Symbol 221 MovieClip {VSgametype} Frame 1Symbol 220 EditableText
"nametext"Symbol 223 MovieClip {VSname} Frame 1Symbol 222 EditableText
"portraitholder"Symbol 230 MovieClip {Portrait} Frame 1Symbol 225 MovieClip {PortraitHolder}
"nophoto"Symbol 230 MovieClip {Portrait} Frame 1Symbol 227 MovieClip {PortraitNophoto}
"loadinganimation"Symbol 230 MovieClip {Portrait} Frame 1Symbol 229 MovieClip {PortraitLoading}
"portraitholder"Symbol 233 MovieClip {PortraitO} Frame 1Symbol 232 MovieClip {PortraitHolderO}
"nophoto"Symbol 233 MovieClip {PortraitO} Frame 1Symbol 227 MovieClip {PortraitNophoto}
"loadinganimation"Symbol 233 MovieClip {PortraitO} Frame 1Symbol 229 MovieClip {PortraitLoading}
"gametype"Symbol 236 MovieClip {VSScreenChallenge} Frame 1Symbol 221 MovieClip {VSgametype}
"opponentname"Symbol 236 MovieClip {VSScreenChallenge} Frame 1Symbol 223 MovieClip {VSname}
"playername"Symbol 236 MovieClip {VSScreenChallenge} Frame 1Symbol 223 MovieClip {VSname}
"playerportrait"Symbol 236 MovieClip {VSScreenChallenge} Frame 1Symbol 230 MovieClip {Portrait}
"opponentportrait"Symbol 236 MovieClip {VSScreenChallenge} Frame 1Symbol 233 MovieClip {PortraitO}
"backbutton"Symbol 247 MovieClip {VSScreen} Frame 1Symbol 242 Button {Button_back}
"okbutton"Symbol 247 MovieClip {VSScreen} Frame 1Symbol 246 Button {Button_check}
"opponentname"Symbol 247 MovieClip {VSScreen} Frame 1Symbol 223 MovieClip {VSname}
"playername"Symbol 247 MovieClip {VSScreen} Frame 1Symbol 223 MovieClip {VSname}
"playerportrait"Symbol 247 MovieClip {VSScreen} Frame 1Symbol 230 MovieClip {Portrait}
"opponentportrait"Symbol 247 MovieClip {VSScreen} Frame 1Symbol 233 MovieClip {PortraitO}
"goodmonk"Symbol 257 MovieClip {YouSnood} Frame 1Symbol 252 MovieClip
"goodmonk"Symbol 257 MovieClip {YouSnood} Frame 2Symbol 254 MovieClip {JakeWin}
"goodmonk"Symbol 257 MovieClip {YouSnood} Frame 3Symbol 256 MovieClip {JakeWorried}
"OKButton"Symbol 262 MovieClip {UIProblemPopup} Frame 1Symbol 246 Button {Button_check}
"monk"Symbol 262 MovieClip {UIProblemPopup} Frame 1Symbol 257 MovieClip {YouSnood}
"message1"Symbol 262 MovieClip {UIProblemPopup} Frame 1Symbol 258 EditableText
"message3"Symbol 262 MovieClip {UIProblemPopup} Frame 1Symbol 259 EditableText
"message2"Symbol 262 MovieClip {UIProblemPopup} Frame 1Symbol 260 EditableText
"message1"Symbol 262 MovieClip {UIProblemPopup} Frame 1Symbol 261 EditableText
"buttonsnoods"Symbol 283 MovieClip {group_snoods} Frame 1Symbol 279 Button {Button_snoods}
"snoodstoggle"Symbol 283 MovieClip {group_snoods} Frame 1Symbol 282 MovieClip {SnoodsToggle}
"buttondifficulty"Symbol 295 MovieClip {group_difficulty} Frame 1Symbol 288 Button {Button_difficulty}
"difficultytoggle"Symbol 295 MovieClip {group_difficulty} Frame 1Symbol 294 MovieClip {DifficultyToggle}
"buttontimeattack"Symbol 304 MovieClip {group_timeattack} Frame 1Symbol 300 Button {Button_timeattack}
"profeature"Symbol 304 MovieClip {group_timeattack} Frame 1Symbol 303 MovieClip {ProFeatureAnim}
"buttonpuzzle"Symbol 316 MovieClip {group_puzzle} Frame 1Symbol 315 Button {Button_puzzle}
"profeature"Symbol 316 MovieClip {group_puzzle} Frame 1Symbol 303 MovieClip {ProFeatureAnim}
"buttonnoads"Symbol 322 MovieClip {group_noads} Frame 1Symbol 321 Button {Button_noads}
"profeature"Symbol 322 MovieClip {group_noads} Frame 1Symbol 303 MovieClip {ProFeatureAnim}
"buttonclassic"Symbol 323 MovieClip {Page3} Frame 1Symbol 272 Button {Button_classic}
"groupsnoods"Symbol 323 MovieClip {Page3} Frame 1Symbol 283 MovieClip {group_snoods}
"groupdifficulty"Symbol 323 MovieClip {Page3} Frame 1Symbol 295 MovieClip {group_difficulty}
"grouptimeattack"Symbol 323 MovieClip {Page3} Frame 1Symbol 304 MovieClip {group_timeattack}
"mj_logo"Symbol 323 MovieClip {Page3} Frame 1Symbol 308 MovieClip
"challengemessage"Symbol 323 MovieClip {Page3} Frame 1Symbol 310 MovieClip {Challengemessage}
"grouppuzzle"Symbol 323 MovieClip {Page3} Frame 1Symbol 316 MovieClip {group_puzzle}
"groupnoads"Symbol 323 MovieClip {Page3} Frame 1Symbol 322 MovieClip {group_noads}
"button1player"Symbol 350 MovieClip {Page2} Frame 1Symbol 330 Button {Button_1player}
"buttonlive"Symbol 350 MovieClip {Page2} Frame 1Symbol 337 Button {Button_live}
"buttonchallenge"Symbol 350 MovieClip {Page2} Frame 1Symbol 344 Button {Button_challenge}
"buttongameguide"Symbol 350 MovieClip {Page2} Frame 1Symbol 349 Button {Button_gameguide}
"challengecounter"Symbol 354 MovieClip {ChallengeIndicator} Frame 1Symbol 352 EditableText
"challengeindicator"Symbol 360 MovieClip {group_2pmanager} Frame 1Symbol 354 MovieClip {ChallengeIndicator}
"button2pmanager"Symbol 360 MovieClip {group_2pmanager} Frame 1Symbol 359 Button {Button_2pmanager}
"friendcounter"Symbol 373 MovieClip {Friendsindicator} Frame 1Symbol 371 EditableText
"buttoninvite"Symbol 374 MovieClip {group_invite} Frame 1Symbol 370 Button {Button_invit}
"friendsindicator"Symbol 374 MovieClip {group_invite} Frame 1Symbol 373 MovieClip {Friendsindicator}
"group2pmanager"Symbol 385 MovieClip {Page1} Frame 1Symbol 360 MovieClip {group_2pmanager}
"buttonrankings"Symbol 385 MovieClip {Page1} Frame 1Symbol 365 Button {Button_rankings}
"groupinvite"Symbol 385 MovieClip {Page1} Frame 1Symbol 374 MovieClip {group_invite}
"buttonaddtoprofile"Symbol 385 MovieClip {Page1} Frame 1Symbol 379 Button {Button_addtoprofile}
"buttoncredits"Symbol 385 MovieClip {Page1} Frame 1Symbol 384 Button {Button_credits}
"snoodplanet"Symbol 393 MovieClip {Page0} Frame 1Symbol 387 MovieClip {SnoodPlanet}
"snoodlogo"Symbol 393 MovieClip {Page0} Frame 1Symbol 213 MovieClip {SnoodLogo}
"jake"Symbol 393 MovieClip {Page0} Frame 1Symbol 392 MovieClip {menucode.titlescreen.UITitleMenuJake}
"buttonstory"Symbol 399 MovieClip {group_story} Frame 1Symbol 398 Button {Button_story}
"profeature"Symbol 399 MovieClip {group_story} Frame 1Symbol 303 MovieClip {ProFeatureAnim}
"clicktobuy"Symbol 424 MovieClip {ClickToBuyAnim} Frame 1Symbol 423 MovieClip {ClickToBuy}
"morepoints"Symbol 425 MovieClip {ToolTipTimeattack} Frame 1Symbol 407 MovieClip
"cost"Symbol 425 MovieClip {ToolTipTimeattack} Frame 1Symbol 412 EditableText
"clicktobuyanim"Symbol 425 MovieClip {ToolTipTimeattack} Frame 1Symbol 424 MovieClip {ClickToBuyAnim}
"morepoints"Symbol 432 MovieClip {ToolTipPuzzle} Frame 1Symbol 407 MovieClip
"cost"Symbol 432 MovieClip {ToolTipPuzzle} Frame 1Symbol 428 EditableText
"clicktobuyanim"Symbol 432 MovieClip {ToolTipPuzzle} Frame 1Symbol 424 MovieClip {ClickToBuyAnim}
"morepoints"Symbol 439 MovieClip {ToolTipNoads} Frame 1Symbol 407 MovieClip
"cost"Symbol 439 MovieClip {ToolTipNoads} Frame 1Symbol 435 EditableText
"clicktobuyanim"Symbol 439 MovieClip {ToolTipNoads} Frame 1Symbol 424 MovieClip {ClickToBuyAnim}
"buttoninstructions"Symbol 449 MovieClip {group_instructions} Frame 1Symbol 448 Button {Button_instructions}
"instructionstoggle"Symbol 449 MovieClip {group_instructions} Frame 1Symbol 443 MovieClip {InstructionsToggle}
"strip"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 463 MovieClip {ChallengeRecordStrip}
"Mode"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 464 EditableText
"VsOpponent"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 465 EditableText
"Date"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 466 EditableText
"YourScore"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 467 EditableText
"OpponentScore"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 468 EditableText
"OpponentPortrait"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 230 MovieClip {Portrait}
"LiveNoScore"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 469 EditableText
"statusicon"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 461 MovieClip {StatusIcon}
"actionbutton"Symbol 486 MovieClip {ChallengeRecord} Frame 1Symbol 485 MovieClip {ActionButton}
"linetext"Symbol 490 MovieClip {Welcome_points} Frame 1Symbol 489 EditableText
"linetext"Symbol 492 MovieClip {Welcome_message} Frame 1Symbol 491 EditableText
"message"Symbol 512 MovieClip {PopupWelcome} Frame 1Symbol 492 MovieClip {Welcome_message}
"continuebutton"Symbol 512 MovieClip {PopupWelcome} Frame 1Symbol 497 Button {ContinueButton}
"earnedline"Symbol 512 MovieClip {PopupWelcome} Frame 1Symbol 490 MovieClip {Welcome_points}
"sheet"Symbol 512 MovieClip {PopupWelcome} Frame 18Symbol 251 MovieClip {PopupSheet}
"foil"Symbol 524 MovieClip {ScratchFoil} Frame 1Symbol 523 MovieClip {ScratchFoilBase}
"text1"Symbol 529 MovieClip {ScratchReward} Frame 1Symbol 526 EditableText
"text2"Symbol 529 MovieClip {ScratchReward} Frame 1Symbol 527 EditableText
"rewardtext"Symbol 529 MovieClip {ScratchReward} Frame 1Symbol 528 EditableText
"linetext"Symbol 531 MovieClip {Scratch_line1} Frame 1Symbol 530 EditableText
"message"Symbol 532 MovieClip {PopupScratchcard} Frame 1Symbol 531 MovieClip {Scratch_line1}
"reward"Symbol 532 MovieClip {PopupScratchcard} Frame 1Symbol 529 MovieClip {ScratchReward}
"continuebutton"Symbol 532 MovieClip {PopupScratchcard} Frame 1Symbol 497 Button {ContinueButton}
"invitebutton"Symbol 539 MovieClip {Postinvite_invitebuttongroup} Frame 1Symbol 538 Button {Button_inviteanother}
"linetext"Symbol 541 MovieClip {Postinvite_message} Frame 1Symbol 540 EditableText
"message"Symbol 544 MovieClip {PopupPostinvite} Frame 1Symbol 541 MovieClip {Postinvite_message}
"invitegroup"Symbol 544 MovieClip {PopupPostinvite} Frame 1Symbol 539 MovieClip {Postinvite_invitebuttongroup}
"continuebutton"Symbol 544 MovieClip {PopupPostinvite} Frame 1Symbol 497 Button {ContinueButton}
"linetext"Symbol 546 MovieClip {Small_line1} Frame 1Symbol 545 EditableText
"linetext"Symbol 548 MovieClip {Small_line2} Frame 1Symbol 547 EditableText
"monkeypoints"Symbol 553 MovieClip {PopupPointsSmall} Frame 1Symbol 548 MovieClip {Small_line2}
"points"Symbol 553 MovieClip {PopupPointsSmall} Frame 1Symbol 546 MovieClip {Small_line1}
"linetext"Symbol 555 MovieClip {Points_line1} Frame 1Symbol 554 EditableText
"linetext"Symbol 557 MovieClip {Coins_line2} Frame 1Symbol 556 EditableText
"eventline"Symbol 558 MovieClip {PopupPoints} Frame 1Symbol 555 MovieClip {Points_line1}
"earnedline"Symbol 558 MovieClip {PopupPoints} Frame 1Symbol 557 MovieClip {Coins_line2}
"continuebutton"Symbol 558 MovieClip {PopupPoints} Frame 1Symbol 497 Button {ContinueButton}
"linetext"Symbol 562 MovieClip {Newrank_line4} Frame 1Symbol 561 EditableText
"linetext"Symbol 566 MovieClip {Newrank_line2} Frame 1Symbol 565 EditableText
"linetext"Symbol 570 MovieClip {Newrank_line5} Frame 1Symbol 569 EditableText
"rankportrait"Symbol 574 MovieClip {PopupNewrank} Frame 1Symbol 560 MovieClip {RankportraitHolder}
"categoryline"Symbol 574 MovieClip {PopupNewrank} Frame 1Symbol 562 MovieClip {Newrank_line4}
"rankline"Symbol 574 MovieClip {PopupNewrank} Frame 1Symbol 566 MovieClip {Newrank_line2}
"earnedline"Symbol 574 MovieClip {PopupNewrank} Frame 1Symbol 570 MovieClip {Newrank_line5}
"continuebutton"Symbol 574 MovieClip {PopupNewrank} Frame 1Symbol 497 Button {ContinueButton}
"linetext"Symbol 578 MovieClip {Newachievement_line3} Frame 1Symbol 577 EditableText
"linetext"Symbol 580 MovieClip {Newachievement_line2} Frame 1Symbol 579 EditableText
"achievement"Symbol 583 MovieClip {PopupNewachievement} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"descriptionline"Symbol 583 MovieClip {PopupNewachievement} Frame 1Symbol 578 MovieClip {Newachievement_line3}
"achievementline"Symbol 583 MovieClip {PopupNewachievement} Frame 1Symbol 580 MovieClip {Newachievement_line2}
"earnedline"Symbol 583 MovieClip {PopupNewachievement} Frame 1Symbol 570 MovieClip {Newrank_line5}
"continuebutton"Symbol 583 MovieClip {PopupNewachievement} Frame 1Symbol 497 Button {ContinueButton}
"PlayButton"Symbol 591 MovieClip {buttongroup_play} Frame 1Symbol 590 Button {Button_play}
"AloneButton"Symbol 607 MovieClip {buttongroup_timeout} Frame 1Symbol 596 Button {Button_playalone}
"ResendButton"Symbol 607 MovieClip {buttongroup_timeout} Frame 1Symbol 601 Button {Button_resendwait}
"AnotherButton"Symbol 607 MovieClip {buttongroup_timeout} Frame 1Symbol 606 Button {Button_challengeanother}
"playgroup"Symbol 660 MovieClip {PopupLive} Frame 1Symbol 591 MovieClip {buttongroup_play}
"timeoutgroup"Symbol 660 MovieClip {PopupLive} Frame 1Symbol 607 MovieClip {buttongroup_timeout}
"notification"Symbol 660 MovieClip {PopupLive} Frame 1Symbol 631 MovieClip {Notification}
"opponent"Symbol 660 MovieClip {PopupLive} Frame 20Symbol 638 MovieClip {OppSnood}
"you"Symbol 660 MovieClip {PopupLive} Frame 20Symbol 257 MovieClip {YouSnood}
"arrowanimation"Symbol 660 MovieClip {PopupLive} Frame 20Symbol 650 MovieClip {Arrows}
"title"Symbol 667 MovieClip {Rank10} Frame 1Symbol 662 MovieClip {Rank10title}
"title"Symbol 673 MovieClip {Rank09} Frame 1Symbol 669 MovieClip {Rank09title}
"title"Symbol 678 MovieClip {Rank08} Frame 1Symbol 675 MovieClip {Rank08title}
"title"Symbol 682 MovieClip {Rank07} Frame 1Symbol 680 MovieClip {Rank07title}
"title"Symbol 688 MovieClip {Rank06} Frame 1Symbol 684 MovieClip {Rank06title}
"title"Symbol 694 MovieClip {Rank05} Frame 1Symbol 690 MovieClip {Rank05title}
"title"Symbol 700 MovieClip {Rank04} Frame 1Symbol 696 MovieClip {Rank04title}
"title"Symbol 705 MovieClip {Rank03} Frame 1Symbol 702 MovieClip {Rank03title}
"title"Symbol 711 MovieClip {Rank02} Frame 1Symbol 707 MovieClip {Rank02title}
"title"Symbol 715 MovieClip {Rank01} Frame 1Symbol 713 MovieClip {Rank01title}
"rank01"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 715 MovieClip {Rank01}
"rank02"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 711 MovieClip {Rank02}
"rank03"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 705 MovieClip {Rank03}
"rank04"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 700 MovieClip {Rank04}
"rank05"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 694 MovieClip {Rank05}
"rank06"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 688 MovieClip {Rank06}
"rank07"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 682 MovieClip {Rank07}
"rank08"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 678 MovieClip {Rank08}
"rank09"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 673 MovieClip {Rank09}
"rank10"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 667 MovieClip {Rank10}
"continuebutton"Symbol 718 MovieClip {PopupLevelchart} Frame 1Symbol 497 Button {ContinueButton}
"numbers"Symbol 723 MovieClip {PopupGetready} Frame 1Symbol 722 MovieClip {Getready_numbers}
"messagetext"Symbol 725 MovieClip {Difficulty_message} Frame 1Symbol 724 EditableText
"message"Symbol 726 MovieClip {PopupDifficulty} Frame 1Symbol 725 MovieClip {Difficulty_message}
"OKButton"Symbol 726 MovieClip {PopupDifficulty} Frame 1Symbol 246 Button {Button_check}
"sheet"Symbol 726 MovieClip {PopupDifficulty} Frame 10Symbol 251 MovieClip {PopupSheet}
"portrait"Symbol 727 MovieClip {OpponentPortrait} Frame 1Symbol 233 MovieClip {PortraitO}
"continuebutton"Symbol 775 MovieClip {Instructions} Frame 1Symbol 497 Button {ContinueButton}
"showtoggle"Symbol 775 MovieClip {Instructions} Frame 1Symbol 732 MovieClip {OnlineOnlyToggle}
"instrpage01"Symbol 775 MovieClip {Instructions} Frame 6Symbol 747 MovieClip {Instrpage01}
"instrpage02"Symbol 775 MovieClip {Instructions} Frame 12Symbol 774 MovieClip {Instrpage02}
"soundicon"Symbol 790 MovieClip {Buttons} Frame 1Symbol 789 MovieClip {Controlicon_sound}
"musicicon"Symbol 790 MovieClip {Buttons} Frame 1Symbol 786 MovieClip {Controlicon_music}
"qualityicon"Symbol 790 MovieClip {Buttons} Frame 1Symbol 783 MovieClip {Controlicon_quality}
"quiticon"Symbol 790 MovieClip {Buttons} Frame 1Symbol 779 MovieClip {Controlicon_quit}
"ringslice"Symbol 805 MovieClip {Ring} Frame 1Symbol 803 MovieClip
"white"Symbol 808 MovieClip {Corner} Frame 1Symbol 807 MovieClip {White}
"ring"Symbol 808 MovieClip {Corner} Frame 1Symbol 805 MovieClip {Ring}
"fold"Symbol 808 MovieClip {Corner} Frame 1Symbol 800 MovieClip {Fold}
"corner"Symbol 809 MovieClip {menucode.ControlPanel} Frame 1Symbol 808 MovieClip {Corner}
"loadingmessage"Symbol 812 MovieClip {Loadingicon} Frame 1Symbol 810 EditableText
"loadingbook"Symbol 812 MovieClip {Loadingicon} Frame 1Symbol 811 MovieClip
"LoadingIcon"Symbol 813 MovieClip {UILoading} Frame 1Symbol 812 MovieClip {Loadingicon}
"YesButton"Symbol 815 MovieClip {UIYesNoPopup} Frame 1Symbol 246 Button {Button_check}
"NoButton"Symbol 815 MovieClip {UIYesNoPopup} Frame 1Symbol 242 Button {Button_back}
"Message"Symbol 815 MovieClip {UIYesNoPopup} Frame 1Symbol 814 EditableText
"OKButton"Symbol 817 MovieClip {UIPopup} Frame 1Symbol 246 Button {Button_check}
"Message"Symbol 817 MovieClip {UIPopup} Frame 1Symbol 816 EditableText
"nochallengetext"Symbol 827 MovieClip {NoChallenges} Frame 1Symbol 826 EditableText
"tablabel"Symbol 850 MovieClip {RankingsOverall} Frame 1Symbol 849 EditableText
"tabunselected"Symbol 866 MovieClip {RankingsTabButton} Frame 1Symbol 862 MovieClip {RankingsTabUnselected}
"tabselected"Symbol 866 MovieClip {RankingsTabButton} Frame 1Symbol 860 MovieClip {RankingsTabSelected}
"tablabel"Symbol 866 MovieClip {RankingsTabButton} Frame 1Symbol 863 EditableText
"achievementsnumber"Symbol 871 MovieClip {AchievementPlayerInfo} Frame 1Symbol 868 EditableText
"playername"Symbol 871 MovieClip {AchievementPlayerInfo} Frame 1Symbol 869 EditableText
"portrait"Symbol 871 MovieClip {AchievementPlayerInfo} Frame 1Symbol 230 MovieClip {Portrait}
"ranknumber"Symbol 871 MovieClip {AchievementPlayerInfo} Frame 1Symbol 870 EditableText
"icon01"Symbol 895 MovieClip {IconSetup} Frame 1Symbol 876 MovieClip {Achievement01}
"icon02"Symbol 895 MovieClip {IconSetup} Frame 2Symbol 878 MovieClip {Achievement02}
"icon03"Symbol 895 MovieClip {IconSetup} Frame 3Symbol 880 MovieClip {Achievement03}
"icon04"Symbol 895 MovieClip {IconSetup} Frame 4Symbol 882 MovieClip {Achievement04}
"icon05"Symbol 895 MovieClip {IconSetup} Frame 5Symbol 884 MovieClip {Achievement05}
"icon06"Symbol 895 MovieClip {IconSetup} Frame 6Symbol 886 MovieClip {Achievement06}
"icon07"Symbol 895 MovieClip {IconSetup} Frame 7Symbol 888 MovieClip {Achievement07}
"icon08"Symbol 895 MovieClip {IconSetup} Frame 8Symbol 890 MovieClip {Achievement08}
"icon09"Symbol 895 MovieClip {IconSetup} Frame 9Symbol 892 MovieClip {Achievement09}
"icon10"Symbol 895 MovieClip {IconSetup} Frame 10Symbol 894 MovieClip {Achievement10}
"title"Symbol 899 MovieClip {TooltipSetup} Frame 1Symbol 897 EditableText
"description"Symbol 899 MovieClip {TooltipSetup} Frame 1Symbol 898 EditableText
"icon"Symbol 900 MovieClip {AchievementTooltip10} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 900 MovieClip {AchievementTooltip10} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 901 MovieClip {AchievementTooltip09} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 901 MovieClip {AchievementTooltip09} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 902 MovieClip {AchievementTooltip08} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 902 MovieClip {AchievementTooltip08} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 903 MovieClip {AchievementTooltip07} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 903 MovieClip {AchievementTooltip07} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 904 MovieClip {AchievementTooltip06} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 904 MovieClip {AchievementTooltip06} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 905 MovieClip {AchievementTooltip05} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 905 MovieClip {AchievementTooltip05} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 906 MovieClip {AchievementTooltip04} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 906 MovieClip {AchievementTooltip04} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 907 MovieClip {AchievementTooltip03} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 907 MovieClip {AchievementTooltip03} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 908 MovieClip {AchievementTooltip02} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 908 MovieClip {AchievementTooltip02} Frame 1Symbol 899 MovieClip {TooltipSetup}
"icon"Symbol 909 MovieClip {AchievementTooltip01} Frame 1Symbol 895 MovieClip {IconSetup}
"tooltip"Symbol 909 MovieClip {AchievementTooltip01} Frame 1Symbol 899 MovieClip {TooltipSetup}
"anchor09"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor07"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor08"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor10"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor06"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor02"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor03"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor01"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor04"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor05"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"tooltip01"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 909 MovieClip {AchievementTooltip01}
"tooltip02"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 908 MovieClip {AchievementTooltip02}
"tooltip03"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 907 MovieClip {AchievementTooltip03}
"tooltip04"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 906 MovieClip {AchievementTooltip04}
"tooltip05"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 905 MovieClip {AchievementTooltip05}
"tooltip06"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 904 MovieClip {AchievementTooltip06}
"tooltip07"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 903 MovieClip {AchievementTooltip07}
"tooltip08"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 902 MovieClip {AchievementTooltip08}
"tooltip09"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 901 MovieClip {AchievementTooltip09}
"tooltip10"Symbol 911 MovieClip {AchievementPanelBig} Frame 1Symbol 900 MovieClip {AchievementTooltip10}
"graphholder"Symbol 915 MovieClip {RankingGraph} Frame 1Symbol 913 MovieClip {RankGraphHolder}
"anchor01"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor02"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor03"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor04"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor05"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor06"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor07"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor08"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor09"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"anchor10"Symbol 917 MovieClip {AchievementsPanelSmall} Frame 1Symbol 576 MovieClip {AchievementAnchor}
"rankportraitholder"Symbol 921 MovieClip {RankingInfo} Frame 1Symbol 560 MovieClip {RankportraitHolder}
"achievements"Symbol 921 MovieClip {RankingInfo} Frame 1Symbol 917 MovieClip {AchievementsPanelSmall}
"score"Symbol 921 MovieClip {RankingInfo} Frame 1Symbol 918 EditableText
"playername"Symbol 921 MovieClip {RankingInfo} Frame 1Symbol 919 EditableText
"ranknumber"Symbol 921 MovieClip {RankingInfo} Frame 1Symbol 920 EditableText
"portraitholder"Symbol 921 MovieClip {RankingInfo} Frame 1Symbol 230 MovieClip {Portrait}
"tabselected"Symbol 928 MovieClip {AchievementsTabButton} Frame 1Symbol 923 MovieClip {RankingsBottomTabSelected}
"tabunselected"Symbol 928 MovieClip {AchievementsTabButton} Frame 1Symbol 925 MovieClip {RankingsBottomTabUnselected}
"tabunselected"Symbol 930 MovieClip {RankingsBottomTabButton} Frame 1Symbol 925 MovieClip {RankingsBottomTabUnselected}
"tabselected"Symbol 930 MovieClip {RankingsBottomTabButton} Frame 1Symbol 923 MovieClip {RankingsBottomTabSelected}
"portraitholder"Symbol 930 MovieClip {RankingsBottomTabButton} Frame 1Symbol 560 MovieClip {RankportraitHolder}
"tablabel"Symbol 930 MovieClip {RankingsBottomTabButton} Frame 1Symbol 929 EditableText
"NextButton"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 945 Button {ArrowDone}
"BackButton"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 950 Button {ArrowBack}
"DetailedButton"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 940 Button {DetailedStatsButton}
"LevelchartButton"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 935 Button {LevelChartButton}
"Overall"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"SP1"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"SP"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"SP2"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"SPPRO"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"MP"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"MP1"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"MP2"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"MPPRO"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"Evangelism"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 930 MovieClip {RankingsBottomTabButton}
"Achievements"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 928 MovieClip {AchievementsTabButton}
"InfoPortrait"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 921 MovieClip {RankingInfo}
"InfoGraph"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 915 MovieClip {RankingGraph}
"GuideDefinition"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 954 EditableText
"GuideTips"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 955 EditableText
"GuideDefContent"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 956 EditableText
"GuideTipsContent"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 957 EditableText
"GraphHeader"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 958 EditableText
"CenterPortrait"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 921 MovieClip {RankingInfo}
"NearRightPortrait"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 921 MovieClip {RankingInfo}
"FarRightPortrait"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 921 MovieClip {RankingInfo}
"NearLeftPortrait"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 921 MovieClip {RankingInfo}
"FarLeftPortrait"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 921 MovieClip {RankingInfo}
"AchievementDefinition"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 959 EditableText
"achievements"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 911 MovieClip {AchievementPanelBig}
"playerinfo"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 871 MovieClip {AchievementPlayerInfo}
"infobutton"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 866 MovieClip {RankingsTabButton}
"rankbutton"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 866 MovieClip {RankingsTabButton}
"globalrankbutton"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 866 MovieClip {RankingsTabButton}
"RightArrow"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 963 Button {RankingsScrollArrow}
"LeftArrow"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 963 Button {RankingsScrollArrow}
"FastRightArrow"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 858 Button {RankingsScrollDoubleArrow}
"FastLeftArrow"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 858 Button {RankingsScrollDoubleArrow}
"CenterArrow"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 854 Button {RankingsScrollCenter}
"RankingTabHeader"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 850 MovieClip {RankingsOverall}
"AchievementsLogoVectorHolder"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 847 MovieClip {LogoAchievements}
"RankingsLogoVectorHolder"Symbol 964 MovieClip {UIRanking} Frame 1Symbol 845 MovieClip {LogoRankings}
"SearchField"Symbol 972 MovieClip {Header1} Frame 1Symbol 970 EditableText
"onlineprompt"Symbol 972 MovieClip {Header1} Frame 1Symbol 971 EditableText
"onlinetoggle"Symbol 972 MovieClip {Header1} Frame 1Symbol 732 MovieClip {OnlineOnlyToggle}
"BackButton"Symbol 973 MovieClip {buttongroup_back} Frame 1Symbol 950 Button {ArrowBack}
"tryagainbutton"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 987 Button {Button_tryagain}
"exitbutton"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 992 Button {Button_exit}
"difficultywarning"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 993 EditableText
"continuebutton"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 982 Button {Button_continue}
"score"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 1000 EditableText
"stylebonus"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 1001 EditableText
"snoodsbonus1"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 1002 EditableText
"clearancebonus"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 1003 EditableText
"total"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 1004 EditableText
"snoodsused"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 1005 EditableText
"player"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 230 MovieClip {Portrait}
"finalscore"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 1007 MovieClip {FinalScore}
"roundscore"Symbol 1008 MovieClip {UIScoring1P} Frame 1Symbol 977 MovieClip {RoundScore}
"rematchbutton"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1016 Button {Button_rematch}
"exitbutton"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 992 Button {Button_exit}
"score1"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1023 EditableText
"stylebonus1"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1024 EditableText
"snoodsbonus1"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1025 EditableText
"clearancebonus1"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1026 EditableText
"total1"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1027 EditableText
"score2"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1028 EditableText
"stylebonus2"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1029 EditableText
"snoodsbonus2"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1030 EditableText
"clearancebonus2"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1031 EditableText
"total2"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1032 EditableText
"snoodsused1"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1033 EditableText
"snoodsused2"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1034 EditableText
"player"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 230 MovieClip {Portrait}
"opponent"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 233 MovieClip {PortraitO}
"finalscore"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1007 MovieClip {FinalScore}
"win1"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1011 MovieClip {Win}
"win2"Symbol 1035 MovieClip {UIScoring2P} Frame 1Symbol 1011 MovieClip {Win}
"rematchbutton"Symbol 1040 MovieClip {UIScoringWin} Frame 1Symbol 1016 Button {Button_rematch}
"exitbutton"Symbol 1040 MovieClip {UIScoringWin} Frame 1Symbol 992 Button {Button_exit}
"rematchbutton"Symbol 1047 MovieClip {UIScoringLose} Frame 1Symbol 1016 Button {Button_rematch}
"exitbutton"Symbol 1047 MovieClip {UIScoringLose} Frame 1Symbol 992 Button {Button_exit}
"messageline"Symbol 1049 MovieClip Frame 1Symbol 1048 EditableText
"RightArrow"Symbol 1049 MovieClip Frame 1Symbol 963 Button {RankingsScrollArrow}
"LeftArrow"Symbol 1049 MovieClip Frame 1Symbol 963 Button {RankingsScrollArrow}
"buttongroupback"Symbol 1049 MovieClip Frame 1Symbol 973 MovieClip {buttongroup_back}
"header1"Symbol 1049 MovieClip Frame 1Symbol 972 MovieClip {Header1}
"header2"Symbol 1049 MovieClip Frame 1Symbol 967 MovieClip {Header2}
"NextButton"Symbol 1050 MovieClip Frame 1Symbol 945 Button {ArrowDone}
"BackButton"Symbol 1050 MovieClip Frame 1Symbol 950 Button {ArrowBack}
"DownArrow"Symbol 1050 MovieClip Frame 1Symbol 963 Button {RankingsScrollArrow}
"UpArrow"Symbol 1050 MovieClip Frame 1Symbol 963 Button {RankingsScrollArrow}
"RefreshButton"Symbol 1050 MovieClip Frame 1Symbol 838 Button {ChallengeRefreshButton}
"Header"Symbol 1050 MovieClip Frame 1Symbol 834 MovieClip {ChallengeRecordHeader}
"OpenTab"Symbol 1050 MovieClip Frame 1Symbol 866 MovieClip {RankingsTabButton}
"AllTab"Symbol 1050 MovieClip Frame 1Symbol 866 MovieClip {RankingsTabButton}
"ChallengesTabHeader"Symbol 1050 MovieClip Frame 1Symbol 850 MovieClip {RankingsOverall}
"nochallenge"Symbol 1050 MovieClip Frame 1Symbol 827 MovieClip {NoChallenges}
"ChallengeLogoVectorHolder"Symbol 1050 MovieClip Frame 1Symbol 819 MovieClip {LogoChallenge}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Protect (24)Timeline Frame 10 bytes ""

Labels

"waiting"Symbol 257 MovieClip {YouSnood} Frame 1
"ready"Symbol 257 MovieClip {YouSnood} Frame 2
"timeout"Symbol 257 MovieClip {YouSnood} Frame 3
"classic"Symbol 282 MovieClip {SnoodsToggle} Frame 1
"new"Symbol 282 MovieClip {SnoodsToggle} Frame 2
"child"Symbol 294 MovieClip {DifficultyToggle} Frame 1
"easy"Symbol 294 MovieClip {DifficultyToggle} Frame 2
"medium"Symbol 294 MovieClip {DifficultyToggle} Frame 3
"hard"Symbol 294 MovieClip {DifficultyToggle} Frame 4
"evil"Symbol 294 MovieClip {DifficultyToggle} Frame 5
"click"Symbol 423 MovieClip {ClickToBuy} Frame 1
"confirm"Symbol 423 MovieClip {ClickToBuy} Frame 2
"all"Symbol 443 MovieClip {InstructionsToggle} Frame 1
"none"Symbol 443 MovieClip {InstructionsToggle} Frame 2
"mode"Symbol 443 MovieClip {InstructionsToggle} Frame 3
"won"Symbol 461 MovieClip {StatusIcon} Frame 1
"lost"Symbol 461 MovieClip {StatusIcon} Frame 2
"tie"Symbol 461 MovieClip {StatusIcon} Frame 3
"open"Symbol 461 MovieClip {StatusIcon} Frame 4
"play"Symbol 485 MovieClip {ActionButton} Frame 1
"remove"Symbol 485 MovieClip {ActionButton} Frame 2
"remind"Symbol 485 MovieClip {ActionButton} Frame 3
"coins"Symbol 512 MovieClip {PopupWelcome} Frame 30
"loop"Symbol 515 MovieClip {PopupSponsored} Frame 5
"continue"Symbol 532 MovieClip {PopupScratchcard} Frame 36
"coins"Symbol 558 MovieClip {PopupPoints} Frame 20
"coins"Symbol 574 MovieClip {PopupNewrank} Frame 46
"coins"Symbol 583 MovieClip {PopupNewachievement} Frame 44
"fadein"Symbol 631 MovieClip {Notification} Frame 2
"fadeout"Symbol 631 MovieClip {Notification} Frame 7
"waiting"Symbol 638 MovieClip {OppSnood} Frame 1
"ready"Symbol 638 MovieClip {OppSnood} Frame 2
"timeout"Symbol 638 MovieClip {OppSnood} Frame 3
"waiting"Symbol 650 MovieClip {Arrows} Frame 1
"ready"Symbol 650 MovieClip {Arrows} Frame 16
"timeout"Symbol 650 MovieClip {Arrows} Frame 31
"waiting"Symbol 660 MovieClip {PopupLive} Frame 26
"ready"Symbol 660 MovieClip {PopupLive} Frame 31
"playwaiting"Symbol 660 MovieClip {PopupLive} Frame 36
"timeout"Symbol 660 MovieClip {PopupLive} Frame 41
"start"Symbol 723 MovieClip {PopupGetready} Frame 1
"end"Symbol 723 MovieClip {PopupGetready} Frame 105
"off"Symbol 732 MovieClip {OnlineOnlyToggle} Frame 1
"on"Symbol 732 MovieClip {OnlineOnlyToggle} Frame 2
"start"Symbol 775 MovieClip {Instructions} Frame 1
"page01"Symbol 775 MovieClip {Instructions} Frame 6
"page02"Symbol 775 MovieClip {Instructions} Frame 12
"on"Symbol 783 MovieClip {Controlicon_quality} Frame 1
"off"Symbol 783 MovieClip {Controlicon_quality} Frame 2
"on"Symbol 786 MovieClip {Controlicon_music} Frame 1
"off"Symbol 786 MovieClip {Controlicon_music} Frame 2
"on"Symbol 789 MovieClip {Controlicon_sound} Frame 1
"off"Symbol 789 MovieClip {Controlicon_sound} Frame 2




http://swfchan.com/42/206106/info.shtml
Created: 10/10 -2018 00:44:43 Last modified: 10/10 -2018 00:44:43 Server time: 29/04 -2024 15:10:53