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[">"] = ">";
ascTab["<"] = "<";
ascTab["&"] = "&";
ascTab["'"] = "'";
ascTab["\""] = """;
ascTabRev = [];
ascTabRev[">"] = ">";
ascTabRev["<"] = "<";
ascTabRev["&"] = "&";
ascTabRev["'"] = "'";
ascTabRev["""] = "\"";
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