Section 1
//png (absinthe.png)
package absinthe {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package absinthe
Section 2
//png (air.png)
package air {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package air
Section 3
//png (airplane.png)
package airplane {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package airplane
Section 4
//png (alcoholic.png)
package alcoholic {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package alcoholic
Section 5
//png (alien.png)
package alien {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package alien
Section 6
//png (animal.png)
package animal {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package animal
Section 7
//png (ant.png)
package ant {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ant
Section 8
//png (antibiotics.png)
package antibiotics {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package antibiotics
Section 9
//png (apple.png)
package apple {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package apple
Section 10
//png (arable.png)
package arable {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package arable
Section 11
//ArmorGames (armorgames.ArmorGames)
package armorgames {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.utils.*;
import model.*;
import flash.net.*;
public class ArmorGames {
public static var achievementsAPI;
public static var api:Object;
public static var apiKey:String = "A13E6489-0E55-4C30-AC65-3C25E65A3111";
public static var cashed:Object = {};
public static function submit(obj:Object){
var key_id:String;
if (obj.progress != null){
obj.progress = (Math.floor((obj.progress * 10)) / 10);
trace("__ArmorGames.submit:", obj.key, "|", obj.progress, "|");
if (obj.progress < 0.1){
return;
};
key_id = ((obj.key + "_") + (obj.progress * 10));
return (true);
} else {
trace("__ArmorGames.submit:", obj.key);
key_id = obj.key;
};
trace("__cashed:", key_id, cashed[key_id]);
if (cashed[key_id] != true){
cashed[key_id] = true;
if (achievementsAPI){
achievementsAPI.achievements.submit(obj);
};
};
}
public static function checkAll(){
var checkArmorQuestReactions:* = function (el_id){
var icur:int = Model.inst.checkReactionResult(el_id);
var imax:int = Model.inst.checkReactionResultMax(el_id);
trace(el_id, icur, imax);
var progress:* = (Math.round(((icur * 100) / imax)) / 100);
if (icur < imax){
submit({key:(el_id + "_totaly_discovered"), progress:progress});
} else {
submit({key:(el_id + "_totaly_discovered")});
};
};
var elements_unlocked:int = Model.inst.getUnlockedAllElements().length;
trace("_elements_unlocked:", elements_unlocked);
if (elements_unlocked > 13){
submit({key:"collected_10_elements"});
} else {
submit({key:"collected_10_elements", progress:(elements_unlocked / 13)});
};
if ((((elements_unlocked > 113)) && ((elements_unlocked < 116)))){
submit({key:"episode_1"});
} else {
if (elements_unlocked < 116){
submit({key:"episode_1", progress:(elements_unlocked / 115)});
};
};
if (elements_unlocked > 195){
submit({key:"all_elements"});
} else {
submit({key:"all_elements", progress:(Math.round(((elements_unlocked * 100) / 195)) / 100)});
};
checkArmorQuestReactions("Stone");
checkArmorQuestReactions("Blood");
checkArmorQuestReactions("Ash");
}
public static function init(app:DisplayObjectContainer, devKey:String, gameKey:String):void{
var loadComplete:*;
var loadApiComplete:*;
var app = app;
var devKey = devKey;
var gameKey = gameKey;
loadComplete = function (e:Event):void{
var e = e;
api = e.currentTarget.content;
app.addChild(DisplayObject(api));
api.init(devKey, gameKey);
trace("Armor Games init callback");
api.initAGUI({onClose:function ():void{
setTimeout(function ():void{
Application.inst.stage.frameRate = Application.FRAME_RATE;
}, 1);
}});
};
loadApiComplete = function (e:Event):void{
achievementsAPI = e.currentTarget.content;
achievementsAPI.init({apiKey:apiKey, stage:Document.this_stage});
};
var agi_url = "http://agi.armorgames.com/assets/agi/AGI.swf";
var ach_url = "http://agi.armorgames.com/assets/agi/AchievementsAPI.swf";
Security.allowDomain(ach_url);
Security.allowDomain(agi_url);
var urlRequest:URLRequest = new URLRequest(agi_url);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.load(urlRequest);
var urlRequest2:URLRequest = new URLRequest(ach_url);
var loader2:Loader = new Loader();
loader2.contentLoaderInfo.addEventListener(Event.COMPLETE, loadApiComplete);
loader2.load(urlRequest2);
}
}
}//package armorgames
Section 12
//png (ash.png)
package ash {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ash
Section 13
//png (assassin.png)
package assassin {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package assassin
Section 14
//Assets (assets.Assets)
package assets {
import flash.display.*;
import flash.system.*;
import flash.media.*;
public class Assets {
public static var imagesAppDomain:ApplicationDomain;
public static var soundsAppDomain:ApplicationDomain;
private static var _bitmapCache:Object = {};
private static var _soundCache:Object = {};
public function Assets(){
super();
}
public static function getAsset(name:String, cache:Object, domain:ApplicationDomain, twoParams:Boolean=false){
var AssetClass:*;
var asset:* = cache[name];
if (!asset){
AssetClass = domain.getDefinition(name);
asset = (twoParams) ? new AssetClass(0, 0) : new (AssetClass);
cache[name] = asset;
};
return (asset);
}
public static function getSound(name:String):Sound{
trace(("_name:" + name));
return (getAsset(name, _soundCache, soundsAppDomain));
}
public static function getBitmap(name:String):Bitmap{
return (new Bitmap(getAsset(name, _bitmapCache, imagesAppDomain, true), PixelSnapping.AUTO, true));
}
}
}//package assets
Section 15
//png (astronaut.png)
package astronaut {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package astronaut
Section 16
//png (b_52.png)
package b_52 {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package b_52
Section 17
//png (bacteria.png)
package bacteria {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package bacteria
Section 18
//JSON (badim.utilz.JSON)
package badim.utilz {
public class JSON {
public static function encode(o:Object):String{
var encoder:JSONEncoder = new JSONEncoder(o);
return (encoder.getString());
}
public static function decode(s:String){
var decoder:JSONDecoder = new JSONDecoder(s);
return (decoder.getValue());
}
}
}//package badim.utilz
Section 19
//JSONDecoder (badim.utilz.JSONDecoder)
package badim.utilz {
public class JSONDecoder {
private var value;
private var tokenizer:JSONTokenizer;
private var token:JSONToken;
public function JSONDecoder(s:String){
super();
tokenizer = new JSONTokenizer(s);
nextToken();
value = parseValue();
}
public function getValue(){
return (value);
}
private function nextToken():JSONToken{
return ((token = tokenizer.getNextToken()));
}
private function parseArray():Array{
var a:Array = new Array();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (a);
};
while (true) {
a.push(parseValue());
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (a);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting ] or , but found " + token.value));
};
};
return (null);
}
private function parseObject():Object{
var key:String;
var o:Object = new Object();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (o);
};
while (true) {
if (token.type == JSONTokenType.STRING){
key = String(token.value);
nextToken();
if (token.type == JSONTokenType.COLON){
nextToken();
o[key] = parseValue();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (o);
};
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);
}
}
}//package badim.utilz
Section 20
//JSONEncoder (badim.utilz.JSONEncoder)
package badim.utilz {
import flash.utils.*;
public class JSONEncoder {
private var jsonString:String;
public function JSONEncoder(value){
super();
jsonString = convertToString(value);
}
public function getString():String{
return (jsonString);
}
private function convertToString(value):String{
if ((value is String)){
return (escapeString((value as String)));
};
if ((value is Number)){
return ((isFinite((value as Number))) ? value.toString() : "null");
} else {
if ((value is Boolean)){
return ((value) ? "true" : "false");
} else {
if ((value is Array)){
return (arrayToString((value as Array)));
};
if ((((value is Object)) && (!((value == null))))){
return (objectToString(value));
};
};
};
return ("null");
}
private function escapeString(str:String):String{
var ch:String;
var hexCode:String;
var zeroPad:String;
var s:String = "";
var len:Number = str.length;
var i:int;
while (i < len) {
ch = str.charAt(i);
switch (ch){
case "\"":
s = (s + "\\\"");
break;
case "\\":
s = (s + "\\\\");
break;
case "\b":
s = (s + "\\b");
break;
case "\f":
s = (s + "\\f");
break;
case "\n":
s = (s + "\\n");
break;
case "\r":
s = (s + "\\r");
break;
case "\t":
s = (s + "\\t");
break;
default:
if (ch < " "){
hexCode = ch.charCodeAt(0).toString(16);
zeroPad = ((hexCode.length == 2)) ? "00" : "000";
s = (s + (("\\u" + zeroPad) + hexCode));
} else {
s = (s + ch);
};
};
i++;
};
return ((("\"" + s) + "\""));
}
private function arrayToString(a:Array):String{
var s:String = "";
var i:int;
while (i < a.length) {
if (s.length > 0){
s = (s + ",");
};
s = (s + convertToString(a[i]));
i++;
};
return ((("[" + s) + "]"));
}
private function objectToString(o:Object):String{
var value:Object;
var key:String;
var v:XML;
var o = o;
var s = "";
var classInfo:XML = describeType(o);
if (classInfo.@name.toString() == "Object"){
for (key in o) {
value = o[key];
if ((value is Function)){
} else {
if (s.length > 0){
s = (s + ",");
};
s = (s + ((escapeString(key) + ":") + convertToString(value)));
};
};
} else {
for each (v in classInfo..*.(((name() == "variable")) || ((name() == "accessor")))) {
if (s.length > 0){
s = (s + ",");
};
s = (s + ((escapeString(v.@name.toString()) + ":") + convertToString(o[v.@name])));
};
};
return ((("{" + s) + "}"));
}
}
}//package badim.utilz
Section 21
//JSONParseError (badim.utilz.JSONParseError)
package badim.utilz {
public class JSONParseError extends Error {
private var _location:int;
private var _text:String;
public function JSONParseError(message:String="", location:int=0, text:String=""){
super(message);
name = "JSONParseError";
_location = location;
_text = text;
}
public function get location():int{
return (_location);
}
public function get text():String{
return (_text);
}
}
}//package badim.utilz
Section 22
//JSONToken (badim.utilz.JSONToken)
package badim.utilz {
public class JSONToken {
private var _type:int;
private var _value:Object;
public function JSONToken(type:int=-1, value:Object=null){
super();
_type = type;
_value = value;
}
public function get type():int{
return (_type);
}
public function set type(value:int):void{
_type = value;
}
public function get value():Object{
return (_value);
}
public function set value(v:Object):void{
_value = v;
}
}
}//package badim.utilz
Section 23
//JSONTokenizer (badim.utilz.JSONTokenizer)
package badim.utilz {
public class JSONTokenizer {
private var obj:Object;
private var jsonString:String;
private var loc:int;
private var ch:String;
public function JSONTokenizer(s:String){
super();
jsonString = s;
loc = 0;
nextChar();
}
public function getNextToken():JSONToken{
var _local2:String;
var _local3:String;
var _local4:String;
var token:JSONToken = new JSONToken();
skipIgnored();
switch (ch){
case "{":
token.type = JSONTokenType.LEFT_BRACE;
token.value = "{";
nextChar();
break;
case "}":
token.type = JSONTokenType.RIGHT_BRACE;
token.value = "}";
nextChar();
break;
case "[":
token.type = JSONTokenType.LEFT_BRACKET;
token.value = "[";
nextChar();
break;
case "]":
token.type = JSONTokenType.RIGHT_BRACKET;
token.value = "]";
nextChar();
break;
case ",":
token.type = JSONTokenType.COMMA;
token.value = ",";
nextChar();
break;
case ":":
token.type = JSONTokenType.COLON;
token.value = ":";
nextChar();
break;
case "t":
_local2 = ((("t" + nextChar()) + nextChar()) + nextChar());
if (_local2 == "true"){
token.type = JSONTokenType.TRUE;
token.value = true;
nextChar();
} else {
parseError(("Expecting 'true' but found " + _local2));
};
break;
case "f":
_local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar());
if (_local3 == "false"){
token.type = JSONTokenType.FALSE;
token.value = false;
nextChar();
} else {
parseError(("Expecting 'false' but found " + _local3));
};
break;
case "n":
_local4 = ((("n" + nextChar()) + nextChar()) + nextChar());
if (_local4 == "null"){
token.type = JSONTokenType.NULL;
token.value = null;
nextChar();
} else {
parseError(("Expecting 'null' but found " + _local4));
};
break;
case "\"":
token = readString();
break;
default:
if (((isDigit(ch)) || ((ch == "-")))){
token = readNumber();
} else {
if (ch == ""){
return (null);
};
parseError((("Unexpected " + ch) + " encountered"));
};
};
return (token);
}
private function readString():JSONToken{
var _local5:String;
var i:int;
var token:JSONToken = new JSONToken();
token.type = JSONTokenType.STRING;
var string:String = "";
nextChar();
while (((!((ch == "\""))) && (!((ch == ""))))) {
if (ch == "\\"){
nextChar();
switch (ch){
case "\"":
string = (string + "\"");
break;
case "/":
string = (string + "/");
break;
case "\\":
string = (string + "\\");
break;
case "b":
string = (string + "\b");
break;
case "f":
string = (string + "\f");
break;
case "n":
string = (string + "\n");
break;
case "r":
string = (string + "\r");
break;
case "t":
string = (string + "\t");
break;
case "u":
_local5 = "";
i = 0;
while (i < 4) {
if (!isHexDigit(nextChar())){
parseError((" Excepted a hex digit, but found: " + ch));
};
_local5 = (_local5 + ch);
i++;
};
string = (string + String.fromCharCode(parseInt(_local5, 16)));
break;
default:
string = (string + ("\\" + ch));
};
} else {
string = (string + ch);
};
nextChar();
};
if (ch == ""){
parseError("Unterminated string literal");
};
nextChar();
token.value = string;
return (token);
}
private function readNumber():JSONToken{
var token:JSONToken = new JSONToken();
token.type = JSONTokenType.NUMBER;
var input:String = "";
if (ch == "-"){
input = (input + "-");
nextChar();
};
if (!isDigit(ch)){
parseError("Expecting a digit");
};
if (ch == "0"){
input = (input + ch);
nextChar();
if (isDigit(ch)){
parseError("A digit cannot immediately follow 0");
};
} else {
while (isDigit(ch)) {
input = (input + ch);
nextChar();
};
};
if (ch == "."){
input = (input + ".");
nextChar();
if (!isDigit(ch)){
parseError("Expecting a digit");
};
while (isDigit(ch)) {
input = (input + ch);
nextChar();
};
};
if ((((ch == "e")) || ((ch == "E")))){
input = (input + "e");
nextChar();
if ((((ch == "+")) || ((ch == "-")))){
input = (input + ch);
nextChar();
};
if (!isDigit(ch)){
parseError("Scientific notation number needs exponent value");
};
while (isDigit(ch)) {
input = (input + ch);
nextChar();
};
};
var num:Number = Number(input);
if (((isFinite(num)) && (!(isNaN(num))))){
token.value = num;
return (token);
};
parseError((("Number " + num) + " is not valid!"));
return (null);
}
private function nextChar():String{
return ((ch = jsonString.charAt(loc++)));
}
private function skipIgnored():void{
var originalLoc:int;
do {
originalLoc = loc;
skipWhite();
skipComments();
} while (originalLoc != loc);
}
private function skipComments():void{
if (ch == "/"){
nextChar();
switch (ch){
case "/":
do {
nextChar();
} while (((!((ch == "\n"))) && (!((ch == "")))));
nextChar();
break;
case "*":
nextChar();
while (true) {
if (ch == "*"){
nextChar();
if (ch == "/"){
nextChar();
break;
};
} else {
nextChar();
};
if (ch == ""){
parseError("Multi-line comment not closed");
};
};
break;
default:
parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )"));
};
};
}
private function skipWhite():void{
while (isWhiteSpace(ch)) {
nextChar();
};
}
private function isWhiteSpace(ch:String):Boolean{
return ((((((((ch == " ")) || ((ch == "\t")))) || ((ch == "\n")))) || ((ch == "\r"))));
}
private function isDigit(ch:String):Boolean{
return ((((ch >= "0")) && ((ch <= "9"))));
}
private function isHexDigit(ch:String):Boolean{
var uc:String = ch.toUpperCase();
return (((isDigit(ch)) || ((((uc >= "A")) && ((uc <= "F"))))));
}
public function parseError(message:String):void{
throw (new JSONParseError(message, loc, jsonString));
}
}
}//package badim.utilz
Section 24
//JSONTokenType (badim.utilz.JSONTokenType)
package badim.utilz {
public class JSONTokenType {
public static const UNKNOWN:int = -1;
public static const COMMA:int = 0;
public static const LEFT_BRACE:int = 1;
public static const RIGHT_BRACE:int = 2;
public static const LEFT_BRACKET:int = 3;
public static const RIGHT_BRACKET:int = 4;
public static const COLON:int = 6;
public static const TRUE:int = 7;
public static const FALSE:int = 8;
public static const NULL:int = 9;
public static const STRING:int = 10;
public static const NUMBER:int = 11;
}
}//package badim.utilz
Section 25
//png (bank.png)
package bank {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package bank
Section 26
//png (beer.png)
package beer {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package beer
Section 27
//png (beetle.png)
package beetle {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package beetle
Section 28
//png (bird.png)
package bird {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package bird
Section 29
//png (blood.png)
package blood {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package blood
Section 30
//png (boat.png)
package boat {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package boat
Section 31
//png (boiler.png)
package boiler {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package boiler
Section 32
//png (book.png)
package book {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package book
Section 33
//png (bread.png)
package bread {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package bread
Section 34
//png (bricks.png)
package bricks {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package bricks
Section 35
//png (butterfly.png)
package butterfly {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package butterfly
Section 36
//png (car.png)
package car {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package car
Section 37
//png (cart.png)
package cart {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cart
Section 38
//png (cat.png)
package cat {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cat
Section 39
//png (caviar.png)
package caviar {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package caviar
Section 40
//png (cd.png)
package cd {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cd
Section 41
//png (cellphone.png)
package cellphone {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cellphone
Section 42
//png (cement.png)
package cement {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cement
Section 43
//png (censored.png)
package censored {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package censored
Section 44
//png (ceramics.png)
package ceramics {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ceramics
Section 45
//png (cheese.png)
package cheese {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cheese
Section 46
//png (cigarette.png)
package cigarette {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cigarette
Section 47
//png (clay.png)
package clay {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package clay
Section 48
//wav (click.wav)
package click {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package click
Section 49
//png (clock.png)
package clock {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package clock
Section 50
//png (clothing.png)
package clothing {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package clothing
Section 51
//png (coal.png)
package coal {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package coal
Section 52
//png (coffee.png)
package coffee {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package coffee
Section 53
//MD5 (com.adobe.crypto.MD5)
package com.adobe.crypto {
import flash.utils.*;
import com.adobe.utils.*;
public class MD5 {
public static var digest:ByteArray;
public static function hash(_arg1:String):String{
var _local2:ByteArray = new ByteArray();
_local2.writeUTFBytes(_arg1);
return (hashBinary(_local2));
}
public static function hashBytes(_arg1:ByteArray):String{
return (hashBinary(_arg1));
}
public static function hashBinary(_arg1:ByteArray):String{
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:int;
var _local2 = 1732584193;
var _local3 = -271733879;
var _local4 = -1732584194;
var _local5 = 271733878;
var _local10:Array = createBlocks(_arg1);
var _local11:int = _local10.length;
var _local12:int;
while (_local12 < _local11) {
_local6 = _local2;
_local7 = _local3;
_local8 = _local4;
_local9 = _local5;
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162);
_local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682);
_local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101);
_local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290);
_local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501);
_local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467);
_local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784);
_local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473);
_local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189);
_local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487);
_local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835);
_local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520);
_local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649);
_local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070);
_local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379);
_local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259);
_local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551);
_local2 = (_local2 + _local6);
_local3 = (_local3 + _local7);
_local4 = (_local4 + _local8);
_local5 = (_local5 + _local9);
_local12 = (_local12 + 16);
};
digest = new ByteArray();
digest.writeInt(_local2);
digest.writeInt(_local3);
digest.writeInt(_local4);
digest.writeInt(_local5);
digest.position = 0;
return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5)));
}
private static function f(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 & _arg2) | (~(_arg1) & _arg3)));
}
private static function g(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 & _arg3) | (_arg2 & ~(_arg3))));
}
private static function h(_arg1:int, _arg2:int, _arg3:int):int{
return (((_arg1 ^ _arg2) ^ _arg3));
}
private static function i(_arg1:int, _arg2:int, _arg3:int):int{
return ((_arg2 ^ (_arg1 | ~(_arg3))));
}
private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{
var _local9:int = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8);
return ((IntUtil.rol(_local9, _arg7) + _arg3));
}
private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{
return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7));
}
private static function createBlocks(_arg1:ByteArray):Array{
var _local2:Array = new Array();
var _local3:int = (_arg1.length * 8);
var _local4 = 0xFF;
var _local5:int;
while (_local5 < _local3) {
_local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32)));
_local5 = (_local5 + 8);
};
_local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32)));
_local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3;
return (_local2);
}
}
}//package com.adobe.crypto
Section 54
//PNGEncoder (com.adobe.images.PNGEncoder)
package com.adobe.images {
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
public class PNGEncoder {
private static var crcTable:Array;
private static var crcTableComputed:Boolean = false;
public static function encode(_arg1:BitmapData):ByteArray{
var _local6:uint;
var _local7:int;
var _local2:ByteArray = new ByteArray();
_local2.writeUnsignedInt(2303741511);
_local2.writeUnsignedInt(218765834);
var _local3:ByteArray = new ByteArray();
_local3.writeInt(_arg1.width);
_local3.writeInt(_arg1.height);
_local3.writeUnsignedInt(134610944);
_local3.writeByte(0);
writeChunk(_local2, 1229472850, _local3);
var _local4:ByteArray = new ByteArray();
var _local5:int;
while (_local5 < _arg1.height) {
_local4.writeByte(0);
if (!_arg1.transparent){
_local7 = 0;
while (_local7 < _arg1.width) {
_local6 = _arg1.getPixel(_local7, _local5);
_local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | 0xFF)));
_local7++;
};
} else {
_local7 = 0;
while (_local7 < _arg1.width) {
_local6 = _arg1.getPixel32(_local7, _local5);
_local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | (_local6 >>> 24))));
_local7++;
};
};
_local5++;
};
_local4.compress();
writeChunk(_local2, 1229209940, _local4);
writeChunk(_local2, 1229278788, null);
return (_local2);
}
private static function writeChunk(_arg1:ByteArray, _arg2:uint, _arg3:ByteArray):void{
var _local8:uint;
var _local9:uint;
var _local10:uint;
if (!crcTableComputed){
crcTableComputed = true;
crcTable = [];
_local9 = 0;
while (_local9 < 0x0100) {
_local8 = _local9;
_local10 = 0;
while (_local10 < 8) {
if ((_local8 & 1)){
_local8 = uint((uint(3988292384) ^ uint((_local8 >>> 1))));
} else {
_local8 = uint((_local8 >>> 1));
};
_local10++;
};
crcTable[_local9] = _local8;
_local9++;
};
};
var _local4:uint;
if (_arg3 != null){
_local4 = _arg3.length;
};
_arg1.writeUnsignedInt(_local4);
var _local5:uint = _arg1.position;
_arg1.writeUnsignedInt(_arg2);
if (_arg3 != null){
_arg1.writeBytes(_arg3);
};
var _local6:uint = _arg1.position;
_arg1.position = _local5;
_local8 = 4294967295;
var _local7:int;
while (_local7 < (_local6 - _local5)) {
_local8 = uint((crcTable[((_local8 ^ _arg1.readUnsignedByte()) & uint(0xFF))] ^ uint((_local8 >>> 8))));
_local7++;
};
_local8 = uint((_local8 ^ uint(4294967295)));
_arg1.position = _local6;
_arg1.writeUnsignedInt(_local8);
}
}
}//package com.adobe.images
Section 55
//JSON (com.adobe.serialization.json.JSON)
package com.adobe.serialization.json {
public class JSON {
public static function encode(_arg1:Object):String{
var _local2:JSONEncoder = new JSONEncoder(_arg1);
return (_local2.getString());
}
public static function decode(_arg1:String){
var _local2:JSONDecoder = new JSONDecoder(_arg1);
return (_local2.getValue());
}
}
}//package com.adobe.serialization.json
Section 56
//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){
this.tokenizer = new JSONTokenizer(_arg1);
this.nextToken();
this.value = this.parseValue();
}
public function getValue(){
return (this.value);
}
private function nextToken():JSONToken{
return ((this.token = this.tokenizer.getNextToken()));
}
private function parseArray():Array{
var _local1:Array = new Array();
this.nextToken();
if (this.token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
while (true) {
_local1.push(this.parseValue());
this.nextToken();
if (this.token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
if (this.token.type == JSONTokenType.COMMA){
this.nextToken();
} else {
this.tokenizer.parseError(("Expecting ] or , but found " + this.token.value));
};
};
return (null);
}
private function parseObject():Object{
var _local2:String;
var _local1:Object = new Object();
this.nextToken();
if (this.token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
while (true) {
if (this.token.type == JSONTokenType.STRING){
_local2 = String(this.token.value);
this.nextToken();
if (this.token.type == JSONTokenType.COLON){
this.nextToken();
_local1[_local2] = this.parseValue();
this.nextToken();
if (this.token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
if (this.token.type == JSONTokenType.COMMA){
this.nextToken();
} else {
this.tokenizer.parseError(("Expecting } or , but found " + this.token.value));
};
} else {
this.tokenizer.parseError(("Expecting : but found " + this.token.value));
};
} else {
this.tokenizer.parseError(("Expecting string but found " + this.token.value));
};
};
return (null);
}
private function parseValue():Object{
if (this.token == null){
this.tokenizer.parseError("Unexpected end of input");
};
switch (this.token.type){
case JSONTokenType.LEFT_BRACE:
return (this.parseObject());
case JSONTokenType.LEFT_BRACKET:
return (this.parseArray());
case JSONTokenType.STRING:
case JSONTokenType.NUMBER:
case JSONTokenType.TRUE:
case JSONTokenType.FALSE:
case JSONTokenType.NULL:
return (this.token.value);
default:
this.tokenizer.parseError(("Unexpected " + this.token.value));
};
return (null);
}
}
}//package com.adobe.serialization.json
Section 57
//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){
this.jsonString = this.convertToString(_arg1);
}
public function getString():String{
return (this.jsonString);
}
private function convertToString(_arg1):String{
if ((_arg1 is String)){
return (this.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 (this.arrayToString((_arg1 as Array)));
};
if ((((_arg1 is Object)) && (!((_arg1 == null))))){
return (this.objectToString(_arg1));
};
};
};
return ("null");
}
private function escapeString(_arg1:String):String{
var _local3:String;
var _local6:String;
var _local7:String;
var _local2 = "";
var _local4:Number = _arg1.length;
var _local5:int;
while (_local5 < _local4) {
_local3 = _arg1.charAt(_local5);
switch (_local3){
case "\"":
_local2 = (_local2 + "\\\"");
break;
case "\\":
_local2 = (_local2 + "\\\\");
break;
case "\b":
_local2 = (_local2 + "\\b");
break;
case "\f":
_local2 = (_local2 + "\\f");
break;
case "\n":
_local2 = (_local2 + "\\n");
break;
case "\r":
_local2 = (_local2 + "\\r");
break;
case "\t":
_local2 = (_local2 + "\\t");
break;
default:
if (_local3 < " "){
_local6 = _local3.charCodeAt(0).toString(16);
_local7 = ((_local6.length == 2)) ? "00" : "000";
_local2 = (_local2 + (("\\u" + _local7) + _local6));
} else {
_local2 = (_local2 + _local3);
};
};
_local5++;
};
return ((("\"" + _local2) + "\""));
}
private function arrayToString(_arg1:Array):String{
var _local2 = "";
var _local3:int;
while (_local3 < _arg1.length) {
if (_local2.length > 0){
_local2 = (_local2 + ",");
};
_local2 = (_local2 + this.convertToString(_arg1[_local3]));
_local3++;
};
return ((("[" + _local2) + "]"));
}
private function objectToString(_arg1:Object):String{
var value:Object;
var key:String;
var v:XML;
var o = _arg1;
var s = "";
var classInfo:XML = describeType(o);
if (classInfo.@name.toString() == "Object"){
for (key in o) {
value = o[key];
if ((value is Function)){
} else {
if (s.length > 0){
s = (s + ",");
};
s = (s + ((this.escapeString(key) + ":") + this.convertToString(value)));
};
};
} else {
for each (v in classInfo..*.(((name() == "variable")) || ((name() == "accessor")))) {
if (s.length > 0){
s = (s + ",");
};
s = (s + ((this.escapeString(v.@name.toString()) + ":") + this.convertToString(o[v.@name])));
};
};
return ((("{" + s) + "}"));
}
}
}//package com.adobe.serialization.json
Section 58
//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";
this._location = _arg2;
this._text = _arg3;
}
public function get location():int{
return (this._location);
}
public function get text():String{
return (this._text);
}
}
}//package com.adobe.serialization.json
Section 59
//JSONToken (com.adobe.serialization.json.JSONToken)
package com.adobe.serialization.json {
public class JSONToken {
private var _type:int;
private var _value:Object;
public function JSONToken(_arg1:int=-1, _arg2:Object=null){
this._type = _arg1;
this._value = _arg2;
}
public function get type():int{
return (this._type);
}
public function set type(_arg1:int):void{
this._type = _arg1;
}
public function get value():Object{
return (this._value);
}
public function set value(_arg1:Object):void{
this._value = _arg1;
}
}
}//package com.adobe.serialization.json
Section 60
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer)
package com.adobe.serialization.json {
public class JSONTokenizer {
private var obj:Object;
private var jsonString:String;
private var loc:int;
private var ch:String;
public function JSONTokenizer(_arg1:String){
this.jsonString = _arg1;
this.loc = 0;
this.nextChar();
}
public function getNextToken():JSONToken{
var _local2:String;
var _local3:String;
var _local4:String;
var _local1:JSONToken = new JSONToken();
this.skipIgnored();
switch (this.ch){
case "{":
_local1.type = JSONTokenType.LEFT_BRACE;
_local1.value = "{";
this.nextChar();
break;
case "}":
_local1.type = JSONTokenType.RIGHT_BRACE;
_local1.value = "}";
this.nextChar();
break;
case "[":
_local1.type = JSONTokenType.LEFT_BRACKET;
_local1.value = "[";
this.nextChar();
break;
case "]":
_local1.type = JSONTokenType.RIGHT_BRACKET;
_local1.value = "]";
this.nextChar();
break;
case ",":
_local1.type = JSONTokenType.COMMA;
_local1.value = ",";
this.nextChar();
break;
case ":":
_local1.type = JSONTokenType.COLON;
_local1.value = ":";
this.nextChar();
break;
case "t":
_local2 = ((("t" + this.nextChar()) + this.nextChar()) + this.nextChar());
if (_local2 == "true"){
_local1.type = JSONTokenType.TRUE;
_local1.value = true;
this.nextChar();
} else {
this.parseError(("Expecting 'true' but found " + _local2));
};
break;
case "f":
_local3 = (((("f" + this.nextChar()) + this.nextChar()) + this.nextChar()) + this.nextChar());
if (_local3 == "false"){
_local1.type = JSONTokenType.FALSE;
_local1.value = false;
this.nextChar();
} else {
this.parseError(("Expecting 'false' but found " + _local3));
};
break;
case "n":
_local4 = ((("n" + this.nextChar()) + this.nextChar()) + this.nextChar());
if (_local4 == "null"){
_local1.type = JSONTokenType.NULL;
_local1.value = null;
this.nextChar();
} else {
this.parseError(("Expecting 'null' but found " + _local4));
};
break;
case "\"":
_local1 = this.readString();
break;
default:
if (((this.isDigit(this.ch)) || ((this.ch == "-")))){
_local1 = this.readNumber();
} else {
if (this.ch == ""){
return (null);
};
this.parseError((("Unexpected " + this.ch) + " encountered"));
};
};
return (_local1);
}
private function readString():JSONToken{
var _local3:String;
var _local4:int;
var _local1:JSONToken = new JSONToken();
_local1.type = JSONTokenType.STRING;
var _local2 = "";
this.nextChar();
while (((!((this.ch == "\""))) && (!((this.ch == ""))))) {
if (this.ch == "\\"){
this.nextChar();
switch (this.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 (!this.isHexDigit(this.nextChar())){
this.parseError((" Excepted a hex digit, but found: " + this.ch));
};
_local3 = (_local3 + this.ch);
_local4++;
};
_local2 = (_local2 + String.fromCharCode(parseInt(_local3, 16)));
break;
default:
_local2 = (_local2 + ("\\" + this.ch));
};
} else {
_local2 = (_local2 + this.ch);
};
this.nextChar();
};
if (this.ch == ""){
this.parseError("Unterminated string literal");
};
this.nextChar();
_local1.value = _local2;
return (_local1);
}
private function readNumber():JSONToken{
var _local1:JSONToken = new JSONToken();
_local1.type = JSONTokenType.NUMBER;
var _local2 = "";
if (this.ch == "-"){
_local2 = (_local2 + "-");
this.nextChar();
};
if (!this.isDigit(this.ch)){
this.parseError("Expecting a digit");
};
if (this.ch == "0"){
_local2 = (_local2 + this.ch);
this.nextChar();
if (this.isDigit(this.ch)){
this.parseError("A digit cannot immediately follow 0");
};
} else {
while (this.isDigit(this.ch)) {
_local2 = (_local2 + this.ch);
this.nextChar();
};
};
if (this.ch == "."){
_local2 = (_local2 + ".");
this.nextChar();
if (!this.isDigit(this.ch)){
this.parseError("Expecting a digit");
};
while (this.isDigit(this.ch)) {
_local2 = (_local2 + this.ch);
this.nextChar();
};
};
if ((((this.ch == "e")) || ((this.ch == "E")))){
_local2 = (_local2 + "e");
this.nextChar();
if ((((this.ch == "+")) || ((this.ch == "-")))){
_local2 = (_local2 + this.ch);
this.nextChar();
};
if (!this.isDigit(this.ch)){
this.parseError("Scientific notation number needs exponent value");
};
while (this.isDigit(this.ch)) {
_local2 = (_local2 + this.ch);
this.nextChar();
};
};
var _local3:Number = Number(_local2);
if (((isFinite(_local3)) && (!(isNaN(_local3))))){
_local1.value = _local3;
return (_local1);
};
this.parseError((("Number " + _local3) + " is not valid!"));
return (null);
}
private function nextChar():String{
return ((this.ch = this.jsonString.charAt(this.loc++)));
}
private function skipIgnored():void{
var _local1:int;
do {
_local1 = this.loc;
this.skipWhite();
this.skipComments();
} while (_local1 != this.loc);
}
private function skipComments():void{
if (this.ch == "/"){
this.nextChar();
switch (this.ch){
case "/":
do {
this.nextChar();
} while (((!((this.ch == "\n"))) && (!((this.ch == "")))));
this.nextChar();
break;
case "*":
this.nextChar();
while (true) {
if (this.ch == "*"){
this.nextChar();
if (this.ch == "/"){
this.nextChar();
break;
};
} else {
this.nextChar();
};
if (this.ch == ""){
this.parseError("Multi-line comment not closed");
};
};
break;
default:
this.parseError((("Unexpected " + this.ch) + " encountered (expecting '/' or '*' )"));
};
};
}
private function skipWhite():void{
while (this.isWhiteSpace(this.ch)) {
this.nextChar();
};
}
private function isWhiteSpace(_arg1:String):Boolean{
return ((((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n")))) || ((_arg1 == "\r"))));
}
private function isDigit(_arg1:String):Boolean{
return ((((_arg1 >= "0")) && ((_arg1 <= "9"))));
}
private function isHexDigit(_arg1:String):Boolean{
var _local2:String = _arg1.toUpperCase();
return (((this.isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F"))))));
}
public function parseError(_arg1:String):void{
throw (new JSONParseError(_arg1, this.loc, this.jsonString));
}
}
}//package com.adobe.serialization.json
Section 61
//JSONTokenType (com.adobe.serialization.json.JSONTokenType)
package com.adobe.serialization.json {
public class JSONTokenType {
public static const UNKNOWN:int = -1;
public static const COMMA:int = 0;
public static const LEFT_BRACE:int = 1;
public static const RIGHT_BRACE:int = 2;
public static const LEFT_BRACKET:int = 3;
public static const RIGHT_BRACKET:int = 4;
public static const COLON:int = 6;
public static const TRUE:int = 7;
public static const FALSE:int = 8;
public static const NULL:int = 9;
public static const STRING:int = 10;
public static const NUMBER:int = 11;
}
}//package com.adobe.serialization.json
Section 62
//ArrayUtil (com.adobe.utils.ArrayUtil)
package com.adobe.utils {
public class ArrayUtil {
public function ArrayUtil(){
super();
}
public static function arraysAreEqual(arr1:Array, arr2:Array):Boolean{
if (arr1.length != arr2.length){
return (false);
};
var len:Number = arr1.length;
var i:Number = 0;
while (i < len) {
if (arr1[i] !== arr2[i]){
return (false);
};
i++;
};
return (true);
}
public static function arrayContainsValue(arr:Array, value:Object):Boolean{
return (!((arr.indexOf(value) == -1)));
}
public static function copyArray(arr:Array):Array{
return (arr.slice());
}
public static function removeValueFromArray(arr:Array, value:Object):void{
var len:uint = arr.length;
var i:Number = len;
while (i > -1) {
if (arr[i] === value){
arr.splice(i, 1);
};
i--;
};
}
public static function createUniqueCopy(a:Array):Array{
var item:Object;
var newArray:Array = new Array();
var len:Number = a.length;
var i:uint;
while (i < len) {
item = a[i];
if (_slot1.arrayContainsValue(newArray, item)){
} else {
newArray.push(item);
};
i++;
};
return (newArray);
}
}
}//package com.adobe.utils
Section 63
//IntUtil (com.adobe.utils.IntUtil)
package com.adobe.utils {
public class IntUtil {
private static var hexChars:String = "0123456789abcdef";
public static function rol(_arg1:int, _arg2:int):int{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
public static function ror(_arg1:int, _arg2:int):uint{
var _local3:int = (32 - _arg2);
return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3))));
}
public static function toHex(_arg1:int, _arg2:Boolean=false):String{
var _local4:int;
var _local5:int;
var _local3 = "";
if (_arg2){
_local4 = 0;
while (_local4 < 4) {
_local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15))));
_local4++;
};
} else {
_local5 = 0;
while (_local5 < 4) {
_local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15))));
_local5++;
};
};
return (_local3);
}
}
}//package com.adobe.utils
Section 64
//NumberFormatter (com.adobe.utils.NumberFormatter)
package com.adobe.utils {
public class NumberFormatter {
public function NumberFormatter(){
super();
}
public static function addLeadingZero(n:Number):String{
var out:String = String(n);
if ((((n < 10)) && ((n > -1)))){
out = ("0" + out);
};
return (out);
}
}
}//package com.adobe.utils
Section 65
//StringUtil (com.adobe.utils.StringUtil)
package com.adobe.utils {
public class StringUtil {
public function StringUtil(){
super();
}
public static function beginsWith(input:String, prefix:String):Boolean{
return ((prefix == input.substring(0, prefix.length)));
}
public static function trim(input:String):String{
return (_slot1.ltrim(_slot1.rtrim(input)));
}
public static function stringsAreEqual(s1:String, s2:String, caseSensitive:Boolean):Boolean{
if (caseSensitive){
return ((s1 == s2));
};
return ((s1.toUpperCase() == s2.toUpperCase()));
}
public static function replace(input:String, replace:String, replaceWith:String):String{
var j:Number;
var sb:String = new String();
var found:Boolean;
var sLen:Number = input.length;
var rLen:Number = replace.length;
var i:Number = 0;
while (i < sLen) {
if (input.charAt(i) == replace.charAt(0)){
found = true;
j = 0;
while (j < rLen) {
if (input.charAt((i + j)) != replace.charAt(j)){
found = false;
break;
};
j++;
};
//unresolved if
sb = (sb + replaceWith);
i = (i + (rLen - 1));
} else {
sb = (sb + input.charAt(i));
};
i++;
};
return (sb);
}
public static function rtrim(input:String):String{
var size:Number = input.length;
var i:Number = size;
while (i > 0) {
if (input.charCodeAt((i - 1)) > 32){
return (input.substring(0, i));
};
i--;
};
return ("");
}
public static function endsWith(input:String, suffix:String):Boolean{
return ((suffix == input.substring((input.length - suffix.length))));
}
public static function stringHasValue(s:String):Boolean{
return (((!((s == null))) && ((s.length > 0))));
}
public static function remove(input:String, remove:String):String{
return (_slot1.replace(input, remove, ""));
}
public static function ltrim(input:String):String{
var size:Number = input.length;
var i:Number = 0;
while (i < size) {
if (input.charCodeAt(i) > 32){
return (input.substring(i));
};
i++;
};
return ("");
}
}
}//package com.adobe.utils
Section 66
//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(target:Object, property:String, start:Number, change:Number, name:String, isPlugin:Boolean, nextNode:PropTween=null, priority:int=0){
super();
this.target = target;
this.property = property;
this.start = start;
this.change = change;
this.name = name;
this.isPlugin = isPlugin;
if (nextNode){
nextNode.prevNode = this;
this.nextNode = nextNode;
};
this.priority = priority;
}
}
}//package com.greensock.core
Section 67
//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(vars:Object=null){
super(0, vars);
}
override public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
var dur:Number;
var next:TweenCore;
var tween:TweenCore = _firstChild;
this.cachedTotalTime = time;
this.cachedTime = time;
while (tween) {
next = tween.nextNode;
if (((tween.active) || ((((((time >= tween.cachedStartTime)) && (!(tween.cachedPaused)))) && (!(tween.gc)))))){
if (!tween.cachedReversed){
tween.renderTime(((time - tween.cachedStartTime) * tween.cachedTimeScale), suppressEvents, false);
} else {
dur = (tween.cacheIsDirty) ? tween.totalDuration : tween.cachedTotalDuration;
tween.renderTime((dur - ((time - tween.cachedStartTime) * tween.cachedTimeScale)), suppressEvents, false);
};
};
tween = next;
};
}
public function addChild(tween:TweenCore):void{
if (((!(tween.gc)) && (tween.timeline))){
tween.timeline.remove(tween, true);
};
tween.timeline = this;
if (tween.gc){
tween.setEnabled(true, true);
};
if (_firstChild){
_firstChild.prevNode = tween;
};
tween.nextNode = _firstChild;
_firstChild = tween;
tween.prevNode = null;
}
public function remove(tween:TweenCore, skipDisable:Boolean=false):void{
if (tween.gc){
return;
};
if (!skipDisable){
tween.setEnabled(false, true);
};
if (tween.nextNode){
tween.nextNode.prevNode = tween.prevNode;
} else {
if (_lastChild == tween){
_lastChild = tween.prevNode;
};
};
if (tween.prevNode){
tween.prevNode.nextNode = tween.nextNode;
} else {
if (_firstChild == tween){
_firstChild = tween.nextNode;
};
};
}
public function get rawTime():Number{
return (this.cachedTotalTime);
}
}
}//package com.greensock.core
Section 68
//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 cachedTime:Number;
public var cachedReversed:Boolean;
public var nextNode:TweenCore;
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;
protected var _pauseTime:Number;
public var cacheIsDirty:Boolean;
public var cachedPaused:Boolean;
public var cachedTimeScale:Number;
public var cachedTotalDuration:Number;
public static const version:Number = 1.13;
protected static var _classInitted:Boolean;
public function TweenCore(duration:Number=0, vars:Object=null){
super();
this.vars = ((vars) || ({}));
this.cachedDuration = (this.cachedTotalDuration = ((duration) || (0)));
_delay = ((this.vars.delay) || (0));
this.cachedTimeScale = ((this.vars.timeScale) || (1));
this.active = Boolean((((((duration == 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 tl:SimpleTimeline = ((this.vars.timeline is SimpleTimeline)) ? this.vars.timeline : (this.vars.useFrames) ? TweenLite.rootFramesTimeline : TweenLite.rootTimeline;
this.cachedStartTime = (tl.cachedTotalTime + _delay);
tl.addChild(this);
if (this.vars.reversed){
this.cachedReversed = true;
};
if (this.vars.paused){
this.paused = true;
};
}
public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
}
public function get delay():Number{
return (_delay);
}
public function get duration():Number{
return (this.cachedDuration);
}
public function restart(includeDelay:Boolean=false, suppressEvents:Boolean=true):void{
this.reversed = false;
this.paused = false;
this.setTotalTime((includeDelay) ? -(_delay) : 0, suppressEvents);
}
public function set reversed(b:Boolean):void{
if (b != this.cachedReversed){
this.cachedReversed = b;
setTotalTime(this.cachedTotalTime, true);
};
}
public function set startTime(n:Number):void{
var adjust:Boolean = Boolean(((!((this.timeline == null))) && (((!((n == this.cachedStartTime))) || (this.gc)))));
this.cachedStartTime = n;
if (adjust){
this.timeline.addChild(this);
};
}
public function set delay(n:Number):void{
this.startTime = (this.startTime + (n - _delay));
_delay = n;
}
public function resume():void{
this.paused = false;
}
public function get paused():Boolean{
return (this.cachedPaused);
}
public function play():void{
this.reversed = false;
this.paused = false;
}
public function set duration(n:Number):void{
this.cachedDuration = (this.cachedTotalDuration = n);
setDirtyCache(false);
}
public function complete(skipRender:Boolean=false, suppressEvents:Boolean=false):void{
if (!skipRender){
renderTime(this.cachedTotalDuration, suppressEvents, false);
return;
};
if (this.timeline.autoRemoveChildren){
this.setEnabled(false, false);
} else {
this.active = false;
};
if (!suppressEvents){
if (((((this.vars.onComplete) && ((this.cachedTotalTime == this.cachedTotalDuration)))) && (!(this.cachedReversed)))){
this.vars.onComplete.apply(null, this.vars.onCompleteParams);
} else {
if (((((this.cachedReversed) && ((this.cachedTotalTime == 0)))) && (this.vars.onReverseComplete))){
this.vars.onReverseComplete.apply(null, this.vars.onReverseCompleteParams);
};
};
};
}
public function invalidate():void{
}
public function get totalTime():Number{
return (this.cachedTotalTime);
}
public function get reversed():Boolean{
return (this.cachedReversed);
}
public function get startTime():Number{
return (this.cachedStartTime);
}
public function set currentTime(n:Number):void{
setTotalTime(n, false);
}
protected function setDirtyCache(includeSelf:Boolean=true):void{
var tween:TweenCore = (includeSelf) ? this : this.timeline;
while (tween) {
tween.cacheIsDirty = true;
tween = tween.timeline;
};
}
public function reverse(forceResume:Boolean=true):void{
this.reversed = true;
if (forceResume){
this.paused = false;
} else {
if (this.gc){
this.setEnabled(true, false);
};
};
}
public function set paused(b:Boolean):void{
if (((!((b == this.cachedPaused))) && (this.timeline))){
if (b){
_pauseTime = this.timeline.rawTime;
} else {
this.cachedStartTime = (this.cachedStartTime + (this.timeline.rawTime - _pauseTime));
_pauseTime = NaN;
setDirtyCache(false);
};
this.cachedPaused = b;
this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration))));
};
if (((!(b)) && (this.gc))){
this.setTotalTime(this.cachedTotalTime, false);
this.setEnabled(true, false);
};
}
public function kill():void{
setEnabled(false, false);
}
public function set totalTime(n:Number):void{
setTotalTime(n, false);
}
public function get currentTime():Number{
return (this.cachedTime);
}
protected function setTotalTime(time:Number, suppressEvents:Boolean=false):void{
var tlTime:Number;
var dur:Number;
if (this.timeline){
tlTime = (((_pauseTime) || ((_pauseTime == 0)))) ? _pauseTime : this.timeline.cachedTotalTime;
if (this.cachedReversed){
dur = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration;
this.cachedStartTime = (tlTime - ((dur - time) / this.cachedTimeScale));
} else {
this.cachedStartTime = (tlTime - (time / this.cachedTimeScale));
};
if (!this.timeline.cacheIsDirty){
setDirtyCache(false);
};
if (this.cachedTotalTime != time){
renderTime(time, suppressEvents, false);
};
};
}
public function pause():void{
this.paused = true;
}
public function set totalDuration(n:Number):void{
this.duration = n;
}
public function get totalDuration():Number{
return (this.cachedTotalDuration);
}
public function setEnabled(enabled:Boolean, ignoreTimeline:Boolean=false):Boolean{
if (enabled){
this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration))));
if (((!(ignoreTimeline)) && (this.gc))){
this.timeline.addChild(this);
};
} else {
this.active = false;
if (!ignoreTimeline){
this.timeline.remove(this, true);
};
};
this.gc = !(enabled);
return (false);
}
}
}//package com.greensock.core
Section 69
//Back (com.greensock.easing.Back)
package com.greensock.easing {
public class Back {
public function Back(){
super();
}
public static function easeOut(t:Number, b:Number, c:Number, d:Number, s:Number=1.70158):Number{
t = ((t / d) - 1);
return (((c * (((t * t) * (((s + 1) * t) + s)) + 1)) + b));
}
public static function easeIn(t:Number, b:Number, c:Number, d:Number, s:Number=1.70158):Number{
t = (t / d);
return (((((c * t) * t) * (((s + 1) * t) - s)) + b));
}
public static function easeInOut(t:Number, b:Number, c:Number, d:Number, s:Number=1.70158):Number{
t = (t / (d * 0.5));
if (t < 1){
s = (s * 1.525);
return ((((c * 0.5) * ((t * t) * (((s + 1) * t) - s))) + b));
};
t = (t - 2);
s = (s * 1.525);
return ((((c / 2) * (((t * t) * (((s + 1) * t) + s)) + 2)) + b));
}
}
}//package com.greensock.easing
Section 70
//Cubic (com.greensock.easing.Cubic)
package com.greensock.easing {
public class Cubic {
public static const power:uint = 2;
public function Cubic(){
super();
}
public static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{
t = ((t / d) - 1);
return (((c * (((t * t) * t) + 1)) + b));
}
public static function easeIn(t:Number, b:Number, c:Number, d:Number):Number{
t = (t / d);
return (((((c * t) * t) * t) + b));
}
public static function easeInOut(t:Number, b:Number, c:Number, d:Number):Number{
t = (t / (d * 0.5));
if (t < 1){
return ((((((c * 0.5) * t) * t) * t) + b));
};
t = (t - 2);
return ((((c * 0.5) * (((t * t) * t) + 2)) + b));
}
}
}//package com.greensock.easing
Section 71
//Linear (com.greensock.easing.Linear)
package com.greensock.easing {
public class Linear {
public static const power:uint = 0;
public function Linear(){
super();
}
public static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{
return ((((c * t) / d) + b));
}
public static function easeIn(t:Number, b:Number, c:Number, d:Number):Number{
return ((((c * t) / d) + b));
}
public static function easeNone(t:Number, b:Number, c:Number, d:Number):Number{
return ((((c * t) / d) + b));
}
public static function easeInOut(t:Number, b:Number, c:Number, d:Number):Number{
return ((((c * t) / d) + b));
}
}
}//package com.greensock.easing
Section 72
//Quad (com.greensock.easing.Quad)
package com.greensock.easing {
public class Quad {
public static const power:uint = 1;
public function Quad(){
super();
}
public static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{
t = (t / d);
return ((((-(c) * t) * (t - 2)) + b));
}
public static function easeIn(t:Number, b:Number, c:Number, d:Number):Number{
t = (t / d);
return ((((c * t) * t) + b));
}
public static function easeInOut(t:Number, b:Number, c:Number, d:Number):Number{
t = (t / (d * 0.5));
if (t < 1){
return (((((c * 0.5) * t) * t) + b));
};
--t;
return ((((-(c) * 0.5) * ((t * (t - 2)) - 1)) + b));
}
}
}//package com.greensock.easing
Section 73
//Sine (com.greensock.easing.Sine)
package com.greensock.easing {
public class Sine {
private static const _HALF_PI:Number = (Math.PI * 0.5);
public function Sine(){
super();
}
public static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{
return (((c * Math.sin(((t / d) * _HALF_PI))) + b));
}
public static function easeIn(t:Number, b:Number, c:Number, d:Number):Number{
return ((((-(c) * Math.cos(((t / d) * _HALF_PI))) + c) + b));
}
public static function easeInOut(t:Number, b:Number, c:Number, d:Number):Number{
return ((((-(c) * 0.5) * (Math.cos(((Math.PI * t) / d)) - 1)) + b));
}
}
}//package com.greensock.easing
Section 74
//TweenEvent (com.greensock.events.TweenEvent)
package com.greensock.events {
import flash.events.*;
public class TweenEvent extends Event {
public static const COMPLETE:String = "complete";
public static const START:String = "init";
public static const UPDATE:String = "change";
public static const REVERSE_COMPLETE:String = "reverseComplete";
public static const VERSION:Number = 1;
public static const REPEAT:String = "repeat";
public function TweenEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){
super(type, bubbles, cancelable);
}
override public function clone():Event{
return (new TweenEvent(this.type, this.bubbles, this.cancelable));
}
}
}//package com.greensock.events
Section 75
//AutoAlphaPlugin (com.greensock.plugins.AutoAlphaPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class AutoAlphaPlugin extends TweenPlugin {
protected var _target:Object;
protected var _ignoreVisible:Boolean;
public static const API:Number = 1;
public function AutoAlphaPlugin(){
super();
this.propName = "autoAlpha";
this.overwriteProps = ["alpha", "visible"];
}
override public function killProps(lookup:Object):void{
super.killProps(lookup);
_ignoreVisible = Boolean(("visible" in lookup));
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
addTween(target, "alpha", target.alpha, value, "alpha");
return (true);
}
override public function set changeFactor(n:Number):void{
updateTweens(n);
if (!_ignoreVisible){
_target.visible = Boolean(!((_target.alpha == 0)));
};
}
}
}//package com.greensock.plugins
Section 76
//BevelFilterPlugin (com.greensock.plugins.BevelFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class BevelFilterPlugin extends FilterPlugin {
public static const API:Number = 1;
private static var _propNames:Array = ["distance", "angle", "highlightColor", "highlightAlpha", "shadowColor", "shadowAlpha", "blurX", "blurY", "strength", "quality"];
public function BevelFilterPlugin(){
super();
this.propName = "bevelFilter";
this.overwriteProps = ["bevelFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = BevelFilter;
initFilter(value, new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0, 0.5, 2, 2, 0, ((value.quality) || (2))), _propNames);
return (true);
}
}
}//package com.greensock.plugins
Section 77
//BezierPlugin (com.greensock.plugins.BezierPlugin)
package com.greensock.plugins {
import com.greensock.*;
import com.greensock.core.*;
public class BezierPlugin extends TweenPlugin {
protected var _future:Object;
protected var _orient:Boolean;
protected var _orientData:Array;
protected var _target:Object;
protected var _beziers:Object;
public static const API:Number = 1;
protected static const _RAD2DEG:Number = 57.2957795130823;
public function BezierPlugin(){
_future = {};
super();
this.propName = "bezier";
this.overwriteProps = [];
}
override public function killProps(lookup:Object):void{
var p:String;
for (p in _beziers) {
if ((p in lookup)){
delete _beziers[p];
};
};
super.killProps(lookup);
}
protected function init(tween:TweenLite, beziers:Array, through:Boolean):void{
var i:int;
var p:String;
var killVarsLookup:Object;
_target = tween.target;
var enumerables:Object = ((tween.vars.isTV)==true) ? tween.vars.exposedVars : tween.vars;
if (enumerables.orientToBezier == true){
_orientData = [["x", "y", "rotation", 0, 0.01]];
_orient = true;
} else {
if ((enumerables.orientToBezier is Array)){
_orientData = enumerables.orientToBezier;
_orient = true;
};
};
var props:Object = {};
i = 0;
while (i < beziers.length) {
for (p in beziers[i]) {
if (props[p] == undefined){
props[p] = [tween.target[p]];
};
if (typeof(beziers[i][p]) == "number"){
props[p].push(beziers[i][p]);
} else {
props[p].push((tween.target[p] + Number(beziers[i][p])));
};
};
i++;
};
for (p in props) {
this.overwriteProps[this.overwriteProps.length] = p;
if (enumerables[p] != undefined){
if (typeof(enumerables[p]) == "number"){
props[p].push(enumerables[p]);
} else {
props[p].push((tween.target[p] + Number(enumerables[p])));
};
killVarsLookup = {};
killVarsLookup[p] = true;
tween.killVars(killVarsLookup, false);
delete enumerables[p];
};
};
_beziers = parseBeziers(props, through);
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (!(value is Array)){
return (false);
};
init(tween, (value as Array), false);
return (true);
}
override public function set changeFactor(n:Number):void{
var i:int;
var p:String;
var b:Object;
var t:Number;
var segments:uint;
var val:Number;
var curVals:Object;
var dx:Number;
var dy:Number;
var cotb:Array;
var toAdd:Number;
var oldTarget:Object;
var oldRound:Boolean;
if (n == 1){
for (p in _beziers) {
i = (_beziers[p].length - 1);
_target[p] = _beziers[p][i][2];
};
} else {
for (p in _beziers) {
segments = _beziers[p].length;
if (n < 0){
i = 0;
} else {
if (n >= 1){
i = (segments - 1);
} else {
i = int((segments * n));
};
};
t = ((n - (i * (1 / segments))) * segments);
b = _beziers[p][i];
if (this.round){
val = (b[0] + (t * (((2 * (1 - t)) * (b[1] - b[0])) + (t * (b[2] - b[0])))));
_target[p] = ((val)>0) ? int((val + 0.5)) : int((val - 0.5));
} else {
_target[p] = (b[0] + (t * (((2 * (1 - t)) * (b[1] - b[0])) + (t * (b[2] - b[0])))));
};
};
};
if (_orient){
i = _orientData.length;
curVals = {};
while (i--) {
cotb = _orientData[i];
curVals[cotb[0]] = _target[cotb[0]];
curVals[cotb[1]] = _target[cotb[1]];
};
oldTarget = _target;
oldRound = this.round;
_target = _future;
this.round = false;
_orient = false;
i = _orientData.length;
while (i--) {
cotb = _orientData[i];
this.changeFactor = (n + ((cotb[4]) || (0.01)));
toAdd = ((cotb[3]) || (0));
dx = (_future[cotb[0]] - curVals[cotb[0]]);
dy = (_future[cotb[1]] - curVals[cotb[1]]);
oldTarget[cotb[2]] = ((Math.atan2(dy, dx) * _RAD2DEG) + toAdd);
};
_target = oldTarget;
this.round = oldRound;
_orient = true;
};
}
public static function parseBeziers(props:Object, through:Boolean=false):Object{
var i:int;
var a:Array;
var b:Object;
var p:String;
var all:Object = {};
if (through){
for (p in props) {
a = props[p];
b = [];
all[p] = b;
if (a.length > 2){
b[b.length] = [a[0], (a[1] - ((a[2] - a[0]) / 4)), a[1]];
i = 1;
while (i < (a.length - 1)) {
b[b.length] = [a[i], (a[i] + (a[i] - b[(i - 1)][1])), a[(i + 1)]];
i++;
};
} else {
b[b.length] = [a[0], ((a[0] + a[1]) / 2), a[1]];
};
};
} else {
for (p in props) {
a = props[p];
b = [];
all[p] = b;
if (a.length > 3){
b[b.length] = [a[0], a[1], ((a[1] + a[2]) / 2)];
i = 2;
while (i < (a.length - 2)) {
b[b.length] = [b[(i - 2)][2], a[i], ((a[i] + a[(i + 1)]) / 2)];
i++;
};
b[b.length] = [b[(b.length - 1)][2], a[(a.length - 2)], a[(a.length - 1)]];
} else {
if (a.length == 3){
b[b.length] = [a[0], a[1], a[2]];
} else {
if (a.length == 2){
b[b.length] = [a[0], ((a[0] + a[1]) / 2), a[1]];
};
};
};
};
};
return (all);
}
}
}//package com.greensock.plugins
Section 78
//BezierThroughPlugin (com.greensock.plugins.BezierThroughPlugin)
package com.greensock.plugins {
import com.greensock.*;
public class BezierThroughPlugin extends BezierPlugin {
public static const API:Number = 1;
public function BezierThroughPlugin(){
super();
this.propName = "bezierThrough";
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (!(value is Array)){
return (false);
};
init(tween, (value as Array), true);
return (true);
}
}
}//package com.greensock.plugins
Section 79
//BlurFilterPlugin (com.greensock.plugins.BlurFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class BlurFilterPlugin extends FilterPlugin {
public static const API:Number = 1;
private static var _propNames:Array = ["blurX", "blurY", "quality"];
public function BlurFilterPlugin(){
super();
this.propName = "blurFilter";
this.overwriteProps = ["blurFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = BlurFilter;
initFilter(value, new BlurFilter(0, 0, ((value.quality) || (2))), _propNames);
return (true);
}
}
}//package com.greensock.plugins
Section 80
//ColorMatrixFilterPlugin (com.greensock.plugins.ColorMatrixFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class ColorMatrixFilterPlugin extends FilterPlugin {
protected var _matrix:Array;
protected var _matrixTween:EndArrayPlugin;
public static const API:Number = 1;
private static var _propNames:Array = [];
protected static var _lumG:Number = 0.71516;
protected static var _lumR:Number = 0.212671;
protected static var _idMatrix:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
protected static var _lumB:Number = 0.072169;
public function ColorMatrixFilterPlugin(){
super();
this.propName = "colorMatrixFilter";
this.overwriteProps = ["colorMatrixFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = ColorMatrixFilter;
var cmf:Object = value;
initFilter({remove:value.remove, index:value.index, addFilter:value.addFilter}, new ColorMatrixFilter(_idMatrix.slice()), _propNames);
_matrix = ColorMatrixFilter(_filter).matrix;
var endMatrix:Array = [];
if (((!((cmf.matrix == null))) && ((cmf.matrix is Array)))){
endMatrix = cmf.matrix;
} else {
if (cmf.relative == true){
endMatrix = _matrix.slice();
} else {
endMatrix = _idMatrix.slice();
};
endMatrix = setBrightness(endMatrix, cmf.brightness);
endMatrix = setContrast(endMatrix, cmf.contrast);
endMatrix = setHue(endMatrix, cmf.hue);
endMatrix = setSaturation(endMatrix, cmf.saturation);
endMatrix = setThreshold(endMatrix, cmf.threshold);
if (!isNaN(cmf.colorize)){
endMatrix = colorize(endMatrix, cmf.colorize, cmf.amount);
};
};
_matrixTween = new EndArrayPlugin();
_matrixTween.init(_matrix, endMatrix);
return (true);
}
override public function set changeFactor(n:Number):void{
_matrixTween.changeFactor = n;
ColorMatrixFilter(_filter).matrix = _matrix;
super.changeFactor = n;
}
public static function setSaturation(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
var inv:Number = (1 - n);
var r:Number = (inv * _lumR);
var g:Number = (inv * _lumG);
var b:Number = (inv * _lumB);
var temp:Array = [(r + n), g, b, 0, 0, r, (g + n), b, 0, 0, r, g, (b + n), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(temp, m));
}
public static function setHue(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
n = (n * (Math.PI / 180));
var c:Number = Math.cos(n);
var s:Number = Math.sin(n);
var temp:Array = [((_lumR + (c * (1 - _lumR))) + (s * -(_lumR))), ((_lumG + (c * -(_lumG))) + (s * -(_lumG))), ((_lumB + (c * -(_lumB))) + (s * (1 - _lumB))), 0, 0, ((_lumR + (c * -(_lumR))) + (s * 0.143)), ((_lumG + (c * (1 - _lumG))) + (s * 0.14)), ((_lumB + (c * -(_lumB))) + (s * -0.283)), 0, 0, ((_lumR + (c * -(_lumR))) + (s * -((1 - _lumR)))), ((_lumG + (c * -(_lumG))) + (s * _lumG)), ((_lumB + (c * (1 - _lumB))) + (s * _lumB)), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
return (applyMatrix(temp, m));
}
public static function setContrast(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
n = (n + 0.01);
var temp:Array = [n, 0, 0, 0, (128 * (1 - n)), 0, n, 0, 0, (128 * (1 - n)), 0, 0, n, 0, (128 * (1 - n)), 0, 0, 0, 1, 0];
return (applyMatrix(temp, m));
}
public static function applyMatrix(m:Array, m2:Array):Array{
var y:int;
var x:int;
if (((!((m is Array))) || (!((m2 is Array))))){
return (m2);
};
var temp:Array = [];
var i:int;
var z:int;
y = 0;
while (y < 4) {
x = 0;
while (x < 5) {
if (x == 4){
z = m[(i + 4)];
} else {
z = 0;
};
temp[(i + x)] = (((((m[i] * m2[x]) + (m[(i + 1)] * m2[(x + 5)])) + (m[(i + 2)] * m2[(x + 10)])) + (m[(i + 3)] * m2[(x + 15)])) + z);
x++;
};
i = (i + 5);
y++;
};
return (temp);
}
public static function setThreshold(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
var temp:Array = [(_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * n), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * n), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * n), 0, 0, 0, 1, 0];
return (applyMatrix(temp, m));
}
public static function colorize(m:Array, color:Number, amount:Number=1):Array{
if (isNaN(color)){
return (m);
};
if (isNaN(amount)){
amount = 1;
};
var r:Number = (((color >> 16) & 0xFF) / 0xFF);
var g:Number = (((color >> 8) & 0xFF) / 0xFF);
var b:Number = ((color & 0xFF) / 0xFF);
var inv:Number = (1 - amount);
var temp:Array = [(inv + ((amount * r) * _lumR)), ((amount * r) * _lumG), ((amount * r) * _lumB), 0, 0, ((amount * g) * _lumR), (inv + ((amount * g) * _lumG)), ((amount * g) * _lumB), 0, 0, ((amount * b) * _lumR), ((amount * b) * _lumG), (inv + ((amount * b) * _lumB)), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(temp, m));
}
public static function setBrightness(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
n = ((n * 100) - 100);
return (applyMatrix([1, 0, 0, 0, n, 0, 1, 0, 0, n, 0, 0, 1, 0, n, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], m));
}
}
}//package com.greensock.plugins
Section 81
//ColorTransformPlugin (com.greensock.plugins.ColorTransformPlugin)
package com.greensock.plugins {
import flash.display.*;
import flash.geom.*;
import com.greensock.*;
public class ColorTransformPlugin extends TintPlugin {
public static const API:Number = 1;
public function ColorTransformPlugin(){
super();
this.propName = "colorTransform";
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
var p:String;
var ratio:Number;
if (!(target is DisplayObject)){
return (false);
};
var end:ColorTransform = target.transform.colorTransform;
for (p in value) {
if ((((p == "tint")) || ((p == "color")))){
if (value[p] != null){
end.color = int(value[p]);
};
} else {
if ((((((p == "tintAmount")) || ((p == "exposure")))) || ((p == "brightness")))){
} else {
end[p] = value[p];
};
};
};
if (!isNaN(value.tintAmount)){
ratio = (value.tintAmount / (1 - (((end.redMultiplier + end.greenMultiplier) + end.blueMultiplier) / 3)));
end.redOffset = (end.redOffset * ratio);
end.greenOffset = (end.greenOffset * ratio);
end.blueOffset = (end.blueOffset * ratio);
end.redMultiplier = (end.greenMultiplier = (end.blueMultiplier = (1 - value.tintAmount)));
} else {
if (!isNaN(value.exposure)){
end.redOffset = (end.greenOffset = (end.blueOffset = (0xFF * (value.exposure - 1))));
end.redMultiplier = (end.greenMultiplier = (end.blueMultiplier = 1));
} else {
if (!isNaN(value.brightness)){
end.redOffset = (end.greenOffset = (end.blueOffset = Math.max(0, ((value.brightness - 1) * 0xFF))));
end.redMultiplier = (end.greenMultiplier = (end.blueMultiplier = (1 - Math.abs((value.brightness - 1)))));
};
};
};
_ignoreAlpha = Boolean(((!((tween.vars.alpha == undefined))) && ((value.alphaMultiplier == undefined))));
init((target as DisplayObject), end);
return (true);
}
}
}//package com.greensock.plugins
Section 82
//DropShadowFilterPlugin (com.greensock.plugins.DropShadowFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class DropShadowFilterPlugin extends FilterPlugin {
public static const API:Number = 1;
private static var _propNames:Array = ["distance", "angle", "color", "alpha", "blurX", "blurY", "strength", "quality", "inner", "knockout", "hideObject"];
public function DropShadowFilterPlugin(){
super();
this.propName = "dropShadowFilter";
this.overwriteProps = ["dropShadowFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = DropShadowFilter;
initFilter(value, new DropShadowFilter(0, 45, 0, 0, 0, 0, 1, ((value.quality) || (2)), value.inner, value.knockout, value.hideObject), _propNames);
return (true);
}
}
}//package com.greensock.plugins
Section 83
//EndArrayPlugin (com.greensock.plugins.EndArrayPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class EndArrayPlugin extends TweenPlugin {
protected var _a:Array;
protected var _info:Array;
public static const API:Number = 1;
public function EndArrayPlugin(){
_info = [];
super();
this.propName = "endArray";
this.overwriteProps = ["endArray"];
}
public function init(start:Array, end:Array):void{
_a = start;
var i:int = end.length;
while (i--) {
if (((!((start[i] == end[i]))) && (!((start[i] == null))))){
_info[_info.length] = new ArrayTweenInfo(i, _a[i], (end[i] - _a[i]));
};
};
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (((!((target is Array))) || (!((value is Array))))){
return (false);
};
init((target as Array), value);
return (true);
}
override public function set changeFactor(n:Number):void{
var ti:ArrayTweenInfo;
var val:Number;
var i:int = _info.length;
if (this.round){
while (i--) {
ti = _info[i];
val = (ti.start + (ti.change * n));
_a[ti.index] = ((val)>0) ? int((val + 0.5)) : int((val - 0.5));
};
} else {
while (i--) {
ti = _info[i];
_a[ti.index] = (ti.start + (ti.change * n));
};
};
}
}
}//package com.greensock.plugins
class ArrayTweenInfo {
public var change:Number;
public var start:Number;
public var index:uint;
private function ArrayTweenInfo(index:uint, start:Number, change:Number){
super();
this.index = index;
this.start = start;
this.change = change;
}
}
Section 84
//FilterPlugin (com.greensock.plugins.FilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import com.greensock.core.*;
import flash.filters.*;
public class FilterPlugin extends TweenPlugin {
protected var _remove:Boolean;
protected var _target:Object;
protected var _index:int;
protected var _filter:BitmapFilter;
protected var _type:Class;
public static const VERSION:Number = 2.03;
public static const API:Number = 1;
public function FilterPlugin(){
super();
}
public function onCompleteTween():void{
var filters:Array;
var i:int;
if (_remove){
filters = _target.filters;
if (!(filters[_index] is _type)){
i = filters.length;
while (i--) {
if ((filters[i] is _type)){
filters.splice(i, 1);
break;
};
};
} else {
filters.splice(_index, 1);
};
_target.filters = filters;
};
}
protected function initFilter(props:Object, defaultFilter:BitmapFilter, propNames:Array):void{
var p:String;
var i:int;
var colorTween:HexColorsPlugin;
var filters:Array = _target.filters;
var extras:Object = ((props is BitmapFilter)) ? {} : props;
_index = -1;
if (extras.index != null){
_index = extras.index;
} else {
i = filters.length;
while (i--) {
if ((filters[i] is _type)){
_index = i;
break;
};
};
};
if ((((((_index == -1)) || ((filters[_index] == null)))) || ((extras.addFilter == true)))){
_index = ((extras.index)!=null) ? extras.index : filters.length;
filters[_index] = defaultFilter;
_target.filters = filters;
};
_filter = filters[_index];
if (extras.remove == true){
_remove = true;
this.onComplete = onCompleteTween;
};
i = propNames.length;
while (i--) {
p = propNames[i];
if ((((p in props)) && (!((_filter[p] == props[p]))))){
if ((((((p == "color")) || ((p == "highlightColor")))) || ((p == "shadowColor")))){
colorTween = new HexColorsPlugin();
colorTween.initColor(_filter, p, _filter[p], props[p]);
_tweens[_tweens.length] = new PropTween(colorTween, "changeFactor", 0, 1, p, false);
} else {
if ((((((((p == "quality")) || ((p == "inner")))) || ((p == "knockout")))) || ((p == "hideObject")))){
_filter[p] = props[p];
} else {
addTween(_filter, p, _filter[p], props[p], p);
};
};
};
};
}
override public function set changeFactor(n:Number):void{
var ti:PropTween;
var i:int = _tweens.length;
var filters:Array = _target.filters;
while (i--) {
ti = _tweens[i];
ti.target[ti.property] = (ti.start + (ti.change * n));
};
if (!(filters[_index] is _type)){
i = (_index = filters.length);
while (i--) {
if ((filters[i] is _type)){
_index = i;
break;
};
};
};
filters[_index] = _filter;
_target.filters = filters;
}
}
}//package com.greensock.plugins
Section 85
//FrameLabelPlugin (com.greensock.plugins.FrameLabelPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class FrameLabelPlugin extends FramePlugin {
public static const API:Number = 1;
public function FrameLabelPlugin(){
super();
this.propName = "frameLabel";
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if ((!(tween.target) is MovieClip)){
return (false);
};
_target = (target as MovieClip);
this.frame = _target.currentFrame;
var labels:Array = _target.currentLabels;
var label:String = value;
var endFrame:int = _target.currentFrame;
var i:int = labels.length;
while (i--) {
if (labels[i].name == label){
endFrame = labels[i].frame;
break;
};
};
if (this.frame != endFrame){
addTween(this, "frame", this.frame, endFrame, "frame");
};
return (true);
}
}
}//package com.greensock.plugins
Section 86
//FramePlugin (com.greensock.plugins.FramePlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class FramePlugin extends TweenPlugin {
protected var _target:MovieClip;
public var frame:int;
public static const API:Number = 1;
public function FramePlugin(){
super();
this.propName = "frame";
this.overwriteProps = ["frame", "frameLabel"];
this.round = true;
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (((!((target is MovieClip))) || (isNaN(value)))){
return (false);
};
_target = (target as MovieClip);
this.frame = _target.currentFrame;
addTween(this, "frame", this.frame, value, "frame");
return (true);
}
override public function set changeFactor(n:Number):void{
updateTweens(n);
_target.gotoAndStop(this.frame);
}
}
}//package com.greensock.plugins
Section 87
//GlowFilterPlugin (com.greensock.plugins.GlowFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class GlowFilterPlugin extends FilterPlugin {
public static const API:Number = 1;
private static var _propNames:Array = ["color", "alpha", "blurX", "blurY", "strength", "quality", "inner", "knockout"];
public function GlowFilterPlugin(){
super();
this.propName = "glowFilter";
this.overwriteProps = ["glowFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = GlowFilter;
initFilter(value, new GlowFilter(0xFFFFFF, 0, 0, 0, ((value.strength) || (1)), ((value.quality) || (2)), value.inner, value.knockout), _propNames);
return (true);
}
}
}//package com.greensock.plugins
Section 88
//HexColorsPlugin (com.greensock.plugins.HexColorsPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class HexColorsPlugin extends TweenPlugin {
protected var _colors:Array;
public static const API:Number = 1;
public function HexColorsPlugin(){
super();
this.propName = "hexColors";
this.overwriteProps = [];
_colors = [];
}
override public function killProps(lookup:Object):void{
var i:int = (_colors.length - 1);
while (i > -1) {
if (lookup[_colors[i][1]] != undefined){
_colors.splice(i, 1);
};
i--;
};
super.killProps(lookup);
}
public function initColor(target:Object, propName:String, start:uint, end:uint):void{
var r:Number;
var g:Number;
var b:Number;
if (start != end){
r = (start >> 16);
g = ((start >> 8) & 0xFF);
b = (start & 0xFF);
_colors[_colors.length] = [target, propName, r, ((end >> 16) - r), g, (((end >> 8) & 0xFF) - g), b, ((end & 0xFF) - b)];
this.overwriteProps[this.overwriteProps.length] = propName;
};
}
override public function set changeFactor(n:Number):void{
var i:int;
var a:Array;
i = (_colors.length - 1);
while (i > -1) {
a = _colors[i];
a[0][a[1]] = ((((a[2] + (n * a[3])) << 16) | ((a[4] + (n * a[5])) << 8)) | (a[6] + (n * a[7])));
i--;
};
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
var p:String;
for (p in value) {
initColor(target, p, uint(target[p]), uint(value[p]));
};
return (true);
}
}
}//package com.greensock.plugins
Section 89
//RemoveTintPlugin (com.greensock.plugins.RemoveTintPlugin)
package com.greensock.plugins {
public class RemoveTintPlugin extends TintPlugin {
public static const API:Number = 1;
public function RemoveTintPlugin(){
super();
this.propName = "removeTint";
}
}
}//package com.greensock.plugins
Section 90
//RoundPropsPlugin (com.greensock.plugins.RoundPropsPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class RoundPropsPlugin extends TweenPlugin {
public static const API:Number = 1;
public function RoundPropsPlugin(){
super();
this.propName = "roundProps";
this.overwriteProps = [];
this.round = true;
}
public function add(object:Object, propName:String, start:Number, change:Number):void{
addTween(object, propName, start, (start + change), propName);
this.overwriteProps[this.overwriteProps.length] = propName;
}
}
}//package com.greensock.plugins
Section 91
//ShortRotationPlugin (com.greensock.plugins.ShortRotationPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class ShortRotationPlugin extends TweenPlugin {
public static const API:Number = 1;
public function ShortRotationPlugin(){
super();
this.propName = "shortRotation";
this.overwriteProps = [];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
var p:String;
if (typeof(value) == "number"){
return (false);
};
for (p in value) {
initRotation(target, p, target[p], ((typeof(value[p]))=="number") ? Number(value[p]) : (target[p] + Number(value[p])));
};
return (true);
}
public function initRotation(target:Object, propName:String, start:Number, end:Number):void{
var dif:Number = ((end - start) % 360);
if (dif != (dif % 180)){
dif = ((dif)<0) ? (dif + 360) : (dif - 360);
};
addTween(target, propName, start, (start + dif), propName);
this.overwriteProps[this.overwriteProps.length] = propName;
}
}
}//package com.greensock.plugins
Section 92
//TintPlugin (com.greensock.plugins.TintPlugin)
package com.greensock.plugins {
import flash.display.*;
import flash.geom.*;
import com.greensock.*;
import com.greensock.core.*;
public class TintPlugin extends TweenPlugin {
protected var _ct:ColorTransform;
protected var _transform:Transform;
protected var _ignoreAlpha:Boolean;
public static const API:Number = 1;
protected static var _props:Array = ["redMultiplier", "greenMultiplier", "blueMultiplier", "alphaMultiplier", "redOffset", "greenOffset", "blueOffset", "alphaOffset"];
public function TintPlugin(){
super();
this.propName = "tint";
this.overwriteProps = ["tint"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (!(target is DisplayObject)){
return (false);
};
var end:ColorTransform = new ColorTransform();
if (((!((value == null))) && (!((tween.vars.removeTint == true))))){
end.color = uint(value);
};
_ignoreAlpha = true;
init((target as DisplayObject), end);
return (true);
}
override public function set changeFactor(n:Number):void{
var ct:ColorTransform;
updateTweens(n);
if (_ignoreAlpha){
ct = _transform.colorTransform;
_ct.alphaMultiplier = ct.alphaMultiplier;
_ct.alphaOffset = ct.alphaOffset;
};
_transform.colorTransform = _ct;
}
public function init(target:DisplayObject, end:ColorTransform):void{
var p:String;
_transform = target.transform;
_ct = _transform.colorTransform;
var i:int = _props.length;
while (i--) {
p = _props[i];
if (_ct[p] != end[p]){
_tweens[_tweens.length] = new PropTween(_ct, p, _ct[p], (end[p] - _ct[p]), "tint", false);
};
};
}
}
}//package com.greensock.plugins
Section 93
//TweenPlugin (com.greensock.plugins.TweenPlugin)
package com.greensock.plugins {
import com.greensock.*;
import com.greensock.core.*;
public class TweenPlugin {
public var activeDisable:Boolean;
protected var _changeFactor:Number;// = 0
protected var _tweens:Array;
public var onDisable:Function;
public var propName:String;
public var round:Boolean;
public var onEnable:Function;
public var priority:int;// = 0
public var overwriteProps:Array;
public var onComplete:Function;
public static const VERSION:Number = 1.31;
public static const API:Number = 1;
public function TweenPlugin(){
_tweens = [];
super();
}
protected function updateTweens(changeFactor:Number):void{
var pt:PropTween;
var val:Number;
var i:int = _tweens.length;
if (this.round){
while (i--) {
pt = _tweens[i];
val = (pt.start + (pt.change * changeFactor));
pt.target[pt.property] = ((val)>0) ? int((val + 0.5)) : int((val - 0.5));
};
} else {
while (i--) {
pt = _tweens[i];
pt.target[pt.property] = (pt.start + (pt.change * changeFactor));
};
};
}
protected function addTween(object:Object, propName:String, start:Number, end, overwriteProp:String=null):void{
var change:Number;
if (end != null){
change = ((typeof(end))=="number") ? (Number(end) - start) : Number(end);
if (change != 0){
_tweens[_tweens.length] = new PropTween(object, propName, start, change, ((overwriteProp) || (propName)), false);
};
};
}
public function get changeFactor():Number{
return (_changeFactor);
}
public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
addTween(target, this.propName, target[this.propName], value, this.propName);
return (true);
}
public function killProps(lookup:Object):void{
var i:int = this.overwriteProps.length;
while (i--) {
if ((this.overwriteProps[i] in lookup)){
this.overwriteProps.splice(i, 1);
};
};
i = _tweens.length;
while (i--) {
if ((PropTween(_tweens[i]).name in lookup)){
_tweens.splice(i, 1);
};
};
}
public function set changeFactor(n:Number):void{
updateTweens(n);
_changeFactor = n;
}
public static function activate(plugins:Array):Boolean{
var instance:Object;
TweenLite.onPluginEvent = TweenPlugin.onTweenEvent;
var i:int = plugins.length;
while (i--) {
if (plugins[i].hasOwnProperty("API")){
instance = new ((plugins[i] as Class));
TweenLite.plugins[instance.propName] = plugins[i];
};
};
return (true);
}
private static function onTweenEvent(type:String, tween:TweenLite):Boolean{
var changed:Boolean;
var tweens:Array;
var i:int;
var pt:PropTween = tween.cachedPT1;
if (type == "onInit"){
tweens = [];
while (pt) {
tweens[tweens.length] = pt;
pt = pt.nextNode;
};
tweens.sortOn("priority", (Array.NUMERIC | Array.DESCENDING));
i = tweens.length;
while (i--) {
PropTween(tweens[i]).nextNode = tweens[(i + 1)];
PropTween(tweens[i]).prevNode = tweens[(i - 1)];
};
tween.cachedPT1 = tweens[0];
} else {
while (pt) {
if (((pt.isPlugin) && (pt.target[type]))){
if (pt.target.activeDisable){
changed = true;
};
var _local7 = pt.target;
_local7[type]();
};
pt = pt.nextNode;
};
};
return (changed);
}
}
}//package com.greensock.plugins
Section 94
//VisiblePlugin (com.greensock.plugins.VisiblePlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class VisiblePlugin extends TweenPlugin {
protected var _target:Object;
protected var _initVal:Boolean;
protected var _visible:Boolean;
protected var _tween:TweenLite;
public static const API:Number = 1;
public function VisiblePlugin(){
super();
this.propName = "visible";
this.overwriteProps = ["visible"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_tween = tween;
_initVal = _target.visible;
_visible = Boolean(value);
return (true);
}
override public function set changeFactor(n:Number):void{
if ((((n == 1)) && ((((_tween.cachedDuration == _tween.cachedTime)) || ((_tween.cachedTime == 0)))))){
_target.visible = _visible;
} else {
_target.visible = _initVal;
};
}
}
}//package com.greensock.plugins
Section 95
//VolumePlugin (com.greensock.plugins.VolumePlugin)
package com.greensock.plugins {
import flash.display.*;
import flash.media.*;
import com.greensock.*;
public class VolumePlugin extends TweenPlugin {
protected var _target:Object;
protected var _st:SoundTransform;
public static const API:Number = 1;
public function VolumePlugin(){
super();
this.propName = "volume";
this.overwriteProps = ["volume"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (((isNaN(value)) || (!(target.hasOwnProperty("soundTransform"))))){
return (false);
};
_target = target;
_st = _target.soundTransform;
addTween(_st, "volume", _st.volume, value, "volume");
return (true);
}
override public function set changeFactor(n:Number):void{
updateTweens(n);
_target.soundTransform = _st;
}
}
}//package com.greensock.plugins
Section 96
//OverwriteManager (com.greensock.OverwriteManager)
package com.greensock {
import flash.utils.*;
import com.greensock.core.*;
import flash.errors.*;
public class OverwriteManager {
public static const ALL_ONSTART:int = 4;
public static const CONCURRENT:int = 3;
public static const ALL_IMMEDIATE:int = 1;
public static const PREEXISTING:int = 5;
public static const AUTO:int = 2;
public static const version:Number = 6;
public static const NONE:int = 0;
public static var enabled:Boolean;
public static var mode:int;
public function OverwriteManager(){
super();
}
public static function getGlobalPaused(tween:TweenCore):Boolean{
while (tween) {
if (tween.cachedPaused){
return (true);
};
tween = tween.timeline;
};
return (false);
}
public static function init(defaultMode:int=2):int{
if (TweenLite.version < 11.099994){
throw (new Error("Warning: Your TweenLite class needs to be updated to work with OverwriteManager (or you may need to clear your ASO files). Please download and install the latest version from http://www.tweenlite.com."));
};
TweenLite.overwriteManager = OverwriteManager;
mode = defaultMode;
enabled = true;
return (mode);
}
public static function manageOverwrites(tween:TweenLite, props:Object, targetTweens:Array, mode:uint):Boolean{
var i:int;
var changed:Boolean;
var curTween:TweenLite;
var l:uint;
var combinedTimeScale:Number;
var combinedStartTime:Number;
var cousin:TweenCore;
var cousinStartTime:Number;
var timeline:SimpleTimeline;
if (mode >= 4){
l = targetTweens.length;
i = 0;
while (i < l) {
curTween = targetTweens[i];
if (curTween != tween){
if (curTween.setEnabled(false, false)){
changed = true;
};
} else {
if (mode == 5){
break;
};
};
i++;
};
return (changed);
};
var startTime:Number = tween.startTime;
var overlaps:Array = [];
var cousins:Array = [];
var cCount:uint;
var oCount:uint;
i = targetTweens.length;
while (i--) {
curTween = targetTweens[i];
if ((((curTween == tween)) || (curTween.gc))){
} else {
if (curTween.timeline != tween.timeline){
if (!getGlobalPaused(curTween)){
var _temp1 = cCount;
cCount = (cCount + 1);
var _local19 = _temp1;
cousins[_local19] = curTween;
};
} else {
if ((((((curTween.startTime <= startTime)) && (((curTween.startTime + curTween.totalDuration) > startTime)))) && (!(getGlobalPaused(curTween))))){
var _temp2 = oCount;
oCount = (oCount + 1);
_local19 = _temp2;
overlaps[_local19] = curTween;
};
};
};
};
if (cCount != 0){
combinedTimeScale = tween.cachedTimeScale;
combinedStartTime = startTime;
timeline = tween.timeline;
while (timeline) {
combinedTimeScale = (combinedTimeScale * timeline.cachedTimeScale);
combinedStartTime = (combinedStartTime + timeline.startTime);
timeline = timeline.timeline;
};
startTime = (combinedTimeScale * combinedStartTime);
i = cCount;
while (i--) {
cousin = cousins[i];
combinedTimeScale = cousin.cachedTimeScale;
combinedStartTime = cousin.startTime;
timeline = cousin.timeline;
while (timeline) {
combinedTimeScale = (combinedTimeScale * timeline.cachedTimeScale);
combinedStartTime = (combinedStartTime + timeline.startTime);
timeline = timeline.timeline;
};
cousinStartTime = (combinedTimeScale * combinedStartTime);
if ((((cousinStartTime <= startTime)) && (((((cousinStartTime + (cousin.totalDuration * combinedTimeScale)) > startTime)) || ((cousin.cachedDuration == 0)))))){
var _temp3 = oCount;
oCount = (oCount + 1);
_local19 = _temp3;
overlaps[_local19] = cousin;
};
};
};
if (oCount == 0){
return (changed);
};
i = oCount;
if (mode == 2){
while (i--) {
curTween = overlaps[i];
if (curTween.killVars(props)){
changed = true;
};
if ((((curTween.cachedPT1 == null)) && (curTween.initted))){
curTween.setEnabled(false, false);
};
};
} else {
while (i--) {
if (TweenLite(overlaps[i]).setEnabled(false, false)){
changed = true;
};
};
};
return (changed);
}
}
}//package com.greensock
Section 97
//TimelineLite (com.greensock.TimelineLite)
package com.greensock {
import flash.utils.*;
import com.greensock.core.*;
public class TimelineLite extends SimpleTimeline {
protected var _endCaps:Array;
protected var _labels:Object;
public static const version:Number = 1.142;
private static var _overwriteMode:int = (OverwriteManager.enabled) ? OverwriteManager.mode : OverwriteManager.init(2);
;
public function TimelineLite(vars:Object=null){
super(vars);
_endCaps = [];
_labels = {};
this.autoRemoveChildren = Boolean((this.vars.autoRemoveChildren == true));
_hasUpdate = Boolean((typeof(this.vars.onUpdate) == "function"));
if ((this.vars.tweens is Array)){
this.insertMultiple(this.vars.tweens, 0, ((this.vars.align) || ("normal")), ((this.vars.stagger) || (0)));
};
}
public function set timeScale(n:Number):void{
if (n == 0){
n = 0.0001;
};
var tlTime:Number = (((_pauseTime) || ((_pauseTime == 0)))) ? _pauseTime : this.timeline.cachedTotalTime;
this.cachedStartTime = (tlTime - (((tlTime - this.cachedStartTime) * this.cachedTimeScale) / n));
this.cachedTimeScale = n;
setDirtyCache(false);
}
public function stop():void{
this.paused = true;
}
override public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
var tween:TweenCore;
var isComplete:Boolean;
var rendered:Boolean;
var next:TweenCore;
var dur:Number;
if (this.gc){
this.setEnabled(true, false);
} else {
if (((!(this.active)) && (!(this.cachedPaused)))){
this.active = true;
};
};
var totalDur:Number = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration;
var prevTime:Number = this.cachedTime;
var prevStart:Number = this.cachedStartTime;
if (time >= totalDur){
if ((((_rawPrevTime <= totalDur)) && (!((_rawPrevTime == time))))){
this.cachedTotalTime = (this.cachedTime = totalDur);
forceChildrenToEnd(totalDur, suppressEvents);
isComplete = !(this.hasPausedChild());
rendered = true;
if ((((((this.cachedDuration == 0)) && (isComplete))) && ((((time == 0)) || ((_rawPrevTime < 0)))))){
force = true;
};
};
} else {
if (time <= 0){
if (time < 0){
this.active = false;
if ((((this.cachedDuration == 0)) && ((_rawPrevTime > 0)))){
force = true;
isComplete = true;
};
};
if ((((_rawPrevTime >= 0)) && (!((_rawPrevTime == time))))){
forceChildrenToBeginning(0, suppressEvents);
this.cachedTotalTime = 0;
this.cachedTime = 0;
rendered = true;
if (this.cachedReversed){
isComplete = true;
};
};
} else {
this.cachedTotalTime = (this.cachedTime = time);
};
};
_rawPrevTime = time;
if ((((this.cachedTime == prevTime)) && (!(force)))){
return;
};
if (!this.initted){
this.initted = true;
};
if ((((((((prevTime == 0)) && (this.vars.onStart))) && (!((this.cachedTime == 0))))) && (!(suppressEvents)))){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
if (rendered){
} else {
if ((this.cachedTime - prevTime) > 0){
tween = _firstChild;
while (tween) {
next = tween.nextNode;
if (((tween.active) || (((((!(tween.cachedPaused)) && ((tween.cachedStartTime <= this.cachedTime)))) && (!(tween.gc)))))){
if (!tween.cachedReversed){
tween.renderTime(((this.cachedTime - tween.cachedStartTime) * tween.cachedTimeScale), suppressEvents, false);
} else {
dur = (tween.cacheIsDirty) ? tween.totalDuration : tween.cachedTotalDuration;
tween.renderTime((dur - ((this.cachedTime - tween.cachedStartTime) * tween.cachedTimeScale)), suppressEvents, false);
};
};
tween = next;
};
} else {
tween = _lastChild;
while (tween) {
next = tween.prevNode;
if (((tween.active) || (((((!(tween.cachedPaused)) && ((tween.cachedStartTime <= prevTime)))) && (!(tween.gc)))))){
if (!tween.cachedReversed){
tween.renderTime(((this.cachedTime - tween.cachedStartTime) * tween.cachedTimeScale), suppressEvents, false);
} else {
dur = (tween.cacheIsDirty) ? tween.totalDuration : tween.cachedTotalDuration;
tween.renderTime((dur - ((this.cachedTime - tween.cachedStartTime) * tween.cachedTimeScale)), suppressEvents, false);
};
};
tween = next;
};
};
};
if (((_hasUpdate) && (!(suppressEvents)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (((isComplete) && ((prevStart == this.cachedStartTime)))){
complete(true, suppressEvents);
};
}
override public function remove(tween:TweenCore, skipDisable:Boolean=false):void{
if (tween.gc){
return;
};
if (!skipDisable){
tween.setEnabled(false, true);
};
var first:TweenCore = ((_firstChild) || (_endCaps[0]));
var last:TweenCore = ((_lastChild) || (_endCaps[1]));
if (tween.nextNode){
tween.nextNode.prevNode = tween.prevNode;
} else {
if (last == tween){
last = tween.prevNode;
};
};
if (tween.prevNode){
tween.prevNode.nextNode = tween.nextNode;
} else {
if (first == tween){
first = tween.nextNode;
};
};
if (this.gc){
_endCaps[0] = first;
_endCaps[1] = last;
} else {
_firstChild = first;
_lastChild = last;
};
setDirtyCache(true);
}
public function get currentProgress():Number{
return ((this.cachedTime / this.duration));
}
override public function get totalDuration():Number{
var max:Number;
var end:Number;
var tween:TweenCore;
var prevStart:Number;
var next:TweenCore;
if (this.cacheIsDirty){
max = 0;
tween = ((_firstChild) || (_endCaps[0]));
prevStart = -(Infinity);
while (tween) {
next = tween.nextNode;
if (tween.cachedStartTime < prevStart){
this.addChild(tween);
prevStart = tween.prevNode.cachedStartTime;
} else {
prevStart = tween.cachedStartTime;
};
if (tween.cachedStartTime < 0){
max = (max - tween.cachedStartTime);
this.shiftChildren(-(tween.cachedStartTime), false, -9999999999);
};
end = (tween.cachedStartTime + (tween.totalDuration / tween.cachedTimeScale));
if (end > max){
max = end;
};
tween = next;
};
this.cachedDuration = (this.cachedTotalDuration = max);
this.cacheIsDirty = false;
};
return (this.cachedTotalDuration);
}
public function gotoAndPlay(timeOrLabel, suppressEvents:Boolean=true):void{
goto(timeOrLabel, suppressEvents);
play();
}
public function appendMultiple(tweens:Array, offset:Number=0, align:String="normal", stagger:Number=0):void{
insertMultiple(tweens, (this.duration + offset), align, stagger);
}
public function set currentProgress(n:Number):void{
setTotalTime((this.duration * n), false);
}
public function clear(tweens:Array=null):void{
if (tweens == null){
tweens = getChildren(false, true, true);
};
var i:int = tweens.length;
while (i--) {
TweenCore(tweens[i]).setEnabled(false, false);
};
}
public function prepend(tween:TweenCore, adjustLabels:Boolean=false):void{
shiftChildren(((tween.totalDuration / tween.cachedTimeScale) + tween.delay), adjustLabels, 0);
insert(tween, 0);
}
public function removeLabel(label:String):Number{
var n:Number = _labels[label];
delete _labels[label];
return (n);
}
public function addLabel(label:String, time:Number):void{
_labels[label] = time;
}
public function hasPausedChild():Boolean{
var tween:TweenCore = ((_firstChild) || (_endCaps[0]));
while (tween) {
if (((tween.cachedPaused) || ((((tween is TimelineLite)) && ((tween as TimelineLite).hasPausedChild()))))){
return (true);
};
tween = tween.nextNode;
};
return (false);
}
public function getTweensOf(target:Object, nested:Boolean=true):Array{
var i:int;
var tweens:Array = getChildren(nested, true, false);
var a:Array = [];
var l:uint = tweens.length;
i = 0;
while (i < l) {
if (TweenLite(tweens[i]).target == target){
a[a.length] = tweens[i];
};
i++;
};
return (a);
}
public function gotoAndStop(timeOrLabel, suppressEvents:Boolean=true):void{
goto(timeOrLabel, suppressEvents);
this.paused = true;
}
public function append(tween:TweenCore, offset:Number=0):void{
insert(tween, (this.duration + offset));
}
override public function get duration():Number{
var d:Number;
if (this.cacheIsDirty){
d = this.totalDuration;
};
return (this.cachedDuration);
}
public function get useFrames():Boolean{
var tl:SimpleTimeline = this.timeline;
while (tl.timeline) {
tl = tl.timeline;
};
return (Boolean((tl == TweenLite.rootFramesTimeline)));
}
public function shiftChildren(amount:Number, adjustLabels:Boolean=false, ignoreBeforeTime:Number=0):void{
var p:String;
var tween:TweenCore = ((_firstChild) || (_endCaps[0]));
while (tween) {
if (tween.cachedStartTime >= ignoreBeforeTime){
tween.cachedStartTime = (tween.cachedStartTime + amount);
};
tween = tween.nextNode;
};
if (adjustLabels){
for (p in _labels) {
if (_labels[p] >= ignoreBeforeTime){
_labels[p] = (_labels[p] + amount);
};
};
};
this.setDirtyCache(true);
}
public function goto(timeOrLabel, suppressEvents:Boolean=true):void{
if (typeof(timeOrLabel) == "string"){
if ((timeOrLabel in _labels)){
setTotalTime(Number(_labels[timeOrLabel]), suppressEvents);
};
} else {
setTotalTime(Number(timeOrLabel), suppressEvents);
};
}
public function killTweensOf(target:Object, nested:Boolean=true):Boolean{
var tweens:Array = getTweensOf(target, nested);
var i:int = tweens.length;
while (i--) {
TweenLite(tweens[i]).setEnabled(false, false);
};
return (Boolean((tweens.length > 0)));
}
override public function invalidate():void{
var tween:TweenCore = ((_firstChild) || (_endCaps[0]));
while (tween) {
tween.invalidate();
tween = tween.nextNode;
};
}
public function insertMultiple(tweens:Array, timeOrLabel=0, align:String="normal", stagger:Number=0):void{
var i:int;
var tween:TweenCore;
var curTime:Number = ((Number(timeOrLabel)) || (0));
var l:uint = tweens.length;
if (typeof(timeOrLabel) == "string"){
if (!(timeOrLabel in _labels)){
addLabel(timeOrLabel, this.duration);
};
curTime = _labels[timeOrLabel];
};
i = 0;
while (i < l) {
tween = (tweens[i] as TweenCore);
insert(tween, curTime);
if (align == "sequence"){
curTime = (tween.cachedStartTime + (tween.totalDuration / tween.cachedTimeScale));
} else {
if (align == "start"){
tween.cachedStartTime = (tween.cachedStartTime - tween.delay);
};
};
curTime = (curTime + stagger);
i++;
};
}
public function getLabelTime(label:String):Number{
return (((label in _labels)) ? Number(_labels[label]) : -1);
}
override public function get rawTime():Number{
if (((!((this.cachedTotalTime == 0))) && (!((this.cachedTotalTime == this.cachedTotalDuration))))){
return (this.cachedTotalTime);
};
return (((this.timeline.rawTime - this.cachedStartTime) * this.cachedTimeScale));
}
override public function set duration(n:Number):void{
if (((!((this.duration == 0))) && (!((n == 0))))){
this.timeScale = (this.duration / n);
};
}
override public function set totalDuration(n:Number):void{
if (((!((this.totalDuration == 0))) && (!((n == 0))))){
this.timeScale = (this.totalDuration / n);
};
}
public function getChildren(nested:Boolean=true, tweens:Boolean=true, timelines:Boolean=true, ignoreBeforeTime:Number=-9999999999):Array{
var a:Array = [];
var tween:TweenCore = ((_firstChild) || (_endCaps[0]));
var cnt:uint;
while (tween) {
if (tween.cachedStartTime < ignoreBeforeTime){
} else {
if ((tween is TweenLite)){
if (tweens){
var _temp1 = cnt;
cnt = (cnt + 1);
var _local8 = _temp1;
a[_local8] = tween;
};
} else {
if (timelines){
var _temp2 = cnt;
cnt = (cnt + 1);
_local8 = _temp2;
a[_local8] = tween;
};
if (nested){
a = a.concat(TimelineLite(tween).getChildren(true, tweens, timelines));
};
};
};
tween = tween.nextNode;
};
return (a);
}
protected function forceChildrenToEnd(time:Number, suppressEvents:Boolean=false):Number{
var next:TweenCore;
var dur:Number;
var tween:TweenCore = _firstChild;
while (tween) {
next = tween.nextNode;
if (((tween.active) || (((((!(tween.cachedPaused)) && (!(tween.gc)))) && (((!((tween.cachedTotalTime == tween.cachedTotalDuration))) || ((tween.cachedDuration == 0)))))))){
if ((((time == this.cachedDuration)) && (((!((tween.cachedDuration == 0))) || ((tween.cachedStartTime == this.cachedDuration)))))){
tween.renderTime((tween.cachedReversed) ? 0 : tween.cachedTotalDuration, suppressEvents, false);
} else {
if (!tween.cachedReversed){
tween.renderTime(((time - tween.cachedStartTime) * tween.cachedTimeScale), suppressEvents, false);
} else {
dur = (tween.cacheIsDirty) ? tween.totalDuration : tween.cachedTotalDuration;
tween.renderTime((dur - ((time - tween.cachedStartTime) * tween.cachedTimeScale)), suppressEvents, false);
};
};
};
tween = next;
};
return (time);
}
protected function forceChildrenToBeginning(time:Number, suppressEvents:Boolean=false):Number{
var next:TweenCore;
var dur:Number;
var tween:TweenCore = _lastChild;
while (tween) {
next = tween.prevNode;
if (((tween.active) || (((((!(tween.cachedPaused)) && (!(tween.gc)))) && (((!((tween.cachedTotalTime == 0))) || ((tween.cachedDuration == 0)))))))){
if ((((time == 0)) && (((!((tween.cachedDuration == 0))) || ((tween.cachedStartTime == 0)))))){
tween.renderTime((tween.cachedReversed) ? tween.cachedTotalDuration : 0, suppressEvents, false);
} else {
if (!tween.cachedReversed){
tween.renderTime(((time - tween.cachedStartTime) * tween.cachedTimeScale), suppressEvents, false);
} else {
dur = (tween.cacheIsDirty) ? tween.totalDuration : tween.cachedTotalDuration;
tween.renderTime((dur - ((time - tween.cachedStartTime) * tween.cachedTimeScale)), suppressEvents, false);
};
};
};
tween = next;
};
return (time);
}
public function insert(tween:TweenCore, timeOrLabel=0):void{
if (typeof(timeOrLabel) == "string"){
if (!(timeOrLabel in _labels)){
addLabel(timeOrLabel, this.duration);
};
timeOrLabel = Number(_labels[timeOrLabel]);
};
tween.cachedStartTime = (Number(timeOrLabel) + tween.delay);
addChild(tween);
}
override public function addChild(tween:TweenCore):void{
var curTween:TweenCore;
var st:Number;
if (((!(tween.gc)) && (tween.timeline))){
tween.timeline.remove(tween, true);
};
tween.timeline = this;
if (tween.gc){
tween.setEnabled(true, true);
};
setDirtyCache(true);
var first:TweenCore = ((_firstChild) || (_endCaps[0]));
var last:TweenCore = ((_lastChild) || (_endCaps[1]));
if (last == null){
last = tween;
first = last;
tween.nextNode = (tween.prevNode = null);
} else {
curTween = last;
st = tween.cachedStartTime;
while (((!((curTween == null))) && ((st <= curTween.cachedStartTime)))) {
curTween = curTween.prevNode;
};
if (curTween == null){
first.prevNode = tween;
tween.nextNode = first;
tween.prevNode = null;
first = tween;
} else {
if (curTween.nextNode){
curTween.nextNode.prevNode = tween;
} else {
if (curTween == last){
last = tween;
};
};
tween.prevNode = curTween;
tween.nextNode = curTween.nextNode;
curTween.nextNode = tween;
};
};
if (this.gc){
_endCaps[0] = first;
_endCaps[1] = last;
} else {
_firstChild = first;
_lastChild = last;
};
}
public function get timeScale():Number{
return (this.cachedTimeScale);
}
public function prependMultiple(tweens:Array, align:String="normal", stagger:Number=0, adjustLabels:Boolean=false):void{
var tl:TimelineLite = new TimelineLite({tweens:tweens, align:align, stagger:stagger});
shiftChildren(tl.duration, adjustLabels, 0);
insertMultiple(tweens, 0, align, stagger);
tl.kill();
}
override public function setEnabled(enabled:Boolean, ignoreTimeline:Boolean=false):Boolean{
var tween:TweenCore;
var next:TweenCore;
if (enabled == this.gc){
if (enabled){
tween = _endCaps[0];
_firstChild = tween;
_lastChild = _endCaps[1];
} else {
tween = _firstChild;
_endCaps = [_firstChild, _lastChild];
_firstChild = (_lastChild = null);
};
while (tween) {
tween.setEnabled(enabled, true);
tween = tween.nextNode;
};
};
return (super.setEnabled(enabled, ignoreTimeline));
}
}
}//package com.greensock
Section 98
//TimelineMax (com.greensock.TimelineMax)
package com.greensock {
import flash.events.*;
import flash.utils.*;
import com.greensock.core.*;
import com.greensock.events.*;
public class TimelineMax extends TimelineLite implements IEventDispatcher {
protected var _cyclesComplete:uint;
protected var _dispatcher:EventDispatcher;
protected var _hasUpdateListener:Boolean;
public var yoyo:Boolean;
protected var _repeatDelay:Number;
protected var _repeat:int;
public static const version:Number = 1.13;
public function TimelineMax(vars:Object=null){
super(vars);
_repeat = ((this.vars.repeat) || (0));
_repeatDelay = ((this.vars.repeatDelay) || (0));
_cyclesComplete = 0;
this.yoyo = ((this.vars.yoyo) || (false));
this.cacheIsDirty = true;
if (((((((((!((this.vars.onCompleteListener == null))) || (!((this.vars.onUpdateListener == null))))) || (!((this.vars.onStartListener == null))))) || (!((this.vars.onRepeatListener == null))))) || (!((this.vars.onReverseCompleteListener == null))))){
initDispatcher();
};
}
public function dispatchEvent(e:Event):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.dispatchEvent(e));
}
public function get currentLabel():String{
return (getLabelBefore((this.cachedTime + 1E-8)));
}
override public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
var tween:TweenCore;
var isComplete:Boolean;
var rendered:Boolean;
var repeated:Boolean;
var next:TweenCore;
var dur:Number;
var cycleDuration:Number;
var prevCycle:Number;
var forward:Boolean;
var prevForward:Boolean;
var wrap:Boolean;
if (this.gc){
this.setEnabled(true, false);
} else {
if (((!(this.active)) && (!(this.cachedPaused)))){
this.active = true;
};
};
var totalDur:Number = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration;
var prevTime:Number = this.cachedTime;
var prevStart:Number = this.cachedStartTime;
if (time >= totalDur){
if ((((_rawPrevTime <= totalDur)) && (!((_rawPrevTime == time))))){
if (((((!(this.cachedReversed)) && (this.yoyo))) && (!(((_repeat % 2) == 0))))){
forceChildrenToBeginning(0, suppressEvents);
this.cachedTime = 0;
} else {
forceChildrenToEnd(this.cachedDuration, suppressEvents);
this.cachedTime = this.cachedDuration;
};
this.cachedTotalTime = totalDur;
isComplete = !(this.hasPausedChild());
rendered = true;
if ((((((this.cachedDuration == 0)) && (isComplete))) && ((((time == 0)) || ((_rawPrevTime < 0)))))){
force = true;
};
};
} else {
if (time <= 0){
if (time < 0){
this.active = false;
if ((((this.cachedDuration == 0)) && ((_rawPrevTime > 0)))){
force = true;
isComplete = true;
};
};
if ((((_rawPrevTime >= 0)) && (!((_rawPrevTime == time))))){
this.cachedTotalTime = 0;
if (((((!(this.cachedReversed)) && (this.yoyo))) && (!(((_repeat % 2) == 0))))){
forceChildrenToEnd(this.cachedDuration, suppressEvents);
this.cachedTime = this.cachedDuration;
} else {
forceChildrenToBeginning(0, suppressEvents);
this.cachedTime = 0;
};
rendered = true;
if (this.cachedReversed){
isComplete = true;
};
};
} else {
this.cachedTotalTime = (this.cachedTime = time);
};
};
_rawPrevTime = time;
if (_repeat != 0){
cycleDuration = (this.cachedDuration + _repeatDelay);
if (isComplete){
if (((this.yoyo) && ((_repeat % 2)))){
this.cachedTime = 0;
};
} else {
if (time > 0){
prevCycle = _cyclesComplete;
if (_cyclesComplete != (_cyclesComplete = int((this.cachedTotalTime / cycleDuration)))){
repeated = true;
};
this.cachedTime = (((this.cachedTotalTime / cycleDuration) - _cyclesComplete) * cycleDuration);
if (((this.yoyo) && ((_cyclesComplete % 2)))){
this.cachedTime = (this.cachedDuration - this.cachedTime);
} else {
if (this.cachedTime >= this.cachedDuration){
this.cachedTime = this.cachedDuration;
};
};
if (this.cachedTime < 0){
this.cachedTime = 0;
};
};
};
if (((((repeated) && (!(isComplete)))) && (((!((this.cachedTime == prevTime))) || (force))))){
forward = Boolean(((!(this.yoyo)) || (((_cyclesComplete % 2) == 0))));
prevForward = Boolean(((!(this.yoyo)) || (((prevCycle % 2) == 0))));
wrap = Boolean((forward == prevForward));
if (prevCycle > _cyclesComplete){
prevForward = !(prevForward);
};
if (prevForward){
prevTime = forceChildrenToEnd(this.cachedDuration, suppressEvents);
if (wrap){
prevTime = forceChildrenToBeginning(0, true);
};
} else {
prevTime = forceChildrenToBeginning(0, suppressEvents);
if (wrap){
prevTime = forceChildrenToEnd(this.cachedDuration, true);
};
};
rendered = false;
};
};
if ((((this.cachedTime == prevTime)) && (!(force)))){
return;
};
if (!this.initted){
this.initted = true;
};
if ((((((prevTime == 0)) && (!((this.cachedTotalTime == 0))))) && (!(suppressEvents)))){
if (this.vars.onStart){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
if (_dispatcher){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.START));
};
};
if (rendered){
} else {
if ((this.cachedTime - prevTime) > 0){
tween = _firstChild;
while (tween) {
next = tween.nextNode;
if (((tween.active) || (((((!(tween.cachedPaused)) && ((tween.cachedStartTime <= this.cachedTime)))) && (!(tween.gc)))))){
if (!tween.cachedReversed){
tween.renderTime(((this.cachedTime - tween.cachedStartTime) * tween.cachedTimeScale), suppressEvents, false);
} else {
dur = (tween.cacheIsDirty) ? tween.totalDuration : tween.cachedTotalDuration;
tween.renderTime((dur - ((this.cachedTime - tween.cachedStartTime) * tween.cachedTimeScale)), suppressEvents, false);
};
};
tween = next;
};
} else {
tween = _lastChild;
while (tween) {
next = tween.prevNode;
if (((tween.active) || (((((!(tween.cachedPaused)) && ((tween.cachedStartTime <= prevTime)))) && (!(tween.gc)))))){
if (!tween.cachedReversed){
tween.renderTime(((this.cachedTime - tween.cachedStartTime) * tween.cachedTimeScale), suppressEvents, false);
} else {
dur = (tween.cacheIsDirty) ? tween.totalDuration : tween.cachedTotalDuration;
tween.renderTime((dur - ((this.cachedTime - tween.cachedStartTime) * tween.cachedTimeScale)), suppressEvents, false);
};
};
tween = next;
};
};
};
if (((_hasUpdate) && (!(suppressEvents)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (((_hasUpdateListener) && (!(suppressEvents)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE));
};
if (((isComplete) && ((prevStart == this.cachedStartTime)))){
complete(true, suppressEvents);
} else {
if (((repeated) && (!(suppressEvents)))){
if (this.vars.onRepeat){
this.vars.onRepeat.apply(null, this.vars.onRepeatParams);
};
if (_dispatcher){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REPEAT));
};
};
};
}
public function addCallback(callback:Function, timeOrLabel, params:Array=null):TweenLite{
var cb:TweenLite = new TweenLite(callback, 0, {onComplete:callback, onCompleteParams:params, overwrite:0, immediateRender:false});
insert(cb, timeOrLabel);
return (cb);
}
public function set repeatDelay(n:Number):void{
_repeatDelay = n;
setDirtyCache(true);
}
public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{
if (_dispatcher != null){
_dispatcher.removeEventListener(type, listener, useCapture);
};
}
override public function set currentTime(n:Number):void{
if (_cyclesComplete == 0){
setTotalTime(n, false);
} else {
if (((this.yoyo) && (((_cyclesComplete % 2) == 1)))){
setTotalTime(((this.duration - n) + (_cyclesComplete * (this.cachedDuration + _repeatDelay))), false);
} else {
setTotalTime((n + (_cyclesComplete * (this.duration + _repeatDelay))), false);
};
};
}
public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void{
if (_dispatcher == null){
initDispatcher();
};
if (type == TweenEvent.UPDATE){
_hasUpdateListener = true;
};
_dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
public function tweenTo(timeOrLabel, vars:Object=null):TweenLite{
var p:String;
var varsCopy:Object = {ease:easeNone, overwrite:2, useFrames:this.useFrames};
for (p in vars) {
varsCopy[p] = vars[p];
};
if (typeof(timeOrLabel) == "string"){
if (!(timeOrLabel in _labels)){
trace((("TimelineMax warning: tweenTo(" + timeOrLabel) + ") failed because the label was not found."));
return (null);
};
varsCopy.currentTime = getLabelTime(String(timeOrLabel));
} else {
varsCopy.currentTime = Number(timeOrLabel);
};
this.paused = true;
return (new TweenLite(this, (Math.abs((Number(varsCopy.currentTime) - this.cachedTime)) / this.cachedTimeScale), varsCopy));
}
public function hasEventListener(type:String):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.hasEventListener(type));
}
protected function initDispatcher():void{
if (_dispatcher == null){
_dispatcher = new EventDispatcher(this);
if ((this.vars.onStartListener is Function)){
_dispatcher.addEventListener(TweenEvent.START, this.vars.onStartListener, false, 0, true);
};
if ((this.vars.onUpdateListener is Function)){
_dispatcher.addEventListener(TweenEvent.UPDATE, this.vars.onUpdateListener, false, 0, true);
_hasUpdateListener = true;
};
if ((this.vars.onCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.COMPLETE, this.vars.onCompleteListener, false, 0, true);
};
if ((this.vars.onRepeatListener is Function)){
_dispatcher.addEventListener(TweenEvent.REPEAT, this.vars.onRepeatListener, false, 0, true);
};
if ((this.vars.onReverseCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.REVERSE_COMPLETE, this.vars.onReverseCompleteListener, false, 0, true);
};
};
}
public function get repeat():int{
return (_repeat);
}
public function getLabelBefore(time:Number=NaN):String{
if (((!(time)) && (!((time == 0))))){
time = this.cachedTime;
};
var labels:Array = getLabelsArray();
var i:int = labels.length;
while (i--) {
if (labels[i].time < time){
return (labels[i].name);
};
};
return (null);
}
public function willTrigger(type:String):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.willTrigger(type));
}
public function get totalProgress():Number{
return ((this.cachedTotalTime / this.totalDuration));
}
public function set totalProgress(n:Number):void{
setTotalTime((this.totalDuration * n), false);
}
protected function getLabelsArray():Array{
var p:String;
var a:Array = [];
for (p in _labels) {
a[a.length] = {time:_labels[p], name:p};
};
a.sortOn("time", Array.NUMERIC);
return (a);
}
public function removeCallback(callback:Function, timeOrLabel=null):Boolean{
var a:Array;
var success:Boolean;
var i:int;
if (timeOrLabel == null){
return (killTweensOf(callback, false));
};
if (typeof(timeOrLabel) == "string"){
if (!(timeOrLabel in _labels)){
return (false);
};
timeOrLabel = _labels[timeOrLabel];
};
a = getTweensOf(callback, false);
i = a.length;
while (i--) {
if (a[i].cachedStartTime == timeOrLabel){
remove((a[i] as TweenCore));
success = true;
};
};
return (success);
}
public function get repeatDelay():Number{
return (_repeatDelay);
}
public function set repeat(n:int):void{
_repeat = n;
setDirtyCache(true);
}
override public function get totalDuration():Number{
var temp:Number;
if (this.cacheIsDirty){
temp = super.totalDuration;
this.cachedTotalDuration = ((_repeat)==-1) ? 999999999999 : ((this.cachedDuration * (_repeat + 1)) + (_repeatDelay * _repeat));
};
return (this.cachedTotalDuration);
}
override public function complete(skipRender:Boolean=false, suppressEvents:Boolean=false):void{
super.complete(skipRender, suppressEvents);
if (((_dispatcher) && (!(suppressEvents)))){
if (((((this.cachedReversed) && ((this.cachedTotalTime == 0)))) && (!((this.cachedDuration == 0))))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REVERSE_COMPLETE));
} else {
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE));
};
};
}
override public function invalidate():void{
_repeat = ((this.vars.repeat) || (0));
_repeatDelay = ((this.vars.repeatDelay) || (0));
this.yoyo = ((this.vars.yoyo) || (false));
_hasUpdateListener = false;
if (((((((((!((this.vars.onCompleteListener == null))) || (!((this.vars.onUpdateListener == null))))) || (!((this.vars.onStartListener == null))))) || (!((this.vars.onRepeatListener == null))))) || (!((this.vars.onReverseCompleteListener == null))))){
initDispatcher();
};
setDirtyCache(true);
super.invalidate();
}
public function getActive(nested:Boolean=true, tweens:Boolean=true, timelines:Boolean=false):Array{
var i:int;
var a:Array = [];
var all:Array = getChildren(nested, tweens, timelines);
var l:uint = all.length;
var cnt:uint;
i = 0;
while (i < l) {
if (TweenCore(all[i]).active){
var _temp1 = cnt;
cnt = (cnt + 1);
var _local9 = _temp1;
a[_local9] = all[i];
};
i++;
};
return (a);
}
public function getLabelAfter(time:Number=NaN):String{
if (((!(time)) && (!((time == 0))))){
time = this.cachedTime;
};
var labels:Array = getLabelsArray();
var l:uint = labels.length;
var i:int;
while (i < l) {
if (labels[i].time > time){
return (labels[i].name);
};
i++;
};
return (null);
}
private static function easeNone(t:Number, b:Number, c:Number, d:Number):Number{
return ((t / d));
}
}
}//package com.greensock
Section 99
//TweenLite (com.greensock.TweenLite)
package com.greensock {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import com.greensock.core.*;
import com.greensock.plugins.*;
public class TweenLite extends TweenCore {
protected var _hasPlugins:Boolean;
public var propTweenLookup:Object;
public var cachedPT1:PropTween;
protected var _overwrite:uint;
protected var _ease:Function;
public var target:Object;
public var ratio:Number;// = 0
protected var _overwrittenProps:Object;
protected var _notifyPluginsOfEnabled:Boolean;
public static const version:Number = 11.133;
public static var rootTimeline:SimpleTimeline;
public static var fastEaseLookup:Dictionary = new Dictionary(false);
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, onReverseCompleteListener:1, onRepeatListener:1, orientToBezier:1, timeScale:1, immediateRender:1, repeat:1, repeatDelay:1, timeline:1, data:1, paused:1};
public function TweenLite(target:Object, duration:Number, vars:Object){
var sibling:TweenLite;
super(duration, vars);
this.target = target;
if ((((this.target is TweenCore)) && (("timeScale" in this.vars)))){
this.cachedTimeScale = 1;
};
propTweenLookup = {};
_ease = defaultEase;
_overwrite = (((!((Number(vars.overwrite) > -1))) || (((!(overwriteManager.enabled)) && ((vars.overwrite > 1)))))) ? overwriteManager.mode : int(vars.overwrite);
var a:Array = masterList[target];
if (!a){
masterList[target] = [this];
} else {
if (_overwrite == 1){
for each (sibling in a) {
if (!sibling.gc){
sibling.setEnabled(false, false);
};
};
masterList[target] = [this];
} else {
a[a.length] = this;
};
};
if (((this.active) || (this.vars.immediateRender))){
renderTime(0, false, true);
};
}
protected function easeProxy(t:Number, b:Number, c:Number, d:Number):Number{
return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams)));
}
override public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
var isComplete:Boolean;
var prevTime:Number = this.cachedTime;
if (time >= this.cachedDuration){
this.cachedTotalTime = (this.cachedTime = this.cachedDuration);
this.ratio = 1;
isComplete = true;
if (this.cachedDuration == 0){
if ((((((time == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == time))))){
force = true;
};
_rawPrevTime = time;
};
} else {
if (time <= 0){
this.cachedTotalTime = (this.cachedTime = (this.ratio = 0));
if (time < 0){
this.active = false;
if (this.cachedDuration == 0){
if (_rawPrevTime > 0){
force = true;
isComplete = true;
};
_rawPrevTime = time;
};
};
if (((this.cachedReversed) && (!((prevTime == 0))))){
isComplete = true;
};
} else {
this.cachedTotalTime = (this.cachedTime = time);
this.ratio = _ease(time, 0, 1, this.cachedDuration);
};
};
if ((((this.cachedTime == prevTime)) && (!(force)))){
return;
};
if (!this.initted){
init();
if (((!(isComplete)) && (this.cachedTime))){
this.ratio = _ease(this.cachedTime, 0, 1, this.cachedDuration);
};
};
if (((!(this.active)) && (!(this.cachedPaused)))){
this.active = true;
};
if ((((((((prevTime == 0)) && (this.vars.onStart))) && (!((this.cachedTime == 0))))) && (!(suppressEvents)))){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
var pt:PropTween = this.cachedPT1;
while (pt) {
pt.target[pt.property] = (pt.start + (this.ratio * pt.change));
pt = pt.nextNode;
};
if (((_hasUpdate) && (!(suppressEvents)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (isComplete){
if (((_hasPlugins) && (this.cachedPT1))){
onPluginEvent("onComplete", this);
};
complete(true, suppressEvents);
};
}
override public function setEnabled(enabled:Boolean, ignoreTimeline:Boolean=false):Boolean{
var a:Array;
if (enabled){
a = TweenLite.masterList[this.target];
if (!a){
TweenLite.masterList[this.target] = [this];
} else {
a[a.length] = this;
};
};
super.setEnabled(enabled, ignoreTimeline);
if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){
return (onPluginEvent((enabled) ? "onEnable" : "onDisable", this));
};
return (false);
}
protected function init():void{
var p:String;
var i:int;
var plugin:*;
var prioritize:Boolean;
var siblings:Array;
var pt:PropTween;
if (typeof(this.vars.ease) == "function"){
_ease = this.vars.ease;
};
if (this.vars.easeParams){
this.vars.proxiedEase = _ease;
_ease = easeProxy;
};
this.cachedPT1 = null;
this.propTweenLookup = {};
for (p in this.vars) {
if ((((p in _reservedProps)) && (!((((p == "timeScale")) && ((this.target is TweenCore))))))){
} else {
if ((((p in plugins)) && (new ((plugins[p] as Class)).onInitTween(this.target, this.vars[p], this)))){
this.cachedPT1 = new PropTween(plugin, "changeFactor", 0, 1, ((plugin.overwriteProps.length)==1) ? plugin.overwriteProps[0] : "_MULTIPLE_", true, this.cachedPT1);
if (this.cachedPT1.name == "_MULTIPLE_"){
i = plugin.overwriteProps.length;
while (i--) {
this.propTweenLookup[plugin.overwriteProps[i]] = this.cachedPT1;
};
} else {
this.propTweenLookup[this.cachedPT1.name] = this.cachedPT1;
};
if (plugin.priority){
this.cachedPT1.priority = plugin.priority;
prioritize = true;
};
if (((plugin.onDisable) || (plugin.onEnable))){
_notifyPluginsOfEnabled = true;
};
_hasPlugins = true;
} else {
this.cachedPT1 = new PropTween(this.target, p, Number(this.target[p]), ((typeof(this.vars[p]))=="number") ? (Number(this.vars[p]) - this.target[p]) : Number(this.vars[p]), p, false, this.cachedPT1);
this.propTweenLookup[p] = this.cachedPT1;
};
};
};
if (prioritize){
onPluginEvent("onInit", this);
};
if (this.vars.runBackwards){
pt = this.cachedPT1;
while (pt) {
pt.start = (pt.start + pt.change);
pt.change = -(pt.change);
pt = pt.nextNode;
};
};
_hasUpdate = Boolean(!((this.vars.onUpdate == null)));
if (_overwrittenProps){
killVars(_overwrittenProps);
if (this.cachedPT1 == null){
this.setEnabled(false, false);
};
};
if ((((((((_overwrite > 1)) && (this.cachedPT1))) && (masterList[this.target]))) && ((siblings.length > 1)))){
if (overwriteManager.manageOverwrites(this, this.propTweenLookup, siblings, _overwrite)){
init();
};
};
this.initted = true;
}
public function killVars(vars:Object, permanent:Boolean=true):Boolean{
var p:String;
var pt:PropTween;
var changed:Boolean;
if (_overwrittenProps == null){
_overwrittenProps = {};
};
for (p in vars) {
if ((p in propTweenLookup)){
pt = propTweenLookup[p];
if (((pt.isPlugin) && ((pt.name == "_MULTIPLE_")))){
pt.target.killProps(vars);
if (pt.target.overwriteProps.length == 0){
pt.name = "";
};
};
if (pt.name != "_MULTIPLE_"){
if (pt.nextNode){
pt.nextNode.prevNode = pt.prevNode;
};
if (pt.prevNode){
pt.prevNode.nextNode = pt.nextNode;
} else {
if (this.cachedPT1 == pt){
this.cachedPT1 = pt.nextNode;
};
};
if (((pt.isPlugin) && (pt.target.onDisable))){
pt.target.onDisable();
if (pt.target.activeDisable){
changed = true;
};
};
delete propTweenLookup[p];
};
};
if (permanent){
_overwrittenProps[p] = 1;
};
};
return (changed);
}
override public function invalidate():void{
if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){
onPluginEvent("onDisable", this);
};
this.cachedPT1 = null;
_overwrittenProps = null;
_hasUpdate = (this.initted = (this.active = (_notifyPluginsOfEnabled = false)));
this.propTweenLookup = {};
}
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(target:Object, complete:Boolean=false):void{
var a:Array;
var i:int;
if ((target in masterList)){
a = masterList[target];
i = a.length;
while (i--) {
if (!TweenLite(a[i]).gc){
if (complete){
TweenLite(a[i]).complete(false, false);
} else {
TweenLite(a[i]).setEnabled(false, false);
};
};
};
delete masterList[target];
};
}
public static function from(target:Object, duration:Number, vars:Object):TweenLite{
vars.runBackwards = true;
if (!("immediateRender" in vars)){
vars.immediateRender = true;
};
return (new TweenLite(target, duration, vars));
}
protected static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{
t = (1 - (t / d));
return ((1 - (t * t)));
}
public static function delayedCall(delay:Number, onComplete:Function, onCompleteParams:Array=null, useFrames:Boolean=false):TweenLite{
return (new TweenLite(onComplete, 0, {delay:delay, onComplete:onComplete, onCompleteParams:onCompleteParams, immediateRender:false, useFrames:useFrames, overwrite:0}));
}
protected static function updateAll(e:Event=null):void{
var ml:Dictionary;
var tgt:Object;
var a:Array;
var i: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)){
ml = masterList;
for (tgt in ml) {
a = ml[tgt];
i = a.length;
while (i--) {
if (TweenLite(a[i]).gc){
a.splice(i, 1);
};
};
if (a.length == 0){
delete ml[tgt];
};
};
};
}
public static function to(target:Object, duration:Number, vars:Object):TweenLite{
return (new TweenLite(target, duration, vars));
}
}
}//package com.greensock
Section 100
//TweenMax (com.greensock.TweenMax)
package com.greensock {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import com.greensock.core.*;
import com.greensock.plugins.*;
import com.greensock.events.*;
public class TweenMax extends TweenLite implements IEventDispatcher {
protected var _cyclesComplete:uint;// = 0
protected var _dispatcher:EventDispatcher;
protected var _hasUpdateListener:Boolean;
protected var _easeType:uint;
protected var _repeatDelay:Number;// = 0
public var yoyo:Boolean;
protected var _easePower:uint;
protected var _repeat:int;// = 0
public static const version:Number = 11.14;
private static var _overwriteMode:int = (OverwriteManager.enabled) ? OverwriteManager.mode : OverwriteManager.init(2);
;
public static var killTweensOf:Function = TweenLite.killTweensOf;
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
public function TweenMax(target:Object, duration:Number, vars:Object){
super(target, duration, vars);
if (TweenLite.version < 11.1){
throw (new Error("TweenMax error! Please update your TweenLite class or try deleting your ASO files. TweenMax requires a more recent version. Download updates at http://www.TweenMax.com."));
};
this.yoyo = Boolean(this.vars.yoyo);
_repeat = ((this.vars.repeat) || (0));
_repeatDelay = ((this.vars.repeatDelay) || (0));
this.cacheIsDirty = true;
if (((((((((this.vars.onCompleteListener) || (this.vars.onUpdateListener))) || (this.vars.onStartListener))) || (this.vars.onRepeatListener))) || (this.vars.onReverseCompleteListener))){
initDispatcher();
if ((((duration == 0)) && ((_delay == 0)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE));
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE));
};
};
if (((("timeScale" in this.vars)) && (!((this.target is TweenCore))))){
this.cachedTimeScale = this.vars.timeScale;
};
}
public function dispatchEvent(e:Event):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.dispatchEvent(e));
}
public function set timeScale(n:Number):void{
if (n == 0){
n = 0.0001;
};
var tlTime:Number = (((_pauseTime) || ((_pauseTime == 0)))) ? _pauseTime : this.timeline.cachedTotalTime;
this.cachedStartTime = (tlTime - (((tlTime - this.cachedStartTime) * this.cachedTimeScale) / n));
this.cachedTimeScale = n;
setDirtyCache(false);
}
override public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
var isComplete:Boolean;
var repeated:Boolean;
var setRatio:Boolean;
var cycleDuration:Number;
var power:uint;
var val:Number;
var totalDur:Number = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration;
var prevTime:Number = this.cachedTime;
if (time >= totalDur){
this.cachedTotalTime = totalDur;
this.cachedTime = this.cachedDuration;
this.ratio = 1;
isComplete = true;
if (this.cachedDuration == 0){
if ((((((time == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == time))))){
force = true;
};
_rawPrevTime = time;
};
} else {
if (time <= 0){
if (time < 0){
this.active = false;
if (this.cachedDuration == 0){
if (_rawPrevTime > 0){
force = true;
isComplete = true;
};
_rawPrevTime = time;
};
};
this.cachedTotalTime = (this.cachedTime = (this.ratio = 0));
if (((this.cachedReversed) && (!((prevTime == 0))))){
isComplete = true;
};
} else {
this.cachedTotalTime = (this.cachedTime = time);
setRatio = true;
};
};
if (_repeat != 0){
cycleDuration = (this.cachedDuration + _repeatDelay);
if (isComplete){
if (((this.yoyo) && ((_repeat % 2)))){
this.cachedTime = (this.ratio = 0);
};
} else {
if (time > 0){
if (_cyclesComplete != (_cyclesComplete = int((this.cachedTotalTime / cycleDuration)))){
repeated = true;
};
this.cachedTime = (((this.cachedTotalTime / cycleDuration) - _cyclesComplete) * cycleDuration);
if (((this.yoyo) && ((_cyclesComplete % 2)))){
this.cachedTime = (this.cachedDuration - this.cachedTime);
} else {
if (this.cachedTime >= this.cachedDuration){
this.cachedTime = this.cachedDuration;
this.ratio = 1;
setRatio = false;
};
};
if (this.cachedTime <= 0){
this.cachedTime = (this.ratio = 0);
setRatio = false;
};
};
};
};
if ((((prevTime == this.cachedTime)) && (!(force)))){
return;
};
if (!this.initted){
init();
};
if (((!(this.active)) && (!(this.cachedPaused)))){
this.active = true;
};
if (setRatio){
if (_easeType){
power = _easePower;
val = (this.cachedTime / this.cachedDuration);
if (_easeType == 2){
val = (1 - val);
this.ratio = val;
while (power--) {
this.ratio = (val * this.ratio);
};
this.ratio = (1 - this.ratio);
} else {
if (_easeType == 1){
this.ratio = val;
while (power--) {
this.ratio = (val * this.ratio);
};
} else {
if (val < 0.5){
val = (val * 2);
this.ratio = val;
while (power--) {
this.ratio = (val * this.ratio);
};
this.ratio = (this.ratio * 0.5);
} else {
val = ((1 - val) * 2);
this.ratio = val;
while (power--) {
this.ratio = (val * this.ratio);
};
this.ratio = (1 - (0.5 * this.ratio));
};
};
};
} else {
this.ratio = _ease(this.cachedTime, 0, 1, this.cachedDuration);
};
};
if ((((((prevTime == 0)) && (!((this.cachedTotalTime == 0))))) && (!(suppressEvents)))){
if (this.vars.onStart){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
if (_dispatcher){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.START));
};
};
var pt:PropTween = this.cachedPT1;
while (pt) {
pt.target[pt.property] = (pt.start + (this.ratio * pt.change));
pt = pt.nextNode;
};
if (((_hasUpdate) && (!(suppressEvents)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (((_hasUpdateListener) && (!(suppressEvents)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE));
};
if (isComplete){
if (((_hasPlugins) && (this.cachedPT1))){
onPluginEvent("onComplete", this);
};
complete(true, suppressEvents);
} else {
if (((repeated) && (!(suppressEvents)))){
if (this.vars.onRepeat){
this.vars.onRepeat.apply(null, this.vars.onRepeatParams);
};
if (_dispatcher){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REPEAT));
};
};
};
}
override public function set totalDuration(n:Number):void{
if (_repeat == -1){
return;
};
this.duration = ((n - (_repeat * _repeatDelay)) / (_repeat + 1));
}
public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void{
if (_dispatcher == null){
initDispatcher();
};
if (type == TweenEvent.UPDATE){
_hasUpdateListener = true;
};
_dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
protected function insertPropTween(target:Object, property:String, start:Number, end, name:String, isPlugin:Boolean, nextNode:PropTween):PropTween{
var op:Array;
var i:int;
var pt:PropTween = new PropTween(target, property, start, ((typeof(end))=="number") ? (end - start) : Number(end), name, isPlugin, nextNode);
if (((isPlugin) && ((name == "_MULTIPLE_")))){
op = target.overwriteProps;
i = op.length;
while (i--) {
this.propTweenLookup[op[i]] = pt;
};
} else {
this.propTweenLookup[name] = pt;
};
return (pt);
}
override protected function init():void{
var startTween:TweenMax;
var j:int;
var prop:String;
var multiProps:String;
var rp:Array;
var plugin:Object;
var ptPlugin:PropTween;
var pt:PropTween;
var i:int;
if (this.vars.startAt){
this.vars.startAt.overwrite = 0;
this.vars.startAt.immediateRender = true;
startTween = new TweenMax(this.target, 0, this.vars.startAt);
};
super.init();
if ((_ease in fastEaseLookup)){
_easeType = fastEaseLookup[_ease][0];
_easePower = fastEaseLookup[_ease][1];
};
if (((!((this.vars.roundProps == null))) && (("roundProps" in TweenLite.plugins)))){
rp = this.vars.roundProps;
i = rp.length;
while (i--) {
prop = rp[i];
pt = this.cachedPT1;
while (pt) {
if (pt.name == prop){
if (pt.isPlugin){
pt.target.round = true;
} else {
if (plugin == null){
plugin = new TweenLite.plugins.roundProps();
plugin.add(pt.target, prop, pt.start, pt.change);
_hasPlugins = true;
ptPlugin = insertPropTween(plugin, "changeFactor", 0, 1, "_MULTIPLE_", true, this.cachedPT1);
this.cachedPT1 = ptPlugin;
} else {
plugin.add(pt.target, prop, pt.start, pt.change);
};
this.removePropTween(pt);
this.propTweenLookup[prop] = ptPlugin;
};
} else {
if (((((pt.isPlugin) && ((pt.name == "_MULTIPLE_")))) && (!(pt.target.round)))){
multiProps = ((" " + pt.target.overwriteProps.join(" ")) + " ");
if (multiProps.indexOf(((" " + prop) + " ")) != -1){
pt.target.round = true;
};
};
};
pt = pt.nextNode;
};
};
};
}
public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{
if (_dispatcher){
_dispatcher.removeEventListener(type, listener, useCapture);
};
}
public function setDestination(property:String, value, adjustStartValues:Boolean=true):void{
var vars:Object = {};
vars[property] = value;
updateTo(vars, !(adjustStartValues));
}
public function willTrigger(type:String):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.willTrigger(type));
}
public function hasEventListener(type:String):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.hasEventListener(type));
}
protected function initDispatcher():void{
if (_dispatcher == null){
_dispatcher = new EventDispatcher(this);
};
if ((this.vars.onStartListener is Function)){
_dispatcher.addEventListener(TweenEvent.START, this.vars.onStartListener, false, 0, true);
};
if ((this.vars.onUpdateListener is Function)){
_dispatcher.addEventListener(TweenEvent.UPDATE, this.vars.onUpdateListener, false, 0, true);
_hasUpdateListener = true;
};
if ((this.vars.onCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.COMPLETE, this.vars.onCompleteListener, false, 0, true);
};
if ((this.vars.onRepeatListener is Function)){
_dispatcher.addEventListener(TweenEvent.REPEAT, this.vars.onRepeatListener, false, 0, true);
};
if ((this.vars.onReverseCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.REVERSE_COMPLETE, this.vars.onReverseCompleteListener, false, 0, true);
};
}
public function set currentProgress(n:Number):void{
if (_cyclesComplete == 0){
setTotalTime((this.duration * n), false);
} else {
setTotalTime(((this.duration * n) + (_cyclesComplete * this.cachedDuration)), false);
};
}
public function get totalProgress():Number{
return ((this.cachedTotalTime / this.totalDuration));
}
public function set totalProgress(n:Number):void{
setTotalTime((this.totalDuration * n), false);
}
protected function removePropTween(propTween:PropTween):Boolean{
if (propTween.nextNode){
propTween.nextNode.prevNode = propTween.prevNode;
};
if (propTween.prevNode){
propTween.prevNode.nextNode = propTween.nextNode;
} else {
if (this.cachedPT1 == propTween){
this.cachedPT1 = propTween.nextNode;
};
};
if (((propTween.isPlugin) && (propTween.target.onDisable))){
propTween.target.onDisable();
if (propTween.target.activeDisable){
return (true);
};
};
return (false);
}
public function get currentProgress():Number{
return ((this.cachedTime / this.duration));
}
public function get repeat():int{
return (_repeat);
}
public function updateTo(vars:Object, resetDuration:Boolean=false):void{
var p:String;
var inv:Number;
var pt:PropTween;
var endValue:Number;
var curRatio:Number = this.ratio;
if (((((resetDuration) && (!((this.timeline == null))))) && ((this.cachedStartTime < this.timeline.cachedTime)))){
this.cachedStartTime = this.timeline.cachedTime;
if (this.gc){
this.setEnabled(true, false);
} else {
this.timeline.addChild(this);
};
};
for (p in vars) {
this.vars[p] = vars[p];
};
if (this.initted){
init();
if (((((!(resetDuration)) && ((this.cachedTime > 0)))) && ((this.cachedTime < this.cachedDuration)))){
inv = (1 / (1 - curRatio));
pt = this.cachedPT1;
while (pt) {
endValue = (pt.start + pt.change);
pt.change = (pt.change * inv);
pt.start = (endValue - pt.change);
pt = pt.nextNode;
};
};
};
}
override public function set currentTime(n:Number):void{
if (_cyclesComplete == 0){
} else {
if (((this.yoyo) && (((_cyclesComplete % 2) == 1)))){
n = ((this.duration - n) + (_cyclesComplete * (this.cachedDuration + _repeatDelay)));
} else {
n = (n + (_cyclesComplete * (this.duration + _repeatDelay)));
};
};
setTotalTime(n, false);
}
public function get repeatDelay():Number{
return (_repeatDelay);
}
public function killProperties(names:Array):void{
var v:Object = {};
var i:int = names.length;
while (i--) {
v[names[i]] = true;
};
killVars(v);
}
public function set repeatDelay(n:Number):void{
_repeatDelay = n;
setDirtyCache(true);
}
public function set repeat(n:int):void{
_repeat = n;
setDirtyCache(true);
}
override public function complete(skipRender:Boolean=false, suppressEvents:Boolean=false):void{
super.complete(skipRender, suppressEvents);
if (((!(suppressEvents)) && (_dispatcher))){
if ((((this.cachedTotalTime == this.cachedTotalDuration)) && (!(this.cachedReversed)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE));
} else {
if (((this.cachedReversed) && ((this.cachedTotalTime == 0)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REVERSE_COMPLETE));
};
};
};
}
override public function invalidate():void{
this.yoyo = Boolean((this.vars.yoyo == true));
_repeat = ((this.vars.repeat) || (0));
_repeatDelay = ((this.vars.repeatDelay) || (0));
_hasUpdateListener = false;
if (((((!((this.vars.onCompleteListener == null))) || (!((this.vars.onUpdateListener == null))))) || (!((this.vars.onStartListener == null))))){
initDispatcher();
};
setDirtyCache(true);
super.invalidate();
}
public function get timeScale():Number{
return (this.cachedTimeScale);
}
override public function get totalDuration():Number{
if (this.cacheIsDirty){
this.cachedTotalDuration = ((_repeat)==-1) ? 999999999999 : ((this.cachedDuration * (_repeat + 1)) + (_repeatDelay * _repeat));
this.cacheIsDirty = false;
};
return (this.cachedTotalDuration);
}
public static function set globalTimeScale(n:Number):void{
if (n == 0){
n = 0.0001;
};
if (TweenLite.rootTimeline == null){
TweenLite.to({}, 0, {});
};
var tl:SimpleTimeline = TweenLite.rootTimeline;
var curTime:Number = (getTimer() * 0.001);
tl.cachedStartTime = (curTime - (((curTime - tl.cachedStartTime) * tl.cachedTimeScale) / n));
tl = TweenLite.rootFramesTimeline;
curTime = TweenLite.rootFrame;
tl.cachedStartTime = (curTime - (((curTime - tl.cachedStartTime) * tl.cachedTimeScale) / n));
TweenLite.rootFramesTimeline.cachedTimeScale = (TweenLite.rootTimeline.cachedTimeScale = n);
}
public static function fromTo(target:Object, duration:Number, fromVars:Object, toVars:Object):TweenMax{
toVars.startAt = fromVars;
if (fromVars.immediateRender){
toVars.immediateRender = true;
};
return (new TweenMax(target, duration, toVars));
}
public static function allFromTo(targets:Array, duration:Number, fromVars:Object, toVars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array{
toVars.startAt = fromVars;
if (fromVars.immediateRender){
toVars.immediateRender = true;
};
return (allTo(targets, duration, toVars, stagger, onCompleteAll, onCompleteAllParams));
}
public static function pauseAll(tweens:Boolean=true, delayedCalls:Boolean=true):void{
changePause(true, tweens, delayedCalls);
}
public static function getTweensOf(target:Object):Array{
var i:int;
var cnt:uint;
var a:Array = masterList[target];
var toReturn:Array = [];
if (a){
i = a.length;
cnt = 0;
while (i--) {
if (!a[i].gc){
var _temp1 = cnt;
cnt = (cnt + 1);
var _local6 = _temp1;
toReturn[_local6] = a[i];
};
};
};
return (toReturn);
}
public static function get globalTimeScale():Number{
return (((TweenLite.rootTimeline)==null) ? 1 : TweenLite.rootTimeline.cachedTimeScale);
}
public static function killChildTweensOf(parent:DisplayObjectContainer, complete:Boolean=false):void{
var curTarget:Object;
var curParent:DisplayObjectContainer;
var a:Array = getAllTweens();
var i:int = a.length;
while (i--) {
curTarget = a[i].target;
if ((curTarget is DisplayObject)){
curParent = curTarget.parent;
while (curParent) {
if (curParent == parent){
if (complete){
a[i].complete(false);
} else {
a[i].setEnabled(false, false);
};
};
curParent = curParent.parent;
};
};
};
}
public static function delayedCall(delay:Number, onComplete:Function, onCompleteParams:Array=null, useFrames:Boolean=false):TweenMax{
return (new TweenMax(onComplete, 0, {delay:delay, onComplete:onComplete, onCompleteParams:onCompleteParams, immediateRender:false, useFrames:useFrames, overwrite:0}));
}
public static function isTweening(target:Object):Boolean{
var tween:TweenLite;
var a:Array = getTweensOf(target);
var i:int = a.length;
while (i--) {
tween = a[i];
if (((tween.active) || ((((tween.cachedStartTime == tween.timeline.cachedTime)) && (tween.timeline.active))))){
return (true);
};
};
return (false);
}
public static function killAll(complete:Boolean=false, tweens:Boolean=true, delayedCalls:Boolean=true):void{
var isDC:Boolean;
var a:Array = getAllTweens();
var i:int = a.length;
while (i--) {
isDC = (a[i].target == a[i].vars.onComplete);
if ((((isDC == delayedCalls)) || (!((isDC == tweens))))){
if (complete){
a[i].complete(false);
} else {
a[i].setEnabled(false, false);
};
};
};
}
private static function changePause(pause:Boolean, tweens:Boolean=true, delayedCalls:Boolean=false):void{
var isDC:Boolean;
var a:Array = getAllTweens();
var i:int = a.length;
while (i--) {
isDC = (TweenLite(a[i]).target == TweenLite(a[i]).vars.onComplete);
if ((((isDC == delayedCalls)) || (!((isDC == tweens))))){
TweenCore(a[i]).paused = pause;
};
};
}
public static function from(target:Object, duration:Number, vars:Object):TweenMax{
vars.runBackwards = true;
if (!("immediateRender" in vars)){
vars.immediateRender = true;
};
return (new TweenMax(target, duration, vars));
}
public static function allFrom(targets:Array, duration:Number, vars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array{
vars.runBackwards = true;
if (!("immediateRender" in vars)){
vars.immediateRender = true;
};
return (allTo(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams));
}
public static function getAllTweens():Array{
var a:Array;
var i:int;
var ml:Dictionary = masterList;
var cnt:uint;
var toReturn:Array = [];
for each (a in ml) {
i = a.length;
while (i--) {
if (!TweenLite(a[i]).gc){
var _temp1 = cnt;
cnt = (cnt + 1);
var _local8 = _temp1;
toReturn[_local8] = a[i];
};
};
};
return (toReturn);
}
public static function resumeAll(tweens:Boolean=true, delayedCalls:Boolean=true):void{
changePause(false, tweens, delayedCalls);
}
public static function to(target:Object, duration:Number, vars:Object):TweenMax{
return (new TweenMax(target, duration, vars));
}
public static function allTo(targets:Array, duration:Number, vars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array{
var i:int;
var varsDup:Object;
var p:String;
var onCompleteProxy:Function;
var onCompleteParamsProxy:Array;
var targets = targets;
var duration = duration;
var vars = vars;
var stagger = stagger;
var onCompleteAll = onCompleteAll;
var onCompleteAllParams = onCompleteAllParams;
var l:uint = targets.length;
var a:Array = [];
var curDelay:Number = ((vars.delay) || (0));
onCompleteProxy = vars.onComplete;
onCompleteParamsProxy = vars.onCompleteParams;
var lastIndex:int = ((stagger)<=0) ? 0 : (l - 1);
i = 0;
while (i < l) {
varsDup = {};
for (p in vars) {
varsDup[p] = vars[p];
};
varsDup.delay = curDelay;
if ((((i == lastIndex)) && (!((onCompleteAll == null))))){
varsDup.onComplete = function ():void{
if (onCompleteProxy != null){
onCompleteProxy.apply(null, onCompleteParamsProxy);
};
onCompleteAll.apply(null, onCompleteAllParams);
};
};
a[a.length] = new TweenMax(targets[i], duration, varsDup);
curDelay = (curDelay + stagger);
i = (i + 1);
};
return (a);
}
TweenPlugin.activate([AutoAlphaPlugin, EndArrayPlugin, FramePlugin, RemoveTintPlugin, TintPlugin, VisiblePlugin, VolumePlugin, BevelFilterPlugin, BezierPlugin, BezierThroughPlugin, BlurFilterPlugin, ColorMatrixFilterPlugin, ColorTransformPlugin, DropShadowFilterPlugin, FrameLabelPlugin, GlowFilterPlugin, HexColorsPlugin, RoundPropsPlugin, ShortRotationPlugin, {}]);
}
}//package com.greensock
Section 101
//FlashAd (com.newgrounds.components.FlashAd)
package com.newgrounds.components {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.utils.*;
import flash.net.*;
public class FlashAd extends Sprite {
public var background:MovieClip;
private var _showBackground:Boolean;
private var _adURLLoader:URLLoader;
private var _adRect:Sprite;
private var _mask:Shape;
private var _ad:Loader;
private static const DEBUG_AD_URL:String = "http://www.ngads.com/adtest.php";
private static const REMOVED_FROM_STAGE:String = "removedFromStage";
private static var _adResetTime:uint = 0;
private static var _adURL:URLRequest;
public function FlashAd(_arg1:Boolean=true){
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return;
};
Security.allowDomain("server.cpmstar.com");
this._adRect = new Sprite();
this._adRect.graphics.beginFill(0);
this._adRect.graphics.moveTo(0, 0);
this._adRect.graphics.lineTo(300, 0);
this._adRect.graphics.lineTo(300, 250);
this._adRect.graphics.lineTo(0, 250);
this._adRect.graphics.lineTo(0, 0);
this._adRect.graphics.endFill();
this._mask = new Shape();
this._mask.graphics.beginFill(0);
this._mask.graphics.moveTo(0, 0);
this._mask.graphics.lineTo(300, 0);
this._mask.graphics.lineTo(300, 250);
this._mask.graphics.lineTo(0, 250);
this._mask.graphics.lineTo(0, 0);
this._mask.graphics.endFill();
addChild(this._adRect);
this._adRect.addChild(this._mask);
this._adRect.visible = false;
x = Math.round(x);
y = Math.round(y);
scaleX = 1;
scaleY = 1;
if (this.background){
if (this.background.ngLinkButton){
this.background.ngLinkButton.addEventListener(MouseEvent.CLICK, this.linkClickHandler);
};
if (this.background.loadingClip){
this.background.loadingClip.visible = false;
};
};
if (API.isFlashVersion(9, 0, 28)){
addEventListener(REMOVED_FROM_STAGE, this.onRemovedFromStage);
};
if (API.adsApproved){
this.loadAdFeed(API.adFeedURL);
} else {
API.addEventListener(APIEvent.ADS_APPROVED, this.onAdsApproved, false, 0, true);
};
this.showBackground = _arg1;
}
public function get showBackground():Boolean{
return (this._showBackground);
}
public function set showBackground(_arg1:Boolean):void{
this._showBackground = _arg1;
if (this.background){
this.background.visible = _arg1;
this._adRect.mask = (_arg1) ? this.background.adMask : null;
};
}
public function removeAd():void{
removeEventListener(REMOVED_FROM_STAGE, this.onRemovedFromStage);
if (((this.background) && (this.background.loadingClip))){
this.background.loadingClip.visible = false;
};
if (this._adURLLoader){
try {
this._adURLLoader.close();
} catch(e:Error) {
};
};
if (this._adRect){
this._adRect.visible = false;
};
if (this._ad){
trace("[NewgroundsAPI] :: Ad removed");
try {
this._ad.close();
} catch(e:Error) {
};
try {
Object(this._ad).unloadAndStop(true);
} catch(e:Error) {
_ad.unload();
};
if (this._ad.parent){
this._ad.parent.removeChild(this._ad);
};
};
this._ad = null;
}
private function onAdsApproved(_arg1:APIEvent):void{
API.removeEventListener(APIEvent.ADS_APPROVED, this.onAdsApproved, false);
if (_arg1.success){
this.loadAdFeed(API.adFeedURL);
} else {
trace("[NewgroundsAPI] :: No ad feed URL supplied to Newgrounds API ad!");
};
}
private function loadAdFeed(_arg1:String):void{
var adFeedURL = _arg1;
this._adURLLoader = new URLLoader();
this._adURLLoader.addEventListener(Event.COMPLETE, this.onAdFeedLoaded);
this._adURLLoader.addEventListener(IOErrorEvent.IO_ERROR, this.onAdError);
this._adURLLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onAdError);
if (!adFeedURL){
trace("[Newgrounds API] :: Invalid feed URL!");
return;
};
if (this.hasAdElapsed){
if (adFeedURL.indexOf("?") > -1){
_adURL = new URLRequest(((adFeedURL + "&random=") + Math.random()));
} else {
_adURL = new URLRequest(((adFeedURL + "?random=") + Math.random()));
};
};
try {
this._adURLLoader.load(_adURL);
} catch(e:Error) {
onAdError(null);
};
if (((this.background) && (this.background.loadingClip))){
this.background.loadingClip.visible = true;
};
}
private function loadAd(_arg1:String):void{
var url = _arg1;
if (this._ad){
this.removeAd();
};
this._ad = new Loader();
this._ad.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onAdLoaded);
this._ad.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onAdError);
try {
Object(this._ad.contentLoaderInfo).uncaughtErrorEvents.addEventListener("uncaughtError", function (_arg1:Event):void{
});
} catch(error:Error) {
};
this._ad.load(new URLRequest(url), new LoaderContext(false, new ApplicationDomain(null)));
if (((this.background) && (this.background.loadingClip))){
this.background.loadingClip.visible = true;
};
}
private function onAdFeedLoaded(_arg1:Event):void{
var _local2:URLLoader = URLLoader(_arg1.target);
if (((_local2.data) && (!((_local2.data == ""))))){
this.loadAd((_local2.data as String));
} else {
dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad")));
if (((this.background) && (this.background.loadingClip))){
this.background.loadingClip.visible = false;
};
};
}
private function onAdFeedError(_arg1:Event):void{
trace("[NewgroundsAPI] :: Unable to load ad feed!");
if (((this.background) && (this.background.loadingClip))){
this.background.loadingClip.visible = false;
};
}
private function onAdError(_arg1:Event):void{
dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad")));
this.removeAd();
}
private function onAdLoaded(_arg1:Event):void{
this._adRect.addChild(this._ad);
this._ad.mask = this._mask;
this._adRect.visible = true;
if (this.background){
if (this._showBackground){
this._adRect.mask = this.background.adMask;
};
if (this.background.loadingClip){
this.background.loadingClip.visible = false;
};
};
trace("[NewgroundsAPI] :: Ad loaded!");
dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, true));
}
private function onRemovedFromStage(_arg1:Event):void{
this.removeAd();
}
private function get hasAdElapsed():Boolean{
if (getTimer() >= _adResetTime){
_adResetTime = (getTimer() + ((1000 * 60) * 5));
return (true);
};
return (false);
}
private function linkClickHandler(_arg1:MouseEvent):void{
API.loadNewgrounds();
}
}
}//package com.newgrounds.components
Section 102
//MedalPopup (com.newgrounds.components.MedalPopup)
package com.newgrounds.components {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class MedalPopup extends MovieClip {
public var medalNameText:TextField;
public var medalValueText:TextField;
public var medalContainer:Sprite;
private var _initialized:Boolean;
private var _medal:Medal;
private var _medalIcon:Bitmap;
private var _medalQueue:Array;
private var _popDelay:Timer;
public function MedalPopup(){
this._medalQueue = [];
this._popDelay = new Timer(3000, 1);
super();
addFrameScript(0, this.frame1, 9, this.frame10, 18, this.frame19);
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return;
};
visible = false;
addEventListener(Event.ENTER_FRAME, this.enterFrameHandler);
stop();
API.addEventListener(APIEvent.MEDAL_UNLOCKED, this.onMedalUnlocked, false, 0, true);
this._popDelay.addEventListener(TimerEvent.TIMER, this.timerHandler);
}
public function get popupTime():Number{
return ((this._popDelay.delay / 1000));
}
public function set popupTime(_arg1:Number):void{
if (isNaN(_arg1)){
_arg1 = 3;
};
this._popDelay.delay = (_arg1 * 1000);
}
private function enterFrameHandler(_arg1:Event):void{
var myIndex:uint;
var topIndex:uint;
var event = _arg1;
if (((this._medalQueue.length) && (!(visible)))){
this._medal = this._medalQueue.pop();
this._popDelay.start();
gotoAndPlay("medal_show");
visible = true;
};
if (((visible) && (parent))){
try {
myIndex = parent.getChildIndex(this);
topIndex = (parent.numChildren - 1);
if (myIndex != topIndex){
parent.setChildIndex(this, topIndex);
};
} catch(error:Error) {
};
};
}
private function onMedalUnlocked(_arg1:APIEvent):void{
if (((((_arg1.success) && (_arg1.data))) && ((_arg1.data.medal is Medal)))){
this._medalQueue.push(Medal(_arg1.data.medal));
};
}
private function showMedalInfo():void{
if (!this._medal){
return;
};
if (this.medalContainer){
this._medalIcon = this._medal.createIconBitmap();
this.medalContainer.addChild(this._medalIcon);
};
if (this.medalNameText){
this.medalNameText.text = this._medal.name;
};
if (this.medalValueText){
this.medalValueText.text = (this._medal.value.toString() + "pts");
};
this._popDelay.start();
stop();
}
private function timerHandler(_arg1:TimerEvent):void{
if (((this._medalIcon) && (this._medalIcon.parent))){
this._medalIcon.parent.removeChild(this._medalIcon);
this._medalIcon = null;
};
gotoAndPlay("medal_hide");
this._popDelay.stop();
}
function frame1(){
stop();
}
function frame10(){
this.showMedalInfo();
stop();
}
function frame19(){
stop();
visible = false;
}
}
}//package com.newgrounds.components
Section 103
//ScoreTable (com.newgrounds.components.ScoreTable)
package com.newgrounds.components {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.text.*;
public class ScoreTable extends MovieClip {
public var boardNameText:TextField;
public var ngLinkButton:DisplayObject;
public var scoreRows:Sprite;
public var periodList:MovieClip;
private var _period:String;// = "Today"
private var _boardName:String;// = "High Scores"
public static const RESULTS_PER_PAGE:uint = 10;
public function ScoreTable(_arg1:String="High Scores", _arg2:String="Today"){
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return;
};
stop();
if (((_arg1) && (!((_arg1 == ""))))){
this._boardName = _arg1;
};
if (stage){
addEventListener(Event.RENDER, this.renderHandler);
stage.invalidate();
} else {
this.init();
this.loadScores();
};
}
public function get boardName():String{
return (this._boardName);
}
public function set boardName(_arg1:String):void{
if (((this.boardName) && (!((this.boardName == ""))))){
this._boardName = _arg1;
} else {
this.boardName = "High Scores";
};
}
public function get period():String{
return (this._period);
}
public function set period(_arg1:String):void{
this._period = _arg1;
}
private function init():void{
stop();
this.clearBoard();
this._period = this.period;
if (this.periodList){
this.periodList.buttonMode = true;
this.periodList.useHandCursor = true;
this.periodList.gotoAndStop("listIdle");
this.periodList.addEventListener(MouseEvent.CLICK, this.periodListClickHandler);
};
if (this.ngLinkButton){
this.ngLinkButton.addEventListener(MouseEvent.CLICK, this.onNgLinkClicked);
};
}
private function onNgLinkClicked(_arg1:MouseEvent):void{
API.loadNewgrounds();
}
private function renderHandler(_arg1:Event):void{
removeEventListener(Event.RENDER, this.renderHandler);
this.init();
this.loadScores();
}
private function periodListClickHandler(_arg1:MouseEvent):void{
if (!this.periodList){
return;
};
if (this.periodList.currentLabel == "listIdle"){
this.periodList.gotoAndStop("listSelecting");
} else {
if (_arg1.target == this.periodList.period0){
this.period = ScoreBoardPeriod.TODAY;
this.loadScores();
} else {
if (_arg1.target == this.periodList.period1){
this.period = ScoreBoardPeriod.WEEK;
this.loadScores();
} else {
if (_arg1.target == this.periodList.period2){
this.period = ScoreBoardPeriod.MONTH;
this.loadScores();
} else {
if (_arg1.target == this.periodList.period3){
this.period = ScoreBoardPeriod.YEAR;
this.loadScores();
} else {
if (_arg1.target == this.periodList.period4){
this.period = ScoreBoardPeriod.ALL_TIME;
this.loadScores();
};
};
};
};
};
this.periodList.gotoAndStop("listIdle");
};
}
private function clearBoard():void{
var _local2:MovieClip;
if (!this.scoreRows){
return;
};
var _local1:uint;
while (_local1 < RESULTS_PER_PAGE) {
_local2 = this.scoreRows[("score_row_" + _local1)];
if (_local2){
_local2.gotoAndStop(((_local1 % 2) + 1));
if (_local2.positionText){
_local2.positionText.text = "";
};
if (_local2.usernameText){
_local2.usernameText.text = "";
};
if (_local2.scoreText){
_local2.scoreText.text = "";
};
};
_local1++;
};
}
public function loadScores(_arg1:uint=1):void{
this.clearBoard();
if (((this.periodList) && (this.periodList.periodText))){
this.periodList.periodText.text = this._period;
};
if (this.boardNameText){
this.boardNameText.text = this._boardName;
};
var _local2:ScoreBoard = API.getScoreBoard(this._boardName);
if (!_local2){
trace((("[WARNING] :: Could not initialize the scoreboard for '" + this._boardName) + "'"));
return;
};
API.addEventListener(APIEvent.SCORES_LOADED, this.onScoresLoaded, false, 0, true);
_local2.loadScores(this._period, _arg1, RESULTS_PER_PAGE);
}
private function onScoresLoaded(_arg1:APIEvent):void{
var _local4:MovieClip;
API.removeEventListener(APIEvent.SCORES_LOADED, this.onScoresLoaded);
var _local2:ScoreBoard = (_arg1.data.board as ScoreBoard);
if (((((!(_arg1.success)) || (!(_local2)))) || (!(_local2.scores)))){
this.clearBoard();
return;
};
if (!this.scoreRows){
return;
};
var _local3:uint;
while (_local3 < RESULTS_PER_PAGE) {
_local4 = this.scoreRows[("score_row_" + _local3)];
if (((_local4) && (_local2.scores[_local3]))){
if (_local4.positionText){
_local4.positionText.text = (_local2.scores[_local3].position.toString() + ":");
};
if (_local4.usernameText){
_local4.usernameText.text = _local2.scores[_local3].username;
};
if (_local4.scoreText){
_local4.scoreText.text = _local2.scores[_local3].value.toString();
};
};
_local3++;
};
}
}
}//package com.newgrounds.components
Section 104
//API (com.newgrounds.API)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import com.newgrounds.components.*;
import flash.system.*;
import flash.utils.*;
import com.adobe.serialization.json.*;
import flash.net.*;
import com.adobe.crypto.*;
import com.adobe.images.*;
public class API {
public static const VERSION:String = "2.4.18";
private static const GATEWAY_URL:String = "http://www.ngads.com/gateway_v2.php";
private static const AD_TERMS_URL:String = "http://www.newgrounds.com/wiki/flashads/terms/";
private static const COMMANDS_WIKI_URL:String = "http://www.newgrounds.com/wiki/flashapi/commands/";
private static var do_echo:Boolean = false;
private static var _debug:Boolean = true;
private static var _connected:Boolean = false;
private static var _isMetadataLoaded:Boolean = false;
private static var _preloadComplete:Boolean = false;
private static var _adsApproved:Boolean = false;
private static var _saveGroupId:uint;
private static var _saveFileId:uint;
private static var _trackerId:uint;
private static var _movieId:String;
private static var _encryptionKey:String;
private static var _url:String;
private static var _host:String;
private static var connected:Boolean;
private static var version:String;
private static var ad_url:String;
private static var _fakeSession:Boolean = false;
private static var publisher_id:uint;
private static var session_id:String;
private static var user_email:String;
private static var user_name:String;
private static var user_id:uint;
private static var userpage_format:String;
private static var _medals:Array;
private static var timeoutTimer:Timer = new Timer(8000, 1);
private static var _userpageFormat:String;
private static var _scoreboards:Array = new Array();
private static var _bridge:Bridge;
private static var save_file:SaveFile;
private static var _imageFilePath:String;
private static var _saveFilePath:String;
private static var _saveGroups:Array = [];
private static var root:DisplayObject;
private static var _eventDispatcher:EventDispatcher = new EventDispatcher();
private static var score_page_counts:Object = new Object();
private static var compression_radix:String = "/g8236klvBQ#&|;Zb*7CEA59%s`Oue1wziFp$rDVY@TKxUPWytSaGHJ>dmoMR^<0~4qNLhc(I+fjn)X";
private static var compressor:BaseN = new BaseN(compression_radix);
public static var errors:Dictionary = APIError.init_codes();
private static var sharedObjects:Dictionary = new Dictionary();
private static var _preloadAssets:Array = [];
public static var periods:Object = getPeriodAliases();
private static var period_aliases:Object = {t:{name:"Today", alias:"TODAY"}, p:{name:"Yesterday", alias:"YESTERDAY"}, w:{name:"This Week", alias:"THIS_WEEK"}, m:{name:"This Month", alias:"THIS_MONTH"}, y:{name:"This Year", alias:"THIS_YEAR"}, a:{name:"All-Time", alias:"ALL_TIME"}};
private static var secureCommand:String;
public static function get adFeedURL():String{
return (ad_url);
}
public static function get preloadComplete():Boolean{
return (_preloadComplete);
}
private static function assertConnected():Boolean{
if (!_connected){
return (false);
};
return (true);
}
public static function setVersion(_arg1:String):void{
if (((_arg1) && (!((_arg1 == ""))))){
version = _arg1;
};
}
public static function setUserEmail(_arg1:String):void{
user_email = _arg1;
}
public static function setFakeSession(_arg1:Boolean):void{
_fakeSession = _arg1;
}
public static function getFakeSession():Boolean{
return (_fakeSession);
}
public static function get debugMode():Boolean{
return (_debug);
}
public static function set debugMode(_arg1:Boolean):void{
_debug = _arg1;
}
public static function getTrackerID():uint{
return (_trackerId);
}
public static function getUserID():uint{
return (user_id);
}
public static function getUserName():String{
return (user_name);
}
public static function isConnected():Boolean{
return (_connected);
}
public static function getID():uint{
return (_trackerId);
}
public static function getOfficialURL():String{
var _local1:String = ((((((GATEWAY_URL + "?tracker_id=") + _movieId) + "&command_id=") + getCommandID("loadOfficalVersion")) + "&seed=") + Math.random());
if (debugMode){
_local1 = (_local1 + "&debug=1");
};
return (_local1);
}
public static function get adsApproved():Boolean{
return (_adsApproved);
}
public static function hasUserSession():Boolean{
return (((((!((session_id == null))) && (!((session_id == ""))))) && (!((publisher_id == 0)))));
}
public static function isNewgrounds():Boolean{
return ((((publisher_id == 1)) || (((_host) && ((_host.toLowerCase().indexOf("ungrounded.net") > -1))))));
}
public static function hostIsCompatible():Boolean{
return (!((publisher_id == 0)));
}
public static function hasUserEmail():Boolean{
return (((!((user_email == null))) && (!((user_email == "")))));
}
public static function connectionTimeOut(_arg1:Event=null):void{
dispatchEvent(new APIEvent(APIEvent.API_CONNECTED, false, new APIError("CONNECTION_FAILED", "Connection to NewgroundsAPI gateway timed out.")));
}
public static function connect(_arg1:LoaderInfo, _arg2:String, _arg3:String=null):void{
var loaderInfo = _arg1;
var m_id = _arg2;
var encrypt_key = _arg3;
if (!loaderInfo){
fatalError("Null loaderInfo paremeter passed in to connectMovie!", "");
return;
};
try {
if (loaderInfo.loader){
loaderInfo = loaderInfo.loader.loaderInfo;
};
} catch(error:Error) {
};
_url = loaderInfo.url;
_host = _url;
if ((((_host.indexOf("http://") > -1)) || ((_host.indexOf("https://") > -1)))){
_host = _host.split("/")[2].toLowerCase();
} else {
_host = "localhost";
};
var flashVars:Object = loaderInfo.parameters;
if (isPublishedHost()){
debugMode = false;
};
if (((!(debugMode)) && (flashVars))){
if (flashVars.NewgroundsAPI_UserName){
user_name = flashVars.NewgroundsAPI_UserName;
};
if (flashVars.NewgroundsAPI_UserID){
user_id = flashVars.NewgroundsAPI_UserID;
};
if (flashVars.NewgroundsAPI_PublisherID){
publisher_id = flashVars.NewgroundsAPI_PublisherID;
} else {
publisher_id = 0;
};
if (flashVars.NewgroundsAPI_UserpageFormat){
_userpageFormat = flashVars.NewgroundsAPI_UserpageFormat;
};
if (flashVars.NewgroundsAPI_SessionID){
session_id = flashVars.NewgroundsAPI_SessionID;
};
if (flashVars.NewgroundsAPI_SaveGroupID){
_saveGroupId = flashVars.NewgroundsAPI_SaveGroupID;
};
if (flashVars.NewgroundsAPI_SaveFileID){
_saveFileId = flashVars.NewgroundsAPI_SaveFileID;
};
if (flashVars.NewgroundsAPI_SandboxID){
_bridge = new Bridge(flashVars.NewgroundsAPI_SandboxID);
};
} else {
publisher_id = 1;
if (_fakeSession){
session_id = "D3bu64p1U53R";
user_id = 10;
user_name = "API-Debugger";
};
};
if (connected){
fatalError("NewgroundsAPI.connect() - connection already in progress", "connect");
return;
};
timeoutTimer.start();
if (!m_id){
fatalError("NewgroundsAPI.connectMovie() - missing required movieId parameter", "connectMovie");
};
_movieId = String(m_id);
_trackerId = uint(_movieId.substring(0, _movieId.indexOf(":")));
_encryptionKey = encrypt_key;
connected = true;
sendCommand("connectMovie", {host:getHost(), movie_version:version});
}
private static function getHost():String{
return (_host);
}
public static function isPublishedHost():Boolean{
return (((!((getHost() == "localhost"))) && ((getHost().indexOf("file://") == -1))));
}
public static function loadUserPage(_arg1:uint=0, _arg2:String=null):Boolean{
var _local3:String;
if ((((_arg1 == 0)) && ((_arg2 == null)))){
if (hasUserSession()){
_arg1 = user_id;
_arg2 = user_name;
} else {
return (false);
};
};
if (publisher_id == 1){
_local3 = (("http://" + _arg2.toLowerCase()) + ".newgrounds.com");
navigateToURL(new URLRequest(_local3), "_blank");
return (true);
};
if (userpage_format){
_local3 = userpage_format;
_local3 = _local3.split(":user_id:").join(_arg1.toString());
_local3 = _local3.split(":user_name:").join(escape(_arg2));
navigateToURL(new URLRequest(_local3), "_blank");
return (true);
};
return (false);
}
public static function loadNewgrounds():void{
sendCommand("loadNewgrounds", {host:getHost()}, true);
}
public static function loadOfficialURL():void{
navigateToURL(new URLRequest(getOfficialURL()));
}
public static function loadMySite():void{
sendCommand("loadMySite", {host:getHost()}, true);
}
public static function loadCustomLink(_arg1:String):void{
sendCommand("loadCustomLink", {host:getHost(), link:_arg1}, true);
}
public static function logCustomEvent(_arg1:String):void{
sendCommand("logCustomEvent", {host:getHost(), event:_arg1});
}
public static function getScoreBoard(_arg1:String):ScoreBoard{
var _local2:ScoreBoard;
for each (_local2 in _scoreboards) {
if (_local2.name == _arg1){
return (_local2);
};
};
return (null);
}
public static function getScoreBoardById(_arg1:uint):ScoreBoard{
var _local2:ScoreBoard;
for each (_local2 in _scoreboards) {
if (_local2.id == _arg1){
return (_local2);
};
};
return (null);
}
public static function postScore(_arg1:String, _arg2:uint, _arg3:String=""):void{
if (((!(_arg1)) || ((_arg1 == "")))){
sendError({command_id:getCommandID("postScore")}, new APIError("MISSING_PARAM", "missing required parameter(s)"));
return;
};
if (_arg3 == null){
_arg3 = "";
};
sendSecureCommand("postScore", {user_name:user_name, board:_arg1, value:_arg2, publisher_id:publisher_id, tag:_arg3});
}
public static function loadScores(_arg1:String, _arg2:String=null, _arg3:String=null):void{
var _local4 = "loadScores";
var _local5:ScoreBoard = getScoreBoard(_arg1);
if (((!(_local5)) || (!(_local5.id)))){
sendError({command_id:getCommandID(_local4)}, new APIError("MISSING_PARAM", "missing required ScoreBoard instance"));
return;
};
var _local6:Object = {};
_local6.publisher_id = publisher_id;
if (_arg2){
_local6.period = _arg2;
} else {
_local6.period = _local5.period;
};
_local6.board = _local5.id;
_local6.num_results = _local5.num_results;
_local6.page = _local5.page;
if (((!(_arg3)) || ((_arg3 == "")))){
_local6.tag = _local5.tag;
} else {
_local6.tag = _arg3;
};
sendCommand(_local4, _local6);
}
public static function loadScoresInRange(_arg1:String, _arg2:String="All-Time", _arg3:uint=1, _arg4:uint=10):void{
if (((!(_arg1)) || ((_arg1 == "")))){
sendError({command_id:getCommandID("postScore")}, new APIError("MISSING_PARAM", "missing required parameter(s)"));
return;
};
var _local5:ScoreBoard = getScoreBoard(_arg1);
if (_local5){
_local5.loadScoresInRange(_arg2, _arg3, _arg4);
} else {
sendWarning((("loadScoresInRange: Scoreboard " + _arg1) + " could not be found."));
};
}
private static function populateMedals(_arg1:Array):void{
var _local2:uint;
var _local3:Object;
if (_medals === null){
_medals = new Array();
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2];
_medals.push(Medal.createFromObject(_local3));
_local2++;
};
};
sendMessage("Medals loaded!");
}
private static function populateSaveGroups(_arg1:Array):void{
var _local3:SaveGroup;
_saveGroups = [];
var _local2:uint;
while (_local2 < _arg1.length) {
_local3 = SaveGroup.createFromObject(_arg1[_local2]);
_saveGroups.push(_local3);
_local2++;
};
}
private static function populateScoreBoards(_arg1:Array):void{
_scoreboards = [];
var _local2:uint;
while (_local2 < _arg1.length) {
_scoreboards.push(new ScoreBoard(_arg1[_local2].id, _arg1[_local2].name, ""));
_local2++;
};
}
public static function getMedals():Array{
return (_medals);
}
public static function getMedalById(_arg1:uint):Medal{
var _local2:Medal;
for each (_local2 in _medals) {
if (_local2.id == _arg1){
return (_local2);
};
};
return (null);
}
public static function getMedal(_arg1:String):Medal{
var _local2:Medal;
for each (_local2 in _medals) {
if (_local2.name == _arg1){
return (_local2);
};
};
return (null);
}
public static function unlockMedal(_arg1:String):void{
var _local3:Object;
var _local4:Object;
if (((!(_arg1)) || ((_arg1 == "")))){
sendError({command_id:getCommandID("unlockMedal")}, new APIError("MISSING_PARAM", "missing required medal name"));
return;
};
var _local2:Medal = getMedal(_arg1);
if (!_local2){
sendMessage(("No medal with name: " + _arg1));
return;
};
if (((hasUserSession()) || (debugMode))){
sendMessage((("Attempting to unlock '" + _local2.name) + "'"));
if (_local2.unlocked){
sendWarning((("Medal '" + _local2.name) + "' is already unlocked!"));
return;
};
_local3 = new Object();
_local3.medal_id = _local2.id;
sendSecureCommand("unlockMedal", _local3);
} else {
sendMessage(("Locally unlocking " + _local2.name));
if (_local2.unlocked){
sendWarning((("Medal '" + _local2.name) + "' is already unlocked!"));
return;
};
_local2.unlocked = true;
_local4 = loadLocal("medals_unlocked");
if (!_local4){
_local4 = new Object();
};
_local4[_local2.id.toString()] = true;
saveLocal("medals_unlocked", _local4);
callListener(APIEvent.UNLOCK_MEDAL, true, {medal:_local2});
};
}
public static function loadMedals():void{
if (_medals){
dispatchEvent(new APIEvent(APIEvent.MEDALS_LOADED, true, {medals:getMedals()}));
return;
};
var _local1:Object = new Object();
if (hasUserSession()){
_local1.publisher_id = publisher_id;
_local1.user_id = user_id;
};
sendCommand("getMedals", _local1);
}
public static function saveLocal(_arg1:String, _arg2:Object, _arg3:uint=0):void{
var sharedObj:SharedObject;
var save_id = _arg1;
var save_data = _arg2;
var size_allocation = _arg3;
try {
if (!sharedObjects[save_id]){
sharedObjects[save_id] = SharedObject.getLocal(((("ng_ap_secure_" + _trackerId) + "_") + save_id));
};
sharedObj = sharedObjects[save_id];
sharedObj.data[save_id] = encodeData(save_data);
sharedObj.flush();
} catch(e:Error) {
sendWarning(("saveLocal ERROR: " + e));
};
}
public static function loadLocal(_arg1:String):Object{
var sharedObj:SharedObject;
var save_id = _arg1;
try {
if (!sharedObjects[save_id]){
sharedObjects[save_id] = SharedObject.getLocal(((("ng_ap_secure_" + _trackerId) + "_") + save_id));
};
sharedObj = sharedObjects[save_id];
if (((((sharedObj) && (sharedObj.data))) && (sharedObj.data[save_id]))){
return (decodeData(sharedObj.data[save_id]));
} else {
return (null);
};
} catch(e:Error) {
sendWarning(("loadLocal ERROR: " + e));
};
return (null);
}
public static function encodeData(_arg1:Object):String{
return (compressHex(RC4.encrypt(JSON.encode(_arg1), _encryptionKey)));
}
public static function decodeData(_arg1:String){
return (JSON.decode(RC4.decrypt(uncompressHex(_arg1), _encryptionKey)));
}
private static function compressHex(_arg1:String):String{
var _local2:uint = (_arg1.length % 6);
var _local3 = "";
var _local4:uint;
while (_local4 < _arg1.length) {
_local3 = (_local3 + compressor.encode(uint(("0x" + _arg1.substr(_local4, 6))), 4));
_local4 = (_local4 + 6);
};
return ((_local2.toString() + _local3));
}
private static function uncompressHex(_arg1:String):String{
var _local4:uint;
var _local6:String;
var _local7:uint;
var _local8:String;
var _local2:uint = uint(_arg1.charAt(0));
var _local3 = "";
var _local5:uint = 1;
while (_local5 < _arg1.length) {
_local6 = _arg1.substr(_local5, 4);
_local7 = uint(compressor.decode(_local6));
_local8 = _local7.toString(16);
if ((_local5 + 4) < _arg1.length){
_local4 = 6;
} else {
_local4 = _local2;
};
while (_local8.length < _local4) {
_local8 = ("0" + _local8);
};
_local3 = (_local3 + _local8);
_local5 = (_local5 + 4);
};
return (_local3);
}
public static function getSaveGroupById(_arg1:uint):SaveGroup{
if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){
sendWarning("No save groups found");
return (null);
};
var _local2:uint;
while (_local2 < _saveGroups.length) {
if (_saveGroups[_local2].id == _arg1){
return (_saveGroups[_local2]);
};
_local2++;
};
return (null);
}
public static function getSaveGroup(_arg1:String):SaveGroup{
if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){
sendWarning("No save groups found");
return (null);
};
var _local2:uint;
while (_local2 < _saveGroups.length) {
if (_saveGroups[_local2].name == _arg1){
return (_saveGroups[_local2]);
};
_local2++;
};
return (null);
}
public static function getCurrentSaveFile(){
return (save_file);
}
public static function setCurrentSaveFile(_arg1:SaveFile){
save_file = _arg1;
}
public static function newSaveQuery(_arg1:String):SaveGroupQuery{
var _local2:SaveGroup = getSaveGroup(_arg1);
if (_local2){
return (_local2.newQuery());
};
return (null);
}
public static function executeSaveQuery(_arg1:SaveGroupQuery):void{
sendCommand("lookupSaveFiles", {publisher_id:publisher_id, group_id:_arg1.groupId, query:JSON.encode(_arg1.toObject())}, false, null, _arg1);
}
public static function lookupSaveFiles(_arg1:SaveGroup):void{
var _local2:SaveGroupQuery = _arg1.getQuery(false);
sendCommand("lookupSaveFiles", {publisher_id:publisher_id, group_id:_arg1.id, query:_local2.toObject()}, false, null, _local2);
}
public static function checkFilePrivledges(_arg1:SaveFile):void{
sendCommand("checkFilePrivs", {group:_arg1.groupId, filename:_arg1.name, user_id:(user_id) ? user_id : 0, publisher_id:publisher_id});
}
public static function newSaveFile(_arg1:String):SaveFile{
var _local2:SaveGroup = getSaveGroup(_arg1);
if (_local2){
return (new SaveFile(_local2));
};
sendError({command_id:"newSaveFile"}, new APIError("INVALID_SAVE_GROUP", (("'" + _local2) + "' is not a valid save group.")));
return (null);
}
public static function saveFile(_arg1:SaveFile, _arg2:Boolean=false, _arg3:Boolean=false):void{
var _local4:Object = _arg1.toObject();
_local4.user_name = user_name;
if (_arg1.id){
_local4.save_id = _arg1.id;
};
_local4.overwrite = (_arg2) ? 1 : 0;
if (_arg3){
_local4.draft = 1;
};
var _local5:ByteArray = new ByteArray();
if ((_arg1.contents is ByteArray)){
_local5.writeByte(0);
_local5.writeBytes(_arg1.contents);
} else {
_local5.writeByte(1);
_local5.writeObject(_arg1.contents);
};
_local5.compress();
var _local6:Object = new Object();
_local6.file = _local5;
if (_arg1.thumbnail){
_local6.thumbnail = PNGEncoder.encode(_arg1.thumbnail);
};
save_file = _arg1;
sendSecureCommand("saveFile", _local4, null, _local6, _arg1);
}
public static function rateSaveFile(_arg1:SaveFile, _arg2:SaveRating, _arg3:Number):void{
sendSecureCommand("rateSaveFile", {group:_arg1.groupId, save_id:_arg1.id, rating_id:_arg2.id, vote:_arg3, user_id:user_id}, null, null, _arg1);
}
public static function loadSaveFile(_arg1:Number, _arg2:Boolean=true){
var _local3:Object = {publisher_id:publisher_id, save_id:_arg1, get_contents:_arg2};
save_file = null;
sendCommand("loadSaveFile", _local3);
}
public static function loadFilesByDate(_arg1:String, _arg2:Boolean=true, _arg3:String=null, _arg4=null):void{
var _local7:*;
var _local5:SaveGroup = getSaveGroup(_arg1);
if (!_local5){
_local7 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name.");
sendError({command_id:"loadFilesByDate"}, _local7);
return;
};
var _local6:SaveGroupQuery = _local5.newQuery();
if (_arg3){
_local6.addKeyCondition(_arg3, "=", _arg4);
};
_local6.sortOn(SaveGroupQuery.CREATED_ON, _arg2);
_local6.execute();
}
public static function loadFilesByViews(_arg1:String, _arg2:Boolean=true, _arg3:String=null, _arg4=null):void{
var _local7:*;
var _local5:SaveGroup = getSaveGroup(_arg1);
if (!_local5){
_local7 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name.");
sendError({command_id:"loadFilesByViews"}, _local7);
return;
};
var _local6:SaveGroupQuery = _local5.newQuery();
if (_arg3){
_local6.addKeyCondition(_arg3, "=", _arg4);
};
_local6.sortOn(SaveGroupQuery.TOTAL_VIEWS, _arg2);
_local6.execute();
}
public static function loadFilesByRating(_arg1:String, _arg2:String, _arg3:Boolean=true, _arg4:String=null, _arg5=null):void{
var _local8:*;
var _local6:SaveGroup = getSaveGroup(_arg1);
if (!_local6){
_local8 = new APIError("QUERY_INCOMPLETE", "The query could not be preformed, check the spelling of your save group name.");
sendError({command_id:"loadFilesByDate"}, _local8);
return;
};
var _local7:SaveGroupQuery = _local6.newQuery();
if (_arg4){
_local7.addKeyCondition(_arg4, "=", _arg5);
};
_local7.sortOnRating(_arg2, _arg3);
_local7.execute();
}
public static function onRemoteAuthentication(_arg1:String){
var _local2:Object = JSON.decode(RC4.decrypt(_arg1, _encryptionKey));
user_id = _local2.NewgroundsAPI_UserID;
user_name = _local2.NewgroundsAPI_UserName;
session_id = _local2.NewgroundsAPI_SessionID;
publisher_id = _local2.NewgroundsAPI_PublisherID;
}
private static function doEvent(_arg1:Object):void{
var _local2:String;
var _local3:Object;
var _local4:String;
var _local5:Boolean;
var _local6:ScoreBoard;
var _local7:Array;
var _local8:*;
var _local9:String;
var _local10:Medal;
var _local11:SaveGroup;
var _local12:Object;
var _local13:Object;
var _local14:Object;
var _local15:SaveFile;
var _local16:uint;
var _local17:Object;
var _local18:uint;
var _local19:APIError;
var _local20:Object;
switch (getCommandName(_arg1.command_id)){
case "connectMovie":
timeoutTimer.stop();
if (_arg1.success){
sendMessage("You have successfully connected to the Newgrounds API Gateway");
sendMessage((("Movie identified as \"" + _arg1.movie_name) + "\""));
callListener(APIEvent.API_CONNECTED, _arg1.success, {title:_arg1.movie_name});
} else {
callListener(APIEvent.API_CONNECTED, _arg1.success, {});
return;
};
_local5 = false;
if (_arg1.ad_status === -1){
_local2 = "This movie was not approved to run Flash Ads.";
sendWarning(_local2);
sendWarning((("visit " + AD_TERMS_URL) + " to view our approval guidelines"));
if (!_arg1.ad_url){
callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", _local2));
} else {
_local5 = true;
};
} else {
if (_arg1.ad_status === 0){
_local2 = "Flash Ads are currently awaiting approval.";
sendNotice(_local2);
if (!_arg1.ad_url){
callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", _local2));
} else {
_local5 = true;
};
};
};
if (_arg1.ad_url){
ad_url = unescape(_arg1.ad_url);
if (!_local5){
sendMessage("This movie has been approved to run Flash Ads!");
};
_adsApproved = true;
callListener(APIEvent.ADS_APPROVED, true);
};
if (_arg1.deny_host){
_local2 = (getHost() + " does not have permission to run this movie!");
sendWarning(_local2);
sendWarning(("\tUpdate your API configuration to unblock " + getHost()));
callListener(APIEvent.HOST_BLOCKED, true, {real_url:unescape(_arg1.movie_url), url:getOfficialURL()});
};
if (_arg1.movie_version){
sendWarning("According to your API Configuration, this version is out of date.");
if (version){
sendWarning(("\tThe this movie is version " + version));
};
sendWarning(("\tThe most current version is " + _arg1.movie_version));
callListener(APIEvent.NEW_VERSION_AVAILABLE, true, {version:_arg1.movie_version, real_url:unescape(_arg1.movie_url), url:getOfficialURL()});
};
if (_arg1.request_portal_url){
sendCommand("setPortalID", {portal_url:_url});
};
sendCommand("preloadSettings", {publisher_id:publisher_id, user_id:user_id});
break;
case "preloadSettings":
if (_arg1.medals){
populateMedals(_arg1.medals);
if (((!(hasUserSession())) && (!(debugMode)))){
echo("Checking for SharedObject Medals...");
_local8 = loadLocal("medals_unlocked");
if (_local8){
for (_local9 in _local8) {
if (_local8[_local9]){
_local10 = getMedalById(uint(_local9));
echo(("Now unlocking " + _local10.name));
_local10.unlocked = true;
};
};
};
};
};
if (_arg1.save_groups){
populateSaveGroups(_arg1.save_groups);
};
if (_arg1.save_file_path){
_saveFilePath = (_arg1.save_file_path + "/");
};
if (_arg1.image_file_path){
_imageFilePath = (_arg1.image_file_path + "/");
};
if (_arg1.score_boards){
populateScoreBoards(_arg1.score_boards);
};
sendMessage("Metadata loaded!");
callListener(APIEvent.METADATA_LOADED, _arg1.success);
if (((_saveFileId) && (_saveGroupId))){
_local11 = getSaveGroupById(_saveGroupId);
if (_local11){
callListener(APIEvent.FILE_REQUESTED, true, {save_id:_saveFileId, group:_local11});
};
};
_preloadComplete = true;
break;
case "logCustomEvent":
if (_arg1.success){
sendMessage((("Event '" + _arg1.event) + "' was logged."));
};
callListener(APIEvent.EVENT_LOGGED, _arg1.success, {event:_arg1.event});
break;
case "postScore":
if (_arg1.success){
_local4 = "User";
if (user_email){
_local4 = user_email;
} else {
if (user_name){
_local4 = user_name;
};
};
_local6 = getScoreBoardById(_arg1.board);
if (_local6){
sendMessage((((((_local4 + " posted ") + _arg1.value) + " to '") + _local6.name) + "'"));
};
if (_arg1.best_scores){
_local12 = {today:_arg1.best_scores.D, yesterday:_arg1.best_scores.P, week:_arg1.best_scores.W, year:_arg1.best_scores.Y, all_time:_arg1.best_scores.A};
} else {
_local12 = {};
};
if (_arg1.best_ranks){
_local13 = {today:_arg1.best_ranks.D, yesterday:_arg1.best_ranks.P, week:_arg1.best_ranks.W, year:_arg1.best_ranks.Y, all_time:_arg1.best_ranks.A};
} else {
_local13 = {};
};
if (_arg1.num_scores){
_local14 = {today:_arg1.num_scores.D, yesterday:_arg1.num_scores.P, week:_arg1.num_scores.W, year:_arg1.num_scores.Y, all_time:_arg1.num_scores.A};
} else {
_local14 = {};
};
_local3 = {score:_arg1.score, value:_arg1.value, username:_local4, best_scores:_local12, best_ranks:_local13, num_scores:_local14};
};
callListener(APIEvent.SCORE_POSTED, _arg1.success, _local3);
break;
case "loadScores":
_local3 = new Object();
_local6 = getScoreBoardById(_arg1.board);
if (_local6){
_local6.setScores(_arg1.scores, _arg1.period, _arg1.page, _arg1.num_results, _arg1.num_scores);
};
callListener(APIEvent.SCORES_LOADED, _arg1.success, {board:_local6});
break;
case "unlockMedal":
if (_medals){
_local10 = getMedal(_arg1.medal_name);
if (_local10.unlocked){
return;
};
_local10.unlocked = true;
callListener(APIEvent.MEDAL_UNLOCKED, _arg1.success, {medal_id:_local10.id, medal:_local10});
};
break;
case "getMedals":
if (_arg1.success){
populateMedals(_arg1.medals);
};
callListener(APIEvent.MEDALS_LOADED, _arg1.success, _local3);
break;
case "loadSaveFile":
if (_arg1.success){
_local11 = getSaveGroupById(_arg1.group_id);
_local15 = new SaveFile(_local11);
_local15.id = _arg1.file.save_id;
_local15.name = _arg1.file.filename;
_local15.fileUrl = (_saveFilePath + _arg1.file.file);
_local15.thumbnailUrl = (_imageFilePath + _arg1.file.thumb);
_local15.authorName = _arg1.file.user_name;
_local15.authorId = _arg1.file.user_id;
_local15.setStatus(_arg1.file.status);
_local15.description = _arg1.file.description;
_local15.setFileSize(_arg1.file.file_size);
if (((_arg1.file.keys) && (_arg1.file.keys.length))){
_local16 = 0;
while (_local16 < _arg1.file.keys.length) {
_local15.setKey(_arg1.file.keys[_local16].id, _arg1.file.keys[_local16].value);
_local16++;
};
};
if (((_arg1.file.ratings) && (_arg1.file.ratings.length))){
_local16 = 0;
while (_local16 < _arg1.file.ratings.length) {
_local15.setRating(_arg1.file.ratings[_local16].id, _arg1.file.ratings[_local16].votes, _arg1.file.ratings[_local16].score);
_local16++;
};
};
if (_arg1.get_contents){
_local15.loadContents();
};
};
save_file = _local15;
callListener(APIEvent.FILE_INITIALIZED, _arg1.success, {save_id:_local15.id, file:_local15});
break;
case "lookupSaveFiles":
_local7 = [];
if (((_arg1.success) && (_arg1.files))){
_local16 = 0;
while (_local16 < _arg1.files.length) {
_local17 = _arg1.files[_local16];
_local15 = new SaveFile(getSaveGroupById(_arg1.group_id));
_local15.name = _local17.filename;
_local15.id = _local17.save_id;
_local15.description = _local17.description;
_local15.thumbnailUrl = (_imageFilePath + _local17.thumb);
_local15.fileUrl = (_saveFilePath + _local17.file);
_local15.authorName = _local17.user_name;
_local15.authorId = _local17.user_id;
_local15.setStatus(_local17.status);
_local15.setFileSize(_local17.file_size);
if (((_local17.keys) && (_local17.keys.length))){
_local18 = 0;
while (_local18 < _local17.keys.length) {
_local15.setKey(_local17.keys[_local18].id, _local17.keys[_local18].value);
_local18++;
};
};
if (((_local17.ratings) && (_local17.ratings.length))){
_local18 = 0;
while (_local18 < _local17.ratings.length) {
_local15.setRating(_local17.ratings[_local18].id, _local17.ratings[_local18].votes, _local17.ratings[_local18].score);
_local18++;
};
};
_local7.push(_local15);
_local16++;
};
};
_arg1.owner.setResults(_local7);
_arg1.owner.dispatchEvent(new APIEvent(APIEvent.QUERY_COMPLETE, _arg1.success, {query:_arg1.owner}));
callListener(APIEvent.QUERY_COMPLETE, _arg1.success, {query:_arg1.owner});
break;
case "rateSaveFile":
_local15 = _arg1.owner;
_arg1.success = ((_arg1.success) && (!(_arg1.already_voted)));
if (_arg1.success){
_local15.setRating(_arg1.rating_id, _arg1.votes, _arg1.score);
};
_arg1.file = _local15;
if (_arg1.already_voted){
_local19 = new APIError("PERMISSION_DENIED", "You have already voted on this item today");
_local15.dispatchEvent(new APIEvent(APIEvent.VOTE_COMPLETE, _arg1.success, {error:_local19, file:_local15, save_id:_local15.id}));
callListener(APIEvent.VOTE_COMPLETE, _arg1.success, _arg1);
} else {
_local20 = _local15.getRating(_arg1.rating_id);
_local15.dispatchEvent(new APIEvent(APIEvent.VOTE_COMPLETE, _arg1.success, {rating:_local20, file:_local15, save_id:_local15.id}));
API.callListener(APIEvent.VOTE_COMPLETE, _arg1.success, {rating:_local20, file:_local15, save_id:_local15.id});
};
break;
case "saveFile":
_local3 = {};
if (_arg1.success){
_local3 = {save_id:_arg1.save_id, filename:_arg1.filename, file_url:_arg1.file_url, thumbnail:_arg1.thumbnail, icon:_arg1.icon};
SaveFile(_arg1.owner).fileSaved(_local3);
};
_arg1.owner.dispatchEvent(new APIEvent(APIEvent.FILE_SAVED, _arg1.success, {save_id:save_file.id, file:save_file}));
callListener(APIEvent.FILE_SAVED, _arg1.success, {save_id:save_file.id, file:save_file});
save_file = null;
break;
case "checkFilePrivs":
_local3 = {filename:_arg1.filename, folder:_arg1.folder, can_read:_arg1.can_read, can_write:_arg1.can_write};
callListener(APIEvent.FILE_PRIVS_LOADED, _arg1.success, _local3);
break;
};
}
public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:uint=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public static function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public static function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
private static function dispatchEvent(_arg1:Event):void{
_eventDispatcher.dispatchEvent(_arg1);
echo(("Fired Event: " + _arg1.type));
}
static function callListener(_arg1:String, _arg2:Boolean=true, _arg3=undefined):void{
dispatchEvent(new APIEvent(_arg1, _arg2, _arg3));
if (_bridge){
_bridge.sendEvent(_arg1, {success:_arg2, data:_arg3});
};
}
private static function getCommandName(_arg1:String):String{
return (_arg1);
}
private static function getCommandID(_arg1:String):String{
return (_arg1);
}
private static function getPeriodAliases():Object{
var _local2:String;
var _local1:Object = new Object();
for (_local2 in period_aliases) {
_local1[period_aliases[_local2].alias] = _local2;
};
return (_local1);
}
public static function getPeriodName(_arg1:String):String{
var _local2:String;
for (_local2 in period_aliases) {
if (_local2 == _arg1){
return (period_aliases[_local2].name);
};
};
return (null);
}
public static function getPeriodAlias(_arg1:String):String{
var _local2:String;
for (_local2 in period_aliases) {
if (_local2 == _arg1){
return (period_aliases[_local2].alias);
};
};
return (null);
}
private static function sendError(_arg1:Object, _arg2:APIError):void{
var _local3:String = ((((("[NewgroundsAPI ERROR] :: " + getCommandName(_arg1.command_id)) + "() - ") + _arg2.name) + ":\n\t\t\t\t") + _arg2.message);
trace(_local3);
if (_bridge){
_bridge.sendEvent("trace", {data:_local3});
};
}
private static function sendWarning(_arg1:String, _arg2:String=null):void{
if (_arg2){
_arg1 = (_arg1 + ((("\n[NewgroundsAPI WARNING] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
trace(_arg1);
if (_bridge){
_bridge.sendEvent("trace", {data:_arg1});
};
}
private static function sendNotice(_arg1:String, _arg2:String=null):void{
var _local3:String;
if (_arg2){
_arg1 = (_arg1 + ((("\n[NewgroundsAPI NOTICE] :: \tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
trace(_arg1);
if (_bridge){
_bridge.sendEvent("trace", {data:_arg1});
};
}
private static function fatalError(_arg1:String, _arg2:String):void{
if (_arg2){
_arg1 = (_arg1 + ((("\n\tSee " + COMMANDS_WIKI_URL) + _arg2.toLowerCase()) + " for additional information."));
};
trace(("***ERROR*** class=API\n\n" + _arg1));
}
public static function openLoginPage(){
if (hasUserSession()){
return;
};
}
public static function sendSecureCommand(_arg1:String, _arg2:Object, _arg3:Object=null, _arg4:Object=null, _arg5=null):void{
if (((((!(debugMode)) && (!(hasUserSession())))) && (!(hasUserEmail())))){
sendError({command_id:getCommandID(_arg1)}, new APIError("IDENTIFICATION_REQUIRED", (("You must be logged in or provide an e-mail address ( using NewgroundsAPI.setUserEmail(\"name@domain.com\"); ) to use " + _arg1) + "().")));
return;
};
if (!_arg1){
fatalError("Missing command", "sendSecureCommand");
};
if (!_arg2){
fatalError("Missing secure_params", "sendSecureCommand");
};
if (!_arg3){
_arg3 = new Object();
};
var _local6 = "";
var _local7:uint;
while (_local7 < 16) {
_local6 = (_local6 + compression_radix.charAt(Math.floor((Math.random() * compression_radix.length))));
_local7++;
};
if (((debugMode) && (!(session_id)))){
_arg2.session_id = "";
} else {
_arg2.session_id = session_id;
};
_arg2.as_version = 3;
_arg2.user_email = user_email;
_arg2.publisher_id = publisher_id;
_arg2.seed = _local6;
_arg2.command_id = getCommandID(_arg1);
var _local8:String = MD5.hash(_local6);
var _local9:String = RC4.encrypt(JSON.encode(_arg2), _encryptionKey);
var _local10:String = (_local8 + _local9);
_arg3.secure = compressHex(_local10);
secureCommand = _arg1;
sendCommand("securePacket", _arg3, false, _arg4, _arg5);
}
public static function stopPendingCommands():void{
SmartURLLoader.closeAll();
}
private static function onCommandComplete(_arg1:Event):void{
var response:Object;
var error:APIError;
var e = _arg1;
var loader:SmartURLLoader = SmartURLLoader(e.target);
echo((("INPUT: \n" + loader.response) + "\n"));
var i:uint;
while (i < _preloadAssets.length) {
if (_preloadAssets[i] == loader){
_preloadAssets.splice(i, 1);
break;
};
i = (i + 1);
};
try {
response = JSON.decode(loader.response);
} catch(error:Error) {
};
if (!response){
response = {command_id:loader._command, success:false};
};
response.owner = loader.owner;
if (((!(response)) || (!(response.success)))){
if (response.command_id == "connectMovie"){
connected = false;
};
error = new APIError(response.error_code, response.error_msg);
sendError(response, error);
if (response.command_id){
doEvent(response);
};
} else {
doEvent(response);
};
}
private static function onCommandError(_arg1:Event):void{
var _local2:Object = {success:false};
var _local3:SmartURLLoader = SmartURLLoader(_arg1.target);
_local2.owner = _local3.owner;
var _local4:uint;
while (_local4 < _preloadAssets.length) {
if (_preloadAssets[_local4] == _local3){
_preloadAssets.splice(_local4, 1);
break;
};
_local4++;
};
if (_local3._command){
_local2.command_id = _local3._command;
if (_local2.command_id == "connectMovie"){
connected = false;
};
doEvent(_local2);
};
}
private static function sendCommand(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Object=null, _arg5=null):void{
var _local7:String;
var _local8:String;
var _local9:String;
if (((!(connected)) && (!((_arg1 == "connectMovie"))))){
_local7 = (("NewgroundsAPI." + _arg1) + "() - NewgroundsAPI.connectMovie() must be called before this command can be called\n");
fatalError(_local7, "connectMovie");
};
var _local6:SmartURLLoader = new SmartURLLoader();
_local6.addVariable("command_id", getCommandID(_arg1));
_local6.addVariable("tracker_id", _movieId);
if (debugMode){
_local6.addVariable("debug", 1);
};
if (_arg2){
for (_local8 in _arg2) {
_local6.addVariable(_local8, _arg2[_local8]);
};
};
if (_arg4){
for (_local9 in _arg4) {
_local6.addFile(_local9, _arg4[_local9], _local9);
};
};
if (_arg3){
_local6.method = URLRequestMethod.GET;
} else {
_local6.method = URLRequestMethod.POST;
};
_local6.preventCache = true;
if (_arg3){
_local6.openBrowser = true;
_local6.method = URLRequestMethod.GET;
} else {
_local6.addEventListener(Event.COMPLETE, onCommandComplete);
_local6.addEventListener(IOErrorEvent.IO_ERROR, onCommandError);
_local6.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onCommandError);
_local6.method = URLRequestMethod.POST;
};
if (_arg2.secure){
_local6._command = secureCommand;
} else {
_local6._command = getCommandID(_arg1);
};
_local6.owner = _arg5;
_local6.load(GATEWAY_URL);
}
public static function isFlashVersion(_arg1:uint, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0):Boolean{
var _local6:Array = Capabilities.version.split(" ")[1].split(",");
var _local7:Array = arguments;
var _local8:uint;
while (_local8 < _local7.length) {
_local6[_local8] = uint(_local6[_local8]);
_local8++;
};
_local8 = 0;
while (_local8 < _local7.length) {
if (_local6[_local8] > _local7[_local8]){
return (true);
};
if (_local6[_local8] < _local7[_local8]){
return (false);
};
_local8++;
};
return (true);
}
public static function createAd():FlashAd{
sendMessage("You may see a security sandbox violation. This is normal!");
return (new FlashAd());
}
public static function sendMessage(_arg1:String, _arg2:Boolean=false):void{
var _local3:String = ("[NewgroundsAPI] :: " + _arg1);
trace(_local3);
if (_bridge){
_bridge.sendEvent("trace", {data:_local3});
};
}
private static function echo(_arg1:String):void{
if (do_echo){
trace(_arg1);
};
}
}
}//package com.newgrounds
Section 105
//APIError (com.newgrounds.APIError)
package com.newgrounds {
import flash.utils.*;
public class APIError {
public var code:Number;// = 0
public var message:String;
public var name:String;
public var alias:String;
public static const aliases:Array = new Array("UNKNOWN_ERROR", "INVALID_API_ID", "MISSING_PARAM", "INVALID_STAT_ID", "INVALID_COMMAND_ID", "FLASH_ADS_NOT_APPROVED", "PERMISSION_DENIED", "IDENTIFICATION_REQUIRED", "INVALID_EMAIL_ADDRESS", "BANNED_USER", "SESSION_EXPIRED", "INVALID_SCORE", "INVALID_MEDAL", "INVALID_FOLDER", "FILE_NOT_FOUND", "SITE_ID_REQUIRED", "UPLOAD_IN_PROGRESS", "USER_CANCELLED", "CONFIRM_REQUEST", "CONNECTION_FAILED");
private static const always_caps:Array = new Array("API", "URL", "ID");
public static const error_codes:Object = init_codes();
public static const error_names:Object = init_names();
public function APIError(_arg1, _arg2:String){
if ((_arg1 is String)){
_arg1 = error_codes[_arg1];
} else {
if (!(_arg1 is uint)){
_arg1 = 0;
};
};
this.code = _arg1;
this.message = _arg2;
this.name = error_names[_arg1];
this.alias = aliases[_arg1];
}
public function isError():Boolean{
return (true);
}
public static function init_codes():Dictionary{
var _local1:Dictionary = new Dictionary();
var _local2:uint;
while (_local2 < aliases.length) {
_local1[aliases[_local2]] = _local2;
_local2++;
};
return (_local1);
}
private static function init_names():Array{
var _local3:Array;
var _local4:uint;
var _local5:String;
var _local1:Array = new Array();
var _local2:uint;
while (_local2 < aliases.length) {
_local3 = aliases[_local2].toLowerCase().split("_");
_local4 = 0;
while (_local4 < _local3.length) {
_local3[_local4] = (_local3[_local4].substr(0, 1).toUpperCase() + _local3[_local4].substr(1, _local3[_local4].length));
for each (_local5 in always_caps) {
if (_local3[_local4].toUpperCase() == _local5){
_local3[_local4] = _local3[_local4].toUpperCase();
};
};
_local4++;
};
_local1[_local2] = _local3.join(" ");
_local2++;
};
return (_local1);
}
}
}//package com.newgrounds
Section 106
//APIEvent (com.newgrounds.APIEvent)
package com.newgrounds {
import flash.events.*;
public class APIEvent extends Event {
private var _data;
private var _success:Boolean;
private var _target;
private var _error:APIError;
public static const API_CONNECTED:String = "movieConnected";
public static const ADS_APPROVED:String = "adsApproved";
public static const AD_ATTACHED:String = "adAttached";
public static const HOST_BLOCKED:String = "hostBlocked";
public static const NEW_VERSION_AVAILABLE:String = "newVersionAvailable";
public static const EVENT_LOGGED:String = "eventLogged";
public static const SCORE_POSTED:String = "scorePosted";
public static const SCORES_LOADED:String = "scoresLoaded";
public static const UNLOCK_MEDAL:String = "unlockMedal";
public static const MEDAL_UNLOCKED:String = "medalUnlocked";
public static const MEDALS_LOADED:String = "medalsLoaded";
public static const METADATA_LOADED:String = "metadataLoaded";
public static const FILE_PRIVS_LOADED:String = "filePrivsLoaded";
public static const FILE_SAVED:String = "fileSaved";
public static const FILE_LOADED:String = "fileLoaded";
public static const FILE_INITIALIZED:String = "fileInitialized";
public static const FILE_REQUESTED:String = "fileRequested";
public static const QUERY_COMPLETE:String = "queryComplete";
public static const VOTE_COMPLETE:String = "voteComplete";
public function APIEvent(_arg1:String, _arg2:Boolean=true, _arg3=undefined){
super(_arg1);
this._data = _arg3;
this._success = _arg2;
}
public function get success():Boolean{
return (this._success);
}
public function get data(){
return (this._data);
}
}
}//package com.newgrounds
Section 107
//BaseN (com.newgrounds.BaseN)
package com.newgrounds {
import flash.utils.*;
public class BaseN {
private var _hashIndex:String;
private var _hashVal:Dictionary;
private var _base:Number;
public function BaseN(_arg1:String=null){
if (_arg1){
this._hashIndex = _arg1;
} else {
this._hashIndex = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~@#$%^&*()+|;/";
};
this._base = this._hashIndex.length;
this._hashVal = new Dictionary();
var _local2:uint;
while (_local2 < this._base) {
this._hashVal[this._hashIndex.charAt(_local2)] = _local2;
_local2++;
};
}
public function encode(_arg1:Number, _arg2:uint=1):String{
var _local3:String = _arg1.toString();
var _local4 = "";
if (_local3.charAt(0) == "-"){
_local4 = "-";
_local3 = _local3.substring(1);
};
var _local5:Array = _local3.split(".", 2);
_local4 = (_local4 + this.baseNEncoder(_local5[0], _arg2));
if (_local5.length > 1){
_local4 = (_local4 + ("." + this.baseNEncoder(_local5[1])));
};
return (_local4);
}
public function decode(_arg1:String):Number{
var _local2 = "";
if (_arg1.charAt(0) == "-"){
_local2 = "-";
_arg1 = _arg1.substring(1);
};
var _local3:Array = _arg1.split(".", 2);
_local2 = (_local2 + this.baseNDecoder(_local3[0]));
if (_local3.length > 1){
_local2 = (_local2 + ".");
_local2 = (_local2 + this.baseNDecoder(_local3[1]));
};
return (Number(_local2));
}
private function baseNEncoder(_arg1:uint, _arg2:uint=1):String{
var _local3 = "";
var _local4:uint = _arg1;
while (_local4 != 0) {
_local3 = (this._hashIndex.charAt((_local4 % this._base)) + _local3);
_local4 = (_local4 / this._base);
};
if (_arg2){
while (_local3.length < _arg2) {
_local3 = (this._hashIndex.charAt(0) + _local3);
};
};
return (_local3);
}
private function baseNDecoder(_arg1:String):uint{
var _local2:uint;
var _local3:uint;
while (_local3 < _arg1.length) {
_local2 = (_local2 * this._base);
_local2 = (_local2 + this._hashVal[_arg1.charAt(_local3)]);
_local3++;
};
return (_local2);
}
}
}//package com.newgrounds
Section 108
//Bridge (com.newgrounds.Bridge)
package com.newgrounds {
import flash.events.*;
import flash.net.*;
public class Bridge {
private var _inConnection:LocalConnection;
private var _outConnection:LocalConnection;
private var _widgetId:String;
public function Bridge(_arg1:String){
this._widgetId = _arg1;
this._inConnection = new LocalConnection();
this._outConnection = new LocalConnection();
this._inConnection.client = this;
this._inConnection.connect(("rec_" + this._widgetId));
this._outConnection.addEventListener(StatusEvent.STATUS, this.onStatus);
}
public function sendCommand(_arg1:String, _arg2:Object):void{
if (this._outConnection){
this._outConnection.send(this._widgetId, "sendCommand", _arg1, this.scrubParameters(_arg2));
};
}
public function sendEvent(_arg1:String, _arg2:Object):void{
if (this._outConnection){
this._outConnection.send(this._widgetId, "sendEvent", _arg1, this.scrubParameters(_arg2));
};
}
public function receiveEvent(_arg1:String, _arg2:Object):void{
API.callListener(_arg1, _arg2.success, _arg2.data);
}
public function scrubParameters(_arg1:Object):Object{
var _local3:String;
var _local2:Object = new Object();
for (_local3 in _arg1) {
if ((((((((((_arg1[_local3] is String)) || ((_arg1[_local3] is Number)))) || ((_arg1[_local3] is uint)))) || ((_arg1[_local3] is int)))) || ((_arg1[_local3] is Boolean)))){
_local2[_local3] = _arg1[_local3];
};
};
return (_local2);
}
private function onStatus(_arg1:Event):void{
}
}
}//package com.newgrounds
Section 109
//Medal (com.newgrounds.Medal)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
public class Medal {
private var _id:uint;
private var _name:String;
private var _value:uint;
private var _difficultyId:uint;
private var _unlocked:Boolean;// = false
private var _iconUrl:URLRequest;
private var _iconLoader:Loader;
private var _icon:BitmapData;
private static const DEFAULT_ICON:BitmapData = new BitmapData(50, 50, false, 0);
private static const DIFFICULT_NAMES:Array = [null, "Easy", "Moderate", "Challenging", "Difficult", "Brutal"];
public function Medal(_arg1:uint, _arg2:String, _arg3:uint, _arg4:uint, _arg5:Boolean, _arg6:String){
var id = _arg1;
var name = _arg2;
var value = _arg3;
var difficulty = _arg4;
var unlocked = _arg5;
var iconUrl = _arg6;
this._icon = DEFAULT_ICON;
super();
this._id = id;
this._name = name;
this._value = value;
this._difficultyId = difficulty;
this._unlocked = unlocked;
if (iconUrl){
this._iconUrl = new URLRequest(iconUrl);
this._iconLoader = new Loader();
this._iconLoader.contentLoaderInfo.addEventListener(Event.INIT, this.onIconLoaderInit);
this._iconLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, this.onIconLoaderError);
this._iconLoader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onIconLoaderError);
this._iconLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, this.onIconLoaderComplete);
try {
this._iconLoader.load(this._iconUrl, new LoaderContext(true));
} catch(e:Error) {
onIconLoaderError(null);
};
};
}
public function get difficulty():String{
return (DIFFICULT_NAMES[this._difficultyId]);
}
public function get difficultyId():uint{
return (this._difficultyId);
}
public function get icon():BitmapData{
return (this._icon);
}
public function get id():uint{
return (this._id);
}
public function get name():String{
return (this._name);
}
public function get unlocked():Boolean{
return (this._unlocked);
}
public function isUnlocked():Boolean{
return (this._unlocked);
}
public function set unlocked(_arg1:Boolean):void{
this._unlocked = _arg1;
}
public function get value():uint{
return (this._value);
}
public function get bytesLoaded():uint{
return ((this._iconLoader) ? this._iconLoader.contentLoaderInfo.bytesLoaded : 0);
}
public function get bytesTotal():uint{
return ((this._iconLoader) ? this._iconLoader.contentLoaderInfo.bytesTotal : 0);
}
public function getID():uint{
return (this._id);
}
public function getName():String{
return (this._name);
}
public function getValue():uint{
return (this._value);
}
public function getDifficulty():String{
return (DIFFICULT_NAMES[this._difficultyId]);
}
private function onIconLoaderInit(_arg1:Event):void{
}
private function onIconLoaderError(_arg1:IOErrorEvent):void{
trace((((("[NewgroundsAPI WARNING] :: Failed to load medal icon for " + this.name) + " (") + this._iconUrl.url.split("/").pop()) + ")"));
this._iconLoader.unload();
this._iconLoader = null;
}
private function onIconLoaderComplete(_arg1:Event):void{
var _local2:Bitmap = (this._iconLoader.content as Bitmap);
this._icon = _local2.bitmapData;
this._iconLoader.unload();
this._iconLoader = null;
}
public function unlock():void{
if (!this._unlocked){
API.unlockMedal(this._name);
};
}
public function createIconBitmap():Bitmap{
return (new Bitmap(this.icon));
}
public function toString():String{
return (this._name);
}
public static function createFromObject(_arg1:Object):Medal{
return (new Medal(_arg1.medal_id, _arg1.medal_name, _arg1.medal_value, _arg1.medal_difficulty, _arg1.medal_unlocked, _arg1.medal_icon));
}
}
}//package com.newgrounds
Section 110
//RC4 (com.newgrounds.RC4)
package com.newgrounds {
public class RC4 {
private static var sbox:Array = new Array(0xFF);
private static var mykey:Array = new Array(0xFF);
public static function encrypt(_arg1:String, _arg2:String):String{
var _local3:Array = strToChars(_arg1);
var _local4:Array = strToChars(_arg2);
var _local5:Array = calculate(_local3, _local4);
return (charsToHex(_local5));
}
public static function encryptbin(_arg1:String, _arg2:String):Array{
var _local3:Array = strToChars(_arg1);
var _local4:Array = strToChars(_arg2);
var _local5:Array = calculate(_local3, _local4);
return (_local5);
}
public static function decrypt(_arg1:String, _arg2:String):String{
var _local3:Array = hexToChars(_arg1);
var _local4:Array = strToChars(_arg2);
var _local5:Array = calculate(_local3, _local4);
return (charsToStr(_local5));
}
private static function initialize(_arg1:Array):void{
var _local3:uint;
var _local2:uint;
var _local4:uint = _arg1.length;
var _local5:uint;
while (_local5 <= 0xFF) {
mykey[_local5] = _arg1[(_local5 % _local4)];
sbox[_local5] = _local5;
_local5++;
};
_local5 = 0;
while (_local5 <= 0xFF) {
_local2 = (((_local2 + sbox[_local5]) + mykey[_local5]) % 0x0100);
_local3 = sbox[_local5];
sbox[_local5] = sbox[_local2];
sbox[_local2] = _local3;
_local5++;
};
}
private static function calculate(_arg1:Array, _arg2:Array):Array{
var _local6:uint;
var _local7:uint;
var _local8:uint;
var _local10:uint;
initialize(_arg2);
var _local3:uint;
var _local4:uint;
var _local5:Array = new Array();
var _local9:uint;
while (_local9 < _arg1.length) {
_local3 = ((_local3 + 1) % 0x0100);
_local4 = ((_local4 + sbox[_local3]) % 0x0100);
_local7 = sbox[_local3];
sbox[_local3] = sbox[_local4];
sbox[_local4] = _local7;
_local10 = ((sbox[_local3] + sbox[_local4]) % 0x0100);
_local6 = sbox[_local10];
_local8 = (_arg1[_local9] ^ _local6);
_local5.push(_local8);
_local9++;
};
return (_local5);
}
private static function charsToHex(_arg1:Array):String{
var _local2:String = new String("");
var _local3:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
var _local4:uint;
while (_local4 < _arg1.length) {
_local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)]));
_local4++;
};
return (_local2);
}
private static function hexToChars(_arg1:String):Array{
var _local2:Array = new Array();
var _local3:uint = ((_arg1.substr(0, 2))=="0x") ? 2 : 0;
while (_local3 < _arg1.length) {
_local2.push(parseInt(_arg1.substr(_local3, 2), 16));
_local3 = (_local3 + 2);
};
return (_local2);
}
private static function charsToStr(_arg1:Array):String{
var _local2:String = new String("");
var _local3:uint;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(_arg1[_local3]));
_local3++;
};
return (_local2);
}
private static function strToChars(_arg1:String):Array{
var _local2:Array = new Array();
var _local3:uint;
while (_local3 < _arg1.length) {
_local2.push(_arg1.charCodeAt(_local3));
_local3++;
};
return (_local2);
}
}
}//package com.newgrounds
Section 111
//SaveFile (com.newgrounds.SaveFile)
package com.newgrounds {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
public class SaveFile extends EventDispatcher {
private var _filename:String;
private var _id:uint;
private var _description:String;
private var _contents;
private var _loader:SmartURLLoader;
private var _group:SaveGroup;
private var _keys:Dictionary;
private var _ratings:Dictionary;
private var _fileUrl:String;
private var _thumbnail:BitmapData;
private var _thumbnailUrl:String;
private var _authorId:uint;
private var _authorName:String;
private var _contentSize:uint;
private var _locked:Boolean;
private var _status:uint;
private var duplicate_id:uint;
private var _draft:Boolean;
public static const STATUS_PRIVATE = 1;
public static const STATUS_SHARED = 2;
public static const STATUS_UNAPPROVED = 3;
public static const STATUS_APPROVED = 4;
public function SaveFile(_arg1:SaveGroup){
this._keys = new Dictionary();
this._ratings = new Dictionary();
this._group = _arg1;
this._description = "";
}
public function get name():String{
return (this._filename);
}
public function set name(_arg1:String):void{
this._filename = _arg1;
}
public function get id():uint{
return (this._id);
}
public function set id(_arg1:uint):void{
this._id = _arg1;
}
public function get description():String{
return (this._description);
}
public function set description(_arg1:String):void{
this._description = _arg1;
}
public function get contents(){
return (this._contents);
}
public function set contents(_arg1):void{
this._contents = _arg1;
this._contentSize = 0;
}
public function get thumbnailUrl():String{
return (this._thumbnailUrl);
}
public function set thumbnailUrl(_arg1:String):void{
this._thumbnailUrl = _arg1;
}
public function get fileUrl():String{
return (this._fileUrl);
}
public function set fileUrl(_arg1:String):void{
this._fileUrl = _arg1;
}
public function get thumbnail():BitmapData{
return (this._thumbnail);
}
public function set thumbnail(_arg1:BitmapData):void{
if (this._thumbnail){
this._thumbnail.dispose();
};
this._thumbnail = _arg1.clone();
}
public function loadThumbnail():Loader{
var _local1:Loader = new Loader();
if (this._thumbnailUrl){
_local1.load(new URLRequest(this._thumbnailUrl));
};
return (_local1);
}
public function get bytesLoaded():uint{
return ((this._loader) ? this._loader.bytesLoaded : this._contentSize);
}
public function get bytesTotal():uint{
return (this._contentSize);
}
public function get status():uint{
return (this._status);
}
function setStatus(_arg1:uint):void{
this._status = _arg1;
}
public function get groupId():uint{
return (this._group.id);
}
public function get groupName():String{
return (this._group.name);
}
public function get groupType():uint{
return (this._group.type);
}
public function get authorName():String{
return (this._authorName);
}
public function set authorName(_arg1:String):void{
this._authorName = _arg1;
}
public function get authorId():uint{
return (this._authorId);
}
public function set authorId(_arg1:uint):void{
this._authorId = _arg1;
}
public function get draft():Boolean{
return (this._draft);
}
public function set draft(_arg1:Boolean):void{
this._draft = _arg1;
}
public function get locked():Boolean{
return (this._locked);
}
public function get shared():Boolean{
return ((this._status == STATUS_SHARED));
}
public function get isPrivate():Boolean{
return ((this._status == STATUS_PRIVATE));
}
public function get isPublic():Boolean{
if (this.isPrivate){
return (false);
};
if (((this._group.isType("SYSTEM")) || (this._group.isType("PRIVATE")))){
return (false);
};
if (this._group.isType("PUBLIC")){
return (true);
};
if (this.approved){
return (true);
};
return (false);
}
public function get approved():Boolean{
return ((this._status > STATUS_UNAPPROVED));
}
public function get keys():Dictionary{
return (this._keys);
}
public function get ratings():Dictionary{
return (this._ratings);
}
function setPermissions(_arg1:uint, _arg2:Boolean){
_arg2 = this._locked;
this._status = _arg1;
}
function setFileSize(_arg1:uint):void{
this._contentSize = _arg1;
}
public function isLocked():Boolean{
return (this._locked);
}
public function getDescription():String{
return (this._description);
}
public function getShared():Boolean{
return (this._draft);
}
public function getDuplicateID():uint{
return (this.duplicate_id);
}
public function getKeys():Dictionary{
return (this._keys);
}
public function getRatings():Dictionary{
return (this._ratings);
}
public function setKey(_arg1, _arg2):void{
var _local3:SaveKey;
if ((_arg1 is String)){
_local3 = this._group.getKeyName(_arg1);
} else {
_local3 = this._group.getKeyID(_arg1);
};
if (_local3){
switch (_local3.type){
case SaveKey.TYPE_BOOLEAN:
this._keys[_local3] = {id:_local3.id, value:Boolean(int(_arg2))};
break;
case SaveKey.TYPE_FLOAT:
this._keys[_local3] = {id:_local3.id, value:Number(_arg2)};
break;
case SaveKey.TYPE_INTEGER:
this._keys[_local3] = {id:_local3.id, value:int(_arg2)};
break;
case SaveKey.TYPE_STRING:
default:
this._keys[_local3] = {id:_local3.id, value:_arg2.toString()};
break;
};
};
}
public function getKey(_arg1){
var _local2:SaveKey;
if ((_arg1 is String)){
_local2 = this._group.getKeyName(_arg1);
} else {
_local2 = this._group.getKeyID(_arg1);
};
if (_local2){
return (this._keys[_local2]);
};
return (null);
}
public function setRating(_arg1, _arg2:Number, _arg3:Number):void{
var _local4:SaveRating;
if ((_arg1 is String)){
_local4 = this._group.getRatingName(_arg1);
} else {
_local4 = this._group.getRatingID(_arg1);
};
if (_local4){
this._ratings[_local4] = {id:_local4.id, name:_local4.name, votes:_arg2, score:_arg3};
};
}
public function getRating(_arg1):Object{
var _local2:SaveRating;
if ((_arg1 is String)){
_local2 = this._group.getRatingName(_arg1);
} else {
_local2 = this._group.getRatingID(_arg1);
};
if (_local2){
return (this._ratings[_local2]);
};
return (null);
}
public function sendRating(_arg1:String, _arg2:Number):void{
var _local3:SaveRating = this._group.getRatingName(_arg1);
if (!_local3){
trace((("[NewgroundsAPISaveFile] " + _arg1) + " is not a recognized save file"));
return;
};
if ((((_arg2 < _local3.minValue)) || ((_arg2 > _local3.maxValue)))){
trace(((("[NewgroundsAPISaveFile] Vote must be between " + _local3.minValue) + " and ") + _local3.maxValue));
return;
};
_local3.voted = true;
API.rateSaveFile(this, _local3, _arg2);
}
override public function toString():String{
var _local2:Object;
var _local3:Object;
var _local1 = (((((("Save File " + this._filename) + " ID: ") + this._id) + "\n ") + this._description) + "\n");
for each (_local2 in this._keys) {
_local1 = (_local1 + ((((" " + this._group.getKeyID(_local2.id).name) + ": ") + _local2.val) + "\n"));
};
for each (_local3 in this._ratings) {
_local1 = (_local1 + ((((((" " + this._group.getRatingID(_local3.id).name) + "\n Score: ") + _local3.score) + " Votes: ") + _local3.votes) + "\n"));
};
return (_local1);
}
public function toObject():Object{
var _local2:Object;
var _local1:Object = {group:this.groupId, filename:this.name, description:this.description, shared:true};
_local1.keys = [];
for each (_local2 in this._keys) {
_local1.keys.push({id:_local2.id, value:_local2.val});
};
return (_local1);
}
public function save(_arg1:Boolean=false, _arg2:Boolean=false):void{
API.saveFile(this, _arg1, _arg2);
}
public function loadContents():void{
if (this._fileUrl){
this._loader = new SmartURLLoader();
this._loader.responseFormat = URLLoaderDataFormat.BINARY;
this._loader.addEventListener(Event.COMPLETE, this.onContentsLoaded);
this._loader.addEventListener(IOErrorEvent.IO_ERROR, this.onContentsError);
this._loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onContentsError);
this._loader.load(this._fileUrl);
};
}
private function onContentsError(_arg1:Event):void{
this._loader = null;
dispatchEvent(new APIEvent(APIEvent.FILE_LOADED, false));
API.callListener(APIEvent.FILE_LOADED, false);
}
private function onContentsLoaded(_arg1:Event):void{
var _local2:ByteArray = _arg1.target.response;
this._contentSize = _local2.length;
_local2.uncompress();
var _local3:uint = _local2.readUnsignedByte();
if (_local3 == 0){
this._contents = new ByteArray();
this._contents.writeBytes(_local2, 1);
} else {
this._contents = _local2.readObject();
};
this._loader = null;
dispatchEvent(new APIEvent(APIEvent.FILE_LOADED, true, {file:this}));
API.callListener(APIEvent.FILE_LOADED, true, {file:this});
}
public function loadAuthorPage(){
API.loadUserPage(this._authorId, this._authorName);
}
function fileSaved(_arg1:Object):void{
this._id = _arg1.save_id;
this._thumbnailUrl = _arg1.thumbnail;
this._fileUrl = _arg1.file_url;
}
}
}//package com.newgrounds
Section 112
//SaveGroup (com.newgrounds.SaveGroup)
package com.newgrounds {
public class SaveGroup {
private var _name:String;
private var _id:uint;
private var _type:uint;
private var _keys:Array;
private var _ratings:Array;
private var _files:Array;
private var _query:SaveGroupQuery;
public static const TYPE_SYSTEM:uint = 0;
public static const TYPE_PRIVATE:uint = 1;
public static const TYPE_PUBLIC:uint = 2;
public static const TYPE_MODERATED:uint = 3;
public static const KEY_TYPES:Array = [null, "float", "integer", "string", "boolean"];
public static const TYPES:Object = {SYSTEM:0, PRIVATE:1, PUBLIC:2, MODERATED:3};
public function SaveGroup(_arg1:uint, _arg2:String, _arg3:uint){
this._name = _arg2;
this._id = _arg1;
this._type = _arg3;
this._ratings = [];
this._keys = [];
this._files = [];
this._query = new SaveGroupQuery(this);
}
public function get name():String{
return (this._name);
}
public function get id():uint{
return (this._id);
}
public function get type():uint{
return (this._type);
}
public function get keys():Array{
return (this._keys);
}
public function get ratings():Array{
return (this._ratings);
}
public function get group_id():uint{
return (this._id);
}
public function get group_name():String{
return (this._name);
}
public function addRating(_arg1:SaveRating):void{
this._ratings.push(_arg1);
}
function getRating(_arg1):SaveRating{
var _local2:uint;
while (_local2 < this._ratings.length) {
if ((((((((_arg1 is uint)) || ((_arg1 is int)))) || ((_arg1 is Number)))) && ((this._ratings[_local2].rating_id == _arg1)))){
return (this._ratings[_local2]);
};
if (this._ratings[_local2].name == _arg1){
return (this._ratings[_local2]);
};
_local2++;
};
return (null);
}
public function getRatingID(_arg1:uint):SaveRating{
var _local2:uint;
while (_local2 < this._ratings.length) {
if (this._ratings[_local2].id == _arg1){
return (this._ratings[_local2]);
};
_local2++;
};
return (null);
}
public function getRatingName(_arg1:String):SaveRating{
var _local2:uint;
while (_local2 < this._ratings.length) {
if (this._ratings[_local2].name == _arg1){
return (this._ratings[_local2]);
};
_local2++;
};
return (null);
}
public function addKey(_arg1:SaveKey):void{
this._keys.push(_arg1);
}
public function getKey(_arg1):SaveKey{
var _local2:uint;
while (_local2 < this._keys.length) {
if ((((((((_arg1 is Number)) || ((_arg1 is uint)))) || ((_arg1 is int)))) && ((this._keys[_local2].key_id == _arg1)))){
return (this._keys[_local2]);
};
if (this._keys[_local2].key_name == _arg1){
return (this._keys[_local2]);
};
_local2++;
};
return (null);
}
public function getKeyID(_arg1:uint):SaveKey{
var _local2:uint;
while (_local2 < this._keys.length) {
if (this._keys[_local2].id == _arg1){
return (this._keys[_local2]);
};
_local2++;
};
return (null);
}
public function getKeyType(_arg1:String, _arg2:Boolean=false){
var _local3:SaveKey = this.getKey(_arg1);
if (_local3){
return ((_arg2) ? KEY_TYPES[_local3.key_type] : _local3.key_type);
};
return (null);
}
public function getKeyName(_arg1:String):SaveKey{
var _local2:uint;
while (_local2 < this._keys.length) {
if (this._keys[_local2].name == _arg1){
return (this._keys[_local2]);
};
_local2++;
};
return (null);
}
public function isType(_arg1:String):Boolean{
return ((TYPES[this._type] == _arg1));
}
public function getID():uint{
return (this._id);
}
public function getName():String{
return (this._name);
}
public function getQuery(_arg1:Boolean=false){
return ((_arg1) ? this._query.toObject() : this._query);
}
public function newQuery():SaveGroupQuery{
return (new SaveGroupQuery(this));
}
public function newFile():SaveFile{
return (new SaveFile(this));
}
public function toString():String{
return ((((((("SaveGroup { name: " + this._name) + ", id: ") + this._id) + ", keys: ") + this._keys) + "}"));
}
public static function createFromObject(_arg1:Object):SaveGroup{
var _local4:Object;
var _local5:Object;
var _local2:SaveGroup = new SaveGroup(_arg1.group_id, _arg1.group_name, _arg1.group_type);
var _local3:uint;
while (_local3 < _arg1.keys.length) {
_local4 = _arg1.keys[_local3];
_local2.addKey(new SaveKey(_local4.id, _local4.name, _local4.type));
_local3++;
};
_local3 = 0;
while (_local3 < _arg1.ratings.length) {
_local5 = _arg1.ratings[_local3];
_local2.addRating(new SaveRating(_local5.id, _local5.name, _local5.float, _local5.min, _local5.max));
_local3++;
};
return (_local2);
}
}
}//package com.newgrounds
Section 113
//SaveGroupQuery (com.newgrounds.SaveGroupQuery)
package com.newgrounds {
import flash.events.*;
public class SaveGroupQuery extends EventDispatcher {
private var _group:SaveGroup;
private var _groupBy:Array;
private var _lookupKeys:Array;
private var _lookupRatings:Array;
private var _fileConditions:Array;
private var _keyConditions:Array;
private var _ratingConditions:Array;
private var _sortConditions:Array;
private var _page:uint;
private var _resultsPerPage:uint;
private var _randomizeResults:Boolean;
private var _results:Array;
public static const TABLE_FILES:uint = 1;
public static const TABLE_KEYS:uint = 2;
public static const TABLE_RATINGS:uint = 3;
public static const FILE_ID:uint = 0;
public static const AUTHOR_ID:uint = 1;
public static const AUTHOR_NAME:uint = 2;
public static const FILE_NAME:uint = 3;
public static const CREATED_ON:uint = 4;
public static const UPDATED_ON:uint = 5;
public static const TOTAL_VIEWS:uint = 6;
public static const FILE_STATUS:uint = 7;
public static const SCORE:String = "score";
public static const TOTAL_VOTES:String = "votes";
public function SaveGroupQuery(_arg1:SaveGroup){
this._results = [];
super();
this._group = _arg1;
this.reset();
}
public function clearCache():void{
this._results = [];
}
public function get group():SaveGroup{
return (this._group);
}
public function get groupId():uint{
return (this._group.id);
}
public function get resultsPerPage():uint{
return (this._resultsPerPage);
}
public function set resultsPerPage(_arg1:uint):void{
this._resultsPerPage = _arg1;
}
public function get page():uint{
return (this._page);
}
public function set page(_arg1:uint):void{
this._page = _arg1;
}
public function get randomized():Boolean{
return (this._randomizeResults);
}
public function set randomized(_arg1:Boolean):void{
this._randomizeResults = _arg1;
}
public function get results():Array{
return (this._results);
}
public function reset():void{
this._fileConditions = [];
this._keyConditions = [];
this._ratingConditions = [];
this._sortConditions = [];
this._groupBy = [];
this._lookupKeys = [];
this._lookupRatings = [];
this._randomizeResults = false;
this._resultsPerPage = 20;
this._page = 1;
this.clearCache();
}
function getGroup():SaveGroup{
return (this._group);
}
function getGroupID():uint{
return (this._group.getID());
}
public function includeKey(_arg1:String):void{
var _local2:SaveKey = this._group.getKeyName(_arg1);
if (_local2){
this._lookupKeys.push(_local2.id);
};
}
public function isRandomized():Boolean{
return (this._randomizeResults);
}
public function includeRating(_arg1:String):void{
var _local2:SaveRating = this._group.getRatingName(_arg1);
if (_local2){
this._lookupRatings.push(_local2.id);
};
}
public function excludeKey(_arg1:String):void{
var _local2:SaveKey = this._group.getKeyName(_arg1);
var _local3:uint;
while (_local3 < this._lookupKeys.length) {
if (this._lookupKeys[_local3] == _local2.id){
this._lookupKeys.splice(_local3, 1);
return;
};
_local3++;
};
}
public function excludeRating(_arg1:String):void{
var _local2:SaveRating = this._group.getRatingName(_arg1);
var _local3:uint;
while (_local3 < this._lookupRatings.length) {
if (this._lookupRatings[_local3] == _local2.id){
this._lookupRatings.splice(_local3, 1);
return;
};
_local3++;
};
}
public function groupBy(_arg1:uint):void{
this._groupBy.push({table:TABLE_FILES, field:_arg1});
}
public function groupByRating(_arg1:String):void{
var _local2:SaveRating = this._group.getRatingName(_arg1);
if (!_local2){
return;
};
this._groupBy.push({table:TABLE_RATINGS, field:_local2.id});
}
public function groupByKey(_arg1:String):void{
var _local2:SaveKey = this._group.getKeyName(_arg1);
if (!_local2){
return;
};
this._groupBy.push({table:TABLE_KEYS, field:_local2.id});
}
public function addFileCondition(_arg1:uint, _arg2:String, _arg3):void{
this._fileConditions.push({field:_arg1, operator:_arg2, value:_arg3});
}
public function addKeyCondition(_arg1:String, _arg2:String, _arg3):void{
var _local4:SaveKey = this._group.getKeyName(_arg1);
if (!_local4){
return;
};
if (!this.checkValue(_arg3, _local4.type)){
return;
};
this._keyConditions.push({key_id:_local4.id, operator:_arg2, value:_arg3});
}
public function addRatingCondition(_arg1:String, _arg2:String, _arg3, _arg4:String="score"):void{
var _local5:SaveRating = this._group.getRatingName(_arg1);
if (!_local5){
return;
};
this._ratingConditions.push({rating_id:_local5.id, operator:_arg2, value:_arg3, column:_arg4});
}
private function addSortCondition(_arg1:uint, _arg2:uint, _arg3:Boolean=false, _arg4=null):void{
var _local5:Object = {table:_arg1, field:_arg2, desc:_arg3};
if (_arg4){
_local5.extra = _arg4;
};
this._sortConditions.push(_local5);
}
public function sortOn(_arg1:uint, _arg2:Boolean=false):void{
this.addSortCondition(TABLE_FILES, _arg1, _arg2);
}
public function sortOnKey(_arg1:String, _arg2:Boolean=false):void{
this.addSortCondition(TABLE_KEYS, this._group.getKeyName(_arg1).id, _arg2);
}
public function sortOnRating(_arg1:String, _arg2:Boolean=false, _arg3:String="score"):void{
this.addSortCondition(TABLE_RATINGS, this._group.getRatingName(_arg1).id, _arg2, _arg3);
}
public function sortOnRatingScore(_arg1:String, _arg2:Boolean){
this.sortOnRating(_arg1, _arg2, SCORE);
}
public function sortOnRatingVotes(_arg1:String, _arg2:Boolean){
this.sortOnRating(_arg1, _arg2, TOTAL_VOTES);
}
public function setResultsPerPage(_arg1:uint){
this._resultsPerPage = _arg1;
this.clearCache();
}
public function setPage(_arg1:Number){
this._page = _arg1;
this.clearCache();
}
public function setRandomize(_arg1:Boolean):void{
this._randomizeResults = _arg1;
}
public function execute():void{
API.executeSaveQuery(this);
}
private function checkValue(_arg1, _arg2:uint):Boolean{
return (true);
}
function setResults(_arg1:Array):void{
this._results = _arg1;
}
override public function toString():String{
return ("");
}
public function toObject():Object{
var _local1:Object = {page:this._page, num_results:this._resultsPerPage};
if (this.isRandomized()){
_local1.randomize = 1;
};
if (((this._fileConditions) && ((this._fileConditions.length > 0)))){
_local1.file_conditions = this._fileConditions;
};
if (((this._keyConditions) && ((this._keyConditions.length > 0)))){
_local1.key_conditions = this._keyConditions;
};
if (((this._ratingConditions) && ((this._ratingConditions.length > 0)))){
_local1.rating_conditions = this._ratingConditions;
};
if (((this._sortConditions) && ((this._sortConditions.length > 0)))){
_local1.sort_conditions = this._sortConditions;
};
if (((this._lookupKeys) && ((this._lookupKeys.length > 0)))){
_local1.lookup_keys = this._lookupKeys;
};
if (((this._lookupRatings) && ((this._lookupRatings.length > 0)))){
_local1.lookup_ratings = this._lookupRatings;
};
if (((this._groupBy) && ((this._groupBy.length > 0)))){
_local1.group_by = this._groupBy;
};
return (_local1);
}
}
}//package com.newgrounds
Section 114
//SaveKey (com.newgrounds.SaveKey)
package com.newgrounds {
public class SaveKey {
private var _id:uint;
private var _name:String;
private var _type:uint;
public static const TYPE_FLOAT:uint = 1;
public static const TYPE_INTEGER:uint = 2;
public static const TYPE_STRING:uint = 3;
public static const TYPE_BOOLEAN:uint = 4;
public function SaveKey(_arg1:uint, _arg2:String, _arg3:uint){
this._id = _arg1;
this._name = _arg2;
this._type = _arg3;
}
public function get id():uint{
return (this._id);
}
public function get name():String{
return (this._name);
}
public function get type():uint{
return (this._type);
}
public function get key_id():uint{
return (this._id);
}
public function get key_name():String{
return (this._name);
}
public function get key_type():uint{
return (this._type);
}
public function isValueValid(_arg1):Boolean{
if (this._type == TYPE_INTEGER){
return ((((_arg1 is int)) || ((_arg1 is uint))));
};
if (this._type == TYPE_FLOAT){
return ((((((_arg1 is int)) || ((_arg1 is uint)))) || ((_arg1 is Number))));
};
if (this._type == TYPE_STRING){
return ((_arg1 is String));
};
if (this._type == TYPE_BOOLEAN){
return ((((((((_arg1 is Boolean)) || ((_arg1 === 0)))) || ((_arg1 === 1)))) || ((_arg1 == ""))));
};
return (false);
}
public function toString():String{
return (this._name);
}
}
}//package com.newgrounds
Section 115
//SaveRating (com.newgrounds.SaveRating)
package com.newgrounds {
public class SaveRating {
private var _id:uint;
private var _name:String;
private var _minValue:Number;
private var _maxValue:Number;
private var _isFloat:Boolean;
private var _voted:Boolean;
public function SaveRating(_arg1:uint, _arg2:String, _arg3:Boolean, _arg4:Number=-INF, _arg5:Number=INF){
this._id = _arg1;
this._name = _arg2;
this._isFloat = _arg3;
this._minValue = _arg4;
this._maxValue = _arg5;
}
public function get rating_id():uint{
return (this._id);
}
public function get rating_name():String{
return (this._name);
}
public function get id():uint{
return (this._id);
}
public function get name():String{
return (this._name);
}
public function get minValue():Number{
return (this._minValue);
}
public function get maxValue():Number{
return (this._maxValue);
}
public function get isFloat():Boolean{
return (this._isFloat);
}
public function get voted():Boolean{
return (this._voted);
}
public function set voted(_arg1:Boolean):void{
this._voted = _arg1;
}
public function toString():String{
return (this._name);
}
}
}//package com.newgrounds
Section 116
//Score (com.newgrounds.Score)
package com.newgrounds {
public class Score {
private var _board:ScoreBoard;
private var _position:uint;
private var _username:String;
private var _value:String;
private var _numeric_value:uint;
private var _tag:String;
public function Score(_arg1:ScoreBoard, _arg2:Number, _arg3:String, _arg4:String, _arg5:uint, _arg6:String){
this._board = _arg1;
this._position = _arg2;
this._username = _arg3;
this._value = _arg4;
this._numeric_value = _arg5;
this._tag = _arg6;
}
public function get board():ScoreBoard{
return (this._board);
}
public function get position():uint{
return (this._position);
}
public function get username():String{
return (this._username);
}
public function get value():String{
return (this._value);
}
public function get numeric_value():uint{
return (this._numeric_value);
}
public function get tag():String{
return (this._tag);
}
}
}//package com.newgrounds
Section 117
//ScoreBoard (com.newgrounds.ScoreBoard)
package com.newgrounds {
import flash.events.*;
public class ScoreBoard extends EventDispatcher {
private var _name:String;
private var _id:uint;
private var _scores:Array;
private var _period:String;// = "Today"
private var _num_results:uint;// = 10
private var _numScores:uint;
private var _desiredNumResults:uint;
private var _startRank:uint;
private var _endRank:uint;
private var _page:uint;// = 1
private var _tag:String;
public function ScoreBoard(_arg1:uint, _arg2:String, _arg3:String){
this._name = _arg2;
this._id = _arg1;
this._scores = [];
this._tag = _arg3;
}
public function exists():Boolean{
return ((this._id > 0));
}
public function get id():Number{
return (this._id);
}
public function get name():String{
return (this._name);
}
public function get period():String{
return (this._period);
}
public function get page():uint{
return (this._page);
}
public function get num_results():uint{
return (this._num_results);
}
public function get scores():Array{
return (this._scores);
}
public function get tag():String{
return (this._tag);
}
public function get num_scores():uint{
return (this._numScores);
}
public function postScore(_arg1:uint, _arg2:String=null):void{
if (_arg2){
this._tag = _arg2;
};
API.postScore(this._name, _arg1);
}
public function loadScores(_arg1:String="Today", _arg2:uint=1, _arg3:uint=10):void{
this._period = _arg1;
if (((!(this._period)) || ((this._period == "")))){
this._period = ScoreBoardPeriod.TODAY;
};
this._page = _arg2;
this._num_results = _arg3;
this._desiredNumResults = 0;
API.loadScores(this.name);
}
public function loadScoresInRange(_arg1:String="Today", _arg2:uint=1, _arg3:uint=10):void{
if (_arg2 == 0){
_arg2 = 1;
};
if (_arg3 < _arg2){
_arg3 = _arg2;
};
this._period = _arg1;
if (((!(this._period)) || ((this._period == "")))){
this._period = ScoreBoardPeriod.TODAY;
};
this._desiredNumResults = ((_arg3 - _arg2) + 1);
this._num_results = this._desiredNumResults;
while (int(((_arg2 - 1) / this._num_results)) != int(((_arg3 - 1) / this._num_results))) {
this._num_results++;
};
this._page = ((_arg2 - 1) / this._num_results);
this._startRank = _arg2;
this._endRank = _arg3;
this._page++;
API.loadScores(this.name);
}
function setScores(_arg1:Array, _arg2:String, _arg3:Number, _arg4:Number, _arg5:uint):void{
var _local7:uint;
this._period = _arg2;
this._page = _arg3;
this._num_results = _arg4;
this._numScores = _arg5;
this._scores = [];
var _local6:uint;
while (_local6 < _arg1.length) {
_local7 = (((this._num_results * (this._page - 1)) + 1) + _local6);
if (((!(this._desiredNumResults)) || ((((_local7 >= this._startRank)) && ((_local7 <= this._endRank)))))){
this._scores.push(new Score(this, _local7, _arg1[_local6].username, _arg1[_local6].value, _arg1[_local6].numeric_value, _arg1[_local6].tag));
};
_local6++;
};
this._num_results = this._scores.length;
}
}
}//package com.newgrounds
Section 118
//ScoreBoardPeriod (com.newgrounds.ScoreBoardPeriod)
package com.newgrounds {
public class ScoreBoardPeriod {
public static const TODAY:String = "Today";
public static const WEEK:String = "This Week";
public static const MONTH:String = "This Month";
public static const YEAR:String = "This Year";
public static const ALL_TIME:String = "All-Time";
}
}//package com.newgrounds
Section 119
//SmartURLLoader (com.newgrounds.SmartURLLoader)
package com.newgrounds {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.errors.*;
public class SmartURLLoader extends EventDispatcher {
private var _variables:Dictionary;
private var _files:Dictionary;
private var _hasVariables:Boolean;
private var _method:String;// = "GET"
private var _urlRequest:URLRequest;
private var _urlLoader:URLLoader;
private var _dataFormat:String;// = "text"
private var _openBrowser:Boolean;// = false
private var _preventCache:Boolean;// = false
var _command:String;
public var owner;
private static const CRLF:String = "
";
private static var _loaders:Dictionary = new Dictionary();
public function SmartURLLoader(){
this._urlRequest = new URLRequest();
this._variables = new Dictionary();
}
public function get responseFormat():String{
return (this._dataFormat);
}
public function set responseFormat(_arg1:String):void{
this._dataFormat = _arg1;
}
public function get response(){
return (this._urlLoader.data);
}
public function get hasFiles():Boolean{
return (Boolean(this._files));
}
public function get method():String{
return (this._method);
}
public function set method(_arg1:String):void{
if (((this.hasFiles) && ((_arg1 == URLRequestMethod.GET)))){
throw (new IllegalOperationError("GET cannot be used to upload files."));
};
this._method = _arg1;
}
public function get openBrowser():Boolean{
return (this._openBrowser);
}
public function set openBrowser(_arg1:Boolean):void{
this._openBrowser = _arg1;
}
public function get preventCache():Boolean{
return (this._preventCache);
}
public function set preventCache(_arg1:Boolean):void{
this._preventCache = _arg1;
}
public function get bytesLoaded():uint{
return ((this._urlLoader) ? this._urlLoader.bytesLoaded : 0);
}
public function get bytesTotal():uint{
return ((this._urlLoader) ? this._urlLoader.bytesTotal : 0);
}
public function addVariable(_arg1:String, _arg2=""):void{
this._variables[_arg1] = _arg2;
if (_arg2){
this._hasVariables = true;
};
}
public function addFile(_arg1:String, _arg2:ByteArray, _arg3:String, _arg4:String="application/octet-stream"):void{
this.method = URLRequestMethod.POST;
if (!this._files){
this._files = new Dictionary();
};
this._files[_arg1] = new File(_arg1, _arg2, _arg3, _arg4);
}
public function clearVariables():void{
this._variables = new Dictionary();
}
public function clearFiles():void{
this._files = null;
}
public function load(_arg1:String):void{
var urlVariables:URLVariables;
var key:String;
var boundary:String;
var i:uint;
var event:SecurityErrorEvent;
var url = _arg1;
this._urlRequest.url = url;
if (this._preventCache){
url = (url + ("?seed=" + Math.random()));
if (this._hasVariables){
url = (url + "&");
};
};
this._urlRequest.method = this._method;
if ((((this._urlRequest.method == URLRequestMethod.GET)) || (!(this.hasFiles)))){
this._urlRequest.contentType = "application/x-www-form-urlencoded";
if (this._hasVariables){
urlVariables = new URLVariables();
for (key in this._variables) {
urlVariables[key] = this._variables[key];
};
this._urlRequest.data = urlVariables;
};
} else {
boundary = "";
i = 0;
while (i < 32) {
boundary = (boundary + String.fromCharCode(uint((97 + (Math.random() * 25)))));
i = (i + 1);
};
this._urlRequest.contentType = (("multipart/form-data; boundary=\"" + boundary) + "\"");
this._urlRequest.data = this.buildMultipartData(boundary);
};
if (this.openBrowser){
navigateToURL(this._urlRequest, "_blank");
} else {
this._urlLoader = new URLLoader();
this._urlLoader.dataFormat = this._dataFormat;
this._urlLoader.addEventListener(Event.COMPLETE, this.onComplete);
this._urlLoader.addEventListener(ProgressEvent.PROGRESS, this.onProgress);
this._urlLoader.addEventListener(IOErrorEvent.IO_ERROR, this.onIOError);
this._urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.onHTTPStatus);
this._urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError);
_loaders[this._urlLoader] = this;
try {
this._urlLoader.load(this._urlRequest);
} catch(error:Error) {
event = new SecurityErrorEvent(SecurityErrorEvent.SECURITY_ERROR, false, false, error.message);
onSecurityError(event);
};
};
}
public function close():void{
try {
this._urlLoader.close();
} catch(e:Error) {
};
}
public function dispose():void{
this.close();
this._files = null;
this._variables = null;
if (this._urlLoader){
this._urlLoader.removeEventListener(Event.COMPLETE, this.onComplete);
this._urlLoader.removeEventListener(ProgressEvent.PROGRESS, this.onProgress);
this._urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, this.onIOError);
this._urlLoader.removeEventListener(HTTPStatusEvent.HTTP_STATUS, this.onHTTPStatus);
this._urlLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, this.onSecurityError);
this._urlLoader = null;
};
this._urlRequest = null;
delete _loaders[this];
}
private function buildMultipartData(_arg1:String):ByteArray{
var _local3:String;
var _local4:File;
var _local2:ByteArray = new ByteArray();
_local2.endian = Endian.BIG_ENDIAN;
_arg1 = ("--" + _arg1);
for (_local3 in this._variables) {
_local2.writeUTFBytes((_arg1 + CRLF));
_local2.writeUTFBytes(((("Content-Disposition: form-data; name=\"" + _local3) + "\"") + CRLF));
_local2.writeUTFBytes(CRLF);
_local2.writeUTFBytes((this._variables[_local3] + CRLF));
};
if (this.hasFiles){
for each (_local4 in this._files) {
_local2.writeUTFBytes((_arg1 + CRLF));
_local2.writeUTFBytes(("Content-Disposition: form-data; name=\"Filename\"" + CRLF));
_local2.writeUTFBytes(CRLF);
_local2.writeUTFBytes((_local4.fileName + CRLF));
_local2.writeUTFBytes((_arg1 + CRLF));
_local2.writeUTFBytes(((((("Content-Disposition: form-data; name=\"" + _local4.dataField) + "\"; filename=\"") + _local4.fileName) + "\"") + CRLF));
_local2.writeUTFBytes((("Content-Type: " + _local4.contentType) + CRLF));
_local2.writeUTFBytes(CRLF);
_local2.writeBytes(_local4.data);
_local2.writeUTFBytes(CRLF);
};
_local2.writeUTFBytes((_arg1 + CRLF));
_local2.writeUTFBytes(("Content-Disposition: form-data; name=\"Upload\"" + CRLF));
_local2.writeUTFBytes(CRLF);
_local2.writeUTFBytes(("Submit Query" + CRLF));
};
_local2.writeUTFBytes((_arg1 + "--"));
_local2.position = 0;
_local2.position = 0;
return (_local2);
}
private function onComplete(_arg1:Event):void{
dispatchEvent(_arg1);
this.dispose();
}
private function onProgress(_arg1:ProgressEvent):void{
dispatchEvent(_arg1);
}
private function onIOError(_arg1:IOErrorEvent):void{
dispatchEvent(_arg1);
this.dispose();
}
private function onSecurityError(_arg1:SecurityErrorEvent):void{
dispatchEvent(_arg1);
this.dispose();
}
private function onHTTPStatus(_arg1:HTTPStatusEvent):void{
dispatchEvent(_arg1);
}
public static function closeAll():void{
var _local1:SmartURLLoader;
for each (_local1 in _loaders) {
if (_local1){
_local1.dispose();
};
};
_loaders = new Dictionary();
}
}
}//package com.newgrounds
import flash.utils.*;
class File {
private var fileName:String;
private var data:ByteArray;
private var dataField:String;
private var contentType:String;
private function File(_arg1:String, _arg2:ByteArray, _arg3:String="Filedata", _arg4:String="application/octet-stream"){
this.fileName = _arg1;
this.data = _arg2;
this.dataField = _arg3;
this.contentType = _arg4;
}
}
Section 120
//png (commandments.png)
package commandments {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package commandments
Section 121
//BaseSprite (common.controls.BaseSprite)
package common.controls {
import flash.display.*;
public dynamic class BaseSprite extends Sprite {
public var THIS:BaseSprite;
public function BaseSprite(){
super();
THIS = this;
}
public function onEnter():void{
}
}
}//package common.controls
Section 122
//ModalManager (common.controls.ModalManager)
package common.controls {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import com.greensock.*;
import common.*;
import com.greensock.easing.*;
public class ModalManager {
public var topWindow:DisplayObjectContainer;
public var mouse;// = null
public static var inst:ModalManager;
public function ModalManager(){
super();
}
public function showDialog(dialog:DisplayObject, parent:DisplayObjectContainer=null, callback:Function=null, doAnimate:Boolean=true, doCenterParent:Boolean=true, closeByClick:Boolean=true, alpha:Number=0.4):void{
var rect:Sprite;
var appRect:Rectangle;
var onClose:Function;
var dialog = dialog;
var parent = parent;
var callback = callback;
var doAnimate = doAnimate;
var doCenterParent = doCenterParent;
var closeByClick = closeByClick;
var alpha = alpha;
var center:* = function ():void{
if (doCenterParent){
GraphUtils.center(dialog, LayoutManager.inst.displayRect);
} else {
if ((dialog.x + dialog.width) > appRect.width){
dialog.x = (dialog.x - dialog.width);
};
if ((dialog.y + dialog.height) > appRect.height){
dialog.y = (dialog.y - dialog.height);
};
};
};
if (parent == null){
parent = topWindow;
};
rect = createTransparentRect(alpha, 0);
parent.addChild(rect);
parent.addChild(dialog);
appRect = Application.inst.getRect(Application.inst);
center();
Application.inst.stage.addEventListener(FullScreenEvent.FULL_SCREEN, function (e:FullScreenEvent):void{
center();
});
if (doAnimate){
animate(dialog, rect, alpha);
};
if (mouse != null){
mouse.capture();
};
var _local9 = function (e):void{
dialog.removeEventListener(Event.CLOSE, onClose);
parent.removeChild(dialog);
parent.removeChild(rect);
if (mouse != null){
mouse.release();
};
if (callback != null){
if (("button" in e)){
callback(e.button);
} else {
callback({});
};
};
};
onClose = _local9;
dialog.addEventListener(Event.CLOSE, _local9);
if (closeByClick){
with ({}) {
with ({}) {
!ERROR!.oMouseClick = function ():void{
rect.removeEventListener(MouseEvent.CLICK, oMouseClick);
onClose({});
dialog.dispatchEvent(new DynamicEvent(Event.CLOSE));
};
};
rect.addEventListener(MouseEvent.CLICK, function ():void{
rect.removeEventListener(MouseEvent.CLICK, oMouseClick);
onClose({});
dialog.dispatchEvent(new DynamicEvent(Event.CLOSE));
});
};
}
protected function animate(dialog:DisplayObject, rect:DisplayObject, toAlpha:Number):void{
var duration:Number = 0.2;
rect.alpha = 0;
TweenLite.to(rect, duration, {alpha:toAlpha});
dialog.scaleX = 0.3;
dialog.scaleY = 0.3;
dialog.alpha = 0.5;
TweenLite.to(dialog, duration, {alpha:1, scaleX:1, scaleY:1, ease:Back.easeOut});
}
private static function createTransparentRect(alpha:Number, color:uint=0x777777):Sprite{
var rect:Sprite = new Sprite();
rect.graphics.beginFill(color, 1);
rect.graphics.drawRect(0, 0, Application.inst.width, Application.inst.height);
rect.graphics.endFill();
rect.alpha = alpha;
return (rect);
}
}
}//package common.controls
Section 123
//NonScaledSprite (common.controls.NonScaledSprite)
package common.controls {
import flash.display.*;
import flash.geom.*;
import common.*;
public dynamic class NonScaledSprite extends BaseSprite {
protected var _bkg:Sprite;
public function NonScaledSprite(color:uint=0, alpha:Number=0){
super();
_bkg = new Sprite();
_bkg.graphics.beginFill(color, alpha);
_bkg.graphics.drawRect(0, 0, 100, 100);
_bkg.graphics.endFill();
_bkg.mouseEnabled = false;
addChild(_bkg);
}
override public function get height():Number{
return (_bkg.height);
}
override public function get width():Number{
return (_bkg.width);
}
override public function set height(value:Number):void{
_bkg.height = value;
onSizeChanged();
}
override public function set width(value:Number):void{
_bkg.width = value;
onSizeChanged();
}
override public function getRect(targetCoordinateSpace:DisplayObject):Rectangle{
return (_bkg.getRect(targetCoordinateSpace));
}
override public function getBounds(targetCoordinateSpace:DisplayObject):Rectangle{
return (_bkg.getBounds(targetCoordinateSpace));
}
override public function removeChild(child:DisplayObject):DisplayObject{
if (child == _bkg){
return (child);
};
return (super.removeChild(child));
}
override public function removeChildAt(index:int):DisplayObject{
if (index == getChildIndex(_bkg)){
return (_bkg);
};
return (super.removeChildAt(index));
}
public function removeAllChildren():void{
Utils.removeAllChildren(this, _bkg);
}
public function setSize(width:Number, height:Number):void{
this.width = width;
this.height = height;
}
protected function onSizeChanged():void{
}
public static function create(rect:Rectangle, parent:DisplayObjectContainer=null, color:uint=0, alpha:Number=0):NonScaledSprite{
var sprite:NonScaledSprite = new NonScaledSprite(color, alpha);
if (parent){
parent.addChild(sprite);
sprite.x = rect.x;
sprite.y = rect.y;
sprite.width = rect.width;
sprite.height = rect.height;
sprite.graphics.lineStyle(1, 0);
};
return (sprite);
}
}
}//package common.controls
Section 124
//EventManager (common.events.EventManager)
package common.events {
import flash.events.*;
import flash.utils.*;
public class EventManager {
private static const _instance:EventManager = new (EventManager);
;
private static const _dispatcher:EventDispatcher = new EventDispatcher();
public function EventManager(){
super();
setInterval(function ():void{
_dispatcher.dispatchEvent(new Event("heartbeat"));
}, 500);
}
public function dispatchEvent(event):Boolean{
if ((event is String)){
event = new Event(event);
};
return (_dispatcher.dispatchEvent(event));
}
public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void{
_dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{
_dispatcher.removeEventListener(type, listener, useCapture);
}
public function hasEventListener(type:String):Boolean{
return (_dispatcher.hasEventListener(type));
}
public static function get inst():EventManager{
return (_instance);
}
}
}//package common.events
Section 125
//MMWrapper (common.platform.mm.MMWrapper)
package common.platform.mm {
import flash.display.*;
import common.platform.*;
public class MMWrapper extends Wrapper {
public function MMWrapper(stage:Stage){
super(stage);
}
}
}//package common.platform.mm
Section 126
//Settings (common.platform.vk.Settings)
package common.platform.vk {
public class Settings {
private var _settings:Number;// = 0
public static const NOTIFICATIONS:uint = 1;
public static const FRIENDS:uint = 2;
public static const PHOTOS:uint = 4;
public static const BOOKMARK:uint = 0x0100;
public static const WALL:uint = 0x0200;
public function Settings(settings){
super();
if ((settings is Number)){
_settings = (settings as Number);
} else {
if ((((settings is String)) && (!((String(settings) == ""))))){
_settings = parseInt((settings as String));
} else {
_settings = 0;
};
};
}
public function get friendsAllowed():Boolean{
return (allowed(FRIENDS));
}
public function get notificationAllowed():Boolean{
return (allowed(NOTIFICATIONS));
}
public function get bookmarkAllowed():Boolean{
return (allowed(BOOKMARK));
}
public function allowed(flags:uint):Boolean{
return (((settings & flags) == flags));
}
public function get settings():Number{
return (_settings);
}
public function set settings(value:Number):void{
_settings = value;
}
}
}//package common.platform.vk
Section 127
//VkontakteRequest (common.platform.vk.VkontakteRequest)
package common.platform.vk {
import flash.events.*;
import com.adobe.serialization.json.*;
import flash.net.*;
import com.adobe.crypto.*;
import mx.utils.*;
public class VkontakteRequest extends EventDispatcher {
public static var viewer_id:String;
public static var api_url:String;
public static var api_id:String;
private static var _appKey:String = "oucd6nYmny";
public static function init(flashParameters:Object):void{
viewer_id = flashParameters["viewer_id"];
api_url = flashParameters["api_url"];
api_id = flashParameters["api_id"];
}
public static function call(params:Object, callback=null):void{
var loader:URLLoader;
var onResponse:*;
var params = params;
var callback = callback;
onResponse = function (event:Event):void{
var json:Object;
var event = event;
loader.removeEventListener(Event.COMPLETE, onResponse);
loader.removeEventListener(IOErrorEvent.IO_ERROR, onResponse);
loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onResponse);
if (event.type == Event.COMPLETE){
if ((loader.data is String)){
};
json = JSON.decode(loader.data);
//unresolved jump
var _slot1 = error;
json = {error:event};
} else {
json = {error:event};
};
if (json != null){
if (callback != null){
callback(json);
};
};
};
if ((params is String)){
params = {method:params};
};
addCommonParams(params);
var url:String = signParams(params);
var request:URLRequest = new URLRequest(url);
loader = new URLLoader(request);
loader.addEventListener(Event.COMPLETE, onResponse);
loader.addEventListener(IOErrorEvent.IO_ERROR, onResponse);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onResponse);
loader.load(request);
//unresolved jump
var _slot1 = error;
loader.removeEventListener(Event.COMPLETE, onResponse);
loader.removeEventListener(IOErrorEvent.IO_ERROR, onResponse);
loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, onResponse);
if (callback != null){
callback({error:_slot1});
};
}
private static function signParams(params:Object):String{
var paramName:String;
var concatedParams:String;
var sortedParamName:String;
var sortedParamNames:Array = new Array();
for (paramName in params) {
sortedParamNames.push(paramName);
};
sortedParamNames.sort();
concatedParams = "";
for each (sortedParamName in sortedParamNames) {
concatedParams = (concatedParams + ((sortedParamName + "=") + params[sortedParamName]));
};
params.sig = MD5.hash(((viewer_id + concatedParams) + _appKey));
return (((api_url + "?") + URLUtil.objectToString(params, "&", true)));
}
private static function addCommonParams(params:Object):void{
params.api_id = api_id;
params.viewer_id = viewer_id;
params.v = "2.0";
params.format = "JSON";
params.test_mode = "0";
}
}
}//package common.platform.vk
Section 128
//VKWrapper (common.platform.vk.VKWrapper)
package common.platform.vk {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import common.*;
import common.platform.*;
public class VKWrapper extends Wrapper {
private var _settings:Settings;
private var _nextShowSettingsTime:Number;// = 0
private var _settingsTimeoutId:Number;// = 0
private var _friends;
private var _wrapper:Object;
public function VKWrapper(app:Object){
var app = app;
_settings = new Settings(0);
super(app.stage);
_wrapper = app.parent.parent;
while (Utils.getClassName(_wrapper) != "APIWrapper") {
_wrapper = _wrapper.parent;
if (!_wrapper){
throw (new Error("Vkontake wrapper not found"));
};
};
_settings = new Settings(_wrapper.application.parameters["api_settings"]);
VkontakteRequest.init(_wrapper.application.parameters);
wrapper.addEventListener("onSettingsChanged", function (e:Object):void{
_settings.settings = e.settings;
});
_wrapper.application.scaleMode = StageScaleMode.NO_SCALE;
_wrapper.external.scrollWindow(70, 3000);
_stage.addEventListener(FullScreenEvent.FULL_SCREEN, function (e:FullScreenEvent):void{
if (e.fullScreen){
_wrapper.scaleX = 1;
_wrapper.scaleY = 1;
};
});
viewerId = _wrapper.application.parameters["viewer_id"];
authKey = _wrapper.application.parameters["auth_key"];
isInstalled = (_wrapper.application.parameters["is_app_user"] == 1);
configUrl = "http://cj-online.appspot.com/static/config.json";
serverUrl = "http://cj-online.appspot.com";
}
public function get wrapper():Object{
return (_wrapper);
}
public function get settings():Settings{
return (_settings);
}
public function checkSettings(flags:uint, callback, onlySuccess:Boolean=false):void{
var f:*;
var onSettings:*;
var flags = flags;
var callback = callback;
var onlySuccess = onlySuccess;
if (settings.allowed(flags)){
callback();
} else {
onSettings = function ():void{
_wrapper.removeEventListener("onWindowFocus", onSettings);
if (((!(onlySuccess)) || (settings.allowed(flags)))){
callback();
};
};
_wrapper.addEventListener("onWindowFocus", onSettings);
showSettings(flags);
};
}
private function processCallback(answer, callBackFunction){
if (((!((answer == null))) && (!((answer.response == null))))){
callBackFunction(answer.response);
return (answer.response);
};
callBackFunction(null);
return (null);
}
public function showSettings(requestedSettings:uint):void{
var requestedSettings = requestedSettings;
var now:Number = new Date().time;
var leftToWait:Number = (_nextShowSettingsTime - now);
if (leftToWait <= 0){
_wrapper.external.showSettingsBox(requestedSettings);
_nextShowSettingsTime = (now + 3500);
} else {
clearTimeout(_settingsTimeoutId);
_settingsTimeoutId = setTimeout(function ():void{
_wrapper.external.showSettingsBox(requestedSettings);
_nextShowSettingsTime = (new Date().time + 3500);
}, leftToWait);
};
}
override public function getFriends(callback):void{
var callback = callback;
checkSettings(Settings.FRIENDS, function ():void{
if (settings.allowed(Settings.FRIENDS)){
if (_friends != null){
callback(_friends);
} else {
VkontakteRequest.call({method:"execute", code:"return API.getProfiles({\"uids\":API.getFriends(), \"fields\":[\"photo_medium\", \"sex\"]});"}, function (result):void{
_friends = processCallback(result, callback);
});
};
} else {
callback(null);
};
});
}
override public function getAppFriends(callback):void{
var callback = callback;
checkSettings(Settings.FRIENDS, function ():void{
if (settings.allowed(Settings.FRIENDS)){
if (_friends != null){
callback(_friends);
} else {
VkontakteRequest.call({method:"execute", code:"return API.getProfiles({\"uids\":API.getAppFriends(), \"fields\":[\"photo_medium\", \"sex\"]});"}, function (result):void{
_friends = processCallback(result, callback);
});
};
} else {
callback(null);
};
});
}
override public function set frameRate(rate:Number):void{
wrapper.application.frameRate = rate;
}
override public function setSize(width:Number, height:Number):void{
wrapper.external.resizeWindow(width, height);
}
override public function get stageSize():Rectangle{
return (new Rectangle(0, 0, wrapper.application.stageWidth, wrapper.application.stageHeight));
}
override public function showInviteBox():void{
_wrapper.external.showInviteBox();
}
override public function addServerRequestParams(request:Object):void{
}
}
}//package common.platform.vk
Section 129
//FakeWrapper (common.platform.FakeWrapper)
package common.platform {
import flash.display.*;
import common.*;
public class FakeWrapper extends Wrapper {
public static var disableStageScale:Boolean = false;
public function FakeWrapper(stage:Stage){
super(stage);
if (!disableStageScale){
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
};
viewerId = "105739";
authKey = "c4e9a994a06fb716d35ceaceb576712f";
isInstalled = true;
configUrl = "http://localhost:8080/static/config.json";
serverUrl = "http://localhost:8080";
}
override public function getFriends(callback):void{
callback(Test.vkFriendsResponse.response);
}
override public function getAppFriends(callback):void{
callback(null);
}
}
}//package common.platform
Section 130
//Platform (common.platform.Platform)
package common.platform {
import common.platform.vk.*;
import common.platform.mm.*;
public class Platform {
public static var wrapper:Wrapper;
public function Platform(){
super();
}
public static function detect(application):void{
var url:String = application.loaderInfo.url;
if ((((url.indexOf("vkontakte.ru") > -1)) || ((url.indexOf("vk.com") > -1)))){
trace("Detected vkontakte.ru platform");
wrapper = new VKWrapper(application);
} else {
if (url.indexOf("mail.ru") > -1){
trace("Detected mail.ru platform");
wrapper = new MMWrapper(application.stage);
} else {
trace("Platform not detected, using fake wrapper");
wrapper = new FakeWrapper(application.stage);
};
};
}
}
}//package common.platform
Section 131
//Wrapper (common.platform.Wrapper)
package common.platform {
import flash.display.*;
import flash.geom.*;
import flash.net.*;
public dynamic class Wrapper {
public var normalSize:Rectangle;
public var spaceNormaSize:Rectangle;
public var spaceBiggerSize:Rectangle;
public var spaceFullscreenSize:Rectangle;
protected var _stage:Stage;
public var viewerId:String;
public var authKey:String;
public var isInstalled:Boolean;
public var configUrl:String;
public var serverUrl:String;
public function Wrapper(stage:Stage){
normalSize = new Rectangle(0, 0, 640, 480);
spaceNormaSize = new Rectangle(0, 45, 640, 365);
spaceBiggerSize = new Rectangle(0, 0, 864, 708);
spaceFullscreenSize = new Rectangle(0, 0, 864, 708);
super();
_stage = stage;
}
public function getFriends(callback):void{
throw (new Error("not implemeted"));
}
public function getAppFriends(callback):void{
throw (new Error("not implemeted"));
}
public function set frameRate(rate:Number):void{
_stage.frameRate = rate;
}
public function setSize(width:Number, height:Number):void{
}
public function get stageSize():Rectangle{
return (new Rectangle(0, 0, _stage.stageWidth, _stage.stageHeight));
}
public function showInviteBox():void{
}
public function addServerRequestParams(request:Object):void{
}
public function navigateToURL(url:String, target:String="_blank"):void{
navigateToURL(new URLRequest(url), target);
}
}
}//package common.platform
Section 132
//AnimationUtils (common.AnimationUtils)
package common {
import flash.display.*;
import flash.utils.*;
import com.greensock.*;
import com.greensock.easing.*;
public class AnimationUtils {
public function AnimationUtils(){
super();
}
public static function stopAnimationAndPlayOnceEveryNSeconds(movieClip:MovieClip, timeout:Number, frameRate:Number):void{
var onTimeout:*;
var onEnterFrame:*;
var movieClip = movieClip;
var timeout = timeout;
var frameRate = frameRate;
var onClipEnd:* = function ():void{
movieClip.gotoAndStop(0);
setTimeout(onTimeout, int((timeout * 1000)));
};
onTimeout = function ():void{
movieClip.gotoAndStop(0);
setTimeout(onEnterFrame, int((1000 / frameRate)));
};
onEnterFrame = function ():void{
if (movieClip.currentFrame < movieClip.framesLoaded){
movieClip.gotoAndStop((movieClip.currentFrame + 1));
setTimeout(onEnterFrame, int((1000 / frameRate)));
} else {
onClipEnd();
};
};
onClipEnd();
}
public static function tweenAnimationYoyo(clip:MovieClip, duration:Number, repeat:int=-1, onComplete:Function=null):TimelineMax{
var clip = clip;
var duration = duration;
var repeat = repeat;
var onComplete = onComplete;
if (repeat > 0){
duration = (duration / 2);
};
clip.gotoAndStop(1);
var tween:TimelineMax = new TimelineMax({repeat:repeat, onComplete:function ():void{
if (onComplete != null){
onComplete();
};
}});
tween.append(TweenMax.to(clip, duration, {frame:clip.framesLoaded, useFrames:true, ease:Linear.easeNone}));
tween.append(TweenMax.to(clip, duration, {frame:1, useFrames:true, ease:Linear.easeNone}));
return (tween);
}
public static function tweenAnimation(clip:MovieClip, duration:Number):void{
var step:*;
var clip = clip;
var duration = duration;
step = function ():void{
clip.stop();
if (clip.currentFrame == clip.framesLoaded){
clip.gotoAndStop(1);
} else {
clip.gotoAndStop((clip.currentFrame + 1));
};
setTimeout(step, duration);
};
duration = ((duration * 1000) / clip.framesLoaded);
step();
clip.gotoAndStop(1);
}
}
}//package common
Section 133
//ApplicationBase (common.ApplicationBase)
package common {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import com.adobe.serialization.json.*;
import common.events.*;
import flash.text.*;
import flash.ui.*;
public class ApplicationBase extends MovieClip {
protected var _configLoader:ConfigLoader;// = null
public var config;
private var _lastSimpleAlertTextField;
private var _lastSimpleAlertRect;
private var _THIS;
protected var _configProgress:Number;// = 0
private var _customCursor:DisplayObject;
private var _bkg:Sprite;
public function ApplicationBase(configLoader:ConfigLoader=null){
var configLoader = configLoader;
super();
_THIS = this;
createBkg();
if (configLoader){
_configLoader = configLoader;
loadConfig();
};
addEventListener(Event.ADDED_TO_STAGE, function (e):void{
onAddedToStage();
});
}
public function setSize(width:Number, height:Number):void{
_bkg.width = width;
_bkg.height = height;
}
protected function createBkg():void{
_bkg = new Sprite();
_bkg.graphics.beginFill(5452813, 1);
_bkg.graphics.drawRect(0, 0, 100, 100);
_bkg.graphics.endFill();
addChild(_bkg);
}
public function get THIS(){
return (_THIS);
}
protected function onConfigProgress(e:ProgressEvent):void{
_configProgress = (Number(e.bytesLoaded) / Number(e.bytesTotal));
}
protected function loadConfig():void{
if (_configLoader != null){
_configProgress = 0;
_configLoader.load(function (result):void{
var result = result;
if ((result is Error)){
onError(Dict.str("error_load_config"));
} else {
config = JSON.decode(result);
//unresolved jump
var _slot1 = e;
onError(Dict.str("error_parse_config"));
if (config){
onConfigLoaded();
};
};
}, onConfigProgress);
//unresolved jump
var _slot1 = e;
onError(_slot1);
};
}
public function showSimpleAlert(message:String, rect:DisplayObjectContainer=null):void{
var modalRect:Sprite;
var newRect:Sprite;
var bounds:Rectangle;
var alertRect:Rectangle;
var message = message;
var rect = rect;
if (!rect){
if (!_lastSimpleAlertRect){
modalRect = new Sprite();
newRect = new Sprite();
bounds = this.getBounds(this);
modalRect.graphics.beginFill(0, 0.4);
modalRect.graphics.drawRect(bounds.left, bounds.top, bounds.width, bounds.height);
modalRect.graphics.endFill();
if ((((bounds.width < 400)) || ((bounds.height < 300)))){
bounds = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
};
alertRect = new Rectangle((bounds.left + (bounds.width / 3)), (bounds.top + (bounds.height / 3)), (bounds.width / 3), (bounds.height / 3));
newRect.graphics.beginFill(0x777777);
newRect.graphics.drawRect(alertRect.x, alertRect.y, alertRect.width, alertRect.height);
newRect.graphics.endFill();
rect = newRect;
this.addChild(modalRect);
this.addChild(newRect);
} else {
rect = _lastSimpleAlertRect;
};
};
_lastSimpleAlertRect = rect;
rect.removeChild(_lastSimpleAlertTextField);
//unresolved jump
var _slot1 = e;
var textField:TextField = new TextField();
var tf:TextFormat = new TextFormat("Arial", 20, 0xFFFFFF, true);
var rectBounds:Rectangle = rect.getBounds(rect);
tf.align = TextFormatAlign.CENTER;
textField.autoSize = TextFieldAutoSize.CENTER;
textField.defaultTextFormat = tf;
textField.text = message;
textField.width = (rectBounds.width - 20);
textField.wordWrap = true;
rect.addChild(textField);
_lastSimpleAlertTextField = textField;
textField.x = (((rectBounds.left + rectBounds.right) / 2) - (textField.width / 2));
textField.y = (((rectBounds.top + rectBounds.bottom) / 2) - (textField.height / 2));
}
protected function checkAllReady():void{
if (allReady){
onReady();
};
}
private function registerMouseMove():void{
root.addEventListener(MouseEvent.MOUSE_MOVE, function (e:MouseEvent):void{
if (e.target.root){
if (_customCursor){
_customCursor.x = e.stageX;
_customCursor.y = e.stageY;
};
EventManager.inst.dispatchEvent(new DynamicEvent("cursorMove", {stageX:e.stageX, stageY:e.stageY}));
};
});
}
protected function onAddedToStage(doCheckAllReady:Boolean=true):void{
if (doCheckAllReady){
checkAllReady();
};
registerMouseMove();
}
protected function onConfigLoaded():void{
checkAllReady();
}
protected function get allReady():Boolean{
return (((config) || (!(_configLoader))));
}
protected function onReady():void{
}
protected function onError(error):void{
if ((error is Error)){
error = error.text;
};
trace(("ApplicationBase.onError: " + error));
showSimpleAlert(((error + "\n") + Dict.str("try_reload_browser")));
}
override public function addChild(child:DisplayObject):DisplayObject{
var result:* = super.addChild(child);
if (((_customCursor) && (contains(_customCursor)))){
setChildIndex(_customCursor, (numChildren - 1));
};
return (result);
}
public function setCursor(cursor:DisplayObject):void{
Mouse.hide();
_customCursor = cursor;
if ((_customCursor is InteractiveObject)){
InteractiveObject(_customCursor).mouseEnabled = false;
};
if ((_customCursor is DisplayObjectContainer)){
DisplayObjectContainer(_customCursor).mouseChildren = false;
};
var root:* = DisplayObjectContainer(this.root);
root.addChild(_customCursor);
}
public function get customCursor():DisplayObject{
return (_customCursor);
}
public function hideCustomCursor(tween:Boolean=false):void{
if (_customCursor){
if (tween){
GraphUtils.tweenVisible(_customCursor, false, 0.2);
} else {
_customCursor.visible = false;
};
};
}
public function showCustomCursor(tween:Boolean=false):void{
if (_customCursor){
if (tween){
GraphUtils.tweenVisible(_customCursor, true, 0.2);
} else {
_customCursor.visible = true;
};
};
}
}
}//package common
Section 134
//ConfigLoader (common.ConfigLoader)
package common {
import flash.events.*;
import flash.net.*;
public class ConfigLoader {
private var _configPathes:Array;// = null
private var _currentPathIndex:int;// = -1
public function ConfigLoader(configPathes:Array=null){
super();
if (configPathes){
_configPathes = configPathes;
} else {
_configPathes = ["./config.json"];
};
}
public function get configPathes():Array{
return (_configPathes);
}
public function load(callback, progress=null):void{
_currentPathIndex = -1;
loadInternal(callback, progress);
}
protected function loadInternal(callback, progress):void{
var handler:*;
var callback = callback;
var progress = progress;
handler = function (e:Event):void{
var configLoader:URLLoader = URLLoader(e.currentTarget);
configLoader.removeEventListener(IOErrorEvent.IO_ERROR, handler);
configLoader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, handler);
configLoader.removeEventListener(Event.COMPLETE, handler);
if (progress){
configLoader.removeEventListener(ProgressEvent.PROGRESS, progress);
};
if (e.type == Event.COMPLETE){
trace("Config loaded");
callback(configLoader.data);
} else {
if ((e is ErrorEvent)){
if (_currentPathIndex < (_configPathes.length - 1)){
loadInternal(callback, progress);
} else {
callback(new Error(ErrorEvent(e).text));
};
} else {
if (_currentPathIndex < (_configPathes.length - 1)){
loadInternal(callback, progress);
} else {
callback(new Error("Unknown error loading config"));
};
};
};
};
var configLoader:URLLoader = new URLLoader();
configLoader.addEventListener(IOErrorEvent.IO_ERROR, handler);
configLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handler);
configLoader.addEventListener(Event.COMPLETE, handler);
if (progress){
configLoader.addEventListener(ProgressEvent.PROGRESS, progress);
};
_currentPathIndex++;
var path:String = ((_configPathes[_currentPathIndex] + "?random=") + int((Math.random() * 1000000000)));
trace(("Loading config from: " + path));
configLoader.load(new URLRequest(path));
}
}
}//package common
Section 135
//CSV (common.CSV)
package common {
import com.adobe.utils.*;
public class CSV {
private static const DELIM:String = ",";
public function CSV(){
super();
}
public static function parse(text:String, LineClass_:Class=null):Array{
var fieldNames:Array;
var k:int;
var j:int;
var line:String;
var values:Array;
var obj:Object;
var i:int;
var text = text;
var LineClass_ = LineClass_;
var lines:Array = text.split("\n");
var objects:Array = [];
if (lines.length > 0){
fieldNames = String(StringUtil.trim(lines[0])).split(",");
k = 1;
while (k < fieldNames.length) {
fieldNames[k] = StringUtil.trim(fieldNames[k]);
k = (k + 1);
};
if (fieldNames.length > 0){
j = 1;
for (;j < lines.length;(j = (j + 1))) {
line = StringUtil.trim(lines[j]);
if (line.indexOf("//") == 0){
} else {
if (line.length > 0){
values = parseList(line, DELIM);
if (values.length > fieldNames.length){
throw (new Error(((((((("Error parsing CSV: " + fieldNames.length) + " values > ") + values.length) + " columns in line ") + lines[j]) + " \n") + values)));
};
obj = (LineClass_) ? new (LineClass_) : new Object();
i = 0;
while (i < values.length) {
obj[fieldNames[i]] = parseValue(values[i]);
i = (i + 1);
};
objects.push(obj);
continue;
var _slot1 = e;
throw (new Error((((("Error parsing CSV: " + "in line ") + line) + "\n") + _slot1)));
};
};
};
};
};
return (objects);
}
private static function parseValue(value:String):Object{
value = StringUtil.trim(value);
if (StringUtil.beginsWith(value, "\"")){
return (parseValue(value.substring(1, (value.length - 1))));
};
if (StringUtil.beginsWith(value, "{")){
return (parseObject(value));
};
if (StringUtil.beginsWith(value, "[")){
return (parseArray(value));
};
return (value);
}
private static function parseList(str:String, delim:String):Array{
var stack:Array;
var groups:Array;
var isDelim:Boolean;
var isEnd:Boolean;
var char:String;
var value:String;
var str = str;
var delim = delim;
var checkGroupStart:* = function (char:String):Boolean{
var group:String;
for each (group in groups) {
if (group.charAt(0) == char){
stack.push(group);
return (true);
};
};
return (false);
};
var checkGroupEnd:* = function (char:String):Boolean{
var curGroup:String;
if (stack.length > 0){
curGroup = stack[(stack.length - 1)];
if (curGroup.charAt(1) == char){
stack.splice((stack.length - 1), 1);
return (true);
};
};
return (false);
};
var values:Array = [];
stack = [];
groups = ["\"\"", "{}", "[]"];
var startIndex:int;
var i:int;
while (true) {
isDelim = false;
isEnd = false;
if (stack.length == 0){
if (i == str.length){
isDelim = true;
isEnd = true;
} else {
char = str.charAt(i);
if (char == delim){
isDelim = true;
};
};
} else {
if (i == str.length){
throw (new Error((((((((("Error parsing CSV: " + "in line ") + str) + " group end not found at ") + i) + ", stack length: ") + stack.length) + ", group: ") + stack[(stack.length - 1)])));
};
char = str.charAt(i);
};
if (isDelim){
value = str.substring(startIndex, i);
values.push(value);
if (isEnd){
break;
};
i = (i + 1);
while ((((i < str.length)) && ((((str.charCodeAt(i) == 32)) || ((str.charCodeAt(i) == 9)))))) {
i = (i + 1);
};
startIndex = i;
} else {
if (!checkGroupEnd(char)){
checkGroupStart(char);
i = (i + 1);
} else {
i = (i + 1);
};
};
};
return (values);
}
private static function parseObject(value:String):Object{
var keyValue:Object;
var key:String;
value = value.substring(1, (value.length - 1));
var pairs:Array = parseList(value, DELIM);
var obj:Object = {};
var i:int;
while (i < pairs.length) {
keyValue = splitFirst(pairs[i], "=");
if (keyValue){
key = StringUtil.trim(keyValue.key);
obj[key] = parseValue(StringUtil.trim(keyValue.value));
};
i++;
};
return (obj);
}
private static function splitFirst(str:String, delim:String):Object{
var i:int = str.indexOf(delim);
if (i > -1){
return ({key:str.substring(0, i), value:str.substring((i + 1))});
};
return (null);
}
private static function parseArray(value:String):Object{
value = value.substring(1, (value.length - 1));
var items:Array = parseList(value, DELIM);
var i:int;
while (i < items.length) {
items[i] = parseValue(StringUtil.trim(items[i]));
i++;
};
if ((((items.length == 1)) && ((items[0] == "")))){
items = [];
};
return (items);
}
}
}//package common
Section 136
//Dict (common.Dict)
package common {
public class Dict {
public static var _provider;
public static function str(key:String, ... _args):String{
var value:String;
if (_provider){
value = _provider[key];
if (value){
return (replaceParams(value, _args));
};
};
return (key);
}
private static function replaceParams(str:String, ... _args):String{
var args:Array;
if (str == null){
return ("");
};
var len:uint = _args.length;
if ((((len == 1)) && ((_args[0] is Array)))){
args = (_args[0] as Array);
len = args.length;
} else {
args = _args;
};
var i:int;
while (i < len) {
str = str.replace(new RegExp((("\\{" + i) + "\\}"), "g"), args[i]);
i++;
};
return (str);
}
public static function get provider(){
return (_provider);
}
public static function set provider(value):void{
_provider = value;
}
}
}//package common
Section 137
//DragInfo (common.DragInfo)
package common {
import flash.display.*;
import flash.geom.*;
public class DragInfo {
public var item:Object;
public var object:DisplayObject;
public var point:Point;
public var source;
public function DragInfo(object:DisplayObject, source, item:Object=null, point:Point=null){
super();
this.item = item;
this.source = source;
this.object = object;
this.point = point;
}
}
}//package common
Section 138
//DynamicEvent (common.DynamicEvent)
package common {
import flash.events.*;
public dynamic class DynamicEvent extends Event {
public function DynamicEvent(type:String, params:Object=null, cancelable:Boolean=false){
var propName:String;
super(type, false, cancelable);
if (params){
for (propName in params) {
this[propName] = params[propName];
};
};
}
}
}//package common
Section 139
//GraphUtils (common.GraphUtils)
package common {
import flash.display.*;
import flash.geom.*;
import flash.text.*;
import com.greensock.*;
import com.adobe.utils.*;
import common.platform.*;
import com.greensock.easing.*;
public class GraphUtils {
public static const LEFT_CENTER:String = "leftCenter";
public static const TOP_CENTER:String = "topCenter";
public static const BOTTOM_CENTER:String = "bottomCenter";
public static const TOP_LEFT:String = "topLeft";
public static const BOTTOM_LEFT:String = "bottomLeft";
public function GraphUtils(){
super();
}
public static function setText(textField:TextField, text:String, ellipsis:Boolean=false):void{
var nextWordLen:int;
var addLen:int;
if (text == null){
text = "";
};
setTextInternal(textField, text);
if (ellipsis){
nextWordLen = ellipsisLastLine(textField);
if (nextWordLen == -1){
ellipsisLastLine(textField, -3);
} else {
if (nextWordLen > 0){
addLen = 1;
while (addLen < nextWordLen) {
setTextInternal(textField, text);
if (ellipsisLastLine(textField, addLen) == -1){
ellipsisLastLine(textField, (addLen - 1));
break;
};
addLen++;
};
};
};
};
}
private static function ellipsisLastLine(textField:TextField, delta:int=0):int{
var newText:String;
var lastLine2:String;
var end2:int;
var nextSpaceIndex:int;
var oldText:String = textField.text;
var lastLine:String = textField.getLineText((textField.bottomScrollV - 1));
var i:int = oldText.indexOf(lastLine);
if ((i + lastLine.length) < oldText.length){
newText = (StringUtil.rtrim(oldText.substring(0, ((i + lastLine.length) + delta))) + "...");
setTextInternal(textField, newText);
lastLine2 = textField.getLineText((textField.bottomScrollV - 1));
if (lastLine2.indexOf("...") == -1){
setTextInternal(textField, oldText);
return (-1);
};
end2 = ((newText.indexOf(lastLine2) + lastLine2.length) - "...".length);
nextSpaceIndex = oldText.indexOf(" ", end2);
if (nextSpaceIndex == end2){
nextSpaceIndex = oldText.indexOf(" ", (end2 + 1));
};
if (nextSpaceIndex == -1){
nextSpaceIndex = oldText.length;
};
return ((nextSpaceIndex - end2));
//unresolved jump
};
return (0);
}
private static function setTextInternal(textField:TextField, text:String):void{
var format:TextFormat;
if (text == null){
text = "";
};
if (textField.text.length > 0){
format = textField.getTextFormat(0);
} else {
format = textField.getTextFormat();
};
textField.text = text;
textField.setTextFormat(format);
}
public static function center(obj:DisplayObject, by=null, x:Number=NaN, y:Number=NaN):void{
if (by == null){
if (obj.parent){
by = obj.parent;
} else {
by = LayoutManager.inst.displayRect;
};
};
var objRect:Rectangle = obj.getBounds(obj);
if (!(by is Rectangle)){
by = by.getBounds(by);
};
if (isNaN(x)){
obj.x = (((by.left + by.right) / 2) - ((objRect.left + objRect.right) / 2));
} else {
obj.x = x;
};
if (isNaN(y)){
obj.y = (((by.top + by.bottom) / 2) - ((objRect.top + objRect.bottom) / 2));
} else {
obj.y = y;
};
}
public static function alignIn(obj:DisplayObject, by, align:String):void{
if (!(by is Rectangle)){
by = by.getBounds(by);
};
switch (align){
case LEFT_CENTER:
center(obj, by, by.x);
break;
case TOP_CENTER:
center(obj, by, NaN, by.y);
break;
case BOTTOM_CENTER:
center(obj, by, NaN, (by.bottom - obj.height));
break;
case TOP_LEFT:
obj.x = by.left;
obj.y = by.top;
break;
case BOTTOM_LEFT:
obj.x = by.left;
obj.y = (by.bottom - obj.height);
break;
};
}
public static function alignTo(obj:DisplayObject, to, align:String):void{
if (!(to is Rectangle)){
to = to.getBounds(to.parent);
};
switch (align){
case BOTTOM_LEFT:
obj.x = to.left;
obj.y = to.bottom;
break;
case BOTTOM_CENTER:
center(obj, to, NaN, to.bottom);
break;
case TOP_CENTER:
center(obj, to, NaN, (to.top - obj.height));
break;
};
}
public static function copyClipAsImage(clip:DisplayObject):InteractiveObject{
var oldMatrix:Matrix = clip.transform.matrix.clone();
clip.transform.matrix = new Matrix();
clip.x = 0;
clip.y = 0;
var copy:Sprite = new Sprite();
var bitmapData:BitmapData = new BitmapData(clip.width, clip.height, true, 0);
var m:Matrix = new Matrix();
var rect:Rectangle = clip.getBounds(clip);
m.translate(-(rect.x), -(rect.y));
bitmapData.draw(clip, m, null, null, null);
var bitmap:Bitmap = new Bitmap(bitmapData);
bitmap.smoothing = true;
copy.addChild(bitmap);
copy.transform.matrix = oldMatrix.clone();
copy.transform.colorTransform = clip.transform.colorTransform;
if ((clip is InteractiveObject)){
copy.mouseEnabled = InteractiveObject(clip).mouseEnabled;
};
clip.transform.matrix = oldMatrix;
return (copy);
}
public static function copyAndPasteClipAsImage(clip:DisplayObject, dest:DisplayObjectContainer):InteractiveObject{
var copy:InteractiveObject = copyClipAsImage(clip);
var p:Point = dest.globalToLocal(clip.parent.localToGlobal(new Point(clip.x, clip.y)));
copy.scaleX = (copy.scaleX * clip.parent.scaleX);
copy.scaleY = (copy.scaleY * clip.parent.scaleY);
copy.x = p.x;
copy.y = p.y;
dest.addChild(copy);
return (copy);
}
public static function fit(obj:DisplayObject, parent=null, marginX:Number=0, marginY:Number=0):void{
var rect:Rectangle;
if (!parent){
parent = obj.parent;
};
if ((parent is Rectangle)){
rect = parent;
} else {
rect = parent.getRect(parent);
};
rect.x = (rect.x + marginX);
rect.width = (rect.width - (marginX * 2));
rect.y = (rect.y + marginY);
rect.height = (rect.height - (marginY * 2));
obj.scaleX = 1;
obj.scaleY = 1;
var scale:Number = Math.min((rect.width / obj.width), (rect.height / obj.height));
obj.scaleX = scale;
obj.scaleY = scale;
var newX:Number = Math.floor(((rect.width - obj.width) / 2));
var newY:Number = Math.floor(((rect.height - obj.height) / 2));
obj.x = Math.round((newX + rect.x));
obj.y = Math.round((newY + rect.y));
}
public static function tweenVisible(obj:DisplayObject, visible:Boolean, duration:Number, remove:Boolean=false):void{
var obj = obj;
var visible = visible;
var duration = duration;
var remove = remove;
if (visible){
obj.visible = true;
obj.alpha = 0;
TweenLite.killTweensOf(obj);
TweenLite.to(obj, duration, {alpha:1});
} else {
obj.alpha = 1;
TweenLite.killTweensOf(obj);
TweenLite.to(obj, duration, {alpha:0, onComplete:function ():void{
obj.alpha = 1;
if (!remove){
obj.visible = false;
} else {
Utils.removeChildSafe(obj);
};
}});
};
}
public static function centerX(obj:DisplayObject):Number{
var rect:Rectangle = obj.getRect(obj);
return ((obj.x + ((rect.left + rect.right) / 2)));
}
public static function randomPoint():Point{
return (new Point((Math.random() * LayoutManager.inst.displayRect.width), (Math.random() * LayoutManager.inst.displayRect.height)));
}
public static function centerPoint():Point{
return (new Point((Platform.wrapper.normalSize.width / 2), (Platform.wrapper.normalSize.height / 2)));
}
public static function showFlash(container:DisplayObjectContainer, onComplete:Function=null):void{
var flash:Sprite;
var container = container;
var onComplete = onComplete;
flash = new Sprite();
var displayRect:Rectangle = LayoutManager.inst.displayRect;
flash.graphics.beginFill(0xFFFFFF, 1);
flash.graphics.drawRect(0, 0, displayRect.width, displayRect.height);
flash.graphics.endFill();
container.addChild(flash);
TweenLite.to(flash, 1, {alpha:0, onComplete:function ():void{
Utils.removeChildSafe(flash);
if (onComplete != null){
onComplete();
};
}});
}
public static function tweenFloating(obj, duration:Number):TweenMax{
var x:Number = obj.x;
var y:Number = obj.y;
var r:Number = 10;
var points:Array = [{x:x, y:(y - r)}, {x:(x - r), y:(y - r)}, {x:(x - r), y:y}, {x:x, y:y}];
return (TweenMax.to(obj, duration, {bezierThrough:points, repeat:-1, ease:Linear.easeNone}));
}
public static function tweenFloatingH(obj):TweenMax{
var x:Number = obj.x;
var y:Number = obj.y;
var r:Number = 20;
return (TweenMax.to(obj, 3, {x:(x + r), repeat:-1, yoyo:true, ease:Quad.easeInOut}));
}
}
}//package common
Section 140
//LayoutManager (common.LayoutManager)
package common {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import common.events.*;
import common.platform.*;
public class LayoutManager {
public var isFullscreen:Boolean;// = false
private var _stage:Stage;
public static var inst:LayoutManager;
public function LayoutManager(stage:Stage){
var stage = stage;
super();
_stage = stage;
stage.addEventListener(FullScreenEvent.FULL_SCREEN, function (e:FullScreenEvent):void{
isFullscreen = e.fullScreen;
EventManager.inst.dispatchEvent("needRelayout");
});
}
public function layout(container:DisplayObjectContainer, objects:Array, removeAll:Boolean=true):void{
internalLayout(container, objects, removeAll);
checkOutOfScreenBoundsAndCorrectScalableObjects(container, objects, removeAll);
}
private function calcBounds(objects:Array, container:DisplayObjectContainer):Rectangle{
var rect:Rectangle;
var item:Object = objects[0].obj;
var outerBounds:Rectangle = item.getRect(container);
var i = 1;
while (i < objects.length) {
item = objects[i].obj;
rect = item.getRect(container);
if (rect.left < outerBounds.left){
outerBounds.left = rect.left;
};
if (rect.right > outerBounds.right){
outerBounds.right = rect.right;
};
if (rect.top < outerBounds.top){
outerBounds.top = rect.top;
};
if (rect.bottom > outerBounds.bottom){
outerBounds.bottom = rect.bottom;
};
i++;
};
return (outerBounds);
}
private function checkOutOfScreenBoundsAndCorrectScalableObjects(container:DisplayObjectContainer, objects:Array, removeAll:Boolean):void{
var outerBounds:Rectangle;
var scalableHeight:Number;
var scalableWidth:Number;
var item:Object;
var overWidth:Number;
var overHeight:Number;
var dx:Number;
var dy:Number;
var obj:*;
var scaleX:Number;
var scaleY:Number;
var scale:Number;
if (objects.length > 0){
outerBounds = calcBounds(objects, container);
scalableHeight = 0;
scalableWidth = 0;
for each (item in objects) {
obj = item.obj;
if (((!((item.scale == undefined))) && ((item.scale == true)))){
scalableWidth = (scalableWidth + obj.width);
scalableHeight = (scalableHeight + obj.height);
};
};
overWidth = (outerBounds.width - displayRect.width);
overHeight = (outerBounds.height - displayRect.height);
if ((((((overHeight > 0)) && ((scalableHeight > 0)))) || ((((overWidth > 0)) && ((scalableWidth > 0)))))){
scaleX = ((scalableWidth - overWidth) / scalableWidth);
scaleY = ((scalableHeight - overHeight) / scalableHeight);
scale = Math.min(scaleX, scaleY);
if (scale < 0){
scale = 0;
};
internalLayout(container, objects, removeAll, scale);
};
outerBounds = calcBounds(objects, container);
dx = 0;
dy = 0;
if (outerBounds.top < 0){
dy = -(outerBounds.top);
};
if (outerBounds.bottom > displayRect.bottom){
dy = (displayRect.bottom - outerBounds.bottom);
};
if (outerBounds.left < 0){
dx = -(outerBounds.left);
};
if (outerBounds.right > displayRect.right){
dx = (displayRect.right - outerBounds.right);
};
if (((!((dx == 0))) || (!((dy == 0))))){
for each (item in objects) {
item.obj.x = (item.obj.x + dx);
item.obj.y = (item.obj.y + dy);
};
};
};
}
public function internalLayout(container:DisplayObjectContainer, objects:Array, removeAll:Boolean, scaleForScalable:Number=1):void{
var item:Object;
var obj:*;
var scale:Number;
var objRect:Rectangle;
if (removeAll){
Utils.removeAllChildren(container);
} else {
removeObjects(objects);
};
for each (item in objects) {
obj = item.obj;
item = preprocessItem(item);
if (item.x != undefined){
obj.x = item.y;
};
if (item.y != undefined){
obj.y = item.y;
};
scale = (((!((item.scale == undefined))) && ((item.scale == true)))) ? scaleForScalable : 1;
if (item.width != undefined){
if (((("maxSize" in item.obj)) && (item.obj.maxSize))){
obj.width = (scale * Math.min(item.width, item.obj.maxSize.width));
} else {
obj.width = (scale * item.width);
};
};
if (item.height != undefined){
if (((("maxSize" in item.obj)) && (item.obj.maxSize))){
obj.height = (scale * Math.min(item.height, item.obj.maxSize.height));
} else {
obj.height = (scale * item.height);
};
};
objRect = obj.getRect(obj);
switch (item.vAlign.align){
case undefined:
break;
case "bottom":
if (item.vAlign.type == "out"){
obj.y = item.vAlign.target.bottom;
} else {
obj.y = (item.vAlign.target.bottom - objRect.bottom);
};
break;
case "top":
if (item.vAlign.type == "out"){
obj.y = (item.vAlign.target.top - objRect.bottom);
} else {
obj.y = item.vAlign.target.top;
};
break;
case "center":
obj.y = Math.round((((item.vAlign.target.top + item.vAlign.target.bottom) / 2) - ((objRect.top + objRect.bottom) / 2)));
break;
case "fill":
obj.y = item.vAlign.target.top;
obj.height = item.vAlign.target.height;
break;
default:
throw (new Error(("not implemented: vAlign.align: " + item.vAlign.align)));
};
switch (item.hAlign.align){
case undefined:
break;
case "left":
obj.x = item.hAlign.target.left;
break;
case "right":
obj.x = item.hAlign.target.right;
break;
case "center":
obj.x = Math.round((((item.hAlign.target.left + item.hAlign.target.right) / 2) - ((objRect.left + objRect.right) / 2)));
break;
case "fill":
obj.x = item.hAlign.target.left;
obj.width = item.hAlign.target.width;
break;
default:
throw (new Error(("not implemented: hAlign: " + item.hAlign.align)));
};
if (item.dx){
obj.x = (obj.x + item.dx);
};
if (item.dy){
obj.y = (obj.y + item.dy);
};
container.addChild(obj);
};
}
private function removeObjects(objects:Array):void{
var item:Object;
for each (item in objects) {
Utils.removeChildSafe(item.obj);
};
}
public function preprocessItem(item:Object):Object{
var hAlign:Object = item.align;
var vAlign:Object = item.align;
var newItem:Object = {};
Utils.copyDynamicProps(newItem, item, true);
var rootProps:Object = collectAlignProps(newItem);
if (!rootProps.target){
rootProps.target = displayRect;
};
if (!newItem.align){
newItem.align = {};
} else {
if ((newItem.align is String)){
newItem.align = {align:newItem.align};
};
};
copyNonExistingProps(newItem.align, rootProps);
if (!newItem.vAlign){
newItem.vAlign = {};
} else {
if ((newItem.vAlign is String)){
newItem.vAlign = {align:newItem.vAlign};
};
};
copyNonExistingProps(newItem.vAlign, newItem.align);
if (!newItem.hAlign){
newItem.hAlign = {};
} else {
if ((newItem.hAlign is String)){
newItem.hAlign = {align:newItem.hAlign};
};
};
copyNonExistingProps(newItem.hAlign, newItem.align);
if (!(newItem.align.target is Rectangle)){
newItem.align.target = newItem.align.target.getRect(newItem.align.target.parent);
};
if (!(newItem.vAlign.target is Rectangle)){
newItem.vAlign.target = newItem.vAlign.target.getRect(newItem.vAlign.target.parent);
};
if (!(newItem.hAlign.target is Rectangle)){
newItem.hAlign.target = newItem.hAlign.target.getRect(newItem.hAlign.target.parent);
};
return (newItem);
}
private function copyNonExistingProps(dest:Object, src):void{
var propName:String;
for (propName in src) {
if (!dest[propName]){
dest[propName] = src[propName];
};
};
}
private function collectAlignProps(item:Object):Object{
var props:Object = {};
if (item.target){
props.target = item.target;
};
if (item.type){
props.type = item.type;
};
if (((item.align) && ((item.align is String)))){
props.align = item.align;
};
return (props);
}
public function get displayRect():Rectangle{
if (isFullscreen){
return (new Rectangle(0, 0, _stage.fullScreenWidth, _stage.fullScreenHeight));
};
return (Platform.wrapper.normalSize.clone());
}
}
}//package common
Section 141
//MouseController (common.MouseController)
package common {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class MouseController extends EventDispatcher {
private var _curPos:Point;
private var _holdPos:Point;
private var _lastPos:Point;
private var _delta:Point;
private var _holdTarget:Object;
private var _holdCurrentTarget:Object;
private var _holdLocalPoint:Point;
private var _cursor:DisplayObject;
private var _mode:String;// = "normal"
private var _dragEnabled:Boolean;// = true
private var _captureCount:Number;// = 0
private var _lastWheelTime:Number;// = -1
private var _outerObject:IEventDispatcher;
private var _clickObjects:Array;
public static const MODE_NORMAL:String = "normal";
public static const MODE_DRAGGING:String = "dragging";
public static const MODE_HOLD:String = "hold";
private static var _instance:MouseController;
public function MouseController(){
_curPos = new Point(-1, -1);
_delta = new Point(0, 0);
_clickObjects = [];
super();
}
public function get cursor():DisplayObject{
return (_cursor);
}
public function set cursor(value:DisplayObject):void{
_cursor = value;
}
public function get dragEnabled():Boolean{
return (_dragEnabled);
}
public function set dragEnabled(value:Boolean):void{
_dragEnabled = value;
}
public function attach(clickObject, outerObject):void{
outerObject.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
outerObject.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
if (clickObject){
setClickObjects(clickObject);
};
_outerObject = outerObject;
}
public function setClickObjects(clickObjects):void{
var clickObject:*;
if (!(clickObjects is Array)){
clickObjects = [clickObjects];
};
for each (clickObject in clickObjects) {
clickObject.removeEventListener(MouseEvent.MOUSE_WHEEL, onMouseWeel);
clickObject.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
};
_clickObjects = [];
for each (clickObject in clickObjects) {
if (_clickObjects.indexOf(clickObject) == -1){
_clickObjects.push(clickObject);
clickObject.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWeel);
clickObject.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
};
};
}
public function get captured():Boolean{
return ((_captureCount > 0));
}
public function capture():void{
if (_captureCount == 0){
changeMode(MODE_NORMAL);
};
_captureCount++;
}
public function release():void{
if (_captureCount > 0){
_captureCount--;
};
}
private function changeMode(newMode:String):void{
_mode = newMode;
}
private function onMouseDown(event:MouseEvent):void{
if (!captured){
switch (_mode){
case MODE_NORMAL:
changeMode(MODE_HOLD);
_holdPos = _curPos.clone();
_holdTarget = event.target;
_holdCurrentTarget = event.currentTarget;
_holdLocalPoint = new Point(event.localX, event.localY);
break;
};
dispatchEvent(event.clone());
} else {
dispatchEvent(event.clone());
};
}
private function onMouseUp(event:MouseEvent):void{
var _local2:DisplayObject;
if (!captured){
switch (_mode){
case MODE_HOLD:
changeMode(MODE_NORMAL);
dispatchEvent(new MouseEvent(MouseEvent.CLICK));
break;
case MODE_DRAGGING:
changeMode(MODE_NORMAL);
_local2 = findClickObject(event.stageX, event.stageY);
dispatchEvent(new DynamicEvent("stopDragging", {targetObject:event.target, currentTargetObject:_local2}));
break;
default:
dispatchEvent(event.clone());
};
} else {
dispatchEvent(event.clone());
};
}
private function findClickObject(stageX:Number, stageY:Number):DisplayObject{
var clickObject:DisplayObject;
var index:int;
while (index < _clickObjects.length) {
clickObject = _clickObjects[index];
if (clickObject.hitTestPoint(stageX, stageY, false)){
if (clickObject.stage){
return (clickObject);
};
return (null);
};
index++;
};
return (null);
}
private function onMouseWeel(event:MouseEvent):void{
var d:Number;
var now:Number = new Date().time;
if ((now - _lastWheelTime) > 50){
_lastWheelTime = now;
if (!captured){
d = ((event.delta > 0)) ? 0.05 : -0.05;
if (d > 0){
if (dragEnabled){
dispatchEvent(new Event("zoomIn"));
};
} else {
if (dragEnabled){
dispatchEvent(new Event("zoomOut"));
};
};
};
};
}
private function onMouseMove(event:MouseEvent):void{
_lastPos = _curPos.clone();
_curPos.x = event.stageX;
_curPos.y = event.stageY;
if (_cursor != null){
_cursor.x = _curPos.x;
_cursor.y = _curPos.y;
};
var DRAG_THRESHOLD:Number = 15;
if (!captured){
switch (_mode){
case MODE_HOLD:
if ((((Math.abs((_holdPos.x - _curPos.x)) > DRAG_THRESHOLD)) || ((Math.abs((_holdPos.y - _curPos.y)) > DRAG_THRESHOLD)))){
changeMode(MODE_DRAGGING);
if (dragEnabled){
dispatchEvent(new DynamicEvent("startDrag", {targetObject:_holdTarget, currentTargetObject:_holdCurrentTarget, localPoint:_holdLocalPoint}));
dispatchEvent(new Event("dragging"));
};
};
break;
case MODE_DRAGGING:
if (dragEnabled){
dispatchEvent(new Event("dragging"));
};
break;
default:
dispatchEvent(event.clone());
break;
};
} else {
dispatchEvent(event.clone());
};
}
public function get curPos():Point{
return (_curPos);
}
public function set curPos(value:Point):void{
_curPos = value;
}
public function get lastDelta():Point{
_delta.x = (_curPos.x - _lastPos.x);
_delta.y = (_curPos.y - _lastPos.y);
return (_delta);
}
public function get holdDelta():Point{
_delta.x = (_holdPos.x - _lastPos.x);
_delta.y = (_holdPos.y - _lastPos.y);
return (_delta);
}
}
}//package common
Section 142
//PlatformApplicationBase (common.PlatformApplicationBase)
package common {
import common.platform.*;
public class PlatformApplicationBase extends ApplicationBase {
public function PlatformApplicationBase(configLoader:ConfigLoader=null){
super(configLoader);
}
override protected function onAddedToStage(doCheckAllReady:Boolean=true):void{
Platform.detect(this);
super.onAddedToStage(doCheckAllReady);
}
override protected function get allReady():Boolean{
return (((super.allReady) && (Platform.wrapper)));
}
override public function setSize(width:Number, height:Number):void{
Platform.wrapper.setSize(width, height);
super.setSize(width, height);
}
}
}//package common
Section 143
//SimpleLoader (common.SimpleLoader)
package common {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class SimpleLoader {
public static function loadSwf(url:String, callback, progress=null):void{
var loader:Loader;
var handler:*;
var url = url;
var callback = callback;
var progress = progress;
handler = function (event:Event):void{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, handler);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, handler);
loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, handler);
if (progress){
loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
};
if (event.type == Event.COMPLETE){
callback(loader.content);
} else {
trace(("loadSWF error: " + event));
callback(null);
};
};
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, handler);
loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handler);
if (progress){
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
};
loader.load(new URLRequest(url));
}
public static function loadContent(url:String, callback, progress=null):void{
var loader:URLLoader;
var handler:*;
var url = url;
var callback = callback;
var progress = progress;
handler = function (event:Event):void{
loader.removeEventListener(Event.COMPLETE, handler);
loader.removeEventListener(IOErrorEvent.IO_ERROR, handler);
loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, handler);
if (progress){
loader.removeEventListener(ProgressEvent.PROGRESS, progress);
};
if (event.type == Event.COMPLETE){
callback(loader.data);
} else {
trace(("loadContent error: " + event));
callback(null);
};
};
callback(null);
}
}
}//package common
Section 144
//SoundManager (common.SoundManager)
package common {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import assets.*;
public class SoundManager {
private var _mainMusic:Sound;// = null
private var _intro1Music:Sound;// = null
private var _intro2Music:Sound;// = null
private var _intro3Music:Sound;// = null
private var _click:Sound;// = null
private var _elementClick:Sound;// = null
private var _reactionFailedClick:Sound;// = null
private var _move:Sound;// = null
private var _hint:Sound;// = null
private var _flight:Sound;// = null
private var _flashes:Array;// = null
private var _newElements:Array;// = null
private var _oldElements:Array;// = null
private var _mainChannel:SoundChannel;
private var _intro1Channel:SoundChannel;
private var _intro2Channel:SoundChannel;
private var _intro3Channel:SoundChannel;
private var _soundsOn:Boolean;// = true
public static var inst:SoundManager;
public function SoundManager(){
super();
_mainMusic = Assets.getSound("music.mp3");
_intro1Music = Assets.getSound("intro_1.mp3");
_intro2Music = Assets.getSound("intro_2.mp3");
_intro3Music = Assets.getSound("intro_3.mp3");
_click = Assets.getSound("click.wav");
_elementClick = Assets.getSound("element_click.wav");
_reactionFailedClick = Assets.getSound("no.wav");
_move = Assets.getSound("move.wav");
_hint = Assets.getSound("hint.wav");
_flight = Assets.getSound("flight.wav");
_flashes = [Assets.getSound("flash_v1.wav"), Assets.getSound("flash_v2.wav"), Assets.getSound("flash_v4.wav")];
_newElements = [Assets.getSound("new_element_v1.wav"), Assets.getSound("new_element_v2.wav"), Assets.getSound("new_element_v3.wav")];
_oldElements = [Assets.getSound("old_element_v1.wav"), Assets.getSound("old_element_v2.wav")];
}
public function get soundsOn():Boolean{
return (_soundsOn);
}
public function set soundsOn(value:Boolean):void{
_soundsOn = value;
}
public function playMain():void{
if (_soundsOn){
stopMain();
_mainChannel = _mainMusic.play(0, int.MAX_VALUE, new SoundTransform(0.5));
};
}
public function stopMain():void{
if (_mainChannel){
_mainChannel.stop();
_mainChannel = null;
};
}
public function playIntro1(posSeconds:Number=0):void{
stopIntro1();
if (_soundsOn){
_intro1Channel = _intro1Music.play((posSeconds * 1000), int.MAX_VALUE, new SoundTransform(0.5));
};
}
public function stopIntro1():void{
if (_intro1Channel){
_intro1Channel.stop();
_intro1Channel = null;
};
}
public function playIntro2(posSeconds:Number=0):void{
stopIntro2();
if (_soundsOn){
_intro2Channel = _intro2Music.play((posSeconds * 1000), int.MAX_VALUE, new SoundTransform(0.5));
};
}
public function stopIntro2():void{
if (_intro2Channel){
_intro2Channel.stop();
_intro2Channel = null;
};
}
public function playIntro3(posSeconds:Number=0):void{
stopIntro3();
if (_soundsOn){
_intro3Channel = _intro3Music.play((posSeconds * 1000), int.MAX_VALUE, new SoundTransform(0.5));
};
}
public function stopIntro3():void{
if (_intro3Channel){
_intro3Channel.stop();
_intro3Channel = null;
};
}
public function playOldElement():void{
if (_soundsOn){
playRandomSound(_oldElements);
};
}
private function playRandomSound(sounds:Array):void{
var sound:Sound;
if (sounds.length > 0){
sound = sounds[int((Math.random() * sounds.length))];
sound.play();
};
}
public function playFlash():void{
if (_soundsOn){
playRandomSound(_flashes);
};
}
public function playNewElement():void{
if (_soundsOn){
playRandomSound(_newElements);
};
}
public function playClick():void{
if (_soundsOn){
_click.play();
};
}
public function playFlight():void{
if (_soundsOn){
_flight.play(0, 0, new SoundTransform(2));
};
}
public function playHint():void{
if (_soundsOn){
_hint.play();
};
}
public function playElementClick():void{
if (_soundsOn){
_elementClick.play();
};
}
public function playReactionFailedClick():void{
if (_soundsOn){
_reactionFailedClick.play();
};
}
public function playMove():void{
if (_soundsOn){
_move.play();
};
}
public static function registerClickSoundForAllButtons(container:DisplayObjectContainer):void{
var container = container;
Utils.doForAllChildrenRecursive(container, function (child):void{
var child = child;
if ((((child is SimpleButton)) || ((((child is MovieClip)) && (child.buttonMode))))){
child.addEventListener(MouseEvent.CLICK, function (e):void{
_slot1.inst.playClick();
});
};
});
}
}
}//package common
Section 145
//Test (common.Test)
package common {
public class Test {
public static const vkFriendsResponse:Object = {response:[{uid:9316, first_name:"Максим", last_name:"Благушко", photo_medium:"http://cs10326.vkontakte.ru/u09316/b_71cabac3.jpg", sex:"2"}, {uid:9325, first_name:"Антипов", last_name:"Артём", photo_medium:"http://cs10335.vkontakte.ru/u09325/b_4b45c6b6.jpg", sex:"2"}, {uid:14178, first_name:"Демид", last_name:"Лупин", photo_medium:"http://cs9299.vkontakte.ru/u14178/b_9069bbf5.jpg", sex:"2"}, {uid:30997, first_name:"Владимир", last_name:"Шубин", photo_medium:"http://cs14.vkontakte.ru/u30997/b_85c77a9.jpg", sex:"2"}, {uid:39495, first_name:"Free", last_name:"Mind", photo_medium:"http://cs552.vkontakte.ru/u39495/b_bca3d6a5.jpg", sex:"2"}, {uid:40452, first_name:"Тимофей", last_name:"Пушкарёв", photo_medium:"http://cs4232.vkontakte.ru/u40452/b_ff9bce5b.jpg", sex:"2"}, {uid:41762, first_name:"Елена", last_name:"Михайлова", photo_medium:"http://cs9424.vkontakte.ru/u41762/b_b474300c.jpg", sex:"1"}, {uid:41880, first_name:"Маша", last_name:"Анциферова", photo_medium:"http://cs10.vkontakte.ru/u41880/b_451c46b.jpg", sex:"1"}, {uid:45895, first_name:"Полина", last_name:"Лубнина", photo_medium:"http://cs9893.vkontakte.ru/u45895/b_a354f3f3.jpg", sex:"1"}, {uid:47897, first_name:"Алексей", last_name:"Жохов", photo_medium:"http://cs14.vkontakte.ru/u47897/b_ce7a322.jpg", sex:"2"}, {uid:49130, first_name:"Александр", last_name:"Кукута", photo_medium:"http://cs201.vkontakte.ru/u49130/b_521200d8.jpg", sex:"2"}, {uid:53640, first_name:"Anton", last_name:"Shtulberg", photo_medium:"http://cs217.vkontakte.ru/u53640/b_781f931b.jpg", sex:"2"}, {uid:54295, first_name:"Маргарита", last_name:"Пушкарева", photo_medium:"http://cs9943.vkontakte.ru/u54295/b_d1cf41eb.jpg", sex:"1"}, {uid:73548, first_name:"Андрей", last_name:"Майборода", photo_medium:"http://cs9971.vkontakte.ru/u73548/b_6d9227cd.jpg", sex:"0"}, {uid:80896, first_name:"Дарья", last_name:"Сергиенко", photo_medium:"http://cs9673.vkontakte.ru/u80896/b_315e84f0.jpg", sex:"1"}, {uid:84300, first_name:"Виктор", last_name:"Леонов", photo_medium:"http://cs10280.vkontakte.ru/u84300/b_5115f6e1.jpg", sex:"2"}, {uid:88700, first_name:"Egor", last_name:"Antipov", photo_medium:"http://cs4415.vkontakte.ru/u88700/b_0b595f8c.jpg", sex:"2"}, {uid:93793, first_name:"Pavel", last_name:"Galibarov", photo_medium:"http://cs269.vkontakte.ru/u93793/b_35299b3e.jpg", sex:"2"}, {uid:96040, first_name:"Данил", last_name:"Галимов", photo_medium:"http://cs04.vkontakte.ru/u96040/b_2ddd96e.jpg", sex:"2"}, {uid:96275, first_name:"Владимир", last_name:"Шевченко", photo_medium:"http://cs351.vkontakte.ru/u96275/b_c1ddbfc0.jpg", sex:"2"}, {uid:100040, first_name:"Мария", last_name:"Авдеева", photo_medium:"http://cs9679.vkontakte.ru/u100040/b_be155c10.jpg", sex:"1"}, {uid:107737, first_name:"Алексей", last_name:"Лычкин", photo_medium:"http://cs05.vkontakte.ru/u107737/b_fda8448.jpg", sex:"2"}, {uid:109830, first_name:"Антон", last_name:"Ланцов", photo_medium:"http://cs713.vkontakte.ru/u109830/b_b16b57e5.jpg", sex:"2"}, {uid:118605, first_name:"Сергей", last_name:"Афанасьев", photo_medium:"http://cs9709.vkontakte.ru/u118605/b_d6fac38b.jpg", sex:"2"}, {uid:128171, first_name:"Александр", last_name:"Ярцев", photo_medium:"http://cs9859.vkontakte.ru/u128171/b_839bdc70.jpg", sex:"2"}, {uid:132347, first_name:"Наталья", last_name:"Кузнецова", photo_medium:"http://cs9353.vkontakte.ru/u132347/b_0b03b1b0.jpg", sex:"1"}, {uid:136161, first_name:"Лариса", last_name:"Сидорова", photo_medium:"http://cs1059.vkontakte.ru/u136161/b_c9543376.jpg", sex:"1"}, {uid:140838, first_name:"Леонид", last_name:"Антоненков", photo_medium:"http://cs47.vkontakte.ru/u140838/b_5f862d7.jpg", sex:"2"}, {uid:162859, first_name:"Виталиск", last_name:"Котов", photo_medium:"http://cs10366.vkontakte.ru/u162859/b_5396f611.jpg", sex:"2"}, {uid:177017, first_name:"Two", last_name:"One", photo_medium:"http://cs4559.vkontakte.ru/u177017/b_0b58aa95.jpg", sex:"2"}, {uid:194563, first_name:"Dr", last_name:"Boshkanovych", photo_medium:"http://cs4864.vkontakte.ru/u194563/b_517517c8.jpg", sex:"0"}, {uid:209207, first_name:"Ольга", last_name:"Антипова", photo_medium:"http://cs549.vkontakte.ru/u209207/b_fb768ee5.jpg", sex:"1"}, {uid:210968, first_name:"Леша", last_name:"Качанов", photo_medium:"http://cs517.vkontakte.ru/u210968/b_d0c205c4.jpg", sex:"2"}, {uid:232262, first_name:"Максим", last_name:"Игнатов", photo_medium:"http://cs4561.vkontakte.ru/u232262/b_f0a7ed30.jpg", sex:"2"}, {uid:234860, first_name:"Андрей", last_name:"Алешкин", photo_medium:"http://cs9382.vkontakte.ru/u234860/b_26e11fd5.jpg", sex:"2"}, {uid:234914, first_name:"Екатерина", last_name:"Малых", photo_medium:"http://cs10337.vkontakte.ru/u234914/b_b180c991.jpg", sex:"1"}, {uid:247506, first_name:"Евгений", last_name:"Лубнин", photo_medium:"http://cs297.vkontakte.ru/u247506/b_f6f70d05.jpg", sex:"2"}, {uid:269160, first_name:"Дмитрий", last_name:"Смирнов", photo_medium:"http://cs80.vkontakte.ru/u269160/b_2ee1fd0.jpg", sex:"2"}, {uid:278040, first_name:"Валерия", last_name:"Скалозуб", photo_medium:"http://cs707.vkontakte.ru/u278040/b_fb46b47c.jpg", sex:"1"}, {uid:290813, first_name:"Степан", last_name:"Оранжевый", photo_medium:"http://cs9194.vkontakte.ru/u290813/b_85d7e079.jpg", sex:"2"}, {uid:292928, first_name:"Анастасия", last_name:"Зверева-Воскресенская", photo_medium:"http://cs850.vkontakte.ru/u292928/b_4e78a0ce.jpg", sex:"1"}, {uid:293269, first_name:"Павел", last_name:"Мо", photo_medium:"http://cs4289.vkontakte.ru/u293269/b_d185c2b5.jpg", sex:"2"}, {uid:296675, first_name:"Сидоров", last_name:"Александр", photo_medium:"http://vkontakte.ru/images/question_b.gif", sex:"2"}, {uid:309352, first_name:"Константин", last_name:"Ткаченко", photo_medium:"http://cs10282.vkontakte.ru/u309352/b_65764ad2.jpg", sex:"2"}, {uid:319414, first_name:"Илья", last_name:"Киреев", photo_medium:"http://cs9897.vkontakte.ru/u319414/b_727c094b.jpg", sex:"2"}, {uid:330187, first_name:"Павел", last_name:"Шептунов", photo_medium:"http://cs958.vkontakte.ru/u330187/b_7b20d67e.jpg", sex:"2"}, {uid:330939, first_name:"Саша", last_name:"Разумный", photo_medium:"http://cs4134.vkontakte.ru/u330939/b_aa2d0d29.jpg", sex:"2"}, {uid:338434, first_name:"Юрий", last_name:"Ичкитидзе", photo_medium:"http://cs11.vkontakte.ru/u338434/b_d97a744.jpg", sex:"2"}, {uid:340166, first_name:"Надежда", last_name:"Медведь", photo_medium:"http://cs218.vkontakte.ru/u340166/b_a7b5f95e.jpg", sex:"1"}, {uid:346125, first_name:"Сергей", last_name:"Уздин", photo_medium:"http://cs782.vkontakte.ru/u346125/b_180b7e09.jpg", sex:"2"}, {uid:351299, first_name:"Elina", last_name:"Fineberg", photo_medium:"http://cs9952.vkontakte.ru/u351299/b_c57f4ac6.jpg", sex:"0"}, {uid:355841, first_name:"Стас", last_name:"Наривончик", photo_medium:"http://cs225.vkontakte.ru/u355841/b_5d7cf586.jpg", sex:"2"}, {uid:380202, first_name:"Екатерина", last_name:"Борисова", photo_medium:"http://cs10306.vkontakte.ru/u380202/b_d797d599.jpg", sex:"1"}, {uid:387132, first_name:"Евгений", last_name:"Марченков", photo_medium:"http://cs4279.vkontakte.ru/u387132/b_012e9deb.jpg", sex:"2"}, {uid:387702, first_name:"Сергей", last_name:"Гречихин", photo_medium:"http://cs226.vkontakte.ru/u387702/b_b8ded4b0.jpg", sex:"2"}, {uid:405754, first_name:"Сергей", last_name:"Чекмарёв", photo_medium:"http://cs12.vkontakte.ru/u405754/b_b9dccd3.jpg", sex:"2"}, {uid:406822, first_name:"Семен", last_name:"Семаков", photo_medium:"http://cs9814.vkontakte.ru/u406822/b_42898bf3.jpg", sex:"2"}, {uid:426035, first_name:"Ваня", last_name:"Лубнин", photo_medium:"http://cs9488.vkontakte.ru/u426035/b_f6386562.jpg", sex:"2"}, {uid:430422, first_name:"Алексей", last_name:"Виногоров", photo_medium:"http://cs556.vkontakte.ru/u430422/b_3d8740d4.jpg", sex:"2"}, {uid:436629, first_name:"Михаил", last_name:"Бахтин", photo_medium:"http://cs16.vkontakte.ru/u436629/b_e94e2c1.jpg", sex:"2"}, {uid:440381, first_name:"Ksenia", last_name:"Kolotushkina", photo_medium:"http://cs443.vkontakte.ru/u440381/b_dfdcff8e.jpg", sex:"1"}, {uid:457391, first_name:"Наталья", last_name:"Вдовкина", photo_medium:"http://cs520.vkontakte.ru/u457391/b_c0d8d94a.jpg", sex:"1"}, {uid:458294, first_name:"Григорий", last_name:"Шраго", photo_medium:"http://cs4436.vkontakte.ru/u458294/b_be2a39cb.jpg", sex:"2"}, {uid:485974, first_name:"Ольга", last_name:"Фирсина", photo_medium:"http://cs874.vkontakte.ru/u485974/b_4906e482.jpg", sex:"1"}, {uid:487402, first_name:"Альберт", last_name:"Садовников", photo_medium:"http://cs4325.vkontakte.ru/u487402/b_60cf05cb.jpg", sex:"2"}, {uid:492321, first_name:"Петр", last_name:"Евсеев", photo_medium:"http://cs33.vkontakte.ru/u492321/b_76e91c8.jpg", sex:"2"}, {uid:509000, first_name:"Алексей", last_name:"Обухов", photo_medium:"http://cs10205.vkontakte.ru/u509000/b_a1aa2f32.jpg", sex:"2"}, {uid:509064, first_name:"Денис", last_name:"Саблин", photo_medium:"http://cs9466.vkontakte.ru/u509064/b_22572814.jpg", sex:"2"}, {uid:516426, first_name:"Vladimir", last_name:"Balakirev", photo_medium:"http://cs593.vkontakte.ru/u516426/b_77978b14.jpg", sex:"2"}, {uid:525751, first_name:"Леонид", last_name:"Молочник", photo_medium:"http://cs312.vkontakte.ru/u525751/b_9157c71f.jpg", sex:"2"}, {uid:527080, first_name:"Марат", last_name:"Иванов", photo_medium:"http://cs955.vkontakte.ru/u527080/b_c78edbc2.jpg", sex:"2"}, {uid:531738, first_name:"Петр", last_name:"Кулаков", photo_medium:"http://cs9386.vkontakte.ru/u531738/b_cf493826.jpg", sex:"2"}, {uid:533251, first_name:"Анси", last_name:"Такса", photo_medium:"http://cs16.vkontakte.ru/u533251/b_c314fa9.jpg", sex:"0"}, {uid:534011, first_name:"Михаил", last_name:"Ходос", photo_medium:"http://cs128.vkontakte.ru/u534011/b_a4939a39.jpg", sex:"2"}, {uid:551764, first_name:"Елена", last_name:"Иванова", photo_medium:"http://cs554.vkontakte.ru/u551764/b_c52d142f.jpg", sex:"1"}, {uid:565130, first_name:"Андрей", last_name:"Демидов", photo_medium:"http://cs19.vkontakte.ru/u565130/b_5576386.jpg", sex:"2"}, {uid:565755, first_name:"Андрей", last_name:"Берковский", photo_medium:"http://cs1063.vkontakte.ru/u565755/b_b3e12cd5.jpg", sex:"2"}, {uid:568467, first_name:"Александр", last_name:"Зверев", photo_medium:"http://cs642.vkontakte.ru/u568467/b_492855eb.jpg", sex:"2"}, {uid:589277, first_name:"Odessit", last_name:"Ontour", photo_medium:"http://cs10265.vkontakte.ru/u589277/b_e0c63c05.jpg", sex:"2"}, {uid:607453, first_name:"Ольга", last_name:"Соколова", photo_medium:"http://cs124.vkontakte.ru/u607453/b_682fcd46.jpg", sex:"1"}, {uid:627791, first_name:"Руслан", last_name:"Сушко", photo_medium:"http://cs18.vkontakte.ru/u627791/b_7f4f352.jpg", sex:"2"}, {uid:630693, first_name:"Юлечко", last_name:"Стёпкина", photo_medium:"http://cs506.vkontakte.ru/u630693/b_53195dd4.jpg", sex:"1"}, {uid:647960, first_name:"Ульяна", last_name:"Колиушко", photo_medium:"http://cs10066.vkontakte.ru/u647960/b_b9f84741.jpg", sex:"1"}, {uid:653884, first_name:"Ярик", last_name:"Николаев", photo_medium:"http://cs49.vkontakte.ru/u653884/b_7392b07f.jpg", sex:"2"}, {uid:654193, first_name:"Павел", last_name:"Гонтарев", photo_medium:"http://cs19.vkontakte.ru/u654193/b_b507f8e.jpg", sex:"2"}, {uid:682395, first_name:"Елена", last_name:"Комарова", photo_medium:"http://cs4965.vkontakte.ru/u682395/b_8c3225c0.jpg", sex:"1"}, {uid:710086, first_name:"Александр", last_name:"Никулин", photo_medium:"http://cs9714.vkontakte.ru/u710086/b_10b3175b.jpg", sex:"2"}, {uid:710270, first_name:"Николай", last_name:"Попов", photo_medium:"http://cs18.vkontakte.ru/u710270/b_bd91037.jpg", sex:"2"}, {uid:734921, first_name:"Игорь", last_name:"Атрощенко", photo_medium:"http://cs673.vkontakte.ru/u734921/b_81fc6138.jpg", sex:"2"}, {uid:747770, first_name:"Павел", last_name:"Алешкевич", photo_medium:"http://cs37.vkontakte.ru/u747770/b_e7696b8.jpg", sex:"2"}, {uid:775659, first_name:"Анатолий", last_name:"Ковальчук", photo_medium:"http://cs91.vkontakte.ru/u775659/b_5abcf7cc.jpg", sex:"2"}, {uid:823226, first_name:"Никита", last_name:"Фирсин", photo_medium:"http://cs13.vkontakte.ru/u823226/b_532dc804.jpg", sex:"2"}, {uid:823799, first_name:"Анастасия", last_name:"Фирсина", photo_medium:"http://cs9467.vkontakte.ru/u823799/b_b01a0f50.jpg", sex:"1"}, {uid:858649, first_name:"Алексей", last_name:"Белоусов", photo_medium:"http://cs9545.vkontakte.ru/u858649/b_b22133cc.jpg", sex:"2"}, {uid:878502, first_name:"sergey", last_name:"apatenkov", photo_medium:"http://cs20.vkontakte.ru/u878502/b_29b5cbd.jpg", sex:"2"}, {uid:892700, first_name:"Алексей", last_name:"Захаров", photo_medium:"http://cs20.vkontakte.ru/u892700/b_a65b68e.jpg", sex:"2"}, {uid:893914, first_name:"Ольга", last_name:"Павлушко", photo_medium:"http://cs19.vkontakte.ru/u893914/b_f3415bc.jpg", sex:"1"}, {uid:904002, first_name:"Михаил", last_name:"Таратин", photo_medium:"http://cs774.vkontakte.ru/u904002/b_5a509636.jpg", sex:"2"}, {uid:922334, first_name:"Alexander", last_name:"Smirnoff", photo_medium:"http://cs20.vkontakte.ru/u922334/b_a3bc0f9.jpg", sex:"2"}, {uid:923089, first_name:"Лошадь", last_name:"Бри", photo_medium:"http://cs1690.vkontakte.ru/u923089/b_68cd9bf7.jpg", sex:"2"}, {uid:936529, first_name:"Сергей", last_name:"Марков", photo_medium:"http://cs250.vkontakte.ru/u936529/b_ee27a5d7.jpg", sex:"2"}, {uid:952691, first_name:"Александр", last_name:"Федотьев", photo_medium:"http://cs10063.vkontakte.ru/u952691/b_013c31e3.jpg", sex:"2"}, {uid:967042, first_name:"Тимур", last_name:"Тарасов", photo_medium:"http://cs4983.vkontakte.ru/u967042/b_b450900a.jpg", sex:"2"}, {uid:1005589, first_name:"Мария", last_name:"Доменеч", photo_medium:"http://cs409.vkontakte.ru/u1005589/b_021cab6d.jpg", sex:"1"}, {uid:1046013, first_name:"Anastasia", last_name:"Yartseva", photo_medium:"http://cs9879.vkontakte.ru/u1046013/b_d26c8201.jpg", sex:"1"}, {uid:1057998, first_name:"Андрей", last_name:"Винокуров", photo_medium:"http://cs33.vkontakte.ru/u1057998/b_f7ff9ea.jpg", sex:"2"}, {uid:1087771, first_name:"Юлия", last_name:"Горбачева", photo_medium:"http://cs1364.vkontakte.ru/u1087771/b_7d0c7510.jpg", sex:"1"}, {uid:1100526, first_name:"Ольга", last_name:"Майборода", photo_medium:"http://cs229.vkontakte.ru/u1100526/b_b672d9a2.jpg", sex:"1"}, {uid:1114800, first_name:"Александр", last_name:"Драгунов", photo_medium:"http://cs4111.vkontakte.ru/u1114800/b_447fe2f8.jpg", sex:"2"}, {uid:1169403, first_name:"Сергей", last_name:"Конопатов", photo_medium:"http://cs29.vkontakte.ru/u1169403/b_43323cf.jpg", sex:"2"}, {uid:1304603, first_name:"Владимир", last_name:"Домбровский", photo_medium:"http://cs4548.vkontakte.ru/u1304603/b_bf2e7dc8.jpg", sex:"2"}, {uid:1377964, first_name:"Елена", last_name:"Берковская", photo_medium:"http://cs9559.vkontakte.ru/u1377964/b_4ff26959.jpg", sex:"1"}, {uid:1401082, first_name:"Дина", last_name:"Медведь", photo_medium:"http://cs10155.vkontakte.ru/u1401082/b_909c0eb2.jpg", sex:"1"}, {uid:1407551, first_name:"Егор", last_name:"Цинько", photo_medium:"http://cs35.vkontakte.ru/u1407551/b_57e4de7.jpg", sex:"2"}, {uid:1412292, first_name:"Татьяна", last_name:"Богданова", photo_medium:"http://cs4737.vkontakte.ru/u1412292/b_422a3c60.jpg", sex:"1"}, {uid:1516525, first_name:"Andrew", last_name:"Fomin", photo_medium:"http://cs4515.vkontakte.ru/u1516525/b_fb9b53bb.jpg", sex:"2"}, {uid:1838738, first_name:"Дарья", last_name:"Богачева", photo_medium:"http://cs55.vkontakte.ru/u1838738/b_4575038.jpg", sex:"1"}, {uid:1856843, first_name:"Олег", last_name:"Сысоев", photo_medium:"http://cs10240.vkontakte.ru/u1856843/b_2f765ac0.jpg", sex:"2"}, {uid:1882310, first_name:"Анастасия", last_name:"Лубнина", photo_medium:"http://cs634.vkontakte.ru/u1882310/b_5ab4c88d.jpg", sex:"1"}, {uid:1989837, first_name:"Евгений", last_name:"Фофанов", photo_medium:"http://cs34.vkontakte.ru/u1989837/b_2b09e0c.jpg", sex:"2"}, {uid:2083890, first_name:"Анюта", last_name:"Боброва", photo_medium:"http://cs862.vkontakte.ru/u2083890/b_f109391d.jpg", sex:"1"}, {uid:2116288, first_name:"Наталья", last_name:"Алексеева", photo_medium:"http://cs10162.vkontakte.ru/u2116288/b_1d8a8923.jpg", sex:"1"}, {uid:2132710, first_name:"Алена", last_name:"Батеева", photo_medium:"http://cs4565.vkontakte.ru/u2132710/b_54197400.jpg", sex:"1"}, {uid:2176694, first_name:"Наталия", last_name:"Лубнина", photo_medium:"http://cs9278.vkontakte.ru/u2176694/b_d3a68bf1.jpg", sex:"1"}, {uid:2188720, first_name:"Дмитрий", last_name:"Адов", photo_medium:"http://cs89.vkontakte.ru/u2188720/b_2025cbfe.jpg", sex:"2"}, {uid:2267901, first_name:"Ярослав", last_name:"Рихтхоффен", photo_medium:"http://cs4337.vkontakte.ru/u2267901/b_8c087558.jpg", sex:"2"}, {uid:3213171, first_name:"Владимир", last_name:"Иванов", photo_medium:"http://cs1026.vkontakte.ru/u3213171/b_2bc9b2fe.jpg", sex:"2"}, {uid:3461253, first_name:"Андрей", last_name:"Стрижкин", photo_medium:"http://cs58.vkontakte.ru/u3461253/b_0c0754e7.jpg", sex:"2"}, {uid:3710274, first_name:"Саша", last_name:"Лубнина", photo_medium:"http://cs9815.vkontakte.ru/u3710274/b_5865f7f5.jpg", sex:"1"}, {uid:3856679, first_name:"Елена", last_name:"Лебедева", photo_medium:"http://cs9784.vkontakte.ru/u3856679/b_8ccc5721.jpg", sex:"1"}, {uid:4537264, first_name:"Алексей", last_name:"Михайлов", photo_medium:"http://cs74.vkontakte.ru/u4537264/b_c42a77aa.jpg", sex:"2"}, {uid:4949134, first_name:"Николай", last_name:"Сокорнов", photo_medium:"http://cs85.vkontakte.ru/u4949134/b_995b53b5.jpg", sex:"2"}, {uid:10540437, first_name:"Вова", last_name:"лубнин", photo_medium:"http://cs4486.vkontakte.ru/u10540437/b_0315b51b.jpg", sex:"2"}, {uid:17587638, first_name:"Aндрeй", last_name:"Бaтюк", photo_medium:"http://cs274.vkontakte.ru/u17587638/b_817d55ab.jpg", sex:"2"}, {uid:18333669, first_name:"Игорь", last_name:"Горохов", photo_medium:"http://cs9832.vkontakte.ru/u18333669/b_333ed975.jpg", sex:"2"}, {uid:20419425, first_name:"Anton", last_name:"Denisov", photo_medium:"http://cs4748.vkontakte.ru/u20419425/b_336cf04f.jpg", sex:"0"}, {uid:21444411, first_name:"Ярослава", last_name:"Кришталь", photo_medium:"http://cs9618.vkontakte.ru/u21444411/b_54dce65f.jpg", sex:"1"}, {uid:40908361, first_name:"Евгений", last_name:"Аршанский", photo_medium:"http://cs4233.vkontakte.ru/u40908361/b_29827589.jpg", sex:"2"}, {uid:54487576, first_name:"Всеволод", last_name:"Леонов", photo_medium:"http://cs10392.vkontakte.ru/u54487576/b_cb1b7064.jpg", sex:"2"}, {uid:71573009, first_name:"Турбостул", last_name:"Онлайн", photo_medium:"http://cs4331.vkontakte.ru/u71573009/b_479fb0ea.jpg", sex:"2"}, {uid:73076748, first_name:"Misha", last_name:"Malkin", photo_medium:"http://vkontakte.ru/images/question_b.gif", sex:"2"}, {uid:80496522, first_name:"Даниил", last_name:"Егоров", photo_medium:"http://cs9424.vkontakte.ru/u80496522/b_e649c1b9.jpg", sex:"2"}]};
public function Test(){
super();
}
}
}//package common
Section 146
//Utils (common.Utils)
package common {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import flash.text.*;
public class Utils {
private static var _serverTimeDelta:Number = 0;
public static function useServerTime(seconds:Number):void{
_serverTimeDelta = (_slot1.nowSeconds - seconds);
}
public static function getClassName(obj:Object):String{
var name:String = getQualifiedClassName(obj);
var index:int = name.indexOf("::");
if (index != -1){
name = name.substr((index + 2));
};
return (name);
}
public static function copyDynamicProps(dest:Object, source:Object, recursive:Boolean=false, ignore:String=null):void{
var propName:String;
for (propName in source) {
if (((((!(((ignore) && ((ignore == propName))))) && ((getClassName(source[propName]) == "Object")))) && (recursive))){
dest[propName] = {};
copyDynamicProps(dest[propName], source[propName]);
} else {
dest[propName] = source[propName];
};
};
}
public static function copyProps(dest:Object, source:Object, recursive:Boolean=false):void{
var i:int;
var propName:String;
var varList:XMLList = describeType(source)..variable;
while (i < varList.length()) {
propName = varList[i].@name;
if ((((getClassName(source[propName]) == "Object")) && (recursive))){
dest[propName] = {};
copyDynamicProps(dest[propName], source[propName]);
} else {
dest[propName] = source[propName];
};
i++;
};
}
public static function get nowSeconds():Number{
return (((new Date().time / 1000) - _serverTimeDelta));
}
public static function get nowSecondsInt():Number{
return (Math.floor(((new Date().time / 1000) - _serverTimeDelta)));
}
public static function get nowMiliseconds():Number{
return ((new Date().time - (_serverTimeDelta * 1000)));
}
public static function isToday(time:Number):Boolean{
return ((int((time / (3600 * 24))) == int((nowSeconds / (3600 * 24)))));
}
public static function dumpChildren(obj:DisplayObjectContainer, depth:int=0):void{
var child:Object;
var name:String;
var i:int;
while (i < obj.numChildren) {
child = obj.getChildAt(i);
name = (("name" in child)) ? child["name"] : "";
trace(((((repeatString("-", depth) + " ") + child) + " ") + name));
if ((child is DisplayObjectContainer)){
dumpChildren((child as DisplayObjectContainer), (depth + 1));
};
i++;
};
}
public static function disableMouseForAllChildren(obj:DisplayObjectContainer):void{
var obj = obj;
doForAllChildrenRecursive(obj, function (child):void{
if ((child is InteractiveObject)){
child.mouseEnabled = false;
};
});
}
public static function doForAllChildrenRecursive(obj:DisplayObjectContainer, func:Function):void{
var child:Object;
var result:*;
var i:int;
while (i < obj.numChildren) {
child = obj.getChildAt(i);
if (child != null){
result = func(child);
if (result == true){
break;
};
if ((child is DisplayObjectContainer)){
doForAllChildrenRecursive(DisplayObjectContainer(child), func);
};
};
i++;
};
}
public static function repeatString(str:String, n:int):String{
var s:String = "";
var i:int;
while (i < n) {
s = (s + str);
i++;
};
return (s);
}
public static function removeAllChildren(obj:DisplayObjectContainer, except:DisplayObject=null):void{
var count:int = obj.numChildren;
var i:int = (count - 1);
while (i >= 0) {
if (((!(except)) || (!((obj.getChildAt(i) == except))))){
obj.removeChildAt(i);
};
i--;
};
}
public static function dumpFonts():void{
var f:*;
for each (f in Font.enumerateFonts(false)) {
trace(((f + " ") + f.fontName));
};
}
public static function stopAmimationRecursive(obj:DisplayObjectContainer):void{
var obj = obj;
if ((obj is MovieClip)){
MovieClip(obj).gotoAndStop(1);
};
doForAllChildrenRecursive(obj, function (child):void{
if ((child is MovieClip)){
child.gotoAndStop(1);
};
});
}
public static function convertObjectToArray(object:Object, enumValues:Boolean=true):Array{
var o:Object;
var key:String;
var array:Array = [];
if (enumValues){
for each (o in object) {
array.push(o);
};
} else {
for (key in object) {
array.push(object[key]);
};
};
return (array);
}
public static function getFirstElement(anyArray){
var e:*;
for each (e in anyArray) {
return (e);
};
return (null);
}
public static function getObjectAsString(obj:Object, recursive:Boolean):String{
var i:int;
var propName:String;
var value:*;
if ((((obj is String)) || ((obj is Number)))){
return (obj.toString());
};
if (obj == null){
return ("null");
};
var str:String = "";
var varList:XMLList = describeType(obj)..variable;
while (i < varList.length()) {
propName = varList[i].@name;
if (str.length > 0){
str = (str + ", ");
};
value = obj[propName];
if (((recursive) && ((getClassName(value) == "Object")))){
value = getObjectAsString(obj[propName], recursive);
};
str = (str + ((propName + ": ") + value));
i++;
};
return ((("{" + str) + "}"));
}
public static function dumpObject(obj:Object, caption:String="", recursive:Boolean=true):void{
trace((caption + getObjectAsString(obj, recursive)));
}
public static function dumpArray(arr:Array, caption:String=null):void{
var obj:Object;
if (caption){
trace(caption);
};
for each (obj in arr) {
trace(obj);
};
}
public static function shuffleArray(array:Array, iterations:int=0):void{
var index1:int;
var index2:int;
var temp:*;
if (iterations < 1){
iterations = array.length;
};
var i:int;
while (i < iterations) {
index1 = (Math.random() * array.length);
index2 = (Math.random() * array.length);
temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
i++;
};
}
public static function removeChildSafe(obj:DisplayObject):void{
var obj = obj;
obj.parent.removeChild(obj);
//unresolved jump
var _slot1 = e;
}
public static function addChildSafe(obj:DisplayObject, parent:DisplayObjectContainer):void{
var obj = obj;
var parent = parent;
parent.addChild(obj);
//unresolved jump
var _slot1 = e;
}
public static function disableMouseForAllTextFields(obj:DisplayObjectContainer):void{
var obj = obj;
doForAllChildrenRecursive(obj, function (child):void{
if ((child is TextField)){
child.mouseEnabled = false;
};
});
}
public static function subtractArrays(fromArray:Array, array:Array):Array{
var elem:*;
var index:int;
var result:Array = [];
var length:uint = fromArray.length;
var i:int;
while (i < length) {
elem = fromArray[i];
index = array.indexOf(elem);
if (index == -1){
result.push(elem);
};
i++;
};
return (result);
}
public static function addNonContainingElementsToArray(array:Array, elements:Array):void{
var target:*;
for each (target in elements) {
if (array.indexOf(target) == -1){
array.push(target);
};
};
}
public static function dumpDisplayObject(obj:Object, msg:String):void{
var name:String = (("name" in obj)) ? obj["name"] : "";
trace(((((msg + " ") + obj) + " ") + name));
}
public static function bringToTop(clip:DisplayObject):void{
if (clip.parent){
clip.parent.setChildIndex(clip, (clip.parent.numChildren - 1));
};
}
public static function convertPoint(from:DisplayObject, to:DisplayObject, p:Point, trunc:Boolean=false):Point{
var p2:Point = to.globalToLocal(from.localToGlobal(p));
if (trunc){
p2.x = int(p2.x);
p2.y = int(p2.y);
};
return (p2);
}
public static function roll(probability:Number):Boolean{
var rnd:Number = Math.random();
return ((rnd <= probability));
}
public static function convertArrayToObject(array:Array, keyName:String, valueName:String, obj=null):Object{
var item:Object;
if (!obj){
obj = {};
};
for each (item in array) {
if (valueName){
obj[item[keyName]] = item[valueName];
} else {
obj[item[keyName]] = item;
};
};
return (obj);
}
public static function stringFormat(str:String, ... _args):String{
var i:int;
while (i < _args.length) {
str = str.replace(new RegExp((("\\{" + i) + "\\}"), "g"), _args[i]);
i++;
};
return (str);
}
public static function getRandomElement(arr:Array):String{
return (arr[int((Math.random() * arr.length))]);
}
public static function addEventListener(dispatcher:IEventDispatcher, targets:Array, exceptions:Array, type:String, handler:Function):Function{
var f:*;
var dispatcher = dispatcher;
var targets = targets;
var exceptions = exceptions;
var type = type;
var handler = handler;
var _local7 = function (e:Event):void{
if ((((targets == null)) || ((targets.indexOf(e.target) > -1)))){
if ((((exceptions == null)) || ((exceptions.indexOf(e.target) == -1)))){
dispatcher.removeEventListener(type, f);
handler(e);
};
};
};
f = _local7;
dispatcher.addEventListener(type, _local7);
return (f);
}
public static function getObjectNames(obj:Object):Array{
var i:int;
var name:String;
var varList:XMLList = describeType(obj)..property;
var names:Array = [];
while (i < varList.length()) {
names.push(varList[i].@name);
i++;
};
if (names.length == 0){
for (name in obj) {
names.push(name);
};
};
return (names);
}
public static function registerTooltip(button:DisplayObject, tooltip:DisplayObject, handler:Function=null, delay:int=500):void{
var timeoutId:uint;
var button = button;
var tooltip = tooltip;
var handler = handler;
var delay = delay;
if ((tooltip is InteractiveObject)){
InteractiveObject(tooltip).mouseEnabled = false;
};
tooltip.visible = false;
timeoutId = 0;
button.addEventListener(MouseEvent.ROLL_OVER, function (e):void{
var e = e;
timeoutId = setTimeout(function ():void{
timeoutId = 0;
tooltip.visible = true;
_slot1.bringToTop(tooltip);
if (handler != null){
handler(button, tooltip);
};
}, delay);
});
button.addEventListener(MouseEvent.ROLL_OUT, function (e):void{
clearTimeout(timeoutId);
tooltip.visible = false;
});
}
public static function random(max:Number):Number{
return (Math.floor((Math.random() * (max + 1))));
}
}
}//package common
Section 147
//png (computer.png)
package computer {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package computer
Section 148
//png (concrete.png)
package concrete {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package concrete
Section 149
//png (cookies.png)
package cookies {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cookies
Section 150
//png (corpse.png)
package corpse {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package corpse
Section 151
//AdLoader (CPMStar.AdLoader)
package CPMStar {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
public class AdLoader extends Sprite {
private var cpmstarLoader:Loader;
private var contentspotid:String;
public function AdLoader(contentspotid:String){
super();
this.contentspotid = contentspotid;
addEventListener(Event.ADDED, addedHandler);
}
private function addedHandler(event:Event):void{
removeEventListener(Event.ADDED, addedHandler);
Security.allowDomain("server.cpmstar.com");
var cpmstarViewSWFUrl:String = "http://server.cpmstar.com/adviewas3.swf";
var container:DisplayObjectContainer = parent;
cpmstarLoader = new Loader();
cpmstarLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler);
cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler);
cpmstarLoader.load(new URLRequest(((cpmstarViewSWFUrl + "?contentspotid=") + contentspotid)));
addChild(cpmstarLoader);
}
private function dispatchHandler(event:Event):void{
dispatchEvent(event);
}
}
}//package CPMStar
Section 152
//png (credit_card.png)
package credit_card {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package credit_card
Section 153
//png (cyborg.png)
package cyborg {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package cyborg
Section 154
//png (death_metal.png)
package death_metal {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package death_metal
Section 155
//png (debt.png)
package debt {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package debt
Section 156
//png (demigod.png)
package demigod {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package demigod
Section 157
//png (dinozaur.png)
package dinozaur {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package dinozaur
Section 158
//png (dog.png)
package dog {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package dog
Section 159
//png (dolphin.png)
package dolphin {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package dolphin
Section 160
//ag_intro_mc_11 (doodlegod2_cs5_fla.ag_intro_mc_11)
package doodlegod2_cs5_fla {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.text.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class ag_intro_mc_11 extends MovieClip {
public function ag_intro_mc_11(){
addFrameScript(0, frame1, 217, frame218);
}
function frame1(){
root.stop();
gotoAndPlay(2);
}
function frame218(){
root.gotoAndPlay("game");
}
}
}//package doodlegod2_cs5_fla
Section 161
//Kongintro30fps_14 (doodlegod2_cs5_fla.Kongintro30fps_14)
package doodlegod2_cs5_fla {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.text.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class Kongintro30fps_14 extends MovieClip {
public function Kongintro30fps_14(){
addFrameScript(143, frame144);
}
function frame144(){
stop();
root.gotoAndStop("game");
}
}
}//package doodlegod2_cs5_fla
Section 162
//NGI_INTRO_29 (doodlegod2_cs5_fla.NGI_INTRO_29)
package doodlegod2_cs5_fla {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.text.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class NGI_INTRO_29 extends MovieClip {
public function NGI_INTRO_29(){
addFrameScript(0, frame1, 264, frame265);
}
function frame1(){
root.stop();
}
function frame265(){
root.gotoAndPlay("game");
}
}
}//package doodlegod2_cs5_fla
Section 163
//NGI_MASK_CUBE_33 (doodlegod2_cs5_fla.NGI_MASK_CUBE_33)
package doodlegod2_cs5_fla {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.text.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class NGI_MASK_CUBE_33 extends MovieClip {
public function NGI_MASK_CUBE_33(){
addFrameScript(19, frame20);
}
function frame20(){
stop();
}
}
}//package doodlegod2_cs5_fla
Section 164
//NGI_MASK_IN_32 (doodlegod2_cs5_fla.NGI_MASK_IN_32)
package doodlegod2_cs5_fla {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.text.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.net.*;
import flash.system.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class NGI_MASK_IN_32 extends MovieClip {
public function NGI_MASK_IN_32(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
}
}
}//package doodlegod2_cs5_fla
Section 165
//png (dough.png)
package dough {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package dough
Section 166
//png (dragon.png)
package dragon {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package dragon
Section 167
//png (dust.png)
package dust {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package dust
Section 168
//png (earth.png)
package earth {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package earth
Section 169
//png (egg.png)
package egg {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package egg
Section 170
//png (electricity.png)
package electricity {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package electricity
Section 171
//wav (element_click.wav)
package element_click {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package element_click
Section 172
//png (energy.png)
package energy {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package energy
Section 173
//png (fabric.png)
package fabric {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package fabric
Section 174
//png (feather.png)
package feather {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package feather
Section 175
//png (fern.png)
package fern {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package fern
Section 176
//png (fire.png)
package fire {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package fire
Section 177
//png (firearm.png)
package firearm {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package firearm
Section 178
//png (fish.png)
package fish {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package fish
Section 179
//wav (flash_v1.wav)
package flash_v1 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package flash_v1
Section 180
//wav (flash_v2.wav)
package flash_v2 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package flash_v2
Section 181
//wav (flash_v4.wav)
package flash_v4 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package flash_v4
Section 182
//wav (flight.wav)
package flight {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package flight
Section 183
//png (flour.png)
package flour {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package flour
Section 184
//png (flower.png)
package flower {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package flower
Section 185
//png (freezer.png)
package freezer {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package freezer
Section 186
//png (fun.png)
package fun {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package fun
Section 187
//png (games.png)
package games {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package games
Section 188
//png (ghost.png)
package ghost {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ghost
Section 189
//png (ghoul.png)
package ghoul {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ghoul
Section 190
//png (glass.png)
package glass {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package glass
Section 191
//png (gold.png)
package gold {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package gold
Section 192
//png (golem.png)
package golem {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package golem
Section 193
//png (grass.png)
package grass {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package grass
Section 194
//png (group_abstract.png)
package group_abstract {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_abstract
Section 195
//png (group_air.png)
package group_air {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_air
Section 196
//png (group_animals.png)
package group_animals {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_animals
Section 197
//png (group_bar.png)
package group_bar {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_bar
Section 198
//png (group_civilization.png)
package group_civilization {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_civilization
Section 199
//png (group_fire.png)
package group_fire {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_fire
Section 200
//png (group_food.png)
package group_food {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_food
Section 201
//png (group_hitec.png)
package group_hitec {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_hitec
Section 202
//png (group_horror.png)
package group_horror {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_horror
Section 203
//png (group_kitchen.png)
package group_kitchen {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_kitchen
Section 204
//png (group_man.png)
package group_man {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_man
Section 205
//png (group_plants.png)
package group_plants {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_plants
Section 206
//png (group_professions.png)
package group_professions {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_professions
Section 207
//png (group_protozoa.png)
package group_protozoa {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_protozoa
Section 208
//png (group_science.png)
package group_science {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_science
Section 209
//png (group_social.png)
package group_social {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_social
Section 210
//png (group_terra.png)
package group_terra {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_terra
Section 211
//png (group_tools.png)
package group_tools {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_tools
Section 212
//png (group_vehicles.png)
package group_vehicles {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_vehicles
Section 213
//png (group_water.png)
package group_water {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_water
Section 214
//png (group_zoo.png)
package group_zoo {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=128, h:int=128){
super(w, h);
}
}
}//package group_zoo
Section 215
//png (gunpowder.png)
package gunpowder {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package gunpowder
Section 216
//png (hacker.png)
package hacker {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package hacker
Section 217
//png (hangover.png)
package hangover {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package hangover
Section 218
//png (hero.png)
package hero {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package hero
Section 219
//wav (hint.wav)
package hint {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package hint
Section 220
//png (house.png)
package house {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package house
Section 221
//png (human.png)
package human {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package human
Section 222
//png (hunter.png)
package hunter {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package hunter
Section 223
//png (hut.png)
package hut {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package hut
Section 224
//png (ice.png)
package ice {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ice
Section 225
//png (ice_cream.png)
package ice_cream {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ice_cream
Section 226
//png (internet.png)
package internet {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package internet
Section 227
//mp3 (intro_1.mp3)
package intro_1 {
import flash.media.*;
public dynamic class mp3 extends Sound {
}
}//package intro_1
Section 228
//mp3 (intro_2.mp3)
package intro_2 {
import flash.media.*;
public dynamic class mp3 extends Sound {
}
}//package intro_2
Section 229
//mp3 (intro_3.mp3)
package intro_3 {
import flash.media.*;
public dynamic class mp3 extends Sound {
}
}//package intro_3
Section 230
//png (journalist.png)
package journalist {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package journalist
Section 231
//png (knowledge.png)
package knowledge {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package knowledge
Section 232
//Kongregate (kongregate.Kongregate)
package kongregate {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.net.*;
public class Kongregate {
public static var api;
public function Kongregate(){
super();
}
public static function init(app:DisplayObjectContainer):void{
var loadComplete:*;
var app = app;
loadComplete = function (event:Event):void{
api = event.target.content;
api.services.connect();
};
var paramObj:Object = LoaderInfo(app.root.loaderInfo).parameters;
var apiPath:String = ((paramObj.kongregate_api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf"));
Security.allowDomain(apiPath);
var request:URLRequest = new URLRequest(apiPath);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.load(request);
app.addChild(loader);
}
}
}//package kongregate
Section 233
//png (laser.png)
package laser {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package laser
Section 234
//png (lava.png)
package lava {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package lava
Section 235
//png (law.png)
package law {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package law
Section 236
//png (life.png)
package life {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package life
Section 237
//png (lightbulb.png)
package lightbulb {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package lightbulb
Section 238
//png (limestone.png)
package limestone {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package limestone
Section 239
//png (livestock.png)
package livestock {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package livestock
Section 240
//png (lizard.png)
package lizard {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package lizard
Section 241
//png (locomotive.png)
package locomotive {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package locomotive
Section 242
//png (manure.png)
package manure {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package manure
Section 243
//png (meat.png)
package meat {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package meat
Section 244
//png (mechanism.png)
package mechanism {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package mechanism
Section 245
//NewgroundsAPIAsset_FlashAd_Container_26 (MedalPopup_fla.NewgroundsAPIAsset_FlashAd_Container_26)
package MedalPopup_fla {
import flash.events.*;
import flash.display.*;
import com.newgrounds.*;
public dynamic class NewgroundsAPIAsset_FlashAd_Container_26 extends MovieClip {
public var adMask:MovieClip;
public var ngLinkButton:SimpleButton;
public function NewgroundsAPIAsset_FlashAd_Container_26(){
addFrameScript(0, this.frame1, 10, this.frame11);
}
public function onNGLinkClicked(_arg1:MouseEvent):void{
API.loadNewgrounds();
}
function frame1(){
this.ngLinkButton.addEventListener(MouseEvent.CLICK, this.onNGLinkClicked);
}
function frame11(){
gotoAndPlay(1);
}
}
}//package MedalPopup_fla
Section 246
//NewgroundsAPIAsset_Load_Indicator_6 (MedalPopup_fla.NewgroundsAPIAsset_Load_Indicator_6)
package MedalPopup_fla {
import flash.events.*;
import flash.display.*;
public dynamic class NewgroundsAPIAsset_Load_Indicator_6 extends MovieClip {
public function NewgroundsAPIAsset_Load_Indicator_6(){
addFrameScript(0, this.frame1);
}
public function onEnterFrame(_arg1:Event):void{
if (((visible) && (stage))){
rotation = (rotation + 30);
} else {
removeEventListener(Event.ENTER_FRAME, this.onEnterFrame);
};
}
function frame1(){
addEventListener(Event.ENTER_FRAME, this.onEnterFrame);
}
}
}//package MedalPopup_fla
Section 247
//score_period_dropdown_39 (MedalPopup_fla.score_period_dropdown_39)
package MedalPopup_fla {
import flash.display.*;
import flash.text.*;
public dynamic class score_period_dropdown_39 extends MovieClip {
public var periodListButton:SimpleButton;
public var periodText:TextField;
public var period0:SimpleButton;
public var period1:SimpleButton;
public var period2:SimpleButton;
public var period3:SimpleButton;
public var period4:SimpleButton;
public var periodListUpButton:SimpleButton;
public function score_period_dropdown_39(){
addFrameScript(0, this.frame1);
}
function frame1(){
stop();
}
}
}//package MedalPopup_fla
Section 248
//png (medicine.png)
package medicine {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package medicine
Section 249
//png (metal.png)
package metal {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package metal
Section 250
//png (milk.png)
package milk {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package milk
Section 251
//MochiAd (mochi.as3.MochiAd)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.system.*;
import flash.utils.*;
import flash.net.*;
public class MochiAd {
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function doOnEnterFrame(mc:MovieClip):void{
var mc = mc;
var f:Function = function (ev:Object):void{
if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){
mc.onEnterFrame();
} else {
ev.target.removeEventListener(ev.type, arguments.callee);
};
};
mc.addEventListener(Event.ENTER_FRAME, f);
}
public static function createEmptyMovieClip(parent:Object, name:String, depth:Number):MovieClip{
var mc:MovieClip = new MovieClip();
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
parent[name] = mc;
mc["_name"] = name;
return (mc);
}
public static function showPreGameAd(options:Object):void{
var clip:Object;
var mc:MovieClip;
var w:Number;
var chk:MovieClip;
var complete:Boolean;
var unloaded:Boolean;
var sendHostProgress:Boolean;
var fn:Function;
var r:MovieClip;
var options = options;
var DEFAULTS:Object = {ad_timeout:5500, 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 (width:Number, height: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 (percent:Number):void{
}, progress_override:function (_clip: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);
w = 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 p:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (p > 0){
this.parent.alpha = (p * 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 (ev:Event):void{
ev.target.removeEventListener(ev.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 (msec:Number):void{
var _chk:Object = mc._mochiad_wait;
_chk.server_control = true;
_chk.showing = true;
_chk.started = getTimer();
_chk.ad_msec = msec;
};
mc.rpc = function (callbackID:Number, arg:Object):void{
_slot1.rpc(clip, callbackID, arg);
};
mc.rpcTestFn = function (s:String):Object{
trace(("[MOCHIAD rpcTestFn] " + s));
return (s);
};
sendHostProgress = false;
mc.sendHostLoadProgress = function (lc_name:String):void{
sendHostProgress = true;
};
chk["onEnterFrame"] = function ():void{
var total:Number;
if (((!(this.parent)) || (!(this.parent.parent)))){
delete this["onEnterFrame"];
return;
};
var _clip:Object = this.parent.parent.root;
var ad_clip:Object = this.parent._mochiad_ctr;
var elapsed:Number = (getTimer() - this.started);
var finished:Boolean;
var clip_total:Number = _clip.loaderInfo.bytesTotal;
var clip_loaded:Number = _clip.loaderInfo.bytesLoaded;
var clip_progress:Number = Math.min(1, options.progress_override(_clip));
if (clip_progress == 1){
complete = true;
};
if (complete){
clip_loaded = Math.max(1, clip_loaded);
clip_total = clip_loaded;
};
var clip_pcnt:Number = ((100 * clip_loaded) / clip_total);
if (!isNaN(clip_progress)){
clip_pcnt = (100 * clip_progress);
};
var ad_pcnt:Number = ((100 * elapsed) / chk.ad_msec);
var _inside:Object = this._mochiad_bar._inside;
var pcnt:Number = Math.min(100, Math.min(((clip_pcnt) || (0)), ad_pcnt));
pcnt = Math.max(this.last_pcnt, pcnt);
this.last_pcnt = pcnt;
_inside.scaleX = (pcnt * 0.01);
options.ad_progress(pcnt);
if (sendHostProgress){
clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:clip_pcnt});
if (clip_pcnt >= 100){
sendHostProgress = false;
};
};
if (!chk.showing){
total = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (total > 0){
chk.showing = true;
chk.started = getTimer();
_slot1.adShowing(clip);
} else {
if ((((elapsed > chk.ad_timeout)) && ((clip_pcnt == 100)))){
options.ad_failed();
finished = true;
};
};
};
if (elapsed > chk.ad_msec){
finished = true;
};
if (((complete) && (finished))){
if (unloaded){
_slot1.unload(_clip);
} else {
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
};
};
};
};
doOnEnterFrame(chk);
}
public static function showClickAwayAd(options:Object):void{
var clip:Object;
var mc:MovieClip;
var chk:MovieClip;
var options = options;
var DEFAULTS:Object = {ad_timeout:5500, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{
}, ad_finished:function ():void{
}, ad_loaded:function (width:Number, height: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 (callbackID:Number, arg:Object):void{
_slot1.rpc(clip, callbackID, arg);
};
chk["onEnterFrame"] = function ():void{
var total:Number;
if (!this.parent){
delete this.onEnterFrame;
return;
};
var ad_clip:Object = this.parent._mochiad_ctr;
var elapsed:Number = (getTimer() - this.started);
var finished:Boolean;
if (!chk.showing){
total = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (total > 0){
chk.showing = true;
finished = true;
chk.started = getTimer();
} else {
if (elapsed > chk.ad_timeout){
options.ad_failed();
finished = true;
};
};
};
if (this.root == null){
finished = true;
};
if (finished){
delete this.onEnterFrame;
};
};
doOnEnterFrame(chk);
}
public static function showInterLevelAd(options:Object):void{
var clip:Object;
var mc:MovieClip;
var chk:MovieClip;
var options = options;
var DEFAULTS:Object = {ad_timeout:5500, 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 (width:Number, height: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 p:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (p > 0){
this.parent.alpha = (p * 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 (msec:Number):void{
var _chk:Object = mc._mochiad_wait;
_chk.server_control = true;
_chk.showing = true;
_chk.started = getTimer();
_chk.ad_msec = (msec - 250);
};
mc.rpc = function (callbackID:Number, arg:Object):void{
_slot1.rpc(clip, callbackID, arg);
};
chk["onEnterFrame"] = function ():void{
var total:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
var ad_clip:Object = this.parent._mochiad_ctr;
var elapsed:Number = (getTimer() - this.started);
var finished:Boolean;
if (!chk.showing){
total = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (total > 0){
chk.showing = true;
chk.started = getTimer();
_slot1.adShowing(clip);
} else {
if (elapsed > chk.ad_timeout){
options.ad_failed();
finished = true;
};
};
};
if (elapsed > chk.ad_msec){
finished = true;
};
if (finished){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function showPreloaderAd(options:Object):void{
trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0");
_slot1.showPreGameAd(options);
}
public static function showTimedAd(options:Object):void{
trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0");
_slot1.showInterLevelAd(options);
}
public static function _allowDomains(server:String):String{
var hostname:String = server.split("/")[2].split(":")[0];
if (Security.sandboxType == "application"){
return (hostname);
};
Security.allowDomain("*");
Security.allowDomain(hostname);
Security.allowInsecureDomain("*");
Security.allowInsecureDomain(hostname);
return (hostname);
}
public static function load(options: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 = options;
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);
};
if (clip._mochiad_loaded){
return (null);
};
//unresolved jump
var _slot1 = e;
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 (lc_name:String):void{
mc._containerLCName = lc_name;
};
loader = new Loader();
g = function (ev:Object):void{
ev.target.removeEventListener(ev.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 (io:IOErrorEvent):void{
trace("[MochiAds] Blocked URL");
});
if (!options.skip){
loader.load(req);
};
mc.addChild(loader);
mc._mochiad_ctr = loader;
return (mc);
}
public static function unload(clip:Object):Boolean{
if (((clip.clip) && (clip.clip._mochiad))){
clip = clip.clip;
};
if (clip.origFrameRate != undefined){
clip.stage.frameRate = clip.origFrameRate;
};
if (!clip._mochiad){
return (false);
};
if (clip._mochiad._containerLCName != undefined){
clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"unload"});
};
if (clip._mochiad.onUnload){
clip._mochiad.onUnload();
};
delete clip._mochiad_loaded;
delete clip._mochiad;
return (true);
}
public static function _cleanup(mc:Object):void{
var k:String;
var lc:LocalConnection;
var f:Function;
var mc = mc;
if (("lc" in mc)){
lc = mc.lc;
f = function ():void{
lc.client = null;
lc.close();
//unresolved jump
var _slot1 = e;
};
setTimeout(f, 0);
};
var idx:Number = DisplayObjectContainer(mc).numChildren;
while (idx > 0) {
idx = (idx - 1);
DisplayObjectContainer(mc).removeChildAt(idx);
};
for (k in mc) {
delete mc[k];
};
}
public static function _isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function _getRes(options:Object, clip:Object):Array{
var xy:Array;
var b:Object = clip.getBounds(clip.root);
var w:Number = 0;
var h:Number = 0;
if (typeof(options.res) != "undefined"){
xy = options.res.split("x");
w = parseFloat(xy[0]);
h = parseFloat(xy[1]);
} else {
w = (b.right - b.left);
h = (b.top - b.bottom);
};
if ((((w == 0)) || ((h == 0)))){
w = clip.stage.stageWidth;
h = clip.stage.stageHeight;
};
return ([w, h]);
}
public static function _parseOptions(options:Object, defaults:Object):Object{
var k:String;
var pairs:Array;
var i:Number;
var kv:Array;
var optcopy:Object = {};
for (k in defaults) {
optcopy[k] = defaults[k];
};
if (options){
for (k in options) {
optcopy[k] = options[k];
};
};
if (optcopy.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."));
};
options = optcopy.clip.loaderInfo.parameters.mochiad_options;
if (options){
pairs = options.split("&");
i = 0;
while (i < pairs.length) {
kv = pairs[i].split("=");
optcopy[unescape(kv[0])] = unescape(kv[1]);
i++;
};
};
if (optcopy.id == "test"){
trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!");
};
return (optcopy);
}
public static function rpc(clip:Object, callbackID:Number, arg:Object):void{
var _local4:Object;
var _local5:Object;
switch (arg.id){
case "setValue":
_slot1.setValue(clip, arg.objectName, arg.value);
break;
case "getValue":
_local4 = _slot1.getValue(clip, arg.objectName);
clip._mochiad.lc.send(clip._mochiad._containerLCName, "rpcResult", callbackID, _local4);
break;
case "runMethod":
_local5 = _slot1.runMethod(clip, arg.method, arg.args);
clip._mochiad.lc.send(clip._mochiad._containerLCName, "rpcResult", callbackID, _local5);
break;
default:
trace(("[mochiads rpc] unknown rpc id: " + arg.id));
};
}
public static function setValue(base:Object, objectName:String, value:Object):void{
var nameArray:Array = objectName.split(".");
var i:Number = 0;
while (i < (nameArray.length - 1)) {
if ((((base[nameArray[i]] == undefined)) || ((base[nameArray[i]] == null)))){
return;
};
base = base[nameArray[i]];
i++;
};
base[nameArray[i]] = value;
}
public static function getValue(base:Object, objectName:String):Object{
var nameArray:Array = objectName.split(".");
var i:Number = 0;
while (i < (nameArray.length - 1)) {
if ((((base[nameArray[i]] == undefined)) || ((base[nameArray[i]] == null)))){
return (undefined);
};
base = base[nameArray[i]];
i++;
};
return (base[nameArray[i]]);
}
public static function runMethod(base:Object, methodName:String, argsArray:Array):Object{
var nameArray:Array = methodName.split(".");
var i:Number = 0;
while (i < (nameArray.length - 1)) {
if ((((base[nameArray[i]] == undefined)) || ((base[nameArray[i]] == null)))){
return (undefined);
};
base = base[nameArray[i]];
i++;
};
if (typeof(base[nameArray[i]]) == "function"){
return (base[nameArray[i]].apply(base, argsArray));
};
return (undefined);
}
public static function adShowing(mc:Object):void{
mc.origFrameRate = mc.stage.frameRate;
mc.stage.frameRate = 30;
}
}
}//package mochi.as3
Section 252
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const STORE_SHOW:String = "StoreShow";
public static const STORE_HIDE:String = "StoreHide";
public static const ITEM_OWNED:String = "ItemOwned";
public static const ITEM_NEW:String = "ItemNew";
public static const STORE_ITEMS:String = "StoreItems";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IOError";
public static const NO_USER:String = "NoUser";
public static var _inventory:MochiInventory;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function get inventory():MochiInventory{
return (_inventory);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showStore(options:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:options}, null, null);
}
public static function showItem(options:Object=null):void{
if (((!(options)) || (!((typeof(options.item) == "string"))))){
trace("ERROR: showItem call must pass an Object with an item key");
return;
};
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:options}, null, null);
}
public static function showVideo(options:Object=null):void{
if (((!(options)) || (!((typeof(options.item) == "string"))))){
trace("ERROR: showVideo call must pass an Object with an item key");
return;
};
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:options}, null, null);
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function requestFunding(properties:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestFunding", properties);
}
public static function addEventListener(eventType:String, delegate:Function):void{
_dispatcher.addEventListener(eventType, delegate);
}
public static function triggerEvent(eventType:String, args:Object):void{
_dispatcher.triggerEvent(eventType, args);
}
public static function removeEventListener(eventType:String, delegate:Function):void{
_dispatcher.removeEventListener(eventType, delegate);
}
addEventListener(MochiSocial.LOGGED_IN, function (args:Object):void{
_inventory = new MochiInventory();
});
addEventListener(MochiSocial.LOGGED_OUT, function (args:Object):void{
_inventory = null;
});
}
}//package mochi.as3
Section 253
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Fragment:Number;
private var Sibling:MochiDigits;
private var Encoder:Number;
public function MochiDigits(digit:Number=0, index:uint=0):void{
super();
Encoder = 0;
setValue(digit, index);
}
public function get value():Number{
return (Number(this.toString()));
}
public function set value(v:Number):void{
setValue(v);
}
public function addValue(inc:Number):void{
value = (value + inc);
}
public function setValue(digit:Number=0, index:uint=0):void{
var s:String = digit.toString();
var _temp1 = index;
index = (index + 1);
Fragment = (s.charCodeAt(_temp1) ^ Encoder);
if (index < s.length){
Sibling = new MochiDigits(digit, index);
} else {
Sibling = null;
};
reencode();
}
public function reencode():void{
var newEncode:uint = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (newEncode ^ Encoder));
Encoder = newEncode;
}
public function toString():String{
var s:String = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
s = (s + Sibling.toString());
};
return (s);
}
}
}//package mochi.as3
Section 254
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
super();
eventTable = {};
}
public function addEventListener(event:String, delegate:Function):void{
removeEventListener(event, delegate);
eventTable[event].push(delegate);
}
public function removeEventListener(event:String, delegate:Function):void{
var s:Object;
if (eventTable[event] == undefined){
eventTable[event] = [];
return;
};
for (s in eventTable[event]) {
if (eventTable[event][s] != delegate){
} else {
eventTable[event].splice(Number(s), 1);
};
};
}
public function triggerEvent(event:String, args:Object):void{
var i:Object;
if (eventTable[event] == undefined){
return;
};
for (i in eventTable[event]) {
var _local6 = eventTable[event];
_local6[i](args);
};
}
}
}//package mochi.as3
Section 255
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_CENTER:String = "ALIGN_C";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const FORMAT_SHORT:String = "ShortForm";
public static const FORMAT_LONG:String = "LongForm";
private static var gameStart:Number;
private static var levelStart:Number;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startSession(achievementID:String):void{
MochiServices.send("events_beginSession", {achievementID:achievementID}, null, null);
}
public static function setNotifications(clip:MovieClip, style:Object):void{
var s:Object;
var args:Object = {};
for (s in style) {
args[s] = style[s];
};
args.clip = clip;
MochiServices.send("events_setNotifications", args, null, null);
}
public static function addEventListener(eventType:String, delegate:Function):void{
_dispatcher.addEventListener(eventType, delegate);
}
public static function triggerEvent(eventType:String, args:Object):void{
_dispatcher.triggerEvent(eventType, args);
}
public static function removeEventListener(eventType:String, delegate:Function):void{
_dispatcher.removeEventListener(eventType, delegate);
}
public static function startPlay(tag:String="gameplay"):void{
MochiServices.send("events_setRoundID", {tag:String(tag)}, null, null);
}
public static function endPlay():void{
MochiServices.send("events_clearRoundID", null, null, null);
}
public static function trackEvent(tag:String, value=null):void{
MochiServices.send("events_trackEvent", {tag:tag, value:value}, null, null);
}
}
}//package mochi.as3
Section 256
//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 _consumableProperties:Object;
private var _syncPending:Boolean;
private var _outstandingID:Number;
private var _syncID:Number;
private var _names:Array;
private var _storeSync:Object;
private static const CONSUMER_KEY:String = "MochiConsumables";
private static const KEY_SALT:String = " syncMaint";
public static const READY:String = "InvReady";
public static const WRITTEN:String = "InvWritten";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IoError";
public static const VALUE_ERROR:String = "InvValueError";
public static const NOT_READY:String = "InvNotReady";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public function MochiInventory():void{
super();
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();
};
}
public function release():void{
MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems);
MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn);
MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut);
}
private function loggedOut(args:Object=null):void{
_consumableProperties = null;
}
private function loggedIn(args:Object=null):void{
MochiUserData.get(CONSUMER_KEY, getConsumableBag);
}
private function newItems(event:Object):void{
if (!this[(event.id + KEY_SALT)]){
this[(event.id + KEY_SALT)] = 0;
};
if (!this[event.id]){
this[event.id] = 0;
};
this[(event.id + KEY_SALT)] = (this[(event.id + KEY_SALT)] + event.count);
this[event.id] = (this[event.id] + event.count);
if (((event.privateProperties) && (event.privateProperties.consumable))){
if (!this[event.privateProperties.tag]){
this[event.privateProperties.tag] = 0;
};
this[event.privateProperties.tag] = (this[event.privateProperties.tag] + (event.privateProperties.inc * event.count));
};
}
private function itemOwned(event:Object):void{
_storeSync[event.id] = {properties:event.properties, count:event.count};
}
private function getConsumableBag(userData:MochiUserData):void{
var key:String;
var unsynced:Number;
if (userData.error){
triggerEvent(ERROR, {type:IO_ERROR, error:userData.error});
return;
};
_consumableProperties = {};
_names = new Array();
if (userData.data){
for (key in userData.data) {
_names.push(key);
_consumableProperties[key] = new MochiDigits(userData.data[key]);
};
};
for (key in _storeSync) {
unsynced = _storeSync[key].count;
if (_consumableProperties[(key + KEY_SALT)]){
unsynced = (unsynced - _consumableProperties[(key + KEY_SALT)].value);
};
if (unsynced == 0){
} else {
newItems({id:key, count:unsynced, properties:_storeSync[key].properties});
};
};
triggerEvent(READY, {});
}
private function putConsumableBag(userData:MochiUserData):void{
_syncPending = false;
if (userData.error){
triggerEvent(ERROR, {type:IO_ERROR, error:userData.error});
_outstandingID = -1;
};
triggerEvent(WRITTEN, {});
}
private function sync(e:Event=null):void{
var key:String;
if (((_syncPending) || ((_syncID == _outstandingID)))){
return;
};
_outstandingID = _syncID;
var output:Object = {};
for (key in _consumableProperties) {
output[key] = MochiDigits(_consumableProperties[key]).value;
};
MochiUserData.put(CONSUMER_KEY, output, putConsumableBag);
_syncPending = true;
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(name){
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (-1);
};
if (_consumableProperties[name]){
return (MochiDigits(_consumableProperties[name]).value);
};
return (undefined);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(name):Boolean{
if (!_consumableProperties[name]){
return (false);
};
_names.splice(_names.indexOf(name), 1);
delete _consumableProperties[name];
return (true);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(name):Boolean{
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return (false);
};
if (_consumableProperties[name] == undefined){
return (false);
};
return (true);
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(name, value):void{
var d:MochiDigits;
if (_consumableProperties == null){
triggerEvent(ERROR, {type:NOT_READY});
return;
};
if (!(value is Number)){
triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:value});
return;
};
if (_consumableProperties[name]){
d = MochiDigits(_consumableProperties[name]);
if (d.value == value){
return;
};
d.value = value;
} else {
_names.push(name);
_consumableProperties[name] = new MochiDigits(value);
};
_syncID++;
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(index:int):int{
return (((index)>=_names.length) ? 0 : (index + 1));
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(index:int):String{
return (_names[(index - 1)]);
}
public static function addEventListener(eventType:String, delegate:Function):void{
_dispatcher.addEventListener(eventType, delegate);
}
public static function triggerEvent(eventType:String, args:Object):void{
_dispatcher.triggerEvent(eventType, args);
}
public static function removeEventListener(eventType:String, delegate:Function):void{
_dispatcher.removeEventListener(eventType, delegate);
}
}
}//package mochi.as3
Section 257
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.display.*;
import flash.text.*;
public class MochiScores {
public static var onCloseHandler:Object;
public static var onErrorHandler:Object;
private static var boardID:String;
public static function onClose(args:Object=null):void{
if (((((args) && ((args.error == true)))) && (onErrorHandler))){
if (args.errorCode == null){
args.errorCode = "IOError";
};
onErrorHandler(args.errorCode);
MochiServices.doClose();
return;
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(boardID:String):void{
MochiServices.warnID(boardID, true);
_slot1.boardID = boardID;
MochiServices.send("scores_setBoardID", {boardID:boardID});
}
public static function showLeaderboard(options:Object=null):void{
var n:Number;
var options = options;
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(callbackObj:Object, callbackMethod:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, callbackObj, callbackMethod);
}
public static function submit(score:Number, name:String, callbackObj:Object=null, callbackMethod:Object=null):void{
score = Number(score);
if (isNaN(score)){
trace((("ERROR: Submitted score '" + String(score)) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((score == Number.NEGATIVE_INFINITY)) || ((score == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + String(score)) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(score) != score){
trace((("WARNING: Submitted score '" + String(score)) + "' will be truncated"));
};
score = Number(score);
};
};
MochiServices.send("scores_submit", {score:score, name:name}, callbackObj, callbackMethod);
}
public static function requestList(callbackObj:Object, callbackMethod:Object=null):void{
MochiServices.send("scores_requestList", null, callbackObj, callbackMethod);
}
public static function scoresArrayToObjects(scores:Object):Object{
var i:Number;
var j:Number;
var o:Object;
var row_obj:Object;
var item:String;
var param:String;
var so:Object = {};
for (item in scores) {
if (typeof(scores[item]) == "object"){
if (((!((scores[item].cols == null))) && (!((scores[item].rows == null))))){
so[item] = [];
o = scores[item];
j = 0;
while (j < o.rows.length) {
row_obj = {};
i = 0;
while (i < o.cols.length) {
row_obj[o.cols[i]] = o.rows[j][i];
i++;
};
so[item].push(row_obj);
j++;
};
} else {
so[item] = {};
for (param in scores[item]) {
so[item][param] = scores[item][param];
};
};
} else {
so[item] = scores[item];
};
};
return (so);
}
}
}//package mochi.as3
Section 258
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.system.*;
import flash.utils.*;
import flash.net.*;
public class MochiServices {
public static const CONNECTED:String = "onConnected";
private static var _id:String;
private static var _container:Object;
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _timer:Timer;
private static var _preserved:Object;
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
private static var _services:String = "services.swf";
private static var _mochiLC:String = "MochiLC.swf";
private static var _swfVersion:String;
private static var _listenChannelName:String = "__ms_";
private static var _sendChannel:LocalConnection;
private static var _sendChannelName:String;
private static var _connecting:Boolean = false;
private static var _connected:Boolean = false;
public static var netup:Boolean = true;
public static var netupAttempted:Boolean = false;
public static var onError:Object;
public static var widget:Boolean = false;
private static var _mochiLocalConnection:MovieClip;
private static var _queue:Array;
private static var _nextCallbackID:Number;
private static var _callbacks:Object;
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function get id():String{
return (_id);
}
public static function get clip():Object{
return (_container);
}
public static function get childClip():Object{
return (_clip);
}
public static function getVersion():String{
return ("3.9.1 as3");
}
public static function allowDomains(server:String):String{
var hostname:String;
if (Security.sandboxType != "application"){
Security.allowDomain("*");
Security.allowInsecureDomain("*");
};
if (server.indexOf("http://") != -1){
hostname = server.split("/")[2].split(":")[0];
if (Security.sandboxType != "application"){
Security.allowDomain(hostname);
Security.allowInsecureDomain(hostname);
};
};
return (hostname);
}
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function set comChannelName(val:String):void{
if (val != null){
if (val.length > 3){
_sendChannelName = (val + "_fromgame");
initComChannels();
};
};
}
public static function get connected():Boolean{
return (_connected);
}
public static function warnID(bid:String, leaderboard:Boolean):void{
bid = bid.toLowerCase();
if (bid.length != 16){
trace((("WARNING: " + (leaderboard) ? "board" : "game") + " ID is not the appropriate length"));
return;
} else {
if (bid == "1e113c7239048b3f"){
if (leaderboard){
trace("WARNING: Using testing board ID");
} else {
trace("WARNING: Using testing board ID as game ID");
};
return;
} else {
if (bid == "84993a1de4031cd8"){
if (leaderboard){
trace("WARNING: Using testing game ID as board ID");
} else {
trace("WARNING: Using testing game ID");
};
return;
};
};
};
var i:Number = 0;
while (i < bid.length) {
switch (bid.charAt(i)){
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: " + bid));
return;
};
i++;
};
}
public static function connect(id:String, clip:Object, onError:Object=null):void{
var id = id;
var clip = clip;
var onError = onError;
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){
_slot1.onError = onError;
} else {
if (_slot1.onError == null){
_slot1.onError = function (errorCode:String):void{
trace(errorCode);
};
};
};
}
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);
_mochiLocalConnection.close();
//unresolved jump
var _slot1 = error;
};
if (_timer != null){
_timer.stop();
_timer.removeEventListener(TimerEvent.TIMER, connectWait);
_timer = null;
//unresolved jump
var _slot1 = error;
};
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, _slot1.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, _slot1.bringToTop);
}
public static function bringToTop(e:Event=null):void{
var e = e;
if (((!((_slot1.clip == null))) && (!((_slot1.childClip == null))))){
if (_slot1.clip.numChildren > 1){
_slot1.clip.setChildIndex(_slot1.childClip, (_slot1.clip.numChildren - 1));
};
//unresolved jump
var _slot1 = errorObject;
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, _slot1.bringToTop);
};
}
private static function init(id:String, clip:Object):void{
_id = id;
if (clip != null){
_container = clip;
loadCommunicator(id, _container);
};
}
public static function setContainer(container:Object=null, doAdd:Boolean=true):void{
if (_clip.parent){
_clip.parent.removeChild(_clip);
};
if (container != null){
if ((container is DisplayObjectContainer)){
_container = container;
};
};
if (doAdd){
if ((_container is DisplayObjectContainer)){
DisplayObjectContainer(_container).addChild(_clip);
};
};
}
private static function loadCommunicator(id:String, clip:Object):MovieClip{
if (_clip != null){
return (_clip);
};
if (!_slot1.isNetworkAvailable()){
return (null);
};
if (urlOptions(clip).servURL){
_servURL = urlOptions(clip).servURL;
};
var servicesURL:String = (_servURL + _services);
if (urlOptions(clip).servicesURL){
servicesURL = urlOptions(clip).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
_slot1.allowDomains(servicesURL);
_clip = new MovieClip();
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, detach);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
var req:URLRequest = new URLRequest(servicesURL);
var vars:URLVariables = new URLVariables();
vars.listenLC = _listenChannelName;
vars.mochiad_options = clip.loaderInfo.parameters.mochiad_options;
vars.api_version = getVersion();
if (widget){
vars.widget = true;
};
req.data = vars;
_loader.load(req);
_clip.addChild(_loader);
_sendChannel = new LocalConnection();
_queue = [];
_nextCallbackID = 0;
_callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
private static function detach(event:Event):void{
var loader:LoaderInfo = LoaderInfo(event.target);
loader.removeEventListener(Event.COMPLETE, detach);
loader.removeEventListener(IOErrorEvent.IO_ERROR, detach);
loader.removeEventListener(Event.COMPLETE, loadLCBridgeComplete);
loader.removeEventListener(IOErrorEvent.IO_ERROR, loadError);
}
private static function loadLCBridge(clip:Object):void{
var loader:Loader = new Loader();
var mochiLCURL:String = (_servURL + _mochiLC);
var req:URLRequest = new URLRequest(mochiLCURL);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, detach);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, detach);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadLCBridgeComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
loader.load(req);
clip.addChild(loader);
}
private static function loadLCBridgeComplete(e:Event):void{
var loader:Loader = LoaderInfo(e.target).loader;
_mochiLocalConnection = MovieClip(loader.content);
listen();
}
private static function loadError(ev:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
_slot1.disconnect();
_slot1.onError("IOError");
}
public static function connectWait(e:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load. (timeout)");
_slot1.disconnect();
_slot1.onError("IOError");
} else {
_timer.stop();
_timer.removeEventListener(TimerEvent.TIMER, connectWait);
_timer = null;
};
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (args:Object):void{
_slot1.comChannelName = args.newChannel;
};
trace("Waiting for MochiAds services to connect...");
}
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{
_slot1.onError("IOError");
};
while (_queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _queue.shift());
};
};
}
private static function onReceive(pkg:Object):void{
var methodName:String;
var pkg = pkg;
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){
method.apply(obj, pkg.args);
//unresolved jump
var _slot1 = error;
trace(((("Error invoking callback method '" + methodName) + "': ") + _slot1.toString()));
} else {
if (obj != null){
obj(pkg.args);
//unresolved jump
var _slot1 = error;
trace(("Error invoking method on object: " + _slot1.toString()));
};
};
delete _callbacks[cb];
}
private static function onEvent(pkg:Object):void{
var target:String = pkg.target;
var event:String = pkg.event;
switch (target){
case "services":
_slot1.triggerEvent(pkg.event, pkg.args);
break;
case "events":
MochiEvents.triggerEvent(pkg.event, pkg.args);
break;
case "coins":
MochiCoins.triggerEvent(pkg.event, pkg.args);
break;
case "social":
MochiSocial.triggerEvent(pkg.event, pkg.args);
break;
};
}
private static function flush(error:Boolean):void{
var request:Object;
var callback:Object;
if (((_clip) && (_queue))){
while (_queue.length > 0) {
request = _queue.shift();
callback = null;
if (request != null){
if (request.callbackID != null){
callback = _callbacks[request.callbackID];
};
delete _callbacks[request.callbackID];
if (((error) && (!((callback == null))))){
handleError(request.args, callback.callbackObject, callback.callbackMethod);
};
};
};
};
}
private static function handleError(args:Object, callbackObject:Object, callbackMethod:Object):void{
var args = args;
var callbackObject = callbackObject;
var callbackMethod = callbackMethod;
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)))){
var _local5 = callbackObject;
_local5[callbackMethod](args);
//unresolved jump
var _slot1 = error;
} else {
if (callbackMethod != null){
callbackMethod.apply(args);
//unresolved jump
var _slot1 = error;
};
};
};
}
public static function send(methodName:String, args:Object=null, callbackObject:Object=null, callbackMethod:Object=null):void{
if (_connected){
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:methodName, args:args, callbackID:_nextCallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + methodName));
handleError(args, callbackObject, callbackMethod);
flush(true);
return;
};
_queue.push({methodName:methodName, args:args, callbackID:_nextCallbackID});
};
if (_clip != null){
if (_callbacks != null){
_callbacks[_nextCallbackID] = {callbackObject:callbackObject, callbackMethod:callbackMethod};
_nextCallbackID++;
};
};
}
private static function urlOptions(clip:Object):Object{
var options:String;
var pairs:Array;
var i:Number;
var kv:Array;
var opts:Object = {};
if (clip.stage){
options = clip.stage.loaderInfo.parameters.mochiad_options;
} else {
options = clip.loaderInfo.parameters.mochiad_options;
};
if (options){
pairs = options.split("&");
i = 0;
while (i < pairs.length) {
kv = pairs[i].split("=");
opts[unescape(kv[0])] = unescape(kv[1]);
i++;
};
};
return (opts);
}
public static function addLinkEvent(url:String, burl:String, btn:DisplayObjectContainer, onClick: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 = url;
var burl = burl;
var btn = btn;
var onClick = onClick;
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://link.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (url:String):void{
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(url, onClick);
var rect:Rectangle = btn.getBounds(btn);
btn.addChild(avm1Click);
avm1Click.x = rect.x;
avm1Click.y = rect.y;
avm1Click.scaleX = (0.01 * rect.width);
avm1Click.scaleY = (0.01 * rect.height);
};
err = function (ev:Object):void{
netup = false;
ev.target.removeEventListener(ev.type, arguments.callee);
setURL(burl);
};
complete = function (ev:Object):void{
ev.target.removeEventListener(ev.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);
};
}
private static function clickMovie(url:String, cb:Function):MovieClip{
var b:int;
var loader:Loader;
var avm1_bytecode: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 header:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
var footer:Array = [0, 64, 0, 0, 0];
var mc:MovieClip = new MovieClip();
var lc:LocalConnection = new LocalConnection();
var lc_name:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
lc = new LocalConnection();
mc.lc = lc;
mc.click = cb;
lc.client = mc;
lc.connect(lc_name);
var ba:ByteArray = new ByteArray();
var cpool:ByteArray = new ByteArray();
cpool.endian = Endian.LITTLE_ENDIAN;
cpool.writeShort(1);
cpool.writeUTFBytes(((url + " ") + lc_name));
cpool.writeByte(0);
var actionLength:uint = ((avm1_bytecode.length + cpool.length) + 4);
var fileLength:uint = (actionLength + 35);
ba.endian = Endian.LITTLE_ENDIAN;
ba.writeUTFBytes("FWS");
ba.writeByte(8);
ba.writeUnsignedInt(fileLength);
for each (b in header) {
ba.writeByte(b);
};
ba.writeUnsignedInt(actionLength);
ba.writeByte(136);
ba.writeShort(cpool.length);
ba.writeBytes(cpool);
for each (b in avm1_bytecode) {
ba.writeByte(b);
};
for each (b in footer) {
ba.writeByte(b);
};
loader = new Loader();
loader.loadBytes(ba);
mc.addChild(loader);
return (mc);
}
public static function addEventListener(eventType:String, delegate:Function):void{
_dispatcher.addEventListener(eventType, delegate);
}
public static function triggerEvent(eventType:String, args:Object):void{
_dispatcher.triggerEvent(eventType, args);
}
public static function removeEventListener(eventType:String, delegate:Function):void{
_dispatcher.removeEventListener(eventType, delegate);
}
}
}//package mochi.as3
Section 259
//MochiSocial (mochi.as3.MochiSocial)
package mochi.as3 {
public class MochiSocial {
public static const LOGGED_IN:String = "LoggedIn";
public static const LOGGED_OUT:String = "LoggedOut";
public static const LOGIN_SHOW:String = "LoginShow";
public static const LOGIN_HIDE:String = "LoginHide";
public static const LOGIN_SHOWN:String = "LoginShown";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const PROFILE_HIDE:String = "ProfileHide";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const FRIEND_LIST:String = "FriendsList";
public static const PROFILE_DATA:String = "ProfileData";
public static const GAMEPLAY_DATA:String = "GameplayData";
public static const ACTION_CANCELED:String = "onCancel";
public static const ACTION_COMPLETE:String = "onComplete";
public static const USER_INFO:String = "UserInfo";
public static const ERROR:String = "Error";
public static const IO_ERROR:String = "IOError";
public static const NO_USER:String = "NoUser";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
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 getAPIURL():String{
if (!_user_info){
return (null);
};
return (_user_info.api_url);
}
public static function getAPIToken():String{
if (!_user_info){
return (null);
};
return (_user_info.api_token);
}
public static function showLoginWidget(options:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_showLoginWidget", {options:options});
}
public static function hideLoginWidget():void{
MochiServices.send("social_hideLoginWidget");
}
public static function requestLogin(properties:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestLogin", properties);
}
public static function saveUserProperties(properties:Object):void{
MochiServices.send("social_saveUserProperties", properties);
}
public static function getFriendsList(properties:Object=null):void{
MochiServices.send("social_getFriendsList", properties);
}
public static function postToStream(properties:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_postToStream", properties);
}
public static function inviteFriends(properties:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_inviteFriends", properties);
}
public static function requestFan(properties:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("social_requestFan", properties);
}
public static function addEventListener(eventType:String, delegate:Function):void{
_dispatcher.addEventListener(eventType, delegate);
}
public static function get loggedIn():Boolean{
return (!((_user_info == null)));
}
public static function triggerEvent(eventType:String, args:Object):void{
_dispatcher.triggerEvent(eventType, args);
}
public static function removeEventListener(eventType:String, delegate:Function):void{
_dispatcher.removeEventListener(eventType, delegate);
}
MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (args:Object):void{
_user_info = args;
});
MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (args:Object):void{
_user_info = null;
});
}
}//package mochi.as3
Section 260
//MochiUserData (mochi.as3.MochiUserData)
package mochi.as3 {
import flash.events.*;
import flash.utils.*;
import flash.net.*;
public class MochiUserData extends EventDispatcher {
public var _loader:URLLoader;
public var key:String;// = null
public var data;// = null
public var error:Event;// = null
public var operation:String;// = null
public var callback:Function;// = null
public function MochiUserData(key:String="", callback:Function=null){
super();
this.key = key;
this.callback = callback;
}
public function serialize(obj):ByteArray{
var arr:ByteArray = new ByteArray();
arr.objectEncoding = ObjectEncoding.AMF3;
arr.writeObject(obj);
arr.compress();
return (arr);
}
public function deserialize(arr:ByteArray){
arr.objectEncoding = ObjectEncoding.AMF3;
arr.uncompress();
return (arr.readObject());
}
public function request(_operation:String, _data:ByteArray):void{
var _operation = _operation;
var _data = _data;
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);
_loader.load(req);
//unresolved jump
var _slot1 = e;
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _slot1.toString())));
}
public function completeHandler(event:Event):void{
var event = event;
if (_loader.data.length){
data = deserialize(_loader.data);
} else {
data = null;
};
//unresolved jump
var _slot1 = e;
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + _slot1.toString())));
return;
if (callback != null){
performCallback();
} else {
dispatchEvent(event);
};
close();
}
public function errorHandler(event:IOErrorEvent):void{
data = null;
error = event;
if (callback != null){
performCallback();
} else {
dispatchEvent(event);
};
close();
}
public function securityErrorHandler(event:SecurityErrorEvent):void{
errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + event.toString())));
}
public function performCallback():void{
callback(this);
//unresolved jump
var _slot1 = e;
trace(("[MochiUserData] exception during callback: " + _slot1));
}
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 function getEvent():void{
request("get", serialize(null));
}
public function putEvent(obj):void{
request("put", serialize(obj));
}
override public function toString():String{
return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]"));
}
public static function get(key:String, callback:Function):void{
var userData:MochiUserData = new MochiUserData(key, callback);
userData.getEvent();
}
public static function put(key:String, obj, callback:Function):void{
var userData:MochiUserData = new MochiUserData(key, callback);
userData.putEvent(obj);
}
}
}//package mochi.as3
Section 261
//MochiBot (mochi.bot.MochiBot)
package mochi.bot {
import flash.display.*;
import flash.system.*;
import flash.net.*;
public dynamic class MochiBot extends Sprite {
public static function track(parent:Sprite, tag:String):MochiBot{
if (Security.sandboxType == "localWithFile"){
return (null);
};
var self:MochiBot = new (MochiBot);
parent.addChild(self);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var server:String = "http://core.mochibot.com/my/core.swf";
var lv:URLVariables = new URLVariables();
lv["sb"] = Security.sandboxType;
lv["v"] = Capabilities.version;
lv["swfid"] = tag;
lv["mv"] = "8";
lv["fv"] = "9";
var url:String = self.root.loaderInfo.loaderURL;
if (url.indexOf("http") == 0){
lv["url"] = url;
} else {
lv["url"] = "local";
};
var req:URLRequest = new URLRequest(server);
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
var loader:Loader = new Loader();
self.addChild(loader);
loader.load(req);
return (self);
}
}
}//package mochi.bot
Section 262
//Element (model.Element)
package model {
public class Element {
public var id:String;
public var group:String;
public var image:String;
public var isUnread:Boolean;// = true
public var isNew:Boolean;// = false
public function Element(){
super();
}
}
}//package model
Section 263
//Group (model.Group)
package model {
public class Group {
public var id:String;
public var image:String;
private var _color:String;
private var _colorInt:uint;
public function get colorInt():uint{
return (_colorInt);
}
public function get color():String{
return (_color);
}
public function set color(value:String):void{
_color = value;
if (value.indexOf("0x") == 0){
value = value.substring(2);
};
_colorInt = parseInt(value, 16);
}
}
}//package model
Section 264
//Model (model.Model)
package model {
import badim.utilz.*;
import common.*;
import flash.net.*;
import com.adobe.utils.*;
public class Model {
private var _ElementsCSVFileClass:Class;
private var _GroupsCSVFileClass:Class;
private var _ReactionsCSVFileClass1:Class;
private var _ReactionsCSVFileClass2:Class;
private var _ReactionsCSVFileClass3:Class;
private var _QuotesCSVFileClass:Class;
public var elements:Object;
public var groups:Object;
public var elementCount:int;
public var groupCount:int;
public var reactions1:Array;
public var reactions2:Array;
public var reactions3:Array;
public var reactions:Array;
public var episode:int;
public var firstLaunch:Boolean;// = true
public var reactionLog:Array;
public var quotes:Array;
public var currentElementStartTimeSeconds:Number;// = 0
public var score:Number;// = 0
public var soundOn:Boolean;// = true
public var intro1Shown:Boolean;// = false
public var intro2Shown:Boolean;// = false
public var intro3Shown:Boolean;// = false
public var appStoreNavigated:Boolean;// = false
public var iphoneBigAdType:String;// = "god"
public var reactionErrorCount:Number;
public var hintCount:Number;
public var initialElementIds1:Array;
public var initialElementIds2:Array;
public var unlockedElementIds:Array;
private var sins:Array;
private var SO;
public static const MAX_REACTION_LOG:int = 100;
public static var inst:Model;
public function Model(){
var quote:Quote;
_ElementsCSVFileClass = Model__ElementsCSVFileClass;
_GroupsCSVFileClass = Model__GroupsCSVFileClass;
_ReactionsCSVFileClass1 = Model__ReactionsCSVFileClass1;
_ReactionsCSVFileClass2 = Model__ReactionsCSVFileClass2;
_ReactionsCSVFileClass3 = Model__ReactionsCSVFileClass3;
_QuotesCSVFileClass = Model__QuotesCSVFileClass;
reactionLog = [];
quotes = [];
initialElementIds1 = ["Water", "Fire", "Air", "Earth"];
initialElementIds2 = ["Blood", "Egg", "Electricity", "Life", "Poison", "Seeds", "Sex", "Air", "Ash", "Dust", "Energy", "Steam", "Storm", "Animal", "Bird", "Dinosaur", "Fish", "Livestock", "Lizard", "Snake", "Turtle", "Whale", "Arable", "Book", "Bricks", "Cement", "Ceramics", "Clothing", "Concrete", "Fabric", "Paper", "Wood", "Clay", "Earth", "Glass", "Limestone", "Manure", "Metal", "Sand", "Stone", "Coal", "Fire", "Lava", "Saltpetre", "Sulfur", "Fern", "Grass", "Reed", "Tobacco", "Tree", "Beer", "Bread", "Cigarette", "Dough", "Feather", "Flour", "Meat", "Milk", "Wheat", "Wool", "Alcoholic", "Assassin", "Hero", "Human", "Hunter", "Corpse", "Warrior", "Dragon", "Ghost", "Ghoul", "Golem", "Phoenix", "Thunderbird", "Treant", "Vampire", "Werewolf", "Zombie", "Bacteria", "Beetle", "Butterfly", "Moss", "Mushroom", "Plankton", "Scorpion", "Shells", "Weeds", "Worm", "Boiler", "Firearm", "Gunpowder", "House", "Hut", "Poisoned weapon", "Skyscraper", "Steam-engine", "Tools", "Weapon", "Boat", "Cart", "Locomotive", "Sailing ship", "Ship", "Steamship", "Team", "Wheel", "Spirit", "Swamp", "Vodka", "Water", "Car", "Oil", "Airplane", "Wizard", "Dolphin", "Demigod"];
unlockedElementIds = [];
sins = ["Murder", "Theft", "Lust", "Gluttony", "Greed", "Sloth", "Wrath", "Envy", "Pride", "Heresy"];
super();
var elementsArray:Array = CSV.parse(new _ElementsCSVFileClass().toString(), Element);
elementCount = elementsArray.length;
elements = Utils.convertArrayToObject(elementsArray, "id", null, null);
var groupArray:Array = CSV.parse(new _GroupsCSVFileClass().toString(), Group);
groups = Utils.convertArrayToObject(groupArray, "id", null, null);
groupCount = groupArray.length;
reactions1 = CSV.parse(new _ReactionsCSVFileClass1().toString(), Reaction);
reactions2 = CSV.parse(new _ReactionsCSVFileClass2().toString(), Reaction);
reactions3 = CSV.parse(new _ReactionsCSVFileClass3().toString(), Reaction);
quotes = CSV.parse(new _QuotesCSVFileClass().toString(), Quote);
for each (quote in quotes) {
quote.text = repairQuoteText(quote.text);
};
SO = SharedObject.getLocal("save");
}
public function get hintCooldownSeconds():int{
var unlockedCount:int = unlockedElementIds.length;
if (unlockedCount <= 10){
return (20);
};
if (unlockedCount <= 20){
return (25);
};
if (unlockedCount <= 60){
return (30);
};
return (30);
}
public function getUnlockedGroups(filter:Boolean=false):Array{
var elemId:String;
var arr:Array;
var elem:Element;
var unlockedGroups:Object = {};
for each (elemId in unlockedElementIds) {
elem = elements[elemId];
if (((((filter) && ((episode == 3)))) && ((elem.group == "Mystic")))){
} else {
if (!unlockedGroups[elem.group]){
unlockedGroups[elem.group] = groups[elem.group];
};
};
};
arr = Utils.convertObjectToArray(unlockedGroups, false);
arr.sortOn(["id"]);
return (arr);
}
public function getUnlockedAllElements():Array{
var elemId:String;
var element:Element;
var arr:Array = [];
for each (elemId in unlockedElementIds) {
element = elements[elemId];
arr.push(element);
};
return (arr);
}
public function getUnlockedElements(groupId:String):Array{
var elemId:String;
var element:Element;
var groupElements:Array = [];
for each (elemId in unlockedElementIds) {
if ((((episode == 3)) && ((elemId == "Demigod")))){
} else {
if ((((episode == 3)) && ((elemId == "Wizard")))){
} else {
if ((((episode == 3)) && ((elemId == "Philosophers stone")))){
} else {
if ((((episode == 3)) && ((elemId == "Dinosaur")))){
} else {
element = elements[elemId];
if (element.group == groupId){
groupElements.push(element);
};
};
};
};
};
};
return (groupElements);
}
public function findReaction(element1:Element, element2:Element, log:Boolean=true):Reaction{
var reaction:Reaction;
for each (reaction in reactions) {
if ((((((reaction.element1 == element1.id)) && ((reaction.element2 == element2.id)))) || ((((reaction.element1 == element2.id)) && ((reaction.element2 == element1.id)))))){
return (reaction);
};
};
return (null);
}
public function checkReactionResultMax(id):int{
var reaction:Reaction;
var counter:int;
for each (reaction in reactions) {
if ((((((reaction.result1 == id)) || ((reaction.result2 == id)))) || ((reaction.result3 == id)))){
counter++;
};
};
return (counter);
}
public function checkReactionResult(id):int{
var reaction:Reaction;
var counter:int;
for each (reaction in reactions) {
if (reaction.discovered){
if ((((((reaction.result1 == id)) || ((reaction.result2 == id)))) || ((reaction.result3 == id)))){
counter++;
};
};
};
return (counter);
}
public function tryReaction(element1:Element, element2:Element, log:Boolean=true):Reaction{
var reaction:Reaction;
var result:Array;
var newElements:Array;
var elem:Element;
var newReaction:Object;
for each (reaction in reactions) {
if ((((((reaction.element1 == element1.id)) && ((reaction.element2 == element2.id)))) || ((((reaction.element1 == element2.id)) && ((reaction.element2 == element1.id)))))){
result = reaction.getResult();
newElements = unlockElements(result);
reaction.discovered = true;
for each (elem in newElements) {
elem.isNew = true;
};
if (log){
newReaction = {reaction:reaction, isUnread:true};
if ((((reactionLog.length == 0)) || ((((reactionLog.length > 0)) && (!(reactionLog[(reactionLog.length - 1)].reaction.equals(newReaction.reaction))))))){
reactionLog.push(newReaction);
if (reactionLog.length > MAX_REACTION_LOG){
reactionLog.splice(0, 1);
};
};
};
return (reaction);
};
};
return (null);
}
private function unlockElements(elementsToUnlock:Array):Array{
var element:Element;
var newElements:Array = [];
for each (element in elementsToUnlock) {
if (unlockedElementIds.indexOf(element.id) == -1){
unlockedElementIds.push(element.id);
newElements.push(element);
};
};
return (newElements);
}
public function getUnreadElements(groupId:String):int{
var elem:Element;
var unreadCount:int;
for each (elem in getUnlockedElements(groupId)) {
if (elem.isUnread){
unreadCount++;
};
};
return (unreadCount);
}
public function markAsRead(groupId:String):void{
var elem:Element;
for each (elem in getUnlockedElements(groupId)) {
elem.isUnread = false;
};
}
public function markReactionLogAsRead():void{
var reactionObj:Object;
for each (reactionObj in reactionLog) {
reactionObj.isUnread = false;
};
}
public function getReadReactionsCount():int{
var reaction:Object;
var count:int;
for each (reaction in reactionLog) {
if (reaction.isUnread){
count++;
};
};
return (count);
}
public function getUnreadReactionsCount():int{
var reaction:Object;
var count:int;
for each (reaction in reactionLog) {
if (reaction.isUnread){
count++;
};
};
return (count);
}
public function getRandomQuote(elementId:String):Quote{
var quote:Quote;
var index:int;
var elementQuotes:Array = [];
for each (quote in quotes) {
if (quote.element == elementId){
elementQuotes.push(quote);
};
};
if (elementQuotes.length == 0){
return (null);
};
index = int((Math.random() * elementQuotes.length));
return (elementQuotes[index]);
}
private function repairQuoteText(text:String):String{
var slashN:RegExp = /\\n/g;
text = text.replace(slashN, "\n");
return (text);
}
public function getHintReaction():Reaction{
var reaction:Reaction;
var index:int;
var result1:Boolean;
var result2:Boolean;
var result3:Boolean;
var element1:Boolean;
var element2:Boolean;
var unusedReactions:Array = [];
for each (reaction in reactions) {
result1 = (unlockedElementIds.indexOf(reaction.result1) == -1);
result2 = ((!((reaction.result2 == ""))) && ((unlockedElementIds.indexOf(reaction.result2) == -1)));
result3 = ((!((reaction.result3 == ""))) && ((unlockedElementIds.indexOf(reaction.result3) == -1)));
element1 = (unlockedElementIds.indexOf(reaction.element1) > -1);
element2 = (unlockedElementIds.indexOf(reaction.element2) > -1);
if (((((((result1) || (result2))) || (result3))) && (((element1) && (element2))))){
unusedReactions.push(reaction);
};
};
Utils.shuffleArray(unusedReactions);
index = int((Math.random() * unusedReactions.length));
reaction = unusedReactions[index];
return (reaction);
}
public function getHintElement():Element{
var r:Reaction = getHintReaction();
if (r){
if (((r.result1) && ((unlockedElementIds.indexOf(r.result1) == -1)))){
return (elements[r.result1]);
};
if (((r.result2) && ((unlockedElementIds.indexOf(r.result2) == -1)))){
return (elements[r.result2]);
};
if (((r.result3) && ((unlockedElementIds.indexOf(r.result3) == -1)))){
return (elements[r.result3]);
};
};
return (null);
}
public function isElementUnlocked(elemId:String):Boolean{
return ((unlockedElementIds.indexOf(elemId) > -1));
}
private function submitKonregateStats():void{
Document.submitKongregateStats(score, unlockedElementIds.length, getUnlockedGroups().length, hintCount, isDoodleBarUnlocked(), isGamesUnlocked());
trace(((("STATS: games = " + isGamesUnlocked()) + ", doodleBar = ") + isDoodleBarUnlocked()));
}
private function isGamesUnlocked():Boolean{
return ((unlockedElementIds.indexOf("Games") > -1));
}
private function isDoodleBarUnlocked():Boolean{
return ((((((((((((((unlockedElementIds.indexOf("White russian") > -1)) && ((unlockedElementIds.indexOf("Tequila") > -1)))) && ((unlockedElementIds.indexOf("Rum") > -1)))) && ((unlockedElementIds.indexOf("Absinthe") > -1)))) && ((unlockedElementIds.indexOf("B52") > -1)))) && ((unlockedElementIds.indexOf("Beer") > -1)))) && ((unlockedElementIds.indexOf("Vodka") > -1))));
}
private function submitNewgroundStats():void{
Document.submitNewgroudStats(elementCount, score, unlockedElementIds.length, getUnlockedGroups().length, hintCount, isDoodleBarUnlocked(), isGamesUnlocked());
trace(((((((("STATS: allCount = " + elementCount) + ", unlockedCount = ") + unlockedElementIds.length) + ", games = ") + isGamesUnlocked()) + ", doodleBar = ") + isDoodleBarUnlocked()));
}
public function addScore(newElements:int, newGroups:int):void{
var elemBonus:Number = (newElements * 20);
var groupBonus:Number = (newGroups * 300);
var deltaTime:Number = (Utils.nowSeconds - currentElementStartTimeSeconds);
trace("addScore", deltaTime);
var speedBonus:Number = 0;
if (deltaTime < 15){
speedBonus = (speedBonus + 30);
} else {
if (deltaTime < 30){
speedBonus = (speedBonus + 20);
} else {
if (deltaTime < 60){
speedBonus = (speedBonus + 10);
};
};
};
var errorBonus:Number = 0;
if (reactionErrorCount == 0){
errorBonus = 20;
} else {
if (reactionErrorCount == 1){
errorBonus = 5;
};
};
var totalBonus:Number = (((elemBonus + groupBonus) + speedBonus) + errorBonus);
trace("totalBonus = ", totalBonus, " = ", elemBonus, groupBonus, speedBonus, errorBonus);
currentElementStartTimeSeconds = Utils.nowSeconds;
score = (score + totalBonus);
reactionErrorCount = 0;
saveGame();
submitKonregateStats();
submitNewgroundStats();
trace(score, unlockedElementIds.length, getUnlockedGroups().length, hintCount, hasNuclearBomb, mortalSinCount);
}
public function get hasNuclearBomb():Boolean{
return (isElementUnlocked("Nuclear bomb"));
}
public function get mortalSinCount():Number{
var sinElemId:String;
var count:Number = 0;
for each (sinElemId in sins) {
if (unlockedElementIds.indexOf(sinElemId) > -1){
count++;
};
};
return (count);
}
public function scoreCallback(e):void{
trace("scoreCallback:", e.error, e.errorCode);
}
public function getShared(){
return (SO);
}
public function tryLoadGame():void{
var save:SharedObject;
var elemId:String;
var this_reacs:Array;
var r_obj:Object;
var reaction:*;
save = getShared();
if (save.data["unlockedElementIds"] == null){
firstLaunch = true;
resetGame();
} else {
firstLaunch = false;
unlockedElementIds = save.data["unlockedElementIds"];
score = save.data["score"];
for each (elemId in unlockedElementIds) {
elements[elemId].isUnread = false;
};
soundOn = save.data["soundOn"];
intro1Shown = save.data["intro1Shown"];
intro2Shown = save.data["intro2Shown"];
intro3Shown = save.data["intro3Shown"];
episode = save.data["episode"];
initReactionsByEpisode();
if (save.data["reactions"]){
reactions = [];
this_reacs = JSON.decode(save.data["reactions"]);
for each (r_obj in this_reacs) {
reaction = new Reaction();
reaction.loadObj(r_obj);
reactions.push(reaction);
};
};
appStoreNavigated = save.data["appStoreNavigated"];
iphoneBigAdType = save.data["iphoneBigAdType"];
iphoneBigAdType = "god";
reactionErrorCount = save.data["reactionErrorCount"];
hintCount = save.data["hintCount"];
};
//unresolved jump
var _slot1 = e;
submitKonregateStats();
}
public function saveGame():void{
var this_reacs:Array;
var reaction:Reaction;
var save:SharedObject = getShared();
if (save != null){
save.data["unlockedElementIds"] = unlockedElementIds;
save.data["score"] = score;
save.data["soundOn"] = soundOn;
save.data["intro1Shown"] = intro1Shown;
save.data["intro2Shown"] = intro2Shown;
save.data["intro3Shown"] = intro3Shown;
save.data["episode"] = episode;
save.data["appStoreNavigated"] = appStoreNavigated;
save.data["iphoneBigAdType"] = iphoneBigAdType;
save.data["reactionErrorCount"] = reactionErrorCount;
save.data["hintCount"] = hintCount;
this_reacs = [];
for each (reaction in reactions) {
this_reacs.push(reaction.getObj());
};
save.data["reactions"] = JSON.encode(this_reacs);
save.flush();
};
}
public function initReactionsByEpisode():void{
if (episode == 1){
reactions = reactions1.concat(reactions2);
} else {
if (episode == 2){
reactions = reactions1.concat(reactions2);
} else {
if (episode == 3){
reactions = reactions3;
};
};
};
}
public function initUnlockedElementsByEpisode():void{
var elemId:String;
if (episode == 1){
unlockedElementIds = ArrayUtil.copyArray(initialElementIds1);
} else {
if (episode == 2){
unlockedElementIds = ArrayUtil.copyArray(initialElementIds2);
};
};
for each (elemId in unlockedElementIds) {
elements[elemId].isUnread = false;
};
}
public function resetGame():void{
var elem:Element;
var elemId:String;
episode = 0;
for each (elem in elements) {
elem.isNew = false;
elem.isUnread = true;
};
for each (elemId in unlockedElementIds) {
elements[elemId].isUnread = false;
};
reactionLog = [];
currentElementStartTimeSeconds = Utils.nowSeconds;
score = 0;
intro1Shown = false;
intro2Shown = false;
intro3Shown = false;
reactionErrorCount = 2;
hintCount = 0;
saveGame();
}
private function getAllElementIds():Array{
var elemId:String;
var arr:Array = [];
for (elemId in elements) {
arr.push(elemId);
};
return (arr);
}
public function get allElementsUnlocked():Boolean{
return ((unlockedElementIds.length >= elementCount));
}
public function unlockedAll_debug(n:Number=-1):void{
var i:int;
var arr:Array;
var arr1:Array;
var arr2:Array;
var j:int;
if (n < 0){
arr = Utils.convertObjectToArray(elements);
i = arr.indexOf(elements["Zombie"]);
arr.splice(i, 1);
unlockElements(arr);
} else {
arr1 = Utils.convertObjectToArray(elements);
arr2 = [];
j = 0;
while (j < n) {
arr2.push(arr1[j]);
j++;
};
i = arr2.indexOf(elements["Sun"]);
arr2.splice(i, 1);
unlockElements(arr2);
};
}
public function nextEpisode():void{
}
public function findFirstAvailableReaction():Reaction{
var r:Reaction;
var e:Element;
for each (r in reactions) {
if ((((unlockedElementIds.indexOf(r.element1) > -1)) && ((unlockedElementIds.indexOf(r.element2) > -1)))){
for each (e in r.getResult()) {
if (unlockedElementIds.indexOf(e.id) < 0){
return (r);
};
};
};
};
return (null);
}
public function getQuotesByElementId(elemId:String):Array{
var q:Quote;
var quotes:Array = [];
for each (q in quotes) {
if (q.element == elemId){
quotes.push(q);
};
};
return (quotes);
}
}
}//package model
Section 265
//Model__ElementsCSVFileClass (model.Model__ElementsCSVFileClass)
package model {
import mx.core.*;
public class Model__ElementsCSVFileClass extends ByteArrayAsset {
public function Model__ElementsCSVFileClass(){
super();
}
}
}//package model
Section 266
//Model__GroupsCSVFileClass (model.Model__GroupsCSVFileClass)
package model {
import mx.core.*;
public class Model__GroupsCSVFileClass extends ByteArrayAsset {
public function Model__GroupsCSVFileClass(){
super();
}
}
}//package model
Section 267
//Model__QuotesCSVFileClass (model.Model__QuotesCSVFileClass)
package model {
import mx.core.*;
public class Model__QuotesCSVFileClass extends ByteArrayAsset {
public function Model__QuotesCSVFileClass(){
super();
}
}
}//package model
Section 268
//Model__ReactionsCSVFileClass1 (model.Model__ReactionsCSVFileClass1)
package model {
import mx.core.*;
public class Model__ReactionsCSVFileClass1 extends ByteArrayAsset {
public function Model__ReactionsCSVFileClass1(){
super();
}
}
}//package model
Section 269
//Model__ReactionsCSVFileClass2 (model.Model__ReactionsCSVFileClass2)
package model {
import mx.core.*;
public class Model__ReactionsCSVFileClass2 extends ByteArrayAsset {
public function Model__ReactionsCSVFileClass2(){
super();
}
}
}//package model
Section 270
//Model__ReactionsCSVFileClass3 (model.Model__ReactionsCSVFileClass3)
package model {
import mx.core.*;
public class Model__ReactionsCSVFileClass3 extends ByteArrayAsset {
public function Model__ReactionsCSVFileClass3(){
super();
}
}
}//package model
Section 271
//Quote (model.Quote)
package model {
public class Quote {
public var element:String;
public var text:String;
public var author:String;
}
}//package model
Section 272
//Reaction (model.Reaction)
package model {
import screens.*;
import common.*;
public class Reaction {
private const _faceBookTemplates:Array;
private const _twitterTemplates:Array;
public var element1:String;
public var element2:String;
public var result1:String;
public var result2:String;
public var result3:String;
public var skip:String;
public var discovered:Boolean;// = false
public function Reaction(){
_faceBookTemplates = ["I found out how to make {3} by combining {1} with {2}!", "I was trying very hard to invent {3} until finally combined {1} and {2}.", "I want to share a secret recipe of {3} with you! It's {1} combined with {2}, but don't tell anyone ;)", "Still wondering how to make {3}? I have found out that it is {1} combined with {2}.", "I combined {1} with {2} just for fun, and was very surprised to get {3}."];
_twitterTemplates = ["{1} plus {2} = {3}! Play Doodle Devil for FREE - http://ls.gd/3786 Get for iPhone - http://ls.gd/3790"];
super();
}
public function getObj(){
var obj:Object = {};
obj.element1 = element1;
obj.element2 = element2;
obj.result1 = result1;
obj.result2 = result2;
obj.result3 = result3;
obj.discovered = discovered;
return (obj);
}
public function loadObj(obj){
element1 = obj.element1;
element2 = obj.element2;
result1 = obj.result1;
result2 = obj.result2;
result3 = obj.result3;
discovered = obj.discovered;
}
public function getResult():Array{
var result:Array = [Model.inst.elements[result1]];
if (((result2) && (!((result2 == ""))))){
result.push(Model.inst.elements[result2]);
};
if (((result3) && (!((result3 == ""))))){
result.push(Model.inst.elements[result3]);
};
return (result);
}
public function equals(other:Reaction):Boolean{
return ((((other.element1 == this.element1)) && ((other.element2 == this.element2))));
}
public function toString():String{
return ((((((((((("Reaction{element1=" + String(element1)) + ",element2=") + String(element2)) + ",result1=") + String(result1)) + ",result2=") + String(result2)) + ",result3=") + String(result3)) + "}"));
}
public function getReactionText():String{
var str:String = ((((Main.loc(element1) + " %252b ") + Main.loc(element2)) + " = ") + Main.loc(result1));
if (((result2) && (!((result2 == ""))))){
str = (str + (" %252b " + Main.loc(result2)));
};
if (((result3) && (!((result3 == ""))))){
str = (str + (" %252b " + Main.loc(result3)));
};
str = (str + "!");
return (str);
}
public function getFacebookText():String{
var message:String = Utils.getRandomElement(_faceBookTemplates);
return (Utils.stringFormat(message, null, Main.loc(element1), Main.loc(element2), Main.loc(result1)));
}
public function getTwitterText():String{
var message:String = Utils.getRandomElement(_twitterTemplates);
return (Utils.stringFormat(message, null, Main.loc(element1), Main.loc(element2), Main.loc(result1)));
}
public function getElementClips():Array{
var elem:Element;
var elements:Array = getResult();
var elementClips:Array = [];
for each (elem in elements) {
elementClips.push(new ElementClip(elem.id));
};
return (elementClips);
}
}
}//package model
Section 273
//png (molotov_cocktail.png)
package molotov_cocktail {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package molotov_cocktail
Section 274
//png (money.png)
package money {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package money
Section 275
//png (moss.png)
package moss {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package moss
Section 276
//wav (move.wav)
package move {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package move
Section 277
//png (mushroom.png)
package mushroom {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package mushroom
Section 278
//mp3 (music.mp3)
package music {
import flash.media.*;
public dynamic class mp3 extends Sound {
}
}//package music
Section 279
//png (music.png)
package music {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package music
Section 280
//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
import flash.display.*;
public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {
mx_internal static const VERSION:String = "3.4.0.9271";
public function BitmapAsset(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){
super(bitmapData, pixelSnapping, smoothing);
}
public function get measuredWidth():Number{
if (bitmapData){
return (bitmapData.width);
};
return (0);
}
public function get measuredHeight():Number{
if (bitmapData){
return (bitmapData.height);
};
return (0);
}
public function setActualSize(newWidth:Number, newHeight:Number):void{
width = newWidth;
height = newHeight;
}
public function move(x:Number, y:Number):void{
this.x = x;
this.y = y;
}
}
}//package mx.core
Section 281
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.4.0.9271";
public function ByteArrayAsset(){
super();
}
}
}//package mx.core
Section 282
//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexBitmap extends Bitmap {
mx_internal static const VERSION:String = "3.4.0.9271";
public function FlexBitmap(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){
var bitmapData = bitmapData;
var pixelSnapping = pixelSnapping;
var smoothing = smoothing;
super(bitmapData, pixelSnapping, smoothing);
name = NameUtil.createUniqueName(this);
//unresolved jump
var _slot1 = e;
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 283
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 284
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.accessibility.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(void:Point):Point;
function get name():String;
function set width(flash.display:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(flash.display:String):void;
function set scaleX(flash.display:Number):void;
function set scaleY(flash.display:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(flash.display:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(void:Point):Point;
function get height():Number;
function set blendMode(flash.display:String):void;
function get parent():DisplayObjectContainer;
function getBounds(String:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(flash.display:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(flash.display:Number):void;
function set accessibilityProperties(flash.display:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(flash.display: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(flash.display:Number):void;
function set mask(flash.display:DisplayObject):void;
function getRect(String:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(flash.display:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(mx.core:IFlexDisplayObject/mx.core:IFlexDisplayObject:stage/get:DisplayObject):Boolean;
function set opaqueBackground(flash.display:Object):void;
function set visible(flash.display:Boolean):void;
function get mask():DisplayObject;
function set x(flash.display:Number):void;
function set y(flash.display:Number):void;
function get transform():Transform;
function set filters(flash.display:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(flash.display:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 285
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(C:\autobuild\galaga\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get isDocument():Boolean;
function set repeaters(C:\autobuild\galaga\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function initializeRepeaterArrays(C:\autobuild\galaga\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(C:\autobuild\galaga\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 286
//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 287
//LoaderConfig (mx.messaging.config.LoaderConfig)
package mx.messaging.config {
import mx.core.*;
public class LoaderConfig {
mx_internal static const VERSION:String = "3.0.0.0";
mx_internal static var _url:String = null;
mx_internal static var _parameters:Object;
public function LoaderConfig(){
super();
}
public static function get url():String{
return (_url);
}
public static function get parameters():Object{
return (_parameters);
}
}
}//package mx.messaging.config
Section 288
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.4.0.9271";
private static var counter:int = 0;
public function NameUtil(){
super();
}
public static function displayObjectToString(displayObject:DisplayObject):String{
var result:String;
var o:DisplayObject;
var s:String;
var indices:Array;
var displayObject = displayObject;
o = displayObject;
while (o != null) {
if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){
break;
};
s = o.name;
if ((o is IRepeaterClient)){
indices = IRepeaterClient(o).instanceIndices;
if (indices){
s = (s + (("[" + indices.join("][")) + "]"));
};
};
result = ((result == null)) ? s : ((s + ".") + result);
o = o.parent;
};
//unresolved jump
var _slot1 = e;
return (result);
}
public static function createUniqueName(object:Object):String{
if (!object){
return (null);
};
var name:String = getQualifiedClassName(object);
var index:int = name.indexOf("::");
if (index != -1){
name = name.substr((index + 2));
};
var charCode:int = name.charCodeAt((name.length - 1));
if ((((charCode >= 48)) && ((charCode <= 57)))){
name = (name + "_");
};
return ((name + counter++));
}
}
}//package mx.utils
Section 289
//StringUtil (mx.utils.StringUtil)
package mx.utils {
import mx.core.*;
public class StringUtil {
mx_internal static const VERSION:String = "3.4.0.9271";
public function StringUtil(){
super();
}
public static function trim(str:String):String{
if (str == null){
return ("");
};
var startIndex:int;
while (isWhitespace(str.charAt(startIndex))) {
startIndex++;
};
var endIndex:int = (str.length - 1);
while (isWhitespace(str.charAt(endIndex))) {
endIndex--;
};
if (endIndex >= startIndex){
return (str.slice(startIndex, (endIndex + 1)));
};
return ("");
}
public static function isWhitespace(character:String):Boolean{
switch (character){
case " ":
case "\t":
case "\r":
case "\n":
case "\f":
return (true);
default:
return (false);
};
}
public static function substitute(str:String, ... _args):String{
var args:Array;
if (str == null){
return ("");
};
var len:uint = _args.length;
if ((((len == 1)) && ((_args[0] is Array)))){
args = (_args[0] as Array);
len = args.length;
} else {
args = _args;
};
var i:int;
while (i < len) {
str = str.replace(new RegExp((("\\{" + i) + "\\}"), "g"), args[i]);
i++;
};
return (str);
}
public static function trimArrayElements(value:String, delimiter:String):String{
var items:Array;
var len:int;
var i:int;
if (((!((value == ""))) && (!((value == null))))){
items = value.split(delimiter);
len = items.length;
i = 0;
while (i < len) {
items[i] = StringUtil.trim(items[i]);
i++;
};
if (len > 0){
value = items.join(delimiter);
};
};
return (value);
}
}
}//package mx.utils
Section 290
//URLUtil (mx.utils.URLUtil)
package mx.utils {
import mx.messaging.config.*;
public class URLUtil {
public static const SERVER_NAME_TOKEN:String = "{server.name}";
private static const SERVER_PORT_REGEX:RegExp = new RegExp("\\{server.port\\}", "g");
private static const SERVER_NAME_REGEX:RegExp = new RegExp("\\{server.name\\}", "g");
public static const SERVER_PORT_TOKEN:String = "{server.port}";
public function URLUtil(){
super();
}
public static function hasUnresolvableTokens():Boolean{
return (!((LoaderConfig.url == null)));
}
public static function getServerName(url:String):String{
var sp:String = getServerNameWithPort(url);
var delim:int = sp.indexOf("]");
delim = ((delim)>-1) ? sp.indexOf(":", delim) : sp.indexOf(":");
if (delim > 0){
sp = sp.substring(0, delim);
};
return (sp);
}
public static function isHttpsURL(url:String):Boolean{
return (((!((url == null))) && ((url.indexOf("https://") == 0))));
}
private static function internalObjectToString(object:Object, separator:String, prefix:String, encodeURL:Boolean):String{
var p:String;
var value:Object;
var name:String;
var s:String = "";
var first:Boolean;
for (p in object) {
if (first){
first = false;
} else {
s = (s + separator);
};
value = object[p];
name = (prefix) ? ((prefix + ".") + p) : p;
if (encodeURL){
name = encodeURIComponent(name);
};
if ((value is String)){
s = (s + ((name + "=") + (encodeURL) ? encodeURIComponent((value as String)) : value));
} else {
if ((value is Number)){
value = value.toString();
if (encodeURL){
value = encodeURIComponent((value as String));
};
s = (s + ((name + "=") + value));
} else {
if ((value is Boolean)){
s = (s + ((name + "=") + (value) ? "true" : "false"));
} else {
if ((value is Array)){
s = (s + internalArrayToString((value as Array), separator, name, encodeURL));
} else {
s = (s + internalObjectToString(value, separator, name, encodeURL));
};
};
};
};
};
return (s);
}
public static function getFullURL(rootURL:String, url:String):String{
var slashPos:Number;
if (((!((url == null))) && (!(URLUtil.isHttpURL(url))))){
if (url.indexOf("./") == 0){
url = url.substring(2);
};
if (URLUtil.isHttpURL(rootURL)){
if (url.charAt(0) == "/"){
slashPos = rootURL.indexOf("/", 8);
if (slashPos == -1){
slashPos = rootURL.length;
};
} else {
slashPos = (rootURL.lastIndexOf("/") + 1);
if (slashPos <= 8){
rootURL = (rootURL + "/");
slashPos = rootURL.length;
};
};
if (slashPos > 0){
url = (rootURL.substring(0, slashPos) + url);
};
};
};
return (url);
}
public static function getServerNameWithPort(url:String):String{
var start:int = (url.indexOf("/") + 2);
var length:int = url.indexOf("/", start);
return (((length == -1)) ? url.substring(start) : url.substring(start, length));
}
public static function replaceProtocol(uri:String, newProtocol:String):String{
return (uri.replace(getProtocol(uri), newProtocol));
}
public static function urisEqual(uri1:String, uri2:String):Boolean{
if (((!((uri1 == null))) && (!((uri2 == null))))){
uri1 = StringUtil.trim(uri1).toLowerCase();
uri2 = StringUtil.trim(uri2).toLowerCase();
if (uri1.charAt((uri1.length - 1)) != "/"){
uri1 = (uri1 + "/");
};
if (uri2.charAt((uri2.length - 1)) != "/"){
uri2 = (uri2 + "/");
};
};
return ((uri1 == uri2));
}
public static function getProtocol(url:String):String{
var slash:int = url.indexOf("/");
var indx:int = url.indexOf(":/");
if ((((indx > -1)) && ((indx < slash)))){
return (url.substring(0, indx));
};
indx = url.indexOf("::");
if ((((indx > -1)) && ((indx < slash)))){
return (url.substring(0, indx));
};
return ("");
}
private static function internalArrayToString(array:Array, separator:String, prefix:String, encodeURL:Boolean):String{
var value:Object;
var name:String;
var s:String = "";
var first:Boolean;
var n:int = array.length;
var i:int;
while (i < n) {
if (first){
first = false;
} else {
s = (s + separator);
};
value = array[i];
name = ((prefix + ".") + i);
if (encodeURL){
name = encodeURIComponent(name);
};
if ((value is String)){
s = (s + ((name + "=") + (encodeURL) ? encodeURIComponent((value as String)) : value));
} else {
if ((value is Number)){
value = value.toString();
if (encodeURL){
value = encodeURIComponent((value as String));
};
s = (s + ((name + "=") + value));
} else {
if ((value is Boolean)){
s = (s + ((name + "=") + (value) ? "true" : "false"));
} else {
if ((value is Array)){
s = (s + internalArrayToString((value as Array), separator, name, encodeURL));
} else {
s = (s + internalObjectToString(value, separator, name, encodeURL));
};
};
};
};
i++;
};
return (s);
}
public static function objectToString(object:Object, separator:String=";", encodeURL:Boolean=true):String{
var s:String = internalObjectToString(object, separator, null, encodeURL);
return (s);
}
public static function replaceTokens(url:String):String{
var loaderProtocol:String;
var loaderServerName:String;
var loaderPort:uint;
var loaderURL:String = ((LoaderConfig.url == null)) ? "" : LoaderConfig.url;
if (url.indexOf(SERVER_NAME_TOKEN) > 0){
loaderProtocol = URLUtil.getProtocol(loaderURL);
loaderServerName = "localhost";
if (loaderProtocol.toLowerCase() != "file"){
loaderServerName = URLUtil.getServerName(loaderURL);
};
url = url.replace(SERVER_NAME_REGEX, loaderServerName);
};
var portToken:int = url.indexOf(SERVER_PORT_TOKEN);
if (portToken > 0){
loaderPort = URLUtil.getPort(loaderURL);
if (loaderPort > 0){
url = url.replace(SERVER_PORT_REGEX, loaderPort);
} else {
if (url.charAt((portToken - 1)) == ":"){
url = (url.substring(0, (portToken - 1)) + url.substring(portToken));
};
url = url.replace(SERVER_PORT_REGEX, "");
};
};
return (url);
}
public static function getPort(url:String):uint{
var p:Number;
var sp:String = getServerNameWithPort(url);
var delim:int = sp.indexOf("]");
delim = ((delim)>-1) ? sp.indexOf(":", delim) : sp.indexOf(":");
var port:uint;
if (delim > 0){
p = Number(sp.substring((delim + 1)));
if (!isNaN(p)){
port = int(p);
};
};
return (port);
}
public static function stringToObject(string:String, separator:String=";", decodeURL:Boolean=true):Object{
var pieces:Array;
var name:String;
var value:Object;
var obj:Object;
var m:int;
var j:int;
var temp:Object;
var prop:String;
var subProp:String;
var idx:Object;
var o:Object = {};
var arr:Array = string.split(separator);
var n:int = arr.length;
var i:int;
while (i < n) {
pieces = arr[i].split("=");
name = pieces[0];
if (decodeURL){
name = decodeURIComponent(name);
};
value = pieces[1];
if (decodeURL){
value = decodeURIComponent((value as String));
};
if (value == "true"){
value = true;
} else {
if (value == "false"){
value = false;
} else {
temp = int(value);
if (temp.toString() == value){
value = temp;
} else {
temp = Number(value);
if (temp.toString() == value){
value = temp;
};
};
};
};
obj = o;
pieces = name.split(".");
m = pieces.length;
j = 0;
while (j < (m - 1)) {
prop = pieces[j];
if ((((obj[prop] == null)) && ((j < (m - 1))))){
subProp = pieces[(j + 1)];
idx = int(subProp);
if (idx.toString() == subProp){
obj[prop] = [];
} else {
obj[prop] = {};
};
};
obj = obj[prop];
j++;
};
obj[pieces[j]] = value;
i++;
};
return (o);
}
public static function replacePort(uri:String, newPort:uint):String{
var portEnd:int;
var result:String = "";
var indx:int = uri.indexOf("]");
if (indx == -1){
indx = uri.indexOf(":");
};
var portStart:int = uri.indexOf(":", (indx + 1));
if (portStart > -1){
portStart++;
portEnd = uri.indexOf("/", portStart);
result = ((uri.substring(0, portStart) + newPort.toString()) + uri.substring(portEnd, uri.length));
} else {
portEnd = uri.indexOf("/", indx);
if (portEnd > -1){
if (uri.charAt((portEnd + 1)) == "/"){
portEnd = uri.indexOf("/", (portEnd + 2));
};
if (portEnd > 0){
result = (((uri.substring(0, portEnd) + ":") + newPort.toString()) + uri.substring(portEnd, uri.length));
} else {
result = ((uri + ":") + newPort.toString());
};
} else {
result = ((uri + ":") + newPort.toString());
};
};
return (result);
}
public static function isHttpURL(url:String):Boolean{
return (((!((url == null))) && ((((url.indexOf("http://") == 0)) || ((url.indexOf("https://") == 0))))));
}
}
}//package mx.utils
Section 291
//wav (new_element_v1.wav)
package new_element_v1 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package new_element_v1
Section 292
//wav (new_element_v2.wav)
package new_element_v2 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package new_element_v2
Section 293
//wav (new_element_v3.wav)
package new_element_v3 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package new_element_v3
Section 294
//wav (no.wav)
package no {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package no
Section 295
//png (nuclear_bomb.png)
package nuclear_bomb {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package nuclear_bomb
Section 296
//png (octopus.png)
package octopus {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package octopus
Section 297
//png (oil.png)
package oil {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package oil
Section 298
//wav (old_element_v1.wav)
package old_element_v1 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package old_element_v1
Section 299
//wav (old_element_v2.wav)
package old_element_v2 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package old_element_v2
Section 300
//wav (old_element_v3.wav)
package old_element_v3 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package old_element_v3
Section 301
//wav (old_element_v4.wav)
package old_element_v4 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package old_element_v4
Section 302
//png (palm.png)
package palm {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package palm
Section 303
//png (paper.png)
package paper {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package paper
Section 304
//png (philosophers_stone.png)
package philosophers_stone {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package philosophers_stone
Section 305
//png (phoenix.png)
package phoenix {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package phoenix
Section 306
//png (pie.png)
package pie {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package pie
Section 307
//png (pirate.png)
package pirate {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package pirate
Section 308
//png (plankton.png)
package plankton {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package plankton
Section 309
//png (plasma.png)
package plasma {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package plasma
Section 310
//png (plutonium.png)
package plutonium {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package plutonium
Section 311
//png (poison.png)
package poison {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package poison
Section 312
//png (poisoned_weapon.png)
package poisoned_weapon {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package poisoned_weapon
Section 313
//png (policeman.png)
package policeman {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package policeman
Section 314
//png (quicksilver.png)
package quicksilver {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package quicksilver
Section 315
//png (radiation.png)
package radiation {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package radiation
Section 316
//png (radiowave.png)
package radiowave {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package radiowave
Section 317
//png (rat.png)
package rat {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package rat
Section 318
//png (reed.png)
package reed {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package reed
Section 319
//png (religion.png)
package religion {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package religion
Section 320
//png (rock_n_roll.png)
package rock_n_roll {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package rock_n_roll
Section 321
//png (rocket.png)
package rocket {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package rocket
Section 322
//png (rum.png)
package rum {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package rum
Section 323
//png (russian_roulette.png)
package russian_roulette {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package russian_roulette
Section 324
//png (sailing_ship.png)
package sailing_ship {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sailing_ship
Section 325
//png (salt.png)
package salt {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package salt
Section 326
//png (saltpetre.png)
package saltpetre {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package saltpetre
Section 327
//png (sand.png)
package sand {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sand
Section 328
//png (satellite.png)
package satellite {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package satellite
Section 329
//png (scientist.png)
package scientist {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package scientist
Section 330
//png (scorpion.png)
package scorpion {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package scorpion
Section 331
//BaseIntro (screens.BaseIntro)
package screens {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import model.*;
import com.greensock.*;
import common.*;
import common.platform.*;
import com.greensock.easing.*;
public class BaseIntro extends Sprite {
protected var _intro;
protected var _texts:Array;
protected var _nextScene:Object;// = null
private var _sceneSkipEnabled:Boolean;// = false
private var _skipTimeout:uint;// = 0
private var _nextSceneTimeout:uint;// = 0
private var _episode:Number;
public function BaseIntro(episode:Number){
var episode = episode;
super();
_episode = episode;
init();
this.graphics.beginFill(0, 0);
this.graphics.drawRect(0, 0, Platform.wrapper.normalSize.width, Platform.wrapper.normalSize.height);
this.graphics.endFill();
_intro.subtitle.visible = false;
TweenMax.to(_intro.halo, 10, {rotation:360, repeat:-1, ease:Linear.easeNone});
_intro.skip.addEventListener(MouseEvent.CLICK, function ():void{
onExit();
});
addEventListener(MouseEvent.CLICK, function (e):void{
nextScene(true);
});
SoundManager.inst.stopMain();
nextScene();
}
protected function init():void{
}
protected function playMusic(time:Number=0):void{
}
protected function stopMusic():void{
}
private function nextScene(byClick:Boolean=false):void{
var duration:Number;
var byClick = byClick;
if (((!((_nextScene == null))) && (((!(byClick)) || (_sceneSkipEnabled))))){
if (byClick){
playMusic(_nextScene.time);
};
duration = _nextScene.f();
if (duration > 0){
clearTimeout(_nextSceneTimeout);
_nextSceneTimeout = setTimeout(function ():void{
nextScene();
}, (duration * 1000));
};
_sceneSkipEnabled = false;
clearTimeout(_skipTimeout);
_skipTimeout = setTimeout(function ():void{
_sceneSkipEnabled = true;
}, 700);
};
}
protected function tweenCenter(clip:MovieClip):void{
var rect:Rectangle = clip.getRect(clip);
var targetX:Number = ((Platform.wrapper.normalSize.width / 2) - ((rect.left + rect.right) / 2));
TweenLite.to(clip, 0.5, {x:targetX});
}
protected function end():void{
GraphUtils.showFlash(this);
clearTimeout(_nextSceneTimeout);
clearTimeout(_skipTimeout);
_nextScene = null;
onExit();
}
protected function animateText(text:String):void{
TweenMax.killTweensOf(_intro.subtitle);
_intro.subtitle.visible = true;
var textX:Number = (GraphUtils.centerPoint().x - (_intro.subtitle.width / 2));
GraphUtils.setText(_intro.subtitle, text);
_intro.subtitle.x = -(_intro.subtitle.width);
_intro.subtitle.y = 425;
var timeline:TimelineMax = new TimelineMax();
var timelineAmin:TimelineMax = new TimelineMax({repeat:-1, yoyo:true});
timeline.appendMultiple([TweenMax.to(_intro.subtitle, 1, {x:(textX + 10), ease:Cubic.easeOut})]);
timelineAmin.appendMultiple([TweenMax.to(_intro.subtitle, 5, {x:(textX - 10), ease:Cubic.easeInOut})]);
timeline.append(timelineAmin);
}
protected function onExit():void{
GraphUtils.tweenVisible(this, false, 0.5);
clearTimeout(_skipTimeout);
clearTimeout(_nextSceneTimeout);
_nextScene = null;
Model.inst[(("intro" + _episode) + "Shown")] = true;
Model.inst.saveGame();
dispatchEvent(new DynamicEvent("introShown", {episode:1}));
stopMusic();
SoundManager.inst.playMain();
}
}
}//package screens
Section 332
//DevicesScreen (screens.DevicesScreen)
package screens {
import flash.display.*;
import flash.events.*;
import model.*;
import com.greensock.*;
import common.*;
import common.platform.*;
import com.greensock.easing.*;
public class DevicesScreen extends Sprite {
public var _screen;
public function DevicesScreen(){
var THIS:*;
var clip:*;
super();
_screen = Application.inst.createInstance("DeviceAdClass");
addChild(_screen);
THIS = this;
_screen.continueButton.buttonMode = true;
_screen.continueButton.addEventListener(MouseEvent.CLICK, function (e):void{
GraphUtils.tweenVisible(THIS, false, 0.5, true);
});
var clips:Array = [_screen.iphone, _screen.android, _screen.windows7, _screen.bada];
for each (clip in clips) {
clip.buttonMode = true;
clip.addEventListener(MouseEvent.ROLL_OVER, function (e):void{
TweenMax.killTweensOf(e.target);
TweenMax.to(e.target, 0.15, {y:210, scaleX:1, scaleY:1, ease:Sine.easeInOut});
});
clip.addEventListener(MouseEvent.ROLL_OUT, function (e):void{
TweenMax.killTweensOf(e.target);
TweenMax.to(e.target, 0.1, {y:224, scaleX:0.8, scaleY:0.8, ease:Sine.easeInOut});
});
};
_screen.iphone.addEventListener(MouseEvent.CLICK, function (e):void{
openAppStoreLink();
});
_screen.android.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL("http://ls.gd/4088");
});
_screen.windows7.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL("http://ls.gd/4090");
});
_screen.bada.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL("http://ls.gd/4089");
});
}
public static function openAppStoreLink():void{
Platform.wrapper.navigateToURL("http://ls.gd/4087");
Model.inst.appStoreNavigated = true;
Model.inst.saveGame();
}
public static function openAppStoreLink_fromMenu():void{
Platform.wrapper.navigateToURL(Document.menuAppstoreBadgeUrl);
Model.inst.appStoreNavigated = true;
Model.inst.saveGame();
}
}
}//package screens
Section 333
//ElementClip (screens.ElementClip)
package screens {
import flash.display.*;
import flash.geom.*;
import model.*;
import common.*;
import assets.*;
public dynamic class ElementClip extends LayoutClip {
public var element:Element;
public var onTween:Function;// = null
private var _oldPos:Point;
public function ElementClip(elementId:String, layout:String=null){
super(layout);
element = Model.inst.elements[elementId];
var bitmap:Bitmap = Assets.getBitmap(element.image);
bitmap.x = -(Math.floor((bitmap.width / 2)));
bitmap.y = -(Math.floor((bitmap.height / 2)));
addChild(bitmap);
}
override public function get id():String{
return (("element_" + element.id));
}
public function clone():ElementClip{
var newClip:ElementClip = new ElementClip(element.id, layout);
newClip.x = this.x;
newClip.y = this.y;
newClip.scaleX = this.scaleX;
newClip.scaleY = this.scaleY;
return (newClip);
}
public function startDragging(target:DisplayObject, point:Point):Object{
return (null);
}
public function canDrop(dragInfo:DragInfo, target:DisplayObject):Boolean{
return (true);
}
public function drop(dragInfo:DragInfo, target:DisplayObject):Boolean{
var element:Element = (dragInfo.item as Element);
return (((element) && (!((element.id == this.element.id)))));
}
public function finish(dragInfo:DragInfo, cancel:Boolean=false, dropTarget=null):void{
}
public function restorePos():void{
if (_oldPos){
x = _oldPos.x;
y = _oldPos.y;
};
rotation = 0;
}
public function storePos():void{
if (!_oldPos){
_oldPos = new Point();
};
_oldPos.x = x;
_oldPos.y = y;
}
}
}//package screens
Section 334
//GroupClip (screens.GroupClip)
package screens {
import flash.display.*;
import model.*;
import assets.*;
public dynamic class GroupClip extends LayoutClip {
public var group:Group;
public function GroupClip(groupId:String, layout:String=null){
var balloon:*;
super(layout);
group = Model.inst.groups[groupId];
var bmp:Bitmap = Assets.getBitmap(group.image);
addChild(bmp);
var n:int = Model.inst.getUnreadElements(group.id);
if (n > 0){
if (n > 3){
n = 3;
};
balloon = Application.inst.createInstance((("Balloon" + n) + "Class"));
balloon.scaleX = 1.5;
balloon.scaleY = 1.5;
addChild(balloon);
};
}
override public function get id():String{
return (("group_" + group.id));
}
}
}//package screens
Section 335
//GroupsLayout (screens.GroupsLayout)
package screens {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import model.*;
import common.*;
import common.platform.*;
public class GroupsLayout extends Layout {
public var selectedGroupLeft:Group;// = null
public var selectedGroupRight:Group;// = null
public var pageLeft:Number;// = 0
public var pageRight:Number;// = 0
public function GroupsLayout(selectedGroupLeft:Group, selectedGroupRight:Group, pageLeft_:Number=0, pageRight_:Number=0){
super();
this.selectedGroupLeft = selectedGroupLeft;
this.selectedGroupRight = selectedGroupRight;
pageLeft = pageLeft_;
pageRight = pageRight_;
}
override public function update(prevLayout:Layout):void{
var elementsLeft:MovieClip;
var elementsRight:MovieClip;
var rows:int;
var groupIndex:int;
var i:int;
var col:MovieClip;
var j:int;
var groupClip2:MovieClip;
var spaceRect:Rectangle = Platform.wrapper.spaceNormaSize;
var unlockedGroups:Array = Model.inst.getUnlockedGroups(true);
var x:Number = 0;
var y:Number = 0;
var scale:Number = 0.7;
var num_cols = 1;
var num:Number = unlockedGroups.length;
if (num <= 4){
} else {
if (num <= 10){
scale = 0.6;
num_cols = 2;
} else {
if (num <= 12){
scale = 0.5;
num_cols = 2;
} else {
if (num <= 18){
scale = 0.5;
num_cols = 3;
} else {
scale = 0.42;
num_cols = 3;
};
};
};
};
if ((((selectedGroupLeft == null)) && ((selectedGroupRight == null)))){
if (num >= 19){
scale = 0.65;
num_cols = 5;
} else {
if (num >= 16){
scale = 0.6;
num_cols = 4;
} else {
if (num >= 9){
scale = 0.6;
num_cols = 3;
};
};
};
};
_objects = [];
var all:MovieClip = new MovieClip();
var groups:MovieClip = new MovieClip();
Utils.removeAllChildren(this);
if ((((selectedGroupLeft == null)) || ((selectedGroupRight == null)))){
rows = (unlockedGroups.length / num_cols);
if ((unlockedGroups.length % num_cols) > 0){
rows++;
};
groupIndex = 0;
i = 0;
while (i < num_cols) {
col = new MovieClip();
j = 0;
while (j < rows) {
if (groupIndex > (unlockedGroups.length - 1)){
break;
};
groupClip2 = new GroupClip(unlockedGroups[groupIndex].id);
_objects.push(groupClip2);
groupClip2.y = col.height;
col.addChild(groupClip2);
groupIndex++;
j++;
};
col.x = groups.width;
col.y = (((rows * 128) / 2) - (col.height / 2));
groups.addChild(col);
i++;
};
groups.scaleX = scale;
groups.scaleY = scale;
groups.y = ((spaceRect.y + (spaceRect.height / 2)) - (groups.height / 2));
all.addChild(groups);
};
if (selectedGroupRight){
groups.x = 64;
elementsRight = createElementsLayout(selectedGroupRight, spaceRect, LayoutClip.RIGHT);
all.addChild(elementsRight);
elementsRight.x = (spaceRect.width - elementsRight.width);
};
if (selectedGroupLeft){
groups.x = ((spaceRect.width - groups.width) - 64);
elementsLeft = createElementsLayout(selectedGroupLeft, spaceRect, LayoutClip.LEFT);
all.addChild(elementsLeft);
elementsLeft.x = 0;
};
if (((!(selectedGroupLeft)) && (!(selectedGroupRight)))){
groups.x = ((spaceRect.x + (spaceRect.width / 2)) - (groups.width / 2));
};
Utils.removeAllChildren(this);
flatten(all, this, 1);
}
private function createElementsLayout(group:Group, spaceRect:Rectangle, layout:String):MovieClip{
var clipWidth:Number;
var clipHeight:Number;
var sizeY:Number;
var shiftY:Number;
var start:Number;
var end:Number;
var element:Element;
var clip:ElementClip;
var arrowLeft:LayoutClip;
var arrowRight:LayoutClip;
var group = group;
var spaceRect = spaceRect;
var layout = layout;
var elementsLayout:MovieClip = new MovieClip();
var elementsList:MovieClip = new MovieClip();
var groupClip:GroupClip = new GroupClip(group.id, layout);
_objects.push(groupClip);
elementsLayout.addChild(groupClip);
groupClip.y = ((spaceRect.y + (spaceRect.height / 2)) - (groupClip.height / 2));
groupClip.x = 0;
var shift:Number = 64;
var groupElements:Array = Model.inst.getUnlockedElements(group.id);
var max:Number = 24;
var len:Number = groupElements.length;
var isPaging = (len > max);
var page:Number = ((layout == LayoutClip.LEFT)) ? pageLeft : pageRight;
if (isPaging){
start = (page * max);
end = Math.min((start + max), len);
} else {
start = 0;
end = groupElements.length;
};
var pageLen:Number = (end - start);
var isFirstPage = (start == 0);
var isLastPage = (end == len);
if (pageLen <= 10){
clipWidth = 64;
clipHeight = 64;
sizeY = 5;
shift = 50;
} else {
if (pageLen <= 15){
clipWidth = 52;
clipHeight = 64;
sizeY = 5;
shift = 10;
} else {
if (pageLen <= 18){
clipWidth = 52;
clipHeight = 52;
sizeY = 6;
shift = 10;
} else {
clipWidth = 52;
clipHeight = 52;
sizeY = 6;
shift = -40;
};
};
};
var i:int = start;
while (i < end) {
element = groupElements[i];
clip = new ElementClip(element.id, layout);
clip.x = (int(((i - start) / sizeY)) * clipWidth);
clip.y = (int(((i - start) % sizeY)) * clipHeight);
elementsList.addChild(clip);
_objects.push(clip);
i = (i + 1);
};
var arrowsX:Number = 0;
if (layout == LayoutClip.LEFT){
groupClip.x = shift;
elementsList.x = ((groupClip.x + groupClip.width) + 32);
} else {
groupClip.x = ((elementsList.x + elementsList.width) - shift);
elementsList.x = (elementsList.x + (32 - shift));
};
elementsList.y = (((spaceRect.y + (spaceRect.height / 2)) - (elementsList.height / 2)) + 32);
elementsLayout.addChild(elementsList);
if (layout == LayoutClip.LEFT){
arrowsX = 175;
} else {
arrowsX = ((elementsLayout.x + elementsLayout.width) - 220);
};
if (isPaging){
if (!isFirstPage){
arrowLeft = new LayoutClip(layout);
arrowLeft.addChild((Application.inst.createInstance("ArrowLeftClass") as DisplayObject));
elementsLayout.addChild(arrowLeft);
_objects.push(arrowLeft);
arrowLeft.x = (arrowsX - 20);
arrowLeft.y = ((spaceRect.bottom - arrowLeft.height) + 15);
arrowLeft.addEventListener(MouseEvent.CLICK, function (e):void{
if (layout == LayoutClip.LEFT){
pageLeft--;
} else {
pageRight--;
};
dispatchEvent(new DynamicEvent("scroll", {dir:-1, layout:layout}));
});
};
if (!isLastPage){
arrowRight = new LayoutClip(layout);
arrowRight.addChild((Application.inst.createInstance("ArrowRightClass") as DisplayObject));
elementsLayout.addChild(arrowRight);
_objects.push(arrowRight);
arrowRight.x = (arrowsX + 20);
arrowRight.y = ((spaceRect.bottom - arrowRight.height) + 15);
arrowRight.addEventListener(MouseEvent.CLICK, function (e):void{
if (layout == LayoutClip.LEFT){
pageLeft++;
} else {
pageRight++;
};
dispatchEvent(new DynamicEvent("scroll", {dir:1, layout:layout}));
});
};
};
return (elementsLayout);
}
private function flatten(obj:DisplayObjectContainer, target:DisplayObjectContainer, scale:Number):void{
var child:DisplayObject;
var newPoint:Point;
var i:int = (obj.numChildren - 1);
while (i >= 0) {
child = obj.getChildAt(i);
if ((child is LayoutClip)){
child.scaleX = (child.scaleX * scale);
child.scaleY = (child.scaleY * scale);
newPoint = obj.localToGlobal(new Point(child.x, child.y));
child.x = newPoint.x;
child.y = newPoint.y;
target.addChild(child);
} else {
if ((child is DisplayObjectContainer)){
flatten(DisplayObjectContainer(child), target, (child.scaleX * scale));
};
};
i--;
};
}
}
}//package screens
Section 336
//HintScreen (screens.HintScreen)
package screens {
import model.*;
import com.greensock.*;
import com.greensock.easing.*;
public class HintScreen extends Layout {
public function HintScreen(element:Element){
super();
var screen:* = Application.inst.createInstance("HintScreenClass");
addChild(screen);
TweenMax.to(screen.halo, 10, {rotation:360, repeat:-1, ease:Linear.easeNone});
screen.caption.text = (("What if I create " + Main.loc(element.id)) + "?");
TweenMax.to(screen.q1, 0.5, {scaleX:1.2, scaleY:1.2, repeat:-1, yoyo:true, ease:Sine.easeInOut});
TweenMax.to(screen.q2, 0.5, {scaleX:1.2, scaleY:1.2, repeat:-1, yoyo:true, ease:Sine.easeInOut});
var clip:* = new ElementClip(element.id);
addChild(clip);
clip.y = screen.q2.y;
clip.x = (screen.q2.x + 90);
}
}
}//package screens
Section 337
//Intro (screens.Intro)
package screens {
import flash.display.*;
import model.*;
import com.greensock.*;
import common.*;
import com.greensock.easing.*;
public class Intro extends BaseIntro {
private var _QuestionClass:Class;
private var _basicElements:MovieClip;
private var _equation:MovieClip;
public function Intro(){
_QuestionClass = Intro__QuestionClass;
super(1);
}
override protected function init():void{
_intro = Application.inst.createInstance("IntroClass");
addChild(_intro);
var d:Number = 0.3;
AnimationUtils.tweenAnimation(_intro.water, d);
AnimationUtils.tweenAnimation(_intro.earth, d);
AnimationUtils.tweenAnimation(_intro.air, d);
AnimationUtils.tweenAnimation(_intro.fire, d);
_intro.water.visible = false;
_intro.earth.visible = false;
_intro.air.visible = false;
_intro.fire.visible = false;
_intro.idea.visible = false;
_texts = ["In the beginning there\nwas only Doodle God.", "Doodle God created\nthe four basic elements...", "From earth Doodle God\n created the planets...", "From water seas and\noceans were created...", "From fire were created\nvolcanoes... and other stuff...", "From air... you know...", "But the world was still\n vast and deserted...", "...and then Doodle God was\n struck with a bright idea!", "What if I combined the basic\nelements to create new ones?", "And Doodle God began\ncreating new elements...", "Wow! There is so much to\ncombine, so much to create!"];
_nextScene = {f:sceneBeginning, time:0};
}
override protected function playMusic(time:Number=0):void{
SoundManager.inst.playIntro1(time);
}
private function sceneBeginning():Number{
playMusic();
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[0]);
_nextScene = {f:sceneBasicElements, time:5};
return (5);
}
private function sceneBasicElements():Number{
var elemClip:ElementClip;
SoundManager.inst.playNewElement();
GraphUtils.showFlash(this);
animateText(_texts[1]);
_basicElements = new MovieClip();
addChild(_basicElements);
_basicElements.earth = new ElementClip(Model.inst.elements["Earth"].id);
_basicElements.water = new ElementClip(Model.inst.elements["Water"].id);
_basicElements.fire = new ElementClip(Model.inst.elements["Fire"].id);
_basicElements.air = new ElementClip(Model.inst.elements["Air"].id);
var arr:Array = [_basicElements.earth, _basicElements.water, _basicElements.fire, _basicElements.air];
var x:Number = 0;
var delay:Number = 0;
for each (elemClip in arr) {
_basicElements.addChild(elemClip);
elemClip.x = x;
x = (x + 64);
TweenMax.to(elemClip, 0.5, {delay:delay, repeat:-1, y:(elemClip.y + 10), yoyo:true, ease:Sine.easeInOut});
delay = (delay + 0.12);
};
_basicElements.y = 170;
tweenCenter(_basicElements);
_nextScene = {f:sceneEarth, time:10};
return (5);
}
private function tweenCreateWorldsPart(elem:ElementClip, part:MovieClip):void{
var elem = elem;
var part = part;
addChild(elem);
elem.x = (elem.x + _basicElements.x);
elem.y = (elem.y + _basicElements.y);
tweenCenter(_basicElements);
TweenLite.to(elem, 0.5, {y:350, alpha:0, onComplete:function ():void{
Utils.removeChildSafe(elem);
GraphUtils.tweenVisible(part, true, 0.5);
}});
}
private function sceneEarth():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[2]);
tweenCreateWorldsPart(_basicElements.earth, _intro.earth);
_nextScene = {f:sceneWater, time:15};
return (5);
}
private function sceneWater():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[3]);
tweenCreateWorldsPart(_basicElements.water, _intro.water);
_nextScene = {f:sceneFire, time:20};
return (5);
}
private function sceneFire():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[4]);
tweenCreateWorldsPart(_basicElements.fire, _intro.fire);
_nextScene = {f:sceneAir, time:25};
return (5);
}
private function sceneAir():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[5]);
tweenCreateWorldsPart(_basicElements.air, _intro.air);
_nextScene = {f:sceneBut, time:30};
return (5);
}
private function sceneBut():Number{
SoundManager.inst.playOldElement();
GraphUtils.showFlash(this);
animateText(_texts[6]);
_nextScene = {f:sceneIdea, time:35};
return (5);
}
private function sceneIdea():Number{
SoundManager.inst.playHint();
GraphUtils.showFlash(this);
animateText(_texts[7]);
_intro.idea.visible = true;
TweenMax.to(_intro.idea, 0.5, {startAt:{alpha:0.3}, alpha:1, repeat:-1, yoyo:true, ease:Sine.easeInOut});
_nextScene = {f:sceneEquation, time:40};
return (5);
}
private function sceneEquation():Number{
SoundManager.inst.playOldElement();
GraphUtils.showFlash(this);
_intro.idea.visible = false;
animateText(_texts[8]);
var question:MovieClip = new MovieClip();
_equation = new MovieClip();
_equation.earth = _equation.addChild(new ElementClip(Model.inst.elements["Earth"].id));
_equation.earth.y = 32;
_equation.plus = _equation.addChild(new ReactionsLogScreen._PlusClass());
_equation.plus.x = ((_equation.earth.x + _equation.earth.width) - 32);
_equation.fire = _equation.addChild(new ElementClip(Model.inst.elements["Fire"].id));
_equation.fire.x = ((_equation.plus.x + _equation.plus.width) + 32);
_equation.fire.y = 32;
_equation.equals = _equation.addChild(new ReactionsLogScreen._EqualClass());
_equation.equals.x = ((_equation.fire.x + _equation.fire.width) - 32);
question.addChild(new _QuestionClass());
question.getChildAt(0).x = (-(question.getChildAt(0).width) / 2);
question.getChildAt(0).y = (-(question.getChildAt(0).height) / 2);
Bitmap(question.getChildAt(0)).smoothing = true;
_equation.question = _equation.addChild(question);
_equation.question.x = ((_equation.equals.x + _equation.equals.width) + 20);
_equation.question.y = 32;
TweenMax.to(_equation.question, 0.5, {startAt:{scaleX:0.7, scaleY:0.7}, scaleX:1.5, scaleY:1.5, repeat:-1, yoyo:true, ease:Linear.easeIn});
addChild(_equation);
_equation.y = 140;
tweenCenter(_equation);
_nextScene = {f:sceneFly1, time:45};
return (5);
}
private function sceneFly1():Number{
SoundManager.inst.playNewElement();
GraphUtils.showFlash(this);
_equation.visible = false;
var d:Number = 5;
var d2:Number = 1.5;
tweenFly(new ElementClip(Model.inst.elements["Worm"].id), d);
tweenFly(new ElementClip(Model.inst.elements["Tree"].id), d, d2);
tweenFly(new ElementClip(Model.inst.elements["Clay"].id), d, (d2 * 2));
tweenFly(new ElementClip(Model.inst.elements["Dolphin"].id), d, (d2 * 3));
animateText(_texts[9]);
_nextScene = {f:sceneFly2, time:50};
return (5);
}
private function tweenFly(clip:ElementClip, duration:Number, delay:Number=0):void{
addChild(clip);
clip.x = -64;
clip.y = ((Math.random() * 100) + 190);
var points:Array = [];
points.push({x:((Math.random() * 100) + 220), y:((Math.random() * 100) + 190)});
points.push({x:(640 + 64), y:((Math.random() * 100) + 190)});
TweenMax.to(clip, duration, {delay:delay, bezierThrough:points, ease:Quad.easeIn});
}
private function sceneFly2():Number{
SoundManager.inst.playNewElement();
GraphUtils.showFlash(this);
var d:Number = 5;
var d2:Number = 1.5;
tweenFly(new ElementClip(Model.inst.elements["Human"].id), d);
tweenFly(new ElementClip(Model.inst.elements["Boat"].id), d, d2);
tweenFly(new ElementClip(Model.inst.elements["Car"].id), d, (d2 * 2));
tweenFly(new ElementClip(Model.inst.elements["Airplane"].id), d, (d2 * 3));
animateText(_texts[10]);
_nextScene = {f:end, time:55};
return (8);
}
override protected function stopMusic():void{
SoundManager.inst.stopIntro1();
}
}
}//package screens
Section 338
//Intro__QuestionClass (screens.Intro__QuestionClass)
package screens {
import mx.core.*;
public class Intro__QuestionClass extends BitmapAsset {
public function Intro__QuestionClass(){
super();
}
}
}//package screens
Section 339
//Intro2 (screens.Intro2)
package screens {
import com.greensock.*;
import common.*;
import com.greensock.easing.*;
public class Intro2 extends BaseIntro {
public function Intro2(){
super(2);
}
override protected function init():void{
_intro = Application.inst.createInstance("IntroClass2");
addChild(_intro);
_texts = ["Doodle God stepped back to review all that was created...", "And he noticed the infinite void all around...", "The Void can also be a good element for creation...", "And likewise Doodle God proclaimedeth...", "'Let me add it to my list now'"];
_intro.planet2.visible = false;
_intro.voidBkg.visible = false;
_intro.planetSmall.visible = false;
_intro.voidBkg2.visible = false;
_intro.void2.visible = false;
_intro.stars.visible = false;
_intro.box.visible = false;
_nextScene = {f:sceneBeginning, time:0};
}
override protected function playMusic(time:Number=0):void{
SoundManager.inst.playIntro2(time);
}
private function sceneBeginning():Number{
playMusic();
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[0]);
_intro.planet2.visible = true;
TweenMax.to(_intro.planet2, 50, {rotation:360, repeat:-1, ease:Linear.easeNone});
_nextScene = {f:sceneVoid1, time:5};
return (5);
}
private function sceneVoid1():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[1]);
_intro.planet2.visible = false;
_intro.voidBkg.visible = true;
_intro.planetSmall.visible = true;
TweenMax.to(_intro.planetSmall, 10, {rotation:-360, repeat:-1, ease:Linear.easeNone});
TweenMax.to(_intro.planetSmall, 50, {x:-300, ease:Linear.easeNone});
_nextScene = {f:sceneVoid2, time:11};
return (6);
}
private function sceneVoid2():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[2]);
_intro.voidBkg.visible = false;
_intro.planetSmall.visible = false;
_intro.stars.visible = true;
_intro.void2.visible = true;
_intro.voidBkg2.visible = true;
TweenMax.to(_intro.void2, 50, {rotation:360, repeat:-1, ease:Linear.easeNone});
_nextScene = {f:sceneVoid3, time:17};
return (6);
}
private function sceneVoid3():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[3]);
_intro.stars.visible = false;
_intro.void2.visible = false;
_intro.voidBkg2.visible = false;
_intro.box.visible = true;
_nextScene = {f:sceneBox, time:22};
return (5);
}
private function sceneBox():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[4]);
_nextScene = {f:end, time:-1};
return (4);
}
override protected function stopMusic():void{
SoundManager.inst.stopIntro2();
}
}
}//package screens
Section 340
//Intro3 (screens.Intro3)
package screens {
import com.greensock.*;
import common.*;
import com.greensock.easing.*;
public class Intro3 extends BaseIntro {
public function Intro3(){
super(2);
}
override protected function init():void{
_intro = Application.inst.createInstance("IntroClass3");
addChild(_intro);
_texts = ["There be-eth in the world today\nsuch a multitude of variety", "But forsooth! Some things\nsimply can not coexist!", "And so, what if the\nworlds were parted", "And their inhabitants allowed\nto follow a path of their own?", "'To be sure' -\nreasoned Doodle God -", "'They'll be needing wisdom,\nknowledge, and... uh... all that.'"];
_intro.crack1.visible = false;
_intro.crack2.visible = false;
_intro.crack.visible = false;
_intro.oops.visible = false;
_intro.comms.visible = false;
AnimationUtils.tweenAnimationYoyo(_intro.dragon, 0.4, -1);
_nextScene = {f:sceneBeginning, time:0};
}
override protected function playMusic(time:Number=0):void{
SoundManager.inst.playIntro3(time);
}
private function sceneBeginning():Number{
playMusic();
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[0]);
_nextScene = {f:sceneCrackAnim, time:5};
return (5);
}
private function sceneCrackAnim():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[1]);
_intro.crack.visible = true;
AnimationUtils.tweenAnimationYoyo(_intro.crack, 1, -1);
_nextScene = {f:sceneMove, time:11};
return (6);
}
private function sceneMove():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[2]);
TweenMax.killTweensOf(_intro.crack);
_intro.crack.visible = false;
_intro.crack1.visible = true;
_intro.crack2.visible = true;
TweenMax.to(_intro.crack2, 8, {x:(_intro.crack2.x + 300), ease:Linear.easeNone});
TweenMax.to(_intro.wizzard, 8, {x:(_intro.wizzard.x + 300), ease:Linear.easeNone});
_nextScene = {f:sceneOops, time:17};
return (6);
}
private function sceneOops():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[3]);
_intro.crack2.visible = false;
_intro.wizzard.visible = false;
_intro.oops.visible = true;
_nextScene = {f:sceneOut, time:22};
return (5);
}
private function sceneOut():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[4]);
_intro.oops.visible = false;
_intro.dragon.visible = false;
_nextScene = {f:sceneComms, time:-1};
return (4);
}
private function sceneComms():Number{
SoundManager.inst.playFlight();
GraphUtils.showFlash(this);
animateText(_texts[5]);
_intro.building.visible = false;
_intro.crack1.visible = false;
_intro.comms.visible = true;
TweenMax.to(_intro.comms, 10, {y:(_intro.comms.y + 250), ease:Linear.easeNone});
_nextScene = {f:end, time:-1};
return (7);
}
override protected function stopMusic():void{
SoundManager.inst.stopIntro3();
}
}
}//package screens
Section 341
//Layout (screens.Layout)
package screens {
import flash.display.*;
public class Layout extends MovieClip {
protected var _objects:Array;
public function Layout(){
_objects = [];
super();
}
public function getObjects():Array{
return (_objects);
}
public function update(prevLayout:Layout):void{
}
}
}//package screens
Section 342
//LayoutClip (screens.LayoutClip)
package screens {
import flash.display.*;
public class LayoutClip extends MovieClip {
public var tweenDirection:String;// = "appear"
public var curObjs:Array;// = null
public var layout:String;
public var freeze:Boolean;// = false
public static const LEFT:String = "left";
public static const RIGHT:String = "right";
public static const APPEAR:String = "appear";
public static const DISAPPEAR:String = "disappear";
public static const KEEP:String = "keep";
public function LayoutClip(layout:String=null){
super();
this.layout = layout;
}
public function get id():String{
return (null);
}
public function tween():Boolean{
return (false);
}
}
}//package screens
Section 343
//Main (screens.Main)
package screens {
import flash.display.*;
import flash.events.*;
import com.newgrounds.components.*;
import flash.geom.*;
import flash.utils.*;
import model.*;
import common.events.*;
import flash.text.*;
import com.greensock.*;
import common.*;
import SWFStats.*;
import armorgames.*;
import common.platform.*;
import com.greensock.easing.*;
public class Main extends Sprite {
private const SWITCH_LAYOUT_DURATION:Number = 0.7;
private var _bkg;
private var _toolbar:Toolbar;
private var _helpScreen;
private var _menuHelpScreen;
private var _devicesScreen:DevicesScreen;
private var _space:Sprite;
private var _currentLayout:Layout;
private var _selectedGroupRight:Group;
private var _selectedGroupLeft:Group;
private var _selectedElementClip1:ElementClip;
private var _newElementCreated;
private var _quote;
private var _menu:MainMenu;
private var _reactionLogScreen:ReactionsLogScreen;
private var _currentScreen;// = null
private var _currentLayoutName:String;// = ""
private var _mouseController:MouseController;
private var _tutorial:TutorialController;
private var _intro;
private var _logCounter:Number;// = 0
private var _dragElementCopy:DisplayObject;
private var _dragElementClip:ElementClip;
private var _currenLayoutTween:TimelineMax;// = null
private var autoQuotesFlag:Boolean;// = false
private var _qoutes:Array;
public static const textColor1:int = 0x281400;
private static const _facebookApiKey:String = "aef35cd4e09416578a0abb471b5535b3";
public static var inst:Main;
private static var _locTable:Object;
public function Main(){
var THIS:*;
var p:*;
_mouseController = new MouseController();
_tutorial = new TutorialController();
inst = this;
super();
_bkg = Application.inst.createInstance("BkgClass");
addChild(_bkg);
_toolbar = new Toolbar();
GraphUtils.alignIn(_toolbar, this, GraphUtils.BOTTOM_CENTER);
_toolbar.x = (_toolbar.x + 5);
_bkg.addChild(_toolbar);
_helpScreen = Application.inst.createInstance("HelpScreenClass");
_helpScreen.mouseEnabled = false;
_menuHelpScreen = Application.inst.createInstance("MenuHelpScreenClass");
_menuHelpScreen.mouseChildren = false;
_devicesScreen = new DevicesScreen();
_bkg.hintCaption.visible = false;
_reactionLogScreen = new ReactionsLogScreen();
_newElementCreated = Application.inst.createInstance("NewElementCreatedClass");
_toolbar.hint.addEventListener(MouseEvent.CLICK, function (e):void{
var reaction:Reaction;
var groupId1:String;
var groupId2:String;
var e = e;
if (Model.inst.allElementsUnlocked){
showIphoneBigAdScreen(true);
} else {
SoundManager.inst.playHint();
hideScreen();
reaction = Model.inst.getHintReaction();
trace(("hint reaction = " + reaction));
Model.inst.hintCount++;
Model.inst.saveGame();
groupId1 = Model.inst.elements[reaction.element1].group;
groupId2 = Model.inst.elements[reaction.element2].group;
_selectedGroupLeft = Model.inst.groups[groupId1];
_selectedGroupRight = Model.inst.groups[groupId2];
Model.inst.markAsRead(_selectedGroupLeft.id);
Model.inst.markAsRead(_selectedGroupRight.id);
switchLayout(new GroupsLayout(_selectedGroupLeft, _selectedGroupRight), function ():void{
_space.addChild(_bkg.hintCaption);
_bkg.hintCaption.visible = true;
tweenBlink(_bkg.hintCaption, 6, 0xFF0000, textColor1, 1.5);
setTimeout(function ():void{
GraphUtils.tweenVisible(_bkg.hintCaption, false, 0.5, true);
}, 4500);
});
_toolbar.startCooldown();
};
});
THIS = this;
_toolbar.hint2.addEventListener(MouseEvent.CLICK, function (e):void{
var element:Element;
var elementClip:ElementClip;
var centerPoint:Point;
var h:*;
var f:*;
var e = e;
if (Model.inst.allElementsUnlocked){
showIphoneBigAdScreen(true);
} else {
SoundManager.inst.playHint();
hideScreen();
element = Model.inst.getHintElement();
if (element){
Model.inst.hintCount++;
_toolbar.startCooldown();
Model.inst.saveGame();
updateToolbar();
elementClip = new ElementClip(element.id);
centerPoint = GraphUtils.centerPoint();
switchLayout(null, null, true);
h = new HintScreen(element);
addChild(h);
GraphUtils.tweenVisible(h, true, 0.5);
THIS.mouseChildren = false;
setTimeout(function ():void{
THIS.addEventListener(MouseEvent.CLICK, (f = function (e):void{
THIS.removeEventListener(MouseEvent.CLICK, f);
enableControls(true);
THIS.mouseChildren = true;
GraphUtils.tweenVisible(h, false, 0.5, true);
switchToRootLayout();
}));
}, 100);
};
};
});
_toolbar.help.addEventListener(MouseEvent.CLICK, function (e):void{
if (hideScreen() != _helpScreen){
showScreen(_helpScreen);
} else {
switchToSelectedGroupsLayout();
};
});
_toolbar.toMenu.addEventListener(MouseEvent.CLICK, function (e):void{
returnToMenu();
});
_toolbar.back.addEventListener(MouseEvent.CLICK, function (e):void{
if (!hideScreen()){
_selectedGroupRight = null;
_selectedGroupLeft = null;
};
switchToSelectedGroupsLayout();
updateToolbar();
});
_toolbar.log.addEventListener(MouseEvent.CLICK, function (e):void{
if (hideScreen() != _reactionLogScreen){
_reactionLogScreen.update();
Model.inst.markReactionLogAsRead();
updateToolbar();
showScreen(_reactionLogScreen);
if (((Document.config.showSmallIphoneIcon) && (((_logCounter++ % 3) == 2)))){
createIphoneAd(_space);
};
} else {
switchToSelectedGroupsLayout();
};
});
_quote = Application.inst.createInstance("QuoteClass");
_quote.text.autoSize = TextFieldAutoSize.LEFT;
_quote.author.autoSize = TextFieldAutoSize.RIGHT;
_space = new Sprite();
addChild(_space);
_space.addEventListener(MouseEvent.CLICK, onMouseClick);
_menu = new MainMenu();
addChild(_menu);
_menu.addEventListener("resetGame", onResetGame);
_menu.addEventListener("sound", function (e:DynamicEvent):void{
});
_menu.playButton.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{
e.stopPropagation();
startGame(true);
if (Document.config.usePlaytomic){
Log.Play();
};
});
_menuHelpScreen.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{
GraphUtils.tweenVisible(_menuHelpScreen, false, 0.5, true);
});
_menu.helpButton.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{
addChild(_menuHelpScreen);
GraphUtils.tweenVisible(_menuHelpScreen, true, 0.5);
});
_menu.devicesButton.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{
addChild(_devicesScreen);
GraphUtils.tweenVisible(_devicesScreen, true, 0.5);
});
_bkg.devicesButton.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{
addChild(_devicesScreen);
GraphUtils.tweenVisible(_devicesScreen, true, 0.5);
});
_mouseController.attach(_space, Application.inst);
_mouseController.addEventListener("startDrag", function (e:DynamicEvent):void{
var elementClip:ElementClip = (e.targetObject as ElementClip);
if (elementClip){
if (_selectedElementClip1){
killElementTween(_selectedElementClip1);
_selectedElementClip1 = null;
};
_dragElementCopy = GraphUtils.copyAndPasteClipAsImage(elementClip, _space);
_dragElementClip = elementClip;
GraphUtils.tweenVisible(_dragElementCopy, true, 0.1);
_dragElementCopy.x = (_mouseController.curPos.x - 32);
_dragElementCopy.y = (_mouseController.curPos.y - 32);
_selectedElementClip1 = elementClip;
tweenSelectedElement(elementClip);
};
});
_mouseController.addEventListener("stopDragging", function (e:DynamicEvent):void{
var i:int;
var elementClip:ElementClip;
var dx:Number;
var dy:Number;
if (_dragElementClip){
GraphUtils.tweenVisible(_dragElementCopy, false, 0.1, true);
if (_selectedElementClip1){
killElementTween(_selectedElementClip1);
_selectedElementClip1 = null;
};
i = 0;
while (i < _space.numChildren) {
elementClip = (_space.getChildAt(i) as ElementClip);
if (elementClip){
dx = Math.abs(((_dragElementCopy.x + 32) - elementClip.x));
dy = Math.abs(((_dragElementCopy.y + 32) - elementClip.y));
if ((((dx <= 30)) && ((dy <= 30)))){
tryReaction(elementClip, _dragElementClip);
break;
};
};
i++;
};
};
_dragElementCopy = null;
_dragElementClip = null;
});
EventManager.inst.addEventListener("cursorMove", function (e:DynamicEvent):void{
if (_dragElementCopy){
_dragElementCopy.x = (e.stageX - 32);
_dragElementCopy.y = (e.stageY - 32);
};
});
_bkg.appStore.addEventListener(MouseEvent.CLICK, function (e):void{
DevicesScreen.openAppStoreLink();
});
_locTable = {};
_locTable["Animal"] = "Beast";
_locTable["Arable"] = "Field";
_locTable["Clothing"] = "Clothes";
_locTable["Livestock"] = "Domestic animal";
_locTable["Manure"] = "Fertilizer";
_locTable["Philosophers stone"] = "Philosophers' stone";
_locTable["Sailing ship"] = "Frigate";
_locTable["Spirit"] = "Alcohol";
_locTable["Team"] = "Chariot";
_locTable["Palm"] = "Palm tree";
addChild(_bkg.appStoreTooltip);
addChild(_bkg.devicesTooltip);
Utils.registerTooltip(_bkg.devicesButton, _bkg.devicesTooltip);
Utils.registerTooltip(_bkg.appStore, _bkg.appStoreTooltip);
_bkg.appStore.visible = Document.config.showAppStoreBadge;
toolbar.soundOffButton.addEventListener(MouseEvent.CLICK, function (e):void{
toolbar.setSoundOn(true);
menu.setSoundOn(true);
});
toolbar.soundOnButton.addEventListener(MouseEvent.CLICK, function (e):void{
toolbar.setSoundOn(false);
menu.setSoundOn(false);
});
_bkg.score.buttonMode = true;
_bkg.score.mouseChildren = false;
_bkg.score.addEventListener(MouseEvent.CLICK, function (e):void{
MainMenu.onHighscores();
});
if (Document.showSubmitScoreButton){
_bkg.submitScoreButton.visible = true;
_bkg.submitScoreButton.addEventListener(MouseEvent.CLICK, function (e):void{
MainMenu.onHighscores();
});
} else {
_bkg.submitScoreButton.visible = false;
};
if (Document.IS_NEWGROUNDS){
trace("adding MedalPopup");
p = new MedalPopup();
p.x = 224;
p.y = 193;
Application.inst.addChild(p);
};
if (Document.WALKTHROUGH){
_bkg.toMenu.visible = true;
_bkg.elementsCounter.visible = false;
_bkg.groupsCounter.visible = false;
_bkg.score.visible = false;
_bkg.submitScoreButton.visible = false;
toolbar.visible = false;
menu.menu.walkthrough_1_2.addEventListener(MouseEvent.CLICK, function (e):void{
startWalkthroug(1);
});
menu.menu.walkthrough_3.addEventListener(MouseEvent.CLICK, function (e):void{
startWalkthroug(3);
});
menu.menu.walkthrough_Play.addEventListener(MouseEvent.CLICK, function (e):void{
if (Document.IS_ARMORGAMES){
Platform.wrapper.navigateToURL("http://armorgames.com/play/11411/doodle-god-2");
} else {
Platform.wrapper.navigateToURL("http://www.kongregate.com/games/Badim/doodle-god-2/?gamereferral=doodle_god_2_walkthrough");
};
});
_bkg.toMenu.addEventListener(MouseEvent.CLICK, function (e):void{
returnToMenu();
});
} else {
_bkg.toMenu.visible = false;
};
}
public function get menu():MainMenu{
return (_menu);
}
public function get toolbar():Toolbar{
return (_toolbar);
}
public function get reactionLogScreen():ReactionsLogScreen{
return (_reactionLogScreen);
}
public function get bkg(){
return (_bkg);
}
private function showIntro(i:int, callback:Function):void{
var f:*;
var i = i;
var callback = callback;
if (i == 1){
_intro = new Intro();
} else {
if (i == 2){
_intro = new Intro2();
} else {
if (i == 3){
_intro = new Intro3();
};
};
};
addChild(_intro);
var _local4 = function (e):void{
_intro.removeEventListener("introShown", f);
GraphUtils.tweenVisible(_intro, false, 0.5, true);
_intro = null;
callback();
};
f = _local4;
_intro.addEventListener("introShown", _local4);
}
private function startWalkthroug(ep:int):void{
var rList:Array;
var r:Reaction;
var afterAd:*;
var ep = ep;
afterAd = function ():void{
Utils.removeChildSafe(_bkg.bkg);
addChildAt(_bkg, 0);
_bkg.addChildAt(_bkg.bkg, 0);
updateUI();
setTimeout(function ():void{
_reactionLogScreen.update();
showScreen(_reactionLogScreen);
createIphoneAd(_space);
}, 100);
};
if (ep == 1){
rList = Model.inst.reactions1.concat(Model.inst.reactions2);
};
if (ep == 3){
rList = Model.inst.reactions3;
};
Model.inst.reactionLog = [];
for each (r in rList) {
Model.inst.reactionLog.push({reaction:r, isUnread:true});
};
GraphUtils.tweenVisible(_menu, false, 0.5, true);
showIphoneBigAdScreen(false, afterAd);
}
private function startGame(showAd:Boolean):void{
var afterAd:*;
var afterSelectEpisode:*;
var showAd = showAd;
afterAd = function ():void{
if (Model.inst.episode == 0){
showSelectEpisode(afterSelectEpisode);
} else {
afterSelectEpisode();
};
};
afterSelectEpisode = function ():void{
if ((((Model.inst.episode == 1)) && (!(Model.inst.intro1Shown)))){
showIntro(1, function ():void{
startGame(false);
});
} else {
if ((((Model.inst.episode == 2)) && (!(Model.inst.intro2Shown)))){
showIntro(2, function ():void{
createVoidElement(function ():void{
startGame(false);
});
});
} else {
Utils.removeChildSafe(_bkg.bkg);
addChildAt(_bkg, 0);
_bkg.addChildAt(_bkg.bkg, 0);
updateUI();
switchToRootLayout();
};
};
};
GraphUtils.tweenVisible(_menu, false, 0.5, true);
if (((Document.config.showBigIphoneAd) && (showAd))){
showIphoneBigAdScreen(false, afterAd);
} else {
Model.inst.firstLaunch = false;
afterAd();
};
}
private function showSelectEpisode(afterSelectEpisode:Function):void{
var episodeScreen:*;
var afterSelectEpisode = afterSelectEpisode;
episodeScreen = Application.inst.createInstance("EpisodeScreenClass");
addChild(episodeScreen);
GraphUtils.tweenVisible(episodeScreen, true, 0.5, true);
episodeScreen.episode1.buttonMode = true;
episodeScreen.episode2.buttonMode = true;
episodeScreen.episode1.addEventListener(MouseEvent.CLICK, function (e):void{
GraphUtils.tweenVisible(episodeScreen, false, 0.5, true);
Model.inst.episode = 1;
Model.inst.initReactionsByEpisode();
Model.inst.initUnlockedElementsByEpisode();
Model.inst.saveGame();
afterSelectEpisode();
});
episodeScreen.episode2.addEventListener(MouseEvent.CLICK, function (e):void{
GraphUtils.tweenVisible(episodeScreen, false, 0.5, true);
Model.inst.episode = 2;
Model.inst.initReactionsByEpisode();
Model.inst.initUnlockedElementsByEpisode();
Model.inst.saveGame();
afterSelectEpisode();
});
}
private function switchToSelectedGroupsLayout(callback:Function=null):void{
switchLayout(new GroupsLayout(_selectedGroupLeft, _selectedGroupRight), callback);
updateToolbar();
}
private function switchToRootLayout():void{
_selectedGroupLeft = null;
_selectedGroupRight = null;
switchToSelectedGroupsLayout();
}
private function returnToMenu():void{
hideScreen();
switchLayout(null);
addChild(_menu);
GraphUtils.tweenVisible(_menu, true, 0.3);
_menu.startAnimations();
_menu.updateScore();
}
private function tweenBlink(clip, n:Number, color1:uint, color2:uint, duration:Number, onComplete:Function=null):void{
var timeline:TimelineMax = new TimelineMax({onComplete:onComplete});
var i:int;
while (i < n) {
timeline.append(TweenMax.to(clip, ((duration / n) / 2), {tint:0xFF0000}));
timeline.append(TweenMax.to(clip, ((duration / n) / 2), {tint:textColor1}));
i++;
};
}
private function showScreen(screen, onComplete:Function=null, leaveDisabled:Boolean=false, center:Boolean=true):void{
tweenScreen(screen, true, onComplete, leaveDisabled, center);
_currentScreen = screen;
_toolbar.showMenuButton(false);
}
private function hideScreen(){
if (_currentScreen){
tweenScreen(_currentScreen, false);
};
var prevScreen:* = _currentScreen;
_currentScreen = null;
updateUI();
return (prevScreen);
}
private function tweenScreen(screen:DisplayObject, show:Boolean, onComplete:Function=null, leaveDisable:Boolean=false, center:Boolean=true):void{
var targetX:Number;
var screen = screen;
var show = show;
var onComplete = onComplete;
var leaveDisable = leaveDisable;
var center = center;
if (show){
switchLayout(null, null, leaveDisable);
addChild(screen);
screen.x = _bkg.width;
targetX = (center) ? ((_bkg.width / 2) - (screen.width / 2)) : 0;
TweenLite.to(screen, 1, {x:targetX, ease:customBackEaseOut, onComplete:onComplete});
} else {
TweenLite.to(screen, 1, {x:_bkg.width, ease:customBackEaseOut, onComplete:function ():void{
Utils.removeChildSafe(screen);
if (onComplete != null){
onComplete();
};
}});
};
}
private function onResetGame(e:Event=null):void{
Model.inst.resetGame();
startGame(true);
}
private function onMouseClick(event:MouseEvent):void{
if ((event.target is LayoutClip)){
doClick((event.target as LayoutClip));
};
}
private function doClick(clip:LayoutClip):void{
var groupClip:GroupClip;
var centerX:Number;
var elementClip:ElementClip;
if ((clip is GroupClip)){
groupClip = GroupClip(clip);
if (!groupClip.layout){
if (_selectedGroupRight){
_selectedGroupLeft = groupClip.group;
} else {
if (_selectedGroupLeft){
_selectedGroupRight = groupClip.group;
} else {
centerX = GraphUtils.centerX(groupClip);
if (centerX > (Platform.wrapper.normalSize.width / 2)){
_selectedGroupRight = groupClip.group;
} else {
_selectedGroupLeft = groupClip.group;
};
};
};
Model.inst.markAsRead(groupClip.group.id);
} else {
if (groupClip.layout == LayoutClip.LEFT){
_selectedGroupLeft = null;
} else {
if (groupClip.layout == LayoutClip.RIGHT){
_selectedGroupRight = null;
};
};
};
switchToSelectedGroupsLayout();
updateToolbar();
} else {
if ((clip is ElementClip)){
SoundManager.inst.playElementClick();
elementClip = ElementClip(clip);
if (_selectedElementClip1){
if (elementClip == _selectedElementClip1){
killElementTween(_selectedElementClip1);
_selectedElementClip1 = null;
} else {
tryReaction(_selectedElementClip1, elementClip);
};
} else {
_selectedElementClip1 = elementClip;
tweenSelectedElement(elementClip);
};
_tutorial.update(this);
};
};
}
private function createVoidElement(callback):void{
var callback = callback;
if (Model.inst.unlockedElementIds.indexOf("Void") == -1){
Model.inst.unlockedElementIds.push("Void");
};
Model.inst.elements["Void"].isUnread = true;
Model.inst.elements["Void"].isNew = true;
var p:Point = GraphUtils.centerPoint();
var e:ElementClip = new ElementClip("Void");
e.x = p.x;
e.y = p.y;
showReactionResult([e], null, p, 1, [Model.inst.elements["Void"]], this, 1, 0, function ():void{
callback();
}, false);
}
private function createCommandmentsElement(callback):void{
var callback = callback;
if (Model.inst.unlockedElementIds.indexOf("Commandments") == -1){
Model.inst.unlockedElementIds.push("Commandments");
};
Model.inst.elements["Commandments"].isUnread = true;
Model.inst.elements["Commandments"].isNew = true;
var p:Point = GraphUtils.centerPoint();
var e:ElementClip = new ElementClip("Commandments");
e.x = p.x;
e.y = p.y;
showReactionResult([e], null, p, 1, [Model.inst.elements["Commandments"]], this, 1, 0, function ():void{
callback();
}, false);
}
private function showReactionResult(newElementClipArray:Array, reaction:Reaction, newElementPoint:Point, newCount:int, result:Array, THIS, newGroups:int, oldGroupsCount:int, onCompleteCallback:Function, autoClick:Boolean, customQuote:Quote=null):void{
var newElementClipArray = newElementClipArray;
var reaction = reaction;
var newElementPoint = newElementPoint;
var newCount = newCount;
var result = result;
var THIS = THIS;
var newGroups = newGroups;
var oldGroupsCount = oldGroupsCount;
var onCompleteCallback = onCompleteCallback;
var autoClick = autoClick;
var customQuote = customQuote;
THIS = this;
switchLayout(new ResultLayout(newElementClipArray), function ():void{
var quoteTop:Number;
var halos:Array;
var quote:Quote;
var f:*;
var clip:LayoutClip;
var element:Element;
var halo:*;
var textX:Number;
var authorX:Number;
var timeline2:TimelineMax;
var timelineAmin:TimelineMax;
updateUI();
var clickToContinue:* = Application.inst.createInstance("ClickToContinueClass");
clickToContinue.scaleX = 0.6;
clickToContinue.scaleY = 0.6;
clickToContinue.x = GraphUtils.centerPoint().x;
clickToContinue.y = (Platform.wrapper.spaceNormaSize.bottom + 6);
var quoteBottom:Number = (clickToContinue.y - clickToContinue.height);
halos = [];
var facebookShare:SimpleButton;
var twitterShare:SimpleButton;
var moreGames:* = Application.inst.createInstance("MoreGamesClass");
facebookShare = (Application.inst.createInstance("FacebookShareClass") as SimpleButton);
_space.addChild(facebookShare);
facebookShare.addEventListener(MouseEvent.CLICK, function (e):void{
postReactionToFacebook(reaction);
});
twitterShare = (Application.inst.createInstance("TweetButtonClass2") as SimpleButton);
_space.addChild(twitterShare);
twitterShare.addEventListener(MouseEvent.CLICK, function (e):void{
postReactionToTwitter(reaction);
});
if (((Document.IS_KONGREGATE) && (((Model.inst.unlockedElementIds.length % 2) == 0)))){
_space.addChild(moreGames);
moreGames.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.kongreagateLogoLink);
});
moreGames.x = 80;
moreGames.y = 380;
};
facebookShare.visible = Document.config.showFacebookButton;
twitterShare.visible = Document.config.showTwitterButton;
facebookShare.x = (newElementPoint.x + 160);
facebookShare.y = (newElementPoint.y - 10);
twitterShare.x = facebookShare.x;
twitterShare.y = (facebookShare.y + 25);
var smallIphoneIcon:* = null;
if (((((Document.config.showSmallIphoneIcon) && ((newCount > 0)))) && (((Model.inst.unlockedElementIds.length % 10) == 0)))){
smallIphoneIcon = createIphoneAd(_space);
};
if (newCount > 0){
SoundManager.inst.playNewElement();
_space.addChild(_newElementCreated);
GraphUtils.setText(_newElementCreated.text, ((newCount > 1)) ? "(new elements created)" : "(new element created)");
_newElementCreated.x = newElementPoint.x;
_newElementCreated.y = (newElementPoint.y + 30);
for each (clip in ResultLayout(_currentLayout).getObjects()) {
if ((((clip is ElementClip)) && (ElementClip(clip).element.isNew))){
halo = Application.inst.createInstance("NewElementHaloClass");
_space.addChildAt(halo, 0);
halo.x = clip.x;
halo.y = clip.y;
halo.alpha = 0;
halos.push(halo);
new TimelineMax().appendMultiple([TweenMax.to(halo, 1, {alpha:1}), TweenMax.to(halo, 10, {rotation:360, repeat:-1, ease:Linear.easeNone})]);
};
};
for each (element in result) {
element.isNew = false;
};
quoteTop = (_newElementCreated.y + _newElementCreated.height);
} else {
SoundManager.inst.playOldElement();
quoteTop = (newElementPoint.y + 40);
};
if (customQuote){
quote = customQuote;
} else {
quote = Model.inst.getRandomQuote(result[0].id);
};
if (quote){
_space.addChild(_quote.text);
_space.addChild(_quote.author);
_quote.text.width = 0;
_quote.text.autoSize = TextFieldAutoSize.LEFT;
_quote.text.wordWrap = false;
GraphUtils.setText(_quote.text, quote.text);
GraphUtils.setText(_quote.author, quote.author);
trace(_quote.text.text);
trace(_quote.text.width);
if (_quote.text.width > 360){
_quote.text.width = 360;
_quote.text.autoSize = TextFieldAutoSize.LEFT;
_quote.text.wordWrap = true;
GraphUtils.setText(_quote.text, quote.text);
trace(_quote.text.width);
};
textX = (GraphUtils.centerPoint().x - (_quote.text.width / 2));
authorX = ((textX + _quote.text.width) - _quote.author.width);
_quote.text.x = -(_quote.text.width);
_quote.author.x = Platform.wrapper.normalSize.width;
_quote.text.y = (((quoteTop + quoteBottom) / 2) - ((_quote.text.height + _quote.author.height) / 2));
_quote.author.y = (_quote.text.y + _quote.text.height);
timeline2 = new TimelineMax();
timelineAmin = new TimelineMax({repeat:-1, yoyo:true});
timeline2.appendMultiple([TweenMax.to(_quote.text, 0.5, {x:(textX + 10), ease:Quad.easeInOut}), TweenMax.to(_quote.author, 0.5, {x:authorX, ease:Quad.easeInOut})]);
timelineAmin.appendMultiple([TweenMax.to(_quote.text, 10, {x:(textX - 15), ease:Sine.easeInOut}), TweenMax.to(_quote.author, 10, {x:(authorX + 25), ease:Sine.easeInOut})]);
timeline2.append(timelineAmin);
};
_space.addChild(clickToContinue);
var _local2 = function (e=null):void{
var clipsCollapse:*;
var halo:*;
var clip:*;
var timelineCollapse:*;
var e = e;
if (timeline2){
timeline2.kill();
};
var tweensCollapse:* = [];
clipsCollapse = [];
for each (halo in halos) {
Utils.removeChildSafe(halo);
};
for each (clip in ResultLayout(_currentLayout).getObjects()) {
if ((clip is ElementClip)){
tweensCollapse.push(TweenLite.to(clip, 0.5, {y:(clip.y - 100), ease:Linear.easeNone}));
clipsCollapse.push(clip);
};
};
timelineCollapse = new TimelineMax({onComplete:function ():void{
var clip:*;
for each (clip in clipsCollapse) {
Utils.removeChildSafe(clip);
};
if (newCount > 0){
Model.inst.addScore(newCount, newGroups);
};
if (Model.inst.allElementsUnlocked){
showIphoneBigAdScreen(true, function ():void{
MainMenu.onHighscores();
});
_toolbar.showHintButton(true);
updateToolbar();
} else {
if ((((Model.inst.episode == 1)) && ((Model.inst.unlockedElementIds.length >= 100)))){
Model.inst.episode = 2;
Model.inst.initReactionsByEpisode();
Model.inst.saveGame();
updateTop();
showIntro(2, function ():void{
createVoidElement(function ():void{
switchToSelectedGroupsLayout();
});
});
} else {
if ((((Model.inst.episode == 2)) && ((Model.inst.unlockedElementIds.length >= 140)))){
Model.inst.episode = 3;
Model.inst.initReactionsByEpisode();
Model.inst.saveGame();
updateTop();
showIntro(3, function ():void{
createCommandmentsElement(function ():void{
switchToSelectedGroupsLayout();
});
});
} else {
switchToSelectedGroupsLayout();
};
};
};
if (newCount > 0){
updateCounter2(_bkg.score, Model.inst.score);
tweenBlink(_bkg.elementsCounter.counter, 15, 0xFF0000, textColor1, 1.5);
tweenBlink(_bkg.score.value, 15, 0xFF0000, textColor1, 1.5);
};
if (newGroups > 0){
tweenBlink(_bkg.groupsCounter.counter, 15, 0xFF0000, textColor1, 1.5);
};
if (onCompleteCallback != null){
onCompleteCallback();
};
}});
timelineCollapse.appendMultiple(tweensCollapse);
ArmorGames.checkAll();
};
f = _local2;
Utils.addEventListener(THIS, null, [facebookShare, smallIphoneIcon, twitterShare, moreGames], MouseEvent.CLICK, _local2);
trace("autoclick = ", autoClick);
if (autoClick){
setTimeout(f, 1500);
};
}, true);
}
private function tryReaction(element1:ElementClip, element2:ElementClip, onCompleteCallback:Function=null, autoClick:Boolean=false):void{
var oldGroupsCount:int;
var THIS:*;
var reaction:Reaction;
var result:Array;
var element1 = element1;
var element2 = element2;
var onCompleteCallback = onCompleteCallback;
var autoClick = autoClick;
oldGroupsCount = Model.inst.getUnlockedGroups().length;
THIS = this;
if (((element1) && (element2))){
reaction = Model.inst.tryReaction(element1.element, element2.element);
result = (reaction) ? reaction.getResult() : null;
killElementTween(element1);
killElementTween(element2);
if (!result){
Model.inst.reactionErrorCount++;
Model.inst.saveGame();
SoundManager.inst.playReactionFailedClick();
tweenFailedElement(element1);
tweenFailedElement(element2);
_selectedElementClip1 = null;
} else {
_selectedGroupLeft = null;
_selectedGroupRight = null;
enableControls(false);
SoundManager.inst.playFlight();
switchLayout(new ReactionLayout(element1, element2, function (newElementPoint:Point):Array{
var newElementClipArray:*;
var newCount:*;
var element:*;
var newGroups:*;
var newElementClip:*;
var newElementPoint = newElementPoint;
newElementClipArray = [];
var width:* = 0;
newCount = 0;
for each (element in result) {
newElementClip = new ElementClip(element.id);
newElementClipArray.push(newElementClip);
newElementClip.mouseEnabled = false;
newElementClip.x = newElementPoint.x;
newElementClip.y = newElementPoint.y;
width = (width + newElementClip.width);
_space.addChild(newElementClip);
if (element.isNew){
newCount = (newCount + 1);
};
};
newGroups = (Model.inst.getUnlockedGroups().length - oldGroupsCount);
if (newCount == 0){
Model.inst.reactionErrorCount++;
Model.inst.saveGame();
};
var i:* = 0;
while (i < newElementClipArray.length) {
newElementClip.freeze = false;
newElementClip = newElementClipArray[i];
newElementClip.x = (((newElementPoint.x - (width / 2)) + (i * newElementClip.width)) + (newElementClip.width / 2));
i = (i + 1);
};
SoundManager.inst.playFlash();
GraphUtils.showFlash(THIS, function ():void{
showReactionResult(newElementClipArray, reaction, newElementPoint, newCount, result, THIS, newGroups, oldGroupsCount, onCompleteCallback, autoClick);
});
return (newElementClipArray);
}), null, true);
};
};
}
private function createIphoneAd(container:DisplayObjectContainer):void{
var container = container;
var iphoneAd:* = Application.inst.createInstance("IphoneSmallClass");
iphoneAd.scaleX = 0.99;
iphoneAd.scaleY = 0.99;
iphoneAd.addEventListener(MouseEvent.CLICK, function (e):void{
showIphoneBigAdScreen();
});
iphoneAd.buttonMode = true;
container.addChild(iphoneAd);
var fromX:Number = 0;
iphoneAd.x = ((LayoutManager.inst.displayRect.width - iphoneAd.width) + 5);
fromX = (LayoutManager.inst.displayRect.width + iphoneAd.width);
iphoneAd.y = (Platform.wrapper.spaceNormaSize.bottom - 130);
var timeline:TimelineMax = new TimelineMax();
timeline.append(GraphUtils.tweenFloating(iphoneAd, 3));
timeline.insert(TweenMax.from(iphoneAd, 0.5, {delay:1, x:fromX}), 0);
Utils.registerTooltip(iphoneAd, iphoneAd.tooltip);
}
private function handleIphoneIpadClick(youWin:Boolean):void{
if (youWin){
if (Document.config.bigAdType == "ipad"){
if (Model.inst.iphoneBigAdType == "god"){
Platform.wrapper.navigateToURL("http://ls.gd/4004");
} else {
Platform.wrapper.navigateToURL("http://ls.gd/4002");
};
} else {
if (Model.inst.iphoneBigAdType == "god"){
DevicesScreen.openAppStoreLink();
} else {
MainMenu.onAppStore("dd_flash_finalscreen", ("doodle-" + Model.inst.iphoneBigAdType));
};
};
} else {
if (Document.config.bigAdType == "ipad"){
if (Model.inst.iphoneBigAdType == "god"){
Platform.wrapper.navigateToURL("http://ls.gd/4003");
} else {
Platform.wrapper.navigateToURL("http://ls.gd/4001");
};
} else {
if (Model.inst.iphoneBigAdType == "god"){
DevicesScreen.openAppStoreLink();
} else {
MainMenu.onAppStore("dd_flash_bigiphonead", ("doodle-" + Model.inst.iphoneBigAdType));
};
};
};
}
public function showIphoneBigAdScreen(youWin:Boolean=false, callback:Function=null):void{
var THIS:IEventDispatcher;
var finalScreen:*;
var f:Function;
var youWin = youWin;
var callback = callback;
var hideThisScreen:* = function ():void{
if (f != null){
THIS.removeEventListener(MouseEvent.CLICK, f);
};
hideScreen();
GraphUtils.tweenVisible(finalScreen.bkg, false, 0.5, true);
};
hideScreen();
THIS = this;
if (Model.inst.iphoneBigAdType == "god"){
finalScreen = Application.inst.createInstance("IphoneBigAdGodClass");
} else {
finalScreen = Application.inst.createInstance("IphoneBigAdDevilClass");
};
if (finalScreen.moreGames){
finalScreen.moreGames.visible = false;
};
if (finalScreen.kongregateLogo){
finalScreen.kongregateLogo.visible = false;
};
if (((Document.IS_KONGREGATE) && (youWin))){
finalScreen.moreGames.visible = true;
finalScreen.kongregateLogo.visible = true;
finalScreen.moreGames.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.kongreagateLogoLink);
});
finalScreen.kongregateLogo.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.kongreagateLogoLink);
});
};
finalScreen.rect1.buttonMode = true;
finalScreen.continueButton.buttonMode = true;
finalScreen.continueButton.alpha = 0.6;
if (youWin){
finalScreen.caption.text = "Congratulations! Your game is complete!";
} else {
if (Model.inst.iphoneBigAdType == "god"){
if (Document.config.bigAdType == "ipad"){
finalScreen.caption.text = "Download Doodle God on your iPad";
} else {
finalScreen.caption.text = "Download Doodle God on your iPhone / iPod";
};
} else {
if (Document.config.bigAdType == "ipad"){
finalScreen.caption.text = "Download Doodle Devil on your iPad";
} else {
finalScreen.caption.text = "Download Doodle Devil on your iPhone / iPod";
};
};
};
finalScreen.removeChild(finalScreen.bkg);
addChild(finalScreen.bkg);
GraphUtils.tweenVisible(finalScreen.bkg, true, 0.5);
Utils.bringToTop(finalScreen.rect1);
Utils.bringToTop(finalScreen.youtube);
if (Model.inst.appStoreNavigated){
finalScreen.checkoutButton.visible = true;
SimpleButton(finalScreen.checkoutButton).addEventListener(MouseEvent.CLICK, function (e):void{
hideThisScreen();
if (Model.inst.iphoneBigAdType == "god"){
Model.inst.iphoneBigAdType = "devil";
} else {
Model.inst.iphoneBigAdType = "god";
};
Model.inst.saveGame();
showIphoneBigAdScreen(youWin, callback);
});
} else {
finalScreen.checkoutButton.visible = false;
};
if (Model.inst.iphoneBigAdType == "god"){
if (Document.config.bigAdType == "ipad"){
finalScreen.text1.htmlText = "Did you know that <font color='#DC2903'>Doodle God</font> for your iPad contains much MORE HOURS of gameplay than current Flash version!";
} else {
finalScreen.text1.htmlText = "Did you know that <font color='#DC2903'>Doodle God</font> for your iPhone/iPod contains much MORE HOURS of gameplay than current Flash version!";
};
finalScreen.text2.htmlText = (((("* <font color='#931C02'>300+</font> elements and reactions\n" + "* <font color='#931C02'>4</font> episodes including World of Magic\n") + "* Awesome Quest mode (<font color='#931C02'>3</font> quests)\n") + "* <font color='#931C02'>2</font> arcade minigames, unlimited fun\n") + "* Advanced Hint system, improved Gameplay!\n");
finalScreen.text3.htmlText = "";
} else {
if (Document.config.bigAdType == "ipad"){
finalScreen.text1.htmlText = "NOTE, that iPad game has maximum priority in getting updates ! ";
} else {
finalScreen.text1.htmlText = "NOTE, that iPhone game has maximum priority in getting updates ! ";
};
};
finalScreen.rect1.addEventListener(MouseEvent.CLICK, function (e):void{
handleIphoneIpadClick(youWin);
});
finalScreen.youtube.addEventListener(MouseEvent.CLICK, function (e):void{
if (Model.inst.iphoneBigAdType == "god"){
Platform.wrapper.navigateToURL("http://ls.gd/4092");
} else {
Platform.wrapper.navigateToURL("http://www.youtube.com/watch?v=uoMNHjrpRUU");
};
});
createFinalScreenAnimation(finalScreen, youWin);
showScreen(finalScreen, function ():void{
f = Utils.addEventListener(THIS, null, [finalScreen.checkoutButton], MouseEvent.CLICK, function (e):void{
hideThisScreen();
if (callback != null){
callback();
};
if (!Document.WALKTHROUGH){
switchToRootLayout();
} else {
showScreen(_reactionLogScreen);
createIphoneAd(_space);
};
});
}, true, false);
}
private function createFinalScreenAnimation(finalScreen, youWin:Boolean):void{
var iphone:*;
var screenShots:Array;
var currentScreenShot:MovieClip;
var index:int;
var screenShot:*;
var timeline:TimelineMax;
var d:Number;
var d2:Number;
var finalScreen = finalScreen;
var youWin = youWin;
finalScreen.iphone.visible = false;
finalScreen.ipad.visible = false;
if (Document.config.bigAdType == "ipad"){
iphone = finalScreen.ipad;
finalScreen.ipad.visible = true;
} else {
iphone = finalScreen.iphone;
finalScreen.iphone.visible = true;
screenShots = [finalScreen.iphone.screen1, finalScreen.iphone.screen2, finalScreen.iphone.screen3, finalScreen.iphone.screen4, finalScreen.iphone.screen5];
currentScreenShot = null;
index = 0;
for each (screenShot in screenShots) {
screenShot.visible = false;
screenShot.alpha = 0;
};
screenShots[0].visible = true;
screenShots[0].alpha = 1;
timeline = new TimelineMax({repeat:-1});
d = 1;
d2 = 4;
timeline.appendMultiple([new TweenMax(screenShots[0], d, {delay:d2, autoAlpha:0}), new TweenMax(screenShots[1], d, {delay:d2, autoAlpha:1})]);
timeline.appendMultiple([new TweenMax(screenShots[1], d, {delay:d2, autoAlpha:0}), new TweenMax(screenShots[2], d, {delay:d2, autoAlpha:1})]);
timeline.appendMultiple([new TweenMax(screenShots[2], d, {delay:d2, autoAlpha:0}), new TweenMax(screenShots[3], d, {delay:d2, autoAlpha:1})]);
timeline.appendMultiple([new TweenMax(screenShots[3], d, {delay:d2, autoAlpha:0}), new TweenMax(screenShots[4], d, {delay:d2, autoAlpha:1})]);
timeline.appendMultiple([new TweenMax(screenShots[4], d, {delay:d2, autoAlpha:0}), new TweenMax(screenShots[0], d, {delay:d2, autoAlpha:1})]);
};
iphone.scaleX = 0.99;
iphone.scaleY = 0.99;
iphone.buttonMode = true;
iphone.addEventListener(MouseEvent.CLICK, function (e):void{
handleIphoneIpadClick(youWin);
});
TutorialController.tweenHorizontal(finalScreen.checkItOut, finalScreen.checkItOut.x, finalScreen.checkItOut.y, -6, 1.2);
TweenMax.from(iphone, 0.5, {x:((LayoutManager.inst.displayRect.width + iphone.width) + 100), onComplete:function ():void{
GraphUtils.tweenFloatingH(iphone);
}});
finalScreen.youtube.visible = false;
setTimeout(function ():void{
finalScreen.youtube.visible = true;
TweenMax.from(finalScreen.youtube, 1, {x:(-(finalScreen.youtube.width) * 2), ease:customBackEaseOut});
}, 700);
finalScreen.checkoutButton.visible = false;
if (Model.inst.appStoreNavigated){
setTimeout(function ():void{
finalScreen.checkoutButton.visible = true;
TweenMax.from(finalScreen.checkoutButton, 1, {x:(Platform.wrapper.normalSize.width + (finalScreen.checkoutButton.width * 2)), ease:customBackEaseOut});
}, 1500);
};
}
private function tweenFailedElement(elementClip:ElementClip):void{
var elementClip = elementClip;
killElementTween(elementClip);
elementClip.storePos();
var shift:Number = 4;
elementClip.x = (elementClip.x - shift);
TweenMax.to(elementClip, 0.055, {yoyo:true, repeat:7, x:(elementClip.x + (shift * 2)), ease:Sine.easeInOut, onComplete:function ():void{
elementClip.restorePos();
}});
}
private function killElementTween(elementClip:ElementClip):void{
TweenLite.killTweensOf(elementClip);
elementClip.restorePos();
}
private function tweenSelectedElement(elementClip:ElementClip):void{
var elementClip = elementClip;
killElementTween(elementClip);
elementClip.storePos();
var angle:Number = 6;
elementClip.rotation = -(angle);
TweenMax.to(elementClip, 0.055, {yoyo:true, repeat:-1, rotation:angle, onComplete:function ():void{
elementClip.restorePos();
}});
}
public function get currentLayout():Layout{
return (_currentLayout);
}
public function switchLayout(newLayout:Layout, onComplete:Function=null, leaveDisabled:Boolean=false):void{
var newObj:LayoutClip;
var curObj:LayoutClip;
var tweens:Array;
var THIS:Main;
var child:*;
var closestObj:LayoutClip;
var minDist:Number;
var obj:LayoutClip;
var dist:Number;
var tween:TweenLite;
var newLayout = newLayout;
var onComplete = onComplete;
var leaveDisabled = leaveDisabled;
if ((((newLayout is GroupsLayout)) || ((_currentLayout is GroupsLayout)))){
SoundManager.inst.playMove();
};
enableControls(false);
_currentLayoutName = name;
_selectedElementClip1 = null;
var currentObjects:Array = [];
var newObjects:Array = [];
if (_currentLayout){
currentObjects = _currentLayout.getObjects();
};
if (newLayout){
newLayout.update(_currentLayout);
newObjects = newLayout.getObjects();
};
var type = "";
var otherObjects:Array = [];
var i:int;
while (i < _space.numChildren) {
child = _space.getChildAt(i);
if (currentObjects.indexOf(child) < 0){
otherObjects.push(child);
};
i = (i + 1);
};
for each (newObj in newObjects) {
newObj.tweenDirection = LayoutClip.APPEAR;
newObj.curObjs = [];
};
for each (curObj in currentObjects) {
curObj.tweenDirection = LayoutClip.DISAPPEAR;
};
for each (newObj in newObjects) {
for each (curObj in currentObjects) {
if (newObj.id == curObj.id){
newObj.tweenDirection = LayoutClip.KEEP;
newObj.curObjs.push(curObj);
};
};
};
for each (newObj in newObjects) {
if (newObj.curObjs.length > 0){
minDist = Number.MAX_VALUE;
for each (obj in newObj.curObjs) {
dist = Math.sqrt((Math.pow((obj.x - newObj.x), 2) + Math.pow((obj.y - newObj.y), 2)));
if (dist < minDist){
closestObj = obj;
minDist = dist;
};
};
newObj.curObjs = [closestObj];
closestObj.tweenDirection = LayoutClip.KEEP;
};
};
_tutorial.hideAll();
for each (curObj in currentObjects) {
if (curObj.tweenDirection != LayoutClip.KEEP){
doTween(curObj);
};
};
tweens = [];
for each (newObj in newObjects) {
tween = doTween(newObj);
if (tween){
tweens.push(tween);
};
};
THIS = this;
if (_currenLayoutTween){
_currenLayoutTween.kill();
};
if (!leaveDisabled){
setTimeout(function ():void{
enableControls(true);
}, ((SWITCH_LAYOUT_DURATION * 1000) - 300));
};
_currenLayoutTween = new TimelineMax({onComplete:function ():void{
if (onComplete != null){
onComplete();
};
_tutorial.update(THIS);
}});
_currenLayoutTween.appendMultiple(tweens);
var temp:Sprite = new Sprite();
_currenLayoutTween.append(TweenLite.to(temp, 0.1, {}));
_currentLayout = newLayout;
for each (child in otherObjects) {
GraphUtils.tweenVisible(child, false, (SWITCH_LAYOUT_DURATION / 2), true);
};
}
private function enableControls(enabled:Boolean):void{
_toolbar.mouseEnabled = enabled;
_toolbar.mouseChildren = enabled;
}
public function get elementsCounter(){
return (_bkg.elementsCounter);
}
public function get selectedGroupRight():Group{
return (_selectedGroupRight);
}
public function get selectedGroupLeft():Group{
return (_selectedGroupLeft);
}
public function getGroupClip(groupId:String):GroupClip{
var groupClip:GroupClip;
var i:int;
while (i < _space.numChildren) {
groupClip = (_space.getChildAt(i) as GroupClip);
if (((groupClip) && ((groupClip.group.id == groupId)))){
return (groupClip);
};
i++;
};
return (null);
}
public function getElementClip(elementId:String):ElementClip{
var elementClip:ElementClip;
var i:int;
while (i < _space.numChildren) {
elementClip = (_space.getChildAt(i) as ElementClip);
if (((elementClip) && ((elementClip.element.id == elementId)))){
return (elementClip);
};
i++;
};
return (null);
}
public function get selectedElementClip():ElementClip{
return (_selectedElementClip1);
}
public function get space():Sprite{
return (_space);
}
private function doTween(obj:LayoutClip):TweenLite{
var obj = obj;
var tween:TweenLite;
var duration:Number = SWITCH_LAYOUT_DURATION;
var ease:* = customBackEaseOut;
if (!obj.freeze){
switch (obj.tweenDirection){
case LayoutClip.APPEAR:
_space.addChild(obj);
tween = TweenLite.to(obj, duration, {x:obj.x, ease:ease});
if (GraphUtils.centerX(obj) < (Platform.wrapper.normalSize.width / 2)){
obj.x = -(obj.width);
} else {
obj.x = (Platform.wrapper.normalSize.width + obj.width);
};
break;
case LayoutClip.DISAPPEAR:
if (GraphUtils.centerX(obj) < (Platform.wrapper.normalSize.width / 2)){
tween = TweenLite.to(obj, duration, {x:-(obj.width), ease:ease, onComplete:function ():void{
Utils.removeChildSafe(obj);
}});
} else {
tween = TweenLite.to(obj, duration, {x:(Platform.wrapper.normalSize.width + obj.width), ease:ease, onComplete:function ():void{
Utils.removeChildSafe(obj);
}});
};
break;
case LayoutClip.KEEP:
tween = TweenLite.to(obj, duration, {x:obj.x, y:obj.y, scaleX:obj.scaleX, scaleY:obj.scaleY, ease:ease});
_space.addChild(obj);
obj.x = obj.curObjs[0].x;
obj.y = obj.curObjs[0].y;
obj.scaleX = obj.curObjs[0].scaleX;
obj.scaleY = obj.curObjs[0].scaleY;
if (obj != obj.curObjs[0]){
Utils.removeChildSafe(obj.curObjs[0]);
};
break;
};
};
return (tween);
}
public function updateUI():void{
updateTop();
updateToolbar();
}
private function updateCounter(counter, value:int, total:int):void{
counter.counter.autoSize = TextFieldAutoSize.LEFT;
counter.total.autoSize = TextFieldAutoSize.LEFT;
GraphUtils.setText(counter.counter, ("" + value));
GraphUtils.setText(counter.total, ("" + total));
counter.counter.x = (counter.caption.x + counter.caption.width);
counter.slash.x = (counter.counter.x + counter.counter.width);
counter.total.x = (counter.slash.x + counter.slash.width);
}
private function updateCounter2(counter, value:Number):void{
GraphUtils.setText(counter.value, ("" + value));
counter.value.x = (counter.caption.x + counter.caption.width);
}
private function updateTop():void{
if (Document.WALKTHROUGH){
return;
};
_bkg.score.visible = true;
updateCounter(_bkg.elementsCounter, Model.inst.unlockedElementIds.length, Model.inst.elementCount);
updateCounter(_bkg.groupsCounter, Model.inst.getUnlockedGroups().length, Model.inst.groupCount);
updateCounter2(_bkg.score, Model.inst.score);
}
private function updateToolbar():void{
if (((((_selectedGroupLeft) || (_selectedGroupRight))) || (_currentScreen))){
_toolbar.showMenuButton(false);
} else {
_toolbar.showMenuButton(true);
};
_toolbar.setReactionLogBalloon(Model.inst.getUnreadReactionsCount());
}
public function autoPlay_debug(single:Boolean=false):void{
var e1:Element;
var e2:Element;
var single = single;
var reaction:Reaction = Model.inst.findFirstAvailableReaction();
if (reaction){
e1 = Model.inst.elements[reaction.element1];
e2 = Model.inst.elements[reaction.element2];
_selectedGroupLeft = Model.inst.groups[e1.group];
_selectedGroupRight = Model.inst.groups[e2.group];
switchToSelectedGroupsLayout(function ():void{
tryReaction(findElementClip(e1), findElementClip(e2), function ():void{
if (!single){
autoPlay_debug();
};
}, true);
});
};
}
private function findElementClip(e:Element):ElementClip{
var elementClip:ElementClip;
var i:int;
while (i < _space.numChildren) {
elementClip = (_space.getChildAt(i) as ElementClip);
if (((elementClip) && ((elementClip.element.id == e.id)))){
return (elementClip);
};
i++;
};
return (null);
}
public function autoQuotes_debug():void{
var THIS:*;
var showQuote:* = function ():void{
var clip:ElementClip;
var element:Element;
if (_qoutes.length == 0){
return;
};
var quote:Quote = _qoutes[0];
_qoutes.splice(0, 1);
clip = new ElementClip(quote.element);
element = Model.inst.elements[quote.element];
clip.x = GraphUtils.centerPoint().x;
clip.y = GraphUtils.centerPoint().y;
showReactionResult([clip], null, GraphUtils.centerPoint(), 0, [element], THIS, 0, 0, function ():void{
showQuote();
}, true, quote);
//unresolved jump
var _slot1 = e;
showQuote();
};
THIS = this;
_qoutes = [].concat(Model.inst.quotes);
showQuote();
}
public function resetHint_debug():void{
toolbar._timerEndMilliseconds = 0;
}
public static function loc(key:String):String{
if (_locTable[key]){
return (String(_locTable[key]));
};
return (key);
}
public static function postReactionToFacebook(reaction:Reaction):void{
var attachment:String;
var base:String = "http://www.facebook.com/connect/prompt_feed.php?locale=en_US";
attachment = Utils.stringFormat("&attachment={\"name\":\"{0}\",\"caption\":\"{1}\",\"description\":\"{2}\",\"href\":\"{3}\",\"media\":[{\"type\":\"image\",\"src\":\"{4}\",\"href\":\"{5}\"}], \"properties\":{\"iPhone\": {\"text\":\"Get Doodle Devil for iPhone/iPad\", \"href\":\"http://ls.gd/3789\"}, \"Flash\":{\"text\":\"Play Doodle Devil for FREE\", \"href\": \"http://ls.gd/4000\"}}}", "I've found a new element!", reaction.getReactionText(), reaction.getFacebookText(), "http://www.avaloid.com/doodle-devil/appstore?id=fbpost1", ("http://www.avaloid.com/custom/doodle-devil/elements/" + Model.inst.elements[reaction.result1].image), "http://www.avaloid.com/doodle-devil/appstore?id=fbpost2");
var actionLinks:String = Utils.stringFormat("&action_links=[{\"text\":\"{0}\",\"href\":\"{1}\"}]", "AppStore", "http://www.avaloid.com/doodle-devil/appstore?id=fbpost3");
var userMessagePrompt:String = "&user_message_prompt=Get your friends to create elements too!";
var otherParams:String = ("&api_key=" + _facebookApiKey);
var url:String = ((((base + attachment) + actionLinks) + userMessagePrompt) + otherParams);
Platform.wrapper.navigateToURL(url);
}
public static function postReactionToTwitter(reaction:Reaction):void{
var base:String = "http://twitter.com/home?status=";
var text:String = reaction.getTwitterText();
var url:String = (base + text);
Platform.wrapper.navigateToURL(url);
}
public static function customBackEaseOut(t:Number, b:Number, c:Number, d:Number, s:Number=1.70158):Number{
t = ((t / d) - 1);
s = (s / 4);
return (((c * (((t * t) * (((s + 1) * t) + s)) + 1)) + b));
}
}
}//package screens
Section 344
//MainMenu (screens.MainMenu)
package screens {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import com.newgrounds.components.*;
import model.*;
import mochi.as3.*;
import flash.text.*;
import com.greensock.*;
import common.*;
import common.controls.*;
import armorgames.*;
import common.platform.*;
public class MainMenu extends Sprite {
private var _menu;
public static const APP_STORE_LINK:String = "http://www.avaloid.com/{0}/appstore?id={1}";
public function MainMenu(){
super();
_menu = Application.inst.createInstance("MainMenuClass");
addChild(_menu);
_menu.messageBkg.visible = false;
_menu.loading.visible = false;
resetWarning.visible = false;
addEventListener(MouseEvent.CLICK, function (e:Event):void{
if (((resetWarning.visible) && (!((e.target == resetButton))))){
SoundManager.inst.playClick();
GraphUtils.tweenVisible(playButtonImage, true, 0.2);
playButton.visible = true;
GraphUtils.tweenVisible(resetWarning, false, 0.2);
GraphUtils.tweenVisible(messageBkg, false, 0.2);
};
});
resetButton.addEventListener(MouseEvent.CLICK, function (e:Event):void{
e.preventDefault();
SoundManager.inst.playClick();
if (resetWarning.visible){
GraphUtils.tweenVisible(playButtonImage, true, 1);
playButton.visible = true;
GraphUtils.tweenVisible(resetWarning, false, 0.2);
GraphUtils.tweenVisible(messageBkg, false, 0.2);
stopAnimations();
e.stopPropagation();
dispatchEvent(new DynamicEvent("resetGame"));
} else {
playButton.visible = false;
GraphUtils.tweenVisible(playButtonImage, false, 0.2);
GraphUtils.tweenVisible(resetWarning, true, 0.2);
GraphUtils.tweenVisible(messageBkg, true, 0.2);
};
});
playButton.addEventListener(MouseEvent.CLICK, function (e):void{
stopAnimations();
});
soundButton.addEventListener(MouseEvent.CLICK, function (e):void{
if (soundOffIcon.visible){
setSoundOn(true);
Main.inst.toolbar.setSoundOn(true);
} else {
setSoundOn(false);
Main.inst.toolbar.setSoundOn(false);
};
});
if (Document.showMoreGamesTooltip){
Utils.registerTooltip(_menu.moreGames, _menu.moreGamesTooltip);
} else {
_menu.moreGamesTooltip.visible = false;
};
Utils.registerTooltip(_menu.appStore, _menu.appStoreTooltip);
Utils.registerTooltip(_menu.devicesButton, _menu.devicesTooltip);
Utils.registerTooltip(_menu.logo, _menu.jbTooltip);
if (Document.config.showAppStoreBadge){
appStore.visible = true;
appStore.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.menuAppstoreBadgeUrl);
});
devicesButton.visible = true;
devicesButton.addEventListener(MouseEvent.CLICK, function (e):void{
});
} else {
appStore.visible = false;
};
if (Document.config.showMoreGames){
moreGames.visible = true;
moreGames.buttonMode = true;
moreGames.addEventListener(MouseEvent.CLICK, onMoreGames);
} else {
moreGames.visible = false;
};
updateScore();
startAnimations();
_menu.menuBar1.visible = false;
_menu.menuBar2.visible = false;
_menu.armorGamesLogo.visible = false;
_menu.kongregateLogo.visible = false;
_menu.ngLogo.visible = false;
_menu.ninjakiwiLogo.visible = false;
if (Document.IS_ARMORGAMES){
_menu.armorGamesLogo.visible = true;
_menu.armorGamesLogo.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.armorgamesLogoLink);
});
} else {
if (Document.IS_KONGREGATE){
_menu.kongregateLogo.visible = true;
_menu.kongregateLogo.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.kongreagateLogoLink);
});
} else {
if (Document.IS_NEWGROUNDS){
_menu.ngLogo.visible = true;
_menu.ngLogo.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.newgroundsLogoLink);
});
} else {
if (Document.IS_NINJAKIWI){
_menu.ninjakiwiLogo.visible = true;
_menu.ninjakiwiLogo.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.ninjakiwiLogoLink);
});
};
};
};
};
menuBar.visible = true;
playButton.buttonMode = true;
resetButton.buttonMode = true;
soundButton.buttonMode = true;
playButton.buttonMode = true;
if (highScoresButton){
highScoresButton.buttonMode = true;
};
helpButton.buttonMode = true;
soundOffIcon.mouseEnabled = false;
soundOffIcon.visible = !(Model.inst.soundOn);
_menu.blendMode = BlendMode.LAYER;
menuBar.blendMode = BlendMode.LAYER;
menuBar.bkg.blendMode = BlendMode.LAYER;
menuBar.soundOffIcon.blendMode = BlendMode.LAYER;
menuBar.playButtonImage.blendMode = BlendMode.LAYER;
if (showScoresButton){
highScoresButton.addEventListener(MouseEvent.CLICK, function (e):void{
onHighscores();
});
};
_menu.walkthrough.addEventListener(MouseEvent.CLICK, function (e):void{
Platform.wrapper.navigateToURL(Document.kongregateWalkthroughLink);
});
if (Document.IS_KONGREGATE){
_menu.walkthrough.visible = true;
_menu.walkthrough.buttonMode = true;
};
_menu.walkthrough_1_2.visible = false;
_menu.walkthrough_3.visible = false;
_menu.walkthrough_Play.visible = false;
if (Document.WALKTHROUGH){
_menu.walkthrough.visible = false;
_menu.walkthrough_1_2.visible = true;
_menu.walkthrough_3.visible = true;
_menu.walkthrough_Play.visible = true;
menuBar.visible = false;
SoundManager.inst.soundsOn = false;
};
if (Document.options_st["sponsor"] == "andkon"){
_menu.logo.visible = false;
_menu.walkthrough.visible = false;
_menu.devicesButton.visible = false;
};
ArmorGames.checkAll();
}
public function get menu(){
return (_menu);
}
public function updateScore():void{
}
public function get menuBar(){
if (showScoresButton){
return (_menu.menuBar1);
};
return (_menu.menuBar2);
}
private function get showScoresButton():Boolean{
trace(("Document.config.showScoresButton = " + Document.config.showScoresButton));
return (((((Document.config.showScoresButton) || (Document.IS_ARMORGAMES))) || (Document.IS_NEWGROUNDS)));
}
private function stopAnimations():void{
TweenMax.killTweensOf(_menu.snake);
TweenMax.killTweensOf(_menu.alco);
}
public function get resetButton():MovieClip{
return (menuBar.resetButton);
}
public function get playButton():MovieClip{
return (menuBar.playButton);
}
public function get playButtonImage():MovieClip{
return (menuBar.playButtonImage);
}
public function get soundButton():MovieClip{
return (menuBar.soundButton);
}
public function get soundOffIcon():MovieClip{
return (menuBar.soundOffIcon);
}
public function get resetWarning():TextField{
return (_menu.resetWarning);
}
public function get messageBkg():MovieClip{
return (_menu.messageBkg);
}
public function get score():TextField{
return (_menu.score);
}
public function get highScoresButton():MovieClip{
return (menuBar.highScoresButton);
}
public function get helpButton():MovieClip{
return (menuBar.helpButton);
}
public function get appStore():SimpleButton{
return (_menu.appStore);
}
public function get devicesButton():SimpleButton{
return (_menu.devicesButton);
}
public function get moreGames():MovieClip{
return (_menu.moreGames);
}
public function setSoundOn(on:Boolean):void{
if (on){
soundOffIcon.visible = false;
Model.inst.soundOn = true;
SoundManager.inst.soundsOn = true;
Model.inst.saveGame();
SoundManager.inst.playMain();
} else {
soundOffIcon.visible = true;
Model.inst.soundOn = false;
SoundManager.inst.soundsOn = false;
Model.inst.saveGame();
SoundManager.inst.stopMain();
};
}
public function setLoading(loading:Boolean):void{
if (loading){
mouseChildren = false;
_menu.loading.visible = true;
} else {
mouseChildren = true;
GraphUtils.tweenVisible(_menu.loading, false, 0.2);
};
}
public function startAnimations():void{
AnimationUtils.tweenAnimationYoyo(_menu.alco, 0.25, -1);
AnimationUtils.tweenAnimationYoyo(_menu.snake, 0.25, -1);
}
public static function onHighscores():void{
if (Document.IS_ARMORGAMES){
ArmorGames.api.showScoreboardSubmit(Model.inst.score, null, null, null, Application.inst);
} else {
if (Document.IS_NEWGROUNDS){
Document.submitNewgroudScore(Model.inst.score);
ModalManager.inst.showDialog(new ScoreTable(Document.NEWGROUNDS_BOARD_NAME, ScoreBoardPeriod.TODAY));
} else {
if (Document.config.useMochiAPI){
MochiScores.showLeaderboard({score:Model.inst.score, onDisplay:function ():void{
trace("showLeaderboard.onDisplay");
}, onClose:function ():void{
trace("showLeaderboard.onClose");
}, onError:function ():void{
trace("showLeaderboard.onError");
}});
};
};
};
}
public static function onMoreGames(event:MouseEvent=null):void{
Platform.wrapper.navigateToURL(Document.moreGamesUrl);
}
public static function onAppStore(id:String, path:String="doodle-devil"):void{
var url:String = Utils.stringFormat(APP_STORE_LINK, path, id);
Platform.wrapper.navigateToURL(url);
Model.inst.appStoreNavigated = true;
Model.inst.saveGame();
}
}
}//package screens
Section 345
//ReactionLayout (screens.ReactionLayout)
package screens {
import flash.geom.*;
import com.greensock.*;
import common.*;
import com.greensock.easing.*;
public class ReactionLayout extends Layout {
private var _onFinish:Function;
public function ReactionLayout(elementClip1:ElementClip, elementClip2:ElementClip, onFinish:Function){
super();
_objects = [elementClip1, elementClip2];
_onFinish = onFinish;
}
override public function update(prevLayout:Layout):void{
var newElementPoint:Point;
var elementClip:ElementClip;
var p1:Point;
var bezierPoints:Array;
var prevLayout = prevLayout;
var duration:Number = 0.75;
newElementPoint = GraphUtils.centerPoint();
newElementPoint.y = (newElementPoint.y - 30);
var timeline:TimelineMax = new TimelineMax({onComplete:function ():void{
Utils.removeChildSafe(_objects[0]);
Utils.removeChildSafe(_objects[1]);
_objects = _onFinish(newElementPoint);
}});
var tweens:Array = [];
for each (elementClip in _objects) {
p1 = GraphUtils.randomPoint();
p1.x = ((p1.x / 2) + (LayoutManager.inst.displayRect.width / 4));
p1.y = ((p1.y / 2) + (LayoutManager.inst.displayRect.height / 4));
bezierPoints = [{x:p1.x, y:p1.y}, {x:newElementPoint.x, y:newElementPoint.y}];
elementClip.freeze = true;
tweens.push(TweenMax.to(elementClip, duration, {bezierThrough:bezierPoints, ease:Linear.easeOut}));
};
timeline.appendMultiple(tweens);
}
}
}//package screens
Section 346
//ReactionsLogScreen (screens.ReactionsLogScreen)
package screens {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import model.*;
import com.greensock.*;
import common.*;
import common.controls.*;
import common.platform.*;
import com.greensock.easing.*;
public class ReactionsLogScreen extends NonScaledSprite {
private var _buttonDown;
private var _buttonUp;
private var _caption;
private var _content:Sprite;
private var _topIndex:int;// = 0
private var _visibleCount:int;// = 5
private var _rowHeight:Number;// = 60
public var scrollY:Number;// = 0
private var _facebookShare;
private var _twitterShare;
public static var _PlusClass:Class = ReactionsLogScreen__PlusClass;
public static var _EqualClass:Class = ReactionsLogScreen__EqualClass;
public function ReactionsLogScreen(){
_facebookShare = Application.inst.createInstance("FacebookShareClass");
_twitterShare = Application.inst.createInstance("TweetButtonClass2");
super(0x440000, 0);
width = 350;
height = Platform.wrapper.spaceNormaSize.height;
y = Platform.wrapper.spaceNormaSize.top;
x = 145;
_buttonUp = Application.inst.createInstance("ButtonUpClass");
_buttonDown = Application.inst.createInstance("ButtonDownClass");
_caption = Application.inst.createInstance("ReactionHistoryClass");
_buttonUp.x = ((width - _buttonUp.width) - 30);
_buttonUp.y = -15;
_buttonUp.alpha = 0.7;
_buttonDown.x = ((width - _buttonDown.width) - 30);
_buttonDown.y = ((height - _buttonDown.height) + 20);
_buttonDown.alpha = 0.7;
_caption.x = ((width / 2) - (_caption.width / 2));
_caption.y = 10;
_content = new Sprite();
_content.y = 33;
_content.x = 8;
addChild(_content);
addChild(_caption);
addChild(_buttonUp);
addChild(_buttonDown);
_buttonUp.addEventListener(MouseEvent.CLICK, function (e):void{
var oldTopIndex:int = _topIndex;
_topIndex = (_topIndex - _visibleCount);
if (_topIndex < 0){
_topIndex = 0;
};
animateScroll();
updateButtons();
});
_buttonDown.addEventListener(MouseEvent.CLICK, function (e):void{
var oldTopIndex:int = _topIndex;
_topIndex = (_topIndex + _visibleCount);
if ((_topIndex + _visibleCount) > itemCount){
_topIndex = (itemCount - _visibleCount);
};
animateScroll();
updateButtons();
});
_content.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
_content.addEventListener(MouseEvent.ROLL_OUT, onMouseOut);
_facebookShare.visible = false;
_facebookShare.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{
var reaction:Reaction = _facebookShare.parent["reaction"];
Main.postReactionToFacebook(reaction);
});
_twitterShare.visible = false;
_twitterShare.addEventListener(MouseEvent.CLICK, function (e:MouseEvent):void{
var reaction:Reaction = _twitterShare.parent["reaction"];
Main.postReactionToTwitter(reaction);
});
}
private function onMouseOut(event:MouseEvent):void{
_facebookShare.visible = false;
_twitterShare.visible = false;
}
private function onMouseMove(event:MouseEvent):void{
var reaction:Reaction;
if (("reaction" in event.target)){
reaction = (event.target["reaction"] as Reaction);
if (reaction){
event.target.addChild(_facebookShare);
_facebookShare.visible = Document.config.showFacebookButton;
_facebookShare.y = -20;
_facebookShare.x = -(_facebookShare.width);
_twitterShare.visible = Document.config.showTwitterButton;
event.target.addChild(_twitterShare);
_twitterShare.x = ((_facebookShare.x + _facebookShare.width) - _twitterShare.width);
_twitterShare.y = ((_facebookShare.y + _facebookShare.height) + 3);
} else {
_facebookShare.visible = false;
_twitterShare.visible = false;
};
};
}
private function get itemCount():int{
return (Model.inst.reactionLog.length);
}
private function updateButtons():void{
_buttonUp.visible = (_topIndex > 0);
_buttonDown.visible = ((_topIndex + _visibleCount) < itemCount);
}
private function animateScroll():void{
var h:Number;
h = ((_visibleCount * _rowHeight) + 5);
var newY:Number = (_topIndex * _rowHeight);
TweenLite.to(this, 1, {scrollY:newY, overwrite:OverwriteManager.AUTO, ease:Quad.easeOut, onUpdate:function ():void{
_content.scrollRect = new Rectangle(-(_facebookShare.width), scrollY, 400, h);
}});
}
private function updateScrollRect():void{
var h:Number = ((_visibleCount * _rowHeight) + 5);
var w:Number = 400;
_content.scrollRect = new Rectangle(-(_facebookShare.width), scrollY, w, h);
}
public function update():void{
var reactionObj:Object;
var reaction:Reaction;
var equationObjects:Array;
var x:Number;
var row:MovieClip;
var obj:DisplayObject;
var rect:Rectangle;
Utils.removeAllChildren(_content);
_content.addChild(_facebookShare);
_facebookShare.visible = false;
_twitterShare.visible = false;
var y:Number = 32;
for each (reactionObj in Model.inst.reactionLog) {
reaction = reactionObj.reaction;
equationObjects = [];
equationObjects.push(new ElementClip(reaction.element1));
equationObjects.push(new _PlusClass());
equationObjects.push(new ElementClip(reaction.element2));
equationObjects.push(new _EqualClass());
equationObjects.push(new ElementClip(reaction.result1));
if (reaction.result2 != ""){
equationObjects.push(new _PlusClass());
equationObjects.push(new ElementClip(reaction.result2));
};
if (reaction.result3 != ""){
equationObjects.push(new _PlusClass());
equationObjects.push(new ElementClip(reaction.result3));
};
x = (32 + 10);
row = new MovieClip();
row.reaction = reaction;
_content.addChild(row);
row.y = y;
row.x = 0;
for each (obj in equationObjects) {
if ((obj is InteractiveObject)){
obj["mouseEnabled"] = false;
};
row.addChild(obj);
if ((obj is ElementClip)){
obj.x = x;
obj.y = 0;
x = (x + 25);
} else {
obj.x = x;
obj.y = -32;
x = (x + 40);
};
};
rect = row.getRect(row);
row.graphics.beginFill(0, 0);
row.graphics.drawRect((rect.left - _facebookShare.width), rect.top, rect.width, rect.height);
y = (y + _rowHeight);
};
_topIndex = 0;
scrollY = 0;
updateScrollRect();
updateButtons();
}
}
}//package screens
Section 347
//ReactionsLogScreen__EqualClass (screens.ReactionsLogScreen__EqualClass)
package screens {
import mx.core.*;
public class ReactionsLogScreen__EqualClass extends BitmapAsset {
public function ReactionsLogScreen__EqualClass(){
super();
}
}
}//package screens
Section 348
//ReactionsLogScreen__PlusClass (screens.ReactionsLogScreen__PlusClass)
package screens {
import mx.core.*;
public class ReactionsLogScreen__PlusClass extends BitmapAsset {
public function ReactionsLogScreen__PlusClass(){
super();
}
}
}//package screens
Section 349
//ResultLayout (screens.ResultLayout)
package screens {
import flash.geom.*;
import common.*;
public class ResultLayout extends Layout {
private var _elementClips:Array;
public function ResultLayout(elementClips:Array){
var elementClip:ElementClip;
super();
_elementClips = [];
for each (elementClip in elementClips) {
_elementClips.push(elementClip.clone());
};
}
override public function update(prevLayout:Layout):void{
var elementClip:ElementClip;
var center:Point;
var i:int;
var groupClip:GroupClip;
var width:Number = 0;
var groupClips:Array = [];
for each (elementClip in _elementClips) {
groupClip = new GroupClip(elementClip.element.group);
_objects.push(elementClip);
_objects.push(groupClip);
groupClips.push(groupClip);
groupClip.scaleX = 0.9;
groupClip.scaleY = 0.9;
width = (width + groupClip.width);
groupClip.y = (((elementClip.y - (elementClip.height / 2)) - groupClip.height) - 20);
groupClip.mouseEnabled = false;
elementClip.mouseEnabled = false;
};
center = GraphUtils.centerPoint();
i = 0;
while (i < groupClips.length) {
groupClip = groupClips[i];
groupClip.x = ((center.x - (width / 2)) + (i * groupClip.width));
_elementClips[i].x = (groupClip.x + (groupClip.width / 2));
i++;
};
}
}
}//package screens
Section 350
//Toolbar (screens.Toolbar)
package screens {
import flash.display.*;
import flash.utils.*;
import model.*;
import common.*;
import com.adobe.utils.*;
public class Toolbar extends Sprite {
private var _toolbar;
private var _cooldownTimer:uint;
public var _timerEndMilliseconds:Number;
public function Toolbar(){
super();
_toolbar = Application.inst.createInstance("ToolbarClass");
addChild(_toolbar);
showMenuButton(true);
showHintButton(true);
_toolbar.hintCooldown.enabled = false;
_toolbar.hintCooldown2.enabled = false;
if (!Model.inst.allElementsUnlocked){
startCooldown();
};
}
public function get hint():SimpleButton{
return (_toolbar.hint);
}
public function get hint2():SimpleButton{
return (_toolbar.hint2);
}
public function get toMenu():SimpleButton{
return (_toolbar.toMenu);
}
public function get back():SimpleButton{
return (_toolbar.back);
}
public function get log():SimpleButton{
return (_toolbar.log);
}
public function get help():SimpleButton{
return (_toolbar.help);
}
public function get soundOnButton():SimpleButton{
return (_toolbar.soundOnButton);
}
public function get soundOffButton():SimpleButton{
return (_toolbar.soundOffButton);
}
public function showMenuButton(show:Boolean):void{
_toolbar.back.visible = !(show);
_toolbar.toMenu.visible = show;
}
public function showHintButton(show:Boolean):void{
_toolbar.hintCooldown.visible = !(show);
_toolbar.hint.visible = show;
_toolbar.hintCooldown2.visible = !(show);
_toolbar.hint2.visible = show;
_toolbar.hintCooldownText.visible = !(show);
}
public function startCooldown():void{
if (!Model.inst.allElementsUnlocked){
var onTimer:* = function ():void{
var secondsLeft:Number = Math.round(((_timerEndMilliseconds - Utils.nowMiliseconds) / 1000));
if (secondsLeft < 0){
secondsLeft = 0;
};
var time:String = ((int((secondsLeft / 60)) + ":") + NumberFormatter.addLeadingZero((secondsLeft % 60)));
GraphUtils.setText(_toolbar.hintCooldownText, time);
if (secondsLeft <= 0){
showHintButton(true);
clearInterval(_cooldownTimer);
};
};
showHintButton(false);
_timerEndMilliseconds = ((Utils.nowMiliseconds + (Model.inst.hintCooldownSeconds * 1000)) + 300);
onTimer();
_cooldownTimer = setInterval(onTimer, 250);
};
}
public function setSoundOn(on:Boolean):void{
_toolbar.soundOnButton.visible = on;
_toolbar.soundOffButton.visible = !(on);
}
public function setReactionLogBalloon(n:int):void{
_toolbar.balloon1.visible = false;
_toolbar.balloon2.visible = false;
_toolbar.balloon3.visible = false;
if (n == 0){
} else {
if (n == 1){
_toolbar.balloon1.visible = true;
} else {
if (n == 2){
_toolbar.balloon2.visible = true;
} else {
_toolbar.balloon3.visible = true;
};
};
};
}
}
}//package screens
Section 351
//TutorialController (screens.TutorialController)
package screens {
import flash.display.*;
import model.*;
import com.greensock.*;
import common.*;
import com.greensock.easing.*;
public class TutorialController {
private var _tutorial;
public function TutorialController(){
_tutorial = Application.inst.createInstance("TutorialClass");
super();
}
public function get clickGroupLeft(){
return (_tutorial.clickGroupLeft);
}
public function get clickGroupRight(){
return (_tutorial.clickGroupRight);
}
public function get newElementLeft(){
return (_tutorial.newElementLeft);
}
public function get newElementRight(){
return (_tutorial.newElementRight);
}
public function get goal(){
return (_tutorial.goal);
}
public function get clickElement(){
return (_tutorial.clickElement);
}
public function hideAll():void{
Utils.removeChildSafe(goal);
TweenLite.killTweensOf(goal);
Utils.removeChildSafe(clickElement);
TweenLite.killTweensOf(clickElement);
Utils.removeChildSafe(newElementLeft);
TweenLite.killTweensOf(newElementLeft);
Utils.removeChildSafe(newElementRight);
TweenLite.killTweensOf(newElementRight);
Utils.removeChildSafe(clickGroupLeft);
TweenLite.killTweensOf(clickGroupLeft);
Utils.removeChildSafe(clickGroupRight);
TweenLite.killTweensOf(clickGroupRight);
}
public function update(main:Main):void{
var earthGroupClip:GroupClip = main.getGroupClip("Earth");
var fireGroupClip:GroupClip = main.getGroupClip("Fire");
var earthElementClip:ElementClip = main.getElementClip("Earth");
var fireElementClip:ElementClip = main.getElementClip("Fire");
if ((((main.selectedGroupLeft == null)) && ((main.selectedGroupRight == null)))){
if ((main.currentLayout is GroupsLayout)){
if (!Model.inst.isElementUnlocked("Lava")){
main.space.addChild(goal);
GraphUtils.tweenVisible(goal, true, 0.1);
tweenVertical(goal, (main.elementsCounter.total.x + (main.elementsCounter.total.width / 2)), (main.elementsCounter.total.y + main.elementsCounter.total.height));
if (fireGroupClip){
main.space.addChild(clickGroupRight);
GraphUtils.tweenVisible(clickGroupRight, true, 0.1);
tweenHorizontal(clickGroupRight, fireGroupClip.x, (fireGroupClip.y + (fireGroupClip.height / 2)));
};
} else {
if (Model.inst.elements["Lava"].isUnread){
if (fireGroupClip){
main.space.addChild(newElementRight);
GraphUtils.tweenVisible(newElementRight, true, 0.1);
tweenHorizontal(newElementRight, fireGroupClip.x, (fireGroupClip.y + (fireGroupClip.height / 2)));
};
};
};
} else {
if ((main.currentLayout is ResultLayout)){
if (Model.inst.elements["Lava"].isUnread){
if (fireGroupClip){
main.space.addChild(newElementRight);
GraphUtils.tweenVisible(newElementRight, true, 0.1);
tweenHorizontal(newElementRight, fireGroupClip.x, (fireGroupClip.y + (fireGroupClip.height / 2)));
};
};
};
};
} else {
if (((!((main.selectedGroupLeft == null))) && ((main.selectedGroupRight == null)))){
if (!Model.inst.isElementUnlocked("Lava")){
if (main.selectedGroupLeft.id == "Fire"){
if (earthGroupClip){
main.space.addChild(clickGroupRight);
GraphUtils.tweenVisible(clickGroupRight, true, 0.1);
tweenHorizontal(clickGroupRight, earthGroupClip.x, (earthGroupClip.y + (earthGroupClip.height / 2)));
};
} else {
if (earthGroupClip){
main.space.addChild(clickGroupRight);
GraphUtils.tweenVisible(clickGroupRight, true, 0.1);
tweenHorizontal(clickGroupRight, fireGroupClip.x, (fireGroupClip.y + (fireGroupClip.height / 2)));
};
};
};
} else {
if ((((main.selectedGroupLeft == null)) && (!((main.selectedGroupRight == null))))){
if (!Model.inst.isElementUnlocked("Lava")){
if (main.selectedGroupRight.id == "Fire"){
if (earthGroupClip){
main.space.addChild(clickGroupLeft);
GraphUtils.tweenVisible(clickGroupLeft, true, 0.1);
tweenHorizontal(clickGroupLeft, (earthGroupClip.x + earthGroupClip.width), (earthGroupClip.y + (earthGroupClip.height / 2)), -1);
};
} else {
if (fireGroupClip){
main.space.addChild(clickGroupLeft);
GraphUtils.tweenVisible(clickGroupLeft, true, 0.1);
tweenHorizontal(clickGroupLeft, (fireGroupClip.x + fireGroupClip.width), (fireGroupClip.y + (fireGroupClip.height / 2)), -1);
};
};
};
} else {
if (((((((!((main.selectedGroupLeft == null))) && (!((main.selectedGroupRight == null))))) && (fireElementClip))) && (earthElementClip))){
if (!Model.inst.isElementUnlocked("Lava")){
if (main.selectedElementClip != fireElementClip){
main.space.addChild(clickElement);
GraphUtils.tweenVisible(clickElement, true, 0.1);
tweenVertical(clickElement, fireElementClip.x, (fireElementClip.y + 32));
} else {
if (earthElementClip){
main.space.addChild(clickElement);
GraphUtils.tweenVisible(clickElement, true, 0.1);
tweenVertical(clickElement, earthElementClip.x, (earthElementClip.y + 32));
};
};
};
};
};
};
};
}
private function tweenVertical(arrow:DisplayObject, x:Number, y:Number, dy:Number=1):void{
arrow.x = x;
arrow.y = (y + (dy * 10));
TweenMax.to(arrow, 0.25, {repeat:-1, yoyo:true, y:y, ease:Quad.easeIn});
}
public static function tweenHorizontal(arrow:DisplayObject, x:Number, y:Number, dx:Number=1, dt:Number=0.25):void{
arrow.x = (x + (dx * 10));
arrow.y = y;
TweenMax.to(arrow, dt, {repeat:-1, yoyo:true, x:x, ease:Quad.easeIn});
}
}
}//package screens
Section 352
//png (sea.png)
package sea {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sea
Section 353
//png (seeds.png)
package seeds {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package seeds
Section 354
//png (sex.png)
package sex {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sex
Section 355
//png (shell.png)
package shell {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package shell
Section 356
//png (ship.png)
package ship {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ship
Section 357
//png (sin.png)
package sin {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sin
Section 358
//png (skyscraper.png)
package skyscraper {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package skyscraper
Section 359
//png (snake.png)
package snake {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package snake
Section 360
//png (soldier.png)
package soldier {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package soldier
Section 361
//png (spirit.png)
package spirit {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package spirit
Section 362
//png (steak.png)
package steak {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package steak
Section 363
//png (steam.png)
package steam {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package steam
Section 364
//png (steam_engine.png)
package steam_engine {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package steam_engine
Section 365
//png (steam_ship.png)
package steam_ship {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package steam_ship
Section 366
//png (stone.png)
package stone {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package stone
Section 367
//png (storm.png)
package storm {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package storm
Section 368
//png (sugar.png)
package sugar {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sugar
Section 369
//png (sulfur.png)
package sulfur {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sulfur
Section 370
//png (sun.png)
package sun {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sun
Section 371
//png (sunflower.png)
package sunflower {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package sunflower
Section 372
//png (swamp.png)
package swamp {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package swamp
Section 373
//Log (SWFStats.Log)
package SWFStats {
import flash.events.*;
import flash.system.*;
import flash.utils.*;
import flash.net.*;
import flash.external.*;
public final class Log {
private static const PingF:Timer = new Timer(60000);
private static const PingR:Timer = new Timer(30000);
public static var Enabled:Boolean = false;
public static var Queue:Boolean = true;
public static var SWFID:int = 0;
public static var GUID:String = "";
public static var SourceUrl:String;
private static var Request:LogRequest = new LogRequest();
private static var FirstPing:Boolean = true;
private static var Pings:int = 0;
private static var Plays:int = 0;
private static var HighestGoal:int = 0;
public static function View(swfid:int=0, guid:String="", defaulturl:String=""):void{
if (SWFID > 0){
return;
};
SWFID = swfid;
GUID = guid;
Enabled = true;
if ((((SWFID == 0)) || ((GUID == "")))){
Enabled = false;
return;
};
if (((((!((defaulturl.indexOf("http://") == 0))) && (!((Security.sandboxType == "localWithNetwork"))))) && (!((Security.sandboxType == "localTrusted"))))){
Enabled = false;
return;
};
SourceUrl = GetUrl(defaulturl);
if ((((SourceUrl == null)) || ((SourceUrl == "")))){
Enabled = false;
return;
};
Security.allowDomain("http://tracker.swfstats.com/");
Security.allowInsecureDomain("http://tracker.swfstats.com/");
Security.loadPolicyFile("http://tracker.swfstats.com/crossdomain.xml");
Security.allowDomain("http://utils.swfstats.com/");
Security.allowInsecureDomain("http://utils.swfstats.com/");
Security.loadPolicyFile("http://utils.swfstats.com/crossdomain.xml");
var views:int = GetCookie("views");
views++;
SaveCookie("views", views);
Send(("v/" + views), true);
PingF.addEventListener(TimerEvent.TIMER, PingServer);
PingF.start();
}
public static function Play():void{
if (!Enabled){
return;
};
Plays++;
Send(("p/" + Plays));
}
public static function Goal(n:int, name:String):void{
}
private static function PingServer(... _args):void{
if (!Enabled){
return;
};
Pings++;
Send(((("t/" + (FirstPing) ? "y" : "n") + "/") + Pings), true);
if (FirstPing){
PingF.stop();
PingR.addEventListener(TimerEvent.TIMER, PingServer);
PingR.start();
FirstPing = false;
};
}
public static function CustomMetric(name:String, group:String=null):void{
if (!Enabled){
return;
};
if (group == null){
group = "";
};
Send(((("c/" + Clean(name)) + "/") + Clean(group)));
}
public static function LevelCounterMetric(name:String, level):void{
if (!Enabled){
return;
};
Send(((("lc/" + Clean(name)) + "/") + Clean(level)));
}
public static function LevelRangedMetric(name:String, level, value:int):void{
if (!Enabled){
return;
};
Send(((((("lr/" + Clean(name)) + "/") + Clean(level)) + "/") + value));
}
public static function LevelAverageMetric(name:String, level, value:int):void{
if (!Enabled){
return;
};
Send(((((("la/" + Clean(name)) + "/") + Clean(level)) + "/") + value));
}
private static function Send(s:String, view:Boolean=false):void{
Request.Queue(s);
if (((((Request.Ready) || (view))) || (!(Queue)))){
Request.Send();
Request = new LogRequest();
};
}
private static function Clean(s:String):String{
return (escape(s.replace("/", "\\").replace("~", "-")));
}
private static function GetCookie(n:String):int{
var cookie:SharedObject = SharedObject.getLocal("swfstats");
if (cookie.data[n] == undefined){
return (0);
};
return (int(cookie.data[n]));
}
private static function SaveCookie(n:String, v:int):void{
var cookie:SharedObject = SharedObject.getLocal("swfstats");
cookie.data[n] = v.toString();
cookie.flush();
}
private static function GetUrl(defaulturl:String):String{
var url:String;
var defaulturl = defaulturl;
if (ExternalInterface.available){
url = String(ExternalInterface.call("window.location.href.toString"));
//unresolved jump
var _slot1 = s;
url = defaulturl;
} else {
if (defaulturl.indexOf("http://") == 0){
url = defaulturl;
};
};
if ((((((url == null)) || ((url == "")))) || ((url == "null")))){
if ((((Security.sandboxType == "localWithNetwork")) || ((Security.sandboxType == "localTrusted")))){
url = "http://local-testing/";
} else {
url = null;
};
};
return (escape(url));
}
}
}//package SWFStats
Section 374
//LogRequest (SWFStats.LogRequest)
package SWFStats {
import flash.events.*;
import flash.net.*;
public final class LogRequest {
private var Data:String;// = ""
private var Pieces:int;
public var Ready:Boolean;// = false
private static var Failed:int = 0;
public function LogRequest(){
super();
}
public function Queue(data:String):void{
if (Failed > 3){
return;
};
this.Pieces++;
this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + data));
if ((((this.Pieces == 8)) || ((this.Data.length > 300)))){
this.Ready = true;
};
}
public function Send():void{
var sendaction:URLLoader = new URLLoader();
sendaction.addEventListener(IOErrorEvent.IO_ERROR, this.IOErrorHandler);
sendaction.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.StatusChange);
sendaction.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.SecurityErrorHandler);
sendaction.load(new URLRequest((((((((((("http://tracker.swfstats.com/Games/q.aspx?guid=" + Log.GUID) + "&swfid=") + Log.SWFID) + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z")));
trace((((((((((("http://tracker.swfstats.com/Games/q.aspx?guid=" + Log.GUID) + "&swfid=") + Log.SWFID) + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z"));
}
private function IOErrorHandler(e:IOErrorEvent):void{
Failed++;
}
private function SecurityErrorHandler(e:SecurityErrorEvent):void{
}
private function StatusChange(e:HTTPStatusEvent):void{
}
}
}//package SWFStats
Section 375
//png (tavern.png)
package tavern {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package tavern
Section 376
//png (team.png)
package team {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package team
Section 377
//png (tequila.png)
package tequila {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package tequila
Section 378
//png (thunderbird.png)
package thunderbird {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package thunderbird
Section 379
//png (tobacco.png)
package tobacco {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package tobacco
Section 380
//png (tools.png)
package tools {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package tools
Section 381
//png (treant.png)
package treant {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package treant
Section 382
//png (tree.png)
package tree {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package tree
Section 383
//png (turtle.png)
package turtle {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package turtle
Section 384
//png (tv.png)
package tv {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package tv
Section 385
//png (typewriter.png)
package typewriter {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package typewriter
Section 386
//png (ufo.png)
package ufo {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package ufo
Section 387
//png (vampire.png)
package vampire {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package vampire
Section 388
//png (virus.png)
package virus {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package virus
Section 389
//png (vodka.png)
package vodka {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package vodka
Section 390
//png (void.png)
package void {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package void
Section 391
//png (warrior.png)
package warrior {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package warrior
Section 392
//png (water.png)
package water {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package water
Section 393
//png (weapon.png)
package weapon {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package weapon
Section 394
//png (weeds.png)
package weeds {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package weeds
Section 395
//png (werewolf.png)
package werewolf {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package werewolf
Section 396
//png (whale.png)
package whale {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package whale
Section 397
//png (wheat.png)
package wheat {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package wheat
Section 398
//png (wheel.png)
package wheel {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package wheel
Section 399
//png (white_russian.png)
package white_russian {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package white_russian
Section 400
//png (wizard.png)
package wizard {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package wizard
Section 401
//png (wood.png)
package wood {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package wood
Section 402
//png (wool.png)
package wool {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package wool
Section 403
//png (work.png)
package work {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package work
Section 404
//png (worm.png)
package worm {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package worm
Section 405
//wav (wrong_click.wav)
package wrong_click {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package wrong_click
Section 406
//png (zombie.png)
package zombie {
import flash.display.*;
public dynamic class png extends BitmapData {
public function png(w:int=64, h:int=64){
super(w, h);
}
}
}//package zombie
Section 407
//Application (Application)
package {
import flash.events.*;
import model.*;
import screens.*;
import common.*;
import common.controls.*;
import flash.net.*;
import common.platform.*;
import flash.ui.*;
public class Application extends PlatformApplicationBase {
protected var _main:Main;
public static const FRAME_RATE:Number = 50;
public static var inst:Application;
public function Application(){
super();
inst = this;
}
public function createInstance(className:String):Object{
return (null);
}
override protected function onAddedToStage(doCheckAllReady:Boolean=true):void{
super.onAddedToStage(false);
setSize(Platform.wrapper.normalSize.width, Platform.wrapper.normalSize.height);
ModalManager.inst = new ModalManager();
ModalManager.inst.topWindow = this;
Model.inst = new Model();
Model.inst.tryLoadGame();
LayoutManager.inst = new LayoutManager(stage);
checkAllReady();
}
override protected function onReady():void{
super.onReady();
SoundManager.inst = new SoundManager();
_main = new Main();
addChild(_main);
if (!Document.WALKTHROUGH){
_main.menu.setSoundOn(Model.inst.soundOn);
_main.toolbar.setSoundOn(Model.inst.soundOn);
} else {
_main.menu.setSoundOn(false);
};
SoundManager.registerClickSoundForAllButtons(_main.menu);
SoundManager.registerClickSoundForAllButtons(_main.toolbar);
SoundManager.registerClickSoundForAllButtons(_main.reactionLogScreen);
SoundManager.registerClickSoundForAllButtons(_main.bkg);
Platform.wrapper.frameRate = FRAME_RATE;
var contextMenu:ContextMenu = new ContextMenu();
contextMenu.hideBuiltInItems();
var item1:* = new ContextMenuItem("Developed by JoyBits");
var item2:* = new ContextMenuItem("http://doodlegod.com");
var item3:* = new ContextMenuItem("------------");
var item4:* = new ContextMenuItem("More Games");
var item5:* = new ContextMenuItem("Elite Games");
item2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function ():void{
navigateToURL(new URLRequest("http://doodlegod.com"), "_blank");
});
item4.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function ():void{
navigateToURL(new URLRequest(Document.kongreagateLogoLink), "_blank");
});
item5.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function ():void{
navigateToURL(new URLRequest("http://www.elite-games.net"), "_blank");
});
contextMenu.customItems.push(item1);
contextMenu.customItems.push(new ContextMenuItem("v 2.01"));
contextMenu.customItems.push(item2);
contextMenu.customItems.push(item3);
contextMenu.customItems.push(item4);
contextMenu.customItems.push(item5);
this.contextMenu = contextMenu;
}
private static function testData():void{
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[16]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[0]});
Model.inst.reactionLog.push({reaction:Model.inst.reactions[16]});
}
}
}//package
Section 408
//Balloon1Class (Balloon1Class)
package {
import flash.display.*;
public dynamic class Balloon1Class extends MovieClip {
}
}//package
Section 409
//Balloon2Class (Balloon2Class)
package {
import flash.display.*;
public dynamic class Balloon2Class extends MovieClip {
}
}//package
Section 410
//Balloon3Class (Balloon3Class)
package {
import flash.display.*;
public dynamic class Balloon3Class extends MovieClip {
}
}//package
Section 411
//BkgClass (BkgClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class BkgClass extends MovieClip {
public var appStoreTooltip:TextField;
public var hintCaption:TextField;
public var elementsCounter:MovieClip;
public var score:MovieClip;
public var groupsCounter:MovieClip;
public var toMenu:SimpleButton;
public var devicesTooltip:TextField;
public var appStore:SimpleButton;
public var bkg:MovieClip;
public var submitScoreButton:SimpleButton;
public var devicesButton:SimpleButton;
}
}//package
Section 412
//ButtonDownClass (ButtonDownClass)
package {
import flash.display.*;
public dynamic class ButtonDownClass extends SimpleButton {
}
}//package
Section 413
//ButtonUpClass (ButtonUpClass)
package {
import flash.display.*;
public dynamic class ButtonUpClass extends SimpleButton {
}
}//package
Section 414
//ClickToContinueClass (ClickToContinueClass)
package {
import flash.display.*;
public dynamic class ClickToContinueClass extends MovieClip {
}
}//package
Section 415
//Config (Config)
package {
public dynamic class Config {
public var bigAdType:String;
public var showBigIphoneAd:Boolean;
public var showAppStoreBadge:Boolean;
public var showSmallIphoneIcon:Boolean;
public var showMoreGames:Boolean;
public var showDoodleGodFlash:Boolean;
public var showScoresButton:Boolean;
public var showFacebookButton:Boolean;
public var showTwitterButton:Boolean;
public var showDoodleGodBanner:Boolean;
public var showStartButton:Boolean;
public var minLoadingTime:Number;
public var useMochiAd:Boolean;
public var useMochiAPI:Boolean;
public var useCPMStar:Boolean;
public var useMochiBot:Boolean;
public var usePlaytomic:Boolean;
public var gameActive:Boolean;
public function Config(obj:Object){
var propName:String;
super();
for (propName in obj) {
this[propName] = obj[propName];
};
}
}
}//package
Section 416
//DeviceAdClass (DeviceAdClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class DeviceAdClass extends MovieClip {
public var windows7:MovieClip;
public var caption:TextField;
public var continueButton:ClickToContinueClass;
public var android:MovieClip;
public var iphone:MovieClip;
public var bada:MovieClip;
}
}//package
Section 417
//Document (Document)
package {
import com.newgrounds.*;
import flash.display.*;
import flash.events.*;
import com.newgrounds.components.*;
import flash.system.*;
import flash.utils.*;
import com.adobe.serialization.json.*;
import mochi.as3.*;
import screens.*;
import mochi.bot.*;
import common.*;
import flash.net.*;
import kongregate.*;
import SWFStats.*;
import com.adobe.utils.*;
import assets.*;
import armorgames.*;
import common.platform.*;
import CPMStar.*;
public dynamic class Document extends MovieClip {
public var ngSplash:MovieClip;
public var kongregateSplash:MovieClip;
public var kongregateLogo:SimpleButton;
public var elitegamesLogo:SimpleButton;
public var loader2:MovieClip;
public var armorGamesSplash:MovieClip;
public var loader;
public var percent:int;
public var isError:Boolean;
public var isLoaded:Boolean;
public var isInitialized:Boolean;
public var isStarted:Boolean;
public var isAdFinished:Boolean;
public var startTime:Number;
public var minLoadingTime;
var _mochiads_game_id:String;// = "e78d17eb7cf7abcf"
public static const MOCHI_GAME_ID:String = "e78d17eb7cf7abcf";
public static const MOCHI_LEADERBOARD_ID:String = "b59e07da5afe09b1";
public static const CPM_START_ID:String = "3430Q8F42E683";
public static const MOCHI_BOT_ID:String = "7d2ce43a";
public static const PLAYTOMIC_ID:String = "a52a1a71b47b";
public static const PLAYTOMIC_SWF_ID:Number = 1260;
public static const ARMORGAMES_DEV_KEY:String = "093d705e8817e201197a0eca6684ee6a";
public static const ARMORGAMES_GAME_KEY:String = "doodle-god-2";
public static const NEWGROUNDS_API_ID:String = "15444:bEyHVTXP";
public static const NEWGROUNDS_ENCRYPTION_KEY:String = "w1kkkBX04xWKQINDMB3y4SlWgOksds6n";
public static const NEWGROUNDS_BOARD_NAME:String = "High Scores";
public static const IS_MOCHI_DISTRIBUTION:Boolean = false;
public static const IS_NEWGROUNDS:Boolean = false;
public static const IS_ELITEGAMES:Boolean = false;
public static const IS_NINJAKIWI:Boolean = false;
public static const WALKTHROUGH:Boolean = false;
public static var IS_ARMORGAMES:Boolean = false;
public static var IS_KONGREGATE:Boolean = true;
public static var showMoreGamesTooltip:Boolean;
public static var moreGamesUrl:String;
public static var moreGamesContextMenuUrl:String;
public static var flashDoodleGodUrl:String;
public static var moreGamesContextMenuLabel:String;
public static var showSubmitScoreButton:Boolean;
public static var domain:String = "";
public static var options_st;
public static var loaderBannerUrl:String = "http://ls.gd/4091";
public static var menuAppstoreBadgeUrl:String = "http://ls.gd/4086";
public static var kongreagateLogoLink:String = "http://www.kongregate.com/?gamereferral=doodle_god_2";
public static var armorgamesLogoLink:String = "http://armorgames.com/";
public static var newgroundsLogoLink:String = "http://newgrounds.com/";
public static var ninjakiwiLogoLink:String = "http://ninjakiwi.com/";
public static var elitegamesLogoLink:String = "http://www.elite-games.net/";
public static var kongregateWalkthroughLink:String = "http://www.kongregate.com/games/Badim/doodle-god-2-walkthrough/?gamereferral=doodle_god_2_walkthrough";
public static var generalDefauls:Object = {showBigIphoneAd:true, showAppStoreBadge:true, showSmallIphoneIcon:true, showMoreGames:false, showScoresButton:true, showFacebookButton:true, showTwitterButton:true, showDoodleGodBanner:false, showStartButton:true, showDoodleGodFlash:true, bigAdType:"iphone", minLoadingTime:10, useMochiAd:false, useMochiAPI:true, useCPMStar:false, useMochiBot:false, usePlaytomic:true, gameActive:true};
public static var armorGamesDefaults:Object = {showBigIphoneAd:false, showAppStoreBadge:true, showSmallIphoneIcon:true, showMoreGames:true, showScoresButton:true, showFacebookButton:false, showTwitterButton:false, showDoodleGodBanner:true, showStartButton:false, showDoodleGodFlash:true, bigAdType:"iphone", minLoadingTime:5, useMochiAd:false, useMochiAPI:false, useCPMStar:false, useMochiBot:false, usePlaytomic:false, gameActive:true};
public static var kogregateDefaults:Object = {showBigIphoneAd:true, showAppStoreBadge:true, showSmallIphoneIcon:true, showMoreGames:true, showScoresButton:false, showFacebookButton:true, showTwitterButton:true, showDoodleGodBanner:false, showStartButton:true, showDoodleGodFlash:false, bigAdType:"iphone", minLoadingTime:3, useMochiAd:false, useMochiAPI:false, useCPMStar:false, useMochiBot:true, usePlaytomic:false, gameActive:true};
public static var mochiDefaults:Object = {showBigIphoneAd:true, showAppStoreBadge:true, showSmallIphoneIcon:true, showMoreGames:true, showScoresButton:true, showFacebookButton:true, showTwitterButton:true, showDoodleGodBanner:false, showStartButton:false, showDoodleGodFlash:true, bigAdType:"iphone", minLoadingTime:10, useMochiAd:true, useMochiAPI:true, useCPMStar:false, useMochiBot:true, usePlaytomic:false, gameActive:true};
public static var newgroudsDefaults:Object = {showBigIphoneAd:true, showAppStoreBadge:true, showSmallIphoneIcon:true, showMoreGames:true, showScoresButton:true, showFacebookButton:true, showTwitterButton:true, showDoodleGodBanner:false, showStartButton:true, showDoodleGodFlash:true, bigAdType:"iphone", minLoadingTime:10, useMochiAd:false, useMochiAPI:false, useCPMStar:true, useMochiBot:true, usePlaytomic:true, gameActive:true};
public static var ninjakiwiDefauls:Object = {showBigIphoneAd:true, showAppStoreBadge:true, showSmallIphoneIcon:true, showMoreGames:false, showScoresButton:true, showFacebookButton:true, showTwitterButton:true, showDoodleGodBanner:false, showStartButton:true, showDoodleGodFlash:false, bigAdType:"iphone", minLoadingTime:3, useMochiAd:false, useMochiAPI:true, useCPMStar:false, useMochiBot:true, usePlaytomic:true, gameActive:true};
public static var config:Config;
public static var configUrl:String;
public static var this_stage;
public function Document(){
super();
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6);
Security.allowDomain("*");
this_stage = stage;
parseDomain(this);
updateOptions();
}
public function handleSystemsReady():void{
var ngAd:*;
minLoadingTime = (_slot1.config.minLoadingTime * 1000);
isInitialized = true;
trace("isInitialized");
if (_slot1.IS_NEWGROUNDS){
trace("ng ad");
ngAd = new FlashAd();
ngAd.x = loader.cpmStarBox.x;
ngAd.y = loader.cpmStarBox.y;
loader.addChild(ngAd);
} else {
if (_slot1.config.useCPMStar){
loader.cpmStarBox.visible = true;
loader.cpmStarBox.addChild(new AdLoader(_slot1.CPM_START_ID));
isAdFinished = !(_slot1.config.showStartButton);
} else {
if (_slot1.config.useMochiAd){
MochiAd.showPreGameAd({clip:root, id:_slot1.MOCHI_GAME_ID, res:"640x480", ad_finished:function ():void{
trace("ad_finished");
isAdFinished = true;
tryStartGame();
}});
} else {
isAdFinished = !(_slot1.config.showStartButton);
};
};
};
tryStartGame();
}
public function onEnterFrame(e):void{
if (isError){
return;
};
var percentLoad:Number = (stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal);
var percentDelay:Number = ((minLoadingTime)>0) ? ((new Date().time - startTime) / minLoadingTime) : 1;
var percent:int = (Math.min(percentLoad, percentDelay) * 100);
loader.percents.text = (percent + "%");
if (percent >= 100){
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
isLoaded = true;
trace("isLoaded");
tryStartGame();
};
}
public function onStartButtonClick(e):void{
loader.startButton.removeEventListener(MouseEvent.CLICK, onStartButtonClick);
isAdFinished = true;
tryStartGame();
}
public function showStartButton():void{
if (((((_slot1.config.showStartButton) && (isLoaded))) && (!(loader.startButton.visible)))){
loader.startButton.visible = true;
loader.loading.visible = false;
loader.percents.visible = false;
loader.startButton.addEventListener(MouseEvent.CLICK, onStartButtonClick);
};
}
public function tryStartGame():void{
if (((((((isLoaded) && (isInitialized))) && (!(isStarted)))) && (isAdFinished))){
if (config.gameActive){
isStarted = true;
trace("Start game");
if (_slot1.IS_ARMORGAMES){
gotoAndStop("armorgames");
} else {
if (_slot1.IS_KONGREGATE){
gotoAndStop("game");
} else {
if (_slot1.IS_NEWGROUNDS){
gotoAndStop("newgrounds");
} else {
if (_slot1.IS_NINJAKIWI){
gotoAndStop("ninjakiwi");
} else {
gotoAndStop("game");
};
};
};
};
} else {
navigateToURL(new URLRequest("http://doodlegod.com"), "_blank");
};
} else {
showStartButton();
};
}
public function startGame():void{
addChild(new FlashApplication());
}
function frame1(){
stop();
if (_slot1.IS_ELITEGAMES){
elitegamesLogo.visible = true;
elitegamesLogo.addEventListener(MouseEvent.CLICK, function (e):void{
navigateToURL(new URLRequest(Documents.elitegamesLogoLink), "_blank");
});
} else {
elitegamesLogo.visible = false;
};
if (_slot1.IS_KONGREGATE){
kongregateLogo.visible = true;
kongregateLogo.addEventListener(MouseEvent.CLICK, function (e):void{
navigateToURL(new URLRequest(_slot1.kongreagateLogoLink), "_blank");
});
} else {
kongregateLogo.visible = false;
};
loader = loader2;
loader2.startButton.visible = false;
loader2.percents.visible = true;
loader2.percents.text = "0%";
loader2.doodleGodBanner.addEventListener(MouseEvent.CLICK, function (e):void{
navigateToURL(new URLRequest(_slot1.loaderBannerUrl), "_blank");
});
percent = 0;
isError = false;
isLoaded = false;
isInitialized = false;
isStarted = false;
isAdFinished = false;
startTime = new Date().time;
minLoadingTime = (_slot1.config.minLoadingTime * 1000);
_slot1.initSystems(this, handleSystemsReady);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
function frame2(){
armorGamesSplash.mouseChildren = false;
armorGamesSplash.buttonMode = true;
armorGamesSplash.addEventListener(MouseEvent.CLICK, function (e):void{
navigateToURL(new URLRequest("http://armorgames.com"), "_blank");
});
}
function frame3(){
kongregateSplash.mouseChildren = false;
kongregateSplash.buttonMode = true;
kongregateSplash.addEventListener(MouseEvent.CLICK, function (e):void{
navigateToURL(new URLRequest("http://www.kongregate.com/?referrer=Avaloid4JoyBits"), "_blank");
});
}
function frame4(){
ngSplash.mouseChildren = false;
ngSplash.buttonMode = true;
ngSplash.addEventListener(MouseEvent.CLICK, function (e):void{
navigateToURL(new URLRequest("http://newgrounds.com/"), "_blank");
});
}
function frame5(){
nkSplash.play();
nkSplash.mouseChildren = false;
nkSplash.buttonMode = true;
nkSplash.addEventListener(MouseEvent.CLICK, function (e):void{
navigateToURL(new URLRequest("http://ninjakiwi.com/"), "_blank");
});
}
function frame6(){
stop();
FakeWrapper.disableStageScale = true;
Assets.imagesAppDomain = loaderInfo.applicationDomain;
Assets.soundsAppDomain = loaderInfo.applicationDomain;
startGame();
}
private static function parseDomain(app):void{
if (((!(app)) || (!(app.stage)))){
return;
};
var url:String = app.stage.root.loaderInfo.loaderURL;
domain = url.split("//")[1].split("/")[0];
trace((("domain: '" + domain) + "'"));
if (domain != null){
if (((IS_ARMORGAMES) && ((domain.indexOf("armorgames.com") == -1)))){
_slot1.IS_ARMORGAMES = false;
_slot1.IS_KONGREGATE = true;
};
};
options_st = {};
options_st["sponsor"] = "kongregate";
if (domain.indexOf("armorgames.com") > -1){
_slot1.IS_ARMORGAMES = true;
_slot1.IS_KONGREGATE = false;
};
}
private static function updateOptions():void{
if (IS_ARMORGAMES){
if (!config){
config = new Config(armorGamesDefaults);
};
showMoreGamesTooltip = false;
moreGamesUrl = "http://armorgames.com";
moreGamesContextMenuUrl = "http://armorgames.com";
flashDoodleGodUrl = "http://armorgames.com/play/6313/doodle-god";
moreGamesContextMenuLabel = "More games on ArmorGames.com";
kongregateWalkthroughLink = "http://armorgames.com/guide/Doodle-God-2-Official-Video-and-Game-Guide";
showSubmitScoreButton = true;
} else {
if (IS_KONGREGATE){
if (!config){
config = new Config(kogregateDefaults);
};
showMoreGamesTooltip = false;
moreGamesUrl = kongreagateLogoLink;
moreGamesContextMenuUrl = "http://ls.gd/ddflashmoregms";
flashDoodleGodUrl = "http://ls.gd/4010";
moreGamesContextMenuLabel = "More games on Avaloid.com";
if (domain.indexOf("kongregate.com") == -1){
config.useMochiAPI = true;
};
if (config.useMochiAPI){
showSubmitScoreButton = true;
config.showScoresButton = true;
} else {
showSubmitScoreButton = false;
config.showScoresButton = false;
};
} else {
if (IS_MOCHI_DISTRIBUTION){
configUrl = "http://www.avaloid.com/custom/doodle-devil/config_mochi.json";
if (!config){
config = new Config(mochiDefaults);
};
showMoreGamesTooltip = true;
moreGamesUrl = "http://ls.gd/ddflashmoregms";
moreGamesContextMenuUrl = "http://ls.gd/ddflashmoregms";
flashDoodleGodUrl = "http://ls.gd/4010";
moreGamesContextMenuLabel = "More games on Avaloid.com";
if (config.useMochiAPI){
showSubmitScoreButton = true;
} else {
showSubmitScoreButton = false;
};
} else {
if (IS_NEWGROUNDS){
configUrl = "http://www.avaloid.com/custom/doodle-devil/config_newgrounds.json";
if (!config){
config = new Config(newgroudsDefaults);
};
showMoreGamesTooltip = false;
moreGamesUrl = "http://avaloid-n-joybits.newgrounds.com/";
moreGamesContextMenuUrl = "http://ls.gd/ddflashmoregms";
flashDoodleGodUrl = "http://ls.gd/4010";
moreGamesContextMenuLabel = "More games on Avaloid.com";
showSubmitScoreButton = true;
} else {
if (IS_ELITEGAMES){
configUrl = "http://www.avaloid.com/custom/doodle-devil/config.json";
if (!config){
config = new Config(generalDefauls);
};
showMoreGamesTooltip = true;
moreGamesUrl = "http://ls.gd/ddflashmoregms";
moreGamesContextMenuUrl = "http://ls.gd/ddflashmoregms";
flashDoodleGodUrl = "http://www.elite-games.net/games/2240/doodle-god.html";
moreGamesContextMenuLabel = "More games on Avaloid.com";
if (config.useMochiAPI){
showSubmitScoreButton = true;
} else {
showSubmitScoreButton = false;
};
} else {
if (IS_NINJAKIWI){
if (!config){
config = new Config(ninjakiwiDefauls);
};
showMoreGamesTooltip = false;
moreGamesUrl = "http://ninjakiwi.com";
moreGamesContextMenuUrl = "http://ls.gd/ddflashmoregms";
flashDoodleGodUrl = "http://ls.gd/4010";
moreGamesContextMenuLabel = "More games on Avaloid.com";
if (config.useMochiAPI){
showSubmitScoreButton = true;
} else {
showSubmitScoreButton = false;
};
} else {
configUrl = "http://www.avaloid.com/custom/doodle-devil/config.json";
if (!config){
config = new Config(generalDefauls);
};
showMoreGamesTooltip = true;
moreGamesUrl = "http://ls.gd/ddflashmoregms";
moreGamesContextMenuUrl = "http://ls.gd/ddflashmoregms";
flashDoodleGodUrl = "http://ls.gd/4010";
moreGamesContextMenuLabel = "More games on Avaloid.com";
if (config.useMochiAPI){
showSubmitScoreButton = true;
} else {
showSubmitScoreButton = false;
};
};
};
};
};
};
};
if (WALKTHROUGH){
config.showFacebookButton = false;
config.showTwitterButton = false;
};
}
public static function get randomSuffix():String{
return (("" + (Utils.nowSecondsInt % (3600 * 12))));
}
public static function initSystems(app:MovieClip, callback:Function):void{
var app = app;
var callback = callback;
parseDomain(app);
SimpleLoader.loadContent(((configUrl + "?") + randomSuffix), function (content):void{
var configObject:Object;
var configCollection:Object;
var content = content;
if (config){
trace(("url: " + configUrl));
trace(("config loaded: " + content));
trace("searching server config:");
configCollection = new Config(JSON.decode(content));
trace("config parsed");
configObject = findConfig(domain, configCollection);
if (!configObject){
trace(("config not found for domain: " + domain));
};
//unresolved jump
var _slot1 = e;
trace(("error parsing config: " + content));
if (configObject){
config = new Config(configObject);
} else {
trace("leaving default config..");
};
};
updateOptions();
onSystemsReady(app, callback);
});
}
private static function findConfig(domain:String, configCollection:Object):Object{
var configObj:Object;
for each (configObj in configCollection.configList) {
if (checkMask(domain, configObj.domains)){
trace(("found config for domain mask: " + configObj.domains));
return (configObj["config"]);
};
};
trace(("not found config for domain: " + domain));
return (configCollection["default"]);
}
private static function checkMask(domain:String, masks):Boolean{
var maskStr:String;
domain = StringUtil.trim(domain);
if ((masks is String)){
masks = [masks];
};
for each (maskStr in masks) {
maskStr = StringUtil.trim(maskStr);
if (maskStr.indexOf("*") == 0){
maskStr = maskStr.substr(1);
if (StringUtil.endsWith(domain, maskStr)){
return (true);
};
if (maskStr.indexOf(".") == 0){
maskStr = maskStr.substr(1);
return ((domain == maskStr));
};
} else {
return ((domain == maskStr));
};
};
return (false);
}
private static function onSystemsReady(app:MovieClip, callback:Function):void{
var ngAPI:*;
var onConnected:*;
var app = app;
var callback = callback;
if (WALKTHROUGH){
if (callback != null){
callback();
};
return;
};
if (config.useMochiBot){
MochiBot.track(app, MOCHI_BOT_ID);
};
if (config.usePlaytomic){
Log.Queue = false;
Log.View(PLAYTOMIC_SWF_ID, PLAYTOMIC_ID, app.root.loaderInfo.loaderURL);
};
if (config.useMochiAPI){
MochiServices.connect(MOCHI_GAME_ID, app, function (status:String):void{
trace(("MochiAPI error = " + status));
});
MochiScores.setBoardID(MOCHI_LEADERBOARD_ID);
};
if (IS_KONGREGATE){
Kongregate.init(app);
if (callback != null){
callback();
};
return;
};
if (IS_ARMORGAMES){
ArmorGames.init(app, ARMORGAMES_DEV_KEY, ARMORGAMES_GAME_KEY);
if (callback != null){
callback();
};
return;
};
if (IS_NEWGROUNDS){
onConnected = function (event:APIEvent):void{
trace(("NG API connected: " + event.success));
ngAPI.removeEventListener(APIEvent.API_CONNECTED, onConnected);
if (callback != null){
callback();
};
};
ngAPI = API;
ngAPI.addEventListener(APIEvent.API_CONNECTED, onConnected);
ngAPI.connect(app.root.loaderInfo, NEWGROUNDS_API_ID, NEWGROUNDS_ENCRYPTION_KEY);
return;
};
if (callback != null){
callback();
};
}
public static function submitKongregateStats(score:Number, elementCount:Number, groupCount:Number, hintCount:Number, doodleBar:Boolean, games:Boolean):void{
if (((IS_KONGREGATE) && (Kongregate.api))){
trace("submitting Kongregate stats");
Kongregate.api.stats.submit("Score", score);
Kongregate.api.stats.submit("ElementCount", elementCount);
Kongregate.api.stats.submit("GroupCount", groupCount);
Kongregate.api.stats.submit("CurrentElementCount", elementCount);
Kongregate.api.stats.submit("CurrentHintCount", hintCount);
Kongregate.api.stats.submit("DoodleBar", doodleBar);
Kongregate.api.stats.submit("GodOfFun", games);
};
}
private static function checkNGMedal(medalName:String):Boolean{
var medal:Medal;
for each (medal in API.getMedals()) {
if ((((medal.name == medalName)) && (medal.unlocked))){
return (true);
};
};
return (false);
}
public static function unclockNGMedal(medalName:String):void{
if (!checkNGMedal(medalName)){
API.unlockMedal(medalName);
};
}
public static function submitNewgroudStats(allElemensCount:Number, score:Number, elementCount:Number, groupCount:Number, hintCount:Number, doodleBar:Boolean, games:Boolean):void{
if (((_slot1.IS_NEWGROUNDS) && (API))){
submitNewgroudScore(score);
if (elementCount >= (allElemensCount / 2)){
unclockNGMedal("Half Of Game");
};
if (elementCount >= 140){
unclockNGMedal("Creator of Technology");
};
if (doodleBar){
unclockNGMedal("Doodle Bar");
};
if (games){
unclockNGMedal("God Of Fun");
};
if (elementCount >= allElemensCount){
unclockNGMedal("Creator of Modernity");
};
if ((((elementCount >= allElemensCount)) && ((hintCount <= 1)))){
unclockNGMedal("All Game With No Hints");
};
};
}
public static function submitNewgroudScore(score:Number):void{
API.postScore(NEWGROUNDS_BOARD_NAME, score);
}
}
}//package
Section 418
//EpisodeScreenClass (EpisodeScreenClass)
package {
import flash.display.*;
public dynamic class EpisodeScreenClass extends MovieClip {
public var episode2:MovieClip;
public var episode1:MovieClip;
}
}//package
Section 419
//FacebookShareClass (FacebookShareClass)
package {
import flash.display.*;
public dynamic class FacebookShareClass extends SimpleButton {
}
}//package
Section 420
//FlashApplication (FlashApplication)
package {
public class FlashApplication extends Application {
public function FlashApplication(){
super();
}
override public function createInstance(className:String):Object{
return (new ((loaderInfo.applicationDomain.getDefinition(className) as Class)));
}
}
}//package
Section 421
//HelpScreenClass (HelpScreenClass)
package {
import flash.display.*;
public dynamic class HelpScreenClass extends MovieClip {
}
}//package
Section 422
//HintScreenClass (HintScreenClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class HintScreenClass extends MovieClip {
public var caption:TextField;
public var eye:MovieClip;
public var halo:MovieClip;
public var q1:MovieClip;
public var q2:MovieClip;
}
}//package
Section 423
//IntroClass (IntroClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class IntroClass extends MovieClip {
public var skip:SimpleButton;
public var earth:MovieClip;
public var eye:MovieClip;
public var fire:MovieClip;
public var halo:MovieClip;
public var air:MovieClip;
public var water:MovieClip;
public var idea:MovieClip;
public var subtitle:TextField;
}
}//package
Section 424
//IntroClass2 (IntroClass2)
package {
import flash.display.*;
import flash.text.*;
public dynamic class IntroClass2 extends MovieClip {
public var skip:SimpleButton;
public var caption:TextField;
public var planet2:MovieClip;
public var eye:MovieClip;
public var halo:MovieClip;
public var voidBkg2:MovieClip;
public var subtitle:TextField;
public var planetSmall:MovieClip;
public var void2:MovieClip;
public var voidBkg:MovieClip;
public var box:MovieClip;
public var stars:MovieClip;
}
}//package
Section 425
//IntroClass3 (IntroClass3)
package {
import flash.display.*;
import flash.text.*;
public dynamic class IntroClass3 extends MovieClip {
public var oops:MovieClip;
public var skip:SimpleButton;
public var caption:TextField;
public var eye:MovieClip;
public var wizzard:MovieClip;
public var halo:MovieClip;
public var dragon:MovieClip;
public var crack:MovieClip;
public var subtitle:TextField;
public var comms:MovieClip;
public var crack1:MovieClip;
public var crack2:MovieClip;
public var building:MovieClip;
}
}//package
Section 426
//IphoneBigAdDevilClass (IphoneBigAdDevilClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class IphoneBigAdDevilClass extends MovieClip {
public var caption:TextField;
public var text1:TextField;
public var youtube:SimpleButton;
public var text2:TextField;
public var checkItOut:MovieClip;
public var continueButton:MovieClip;
public var checkoutButton:SimpleButton;
public var iphone:MovieClip;
public var rect1:MovieClip;
public var bkg:MovieClip;
public var ipad:MovieClip;
}
}//package
Section 427
//IphoneBigAdGodClass (IphoneBigAdGodClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class IphoneBigAdGodClass extends MovieClip {
public var kongregateLogo:SimpleButton;
public var caption:TextField;
public var text1:TextField;
public var youtube:SimpleButton;
public var text2:TextField;
public var text3:TextField;
public var checkItOut:MovieClip;
public var continueButton:ClickToContinueClass;
public var checkoutButton:SimpleButton;
public var iphone:MovieClip;
public var rect1:MovieClip;
public var bkg:MovieClip;
public var ipad:MovieClip;
public var moreGames:MoreGamesClass;
}
}//package
Section 428
//IphoneSmallClass (IphoneSmallClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class IphoneSmallClass extends MovieClip {
public var tooltip:TextField;
}
}//package
Section 429
//MainMenuClass (MainMenuClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class MainMenuClass extends MovieClip {
public var appStoreTooltip:TextField;
public var kongregateLogo:SimpleButton;
public var logo:MovieClip;
public var jbTooltip:TextField;
public var alco:MovieClip;
public var walkthrough_Play:SimpleButton;
public var devicesTooltip:TextField;
public var appStore:SimpleButton;
public var menuBar2:MovieClip;
public var snake:MovieClip;
public var resetWarning:TextField;
public var walkthrough_3:SimpleButton;
public var menuBar1:MovieClip;
public var bkg:MovieClip;
public var walkthrough:MovieClip;
public var moreGamesTooltip:TextField;
public var ninjakiwiLogo:SimpleButton;
public var walkthrough_1_2:SimpleButton;
public var ngLogo:SimpleButton;
public var moreGames:MoreGamesClass;
public var loading:TextField;
public var messageBkg:MovieClip;
public var armorGamesLogo:SimpleButton;
public var devicesButton:SimpleButton;
}
}//package
Section 430
//MenuHelpScreenClass (MenuHelpScreenClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class MenuHelpScreenClass extends MovieClip {
public var caption:TextField;
public var continueButton:ClickToContinueClass;
}
}//package
Section 431
//MoreGamesClass (MoreGamesClass)
package {
import flash.display.*;
public dynamic class MoreGamesClass extends MovieClip {
}
}//package
Section 432
//NewElementCreatedClass (NewElementCreatedClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class NewElementCreatedClass extends MovieClip {
public var text:TextField;
}
}//package
Section 433
//NewElementHaloClass (NewElementHaloClass)
package {
import flash.display.*;
public dynamic class NewElementHaloClass extends MovieClip {
}
}//package
Section 434
//QuoteClass (QuoteClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class QuoteClass extends MovieClip {
public var author:TextField;
public var text:TextField;
}
}//package
Section 435
//ReactionHistoryClass (ReactionHistoryClass)
package {
import flash.display.*;
public dynamic class ReactionHistoryClass extends MovieClip {
}
}//package
Section 436
//ToolbarClass (ToolbarClass)
package {
import flash.display.*;
import flash.text.*;
public dynamic class ToolbarClass extends MovieClip {
public var hintCooldownText:TextField;
public var help:SimpleButton;
public var log:SimpleButton;
public var hint:SimpleButton;
public var soundOnButton:SimpleButton;
public var hintCooldown:SimpleButton;
public var toMenu:SimpleButton;
public var balloon2:Balloon2Class;
public var balloon3:Balloon3Class;
public var hintCooldown2:SimpleButton;
public var hint2:SimpleButton;
public var balloon1:Balloon1Class;
public var soundOffButton:SimpleButton;
public var back:SimpleButton;
}
}//package
Section 437
//TutorialClass (TutorialClass)
package {
import flash.display.*;
public dynamic class TutorialClass extends MovieClip {
public var clickElement:MovieClip;
public var clickGroupRight:MovieClip;
public var clickGroupLeft:MovieClip;
public var goal:MovieClip;
public var newElementLeft:MovieClip;
public var newElementRight:MovieClip;
}
}//package
Section 438
//TweetButtonClass2 (TweetButtonClass2)
package {
import flash.display.*;
public dynamic class TweetButtonClass2 extends SimpleButton {
}
}//package