Section 1
//Ads (cn.googleads.Ads)
package cn.googleads {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class Ads {
private var successHandler:Function;
private var showErrorBlock:Boolean;// = false
private var warnClass:Class;
private var loader:Loader;
private var player:MovieClip;
private var errorHandler:Function;
private var adWidth:int;
private var adHandler:Function;
private var paramObj:Object;
private var holder:DisplayObjectContainer;
private var adHeight:int;
private var googleAds:Object;
private var stage:Stage;
public static const ERROR_API_LOAD:String = "API Load Error";
public static const EVENT_CONTENT_RESUME_REQUESTED:String = "contentResumeRequested";
public static const EVENT_PAUSED:String = "paused";
public static const EVENT_MID_POINT:String = "midpoint";
public static const EVENT_THIRD_QUARTILE:String = "thirdQuartile";
public static const EVENT_CLICK:String = "click";
public static const EVENT_COMPLETED:String = "completed";
public static const EVENT_STARTED:String = "started";
public static const EVENT_STOPPED:String = "stopped";
public static const EVENT_FIRST_QUARTILE:String = "firstQuartile";
public static const EVENT_CONTENT_PAUSE_REQUESTED:String = "contentPauseRequested";
private static var ins:Ads;
public function Ads(){
warnClass = Ads_warnClass;
super();
}
private function __googleLoaded(_arg1:Event):void{
googleAds = _arg1.target.content;
googleAds.requestAds(paramObj, __adsRequestResult);
}
private function __adsRequestResult(_arg1:Object):void{
if (_arg1.success){
player = _arg1.ads[0].getAdPlayerMovieClip();
player.setSize(adWidth, adHeight);
player.setX(0);
player.setY(0);
player.load();
player.onAdEvent = __onAdEvent;
player.playAds();
if (null != successHandler){
successHandler();
};
} else {
__error(("Request Error , " + _arg1.errorMsg));
};
}
private function __error(_arg1:String):void{
if (null != errorHandler){
errorHandler(_arg1);
};
showErrorMsg(_arg1);
}
private function __ioError(_arg1:IOErrorEvent):void{
__error(((ERROR_API_LOAD + " , ") + _arg1.toString()));
}
private function showErrorMsg(_arg1:String):void{
var _local2:DisplayObject;
var _local3:int;
var _local4:int;
if (!showErrorBlock){
return;
};
if (_arg1.indexOf("allowScriptAccess") >= 0){
_local2 = (new warnClass() as DisplayObject);
stage.addChild(_local2);
_local3 = stage.stageWidth;
_local4 = stage.stageHeight;
_local2.x = (_local3 / 2);
_local2.y = (_local4 / 2);
};
}
private function __onAdEvent(_arg1:String):void{
if (null != adHandler){
adHandler(_arg1);
};
}
public function loadAds(_arg1:DisplayObjectContainer, _arg2:AdsParam, _arg3:Boolean=true, _arg4:Function=null, _arg5:Function=null, _arg6:Function=null):void{
var _local7:URLRequest;
unload();
this.successHandler = _arg4;
this.adHandler = _arg5;
this.errorHandler = _arg6;
adWidth = _arg2.getWidth();
adHeight = _arg2.getHeight();
paramObj = _arg2.createRequest();
this.holder = _arg1;
this.showErrorBlock = _arg3;
stage = _arg1.stage;
if (null == googleAds){
Security.allowDomain("pagead2.googlesyndication.com");
_local7 = new URLRequest("http://pagead2.googlesyndication.com/pagead/scache/googlevideoadslibraryas3.swf");
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __googleLoaded);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, __error);
loader.load(_local7);
} else {
_arg1.addChild(loader);
googleAds.requestAds(paramObj, __adsRequestResult);
};
}
public function unload():void{
successHandler = null;
errorHandler = null;
adHandler = null;
if (player){
player.onAdEvent = null;
player.destroy();
player = null;
};
if (((loader) && ((loader.parent == holder)))){
holder.removeChild(loader);
};
}
public static function get instance():Ads{
if (null == ins){
ins = new (Ads);
};
return (ins);
}
}
}//package cn.googleads
Section 2
//Ads_warnClass (cn.googleads.Ads_warnClass)
package cn.googleads {
import mx.core.*;
public class Ads_warnClass extends SpriteAsset {
}
}//package cn.googleads
Section 3
//AdsParam (cn.googleads.AdsParam)
package cn.googleads {
public class AdsParam {
protected var pubHeight:int;// = 250
private var optionParameters:Object;
protected var pubWidth:int;// = 300
protected var adType:String;// = "fullscreen"
protected var channels:Array;
protected var descriptionUrl:String;// = ""
protected var contentId:String;// = ""
protected var publisherId:String;// = ""
public static const AGE_55_65:int = 1005;
public static const AGE_ALL:int = 0;
public static const AGE_35_45:int = 1003;
public static const AGE_65_infinity:int = 1006;
public static const AGE_25_35:int = 1002;
public static const TYPE_IMAGE:String = "graphical_fullscreen";
public static const TYPE_TEXT:String = "text_fullscreen";
public static const AGE_0_17:int = 1000;
public static const TYPE_VIDEO:String = "video";
public static const AGE_18_25:int = 1001;
public static const TYPE_IMAGE_TEXT:String = "fullscreen";
public static const AGE_45_55:int = 1004;
public function AdsParam(){
channels = ["", ""];
optionParameters = {};
super();
}
public function createRequest():Object{
var _local2:String;
var _local1:Object = {contentId:contentId, publisherId:publisherId, channels:channels, pubWidth:pubWidth, pubHeight:pubHeight, adType:adType, descriptionUrl:descriptionUrl};
for (_local2 in optionParameters) {
_local1[_local2] = optionParameters[_local2];
};
return (_local1);
}
public function setGender(_arg1:Boolean):void{
if ((((_arg1 == 1)) || ((_arg1 == 2)))){
optionParameters.cust_gender = _arg1;
} else {
delete optionParameters["cust_gender"];
};
}
public function setWidth(_arg1:int):void{
pubWidth = _arg1;
}
public function getWidth():int{
return (pubWidth);
}
public function getHeight():int{
return (pubHeight);
}
public function setHeight(_arg1:int):void{
pubHeight = _arg1;
}
public function setMaxTotalAdDuration(_arg1:int):void{
optionParameters.maxTotalAdDuration = _arg1;
}
public function setUniqueAdsSlot(_arg1:int):void{
optionParameters.uniqueAds = (_arg1 > 1);
optionParameters.uniqueAdsSlotLength = _arg1;
}
public function setAge(_arg1:int):void{
if (_arg1 == AGE_ALL){
delete optionParameters["cust_gender"];
} else {
optionParameters.cust_gender = _arg1;
};
}
public function setAdType(_arg1:String):void{
adType = _arg1;
}
}
}//package cn.googleads
Section 4
//AdsParam4399 (cn.googleads.AdsParam4399)
package cn.googleads {
public class AdsParam4399 extends AdsParam {
public function AdsParam4399(_arg1:String, _arg2:int, _arg3:int, _arg4:String){
this.publisherId = "ca-games-pub-9606551472994074";
this.channels = ["0000000028", "game28"];
this.contentId = _arg1;
this.descriptionUrl = _arg4;
this.pubWidth = _arg2;
this.pubHeight = _arg3;
}
}
}//package cn.googleads
Section 5
//Ads4399 (cn.Ads4399)
package cn {
import flash.display.*;
public class Ads4399 {
public var ads:ggads_adsVideo;
public function Ads4399(_arg1:DisplayObjectContainer, _arg2:String, _arg3:String, _arg4:int=400, _arg5:int=300, _arg6:Number=0.1){
ads = new ggads_adsVideo(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
}
}//package cn
Section 6
//ggads_adsVideo (cn.ggads_adsVideo)
package cn {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class ggads_adsVideo extends Sprite {
public var showErrorBlock:Boolean;// = true
private var mainStage:Stage;
private var intervalId:uint;
private var warnClass:Class;
private var videoChance:Number;
private var gameName:String;
public var successHandler:Function;
private var pcTime:uint;// = 0
public var errorHandler:Function;
private var introUrl:String;
private var swfTime:uint;// = 6
private var holder:DisplayObjectContainer;
private var adsWidth:int;
private var adsHeight:int;
public function ggads_adsVideo(_arg1:DisplayObjectContainer, _arg2:String, _arg3:String, _arg4:int=400, _arg5:int=300, _arg6:Number=0){
warnClass = ggads_adsVideo_warnClass;
super();
this.holder = _arg1;
_arg1.addChild(this);
mainStage = _arg1.stage;
this.gameName = _arg2;
this.adsWidth = _arg4;
this.adsHeight = _arg5;
this.videoChance = _arg6;
this.introUrl = _arg3;
doGoogleVideoAd();
}
public function doGoogleVideoAd():void{
Security.allowDomain("pagead2.googlesyndication.com");
var _local1:URLRequest = new URLRequest("http://pagead2.googlesyndication.com/pagead/scache/googlevideoadslibraryas3.swf");
var _local2:Loader = new Loader();
_local2.contentLoaderInfo.addEventListener(Event.COMPLETE, sendVideoAdRequest);
_local2.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, __error);
_local2.load(_local1);
addChild(_local2);
}
private function timerHandler():void{
pcTime++;
trace((("播放时间:" + swfTime) + ""));
trace((("pctime:" + pcTime) + ""));
if (pcTime >= swfTime){
trace("time over");
};
}
private function doOnAdEvent(_arg1:String):void{
trace(("EVENT: " + _arg1));
}
private function sendVideoAdRequest(_arg1:Event):void{
var _local2:Object = _arg1.target.content;
var _local3:Object = new Object();
_local3.contentId = gameName;
_local3.publisherId = "ca-games-pub-9606551472994074";
_local3.pubWidth = (adsWidth + "");
_local3.pubHeight = (adsHeight + "");
_local3.adType = "fullscreen";
_local3.descriptionUrl = "http://www.4399.com/flash/6847.htm";
if (((!((introUrl == null))) && (!((introUrl == ""))))){
_local3.descriptionUrl = introUrl;
};
_local3.channels = ["0000000028", "game28"];
_local3.cust_age = 1001;
_local2.requestAds(_local3, onVideoAdsRequestResult);
}
private function __error(_arg1:Event=null):void{
showErrorMsg();
if (null != errorHandler){
errorHandler();
};
}
private function onVideoAdsRequestResult(_arg1:Object):void{
var _local2:MovieClip;
if (_arg1.success){
_local2 = _arg1.ads[0].getAdPlayerMovieClip();
_local2.setSize(adsWidth, adsHeight);
_local2.setX(0);
_local2.setY(0);
_local2.load();
_local2.onAdEvent = doOnAdEvent;
_local2.playAds();
if (null != successHandler){
successHandler();
};
} else {
__error(null);
trace(("Error: " + _arg1.errorMsg));
};
}
private function showErrorMsg():void{
if (!showErrorBlock){
return;
};
var _local1:DisplayObject = (new warnClass() as DisplayObject);
var _local2:Stage;
if (mainStage){
_local2 = mainStage;
} else {
if (holder.stage){
_local2 = holder.stage;
};
};
_local2.addChild(_local1);
var _local3:int;
var _local4:int;
_local3 = _local2.stageWidth;
_local4 = _local2.stageHeight;
_local1.x = (_local3 / 2);
_local1.y = (_local4 / 2);
}
}
}//package cn
Section 7
//ggads_adsVideo_warnClass (cn.ggads_adsVideo_warnClass)
package cn {
import mx.core.*;
public class ggads_adsVideo_warnClass extends SpriteAsset {
}
}//package cn
Section 8
//JSON (com.adobe.serialization.json.JSON)
package com.adobe.serialization.json {
public class JSON {
public static function decode(_arg1:String){
var _local2:JSONDecoder = new JSONDecoder(_arg1);
return (_local2.getValue());
}
public static function encode(_arg1:Object):String{
var _local2:JSONEncoder = new JSONEncoder(_arg1);
return (_local2.getString());
}
}
}//package com.adobe.serialization.json
Section 9
//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();
}
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{
if (token == null){
tokenizer.parseError("Unexpected end of input");
};
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);
}
private function nextToken():JSONToken{
return ((token = tokenizer.getNextToken()));
}
public function getValue(){
return (value);
}
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);
}
}
}//package com.adobe.serialization.json
Section 10
//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);
}
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) + "]"));
}
public function getString():String{
return (jsonString);
}
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) + "}"));
}
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");
}
}
}//package com.adobe.serialization.json
Section 11
//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);
name = "JSONParseError";
_location = _arg2;
_text = _arg3;
}
public function get location():int{
return (_location);
}
public function get text():String{
return (_text);
}
}
}//package com.adobe.serialization.json
Section 12
//JSONToken (com.adobe.serialization.json.JSONToken)
package com.adobe.serialization.json {
public class JSONToken {
private var _value:Object;
private var _type:int;
public function JSONToken(_arg1:int=-1, _arg2:Object=null){
_type = _arg1;
_value = _arg2;
}
public function get value():Object{
return (_value);
}
public function get type():int{
return (_type);
}
public function set type(_arg1:int):void{
_type = _arg1;
}
public function set value(_arg1:Object):void{
_value = _arg1;
}
}
}//package com.adobe.serialization.json
Section 13
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer)
package com.adobe.serialization.json {
public class JSONTokenizer {
private var loc:int;
private var ch:String;
private var obj:Object;
private var jsonString:String;
public function JSONTokenizer(_arg1:String){
jsonString = _arg1;
loc = 0;
nextChar();
}
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 isDigit(_arg1:String):Boolean{
return ((((_arg1 >= "0")) && ((_arg1 <= "9"))));
}
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 nextChar():String{
return ((ch = jsonString.charAt(loc++)));
}
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 skipWhite():void{
while (isWhiteSpace(ch)) {
nextChar();
};
}
public function parseError(_arg1:String):void{
throw (new JSONParseError(_arg1, loc, jsonString));
}
private function isWhiteSpace(_arg1:String):Boolean{
return ((((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n")))) || ((_arg1 == "\r"))));
}
private function skipIgnored():void{
var _local1:int;
do {
_local1 = loc;
skipWhite();
skipComments();
} while (_local1 != loc);
}
private function isHexDigit(_arg1:String):Boolean{
var _local2:String = _arg1.toUpperCase();
return (((isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F"))))));
}
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);
}
}
}//package com.adobe.serialization.json
Section 14
//JSONTokenType (com.adobe.serialization.json.JSONTokenType)
package com.adobe.serialization.json {
public class JSONTokenType {
public static const NUMBER:int = 11;
public static const FALSE:int = 8;
public static const RIGHT_BRACKET:int = 4;
public static const NULL:int = 9;
public static const TRUE:int = 7;
public static const RIGHT_BRACE:int = 2;
public static const UNKNOWN:int = -1;
public static const COMMA:int = 0;
public static const LEFT_BRACKET:int = 3;
public static const STRING:int = 10;
public static const LEFT_BRACE:int = 1;
public static const COLON:int = 6;
}
}//package com.adobe.serialization.json
Section 15
//BranchUpgradeController (com.burstyx.bigtree.control.BranchUpgradeController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import com.burstyx.bigtree.core.*;
import com.burstyx.bigtree.editor.data.*;
public class BranchUpgradeController implements BuymentController {
protected var scene:Scene;
public function BranchUpgradeController(_arg1:Scene){
this.scene = _arg1;
}
protected function getCost(_arg1:Selectable):int{
var _local2:Branch;
if ((_arg1 is Branch)){
_local2 = (_arg1 as Branch);
return (_local2.levelUpCost());
};
return (0);
}
public function buy(_arg1:Selectable):Boolean{
var _local2:Branch;
if (isAvailable(_arg1)){
_local2 = (_arg1 as Branch);
if (scene.getCapital().spend(_local2.levelUpCost())){
if (_local2.levelUp()){
playBuySound();
return (true);
};
throw (new Error("This should never be happen, please debug this."));
};
};
return (false);
}
protected function canLevelUp(_arg1:Selectable):Boolean{
var _local2:Branch;
if ((_arg1 is Branch)){
_local2 = (_arg1 as Branch);
if (_local2.canLevelUp()){
return (scene.getCapital().isEnough(_local2.levelUpCost()));
};
};
return (false);
}
protected function getNextLevel(_arg1:Selectable):int{
var _local2:Branch;
if ((_arg1 is Branch)){
_local2 = (_arg1 as Branch);
return ((_local2.getLevel() + 1));
};
return (-1);
}
public function getBuyInformation(_arg1:Selectable):StuffInformation{
throw (new Error("Subclass should override this method."));
}
protected function playBuySound():void{
MainSoundsProperties.ins.playSound(MainSoundsProperties.ins.limbUpgrade);
}
public function isAvailable(_arg1:Selectable):Boolean{
return (canLevelUp(_arg1));
}
}
}//package com.burstyx.bigtree.control
Section 16
//Buyment (com.burstyx.bigtree.control.Buyment)
package com.burstyx.bigtree.control {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
public class Buyment {
private var overring:Boolean;// = false
private var button:BuymentButton;
private var ui:PlayUI;
private var controller:BuymentController;
public function Buyment(_arg1:PlayUI, _arg2:DisplayObject, _arg3:BuymentController){
this.ui = _arg1;
this.button = new BuymentButton(_arg2);
this.controller = _arg3;
this.button.addEventListener(MouseEvent.ROLL_OVER, __over);
this.button.addEventListener(MouseEvent.CLICK, __click);
this.button.addEventListener(MouseEvent.ROLL_OUT, __out);
}
public function getButton():BuymentButton{
return (button);
}
public function updateStatus(_arg1:Selectable):void{
button.setEnabled(controller.isAvailable(_arg1));
if (overring){
ui.viewInformation(controller.getBuyInformation(_arg1));
};
}
private function __click(_arg1:MouseEvent):void{
var _local2:Selectable = SelectionManager.ins.getSelection();
controller.buy(_local2);
updateStatus(_local2);
ui.reviewStoredInformation();
ui.viewInformation(controller.getBuyInformation(_local2));
}
private function __out(_arg1:MouseEvent):void{
var _local2:Selectable = SelectionManager.ins.getSelection();
updateStatus(_local2);
ui.reviewStoredInformation();
overring = false;
}
private function __over(_arg1:MouseEvent):void{
var _local2:Selectable = SelectionManager.ins.getSelection();
updateStatus(_local2);
ui.viewInformation(controller.getBuyInformation(_local2));
overring = true;
}
public function getController():BuymentController{
return (controller);
}
}
}//package com.burstyx.bigtree.control
Section 17
//BuymentButton (com.burstyx.bigtree.control.BuymentButton)
package com.burstyx.bigtree.control {
import flash.display.*;
import com.redwave.*;
public class BuymentButton extends Sprite {
private var enabled:Boolean;// = true
private var cover:DisplayObject;
private var btn:SimpleButton;
public function BuymentButton(_arg1:DisplayObject){
btn = FlaEmbed.reflect("ButtonTemplate");
cover = FlaEmbed.reflect("DisabledButtonCover");
addChild(btn);
if (_arg1){
addChild(_arg1);
if ((_arg1 is InteractiveObject)){
InteractiveObject(_arg1).mouseEnabled = false;
};
if ((_arg1 is DisplayObjectContainer)){
DisplayObjectContainer(_arg1).mouseChildren = false;
};
};
addChild(cover);
setEnabled(true);
}
public function isEnabled():Boolean{
return (enabled);
}
public function setEnabled(_arg1:Boolean):void{
this.enabled = _arg1;
if (_arg1){
cover.visible = false;
btn.mouseEnabled = true;
} else {
cover.visible = true;
btn.mouseEnabled = false;
};
}
}
}//package com.burstyx.bigtree.control
Section 18
//BuymentController (com.burstyx.bigtree.control.BuymentController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
public interface BuymentController {
function getBuyInformation(_arg1:Selectable):StuffInformation;
function buy(_arg1:Selectable):Boolean;
function isAvailable(_arg1:Selectable):Boolean;
}
}//package com.burstyx.bigtree.control
Section 19
//LimbBuyController (com.burstyx.bigtree.control.LimbBuyController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
public class LimbBuyController implements BuymentController {
private var scene:Scene;
private var dir:int;
private var param:LimbParam;
public function LimbBuyController(_arg1:Scene, _arg2:LimbParam, _arg3:int){
this.scene = _arg1;
this.param = _arg2;
this.dir = _arg3;
}
public function buy(_arg1:Selectable):Boolean{
var _local2:Joint;
if (isAvailable(_arg1)){
_local2 = (_arg1 as Joint);
if (scene.getCapital().spend(param.gradePrices[0])){
_local2.grow(new Limb(_local2, param, dir));
MainSoundsProperties.ins.playSound(MainSoundsProperties.ins.limbUpgrade);
return (true);
};
};
return (false);
}
public function isAvailable(_arg1:Selectable):Boolean{
var _local2:Joint;
if ((_arg1 is Joint)){
_local2 = (_arg1 as Joint);
if (_local2.canGrowLimb()){
if (scene.getCapital().isEnough(param.gradePrices[0])){
return (true);
};
};
};
return (false);
}
public function getBuyInformation(_arg1:Selectable):StuffInformation{
var _local2:String = ((dir == Limb.LEFT)) ? Loc.s("term.Left Limb") : Loc.s("term.Right Limb");
return (new StuffInformation(param.gradePrices[0], _local2, Loc.s("Limb.getInformation3")));
}
}
}//package com.burstyx.bigtree.control
Section 20
//LimbUpgradeController (com.burstyx.bigtree.control.LimbUpgradeController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class LimbUpgradeController extends BranchUpgradeController {
public function LimbUpgradeController(_arg1:Scene){
super(_arg1);
}
override public function getBuyInformation(_arg1:Selectable):StuffInformation{
var _local3:Boolean;
var _local4:StuffInformation;
var _local2:Limb = (_arg1 as Limb);
if (_local2){
_local3 = _local2.canLevelUp();
if (_local3){
return (new StuffInformation(getCost(_arg1), Loc.s("LimbUpgradeController.Upgrade Limb"), ((Loc.s("LimbUpgradeController.1") + getNextLevel(_arg1)) + Loc.s("LimbUpgradeController.2"))));
};
_local4 = new StuffInformation(-1, Loc.s("LimbUpgradeController.Upgrade Limb"), Loc.s("LimbUpgradeController.3"));
_local4.redIntro = true;
return (_local4);
//unresolved jump
};
return (null);
}
}
}//package com.burstyx.bigtree.control
Section 21
//TrunkRecoverController (com.burstyx.bigtree.control.TrunkRecoverController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
public class TrunkRecoverController implements BuymentController {
private var price:Number;
private var scene:Scene;
public function TrunkRecoverController(_arg1:Scene){
this.scene = _arg1;
price = 0.4;
}
private function getCost(_arg1:Selectable):Point{
var _local2:Trunk;
var _local3:int;
var _local4:int;
var _local5:int;
if (isAvailable(_arg1)){
_local2 = (_arg1 as Trunk);
_local3 = (_local2.getHPTotal() - _local2.getHealth());
_local4 = Math.ceil((_local3 * price));
_local5 = scene.getCapital().getWater();
if (_local5 >= _local4){
return (new Point(_local4, _local3));
};
_local3 = Math.floor((_local5 / price));
_local4 = _local5;
if (_local3 > 0){
return (new Point(_local4, _local3));
};
};
return (null);
}
public function getBuyInformation(_arg1:Selectable):StuffInformation{
var _local3:StuffInformation;
var _local2:Point = getCost(_arg1);
if (_local2){
return (new StuffInformation(_local2.x, "Recover HP", (((("Recover " + _local2.y) + " HP with ") + _local2.x) + " water.")));
};
_local3 = new StuffInformation(0, "Recover HP", "There is no water or the HP is full, no need to recover.");
_local3.redIntro = true;
return (_local3);
}
public function buy(_arg1:Selectable):Boolean{
var _local2:Trunk;
var _local3:int;
var _local4:int;
var _local5:int;
if (isAvailable(_arg1)){
_local2 = (_arg1 as Trunk);
_local3 = (_local2.getHPTotal() - _local2.getHealth());
_local4 = Math.ceil((_local3 * price));
_local5 = scene.getCapital().getWater();
if (_local5 >= _local4){
if (scene.getCapital().spend(_local4)){
_local2.modifyHealth(_local3);
return (true);
};
} else {
_local3 = Math.floor((_local5 / price));
_local4 = _local5;
if (_local3 > 0){
if (scene.getCapital().spend(_local4)){
_local2.modifyHealth(_local3);
return (true);
};
return (true);
};
};
};
return (false);
}
public function isAvailable(_arg1:Selectable):Boolean{
var _local2:Trunk;
if ((_arg1 is Trunk)){
_local2 = (_arg1 as Trunk);
if (_local2.getHealth() < _local2.getHPTotal()){
return ((scene.getCapital().getWater() > 0));
};
};
return (false);
}
}
}//package com.burstyx.bigtree.control
Section 22
//TrunkUpgradeController (com.burstyx.bigtree.control.TrunkUpgradeController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class TrunkUpgradeController extends BranchUpgradeController {
public function TrunkUpgradeController(_arg1:Scene){
super(_arg1);
}
override public function getBuyInformation(_arg1:Selectable):StuffInformation{
var _local3:Boolean;
var _local4:StuffInformation;
var _local2:Trunk = (_arg1 as Trunk);
if (_local2){
_local3 = _local2.canLevelUp();
if (_local3){
return (new StuffInformation(getCost(_arg1), Loc.s("TrunkUpgradeController.Upgrade Trunk"), ((Loc.s("TrunkUpgradeController.1") + getNextLevel(_arg1)) + Loc.s("TrunkUpgradeController.2"))));
};
_local4 = new StuffInformation(-1, Loc.s("TrunkUpgradeController.Upgrade Trunk"), Loc.s("TrunkUpgradeController.3"));
_local4.redIntro = true;
return (_local4);
//unresolved jump
};
return (null);
}
}
}//package com.burstyx.bigtree.control
Section 23
//WeaponBuyController (com.burstyx.bigtree.control.WeaponBuyController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import com.burstyx.bigtree.core.*;
import com.burstyx.bigtree.editor.data.*;
public class WeaponBuyController implements BuymentController {
private var scene:Scene;
private var param:WeaponParam;
public function WeaponBuyController(_arg1:Scene, _arg2:WeaponParam){
this.scene = _arg1;
this.param = _arg2;
}
public function buy(_arg1:Selectable):Boolean{
var _local2:Joint;
if (isAvailable(_arg1)){
_local2 = (_arg1 as Joint);
if (scene.getCapital().spend(param.getLevelParam(0).price)){
_local2.grow(new Weapon(_local2, param));
MainSoundsProperties.ins.playSound(MainSoundsProperties.ins.weaponBuild);
return (true);
};
};
return (false);
}
public function getBuyInformation(_arg1:Selectable):StuffInformation{
var _local2:WeaponLvParam = param.getLevelParam(0);
return (new StuffInformation(_local2.price, param.name, param.intro, _local2.attack, _local2.splashRange, _local2.attackRate, _local2.attackRange, (((_local2.attackEffect == AttackEffect.SLOWER)) || ((_local2.attackEffect == AttackEffect.MULTI_SLOWER)))));
}
public function isAvailable(_arg1:Selectable):Boolean{
var _local2:Joint;
if ((_arg1 is Joint)){
_local2 = (_arg1 as Joint);
if (_local2.canGrowWeapon()){
if (scene.getCapital().isEnough(param.getLevelParam(0).price)){
return (true);
};
};
};
return (false);
}
}
}//package com.burstyx.bigtree.control
Section 24
//WeaponSellController (com.burstyx.bigtree.control.WeaponSellController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
public class WeaponSellController implements BuymentController {
private var scene:Scene;
public function WeaponSellController(_arg1:Scene){
this.scene = _arg1;
}
public function buy(_arg1:Selectable):Boolean{
var _local2:Weapon;
var _local3:int;
if (isAvailable(_arg1)){
_local2 = (_arg1 as Weapon);
_local3 = _local2.countSellPrice();
_local2.getLinker().removeAttachment();
_local2.destroy();
scene.getCapital().earn(_local3);
MainSoundsProperties.ins.playSound(MainSoundsProperties.ins.weaponSold);
return (true);
};
return (false);
}
public function getBuyInformation(_arg1:Selectable):StuffInformation{
var _local3:int;
var _local4:StuffInformation;
var _local2:Weapon = (_arg1 as Weapon);
if (_local2){
_local3 = _local2.countSellPrice();
_local4 = new StuffInformation(_local3, Loc.s("WeaponSellController.1"), ((Loc.s("WeaponSellController.2") + _local3) + Loc.s("WeaponSellController.3")));
_local4.costIsEarn = true;
return (_local4);
};
return (null);
}
public function isAvailable(_arg1:Selectable):Boolean{
if ((_arg1 is Weapon)){
return (true);
};
return (false);
}
}
}//package com.burstyx.bigtree.control
Section 25
//WeaponUpgradeController (com.burstyx.bigtree.control.WeaponUpgradeController)
package com.burstyx.bigtree.control {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
public class WeaponUpgradeController extends BranchUpgradeController {
public function WeaponUpgradeController(_arg1:Scene){
super(_arg1);
}
override public function getBuyInformation(_arg1:Selectable):StuffInformation{
var _local3:Boolean;
var _local4:int;
var _local5:int;
var _local6:WeaponLvParam;
var _local7:String;
var _local8:StuffInformation;
var _local2:Weapon = (_arg1 as Weapon);
if (_local2){
_local3 = _local2.canLevelUp();
_local4 = _local2.getLevel();
_local5 = (scene.getGame().getEquipsManager().getWeaponValidLevel(_local2.getParam().number) - 1);
if (_local4 >= _local5){
_local3 = false;
};
if (_local3){
_local6 = _local2.getParam().getLevelParam((_local2.getLevel() + 1));
return (new StuffInformation(getCost(_arg1), Loc.s("WeaponUpgradeController.Upgrade Weapon"), (((Loc.s("WeaponUpgradeController.1") + (getNextLevel(_arg1) + 1)) + Loc.s("WeaponUpgradeController.2")) + _local2.getParam().intro), _local6.attack, _local6.splashRange, _local6.attackRate, _local6.attackRange, (((_local6.attackEffect == AttackEffect.SLOWER)) || ((_local6.attackEffect == AttackEffect.MULTI_SLOWER)))));
};
_local7 = ((Loc.s("WeaponUpgradeController.3") + (_local5 + 1)) + Loc.s("WeaponUpgradeController.4"));
if (_local5 >= 4){
_local7 = Loc.s("WeaponUpgradeController.5");
};
_local8 = new StuffInformation(-1, Loc.s("WeaponUpgradeController.Upgrade Weapon"), _local7);
_local8.redIntro = true;
return (_local8);
//unresolved jump
};
return (null);
}
override protected function playBuySound():void{
MainSoundsProperties.ins.playSound(MainSoundsProperties.ins.weaponUpgrade);
}
override protected function canLevelUp(_arg1:Selectable):Boolean{
var _local2:Weapon;
var _local3:Boolean;
var _local4:int;
if ((_arg1 is Weapon)){
_local2 = (_arg1 as Weapon);
_local3 = _local2.canLevelUp();
_local4 = _local2.getLevel();
if (_local4 >= (scene.getGame().getEquipsManager().getWeaponValidLevel(_local2.getParam().number) - 1)){
_local3 = false;
};
if (_local3){
return (scene.getCapital().isEnough(_local2.levelUpCost()));
};
};
return (false);
}
}
}//package com.burstyx.bigtree.control
Section 26
//AttackEffect (com.burstyx.bigtree.core.AttackEffect)
package com.burstyx.bigtree.core {
public class AttackEffect {
public static const SINGLE:int = 0;
public static const BOMB:int = 6;
public static const LASER:int = 4;
public static const SLOWER:int = 1;
public static const POISON:int = 2;
public static const FLAME:int = 5;
public static const MULTI_SLOWER:int = 8;
public static const EAT:int = 7;
public static const MULTI:int = 3;
public static const ROCKET:int = 9;
public static function get LABELS():Array{
return (["普通攻击", "敌人降速", "敌人中毒", "多方攻击", "激光攻击", "火焰攻击", "大爆炸", "一口吃掉", "群体降速", "跟踪火箭"]);
}
}
}//package com.burstyx.bigtree.core
Section 27
//AudioEvent (com.burstyx.bigtree.core.AudioEvent)
package com.burstyx.bigtree.core {
import flash.display.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
public class AudioEvent {
private var movie:MovieClip;
private var handler:Function;
private var event:AudioEventParam;
public function AudioEvent(_arg1:Scene, _arg2:AudioEventParam, _arg3:Function){
this.event = _arg2;
this.handler = _arg3;
movie = _arg2.createMovie();
if (movie){
_arg1.addEnvUnit(movie);
new EnterFrameCall(__finish, movie.totalFrames).start();
} else {
new EnterFrameCall(__finish, 2).start();
};
}
private function __finish():void{
if (movie){
movie.parent.removeChild(movie);
DisplayUtils.stopAllMC(movie);
movie = null;
};
handler(event);
}
}
}//package com.burstyx.bigtree.core
Section 28
//AudioEventListParam (com.burstyx.bigtree.core.AudioEventListParam)
package com.burstyx.bigtree.core {
public interface AudioEventListParam {
function getEvents():Array;
}
}//package com.burstyx.bigtree.core
Section 29
//AudioEventParam (com.burstyx.bigtree.core.AudioEventParam)
package com.burstyx.bigtree.core {
import flash.display.*;
public interface AudioEventParam {
function get movie():String;
function createMovie():MovieClip;
function get time():Number;
}
}//package com.burstyx.bigtree.core
Section 30
//Bomb (com.burstyx.bigtree.core.Bomb)
package com.burstyx.bigtree.core {
import flash.display.*;
import flash.geom.*;
import com.redwave.util.*;
public class Bomb {
private var bomb:MovieClip;
public function Bomb(_arg1:MovieClip, _arg2:DisplayObjectContainer, _arg3:Point=null, _arg4:Number=1){
this.bomb = _arg1;
_arg1.scaleX = (_arg1.scaleY = _arg4);
if (_arg3){
_arg1.x = _arg3.x;
_arg1.y = _arg3.y;
};
if (_arg2){
_arg2.addChild(_arg1);
};
new EnterFrameCall(__finish, _arg1.totalFrames).start();
}
private function __finish():void{
if (bomb.parent){
bomb.parent.removeChild(bomb);
DisplayUtils.stopAllMC(bomb);
};
}
}
}//package com.burstyx.bigtree.core
Section 31
//Branch (com.burstyx.bigtree.core.Branch)
package com.burstyx.bigtree.core {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import flash.geom.*;
import com.redwave.util.*;
import flash.filters.*;
public class Branch implements Selectable {
protected var level:int;// = 0
protected var jointsVisible:Boolean;// = false
protected var shape:MovieClip;
protected var clips:Array;
protected var linker:Joint;
protected var joints:Array;
protected var curClip:MovieClip;
protected var storedJoints:Array;
private var lastTrigger:InteractiveObject;
protected var asset:MovieClip;
public function Branch(_arg1:Joint, _arg2:MovieClip){
this.linker = _arg1;
this.asset = _arg2;
_arg2.mouseEnabled = false;
_arg2.gotoAndStop(1);
init(_arg2);
}
protected function getTrigger():InteractiveObject{
return (shape);
}
private function init(_arg1:MovieClip):void{
var _local2:MovieClip;
var _local3:int;
storedJoints = [];
clips = [];
joints = [];
if (!isLeaf()){
_local3 = 1;
while (_local3 <= 1000) {
_local2 = DisplayUtils.getC(_arg1, ("clip" + _local3));
if (_local2){
_local2.mouseEnabled = false;
clips.push(_local2);
storedJoints.push(new Joint(this, null));
} else {
break;
};
_local3++;
};
if (storedJoints.length > 0){
doGrowJoint();
};
level = joints.length;
};
rebindListener();
}
protected function __assetOver(_arg1:MouseEvent):void{
if (isTargetSelf(_arg1)){
assetOver(_arg1);
};
}
public function getVertexJoint():Joint{
if (joints.length > 0){
return (joints[(joints.length - 1)]);
};
return (null);
}
public function getJointCount():int{
return (joints.length);
}
public function getLinker():Joint{
return (linker);
}
protected function __assetOut(_arg1:MouseEvent):void{
if (isTargetSelf(_arg1)){
assetUp(_arg1);
};
}
public function getJoints():Array{
return (joints.concat());
}
public function getParent():Branch{
if (linker){
return (linker.getOwner());
};
return (null);
}
public function getJointCountCability():int{
var _local1:Branch = getParent();
if (_local1){
return ((_local1.getJointCount() - 1));
};
return (storedJoints.length);
}
public function setSelected(_arg1:Boolean):void{
if (shape){
if (_arg1){
shape.filters = [new GlowFilter(0xFFFFFF, 0.9, 4, 4, 4, 2)];
} else {
shape.filters = [];
};
};
}
protected function isLeaf():Boolean{
return (false);
}
public function isTrunk():Boolean{
return (false);
}
protected function assetUp(_arg1:MouseEvent):void{
setJointsVisible(false);
}
public function levelUpCost():int{
return (0);
}
public function getJointAt(_arg1:int):Joint{
return (joints[_arg1]);
}
protected function assetDown(_arg1:MouseEvent):void{
SelectionManager.ins.setSelection(this);
}
protected function getTriggerTarget():InteractiveObject{
return (shape);
}
protected function growJoint():Boolean{
if (canGrowJoint()){
doGrowJoint();
return (true);
};
return (false);
}
public function levelUp():Boolean{
return (growJoint());
}
public function getAsset():MovieClip{
return (asset);
}
protected function rebindListener():void{
if (lastTrigger){
lastTrigger.removeEventListener(MouseEvent.MOUSE_OVER, __assetOver);
lastTrigger.removeEventListener(MouseEvent.MOUSE_DOWN, __assetDown);
lastTrigger.removeEventListener(MouseEvent.ROLL_OUT, __assetOut);
};
lastTrigger = getTrigger();
lastTrigger.addEventListener(MouseEvent.MOUSE_OVER, __assetOver);
lastTrigger.addEventListener(MouseEvent.MOUSE_DOWN, __assetDown);
lastTrigger.addEventListener(MouseEvent.ROLL_OUT, __assetOut);
}
protected function canGrowJoint():Boolean{
return ((getJointCount() < getJointCountCability()));
}
public function canLevelUp():Boolean{
return (canGrowJoint());
}
public function getLevel():int{
return (level);
}
private function setJointsVisible(_arg1:Boolean):void{
var _local2:Joint;
jointsVisible = _arg1;
for each (_local2 in joints) {
_local2.setVisible(((_arg1) && (!(_local2.hasAttachment()))));
};
if (shape){
if (_arg1){
shape.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 60, 60, 60);
} else {
shape.transform.colorTransform = new ColorTransform();
};
};
}
protected function __assetDown(_arg1:MouseEvent):void{
if (isTargetSelf(_arg1)){
assetDown(_arg1);
};
}
protected function isTargetSelf(_arg1:MouseEvent):Boolean{
var _local2:DisplayObject = (_arg1.target as DisplayObject);
if (isSubHotAsset(_local2, false)){
return (false);
};
return (true);
}
protected function assetOver(_arg1:MouseEvent):void{
setJointsVisible(true);
}
protected function doGrowJoint():void{
var _local5:MovieClip;
var _local6:MovieClip;
var _local1:Array;
if (shape){
_local1 = shape.filters;
shape = null;
};
var _local2:int = joints.length;
var _local3:Joint = storedJoints[_local2];
joints.push(_local3);
setJointsVisible(jointsVisible);
level = joints.length;
var _local4:int;
while (_local4 < clips.length) {
_local5 = clips[_local4];
_local5.visible = (level == (_local4 + 1));
if (_local5.visible){
curClip = _local5;
};
_local4++;
};
if (curClip){
shape = DisplayUtils.getC(curClip, "shape");
shape.filters = _local1;
_local4 = 1;
while (_local4 <= level) {
_local6 = DisplayUtils.getC(curClip, ("dot" + _local4));
_local3 = joints[(_local4 - 1)];
_local3.setAsset(_local6);
_local4++;
};
};
}
public function getInformation():StuffInformation{
throw (new Error("Subclass should override this method."));
}
function isSubHotAsset(_arg1:DisplayObject, _arg2:Boolean):Boolean{
var _local3:Joint;
if (_arg2){
if (_arg1 == getTriggerTarget()){
return (true);
};
};
if (asset.contains(_arg1)){
for each (_local3 in joints) {
if (_local3.isSubHotAsset(_arg1, true)){
return (true);
};
};
};
return (false);
}
public function getGlobalPos():Point{
return (linker.getGlobalPos());
}
}
}//package com.burstyx.bigtree.core
Section 32
//Hole (com.burstyx.bigtree.core.Hole)
package com.burstyx.bigtree.core {
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.redwave.util.*;
import flash.text.*;
public class Hole {
private var ticker:EnterFrameCallContinuse;
private var scene:Scene;
private var param:HoleParam;
private var state:int;
private var matrixMC:MovieClip;
private var orderText:TextField;
private var speedMC:MovieClip;
private var duplicate3MC:MovieClip;
private var speedH:Number;// = 0
private var orderMC:MovieClip;
private var speedL:Number;// = 0
private var duplicate2MC:MovieClip;
private var asset:MovieClip;
private var recoverMC:MovieClip;
public static const BREAKING:int = 2;
private static const R:int = 40;
public static const DEPLETED:int = 4;
public static const SLEEPING:int = 1;
public static const RUNNING:int = 3;
public function Hole(_arg1:Scene, _arg2:HoleParam){
this.scene = _arg1;
this.param = _arg2;
this.asset = _arg2.createAsset();
asset.gotoAndStop(1);
matrixMC = DisplayUtils.getC(asset, "matrixMC");
speedMC = DisplayUtils.getC(asset, "speedMC");
recoverMC = DisplayUtils.getC(asset, "recoverMC");
duplicate2MC = DisplayUtils.getC(asset, "duplicate2MC");
duplicate3MC = DisplayUtils.getC(asset, "duplicate3MC");
orderMC = DisplayUtils.getC(asset, "textMC");
orderText = DisplayUtils.getC(asset, "textMC.textMC.orderText");
speedL = Math.sqrt(((speedMC.x * speedMC.x) + (speedMC.y * speedMC.y)));
speedH = Math.PI;
matrixMC.visible = _arg2.isMatrix;
speedMC.gotoAndStop(getSpeedStar(_arg2.time));
recoverMC.visible = _arg2.isRecover;
duplicate2MC.visible = (_arg2.duplicate == 1);
duplicate3MC.visible = (_arg2.duplicate == 2);
orderText.text = getCharByIndex(_arg2.grade);
asset.mouseChildren = false;
asset.mouseEnabled = false;
asset.x = getX();
asset.y = getY();
state = SLEEPING;
ticker = new EnterFrameCallContinuse(__tick, 1);
ticker.start();
}
private function getSpeedStar(_arg1:int):int{
if (_arg1 < 8){
return (5);
};
if (_arg1 < 20){
return (4);
};
if (_arg1 < 40){
return (3);
};
if (_arg1 < 70){
return (2);
};
return (1);
}
public function setMatrixScale(_arg1:Number):void{
var _local2:Number = (0.6 + (_arg1 * 0.3));
asset.scaleX = (asset.scaleY = _local2);
}
public function isMatrix():Boolean{
return (param.isMatrix);
}
private function getCharByIndex(_arg1:int):String{
var _local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return (_local2.charAt(_arg1));
}
public function destroy():void{
ticker.interrupt();
scene = null;
DisplayUtils.stopAllMC(asset);
}
public function setState(_arg1:int):void{
state = _arg1;
asset.gotoAndStop(_arg1);
var _local2 = !((_arg1 == DEPLETED));
if (!_local2){
speedMC.visible = _local2;
duplicate2MC.visible = _local2;
duplicate3MC.visible = _local2;
matrixMC.visible = _local2;
recoverMC.visible = _local2;
orderMC.visible = _local2;
};
}
public function randomPoint():Point{
var _local1:Number = ((Math.PI * 2) * Math.random());
return (new Point((getX() + ((Math.cos(_local1) * R) * 0.8)), (getY() + ((Math.sin(_local1) * R) * 0.8))));
}
public function getY():Number{
return (param.y);
}
public function getAsset():MovieClip{
return (asset);
}
public function getR():Number{
return (R);
}
public function getLocation():Point{
return (new Point(getX(), getY()));
}
public function getX():Number{
return (param.x);
}
public function getParam():HoleParam{
return (param);
}
private function __tick():void{
var _local1:int;
var _local2:Number;
if (speedMC){
_local1 = param.time;
_local2 = (Math.PI / _local1);
speedH = (speedH + _local2);
speedMC.x = (Math.cos(speedH) * speedL);
speedMC.y = (Math.sin(speedH) * speedL);
};
}
}
}//package com.burstyx.bigtree.core
Section 33
//HoleListParam (com.burstyx.bigtree.core.HoleListParam)
package com.burstyx.bigtree.core {
import flash.display.*;
public interface HoleListParam {
function createAsset():MovieClip;
function getHoles():Array;
}
}//package com.burstyx.bigtree.core
Section 34
//HoleParam (com.burstyx.bigtree.core.HoleParam)
package com.burstyx.bigtree.core {
import flash.display.*;
public interface HoleParam {
function get infinity():Boolean;
function get duplicate():int;
function get time():int;
function get order():int;
function get asset():String;
function get isMatrix():Boolean;
function createAsset():MovieClip;
function get grade():int;
function get amount():int;
function get y():int;
function get isRecover():Boolean;
function get x():int;
}
}//package com.burstyx.bigtree.core
Section 35
//Insect (com.burstyx.bigtree.core.Insect)
package com.burstyx.bigtree.core {
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.redwave.util.*;
import com.burstyx.bigtree.logic.*;
public class Insect {
private var heading:Number;
private var animation:int;
private var param:InsectParam;
private var state:int;
private var mc:MovieClip;
private var strongMul:int;// = 1
private var sustainingDamage:SustainingDamage;
private var sustainingSlower:SustainingSlower;
private var oscale:Number;
private var hole:Hole;
private var pos:Point;
private var health:int;
private var asset:Sprite;
private var hpShape:Shape;
public static const INHOLE:int = 0;
public static const NORMAL:int = 1;
public static const ATTACK:int = 3;
public static const FLYING:int = 1;
public static const HURT:int = 2;
public static const DIE:int = 4;
public static const ONTREE:int = 2;
public static var HP_TWEEK:Number = 0.6;
public function Insect(_arg1:InsectParam){
this.param = _arg1;
asset = new Sprite();
asset.mouseChildren = false;
asset.mouseEnabled = false;
mc = _arg1.createAsset();
oscale = 0.7;
setScale(1);
animation = NORMAL;
state = INHOLE;
heading = 0;
health = getTweakedHP();
pos = new Point();
mc.gotoAndStop(animation);
hpShape = new Shape();
asset.addChild(mc);
asset.addChild(hpShape);
var _local2:Rectangle = mc.getBounds(mc);
hpShape.x = 0;
hpShape.y = (_local2.y - 10);
var _local3:Number = 36;
hpShape.graphics.beginFill(0xFF0000, 1);
hpShape.graphics.drawRect((-(_local3) / 2), 0, _local3, 2);
hpShape.graphics.endFill();
}
public function getName():String{
return (param.name);
}
public function getLocationInner():Point{
return (pos);
}
public function getHPTotal():int{
return ((getTweakedHP() * strongMul));
}
public function setScale(_arg1:Number):void{
asset.scaleX = (asset.scaleY = (oscale * _arg1));
}
public function init(_arg1:DisplayObjectContainer):void{
_arg1.addChild(asset);
}
public function updateHPShape():void{
hpShape.scaleX = (health / getTweakedHP());
}
public function setAlpha(_arg1:Number):void{
asset.alpha = _arg1;
}
public function getTweakedHP():int{
return (Math.round((param.HP * HP_TWEEK)));
}
public function hurt(_arg1:int):void{
health = (health - _arg1);
if (health < 0){
health = 0;
};
updateHPShape();
}
public function getAttackRange():int{
return (param.attackRange);
}
public function getMoveType():int{
return (param.moveType);
}
public function getSustainingSlower():SustainingSlower{
return (sustainingSlower);
}
public function getSustainingDamage():SustainingDamage{
return (sustainingDamage);
}
public function getKey(){
return (param);
}
public function getLocation():Point{
return (new Point(pos.x, pos.y));
}
public function setSustainingSlower(_arg1:SustainingSlower):void{
sustainingSlower = _arg1;
}
public function setSustainingDamage(_arg1:SustainingDamage):void{
sustainingDamage = _arg1;
}
public function setLocation(_arg1:Number, _arg2:Number):void{
hpShape.visible = GameSetting.insectHPOn;
pos.x = _arg1;
pos.y = _arg2;
asset.x = _arg1;
asset.y = _arg2;
}
public function getAsset():DisplayObject{
return (asset);
}
public function getAttackRate():int{
return (param.attackRate);
}
public function setAnimation(_arg1:int):void{
animation = _arg1;
if (mc.currentFrame != animation){
mc.gotoAndStop(animation);
};
}
public function getY():Number{
return (pos.y);
}
public function moveTo(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number = (_arg2 - pos.y);
var _local5:Number = (_arg1 - pos.x);
var _local6:Number = Math.atan2(_local4, _local5);
var _local7:Number = Math.sqrt(((_local5 * _local5) + (_local4 * _local4)));
var _local8:Number = Math.min(_arg3, _local7);
setLocation((pos.x + (Math.cos(_local6) * _local8)), (pos.y + (Math.sin(_local6) * _local8)));
_local7 = (_local7 - _local8);
return (_local7);
}
public function getAttack():int{
return ((param.attack * strongMul));
}
public function getMoveSpeed():Number{
var _local1:Number = 1;
if (sustainingSlower){
_local1 = sustainingSlower.getScale();
};
return (((param.moveSpeed / 10) * _local1));
}
public function getX():Number{
return (pos.x);
}
public function isAlive():Boolean{
return ((health > 0));
}
public function getHeading():Number{
return (heading);
}
public function setHeading(_arg1:Number):void{
hpShape.visible = GameSetting.insectHPOn;
this.heading = MathUtils.standardAngle(_arg1);
mc.rotation = (((heading / Math.PI) * 180) - 90);
}
public function getHealth():int{
return (health);
}
public function setState(_arg1:int):void{
state = _arg1;
}
public function clone():Insect{
var _local1:Insect = new Insect(param);
_local1.setLocation(getX(), getY());
_local1.hurt((getTweakedHP() - health));
return (_local1);
}
public function getWater():int{
return (param.water);
}
public function setStrongMul(_arg1:int):void{
strongMul = _arg1;
}
public function recoverHP():void{
health = getTweakedHP();
updateHPShape();
}
public function toString():String{
return (mc.toString());
}
public function destroy():void{
if (asset.parent){
asset.parent.removeChild(asset);
DisplayUtils.stopAllMC(asset);
};
}
public function playBomb(_arg1:MovieClip, _arg2:Number=1):void{
new Bomb(_arg1, asset, new Point((2 - (Math.random() * 4)), (2 - (Math.random() * 4))), _arg2);
}
public function canHurt():Boolean{
return ((state == FLYING));
}
}
}//package com.burstyx.bigtree.core
Section 36
//InsectListParam (com.burstyx.bigtree.core.InsectListParam)
package com.burstyx.bigtree.core {
public interface InsectListParam {
function getInsects():Array;
}
}//package com.burstyx.bigtree.core
Section 37
//InsectParam (com.burstyx.bigtree.core.InsectParam)
package com.burstyx.bigtree.core {
import flash.display.*;
public interface InsectParam {
function get attackRate():int;
function get existLevels():Array;
function get attack():int;
function get moveType():int;
function get HP():int;
function get asset():String;
function get name():String;
function createAsset():MovieClip;
function get attackRange():int;
function get moveSpeed():int;
function get water():int;
}
}//package com.burstyx.bigtree.core
Section 38
//Joint (com.burstyx.bigtree.core.Joint)
package com.burstyx.bigtree.core {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import flash.geom.*;
import com.redwave.util.*;
import flash.filters.*;
public class Joint implements Selectable {
private var inner:MovieClip;
private var selected:Boolean;// = false
private var attachment:Branch;
private var asset:MovieClip;
private var visible:Boolean;// = false
private var owner:Branch;
public function Joint(_arg1:Branch, _arg2:MovieClip){
this.owner = _arg1;
this.asset = _arg2;
}
public function getX():Number{
return (asset.x);
}
public function getY():Number{
return (asset.y);
}
public function getOwner():Branch{
return (owner);
}
public function removeAttachment():void{
if (attachment){
asset.removeChild(attachment.getAsset());
if (SelectionManager.ins.getSelectionBranch() == attachment){
SelectionManager.ins.setSelection(this);
};
attachment = null;
};
}
public function setSelected(_arg1:Boolean):void{
selected = _arg1;
if (asset){
if (_arg1){
inner.alpha = 1;
inner.filters = [new GlowFilter(0xFFFFFF, 0.9, 4, 4, 4, 2)];
} else {
inner.alpha = 0;
inner.filters = [];
};
};
}
private function __assetOver(_arg1:MouseEvent):void{
if (((isTargetSelf(_arg1)) && (!(hasAttachment())))){
setVisible(true);
};
}
protected function isTargetSelf(_arg1:MouseEvent):Boolean{
var _local2:DisplayObject = (_arg1.target as DisplayObject);
if (isSubHotAsset(_local2, false)){
return (false);
};
return (true);
}
private function __assetDown(_arg1:MouseEvent):void{
if (isTargetSelf(_arg1)){
if (attachment){
return;
};
SelectionManager.ins.setSelection(this);
};
}
public function grow(_arg1:Branch):void{
if ((((owner.getJointCount() < 2)) && ((_arg1.getJointCount() > 0)))){
throw (new Error("This joint can't grow brach with joint > 0"));
};
if (attachment){
throw (new Error(("This joint already has an attchment : " + attachment)));
};
attachment = _arg1;
asset.addChild(_arg1.getAsset());
if (SelectionManager.ins.getSelectionJoint() == this){
SelectionManager.ins.setSelection(_arg1);
};
}
public function getAttackment():Branch{
return (attachment);
}
public function hasAttachment():Boolean{
return (!((null == attachment)));
}
private function __assetOut(_arg1:MouseEvent):void{
}
public function setAsset(_arg1:MovieClip):void{
if (asset){
asset.removeEventListener(MouseEvent.ROLL_OVER, __assetOver);
asset.removeEventListener(MouseEvent.MOUSE_DOWN, __assetDown);
asset.removeEventListener(MouseEvent.ROLL_OUT, __assetOut);
if (attachment){
asset.removeChild(attachment.getAsset());
};
};
asset = _arg1;
asset.addEventListener(MouseEvent.ROLL_OVER, __assetOver);
asset.addEventListener(MouseEvent.MOUSE_DOWN, __assetDown);
asset.addEventListener(MouseEvent.ROLL_OUT, __assetOut);
inner = ChildFetcher.fetchC(asset, "inner");
asset.mouseEnabled = false;
if (attachment){
asset.addChild(attachment.getAsset());
};
setVisible(visible);
setSelected(selected);
}
public function canGrowLimb():Boolean{
if (attachment){
return (false);
};
return ((owner.getJointCount() > 1));
}
public function getInformation():StuffInformation{
return (new StuffInformation(-1, Loc.s("Joint.getInformation1"), Loc.s("Joint.getInformation2")));
}
public function setVisible(_arg1:Boolean):void{
visible = _arg1;
if (asset){
if (_arg1){
inner.alpha = 1;
} else {
if (!selected){
inner.alpha = 0;
};
};
};
}
function isSubHotAsset(_arg1:DisplayObject, _arg2:Boolean):Boolean{
if (_arg2){
if (_arg1 == inner){
return (true);
};
};
if (asset.contains(_arg1)){
if (attachment){
return (attachment.isSubHotAsset(_arg1, true));
};
};
return (false);
}
public function getGlobalPos():Point{
var _local1:Point = new Point();
return (asset.localToGlobal(_local1));
}
public function canGrowWeapon():Boolean{
if (attachment){
return (false);
};
return (true);
}
}
}//package com.burstyx.bigtree.core
Section 39
//Limb (com.burstyx.bigtree.core.Limb)
package com.burstyx.bigtree.core {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.ui.*;
import com.redwave.util.*;
public class Limb extends Branch {
private var dragDisAngle:Number;// = 0
private var heading:Number;
private var param:LimbParam;
private var dragging:Boolean;// = false
private var rotateExtent:Number;// = 0.523598775598299
private var middleHeading:Number;// = 0.785398163397448
private var stage:Stage;
private var direction:int;
public static const RIGHT:int = 1;
public static const LEFT:int = -1;
public function Limb(_arg1:Joint, _arg2:LimbParam, _arg3:int){
super(_arg1, createLimbAsset(_arg2, _arg3));
this.param = _arg2;
direction = _arg3;
rotateExtent = ((_arg2.rotateRange / 180) * Math.PI);
middleHeading = ((_arg2.defaultAngle / 180) * Math.PI);
middleHeading = (middleHeading * _arg3);
heading = middleHeading;
asset.rotation = ((heading / Math.PI) * 180);
if (((!(isLeft())) && (!(isRight())))){
throw (new Error("Limb dir illegal!"));
};
}
override protected function getTrigger():InteractiveObject{
return (shape);
}
public function isLeft():Boolean{
return ((direction == LEFT));
}
public function isRight():Boolean{
return ((direction == RIGHT));
}
private function __thumMove(_arg1:MouseEvent):void{
var _local2:Number = asset.parent.mouseX;
var _local3:Number = asset.parent.mouseY;
var _local4:Number = Math.atan2(_local3, _local2);
heading = ((_local4 + (Math.PI / 2)) + dragDisAngle);
var _local5:Number = MathUtils.standardAngle((heading - middleHeading));
if (_local5 > rotateExtent){
heading = (middleHeading + rotateExtent);
} else {
if (_local5 < -(rotateExtent)){
heading = (middleHeading - rotateExtent);
};
};
asset.rotation = ((heading / Math.PI) * 180);
}
private function createLimbAsset(_arg1:LimbParam, _arg2:int):MovieClip{
if (_arg2 == LEFT){
return (_arg1.createLeftAsset());
};
return (_arg1.createRightAsset());
}
private function __thumUp(_arg1:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, __thumMove);
stage.removeEventListener(MouseEvent.MOUSE_UP, __thumUp);
dragging = false;
stage = null;
}
override protected function doGrowJoint():void{
super.doGrowJoint();
rebindListener();
}
override protected function getTriggerTarget():InteractiveObject{
return (shape);
}
override public function getInformation():StuffInformation{
return (new StuffInformation((canLevelUp()) ? levelUpCost() : -1, ((Loc.s("Limb.getInformation1") + level) + Loc.s("Limb.getInformation2")), Loc.s("Limb.getInformation3")));
}
override protected function assetDown(_arg1:MouseEvent):void{
super.assetDown(_arg1);
stage = asset.stage;
stage.addEventListener(MouseEvent.MOUSE_MOVE, __thumMove);
stage.addEventListener(MouseEvent.MOUSE_UP, __thumUp);
dragging = true;
var _local2:Number = asset.parent.mouseX;
var _local3:Number = asset.parent.mouseY;
var _local4:Number = MathUtils.standardAngle((Math.atan2(_local3, _local2) + (Math.PI / 2)));
dragDisAngle = MathUtils.standardAngle((heading - _local4));
}
override public function levelUpCost():int{
var _local1:Array = param.gradePrices;
var _local2:int = (level + 1);
var _local3:int = (_local2 - 1);
if (_local3 < _local1.length){
return (_local1[_local3]);
};
trace(("Limb price array is not enough for level: " + _local2));
return (0);
}
}
}//package com.burstyx.bigtree.core
Section 40
//LimbParam (com.burstyx.bigtree.core.LimbParam)
package com.burstyx.bigtree.core {
import flash.display.*;
public interface LimbParam {
function createRightAsset():MovieClip;
function get gradePrices():Array;
function get defaultAngle():int;
function get rightAsset():String;
function get leftAsset():String;
function get rotateRange():int;
function createLeftAsset():MovieClip;
}
}//package com.burstyx.bigtree.core
Section 41
//MoveType (com.burstyx.bigtree.core.MoveType)
package com.burstyx.bigtree.core {
public class MoveType {
public static const BOSS:int = 4;
public static const CIRCLE:int = 1;
public static const ANGLE:int = 3;
public static const LINE:int = 0;
public static const SIN:int = 2;
public static function get LABELS():Array{
return (["直线", "绕圈", "S型", "<型", "BOSS"]);
}
}
}//package com.burstyx.bigtree.core
Section 42
//SceneParam (com.burstyx.bigtree.core.SceneParam)
package com.burstyx.bigtree.core {
public interface SceneParam {
function get name():String;
function get insectList():InsectListParam;
function get trunkParam():TrunkParam;
function get limbParam():LimbParam;
function get holeList():HoleListParam;
}
}//package com.burstyx.bigtree.core
Section 43
//Trunk (com.burstyx.bigtree.core.Trunk)
package com.burstyx.bigtree.core {
import flash.display.*;
import com.burstyx.bigtree.ui.*;
import com.redwave.util.*;
public class Trunk extends Branch {
private var eventer:EventGenerator;
private var param:TrunkParam;
private var health:int;
public function Trunk(_arg1:TrunkParam){
super(null, _arg1.createAsset());
this.param = _arg1;
eventer = new EventGenerator();
health = getHPTotal();
}
public function destroy():void{
DisplayUtils.stopAllMC(asset);
}
override protected function getTrigger():InteractiveObject{
return (shape);
}
public function addToSceneHolder(_arg1:DisplayObjectContainer):void{
_arg1.addChild(asset);
}
public function addOnHPChanged(_arg1:Function, _arg2:Boolean=false):void{
eventer.addListener("hpChanged", _arg1);
if (_arg2){
dispatchHPChanged();
};
}
public function modifyHealth(_arg1:int):int{
if (_arg1 != 0){
health = (health + _arg1);
health = MathUtils.minMax(health, 0, getHPTotal());
dispatchHPChanged();
};
return (health);
}
public function getHPTotal():int{
return (param.hps[(getLevel() - 1)]);
}
public function removeOnHPChanged(_arg1:Function):void{
eventer.removeListener("hpChanged", _arg1);
}
override public function isTrunk():Boolean{
return (true);
}
override protected function getTriggerTarget():InteractiveObject{
return (shape);
}
override protected function doGrowJoint():void{
super.doGrowJoint();
rebindListener();
}
private function dispatchHPChanged():void{
eventer.dispatchEvent("hpChanged", [health, getHPTotal()]);
}
override public function getInformation():StuffInformation{
return (new StuffInformation((canLevelUp()) ? levelUpCost() : -1, ((Loc.s("Trunk.getInformation1") + level) + Loc.s("Trunk.getInformation2")), Loc.s("Trunk.getInformation3")));
}
public function getHealth():int{
return (health);
}
override public function levelUpCost():int{
var _local1:Array = param.gradePrices;
var _local2:int = (level + 1);
var _local3:int = (_local2 - 1);
if (_local3 < _local1.length){
return (_local1[_local3]);
};
trace(("Trunk price array is not enough for level: " + _local2));
return (0);
}
override public function levelUp():Boolean{
var _local1:int = getLevel();
var _local2:Boolean = super.levelUp();
if (_local1 != getLevel()){
modifyHealth((getHPTotal() - getHealth()));
};
return (_local2);
}
}
}//package com.burstyx.bigtree.core
Section 44
//TrunkParam (com.burstyx.bigtree.core.TrunkParam)
package com.burstyx.bigtree.core {
import flash.display.*;
public interface TrunkParam {
function get asset():String;
function get gradePrices():Array;
function get audioEventList():AudioEventListParam;
function get initialWater():int;
function createAsset():MovieClip;
function get bgMusic():String;
function get bgSound():String;
function get hps():Array;
}
}//package com.burstyx.bigtree.core
Section 45
//Weapon (com.burstyx.bigtree.core.Weapon)
package com.burstyx.bigtree.core {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.ui.*;
import flash.geom.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.*;
import com.burstyx.bigtree.logic.*;
public class Weapon extends Branch {
protected var heading:Number;
protected var param:WeaponParam;
protected var selected:Boolean;// = false
protected var controller:WeaponController;
protected var attackAnimationFrames:int;// = 1
protected var mcNormal:MovieClip;
protected var trigger:Sprite;
protected var mcAttack:MovieClip;
public function Weapon(_arg1:Joint, _arg2:WeaponParam){
super(_arg1, getWeaponHolder(_arg2));
setHeading(0);
createWeaponAssets();
playBuild();
}
public function setHeading(_arg1:Number):void{
heading = _arg1;
asset.rotation = ((heading / Math.PI) * 180);
}
public function destroy():void{
if (controller){
controller.destroy();
};
DisplayUtils.stopAllMC(asset);
}
override public function levelUp():Boolean{
if (level < (param.getLevelCount() - 1)){
level = (level + 1);
createWeaponAssets();
setSelected(selected);
playUpgrade();
return (true);
};
return (false);
}
override protected function isTargetSelf(_arg1:MouseEvent):Boolean{
return ((_arg1.target == trigger));
}
private function playUpgrade():void{
new Bomb(StuffAssetsManager.ins.reflect("WeaponUpgradeMC"), asset);
}
override protected function getTrigger():InteractiveObject{
return (trigger);
}
public function playNormal():void{
mcAttack.stop();
mcAttack.visible = false;
mcNormal.visible = true;
mcNormal.play();
}
public function getHeading():Number{
return (heading);
}
override public function levelUpCost():int{
var _local1:WeaponLvParam;
if (level < (param.getLevelCount() - 1)){
_local1 = param.getLevelParam((level + 1));
return (_local1.price);
};
return (0);
}
public function countSellPrice():int{
var _local1:int;
var _local2:int;
while (_local2 <= level) {
_local1 = (_local1 + param.getLevelParam(_local2).price);
_local2++;
};
_local1 = Math.floor((_local1 * 0.5));
return (_local1);
}
public function getController():WeaponController{
return (controller);
}
private function initWeapon():void{
level = 0;
trigger = new Sprite();
trigger.graphics.beginFill(0xFF0000, 0);
trigger.graphics.drawCircle(0, 0, 20);
trigger.graphics.endFill();
asset.addChild(trigger);
asset.mouseEnabled = false;
}
public function createBomb():MovieClip{
return (param.getLevelParam(level).createBombAsset());
}
public function getParam():WeaponParam{
return (param);
}
private function playBuild():void{
new Bomb(StuffAssetsManager.ins.reflect("WeaponBuildMC"), asset);
}
override public function setSelected(_arg1:Boolean):void{
asset.graphics.clear();
selected = _arg1;
if (_arg1){
asset.graphics.lineStyle(0, 0xFF0000, 0.5);
asset.graphics.beginFill(0xFF0000, 0.1);
asset.graphics.drawCircle(0, 0, getLvParam().attackRange);
asset.graphics.endFill();
};
}
public function setController(_arg1:WeaponController):void{
controller = _arg1;
}
public function playAttack():void{
mcAttack.play();
mcAttack.visible = true;
mcNormal.visible = false;
mcNormal.stop();
}
protected function getWeaponHolder(_arg1:WeaponParam):MovieClip{
this.param = _arg1;
if (null == asset){
asset = new MovieClip();
asset.mouseEnabled = false;
initWeapon();
};
return (asset);
}
override public function canLevelUp():Boolean{
return ((level < (param.getLevelCount() - 1)));
}
override protected function isLeaf():Boolean{
return (true);
}
public function getGlobalHeading():Number{
var _local1:Point = new Point(0, 0);
_local1 = asset.localToGlobal(_local1);
var _local2:Point = new Point(1000, 0);
_local2 = asset.localToGlobal(_local2);
return (Math.atan2((_local2.y - _local1.y), (_local2.x - _local1.x)));
}
private function createWeaponAssets():void{
if (mcNormal){
asset.removeChild(mcNormal);
DisplayUtils.stopAllMC(mcNormal);
};
if (mcAttack){
asset.removeChild(mcAttack);
DisplayUtils.stopAllMC(mcAttack);
};
var _local1:WeaponLvParam = param.getLevelParam(level);
mcNormal = _local1.createAsset();
mcNormal.stop();
mcNormal.mouseChildren = (mcNormal.mouseEnabled = false);
mcAttack = _local1.createAttackAsset();
mcAttack.gotoAndStop(1);
mcAttack.mouseChildren = (mcAttack.mouseEnabled = false);
asset.addChild(mcNormal);
asset.addChild(mcAttack);
attackAnimationFrames = mcAttack.totalFrames;
}
public function playAttackRepare(_arg1:Boolean=true):void{
if (_arg1){
mcAttack.gotoAndStop(1);
};
mcAttack.visible = true;
mcNormal.visible = false;
mcNormal.stop();
}
public function getLvParam():WeaponLvParam{
return (param.getLevelParam(level));
}
public function getAttackSubAsset(_arg1:String):DisplayObject{
return (DisplayUtils.getC(mcAttack, _arg1));
}
override protected function getTriggerTarget():InteractiveObject{
return (trigger);
}
override public function getInformation():StuffInformation{
var _local1:WeaponLvParam = getLvParam();
var _local2:int = getLevel();
var _local3:int = (Game.instance.getEquipsManager().getWeaponValidLevel(getParam().number) - 1);
var _local4:int;
if (_local2 < _local3){
_local4 = levelUpCost();
};
var _local5:StuffInformation = new StuffInformation(_local4, param.name, (((Loc.s("Weapon.getInformation1") + (getLevel() + 1)) + Loc.s("Weapon.getInformation2")) + param.intro), _local1.attack, _local1.splashRange, _local1.attackRate, _local1.attackRange, (_local1.attackEffect == AttackEffect.SLOWER));
return (_local5);
}
public function getAttackAnimationFrames():int{
return (attackAnimationFrames);
}
}
}//package com.burstyx.bigtree.core
Section 46
//WeaponListParam (com.burstyx.bigtree.core.WeaponListParam)
package com.burstyx.bigtree.core {
public interface WeaponListParam {
function getWeapons():Array;
}
}//package com.burstyx.bigtree.core
Section 47
//WeaponLvParam (com.burstyx.bigtree.core.WeaponLvParam)
package com.burstyx.bigtree.core {
import flash.display.*;
public interface WeaponLvParam {
function get asset():String;
function get price():int;
function createBombAsset():MovieClip;
function createAsset():MovieClip;
function get attackRange():int;
function get splashRange():int;
function get attackRate():int;
function get attackEffect():int;
function createAttackAsset():MovieClip;
function get attack():int;
}
}//package com.burstyx.bigtree.core
Section 48
//WeaponParam (com.burstyx.bigtree.core.WeaponParam)
package com.burstyx.bigtree.core {
import flash.display.*;
import com.redwave.media.*;
public interface WeaponParam {
function getLevelCount():int;
function playAttackSound(_arg1:int=0, _arg2:int=0):SoundLoop;
function get number():int;
function get name():String;
function get intro():String;
function createAssetIcon():DisplayObject;
function getLevelParam(_arg1:int):WeaponLvParam;
}
}//package com.burstyx.bigtree.core
Section 49
//AudioEventListProperties (com.burstyx.bigtree.editor.data.AudioEventListProperties)
package com.burstyx.bigtree.editor.data {
import com.burstyx.bigtree.core.*;
public class AudioEventListProperties extends PropertiesBase implements AudioEventListParam {
private var listPros:Array;
private var listObjects:Array;
public static const LENGTH:int = 6;
public function AudioEventListProperties(){
super("audioEvents");
}
private function initList():void{
var _local2:Object;
listObjects = getValue("list", []);
listPros = [];
var _local1:int;
while (_local1 < LENGTH) {
_local2 = listObjects[_local1];
if (null == _local2){
_local2 = {};
listObjects[_local1] = _local2;
};
listPros.push(new AudioEventProperties(_local2));
_local1++;
};
setValue("list", listObjects);
}
override public function inData(_arg1:Object, _arg2=null):void{
super.inData(_arg1, _arg2);
initList();
}
public function getEvents():Array{
return (listPros.concat());
}
}
}//package com.burstyx.bigtree.editor.data
Section 50
//AudioEventProperties (com.burstyx.bigtree.editor.data.AudioEventProperties)
package com.burstyx.bigtree.editor.data {
import flash.display.*;
import com.burstyx.bigtree.core.*;
import com.burstyx.bigtree.editor.*;
public class AudioEventProperties extends PropertiesBase implements AudioEventParam {
public function AudioEventProperties(_arg1:Object){
super(null);
this.data = _arg1;
}
public function getData():Object{
return (data);
}
public function get movie():String{
return (getString("movie"));
}
override public function inData(_arg1:Object, _arg2=null):void{
throw (new Error("Please use constructor!"));
}
override public function outData(_arg1:Object):void{
throw (new Error("Please use #getData()"));
}
public function createMovie():MovieClip{
return (StuffAssetsManager.soundIns.reflect(movie));
}
public function get time():Number{
return (getInt("time"));
}
}
}//package com.burstyx.bigtree.editor.data
Section 51
//HoleListProperties (com.burstyx.bigtree.editor.data.HoleListProperties)
package com.burstyx.bigtree.editor.data {
import flash.display.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class HoleListProperties extends PropertiesBase implements HoleListParam {
private var listPros:Array;
private var listObjects:Array;
public function HoleListProperties(){
super("holes");
}
public function addHole():HoleProperties{
var _local1:Object = {};
var _local2:HoleProperties = new HoleProperties(_local1);
listPros.push(_local2);
listObjects.push(_local1);
return (_local2);
}
public function removeHole(_arg1:HoleProperties):void{
var _local2:int = ArrayUtils.removeFromArray(listPros, _arg1);
if (_local2 >= 0){
listObjects.splice(_local2, 1);
};
}
private function initList():void{
var _local1:Object;
listObjects = getValue("list", []);
listPros = [];
for each (_local1 in listObjects) {
listPros.push(new HoleProperties(_local1));
};
setValue("list", listObjects);
}
override public function inData(_arg1:Object, _arg2=null):void{
super.inData(_arg1, _arg2);
initList();
}
public function get asset():String{
return (getString("asset"));
}
public function getHoles():Array{
return (listPros.concat());
}
public function createAsset():MovieClip{
return (reflect(asset));
}
}
}//package com.burstyx.bigtree.editor.data
Section 52
//HoleProperties (com.burstyx.bigtree.editor.data.HoleProperties)
package com.burstyx.bigtree.editor.data {
import flash.display.*;
import com.burstyx.bigtree.core.*;
public class HoleProperties extends PropertiesBase implements HoleParam {
public function HoleProperties(_arg1:Object){
super(null);
this.data = _arg1;
}
public function get y():int{
return (getInt("y"));
}
public function get duplicate():int{
return (getInt("duplicate"));
}
public function get time():int{
return (getInt("time"));
}
public function get order():int{
return (getInt("order"));
}
public function createAsset():MovieClip{
if (infinity){
return (reflect((asset + "_i")));
};
return (reflect(asset));
}
public function get amount():int{
return (getInt("amount"));
}
public function get grade():int{
return (getInt("grade"));
}
override public function outData(_arg1:Object):void{
throw (new Error("Please use #getData()"));
}
public function getData():Object{
return (data);
}
public function get isRecover():Boolean{
return (getBoolean("isRecover"));
}
public function get infinity():Boolean{
return (getBoolean("infinity"));
}
public function get isMatrix():Boolean{
return (getBoolean("isMatrix"));
}
override public function inData(_arg1:Object, _arg2=null):void{
throw (new Error("Please use constructor!"));
}
public function get asset():String{
return (getString("asset"));
}
public function get x():int{
return (getInt("x"));
}
}
}//package com.burstyx.bigtree.editor.data
Section 53
//InsectListProperties (com.burstyx.bigtree.editor.data.InsectListProperties)
package com.burstyx.bigtree.editor.data {
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class InsectListProperties extends PropertiesBase implements InsectListParam {
private var listPros:Array;
private var listObjects:Array;
public function InsectListProperties(){
super("insects");
}
public function getInsects():Array{
return (listPros.concat());
}
public function addInsect():InsectProperties{
var _local1:Object = {};
var _local2:InsectProperties = new InsectProperties(_local1);
listPros.push(_local2);
listObjects.push(_local1);
return (_local2);
}
public function removeInsect(_arg1:InsectProperties):void{
var _local2:int = ArrayUtils.removeFromArray(listPros, _arg1);
if (_local2 >= 0){
listObjects.splice(_local2, 1);
};
}
private function initList():void{
var _local1:Object;
listObjects = getValue("list", []);
listPros = [];
for each (_local1 in listObjects) {
listPros.push(new InsectProperties(_local1));
};
setValue("list", listObjects);
}
override public function inData(_arg1:Object, _arg2=null):void{
super.inData(_arg1, _arg2);
initList();
}
}
}//package com.burstyx.bigtree.editor.data
Section 54
//InsectProperties (com.burstyx.bigtree.editor.data.InsectProperties)
package com.burstyx.bigtree.editor.data {
import flash.display.*;
import com.burstyx.bigtree.core.*;
public class InsectProperties extends PropertiesBase implements InsectParam {
public function InsectProperties(_arg1:Object){
super(null);
this.data = _arg1;
}
public function get HP():int{
return (getInt("HP"));
}
public function get existLevels():Array{
return (getValue("existLevels", []));
}
public function get number():int{
return (getInt("number"));
}
public function get attack():int{
return (getInt("attack"));
}
public function get name():String{
return (getString("name"));
}
public function createAsset():MovieClip{
return (reflect(asset));
}
public function get attackRange():int{
return (getInt("attackRange"));
}
override public function outData(_arg1:Object):void{
throw (new Error("Please use #getData()"));
}
public function get water():int{
return (getInt("water"));
}
public function getData():Object{
return (data);
}
public function get moveType():int{
return (getInt("moveType"));
}
override public function inData(_arg1:Object, _arg2=null):void{
throw (new Error("Please use constructor!"));
}
public function get attackRate():int{
return (getInt("attackRate"));
}
public function get asset():String{
return (getString("asset"));
}
public function get moveSpeed():int{
return (getInt("moveSpeed"));
}
}
}//package com.burstyx.bigtree.editor.data
Section 55
//LimbProperties (com.burstyx.bigtree.editor.data.LimbProperties)
package com.burstyx.bigtree.editor.data {
import flash.display.*;
import com.burstyx.bigtree.core.*;
public class LimbProperties extends PropertiesBase implements LimbParam {
public function LimbProperties(){
super("limb");
}
public function get gradePrices():Array{
return (getValue("gradePrices"));
}
public function get leftAsset():String{
return (getString("leftAsset"));
}
public function createLeftAsset():MovieClip{
return (reflect(leftAsset));
}
public function get rotateRange():int{
return (getInt("rotateRange"));
}
public function get defaultAngle():int{
return (getInt("defaultAngle"));
}
public function createRightAsset():MovieClip{
return (reflect(rightAsset));
}
public function get rightAsset():String{
return (getString("rightAsset"));
}
}
}//package com.burstyx.bigtree.editor.data
Section 56
//MainSoundsProperties (com.burstyx.bigtree.editor.data.MainSoundsProperties)
package com.burstyx.bigtree.editor.data {
import com.redwave.media.*;
import com.adobe.serialization.json.*;
public class MainSoundsProperties extends PropertiesBase {
private static var _ins:MainSoundsProperties;
public function MainSoundsProperties(_arg1:String){
super("mainSounds");
}
public function get weaponUpgrade():String{
return (getString("weaponUpgrade"));
}
public function get holeBreaking():String{
return (getString("holeBreaking"));
}
public function get insectOut():String{
return (getString("insectOut"));
}
public function get deathWarning():String{
return (getString("deathWarning"));
}
public function get limbUpgrade():String{
return (getString("limbUpgrade"));
}
public function decode(_arg1:String):void{
data = JSON.decode(_arg1);
}
public function get insectEated():String{
return (getString("insectEated"));
}
public function get weaponSold():String{
return (getString("weaponSold"));
}
public function get weaponBuild():String{
return (getString("weaponBuild"));
}
public function encode():String{
return (JSON.encode(data));
}
public function get insectDie():String{
return (getString("insectDie"));
}
public function playSound(_arg1:String, _arg2:int=0, _arg3:int=0):SoundLoop{
return (SoundPool.playSectionLoop(_arg1, _arg2, _arg3));
}
public static function getNames():Array{
return (["holeBreaking", "insectOut", "deathWarning", "limbUpgrade", "weaponBuild", "weaponUpgrade", "weaponSold", "insectDie", "insectEated"]);
}
public static function getLabels():Array{
return (["虫洞破开[循环]", "出虫音效", "死亡警报[循环]", "枝干升级", "建造武器", "升级武器", "卖掉武器", "虫子死亡", "虫子吃饱飞走"]);
}
public static function get ins():MainSoundsProperties{
if (null == _ins){
_ins = new MainSoundsProperties("");
};
return (_ins);
}
}
}//package com.burstyx.bigtree.editor.data
Section 57
//Properties (com.burstyx.bigtree.editor.data.Properties)
package com.burstyx.bigtree.editor.data {
public interface Properties {
function outData(_arg1:Object):void;
function getValue(_arg1:String, _arg2=null);
function setValue(_arg1:String, _arg2):void;
function inData(_arg1:Object, _arg2=null):void;
}
}//package com.burstyx.bigtree.editor.data
Section 58
//PropertiesBase (com.burstyx.bigtree.editor.data.PropertiesBase)
package com.burstyx.bigtree.editor.data {
import com.burstyx.bigtree.editor.*;
import com.adobe.serialization.json.*;
public class PropertiesBase implements Properties {
protected var data:Object;
private var name:String;
public function PropertiesBase(_arg1:String){
this.name = _arg1;
data = {};
}
public function getString(_arg1:String, _arg2:String=""):String{
if (data[_arg1] == null){
return (_arg2);
};
return (data[_arg1]);
}
public function toString():String{
return (((name + " -> ") + JSON.encode(data)));
}
public function inData(_arg1:Object, _arg2=null):void{
if (null == _arg1[name]){
_arg1[name] = _arg2;
};
data = _arg1[name];
}
public function getBoolean(_arg1:String, _arg2:Boolean=false):Boolean{
if (data[_arg1] == null){
return (_arg2);
};
return ((data[_arg1] == true));
}
public function outData(_arg1:Object):void{
_arg1[name] = data;
}
public function getInt(_arg1:String, _arg2:int=0):int{
if (data[_arg1] == null){
return (_arg2);
};
return (data[_arg1]);
}
public function getValue(_arg1:String, _arg2=null){
if (data[_arg1] == null){
return (_arg2);
};
return (data[_arg1]);
}
public function reflect(_arg1:String){
return (StuffAssetsManager.ins.reflect(_arg1));
}
public function setValue(_arg1:String, _arg2):void{
data[_arg1] = _arg2;
}
public function getNumber(_arg1:String, _arg2:Number=0):Number{
if (data[_arg1] == null){
return (_arg2);
};
return (data[_arg1]);
}
}
}//package com.burstyx.bigtree.editor.data
Section 59
//SceneProperties (com.burstyx.bigtree.editor.data.SceneProperties)
package com.burstyx.bigtree.editor.data {
import com.burstyx.bigtree.core.*;
import com.adobe.serialization.json.*;
public class SceneProperties implements SceneParam {
private var properties:Array;
public var insects:InsectListProperties;
public var limb:LimbProperties;
private var json:Object;
public var trunk:TrunkProperties;
public var holes:HoleListProperties;
public function SceneProperties(){
json = {};
trunk = new TrunkProperties();
limb = new LimbProperties();
insects = new InsectListProperties();
holes = new HoleListProperties();
properties = [trunk, limb, insects, holes];
}
public function get trunkParam():TrunkParam{
return (trunk);
}
public function get name():String{
return (json.name);
}
public function set name(_arg1:String):void{
json.name = _arg1;
}
public function get limbParam():LimbParam{
return (limb);
}
public function encode():String{
var _local1:Properties;
for each (_local1 in properties) {
_local1.outData(json);
};
return (JSON.encode(json));
}
public function decode(_arg1:String):void{
var _local2:Properties;
json = JSON.decode(_arg1);
for each (_local2 in properties) {
_local2.inData(json, {});
};
}
public function get insectList():InsectListParam{
return (insects);
}
public function get holeList():HoleListParam{
return (holes);
}
}
}//package com.burstyx.bigtree.editor.data
Section 60
//TrunkProperties (com.burstyx.bigtree.editor.data.TrunkProperties)
package com.burstyx.bigtree.editor.data {
import flash.display.*;
import com.burstyx.bigtree.core.*;
public class TrunkProperties extends PropertiesBase implements TrunkParam {
private var audioEvents:AudioEventListProperties;
public function TrunkProperties(){
super("trunk");
audioEvents = new AudioEventListProperties();
}
public function get bgMusic():String{
return (getString("bgMusic"));
}
public function get initialWater():int{
return (getInt("initialWater"));
}
public function get gradePrices():Array{
return (getValue("gradePrices"));
}
public function get audioEventList():AudioEventListParam{
return (audioEvents);
}
public function get bgSound():String{
return (getString("bgSound"));
}
public function get asset():String{
return (getString("asset"));
}
public function get hps():Array{
return (getValue("hps"));
}
public function createAsset():MovieClip{
return (reflect(asset));
}
override public function inData(_arg1:Object, _arg2=null):void{
super.inData(_arg1, _arg2);
audioEvents.inData(data, {});
}
public function getAudioEventList():AudioEventListProperties{
return (audioEvents);
}
override public function outData(_arg1:Object):void{
audioEvents.outData(data);
super.outData(_arg1);
}
}
}//package com.burstyx.bigtree.editor.data
Section 61
//WeaponListProperties (com.burstyx.bigtree.editor.data.WeaponListProperties)
package com.burstyx.bigtree.editor.data {
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.adobe.serialization.json.*;
public class WeaponListProperties extends PropertiesBase implements WeaponListParam {
private var listPros:Array;
private var listObjects:Array;
private static var _ins:WeaponListProperties;
public function WeaponListProperties(){
super("weapons");
}
private function __compareID(_arg1:WeaponParam, _arg2:WeaponParam):int{
if (_arg1.number > _arg2.number){
return (1);
};
return (-1);
}
public function encode():String{
return (JSON.encode(data));
}
public function removeWeapon(_arg1:WeaponProperties):void{
var _local2:int = ArrayUtils.removeFromArray(listPros, _arg1);
if (_local2 >= 0){
listObjects.splice(_local2, 1);
};
}
public function getWeapons():Array{
var _local1:Array = listPros.concat();
_local1.sort(__compareID);
return (_local1);
}
public function decode(_arg1:String):void{
data = JSON.decode(_arg1);
initList();
}
private function initList():void{
var _local1:Object;
listObjects = getValue("list", []);
listPros = [];
for each (_local1 in listObjects) {
listPros.push(new WeaponProperties(_local1));
};
setValue("list", listObjects);
}
public function addWeapon():WeaponProperties{
var _local1:Object = {};
var _local2:WeaponProperties = new WeaponProperties(_local1);
listPros.push(_local2);
listObjects.push(_local1);
return (_local2);
}
public static function get ins():WeaponListProperties{
if (null == _ins){
_ins = new (WeaponListProperties);
};
return (_ins);
}
}
}//package com.burstyx.bigtree.editor.data
Section 62
//WeaponLvProperties (com.burstyx.bigtree.editor.data.WeaponLvProperties)
package com.burstyx.bigtree.editor.data {
import flash.display.*;
import com.burstyx.bigtree.core.*;
public class WeaponLvProperties extends PropertiesBase implements WeaponLvParam {
public function WeaponLvProperties(_arg1:Object){
super(null);
this.data = _arg1;
}
public function get attackEffect():int{
return (getInt("attackEffect"));
}
public function get price():int{
return (getInt("price"));
}
public function get name():String{
return (getString("name"));
}
public function get attack():int{
return (getInt("attack"));
}
public function createBombAsset():MovieClip{
return (reflect((asset + "_b")));
}
public function createAsset():MovieClip{
return (reflect(asset));
}
override public function outData(_arg1:Object):void{
throw (new Error("Please use #getData()"));
}
public function get attackRange():int{
return (getInt("attackRange"));
}
public function get splashRange():int{
return (getInt("splashRange"));
}
public function getData():Object{
return (data);
}
public function get attackRate():int{
return (getInt("attackRate"));
}
override public function inData(_arg1:Object, _arg2=null):void{
throw (new Error("Please use constructor!"));
}
public function get asset():String{
return (getString("asset"));
}
public function createAttackAsset():MovieClip{
return (reflect((asset + "_a")));
}
public static function get assetExts():Array{
return (["_a", "_b"]);
}
}
}//package com.burstyx.bigtree.editor.data
Section 63
//WeaponProperties (com.burstyx.bigtree.editor.data.WeaponProperties)
package com.burstyx.bigtree.editor.data {
import flash.display.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.redwave.media.*;
public class WeaponProperties extends PropertiesBase implements WeaponParam {
private var lvs:Array;
private var lvsObjects:Array;
public function WeaponProperties(_arg1:Object){
super(null);
this.data = _arg1;
initLevels();
}
public function setLevelCount(_arg1:int):void{
var _local2:Object;
if (_arg1 < 0){
_arg1 = 0;
};
if (_arg1 > lvs.length){
while (lvs.length < _arg1) {
_local2 = {};
lvsObjects.push(_local2);
lvs.push(new WeaponLvProperties(_local2));
};
} else {
if (_arg1 < lvs.length){
while (lvs.length > _arg1) {
lvs.pop();
lvsObjects.pop();
};
};
};
setValue("lvs", lvsObjects);
}
public function get sound():String{
return (getString("sound"));
}
public function get assetIcon():String{
return (getString("assetIcon"));
}
public function playAttackSound(_arg1:int=0, _arg2:int=0):SoundLoop{
return (SoundPool.playSectionLoop(sound, _arg1, _arg2));
}
public function get number():int{
return (getInt("number"));
}
public function getLevelParam(_arg1:int):WeaponLvParam{
return (lvs[_arg1]);
}
public function getData():Object{
return (data);
}
public function getLevelCount():int{
return (lvs.length);
}
public function getLvProperties():Array{
return (lvs.concat());
}
public function get name():String{
return (getLangStr(getString("name")));
}
override public function outData(_arg1:Object):void{
throw (new Error("Please use #getData()"));
}
public function get intro():String{
return (getLangStr(getString("intro")));
}
private function getLangStr(_arg1:String):String{
var _local2:Array = _arg1.split("<zh>");
var _local3:String = _local2[0];
var _local4:String = _local2[1];
if (((((!((_local4 == null))) && (!((_local4 == ""))))) && (Loc.isChinesePlayer()))){
return (_local4);
};
return (_local3);
}
private function initLevels():void{
var _local2:Object;
var _local3:WeaponLvProperties;
lvs = [];
var _local1:Array = getValue("lvs", []);
for each (_local2 in _local1) {
_local3 = new WeaponLvProperties(_local2);
lvs.push(_local3);
};
lvsObjects = _local1;
setValue("lvs", lvsObjects);
}
public function getLevel0():WeaponLvProperties{
return (lvs[0]);
}
public function createAssetIcon():DisplayObject{
return (reflect(assetIcon));
}
override public function inData(_arg1:Object, _arg2=null):void{
throw (new Error("Please use constructor!"));
}
}
}//package com.burstyx.bigtree.editor.data
Section 64
//GameDataEmbed (com.burstyx.bigtree.editor.GameDataEmbed)
package com.burstyx.bigtree.editor {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.editor.data.*;
import flash.utils.*;
public class GameDataEmbed {
private var game:Game;
private var initHandler:Function;
private var loadedNumber:int;// = 2
private static var levelsAssets:Class = GameDataEmbed_levelsAssets;
private static var mediaAssets:Class = GameDataEmbed_mediaAssets;
private static var soundsAssets:Class = GameDataEmbed_soundsAssets;
private static var weaponsAssets:Class = GameDataEmbed_weaponsAssets;
private static var soundsProAssets:Class = GameDataEmbed_soundsProAssets;
public function GameDataEmbed(_arg1:Game, _arg2:Function){
this.game = _arg1;
this.initHandler = _arg2;
loadAll();
}
private function __loaded(_arg1:Boolean):void{
loadedNumber--;
if (loadedNumber == 0){
initHandler();
};
}
private function loadWeaponProperties():void{
var _local1:ByteArray = new weaponsAssets();
_local1.position = 0;
var _local2:String = _local1.readUTFBytes(_local1.bytesAvailable);
WeaponListProperties.ins.decode(_local2);
}
private function loadSoundProperties():void{
var _local1:ByteArray = new soundsProAssets();
_local1.position = 0;
var _local2:String = _local1.readUTFBytes(_local1.bytesAvailable);
MainSoundsProperties.ins.decode(_local2);
}
private function loadAll():void{
var _local1:ByteArray = new levelsAssets();
var _local2 = "";
_local1.position = 0;
_local2 = _local1.readUTFBytes(_local1.bytesAvailable);
SectionInfo.parseLevels(_local2);
StuffAssetsManager.ins.load(new mediaAssets(), __loaded);
StuffAssetsManager.soundIns.load(new soundsAssets(), __loaded);
loadWeaponProperties();
loadSoundProperties();
}
}
}//package com.burstyx.bigtree.editor
Section 65
//GameDataEmbed_levelsAssets (com.burstyx.bigtree.editor.GameDataEmbed_levelsAssets)
package com.burstyx.bigtree.editor {
import mx.core.*;
public class GameDataEmbed_levelsAssets extends ByteArrayAsset {
}
}//package com.burstyx.bigtree.editor
Section 66
//GameDataEmbed_mediaAssets (com.burstyx.bigtree.editor.GameDataEmbed_mediaAssets)
package com.burstyx.bigtree.editor {
import mx.core.*;
public class GameDataEmbed_mediaAssets extends ByteArrayAsset {
}
}//package com.burstyx.bigtree.editor
Section 67
//GameDataEmbed_soundsAssets (com.burstyx.bigtree.editor.GameDataEmbed_soundsAssets)
package com.burstyx.bigtree.editor {
import mx.core.*;
public class GameDataEmbed_soundsAssets extends ByteArrayAsset {
}
}//package com.burstyx.bigtree.editor
Section 68
//GameDataEmbed_soundsProAssets (com.burstyx.bigtree.editor.GameDataEmbed_soundsProAssets)
package com.burstyx.bigtree.editor {
import mx.core.*;
public class GameDataEmbed_soundsProAssets extends ByteArrayAsset {
}
}//package com.burstyx.bigtree.editor
Section 69
//GameDataEmbed_weaponsAssets (com.burstyx.bigtree.editor.GameDataEmbed_weaponsAssets)
package com.burstyx.bigtree.editor {
import mx.core.*;
public class GameDataEmbed_weaponsAssets extends ByteArrayAsset {
}
}//package com.burstyx.bigtree.editor
Section 70
//StuffAssetsManager (com.burstyx.bigtree.editor.StuffAssetsManager)
package com.burstyx.bigtree.editor {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import com.redwave.util.*;
import com.redwave.media.*;
import flash.utils.*;
public class StuffAssetsManager {
private var loader:Loader;
private var handler:Function;
private var domain:ApplicationDomain;
private static var _soundIns:StuffAssetsManager;
private static var _ins:StuffAssetsManager;
public function StuffAssetsManager(){
domain = new ApplicationDomain(ApplicationDomain.currentDomain);
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __loaded);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, __loadedError);
}
private function __loadedError(_arg1:IOErrorEvent):void{
if (null != handler){
handler(false);
};
}
private function __loaded(_arg1:Event):void{
if (null != handler){
handler(true);
};
}
public function reflect(_arg1:String){
var asset:*;
var clazz = _arg1;
if (((domain) && (clazz))){
try {
asset = Reflection.createInstance(clazz, domain);
return (asset);
} catch(e:Error) {
};
};
return (null);
}
public function load(_arg1:ByteArray, _arg2:Function):void{
this.handler = _arg2;
var _local3:LoaderContext = new LoaderContext(false, domain);
if (_local3.hasOwnProperty("allowLoadBytesCodeExecution")){
_local3["allowLoadBytesCodeExecution"] = true;
};
loader.loadBytes(_arg1, _local3);
}
public static function get soundIns():StuffAssetsManager{
if (null == _soundIns){
_soundIns = new (StuffAssetsManager);
SoundPool.initSington(_soundIns.domain);
};
return (_soundIns);
}
public static function get ins():StuffAssetsManager{
if (null == _ins){
_ins = new (StuffAssetsManager);
};
return (_ins);
}
}
}//package com.burstyx.bigtree.editor
Section 71
//AngleMove (com.burstyx.bigtree.logic.AngleMove)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
public class AngleMove extends MoveStyleBase {
private var oPoint:Point;
private var L:Number;// = 0
private var dir:Number;// = 1
private var startPoint:Point;
private var sinparam:Number;// = 0
public function AngleMove(_arg1:Scene, _arg2:Insect, _arg3:Hole){
super(_arg1, _arg2, _arg3);
startPoint = _arg2.getLocation();
oPoint = _arg2.getLocation();
}
override protected function styleMove():Number{
var _local2:Point;
var _local1:Point = new Point(oPoint.x, oPoint.y);
if (targetReached){
_local2 = dest.getLocation();
} else {
_local2 = scene.locationInScene(target.getGlobalPos());
};
var _local3:Number = insect.getMoveSpeed();
var _local4:Number = Math.atan2((_local2.y - _local1.y), (_local2.x - _local1.x));
var _local5:Number = Point.distance(oPoint, _local2);
var _local6:Number = Math.min(_local3, _local5);
var _local7:Number = (_local5 - _local6);
oPoint = new Point((_local1.x + (Math.cos(_local4) * _local6)), (_local1.y + (Math.sin(_local4) * _local6)));
L = (L + (dir * _local3));
if (L > 30){
dir = -1;
} else {
if (L < -30){
dir = 1;
};
};
var _local8:Number = (_local4 + (Math.PI / 2));
var _local9:Point = new Point((oPoint.x + (Math.cos(_local8) * L)), (oPoint.y + (Math.sin(_local8) * L)));
insect.setHeading(_local4);
insect.setLocation(_local9.x, _local9.y);
return (_local7);
}
override protected function onTargetReached():void{
L = 0;
}
override protected function onTouchDownFinished():void{
oPoint = insect.getLocation();
}
}
}//package com.burstyx.bigtree.logic
Section 72
//BossGrade (com.burstyx.bigtree.logic.BossGrade)
package com.burstyx.bigtree.logic {
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
import com.redwave.media.*;
import com.burstyx.bigtree.editor.*;
public class BossGrade {
private var insectBorns:ArrayList;
private var scene:Scene;
private var bombCanvas:Sprite;
private var bosses:ArrayList;
private var logic:SceneLogic;
private var soundFX:MainSoundsProperties;
private var gunHeart:HashMap;
private var gIndex:int;// = 0
private static const X_DIST:Number = 2000;
public function BossGrade(){
soundFX = MainSoundsProperties.ins;
gunHeart = new HashMap();
}
private function moveBossAndAttack():void{
var _local4:Insect;
var _local5:Point;
var _local1:Joint = scene.getTrunk().getJointAt(0);
var _local2:Point = scene.locationInScene(_local1.getGlobalPos());
var _local3:Array = bosses.toArray();
for each (_local4 in _local3) {
setGunHeart(_local4, (getGunHeart(_local4) - 1));
_local5 = _local4.getLocationInner();
_local4.moveTo((_local5.x + 1000), _local5.y, _local4.getMoveSpeed());
if (getGunHeart(_local4) < (_local4.getAttackRate() - 5)){
_local4.setAnimation(Insect.NORMAL);
};
if (_local5.x > X_DIST){
bosses.remove(_local4);
logic.removeInsect(_local4, false, gIndex);
} else {
if (Math.abs((_local5.x - _local2.x)) < _local4.getAttackRange()){
if (getGunHeart(_local4) < 0){
bossFire(_local4);
setGunHeart(_local4, _local4.getAttackRate());
};
};
};
};
}
private function bossFire(_arg1:Insect):void{
_arg1.setAnimation(Insect.ATTACK);
var _local2:Trunk = scene.getTrunk();
var _local3:Joint = _local2.getJointAt(0);
var _local4:Point = scene.locationInScene(_local3.getGlobalPos());
var _local5:Joint = _local2.getJointAt((_local2.getJointCount() - 1));
var _local6:Point = scene.locationInScene(_local5.getGlobalPos());
var _local7:Point = new Point(((_local4.x + ((_local6.x - _local4.x) * Math.random())) + (10 - (Math.random() * 20))), ((_local4.y + ((_local6.y - _local4.y) * Math.random())) + (10 - (Math.random() * 20))));
scene.getTrunk().modifyHealth(-(_arg1.getAttack()));
if (_arg1.getName() == "Boss"){
new Bomb(StuffAssetsManager.ins.reflect("InsectMC017_b"), bombCanvas, _local7, (0.8 + (Math.random() * 0.4)));
SoundPool.playSectionLoop("Sound03", 0, 0);
} else {
new Bomb(StuffAssetsManager.ins.reflect("InsectMC018_b"), bombCanvas, _local7, (0.8 + (Math.random() * 0.4)));
SoundPool.playSectionLoop("Sound04", 0, 0);
};
}
private function appendBorn(_arg1:InsectParam, _arg2:int):void{
var _local4:int;
var _local5:int;
var _local3:int = _arg1.existLevels[_arg2];
if (_local3 > 0){
_local4 = 0;
while (_local4 < _local3) {
_local5 = (Math.floor((Math.random() * (insectBorns.size() + 1))) - 1);
insectBorns.append(_arg1, _local5);
_local4++;
};
};
}
public function init(_arg1:Scene, _arg2:SceneLogic, _arg3:InsectListParam, _arg4:int):Boolean{
var _local6:InsectParam;
var _local7:Boolean;
this.scene = _arg1;
this.logic = _arg2;
gIndex = _arg4;
insectBorns = new ArrayList();
var _local5:Array = _arg3.getInsects();
for each (_local6 in _local5) {
if (_local6.moveType == MoveType.BOSS){
appendBorn(_local6, _arg4);
};
};
_local7 = (insectBorns.size() > 0);
if (_local7){
bornBoss();
};
return (_local7);
}
public function destory():void{
if (bombCanvas){
if (bombCanvas.parent){
bombCanvas.parent.removeChild(bombCanvas);
};
bombCanvas = null;
};
scene = null;
logic = null;
bosses = null;
}
private function bornBoss():void{
var _local8:Insect;
var _local9:InsectParam;
var _local10:int;
bombCanvas = new Sprite();
bombCanvas.mouseChildren = false;
bombCanvas.mouseEnabled = false;
logic.addDisplayUnit(bombCanvas);
bosses = new ArrayList();
var _local1:Point = new Point(0, 0);
var _local2:Number = (_local1.x - X_DIST);
var _local3:Number = (_local1.y - 350);
var _local4:Number = _local2;
var _local5:Number = _local3;
var _local6:Array = insectBorns.toArray();
var _local7:int;
for each (_local9 in _local6) {
_local8 = new Insect(_local9);
if (_local9.name == "Boss"){
_local8.setLocation(_local2, _local3);
_local2 = (_local2 - 100);
} else {
_local10 = (Math.floor((_local7 / 2)) + 1);
if ((_local7 % 2) == 0){
_local8.setLocation((_local4 - (_local10 * 50)), (_local5 - (_local10 * 50)));
} else {
_local8.setLocation((_local4 - (_local10 * 50)), (_local5 + (_local10 * 50)));
};
_local7++;
};
_local8.setHeading((Math.PI / 2));
_local8.setState(Insect.FLYING);
_local8.setAnimation(Insect.NORMAL);
bosses.append(_local8);
logic.addInsect(_local8);
};
}
private function checkDie():void{
var _local2:Insect;
var _local1:Array = bosses.toArray();
for each (_local2 in _local1) {
if (!_local2.isAlive()){
bosses.remove(_local2);
playDie(_local2);
};
};
}
private function getGunHeart(_arg1:Insect):int{
if (gunHeart.containsKey(_arg1)){
return (gunHeart.getValue(_arg1));
};
return (0);
}
public function tick():void{
checkDie();
moveBossAndAttack();
}
private function setGunHeart(_arg1:Insect, _arg2:int):void{
gunHeart.put(_arg1, _arg2);
}
private function playDie(_arg1:Insect):void{
_arg1.setAnimation(Insect.DIE);
soundFX.playSound(soundFX.insectDie);
new EnterFrameCall(Delegate.create(__removeInsect, _arg1), 10).start();
}
private function __removeInsect(_arg1:Insect):void{
logic.removeInsect(_arg1, true, gIndex);
scene.getCapital().earn(_arg1.getWater());
}
}
}//package com.burstyx.bigtree.logic
Section 73
//CircleMove (com.burstyx.bigtree.logic.CircleMove)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
public class CircleMove extends MoveStyleBase {
private var oPoint:Point;
private var heading:Number;// = 0
private var dir:Number;// = 1
private var startPoint:Point;
private var radius:Number;// = 0
public function CircleMove(_arg1:Scene, _arg2:Insect, _arg3:Hole){
super(_arg1, _arg2, _arg3);
startPoint = _arg2.getLocation();
oPoint = _arg2.getLocation();
dir = ((Math.random() < 0.5)) ? 1 : -1;
}
override protected function onTargetReached():void{
dir = ((Math.random() < 0.5)) ? 1 : -1;
radius = 0;
}
override protected function styleMove():Number{
var _local2:Point;
var _local1:Point = new Point(oPoint.x, oPoint.y);
if (targetReached){
_local2 = dest.getLocation();
} else {
_local2 = scene.locationInScene(target.getGlobalPos());
};
var _local3:Number = insect.getMoveSpeed();
var _local4:Number = Math.atan2((_local2.y - _local1.y), (_local2.x - _local1.x));
var _local5:Number = Point.distance(oPoint, _local2);
var _local6:Number = Math.min(_local3, _local5);
var _local7:Number = (_local5 - _local6);
oPoint = new Point((_local1.x + (Math.cos(_local4) * _local6)), (_local1.y + (Math.sin(_local4) * _local6)));
radius = (radius + 1);
if (radius > 50){
radius = 50;
};
heading = (heading + (dir * Math.min(((_local3 * Math.PI) / radius), (Math.PI / 20))));
var _local8:Point = new Point((oPoint.x + (Math.cos(heading) * radius)), (oPoint.y + (Math.sin(heading) * radius)));
insect.setHeading((heading + ((dir * Math.PI) / 2)));
insect.setLocation(_local8.x, _local8.y);
return (_local7);
}
override protected function onTouchDownFinished():void{
oPoint = insect.getLocation();
}
}
}//package com.burstyx.bigtree.logic
Section 74
//InholeMovement (com.burstyx.bigtree.logic.InholeMovement)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
public class InholeMovement {
private var inholeTurn:Number;
private var hole:Hole;
private var insect:Insect;
private var inholePoint:Point;
private var scene:Scene;
public function InholeMovement(_arg1:Scene, _arg2:Insect, _arg3:Hole){
this.scene = _arg1;
this.insect = _arg2;
this.hole = _arg3;
init();
}
private function init():void{
inholePoint = hole.randomPoint();
inholeTurn = (((2 / 180) * Math.PI) - (((Math.random() * 4) / 180) * Math.PI));
insect.setAnimation(Insect.NORMAL);
insect.setState(Insect.INHOLE);
}
public function doMove():void{
insect.moveTo(inholePoint.x, inholePoint.y, (insect.getMoveSpeed() / 2));
insect.setHeading((insect.getHeading() + inholeTurn));
}
}
}//package com.burstyx.bigtree.logic
Section 75
//LevelCircle (com.burstyx.bigtree.logic.LevelCircle)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
import com.redwave.media.*;
public class LevelCircle {
private var fromHole:Hole;
private var insects:ArrayList;
private var scene:Scene;
private var groupIndex:int;
private var sh:SceneLogic;
private var waitingHoleBreak:int;
private var builder:InsectBuilderPart;
private var pathCircle:PathCircle;
private var inholeMoves:HashMap;
private var matrixHole:Hole;
private var toHole:Hole;
private var fastBreakHole:Boolean;// = false
private var backInsects:ArrayList;
private var allBorned:Boolean;
private var holeBreakingSound:SoundLoop;
private var holeIndex:int;
private var holes:Array;
private var finished:Boolean;// = false
public static const HOLE_BREAKING_TIME:int = 300;
public function LevelCircle(_arg1:Scene, _arg2:SceneLogic, _arg3:Array, _arg4:Hole, _arg5:InsectBuilderPart, _arg6:int){
this.scene = _arg1;
this.sh = _arg2;
this.holes = _arg3;
this.matrixHole = _arg4;
this.builder = _arg5;
this.groupIndex = _arg6;
insects = new ArrayList();
backInsects = new ArrayList();
inholeMoves = new HashMap();
init();
}
public function pushback(_arg1:Insect, _arg2:Hole):void{
backInsects.append(_arg1, 0);
inholeMoves.put(_arg1, new InholeMovement(scene, _arg1, _arg2));
}
public function isFinished():Boolean{
return (finished);
}
private function getHole(_arg1:int):Hole{
return (holes[int((_arg1 % holes.length))]);
}
public function getGroupIndex():int{
return (groupIndex);
}
public function pushbackCloned(_arg1:Insect, _arg2:Hole):void{
sh.addInsect(_arg1, true);
pushback(_arg1, _arg2);
}
private function init():void{
holes = holes.concat();
holes.sort(__compareHoleIndex);
waitingHoleBreak = 0;
allBorned = false;
holeIndex = ArrayUtils.indexInArray(holes, matrixHole);
nextCircle();
}
public function setFastBreakHole():void{
fastBreakHole = true;
waitingHoleBreak = 30;
}
public function pollout():Insect{
var _local1:Insect;
if (allBorned){
if (insects.size() > 0){
_local1 = insects.pop();
inholeMoves.remove(_local1);
return (_local1);
};
} else {
_local1 = builder.build();
if (_local1){
_local1.setLocation(fromHole.getX(), fromHole.getY());
sh.addInsect(_local1);
return (_local1);
};
allBorned = true;
};
return (null);
}
private function __compareHoleIndex(_arg1:Hole, _arg2:Hole):int{
if (_arg1.getParam().order > _arg2.getParam().order){
return (1);
};
return (-1);
}
public function tick():void{
var _local2:InholeMovement;
if (waitingHoleBreak > 0){
holeBreakingSound.goon();
waitingHoleBreak--;
return;
};
if (waitingHoleBreak == 0){
matrixHole.setState(Hole.RUNNING);
waitingHoleBreak = -1;
if (holeBreakingSound){
holeBreakingSound.stop();
holeBreakingSound = null;
};
};
var _local1:Array = inholeMoves.values();
for each (_local2 in _local1) {
_local2.doMove();
};
if (pathCircle){
if (pathCircle.isFinished()){
nextCircle();
return;
};
pathCircle.tick();
};
}
private function nextCircle():void{
var _local1:MainSoundsProperties;
if (!finished){
if (allBorned){
if (backInsects.size() <= 0){
finished = true;
return;
};
};
fromHole = getHole(holeIndex);
toHole = getHole((holeIndex + 1));
holeIndex++;
if (holeIndex >= holes.length){
holeIndex = 0;
};
insects.appendAll(backInsects.toArray());
backInsects.clear();
pathCircle = new PathCircle(scene, sh, this, fromHole, toHole);
if (!allBorned){
matrixHole.setState(Hole.BREAKING);
if (fastBreakHole){
waitingHoleBreak = 30;
} else {
waitingHoleBreak = HOLE_BREAKING_TIME;
};
if (holeBreakingSound){
holeBreakingSound.stop();
};
_local1 = MainSoundsProperties.ins;
holeBreakingSound = _local1.playSound(_local1.holeBreaking, 6, 10);
};
};
}
}
}//package com.burstyx.bigtree.logic
Section 76
//LineMove (com.burstyx.bigtree.logic.LineMove)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.core.*;
public class LineMove extends MoveStyleBase {
public function LineMove(_arg1:Scene, _arg2:Insect, _arg3:Hole){
super(_arg1, _arg2, _arg3);
}
}
}//package com.burstyx.bigtree.logic
Section 77
//MatrixArrowTip (com.burstyx.bigtree.logic.MatrixArrowTip)
package com.burstyx.bigtree.logic {
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.redwave.*;
public class MatrixArrowTip {
private var op:Point;
private var heading:Number;
private var frames:int;
private var scene:Scene;
private var hole:Hole;
private var asset:MovieClip;
private var logic:SceneLogic;
public function MatrixArrowTip(_arg1:Scene, _arg2:SceneLogic, _arg3:Hole, _arg4:int){
this.scene = _arg1;
this.logic = _arg2;
this.hole = _arg3;
this.frames = _arg4;
asset = FlaEmbed.reflect("MatrixHoleTipMC");
_arg2.addDisplayUnit(asset);
var _local5:Point = _arg3.getLocation();
var _local6:Trunk = _arg1.getTrunk();
op = _local6.getJointAt((_local6.getLevel() - 1)).getGlobalPos();
op = _arg1.locationInScene(op);
heading = Math.atan2((op.y - _local5.y), (op.x - _local5.x));
asset.rotation = ((heading / Math.PI) * 180);
__tick();
new GameEnterFrameNum(__tick, 1, _arg4, __complete).start();
}
private function __complete():void{
if (asset.parent){
asset.parent.removeChild(asset);
DisplayUtils.stopAllMC(asset);
};
}
private function isInScreen(_arg1:Point):Boolean{
_arg1 = scene.locationInGlobal(_arg1);
return ((((((((_arg1.x > 0)) && ((_arg1.x < Game.CW)))) && ((_arg1.y > 0)))) && ((_arg1.y < Game.H))));
}
private function __tick():void{
var _local4:Point;
var _local1:Point = hole.getLocation();
var _local2:Number = Point.distance(_local1, op);
var _local3:Number = 0;
while (_local3 < _local2) {
_local4 = new Point((_local1.x + (Math.cos(heading) * _local3)), (_local1.y + (Math.sin(heading) * _local3)));
if (isInScreen(_local4)){
asset.x = _local4.x;
asset.y = _local4.y;
return;
};
_local3 = (_local3 + 10);
};
asset.x = _local1.x;
asset.y = _local1.y;
}
}
}//package com.burstyx.bigtree.logic
Section 78
//Movement (com.burstyx.bigtree.logic.Movement)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.core.*;
public class Movement {
private var dest:Hole;
private var moveFinished:Boolean;
private var moveStyle:MoveStyle;
private var insect:Insect;
private var scene:Scene;
private var finishHandler:Function;
public function Movement(_arg1:Scene, _arg2:Insect, _arg3:Hole, _arg4:Function){
this.scene = _arg1;
this.insect = _arg2;
this.dest = _arg3;
this.finishHandler = _arg4;
init();
}
private function doEffecting():void{
var _local1:SustainingDamage = insect.getSustainingDamage();
if (_local1){
if (_local1.isFinished()){
insect.setSustainingDamage(null);
} else {
_local1.tick(insect);
};
};
var _local2:SustainingSlower = insect.getSustainingSlower();
if (_local2){
if (_local2.isFinished()){
insect.setSustainingSlower(null);
};
_local2.tick(insect);
};
}
private function doMove():void{
if (moveFinished){
throw (new Error("This move is already finished!"));
};
if (moveStyle.doMove()){
moveFinished = true;
finishHandler(this);
};
}
public function tick():void{
doEffecting();
doMove();
}
public function getInsect():Insect{
return (insect);
}
private function init():void{
moveFinished = false;
var _local1:int = insect.getMoveType();
if (_local1 == MoveType.LINE){
moveStyle = new LineMove(scene, insect, dest);
} else {
if (_local1 == MoveType.CIRCLE){
moveStyle = new CircleMove(scene, insect, dest);
} else {
if (_local1 == MoveType.ANGLE){
moveStyle = new AngleMove(scene, insect, dest);
} else {
if (_local1 == MoveType.SIN){
moveStyle = new SinMove(scene, insect, dest);
} else {
moveStyle = new LineMove(scene, insect, dest);
};
};
};
};
insect.setAnimation(Insect.NORMAL);
insect.setState(Insect.FLYING);
}
}
}//package com.burstyx.bigtree.logic
Section 79
//MoveStyle (com.burstyx.bigtree.logic.MoveStyle)
package com.burstyx.bigtree.logic {
public interface MoveStyle {
function doMove():Boolean;
}
}//package com.burstyx.bigtree.logic
Section 80
//MoveStyleBase (com.burstyx.bigtree.logic.MoveStyleBase)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.burstyx.bigtree.editor.data.*;
public class MoveStyleBase implements MoveStyle {
protected var targetReached:Boolean;// = false
protected var dest:Hole;
protected var target2:Joint;
protected var scene:Scene;
protected var target:Joint;
protected var insect:Insect;
protected var touch:TouchDown;
public static const REACH_TRUNK_DISTANCE:Number = 50;
public static const REACH_HOLE_DISTANCE:Number = 10;
public function MoveStyleBase(_arg1:Scene, _arg2:Insect, _arg3:Hole){
this.scene = _arg1;
this.insect = _arg2;
this.dest = _arg3;
var _local4:int = _arg1.getTrunk().getJointCount();
var _local5:int = Math.floor((Math.random() * _local4));
target = _arg1.getTrunk().getJointAt(_local5);
var _local6:int;
if (_local4 == 1){
_local6 = 0;
} else {
if (_local5 == 0){
_local6 = (_local5 + 1);
} else {
if (_local5 == (_local4 - 1)){
_local6 = (_local5 - 1);
} else {
if (Math.random() < 0.5){
_local6 = (_local5 + 1);
} else {
_local6 = (_local5 - 1);
};
};
};
};
target2 = _arg1.getTrunk().getJointAt(_local6);
touch = new TouchDown(_arg1, _arg2, target, target2, _arg3);
}
protected function onTouchDownFinished():void{
}
protected function styleMove():Number{
var _local2:Point;
var _local1:Point = insect.getLocation();
if (targetReached){
_local2 = dest.getLocation();
} else {
_local2 = scene.locationInScene(target.getGlobalPos());
};
insect.setHeading(Math.atan2((_local2.y - _local1.y), (_local2.x - _local1.x)));
var _local3:Number = insect.moveTo(_local2.x, _local2.y, insect.getMoveSpeed());
return (_local3);
}
protected function onTargetReached():void{
}
public function doMove():Boolean{
if (touch.isRunning()){
touch.tick();
if (!touch.isRunning()){
MainSoundsProperties.ins.playSound(MainSoundsProperties.ins.insectEated);
onTouchDownFinished();
};
return (false);
};
var _local1:Number = styleMove();
if (targetReached){
return ((_local1 < REACH_HOLE_DISTANCE));
};
if (_local1 < REACH_TRUNK_DISTANCE){
touch.start();
targetReached = true;
onTargetReached();
};
return (false);
}
}
}//package com.burstyx.bigtree.logic
Section 81
//PathCircle (com.burstyx.bigtree.logic.PathCircle)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
public class PathCircle {
private var startHole:Hole;
private var timer:TickCounter;
private var moves:HashSet;
private var scene:Scene;
private var allout:Boolean;
private var logic:SceneLogic;
private var soundFX:MainSoundsProperties;
private var dest:Hole;
private var parent:LevelCircle;
private var emptyTime:int;// = 0
public function PathCircle(_arg1:Scene, _arg2:SceneLogic, _arg3:LevelCircle, _arg4:Hole, _arg5:Hole){
this.scene = _arg1;
this.logic = _arg2;
this.parent = _arg3;
this.startHole = _arg4;
this.dest = _arg5;
soundFX = MainSoundsProperties.ins;
init();
}
public function isFinished():Boolean{
return ((emptyTime > 15));
}
private function init():void{
moves = new HashSet();
timer = new TickCounter(startHole.getParam().time);
allout = false;
}
private function __moveFinished(_arg1:Movement):void{
var _local4:int;
var _local5:Insect;
moves.remove(_arg1);
var _local2:Insect = _arg1.getInsect();
parent.pushback(_local2, dest);
if (dest.getParam().isRecover){
_local2.recoverHP();
};
var _local3:int = dest.getParam().duplicate;
if (_local3 > 0){
_local4 = 0;
while (_local4 < _local3) {
_local5 = _local2.clone();
parent.pushbackCloned(_local5, dest);
_local4++;
};
};
}
public function tick():void{
var _local2:Movement;
if (((allout) && (moves.isEmpty()))){
emptyTime++;
};
if (!allout){
if (timer.tick() == 0){
timer.reset();
startNext();
};
};
var _local1:Array = moves.toArray();
for each (_local2 in _local1) {
_local2.tick();
if (!_local2.getInsect().isAlive()){
moves.remove(_local2);
playDie(_local2.getInsect());
};
};
}
private function playDie(_arg1:Insect):void{
_arg1.setAnimation(Insect.DIE);
soundFX.playSound(soundFX.insectDie);
new EnterFrameCall(Delegate.create(__removeInsect, _arg1), 10).start();
}
private function startNext():void{
soundFX.playSound(soundFX.insectOut);
var _local1:Insect = parent.pollout();
if (_local1){
moves.add(new Movement(scene, _local1, dest, __moveFinished));
} else {
allout = true;
};
}
private function __removeInsect(_arg1:Insect):void{
logic.removeInsect(_arg1, true, parent.getGroupIndex());
scene.getCapital().earn(_arg1.getWater());
}
}
}//package com.burstyx.bigtree.logic
Section 82
//SinMove (com.burstyx.bigtree.logic.SinMove)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
public class SinMove extends MoveStyleBase {
private var oPoint:Point;
private var L:Number;// = 0
private var sinparam:Number;// = 0
private var startPoint:Point;
public function SinMove(_arg1:Scene, _arg2:Insect, _arg3:Hole){
super(_arg1, _arg2, _arg3);
startPoint = _arg2.getLocation();
oPoint = _arg2.getLocation();
}
override protected function onTargetReached():void{
L = 0;
}
override protected function onTouchDownFinished():void{
oPoint = insect.getLocation();
}
override protected function styleMove():Number{
var _local2:Point;
var _local1:Point = new Point(oPoint.x, oPoint.y);
if (targetReached){
_local2 = dest.getLocation();
} else {
_local2 = scene.locationInScene(target.getGlobalPos());
};
var _local3:Number = insect.getMoveSpeed();
var _local4:Number = Math.atan2((_local2.y - _local1.y), (_local2.x - _local1.x));
var _local5:Number = Point.distance(oPoint, _local2);
var _local6:Number = Math.min(_local3, _local5);
var _local7:Number = (_local5 - _local6);
oPoint = new Point((_local1.x + (Math.cos(_local4) * _local6)), (_local1.y + (Math.sin(_local4) * _local6)));
sinparam = (sinparam + (_local3 / 15));
L = (L + 2);
if (L > 40){
L = 40;
};
var _local8:Number = (_local4 + (Math.PI / 2));
var _local9:Number = (Math.sin(sinparam) * L);
var _local10:Point = new Point((oPoint.x + (Math.cos(_local8) * _local9)), (oPoint.y + (Math.sin(_local8) * _local9)));
insect.setHeading(_local4);
insect.setLocation(_local10.x, _local10.y);
return (_local7);
}
}
}//package com.burstyx.bigtree.logic
Section 83
//SustainingDamage (com.burstyx.bigtree.logic.SustainingDamage)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class SustainingDamage {
private var interval:int;
private var times:int;
private var param:WeaponLvParam;
private var damage:int;
private var scale:Number;
private var counter:TickCounterCon;
public function SustainingDamage(_arg1:WeaponLvParam, _arg2:int, _arg3:int, _arg4:int, _arg5:Number=1){
this.param = _arg1;
this.damage = _arg2;
this.times = _arg3;
this.interval = _arg4;
this.scale = _arg5;
counter = new TickCounterCon(_arg4, _arg3);
}
public function isFinished():Boolean{
return (counter.isFinshed());
}
public function tick(_arg1:Insect):void{
if (counter.tick()){
if (_arg1.isAlive()){
_arg1.hurt(damage);
_arg1.playBomb(param.createBombAsset(), scale);
};
};
}
}
}//package com.burstyx.bigtree.logic
Section 84
//SustainingSlower (com.burstyx.bigtree.logic.SustainingSlower)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.core.*;
public class SustainingSlower {
private var slowScale:Number;
private var time:int;
public function SustainingSlower(_arg1:int, _arg2:int){
this.slowScale = (_arg1 / 100);
this.time = _arg2;
}
public function getScale():Number{
return (slowScale);
}
public function isFinished():Boolean{
return ((time <= 0));
}
public function tick(_arg1:Insect):void{
time--;
}
}
}//package com.burstyx.bigtree.logic
Section 85
//TouchDown (com.burstyx.bigtree.logic.TouchDown)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class TouchDown {
private var hole:Hole;
private var target2:Joint;
private var toHoleTime:int;// = 25
private var state:int;// = -1
private var scene:Scene;
private var ialpha:Number;// = 1
private var target:Joint;
private var iscale:Number;// = 1
private var ialphaStep:Number;// = 0.01
private var destH:Number;
private var insect:Insect;
private var destP:Point;
private var attckCounter:TickCounterCon;
private var running:Boolean;// = false
public function TouchDown(_arg1:Scene, _arg2:Insect, _arg3:Joint, _arg4:Joint, _arg5:Hole){
this.scene = _arg1;
this.insect = _arg2;
this.target = _arg3;
this.target2 = _arg4;
this.hole = _arg5;
}
private function doAttack():void{
if (scene.getTrunk()){
scene.getTrunk().modifyHealth(-(insect.getAttack()));
};
}
public function tick():void{
var _local1:Number;
var _local2:Number;
var _local3:Point;
var _local4:Point;
var _local5:Number;
if (0 == state){
iscale = (iscale + 0.01);
if (iscale >= 1.4){
iscale = 1.4;
};
insect.setScale(iscale);
_local1 = MathUtils.standardAngle((destH - insect.getHeading()));
_local1 = MathUtils.rangeRestric(_local1, (Math.PI / 10));
insect.setHeading((insect.getHeading() + _local1));
_local2 = 3;
if ((((insect.moveTo(destP.x, destP.y, _local2) < 1)) && ((Math.abs(_local1) < 0.0001)))){
ialphaStep = (0.5 / ((iscale - 0.9) / 0.01));
state = 2;
};
} else {
if (1 == state){
} else {
if (2 == state){
iscale = (iscale - 0.01);
ialpha = (ialpha - ialphaStep);
insect.setScale(iscale);
insect.setAlpha(ialpha);
if (iscale <= 0.9){
state = 3;
insect.setAnimation(Insect.ATTACK);
};
} else {
if (3 == state){
if (attckCounter.tick()){
doAttack();
};
if (attckCounter.isFinshed()){
state = 4;
insect.setAnimation(Insect.NORMAL);
};
} else {
if (4 == state){
iscale = (iscale + 0.01);
ialpha = (ialpha + ialphaStep);
if (iscale > 1){
iscale = 1;
state = 5;
ialpha = 1;
insect.setState(Insect.FLYING);
};
insect.setScale(iscale);
insect.setAlpha(ialpha);
} else {
if (5 == state){
_local3 = hole.getLocation();
_local4 = insect.getLocation();
_local5 = Math.atan2((_local3.y - _local4.y), (_local3.x - _local4.x));
_local1 = MathUtils.standardAngle((_local5 - insect.getHeading()));
_local1 = (_local1 / toHoleTime);
insect.setHeading((insect.getHeading() + _local1));
insect.moveTo(_local3.x, _local3.y, 3);
toHoleTime--;
if (toHoleTime < 0){
state = 6;
};
};
};
};
};
};
};
}
public function start():void{
running = true;
state = 0;
toHoleTime = (MoveStyleBase.REACH_TRUNK_DISTANCE / 3);
var _local1:Point = scene.locationInScene(target.getGlobalPos());
var _local2:Point = scene.locationInScene(target2.getGlobalPos());
var _local3:Number = (_local2.x - _local1.x);
var _local4:Number = (_local2.y - _local1.y);
_local1.x = (_local1.x + (_local3 * Math.random()));
_local1.y = (_local1.y + (_local4 * Math.random()));
_local1.x = (_local1.x + (6 - (Math.random() * 12)));
_local1.y = (_local1.y + (6 - (Math.random() * 12)));
destP = _local1;
destH = ((-(Math.PI) / 2) + ((Math.PI / 20) - ((Math.PI / 10) * Math.random())));
attckCounter = new TickCounterCon(insect.getAttackRate(), insect.getAttackRange());
insect.setState(Insect.ONTREE);
}
public function isRunning():Boolean{
return ((((state >= 0)) && ((state < 6))));
}
}
}//package com.burstyx.bigtree.logic
Section 86
//WeaponController (com.burstyx.bigtree.logic.WeaponController)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import com.burstyx.bigtree.core.*;
public class WeaponController {
private var scene:Scene;
private var level:int;// = -10
private var strategy:WeaponStrategy;
private var weapon:Weapon;
public function WeaponController(_arg1:Scene, _arg2:Weapon){
this.scene = _arg1;
this.weapon = _arg2;
}
public function destroy():void{
if (strategy){
strategy.destroy();
strategy = null;
};
}
public function tick(_arg1:Array):void{
checkLevelUp();
strategy.tick(_arg1);
}
private function checkLevelUp():void{
var _local1:int;
if (weapon.getLevel() != level){
if (strategy){
strategy.destroy();
};
level = weapon.getLevel();
_local1 = weapon.getLvParam().attackEffect;
if ((((_local1 == AttackEffect.MULTI)) || ((_local1 == AttackEffect.MULTI_SLOWER)))){
strategy = new WeaponStrategyMulti(scene, weapon);
} else {
if (_local1 == AttackEffect.LASER){
strategy = new WeaponStrategyLaser(scene, weapon);
} else {
if (_local1 == AttackEffect.FLAME){
strategy = new WeaponStrategyFlame(scene, weapon);
} else {
if (_local1 == AttackEffect.BOMB){
strategy = new WeaponStrategyBomb(scene, weapon);
} else {
if (_local1 == AttackEffect.EAT){
strategy = new WeaponStrategyEat(scene, weapon);
} else {
if (_local1 == AttackEffect.ROCKET){
strategy = new WeaponStrategyRocket(scene, weapon);
} else {
strategy = new WeaponStrategySingle(scene, weapon);
};
};
};
};
};
};
strategy.start();
};
}
}
}//package com.burstyx.bigtree.logic
Section 87
//WeaponStrategy (com.burstyx.bigtree.logic.WeaponStrategy)
package com.burstyx.bigtree.logic {
public interface WeaponStrategy {
function destroy():void;
function start():void;
function tick(_arg1:Array):void;
}
}//package com.burstyx.bigtree.logic
Section 88
//WeaponStrategyBase (com.burstyx.bigtree.logic.WeaponStrategyBase)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
public class WeaponStrategyBase {
protected var weapon:Weapon;
protected var gunHeart:int;
protected var scene:Scene;
public function WeaponStrategyBase(_arg1:Scene, _arg2:Weapon){
this.scene = _arg1;
this.weapon = _arg2;
gunHeart = _arg2.getLvParam().attackRate;
}
public function destroy():void{
}
public function start():void{
}
protected function hitInsect(_arg1:Insect, _arg2:WeaponLvParam, _arg3:Number=1):void{
var _local4:int = _arg2.attackEffect;
var _local5:int = _arg2.attack;
if (((!((_local4 == AttackEffect.SLOWER))) && (!((_local4 == AttackEffect.MULTI_SLOWER))))){
_local5 = Math.round((_arg2.attack * _arg3));
};
if (_local4 == AttackEffect.SINGLE){
_arg1.hurt(_local5);
} else {
if ((((_local4 == AttackEffect.SLOWER)) || ((_local4 == AttackEffect.MULTI_SLOWER)))){
_arg1.setSustainingSlower(new SustainingSlower(_local5, (30 * 3)));
} else {
if (_local4 == AttackEffect.POISON){
_arg1.hurt(_local5);
_arg1.setSustainingDamage(new SustainingDamage(_arg2, _local5, 4, 30));
} else {
_arg1.hurt(_local5);
};
};
};
_arg1.playBomb(_arg2.createBombAsset(), _arg3);
}
protected function firedInsect(_arg1:Insect, _arg2:Array, _arg3:Boolean=true):void{
var _local7:Point;
var _local8:Insect;
var _local9:Number;
var _local10:Number;
var _local4:WeaponLvParam = weapon.getLvParam();
gunHeart = _local4.attackRate;
hitInsect(_arg1, _local4);
if (_arg3){
weapon.getParam().playAttackSound();
};
var _local5:Number = _local4.splashRange;
var _local6:int = _local4.attackEffect;
if (_local5 > 1){
_local7 = _arg1.getLocation();
for each (_local8 in _arg2) {
if (_local8 != _arg1){
_local9 = Point.distance(_local8.getLocationInner(), _local7);
if (_local9 < _local5){
_local10 = (1 - (_local9 / _local5));
hitInsect(_local8, _local4, _local10);
};
};
};
};
}
}
}//package com.burstyx.bigtree.logic
Section 89
//WeaponStrategyBomb (com.burstyx.bigtree.logic.WeaponStrategyBomb)
package com.burstyx.bigtree.logic {
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class WeaponStrategyBomb extends WeaponStrategyBase implements WeaponStrategy {
private var fireOn:Insect;
public function WeaponStrategyBomb(_arg1:Scene, _arg2:Weapon){
super(_arg1, _arg2);
}
private function bombAway(_arg1:Point, _arg2:Point, _arg3:Insect, _arg4:Number, _arg5:Number):void{
var _local6:Number = Math.atan2((_arg2.y - _arg1.y), (_arg2.x - _arg1.x));
var _local7:Number = (5 + (Math.random() * 5));
var _local8:Number = (_arg2.x + (Math.cos(_local6) * _local7));
var _local9:Number = (_arg2.y + (Math.sin(_local6) * _local7));
_arg3.moveTo(_local8, _local9, _local7);
}
protected function bombInsect(_arg1:Insect, _arg2:Array, _arg3:Boolean=true):void{
var _local4:WeaponLvParam;
var _local8:Point;
var _local9:Insect;
var _local10:Point;
var _local11:int;
var _local12:Number;
_local4 = weapon.getLvParam();
gunHeart = _local4.attackRate;
var _local5:int = _local4.attack;
_arg1.hurt(_local5);
if (_arg3){
weapon.getParam().playAttackSound();
};
var _local6:MovieClip = _local4.createBombAsset();
scene.addDisplayUnit(_local6);
new Bomb(_local6, null, _arg1.getLocation(), 1);
var _local7:int = _local4.splashRange;
_local6.width = (_local6.height = (_local7 * 2));
if (_local7 > 1){
_local8 = _arg1.getLocation();
for each (_local9 in _arg2) {
if (_local9 != _arg1){
_local10 = _local9.getLocationInner();
_local11 = Point.distance(_local8, _local10);
if (_local11 < _local7){
_local12 = (1 - (_local11 / _local7));
_local9.hurt((_local5 * _local12));
bombAway(_local8, _local10, _local9, _local12, _local5);
};
};
};
};
}
public function tick(_arg1:Array):void{
var _local8:Insect;
var _local9:Number;
var _local10:Number;
var _local11:Number;
gunHeart--;
var _local2:int = weapon.getLvParam().attackRange;
var _local3:Number = (_local2 * _local2);
var _local4:Point = scene.locationInScene(weapon.getGlobalPos());
var _local5:Number = _local3;
var _local6:Insect;
var _local7:Point;
if (((fireOn) && (((!(fireOn.isAlive())) || (!(fireOn.canHurt())))))){
fireOn = null;
};
if (fireOn){
_local6 = fireOn;
_local7 = _local6.getLocation();
} else {
for each (_local8 in _arg1) {
_local9 = MathUtils.distanceSq(_local8.getLocationInner(), _local4);
if (_local9 < _local5){
_local5 = _local9;
_local6 = _local8;
_local7 = _local8.getLocation();
};
};
};
if (_local6){
_local10 = Math.atan2((_local7.y - _local4.y), (_local7.x - _local4.x));
_local11 = weapon.getGlobalHeading();
weapon.setHeading((weapon.getHeading() + (_local10 - _local11)));
if (((fireOn) && ((gunHeart <= 0)))){
bombInsect(fireOn, _arg1);
fireOn = null;
} else {
if (gunHeart <= weapon.getAttackAnimationFrames()){
if (null == fireOn){
gunHeart = weapon.getAttackAnimationFrames();
fireOn = _local6;
weapon.playAttack();
};
} else {
weapon.playAttackRepare();
};
};
} else {
weapon.playNormal();
};
}
}
}//package com.burstyx.bigtree.logic
Section 90
//WeaponStrategyEat (com.burstyx.bigtree.logic.WeaponStrategyEat)
package com.burstyx.bigtree.logic {
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class WeaponStrategyEat extends WeaponStrategyBase implements WeaponStrategy {
private var eating:Boolean;// = false
private var returning:Boolean;// = false
private var fireOn:Insect;
public function WeaponStrategyEat(_arg1:Scene, _arg2:Weapon){
super(_arg1, _arg2);
}
public function tick(_arg1:Array):void{
var _local10:Insect;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local2:MovieClip = (weapon.getAttackSubAsset("mouse") as MovieClip);
if (eating){
if (_local2.currentFrame >= _local2.totalFrames){
_local2.gotoAndStop(1);
returning = true;
eating = false;
} else {
_local2.nextFrame();
};
return;
};
gunHeart--;
var _local3:int = weapon.getLvParam().attackRange;
var _local4:Number = (_local3 * _local3);
var _local5:Point = scene.locationInScene(weapon.getGlobalPos());
var _local6:Number = _local4;
var _local7:Insect;
var _local8:Point;
var _local9:Number = (_local3 / 10);
if (((fireOn) && (((((!(fireOn.isAlive())) || (!(fireOn.canHurt())))) || ((Point.distance(_local5, fireOn.getLocation()) > _local3)))))){
fireOn = null;
};
if (fireOn){
_local7 = fireOn;
_local8 = _local7.getLocation();
} else {
for each (_local10 in _arg1) {
_local11 = MathUtils.distanceSq(_local10.getLocationInner(), _local5);
if (_local11 < _local6){
_local6 = _local11;
_local7 = _local10;
_local8 = _local10.getLocation();
};
};
if (moveTo(_local2, 0, _local9) == 0){
returning = false;
};
};
if (_local7){
weapon.playAttackRepare();
_local12 = Math.atan2((_local8.y - _local5.y), (_local8.x - _local5.x));
_local13 = weapon.getGlobalHeading();
if (!returning){
weapon.setHeading((weapon.getHeading() + (_local12 - _local13)));
};
if ((((null == fireOn)) && ((gunHeart <= 0)))){
fireOn = _local7;
};
if (fireOn){
catchUp(_local2, Point.distance(_local5, _local8), _local9);
};
} else {
weapon.playNormal();
};
}
private function catchUp(_arg1:MovieClip, _arg2:Number, _arg3:Number):void{
_arg2 = moveTo(_arg1, _arg2, _arg3);
if (_arg2 < 1){
eating = true;
fireOn.hurt(fireOn.getHPTotal());
fireOn = null;
gunHeart = weapon.getLvParam().attackRate;
weapon.getParam().playAttackSound();
};
}
private function moveTo(_arg1:MovieClip, _arg2:Number, _arg3:Number):Number{
var _local4:Number = (_arg2 - _arg1.x);
if (Math.abs(_local4) < _arg3){
_arg1.x = _arg2;
return (0);
};
if (_local4 > 0){
_arg1.x = (_arg1.x + _arg3);
} else {
_arg1.x = (_arg1.x - _arg3);
};
return ((Math.abs(_local4) - _arg3));
}
}
}//package com.burstyx.bigtree.logic
Section 91
//WeaponStrategyFlame (com.burstyx.bigtree.logic.WeaponStrategyFlame)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.redwave.media.*;
import org.aswing.util.*;
public class WeaponStrategyFlame extends WeaponStrategyBase implements WeaponStrategy {
private var flameTime:int;// = 0
private var units:HashSet;
private var soundLoop:SoundLoop;
private var fireOn:Insect;
public function WeaponStrategyFlame(_arg1:Scene, _arg2:Weapon){
super(_arg1, _arg2);
units = new HashSet();
}
override public function destroy():void{
var _local2:FlameUnit;
var _local1:Array = units.toArray();
for each (_local2 in _local1) {
_local2.dispose();
};
units.clear();
stopSoundLoop();
}
private function stopLaserOn():void{
stopSoundLoop();
}
override public function start():void{
}
private function laserOn():void{
flameTime--;
units.add(new FlameUnit(weapon, scene));
if (null == soundLoop){
soundLoop = weapon.getParam().playAttackSound(3, 8);
};
soundLoop.goon();
}
private function stopSoundLoop():void{
if (soundLoop){
soundLoop.stop();
soundLoop = null;
};
flameTime = (weapon.getLvParam().attackRange / 7);
}
public function tick(_arg1:Array):void{
var _local9:Insect;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Array;
var _local14:FlameUnit;
gunHeart--;
var _local2:WeaponLvParam = weapon.getLvParam();
var _local3:int = _local2.attackRange;
var _local4:Number = (_local3 * _local3);
var _local5:Point = scene.locationInScene(weapon.getGlobalPos());
var _local6:Number = _local4;
var _local7:Insect;
var _local8:Point;
if (((fireOn) && ((((((((Point.distance(fireOn.getLocation(), _local5) > _local3)) || (!(fireOn.isAlive())))) || (!(fireOn.canHurt())))) || ((flameTime < 0)))))){
gunHeart = _local2.attackRate;
stopLaserOn();
fireOn = null;
};
if (fireOn){
_local7 = fireOn;
_local8 = _local7.getLocation();
} else {
for each (_local9 in _arg1) {
_local10 = MathUtils.distanceSq(_local9.getLocationInner(), _local5);
if (_local10 < _local6){
_local6 = _local10;
_local7 = _local9;
_local8 = _local9.getLocation();
};
};
};
if (_local7){
_local11 = Math.atan2((_local8.y - _local5.y), (_local8.x - _local5.x));
_local12 = weapon.getGlobalHeading();
weapon.setHeading((weapon.getHeading() + (_local11 - _local12)));
if (((fireOn) && ((gunHeart <= 0)))){
gunHeart = 0;
laserOn();
} else {
if (gunHeart <= weapon.getAttackAnimationFrames()){
if (null == fireOn){
gunHeart = weapon.getAttackAnimationFrames();
fireOn = _local7;
weapon.playAttack();
};
} else {
weapon.playAttackRepare();
};
};
} else {
weapon.playNormal();
};
if (units.size() > 0){
_local13 = units.toArray();
for each (_local14 in _local13) {
if (_local14.tick(_arg1)){
units.remove(_local14);
};
};
};
}
}
}//package com.burstyx.bigtree.logic
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.*;
class FlameUnit {
private var shape:DisplayObject;
private var a:Number;
private var heading:Number;
private var scene:Scene;
private var hurt:int;
private var p:Point;
private var R:Number;
private var v0:Number;
private var weapon:Weapon;
private var vt:Number;
private function FlameUnit(_arg1:Weapon, _arg2:Scene){
this.weapon = _arg1;
this.scene = _arg2;
var _local3:WeaponLvParam = _arg1.getLvParam();
hurt = _local3.attack;
R = _local3.splashRange;
heading = (_arg1.getGlobalHeading() + (((20 / 180) * Math.PI) - (((40 / 180) * Math.PI) * Math.random())));
p = _arg2.locationInScene(_arg1.getGlobalPos());
var _local4:Number = _local3.attackRange;
var _local5:Number = (10 + Math.floor((_local4 / 10)));
v0 = ((_local4 / _local5) * 2);
vt = v0;
a = (vt / _local5);
shape = StuffAssetsManager.ins.reflect(("FireUnit" + (_arg1.getLevel() + 1)));
shape.width = (R + 2);
shape.height = (R + 2);
_arg2.addDisplayUnit(shape);
}
public function dispose():void{
if (shape.parent){
shape.parent.removeChild(shape);
};
}
public function tick(_arg1:Array):Boolean{
var _local5:Insect;
p.x = (p.x + (Math.cos(heading) * vt));
p.y = (p.y + (Math.sin(heading) * vt));
vt = (vt - a);
var _local2:Number = (v0 / 2);
var _local3:Number = (1 - (Math.abs((vt - _local2)) / _local2));
if (vt > _local2){
_local3 = (_local3 + 0.5);
};
_local3 = MathUtils.minMax(_local3, 0.01, 1);
var _local4:Number = (R * R);
for each (_local5 in _arg1) {
if (MathUtils.distanceSq(p, _local5.getLocationInner()) < _local4){
if (Math.random() > 0.5){
_local5.hurt(Math.ceil((hurt * _local3)));
} else {
_local5.hurt(Math.floor((hurt * _local3)));
};
_local5.playBomb(weapon.getLvParam().createBombAsset(), _local3);
};
};
shape.x = p.x;
shape.y = p.y;
shape.alpha = _local3;
if (vt <= 0){
if (shape.parent){
shape.parent.removeChild(shape);
};
return (true);
//unresolved jump
};
return (false);
}
}
Section 92
//WeaponStrategyLaser (com.burstyx.bigtree.logic.WeaponStrategyLaser)
package com.burstyx.bigtree.logic {
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.redwave.media.*;
public class WeaponStrategyLaser extends WeaponStrategyBase implements WeaponStrategy {
private var soundLoop:SoundLoop;
private var fireOn:Insect;
public function WeaponStrategyLaser(_arg1:Scene, _arg2:Weapon){
super(_arg1, _arg2);
}
override public function destroy():void{
stopSoundLoop();
}
public function tick(_arg1:Array):void{
var _local8:Insect;
var _local9:int;
var _local10:Number;
var _local11:Number;
weapon.getAttackSubAsset("laser").visible = false;
gunHeart--;
var _local2:int = weapon.getLvParam().attackRange;
var _local3:Number = (_local2 * _local2);
var _local4:Point = scene.locationInScene(weapon.getGlobalPos());
var _local5:Number = _local3;
var _local6:Insect;
var _local7:Point;
if (((fireOn) && ((((((Point.distance(fireOn.getLocation(), _local4) > _local2)) || (!(fireOn.isAlive())))) || (!(fireOn.canHurt())))))){
gunHeart = weapon.getLvParam().attackRate;
stopLaserOn();
fireOn = null;
};
if (fireOn){
_local6 = fireOn;
_local7 = _local6.getLocation();
} else {
for each (_local8 in _arg1) {
_local9 = MathUtils.distanceSq(_local8.getLocationInner(), _local4);
if (_local9 < _local5){
_local5 = _local9;
_local6 = _local8;
_local7 = _local8.getLocation();
};
};
};
if (_local6){
_local10 = Math.atan2((_local7.y - _local4.y), (_local7.x - _local4.x));
_local11 = weapon.getGlobalHeading();
weapon.setHeading((weapon.getHeading() + (_local10 - _local11)));
if (((fireOn) && ((gunHeart <= 0)))){
firedInsect(fireOn, _arg1, false);
gunHeart = 0;
laserOn(Point.distance(fireOn.getLocation(), _local4));
} else {
if (gunHeart <= weapon.getAttackAnimationFrames()){
if (null == fireOn){
gunHeart = weapon.getAttackAnimationFrames();
fireOn = _local6;
weapon.playAttack();
};
} else {
weapon.playAttackRepare();
};
};
} else {
weapon.playNormal();
};
}
private function stopLaserOn():void{
fireOn.getAsset().filters = [];
weapon.getAttackSubAsset("laser").visible = false;
stopSoundLoop();
}
override public function start():void{
}
private function laserOn(_arg1:Number):void{
var _local2:DisplayObject = weapon.getAttackSubAsset("laser");
_local2.visible = true;
_local2.width = (_arg1 + 4);
fireOn.getAsset().filters = _local2.filters;
if (null == soundLoop){
soundLoop = weapon.getParam().playAttackSound(3, 8);
};
soundLoop.goon();
}
private function stopSoundLoop():void{
if (soundLoop){
soundLoop.stop();
soundLoop = null;
};
}
}
}//package com.burstyx.bigtree.logic
Section 93
//WeaponStrategyMulti (com.burstyx.bigtree.logic.WeaponStrategyMulti)
package com.burstyx.bigtree.logic {
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class WeaponStrategyMulti extends WeaponStrategyBase implements WeaponStrategy {
private var firing:Boolean;// = false
public function WeaponStrategyMulti(_arg1:Scene, _arg2:Weapon){
super(_arg1, _arg2);
}
private function firedMulti(_arg1:Array, _arg2:Array):void{
var _local3:Insect;
for each (_local3 in _arg1) {
firedInsect(_local3, _arg2, false);
};
weapon.getParam().playAttackSound();
}
public function tick(_arg1:Array):void{
var _local8:Insect;
var _local9:MovieClip;
gunHeart--;
var _local2:WeaponLvParam = weapon.getLvParam();
var _local3:Boolean;
var _local4:int = weapon.getLvParam().attackRange;
var _local5:Number = (weapon.getLvParam().attackRange * _local4);
var _local6:Point = scene.locationInScene(weapon.getGlobalPos());
var _local7:Array = [];
for each (_local8 in _arg1) {
if (MathUtils.distanceSq(_local8.getLocationInner(), _local6) < _local5){
_local7.push(_local8);
};
};
if (_local7.length > 0){
if (gunHeart <= 0){
firedMulti(_local7, _arg1);
_local9 = (weapon.getAttackSubAsset("bomb") as MovieClip);
_local9.width = (_local4 * 2);
_local9.height = (_local4 * 2);
_local9.play();
};
weapon.playAttackRepare(false);
} else {
weapon.playNormal();
};
}
}
}//package com.burstyx.bigtree.logic
Section 94
//WeaponStrategyRocket (com.burstyx.bigtree.logic.WeaponStrategyRocket)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class WeaponStrategyRocket extends WeaponStrategyBase implements WeaponStrategy {
private var fireOn:Insect;
private var rockets:HashSet;
public function WeaponStrategyRocket(_arg1:Scene, _arg2:Weapon){
super(_arg1, _arg2);
rockets = new HashSet();
}
override public function destroy():void{
var _local2:Rocket;
var _local1:Array = rockets.toArray();
for each (_local2 in _local1) {
_local2.dispose();
};
rockets.clear();
}
private function rocketInsect(_arg1:Insect):void{
rockets.add(new Rocket(weapon, scene, _arg1));
weapon.getParam().playAttackSound();
}
public function tick(_arg1:Array):void{
var _local8:Insect;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Array;
var _local14:Rocket;
gunHeart--;
var _local2:int = weapon.getLvParam().attackRange;
var _local3:Number = (_local2 * _local2);
var _local4:Point = scene.locationInScene(weapon.getGlobalPos());
var _local5:Number = Number.MAX_VALUE;
var _local6:Insect;
var _local7:Point;
if (((fireOn) && (((!(fireOn.isAlive())) || (!(fireOn.canHurt())))))){
fireOn = null;
};
if (fireOn){
_local6 = fireOn;
_local7 = _local6.getLocation();
} else {
for each (_local8 in _arg1) {
_local9 = MathUtils.distanceSq(_local8.getLocationInner(), _local4);
_local10 = _local8.getHealth();
if ((((_local9 < _local3)) && ((_local10 < _local5)))){
_local5 = _local10;
_local6 = _local8;
_local7 = _local8.getLocation();
};
};
};
if (_local6){
_local11 = Math.atan2((_local7.y - _local4.y), (_local7.x - _local4.x));
_local12 = weapon.getGlobalHeading();
weapon.setHeading((weapon.getHeading() + (_local11 - _local12)));
if (((fireOn) && ((gunHeart <= 0)))){
rocketInsect(fireOn);
gunHeart = weapon.getLvParam().attackRate;
fireOn = null;
} else {
if (gunHeart <= weapon.getAttackAnimationFrames()){
if (null == fireOn){
gunHeart = weapon.getAttackAnimationFrames();
fireOn = _local6;
weapon.playAttack();
};
} else {
weapon.playAttackRepare();
};
};
} else {
weapon.playNormal();
};
if (rockets.size() > 0){
_local13 = rockets.toArray();
for each (_local14 in _local13) {
if (_local14.tick(_arg1)){
rockets.remove(_local14);
};
};
};
}
}
}//package com.burstyx.bigtree.logic
import flash.display.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.redwave.media.*;
class Rocket {
private var maxTurnSpeed:Number;
private var splash:int;
private var heading:Number;
private var scene:Scene;
private var hurt:int;
private var movie:MovieClip;
private var target:Insect;
private var location:Point;
private var weapon:Weapon;
private var velocity:Number;
private function Rocket(_arg1:Weapon, _arg2:Scene, _arg3:Insect){
this.weapon = _arg1;
this.scene = _arg2;
this.target = _arg3;
var _local4:WeaponLvParam = _arg1.getLvParam();
splash = _local4.splashRange;
hurt = _local4.attack;
velocity = (5 + (_local4.attackRange / 50));
maxTurnSpeed = ((40 / _local4.attackRate) * (Math.PI / 12));
location = _arg2.locationInScene(_arg1.getGlobalPos());
var _local5:Point = _arg3.getLocation();
heading = Math.atan2((_local5.y - location.y), (_local5.x - location.x));
movie = _local4.createBombAsset();
movie.gotoAndStop(1);
_arg2.addDisplayUnit(movie);
}
private function explode(_arg1:Array, _arg2:Insect):void{
var _local3:Point;
var _local4:Insect;
var _local5:Number;
var _local6:int;
movie.play();
SoundPool.playSectionLoop("sound_explode");
new EnterFrameCall(dispose, (movie.totalFrames - 1)).start();
if (_arg2){
_arg2.hurt(hurt);
};
if (splash > 1){
_local3 = location;
for each (_local4 in _arg1) {
if (_local4 != _arg2){
_local5 = Point.distance(_local4.getLocationInner(), _local3);
if (_local5 < splash){
_local6 = Math.round(((1 - (_local5 / splash)) * hurt));
_local4.hurt(_local6);
};
};
};
};
}
public function tick(_arg1:Array):Boolean{
var _local2:Point;
var _local3:Number;
var _local4:Number;
if (((target.isAlive()) && (target.canHurt()))){
_local2 = target.getLocation();
location.x = (location.x + (Math.cos(heading) * velocity));
location.y = (location.y + (Math.sin(heading) * velocity));
if (Point.distance(location, _local2) <= velocity){
explode(_arg1, target);
return (true);
};
_local3 = Math.atan2((_local2.y - location.y), (_local2.x - location.x));
_local4 = MathUtils.standardAngle((_local3 - heading));
if (_local4 > 0){
heading = (heading + Math.min(maxTurnSpeed, _local4));
} else {
heading = (heading + Math.max(-(maxTurnSpeed), _local4));
};
movie.x = location.x;
movie.y = location.y;
movie.rotation = ((heading / Math.PI) * 180);
} else {
explode(_arg1, null);
return (true);
};
return (false);
}
public function dispose():void{
if (movie.parent){
movie.parent.removeChild(movie);
DisplayUtils.stopAllMC(movie);
};
}
}
Section 95
//WeaponStrategySingle (com.burstyx.bigtree.logic.WeaponStrategySingle)
package com.burstyx.bigtree.logic {
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class WeaponStrategySingle extends WeaponStrategyBase implements WeaponStrategy {
private var fireOn:Insect;
public function WeaponStrategySingle(_arg1:Scene, _arg2:Weapon){
super(_arg1, _arg2);
}
public function tick(_arg1:Array):void{
var _local8:Insect;
var _local9:Number;
var _local10:Number;
var _local11:Number;
gunHeart--;
var _local2:int = weapon.getLvParam().attackRange;
var _local3:Number = (_local2 * _local2);
var _local4:Point = scene.locationInScene(weapon.getGlobalPos());
var _local5:Number = _local3;
var _local6:Insect;
var _local7:Point;
if (((fireOn) && (((!(fireOn.isAlive())) || (!(fireOn.canHurt())))))){
fireOn = null;
};
if (fireOn){
_local6 = fireOn;
_local7 = _local6.getLocation();
} else {
for each (_local8 in _arg1) {
_local9 = MathUtils.distanceSq(_local8.getLocationInner(), _local4);
if (_local9 < _local5){
_local5 = _local9;
_local6 = _local8;
_local7 = _local8.getLocation();
};
};
};
if (_local6){
_local10 = Math.atan2((_local7.y - _local4.y), (_local7.x - _local4.x));
_local11 = weapon.getGlobalHeading();
weapon.setHeading((weapon.getHeading() + (_local10 - _local11)));
if (((fireOn) && ((gunHeart <= 0)))){
firedInsect(fireOn, _arg1);
fireOn = null;
} else {
if (gunHeart <= weapon.getAttackAnimationFrames()){
if (null == fireOn){
gunHeart = weapon.getAttackAnimationFrames();
fireOn = _local6;
weapon.playAttack();
};
} else {
weapon.playAttackRepare();
};
};
} else {
weapon.playNormal();
};
}
}
}//package com.burstyx.bigtree.logic
Section 96
//CreditUI (com.burstyx.bigtree.ui.CreditUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
import com.redwave.media.*;
import com.redwave.metrics.*;
import com.redwave.*;
import com.redwave.ui.*;
public class CreditUI implements UserInterface {
private var game:Game;
private var ratioSound:RatioBoolean;
private var ratioHP:RatioBoolean;
private var ratioMusic:RatioBoolean;
private var qualities:Array;
private var asset:MovieClip;
private var backButton:SimpleButton;
private var ratioQuality:RatioGroup;
public function CreditUI(){
qualities = [StageQuality.LOW.toLowerCase(), StageQuality.MEDIUM.toLowerCase(), StageQuality.HIGH.toLowerCase()];
super();
asset = FlaEmbed.reflect("SetMC");
var _local1:ChildFetcher = new ChildFetcher(asset);
backButton = _local1.fetch("backButton");
ratioHP = new RatioBoolean([_local1.fetch("hpOnMC"), _local1.fetch("hpOffMC")]);
ratioMusic = new RatioBoolean([_local1.fetch("musicOnMC"), _local1.fetch("musicOffMC")]);
ratioSound = new RatioBoolean([_local1.fetch("soundOnMC"), _local1.fetch("soundOffMC")]);
ratioQuality = new RatioGroup([_local1.fetch("qLowMC"), _local1.fetch("qMediumMC"), _local1.fetch("qHighMC")]);
backButton.addEventListener(MouseEvent.CLICK, __back);
ratioQuality.addSectionHandler(__commiteSetting);
ratioMusic.addSectionHandler(__commiteSetting);
ratioSound.addSectionHandler(__commiteSetting);
ratioHP.addSectionHandler(__commiteSetting);
}
private function __commiteSetting(_arg1=null):void{
GameSetting.insectHPOn = ratioHP.isOn();
GameSetting.musicOn = ratioMusic.isOn();
GameSetting.soundOn = ratioSound.isOn();
var _local2:String = qualities[ratioQuality.getSelectedIndex()];
game.getStage().quality = _local2;
SoundPool.setVolumnBase((GameSetting.musicOn) ? 1 : 0, SoundPool.TYPE_MUSIC);
SoundPool.setVolumnBase((GameSetting.soundOn) ? 1 : 0, SoundPool.TYPE_FX);
}
private function __back(_arg1:MouseEvent):void{
destroy();
}
public function destroy():void{
offWorld();
DisplayUtils.stopAllMC(asset);
game = null;
}
public function init(_arg1:Game):void{
this.game = _arg1;
ratioHP.setOn(GameSetting.insectHPOn);
ratioMusic.setOn(GameSetting.musicOn);
ratioSound.setOn(GameSetting.soundOn);
var _local2:String = _arg1.getStage().quality.toLowerCase();
ratioQuality.setSelectedIndex(ArrayUtils.indexInArray(qualities, _local2));
GAMetrics.trackPageview("/CreditUI");
StartUI.playUIMusic();
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
public function offWorld():void{
if (asset.parent){
asset.parent.removeChild(asset);
};
}
}
}//package com.burstyx.bigtree.ui
Section 97
//EquipUI (com.burstyx.bigtree.ui.EquipUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.greensock.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
import flash.net.*;
import flash.text.*;
import com.redwave.metrics.*;
import com.redwave.*;
import com.greensock.easing.*;
import com.redwave.game.*;
public class EquipUI implements UserInterface {
private var tiles:Array;
private var rangeText:TextField;
private var speedText:TextField;
private var attackText:TextField;
private var priceText:TextField;
private var tile12Cover:MovieClip;
private var splashText:TextField;
private var equipTiles:Array;
private var introText:TextField;
private var goButton:SimpleButton;
private var goHandler:Function;
private var tile12:MovieClip;
private var weapons:Array;
private var pointText:TextField;
private var backHandler:Function;
private var asset:MovieClip;
private var game:Game;
private var backButton:SimpleButton;
public function EquipUI(_arg1:Function, _arg2:Function){
this.goHandler = _arg1;
this.backHandler = _arg2;
asset = FlaEmbed.reflect("EquipMC");
var _local3:ChildFetcher = new ChildFetcher(asset);
pointText = _local3.fetch("pointText");
goButton = _local3.fetch("goButton");
backButton = _local3.fetch("backButton");
introText = _local3.fetch("introText");
priceText = _local3.fetch("tpriceText");
attackText = _local3.fetch("attackText");
splashText = _local3.fetch("splashText");
speedText = _local3.fetch("speedText");
rangeText = _local3.fetch("rangeText");
tile12Cover = _local3.fetch("tile12Cover");
tile12 = _local3.fetch("tile12");
}
public function gotoSponsorBigTree():void{
navigateToURL(new URLRequest("http://www.candystand.com/play/bigtree-defense?utm_source=bigtree-defense&utm_medium=link&utm_campaign=bigtree-defense-vrl"), "_blank");
}
public function destroy():void{
if (asset.parent){
game.getWorld().layerUI().removeChild(asset);
DisplayUtils.stopAllMC(asset);
};
}
public function removeEquip(_arg1:WeaponParam):void{
var _local2:EquipTile = getEquipTile(_arg1.number);
var _local3:Tile = tiles[_arg1.number];
game.getEquipsManager().setWeaponArmed(_arg1.number, false);
motion(_arg1, _local2.getIconLocation(), _local3.getIconLocation());
synEquipTiles();
_local3.updateStatus();
}
public function addEquip(_arg1:WeaponParam):Boolean{
if (isFullEquipt()){
game.showMessageBox(Loc.s("EquipUI.addEquip"));
return (false);
};
var _local2:int = _arg1.number;
var _local3:Tile = tiles[_local2];
game.getEquipsManager().setWeaponArmed(_arg1.number, true);
synEquipTiles();
_local3.updateStatus();
var _local4:EquipTile = getEquipTile(_local2);
motion(_arg1, _local3.getIconLocation(), _local4.getIconLocation());
return (true);
}
public function getWeapon(_arg1:int):WeaponParam{
var _local2:WeaponParam;
for each (_local2 in weapons) {
if (_local2.number == _arg1){
return (_local2);
};
};
return (null);
}
public function init(_arg1:Game):void{
var _local4:MovieClip;
this.game = _arg1;
weapons = WeaponListProperties.ins.getWeapons();
var _local2:int = _arg1.getEquipsManager().getPoint();
pointText.text = (_local2 + "");
var _local3:ChildFetcher = new ChildFetcher(asset);
tiles = [];
var _local5:int;
while (_local5 < 13) {
_local4 = _local3.fetch(("tile" + _local5));
tiles.push(new Tile(this, _arg1, _local4, _local5));
_local5++;
};
equipTiles = [];
_local5 = 0;
while (_local5 < 7) {
_local4 = _local3.fetch(("equip" + _local5));
equipTiles.push(new EquipTile(this, _arg1, _local4, _local5));
_local5++;
};
synEquipTiles();
tile12Cover.visible = !(SponsorManager.ins.isPrimaryHosted());
tile12Cover.buttonMode = true;
tile12Cover.useHandCursor = true;
tile12Cover.addEventListener(MouseEvent.ROLL_OVER, __overCS);
tile12Cover.addEventListener(MouseEvent.ROLL_OUT, __outCS);
tile12Cover.addEventListener(MouseEvent.CLICK, __clickCS);
if (SponsorManager.ins.lockedNonExclusive){
tile12Cover.visible = false;
tile12.visible = false;
};
backButton.addEventListener(MouseEvent.CLICK, __back);
goButton.addEventListener(MouseEvent.CLICK, __go);
showIntro(Loc.s("EquipUI.init"));
GAMetrics.trackPageview("/EquipUI");
StartUI.playUIMusic();
}
private function __clickCS(_arg1:MouseEvent):void{
gotoSponsorBigTree();
}
public function synEquipTiles():void{
var _local3:EquipTile;
var _local1:Array = game.getEquipsManager().getWeaponsArmed();
var _local2:int;
while (_local2 < equipTiles.length) {
_local3 = equipTiles[_local2];
if (_local1.length > _local2){
_local3.setWeapon(_local1[_local2]);
} else {
_local3.setWeapon(null);
};
_local2++;
};
}
private function __overCS(_arg1:MouseEvent):void{
showIntro(Loc.s("EquipUI.exclusiveCS"));
}
private function motion(_arg1:WeaponParam, _arg2:Point, _arg3:Point):void{
var _local4:DisplayObject = _arg1.createAssetIcon();
asset.addChild(_local4);
_local4.x = _arg2.x;
_local4.y = _arg2.y;
TweenLite.to(_local4, 1, {alpha:0.5, x:_arg3.x, y:_arg3.y, ease:Back.easeOut, onComplete:__onFinishTween, onCompleteParams:[_local4]});
}
private function __back(_arg1:MouseEvent):void{
game.getEquipsManager().save();
destroy();
backHandler();
}
private function __go(_arg1:MouseEvent):void{
var _local2:Array = game.getEquipsManager().getWeaponsArmed();
if (_local2.length <= 0){
game.showMessageBox(Loc.s("EquipUI.__go"));
} else {
game.getEquipsManager().save();
destroy();
goHandler();
};
}
public function updatePoint():void{
var _local1:int = game.getEquipsManager().getPoint();
pointText.text = (_local1 + "");
}
private function __onFinishTween(_arg1:DisplayObject):void{
asset.removeChild(_arg1);
}
private function __outCS(_arg1:MouseEvent):void{
showIntro("");
}
public function offWorld():void{
game.getWorld().layerUI().removeChild(asset);
}
public function showIntro(_arg1:String, _arg2:WeaponParam=null, _arg3:int=0):void{
var _local5:WeaponLvParam;
var _local6:StuffInformation;
introText.text = _arg1;
var _local4 = !((_arg2 == null));
priceText.visible = _local4;
attackText.visible = _local4;
speedText.visible = _local4;
splashText.visible = _local4;
rangeText.visible = _local4;
if (((_arg2) && ((_arg3 > 0)))){
_local5 = _arg2.getLevelParam((_arg3 - 1));
_local6 = new StuffInformation(_local5.price, "", "", _local5.attack, _local5.splashRange, _local5.attackRate, _local5.attackRange, (((_local5.attackEffect == AttackEffect.SLOWER)) || ((_local5.attackEffect == AttackEffect.MULTI_SLOWER))));
if (_arg3 == 1){
priceText.text = (Loc.s("EquipUI.waterprice") + _local6.cost);
} else {
priceText.text = (Loc.s("EquipUI.upgradingprice") + _local6.cost);
};
attackText.text = _local6.attack;
speedText.text = _local6.speed;
splashText.text = _local6.splash;
rangeText.text = _local6.range;
};
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
private function getEquipTile(_arg1:int):EquipTile{
var _local2:EquipTile;
for each (_local2 in equipTiles) {
if (_local2.getWeaponID() == _arg1){
return (_local2);
};
};
return (null);
}
private function isFullEquipt():Boolean{
var _local1:EquipTile = equipTiles[(equipTiles.length - 1)];
return ((_local1.getWeaponID() >= 0));
}
}
}//package com.burstyx.bigtree.ui
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
import flash.text.*;
import com.redwave.game.*;
class Tile {
private var introText:TextField;
private var equipButton:SimpleButton;
private var bg:MovieClip;
private var iconMC:MovieClip;
private var ui:EquipUI;
private var mc:MovieClip;
private var buyButton:SimpleButton;
private var nameText:TextField;
private var weapon:WeaponParam;
private var manager:EquipsManager;
private var upgradeButton:SimpleButton;
private var game:Game;
private function Tile(_arg1:EquipUI, _arg2:Game, _arg3:MovieClip, _arg4:int){
this.ui = _arg1;
this.game = _arg2;
this.mc = _arg3;
manager = _arg2.getEquipsManager();
weapon = WeaponListProperties.ins.getWeapons()[_arg4];
var _local5:ChildFetcher = new ChildFetcher(_arg3);
nameText = _local5.fetch("nameText");
iconMC = _local5.fetch("iconMC");
introText = _local5.fetch("introText");
equipButton = _local5.fetch("equipButton");
buyButton = _local5.fetch("buyButton");
upgradeButton = _local5.fetch("upgradeButton");
bg = _local5.fetch("bg");
nameText.mouseEnabled = false;
iconMC.mouseChildren = false;
iconMC.mouseEnabled = false;
introText.mouseEnabled = false;
nameText.text = weapon.name;
iconMC.addChild(weapon.createAssetIcon());
introText.text = weapon.intro;
equipButton.addEventListener(MouseEvent.CLICK, __equip);
buyButton.addEventListener(MouseEvent.CLICK, __buy);
buyButton.addEventListener(MouseEvent.ROLL_OVER, __overBuy);
buyButton.addEventListener(MouseEvent.ROLL_OUT, __out);
upgradeButton.addEventListener(MouseEvent.CLICK, __buy);
upgradeButton.addEventListener(MouseEvent.ROLL_OVER, __over);
upgradeButton.addEventListener(MouseEvent.ROLL_OUT, __out);
equipButton.addEventListener(MouseEvent.ROLL_OVER, __overE);
equipButton.addEventListener(MouseEvent.ROLL_OUT, __outE);
bg.addEventListener(MouseEvent.ROLL_OVER, __overI);
bg.addEventListener(MouseEvent.ROLL_OUT, __outI);
updateStatus();
}
private function __overBuy(_arg1:MouseEvent):void{
var _local2:int = manager.getWeaponValidLevel(weapon.number);
var _local3:int = manager.getBuyPrice(weapon.number);
var _local4 = "";
if (_local2 < 5){
_local4 = ((Loc.s("EquipUI.__overBuy1") + _local3) + Loc.s("EquipUI.__over3"));
ui.showIntro((((weapon.name + " : ") + "\n") + _local4), weapon, (_local2 + 1));
} else {
_local4 = Loc.s("EquipUI.__over4");
ui.showIntro((((weapon.name + " : ") + "\n") + _local4), weapon, _local2);
};
}
public function getIconLocation():Point{
return (new Point((mc.x + iconMC.x), (mc.y + iconMC.y)));
}
private function __equip(_arg1:MouseEvent):void{
ui.addEquip(weapon);
}
private function __overE(_arg1:MouseEvent):void{
ui.showIntro(Loc.s("EquipUI.__overE"));
}
private function __overI(_arg1:MouseEvent):void{
var _local2:int = manager.getWeaponValidLevel(weapon.number);
var _local3 = "";
if (_local2 <= 0){
_local3 = Loc.s("EquipUI.__overI1");
} else {
_local3 = ((Loc.s("EquipUI.__overI2") + _local2) + Loc.s("EquipUI.__overI3"));
};
ui.showIntro((((((weapon.name + " : ") + weapon.intro) + "\n(") + _local3) + ")"), weapon, 1);
}
private function __outE(_arg1:MouseEvent):void{
ui.showIntro("");
}
private function __outI(_arg1:MouseEvent):void{
ui.showIntro("");
}
private function __gotoExclusive(_arg1:Boolean):void{
if (_arg1){
ui.gotoSponsorBigTree();
};
}
private function __buy(_arg1:MouseEvent):void{
var _local2:String;
if ((((weapon.number == 12)) && (!(SponsorManager.ins.isPrimaryHosted())))){
game.showMessageBox(Loc.s("EquipUI.exclusiveCS"), __gotoExclusive, true);
return;
};
if (manager.getWeaponValidLevel(weapon.number) < 5){
_local2 = manager.upgradeWeapon(weapon.number);
if (_local2){
game.showMessageBox(_local2);
return;
};
updateStatus();
ui.updatePoint();
__over(null);
};
}
private function __off(_arg1:MouseEvent):void{
ui.removeEquip(weapon);
}
public function updateStatus():void{
var _local1:Boolean = manager.isWeaponArmed(weapon.number);
var _local2:int = manager.getWeaponValidLevel(weapon.number);
equipButton.visible = ((!(_local1)) && ((_local2 > 0)));
iconMC.alpha = (((_local1) && ((_local2 > 0)))) ? 0.5 : 1;
upgradeButton.visible = (_local2 > 0);
buyButton.visible = (_local2 <= 0);
if (_local2 >= 5){
upgradeButton.enabled = false;
upgradeButton.alpha = 0.3;
};
if (_local2 == 0){
introText.text = (Loc.s("EquipUI.updateStatus1") + manager.getBuyPrice(weapon.number));
} else {
if (_local2 < 5){
introText.text = (((Loc.s("EquipUI.updateStatus2") + _local2) + Loc.s("EquipUI.updateStatus1")) + manager.getBuyPrice(weapon.number));
} else {
introText.text = Loc.s("EquipUI.updateStatus3");
};
};
}
private function __over(_arg1:MouseEvent):void{
var _local2:int = manager.getWeaponValidLevel(weapon.number);
var _local3:int = manager.getBuyPrice(weapon.number);
var _local4 = "";
if (_local2 < 5){
_local4 = ((((Loc.s("EquipUI.__over1") + (_local2 + 1)) + Loc.s("EquipUI.__over2")) + _local3) + Loc.s("EquipUI.__over3"));
ui.showIntro((((weapon.name + " : ") + "\n") + _local4), weapon, (_local2 + 1));
} else {
_local4 = Loc.s("EquipUI.__over4");
ui.showIntro((((weapon.name + " : ") + "\n") + _local4), weapon, _local2);
};
}
private function __out(_arg1:MouseEvent):void{
ui.showIntro("");
}
}
class EquipTile {
private var icon:DisplayObject;
private var manager:EquipsManager;
private var iconMC:MovieClip;
private var ui:EquipUI;
private var mc:MovieClip;
private var game:Game;
private var weapon:WeaponParam;
private var removeButton:SimpleButton;
private function EquipTile(_arg1:EquipUI, _arg2:Game, _arg3:MovieClip, _arg4:int){
this.ui = _arg1;
this.game = _arg2;
this.mc = _arg3;
iconMC = DisplayUtils.getC(_arg3, "iconMC");
removeButton = DisplayUtils.getC(_arg3, "removeButton");
manager = _arg2.getEquipsManager();
removeButton.addEventListener(MouseEvent.CLICK, __off);
removeButton.addEventListener(MouseEvent.ROLL_OVER, __over);
removeButton.addEventListener(MouseEvent.ROLL_OUT, __over);
iconMC.addEventListener(MouseEvent.ROLL_OVER, __overI);
iconMC.addEventListener(MouseEvent.ROLL_OUT, __out);
setWeapon(null);
}
public function getWeaponID():int{
if (weapon){
return (weapon.number);
};
return (-1);
}
private function __off(_arg1:MouseEvent):void{
if (weapon){
ui.removeEquip(weapon);
};
}
public function getIconLocation():Point{
return (new Point(mc.x, mc.y));
}
private function __out(_arg1:MouseEvent):void{
ui.showIntro("");
}
private function __overI(_arg1:MouseEvent):void{
var _local2:int;
var _local3:String;
if (weapon){
_local2 = manager.getWeaponValidLevel(weapon.number);
_local3 = "";
if (_local2 <= 0){
_local3 = Loc.s("EquipUI.__overI1");
} else {
_local3 = ((Loc.s("EquipUI.__overI2") + _local2) + Loc.s("EquipUI.__overI3"));
};
ui.showIntro((((((weapon.name + " : ") + weapon.intro) + "\n(") + _local3) + ")"), weapon, 1);
};
}
public function setWeapon(_arg1:WeaponParam):void{
weapon = _arg1;
if (icon){
iconMC.removeChild(icon);
icon = null;
};
if (_arg1){
icon = _arg1.createAssetIcon();
iconMC.addChild(icon);
};
mc.mouseEnabled = !((_arg1 == null));
mc.mouseChildren = !((_arg1 == null));
removeButton.visible = !((_arg1 == null));
}
private function __over(_arg1:MouseEvent):void{
ui.showIntro(Loc.s("EquipUI.removeweapon"));
}
}
Section 98
//GameOverUI (com.burstyx.bigtree.ui.GameOverUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.redwave.portal.*;
import com.burstyx.bigtree.*;
import mochi.as3.*;
import com.greensock.*;
import com.redwave.util.*;
import flash.text.*;
import com.redwave.metrics.*;
import com.redwave.*;
import com.greensock.easing.*;
import com.redwave.game.*;
import cn.googleads.*;
public class GameOverUI implements UserInterface {
private var backButton:SimpleButton;
private var tScoreText:TextField;
private var breakMC:MovieClip;
private var recordText:TextField;
private var scoreText:TextField;
private var restartButton:SimpleButton;
private var submitButton:SimpleButton;
private var asset:MovieClip;
private var pointsText:TextField;
private var adsClip:MovieClip;
private var game:Game;
public function GameOverUI(){
asset = FlaEmbed.reflect("LoseMC");
var _local1:ChildFetcher = new ChildFetcher(asset);
restartButton = _local1.fetch("restartButton");
backButton = _local1.fetch("backButton");
scoreText = _local1.fetch("scoreText");
pointsText = _local1.fetch("pointsText");
breakMC = _local1.fetch("breakMC");
recordText = _local1.fetch("recordText");
breakMC.visible = false;
submitButton = _local1.fetch("submitButton");
tScoreText = _local1.fetch("tScoreText");
adsClip = _local1.fetch("adsClip");
restartButton.addEventListener(MouseEvent.CLICK, __restart);
backButton.addEventListener(MouseEvent.CLICK, __back);
submitButton.addEventListener(MouseEvent.CLICK, __submit);
submitButton.visible = SponsorManager.ins.isPrimaryHosted();
}
public function destroy():void{
offWorld();
}
private function __back(_arg1:MouseEvent):void{
destroy();
game.gotoSectionUI();
}
private function __tweened():void{
if (breakMC.visible){
breakMC.gotoAndPlay(1);
};
}
public function init(_arg1:Game):void{
this.game = _arg1;
var _local2:Scene = _arg1.getScene();
var _local3:int = _local2.getKilledWater();
var _local4:int = Math.floor((_local3 * 0.75));
var _local5:int = Math.floor((_local4 / 200));
pointsText.text = (_local5 + "");
scoreText.text = (_local4 + "");
_arg1.getEquipsManager().modifyPoints(_local5);
var _local6:int = _arg1.getEquipsManager().getScore(_local2.getID());
if (_local4 > _local6){
_arg1.getEquipsManager().setScore(_local2.getID(), _local4);
};
if (_local6 > 0){
recordText.text = (Loc.s("GameOverUI.bestrecord") + _local6);
if (_local4 > _local6){
breakMC.visible = true;
};
} else {
recordText.text = "";
};
_arg1.getEquipsManager().save();
tScoreText.text = (_arg1.getEquipsManager().getTotalScore() + "");
TweenLite.from(asset, 1, {y:-(Game.H), ease:Back.easeIn, onComplete:__tweened});
GAMetrics.trackPageview(("/GameOverUI" + _local2.getSectionIndex()));
if (((Loc.isChinesePlayer()) && (!(SponsorManager.ins.isPrimaryHosted())))){
restartButton.visible = false;
backButton.visible = false;
TimerUtils.callLater(__showButtons, 7000);
};
}
public function offWorld():void{
if (asset.parent){
asset.parent.removeChild(asset);
};
}
private function __showButtons(_arg1:String=null):void{
restartButton.visible = true;
backButton.visible = true;
}
private function __restart(_arg1:MouseEvent):void{
destroy();
game.restartScene();
}
public function onWorld():void{
var _local2:AdsParam4399;
game.getWorld().layerUI().addChild(asset);
var _local1:SponsorManager = SponsorManager.ins;
if (((!(_local1.isPrimaryHosted())) && (!(_local1.isArmorgames())))){
if (Loc.isChinesePlayer()){
_local2 = new AdsParam4399("大树防御", 300, 250, "http://dev.4399pk.com/data/introduce/0/91.htm");
_local2.setUniqueAdsSlot(3);
Ads.instance.loadAds(adsClip, _local2, false, null, null, __showButtons);
} else {
MochiAd.showClickAwayAd({clip:adsClip, id:"bac9631ddad29343"});
};
};
}
private function __submit(_arg1:MouseEvent):void{
var _local2:Number = game.getEquipsManager().getTotalScore();
CandyStandAPI.ins.setGameScore(_local2, true);
}
}
}//package com.burstyx.bigtree.ui
Section 99
//GamePassUI (com.burstyx.bigtree.ui.GamePassUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.redwave.portal.*;
import com.burstyx.bigtree.*;
import mochi.as3.*;
import com.greensock.*;
import com.redwave.util.*;
import flash.text.*;
import com.redwave.metrics.*;
import com.redwave.*;
import com.greensock.easing.*;
import com.redwave.game.*;
import cn.googleads.*;
public class GamePassUI implements UserInterface {
private var backButton:SimpleButton;
private var nextButton:SimpleButton;
private var tScoreText:TextField;
private var nextSectionIndex:int;
private var breakMC:MovieClip;
private var recordText:TextField;
private var scoreText:TextField;
private var restartButton:SimpleButton;
private var b_pointsText:TextField;
private var adsClip:MovieClip;
private var asset:MovieClip;
private var submitButton:SimpleButton;
private var game:Game;
private var bonusMC:MovieClip;
private var pointsText:TextField;
public function GamePassUI(){
asset = FlaEmbed.reflect("WinMC");
var _local1:ChildFetcher = new ChildFetcher(asset);
scoreText = _local1.fetch("scoreText");
tScoreText = _local1.fetch("tScoreText");
pointsText = _local1.fetch("pointsText");
restartButton = _local1.fetch("restartButton");
backButton = _local1.fetch("backButton");
nextButton = _local1.fetch("nextButton");
submitButton = _local1.fetch("submitButton");
bonusMC = _local1.fetch("bonusMC");
b_pointsText = _local1.fetch("bonusMC.pointsText");
adsClip = _local1.fetch("adsClip");
breakMC = _local1.fetch("breakMC");
recordText = _local1.fetch("recordText");
breakMC.visible = false;
restartButton.addEventListener(MouseEvent.CLICK, __restart);
backButton.addEventListener(MouseEvent.CLICK, __back);
nextButton.addEventListener(MouseEvent.CLICK, __next);
submitButton.addEventListener(MouseEvent.CLICK, __submit);
submitButton.visible = SponsorManager.ins.isPrimaryHosted();
}
public function destroy():void{
offWorld();
}
private function __tweened():void{
if (breakMC.visible){
breakMC.gotoAndPlay(1);
};
}
private function __back(_arg1:MouseEvent):void{
destroy();
game.gotoSectionUI();
}
public function init(_arg1:Game):void{
this.game = _arg1;
var _local2:Scene = _arg1.getScene();
var _local3:int = _local2.getCapital().getWater();
var _local4:int = _local2.getKilledWater();
var _local5:int = (_local3 + _local4);
var _local6:int = Math.floor((_local5 / 200));
var _local7:int = _local2.getSectionIndex();
var _local8:int;
nextSectionIndex = (_local7 + 1);
if (_local2.getID() == "Infinity"){
nextButton.visible = false;
};
if (_arg1.getEquipsManager().unlockNext(_local7)){
_local8 = _arg1.getEquipsManager().getWinBonus(_local7);
b_pointsText.text = (("+" + _local8) + Loc.s("GamePassUI.points"));
} else {
bonusMC.visible = false;
};
pointsText.text = (_local6 + "");
scoreText.text = (_local5 + "");
_arg1.getEquipsManager().modifyPoints((_local8 + _local6));
var _local9:int = _arg1.getEquipsManager().getScore(_local2.getID());
if (_local5 > _local9){
_arg1.getEquipsManager().setScore(_local2.getID(), _local5);
};
if (_local9 > 0){
recordText.text = (Loc.s("GameOverUI.bestrecord") + _local9);
if (_local5 > _local9){
_arg1.getEquipsManager().setScore(_local2.getID(), _local5);
breakMC.visible = true;
};
} else {
recordText.text = "";
};
_arg1.getEquipsManager().save();
tScoreText.text = (_arg1.getEquipsManager().getTotalScore() + "");
TweenLite.from(asset, 1, {y:-(Game.H), ease:Back.easeIn, onComplete:__tweened});
GAMetrics.trackPageview(("/GamePassUI" + _local2.getSectionIndex()));
if (SponsorManager.ins.isKongregate()){
KongregateAPI.ins.stats.submit("BATTLES_WON", 1);
if (_local7 > 1){
KongregateAPI.ins.stats.submit("BATTLES_UNLOCKED", (_local7 - 1));
};
};
if (((Loc.isChinesePlayer()) && (!(SponsorManager.ins.isPrimaryHosted())))){
restartButton.visible = false;
backButton.visible = false;
nextButton.visible = false;
TimerUtils.callLater(__showButtons, 7000);
};
}
private function __next(_arg1:MouseEvent):void{
destroy();
var _local2:String = SectionInfo.getSectionID(nextSectionIndex);
if (_local2){
game.startSceneID(_local2);
} else {
game.gotoSectionUI();
game.showMessageBox(Loc.s("GamePassUI.__next"));
};
}
public function offWorld():void{
if (asset.parent){
asset.parent.removeChild(asset);
};
}
private function __showButtons(_arg1:String=null):void{
restartButton.visible = true;
backButton.visible = true;
nextButton.visible = true;
}
private function __restart(_arg1:MouseEvent):void{
destroy();
game.restartScene();
}
private function __submit(_arg1:MouseEvent):void{
var _local2:Number = game.getEquipsManager().getTotalScore();
CandyStandAPI.ins.setGameScore(_local2, true);
}
public function onWorld():void{
var _local2:AdsParam4399;
game.getWorld().layerUI().addChild(asset);
var _local1:SponsorManager = SponsorManager.ins;
if (((!(_local1.isPrimaryHosted())) && (!(_local1.isArmorgames())))){
if (Loc.isChinesePlayer()){
_local2 = new AdsParam4399("大树防御", 300, 250, "http://dev.4399pk.com/data/introduce/0/91.htm");
_local2.setUniqueAdsSlot(3);
Ads.instance.loadAds(adsClip, _local2, false, null, null, __showButtons);
} else {
MochiAd.showClickAwayAd({clip:adsClip, id:"bac9631ddad29343"});
};
};
}
}
}//package com.burstyx.bigtree.ui
Section 100
//MessageBox (com.burstyx.bigtree.ui.MessageBox)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
import flash.text.*;
import com.redwave.*;
public class MessageBox implements UserInterface {
private var handler:Function;
private var cancelButton:SimpleButton;
private var msgText:TextField;
private var asset:MovieClip;
private var game:Game;
private var okButton:SimpleButton;
public function MessageBox(_arg1:String, _arg2:Function, _arg3:Boolean=true){
this.handler = _arg2;
asset = FlaEmbed.reflect("MsgBoxMC");
var _local4:ChildFetcher = new ChildFetcher(asset);
okButton = _local4.fetch("okButton");
cancelButton = _local4.fetch("cancelButton");
msgText = _local4.fetch("msgText");
msgText.text = _arg1;
cancelButton.visible = _arg3;
okButton.addEventListener(MouseEvent.CLICK, __ok);
cancelButton.addEventListener(MouseEvent.CLICK, __cancel);
}
public function destroy():void{
offWorld();
DisplayUtils.stopAllMC(asset);
game = null;
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
private function __ok(_arg1:MouseEvent):void{
destroy();
if (null != handler){
handler(true);
};
}
public function init(_arg1:Game):void{
this.game = _arg1;
}
private function __cancel(_arg1:MouseEvent):void{
destroy();
if (null != handler){
handler(false);
};
}
public function offWorld():void{
if (asset.parent){
asset.parent.removeChild(asset);
};
}
}
}//package com.burstyx.bigtree.ui
Section 101
//MovieUI (com.burstyx.bigtree.ui.MovieUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
import com.redwave.media.*;
import com.burstyx.bigtree.editor.*;
import com.redwave.*;
public class MovieUI implements UserInterface {
private var ticker:EnterFrameCallContinuse;
private var sound:SoundLoop;
private var skipButton:SimpleButton;
private var handler:Function;
private var handlerAdvanceFrames:int;
private var asset:MovieClip;
private var game:Game;
public function MovieUI(_arg1:String, _arg2:Boolean=false, _arg3:Function=null, _arg4:int=0){
handler = _arg3;
this.handlerAdvanceFrames = _arg4;
if (_arg2){
asset = FlaEmbed.reflect(_arg1);
} else {
asset = StuffAssetsManager.ins.reflect(_arg1);
};
skipButton = DisplayUtils.getC(asset, "skipButton");
if (skipButton){
skipButton.addEventListener(MouseEvent.CLICK, __skip);
};
ticker = new EnterFrameCallContinuse(__tick, 1);
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
public function init(_arg1:Game):void{
this.game = _arg1;
ticker.start();
}
public function playMusic(_arg1:String):void{
sound = SoundPool.playSectionLoop(_arg1, 10, 50, SoundPool.TYPE_MUSIC, true);
sound.goon(int.MAX_VALUE);
}
private function __skip(_arg1:MouseEvent):void{
ticker.interrupt();
destroy();
}
public function offWorld():void{
if (asset.parent){
asset.parent.removeChild(asset);
};
}
public function destroy():void{
offWorld();
DisplayUtils.stopAllMC(asset);
game = null;
if (sound){
sound.stop();
sound = null;
};
if (null != handler){
handler();
handler = null;
};
}
private function __tick():void{
if ((asset.currentFrame + handlerAdvanceFrames) >= asset.totalFrames){
if (null != handler){
handler();
handler = null;
};
};
if (asset.currentFrame == asset.totalFrames){
destroy();
ticker.interrupt();
};
}
}
}//package com.burstyx.bigtree.ui
Section 102
//NextWaveUI (com.burstyx.bigtree.ui.NextWaveUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
import flash.text.*;
import com.redwave.*;
public class NextWaveUI implements UserInterface {
private var asset:MovieClip;
private var game:Game;
public function NextWaveUI(_arg1:int, _arg2:int, _arg3:int=0){
var _local4:String;
var _local5:TextField;
super();
if (_arg3 > 0){
_local4 = "InfinitywaveMC";
} else {
if (_arg1 == 0){
_local4 = "FirstwaveMC";
} else {
if (_arg1 == (_arg2 - 1)){
_local4 = "LastwaveMC";
} else {
_local4 = "NextwaveMC";
};
};
};
asset = FlaEmbed.reflect(_local4);
if (_arg3 > 0){
_local5 = DisplayUtils.getC(asset, "numMC.numText");
_local5.text = ("+" + _arg3);
};
}
public function destroy():void{
offWorld();
DisplayUtils.stopAllMC(asset);
game = null;
}
public function offWorld():void{
if (asset.parent){
asset.parent.removeChild(asset);
};
}
public function init(_arg1:Game):void{
this.game = _arg1;
new GameEnterFrameNum(null, 1, asset.totalFrames, __complete).start();
}
private function __complete():void{
destroy();
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
}
}//package com.burstyx.bigtree.ui
Section 103
//PausedUI (com.burstyx.bigtree.ui.PausedUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
import com.redwave.media.*;
import com.redwave.metrics.*;
import com.redwave.*;
import com.redwave.ui.*;
public class PausedUI implements UserInterface {
private var ratioSound:RatioBoolean;
private var ratioHP:RatioBoolean;
private var ratioMusic:RatioBoolean;
private var qualities:Array;
private var restartButton:SimpleButton;
private var asset:MovieClip;
private var game:Game;
private var exitButton:SimpleButton;
private var ratioQuality:RatioGroup;
private var resumeButton:SimpleButton;
public function PausedUI(){
qualities = [StageQuality.LOW.toLowerCase(), StageQuality.MEDIUM.toLowerCase(), StageQuality.HIGH.toLowerCase()];
super();
asset = FlaEmbed.reflect("PausedMC");
var _local1:ChildFetcher = new ChildFetcher(asset);
restartButton = _local1.fetch("restartButton");
resumeButton = _local1.fetch("resumeButton");
exitButton = _local1.fetch("exitButton");
ratioHP = new RatioBoolean([_local1.fetch("hpOnMC"), _local1.fetch("hpOffMC")]);
ratioMusic = new RatioBoolean([_local1.fetch("musicOnMC"), _local1.fetch("musicOffMC")]);
ratioSound = new RatioBoolean([_local1.fetch("soundOnMC"), _local1.fetch("soundOffMC")]);
ratioQuality = new RatioGroup([_local1.fetch("qLowMC"), _local1.fetch("qMediumMC"), _local1.fetch("qHighMC")]);
restartButton.addEventListener(MouseEvent.CLICK, __restart);
resumeButton.addEventListener(MouseEvent.CLICK, __resume);
exitButton.addEventListener(MouseEvent.CLICK, __exit);
ratioQuality.addSectionHandler(__commiteSetting);
ratioMusic.addSectionHandler(__commiteSetting);
ratioSound.addSectionHandler(__commiteSetting);
ratioHP.addSectionHandler(__commiteSetting);
}
public function destroy():void{
offWorld();
DisplayUtils.stopAllMC(asset);
game = null;
}
private function __exit(_arg1:MouseEvent):void{
game.showMessageBox(Loc.s("PausedUI.__exit"), __doExit, true);
}
private function __commiteSetting(_arg1=null):void{
GameSetting.insectHPOn = ratioHP.isOn();
GameSetting.musicOn = ratioMusic.isOn();
GameSetting.soundOn = ratioSound.isOn();
var _local2:String = qualities[ratioQuality.getSelectedIndex()];
game.getStage().quality = _local2;
SoundPool.setVolumnBase((GameSetting.musicOn) ? 1 : 0, SoundPool.TYPE_MUSIC);
SoundPool.setVolumnBase((GameSetting.soundOn) ? 1 : 0, SoundPool.TYPE_FX);
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
private function __resume(_arg1:MouseEvent):void{
game.resume();
}
public function init(_arg1:Game):void{
this.game = _arg1;
ratioHP.setOn(GameSetting.insectHPOn);
ratioMusic.setOn(GameSetting.musicOn);
ratioSound.setOn(GameSetting.soundOn);
var _local2:String = _arg1.getStage().quality.toLowerCase();
ratioQuality.setSelectedIndex(ArrayUtils.indexInArray(qualities, _local2));
GAMetrics.trackPageview("/PausedUI");
}
public function offWorld():void{
if (asset.parent){
asset.parent.removeChild(asset);
};
}
private function __doExit(_arg1:Boolean):void{
if (_arg1){
game.gotoSectionUI();
};
}
private function __doRestart(_arg1:Boolean):void{
if (_arg1){
game.restartScene();
};
}
private function __restart(_arg1:MouseEvent):void{
game.showMessageBox(Loc.s("PausedUI.__restart"), __doRestart, true);
}
}
}//package com.burstyx.bigtree.ui
Section 104
//PlayUI (com.burstyx.bigtree.ui.PlayUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
import com.redwave.media.*;
import com.burstyx.bigtree.control.*;
import flash.text.*;
import com.redwave.*;
public class PlayUI implements UserInterface {
private var curWaveIndex:int;
private var rangeText:TextField;
private var enemyPane:Sprite;
private var speedText:TextField;
private var enemyMC:MovieClip;
private var costMC:DisplayObject;
private var weaponElements:Array;
private var splashText:TextField;
private var insectInfoPane:PlayUIInsectInfo;
private var systemButton:SimpleButton;
private var updateTicker:GameEnterFrame;
private var hpText:TextField;
private var introColor:uint;
private var nameText:TextField;
private var buttonPostions:Array;
private var curElements:Array;
private var earnMC:DisplayObject;
private var scene:Scene;
private var bg2:DisplayObject;
private var bg3:DisplayObject;
private var bg1:DisplayObject;
private var attackText:TextField;
private var costText:TextField;
private var selection:Selectable;
private var buyMC:MovieClip;
private var hpmc:MovieClip;
private var waves:Array;
private var jointElements:Array;
private var lastWave:PlayUIWave;
private var introText:TextField;
private var needUpdateInfos:Boolean;// = false
private var trunkElements:Array;
private var warningSound:SoundLoop;
private var limbElements:Array;
private var waterText:TextField;
private var game:Game;
private var asset:MovieClip;
private var originButton:SimpleButton;
private var speedButton2:SimpleButton;
private var speedButton1:SimpleButton;
public function PlayUI(){
var _local3:SimpleButton;
super();
asset = FlaEmbed.reflect("PlayMC");
var _local1:ChildFetcher = new ChildFetcher(asset);
hpmc = _local1.fetch("hpMC");
hpmc.gotoAndStop(1);
hpText = _local1.fetch("hpMC.hpText");
waterText = _local1.fetch("waterText");
bg1 = _local1.fetch("bg1");
bg2 = _local1.fetch("bg2");
bg3 = _local1.fetch("bg3");
systemButton = _local1.fetch("systemButton");
speedButton1 = _local1.fetch("speedButton1");
speedButton2 = _local1.fetch("speedButton2");
originButton = _local1.fetch("hpMC.originButton");
buyMC = _local1.fetch("buyMC");
costMC = _local1.fetch("buyMC.costMC");
earnMC = _local1.fetch("buyMC.earnMC");
costText = _local1.fetch("buyMC.costText");
nameText = _local1.fetch("buyMC.nameText");
introText = _local1.fetch("buyMC.introText");
introColor = introText.textColor;
attackText = _local1.fetch("buyMC.attackText");
splashText = _local1.fetch("buyMC.splashText");
speedText = _local1.fetch("buyMC.speedText");
rangeText = _local1.fetch("buyMC.rangeText");
buttonPostions = [];
var _local2:int;
while (_local2 < 9) {
_local3 = _local1.fetch(("buyMC.button" + _local2));
buttonPostions.push(new Point(_local3.x, _local3.y));
buyMC.removeChild(_local3);
_local2++;
};
curElements = [];
updateTicker = new GameEnterFrame(__updateTick, 1);
enemyMC = _local1.fetch("enemyMC");
enemyPane = _local1.fetch("enemyMC.enemyPane");
}
private function __origin(_arg1:MouseEvent):void{
game.originScene();
}
public function destroy():void{
if (asset.parent){
game.getWorld().layerUI().removeChild(asset);
};
scene.removeOnHPChanged(__hpChanged);
scene.removeOnNextWave(__nextWave);
scene.removeOnSuccess(__passScene);
scene.removeOnInsectCloned(__insectCloned);
scene.removeOnInsectRemoved(__insectRemoved);
SelectionManager.ins.removeSelectionHandler(__elementSelectionChanged);
scene.getCapital().removeOnChanged(__waterChanged);
updateTicker.interrupt();
updateTicker = null;
scene = null;
}
public function reviewStoredInformation():void{
if (selection){
setInformation(selection.getInformation());
} else {
setInformation(null);
};
}
private function __pause(_arg1:MouseEvent):void{
game.pause();
}
public function init(_arg1:Game):void{
var _local5:WeaponParam;
this.game = _arg1;
scene = _arg1.getScene();
if (null == scene){
throw (new Error("There's no scene in game, PlayUI can't be inited!"));
};
var _local2:int = SectionInfo.getSectionIndex(scene.getID());
if (_local2 < 5){
asset.removeChild(bg2);
asset.removeChild(bg3);
} else {
if (_local2 < 8){
asset.removeChild(bg1);
asset.removeChild(bg3);
} else {
asset.removeChild(bg1);
asset.removeChild(bg2);
};
};
scene.addOnHPChanged(__hpChanged);
scene.addOnNextWave(__nextWave);
scene.addOnSuccess(__passScene);
scene.addOnInsectCloned(__insectCloned);
scene.addOnInsectRemoved(__insectRemoved);
__hpChanged(scene.getTrunk().getHealth(), scene.getTrunk().getHPTotal());
scene.getCapital().addOnChanged(__waterChanged);
__waterChanged(scene.getCapital().getWater());
var _local3:SceneParam = scene.getParam();
trunkElements = [new Buyment(this, FlaEmbed.reflect("UpgradeIcon"), new TrunkUpgradeController(scene)), new Buyment(this, FlaEmbed.reflect("RecoverIcon"), new TrunkRecoverController(scene))];
limbElements = [new Buyment(this, FlaEmbed.reflect("UpgradeIcon"), new LimbUpgradeController(scene))];
jointElements = [new Buyment(this, FlaEmbed.reflect("LeftLimbIcon"), new LimbBuyController(scene, _local3.limbParam, Limb.LEFT)), new Buyment(this, FlaEmbed.reflect("RightLimbIcon"), new LimbBuyController(scene, _local3.limbParam, Limb.RIGHT))];
var _local4:Array = _arg1.getEquipsManager().getWeaponsArmed();
for each (_local5 in _local4) {
jointElements.push(new Buyment(this, _local5.createAssetIcon(), new WeaponBuyController(scene, _local5)));
};
weaponElements = [new Buyment(this, FlaEmbed.reflect("UpgradeIcon"), new WeaponUpgradeController(scene)), new Buyment(this, FlaEmbed.reflect("SellIcon"), new WeaponSellController(scene))];
systemButton.addEventListener(MouseEvent.CLICK, __pause);
originButton.addEventListener(MouseEvent.CLICK, __origin);
speedButton1.addEventListener(MouseEvent.CLICK, __speedButton1);
speedButton2.addEventListener(MouseEvent.CLICK, __speedButton2);
Game.RunSpeed = 1;
speedButton1.visible = false;
SelectionManager.ins.addSelectionHandler(__elementSelectionChanged);
setSelection(null);
updateTicker.start();
initEnemyInfo();
}
private function __passScene():void{
if (lastWave){
lastWave.setRunning(false);
lastWave.setGone();
lastWave = null;
};
}
private function initEnemyInfo():void{
var _local9:int;
var _local10:PlayUIWave;
var _local11:InsectParam;
var _local12:Array;
var _local13:int;
insectInfoPane = new PlayUIInsectInfo(DisplayUtils.getC(enemyMC, "insectInfoPane"));
insectInfoPane.hideInfo();
var _local1:Array = scene.getGroupIndexies();
var _local2:Array = scene.getParam().insectList.getInsects();
var _local3:Number = enemyPane.width;
var _local4:Number = enemyPane.height;
var _local5:Number = 0;
var _local6:Number = 4;
var _local7:Number = 0;
var _local8:Number = 2;
waves = [];
for each (_local9 in _local1) {
_local10 = new PlayUIWave(_local9, _local3, insectInfoPane);
waves[_local9] = _local10;
enemyPane.addChild(_local10.getDisplay());
_local10.getDisplay().x = _local5;
_local10.getDisplay().y = _local6;
for each (_local11 in _local2) {
_local12 = _local11.existLevels;
_local13 = _local12[_local9];
if (_local13 > 0){
_local10.addInsect(_local11, _local13);
};
};
_local6 = (_local6 + (_local10.getHeight() + 4));
};
}
private function viewTrunkElements(_arg1:Trunk):void{
viewElements(trunkElements, _arg1);
}
private function viewLimbElements(_arg1:Limb):void{
viewElements(limbElements, _arg1);
}
private function __zoomin(_arg1:MouseEvent):void{
game.scaleScene(true);
}
private function viewWeaponElements(_arg1:Weapon):void{
viewElements(weaponElements, _arg1);
var _local2:Buyment = curElements[(curElements.length - 1)];
var _local3:BuymentButton = _local2.getButton();
var _local4:Point = buttonPostions[(buttonPostions.length - 1)];
_local3.x = _local4.x;
_local3.y = _local4.y;
}
public function viewInformation(_arg1:StuffInformation):void{
if (null == _arg1){
_arg1 = new StuffInformation(-1, "", "");
};
costText.text = _arg1.cost;
nameText.text = _arg1.name;
introText.text = _arg1.intro;
attackText.text = _arg1.attack;
splashText.text = _arg1.splash;
speedText.text = _arg1.speed;
rangeText.text = _arg1.range;
costMC.visible = !(_arg1.costIsEarn);
earnMC.visible = _arg1.costIsEarn;
if (_arg1.redIntro){
introText.textColor = 0xFF0000;
} else {
introText.textColor = introColor;
};
}
public function setSpeedMode(_arg1:int):void{
if (_arg1 > 1){
Game.RunSpeed = 6;
speedButton1.visible = true;
speedButton2.visible = false;
} else {
Game.RunSpeed = 1;
speedButton1.visible = false;
speedButton2.visible = true;
};
}
public function setSelection(_arg1:Selectable):void{
this.selection = _arg1;
if (_arg1){
if ((_arg1 is Joint)){
viewJointElements((_arg1 as Joint));
} else {
if ((_arg1 is Trunk)){
viewTrunkElements((_arg1 as Trunk));
} else {
if ((_arg1 is Limb)){
viewLimbElements((_arg1 as Limb));
} else {
if ((_arg1 is Weapon)){
viewWeaponElements((_arg1 as Weapon));
} else {
throw (new Error(("Unknow buyment target : " + _arg1)));
};
};
};
};
buyMC.visible = true;
enemyMC.visible = false;
} else {
viewNullElements();
buyMC.visible = false;
enemyMC.visible = true;
};
}
public function offWorld():void{
game.getWorld().layerUI().removeChild(asset);
}
private function setInformation(_arg1:StuffInformation):void{
viewInformation(_arg1);
}
private function __nextWave(_arg1:int):void{
curWaveIndex = _arg1;
if (lastWave){
lastWave.setRunning(false);
lastWave.setGone();
};
lastWave = waves[_arg1];
if (lastWave){
lastWave.setGone(false);
lastWave.setRunning(true);
};
}
private function __insectRemoved(_arg1:Insect, _arg2:int):void{
var _local3:PlayUIWave = waves[_arg2];
if (_local3){
_local3.modifyInsectCount(_arg1.getKey(), -1);
};
}
private function __waterChanged(_arg1:int):void{
waterText.text = (_arg1 + "");
needUpdateInfos = true;
}
private function __insectCloned(_arg1:Insect, _arg2:int):void{
var _local3:PlayUIWave = waves[_arg2];
if (_local3){
_local3.modifyInsectCount(_arg1.getKey(), 1);
};
}
private function __hpChanged(_arg1:int, _arg2:int):void{
hpText.text = ((_arg1 + "/") + _arg2);
var _local3:Number = (_arg1 / _arg2);
var _local4:int = Math.round(((1 - _local3) * hpmc.totalFrames));
if (_local4 < 1){
_local4 = 1;
};
hpmc.gotoAndStop(_local4);
if (selection == scene.getTrunk()){
needUpdateInfos = true;
};
var _local5:MainSoundsProperties = MainSoundsProperties.ins;
if ((((_local4 >= (hpmc.totalFrames - 4))) && ((_arg1 > 0)))){
if (null == warningSound){
warningSound = _local5.playSound(_local5.deathWarning, 5, 10);
};
warningSound.goon((30 * 2), true);
setSpeedMode(1);
} else {
if (warningSound){
warningSound.stop();
warningSound = null;
};
};
}
private function __zoomout(_arg1:MouseEvent):void{
game.scaleScene(false);
}
private function viewElements(_arg1:Array, _arg2:Selectable):void{
var _local3:Buyment;
var _local4:int;
var _local5:BuymentButton;
var _local6:Point;
for each (_local3 in curElements) {
if (_local3.getButton().parent == buyMC){
buyMC.removeChild(_local3.getButton());
};
};
_local4 = 0;
for each (_local3 in _arg1) {
_local5 = _local3.getButton();
_local3.updateStatus(_arg2);
_local6 = buttonPostions[_local4];
if (_local6){
_local5.x = _local6.x;
_local5.y = _local6.y;
buyMC.addChild(_local5);
};
_local4++;
};
curElements = _arg1.concat();
if (_arg2){
setInformation(_arg2.getInformation());
} else {
setInformation(null);
};
}
private function __elementSelectionChanged(_arg1:Selectable):void{
setSelection(_arg1);
}
private function __speedButton1(_arg1:MouseEvent):void{
setSpeedMode(1);
}
private function __speedButton2(_arg1:MouseEvent):void{
setSpeedMode(6);
}
private function viewNullElements():void{
viewElements([], null);
}
private function __updateTick():void{
var _local1:Buyment;
if (needUpdateInfos){
for each (_local1 in curElements) {
_local1.updateStatus(selection);
};
needUpdateInfos = false;
};
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
private function viewJointElements(_arg1:Joint):void{
viewElements(jointElements, _arg1);
}
}
}//package com.burstyx.bigtree.ui
Section 105
//PlayUIInsectInfo (com.burstyx.bigtree.ui.PlayUIInsectInfo)
package com.burstyx.bigtree.ui {
import flash.display.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import flash.text.*;
public class PlayUIInsectInfo {
private var damageText:TextField;
private var waterText:TextField;
private var pane:MovieClip;
private var moveStyles:Array;
private var speedText:TextField;
private var hpText:TextField;
private var moveText:TextField;
public static var strongMul:int = 1;
public function PlayUIInsectInfo(_arg1:MovieClip){
this.pane = _arg1;
hpText = DisplayUtils.getC(_arg1, "hpText");
waterText = DisplayUtils.getC(_arg1, "waterText");
damageText = DisplayUtils.getC(_arg1, "damageText");
speedText = DisplayUtils.getC(_arg1, "speedText");
moveText = DisplayUtils.getC(_arg1, "moveText");
moveStyles = [Loc.s("MoveStyle.straight"), Loc.s("MoveStyle.circle"), Loc.s("MoveStyle.S shape"), Loc.s("MoveStyle.< shape"), Loc.s("MoveStyle.unknown")];
}
public function showInfo(_arg1:InsectParam):void{
hpText.text = ("" + (Math.round((_arg1.HP * Insect.HP_TWEEK)) * strongMul));
waterText.text = ("" + _arg1.water);
damageText.text = ((("" + (_arg1.attack * strongMul)) + "x") + _arg1.attackRange);
speedText.text = ("" + _arg1.moveSpeed);
moveText.text = (moveStyles[_arg1.moveType] + "");
pane.visible = true;
}
public function hideInfo():void{
pane.visible = false;
}
}
}//package com.burstyx.bigtree.ui
Section 106
//PlayUIWave (com.burstyx.bigtree.ui.PlayUIWave)
package com.burstyx.bigtree.ui {
import flash.display.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import flash.text.*;
import com.redwave.*;
import flash.filters.*;
public class PlayUIWave {
private var tiles:HashMap;
private var width:Number;
private var bg:MovieClip;
private var waveIndex:int;
private var countText:TextField;
private var runningObject:DisplayObject;
private var xmargin:Number;// = 8
private var totalCount:int;
private var holder:Sprite;
private var ix:Number;// = 8
private var iy:Number;// = 0
private var insectInfoPane:PlayUIInsectInfo;
public function PlayUIWave(_arg1:int, _arg2:Number, _arg3:PlayUIInsectInfo){
this.waveIndex = _arg1;
this.width = _arg2;
this.insectInfoPane = _arg3;
holder = new Sprite();
holder.mouseEnabled = false;
var _local4:MovieClip = FlaEmbed.reflect("WaveTitle");
_local4.mouseChildren = false;
_local4.mouseEnabled = false;
_local4.x = 2;
var _local5:TextField = DisplayUtils.getC(_local4, "titleText");
countText = DisplayUtils.getC(_local4, "countText");
runningObject = DisplayUtils.getC(_local4, "curText");
bg = DisplayUtils.getC(_local4, "enemyPane");
runningObject.visible = false;
holder.addChild(_local4);
_local5.text = getCharByIndex(_arg1);
countText.text = "";
totalCount = 0;
_local4.x = 4;
iy = ((_local5.y + _local5.height) - 3);
tiles = new HashMap();
}
private function getCharByIndex(_arg1:int):String{
var _local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return (_local2.charAt(_arg1));
}
public function getDisplay():DisplayObject{
return (holder);
}
public function getHeight():Number{
return (bg.height);
}
public function setGone(_arg1:Boolean=true):void{
var _local2:Array;
if (_arg1){
_local2 = new Array();
_local2 = _local2.concat([0.18, 0.18, 0.18, 0, 0]);
_local2 = _local2.concat([0.18, 0.18, 0.18, 0, 0]);
_local2 = _local2.concat([0.18, 0.18, 0.18, 0, 0]);
_local2 = _local2.concat([0, 0, 0, 1, 0]);
holder.filters = [new ColorMatrixFilter(_local2)];
} else {
holder.filters = [];
};
}
public function addInsect(_arg1:InsectParam, _arg2:int):void{
totalCount = (totalCount + _arg2);
countText.text = ("" + totalCount);
var _local3:Number = 0;
var _local4:Number = 3;
var _local5:Tile = new Tile(insectInfoPane, _arg1, _arg2);
var _local6:DisplayObject = _local5.getMC();
var _local7:Number = _local5.getWidth();
var _local8:Number = _local5.getHeight();
holder.addChild(_local6);
if ((ix + _local7) > width){
iy = (iy + (_local8 + _local3));
ix = xmargin;
};
_local6.x = ix;
_local6.y = iy;
ix = (ix + (_local7 + _local4));
tiles.put(_arg1, _local5);
bg.width = ((width - xmargin) + 1);
bg.height = ((iy + _local8) + 2);
}
public function modifyInsectCount(_arg1, _arg2:int):void{
totalCount = (totalCount + _arg2);
countText.text = ("" + totalCount);
var _local3:Tile = tiles.getValue(_arg1);
if (_local3){
_local3.modifyCount(_arg2);
};
}
public function setRunning(_arg1:Boolean):void{
runningObject.visible = _arg1;
}
}
}//package com.burstyx.bigtree.ui
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import flash.text.*;
import com.redwave.*;
class Tile {
private var width:Number;
private var height:Number;
private var pane:MovieClip;
private var count:int;
private var numText:TextField;
private var ins:InsectParam;
private var infoPane:PlayUIInsectInfo;
private function Tile(_arg1:PlayUIInsectInfo, _arg2:InsectParam, _arg3:int){
this.infoPane = _arg1;
this.ins = _arg2;
this.count = _arg3;
pane = FlaEmbed.reflect("InsectNumTile");
pane.mouseEnabled = false;
var _local4:MovieClip = DisplayUtils.getC(pane, "holder");
var _local5:DisplayObject = DisplayUtils.getC(pane, "holder.boundsMC");
width = _local5.width;
height = _local5.height;
numText = DisplayUtils.getC(pane, "numText");
numText.text = ("" + _arg3);
numText.mouseEnabled = false;
var _local6:MovieClip = _arg2.createAsset();
DisplayUtils.stopAllMC(_local6);
if (_local6.width > 200){
_local6.scaleX = (_local6.scaleY = 0.13);
} else {
_local6.scaleX = (_local6.scaleY = 0.5);
};
_local4.addChild(_local6);
_local4.addEventListener(MouseEvent.ROLL_OVER, __over);
_local4.addEventListener(MouseEvent.ROLL_OUT, __out);
}
public function getMC():DisplayObject{
return (pane);
}
public function getHeight():Number{
return (height);
}
private function __over(_arg1:MouseEvent):void{
infoPane.showInfo(ins);
}
public function modifyCount(_arg1:int):void{
count = (count + _arg1);
numText.text = ("" + count);
}
private function __out(_arg1:MouseEvent):void{
infoPane.hideInfo();
}
public function getWidth():Number{
return (width);
}
}
Section 107
//SectionUI (com.burstyx.bigtree.ui.SectionUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.redwave.portal.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
import flash.text.*;
import com.redwave.*;
import com.redwave.game.*;
public class SectionUI implements UserInterface {
private var tiles:Array;
private var totalLeaderID:String;// = "41214912ab509735"
private var totalRankButton:SimpleButton;
private var submitText:TextField;
private var asset:MovieClip;
private var menuButton:SimpleButton;
private var game:Game;
private var totalScoreText:TextField;
public function SectionUI(){
asset = FlaEmbed.reflect("SectionMC");
var _local1:ChildFetcher = new ChildFetcher(asset);
totalScoreText = _local1.fetch("totalScoreText");
totalRankButton = _local1.fetch("totalRankButton");
menuButton = _local1.fetch("menuButton");
submitText = _local1.fetch("submitText");
totalScoreText.mouseEnabled = false;
}
public function destroy():void{
if (asset.parent){
game.getWorld().layerUI().removeChild(asset);
DisplayUtils.stopAllMC(asset);
};
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
private function __rank(_arg1:MouseEvent):void{
var _local3:int;
var _local2:Number = game.getEquipsManager().getTotalScore();
if (SponsorManager.ins.isArmorgames()){
if (game.getEquipsManager().isBeatGame()){
_local3 = game.getEquipsManager().getRankedScore("totalScore");
if (_local3 < _local2){
ArmorgamesAPI.showScoreSubmit(_local2);
game.getEquipsManager().setRankedScore("totalScore", _local2);
return;
};
};
ArmorgamesAPI.showLeaderboard();
} else {
if (SponsorManager.ins.isPrimaryHosted()){
CandyStandAPI.ins.setGameScore(_local2, true);
} else {
new RankWindow(game, totalLeaderID, "totalScore", _local2);
};
};
}
private function updateSubmitButton():void{
if (submitText){
submitText.mouseEnabled = false;
};
}
public function init(_arg1:Game):void{
this.game = _arg1;
var _local2:ChildFetcher = new ChildFetcher(asset);
tiles = [];
var _local3:Array = SectionInfo.getAllSections();
tiles.push(new Tile(_arg1, this, _local2.fetch("levelStoryBegin"), _local3[0]));
tiles.push(new Tile(_arg1, this, _local2.fetch("levelTutorial"), _local3[1]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level11"), _local3[2]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level12"), _local3[3]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level13"), _local3[4]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level21"), _local3[5]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level22"), _local3[6]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level23"), _local3[7]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level31"), _local3[8]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level32"), _local3[9]));
tiles.push(new Tile(_arg1, this, _local2.fetch("level33"), _local3[10]));
tiles.push(new Tile(_arg1, this, _local2.fetch("levelStoryEnd"), _local3[11]));
tiles.push(new Tile(_arg1, this, _local2.fetch("levelInfinity"), _local3[12]));
totalScoreText.text = (_arg1.getEquipsManager().getTotalScore() + "");
totalRankButton.addEventListener(MouseEvent.CLICK, __rank);
menuButton.addEventListener(MouseEvent.CLICK, __menu);
StartUI.playUIMusic();
updateSubmitButton();
}
public function offWorld():void{
game.getWorld().layerUI().removeChild(asset);
}
private function __menu(_arg1:MouseEvent):void{
game.gotoStartUI();
}
}
}//package com.burstyx.bigtree.ui
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import mochi.as3.*;
import com.redwave.util.*;
import flash.text.*;
import com.redwave.*;
import com.redwave.game.*;
class Tile {
private var rankButton:SimpleButton;
private var section:SectionInfo;
private var coverMC:DisplayObject;
private var game:Game;
private var startButton:SimpleButton;
private var mc:MovieClip;
private var score:Number;
private var ui:SectionUI;
private var scoreText:TextField;
private function Tile(_arg1:Game, _arg2:SectionUI, _arg3:MovieClip, _arg4:SectionInfo){
this.game = _arg1;
this.ui = _arg2;
this.mc = _arg3;
this.section = _arg4;
var _local5:ChildFetcher = new ChildFetcher(_arg3);
coverMC = _local5.fetch("coverMC");
startButton = _local5.fetch("startButton");
scoreText = _local5.fetch("scoreText");
rankButton = _local5.fetch("rankButton");
var _local6 = (_arg1.getEquipsManager().getUnlockedIndex() >= SectionInfo.getSectionIndex(_arg4.sectionID));
coverMC.visible = !(_local6);
_arg3.mouseChildren = _local6;
if (scoreText){
score = _arg1.getEquipsManager().getScore(_arg4.sectionID);
scoreText.text = (score + "");
rankButton.addEventListener(MouseEvent.CLICK, __rank);
if (((SponsorManager.ins.isPrimaryHosted()) || (SponsorManager.ins.isArmorgames()))){
rankButton.visible = false;
};
};
startButton.addEventListener(MouseEvent.CLICK, __start);
}
private function __start(_arg1:MouseEvent):void{
ui.destroy();
game.startSceneID(section.sectionID);
}
private function __rank(_arg1:MouseEvent):void{
new RankWindow(game, section.leaderboardId, section.sectionID, score);
}
}
class RankWindow {
private var sectionID:String;
private var loadingRank:DisplayObject;
private var errored:Boolean;// = false
private var score:int;
private var game:Game;
private function RankWindow(_arg1:Game, _arg2:String, _arg3:String, _arg4:int){
this.game = _arg1;
this.sectionID = _arg3;
this.score = _arg4;
var _local5:int = _arg1.getEquipsManager().getRankedScore(_arg3);
var _local6:Object = {boardID:_arg2, res:"650x500", preloaderDisplay:false, onDisplay:__rankShow, onClose:__rankClose, onError:__rankError};
if (_local5 != _arg4){
_local6.score = _arg4;
};
errored = false;
MochiScores.showLeaderboard(_local6);
loadingRank = FlaEmbed.reflect("RankLoading");
_arg1.getWorld().layerPop().addChild(loadingRank);
new EnterFrameCall(disposeLoading, (15 * 30)).start();
}
private function __rankShow():void{
disposeLoading();
}
private function __rankClose():void{
disposeLoading();
if (errored){
game.getEquipsManager().setRankedScore(sectionID, score);
};
}
private function __rankError():void{
disposeLoading();
errored = true;
game.showMessageBox(Loc.s("SectionUI.__rankError"));
}
private function disposeLoading():void{
if (loadingRank){
loadingRank.parent.removeChild(loadingRank);
DisplayUtils.stopAllMC(loadingRank);
loadingRank = null;
};
}
}
Section 108
//StartUI (com.burstyx.bigtree.ui.StartUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
import com.redwave.media.*;
import flash.net.*;
import flash.text.*;
import com.redwave.metrics.*;
import com.redwave.*;
import com.redwave.game.*;
public class StartUI implements UserInterface {
private var twitterButton:SimpleButton;
private var creditButton:SimpleButton;
private var clearButton:SimpleButton;
private var moreButton:SimpleButton;
private var sponsorButton:InteractiveObject;
private var studioButton:InteractiveObject;
private var asset:MovieClip;
private var game:Game;
private var startButton:SimpleButton;
private static var music:SoundLoop;
public function StartUI(){
asset = FlaEmbed.reflect("StartMC");
var _local1:ChildFetcher = new ChildFetcher(asset);
startButton = _local1.fetch("playButton");
creditButton = _local1.fetch("setButton");
moreButton = _local1.fetch("moreButton");
clearButton = _local1.fetch("clearButton");
studioButton = _local1.fetch("studioButton");
sponsorButton = _local1.fetch("sponsorButton");
twitterButton = _local1.fetch("twitterButton");
var _local2:TextField = DisplayUtils.createText(("V" + Game.VERSION));
_local2.alpha = 0.5;
asset.addChild(_local2);
}
public function destroy():void{
if (asset.parent){
game.getWorld().layerUI().removeChild(asset);
DisplayUtils.stopAllMC(asset);
};
}
private function __start(_arg1:MouseEvent):void{
if (game.getEquipsManager().hasSavedData()){
game.gotoSectionUI();
} else {
destroy();
game.startSceneID(SectionInfo.getSectionID(0));
};
}
private function __armorTwitter(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://twitter.com/armorgames"));
}
public function onWorld():void{
game.getWorld().layerUI().addChild(asset);
}
private function __credit(_arg1:MouseEvent):void{
game.addPopup(new CreditUI());
}
public function init(_arg1:Game):void{
this.game = _arg1;
startButton.addEventListener(MouseEvent.CLICK, __start);
clearButton.addEventListener(MouseEvent.CLICK, __clearData);
creditButton.addEventListener(MouseEvent.CLICK, __credit);
moreButton.addEventListener(MouseEvent.CLICK, __more);
studioButton.addEventListener(MouseEvent.CLICK, __studio);
if (sponsorButton){
sponsorButton.addEventListener(MouseEvent.CLICK, __sponsor);
};
if (SponsorManager.ins.isPrimaryHosted()){
studioButton.visible = false;
};
if (twitterButton){
twitterButton.visible = SponsorManager.ins.isArmorgames();
twitterButton.addEventListener(MouseEvent.CLICK, __armorTwitter);
};
clearButton.visible = _arg1.getEquipsManager().hasSavedData();
playUIMusic();
}
private function __doClear(_arg1:Boolean):void{
if (_arg1){
game.getEquipsManager().clearSavedData();
clearButton.visible = false;
};
}
public function offWorld():void{
game.getWorld().layerUI().removeChild(asset);
}
private function __more(_arg1:MouseEvent):void{
SponsorManager.ins.gotoSponsorSite();
GAMetrics.trackPageview("/ClickMoreSponsor");
}
private function __studio(_arg1:MouseEvent):void{
SponsorManager.ins.gotoBurstyxSite("BigTreeDefense");
GAMetrics.trackPageview("/ClickLogoStudio");
}
private function __clearData(_arg1:MouseEvent):void{
game.showMessageBox(Loc.s("StartUI.__clearData"), __doClear, true);
}
private function __sponsor(_arg1:MouseEvent):void{
SponsorManager.ins.gotoSponsorSite();
GAMetrics.trackPageview("/ClickLogoSponsor");
}
public static function playUIMusic():void{
if (null == music){
music = SoundPool.playSectionLoop("kaishi", 10, 10, SoundPool.TYPE_MUSIC);
};
music.goon(int.MAX_VALUE, true);
}
public static function stopUIMusic():void{
if (music){
music.stop();
};
}
}
}//package com.burstyx.bigtree.ui
Section 109
//StuffInformation (com.burstyx.bigtree.ui.StuffInformation)
package com.burstyx.bigtree.ui {
import com.redwave.util.*;
public class StuffInformation {
public var splash:String;
public var attack:String;
public var name:String;
public var intro:String;
public var cost:String;
public var costIsEarn:Boolean;// = false
public var redIntro:Boolean;// = false
public var range:String;
public var speed:String;
public function StuffInformation(_arg1:int, _arg2:String, _arg3:String, _arg4:int=0, _arg5:int=0, _arg6:int=0, _arg7:int=0, _arg8:Boolean=false){
if (_arg1 <= 0){
this.cost = "--";
} else {
this.cost = (_arg1 + "");
};
this.name = _arg2;
this.intro = _arg3;
if (_arg4 <= 0){
this.attack = "";
} else {
if (_arg4 == 9999){
this.attack = (Loc.s("term.damage:") + "∞");
} else {
if (_arg8){
this.attack = ((Loc.s("term.slow:") + (100 - _arg4)) + "%");
} else {
this.attack = (Loc.s("term.damage:") + _arg4);
};
};
};
if (_arg5 <= 0){
this.splash = "";
} else {
this.splash = (Loc.s("term.splash:") + _arg5);
};
if (_arg6 <= 0){
this.speed = "";
} else {
this.speed = (Loc.s("term.fire rate:") + Math.ceil((300 / _arg6)));
};
if (_arg7 <= 0){
this.range = "";
} else {
this.range = (Loc.s("term.range:") + _arg7);
};
}
}
}//package com.burstyx.bigtree.ui
Section 110
//TutorialUI (com.burstyx.bigtree.ui.TutorialUI)
package com.burstyx.bigtree.ui {
import flash.display.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
import com.redwave.*;
public class TutorialUI implements UserInterface {
private var holder:Sprite;
private var curPage:Page;
private var game:Game;
private var index:int;
private var pages:Array;
public static var running:Boolean = false;
public function TutorialUI(){
holder = new Sprite();
pages = [];
}
public function destroy():void{
var _local1:Page;
running = false;
offWorld();
for each (_local1 in pages) {
_local1.destroy();
};
pages = [];
if (holder){
DisplayUtils.stopAllMC(holder);
holder = null;
};
game = null;
}
public function prev():void{
index--;
if (index < 0){
index = 0;
};
viewCurrent();
}
public function offWorld():void{
running = false;
if (((!((holder == null))) && (!((holder.parent == null))))){
holder.parent.removeChild(holder);
};
}
public function init(_arg1:Game):void{
var mc:MovieClip;
var game = _arg1;
this.game = game;
var startIndex:int;
if (((game.getEquipsManager().isWeaponArmed(0)) || (game.getEquipsManager().isWeaponArmed(1)))){
startIndex = 2;
};
var i:int = startIndex;
while (i < 20) {
mc = null;
try {
mc = FlaEmbed.reflect(("TutorialMC" + i));
} catch(e) {
mc = null;
};
if (mc){
pages.push(new Page(this, mc));
} else {
break;
};
i = (i + 1);
};
index = -1;
running = true;
next();
}
private function viewCurrent():void{
if (curPage){
holder.removeChild(curPage.getMC());
};
curPage = pages[index];
curPage.reset();
holder.addChild(curPage.getMC());
}
public function onWorld():void{
game.getWorld().layerPop().addChild(holder);
}
public function next():void{
index++;
if (index >= pages.length){
destroy();
} else {
viewCurrent();
};
}
public function skip():void{
destroy();
}
}
}//package com.burstyx.bigtree.ui
import flash.display.*;
import flash.events.*;
import com.burstyx.bigtree.*;
import com.redwave.util.*;
class Page {
private var index:int;
private var ui:TutorialUI;
private var mc:MovieClip;
private var tips:Array;
private function Page(_arg1:TutorialUI, _arg2:MovieClip){
var _local7:DisplayObject;
super();
this.ui = _arg1;
this.mc = _arg2;
var _local3:InteractiveObject = DisplayUtils.getC(_arg2, "skipButton");
var _local4:InteractiveObject = DisplayUtils.getC(_arg2, "prevButton");
var _local5:InteractiveObject = DisplayUtils.getC(_arg2, "nextButton");
if (_local3){
_local3.addEventListener(MouseEvent.CLICK, __skip);
};
if (_local4){
_local4.addEventListener(MouseEvent.CLICK, __prev);
};
if (_local5){
_local5.addEventListener(MouseEvent.CLICK, __next);
};
tips = [];
var _local6:int;
while (_local6 < 10) {
_local7 = DisplayUtils.getC(_arg2, ("t" + _local6));
if (_local7){
_local7.visible = false;
tips.push(_local7);
} else {
break;
};
_local6++;
};
Game.stage.addEventListener(MouseEvent.CLICK, __stageClick, true);
}
public function __next(_arg1:MouseEvent):void{
ui.next();
}
private function nextTip():void{
var _local1:int;
var _local2:MovieClip;
if (tips.length > 0){
index++;
_local1 = 0;
while (_local1 < tips.length) {
_local2 = tips[_local1];
_local2.visible = (index == _local1);
_local1++;
};
if (index >= tips.length){
ui.next();
};
};
}
private function __stageClick(_arg1:MouseEvent):void{
if (mc.stage == null){
return;
};
trace(("index : " + index));
var _local2:DisplayObject = tips[index];
if (_local2){
if (!_local2.hitTestPoint(_arg1.stageX, _arg1.stageY, true)){
nextTip();
};
} else {
trace("no tip");
};
}
public function __prev(_arg1:MouseEvent):void{
ui.prev();
}
public function destroy():void{
Game.stage.removeEventListener(MouseEvent.CLICK, __stageClick, true);
tips = null;
}
public function getMC():MovieClip{
return (mc);
}
public function reset():void{
index = -1;
nextTip();
}
private function __skip(_arg1:MouseEvent):void{
ui.skip();
}
}
Section 111
//UserInterface (com.burstyx.bigtree.ui.UserInterface)
package com.burstyx.bigtree.ui {
import com.burstyx.bigtree.*;
public interface UserInterface {
function init(_arg1:Game):void;
function destroy():void;
function offWorld():void;
function onWorld():void;
}
}//package com.burstyx.bigtree.ui
Section 112
//Capital (com.burstyx.bigtree.Capital)
package com.burstyx.bigtree {
import com.redwave.util.*;
public class Capital {
private var eventer:EventGenerator;
private var water:int;
public function Capital(){
water = 0;
eventer = new EventGenerator();
}
public function getWater():int{
return (water);
}
private function fireChanged():void{
eventer.dispatchEvent("changed", [water]);
}
public function removeOnChanged(_arg1:Function):void{
eventer.removeListener("changed", _arg1);
}
public function addOnChanged(_arg1:Function):void{
eventer.addListener("changed", _arg1);
}
public function setWater(_arg1:int):void{
if (water != _arg1){
water = _arg1;
fireChanged();
};
}
public function earn(_arg1:int):void{
if (0 != _arg1){
water = (water + _arg1);
fireChanged();
};
}
public function isEnough(_arg1:int):Boolean{
return ((water >= _arg1));
}
public function spend(_arg1:int):Boolean{
if (0 == _arg1){
return (true);
};
if (water >= _arg1){
water = (water - _arg1);
fireChanged();
return (true);
};
return (false);
}
}
}//package com.burstyx.bigtree
Section 113
//EquipsManager (com.burstyx.bigtree.EquipsManager)
package com.burstyx.bigtree {
import com.redwave.portal.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
import com.redwave.metrics.*;
import com.redwave.data.*;
import com.redwave.game.*;
public class EquipsManager {
private var equips:Array;
private var weaponPrices:Array;
private var rankedScores:Object;
private var scores:Object;
private var winBonus:Array;
private var points:int;// = 0
private var unlockedIndex:int;// = 0
private static const PATH:String = "bustyx/bigtreedefense";
public function EquipsManager(){
weaponPrices = [1, 2, 8, 16, 32, 65, 130, 200, 320, 600, 1200, 3200, 50];
winBonus = [0, 20, 40, 80, 160, 320, 500, 800, 1500, 3000, 8000, 8000, 8000];
super();
equips = getDefaultEquips();
}
public function modifyPoints(_arg1:int):int{
points = (points + _arg1);
return (points);
}
public function setRankedScore(_arg1:String, _arg2:int):void{
rankedScores[_arg1] = _arg2;
LocalStorage.setData(PATH, "rankedScores", rankedScores);
}
public function setScore(_arg1:String, _arg2:int):void{
if (_arg1 == "tutorial"){
_arg2 = 0;
};
var _local3:int = getTotalScore();
scores[_arg1] = _arg2;
var _local4:int = getTotalScore();
LocalStorage.setData(PATH, "scores", scores);
if ((((_arg2 > 0)) && (SponsorManager.ins.isKongregate()))){
if (_arg1 == "Infinity"){
KongregateAPI.ins.stats.submit("INFINITY", _arg2);
} else {
if (_local4 > _local3){
KongregateAPI.ins.stats.submit("HIGHSCORE", _local4);
};
};
};
}
public function clearSavedData():void{
LocalStorage.clearData(PATH);
load();
}
public function hasSavedData():Boolean{
return ((LocalStorage.getData(PATH, "savedData") == true));
}
public function getRankedScore(_arg1:String):int{
if (null == rankedScores[_arg1]){
return (0);
};
var _local2:int = rankedScores[_arg1];
return (_local2);
}
public function isBeatGame():Boolean{
return ((unlockedIndex >= 3));
}
public function unlockNext(_arg1:int):Boolean{
_arg1++;
if (_arg1 > unlockedIndex){
unlockedIndex = _arg1;
return (true);
};
return (false);
}
public function getBuyPrice(_arg1:int):int{
return (weaponPrices[_arg1]);
}
public function getWeaponValidLevel(_arg1:int):int{
var _local2:Object = equips[_arg1];
if (_local2){
if (null != _local2.level){
return (_local2.level);
};
};
return (0);
}
private function getCountOfWeaponsValid():int{
var _local2:Object;
var _local1:int;
for each (_local2 in equips) {
if (null != _local2){
if (((!((_local2.level == null))) && ((_local2.level > 0)))){
_local1++;
};
};
};
return (_local1);
}
public function upgradeWeapon(_arg1:int):String{
var _local3:int;
var _local2:int = getWeaponValidLevel(_arg1);
if (_local2 < 5){
_local3 = getBuyPrice(_arg1);
if (points >= _local3){
modifyPoints(-(_local3));
setWeaponValidLevel(_arg1, (_local2 + 1));
GAMetrics.trackPageview(((("/weapon_" + _arg1) + "_") + (_local2 + 1)));
return (null);
};
return (Loc.s("EquipsManager.upgradeWeapon1"));
//unresolved jump
};
return (Loc.s("EquipsManager.upgradeWeapon2"));
}
public function getWinBonus(_arg1:int):int{
return (winBonus[_arg1]);
}
public function getTotalScore():int{
var _local2:String;
var _local1:int;
for (_local2 in scores) {
if (SponsorManager.ins.isPrimaryHosted()){
if (_local2 != "tutorial"){
_local1 = (_local1 + scores[_local2]);
};
} else {
if (((!((_local2 == "tutorial"))) && (!((_local2 == "Infinity"))))){
_local1 = (_local1 + scores[_local2]);
};
};
};
return (_local1);
}
public function setWeaponValidLevel(_arg1:int, _arg2:int):void{
var _local3:int = getCountOfWeaponsValid();
var _local4:Object = equips[_arg1];
if (null == _local4){
_local4 = {};
equips[_arg1] = _local4;
};
_local4.level = _arg2;
var _local5:int = getCountOfWeaponsValid();
if ((((_local5 > _local3)) && (SponsorManager.ins.isKongregate()))){
KongregateAPI.ins.stats.submit("WEAPONS", _local5);
};
}
public function getWeapons():Array{
return (WeaponListProperties.ins.getWeapons());
}
public function getWeaponsArmed():Array{
var _local3:WeaponParam;
var _local1:Array = [];
var _local2:Array = getWeapons();
for each (_local3 in _local2) {
if (isWeaponArmed(_local3.number)){
_local1.push(_local3);
};
};
return (_local1);
}
public function getScore(_arg1:String):int{
if (null == scores[_arg1]){
return (0);
};
var _local2:int = scores[_arg1];
return (_local2);
}
public function load():void{
var _local1:Array = (LocalStorage.getData(PATH, "equips") as Array);
if (null == _local1){
_local1 = getDefaultEquips();
};
equips = _local1;
scores = (LocalStorage.getData(PATH, "scores") as Object);
if (null == scores){
scores = {Section1:0};
};
rankedScores = (LocalStorage.getData(PATH, "rankedScores") as Object);
if (null == rankedScores){
rankedScores = {};
};
if (LocalStorage.getData(PATH, "points") == null){
points = 20;
} else {
points = LocalStorage.getData(PATH, "points");
};
if (LocalStorage.getData(PATH, "unlockedIndex") == null){
unlockedIndex = 1;
} else {
unlockedIndex = LocalStorage.getData(PATH, "unlockedIndex");
};
}
public function getDefaultEquips():Array{
return ([{level:2, armed:false}]);
}
public function getPoint():int{
return (points);
}
public function isWeaponArmed(_arg1:int):Boolean{
var _local2:Object = equips[_arg1];
if (_local2){
return (_local2.armed);
};
return (false);
}
public function save():void{
LocalStorage.setData(PATH, "equips", equips);
LocalStorage.setData(PATH, "savedData", true);
LocalStorage.setData(PATH, "scores", scores);
LocalStorage.setData(PATH, "rankedScores", rankedScores);
LocalStorage.setData(PATH, "points", points);
LocalStorage.setData(PATH, "unlockedIndex", unlockedIndex);
}
public function getUnlockedIndex():int{
return (unlockedIndex);
}
public function setWeaponArmed(_arg1:int, _arg2:Boolean):void{
var _local3:Object = equips[_arg1];
if (null == _local3){
_local3 = {};
equips[_arg1] = _local3;
};
_local3.armed = _arg2;
}
}
}//package com.burstyx.bigtree
Section 114
//Game (com.burstyx.bigtree.Game)
package com.burstyx.bigtree {
import flash.display.*;
import flash.events.*;
import com.redwave.portal.*;
import com.burstyx.bigtree.ui.*;
import flash.geom.*;
import com.redwave.ctrl.*;
import com.greensock.*;
import com.redwave.util.*;
import com.redwave.media.*;
import com.burstyx.bigtree.editor.*;
import com.redwave.metrics.*;
import ru.etcs.ui.*;
import com.greensock.easing.*;
import com.redwave.game.*;
import flash.ui.*;
public class Game {
private var readySceneID:String;
private var beatgamemovie:Boolean;// = false
private var scene:Scene;
private var gameKey:GameKey;
private var state:GameState;
private var world:World;
private var keybordManager:KeyboardManager;
private var lastSceneID:String;
private var gameData:GameDataEmbed;
private var controlTicker:GameEnterFrame;
private var curUI:UserInterface;
private var pausePopup:UserInterface;
private var losePlaying:Boolean;// = false
private var equipsManager:EquipsManager;
private var root:DisplayObjectContainer;
private var tutorialUI:TutorialUI;
public static const USE_EMBED:Boolean = false;
public static const H:int = 500;
public static const FPS:int = 30;
public static const CW:int = 500;
public static const CX:int = 250;
public static const CY:int = 250;
public static const W:int = 650;
public static const VERSION:String = "1.35";
public static var instance:Game;
public static var RunSpeed:int = 1;
public static var stage:Stage;
public function Game(_arg1:DisplayObjectContainer){
this.root = _arg1;
stage = _arg1.stage;
instance = this;
initElements();
initListeners();
gameData = new GameDataEmbed(this, __inited);
if (SponsorManager.ins.isKongregate()){
KongregateAPI.ins.init(_arg1);
};
}
public function originScene():void{
if (state.isValue(GameState.PLAYING)){
if (scene){
scene.originScene();
SelectionManager.ins.setSelection(scene.getTrunk());
};
};
}
private function gotoPlayUI():void{
state.setValue(GameState.PLAYING);
gotoUI(new PlayUI());
}
private function initListeners():void{
keybordManager.addEventListener(KeyboardEvent.KEY_DOWN, __keydown);
root.stage.addEventListener(MouseEvent.MOUSE_WHEEL, __mouseWheel);
root.stage.addEventListener(Event.DEACTIVATE, __deactived);
}
public function gotoStartUI():void{
stopScene();
state.setValue(GameState.MAIN_MENU);
gotoUI(new StartUI());
}
private function __inited():void{
var _local1:SponsorManager = SponsorManager.ins;
if (_local1.isHostAllowed()){
gotoStartUI();
} else {
showMessageBox(Loc.s("Game.__inited"), __gotoSponsorSite);
};
}
public function gotoSectionUI():void{
stopScene();
state.setValue(GameState.UI_OTHER);
gotoUI(new SectionUI());
}
public function showMessageBox(_arg1:String, _arg2:Function=null, _arg3:Boolean=false):void{
var _local4:MessageBox = new MessageBox(_arg1, _arg2, _arg3);
addPopup(_local4);
}
public function addPopup(_arg1:UserInterface):void{
_arg1.init(this);
_arg1.onWorld();
}
private function __mouseWheel(_arg1:MouseEvent):void{
scaleScene((_arg1.delta > 0));
}
private function initElements():void{
world = new World(W, H);
world.addToRoot(root);
equipsManager = new EquipsManager();
equipsManager.load();
keybordManager = new KeyboardManager();
keybordManager.init(root.stage);
state = new GameState();
gameKey = new GameKey(keybordManager);
gameKey.initAsNormal();
controlTicker = new GameEnterFrame(__controlTick, 1);
controlTicker.start();
}
public function stopScene():void{
if (tutorialUI){
tutorialUI.destroy();
tutorialUI = null;
};
if (scene){
FGLTracker.ins.endLevel();
scene.removeOnHPChanged(__trunkHPChanged);
scene.removeOnSuccess(__scenePassed);
scene.destroy();
scene = null;
resume();
};
}
public function resume():void{
if (state.isValue(GameState.PAUSED)){
pausePopup.destroy();
pausePopup = null;
state.setValue(GameState.PLAYING);
root.stage.focus = root;
GameEnterFrame.paused = false;
};
}
private function __keydown(_arg1:KeyboardEvent):void{
var _local3:PlayUI;
var _local2:uint = _arg1.keyCode;
if (_local2 == KeyStroke.VK_P.getCode()){
if (state.isValue(GameState.PLAYING)){
pause();
} else {
if (state.isValue(GameState.PAUSED)){
resume();
};
};
return;
};
if (state.isValue(GameState.PLAYING)){
if (_local2 == Keyboard.SPACE){
originScene();
return;
};
if (_local2 == KeyStroke.VK_Z.getCode()){
scaleScene(true);
return;
};
if (_local2 == KeyStroke.VK_X.getCode()){
scaleScene(false);
return;
};
if ((curUI is PlayUI)){
_local3 = (curUI as PlayUI);
if (_local2 == Keyboard.SHIFT){
if (RunSpeed == 1){
_local3.setSpeedMode(6);
} else {
_local3.setSpeedMode(1);
};
};
};
};
if (_local2 == KeyStroke.VK_F5.getCode()){
return;
};
}
public function getEquipsManager():EquipsManager{
return (equipsManager);
}
private function __deactived(_arg1:Event):void{
}
private function gotoUI(_arg1:UserInterface):void{
if (curUI){
curUI.destroy();
};
_arg1.init(this);
_arg1.onWorld();
curUI = _arg1;
}
private function __trunkHPChanged(_arg1:int, _arg2:int):void{
var _local3:MovieClip;
var _local4:Number;
var _local5:Number;
if (losePlaying){
return;
};
if (_arg1 <= 0){
if (tutorialUI){
tutorialUI.destroy();
tutorialUI = null;
};
if (scene){
resume();
scene.setRunning(false);
scene.stopAudio();
state.setValue(GameState.UI_OTHER);
losePlaying = true;
addPopup(new MovieUI("YouLoseMC", true, null, 3));
SoundPool.play("YouLoseMusic", 1, 0, SoundPool.TYPE_MUSIC);
_local3 = scene.getTrunk().getAsset();
DisplayUtils.stopAllMC(_local3);
SelectionManager.ins.setSelection(null);
_local4 = (_local3.rotation + ((Math.random() < 0.5)) ? 140 : -140);
_local5 = ((_local3.y + 100) + (Math.random() * 100));
_local3.transform.colorTransform = new ColorTransform(0.4, 0.3, 0.4);
TweenLite.to(_local3, 4.5, {rotation:_local4, y:_local5, ease:Circ.easeIn, onComplete:__losePlayed});
} else {
gotoGameOverUI();
};
};
}
public function gotoGamePassUI():void{
state.setValue(GameState.UI_OTHER);
addPopup(new GamePassUI());
}
private function moveScene(_arg1:Number, _arg2:Number):void{
if (state.isValue(GameState.PLAYING)){
if (scene){
scene.moveScene(_arg1, _arg2);
};
};
}
public function restartScene():void{
if (lastSceneID){
resume();
startSceneID(lastSceneID);
} else {
trace("There's no scene to restart!");
};
}
private function __gotoSponsorSite(_arg1:Boolean):void{
SponsorManager.ins.gotoSponsorSite();
}
private function __losePlayed():void{
gotoGameOverUI();
losePlaying = false;
}
private function __controlTick():void{
if (state.isValue(GameState.PLAYING)){
if (gameKey.isDownDown()){
moveScene(0, -10);
} else {
if (gameKey.isDownUp()){
moveScene(0, 10);
};
};
if (gameKey.isDownLeft()){
moveScene(10, 0);
} else {
if (gameKey.isDownRight()){
moveScene(-10, 0);
};
};
};
}
private function __scenePassed():void{
if (tutorialUI){
tutorialUI.destroy();
tutorialUI = null;
};
resume();
state.setValue(GameState.UI_OTHER);
addPopup(new MovieUI("YouWinMC", true, __winPlayed, 30));
if (scene){
scene.stopAudio();
};
SoundPool.play("YouWinMusic", 0.8, 0, SoundPool.TYPE_MUSIC);
}
public function getStage():Stage{
return (root.stage);
}
private function startScene(_arg1:Scene):void{
if (scene){
stopScene();
};
StartUI.stopUIMusic();
scene = _arg1;
lastSceneID = _arg1.getID();
scene.start(this);
scene.addOnHPChanged(__trunkHPChanged);
scene.addOnSuccess(__scenePassed);
gotoPlayUI();
MouseWheel.capture();
}
public function gotoGameOverUI():void{
resume();
state.setValue(GameState.UI_OTHER);
addPopup(new GameOverUI());
}
private function __startBattle():void{
var _local1:Scene = SectionInfo.getScene(readySceneID);
if (_local1){
startScene(_local1);
} else {
trace(("找不到Scene:" + readySceneID));
return;
};
readySceneID = null;
}
public function getWorld():World{
return (world);
}
public function getScene():Scene{
return (scene);
}
public function startSceneID(_arg1:String):void{
var _local2:MovieUI;
var _local3:Boolean;
if (scene){
stopScene();
scene = null;
};
GAMetrics.trackPageview(("/scene" + SectionInfo.getSectionIndex(_arg1)));
FGLTracker.ins.beginLevel(SectionInfo.getSectionIndex(_arg1));
if (SectionInfo.getSectionType(_arg1) == SectionInfo.MOVIE){
StartUI.stopUIMusic();
_local2 = new MovieUI(_arg1, true, __movieFinished);
addPopup(_local2);
_local2.playMusic(SectionInfo.getSectionData(_arg1));
_local3 = equipsManager.unlockNext(SectionInfo.getSectionIndex(_arg1));
if (equipsManager.getUnlockedIndex() >= 3){
beatgamemovie = true;
};
equipsManager.save();
return;
};
readySceneID = _arg1;
addPopup(new EquipUI(__startBattle, __backToSections));
if (SectionInfo.getSectionType(_arg1) == SectionInfo.TUTORIAL){
addPopup((tutorialUI = new TutorialUI()));
};
}
private function __movieFinished():void{
gotoSectionUI();
if (beatgamemovie){
beatgamemovie = false;
ArmorgamesAPI.showScoreSubmit(equipsManager.getTotalScore());
};
}
private function __winPlayed():void{
gotoGamePassUI();
}
private function __backToSections():void{
gotoSectionUI();
}
public function pause():void{
if (state.isValue(GameState.PLAYING)){
pausePopup = new PausedUI();
addPopup(pausePopup);
state.setValue(GameState.PAUSED);
GameEnterFrame.paused = true;
};
}
public function scaleScene(_arg1:Boolean):void{
if (state.isValue(GameState.PLAYING)){
if (scene){
scene.modifyScale((_arg1) ? 0.2 : -0.2);
};
};
}
}
}//package com.burstyx.bigtree
Section 115
//GameSetting (com.burstyx.bigtree.GameSetting)
package com.burstyx.bigtree {
public class GameSetting {
public static var musicOn:Boolean = true;
public static var soundOn:Boolean = true;
public static var insectHPOn:Boolean = true;
}
}//package com.burstyx.bigtree
Section 116
//GameState (com.burstyx.bigtree.GameState)
package com.burstyx.bigtree {
public class GameState {
private var state:int;
public static const UI_SWITCHING:int = 4;
public static const UI_OTHER:int = 5;
public static const MAIN_MENU:int = 0;
public static const PAUSED:int = 3;
public static const PLAYING:int = 2;
public static const SECTION_MENU:int = 1;
public function GameState(){
state = MAIN_MENU;
}
public function getValue():int{
return (state);
}
public function isValue(_arg1:int):Boolean{
return ((state == _arg1));
}
public function setValue(_arg1:int):void{
state = _arg1;
}
}
}//package com.burstyx.bigtree
Section 117
//InsectBuilder (com.burstyx.bigtree.InsectBuilder)
package com.burstyx.bigtree {
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class InsectBuilder {
private var insectBorns:ArrayList;
private var level:int;
private var infinityLevel:int;
private var param:InsectListParam;
public function InsectBuilder(_arg1:InsectListParam, _arg2:int, _arg3:int=-1){
var _local5:InsectParam;
super();
this.param = _arg1;
this.level = _arg2;
this.infinityLevel = _arg3;
insectBorns = new ArrayList();
var _local4:Array = _arg1.getInsects();
for each (_local5 in _local4) {
if (_local5.moveType != MoveType.BOSS){
appendBorn(_local5);
};
};
}
public function split(_arg1:int):Array{
var _local5:ArrayList;
if (_arg1 <= 0){
throw (new Error("InsectBuilder不能分成0或者少于0份"));
};
if (_arg1 == 1){
return ([new InsectBuilderPart(insectBorns, infinityLevel)]);
};
var _local2:int = Math.floor((insectBorns.size() / _arg1));
var _local3:Array = [];
var _local4:int;
while (_local4 < (_arg1 - 1)) {
_local5 = new ArrayList();
_local5.appendAll(insectBorns.removeRange(0, (_local2 - 1)));
_local3.push(new InsectBuilderPart(_local5, infinityLevel));
_local4++;
};
_local3.push(new InsectBuilderPart(insectBorns, infinityLevel));
return (_local3);
}
private function appendBorn(_arg1:InsectParam):void{
var _local3:int;
var _local4:int;
var _local2:int = _arg1.existLevels[level];
if (_local2 > 0){
_local3 = 0;
while (_local3 < _local2) {
_local4 = (Math.floor((Math.random() * (insectBorns.size() + 1))) - 1);
insectBorns.append(_arg1, _local4);
_local3++;
};
};
}
}
}//package com.burstyx.bigtree
Section 118
//InsectBuilderPart (com.burstyx.bigtree.InsectBuilderPart)
package com.burstyx.bigtree {
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class InsectBuilderPart {
private var insectBorns:ArrayList;
private var infinityLevel:int;
public function InsectBuilderPart(_arg1:ArrayList, _arg2:int){
var _local3:Array;
var _local4:int;
super();
this.insectBorns = _arg1;
this.infinityLevel = _arg2;
if (_arg2 > 0){
_local3 = _arg1.toArray();
_local4 = 0;
while (_local4 < _arg2) {
_arg1.appendAll(_local3);
_local4++;
};
};
}
private function createInsect(_arg1:InsectParam):Insect{
var _local2:Insect = new Insect(_arg1);
if (infinityLevel > 0){
_local2.setStrongMul((infinityLevel + 1));
};
return (_local2);
}
public function build():Insect{
var _local1:InsectParam;
if (insectBorns.size() > 0){
_local1 = insectBorns.pop();
return (createInsect(_local1));
};
return (null);
}
}
}//package com.burstyx.bigtree
Section 119
//Scene (com.burstyx.bigtree.Scene)
package com.burstyx.bigtree {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class Scene {
private var destMX2:Number;// = 0
private var ticker:GameEnterFrame;
private var sky:MovieClip;
private var destMY2:Number;// = 0
private var front:MovieClip;
private var dragRect:Rectangle;
private var hill:MovieClip;
private var scale:Number;
private var bgBounds:Rectangle;
private var originalBottom:Number;// = 0
private var logic:SceneLogic;
private var capital:Capital;
private var param:SceneParam;
private var dragger:Sprite;
private var curMX2:Number;// = 0
private var holder:Sprite;
private var trunk:Trunk;
private var running:Boolean;// = true
private var curMY2:Number;// = 0
private var eventer:EventGenerator;
private var destMX:Number;// = 0
private var destMY:Number;// = 0
private var audio:SceneAudio;
private var evnHolder:Sprite;
private var oy:Number;// = 490
private var curMX:Number;// = 0
private var curMY:Number;// = 0
private var ox:Number;// = 250
private var game:Game;
private var stage:Stage;
public function Scene(_arg1:SceneParam){
this.param = _arg1;
holder = new Sprite();
holder.mouseEnabled = false;
eventer = new EventGenerator();
scale = 1;
capital = new Capital();
ticker = new GameEnterFrame(__tick, 1);
}
public function removeOnSuccess(_arg1:Function):void{
eventer.removeListener("onSuccess", _arg1);
}
private function fireOnInsectCloned(_arg1:Insect, _arg2:int):void{
eventer.dispatchEvent("InsectCloned", [_arg1, _arg2]);
}
public function originScene():void{
holder.x = ox;
holder.y = oy;
restrictDragRect();
}
public function setScale(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Point;
var _local5:Point;
_arg1 = MathUtils.minMax(_arg1, 0.2, 1);
scale = _arg1;
if (holder.stage){
_local2 = holder.stage.mouseX;
_local3 = holder.stage.mouseY;
_local4 = holder.globalToLocal(new Point(_local2, _local3));
holder.scaleX = (holder.scaleY = scale);
_local5 = holder.localToGlobal(_local4);
holder.x = (holder.x + (_local2 - _local5.x));
holder.y = (holder.y + (_local3 - _local5.y));
} else {
holder.scaleX = (holder.scaleY = scale);
};
restrictDragRect();
fireOnScaled();
}
public function addOnNextWave(_arg1:Function):void{
eventer.addListener("NextWave", _arg1);
}
public function getTrunk():Trunk{
return (trunk);
}
public function locationInGlobal(_arg1:Point):Point{
return (holder.localToGlobal(_arg1));
}
private function restrictDragRect():void{
var _local1:Rectangle;
if (bgBounds){
_local1 = new Rectangle((bgBounds.x * scale), (bgBounds.y * scale), (bgBounds.width * scale), (bgBounds.height * scale));
dragRect.x = (Game.CW - (_local1.width + _local1.x));
dragRect.y = (Game.H - (_local1.height + _local1.y));
dragRect.width = (_local1.width - Game.CW);
dragRect.height = (_local1.height - Game.H);
if (holder.x < dragRect.x){
holder.x = dragRect.x;
};
if (holder.x > (dragRect.x + dragRect.width)){
holder.x = (dragRect.x + dragRect.width);
};
if (holder.y < dragRect.y){
holder.y = dragRect.y;
};
if (holder.y > (dragRect.y + dragRect.height)){
holder.y = (dragRect.y + dragRect.height);
};
holder.x = Math.round(holder.x);
holder.y = Math.round(holder.y);
};
}
public function addDisplayUnit(_arg1:DisplayObject):void{
if (logic){
logic.addDisplayUnit(_arg1);
};
}
private function __dragDouble(_arg1:MouseEvent):void{
SelectionManager.ins.setSelection(game.getScene().getTrunk());
}
public function addOnHPChanged(_arg1:Function):void{
eventer.addListener("hpChanged", _arg1);
}
public function removeOnNextWave(_arg1:Function):void{
eventer.removeListener("NextWave", _arg1);
}
public function addEnvUnit(_arg1:DisplayObject):void{
evnHolder.addChild(_arg1);
}
public function getCapital():Capital{
return (capital);
}
public function addOnInsectCloned(_arg1:Function):void{
eventer.addListener("InsectCloned", _arg1);
}
public function moveScene(_arg1:Number, _arg2:Number):void{
holder.x = (holder.x + _arg1);
holder.y = (holder.y + _arg2);
restrictDragRect();
}
private function __dragStop(_arg1:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_UP, __dragStop);
holder.stopDrag();
stage = null;
}
private function __onSuccess():void{
fireOnSuccess();
}
private function initBG():void{
var _local2:MovieClip;
var _local1:MovieClip = param.holeList.createAsset();
if (_local1){
_local1.mouseChildren = false;
_local1.mouseEnabled = false;
holder.addChild(_local1);
hill = DisplayUtils.getC(_local1, "hill");
sky = DisplayUtils.getC(_local1, "sky");
front = DisplayUtils.getC(_local1, "front");
if (hill){
hill.mouseChildren = false;
hill.mouseEnabled = false;
game.getWorld().layerScene().addChildAt(hill, 0);
hill.x = ox;
hill.y = oy;
};
if (sky){
sky.mouseChildren = false;
sky.mouseEnabled = false;
game.getWorld().layerScene().addChildAt(sky, 0);
sky.x = 0;
sky.y = 0;
};
if (front){
front.mouseChildren = false;
front.mouseEnabled = false;
game.getWorld().layerScene().addChild(front);
front.x = ox;
front.y = oy;
};
evnHolder = new Sprite();
evnHolder.mouseChildren = false;
evnHolder.mouseEnabled = false;
game.getWorld().layerScene().addChild(evnHolder);
bgBounds = _local1.getBounds(_local1);
bgBounds = bgBounds.clone();
originalBottom = ((bgBounds.height + bgBounds.y) - 10);
_local2 = DisplayUtils.getC(_local1, "boundMC");
if (_local2){
_local1.removeChild(_local2);
};
};
}
public function start(_arg1:Game):void{
this.game = _arg1;
holder.x = ox;
holder.y = oy;
dragger = new Sprite();
dragger.graphics.beginFill(0, 0);
dragger.graphics.drawRect(0, 0, Game.W, Game.H);
dragger.graphics.endFill();
_arg1.getWorld().layerScene().addChild(dragger);
_arg1.getWorld().layerScene().addChild(holder);
dragRect = new Rectangle((ox - ((Game.W * 2) - (Game.W / 2))), oy, (Game.W * 3), (Game.H + 100));
initBG();
var _local2:Sprite = new Sprite();
holder.addChild(_local2);
trunk = new Trunk(param.trunkParam);
trunk.addOnHPChanged(__hpChanged);
trunk.addToSceneHolder(holder);
capital.setWater(param.trunkParam.initialWater);
var _local3:Sprite = new Sprite();
holder.addChild(_local3);
logic = new SceneLogic(_arg1, this, _local2, _local3, __onSuccess, __onNextWave);
logic.addOnInsectCloned(__insectCloned);
logic.addOnInsectRemoved(__insectRemoved);
ticker.start();
dragger.addEventListener(MouseEvent.MOUSE_DOWN, __dragStart);
dragger.doubleClickEnabled = true;
dragger.addEventListener(MouseEvent.DOUBLE_CLICK, __dragDouble);
setScale(1);
audio = new SceneAudio(this);
}
public function getSectionIndex():int{
return (SectionInfo.getSectionIndex(getID()));
}
public function getKilledWater():int{
return (logic.getKilledWater());
}
public function getGame():Game{
return (game);
}
public function removeOnHPChanged(_arg1:Function):void{
eventer.removeListener("hpChanged", _arg1);
}
private function __onNextWave(_arg1:int):void{
eventer.dispatchEvent("NextWave", [_arg1]);
}
private function fireOnScaled():void{
eventer.dispatchEvent("onScaled", [scale]);
}
private function __insectRemoved(_arg1:Insect, _arg2:int):void{
fireOnInsectRemoved(_arg1, _arg2);
}
private function __tick():void{
if (((running) && (!(GameEnterFrame.paused)))){
tickHill();
tickFront();
if (audio){
audio.tick();
};
logic.tick();
};
}
private function tickHill():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
if (hill){
_local1 = (holder.x - ox);
_local2 = (holder.y - oy);
_local1 = (_local1 * 0.2);
_local2 = (_local2 * 0.05);
_local3 = (Game.CX - dragger.mouseX);
_local4 = (Game.CY - dragger.mouseY);
_local3 = ((_local3 * scale) * 0.03);
_local4 = ((_local4 * scale) * 0.001);
destMX = _local3;
destMY = _local4;
curMX = (curMX + ((destMX - curMX) * 0.1));
curMY = (curMY + ((destMY - curMY) * 0.1));
_local1 = (_local1 + curMX);
_local2 = (_local2 + curMY);
if ((((Math.abs(_local1) > 0.1)) || ((Math.abs(_local2) > 0.1)))){
hill.x = (ox + _local1);
hill.y = (oy + _local2);
};
};
}
public function addOnSuccess(_arg1:Function):void{
eventer.addListener("onSuccess", _arg1);
}
private function __insectCloned(_arg1:Insect, _arg2:int):void{
fireOnInsectCloned(_arg1, _arg2);
}
private function tickFront():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
if (front){
_local1 = (holder.x - ox);
_local2 = (holder.y - oy);
_local1 = (_local1 * 2);
_local2 = (_local2 * 1);
_local3 = ((originalBottom - (originalBottom * scale)) / 2);
_local2 = (_local2 + _local3);
_local4 = (Game.CX - dragger.mouseX);
_local5 = (Game.CY - dragger.mouseY);
_local4 = ((_local4 * scale) * 0.15);
_local5 = ((_local5 * scale) * 0.02);
destMX2 = _local4;
destMY2 = _local5;
curMX2 = (curMX2 + ((destMX2 - curMX2) * 0.1));
curMY2 = (curMY2 + ((destMY2 - curMY2) * 0.1));
_local1 = (_local1 + curMX2);
_local2 = (_local2 + curMY2);
if ((((Math.abs(_local1) > 0.5)) || ((Math.abs(_local2) > 0.5)))){
front.x = (ox + _local1);
front.y = (oy + _local2);
};
};
}
private function fireOnSuccess():void{
eventer.dispatchEvent("onSuccess", []);
}
public function getScale():Number{
return (scale);
}
private function fireOnInsectRemoved(_arg1:Insect, _arg2:int):void{
eventer.dispatchEvent("InsectRemoved", [_arg1, _arg2]);
}
public function removeOnInsectRemoved(_arg1:Function):void{
eventer.removeListener("InsectRemoved", _arg1);
}
private function __hpChanged(_arg1:int, _arg2:int):void{
eventer.dispatchEvent("hpChanged", [_arg1, _arg2]);
}
public function getGroupIndexies():Array{
return (logic.getGroupIndexies());
}
public function modifyScale(_arg1:Number):Number{
setScale((scale + _arg1));
return (scale);
}
private function __dragStart(_arg1:MouseEvent):void{
SelectionManager.ins.setSelection(null);
stage = dragger.stage;
stage.addEventListener(MouseEvent.MOUSE_UP, __dragStop);
holder.startDrag(false, dragRect);
}
public function removeOnScaled(_arg1:Function):void{
eventer.removeListener("onScaled", _arg1);
}
public function removeOnInsectCloned(_arg1:Function):void{
eventer.removeListener("InsectCloned", _arg1);
}
public function getParam():SceneParam{
return (param);
}
public function addOnScaled(_arg1:Function):void{
eventer.addListener("onScaled", _arg1);
}
public function getOriginPoint():Point{
return (new Point(ox, oy));
}
public function addOnInsectRemoved(_arg1:Function):void{
eventer.addListener("InsectRemoved", _arg1);
}
public function getID():String{
return (param.name);
}
public function stopAudio():void{
if (audio){
audio.destory();
audio = null;
};
}
public function locationInScene(_arg1:Point):Point{
return (holder.globalToLocal(_arg1));
}
public function destroy():void{
if (game){
trunk.removeOnHPChanged(__hpChanged);
trunk.destroy();
ticker.interrupt();
logic.destroy();
game.getWorld().layerScene().removeChild(holder);
game.getWorld().layerScene().removeChild(dragger);
if (hill){
game.getWorld().layerScene().removeChild(hill);
DisplayUtils.stopAllMC(hill);
};
if (sky){
game.getWorld().layerScene().removeChild(sky);
DisplayUtils.stopAllMC(sky);
};
if (front){
game.getWorld().layerScene().removeChild(front);
DisplayUtils.stopAllMC(front);
};
game.getWorld().layerScene().removeChild(evnHolder);
DisplayUtils.stopAllMC(evnHolder);
stopAudio();
game = null;
ticker = null;
trunk = null;
logic = null;
audio = null;
};
}
public function setRunning(_arg1:Boolean):void{
running = _arg1;
}
}
}//package com.burstyx.bigtree
Section 120
//SceneAudio (com.burstyx.bigtree.SceneAudio)
package com.burstyx.bigtree {
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.redwave.media.*;
public class SceneAudio {
private var playings:HashSet;
private var bgMusic:SoundLoop;
private var scene:Scene;
private var bgSound:SoundLoop;
private var events:Array;
private var delta:Number;
public function SceneAudio(_arg1:Scene){
var _local4:AudioEventParam;
super();
this.scene = _arg1;
var _local2:SceneParam = _arg1.getParam();
bgSound = SoundPool.playSectionLoop(_local2.trunkParam.bgSound, 30, 1);
bgMusic = SoundPool.playSectionLoop(_local2.trunkParam.bgMusic, 30, 1, SoundPool.TYPE_MUSIC);
var _local3:Array = _local2.trunkParam.audioEventList.getEvents();
events = [];
for each (_local4 in _local3) {
if (((((!((_local4.time == 0))) && (!((_local4.movie == ""))))) && (!((_local4.movie == null))))){
events.push(_local4);
};
};
playings = new HashSet();
delta = ((1000 / Game.FPS) + 2);
}
private function __finish(_arg1:AudioEventParam):void{
playings.remove(_arg1);
}
public function destory():void{
bgSound.stop();
bgMusic.stop();
}
public function tick():void{
var _local2:AudioEventParam;
var _local3:Number;
var _local1:Number = bgSound.getPosition();
for each (_local2 in events) {
if (!playings.contains(_local2)){
_local3 = _local2.time;
if (Math.abs((_local3 - _local1)) < delta){
playings.add(_local2);
new AudioEvent(scene, _local2, __finish);
};
};
};
bgSound.goon();
bgMusic.goon();
}
}
}//package com.burstyx.bigtree
Section 121
//SceneLogic (com.burstyx.bigtree.SceneLogic)
package com.burstyx.bigtree {
import flash.display.*;
import com.burstyx.bigtree.ui.*;
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
import com.burstyx.bigtree.logic.*;
public class SceneLogic {
private var infinityHoles:Boolean;// = false
private var insects:ArrayList;
private var scene:Scene;
private var onNextWave:Function;
private var groupIndex:int;
private var killedWater:int;// = 0
private var onSuccess:Function;
private var circles:Array;
private var holeGroups:Array;
private var infinityLevel:int;// = 0
private var hHolder:Sprite;
private var eventer:EventGenerator;
private var battleFinished:Boolean;// = false
private var curHoles:Array;
private var tutorialTouched:Boolean;// = false
private var boss:BossGrade;
private var game:Game;
private var iHolder:Sprite;
public function SceneLogic(_arg1:Game, _arg2:Scene, _arg3:Sprite, _arg4:Sprite, _arg5:Function, _arg6:Function){
this.game = _arg1;
this.scene = _arg2;
this.hHolder = _arg3;
this.iHolder = _arg4;
this.onSuccess = _arg5;
this.onNextWave = _arg6;
eventer = new EventGenerator();
groupIndex = -1;
_arg3.mouseChildren = (_arg3.mouseEnabled = false);
_arg4.mouseChildren = (_arg4.mouseEnabled = false);
insects = new ArrayList();
init();
}
private function doInsects():void{
var _local2:LevelCircle;
var _local1:Boolean;
for each (_local2 in circles) {
if (!_local2.isFinished()){
_local1 = false;
_local2.tick();
};
};
if (_local1){
if (boss){
boss.tick();
if (insects.size() <= 0){
boss.destory();
boss = null;
nextGrade();
};
} else {
boss = new BossGrade();
if (!boss.init(scene, this, scene.getParam().insectList, groupIndex)){
boss = null;
nextGrade();
};
};
};
}
private function fireOnInsectCloned(_arg1:Insect, _arg2:int):void{
eventer.dispatchEvent("InsectCloned", [_arg1, _arg2]);
}
public function addDisplayUnit(_arg1:DisplayObject):void{
iHolder.addChild(_arg1);
}
private function doBranch(_arg1:Branch, _arg2:Array):void{
var _local4:Joint;
var _local5:Branch;
var _local6:Weapon;
if (null == _arg1){
return;
};
var _local3:Array = _arg1.getJoints();
for each (_local4 in _local3) {
_local5 = _local4.getAttackment();
if ((_local5 is Weapon)){
_local6 = (_local5 as Weapon);
if (null == _local6.getController()){
_local6.setController(new WeaponController(scene, _local6));
};
_local6.getController().tick(_arg2);
} else {
doBranch(_local5, _arg2);
};
};
}
private function init():void{
var _local2:HoleParam;
var _local3:int;
var _local4:int;
var _local5:Array;
var _local6:Array;
var _local7:Hole;
var _local1:Array = scene.getParam().holeList.getHoles();
holeGroups = [];
for each (_local2 in _local1) {
_local4 = _local2.grade;
_local5 = holeGroups[_local4];
if (null == _local5){
_local5 = [];
holeGroups[_local4] = _local5;
};
insertHole(_local5, new Hole(scene, _local2));
};
_local3 = 0;
while (_local3 < holeGroups.length) {
_local6 = holeGroups[_local3];
for each (_local7 in _local6) {
_local7.setMatrixScale(_local3);
};
_local3++;
};
}
public function removeOnInsectRemoved(_arg1:Function):void{
eventer.removeListener("InsectRemoved", _arg1);
}
private function insertHole(_arg1:Array, _arg2:Hole):void{
var _local4:Hole;
hHolder.addChild(_arg2.getAsset());
var _local3:int;
while (_local3 < _arg1.length) {
_local4 = _arg1[_local3];
if (_arg2.getParam().order < _local4.getParam().order){
_arg1.splice(_local3, 0, _arg2);
return;
};
_local3++;
};
_arg1.unshift(_arg2);
}
public function removeInsect(_arg1:Insect, _arg2:Boolean, _arg3:int):void{
if (_arg2){
killedWater = (killedWater + _arg1.getHPTotal());
};
insects.remove(_arg1);
_arg1.destroy();
fireOnInsectRemoved(_arg1, _arg3);
}
private function startGrade(_arg1:Array):void{
var _local3:Hole;
var _local4:int;
var _local8:Hole;
var _local9:LevelCircle;
onNextWave(groupIndex);
game.addPopup(new NextWaveUI(groupIndex, holeGroups.length, infinityLevel));
circles = [];
var _local2:Array = [];
for each (_local3 in _arg1) {
if (_local3.getParam().infinity){
infinityHoles = true;
};
if (_local3.isMatrix()){
_local2.push(_local3);
new MatrixArrowTip(scene, this, _local3, LevelCircle.HOLE_BREAKING_TIME);
} else {
_local3.setState(Hole.RUNNING);
};
};
_local4 = _local2.length;
if (_local4 <= 0){
throw (new Error(("次级没有母体洞口:" + groupIndex)));
};
if (infinityHoles){
infinityLevel++;
PlayUIInsectInfo.strongMul = (infinityLevel + 1);
} else {
PlayUIInsectInfo.strongMul = 1;
};
var _local5:InsectBuilder = new InsectBuilder(scene.getParam().insectList, groupIndex, infinityLevel);
var _local6:Array = _local5.split(_local4);
var _local7:int;
while (_local7 < _local4) {
_local8 = _local2[_local7];
_local9 = new LevelCircle(scene, this, _arg1, _local8, _local6[_local7], groupIndex);
if (tutorialTouched){
_local9.setFastBreakHole();
};
circles.push(_local9);
_local7++;
};
tutorialTouched = false;
}
private function fireOnInsectRemoved(_arg1:Insect, _arg2:int):void{
eventer.dispatchEvent("InsectRemoved", [_arg1, _arg2]);
}
private function nextGrade():void{
var _local1:Hole;
if (curHoles){
for each (_local1 in curHoles) {
_local1.setState(Hole.DEPLETED);
};
};
groupIndex++;
if (groupIndex >= holeGroups.length){
if (infinityHoles){
groupIndex = (holeGroups.length - 1);
} else {
endGrades();
return;
};
};
curHoles = holeGroups[groupIndex];
if ((((null == curHoles)) || ((curHoles.length == 0)))){
nextGrade();
return;
};
startGrade(curHoles);
}
public function tick():void{
if (TutorialUI.running){
tutorialTouched = true;
};
var _local1:int;
while (_local1 < Game.RunSpeed) {
if (((!(battleFinished)) && (!(TutorialUI.running)))){
doInsects();
doWeapons();
};
_local1++;
};
}
public function getGroupIndexies():Array{
var _local3:Array;
var _local1:Array = [];
var _local2:int;
while (_local2 < holeGroups.length) {
_local3 = holeGroups[_local2];
if (((!((null == _local3))) && ((_local3.length > 0)))){
_local1.push(_local2);
};
_local2++;
};
return (_local1);
}
public function addOnInsectCloned(_arg1:Function):void{
eventer.addListener("InsectCloned", _arg1);
}
private function endGrades():void{
battleFinished = true;
circles = null;
onSuccess();
}
private function doWeapons():void{
var _local4:Insect;
var _local1:Trunk = scene.getTrunk();
var _local2:Array = insects.toArray();
var _local3:Array = [];
for each (_local4 in _local2) {
if (((_local4.isAlive()) && (_local4.canHurt()))){
_local3[_local3.length] = _local4;
};
};
doBranch(_local1, _local3);
}
public function removeOnInsectCloned(_arg1:Function):void{
eventer.removeListener("InsectCloned", _arg1);
}
public function addOnInsectRemoved(_arg1:Function):void{
eventer.addListener("InsectRemoved", _arg1);
}
public function getKilledWater():int{
return (killedWater);
}
public function addInsect(_arg1:Insect, _arg2:Boolean=false):void{
_arg1.init(iHolder);
insects.append(_arg1);
if (_arg2){
fireOnInsectCloned(_arg1, groupIndex);
};
}
public function destroy():void{
var _local2:Insect;
var _local3:Array;
var _local4:Hole;
var _local1:Array = insects.toArray();
for each (_local2 in _local1) {
_local2.destroy();
};
insects.clear();
for each (_local3 in holeGroups) {
for each (_local4 in _local3) {
_local4.destroy();
};
};
if (boss){
boss.destory();
};
}
}
}//package com.burstyx.bigtree
Section 122
//SectionInfo (com.burstyx.bigtree.SectionInfo)
package com.burstyx.bigtree {
import com.redwave.util.*;
import com.burstyx.bigtree.editor.data.*;
import com.adobe.serialization.json.*;
public class SectionInfo {
public var sectionID:String;
public var type:int;
public var leaderboardId:String;
public var data:String;
public static const StoryEndMC:String = "StoryEndMC";
public static const TUTORIAL:int = 1;
public static const MOVIE:int = 2;
public static const BATTLE:int = 0;
private static var levels:HashMap;
public function SectionInfo(_arg1:String, _arg2:int, _arg3:String="", _arg4:String=""){
this.type = _arg2;
this.data = _arg3;
this.leaderboardId = _arg4;
sectionID = _arg1;
}
public static function getSectionType(_arg1:String):int{
var _local4:SectionInfo;
var _local2:Array = getAllSections();
var _local3:int;
while (_local3 < _local2.length) {
_local4 = _local2[_local3];
if (_local4.sectionID == _arg1){
return (_local4.type);
};
_local3++;
};
return (-1);
}
public static function addLevel(_arg1:String, _arg2:String):void{
if (null == levels){
levels = new HashMap();
};
var _local3:SceneProperties = new SceneProperties();
_local3.decode(_arg2);
_local3.name = _arg1;
levels.put(_arg1, _local3);
}
public static function encodeLevels():String{
var _local3:Array;
var _local4:String;
var _local5:SceneProperties;
var _local1:Object = {};
if (levels){
_local3 = levels.keys();
for each (_local4 in _local3) {
_local5 = levels.getValue(_local4);
_local1[_local4] = _local5.encode();
};
};
var _local2:String = JSON.encode(_local1);
return (_local2);
}
public static function removeLevel(_arg1:String):void{
if (levels){
levels.remove(_arg1);
};
}
public static function getSectionData(_arg1:String):String{
var _local4:SectionInfo;
var _local2:Array = getAllSections();
var _local3:int;
while (_local3 < _local2.length) {
_local4 = _local2[_local3];
if (_local4.sectionID == _arg1){
return (_local4.data);
};
_local3++;
};
return ("");
}
public static function parseLevels(_arg1:String):HashMap{
var _local3:String;
levels = new HashMap();
var _local2:Object = {};
if (!(((_arg1 == null)) || ((_arg1 == "")))){
_local2 = JSON.decode(_arg1);
};
for (_local3 in _local2) {
addLevel(_local3, _local2[_local3]);
};
return (levels.clone());
}
public static function getSectionID(_arg1:int):String{
var _local2:SectionInfo = getAllSections()[_arg1];
if (_local2){
return (_local2.sectionID);
};
return (null);
}
public static function containsLevel(_arg1:String):Boolean{
if (levels){
return (levels.containsKey(_arg1));
};
return (false);
}
public static function getLevel(_arg1:String):SceneProperties{
if (levels){
return (levels.getValue(_arg1));
};
return (null);
}
public static function getSectionIndex(_arg1:String):int{
var _local4:SectionInfo;
var _local2:Array = getAllSections();
var _local3:int;
while (_local3 < _local2.length) {
_local4 = _local2[_local3];
if (_local4.sectionID == _arg1){
return (_local3);
};
_local3++;
};
return (-1);
}
public static function getScene(_arg1:String):Scene{
var _local2:SceneProperties = levels.getValue(_arg1);
if (_local2){
return (new Scene(_local2));
};
return (null);
}
public static function getAllSections():Array{
return ([new SectionInfo("StoryBeginMC", MOVIE, "BeginningMusic"), new SectionInfo("tutorial", TUTORIAL), new SectionInfo("Section0", BATTLE, "", "cdfed1f4be6a3f41"), new SectionInfo("Section1", BATTLE, "", "9afb79b7cfa7e7c3"), new SectionInfo("Section2", BATTLE, "", "e12701db26588123"), new SectionInfo("Section21", BATTLE, "", "aecb01de41b9796e"), new SectionInfo("Section22", BATTLE, "", "a4cf181d3e3213ba"), new SectionInfo("Section23", BATTLE, "", "2751340a63f0820b"), new SectionInfo("Section31", BATTLE, "", "92995668a9c2a795"), new SectionInfo("Section32", BATTLE, "", "7e2e8930fb90c645"), new SectionInfo("Section33", BATTLE, "", "f366c028fb75d091"), new SectionInfo(StoryEndMC, MOVIE, "EndingMusic"), new SectionInfo("Infinity", BATTLE, "", "a3e2447effca73bc")]);
}
public static function getStoryEndIndex():int{
return (getSectionIndex(StoryEndMC));
}
}
}//package com.burstyx.bigtree
Section 123
//Selectable (com.burstyx.bigtree.Selectable)
package com.burstyx.bigtree {
import com.burstyx.bigtree.ui.*;
public interface Selectable {
function setSelected(_arg1:Boolean):void;
function getInformation():StuffInformation;
}
}//package com.burstyx.bigtree
Section 124
//SelectionManager (com.burstyx.bigtree.SelectionManager)
package com.burstyx.bigtree {
import com.burstyx.bigtree.core.*;
import com.redwave.util.*;
public class SelectionManager {
private var eventer:EventGenerator;
private var selection:Selectable;
private static var _ins:SelectionManager;
public function SelectionManager(){
if (_ins){
throw (new Error("SelectionManager Sington Error!"));
};
eventer = new EventGenerator();
_ins = this;
}
public function addSelectionHandler(_arg1:Function):void{
eventer.addListener("selectionChange", _arg1);
}
public function removeSelectionHandler(_arg1:Function):void{
eventer.removeListener("selectionChange", _arg1);
}
public function getSelectionJoint():Joint{
return ((selection as Joint));
}
public function getSelection():Selectable{
return (selection);
}
public function setSelection(_arg1:Selectable):void{
if (_arg1 != selection){
if (selection){
selection.setSelected(false);
};
selection = _arg1;
if (selection){
selection.setSelected(true);
};
eventer.dispatchEvent("selectionChange", [selection]);
};
}
public function getSelectionBranch():Branch{
return ((selection as Branch));
}
public static function get ins():SelectionManager{
if (null == _ins){
new (SelectionManager);
};
return (_ins);
}
}
}//package com.burstyx.bigtree
Section 125
//World (com.burstyx.bigtree.World)
package com.burstyx.bigtree {
import flash.display.*;
import com.redwave.util.*;
public class World {
private var popLayer:DepthContainer;
private var sceneLayer:DepthContainer;
private var h:int;
private var bgLayer:DepthContainer;
private var w:int;
private var uiLayer:DepthContainer;
public function World(_arg1:int, _arg2:int){
this.w = _arg1;
this.h = _arg2;
bgLayer = new DepthContainer();
sceneLayer = new DepthContainer();
uiLayer = new DepthContainer();
popLayer = new DepthContainer();
}
public function layerPop():DepthContainer{
return (popLayer);
}
public function layerUI():DepthContainer{
return (uiLayer);
}
public function layerBG():DepthContainer{
return (bgLayer);
}
public function layerScene():DepthContainer{
return (sceneLayer);
}
public function addToRoot(_arg1:DisplayObjectContainer):void{
_arg1.addChild(bgLayer);
_arg1.addChild(sceneLayer);
_arg1.addChild(uiLayer);
_arg1.addChild(popLayer);
}
}
}//package com.burstyx.bigtree
Section 126
//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 toURLString():String{
var _local1:Variables = toVariables();
return (_local1.toString());
}
public function isNew():Boolean{
return (_new);
}
public function get utmcn():String{
return ("1");
}
public function isEmpty():Boolean{
return (_empty);
}
public function toVariables():Variables{
var _local1:Variables = new Variables();
_local1.URIencode = true;
if (((!(isEmpty())) && (isNew()))){
_local1.utmcn = utmcn;
};
if (((!(isEmpty())) && (!(isNew())))){
_local1.utmcr = utmcr;
};
return (_local1);
}
public function get utmcr():String{
return ("1");
}
}
}//package com.google.analytics.campaign
Section 127
//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"
}
}//package com.google.analytics.campaign
Section 128
//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 getCampaignInformation(_arg1:String, _arg2:Boolean):CampaignInfo{
var _local4:CampaignTracker;
var _local8:CampaignTracker;
var _local9:int;
var _local3:CampaignInfo = new CampaignInfo();
var _local5:Boolean;
var _local6:Boolean;
var _local7:int;
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 hasNoOverride(_arg1:String):Boolean{
var _local2:CampaignKey = _config.campaignKey;
if (_arg1 == ""){
return (false);
};
var _local3:Variables = new Variables(_arg1);
var _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 getTrackerFromSearchString(_arg1:String):CampaignTracker{
var _local2:CampaignTracker = getOrganicCampaign();
var _local3:CampaignTracker = new CampaignTracker();
var _local4:CampaignKey = _config.campaignKey;
if (_arg1 == ""){
return (_local3);
};
var _local5:Variables = 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 _local4:Array;
var _local5:OrganicReferrer;
var _local6:String;
if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
return (_local1);
};
var _local2:URL = new URL(_referrer);
var _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 getDirectCampaign():CampaignTracker{
var _local1:CampaignTracker = 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 isIgnoredReferral(_arg1:CampaignTracker):Boolean{
if (((_arg1) && ((_arg1.medium == "referral")))){
return (_config.organic.isIgnoredReferral(_arg1.source));
};
return (false);
}
public function isValid(_arg1:CampaignTracker):Boolean{
if (((_arg1) && (_arg1.isValid()))){
return (true);
};
return (false);
}
public function getReferrerCampaign():CampaignTracker{
var _local1:CampaignTracker;
if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
return (_local1);
};
var _local2:URL = new URL(_referrer);
var _local3:String = _local2.hostName;
var _local4:String = _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 = 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 129
//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 source:String;
public var clickId:String;
public var name:String;
public var term:String;
public var medium:String;
public var id: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 isValid():Boolean{
if (((((!((id == ""))) || (!((source == ""))))) || (!((clickId == ""))))){
return (true);
};
return (false);
}
public function toTrackerString():String{
var _local1:Array = [];
_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));
}
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 = _arg1.split(CampaignManager.trackingDelimiter).join("&");
var _local3:Variables = 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 130
//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 = toVariables();
return (_local1.toString());
}
public function get utmsr():String{
return (((_info.screenWidth + "x") + _info.screenHeight));
}
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 get utmcs():String{
return (_info.languageEncoding);
}
public function toVariables():Variables{
var _local1:Variables = 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 131
//Buffer (com.google.analytics.core.Buffer)
package com.google.analytics.core {
import flash.events.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.net.*;
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 clearCookies():void{
utma.reset();
utmb.reset();
utmc.reset();
utmz.reset();
utmv.reset();
utmk.reset();
}
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 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 hasUTMC():Boolean{
if (_utmc){
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 hasUTMK():Boolean{
if (_utmk){
return (true);
};
return (false);
}
public function generateCookiesHash():Number{
var _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 _createUMTB():void{
_utmb = new UTMB();
_utmb.proxy = this;
}
private function _createUMTC():void{
_utmc = new UTMC();
}
private function _createUMTA():void{
_utma = new UTMA();
_utma.proxy = this;
}
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 _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 _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 _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 132
//DocumentInfo (com.google.analytics.core.DocumentInfo)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.external.*;
import com.google.analytics.utils.*;
public class DocumentInfo {
private var _pageURL:String;
private var _utmr:String;
private var _config:Configuration;
private var _adSense:AdSenseGlobals;
private var _info:Environment;
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 = toVariables();
return (_local1.toString());
}
private function _renderPageURL(_arg1:String=""):String{
var _local2:String = _info.locationPath;
var _local3:String = _info.locationSearch;
if (((!(_arg1)) || ((_arg1 == "")))){
_arg1 = (_local2 + unescape(_local3));
};
return (_arg1);
}
public function get utmp():String{
return (_renderPageURL(_pageURL));
}
public function get utmhid():String{
return (String(_generateHitId()));
}
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 toVariables():Variables{
var _local1:Variables = 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 133
//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 _debug:DebugConfiguration;
private var _name:String;
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 134
//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 135
//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 _ext10:X10;
private var _isEventHit:Boolean;
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 = 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 = new Variables();
_local1.URIencode = true;
if (_isEventHit){
_local1.utmt = utmt;
};
_local1.utme = utme;
return (_local1);
}
}
}//package com.google.analytics.core
Section 136
//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 137
//ga_internal (com.google.analytics.core.ga_internal)
package com.google.analytics.core {
public namespace ga_internal;
}//package com.google.analytics.core
Section 138
//GIFRequest (com.google.analytics.core.GIFRequest)
package com.google.analytics.core {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.net.*;
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 = _lastRequest.url;
var _local3:String = String((_requests.length - 1));
var _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 = [];
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 request = _arg1;
var loader:Loader = new Loader();
loader.name = String(_count++);
var context:LoaderContext = 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 _local2:Number;
var _local1:Number = 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);
};
};
}
public function get utmhn():String{
return (_info.domainName);
}
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);
}
private function _debugSend(_arg1:URLRequest):void{
var _local3:String;
var _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 = _arg1.target.loader.name;
_requests[_local2].complete();
var _local3 = (("Gif Request #" + _local2) + " sent");
var _local4:String = _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 139
//IdleTimer (com.google.analytics.core.IdleTimer)
package com.google.analytics.core {
import flash.display.*;
import flash.events.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.utils.*;
public class IdleTimer {
private var _stage:Stage;
private var _loop:Timer;
private var _lastMove:int;
private var _inactivity:Number;
private var _debug:DebugConfiguration;
private var _session:Timer;
private var _buffer:Buffer;
public function IdleTimer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:DisplayObject, _arg4:Buffer){
var _local5:Number = _arg1.idleLoop;
var _local6:Number = _arg1.idleTimeout;
var _local7:Number = _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 = getTimer();
if ((_local2 - _lastMove) >= _inactivity){
if (!_session.running){
_debug.info("session timer start", VisualDebugMode.geek);
_session.start();
};
};
}
}
}//package com.google.analytics.core
Section 140
//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 isIgnoredKeyword(_arg1:String):Boolean{
if (_ignoredKeywordsCache.hasOwnProperty(_arg1)){
return (true);
};
return (false);
}
public function getKeywordValue(_arg1:OrganicReferrer, _arg2:String):String{
var _local3:String = _arg1.keyword;
return (getKeywordValueFromPath(_local3, _arg2));
}
public function isIgnoredReferral(_arg1:String):Boolean{
if (_ignoredReferralsCache.hasOwnProperty(_arg1)){
return (true);
};
return (false);
}
public function clear():void{
clearEngines();
clearIgnoredReferrals();
clearIgnoredKeywords();
}
public function get count():int{
return (_sources.length);
}
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 clearIgnoredKeywords():void{
_ignoredKeywords = [];
_ignoredKeywordsCache = {};
}
public function addSource(_arg1:String, _arg2:String):void{
var _local3:OrganicReferrer = 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 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 141
//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 get keyword():String{
return (_keyword);
}
public function get engine():String{
return (_engine);
}
public function set engine(_arg1:String):void{
_engine = _arg1.toLowerCase();
}
public function toString():String{
return (((engine + "?") + keyword));
}
public function set keyword(_arg1:String):void{
_keyword = _arg1.toLowerCase();
}
}
}//package com.google.analytics.core
Section 142
//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 end:int;
public var request:URLRequest;
public function RequestObject(_arg1:URLRequest){
start = getTimer();
this.request = _arg1;
}
public function hasCompleted():Boolean{
return ((end > 0));
}
public function toString():String{
var _local1:Array = [];
_local1.push((("duration: " + duration) + "ms"));
_local1.push(("url: " + request.url));
return ((("{ " + _local1.join(", ")) + " }"));
}
public function complete():void{
end = getTimer();
}
public function get duration():int{
if (!hasCompleted()){
return (0);
};
return ((end - start));
}
}
}//package com.google.analytics.core
Section 143
//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 144
//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 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 trackTrans():void{
enqueue("trackTrans");
}
public function trackPageview(_arg1:String=""):void{
enqueue("trackPageview", _arg1);
}
public function setClientInfo(_arg1:Boolean):void{
enqueue("setClientInfo", _arg1);
}
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 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 resetSession():void{
enqueue("resetSession");
}
public function setDetectFlash(_arg1:Boolean):void{
enqueue("setDetectFlash", _arg1);
}
public function clear():void{
_ar = [];
}
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 setCampSourceKey(_arg1:String):void{
enqueue("setCampSourceKey", _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 setCampContentKey(_arg1:String):void{
enqueue("setCampContentKey", _arg1);
}
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 clearIgnoredRef():void{
enqueue("clearIgnoredRef");
}
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 setDetectTitle(_arg1:Boolean):void{
enqueue("setDetectTitle", _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 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 145
//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 146
//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 _local5:int;
var _local6:int;
var _local7:int;
if (_arg1 == ""){
return ("");
};
var _local3:Array = [" ", "\n", "\r", "\t"];
var _local4:String = _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 _local4:int;
var _local5:int;
var _local2 = 1;
var _local3:int;
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 = /^UA-[0-9]*-[0-9]*$/;
return (_local2.test(_arg1));
}
}
}//package com.google.analytics.core
Section 147
//Cookie (com.google.analytics.data.Cookie)
package com.google.analytics.data {
public interface Cookie {
function fromSharedObject(_arg1:Object):void;
function toURLString():String;
function get creation():Date;
function toSharedObject():Object;
function isExpired():Boolean;
function set creation(_arg1:Date):void;
function set expiration(_arg1:Date):void;
function get expiration():Date;
}
}//package com.google.analytics.data
Section 148
//UTMA (com.google.analytics.data.UTMA)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMA extends UTMCookie {
private var _sessionId:Number;
private var _domainHash:Number;
private var _firstTime:Number;
private var _currentTime: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 set currentTime(_arg1:Number):void{
_currentTime = _arg1;
update();
}
public function get sessionId():Number{
return (_sessionId);
}
public function get sessionCount():Number{
return (_sessionCount);
}
public function get firstTime():Number{
return (_firstTime);
}
public function get currentTime():Number{
return (_currentTime);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set sessionId(_arg1:Number):void{
_sessionId = _arg1;
update();
}
public function set sessionCount(_arg1:Number):void{
_sessionCount = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
public function set firstTime(_arg1:Number):void{
_firstTime = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 149
//UTMB (com.google.analytics.data.UTMB)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMB extends UTMCookie {
private var _trackCount:Number;
private var _lastTime:Number;
private var _domainHash: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 set token(_arg1:Number):void{
_token = _arg1;
update();
}
public function set trackCount(_arg1:Number):void{
_trackCount = _arg1;
update();
}
public function get lastTime():Number{
return (_lastTime);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set lastTime(_arg1:Number):void{
_lastTime = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
public function get token():Number{
return (_token);
}
public function get trackCount():Number{
return (_trackCount);
}
}
}//package com.google.analytics.data
Section 150
//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 get domainHash():Number{
return (_domainHash);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 151
//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;
protected var fields:Array;
private var _timespan:Number;
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 _local2:String;
var _local1:int;
var _local3:int;
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);
}
public function resetTimestamp(_arg1:Number=NaN):void{
if (!isNaN(_arg1)){
_timespan = _arg1;
};
_creation = null;
_expiration = null;
_timestamp(_timespan);
}
protected function update():void{
resetTimestamp();
if (proxy){
proxy.update(name, toSharedObject());
};
}
public function reset():void{
var _local1:String;
var _local2:int;
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 fromSharedObject(_arg1:Object):void{
var _local2:String;
var _local3:int = fields.length;
var _local4:int;
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 = new Date();
var _local2:Number = (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 valueOf():String{
var _local2:String;
var _local3:*;
var _local1:Array = [];
var _local4:int;
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 toURLString():String{
return (((inURL + "=") + valueOf()));
}
public function get expiration():Date{
if (_expiration){
return (_expiration);
};
return (new Date((new Date().valueOf() + 1000)));
}
public function toSharedObject():Object{
var _local2:String;
var _local3:*;
var _local1:Object = {};
var _local4:int;
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 _local3:String;
var _local4:*;
var _local2:Array = [];
var _local5:int = fields.length;
var _local6:int;
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));
};
};
};
};
var _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 152
//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 set hash(_arg1:Number):void{
_hash = _arg1;
update();
}
public function get hash():Number{
return (_hash);
}
}
}//package com.google.analytics.data
Section 153
//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;
}
override public function toURLString():String{
return (((inURL + "=") + encodeURI(valueOf())));
}
public function get value():String{
return (_value);
}
public function get domainHash():Number{
return (_domainHash);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set value(_arg1:String):void{
_value = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 154
//UTMZ (com.google.analytics.data.UTMZ)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMZ extends UTMCookie {
private var _campaignTracking:String;
private var _campaignCreation:Number;
private var _responseCount:Number;
private var _domainHash:Number;
private var _campaignSessions: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 set responseCount(_arg1:Number):void{
_responseCount = _arg1;
update();
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set campaignCreation(_arg1:Number):void{
_campaignCreation = _arg1;
update();
}
public function get campaignTracking():String{
return (_campaignTracking);
}
public function get campaignSessions():Number{
return (_campaignSessions);
}
public function get domainHash():Number{
return (_domainHash);
}
public function get responseCount():Number{
return (_responseCount);
}
public function get campaignCreation():Number{
return (_campaignCreation);
}
public function set campaignSessions(_arg1:Number):void{
_campaignSessions = _arg1;
update();
}
public function set campaignTracking(_arg1:String):void{
_campaignTracking = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 155
//X10 (com.google.analytics.data.X10)
package com.google.analytics.data {
public class X10 {
private var _delimEnd:String;// = ")"
private var _minimum:int;
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 _hasData:int;
private var _escapeCharMap:Object;
private var _projectData:Object;
private var _value:String;// = "v"
public function X10(){
_set = [_key, _value];
super();
_projectData = {};
_escapeCharMap = {};
_escapeCharMap[_escapeChar] = "'0";
_escapeCharMap[_delimEnd] = "'1";
_escapeCharMap[_delimSet] = "'2";
_escapeCharMap[_delimNumValue] = "'3";
_minimum = 1;
}
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);
}
private function _renderProject(_arg1:Object):String{
var _local4:int;
var _local5:Array;
var _local2 = "";
var _local3:Boolean;
var _local6:int = _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);
}
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 _local3:String;
var _local4:int;
var _local2:Array = [];
_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 hasData():Boolean{
return ((_hasData > 0));
}
public function renderMergedUrlString(_arg1:X10=null):String{
var _local3:String;
if (!_arg1){
return (renderUrlString());
};
var _local2:Array = [_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 _local2:String;
var _local1:Array = [];
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 clearValue(_arg1:Number):void{
_clearInternal(_arg1, _value);
}
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 getValue(_arg1:Number, _arg2:Number){
var _local3:* = _getInternal(_arg1, _value, _arg2);
if (_local3 == null){
return (null);
};
return (Number(_local3));
}
private function _escapeExtensibleValue(_arg1:String):String{
var _local3:int;
var _local4:String;
var _local5:String;
var _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 156
//_Style (com.google.analytics.debug._Style)
package com.google.analytics.debug {
import flash.net.*;
import flash.text.*;
public class _Style {
public var failureColor:uint;
public var borderColor:uint;
public var backgroundColor:uint;
private var _sheet:StyleSheet;
public var roundedCorner:uint;
public var warningColor:uint;
public var infoColor:uint;
public var alertColor:uint;
public var successColor:uint;
private var _loader:URLLoader;
private var _defaultSheet:String;
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 157
//Alert (com.google.analytics.debug.Alert)
package com.google.analytics.debug {
import flash.events.*;
public class Alert extends Label {
public var autoClose:Boolean;// = true
public var actionOnNextLine: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){
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 = [];
var _local8:int;
while (_local8 < _arg2.length) {
_arg2[_local8].container = this;
_actions.push(_arg2[_local8]);
_local8++;
};
}
private function _defineActions():void{
var _local3:AlertAction;
var _local1 = "";
if (actionOnNextLine){
_local1 = (_local1 + "\n");
} else {
_local1 = (_local1 + " |");
};
_local1 = (_local1 + " ");
var _local2:Array = [];
var _local4:int;
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");
}
protected function isValidAction(_arg1:String):Boolean{
var _local2:int;
while (_local2 < _actions.length) {
if (_arg1 == _actions[_local2].activator){
return (true);
};
_local2++;
};
return (false);
}
override protected function layout():void{
super.layout();
_defineActions();
}
protected function getAction(_arg1:String):AlertAction{
var _local2:int;
while (_local2 < _actions.length) {
if (_arg1 == _actions[_local2].activator){
return (_actions[_local2]);
};
_local2++;
};
return (null);
}
protected function spaces(_arg1:int):String{
var _local2 = "";
var _local3 = " ";
var _local4:int;
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();
};
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 158
//AlertAction (com.google.analytics.debug.AlertAction)
package com.google.analytics.debug {
public class AlertAction {
public var container:Alert;
private var _callback;
public var activator:String;
public var name: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 159
//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 160
//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 = 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 161
//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
private var _linediff:int;// = 0
public var maxLines:uint;// = 16
public static var count:uint = 0;
public function Debug(_arg1:uint=0, _arg2:Align=null, _arg3:Boolean=false){
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 writeBold(_arg1:String):void{
write(_arg1, true);
}
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);
}
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");
}
override public function get forcedWidth():uint{
if (this.parent){
if (UISprite(this.parent).forcedWidth > _preferredForcedWidth){
return (_preferredForcedWidth);
};
return (UISprite(this.parent).forcedWidth);
//unresolved jump
};
return (super.forcedWidth);
}
public function write(_arg1:String, _arg2:Boolean=false):void{
var _local3:Array;
if (_arg1.indexOf("") > -1){
_local3 = _arg1.split("\n");
} else {
_local3 = [_arg1];
};
var _local4 = "";
var _local5 = "";
if (_arg2){
_local4 = "<b>";
_local5 = "</b>";
};
var _local6:int;
while (_local6 < _local3.length) {
_lines.push(((_local4 + _local3[_local6]) + _local5));
_local6++;
};
var _local7:Array = _getLinesToDisplay();
text = _local7.join("\n");
}
public function close():void{
dispose();
}
override protected function dispose():void{
removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
super.dispose();
}
}
}//package com.google.analytics.debug
Section 162
//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 showInfos:Boolean;// = true
public var infoTimeout:Number;// = 1000
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(){
_mode = VisualDebugMode.basic;
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 _local7:Array;
var _local8:int;
var _local2:Array = [];
var _local3 = "";
var _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));
};
var _local5:int = _local2.length;
var _local6:int;
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 163
//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 = Align.bottomLeft;
var _local5:Boolean;
var _local6:Boolean;
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 164
//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 165
//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 createAlert(_arg1:String):void;
function addToStage(_arg1:DisplayObject):void;
function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void;
function createWarning(_arg1:String):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 destroy():void;
function bringToFront(_arg1:DisplayObject):void;
function isAvailable():Boolean;
}
}//package com.google.analytics.debug
Section 166
//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 close():void{
if (parent != null){
parent.removeChild(this);
};
}
override public function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "hide":
close();
break;
};
}
public function onComplete(_arg1:TimerEvent):void{
close();
}
}
}//package com.google.analytics.debug
Section 167
//Label (com.google.analytics.debug.Label)
package com.google.analytics.debug {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class Label extends UISprite {
private var _color:uint;
private var _background:Shape;
private var _textField:TextField;
public var stickToEdge:Boolean;
private var _text:String;
protected var selectable:Boolean;
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);
}
public function get tag():String{
return (_tag);
}
private function _draw():void{
var _local1:Graphics = _background.graphics;
_local1.clear();
_local1.beginFill(_color);
var _local2:uint = _textField.width;
var _local3:uint = _textField.height;
if (forcedWidth > 0){
_local2 = forcedWidth;
};
Background.drawRounded(this, _local1, _local2, _local3);
_local1.endFill();
}
public function get text():String{
return (_textField.text);
}
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 set text(_arg1:String):void{
if (_arg1 == ""){
_arg1 = _text;
};
_textField.htmlText = (((("<span class=\"" + tag) + "\">") + _arg1) + "</span>");
_text = _arg1;
_draw();
resize();
}
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 set tag(_arg1:String):void{
_tag = _arg1;
text = "";
}
public function onLink(_arg1:TextEvent):void{
}
override protected function dispose():void{
_textField.removeEventListener(TextEvent.LINK, onLink);
super.dispose();
}
}
}//package com.google.analytics.debug
Section 168
//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){
_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 createWarning(_arg1:String):void{
if (((_hasWarning) || (!(isAvailable())))){
_warningQueue.push(_arg1);
return;
};
_arg1 = _filterMaxChars(_arg1);
_hasWarning = true;
var _local2:Warning = new Warning(_arg1, _debug.warningTimeout);
addToPanel("analytics", _local2);
_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearWarning, false, 0, true);
if (_hasDebug){
visualDebug.writeBold(_arg1);
};
}
public function bringToFront(_arg1:DisplayObject):void{
_display.stage.setChildIndex(_arg1, (_display.stage.numChildren - 1));
}
public function createFailureAlert(_arg1:String):void{
var _local2:AlertAction;
if (_debug.verbose){
_arg1 = _filterMaxChars(_arg1);
_local2 = new AlertAction("Close", "close", "close");
} else {
_local2 = new AlertAction("X", "close", "close");
};
var _local3:Alert = 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 = 10;
var _local2:uint = (_display.stage.stageWidth - (_local1 * 2));
var _local3:uint = (_display.stage.stageHeight - (_local1 * 2));
var _local4:Panel = 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 _local4:Panel;
var _local3:DisplayObject = _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 _local6:String;
var _local3 = "\n";
var _local4:Array = [];
var _local5:Array = _arg1.split(_local3);
if (_arg2 == 0){
_arg2 = _maxCharPerLine;
};
var _local7:int;
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));
}
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;
if (_debug.verbose){
_arg1 = _filterMaxChars(_arg1);
_local2 = new AlertAction("Close", "close", "close");
} else {
_local2 = new AlertAction("X", "close", "close");
};
var _local3:Alert = 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{
_arg1 = _filterMaxChars(_arg1);
var _local2:Alert = new Alert(_arg1, [new AlertAction("Close", "close", "close")]);
addToPanel("analytics", _local2);
if (_hasDebug){
visualDebug.writeBold(_arg1);
};
}
public function createInfo(_arg1:String):void{
if (((_hasInfo) || (!(isAvailable())))){
_infoQueue.push(_arg1);
return;
};
_arg1 = _filterMaxChars(_arg1);
_hasInfo = true;
var _local2:Info = 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 message = _arg1;
var request = _arg2;
var ref = _arg3;
if (_hasGRAlert){
_GRAlertQueue.push([message, request, ref]);
return;
};
_hasGRAlert = true;
var f:Function = function ():void{
ref.sendRequest(request);
};
message = _filterMaxChars(message);
var gra:GIFRequestAlert = 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 = 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 169
//Margin (com.google.analytics.debug.Margin)
package com.google.analytics.debug {
public class Margin {
public var top:int;
public var left:int;
public var bottom:int;
public var right: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 170
//Panel (com.google.analytics.debug.Panel)
package com.google.analytics.debug {
import flash.display.*;
import flash.events.*;
public class Panel extends UISprite {
private var _savedH:uint;
private var _data:UISprite;
private var _mask:Sprite;
private var _background:Shape;
private var _savedW:uint;
private var _stickToEdge:Boolean;
private var _border:Shape;
private var _borderColor:uint;
protected var baseAlpha:Number;
private var _backgroundColor:uint;
private var _title:Label;
private var _colapsed:Boolean;
private var _name:String;
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 get stickToEdge():Boolean{
return (_stickToEdge);
}
public function onToggle(_arg1:MouseEvent=null):void{
if (_colapsed){
_data.visible = true;
} else {
_data.visible = false;
};
_colapsed = !(_colapsed);
_update();
resize();
}
public function set stickToEdge(_arg1:Boolean):void{
_stickToEdge = _arg1;
_title.stickToEdge = _arg1;
}
override protected function dispose():void{
_title.removeEventListener(MouseEvent.CLICK, onToggle);
super.dispose();
}
private function _draw():void{
var _local1:uint;
var _local2:uint;
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;
};
var _local3:Graphics = _background.graphics;
_local3.clear();
_local3.beginFill(_backgroundColor);
Background.drawRounded(this, _local3, _local1, _local2);
_local3.endFill();
var _local4:Graphics = _data.graphics;
_local4.clear();
_local4.beginFill(_backgroundColor, 0);
Background.drawRounded(this, _local4, _local1, _local2);
_local4.endFill();
var _local5:Graphics = _border.graphics;
_local5.clear();
_local5.lineStyle(0.1, _borderColor);
Background.drawRounded(this, _local5, _local1, _local2);
_local5.endFill();
var _local6:Graphics = _mask.graphics;
_local6.clear();
_local6.beginFill(_backgroundColor);
Background.drawRounded(this, _local6, (_local1 + 1), (_local2 + 1));
_local6.endFill();
}
public function get title():String{
return (_title.text);
}
private function _update():void{
_draw();
if (baseAlpha < 1){
_background.alpha = baseAlpha;
_border.alpha = baseAlpha;
};
}
public function addData(_arg1:DisplayObject):void{
_data.addChild(_arg1);
}
override protected function layout():void{
_update();
addChild(_background);
addChild(_data);
addChild(_title);
addChild(_border);
addChild(_mask);
mask = _mask;
}
public function set title(_arg1:String):void{
_title.text = _arg1;
}
public function close():void{
dispose();
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 171
//Style (com.google.analytics.debug.Style)
package com.google.analytics.debug {
public const Style:_Style = new _Style();
}//package com.google.analytics.debug
Section 172
//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 = Align.bottomLeft;
var _local5:Boolean;
var _local6:Boolean;
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 173
//UISprite (com.google.analytics.debug.UISprite)
package com.google.analytics.debug {
import flash.display.*;
import flash.events.*;
public class UISprite extends Sprite {
private var _forcedWidth:uint;
public var margin:Margin;
protected var alignTarget:DisplayObject;
protected var listenResize:Boolean;
public var alignement:Align;
private var _forcedHeight:uint;
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);
}
public function get forcedHeight():uint{
if (_forcedHeight){
return (_forcedHeight);
};
return (height);
}
private function _onAddedToStage(_arg1:Event):void{
layout();
resize();
}
protected function dispose():void{
var _local1:DisplayObject;
var _local2:int;
while (_local2 < numChildren) {
_local1 = getChildAt(_local2);
if (_local1){
removeChild(_local1);
};
_local2++;
};
}
public function set forcedHeight(_arg1:uint):void{
_forcedHeight = _arg1;
}
public function set forcedWidth(_arg1:uint):void{
_forcedWidth = _arg1;
}
protected function layout():void{
}
public function get forcedWidth():uint{
if (_forcedWidth){
return (_forcedWidth);
};
return (width);
}
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;
}
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);
};
}
protected function onResize(_arg1:Event):void{
resize();
}
}
}//package com.google.analytics.debug
Section 174
//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 175
//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 close():void{
if (parent != null){
parent.removeChild(this);
};
}
override public function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "hide":
close();
break;
};
}
public function onComplete(_arg1:TimerEvent):void{
close();
}
}
}//package com.google.analytics.debug
Section 176
//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 177
//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){
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 set hid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.hid", _arg1);
}
public function get dh():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.dh"));
}
public function get sid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.sid"));
}
public function get vid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.vid"));
}
private function _verify():void{
if (!_gaGlobalVerified){
executeBlock(gaGlobal_js);
_gaGlobalVerified = true;
};
}
public function set sid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.sid", _arg1);
}
public function get gaGlobal():Object{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal"));
}
}
}//package com.google.analytics.external
Section 178
//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 _language:String;
private var _host:String;
private var _pathname:String;
private var _location:String;
private var _search:String;
private var _characterSet:String;
private var _title:String;
private var _protocol: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 cacheProperties():void{
if (!isAvailable()){
return;
};
var _local1:Object = 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 language():String{
if (_language){
return (_language);
};
if (!isAvailable()){
return (null);
};
var _local1:String = getProperty("navigator.language");
if (_local1 == null){
_local1 = getProperty("navigator.browserLanguage");
};
_language = _local1;
return (_language);
}
public function get colorDepth():String{
if (_colorDepth){
return (_colorDepth);
};
if (!isAvailable()){
return (null);
};
_colorDepth = getProperty("window.screen.colorDepth");
return (_colorDepth);
}
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 get host():String{
if (_host){
return (_host);
};
if (!isAvailable()){
return (null);
};
_host = getProperty("document.location.host");
return (_host);
}
public function get characterSet():String{
if (_characterSet){
return (_characterSet);
};
if (!isAvailable()){
return (null);
};
var _local1:String = getProperty("document.characterSet");
if (_local1 == null){
_local1 = getProperty("document.charset");
};
_characterSet = _local1;
return (_characterSet);
}
public function get title():String{
if (_title){
return (_title);
};
if (!isAvailable()){
return (null);
};
_title = getProperty("document.title");
return (_title);
}
}
}//package com.google.analytics.external
Section 179
//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){
_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 = 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 180
//Environment (com.google.analytics.utils.Environment)
package com.google.analytics.utils {
import flash.system.*;
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 screenWidth():Number{
return (Capabilities.screenResolutionX);
}
public function get playerType():String{
return (Capabilities.playerType);
}
public function get locationSearch():String{
var _local1:String = _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 = Version.fromString(Capabilities.version.split(" ")[1], ",");
return (_local1);
}
public function get userAgent():UserAgent{
if (!_userAgent){
_userAgent = new UserAgent(this, appName, appVersion.toString(4));
};
return (_userAgent);
}
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;
switch (Capabilities.screenColor){
case "bw":
_local1 = "1";
break;
case "gray":
_local1 = "2";
break;
case "color":
default:
_local1 = "24";
};
var _local2:String = _dom.colorDepth;
if (_local2){
_local1 = _local2;
};
return (_local1);
}
private function _findProtocol():void{
var _local4:String;
var _local5:String;
var _local1:Protocols = 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;
};
};
var _local2:String = _dom.protocol;
var _local3:String = (_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 = 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;
}
function set url(_arg1:String):void{
_url = _arg1;
}
public function get referrer():String{
var _local1:String = _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 = _dom.language;
var _local2:String = 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 = _dom.pathname;
if (_local1){
return (_local1);
};
return ("");
}
public function get documentTitle():String{
var _local1:String = _dom.title;
if (_local1){
return (_local1);
};
return ("");
}
public function get appVersion():Version{
return (_appVersion);
}
}
}//package com.google.analytics.utils
Section 181
//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 182
//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 183
//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 = _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 protocol():Protocols{
var _local1:String = _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 = _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);
}
public function get subDomain():String{
if (((!((domain == ""))) && (!((domain == hostName))))){
return (hostName.split(("." + domain)).join(""));
};
return ("");
}
public function get search():String{
var _local1:String = _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);
}
}
}//package com.google.analytics.utils
Section 184
//UserAgent (com.google.analytics.utils.UserAgent)
package com.google.analytics.utils {
import flash.system.*;
import com.google.analytics.core.*;
public class UserAgent {
private var _localInfo:Environment;
private var _applicationProduct:String;
private var _version:Version;
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 get applicationVersion():String{
return (_version.toString(2));
}
public function get vendorProductToken():String{
var _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 = "";
_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.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 applicationProductToken():String{
var _local1:String = applicationProduct;
if (applicationVersion != ""){
_local1 = (_local1 + ("/" + applicationVersion));
};
return (_local1);
}
public function set applicationProduct(_arg1:String):void{
_applicationProduct = _arg1;
}
public function get applicationProduct():String{
return (_applicationProduct);
}
}
}//package com.google.analytics.utils
Section 185
//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 = [];
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 = _args.length;
var _local3:int;
while (_local3 < _local2) {
if (!(_args[_local3] is Variables)){
} else {
_join(_args[_local3]);
};
_local3++;
};
}
public function toString():String{
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:String;
var _local8:String;
var _local1:Array = [];
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;
if (_arg1 == ""){
return;
};
if (_arg1.indexOf("&") > -1){
_local2 = _arg1.split("&");
} else {
_local2 = [_arg1];
};
var _local7:int;
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 _local2:String;
var _local1:URLVariables = new URLVariables();
for (_local2 in this) {
_local1[_local2] = this[_local2];
};
return (_local1);
}
}
}//package com.google.analytics.utils
Section 186
//Version (com.google.analytics.utils.Version)
package com.google.analytics.utils {
public class Version {
private var _revision:uint;
private var _maxBuild:uint;// = 0xFF
private var _maxMinor:uint;// = 15
private var _maxMajor:uint;// = 15
private var _separator:String;// = "."
private var _maxRevision:uint;// = 0xFFFF
private var _build:uint;
private var _major:uint;
private var _minor:uint;
public function Version(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0){
var _local5:Version;
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 set revision(_arg1:uint):void{
_revision = Math.min(_arg1, _maxRevision);
}
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);
}
private function getFields():int{
var _local1 = 4;
if (revision == 0){
_local1--;
};
if ((((_local1 == 3)) && ((build == 0)))){
_local1--;
};
if ((((_local1 == 2)) && ((minor == 0)))){
_local1--;
};
return (_local1);
}
public function valueOf():uint{
return (((((major << 28) | (minor << 24)) | (build << 16)) | revision));
}
public function get major():uint{
return (_major);
}
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 _local4:Array;
var _local3:Version = 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 = 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 187
//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;
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 trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
var _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 setClientInfo(_arg1:Boolean):void{
_debug.info((("setClientInfo( " + _arg1) + " )"));
_call("_setClientInfo", _arg1);
}
public function trackTrans():void{
_debug.info("trackTrans()");
_call("_trackTrans");
}
public function setCookieTimeout(_arg1:int):void{
_debug.info((("setCookieTimeout( " + _arg1) + " )"));
_call("_setCookieTimeout", _arg1);
}
public function trackPageview(_arg1:String=""):void{
_debug.info((("trackPageview( " + _arg1) + " )"));
_call("_trackPageview", _arg1);
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_call("_getClientInfo"));
}
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"));
}
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 = _proxy.hasProperty(_arg1);
var _local3:Boolean = _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 setCampNameKey(_arg1:String):void{
_debug.info((("setCampNameKey( " + _arg1) + " )"));
_call("_setCampNameKey", _arg1);
}
public function setDetectFlash(_arg1:Boolean):void{
_debug.info((("setDetectFlash( " + _arg1) + " )"));
_call("_setDetectFlash", _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 setCampSourceKey(_arg1:String):void{
_debug.info((("setCampSourceKey( " + _arg1) + " )"));
_call("_setCampSourceKey", _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 setCampContentKey(_arg1:String):void{
_debug.info((("setCampContentKey( " + _arg1) + " )"));
_call("_setCampContentKey", _arg1);
}
public function setLocalServerMode():void{
_debug.info("setLocalServerMode()");
_call("_setLocalServerMode");
}
public function getLocalGifPath():String{
_debug.info("getLocalGifPath()");
return (_call("_getLocalGifPath"));
}
public function clearIgnoredRef():void{
_debug.info("clearIgnoredRef()");
_call("_clearIgnoreRef");
}
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);
}
private function _createTrackingObject(_arg1:String):void{
_proxy.call(_createTrackingObject_js, _arg1);
}
public function setCampaignTrack(_arg1:Boolean):void{
_debug.info((("setCampaignTrack( " + _arg1) + " )"));
_call("_setCampaignTrack", _arg1);
}
public function clearOrganic():void{
_debug.info("clearOrganic()");
_call("_clearOrganic");
}
public function setCampTermKey(_arg1:String):void{
_debug.info((("setCampTermKey( " + _arg1) + " )"));
_call("_setCampTermKey", _arg1);
}
public function getDetectFlash():Boolean{
_debug.info("getDetectFlash()");
return (_call("_getDetectFlash"));
}
public function setCampMediumKey(_arg1:String):void{
_debug.info((("setCampMediumKey( " + _arg1) + " )"));
_call("_setCampMediumKey", _arg1);
}
public function addIgnoredRef(_arg1:String):void{
_debug.info((("addIgnoredRef( " + _arg1) + " )"));
_call("_addIgnoredRef", _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 188
//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 hasSiteOverlay:Boolean;// = false
public var allowLocalTracking:Boolean;// = true
public var secureRemoteGIFpath:String;// = "https://ssl.google-analytics.com/__utm.gif"
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;
public var allowAnchor:Boolean;// = false
private var _domain:Domain;
private var _trackingLimitPerSession:int;// = 500
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){
_organic = new Organic();
conversionTimeout = Timespan.sixmonths;
sessionTimeout = Timespan.thirtyminutes;
campaignKey = new CampaignKey();
serverMode = ServerOperationMode.remote;
super();
_debug = _arg1;
_domain = new Domain(DomainNameMode.auto, "", _debug);
serverMode = ServerOperationMode.remote;
_initOrganicSources();
}
public function get organic():Organic{
return (_organic);
}
public function get cookieName():String{
return (_cookieName);
}
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 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 189
//GoogleAnalyticsAPI (com.google.analytics.v4.GoogleAnalyticsAPI)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
public interface GoogleAnalyticsAPI {
function setCampSourceKey(_arg1:String):void;
function getServiceMode():ServerOperationMode;
function resetSession():void;
function setLocalServerMode():void;
function setCampContentKey(_arg1:String):void;
function addOrganic(_arg1:String, _arg2:String):void;
function setDetectFlash(_arg1:Boolean):void;
function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object;
function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean;
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 getClientInfo():Boolean;
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 clearOrganic():void;
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 setDomainName(_arg1:String):void;
function setDetectTitle(_arg1:Boolean):void;
function setAllowHash(_arg1:Boolean):void;
function getAccount():String;
function linkByPost(_arg1:Object, _arg2:Boolean=false):void;
function link(_arg1:String, _arg2:Boolean=false):void;
function setCampNOKey(_arg1:String):void;
function setLocalRemoteServerMode():void;
function cookiePathCopy(_arg1:String):void;
function getDetectTitle():Boolean;
}
}//package com.google.analytics.v4
Section 190
//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.external.*;
import com.google.analytics.utils.*;
import com.google.analytics.data.*;
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;
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 trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
var _local5:Boolean;
var _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 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 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();
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_config.detectClientInfo);
}
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{
_config.campaignKey.UCCN = _arg1;
var _local2 = (("setCampNameKey( " + _config.campaignKey.UCCN) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCCN]"));
} else {
_debug.info(_local2);
};
}
private function _formatReferrer():String{
var _local2:String;
var _local3:URL;
var _local4:URL;
var _local1:String = _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) + " )"));
}
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);
}
private function _renderMetricsSearchVariables(_arg1:String=""):Variables{
var _local4:Variables;
var _local2:Variables = new Variables();
_local2.URIencode = true;
var _local3:DocumentInfo = new DocumentInfo(_config, _info, _formatedReferrer, _arg1, _adSense);
_debug.info(("docInfo: " + _local3.toURLString()), VisualDebugMode.geek);
if (_config.campaignTracking){
_local4 = _campaignInfo.toVariables();
};
var _local5:Variables = _browserInfo.toVariables();
_local2.join(_local3.toVariables(), _local5, _local4);
return (_local2);
}
public function setCampContentKey(_arg1:String):void{
_config.campaignKey.UCCT = _arg1;
var _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()");
}
public function clearIgnoredRef():void{
_debug.info("clearIgnoredRef()");
_config.organic.clearIgnoredReferrals();
}
public function setCampSourceKey(_arg1:String):void{
_config.campaignKey.UCSR = _arg1;
var _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 = _config.domainName;
var _local2 = (_local1.indexOf("www.google.") < 0);
var _local3 = (_local1.indexOf(".google.") < 0);
var _local4 = (_local1.indexOf("google.") < 0);
var _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 = "";
_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 setCampNOKey(_arg1:String):void{
_config.campaignKey.UCNO = _arg1;
var _local2 = (("setCampNOKey( " + _config.campaignKey.UCNO) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCNO]"));
} else {
_debug.info(_local2);
};
}
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{
_config.campaignKey.UCTR = _arg1;
var _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);
}
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{
_config.campaignKey.UCMD = _arg1;
var _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 = ((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 191
//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 account(_arg1:String):void;
function get config():Configuration;
function get mode():String;
function set config(_arg1:Configuration):void;
function set mode(_arg1:String):void;
function set debug(_arg1:DebugConfiguration):void;
function get visualDebug():Boolean;
function get account():String;
function set visualDebug(_arg1:Boolean):void;
function isReady():Boolean;
function get debug():DebugConfiguration;
}
}//package com.google.analytics
Section 192
//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: 319 $ ".split(" ")[1];
}
}//package com.google.analytics
Section 193
//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.external.*;
import com.google.analytics.utils.*;
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){
_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 getClientInfo():Boolean{
return (_tracker.getClientInfo());
}
public function trackPageview(_arg1:String=""):void{
_tracker.trackPageview(_arg1);
}
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 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 addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function setDomainName(_arg1:String):void{
_tracker.setDomainName(_arg1);
}
public function createEventTracker(_arg1:String):EventTracker{
return (_tracker.createEventTracker(_arg1));
}
public function setCampSourceKey(_arg1:String):void{
_tracker.setCampSourceKey(_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 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 getLocalGifPath():String{
return (_tracker.getLocalGifPath());
}
public function setAllowAnchor(_arg1:Boolean):void{
_tracker.setAllowAnchor(_arg1);
}
public function clearIgnoredRef():void{
_tracker.clearIgnoredRef();
}
public function isReady():Boolean{
return (_ready);
}
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 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;
_jsproxy = new JavascriptProxy(debug);
if (visualDebug){
debug.layout = new Layout(debug, _display);
debug.active = visualDebug;
};
var _local2:TrackerCache = (_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 setCampNOKey(_arg1:String):void{
_tracker.setCampNOKey(_arg1);
}
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 getDetectFlash():Boolean{
return (_tracker.getDetectFlash());
}
public function get visualDebug():Boolean{
return (_visualDebug);
}
public function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public function getAccount():String{
return (_tracker.getAccount());
}
public function setSessionTimeout(_arg1:int):void{
_tracker.setSessionTimeout(_arg1);
}
public function setRemoteServerMode():void{
_tracker.setRemoteServerMode();
}
}
var _local1:* = ServerOperationMode;
return (_local1);
}//package com.google.analytics
Section 194
//PropTween (com.greensock.core.PropTween)
package com.greensock.core {
public class PropTween {
public var priority:int;
public var start:Number;
public var prevNode:PropTween;
public var change:Number;
public var target:Object;
public var name:String;
public var property:String;
public var nextNode:PropTween;
public var isPlugin:Boolean;
public function PropTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:PropTween=null, _arg8:int=0){
this.target = _arg1;
this.property = _arg2;
this.start = _arg3;
this.change = _arg4;
this.name = _arg5;
this.isPlugin = _arg6;
this.nextNode = _arg7;
this.priority = _arg8;
}
}
}//package com.greensock.core
Section 195
//SimpleTimeline (com.greensock.core.SimpleTimeline)
package com.greensock.core {
public class SimpleTimeline extends TweenCore {
public var autoRemoveChildren:Boolean;
protected var _lastChild:TweenCore;
protected var _firstChild:TweenCore;
public function SimpleTimeline(_arg1:Object=null){
super(0, _arg1);
}
override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{
var _local5:Number;
var _local6:TweenCore;
var _local4:TweenCore = _firstChild;
this.cachedTotalTime = _arg1;
this.cachedTime = _arg1;
while (_local4) {
_local6 = _local4.nextNode;
if (((_local4.active) || ((((_arg1 >= _local4.cachedStartTime)) && (!(_local4.cachedPaused)))))){
if (!_local4.cachedReversed){
_local4.renderTime(((_arg1 - _local4.cachedStartTime) * _local4.cachedTimeScale), _arg2, false);
} else {
_local5 = (_local4.cacheIsDirty) ? _local4.totalDuration : _local4.cachedTotalDuration;
_local4.renderTime((_local5 - ((_arg1 - _local4.cachedStartTime) * _local4.cachedTimeScale)), _arg2, false);
};
};
_local4 = _local6;
};
}
public function addChild(_arg1:TweenCore):void{
if (_arg1.timeline != null){
_arg1.timeline.remove(_arg1, true);
};
_arg1.timeline = this;
if (_arg1.gc){
_arg1.setEnabled(true, true);
};
if (_firstChild != null){
_firstChild.prevNode = _arg1;
_arg1.nextNode = _firstChild;
} else {
_arg1.nextNode = null;
};
_firstChild = _arg1;
_arg1.prevNode = null;
}
public function remove(_arg1:TweenCore, _arg2:Boolean=false):void{
if (((!(_arg1.gc)) && (!(_arg2)))){
_arg1.setEnabled(false, true);
};
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.nextNode = (_arg1.prevNode = null);
}
public function get rawTime():Number{
return (this.cachedTotalTime);
}
}
}//package com.greensock.core
Section 196
//TweenCore (com.greensock.core.TweenCore)
package com.greensock.core {
import com.greensock.*;
public class TweenCore {
public var initted:Boolean;
protected var _hasUpdate:Boolean;
public var active:Boolean;
protected var _delay:Number;
public var cachedReversed:Boolean;
public var nextNode:TweenCore;
public var cachedTime:Number;
protected var _rawPrevTime:Number;// = -1
public var vars:Object;
public var cachedTotalTime:Number;
public var timeline:SimpleTimeline;
public var data;
public var cachedStartTime:Number;
public var prevNode:TweenCore;
public var cachedDuration:Number;
public var gc:Boolean;
public var cacheIsDirty:Boolean;
public var cachedPaused:Boolean;
public var cachedTotalDuration:Number;
public var cachedTimeScale:Number;
public static const version:Number = 0.86;
protected static var _classInitted:Boolean;
public function TweenCore(_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.vars.immediateRender == false)))));
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.cachedStartTime = (_local3.cachedTotalTime + _delay);
_local3.addChild(this);
}
public function get delay():Number{
return (_delay);
}
public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{
}
public function get duration():Number{
return (this.cachedDuration);
}
public function set time(_arg1:Number):void{
this.startTime = (this.timeline.cachedTotalTime - (_arg1 / this.cachedTimeScale));
renderTime(_arg1, false, false);
}
public function set startTime(_arg1:Number):void{
var _local2:Boolean = Boolean(((!((this.timeline == null))) && (((!((_arg1 == this.cachedStartTime))) || (this.gc)))));
this.cachedStartTime = _arg1;
if (_local2){
this.timeline.addChild(this);
};
}
public function set duration(_arg1:Number):void{
this.cachedDuration = (this.cachedTotalDuration = _arg1);
}
public function set delay(_arg1:Number):void{
this.startTime = (this.startTime + (_arg1 - _delay));
_delay = _arg1;
}
public function complete(_arg1:Boolean=false, _arg2:Boolean=false):void{
}
public function invalidate():void{
}
public function get startTime():Number{
return (this.cachedStartTime);
}
public function kill():void{
setEnabled(false, false);
}
public function get time():Number{
return (this.cachedTime);
}
public function set totalDuration(_arg1:Number):void{
this.duration = _arg1;
}
public function get totalDuration():Number{
return (this.cachedTotalDuration);
}
public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):void{
if (_arg1 == this.gc){
this.gc = !(_arg1);
if (_arg1){
this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration))));
if (!_arg2){
this.timeline.addChild(this);
};
} else {
this.active = false;
if (!_arg2){
this.timeline.remove(this);
};
};
};
}
}
}//package com.greensock.core
Section 197
//Back (com.greensock.easing.Back)
package com.greensock.easing {
public class Back {
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 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 easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{
_arg1 = (_arg1 / (_arg4 * 0.5));
if (_arg1 < 1){
_arg5 = (_arg5 * 1.525);
return ((((_arg3 * 0.5) * ((_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 com.greensock.easing
Section 198
//Circ (com.greensock.easing.Circ)
package com.greensock.easing {
public class Circ {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * Math.sqrt((1 - (_arg1 * _arg1)))) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((-(_arg3) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 * 0.5));
if (_arg1 < 1){
return ((((-(_arg3) * 0.5) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 * 0.5) * (Math.sqrt((1 - (_arg1 * _arg1))) + 1)) + _arg2));
}
}
}//package com.greensock.easing
Section 199
//TweenLite (com.greensock.TweenLite)
package com.greensock {
import flash.display.*;
import flash.events.*;
import com.greensock.core.*;
import flash.utils.*;
import com.greensock.plugins.*;
public class TweenLite extends TweenCore {
protected var _hasPlugins:Boolean;
public var propTweenLookup:Object;
protected var _overwrittenProps:Object;
public var target:Object;
protected var _notifyPluginsOfEnabled:Boolean;
public var ease:Function;
protected var _firstPropTween:PropTween;
public static const version:Number = 11.09994;
public static var rootTimeline:SimpleTimeline;
public static var onPluginEvent:Function;
public static var rootFramesTimeline:SimpleTimeline;
public static var defaultEase:Function = TweenLite.easeOut;
public static var plugins:Object = {};
public static var masterList:Dictionary = new Dictionary(false);
public static var overwriteManager:Object;
public static var rootFrame:Number;
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
private static var _shape:Shape = new Shape();
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, onReverseComplete:1, onReverseCompleteParams:1, onRepeat:1, onRepeatParams:1, proxiedEase:1, easeParams:1, yoyo:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, orientToBezier:1, timeScale:1, immediateRender:1, repeat:1, repeatDelay:1, timeline:1, data:1, paused:1};
public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){
var _local4:int;
var _local5:Array;
var _local6:TweenLite;
super(_arg2, _arg3);
this.ease = ((typeof(this.vars.ease))!="function") ? defaultEase : this.vars.ease;
this.target = _arg1;
if (this.vars.easeParams){
this.vars.proxiedEase = this.ease;
this.ease = easeProxy;
};
propTweenLookup = {};
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.setEnabled(false, false);
};
};
masterList[_arg1] = [this];
} else {
masterList[_arg1].push(this);
};
};
if (((this.active) || (this.vars.immediateRender))){
renderTime(0, false, true);
};
}
protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams)));
}
override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{
var _local4:Number;
var _local5:Boolean;
var _local6:Number = this.cachedTime;
this.active = true;
if (_arg1 >= this.cachedDuration){
this.cachedTotalTime = (this.cachedTime = this.cachedDuration);
_local4 = 1;
_local5 = true;
if (this.cachedDuration == 0){
if ((((((_arg1 == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == _arg1))))){
_arg3 = true;
};
_rawPrevTime = _arg1;
};
} else {
if (_arg1 <= 0){
_local4 = 0;
this.cachedTotalTime = (this.cachedTime = _local4);
if (_arg1 < 0){
this.active = false;
if (this.cachedDuration == 0){
if (_rawPrevTime > 0){
_arg3 = true;
_local5 = true;
};
_rawPrevTime = _arg1;
};
};
} else {
this.cachedTotalTime = (this.cachedTime = _arg1);
_local4 = this.ease(_arg1, 0, 1, this.cachedDuration);
};
};
if ((((this.cachedTime == _local6)) && (!(_arg3)))){
return;
};
if (!this.initted){
init();
};
if ((((((_local6 == 0)) && (!((this.vars.onStart == null))))) && (!(_arg2)))){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
var _local7:PropTween = _firstPropTween;
while (_local7) {
_local7.target[_local7.property] = (_local7.start + (_local4 * _local7.change));
_local7 = _local7.nextNode;
};
if (((_hasUpdate) && (!(_arg2)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (_local5){
complete(true, _arg2);
};
}
protected function removePropTween(_arg1:PropTween):void{
if (((_arg1.isPlugin) && (_arg1.target.onDisable))){
_arg1.target.onDisable();
};
if (_arg1.nextNode){
_arg1.nextNode.prevNode = _arg1.prevNode;
};
if (_arg1.prevNode){
_arg1.prevNode.nextNode = _arg1.nextNode;
} else {
if (_firstPropTween == _arg1){
_firstPropTween = _arg1.nextNode;
};
};
}
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){
_arg7.prevNode = _local8;
};
if (((_arg6) && ((_arg5 == "_MULTIPLE_")))){
_local9 = _arg1.overwriteProps;
_local10 = _local9.length;
while (_local10-- > 0) {
this.propTweenLookup[_local9[_local10]] = _local8;
};
} else {
this.propTweenLookup[_arg5] = _local8;
};
return (_local8);
}
protected function init():void{
var _local1:String;
var _local2:int;
var _local3:*;
var _local4:Boolean;
var _local5:PropTween;
propTweenLookup = {};
if (((!((this.vars.timeScale == undefined))) && ((this.target is TweenCore)))){
_firstPropTween = insertPropTween(this.target, "timeScale", this.target.timeScale, this.vars.timeScale, "timeScale", false, _firstPropTween);
};
for (_local1 in this.vars) {
if ((_local1 in _reservedProps)){
} else {
if ((_local1 in plugins)){
_local3 = new (plugins[_local1]);
if (_local3.onInitTween(this.target, this.vars[_local1], this) == false){
_firstPropTween = insertPropTween(this.target, _local1, this.target[_local1], this.vars[_local1], _local1, false, _firstPropTween);
} else {
_firstPropTween = insertPropTween(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true, _firstPropTween);
_hasPlugins = true;
if (_local3.priority != 0){
_firstPropTween.priority = _local3.priority;
_local4 = true;
};
if (((!((_local3.onDisable == null))) || (!((_local3.onEnable == null))))){
_notifyPluginsOfEnabled = true;
};
};
} else {
_firstPropTween = insertPropTween(this.target, _local1, this.target[_local1], this.vars[_local1], _local1, false, _firstPropTween);
};
};
};
if (_local4){
_firstPropTween = onPluginEvent("onInit", _firstPropTween);
};
if (this.vars.runBackwards == true){
_local5 = _firstPropTween;
while (_local5) {
_local5.start = (_local5.start + _local5.change);
_local5.change = -(_local5.change);
_local5 = _local5.nextNode;
};
};
_hasUpdate = Boolean(!((this.vars.onUpdate == null)));
if (_overwrittenProps){
killVars(_overwrittenProps);
};
if (((((((TweenLite.overwriteManager.enabled) && (!((_firstPropTween == null))))) && ((TweenLite.overwriteManager.mode > 1)))) && ((this.target in masterList)))){
overwriteManager.manageOverwrites(this, propTweenLookup, masterList[this.target]);
};
this.initted = true;
}
override public function complete(_arg1:Boolean=false, _arg2:Boolean=false):void{
if (!_arg1){
renderTime(this.cachedTotalDuration, _arg2, false);
return;
};
if (_hasPlugins){
onPluginEvent("onComplete", _firstPropTween);
};
if (this.timeline.autoRemoveChildren){
this.setEnabled(false, false);
} else {
this.active = false;
};
if (((((!((this.vars.onComplete == null))) && (((!((this.cachedTotalTime == 0))) || ((this.cachedDuration == 0)))))) && (!(_arg2)))){
this.vars.onComplete.apply(null, this.vars.onCompleteParams);
};
}
override public function invalidate():void{
if (_notifyPluginsOfEnabled){
onPluginEvent("onDisable", _firstPropTween);
};
_firstPropTween = null;
_overwrittenProps = null;
_hasUpdate = (this.initted = (this.active = (_notifyPluginsOfEnabled = false)));
this.propTweenLookup = {};
}
public function killVars(_arg1:Object, _arg2:Boolean=true):void{
var _local3:String;
var _local4:PropTween;
if (_overwrittenProps == null){
_overwrittenProps = {};
};
for (_local3 in _arg1) {
if ((_local3 in propTweenLookup)){
_local4 = propTweenLookup[_local3];
if (((_local4.isPlugin) && ((_local4.name == "_MULTIPLE_")))){
_local4.target.killProps(_arg1);
if (_local4.target.overwriteProps.length == 0){
removePropTween(_local4);
delete propTweenLookup[_local3];
};
} else {
removePropTween(_local4);
delete propTweenLookup[_local3];
};
};
if (_arg2){
_overwrittenProps[_local3] = 1;
};
};
}
override public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):void{
if (_arg1 == this.gc){
if (_arg1){
if (!(this.target in TweenLite.masterList)){
TweenLite.masterList[this.target] = [this];
} else {
TweenLite.masterList[this.target].push(this);
};
};
super.setEnabled(_arg1, _arg2);
if (_notifyPluginsOfEnabled){
onPluginEvent((_arg1) ? "onEnable" : "onDisable", _firstPropTween);
};
};
}
public static function initClass():void{
rootFrame = 0;
rootTimeline = new SimpleTimeline(null);
rootFramesTimeline = new SimpleTimeline(null);
rootTimeline.cachedStartTime = (getTimer() * 0.001);
rootFramesTimeline.cachedStartTime = rootFrame;
rootTimeline.autoRemoveChildren = true;
rootFramesTimeline.autoRemoveChildren = true;
_shape.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true);
if (overwriteManager == null){
overwriteManager = {mode:1, enabled:false};
};
}
public static function killTweensOf(_arg1:Object, _arg2:Boolean=false):void{
var _local3:Array;
var _local4:int;
if ((_arg1 in masterList)){
_local3 = masterList[_arg1];
_local4 = _local3.length;
while (_local4-- > 0) {
if (!_local3[_local4].gc){
if (_arg2){
_local3[_local4].complete(false, false);
} else {
_local3[_local4].setEnabled(false, false);
};
};
};
delete masterList[_arg1];
};
}
public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
_arg3.runBackwards = true;
if (_arg3.immediateRender != false){
_arg3.immediateRender = true;
};
return (new TweenLite(_arg1, _arg2, _arg3));
}
protected static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
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, immediateRender:false, 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.cachedStartTime) * rootTimeline.cachedTimeScale), false, false);
rootFrame++;
rootFramesTimeline.renderTime(((rootFrame - rootFramesTimeline.cachedStartTime) * rootFramesTimeline.cachedTimeScale), false, false);
if (!(rootFrame % 60)){
_local2 = masterList;
for (_local3 in _local2) {
_local4 = _local2[_local3];
_local5 = _local4.length;
while (_local5-- > 0) {
if (_local4[_local5].gc){
_local4.splice(_local5, 1);
};
};
if (_local4.length == 0){
delete _local2[_local3];
};
};
};
}
public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
return (new TweenLite(_arg1, _arg2, _arg3));
}
}
}//package com.greensock
Section 200
//GameKey (com.redwave.ctrl.GameKey)
package com.redwave.ctrl {
import flash.ui.*;
public class GameKey {
private var fireKey:uint;
private var jumpKey:uint;
private var leftKey1:uint;
private var leftKey2:uint;
private var upKey1:uint;
private var upKey2:uint;
private var rightKey2:uint;
private var manager:KeyboardManager;
private var downKey2:uint;
private var downKey1:uint;
private var rightKey1:uint;
public function GameKey(_arg1:KeyboardManager){
manager = _arg1;
}
public function isDownDown():Boolean{
return (((manager.isDown(downKey1)) || (manager.isDown(downKey2))));
}
public function isDownRight():Boolean{
return (((manager.isDown(rightKey1)) || (manager.isDown(rightKey2))));
}
public function isLeft(_arg1:uint):Boolean{
return ((((_arg1 == leftKey1)) || ((_arg1 == leftKey2))));
}
public function isDownLeft():Boolean{
return (((manager.isDown(leftKey1)) || (manager.isDown(leftKey2))));
}
public function isUp(_arg1:uint):Boolean{
return ((((_arg1 == upKey1)) || ((_arg1 == upKey2))));
}
public function isDownUp():Boolean{
return (((manager.isDown(upKey1)) || (manager.isDown(upKey2))));
}
public function initAsNormal():void{
upKey1 = Keyboard.UP;
upKey2 = KeyStroke.VK_W.getCode();
leftKey1 = Keyboard.LEFT;
leftKey2 = KeyStroke.VK_A.getCode();
downKey1 = Keyboard.DOWN;
downKey2 = KeyStroke.VK_S.getCode();
rightKey1 = Keyboard.RIGHT;
rightKey2 = KeyStroke.VK_D.getCode();
jumpKey = Keyboard.UP;
fireKey = Keyboard.SPACE;
}
public function isDown(_arg1:uint):Boolean{
return ((((_arg1 == downKey1)) || ((_arg1 == downKey2))));
}
public function isRight(_arg1:uint):Boolean{
return ((((_arg1 == rightKey1)) || ((_arg1 == rightKey2))));
}
}
}//package com.redwave.ctrl
Section 201
//KeyboardManager (com.redwave.ctrl.KeyboardManager)
package com.redwave.ctrl {
import flash.display.*;
import flash.events.*;
import com.redwave.util.*;
import flash.ui.*;
public class KeyboardManager extends EventDispatcher {
protected var keySequence:ArrayList;
protected var enabled:Boolean;
protected var inited:Boolean;
public function KeyboardManager(){
enabled = true;
inited = false;
keySequence = new ArrayList();
}
private function __onKeyDown(_arg1:KeyboardEvent):void{
if (enabled){
dispatchEvent(_arg1);
};
var _local2:uint = _arg1.keyCode;
if (!keySequence.contains(_local2)){
keySequence.append(_local2);
};
}
public function isDown(_arg1:uint):Boolean{
return (keySequence.contains(_arg1));
}
public function init(_arg1:DisplayObjectContainer):void{
if (!inited){
inited = true;
_arg1.addEventListener(KeyboardEvent.KEY_DOWN, __onKeyDown, false, 0, true);
_arg1.addEventListener(KeyboardEvent.KEY_UP, __onKeyUp, false, 0, true);
_arg1.addEventListener(Event.DEACTIVATE, __deactived, false, 0, true);
} else {
throw (new Error("This KeyboardManager was already inited!"));
};
}
public function isEnabled():Boolean{
return (enabled);
}
private function __onKeyUp(_arg1:KeyboardEvent):void{
if (enabled){
dispatchEvent(_arg1);
};
var _local2:uint = _arg1.keyCode;
keySequence.remove(_local2);
if (!_arg1.ctrlKey){
keySequence.remove(Keyboard.CONTROL);
};
if (!_arg1.shiftKey){
keySequence.remove(Keyboard.SHIFT);
};
}
private function __deactived(_arg1:Event):void{
keySequence.clear();
}
public function setEnabled(_arg1:Boolean):void{
enabled = _arg1;
}
}
}//package com.redwave.ctrl
Section 202
//KeyStroke (com.redwave.ctrl.KeyStroke)
package com.redwave.ctrl {
public class KeyStroke implements KeyType {
private var code:uint;
private var codeString:String;
public static const VK_NUMPAD_0:KeyStroke = new KeyStroke("Numpad_0", 96);
;
public static const VK_NUMPAD_1:KeyStroke = new KeyStroke("Numpad_1", 97);
;
public static const VK_NUMPAD_2:KeyStroke = new KeyStroke("Numpad_2", 98);
;
public static const VK_NUMPAD_3:KeyStroke = new KeyStroke("Numpad_3", 99);
;
public static const VK_NUMPAD_4:KeyStroke = new KeyStroke("Numpad_4", 100);
;
public static const VK_NUMPAD_5:KeyStroke = new KeyStroke("Numpad_5", 101);
;
public static const VK_NUMPAD_6:KeyStroke = new KeyStroke("Numpad_6", 102);
;
public static const VK_NUMPAD_7:KeyStroke = new KeyStroke("Numpad_7", 103);
;
public static const VK_NUMPAD_9:KeyStroke = new KeyStroke("Numpad_9", 105);
;
public static const VK_NUMPAD_8:KeyStroke = new KeyStroke("Numpad_8", 104);
;
public static const VK_NUMPAD_DECIMAL:KeyStroke = new KeyStroke("Numpad_Decimal", 110);
;
public static const VK_0:KeyStroke = new KeyStroke("0", 48);
;
public static const VK_1:KeyStroke = new KeyStroke("1", 49);
;
public static const VK_2:KeyStroke = new KeyStroke("2", 50);
;
public static const VK_3:KeyStroke = new KeyStroke("3", 51);
;
public static const VK_4:KeyStroke = new KeyStroke("4", 52);
;
public static const VK_5:KeyStroke = new KeyStroke("5", 53);
;
public static const VK_6:KeyStroke = new KeyStroke("6", 54);
;
public static const VK_7:KeyStroke = new KeyStroke("7", 55);
;
public static const VK_8:KeyStroke = new KeyStroke("8", 56);
;
public static const VK_9:KeyStroke = new KeyStroke("9", 57);
;
public static const VK_HOME:KeyStroke = new KeyStroke("Home", 36);
;
public static const VK_A:KeyStroke = new KeyStroke("A", 65);
;
public static const VK_B:KeyStroke = new KeyStroke("B", 66);
;
public static const VK_C:KeyStroke = new KeyStroke("C", 67);
;
public static const VK_D:KeyStroke = new KeyStroke("D", 68);
;
public static const VK_E:KeyStroke = new KeyStroke("E", 69);
;
public static const VK_F:KeyStroke = new KeyStroke("F", 70);
;
public static const VK_G:KeyStroke = new KeyStroke("G", 71);
;
public static const VK_H:KeyStroke = new KeyStroke("H", 72);
;
public static const VK_I:KeyStroke = new KeyStroke("I", 73);
;
public static const VK_J:KeyStroke = new KeyStroke("J", 74);
;
public static const VK_K:KeyStroke = new KeyStroke("K", 75);
;
public static const VK_L:KeyStroke = new KeyStroke("L", 76);
;
public static const VK_M:KeyStroke = new KeyStroke("M", 77);
;
public static const VK_N:KeyStroke = new KeyStroke("N", 78);
;
public static const VK_O:KeyStroke = new KeyStroke("O", 79);
;
public static const VK_P:KeyStroke = new KeyStroke("P", 80);
;
public static const VK_Q:KeyStroke = new KeyStroke("Q", 81);
;
public static const VK_R:KeyStroke = new KeyStroke("R", 82);
;
public static const VK_S:KeyStroke = new KeyStroke("S", 83);
;
public static const VK_T:KeyStroke = new KeyStroke("T", 84);
;
public static const VK_U:KeyStroke = new KeyStroke("U", 85);
;
public static const VK_W:KeyStroke = new KeyStroke("W", 87);
;
public static const VK_Y:KeyStroke = new KeyStroke("Y", 89);
;
public static const VK_V:KeyStroke = new KeyStroke("V", 86);
;
public static const VK_X:KeyStroke = new KeyStroke("X", 88);
;
public static const VK_Z:KeyStroke = new KeyStroke("Z", 90);
;
public static const VK_NUMPAD_ADD:KeyStroke = new KeyStroke("Numpad_Add", 107);
;
public static const VK_F10:KeyStroke = new KeyStroke("F10", 121);
;
public static const VK_F12:KeyStroke = new KeyStroke("F12", 123);
;
public static const VK_F14:KeyStroke = new KeyStroke("F14", 125);
;
public static const VK_F15:KeyStroke = new KeyStroke("F15", 126);
;
public static const VK_F11:KeyStroke = new KeyStroke("F11", 122);
;
public static const VK_NUMPAD_MULTIPLY:KeyStroke = new KeyStroke("Numpad_Multiply", 106);
;
public static const VK_F13:KeyStroke = new KeyStroke("F13", 124);
;
public static const VK_SHIFT:KeyStroke = new KeyStroke("Shift", 16);
;
public static const VK_NUMPAD_SUBTRACT:KeyStroke = new KeyStroke("Numpad_Subtract", 109);
;
public static const VK_PAGE_DOWN:KeyStroke = new KeyStroke("PageDown", 34);
;
public static const VK_UP:KeyStroke = new KeyStroke("Up", 38);
;
public static const VK_BACKSPACE:KeyStroke = new KeyStroke("Backspace", 8);
;
public static const VK_LEFT:KeyStroke = new KeyStroke("Left", 37);
;
public static const VK_F1:KeyStroke = new KeyStroke("F1", 112);
;
public static const VK_F3:KeyStroke = new KeyStroke("F3", 114);
;
public static const VK_F5:KeyStroke = new KeyStroke("F5", 116);
;
public static const VK_F6:KeyStroke = new KeyStroke("F6", 117);
;
public static const VK_F7:KeyStroke = new KeyStroke("F7", 118);
;
public static const VK_F8:KeyStroke = new KeyStroke("F8", 119);
;
public static const VK_F9:KeyStroke = new KeyStroke("F9", 120);
;
public static const VK_F4:KeyStroke = new KeyStroke("F4", 115);
;
public static const VK_F2:KeyStroke = new KeyStroke("F2", 113);
;
public static const VK_ESCAPE:KeyStroke = new KeyStroke("Esc", 27);
;
public static const VK_NUMPAD_ENTER:KeyStroke = new KeyStroke("Numpad_Enter", 108);
;
public static const VK_INSERT:KeyStroke = new KeyStroke("Insert", 45);
;
public static const VK_NUMPAD_DIVIDE:KeyStroke = new KeyStroke("Numpad_Divide", 111);
;
public static const VK_DELETE:KeyStroke = new KeyStroke("Delete", 46);
;
public static const VK_ENTER:KeyStroke = new KeyStroke("Enter", 13);
;
public static const VK_CONTROL:KeyStroke = new KeyStroke("Ctrl", 17);
;
public static const VK_NUM_LOCK:KeyStroke = new KeyStroke("Num", 144);
;
public static const VK_PAGE_UP:KeyStroke = new KeyStroke("PageUp", 33);
;
public static const VK_CAPS_LOCK:KeyStroke = new KeyStroke("Cap", 20);
;
public static const VK_END:KeyStroke = new KeyStroke("End", 35);
;
public static const VK_MENU:KeyStroke = new KeyStroke("Menu", 93);
;
public static const VK_PAUSE:KeyStroke = new KeyStroke("Pause", 19);
;
public static const VK_SCROLL_LOCK:KeyStroke = new KeyStroke("Scroll", 145);
;
public static const VK_WINDOWS:KeyStroke = new KeyStroke("Win", 91);
;
public static const VK_SPACE:KeyStroke = new KeyStroke("Space", 32);
;
public static const VK_TAB:KeyStroke = new KeyStroke("Tab", 9);
;
public static const VK_DOWN:KeyStroke = new KeyStroke("Down", 40);
;
public static const VK_RIGHT:KeyStroke = new KeyStroke("Right", 39);
;
public function KeyStroke(_arg1:String, _arg2:uint){
this.codeString = _arg1;
this.code = _arg2;
}
public function getCode():uint{
return (code);
}
public function getCodeSequence():Array{
return ([code]);
}
public function getDescription():String{
return (codeString);
}
public function toString():String{
return ((("Keyboard[" + getDescription) + "]"));
}
}
}//package com.redwave.ctrl
Section 203
//KeyType (com.redwave.ctrl.KeyType)
package com.redwave.ctrl {
public interface KeyType {
function getCodeSequence():Array;
function getDescription():String;
}
}//package com.redwave.ctrl
Section 204
//LocalStorage (com.redwave.data.LocalStorage)
package com.redwave.data {
import flash.net.*;
public class LocalStorage {
public static function getData(_arg1:String, _arg2:String){
var path = _arg1;
var property = _arg2;
var shareObject:SharedObject;
try {
shareObject = SharedObject.getLocal(path);
} catch(e:Error) {
trace(((("cookie of " + path) + " erro ") + e));
return (null);
};
return (shareObject.data[property]);
}
public static function setData(_arg1:String, _arg2:String, _arg3):void{
var path = _arg1;
var property = _arg2;
var value = _arg3;
var shareObject:SharedObject;
try {
shareObject = SharedObject.getLocal(path);
} catch(e:Error) {
trace(((("cookie of " + path) + " erro ") + e));
return;
};
shareObject.data[property] = value;
shareObject.flush();
}
public static function clearData(_arg1:String):void{
var path = _arg1;
var shareObject:SharedObject;
try {
shareObject = SharedObject.getLocal(path);
if (shareObject){
shareObject.clear();
};
} catch(e:Error) {
trace(((("cookie of " + path) + " erro ") + e));
return;
};
}
}
}//package com.redwave.data
Section 205
//SplashMovie (com.redwave.game.SplashMovie)
package com.redwave.game {
import flash.events.*;
import flash.display.*;
import com.redwave.util.*;
import flash.net.*;
public class SplashMovie {
private var display:Sprite;
private var forceFrame:int;
private var handler:Function;
private var ticker:EnterFrameCallContinuse;
private var url:String;
private var movie:MovieClip;
private var parent:DisplayObjectContainer;
private var skipButton:SimpleButton;
private var forced:Boolean;
public function SplashMovie(_arg1:DisplayObjectContainer, _arg2:Sprite, _arg3:Function, _arg4:int=0){
this.parent = _arg1;
this.display = _arg2;
this.handler = _arg3;
this.forceFrame = _arg4;
forced = (_arg4 > 0);
_arg1.addChild(_arg2);
movie = (_arg2 as MovieClip);
if (movie){
movie.gotoAndPlay(1);
};
ticker = new EnterFrameCallContinuse(__tick, 1);
ticker.start();
skipButton = (_arg2.getChildByName("skipButton") as SimpleButton);
if (skipButton){
skipButton.addEventListener(MouseEvent.CLICK, finish);
};
_arg2.addEventListener(MouseEvent.CLICK, __hotLink);
}
public function setHotLink(_arg1:String):void{
this.url = _arg1;
display.buttonMode = !((_arg1 == null));
display.useHandCursor = !((_arg1 == null));
}
private function __hotLink(_arg1:MouseEvent):void{
if (((!((url == null))) && (!((_arg1.currentTarget == skipButton))))){
navigateToURL(new URLRequest(url), "_blank");
};
}
private function finish(_arg1=null):void{
ticker.interrupt();
parent.removeChild(display);
DisplayUtils.stopAllMC(display);
handler();
}
private function __tick():void{
if (forced){
forceFrame--;
if (forceFrame <= 0){
finish();
};
} else {
if (movie){
if (movie.currentFrame == movie.totalFrames){
finish();
};
} else {
finish();
};
};
}
}
}//package com.redwave.game
Section 206
//SplashMovieQueue (com.redwave.game.SplashMovieQueue)
package com.redwave.game {
import flash.display.*;
public class SplashMovieQueue {
private var links:Array;
private var movies:Array;
private var handler:Function;
private var frames:Array;
private var parent:DisplayObjectContainer;
private var index:int;// = 0
public function SplashMovieQueue(_arg1:DisplayObjectContainer, _arg2:Array, _arg3:Array, _arg4:Function, _arg5:Array){
this.parent = _arg1;
this.handler = _arg4;
this.movies = _arg2;
this.links = _arg3;
this.frames = _arg5;
index = -1;
__next();
}
private function finish():void{
handler();
}
private function __next():void{
index++;
if (index >= movies.length){
finish();
return;
};
var _local1:Class = movies[index];
var _local2:Sprite = (new (_local1) as Sprite);
var _local3:SplashMovie = new SplashMovie(parent, _local2, __next, frames[index]);
_local3.setHotLink(links[index]);
}
}
}//package com.redwave.game
Section 207
//SponsorManager (com.redwave.game.SponsorManager)
package com.redwave.game {
import flash.display.*;
import com.redwave.util.*;
import flash.net.*;
public class SponsorManager {
private var hostDomain:String;
private var primaryDomains:HashSet;
private var siteLock:HashSet;
private var sitelockDomains:HashSet;
public var lockedPrimary:Boolean;// = false
private var root:DisplayObjectContainer;
private var fullDomain:String;
private var sponsorURL:String;
public var lockedNonExclusive:Boolean;// = false
public var lockedNonprimary:Boolean;// = false
public static const LOCAL_DOMAIN:String = "local";
private static var _ins:SponsorManager;
public function SponsorManager(){
if (_ins){
throw (new Error("SponsorManager just can init once!"));
};
sitelockDomains = new HashSet();
primaryDomains = new HashSet();
siteLock = null;
}
public function getHostDomain():String{
return (hostDomain);
}
public function gotoBurstyxSite(_arg1:String="no"):void{
navigateToURL(new URLRequest(("http://www.burstyx.com/?ref=" + _arg1)), "_blank");
}
public function addPrimaryDomain(_arg1:String):void{
primaryDomains.add(_arg1);
}
public function gotoPrimarySite():void{
var _local2:Array;
var _local3:String;
var _local1:String = sponsorURL;
if (null == _local1){
_local2 = primaryDomains.toArray();
if (_local2.length > 0){
_local3 = _local2[0];
_local1 = ("http://www." + _local3);
} else {
_local1 = "http://www.burstyx.com";
};
};
navigateToURL(new URLRequest(_local1), "_blank");
}
private function checkInit():void{
if (null == hostDomain){
throw (new Error("Please call SponsorManager#init first!"));
};
}
public function is4399():Boolean{
return ((((((((((((hostDomain == "4399.com")) || ((hostDomain == "4399.net")))) || ((hostDomain == "4399pk.com")))) || ((hostDomain == "3839.com")))) || ((hostDomain == "burstyx.com")))) || ((hostDomain == "ff130.com"))));
}
public function setSponsorURL(_arg1:String):void{
sponsorURL = _arg1;
}
public function init(_arg1:DisplayObjectContainer):void{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:String;
var _local7:Number;
var _local8:Number;
if (null == siteLock){
siteLock = new HashSet();
};
this.root = _arg1;
var _local2:String = getMainLoaderInfo().url;
if (_local2.indexOf("http") == 0){
_local3 = (_local2.indexOf("://") + 3);
_local4 = _local2.indexOf("/", _local3);
_local5 = _local2.indexOf(":", _local3);
if (_local5 < 0){
_local5 = _local4;
};
_local4 = Math.min(_local4, _local5);
_local6 = _local2.substring(_local3, _local4);
fullDomain = _local6;
_local7 = (_local6.lastIndexOf(".") - 1);
_local8 = (_local6.lastIndexOf(".", _local7) + 1);
_local6 = _local6.substring(_local8, _local6.length);
hostDomain = _local6;
} else {
fullDomain = (hostDomain = LOCAL_DOMAIN);
};
}
public function isHostAllowed():Boolean{
if (null != siteLock){
if (siteLock.size() > 0){
return (siteLock.contains(hostDomain));
};
};
return (true);
}
public function addSitelockDomain(_arg1:String):void{
siteLock.add(_arg1);
}
public function makeSitelockGame(_arg1:Array):void{
siteLock = new HashSet();
siteLock.addAll(_arg1);
}
public function gotoSponsorSite():void{
gotoPrimarySite();
}
public function checkSitelock():void{
checkInit();
if (null != siteLock){
if (!siteLock.contains(hostDomain)){
root.x = 10000;
root.y = 10000;
};
};
}
public function isSitelockHosted():Boolean{
return (siteLock.contains(hostDomain));
}
public function isKongregate():Boolean{
return ((hostDomain.indexOf("kongregate") >= 0));
}
public function getFullDomain():String{
return (fullDomain);
}
public function isArmorgames():Boolean{
return (("armorgames.com" == hostDomain));
}
public function isNonsponsorHosted():Boolean{
if (lockedNonprimary){
return (true);
};
return (!(((isPrimaryHosted()) || (isSitelockHosted()))));
}
public function isPrimaryHosted():Boolean{
if (lockedPrimary){
return (true);
};
return (primaryDomains.contains(hostDomain));
}
public function getMainLoaderInfo(_arg1:LoaderInfo=null):LoaderInfo{
var loaderInfo:LoaderInfo;
var fixLoaderInfo = _arg1;
try {
loaderInfo = root.root.loaderInfo;
if (loaderInfo.loader != null){
loaderInfo = loaderInfo.loader.loaderInfo;
};
} catch(e) {
return (root.root.loaderInfo);
};
return (loaderInfo);
}
public function isLocalHost():Boolean{
return ((hostDomain == LOCAL_DOMAIN));
}
public static function get ins():SponsorManager{
if (null == _ins){
_ins = new (SponsorManager);
};
return (_ins);
}
}
}//package com.redwave.game
Section 208
//SoundLoop (com.redwave.media.SoundLoop)
package com.redwave.media {
import com.redwave.util.*;
import flash.media.*;
public class SoundLoop {
private var noLoop:Boolean;
private var stopped:Boolean;// = true
private var index:int;// = 0
private var continueTime:int;
private var source:Sound;
private var start:Number;
private var volumn:Number;
private var ch:SoundChannel;
private var length:Number;
private var end:Number;
private var type:int;// = 0
public function SoundLoop(_arg1:Sound, _arg2:Number=1, _arg3:int=0, _arg4:int=0, _arg5:int=0, _arg6:Boolean=false){
this.source = _arg1;
this.volumn = _arg2;
this.type = _arg5;
this.noLoop = _arg6;
start = _arg3;
end = _arg4;
continueTime = 5;
startChannel();
}
private function startChannel():void{
var _local1:Number;
var _local2:int;
if (source){
length = source.length;
_local1 = SoundPool.getVolumn(volumn, type);
if (start > 0){
_local1 = 0;
};
if ((((start > 0)) || ((end > 0)))){
_local2 = (noLoop) ? 0 : 100000;
ch = source.play(0, _local2, new SoundTransform(_local1));
stopped = false;
new EnterFrameCallContinuse(__tick, 1, true).start();
} else {
source.play(0, 0, new SoundTransform(_local1));
};
};
}
public function stop():void{
if (stopped){
return;
};
stopped = true;
index = end;
}
public function goon(_arg1:int=5, _arg2:Boolean=false):void{
continueTime = _arg1;
if ((((null == ch)) && (_arg2))){
startChannel();
};
}
private function __tick():Boolean{
if (null == ch){
return (true);
};
if (!GameEnterFrame.paused){
continueTime--;
};
if ((((continueTime < 0)) && (!(stopped)))){
stop();
};
if (stopped){
index--;
if (index < 0){
ch.stop();
ch = null;
return (true);
};
} else {
index++;
};
var _local1:Number = Math.min(1, (index / start));
var _local2:Number = (SoundPool.getVolumn(volumn, type) * _local1);
if (GameEnterFrame.paused){
_local2 = 0;
};
var _local3:SoundTransform = new SoundTransform(_local2);
ch.soundTransform = _local3;
return (false);
}
public function getPosition():Number{
if (ch){
return ((ch.position % length));
};
return (-1);
}
public function needCallStop():Boolean{
return (!((ch == null)));
}
}
}//package com.redwave.media
Section 209
//SoundPool (com.redwave.media.SoundPool)
package com.redwave.media {
import flash.system.*;
import com.redwave.util.*;
import flash.media.*;
public class SoundPool {
private var volumnMusic:Number;// = 1
private var domain:ApplicationDomain;
private var volumnFX:Number;// = 1
private var soundMap:HashMap;
public static const TYPE_MUSIC:int = 1;
public static const TYPE_FX:int = 0;
private static var ins:SoundPool;
public function SoundPool(_arg1:ApplicationDomain){
domain = _arg1;
soundMap = new HashMap();
}
public function setBaseVolumn(_arg1:Number, _arg2:int=0):void{
if (_arg2 == TYPE_FX){
volumnFX = _arg1;
} else {
volumnMusic = _arg1;
};
}
public function getSound(_arg1:String):Sound{
var name = _arg1;
var sound:Sound = soundMap.getValue(name);
if (null == sound){
try {
sound = Reflection.createInstance(name, domain);
soundMap.put(name, sound);
} catch(e:Error) {
return (null);
};
};
return (sound);
}
public function playSound(_arg1:String, _arg2:Number=1, _arg3:int=0, _arg4:int=0):SoundChannel{
var _local6:SoundChannel;
var _local5:Sound = getSound(_arg1);
if (_local5){
_local6 = _local5.play(0, _arg3);
if (_local6){
_local6.soundTransform = new SoundTransform(getVolumn(_arg2, _arg4));
return (_local6);
};
};
return (null);
}
public static function play(_arg1:String, _arg2:Number=1, _arg3:int=0, _arg4:int=0):SoundChannel{
return (ins.playSound(_arg1, _arg2, _arg3, _arg4));
}
public static function playSectionLoop(_arg1:String, _arg2:int=0, _arg3:int=0, _arg4:int=0, _arg5:Boolean=false):SoundLoop{
return (new SoundLoop(ins.getSound(_arg1), 1, _arg2, _arg3, _arg4, _arg5));
}
public static function setVolumnBase(_arg1:Number, _arg2:int=0):void{
ins.setBaseVolumn(_arg1, _arg2);
}
public static function getVolumn(_arg1:Number, _arg2:int=0):Number{
if (_arg2 == TYPE_FX){
return ((ins.volumnFX * _arg1));
};
return ((ins.volumnMusic * _arg1));
}
public static function initSington(_arg1:ApplicationDomain):void{
if (null == ins){
ins = new SoundPool(_arg1);
};
}
}
}//package com.redwave.media
Section 210
//FGLTracker (com.redwave.metrics.FGLTracker)
package com.redwave.metrics {
import FGL.GameTracker.*;
public class FGLTracker {
private static var tracker:GameTracker;
public static function get ins():GameTracker{
if (tracker == null){
tracker = new GameTracker();
};
return (tracker);
}
}
}//package com.redwave.metrics
Section 211
//GAMetrics (com.redwave.metrics.GAMetrics)
package com.redwave.metrics {
import flash.display.*;
import com.google.analytics.*;
public class GAMetrics {
private static var game:String;
private static var ga:GATracker;
public static function init(_arg1:DisplayObject, _arg2:String, _arg3:String, _arg4:Boolean):void{
var display = _arg1;
var gameName = _arg2;
var account = _arg3;
var enabled = _arg4;
game = gameName;
if (enabled){
try {
ga = new GATracker(display, account, "AS3", false);
} catch(e) {
trace(("GAMetric init Error: " + e));
};
};
}
public static function trackPageview(_arg1:String=""):void{
var page = _arg1;
if (ga){
try {
ga.trackPageview((("/" + game) + page));
} catch(e) {
trace(("GAMetric trackPageview Error: " + e));
};
};
}
public static function trackEvent(_arg1:String, _arg2:Number, _arg3:String=null):Boolean{
var action = _arg1;
var value = _arg2;
var label = _arg3;
if (ga){
try {
return (ga.trackEvent(game, action, label, value));
} catch(e) {
trace(("GAMetric trackEvent Error: " + e));
};
};
return (false);
}
}
}//package com.redwave.metrics
Section 212
//ArmorgamesAPI (com.redwave.portal.ArmorgamesAPI)
package com.redwave.portal {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
public class ArmorgamesAPI {
private static var agi;
private static var devKey:String;
private static var gameKey:String;
private static var inited:Boolean = false;
private static var parent:DisplayObjectContainer;
private static var loader:Loader;
public static function showLeaderboard():void{
parent.addChild(agi);
agi.showScoreboardList();
}
public static function init(_arg1:DisplayObjectContainer, _arg2:String, _arg3:String=""):void{
if (inited){
throw (new Error("ArmorgamesAPI is already inited!"));
};
inited = true;
parent = _arg1;
var _local4 = "http://agi.armorgames.com/assets/agi/AGI.swf";
Security.allowDomain(_local4);
Security.allowInsecureDomain(_local4);
devKey = "3df14097ccfce00931e30360358e841e";
if (((!((_arg3 == null))) && (!((_arg3 == ""))))){
devKey = _arg3;
};
gameKey = _arg2;
var _local5:URLRequest = new URLRequest(_local4);
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, __loadComplete);
loader.load(_local5);
}
public static function showScoreSubmit(_arg1:int):void{
parent.addChild(agi);
agi.showScoreboardSubmit(_arg1);
}
private static function __loadComplete(_arg1:Event):void{
agi = _arg1.currentTarget.content;
parent.addChild(agi);
agi.init(devKey, gameKey);
}
}
}//package com.redwave.portal
Section 213
//CandyStandAPI (com.redwave.portal.CandyStandAPI)
package com.redwave.portal {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
import flash.text.*;
import flash.filters.*;
public class CandyStandAPI {
private var csLoader:Loader;
private var handler:Function;
private var gameKey:String;
private var inited:Boolean;// = false
private var candystand;
private var version:String;
private static var _ins:CandyStandAPI;
public function CandyStandAPI(_arg1:String){
if (_ins){
throw (new Error("Sington Error"));
};
}
public function setGameScore(_arg1:Number, _arg2:Boolean=false):void{
if (candystand.game){
candystand.game.score = _arg1;
if (_arg2){
submitGameScore();
};
} else {
trace("candystand.game = null");
};
}
public function submitGameScore():void{
if (candystand.game){
candystand.game.submitScore();
} else {
trace("candystand.game = null");
};
}
public function showError(_arg1:DisplayObjectContainer, _arg2:String):void{
var textField:TextField;
var root = _arg1;
var msg = _arg2;
textField = new TextField();
textField.textColor = 0xFFFFFF;
textField.autoSize = TextFieldAutoSize.LEFT;
textField.selectable = false;
textField.text = msg;
textField.mouseEnabled = true;
textField.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{
textField.parent.removeChild(textField);
});
textField.filters = [new GlowFilter(0, 1, 2, 2)];
root.addChild(textField);
}
private function __onLoadError(_arg1:Event):void{
handler(false);
}
private function __onLoadComplete(_arg1:Event):void{
var _local2:LoaderInfo = (_arg1.target as LoaderInfo);
candystand = _local2.content;
candystand.init(gameKey, version);
handler(true);
}
public function init(_arg1:DisplayObjectContainer, _arg2:String, _arg3:String, _arg4:Function):void{
if (inited){
return;
};
inited = true;
this.gameKey = _arg2;
this.version = _arg3;
this.handler = _arg4;
Security.allowDomain("www.candystand.com");
var _local5:String = ((LoaderInfo(_arg1.root.loaderInfo).parameters.apiurl) || ("/api/flash/cs_api_3.1.swf"));
csLoader = new Loader();
_arg1.addChild(csLoader);
csLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, __onLoadComplete);
csLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, __onLoadError);
csLoader.load(new URLRequest(_local5));
}
public static function get ins():CandyStandAPI{
if (null == _ins){
_ins = new CandyStandAPI(null);
};
return (_ins);
}
}
}//package com.redwave.portal
Section 214
//KongregateAPI (com.redwave.portal.KongregateAPI)
package com.redwave.portal {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
public class KongregateAPI {
private var _stats:KongStats;
private var csLoader:Loader;
private var handler:Function;
private var inited:Boolean;// = false
private var kongregate;
private var _services:KongServices;
private static var _ins:KongregateAPI;
public function KongregateAPI(_arg1:String){
if (_ins){
throw (new Error("Sington Error"));
};
}
public function get services():KongServices{
return (_services);
}
private function __onLoadComplete(_arg1:Event):void{
var _local2:LoaderInfo = (_arg1.target as LoaderInfo);
kongregate = _local2.content;
kongregate.services.connect();
_services = new KongServices(kongregate);
_stats = new KongStats(kongregate);
if (null != handler){
handler(true);
};
}
public function init(_arg1:DisplayObjectContainer, _arg2:Function=null):void{
if (inited){
return;
};
inited = true;
this.handler = _arg2;
_services = new KongServices(null);
_stats = new KongStats(null);
var _local3:Object = LoaderInfo(_arg1.root.loaderInfo).parameters;
var _local4:String = ((_local3.kongregate_api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf"));
Security.allowDomain(_local4);
csLoader = new Loader();
_arg1.addChild(csLoader);
csLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, __onLoadComplete);
csLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, __onLoadError);
csLoader.load(new URLRequest(_local4));
}
private function __onLoadError(_arg1:Event):void{
if (null != handler){
handler(false);
};
}
public function get stats():KongStats{
return (_stats);
}
public static function get ins():KongregateAPI{
if (null == _ins){
_ins = new KongregateAPI(null);
};
return (_ins);
}
}
}//package com.redwave.portal
Section 215
//KongServices (com.redwave.portal.KongServices)
package com.redwave.portal {
public class KongServices {
private var api;
private var kong;
public function KongServices(_arg1){
this.kong = _arg1;
if (_arg1){
api = _arg1.services;
};
}
public function showSignInBox():void{
if (null == api){
return;
};
api.showSignInBox();
}
public function getGameAuthToken():String{
if (null == api){
return ("");
};
return (api.getGameAuthToken());
}
public function getUserId():Number{
if (null == api){
return (0);
};
return (api.getUserId());
}
public function getUsername():String{
if (null == api){
return ("");
};
return (api.getUsername());
}
public function isGuest():Boolean{
if (null == api){
return (true);
};
return (api.isGuest());
}
}
}//package com.redwave.portal
Section 216
//KongStats (com.redwave.portal.KongStats)
package com.redwave.portal {
public class KongStats {
private var api;
private var kong;
public function KongStats(_arg1){
this.kong = _arg1;
if (_arg1){
api = _arg1.stats;
};
}
public function submit(_arg1:String, _arg2:Number):void{
if (null == api){
return;
};
api.submit(_arg1, _arg2);
}
}
}//package com.redwave.portal
Section 217
//RatioBoolean (com.redwave.ui.RatioBoolean)
package com.redwave.ui {
public class RatioBoolean extends RatioGroup {
private var onIndex:int;
public function RatioBoolean(_arg1:Array, _arg2:int=0){
super(_arg1);
this.onIndex = _arg2;
}
public function isOn():Boolean{
return ((getSelectedIndex() == onIndex));
}
public function setOn(_arg1:Boolean):void{
if (_arg1){
setSelectedIndex(onIndex);
} else {
setSelectedIndex(((onIndex + 1) % mcs.length));
};
}
}
}//package com.redwave.ui
Section 218
//RatioGroup (com.redwave.ui.RatioGroup)
package com.redwave.ui {
import flash.display.*;
import flash.events.*;
import com.redwave.util.*;
public class RatioGroup {
protected var eventG:EventGenerator;
protected var selectedIndex:int;// = -1
protected var mcs:Array;
public function RatioGroup(_arg1:Array){
var _local3:MovieClip;
super();
this.mcs = _arg1;
var _local2:int;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2];
_local3.buttonMode = true;
_local3.useHandCursor = true;
_local3.addEventListener(MouseEvent.CLICK, Delegate.create(__click, _local2));
_local2++;
};
eventG = new EventGenerator();
}
public function addSectionHandler(_arg1:Function):void{
eventG.addListener("selectionChanged", _arg1);
}
private function __click(_arg1:MouseEvent, _arg2:int):void{
var _local3:Boolean;
if (selectedIndex != _arg2){
_local3 = true;
};
setSelectedIndex(_arg2);
if (_local3){
fireChanged();
};
}
public function removeSectionHandler(_arg1:Function):void{
eventG.removeListener("selectionChanged", _arg1);
}
public function getSelectedIndex():int{
return (selectedIndex);
}
public function setSelectedIndex(_arg1:int):void{
var _local3:MovieClip;
var _local2:int;
while (_local2 < mcs.length) {
_local3 = mcs[_local2];
if (_arg1 == _local2){
_local3.gotoAndStop(2);
} else {
_local3.gotoAndStop(1);
};
_local2++;
};
selectedIndex = _arg1;
}
protected function fireChanged():void{
eventG.dispatchEvent("selectionChanged", [selectedIndex]);
}
}
}//package com.redwave.ui
Section 219
//ArrayList (com.redwave.util.ArrayList)
package com.redwave.util {
public class ArrayList implements List {
protected var _elements:Array;
public static const CASEINSENSITIVE:int = 1;
public static const NUMERIC:int = 16;
public static const RETURNINDEXEDARRAY:int = 8;
public static const DESCENDING:int = 2;
public static const UNIQUESORT:int = 4;
public function ArrayList(){
_elements = new Array();
}
public function sort(_arg1:Object, _arg2:int):Array{
return (_elements.sort(_arg1, _arg2));
}
public function each(_arg1:Function):void{
var _local2:int;
while (_local2 < _elements.length) {
_arg1(_elements[_local2]);
_local2++;
};
}
public function shift(){
if (size() > 0){
return (_elements.shift());
};
return (undefined);
}
public function remove(_arg1){
var _local2:int = indexOf(_arg1);
if (_local2 >= 0){
return (removeAt(_local2));
};
return (null);
}
public function indexOf(_arg1):int{
var _local2:int;
while (_local2 < _elements.length) {
if (_elements[_local2] === _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
public function isEmpty():Boolean{
if (_elements.length > 0){
return (false);
};
return (true);
}
public function setElementAt(_arg1:int, _arg2):void{
replaceAt(_arg1, _arg2);
}
public function eachWithout(_arg1:Object, _arg2:Function):void{
var _local3:int;
while (_local3 < _elements.length) {
if (_elements[_local3] != _arg1){
_arg2(_elements[_local3]);
};
_local3++;
};
}
public function elementAt(_arg1:int){
return (get(_arg1));
}
public function pop(){
if (size() > 0){
return (_elements.pop());
};
return (null);
}
public function lastIndexOf(_arg1):int{
var _local2:int = (_elements.length - 1);
while (_local2 >= 0) {
if (_elements[_local2] === _arg1){
return (_local2);
};
_local2--;
};
return (-1);
}
public function clear():void{
if (!isEmpty()){
_elements.splice(0);
_elements = new Array();
};
}
public function removeAt(_arg1:int){
var _local2:Object;
if ((((_arg1 < 0)) || ((_arg1 >= size())))){
return (null);
};
_local2 = _elements[_arg1];
_elements.splice(_arg1, 1);
return (_local2);
}
public function appendList(_arg1:List, _arg2:int=-1):void{
appendAll(_arg1.toArray(), _arg2);
}
public function append(_arg1, _arg2:int=-1):void{
if (_arg2 == -1){
_elements.push(_arg1);
} else {
_elements.splice(_arg2, 0, _arg1);
};
}
public function replaceAt(_arg1:int, _arg2){
var _local3:Object;
if ((((_arg1 < 0)) || ((_arg1 >= size())))){
return (null);
};
_local3 = _elements[_arg1];
_elements[_arg1] = _arg2;
return (_local3);
}
public function removeRange(_arg1:int, _arg2:int):Array{
_arg1 = Math.max(0, _arg1);
_arg2 = Math.min(_arg2, (_elements.length - 1));
if (_arg1 > _arg2){
return ([]);
};
return (_elements.splice(_arg1, ((_arg2 - _arg1) + 1)));
}
public function size():int{
return (_elements.length);
}
public function get(_arg1:int){
return (_elements[_arg1]);
}
public function contains(_arg1):Boolean{
return ((indexOf(_arg1) >= 0));
}
public function toArray():Array{
return (_elements.concat());
}
public function appendAll(_arg1:Array, _arg2:int=-1):void{
var _local3:Array;
if ((((_arg1 == null)) || ((_arg1.length <= 0)))){
return;
};
if ((((_arg2 == -1)) || ((_arg2 == _elements.length)))){
_elements = _elements.concat(_arg1);
} else {
if (_arg2 == 0){
_elements = _arg1.concat(_elements);
} else {
_local3 = _elements.splice(_arg2);
_elements = _elements.concat(_arg1);
_elements = _elements.concat(_local3);
};
};
}
public function sortOn(_arg1:Object, _arg2:int):Array{
return (_elements.sortOn(_arg1, _arg2));
}
public function clone():ArrayList{
var _local1:ArrayList = new ArrayList();
var _local2:int;
while (_local2 < _elements.length) {
_local1.append(_elements[_local2]);
_local2++;
};
return (_local1);
}
public function last(){
return (_elements[(_elements.length - 1)]);
}
public function subArray(_arg1:int, _arg2:int):Array{
return (_elements.slice(_arg1, Math.min((_arg1 + _arg2), size())));
}
public function toString():String{
return (("ArrayList : " + _elements.toString()));
}
public function getSize():int{
return (size());
}
public function first(){
return (_elements[0]);
}
}
}//package com.redwave.util
Section 220
//ArrayUtils (com.redwave.util.ArrayUtils)
package com.redwave.util {
public class ArrayUtils {
public static function each(_arg1:Array, _arg2:Function):void{
var _local3:int;
while (_local3 < _arg1.length) {
_arg2(_arg1[_local3]);
_local3++;
};
}
public static function setSize(_arg1:Array, _arg2:int):void{
if (_arg2 < 0){
_arg2 = 0;
};
if (_arg2 == _arg1.length){
return;
};
if (_arg2 > _arg1.length){
_arg1[(_arg2 - 1)] = undefined;
} else {
_arg1.splice(_arg2);
};
}
public static function removeAllBehindSomeIndex(_arg1:Array, _arg2:int):void{
if (_arg2 <= 0){
_arg1.splice(0, _arg1.length);
return;
};
var _local3:int = _arg1.length;
var _local4:int = (_arg2 + 1);
while (_local4 < _local3) {
_arg1.pop();
_local4++;
};
}
public static function removeAllFromArray(_arg1:Array, _arg2:Object):void{
var _local3:int;
while (_local3 < _arg1.length) {
if (_arg1[_local3] == _arg2){
_arg1.splice(_local3, 1);
_local3--;
};
_local3++;
};
}
public static function indexInArray(_arg1:Array, _arg2:Object):int{
var _local3:int;
while (_local3 < _arg1.length) {
if (_arg1[_local3] == _arg2){
return (_local3);
};
_local3++;
};
return (-1);
}
public static function removeFromArray(_arg1:Array, _arg2:Object):int{
var _local3:int;
while (_local3 < _arg1.length) {
if (_arg1[_local3] == _arg2){
_arg1.splice(_local3, 1);
return (_local3);
};
_local3++;
};
return (-1);
}
public static function cloneArray(_arg1:Array):Array{
return (_arg1.concat());
}
}
}//package com.redwave.util
Section 221
//ChildFetcher (com.redwave.util.ChildFetcher)
package com.redwave.util {
import flash.display.*;
public class ChildFetcher {
private var asset:DisplayObjectContainer;
public function ChildFetcher(_arg1:DisplayObjectContainer){
this.asset = _arg1;
}
public function fetch(_arg1:String){
return (DisplayUtils.getC(asset, _arg1));
}
public static function fetchC(_arg1:DisplayObjectContainer, _arg2:String){
return (DisplayUtils.getC(_arg1, _arg2));
}
}
}//package com.redwave.util
Section 222
//Delegate (com.redwave.util.Delegate)
package com.redwave.util {
public class Delegate {
public static function create(_arg1:Function, ... _args):Function{
var func = _arg1;
var args = _args;
var fun:Function = function (... _args):void{
var _local2:Array = _args;
func.apply(null, _local2.concat(args));
};
return (fun);
}
}
}//package com.redwave.util
Section 223
//DepthContainer (com.redwave.util.DepthContainer)
package com.redwave.util {
import flash.display.*;
import flash.utils.*;
public class DepthContainer extends Sprite {
private var depths:Dictionary;
public function DepthContainer(){
depths = new Dictionary(true);
}
public function getDepthAt(_arg1:int):Number{
return (depths[getChildAt(_arg1)]);
}
private function setDepth(_arg1:DisplayObject, _arg2:Number):void{
depths[_arg1] = _arg2;
}
public function getTopDepth():Number{
if (numChildren == 0){
return (0);
};
return (getDepthAt((numChildren - 1)));
}
public function setChildDepth(_arg1:DisplayObject, _arg2:Number):int{
var _local11:int;
var _local12:Number;
if (_arg1.parent != this){
throw (new Error("Child is not in this container!!"));
};
var _local3:int = getChildIndex(_arg1);
var _local4:Number = getDepth(_arg1);
if (_arg2 == _local4){
return (_local3);
};
var _local5:int = numChildren;
if (_local5 < 2){
setDepth(_arg1, _arg2);
return (_local3);
};
if (_arg2 < getDepthAt(0)){
setChildIndex(_arg1, 0);
setDepth(_arg1, _arg2);
return (0);
};
if (_arg2 >= getDepthAt((_local5 - 1))){
setChildIndex(_arg1, (_local5 - 1));
setDepth(_arg1, _arg2);
return ((_local5 - 1));
};
var _local6:int;
var _local7:int = (_local5 - 1);
if (_arg2 > _local4){
_local6 = _local3;
_local7 = (_local5 - 1);
} else {
_local6 = 0;
_local7 = _local3;
};
while (_local7 > (_local6 + 1)) {
_local11 = (_local6 + ((_local7 - _local6) / 2));
_local12 = getDepthAt(_local11);
if (_local12 > _arg2){
_local7 = _local11;
} else {
if (_local12 < _arg2){
_local6 = _local11;
} else {
setChildIndex(_arg1, _local11);
setDepth(_arg1, _arg2);
return (_local11);
};
};
};
var _local8:Number = getDepthAt(_local6);
var _local9:Number = getDepthAt(_local7);
var _local10:int;
if (_arg2 >= _local9){
if (_local3 <= _local7){
_local10 = Math.min(_local7, (_local5 - 1));
} else {
_local10 = Math.min((_local7 + 1), (_local5 - 1));
};
} else {
if (_arg2 < _local8){
if (_local3 < _local6){
_local10 = Math.max((_local6 - 1), 0);
} else {
_local10 = _local6;
};
} else {
if (_local3 <= _local6){
_local10 = _local6;
} else {
_local10 = Math.min((_local6 + 1), (_local5 - 1));
};
};
};
setChildIndex(_arg1, _local10);
setDepth(_arg1, _arg2);
return (_local10);
}
override public function removeChildAt(_arg1:int):DisplayObject{
var _local2:DisplayObject = getChildAt(_arg1);
delete depths[_local2];
return (super.removeChildAt(_arg1));
}
public function getDepth(_arg1:DisplayObject):Number{
return (depths[_arg1]);
}
override public function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject{
var _local5:Number;
var _local6:Number;
var _local3:int = numChildren;
if ((((_arg2 < 0)) || ((_arg2 > _local3)))){
throw (new RangeError("Child index out of bounds!"));
};
var _local4:Number = 0;
if (_arg2 == 0){
if (_local3 == 0){
_local4 = 0;
} else {
_local4 = (getDepthAt(_arg2) - 1);
};
} else {
if (_arg2 == _local3){
_local4 = (getDepthAt((_arg2 - 1)) + 1);
} else {
_local5 = getDepthAt((_arg2 - 1));
_local6 = getDepthAt(_arg2);
_local4 = (_local5 + ((_local6 - _local5) / 2));
};
};
super.addChildAt(_arg1, _arg2);
setDepth(_arg1, _local4);
return (_arg1);
}
public function addChildWithDep(_arg1:DisplayObject, _arg2:Number):DisplayObject{
addChild(_arg1);
setChildDepth(_arg1, _arg2);
return (_arg1);
}
override public function removeChild(_arg1:DisplayObject):DisplayObject{
delete depths[_arg1];
return (super.removeChild(_arg1));
}
override public function addChild(_arg1:DisplayObject):DisplayObject{
var _local2:Number = (getTopDepth() + 1);
super.addChild(_arg1);
setDepth(_arg1, _local2);
return (_arg1);
}
public function removeAll():void{
while (numChildren > 0) {
removeChildAt((numChildren - 1));
};
}
}
}//package com.redwave.util
Section 224
//DisplayUtils (com.redwave.util.DisplayUtils)
package com.redwave.util {
import flash.display.*;
import flash.text.*;
import flash.filters.*;
public class DisplayUtils {
public static function createSolidShape(_arg1:uint, _arg2:int, _arg3:int, _arg4:Number=1):Shape{
var _local5:Shape = new Shape();
_local5.graphics.beginFill(_arg1, _arg4);
_local5.graphics.drawRect(0, 0, _arg2, _arg3);
_local5.graphics.endFill();
return (_local5);
}
public static function playAllMC(_arg1:DisplayObject):void{
var _local2:DisplayObjectContainer;
var _local3:int;
var _local4:int;
if (_arg1){
if ((_arg1 is MovieClip)){
MovieClip(_arg1).play();
};
if ((_arg1 is DisplayObjectContainer)){
_local2 = (_arg1 as DisplayObjectContainer);
_local3 = _local2.numChildren;
_local4 = 0;
while (_local4 < _local3) {
playAllMC(_local2.getChildAt(_local4));
_local4++;
};
};
};
}
public static function stopAllMC(_arg1:DisplayObject):void{
var _local2:DisplayObjectContainer;
var _local3:int;
var _local4:int;
if (_arg1){
if ((_arg1 is MovieClip)){
MovieClip(_arg1).stop();
};
if ((_arg1 is DisplayObjectContainer)){
_local2 = (_arg1 as DisplayObjectContainer);
_local3 = _local2.numChildren;
_local4 = 0;
while (_local4 < _local3) {
stopAllMC(_local2.getChildAt(_local4));
_local4++;
};
};
};
}
public static function getChild(_arg1:DisplayObject, _arg2:Array){
var _local3:DisplayObjectContainer;
if (_arg1 == null){
return (null);
};
if (_arg2.length == 0){
return (_arg1);
};
if ((_arg1 is DisplayObjectContainer)){
_local3 = (_arg1 as DisplayObjectContainer);
_arg1 = _local3.getChildByName(_arg2.shift());
return (getChild(_arg1, _arg2));
};
return (null);
}
public static function createText(_arg1:String):TextField{
var _local2:TextField = new TextField();
_local2.textColor = 0xFFFFFF;
_local2.autoSize = TextFieldAutoSize.LEFT;
_local2.selectable = false;
_local2.text = _arg1;
_local2.filters = [new GlowFilter(0, 1, 2, 2)];
return (_local2);
}
public static function getChildByPath(_arg1:DisplayObjectContainer, _arg2:String){
var _local3:Array = _arg2.split(".");
return (getChild(_arg1, _local3));
}
public static function disposeDeep(_arg1:DisplayObject, _arg2:DisplayObject=null, _arg3:int=0):void{
var con:DisplayObjectContainer;
var numChildren:int;
var i:int;
var mc = _arg1;
var exclude = _arg2;
var deep = _arg3;
if (mc == exclude){
return;
};
if (deep > 254){
return;
};
if ((mc is Shape)){
(mc as Shape).graphics.clear();
} else {
if ((mc is Bitmap)){
try {
(mc as Bitmap).bitmapData.dispose();
} catch(e) {
};
} else {
if ((mc is DisplayObjectContainer)){
con = (mc as DisplayObjectContainer);
numChildren = con.numChildren;
i = 0;
while (i < numChildren) {
deep = (deep + 1);
disposeDeep(con.getChildAt(i), exclude, deep);
if (deep > 254){
return;
};
i = (i + 1);
};
};
if ((mc is Sprite)){
(mc as Sprite).graphics.clear();
};
if ((mc is MovieClip)){
(mc as MovieClip).stop();
};
};
};
}
public static function getC(_arg1:DisplayObjectContainer, _arg2:String){
return (getChildByPath(_arg1, _arg2));
}
public static function createSolidCircle(_arg1:uint, _arg2:Number, _arg3:Number=1):Shape{
var _local4:Shape = new Shape();
_local4.graphics.beginFill(_arg1, _arg3);
_local4.graphics.drawEllipse(-(_arg2), -(_arg2), (_arg2 * 2), (_arg2 * 2));
_local4.graphics.endFill();
return (_local4);
}
}
}//package com.redwave.util
Section 225
//EnterFrameCall (com.redwave.util.EnterFrameCall)
package com.redwave.util {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class EnterFrameCall {
protected var type:String;
protected var maxFrames:int;
protected var name:String;
protected var curFrame:int;
protected var handler:Function;
protected var status:int;
public static const STATUE_INVOKING:int = 1;
public static const STATUE_WAITING:int = 0;
public static const STATUE_FNISHED:int = 2;
public static const STATUE_CREATING:int = -1;
private static var tickMC:Sprite;
private static var map:HashSet;
public function EnterFrameCall(_arg1:Function, _arg2:int){
handler = _arg1;
maxFrames = _arg2;
curFrame = 0;
status = STATUE_CREATING;
name = "EnterFrameCall";
if (map == null){
map = new HashSet();
};
}
public function start():void{
if (tickMC == null){
tickMC = new Sprite();
};
tickMC.addEventListener(Event.ENTER_FRAME, __enterFrame);
status = STATUE_WAITING;
map.add(this);
}
public function interrupt():void{
if (tickMC){
tickMC.removeEventListener(Event.ENTER_FRAME, __enterFrame);
};
handler = null;
status = STATUE_FNISHED;
map.remove(this);
}
public function getStatus():int{
return (status);
}
public function getType():String{
return (type);
}
private function __enterFrame(_arg1:Event):void{
tick();
}
protected function onInvoke():void{
tickMC.removeEventListener(Event.ENTER_FRAME, __enterFrame);
if (handler != null){
status = STATUE_INVOKING;
handler();
handler = null;
};
status = STATUE_FNISHED;
map.remove(this);
}
public function setScope(_arg1):void{
if ((_arg1 is String)){
name = _arg1;
} else {
name = getQualifiedClassName(_arg1);
};
}
protected function tick():void{
curFrame++;
if (curFrame >= maxFrames){
onInvoke();
};
}
protected static function getAll():Array{
return (map.toArray());
}
public static function info():String{
var _local4:EnterFrameCall;
var _local5:Number;
var _local1:Array = map.toArray();
var _local2:int = _local1.length;
var _local3 = "";
for each (_local4 in _local1) {
_local5 = _local4.maxFrames;
_local3 = (_local3 + (((_local4.name + " ") + _local5) + "\n"));
};
return (((("总EnterFrame数:" + _local2) + "\n") + _local3));
}
}
}//package com.redwave.util
Section 226
//EnterFrameCallContinuse (com.redwave.util.EnterFrameCallContinuse)
package com.redwave.util {
public class EnterFrameCallContinuse extends EnterFrameCall {
private var handlerInterrupt:Boolean;
public function EnterFrameCallContinuse(_arg1:Function, _arg2:int, _arg3:Boolean=false){
super(_arg1, _arg2);
this.handlerInterrupt = _arg3;
}
override protected function onInvoke():void{
var _local1:*;
if (handler != null){
status = EnterFrameCall.STATUE_INVOKING;
_local1 = handler();
if (handlerInterrupt){
if (_local1){
interrupt();
return;
};
};
};
curFrame = 0;
status = EnterFrameCall.STATUE_WAITING;
}
}
}//package com.redwave.util
Section 227
//EventGenerator (com.redwave.util.EventGenerator)
package com.redwave.util {
public class EventGenerator {
private var map:HashMap;
public function EventGenerator(){
map = new HashMap();
}
public function dispatchEvent(_arg1:String, _arg2:Array):void{
var _local4:Function;
var _local3:Array = map.getValue(_arg1);
if (_local3){
for each (_local4 in _local3) {
callFunction(_local4, _arg2);
};
};
}
public function addListener(_arg1:String, _arg2:Function):Boolean{
var _local3:Array = map.getValue(_arg1);
if (null == _local3){
_local3 = [];
map.put(_arg1, _local3);
};
if (ArrayUtils.indexInArray(_local3, _arg2) < 0){
_local3.push(_arg2);
return (true);
};
return (false);
}
protected function callFunction(_arg1:Function, _arg2:Array):void{
var _local3:int;
if (_arg2){
_local3 = _arg2.length;
if (_local3 == 0){
_arg1();
} else {
if (_local3 == 1){
_arg1(_arg2[0]);
} else {
if (_local3 == 2){
_arg1(_arg2[0], _arg2[1]);
} else {
if (_local3 == 3){
_arg1(_arg2[0], _arg2[1], _arg2[2]);
} else {
if (_local3 == 4){
_arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3]);
} else {
if (_local3 == 5){
_arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4]);
} else {
if (_local3 == 6){
_arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5]);
} else {
if (_local3 == 7){
_arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6]);
} else {
if (_local3 == 8){
_arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7]);
} else {
if (_local3 == 9){
_arg1(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7], _arg2[8]);
} else {
throw (new Error("Can't support param count > 9!"));
};
};
};
};
};
};
};
};
};
};
} else {
_arg1();
};
}
public function removeListener(_arg1:String, _arg2:Function):Boolean{
var _local3:Array = map.getValue(_arg1);
if (_local3){
return ((ArrayUtils.removeFromArray(_local3, _arg2) >= 0));
};
return (false);
}
}
}//package com.redwave.util
Section 228
//GameEnterFrame (com.redwave.util.GameEnterFrame)
package com.redwave.util {
public class GameEnterFrame extends EnterFrameCallContinuse {
private static const TYPE:String = "GameEnterFrame";
public static var paused:Boolean = false;
public function GameEnterFrame(_arg1:Function, _arg2:int, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
type = TYPE;
}
protected function doTick():void{
super.tick();
}
override protected function tick():void{
if (!paused){
doTick();
};
}
protected function repareForceComplete():void{
}
public static function forceCompleteAll():void{
var _local2:EnterFrameCall;
var _local3:GameEnterFrame;
var _local1:Array = EnterFrameCall.getAll();
for each (_local2 in _local1) {
if (_local2.getType() == TYPE){
_local3 = (_local2 as GameEnterFrame);
_local3.onInvoke();
_local3.repareForceComplete();
_local3.interrupt();
};
};
}
}
}//package com.redwave.util
Section 229
//GameEnterFrameNum (com.redwave.util.GameEnterFrameNum)
package com.redwave.util {
public class GameEnterFrameNum extends GameEnterFrame {
private var completeHandler:Function;
private var times:int;
public function GameEnterFrameNum(_arg1:Function, _arg2:int, _arg3:int, _arg4:Function=null){
super(_arg1, _arg2, false);
this.times = _arg3;
completeHandler = _arg4;
}
override protected function doTick():void{
super.doTick();
times--;
if (times <= 0){
interrupt();
if (null != completeHandler){
completeHandler();
};
};
}
override protected function repareForceComplete():void{
if (null != completeHandler){
completeHandler();
};
}
}
}//package com.redwave.util
Section 230
//HashMap (com.redwave.util.HashMap)
package com.redwave.util {
import flash.utils.*;
public class HashMap {
private var length:int;
private var content:Dictionary;
public function HashMap(){
length = 0;
content = new Dictionary();
}
public function containsKey(_arg1):Boolean{
if (content[_arg1] != undefined){
return (true);
};
return (false);
}
public function size():int{
return (length);
}
public function values():Array{
var _local3:*;
var _local1:Array = new Array(length);
var _local2:int;
for each (_local3 in content) {
_local1[_local2] = _local3;
_local2++;
};
return (_local1);
}
public function isEmpty():Boolean{
return ((length == 0));
}
public function remove(_arg1){
var _local2:Boolean = containsKey(_arg1);
if (!_local2){
return (null);
};
var _local3:* = content[_arg1];
delete content[_arg1];
length--;
return (_local3);
}
public function containsValue(_arg1):Boolean{
var _local2:*;
for each (_local2 in content) {
if (_local2 === _arg1){
return (true);
};
};
return (false);
}
public function clear():void{
length = 0;
content = new Dictionary();
}
public function toString():String{
var _local1:Array = keys();
var _local2:Array = values();
var _local3 = "HashMap Content:\n";
var _local4:int;
while (_local4 < _local1.length) {
_local3 = (_local3 + (((_local1[_local4] + " -> ") + _local2[_local4]) + "\n"));
_local4++;
};
return (_local3);
}
public function put(_arg1, _arg2){
var _local3:Boolean;
var _local4:*;
if (_arg1 == null){
throw (new ArgumentError("cannot put a value with undefined or null key!"));
};
if (_arg2 == null){
return (remove(_arg1));
};
_local3 = containsKey(_arg1);
if (!_local3){
length++;
};
_local4 = this.get(_arg1);
content[_arg1] = _arg2;
return (_local4);
}
public function eachValue(_arg1:Function):void{
var _local2:*;
for each (_local2 in content) {
_arg1(_local2);
};
}
public function keys():Array{
var _local3:*;
var _local1:Array = new Array(length);
var _local2:int;
for (_local3 in content) {
_local1[_local2] = _local3;
_local2++;
};
return (_local1);
}
public function get(_arg1){
var _local2:* = content[_arg1];
if (_local2 !== undefined){
return (_local2);
};
return (null);
}
public function getValue(_arg1){
return (get(_arg1));
}
public function clone():HashMap{
var _local2:*;
var _local1:HashMap = new HashMap();
for (_local2 in content) {
_local1.put(_local2, content[_local2]);
};
return (_local1);
}
public function eachKey(_arg1:Function):void{
var _local2:*;
for (_local2 in content) {
_arg1(_local2);
};
}
}
}//package com.redwave.util
Section 231
//HashSet (com.redwave.util.HashSet)
package com.redwave.util {
import flash.utils.*;
public class HashSet {
private var length:int;
private var container:Dictionary;
public function HashSet(){
container = new Dictionary();
length = 0;
}
public function addAll(_arg1:Array):void{
var _local2:*;
for each (_local2 in _arg1) {
add(_local2);
};
}
public function add(_arg1):void{
if (!contains(_arg1)){
length++;
};
container[_arg1] = _arg1;
}
public function isEmpty():Boolean{
return ((length == 0));
}
public function remove(_arg1):Boolean{
if (contains(_arg1)){
delete container[_arg1];
length--;
return (true);
};
return (false);
}
public function size():int{
return (length);
}
public function containsAll(_arg1:Array):Boolean{
var _local2:int;
while (_local2 < _arg1.length) {
if (!contains(_arg1[_local2])){
return (false);
};
_local2++;
};
return (true);
}
public function clear():void{
container = new Dictionary();
length = 0;
}
public function each(_arg1:Function):void{
var _local2:*;
for each (_local2 in container) {
_arg1(_local2);
};
}
public function removeAll(_arg1:Array):void{
var _local2:*;
for each (_local2 in _arg1) {
remove(_local2);
};
}
public function toArray():Array{
var _local3:*;
var _local1:Array = new Array(length);
var _local2:int;
for each (_local3 in container) {
_local1[_local2] = _local3;
_local2++;
};
return (_local1);
}
public function contains(_arg1):Boolean{
return (!((container[_arg1] === undefined)));
}
}
}//package com.redwave.util
Section 232
//List (com.redwave.util.List)
package com.redwave.util {
public interface List {
function size():int;
function shift();
function isEmpty():Boolean;
function remove(_arg1);
function replaceAt(_arg1:int, _arg2);
function indexOf(_arg1):int;
function clear():void;
function appendAll(_arg1:Array, _arg2:int=-1):void;
function first();
function pop();
function get(_arg1:int);
function removeAt(_arg1:int);
function appendList(_arg1:List, _arg2:int=-1):void;
function removeRange(_arg1:int, _arg2:int):Array;
function append(_arg1, _arg2:int=-1):void;
function last();
function toArray():Array;
function contains(_arg1):Boolean;
}
}//package com.redwave.util
Section 233
//Loc (com.redwave.util.Loc)
package com.redwave.util {
import flash.system.*;
public class Loc {
public static const Simplified_Chinese:String = "zh-CN";
public static const Dutch:String = "nl";
public static const Czech:String = "cs";
public static const Traditional_Chinese:String = "zh-TW";
public static const Hungarian:String = "hu";
public static const Korean:String = "ko";
public static const Turkish:String = "tr";
public static const German:String = "de";
public static const Polish:String = "pl";
public static const French:String = "fr";
public static const Finnish:String = "fi";
public static const Norwegian:String = "no";
public static const English:String = "en";
public static const Japanese:String = "ja";
public static const Spanish:String = "es";
public static const Portuguese:String = "pt";
public static const Italian:String = "it";
public static const Danish:String = "da";
public static const Other:String = "xu";
public static const Russian:String = "ru";
public static const Swedish:String = "sv";
private static var fixedLang:String = null;
private static var langMap:HashMap;
private static var defaultMap:LocalTextMap;
public static function getDefaultLanguage():String{
if (defaultMap){
return (defaultMap.getLang());
};
return (English);
}
public static function getStr(_arg1:String):String{
return (s(_arg1));
}
public static function init(_arg1:Array, _arg2:Array, _arg3:String="en", _arg4:String=null):void{
var _local6:String;
var _local7:LocalTextMap;
fixedLang = _arg4;
langMap = new HashMap();
var _local5:int;
while (_local5 < _arg1.length) {
_local6 = _arg1[_local5];
_local7 = new LocalTextMap(_local6, _arg2[_local5]);
langMap.put(_local6, _local7);
if (_local6 == _arg3){
defaultMap = _local7;
};
_local5++;
};
}
public static function setFixedLanguage(_arg1:String):void{
fixedLang = _arg1;
}
public static function isChinesePlayer():Boolean{
var _local1:String = getPlayerLanguage();
return ((((_local1 == Simplified_Chinese)) || ((_local1 == Traditional_Chinese))));
}
public static function getPlayerLanguage():String{
if (fixedLang){
return (fixedLang);
};
return (Capabilities.language);
}
public static function setDefaultLanguage(_arg1:String):void{
defaultMap = langMap.getValue(_arg1);
}
public static function s(_arg1:String):String{
var _local4:String;
var _local2:String = fixedLang;
if (null == _local2){
_local2 = Capabilities.language;
};
var _local3:LocalTextMap = langMap.getValue(_local2);
if (null == _local3){
_local3 = defaultMap;
};
if (_local3){
_local4 = _local3.getValue(_arg1);
if ((((null == _local4)) && (!((_local3 == defaultMap))))){
_local4 = defaultMap.getValue(_arg1);
};
if (null != _local4){
return (_local4);
};
};
return ("");
}
}
}//package com.redwave.util
Section 234
//LocalTextMap (com.redwave.util.LocalTextMap)
package com.redwave.util {
import flash.utils.*;
public class LocalTextMap {
private var map:HashMap;
private var lang:String;
public function LocalTextMap(_arg1:String, _arg2:Class){
var _local4:String;
super();
this.lang = _arg1;
map = new HashMap();
var _local3:ByteArray = (new (_arg2) as ByteArray);
if (_local3){
_local4 = _local3.readUTFBytes(_local3.bytesAvailable);
parse(_local4);
};
}
public function getValue(_arg1:String):String{
return (map.getValue(_arg1));
}
public function getLang():String{
return (lang);
}
private function parse(_arg1:String):void{
var _local3:String;
var _local4:int;
var _local5:String;
var _local6:String;
var _local2:Array = _arg1.split("\n");
for each (_local3 in _local2) {
_local4 = _local3.indexOf("=");
if (_local4 > 0){
_local5 = _local3.substring(0, _local4);
_local6 = _local3.substring((_local4 + 1));
_local6 = _local6.split("\r").join("");
_local6 = _local6.split("\\n").join("\n");
map.put(_local5, _local6);
};
};
}
}
}//package com.redwave.util
Section 235
//MathUtils (com.redwave.util.MathUtils)
package com.redwave.util {
import flash.geom.*;
public class MathUtils {
public static const PI2:Number = (Math.PI * 2);
public static const PIh:Number = (Math.PI / 2);
public static function distanceSq(_arg1:Point, _arg2:Point):Number{
return ((((_arg2.x - _arg1.x) * (_arg2.x - _arg1.x)) + ((_arg2.y - _arg1.y) * (_arg2.y - _arg1.y))));
}
public static function increase(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 >= 0){
_arg1 = (_arg1 + _arg2);
if (_arg1 > _arg3){
_arg1 = _arg3;
};
} else {
_arg1 = (_arg1 - _arg2);
if (_arg1 < -(_arg3)){
_arg1 = -(_arg3);
};
};
return (_arg1);
}
public static function reduce(_arg1:Number, _arg2:Number):Number{
if (_arg1 >= 0){
_arg1 = (_arg1 - _arg2);
if (_arg1 < 0){
_arg1 = 0;
};
} else {
_arg1 = (_arg1 + _arg2);
if (_arg1 > 0){
_arg1 = 0;
};
};
return (_arg1);
}
public static function approach(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number = (_arg2 - _arg1);
_arg3 = Math.abs(_arg3);
if (_local4 > 0){
_arg1 = (_arg1 + Math.min(_arg3, _local4));
} else {
_arg1 = (_arg1 + Math.max(-(_arg3), _local4));
};
return (_arg1);
}
public static function minMax(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 < _arg2){
return (_arg2);
};
if (_arg1 > _arg3){
return (_arg3);
};
return (_arg1);
}
public static function rangeRestric(_arg1:Number, _arg2:Number):Number{
_arg2 = Math.abs(_arg2);
if (_arg1 > _arg2){
return (_arg2);
};
if (_arg1 < -(_arg2)){
return (-(_arg2));
};
return (_arg1);
}
public static function standardAngle(_arg1:Number):Number{
if (Math.abs(_arg1) > PI2){
_arg1 = (_arg1 % PI2);
};
if (_arg1 < -(Math.PI)){
_arg1 = (_arg1 + PI2);
};
if (_arg1 > Math.PI){
_arg1 = (_arg1 - PI2);
};
return (_arg1);
}
}
}//package com.redwave.util
Section 236
//Reflection (com.redwave.util.Reflection)
package com.redwave.util {
import flash.display.*;
import flash.system.*;
import flash.utils.*;
public class Reflection {
public static function createInstance(_arg1:String, _arg2:ApplicationDomain=null){
var _local3:Class = getClass(_arg1, _arg2);
if (_local3 != null){
return (new (_local3));
};
return (null);
}
public static function getClass(_arg1:String, _arg2:ApplicationDomain=null):Class{
if (_arg2 == null){
_arg2 = ApplicationDomain.currentDomain;
};
var _local3:Class = (_arg2.getDefinition(_arg1) as Class);
return (_local3);
}
public static function createDisplayObjectInstance(_arg1:String, _arg2:ApplicationDomain=null):DisplayObject{
return ((createInstance(_arg1, _arg2) as DisplayObject));
}
public static function getPackageName(_arg1):String{
var _local2:String = getFullClassName(_arg1);
var _local3:int = _local2.lastIndexOf(".");
if (_local3 >= 0){
return (_local2.substring(0, _local3));
};
return ("");
}
public static function getClassName(_arg1):String{
var _local2:String = getFullClassName(_arg1);
var _local3:int = _local2.lastIndexOf(".");
if (_local3 >= 0){
_local2 = _local2.substr((_local3 + 1));
};
return (_local2);
}
public static function getFullClassName(_arg1):String{
return (getQualifiedClassName(_arg1));
}
}
}//package com.redwave.util
Section 237
//TickCounter (com.redwave.util.TickCounter)
package com.redwave.util {
public class TickCounter {
private var t:int;
private var time:int;
public function TickCounter(_arg1:int){
this.time = _arg1;
reset();
}
public function reset():void{
t = time;
}
public function tick():int{
t--;
if (t < -1){
t = -1;
};
return (t);
}
public function setTime(_arg1:int):void{
this.time = _arg1;
}
}
}//package com.redwave.util
Section 238
//TickCounterCon (com.redwave.util.TickCounterCon)
package com.redwave.util {
public class TickCounterCon {
private var time:int;
private var N:int;
private var t:int;
private var n:int;
public function TickCounterCon(_arg1:int, _arg2:int){
this.time = _arg1;
this.n = _arg2;
N = _arg2;
reset();
}
public function tick():Boolean{
t--;
if (t <= 0){
t = time;
n--;
if (n >= 0){
return (true);
};
};
return (false);
}
public function setTime(_arg1:int):void{
this.time = _arg1;
}
public function isFinshed():Boolean{
return ((n <= 0));
}
public function reset():void{
t = time;
n = N;
}
}
}//package com.redwave.util
Section 239
//TimerUtils (com.redwave.util.TimerUtils)
package com.redwave.util {
import flash.events.*;
import flash.utils.*;
public class TimerUtils {
public static function getTime():Number{
var _local1:Date = new Date();
var _local2:Number = _local1.getHours();
var _local3:Number = _local1.getMinutes();
var _local4:Number = _local1.getSeconds();
var _local5:Number = _local1.getMilliseconds();
return ((_local5 + (1000 * ((_local4 + (60 * _local3)) + (3600 * _local2)))));
}
public static function callNextFrame(_arg1:Function):void{
new EnterFrameCall(_arg1, 1).start();
}
public static function callLater(_arg1:Function, _arg2:int=40):void{
var func = _arg1;
var time = _arg2;
var timer:Timer = new Timer(time, 1);
timer.addEventListener(TimerEvent.TIMER, function (_arg1:TimerEvent):void{
func();
});
timer.start();
}
}
}//package com.redwave.util
Section 240
//FlaEmbed (com.redwave.FlaEmbed)
package com.redwave {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.utils.*;
public class FlaEmbed {
private static var _eventDispatcher:EventDispatcher;
private static var domain:ApplicationDomain;
private static var loadIndex:int;
private static var calledInit:Boolean = false;
private static var inited:Boolean = false;
private static var loader:Loader;
private static var classes:Array;
private static var initHandler:Function;
private static function handleLoaderInit(_arg1:Event):void{
loadNext();
}
public static function reflectBitmapData(_arg1:String, _arg2:int, _arg3:int){
var _local4:Class = getDefinition(_arg1);
if (null != _local4){
return (new _local4(_arg2, _arg3));
};
return (null);
}
public static function init(_arg1:Array, _arg2:Function):void{
if (calledInit){
throw (new Error("FlaEmbed.init can't be called twice"));
};
classes = _arg1;
domain = new ApplicationDomain();
initHandler = _arg2;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INIT, handleLoaderInit);
calledInit = true;
loadIndex = -1;
loadNext();
}
public static function getInstance(_arg1:String){
var _local2:Class = getDefinition(_arg1);
if (null != _local2){
return (new (_local2));
};
return (null);
}
public static function getDomain():ApplicationDomain{
return (domain);
}
public static function getDefinition(_arg1:String):Class{
if (inited){
return ((domain.getDefinition(_arg1) as Class));
};
return (null);
}
private static function loadNext():void{
loadIndex++;
if (loadIndex >= classes.length){
inited = true;
loader.contentLoaderInfo.removeEventListener(Event.INIT, handleLoaderInit);
initHandler();
return;
};
var _local1:LoaderContext = new LoaderContext(false, domain);
if (_local1.hasOwnProperty("allowLoadBytesCodeExecution")){
_local1["allowLoadBytesCodeExecution"] = true;
};
var _local2:* = classes[loadIndex];
if ((_local2 is ByteArray)){
loader.loadBytes(_local2, _local1);
} else {
loader.loadBytes(new (_local2), _local1);
};
}
public static function reflect(_arg1:String){
return (getInstance(_arg1));
}
}
}//package com.redwave
Section 241
//GameTracker (FGL.GameTracker.GameTracker)
package FGL.GameTracker {
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.external.*;
public class GameTracker extends EventDispatcher {
protected var _passphrase:String;// = ""
protected var _responder:Responder;// = null
protected var _timer:Timer;// = null
protected var _serverVersionMajor:int;// = 0
protected var _conn:NetConnection;// = null
protected var _currentGame:int;// = 1
protected var _msg_queue:Array;
protected var _inGame:Boolean;// = false
protected var _inLevel:Boolean;// = false
protected var _serviceName:String;// = ""
protected var _currentLevel:int;// = 0
protected var _hostUrl:String;// = ""
protected var _sessionID:uint;
protected var _isEnabled:Boolean;// = false
protected var _serverVersionMinor:int;// = 0
public static const GAMETRACKER_SERVER_ERROR:String = "gametracker_server_error";
private static const TIMER_DELAY:int = 15000;
public static const GAMETRACKER_CODING_ERROR:String = "gametracker_coding_error";
public function GameTracker(){
_msg_queue = new Array();
super();
setGlobalConfig();
if (_isEnabled){
_responder = new Responder(onSuccess, onNetworkingError);
_conn = new NetConnection();
_conn.connect(_hostUrl);
_timer = new Timer(TIMER_DELAY);
_timer.addEventListener("timer", onTimer);
_timer.start();
_sessionID = Math.floor((new Date().getTime() / 1000));
addToMsgQueue("begin_app", null, 0, null, null);
};
}
public function beginGame(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
if (_inGame){
endGame(_arg1, _arg2, "AUTO:(this game automatically ended when new game was started)");
};
_currentGame++;
_inGame = true;
addToMsgQueue("begin_game", null, _arg1, _arg2, _arg3);
}
protected function setGlobalConfig():void{
var ret:Array;
_isEnabled = false;
_serverVersionMajor = 0;
_serverVersionMinor = 0;
_hostUrl = "";
_serviceName = "";
_passphrase = "";
try {
if (ExternalInterface.available){
ret = ExternalInterface.call("get_gametracker_info");
_serverVersionMajor = ret[0];
_serverVersionMinor = ret[1];
_hostUrl = ret[2];
_serviceName = ret[3];
_passphrase = ret[4];
_isEnabled = (_serverVersionMajor == 1);
};
} catch(e) {
};
}
public function checkpoint(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
if (!_inGame){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_CODING_ERROR, "checkpoint() called before startGame() was called!"));
} else {
addToMsgQueue("checkpoint", null, _arg1, _arg2, _arg3);
};
}
protected function onNetworkingError(_arg1):void{
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_SERVER_ERROR, "Networking error"));
}
protected function submitMsgQueue():void{
var _local1:Object;
if (((_isEnabled) && ((_msg_queue.length > 0)))){
_local1 = new Object();
_local1["actions"] = _msg_queue;
_local1["identifier"] = _passphrase;
_conn.call(_serviceName, _responder, _local1);
_msg_queue = new Array();
};
}
public function customMsg(_arg1:String, _arg2:Number=0, _arg3:String=null, _arg4:String=null):void{
addToMsgQueue("custom", _arg1, _arg2, _arg3, _arg4);
}
public function beginLevel(_arg1:int, _arg2:Number=0, _arg3:String=null, _arg4:String=null):void{
if (!_inGame){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_CODING_ERROR, "beginLevel() called before beginGame() was called!"));
} else {
if (_inLevel){
endLevel(_arg2, _arg3, "AUTO:(this level automatically ended when new level was started)");
} else {
_currentLevel = _arg1;
_inLevel = true;
addToMsgQueue("begin_level", null, _arg2, _arg3, _arg4);
};
};
}
public function alert(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
addToMsgQueue("alert", null, _arg1, _arg2, _arg3);
submitMsgQueue();
}
protected function onTimer(_arg1:TimerEvent):void{
submitMsgQueue();
}
public function endLevel(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
if (!_inLevel){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_CODING_ERROR, "endLevel() called before beginLevel() was called!"));
} else {
_inLevel = false;
addToMsgQueue("end_level", null, _arg1, _arg2, _arg3);
};
}
protected function onSuccess(_arg1):void{
if (_arg1.toString() != ""){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_SERVER_ERROR, _arg1.toString()));
};
}
protected function addToMsgQueue(_arg1:String, _arg2:String, _arg3:Number, _arg4:String, _arg5:String):void{
var _local6:Object;
if (_isEnabled){
_local6 = new Object();
_local6["action"] = _arg1;
_local6["custom_action"] = _arg2;
_local6["session_id"] = _sessionID;
_local6["game_idx"] = _currentGame;
_local6["level"] = _currentLevel;
_local6["score"] = _arg3;
_local6["game_state"] = _arg4;
_local6["time"] = Math.floor((new Date().getTime() / 1000));
_local6["msg"] = _arg5;
_msg_queue.push(_local6);
};
}
public function endGame(_arg1:Number=0, _arg2:String=null, _arg3:String=null):void{
if (!_inGame){
dispatchEvent(new GameTrackerErrorEvent(GAMETRACKER_CODING_ERROR, "endGame() called before beginGame() was called!"));
} else {
if (_inLevel){
endLevel(_arg1, _arg2, "AUTO:(this level automatically ended when game ended)");
};
addToMsgQueue("end_game", null, _arg1, _arg2, _arg3);
_inGame = false;
submitMsgQueue();
};
}
public function isEnabled():Boolean{
return (_isEnabled);
}
}
}//package FGL.GameTracker
Section 242
//GameTrackerErrorEvent (FGL.GameTracker.GameTrackerErrorEvent)
package FGL.GameTracker {
import flash.events.*;
public class GameTrackerErrorEvent extends Event {
public var _msg:String;
public function GameTrackerErrorEvent(_arg1:String, _arg2:String){
_msg = _arg2;
super(_arg1, false, false);
}
}
}//package FGL.GameTracker
Section 243
//MochiAd (mochi.as3.MochiAd)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
import flash.utils.*;
public class MochiAd {
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showClickAwayAd(_arg1:Object):void{
var clip:Object;
var mc:MovieClip;
var chk:MovieClip;
var options = _arg1;
var DEFAULTS:Object = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{
}, ad_finished:function ():void{
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software");
}, ad_skipped:function ():void{
}};
options = _slot1._parseOptions(options, DEFAULTS);
clip = options.clip;
var ad_timeout:Number = options.ad_timeout;
delete options.ad_timeout;
if (!_slot1.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
_slot1._cleanup(mc);
options.ad_finished();
};
var wh:Array = _slot1._getRes(options, clip);
var w:Number = wh[0];
var h:Number = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
mc.unloadAd = function ():void{
_slot1.unload(clip);
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.rpc = function (_arg1:Number, _arg2:Object):void{
_slot1.rpc(clip, _arg1, _arg2);
};
chk["onEnterFrame"] = function ():void{
var _local4:Number;
if (!this.parent){
delete this.onEnterFrame;
return;
};
var _local1:Object = this.parent._mochiad_ctr;
var _local2:Number = (getTimer() - this.started);
var _local3:Boolean;
if (!chk.showing){
_local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local4 > 0){
chk.showing = true;
_local3 = true;
chk.started = getTimer();
} else {
if (_local2 > chk.ad_timeout){
options.ad_failed();
_local3 = true;
};
};
};
if (this.root == null){
_local3 = true;
};
if (_local3){
delete this.onEnterFrame;
};
};
doOnEnterFrame(chk);
}
public static function _isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function _allowDomains(_arg1:String):String{
var _local2:String = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType == "application"){
return (_local2);
};
Security.allowDomain("*");
Security.allowDomain(_local2);
Security.allowInsecureDomain("*");
Security.allowInsecureDomain(_local2);
return (_local2);
}
public static function unload(_arg1:Object):Boolean{
if (((_arg1.clip) && (_arg1.clip._mochiad))){
_arg1 = _arg1.clip;
};
if (_arg1.origFrameRate != undefined){
_arg1.stage.frameRate = _arg1.origFrameRate;
};
if (!_arg1._mochiad){
return (false);
};
if (_arg1._mochiad._containerLCName != undefined){
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"});
};
if (_arg1._mochiad.onUnload){
_arg1._mochiad.onUnload();
};
delete _arg1._mochiad_loaded;
delete _arg1._mochiad;
return (true);
}
public static function showInterLevelAd(_arg1:Object):void{
var clip:Object;
var mc:MovieClip;
var chk:MovieClip;
var options = _arg1;
var DEFAULTS:Object = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software");
}, ad_skipped:function ():void{
}};
options = _slot1._parseOptions(options, DEFAULTS);
clip = options.clip;
var ad_msec:Number = 11000;
var ad_timeout:Number = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time:Number = options.fadeout_time;
delete options.fadeout_time;
if (!_slot1.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
_slot1._cleanup(mc);
options.ad_finished();
};
var wh:Array = _slot1._getRes(options, clip);
var w:Number = wh[0];
var h:Number = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
_slot1.unload(clip);
delete this["onEnterFrame"];
};
};
mc.unloadAd = function ():void{
_slot1.unload(clip);
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = (_arg1 - 250);
};
mc.rpc = function (_arg1:Number, _arg2:Object):void{
_slot1.rpc(clip, _arg1, _arg2);
};
chk["onEnterFrame"] = function ():void{
var _local4:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
var _local1:Object = this.parent._mochiad_ctr;
var _local2:Number = (getTimer() - this.started);
var _local3:Boolean;
if (!chk.showing){
_local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local4 > 0){
chk.showing = true;
chk.started = getTimer();
_slot1.adShowing(clip);
} else {
if (_local2 > chk.ad_timeout){
options.ad_failed();
_local3 = true;
};
};
};
if (_local2 > chk.ad_msec){
_local3 = true;
};
if (_local3){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function _parseOptions(_arg1:Object, _arg2:Object):Object{
var _local4:String;
var _local5:Array;
var _local6:Number;
var _local7:Array;
var _local3:Object = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
if (_arg1){
for (_local4 in _arg1) {
_local3[_local4] = _arg1[_local4];
};
};
if (_local3.clip == undefined){
throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite."));
};
_arg1 = _local3.clip.loaderInfo.parameters.mochiad_options;
if (_arg1){
_local5 = _arg1.split("&");
_local6 = 0;
while (_local6 < _local5.length) {
_local7 = _local5[_local6].split("=");
_local3[unescape(_local7[0])] = unescape(_local7[1]);
_local6++;
};
};
if (_local3.id == "test"){
trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!");
};
return (_local3);
}
public static function _cleanup(_arg1:Object):void{
var k:String;
var lc:LocalConnection;
var f:Function;
var mc = _arg1;
if (("lc" in mc)){
lc = mc.lc;
f = function ():void{
try {
lc.client = null;
lc.close();
} catch(e:Error) {
};
};
setTimeout(f, 0);
};
var idx:Number = DisplayObjectContainer(mc).numChildren;
while (idx > 0) {
idx = (idx - 1);
DisplayObjectContainer(mc).removeChildAt(idx);
};
for (k in mc) {
delete mc[k];
};
}
public static function load(_arg1:Object):MovieClip{
var clip:Object;
var mc:MovieClip;
var k:String;
var server:String;
var hostname:String;
var lc:LocalConnection;
var name:String;
var loader:Loader;
var g:Function;
var req:URLRequest;
var v:Object;
var options = _arg1;
var DEFAULTS:Object = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
options = _slot1._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = _slot1.getVersion();
clip = options.clip;
if (!(clip is DisplayObject)){
trace("Warning: Object passed as container clip not a descendant of the DisplayObject type");
return (null);
};
if (MovieClip(clip).stage == null){
trace("Warning: Container clip for ad is not attached to the stage");
return (null);
};
if (!_slot1._isNetworkAvailable()){
return (null);
};
try {
if (clip._mochiad_loaded){
return (null);
};
} catch(e:Error) {
throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
var depth:Number = options.depth;
delete options.depth;
mc = createEmptyMovieClip(clip, "_mochiad", depth);
var wh:Array = _slot1._getRes(options, clip);
options.res = ((wh[0] + "x") + wh[1]);
options.server = (options.server + options.id);
delete options.id;
clip._mochiad_loaded = true;
if (clip.loaderInfo.loaderURL.indexOf("http") == 0){
options.as3_swf = clip.loaderInfo.loaderURL;
} else {
trace("[MochiAd] NOTE: Security Sandbox Violation errors below are normal");
};
var lv:URLVariables = new URLVariables();
for (k in options) {
v = options[k];
if (!(v is Function)){
lv[k] = v;
};
};
server = lv.server;
delete lv.server;
hostname = _allowDomains(server);
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.lc = lc;
mc.lcName = name;
lv.lc = name;
lv.st = getTimer();
mc.regContLC = function (_arg1:String):void{
mc._containerLCName = _arg1;
};
loader = new Loader();
g = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
_slot1.unload(clip);
};
loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g);
req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime()));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{
trace("[MochiAds] Blocked URL");
});
if (!options.skip){
loader.load(req);
};
mc.addChild(loader);
mc._mochiad_ctr = loader;
return (mc);
}
public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{
var _local4:Array = _arg2.split(".");
var _local5:Number = 0;
while (_local5 < (_local4.length - 1)) {
if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){
return (undefined);
};
_arg1 = _arg1[_local4[_local5]];
_local5++;
};
if (typeof(_arg1[_local4[_local5]]) == "function"){
return (_arg1[_local4[_local5]].apply(_arg1, _arg3));
};
return (undefined);
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{
var _local4:MovieClip = new MovieClip();
if (((false) && (_arg3))){
_arg1.addChildAt(_local4, _arg3);
} else {
_arg1.addChild(_local4);
};
_arg1[_arg2] = _local4;
_local4["_name"] = _arg2;
return (_local4);
}
public static function _getRes(_arg1:Object, _arg2:Object):Array{
var _local6:Array;
var _local3:Object = _arg2.getBounds(_arg2.root);
var _local4:Number = 0;
var _local5:Number = 0;
if (typeof(_arg1.res) != "undefined"){
_local6 = _arg1.res.split("x");
_local4 = parseFloat(_local6[0]);
_local5 = parseFloat(_local6[1]);
} else {
_local4 = (_local3.xMax - _local3.xMin);
_local5 = (_local3.yMax - _local3.yMin);
};
if ((((_local4 == 0)) || ((_local5 == 0)))){
_local4 = _arg2.stage.stageWidth;
_local5 = _arg2.stage.stageHeight;
};
return ([_local4, _local5]);
}
public static function adShowing(_arg1:Object):void{
_arg1.origFrameRate = _arg1.stage.frameRate;
_arg1.stage.frameRate = 30;
}
public static function getValue(_arg1:Object, _arg2:String):Object{
var _local3:Array = _arg2.split(".");
var _local4:Number = 0;
while (_local4 < (_local3.length - 1)) {
if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){
return (undefined);
};
_arg1 = _arg1[_local3[_local4]];
_local4++;
};
return (_arg1[_local3[_local4]]);
}
public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{
var _local4:Object;
var _local5:Object;
switch (_arg3.id){
case "setValue":
_slot1.setValue(_arg1, _arg3.objectName, _arg3.value);
break;
case "getValue":
_local4 = _slot1.getValue(_arg1, _arg3.objectName);
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4);
break;
case "runMethod":
_local5 = _slot1.runMethod(_arg1, _arg3.method, _arg3.args);
_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5);
break;
default:
trace(("[mochiads rpc] unknown rpc id: " + _arg3.id));
};
}
public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{
var _local4:Array = _arg2.split(".");
var _local5:Number = 0;
while (_local5 < (_local4.length - 1)) {
if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){
return;
};
_arg1 = _arg1[_local4[_local5]];
_local5++;
};
_arg1[_local4[_local5]] = _arg3;
}
public static function showPreGameAd(_arg1:Object):void{
var clip:Object;
var mc:MovieClip;
var chk:MovieClip;
var complete:Boolean;
var unloaded:Boolean;
var sendHostProgress:Boolean;
var fn:Function;
var r:MovieClip;
var options = _arg1;
var DEFAULTS:Object = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{
if ((this.clip is MovieClip)){
this.clip.stop();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_finished:function ():void{
if ((this.clip is MovieClip)){
this.clip.play();
} else {
throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
};
}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
}, ad_failed:function ():void{
trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software");
}, ad_skipped:function ():void{
}, ad_progress:function (_arg1:Number):void{
}, progress_override:function (_arg1:Object):Number{
return (NaN);
}, bar_offset:0};
options = _slot1._parseOptions(options, DEFAULTS);
if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){
options.ad_started();
fn = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
return;
};
clip = options.clip;
var ad_msec:Number = 11000;
var ad_timeout:Number = options.ad_timeout;
if (options.skip){
ad_timeout = 0;
};
delete options.ad_timeout;
var fadeout_time:Number = options.fadeout_time;
delete options.fadeout_time;
if (!_slot1.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
_slot1._cleanup(mc);
var fn:Function = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
};
var wh:Array = _slot1._getRes(options, clip);
var w:Number = wh[0];
var h:Number = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.x = (w * -0.5);
chk.y = (h * -0.5);
var bar:MovieClip = createEmptyMovieClip(chk, "_mochiad_bar", 4);
if (options.no_progress_bar){
bar.visible = false;
delete options.no_progress_bar;
} else {
bar.x = (10 + options.bar_offset);
bar.y = (h - 20);
};
var bar_w:Number = ((w - bar.x) - 10);
var bar_color:Number = options.color;
delete options.color;
var bar_background:Number = options.background;
delete options.background;
var bar_outline:Number = options.outline;
delete options.outline;
var backing_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 1);
var backing:Object = backing_mc.graphics;
backing.beginFill(bar_background);
backing.moveTo(0, 0);
backing.lineTo(bar_w, 0);
backing.lineTo(bar_w, 10);
backing.lineTo(0, 10);
backing.lineTo(0, 0);
backing.endFill();
var inside_mc:MovieClip = createEmptyMovieClip(bar, "_inside", 2);
var inside:Object = inside_mc.graphics;
inside.beginFill(bar_color);
inside.moveTo(0, 0);
inside.lineTo(bar_w, 0);
inside.lineTo(bar_w, 10);
inside.lineTo(0, 10);
inside.lineTo(0, 0);
inside.endFill();
inside_mc.scaleX = 0;
var outline_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 3);
var outline:Object = outline_mc.graphics;
outline.lineStyle(0, bar_outline, 100);
outline.moveTo(0, 0);
outline.lineTo(bar_w, 0);
outline.lineTo(bar_w, 10);
outline.lineTo(0, 10);
outline.lineTo(0, 0);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.last_pcnt = 0;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (_local1 > 0){
this.parent.alpha = (_local1 * 0.01);
} else {
_slot1.unload(clip);
delete this["onEnterFrame"];
};
};
complete = false;
unloaded = false;
var progress:Number = Math.min(1, options.progress_override(clip));
var f:Function = function (_arg1:Event):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
complete = true;
if (unloaded){
_slot1.unload(clip);
};
};
if (!isNaN(progress)){
complete = (progress == 1);
} else {
if (clip.loaderInfo.bytesLoaded == clip.loaderInfo.bytesTotal){
complete = true;
} else {
if ((clip.root is MovieClip)){
r = (clip.root as MovieClip);
if (r.framesLoaded >= r.totalFrames){
complete = true;
} else {
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
};
} else {
clip.loaderInfo.addEventListener(Event.COMPLETE, f);
};
};
};
mc.unloadAd = function ():void{
unloaded = true;
if (complete){
_slot1.unload(clip);
};
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.adjustProgress = function (_arg1:Number):void{
var _local2:Object = mc._mochiad_wait;
_local2.server_control = true;
_local2.showing = true;
_local2.started = getTimer();
_local2.ad_msec = _arg1;
};
mc.rpc = function (_arg1:Number, _arg2:Object):void{
_slot1.rpc(clip, _arg1, _arg2);
};
mc.rpcTestFn = function (_arg1:String):Object{
trace(("[MOCHIAD rpcTestFn] " + _arg1));
return (_arg1);
};
sendHostProgress = false;
mc.sendHostLoadProgress = function (_arg1:String):void{
sendHostProgress = true;
};
chk["onEnterFrame"] = function ():void{
var _local12:Number;
if (((!(this.parent)) || (!(this.parent.parent)))){
delete this["onEnterFrame"];
return;
};
var _local1:Object = this.parent.parent.root;
var _local2:Object = this.parent._mochiad_ctr;
var _local3:Number = (getTimer() - this.started);
var _local4:Boolean;
var _local5:Number = _local1.loaderInfo.bytesTotal;
var _local6:Number = _local1.loaderInfo.bytesLoaded;
var _local7:Number = Math.min(1, options.progress_override(_local1));
if (_local7 == 1){
complete = true;
};
if (complete){
_local6 = Math.max(1, _local6);
_local5 = _local6;
};
var _local8:Number = ((100 * _local6) / _local5);
if (!isNaN(_local7)){
_local8 = (100 * _local7);
};
var _local9:Number = ((100 * _local3) / chk.ad_msec);
var _local10:Object = this._mochiad_bar._inside;
var _local11:Number = Math.min(100, Math.min(((_local8) || (0)), _local9));
_local11 = Math.max(this.last_pcnt, _local11);
this.last_pcnt = _local11;
_local10.scaleX = (_local11 * 0.01);
options.ad_progress(_local11);
if (sendHostProgress){
clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local8});
if (_local8 >= 100){
sendHostProgress = false;
};
};
if (!chk.showing){
_local12 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (_local12 > 0){
chk.showing = true;
chk.started = getTimer();
_slot1.adShowing(clip);
} else {
if ((((_local3 > chk.ad_timeout)) && ((_local8 == 100)))){
options.ad_failed();
_local4 = true;
};
};
};
if (_local3 > chk.ad_msec){
_local4 = true;
};
if (((complete) && (_local4))){
if (unloaded){
_slot1.unload(_local1);
} else {
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
};
};
};
};
doOnEnterFrame(chk);
}
public static function showPreloaderAd(_arg1:Object):void{
trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0");
_slot1.showPreGameAd(_arg1);
}
public static function showTimedAd(_arg1:Object):void{
trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0");
_slot1.showInterLevelAd(_arg1);
}
public static function doOnEnterFrame(_arg1:MovieClip):void{
var mc = _arg1;
var f:Function = function (_arg1:Object):void{
if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){
mc.onEnterFrame();
} else {
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
};
mc.addEventListener(Event.ENTER_FRAME, f);
}
}
}//package mochi.as3
Section 244
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const STORE_HIDE:String = "StoreHide";
public static const NO_USER:String = "NoUser";
public static const IO_ERROR:String = "IOError";
public static const ITEM_NEW:String = "ItemNew";
public static const ITEM_OWNED:String = "ItemOwned";
public static const STORE_ITEMS:String = "StoreItems";
public static const ERROR:String = "Error";
public static const STORE_SHOW:String = "StoreShow";
public static var _inventory:MochiInventory;
public static function triggerEvent(_arg1:String, _arg2:Object):void{
MochiSocial.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
MochiSocial.removeEventListener(_arg1, _arg2);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
MochiSocial.addEventListener(_arg1, _arg2);
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function get inventory():MochiInventory{
return (_inventory);
}
public static function showStore(_arg1:Object=null):void{
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:_arg1}, null, null);
}
public static function showItem(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showItem call must pass an Object with an item key");
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:_arg1}, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showVideo(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showVideo call must pass an Object with an item key");
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:_arg1}, null, null);
}
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{
_inventory = new MochiInventory();
});
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{
_inventory = null;
});
}
}//package mochi.as3
Section 245
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Sibling:MochiDigits;
private var Fragment:Number;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function reencode():void{
var _local1:uint = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function toString():String{
var _local1:String = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String = _arg1.toString();
var _temp1 = _arg2;
_arg2 = (_arg2 + 1);
Fragment = (_local3.charCodeAt(_temp1) ^ Encoder);
if (_arg2 < _local3.length){
Sibling = new MochiDigits(_arg1, _arg2);
} else {
Sibling = null;
};
reencode();
}
public function get value():Number{
return (Number(this.toString()));
}
public function addValue(_arg1:Number):void{
value = (value + _arg1);
}
}
}//package mochi.as3
Section 246
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
eventTable = {};
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
return;
};
for (_local3 in eventTable[_arg1]) {
var _local6 = eventTable[_arg1];
_local6[_local3](_arg2);
};
}
public function removeEventListener(_arg1:String, _arg2:Function):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
eventTable[_arg1] = [];
return;
};
for (_local3 in eventTable[_arg1]) {
if (eventTable[_arg1][_local3] != _arg2){
} else {
eventTable[_arg1].splice(Number(_local3), 1);
};
};
}
public function addEventListener(_arg1:String, _arg2:Function):void{
removeEventListener(_arg1, _arg2);
eventTable[_arg1].push(_arg2);
}
}
}//package mochi.as3
Section 247
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const FORMAT_LONG:String = "LongForm";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const FORMAT_SHORT:String = "ShortForm";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_CENTER:String = "ALIGN_C";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var gameStart:Number;
private static var levelStart:Number;
public static function endPlay():void{
MochiServices.send("events_clearRoundID", null, null, null);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function trackEvent(_arg1:String, _arg2=null):void{
MochiServices.send("events_trackEvent", {tag:_arg1, value:_arg2}, null, null);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function startSession(_arg1:String):void{
MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{
var _local4:Object;
var _local3:Object = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
_local3.clip = _arg1;
MochiServices.send("events_setNotifications", _local3, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startPlay(_arg1:String="gameplay"):void{
MochiServices.send("events_setRoundID", {tag:String(_arg1)}, null, null);
}
}
}//package mochi.as3
Section 248
//MochiInventory (mochi.as3.MochiInventory)
package mochi.as3 {
import flash.events.*;
import flash.utils.*;
public dynamic class MochiInventory extends Proxy {
private var _timer:Timer;
private var _names:Array;
private var _syncID:Number;
private var _consumableProperties:Object;
private var _storeSync:Object;
private var _outstandingID:Number;
private var _syncPending:Boolean;
public static const READY:String = "InvReady";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IoError";
private static const KEY_SALT:String = " syncMaint";
public static const WRITTEN:String = "InvWritten";
public static const NOT_READY:String = "InvNotReady";
public static const VALUE_ERROR:String = "InvValueError";
private static const CONSUMER_KEY:String = "MochiConsumables";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public function MochiInventory():void{
MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned);
MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut);
_storeSync = new Object();
_syncPending = false;
_outstandingID = 0;
_syncID = 0;
_timer = new Timer(1000);
_timer.addEventListener(TimerEvent.TIMER, sync);
_timer.start();
if (MochiSocial.loggedIn){
loggedIn();
} else {
loggedOut();
};
}
private function newItems(_arg1:Object):void{
if (!this[(_arg1.id + KEY_SALT)]){
this[(_arg1.id + KEY_SALT)] = 0;
};
if (!this[_arg1.id]){
this[_arg1.id] = 0;
};
this[(_arg1.id + KEY_SALT)] = (this[(_arg1.id + KEY_SALT)] + _arg1.count);
this[_arg1.id] = (this[_arg1.id] + _arg1.count);
if (_arg1.privateProperties.consumable){
if (!this[_arg1.privateProperties.tag]){
this[_arg1.privateProperties.tag] = 0;
};
this[_arg1.privateProperties.tag] = (this[_arg1.privateProperties.tag] + (_arg1.privateProperties.inc * _arg1.count));
};
}
public function release():void{
MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (-1);
};
if (_consumableProperties[_arg1]){
return (MochiDigits(_consumableProperties[_arg1]).value);
};
return (undefined);
}
private function loggedIn(_arg1:Object=null):void{
MochiUserData.get(CONSUMER_KEY, getConsumableBag);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (false);
};
if (_consumableProperties[_arg1] == undefined){
return (false);
};
return (true);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{
return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1));
}
private function putConsumableBag(_arg1:MochiUserData):void{
_syncPending = false;
if (_arg1.error){
triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error});
_outstandingID = -1;
};
triggerEvent(WRITTEN, {});
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
var _local3:MochiDigits;
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return;
};
if (!(_arg2 is Number)){
triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2});
return;
};
if (_consumableProperties[_arg1]){
_local3 = MochiDigits(_consumableProperties[_arg1]);
if (_local3.value == _arg2){
return;
};
_local3.value = _arg2;
} else {
_names.push(_arg1);
_consumableProperties[_arg1] = new MochiDigits(_arg2);
};
_syncID++;
}
private function itemOwned(_arg1:Object):void{
_storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count};
}
private function sync(_arg1:Event=null):void{
var _local3:String;
if (((_syncPending) || ((_syncID == _outstandingID)))){
return;
};
_outstandingID = _syncID;
var _local2:Object = {};
for (_local3 in _consumableProperties) {
_local2[_local3] = MochiDigits(_consumableProperties[_local3]).value;
};
MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag);
_syncPending = true;
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{
return (_names[(_arg1 - 1)]);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{
if (!_consumableProperties[_arg1]){
return (false);
};
_names.splice(_names.indexOf(_arg1), 1);
delete _consumableProperties[_arg1];
return (true);
}
private function getConsumableBag(_arg1:MochiUserData):void{
var _local2:String;
var _local3:Number;
if (_arg1.error){
triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error});
return;
};
_consumableProperties = {};
_names = new Array();
if (_arg1.data){
for (_local2 in _arg1.data) {
_names.push(_local2);
_consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]);
};
};
for (_local2 in _storeSync) {
_local3 = _storeSync[_local2].count;
if (_consumableProperties[(_local2 + KEY_SALT)]){
_local3 = (_local3 - _consumableProperties[_local2]);
};
if (_local3 == 0){
} else {
newItems({id:_local2, count:_local3, properties:_storeSync[_local2].properties});
};
};
triggerEvent(READY, {});
}
private function loggedOut(_arg1:Object=null):void{
_consumableProperties = null;
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
}
}//package mochi.as3
Section 249
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public static function showLeaderboard(_arg1:Object=null):void{
var n:Number;
var options = _arg1;
if (options != null){
delete options.clip;
MochiServices.setContainer();
MochiServices.bringToTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
} else {
if ((options.score is MochiDigits)){
options.score = options.score.value;
};
};
n = Number(options.score);
if (isNaN(n)){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(n) != n){
trace((("WARNING: Submitted score '" + options.score) + "' will be truncated"));
};
options.score = n;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onClose.");
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (_slot1.boardID != null){
options.boardID = _slot1.boardID;
};
};
MochiServices.warnID(options.boardID, true);
trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal");
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
var _local2:Object = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
_arg1 = Number(_arg1);
if (isNaN(_arg1)){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(_arg1) != _arg1){
trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated"));
};
_arg1 = Number(_arg1);
};
};
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function onClose(_arg1:Object=null):void{
if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
MochiServices.warnID(_arg1, true);
_slot1.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
}
}//package mochi.as3
Section 250
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.geom.*;
import flash.net.*;
import flash.utils.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _queue:Array;
private static var _swfVersion:String;
private static var _preserved:Object;
public static var netupAttempted:Boolean = false;
private static var _sendChannel:LocalConnection;
public static var servicesSync:MochiSync = new MochiSync();
private static var _nextCallbackID:Number;
private static var _clip:MovieClip;
private static var _id:String;
private static var _services:String = "services.swf";
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
public static var widget:Boolean = false;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _loader:Loader;
private static var _callbacks:Object;
private static var _connecting:Boolean = false;
private static var _mochiLocalConnection:MovieClip;
private static var _listenChannelName:String = "__ms_";
public static var onError:Object;
public static var netup:Boolean = true;
private static var _mochiLC:String = "MochiLC.swf";
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function get connected():Boolean{
return (_connected);
}
private static function onReceive(_arg1:Object):void{
var methodName:String;
var pkg = _arg1;
var cb:String = pkg.callbackID;
var cblst:Object = _callbacks[cb];
if (!cblst){
return;
};
var method:* = cblst.callbackMethod;
methodName = "";
var obj:Object = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
} else {
trace((("Error: Method " + method) + " does not exist."));
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString()));
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
trace(("Error invoking method on object: " + error.toString()));
};
};
};
delete _callbacks[cb];
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_nextCallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1));
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_queue.push({methodName:_arg1, args:_arg2, callbackID:_nextCallbackID});
};
if (_clip != null){
if (_callbacks != null){
_callbacks[_nextCallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_nextCallbackID++;
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
public static function get childClip():Object{
return (_clip);
}
private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
var _local4:int;
var _local14:Loader;
var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23];
var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
var _local6:Array = [0, 64, 0, 0, 0];
var _local7:MovieClip = new MovieClip();
var _local8:LocalConnection = new LocalConnection();
var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
_local8 = new LocalConnection();
_local7.lc = _local8;
_local7.click = _arg2;
_local8.client = _local7;
_local8.connect(_local9);
var _local10:ByteArray = new ByteArray();
var _local11:ByteArray = new ByteArray();
_local11.endian = Endian.LITTLE_ENDIAN;
_local11.writeShort(1);
_local11.writeUTFBytes(((_arg1 + " ") + _local9));
_local11.writeByte(0);
var _local12:uint = ((_local3.length + _local11.length) + 4);
var _local13:uint = (_local12 + 35);
_local10.endian = Endian.LITTLE_ENDIAN;
_local10.writeUTFBytes("FWS");
_local10.writeByte(8);
_local10.writeUnsignedInt(_local13);
for each (_local4 in _local5) {
_local10.writeByte(_local4);
};
_local10.writeUnsignedInt(_local12);
_local10.writeByte(136);
_local10.writeShort(_local11.length);
_local10.writeBytes(_local11);
for each (_local4 in _local3) {
_local10.writeByte(_local4);
};
for each (_local4 in _local6) {
_local10.writeByte(_local4);
};
_local14 = new Loader();
_local14.loadBytes(_local10);
_local7.addChild(_local14);
return (_local7);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{
var avm1Click:DisplayObject;
var x:String;
var req:URLRequest;
var loader:Loader;
var setURL:Function;
var err:Function;
var complete:Function;
var url = _arg1;
var burl = _arg2;
var btn = _arg3;
var onClick = _arg4;
var vars:Object = new Object();
vars["mav"] = getVersion();
vars["swfv"] = "9";
vars["swfurl"] = btn.loaderInfo.loaderURL;
vars["fv"] = Capabilities.version;
vars["os"] = Capabilities.os;
vars["lang"] = Capabilities.language;
vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
var s = "?";
var i:Number = 0;
for (x in vars) {
if (i != 0){
s = (s + "&");
};
i = (i + 1);
s = (((s + x) + "=") + escape(vars[x]));
};
req = new URLRequest("http://x.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (_arg1:String):void{
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(_arg1, onClick);
var _local2:Rectangle = btn.getBounds(btn);
btn.addChild(avm1Click);
avm1Click.x = _local2.x;
avm1Click.y = _local2.y;
avm1Click.scaleX = (0.01 * _local2.width);
avm1Click.scaleY = (0.01 * _local2.height);
};
err = function (_arg1:Object):void{
netup = false;
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
setURL(burl);
};
complete = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
if (netup){
setURL((url + s));
} else {
setURL(burl);
};
if (!((netupAttempted) || (_connected))){
netupAttempted = true;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.load(req);
};
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
try {
_mochiLocalConnection.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
} catch(error:Error) {
};
};
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
if (Security.sandboxType != "application"){
Security.allowDomain("*");
Security.allowInsecureDomain("*");
};
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType != "application"){
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
};
return (_local2);
}
public static function getVersion():String{
return ("3.8 as3");
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
public static function warnID(_arg1:String, _arg2:Boolean):void{
_arg1 = _arg1.toLowerCase();
if (_arg1.length != 16){
trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length"));
return;
} else {
if (_arg1 == "1e113c7239048b3f"){
if (_arg2){
trace("WARNING: Using testing board ID");
} else {
trace("WARNING: Using testing board ID as game ID");
};
return;
} else {
if (_arg1 == "84993a1de4031cd8"){
if (_arg2){
trace("WARNING: Using testing game ID as board ID");
} else {
trace("WARNING: Using testing game ID");
};
return;
};
};
};
var _local3:Number = 0;
while (_local3 < _arg1.length) {
switch (_arg1.charAt(_local3)){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "a":
case "b":
case "c":
case "d":
case "e":
case "f":
break;
default:
trace(("WARNING: Board ID contains illegal characters: " + _arg1));
return;
};
_local3++;
};
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (((_clip) && (_queue))){
while (_queue.length > 0) {
_local2 = _queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _callbacks[_local2.callbackID];
};
delete _callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
}
public static function get id():String{
return (_id);
}
private static function onEvent(_arg1:Object):void{
var _local2:String = _arg1.target;
var _local3:String = _arg1.event;
switch (_local2){
case "events":
MochiEvents.triggerEvent(_arg1.event, _arg1.args);
break;
case "coins":
MochiCoins.triggerEvent(_arg1.event, _arg1.args);
break;
case "sync":
servicesSync.triggerEvent(_arg1.event, _arg1.args);
break;
};
}
private static function urlOptions(_arg1:Object):Object{
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:Array;
var _local2:Object = {};
if (_arg1.stage){
_local3 = _arg1.stage.loaderInfo.parameters.mochiad_options;
} else {
_local3 = _arg1.loaderInfo.parameters.mochiad_options;
};
if (_local3){
_local4 = _local3.split("&");
_local5 = 0;
while (_local5 < _local4.length) {
_local6 = _local4[_local5].split("=");
_local2[unescape(_local6[0])] = unescape(_local6[1]);
_local5++;
};
};
return (_local2);
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_clip.parent){
_clip.parent.removeChild(_clip);
};
if (_arg1 != null){
if ((_arg1 is DisplayObjectContainer)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is DisplayObjectContainer)){
DisplayObjectContainer(_container).addChild(_clip);
};
};
}
private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
var args = _arg1;
var callbackObject = _arg2;
var callbackMethod = _arg3;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
if (((!((args.options == null))) && (!((args.options.onError == null))))){
args.options.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
try {
var _local5 = callbackObject;
_local5[callbackMethod](args);
} catch(error:Error) {
};
} else {
if (callbackMethod != null){
try {
callbackMethod.apply(args);
} catch(error:Error) {
};
};
};
};
}
private static function loadError(_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
}
private static function initComChannels():void{
if (!_connected){
trace("[SERVICES_API] connected!");
_connecting = false;
_connected = true;
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
_clip.onReceive = onReceive;
_clip.onEvent = onEvent;
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
while (_queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _queue.shift());
};
};
}
private static function loadLCBridge(_arg1:Object):void{
var loader:Loader;
var clip = _arg1;
loader = new Loader();
var mochiLCURL:String = (_servURL + _mochiLC);
var req:URLRequest = new URLRequest(mochiLCURL);
var complete:Function = function (_arg1:Object):void{
_mochiLocalConnection = MovieClip(loader.content);
listen();
};
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
loader.load(req);
clip.addChild(loader);
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
trace("Waiting for MochiAds services to connect...");
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(_arg2).servURL){
_servURL = urlOptions(_arg2).servURL;
};
var _local3:String = (_servURL + _services);
if (urlOptions(_arg2).servicesURL){
_local3 = urlOptions(_arg2).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
MochiServices.allowDomains(_local3);
_clip = new MovieClip();
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
var _local4:URLRequest = new URLRequest(_local3);
var _local5:URLVariables = new URLVariables();
_local5.listenLC = _listenChannelName;
_local5.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options;
_local5.api_version = getVersion();
if (widget){
_local5.widget = true;
};
_local4.data = _local5;
_loader.load(_local4);
_clip.addChild(_loader);
_sendChannel = new LocalConnection();
_queue = [];
_nextCallbackID = 0;
_callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
warnID(id, false);
if ((clip is DisplayObject)){
if (clip.stage == null){
trace("MochiServices connect requires the containing clip be attached to the stage");
};
if (((!(_connected)) && ((_clip == null)))){
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
};
} else {
trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage.");
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (_arg1:String):void{
trace(_arg1);
};
};
};
}
public static function updateCopy(_arg1:Object):void{
MochiServices.send("coins_updateCopy", _arg1, null, null);
}
public static function bringToTop(_arg1:Event=null):void{
var e = _arg1;
if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){
try {
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
} catch(errorObject:Error) {
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
}
public static function connectWait(_arg1:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load. (timeout)");
MochiServices.disconnect();
MochiServices.onError("IOError");
};
}
}
}//package mochi.as3
Section 251
//MochiSocial (mochi.as3.MochiSocial)
package mochi.as3 {
public class MochiSocial {
public static const LOGGED_IN:String = "LoggedIn";
public static const PROFILE_HIDE:String = "ProfileHide";
public static const NO_USER:String = "NoUser";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
public static const IO_ERROR:String = "IOError";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const USER_INFO:String = "UserInfo";
public static const ERROR:String = "Error";
public static const LOGIN_SHOW:String = "LoginShow";
public static const LOGGED_OUT:String = "LoggedOut";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const LOGIN_SHOWN:String = "LoginShown";
public static const LOGIN_HIDE:String = "LoginHide";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static var _user_info:Object = null;
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function saveUserProperties(_arg1:Object):void{
MochiServices.send("coins_saveUserProperties", _arg1);
}
public static function get loggedIn():Boolean{
return (!((_user_info == null)));
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function getUserInfo():void{
MochiServices.send("coins_getUserInfo");
}
public static function showLoginWidget(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showLoginWidget", {options:_arg1});
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function requestLogin():void{
MochiServices.send("coins_requestLogin");
}
public static function getAPIURL():String{
if (!_user_info){
return (null);
};
return (_user_info.api_url);
}
public static function hideLoginWidget():void{
MochiServices.send("coins_hideLoginWidget");
}
public static function getAPIToken():String{
if (!_user_info){
return (null);
};
return (_user_info.api_token);
}
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{
_user_info = _arg1;
});
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{
_user_info = null;
});
}
}//package mochi.as3
Section 252
//MochiSync (mochi.as3.MochiSync)
package mochi.as3 {
import flash.utils.*;
public dynamic class MochiSync extends Proxy {
private var _syncContainer:Object;
public static var SYNC_PROPERTY:String = "UpdateProperty";
public static var SYNC_REQUEST:String = "SyncRequest";
public function MochiSync():void{
_syncContainer = {};
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
if (_syncContainer[_arg1] == _arg2){
return;
};
var _local3:String = _arg1.toString();
_syncContainer[_local3] = _arg2;
MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2});
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
return (_syncContainer[_arg1]);
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
switch (_arg1){
case SYNC_REQUEST:
MochiServices.send("sync_syncronize", _syncContainer);
break;
case SYNC_PROPERTY:
_syncContainer[_arg2.name] = _arg2.value;
break;
};
}
}
}//package mochi.as3
Section 253
//MochiUserData (mochi.as3.MochiUserData)
package mochi.as3 {
import flash.events.*;
import flash.net.*;
import flash.utils.*;
public class MochiUserData extends EventDispatcher {
public var callback:Function;// = null
public var operation:String;// = null
public var error:Event;// = null
public var data;// = null
public var _loader:URLLoader;
public var key:String;// = null
public function MochiUserData(_arg1:String="", _arg2:Function=null){
this.key = _arg1;
this.callback = _arg2;
}
public function serialize(_arg1):ByteArray{
var _local2:ByteArray = new ByteArray();
_local2.objectEncoding = ObjectEncoding.AMF3;
_local2.writeObject(_arg1);
_local2.compress();
return (_local2);
}
public function errorHandler(_arg1:IOErrorEvent):void{
data = null;
error = _arg1;
if (callback != null){
performCallback();
} else {
dispatchEvent(_arg1);
};
close();
}
public function putEvent(_arg1):void{
request("put", serialize(_arg1));
}
public function deserialize(_arg1:ByteArray){
_arg1.objectEncoding = ObjectEncoding.AMF3;
_arg1.uncompress();
return (_arg1.readObject());
}
public function securityErrorHandler(_arg1:SecurityErrorEvent):void{
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString())));
}
public function getEvent():void{
request("get", serialize(null));
}
override public function toString():String{
return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]"));
}
public function performCallback():void{
try {
callback(this);
} catch(e:Error) {
trace(("[MochiUserData] exception during callback: " + e));
};
}
public function request(_arg1:String, _arg2:ByteArray):void{
var _operation = _arg1;
var _data = _arg2;
operation = _operation;
var api_url:String = MochiSocial.getAPIURL();
var api_token:String = MochiSocial.getAPIToken();
if ((((api_url == null)) || ((api_token == null)))){
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in"));
return;
};
_loader = new URLLoader();
var args:URLVariables = new URLVariables();
args.op = _operation;
args.key = key;
var req:URLRequest = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString()));
req.method = URLRequestMethod.POST;
req.contentType = "application/x-mochi-userdata";
req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)];
req.data = _data;
_loader.dataFormat = URLLoaderDataFormat.BINARY;
_loader.addEventListener(Event.COMPLETE, completeHandler);
_loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
_loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
try {
_loader.load(req);
} catch(e:SecurityError) {
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString())));
};
}
public function completeHandler(_arg1:Event):void{
var event = _arg1;
try {
if (_loader.data.length){
data = deserialize(_loader.data);
} else {
data = null;
};
} catch(e:Error) {
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString())));
return;
};
if (callback != null){
performCallback();
} else {
dispatchEvent(event);
};
close();
}
public function close():void{
if (_loader){
_loader.removeEventListener(Event.COMPLETE, completeHandler);
_loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
_loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
_loader.close();
_loader = null;
};
error = null;
callback = null;
}
public static function get(_arg1:String, _arg2:Function):void{
var _local3:MochiUserData = new MochiUserData(_arg1, _arg2);
_local3.getEvent();
}
public static function put(_arg1:String, _arg2, _arg3:Function):void{
var _local4:MochiUserData = new MochiUserData(_arg1, _arg3);
_local4.putEvent(_arg2);
}
}
}//package mochi.as3
Section 254
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 255
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
this.left = _arg1;
this.top = _arg2;
this.right = _arg3;
this.bottom = _arg4;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 256
//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexMovieClip extends MovieClip {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexMovieClip(){
super();
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 257
//FlexSprite (mx.core.FlexSprite)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexSprite extends Sprite {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexSprite(){
super();
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 258
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 259
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 260
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.accessibility.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(_arg1:Point):Point;
function get name():String;
function set width(_arg1:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(_arg1:String):void;
function set scaleX(_arg1:Number):void;
function set scaleY(_arg1:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(_arg1:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(_arg1:Point):Point;
function get height():Number;
function set blendMode(_arg1:String):void;
function get parent():DisplayObjectContainer;
function getBounds(_arg1:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(_arg1:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(_arg1:Number):void;
function set accessibilityProperties(_arg1:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(_arg1:Boolean):void;
function get scaleX():Number;
function get scaleY():Number;
function get scrollRect():Rectangle;
function get mouseX():Number;
function get mouseY():Number;
function set height(_arg1:Number):void;
function set mask(_arg1:DisplayObject):void;
function getRect(_arg1:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(_arg1:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(_arg1:DisplayObject):Boolean;
function set opaqueBackground(_arg1:Object):void;
function set visible(_arg1:Boolean):void;
function get mask():DisplayObject;
function set x(_arg1:Number):void;
function set y(_arg1:Number):void;
function get transform():Transform;
function set filters(_arg1:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(_arg1:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 261
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(_arg1:Array):void;
function get isDocument():Boolean;
function set repeaters(_arg1:Array):void;
function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(_arg1:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 262
//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {
public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipAsset(){
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 263
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 264
//SpriteAsset (mx.core.SpriteAsset)
package mx.core {
public class SpriteAsset extends FlexSprite implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function SpriteAsset(){
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 265
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import mx.core.*;
import flash.utils.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.0.0.0";
private static var counter:int = 0;
public static function displayObjectToString(_arg1:DisplayObject):String{
var _local2:String;
var _local4:String;
var _local5:Array;
var _local3:DisplayObject = _arg1;
while (_local3 != null) {
if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){
break;
};
_local4 = _local3.name;
if ((_local3 is IRepeaterClient)){
_local5 = IRepeaterClient(_local3).instanceIndices;
if (_local5){
_local4 = (_local4 + (("[" + _local5.join("][")) + "]"));
};
};
_local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public static function createUniqueName(_arg1:Object):String{
if (!_arg1){
return (null);
};
var _local2:String = getQualifiedClassName(_arg1);
var _local3:int = _local2.indexOf("::");
if (_local3 != -1){
_local2 = _local2.substr((_local3 + 2));
};
var _local4:int = _local2.charCodeAt((_local2.length - 1));
if ((((_local4 >= 48)) && ((_local4 <= 57)))){
_local2 = (_local2 + "_");
};
return ((_local2 + counter++));
}
}
}//package mx.utils
Section 266
//HashSet (org.aswing.util.HashSet)
package org.aswing.util {
import flash.utils.*;
public class HashSet {
private var length:int;
private var container:Dictionary;
public function HashSet(){
container = new Dictionary();
length = 0;
}
public function addAll(_arg1:Array):void{
var _local2:*;
for each (_local2 in _arg1) {
add(_local2);
};
}
public function add(_arg1):void{
if (!contains(_arg1)){
length++;
};
container[_arg1] = _arg1;
}
public function isEmpty():Boolean{
return ((length == 0));
}
public function remove(_arg1):Boolean{
if (contains(_arg1)){
delete container[_arg1];
length--;
return (true);
};
return (false);
}
public function size():int{
return (length);
}
public function containsAll(_arg1:Array):Boolean{
var _local2:int;
while (_local2 < _arg1.length) {
if (!contains(_arg1[_local2])){
return (false);
};
_local2++;
};
return (true);
}
public function clear():void{
container = new Dictionary();
length = 0;
}
public function each(_arg1:Function):void{
var _local2:*;
for each (_local2 in container) {
_arg1(_local2);
};
}
public function removeAll(_arg1:Array):void{
var _local2:*;
for each (_local2 in _arg1) {
remove(_local2);
};
}
public function toArray():Array{
var _local3:*;
var _local1:Array = new Array(length);
var _local2:int;
for each (_local3 in container) {
_local1[_local2] = _local3;
_local2++;
};
return (_local1);
}
public function contains(_arg1):Boolean{
return (!((container[_arg1] === undefined)));
}
}
}//package org.aswing.util
Section 267
//MouseWheel (ru.etcs.ui.MouseWheel)
package ru.etcs.ui {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
import flash.utils.*;
import flash.errors.*;
public final class MouseWheel {
private static const _bytes:ByteArray = new ByteArray();
private static const _dataPart0:Array = new Array(1180128009, 671154176, 2013267295, 4000, 7937, 0x441100, 67, 50331647, 1057226240, 34908, 589932, 1660963951, 1667329091, 1869508197, 1668573551, 1845521507);
private static const _dataPart1:Array = new Array(6516590, 1852138356, 6513008, 1953854053, 5074805, 1935999073, 1684294761, 1937007982, 1701970034, 1701670774, 1699506547, 1952804453, 1912631150, 1299150195, 1700227173, 1701576854, 218105856, 100663296, 0, 524608, 496371968, 134350593, 8, 1873410, 525138, 395706880, 134225046, 33556484, 2383347712, 16778025, 161377, 1819632896, 939562498, 262674, 2634154009, 0x960900, 67176193, 8, 85759490, 525906, 395903488, 335582729, 262407, 16777216, 134552726, 33556487, 1377259414, 33556488, 2600796160, 0, 496371968, 83953409, 8, 1873410, 525394, 385892352);
private static const _connection:LocalConnection = new LocalConnection();
private static var _complete:Boolean = false;
private static var _loader:Loader;
private static var _captured:Boolean = false;
private static var _connectionID:uint;
public function MouseWheel(){
throw (new IllegalOperationError("do not instantiate MouseWheel"));
}
public static function capture():void{
var _local1:uint;
var _local2:ByteArray;
var _local3:Array;
var _local4:uint;
var _local5:uint;
var _local6:LoaderContext;
if (_slot1._captured){
return;
};
if (!_slot1._bytes.length){
_local1 = Math.round((Math.random() * 100000));
while (_local1 < 10000) {
_local1 = Math.round((Math.random() * 100000));
};
_slot1._connectionID = _local1;
_local2 = _slot1._bytes;
_local3 = _slot1._dataPart0;
_local4 = _local3.length;
_local5 = 0;
while (_local5 < _local4) {
_local2.writeUnsignedInt(_local3[_local5]);
_local5++;
};
_local2.writeUTFBytes(("_" + _slot1._connectionID.toString()));
_local3 = _slot1._dataPart1;
_local4 = _local3.length;
_local5 = 0;
while (_local5 < _local4) {
_local2.writeUnsignedInt(_local3[_local5]);
_local5++;
};
_local2.writeShort(0);
};
_slot1._connection.addEventListener(StatusEvent.STATUS, _slot1.handler_status);
_slot1._connection.addEventListener(AsyncErrorEvent.ASYNC_ERROR, _slot1.handler_asyncError);
_slot1._captured = true;
if (_slot1._loader){
_slot1.send();
} else {
_slot1._loader = new Loader();
_local6 = new LoaderContext(false);
if (_local6.hasOwnProperty("allowLoadBytesCodeExecution")){
_local6["allowLoadBytesCodeExecution"] = true;
};
_slot1._loader.loadBytes(_slot1._bytes, _local6);
_slot1._loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _slot1.handler_complete);
};
}
private static function handler_status(_arg1:StatusEvent):void{
if (_arg1.level == "error"){
_slot1.send();
};
}
public static function release():void{
if (!_slot1._captured){
return;
};
_slot1._captured = false;
_slot1.send();
}
private static function send(_arg1:Event=null):void{
if (!_slot1._complete){
return;
};
_slot1._connection.send(("lc_" + _slot1._connectionID), "capture", _slot1._captured);
}
private static function handler_asyncError(_arg1:AsyncErrorEvent):void{
}
private static function handler_complete(_arg1:Event):void{
_slot1._complete = true;
if (!_slot1._captured){
_slot1.send();
};
}
public static function get captured():Boolean{
return (_slot1._captured);
}
}
}//package ru.etcs.ui
Section 268
//Loading (Loading)
package {
import flash.events.*;
import com.redwave.game.*;
import flash.display.*;
import cn.googleads.*;
import com.redwave.util.*;
import flash.text.*;
import cn.*;
import flash.utils.*;
public dynamic class Loading extends MovieClip {
private var movieInner:MovieClip;
private var adsComplete:Boolean;// = true
private var loadAni:DisplayObject;
private var splashPlayed:Boolean;// = false
private var adY:int;// = 40
private var adHolder:MovieClip;
private var ads:Ads4399;
private var BurstyxSplashClass:Class;
private var movie:DisplayObjectContainer;
private var ArmorSplashClass:Class;
private var MovieClass_cn:Class;
private var MovieClass:Class;
private var CandySplashClass:Class;
private var textField:TextField;
private var adsLoaded:Boolean;// = false
public var _mochiads_game_id:String;// = "bac9631ddad29343"
private var AndkonSplashClass:Class;
public var deleteThis:int;// = 1
private var splashHolder:Sprite;
public static const STUDIO_LINK:String = "http://www.burstyx.com/?ref=BigTreeDefense";
public static var SPONSOR_LINK:String = "http://www.candystand.com/index.do?utm_source=bigtree-defense&utm_medium=link&utm_campaign=bigtree-defense-vrl";
public function Loading(){
MovieClass = Loading_MovieClass;
MovieClass_cn = Loading_MovieClass_cn;
CandySplashClass = Loading_CandySplashClass;
BurstyxSplashClass = Loading_BurstyxSplashClass;
ArmorSplashClass = Loading_ArmorSplashClass;
AndkonSplashClass = Loading_AndkonSplashClass;
super();
stop();
adHolder = new MovieClip();
splashHolder = new MovieClip();
addChild(adHolder);
addChild(splashHolder);
LocalInitor.init(Loc.English);
makeArmorgames();
if (Loc.isChinesePlayer()){
movie = (new MovieClass_cn() as DisplayObjectContainer);
} else {
movie = (new MovieClass() as DisplayObjectContainer);
};
movie.visible = false;
movieInner = (movie.getChildByName("loading") as MovieClip);
movieInner.stop();
loadAni = (movie.getChildByName("loadAni") as DisplayObject);
textField = (movie.getChildByName("percentText") as TextField);
textField.mouseEnabled = false;
textField.text = "0%";
addChildAt(movie, 0);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
if (stage){
stageInit();
} else {
addEventListener(Event.ADDED_TO_STAGE, stageInit);
};
}
private function __splashPlayed():void{
splashPlayed = true;
if (!adsComplete){
TimerUtils.callLater(__ads4399Complete, (adsLoaded) ? 5000 : 8000);
};
if (movie){
movie.visible = true;
};
}
private function __ads4399Complete():void{
adsComplete = true;
}
private function __gameInited():void{
removeChild(movie);
movie = null;
movieInner = null;
if (adHolder.parent){
adHolder.parent.removeChild(adHolder);
};
ads = null;
}
private function makeChina():void{
Loc.setFixedLanguage(Loc.Simplified_Chinese);
playSplash([CandySplashClass, BurstyxSplashClass], [SPONSOR_LINK, STUDIO_LINK], [215, 190]);
}
private function stageInit(_arg1=null):void{
removeEventListener(Event.ADDED_TO_STAGE, stageInit);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.showDefaultContextMenu = false;
if (Loc.isChinesePlayer()){
initAds4399();
};
}
private function playSplash(_arg1:Array, _arg2:Array, _arg3:Array):void{
new SplashMovieQueue(splashHolder, _arg1, _arg2, __splashPlayed, _arg3);
}
public function onEnterFrame(_arg1:Event):void{
var _local2:Number;
var _local3:int;
if (loadAni){
if (framesLoaded == totalFrames){
loadAni.parent.removeChild(loadAni);
loadAni = null;
};
};
if ((((((framesLoaded == totalFrames)) && (splashPlayed))) && (adsComplete))){
playGame();
} else {
_local2 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal);
textField.text = (Math.round((_local2 * 100)) + "%");
_local3 = Math.floor((_local2 * movieInner.totalFrames));
if (_local3 < 1){
_local3 = 1;
};
movieInner.gotoAndStop(_local3);
};
}
private function playGame():void{
var _local2:Object;
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
nextFrame();
var _local1:Class = Class(getDefinitionByName("Main"));
if (_local1){
_local2 = new _local1(__gameInited);
addChild((_local2 as DisplayObject));
};
}
private function __adEvent(_arg1:String):void{
}
private function initAds4399():void{
SponsorManager.ins.init(this);
adHolder.x = 150;
adHolder.y = 120;
adHolder.graphics.beginFill(0, 0);
adHolder.graphics.drawRect(0, 0, 400, 300);
adHolder.graphics.endFill();
var _local1:AdsParam4399 = new AdsParam4399("大树防御", 400, 300, "http://dev.4399pk.com/data/introduce/0/91.htm");
_local1.setUniqueAdsSlot(2);
Ads.instance.loadAds(adHolder, _local1, !(SponsorManager.ins.is4399()), __adsLoaded, __adEvent, __adsLoaded);
adsComplete = false;
}
private function makeAndkon():void{
Loc.setFixedLanguage(Loc.English);
SPONSOR_LINK = "http://www.andkon.com/arcade/";
playSplash([AndkonSplashClass, BurstyxSplashClass], [SPONSOR_LINK, STUDIO_LINK], [150, 190]);
}
private function makeArmorgames():void{
Loc.setFixedLanguage(Loc.English);
SPONSOR_LINK = "http://www.armorgames.com";
playSplash([ArmorSplashClass, BurstyxSplashClass], [SPONSOR_LINK, STUDIO_LINK], [217, 190]);
}
private function __adsLoaded(_arg1:String=null):void{
adsLoaded = true;
}
private function makeFree():void{
Loc.setFixedLanguage(Loc.English);
playSplash([CandySplashClass, BurstyxSplashClass], [SPONSOR_LINK, STUDIO_LINK], [215, 190]);
}
private function makeCandyStand():void{
Loc.setFixedLanguage(Loc.English);
SPONSOR_LINK = "http://www.candystand.com/";
playSplash([CandySplashClass], [SPONSOR_LINK], [215]);
}
}
}//package
Section 269
//Loading_AndkonSplashClass (Loading_AndkonSplashClass)
package {
import mx.core.*;
public class Loading_AndkonSplashClass extends SpriteAsset {
}
}//package
Section 270
//Loading_ArmorSplashClass (Loading_ArmorSplashClass)
package {
import mx.core.*;
public class Loading_ArmorSplashClass extends MovieClipAsset {
}
}//package
Section 271
//Loading_BurstyxSplashClass (Loading_BurstyxSplashClass)
package {
import mx.core.*;
public class Loading_BurstyxSplashClass extends MovieClipAsset {
}
}//package
Section 272
//Loading_CandySplashClass (Loading_CandySplashClass)
package {
import mx.core.*;
public class Loading_CandySplashClass extends SpriteAsset {
}
}//package
Section 273
//Loading_MovieClass (Loading_MovieClass)
package {
import flash.display.*;
import mx.core.*;
public class Loading_MovieClass extends SpriteAsset {
public var percentText:DisplayObject;
public var loadAni:DisplayObject;
public var sponsorButton:DisplayObject;
public var loading:DisplayObject;
}
}//package
Section 274
//Loading_MovieClass_cn (Loading_MovieClass_cn)
package {
import flash.display.*;
import mx.core.*;
public class Loading_MovieClass_cn extends SpriteAsset {
public var percentText:DisplayObject;
public var loadAni:DisplayObject;
public var loading:DisplayObject;
}
}//package
Section 275
//LocalInitor (LocalInitor)
package {
import com.redwave.util.*;
public class LocalInitor {
private static var zhClass:Class = LocalInitor_zhClass;
private static var enClass:Class = LocalInitor_enClass;
public static function init(_arg1:String="en", _arg2:String=null):void{
Loc.init([Loc.English, Loc.Simplified_Chinese], [enClass, zhClass], _arg1, _arg2);
}
}
}//package
Section 276
//LocalInitor_enClass (LocalInitor_enClass)
package {
import mx.core.*;
public class LocalInitor_enClass extends ByteArrayAsset {
}
}//package
Section 277
//LocalInitor_zhClass (LocalInitor_zhClass)
package {
import mx.core.*;
public class LocalInitor_zhClass extends ByteArrayAsset {
}
}//package
Section 278
//Main (Main)
package {
import flash.display.*;
import flash.events.*;
import com.redwave.portal.*;
import com.burstyx.bigtree.*;
import mochi.as3.*;
import com.redwave.util.*;
import com.redwave.metrics.*;
import com.redwave.*;
import com.redwave.game.*;
public dynamic class Main extends Sprite {
private var handler:Function;
private var game:Game;
public static const STUDIO_LINK:String = "http://www.burstyx.com/?ref=BigTreeDefense";
private static var graphicAssets_cn:Class = Main_graphicAssets_cn;
private static var graphicAssets:Class = Main_graphicAssets;
public static var SPONSOR_LINK:String = "http://www.candystand.com/index.do?utm_source=bigtree-defense&utm_medium=link&utm_campaign=bigtree-defense-vrl";
public function Main(_arg1:Function=null){
this.handler = _arg1;
if (stage){
initStage();
} else {
addEventListener(Event.ADDED_TO_STAGE, initStage);
};
trace("Main created!");
}
private function makeAndkon():void{
SponsorManager.ins.setSponsorURL("http://www.andkon.com/arcade/");
SponsorManager.ins.lockedNonExclusive = true;
var _local1:MovieClip = new MovieClip();
parent.addChild(_local1);
MochiServices.connect("bac9631ddad29343", _local1);
startInit();
}
private function initGame():void{
if (null != handler){
handler();
};
GAMetrics.init(this, "BigTreeDefense", "UA-10734387-4", !(SponsorManager.ins.isArmorgames()));
FGLTracker.ins.beginGame();
game = new Game(this);
GAMetrics.trackPageview("/main");
}
private function makeChina():void{
MochiBot.track(this, "0b7d6175");
SponsorManager.ins.setSponsorURL(SPONSOR_LINK);
var _local1:MovieClip = new MovieClip();
parent.addChild(_local1);
MochiServices.connect("bac9631ddad29343", _local1);
startInit();
}
private function initStage(_arg1=null):void{
stage.stageFocusRect = false;
removeEventListener(Event.ADDED_TO_STAGE, initStage);
var _local2:Shape = DisplayUtils.createSolidShape(0, Game.W, Game.H);
parent.addChild(_local2);
mask = _local2;
var _local3:Shape = DisplayUtils.createSolidShape(0x222222, Game.W, Game.H);
parent.addChildAt(_local3, 0);
SponsorManager.ins.init(this);
makeArmorgames();
}
private function makeArmorgames():void{
SponsorManager.ins.setSponsorURL("http://www.armorgames.com");
SponsorManager.ins.lockedNonExclusive = true;
SponsorManager.ins.makeSitelockGame(["armorgames.com"]);
var _local1:MovieClip = new MovieClip();
parent.addChild(_local1);
ArmorgamesAPI.init(_local1, "bigtree-defense");
startInit();
}
private function startInit():void{
var _local1:Boolean = SponsorManager.ins.is4399();
var _local2:String = SponsorManager.ins.getHostDomain();
if (Loc.isChinesePlayer()){
if (_local1){
FlaEmbed.init([graphicAssets_cn], initGame);
} else {
Loc.setFixedLanguage(Loc.English);
FlaEmbed.init([graphicAssets], initGame);
};
} else {
FlaEmbed.init([graphicAssets], initGame);
};
}
private function __candyAPILoaded(_arg1:Boolean):void{
if (!_arg1){
CandyStandAPI.ins.showError(this, "ERROR LOADING CANDYSTAND API\nYou'd better refresh the page to retry.");
};
}
private function makeFree():void{
MochiBot.track(this, "0b7d6175");
SponsorManager.ins.setSponsorURL(SPONSOR_LINK);
var _local1:MovieClip = new MovieClip();
parent.addChild(_local1);
MochiServices.connect("bac9631ddad29343", _local1);
startInit();
}
private function makeCandyStand():void{
SPONSOR_LINK = "http://www.candystand.com/";
SponsorManager.ins.setSponsorURL(SPONSOR_LINK);
SponsorManager.ins.lockedPrimary = true;
SponsorManager.ins.makeSitelockGame(["candystand.com"]);
CandyStandAPI.ins.init(this, "btd0114rry", Game.VERSION, __candyAPILoaded);
startInit();
}
}
}//package
Section 279
//Main_graphicAssets (Main_graphicAssets)
package {
import mx.core.*;
public class Main_graphicAssets extends ByteArrayAsset {
}
}//package
Section 280
//Main_graphicAssets_cn (Main_graphicAssets_cn)
package {
import mx.core.*;
public class Main_graphicAssets_cn extends ByteArrayAsset {
}
}//package
Section 281
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.system.*;
import flash.net.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
if (Security.sandboxType == "localWithFile"){
return (null);
};
var _local3:MochiBot = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var _local4 = "http://core.mochibot.com/my/core.swf";
var _local5:URLVariables = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
var _local6:String = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
var _local7:URLRequest = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
var _local8:Loader = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package