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

<div style="position:absolute;top:-99px;left:-99px;"><img src="https://tools.swfchan.com/stathit.asp?noj=FRM66289508-17DC&rnd=66289508" width="1" height="1"></div>

armorgames doodle-god-2-11411.swf

This is the info page for
Flash #263947

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


Text
<p align="left"><font face="Lamebrain (BRK)" size="35" color="#4e595d" letterSpacing="0.000000" kerning="1">100%</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="35" color="#43565d" letterSpacing="0.000000" kerning="1">Loading:</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="35" color="#ffffff" letterSpacing="0.000000" kerning="1">START</font></p>

Medal Popup
Place this clip on the root of your movie,
spanning any frames where medals are
called. (this clip is hidden)

MEDAL GET!

100pts

High Scores

X:

UserName

Score

Today

Today

Today

This Week

This Week

This Month

This Month

This Year

This Year

All-Time

All-Time

<p align="left"><font face="Lamebrain (BRK)" size="25" color="#0000ff" letterSpacing="0.000000" kerning="1">Goal</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="25" color="#0000ff" letterSpacing="0.000000" kerning="1">Click group to expand</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="25" color="#0000ff" letterSpacing="0.000000" kerning="1">Click group to expand</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="25" color="#0000ff" letterSpacing="0.000000" kerning="1">Click </font></p><p align="center"><font face="Lamebrain (BRK)" size="25" color="#0000ff" letterSpacing="0.000000" kerning="1">element</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="25" color="#0000ff" letterSpacing="0.000000" kerning="1">New element in this group</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="25" color="#0000ff" letterSpacing="0.000000" kerning="1">New element in this group</font></p>

<p align="center"><font face="04b03b" size="8" color="#333333" letterSpacing="0.000000" kerning="1">0:00</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#281400" letterSpacing="0.000000" kerning="1">Reactions history:</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="22" color="#281400" letterSpacing="0.000000" kerning="1">It&apos;s no crime to steal from a thief</font></p>

<p align="right"><font face="Lamebrain (BRK)" size="15" color="#281400" letterSpacing="0.000000" kerning="1">William Shakespeare</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#990000" letterSpacing="0.000000" kerning="1">(new elements created)</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="18" color="#000000" letterSpacing="0.000000" kerning="1">Did you know that Doodle God for your iPhone/iPod contains TWO times more content than current Flash version !</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="30" color="#fc421b" letterSpacing="2.000000" kerning="1">CLICK NOW</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#000000" letterSpacing="0.000000" kerning="1">* 300+ elements and reactions;</font></p><p align="left"><font face="Lamebrain (BRK)" size="18" color="#000000" letterSpacing="0.000000" kerning="1">* 4 episodes including World of Magic;</font></p><p align="left"><font face="Lamebrain (BRK)" size="18" color="#000000" letterSpacing="0.000000" kerning="1">* Awesome Quest mode (3 quests);</font></p><p align="left"><font face="Lamebrain (BRK)" size="18" color="#000000" letterSpacing="0.000000" kerning="1">* 2 arcade minigames, unlimited fun;</font></p><p align="left"><font face="Lamebrain (BRK)" size="18" color="#000000" letterSpacing="0.000000" kerning="1">* Advanced Hint system, improved Gameplay!</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="16" color="#000000" letterSpacing="0.000000" kerning="1">* 248 elements in 26 categories</font></p><p align="left"><font face="Lamebrain (BRK)" size="16" color="#000000" letterSpacing="0.000000" kerning="1">* Fantasy World pack with 50+ elements</font></p><p align="left"><font face="Lamebrain (BRK)" size="16" color="#000000" letterSpacing="0.000000" kerning="1">* MatchTrix mini-game for arcade fans</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="25" color="#281400" letterSpacing="0.000000" kerning="1">Download Doodle God on your iPhone / iPod</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="25" color="#ffffff" letterSpacing="0.000000" kerning="1">Download Doodle Devil on your iPhone / iPod</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">NOTE, that iPhone game has maximum priority in getting updates ! </font></p>

<p align="left"><font face="Lamebrain (BRK)" size="17" color="#ffffff" letterSpacing="0.000000" kerning="1">The most interesting features of the lastest update:</font></p><p align="left"></p><p align="left"><font face="Lamebrain (BRK)" size="17" color="#ffffff" letterSpacing="0.000000" kerning="1">* Brand new elements and reactions</font></p><p align="left"><font face="Lamebrain (BRK)" size="17" color="#ffffff" letterSpacing="0.000000" kerning="1">* Earn money with gambling DevilSlots</font></p><p align="left"><font face="Lamebrain (BRK)" size="17" color="#ffffff" letterSpacing="0.000000" kerning="1">* OpenFeint, GameCenter support</font></p><p align="left"></p><p align="left"><font face="Lamebrain (BRK)" size="17" color="#ffffff" letterSpacing="0.000000" kerning="1">Wallpapers, additional music themes and many more on your iOS-device !</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#281400" letterSpacing="0.000000" kerning="1">Some of these elements may react:</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#281400" letterSpacing="0.000000" kerning="1">000</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#281400" letterSpacing="0.000000" kerning="1">Elements:</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#281400" letterSpacing="0.000000" kerning="1">/</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#281400" letterSpacing="0.000000" kerning="1">000</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#281400" letterSpacing="0.000000" kerning="1">00</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#281400" letterSpacing="0.000000" kerning="1">Groups: </font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#281400" letterSpacing="0.000000" kerning="1">/</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="18" color="#281400" letterSpacing="0.000000" kerning="1">00</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="22" color="#281400" letterSpacing="0.000000" kerning="1">12345</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="22" color="#281400" letterSpacing="0.000000" kerning="1">Score:</font></p>

<p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">Got an iPhone? Well, this game is here:</font></p><p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">http://LS.GD/DG</font></p>

<p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">Click here to see all available phones with Doodle God!</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="25" color="#333333" letterSpacing="0.000000" kerning="1">Instructions:</font></p>

<p align="center"><font face="Arial" size="15" color="#000000" letterSpacing="0.000000" kerning="1">Check Out </font></p><p align="center"><font face="Arial" size="15" color="#000000" letterSpacing="0.000000" kerning="1">updated </font></p><p align="center"><font face="Arial" size="15" color="#000000" letterSpacing="0.000000" kerning="1">iPhone version</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">What if I create Pholosopher&apos;s Stone?</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">But how?</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="25" color="#000000" letterSpacing="0.800000" kerning="1">Episode 1</font></p>

<p align="left"><font face="Lamebrain (BRK)" size="25" color="#000000" letterSpacing="0.800000" kerning="1">Episode 2 and 3</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#2834ea" letterSpacing="0.800000" kerning="1">It&apos;s highly recommended for new players to start from Episode 1</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#ab100e" letterSpacing="0.800000" kerning="1">You can skip Episode 1</font></p><p align="center"><font face="Lamebrain (BRK)" size="20" color="#ab100e" letterSpacing="0.800000" kerning="1"> if you completed previous Doodle God game</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="15" color="#000000" letterSpacing="0.500000" kerning="1">* You can always return to this screen by clicking &quot;Reset&quot; button in the main menu</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#000000" letterSpacing="0.800000" kerning="1">Start from the beginning</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#000000" letterSpacing="0.800000" kerning="1">Skip creating</font></p><p align="center"><font face="Lamebrain (BRK)" size="20" color="#000000" letterSpacing="0.800000" kerning="1">first 116 elements</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="25" color="#281400" letterSpacing="0.000000" kerning="1">Click on your favorite device:</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">What if I combined the basic</font></p><p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">elements to create new ones?</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">skip &gt;</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">Episode 3:</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">What if I combined the basic</font></p><p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">elements to create new ones?</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">Episode 2:</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">What if I combined the basic</font></p><p align="center"><font face="Lamebrain (BRK)" size="20" color="#333333" letterSpacing="0.000000" kerning="1">elements to create new ones?</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="19" color="#990000" letterSpacing="0.000000" kerning="1">Click &apos;Reset&apos; again if you really want to drop all discovered elements</font></p>

<p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">Got an iPhone? Well, this game is here:</font></p><p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">http://LS.GD/DG</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="40" color="#666666" letterSpacing="0.000000" kerning="1">Loading..</font></p>

<p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">More great games by JoyBits at:</font></p><p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">http://LS.GD/JBMG</font></p>

<p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">Click here to see all available phones with Doodle God!</font></p>

<p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">Developed by JoyBits</font></p><p align="center"><font face="Arial" size="14" color="#000000" letterSpacing="0.000000" kerning="1">doodlegod.com</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="25" color="#000000" letterSpacing="0.000000" kerning="1">See Episodes 1 + 2</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="25" color="#000000" letterSpacing="0.000000" kerning="1">See Episode 3</font></p>

<p align="center"><font face="Lamebrain (BRK)" size="25" color="#000000" letterSpacing="0.000000" kerning="1">PLAY DOODLE GOD 2</font></p>

www.kongregate.com

ActionScript [AS3]

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

Library Items

Symbol 1 GraphicUsed by:2 14 15 447 771 799  Timeline
Symbol 2 MovieClipUses:1Used by:3
Symbol 3 MovieClipUses:2Used by:19
Symbol 4 BitmapUsed by:6 701
Symbol 5 BitmapUsed by:6 692
Symbol 6 GraphicUses:4 5Used by:19
Symbol 7 FontUsed by:8 9 13 343 345 349 352 354 356 401 406 407 409 435 436 441 442 443 484 486 487 509 510 511 512 513 515 516 517 518 523 524 536 542 549 557 558 559 560 561 570 571 575 626 630 633 634 668 690 703 705 748 750 752
Symbol 8 EditableTextUses:7Used by:19
Symbol 9 EditableTextUses:7Used by:19
Symbol 10 BitmapUsed by:11
Symbol 11 GraphicUses:10Used by:12 15 749 751 753
Symbol 12 MovieClipUses:11Used by:15
Symbol 13 EditableTextUses:7Used by:15
Symbol 14 MovieClipUses:1Used by:15 742 746
Symbol 15 ButtonUses:12 13 14 11 1Used by:19
Symbol 16 BitmapUsed by:17
Symbol 17 GraphicUses:16Used by:18
Symbol 18 ButtonUses:17Used by:19
Symbol 19 MovieClipUses:3 6 8 9 15 18Used by:Timeline
Symbol 20 BitmapUsed by:21
Symbol 21 GraphicUses:20Used by:22
Symbol 22 ButtonUses:21Used by:Timeline
Symbol 23 BitmapUsed by:24
Symbol 24 GraphicUses:23Used by:25 26
Symbol 25 MovieClipUses:24Used by:26
Symbol 26 ButtonUses:25 24Used by:461 754  Timeline
Symbol 27 BinaryData {model.Model__QuotesCSVFileClass}
Symbol 28 BinaryData {model.Model__ReactionsCSVFileClass3}
Symbol 29 BinaryData {model.Model__ReactionsCSVFileClass2}
Symbol 30 BinaryData {model.Model__ReactionsCSVFileClass1}
Symbol 31 BinaryData {model.Model__ElementsCSVFileClass}
Symbol 32 BinaryData {model.Model__GroupsCSVFileClass}
Symbol 33 GraphicUsed by:48
Symbol 34 GraphicUsed by:35
Symbol 35 MovieClipUses:34Used by:48
Symbol 36 GraphicUsed by:48
Symbol 37 GraphicUsed by:40
Symbol 38 GraphicUsed by:40
Symbol 39 GraphicUsed by:40
Symbol 40 ButtonUses:37 38 39Used by:48 102
Symbol 41 BitmapUsed by:42
Symbol 42 GraphicUses:41Used by:48 102
Symbol 44 GraphicUsed by:48 77
Symbol 45 GraphicUsed by:48
Symbol 46 GraphicUsed by:47
Symbol 47 MovieClip {MedalPopup_fla.NewgroundsAPIAsset_Load_Indicator_6}Uses:46Used by:48
Symbol 48 MovieClip {MedalPopup_fla.NewgroundsAPIAsset_FlashAd_Container_26}Uses:33 35 36 40 42 44 45 47Used by:49
Symbol 49 MovieClip {com.newgrounds.components.FlashAd}Uses:48
Symbol 50 Bitmap {screens.ReactionsLogScreen__PlusClass}
Symbol 51 Bitmap {screens.ReactionsLogScreen__EqualClass}
Symbol 52 Bitmap {screens.Intro__QuestionClass}
Symbol 53 GraphicUsed by:67
Symbol 54 FontUsed by:56
Symbol 55 FontUsed by:56
Symbol 56 TextUses:54 55Used by:67
Symbol 57 GraphicUsed by:58
Symbol 58 MovieClipUses:57Used by:67
Symbol 59 FontUsed by:60 66
Symbol 60 EditableTextUses:59Used by:67
Symbol 61 FontUsed by:62 63
Symbol 62 TextUses:61Used by:67
Symbol 63 EditableTextUses:61Used by:67
Symbol 64 GraphicUsed by:65
Symbol 65 MovieClipUses:64Used by:67
Symbol 66 EditableTextUses:59Used by:67
Symbol 67 MovieClip {com.newgrounds.components.MedalPopup}Uses:53 56 58 60 62 63 65 66
Symbol 68 GraphicUsed by:102
Symbol 69 FontUsed by:70
Symbol 70 EditableTextUses:69Used by:102
Symbol 71 GraphicUsed by:102
Symbol 72 FontUsed by:73 74 75 80 86 87 89 90 92 93 95 96 98 99
Symbol 73 EditableTextUses:72Used by:77
Symbol 74 EditableTextUses:72Used by:77
Symbol 75 EditableTextUses:72Used by:77
Symbol 76 GraphicUsed by:77
Symbol 77 MovieClipUses:44 73 74 75 76Used by:78
Symbol 78 MovieClipUses:77Used by:102
Symbol 79 GraphicUsed by:88 91 94 97 100 101
Symbol 80 EditableTextUses:72Used by:101
Symbol 81 GraphicUsed by:84
Symbol 82 GraphicUsed by:84
Symbol 83 GraphicUsed by:84
Symbol 84 ButtonUses:81 82 83Used by:101
Symbol 85 GraphicUsed by:101
Symbol 86 TextUses:72Used by:88
Symbol 87 TextUses:72Used by:88
Symbol 88 ButtonUses:86 79 87Used by:101
Symbol 89 TextUses:72Used by:91
Symbol 90 TextUses:72Used by:91
Symbol 91 ButtonUses:89 79 90Used by:101
Symbol 92 TextUses:72Used by:94
Symbol 93 TextUses:72Used by:94
Symbol 94 ButtonUses:92 79 93Used by:101
Symbol 95 TextUses:72Used by:97
Symbol 96 TextUses:72Used by:97
Symbol 97 ButtonUses:95 79 96Used by:101
Symbol 98 TextUses:72Used by:100
Symbol 99 TextUses:72Used by:100
Symbol 100 ButtonUses:98 79 99Used by:101
Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39}Uses:79 80 84 85 88 91 94 97 100Used by:102
Symbol 102 MovieClip {com.newgrounds.components.ScoreTable}Uses:68 40 42 70 71 78 101
Symbol 103 Sound {wrong_click.wav}
Symbol 104 Sound {old_element_v4.wav}
Symbol 105 Sound {old_element_v3.wav}
Symbol 106 Sound {old_element_v2.wav}
Symbol 107 Sound {old_element_v1.wav}
Symbol 108 Sound {no.wav}
Symbol 109 Sound {new_element_v3.wav}
Symbol 110 Sound {new_element_v2.wav}
Symbol 111 Sound {new_element_v1.wav}
Symbol 112 Sound {music.mp3}
Symbol 113 Sound {move.wav}
Symbol 114 Sound {intro_3.mp3}
Symbol 115 Sound {intro_2.mp3}
Symbol 116 Sound {intro_1.mp3}
Symbol 117 Sound {hint.wav}
Symbol 118 Sound {flight.wav}
Symbol 119 Sound {flash_v4.wav}
Symbol 120 Sound {flash_v2.wav}
Symbol 121 Sound {flash_v1.wav}
Symbol 122 Sound {element_click.wav}
Symbol 123 Sound {click.wav}
Symbol 124 Bitmap {zombie.png}
Symbol 125 Bitmap {worm.png}
Symbol 126 Bitmap {work.png}
Symbol 127 Bitmap {wool.png}
Symbol 128 Bitmap {wood.png}
Symbol 129 Bitmap {wizard.png}
Symbol 130 Bitmap {white_russian.png}
Symbol 131 Bitmap {wheel.png}
Symbol 132 Bitmap {wheat.png}
Symbol 133 Bitmap {whale.png}
Symbol 134 Bitmap {werewolf.png}
Symbol 135 Bitmap {weeds.png}
Symbol 136 Bitmap {weapon.png}
Symbol 137 Bitmap {water.png}
Symbol 138 Bitmap {warrior.png}
Symbol 139 Bitmap {void.png}
Symbol 140 Bitmap {vodka.png}
Symbol 141 Bitmap {virus.png}
Symbol 142 Bitmap {vampire.png}
Symbol 143 Bitmap {ufo.png}
Symbol 144 Bitmap {typewriter.png}
Symbol 145 Bitmap {tv.png}
Symbol 146 Bitmap {turtle.png}
Symbol 147 Bitmap {tree.png}
Symbol 148 Bitmap {treant.png}
Symbol 149 Bitmap {tools.png}
Symbol 150 Bitmap {tobacco.png}
Symbol 151 Bitmap {thunderbird.png}
Symbol 152 Bitmap {tequila.png}
Symbol 153 Bitmap {team.png}
Symbol 154 Bitmap {tavern.png}
Symbol 155 Bitmap {swamp.png}
Symbol 156 Bitmap {sunflower.png}
Symbol 157 Bitmap {sun.png}
Symbol 158 Bitmap {sulfur.png}
Symbol 159 Bitmap {sugar.png}
Symbol 160 Bitmap {storm.png}
Symbol 161 Bitmap {stone.png}
Symbol 162 Bitmap {steam_ship.png}
Symbol 163 Bitmap {steam_engine.png}
Symbol 164 Bitmap {steam.png}
Symbol 165 Bitmap {steak.png}
Symbol 166 Bitmap {spirit.png}
Symbol 167 Bitmap {soldier.png}
Symbol 168 Bitmap {snake.png}
Symbol 169 Bitmap {skyscraper.png}
Symbol 170 Bitmap {sin.png}
Symbol 171 Bitmap {ship.png}
Symbol 172 Bitmap {shell.png}
Symbol 173 Bitmap {sex.png}
Symbol 174 Bitmap {seeds.png}
Symbol 175 Bitmap {sea.png}
Symbol 176 Bitmap {scorpion.png}
Symbol 177 Bitmap {scientist.png}
Symbol 178 Bitmap {satellite.png}
Symbol 179 Bitmap {sand.png}
Symbol 180 Bitmap {saltpetre.png}
Symbol 181 Bitmap {salt.png}
Symbol 182 Bitmap {sailing_ship.png}
Symbol 183 Bitmap {russian_roulette.png}
Symbol 184 Bitmap {rum.png}
Symbol 185 Bitmap {rocket.png}
Symbol 186 Bitmap {rock_n_roll.png}
Symbol 187 Bitmap {religion.png}
Symbol 188 Bitmap {reed.png}
Symbol 189 Bitmap {rat.png}
Symbol 190 Bitmap {radiowave.png}
Symbol 191 Bitmap {radiation.png}
Symbol 192 Bitmap {quicksilver.png}
Symbol 193 Bitmap {policeman.png}
Symbol 194 Bitmap {poisoned_weapon.png}
Symbol 195 Bitmap {poison.png}
Symbol 196 Bitmap {plutonium.png}
Symbol 197 Bitmap {plasma.png}
Symbol 198 Bitmap {plankton.png}
Symbol 199 Bitmap {pirate.png}
Symbol 200 Bitmap {pie.png}
Symbol 201 Bitmap {phoenix.png}
Symbol 202 Bitmap {philosophers_stone.png}
Symbol 203 Bitmap {paper.png}
Symbol 204 Bitmap {palm.png}
Symbol 205 Bitmap {oil.png}
Symbol 206 Bitmap {octopus.png}
Symbol 207 Bitmap {nuclear_bomb.png}
Symbol 208 Bitmap {music.png}
Symbol 209 Bitmap {mushroom.png}
Symbol 210 Bitmap {moss.png}
Symbol 211 Bitmap {money.png}
Symbol 212 Bitmap {molotov_cocktail.png}
Symbol 213 Bitmap {milk.png}
Symbol 214 Bitmap {metal.png}
Symbol 215 Bitmap {medicine.png}
Symbol 216 Bitmap {mechanism.png}
Symbol 217 Bitmap {meat.png}
Symbol 218 Bitmap {manure.png}
Symbol 219 Bitmap {locomotive.png}
Symbol 220 Bitmap {lizard.png}
Symbol 221 Bitmap {livestock.png}
Symbol 222 Bitmap {limestone.png}
Symbol 223 Bitmap {lightbulb.png}
Symbol 224 Bitmap {life.png}
Symbol 225 Bitmap {law.png}
Symbol 226 Bitmap {lava.png}
Symbol 227 Bitmap {laser.png}
Symbol 228 Bitmap {knowledge.png}
Symbol 229 Bitmap {journalist.png}
Symbol 230 Bitmap {internet.png}
Symbol 231 Bitmap {ice_cream.png}
Symbol 232 Bitmap {ice.png}
Symbol 233 Bitmap {hut.png}
Symbol 234 Bitmap {hunter.png}
Symbol 235 Bitmap {human.png}
Symbol 236 Bitmap {house.png}
Symbol 237 Bitmap {hero.png}
Symbol 238 Bitmap {hangover.png}
Symbol 239 Bitmap {hacker.png}
Symbol 240 Bitmap {gunpowder.png}
Symbol 241 Bitmap {group_zoo.png}
Symbol 242 Bitmap {group_water.png}
Symbol 243 Bitmap {group_vehicles.png}
Symbol 244 Bitmap {group_tools.png}
Symbol 245 Bitmap {group_terra.png}
Symbol 246 Bitmap {group_social.png}
Symbol 247 Bitmap {group_science.png}
Symbol 248 Bitmap {group_protozoa.png}
Symbol 249 Bitmap {group_professions.png}
Symbol 250 Bitmap {group_plants.png}
Symbol 251 Bitmap {group_man.png}
Symbol 252 Bitmap {group_kitchen.png}
Symbol 253 Bitmap {group_horror.png}
Symbol 254 Bitmap {group_hitec.png}
Symbol 255 Bitmap {group_food.png}
Symbol 256 Bitmap {group_fire.png}
Symbol 257 Bitmap {group_civilization.png}
Symbol 258 Bitmap {group_bar.png}
Symbol 259 Bitmap {group_animals.png}
Symbol 260 Bitmap {group_air.png}
Symbol 261 Bitmap {group_abstract.png}
Symbol 262 Bitmap {grass.png}
Symbol 263 Bitmap {golem.png}
Symbol 264 Bitmap {gold.png}
Symbol 265 Bitmap {glass.png}
Symbol 266 Bitmap {ghoul.png}
Symbol 267 Bitmap {ghost.png}
Symbol 268 Bitmap {games.png}
Symbol 269 Bitmap {fun.png}
Symbol 270 Bitmap {freezer.png}
Symbol 271 Bitmap {flower.png}
Symbol 272 Bitmap {flour.png}
Symbol 273 Bitmap {fish.png}
Symbol 274 Bitmap {firearm.png}
Symbol 275 Bitmap {fire.png}
Symbol 276 Bitmap {fern.png}
Symbol 277 Bitmap {feather.png}
Symbol 278 Bitmap {fabric.png}
Symbol 279 Bitmap {energy.png}
Symbol 280 Bitmap {electricity.png}
Symbol 281 Bitmap {egg.png}
Symbol 282 Bitmap {earth.png}
Symbol 283 Bitmap {dust.png}
Symbol 284 Bitmap {dragon.png}
Symbol 285 Bitmap {dough.png}
Symbol 286 Bitmap {dolphin.png}
Symbol 287 Bitmap {dog.png}
Symbol 288 Bitmap {dinozaur.png}
Symbol 289 Bitmap {demigod.png}
Symbol 290 Bitmap {debt.png}
Symbol 291 Bitmap {death_metal.png}
Symbol 292 Bitmap {cyborg.png}
Symbol 293 Bitmap {credit_card.png}
Symbol 294 Bitmap {corpse.png}
Symbol 295 Bitmap {cookies.png}
Symbol 296 Bitmap {concrete.png}
Symbol 297 Bitmap {computer.png}
Symbol 298 Bitmap {commandments.png}
Symbol 299 Bitmap {coffee.png}
Symbol 300 Bitmap {coal.png}
Symbol 301 Bitmap {clothing.png}
Symbol 302 Bitmap {clock.png}
Symbol 303 Bitmap {clay.png}
Symbol 304 Bitmap {cigarette.png}
Symbol 305 Bitmap {cheese.png}
Symbol 306 Bitmap {ceramics.png}
Symbol 307 Bitmap {censored.png}
Symbol 308 Bitmap {cement.png}
Symbol 309 Bitmap {cellphone.png}
Symbol 310 Bitmap {cd.png}
Symbol 311 Bitmap {caviar.png}
Symbol 312 Bitmap {cat.png}
Symbol 313 Bitmap {cart.png}
Symbol 314 Bitmap {car.png}
Symbol 315 Bitmap {butterfly.png}
Symbol 316 Bitmap {bricks.png}
Symbol 317 Bitmap {bread.png}
Symbol 318 Bitmap {book.png}
Symbol 319 Bitmap {boiler.png}
Symbol 320 Bitmap {boat.png}
Symbol 321 Bitmap {blood.png}
Symbol 322 Bitmap {bird.png}
Symbol 323 Bitmap {beetle.png}
Symbol 324 Bitmap {beer.png}
Symbol 325 Bitmap {bank.png}
Symbol 326 Bitmap {bacteria.png}
Symbol 327 Bitmap {b_52.png}
Symbol 328 Bitmap {astronaut.png}
Symbol 329 Bitmap {assassin.png}
Symbol 330 Bitmap {ash.png}
Symbol 331 Bitmap {arable.png}
Symbol 332 Bitmap {apple.png}
Symbol 333 Bitmap {antibiotics.png}
Symbol 334 Bitmap {ant.png}
Symbol 335 Bitmap {animal.png}
Symbol 336 Bitmap {alien.png}
Symbol 337 Bitmap {alcoholic.png}
Symbol 338 Bitmap {airplane.png}
Symbol 339 Bitmap {air.png}
Symbol 340 Bitmap {absinthe.png}
Symbol 341 BitmapUsed by:342
Symbol 342 GraphicUses:341Used by:344 353
Symbol 343 EditableTextUses:7Used by:344
Symbol 344 MovieClipUses:342 343Used by:358
Symbol 345 EditableTextUses:7Used by:348
Symbol 346 BitmapUsed by:347 350
Symbol 347 GraphicUses:346Used by:348 355
Symbol 348 MovieClipUses:345 347Used by:358
Symbol 349 EditableTextUses:7Used by:351
Symbol 350 GraphicUses:346Used by:351 357
Symbol 351 MovieClipUses:349 350Used by:358
Symbol 352 EditableTextUses:7Used by:353
Symbol 353 MovieClipUses:342 352Used by:358
Symbol 354 EditableTextUses:7Used by:355
Symbol 355 MovieClipUses:354 347Used by:358
Symbol 356 EditableTextUses:7Used by:357
Symbol 357 MovieClipUses:356 350Used by:358
Symbol 358 MovieClip {TutorialClass}Uses:344 348 351 353 355 357
Symbol 359 BitmapUsed by:360
Symbol 360 GraphicUses:359Used by:361
Symbol 361 ButtonUses:360Used by:400 532
Symbol 362 BitmapUsed by:363
Symbol 363 GraphicUses:362Used by:364
Symbol 364 ButtonUses:363Used by:400
Symbol 365 BitmapUsed by:366
Symbol 366 GraphicUses:365Used by:367
Symbol 367 ButtonUses:366Used by:400
Symbol 368 BitmapUsed by:369
Symbol 369 GraphicUses:368Used by:370 553
Symbol 370 ButtonUses:369Used by:400
Symbol 371 BitmapUsed by:372
Symbol 372 GraphicUses:371Used by:373
Symbol 373 MovieClip {Balloon1Class}Uses:372Used by:400
Symbol 374 BitmapUsed by:375
Symbol 375 GraphicUses:374Used by:376
Symbol 376 MovieClip {Balloon3Class}Uses:375Used by:400
Symbol 377 BitmapUsed by:378
Symbol 378 GraphicUses:377Used by:379
Symbol 379 MovieClip {Balloon2Class}Uses:378Used by:400
Symbol 380 BitmapUsed by:381
Symbol 381 GraphicUses:380Used by:382
Symbol 382 ButtonUses:381Used by:400
Symbol 383 BitmapUsed by:384
Symbol 384 GraphicUses:383Used by:385
Symbol 385 ButtonUses:384Used by:400
Symbol 386 BitmapUsed by:387
Symbol 387 GraphicUses:386Used by:388
Symbol 388 ButtonUses:387Used by:400
Symbol 389 FontUsed by:390
Symbol 390 EditableTextUses:389Used by:400
Symbol 391 BitmapUsed by:392
Symbol 392 GraphicUses:391Used by:393
Symbol 393 ButtonUses:392Used by:400
Symbol 394 BitmapUsed by:395
Symbol 395 GraphicUses:394Used by:396
Symbol 396 ButtonUses:395Used by:400
Symbol 397 BitmapUsed by:398
Symbol 398 GraphicUses:397Used by:399
Symbol 399 ButtonUses:398Used by:400
Symbol 400 MovieClip {ToolbarClass}Uses:361 364 367 370 373 376 379 382 385 388 390 393 396 399
Symbol 401 EditableTextUses:7Used by:402
Symbol 402 MovieClip {ReactionHistoryClass}Uses:401
Symbol 403 BitmapUsed by:404
Symbol 404 GraphicUses:403Used by:405
Symbol 405 MovieClip {NewElementHaloClass}Uses:404
Symbol 406 EditableTextUses:7Used by:408
Symbol 407 EditableTextUses:7Used by:408
Symbol 408 MovieClip {QuoteClass}Uses:406 407
Symbol 409 EditableTextUses:7Used by:410
Symbol 410 MovieClip {NewElementCreatedClass}Uses:409
Symbol 411 BitmapUsed by:412
Symbol 412 GraphicUses:411Used by:413 537
Symbol 413 MovieClip {HelpScreenClass}Uses:412
Symbol 414 BitmapUsed by:415
Symbol 415 GraphicUses:414Used by:416
Symbol 416 MovieClipUses:415Used by:461
Symbol 417 BitmapUsed by:418
Symbol 418 GraphicUses:417Used by:434 483
Symbol 419 BitmapUsed by:420
Symbol 420 GraphicUses:419Used by:421
Symbol 421 MovieClipUses:420Used by:434
Symbol 422 BitmapUsed by:423
Symbol 423 GraphicUses:422Used by:424
Symbol 424 MovieClipUses:423Used by:434
Symbol 425 BitmapUsed by:426
Symbol 426 GraphicUses:425Used by:427
Symbol 427 MovieClipUses:426Used by:434
Symbol 428 BitmapUsed by:429
Symbol 429 GraphicUses:428Used by:430
Symbol 430 MovieClipUses:429Used by:434
Symbol 431 BitmapUsed by:432
Symbol 432 GraphicUses:431Used by:433
Symbol 433 MovieClipUses:432Used by:434
Symbol 434 MovieClipUses:418 421 424 427 430 433Used by:461
Symbol 435 EditableTextUses:7Used by:461
Symbol 436 EditableTextUses:7Used by:440
Symbol 437 BitmapUsed by:438
Symbol 438 GraphicUses:437Used by:439
Symbol 439 MovieClipUses:438Used by:440
Symbol 440 MovieClipUses:436 439Used by:461 494
Symbol 441 EditableTextUses:7Used by:461
Symbol 442 EditableTextUses:7Used by:461
Symbol 443 EditableTextUses:7Used by:461
Symbol 444 BitmapUsed by:445
Symbol 445 GraphicUses:444Used by:446
Symbol 446 MovieClip {MoreGamesClass}Uses:445Used by:461 754
Symbol 447 MovieClipUses:1Used by:461 494
Symbol 448 BitmapUsed by:449
Symbol 449 GraphicUses:448Used by:450
Symbol 450 ButtonUses:449Used by:461
Symbol 451 BitmapUsed by:452
Symbol 452 GraphicUses:451Used by:453
Symbol 453 ButtonUses:452Used by:461
Symbol 454 BitmapUsed by:455
Symbol 455 GraphicUses:454Used by:456
Symbol 456 MovieClipUses:455Used by:457 485
Symbol 457 MovieClip {ClickToContinueClass}Uses:456Used by:461 537 588
Symbol 458 BitmapUsed by:459
Symbol 459 GraphicUses:458Used by:460
Symbol 460 MovieClipUses:459Used by:461
Symbol 461 MovieClip {IphoneBigAdGodClass}Uses:416 434 435 440 441 442 443 446 26 447 450 453 457 460
Symbol 462 BitmapUsed by:463
Symbol 463 GraphicUses:462Used by:464
Symbol 464 MovieClipUses:463Used by:494
Symbol 465 BitmapUsed by:466
Symbol 466 GraphicUses:465Used by:467
Symbol 467 ButtonUses:466Used by:494
Symbol 468 BitmapUsed by:469
Symbol 469 GraphicUses:468Used by:470
Symbol 470 MovieClipUses:469Used by:483
Symbol 471 BitmapUsed by:472
Symbol 472 GraphicUses:471Used by:473
Symbol 473 MovieClipUses:472Used by:483
Symbol 474 BitmapUsed by:475
Symbol 475 GraphicUses:474Used by:476
Symbol 476 MovieClipUses:475Used by:483
Symbol 477 BitmapUsed by:478
Symbol 478 GraphicUses:477Used by:479
Symbol 479 MovieClipUses:478Used by:483
Symbol 480 BitmapUsed by:481
Symbol 481 GraphicUses:480Used by:482
Symbol 482 MovieClipUses:481Used by:483
Symbol 483 MovieClipUses:418 470 473 476 479 482Used by:494
Symbol 484 EditableTextUses:7Used by:494
Symbol 485 MovieClipUses:456Used by:494
Symbol 486 EditableTextUses:7Used by:494
Symbol 487 EditableTextUses:7Used by:494
Symbol 488 BitmapUsed by:489
Symbol 489 GraphicUses:488Used by:490
Symbol 490 ButtonUses:489Used by:494
Symbol 491 BitmapUsed by:492
Symbol 492 GraphicUses:491Used by:493
Symbol 493 MovieClipUses:492Used by:494
Symbol 494 MovieClip {IphoneBigAdDevilClass}Uses:464 467 483 484 447 485 486 440 487 490 493
Symbol 495 BitmapUsed by:496
Symbol 496 GraphicUses:495Used by:497
Symbol 497 Button {FacebookShareClass}Uses:496
Symbol 498 BitmapUsed by:499 501
Symbol 499 GraphicUses:498Used by:500
Symbol 500 Button {ButtonUpClass}Uses:499
Symbol 501 GraphicUses:498Used by:502
Symbol 502 Button {ButtonDownClass}Uses:501
Symbol 503 BitmapUsed by:504
Symbol 504 GraphicUses:503Used by:505 632
Symbol 505 MovieClipUses:504Used by:532 537 667 691
Symbol 506 BitmapUsed by:507
Symbol 507 GraphicUses:506Used by:508
Symbol 508 ButtonUses:507Used by:532
Symbol 509 EditableTextUses:7Used by:532
Symbol 510 EditableTextUses:7Used by:514
Symbol 511 EditableTextUses:7Used by:514
Symbol 512 EditableTextUses:7Used by:514
Symbol 513 EditableTextUses:7Used by:514
Symbol 514 MovieClipUses:510 511 512 513Used by:532
Symbol 515 EditableTextUses:7Used by:519
Symbol 516 EditableTextUses:7Used by:519
Symbol 517 EditableTextUses:7Used by:519
Symbol 518 EditableTextUses:7Used by:519
Symbol 519 MovieClipUses:515 516 517 518Used by:532
Symbol 520 BitmapUsed by:521
Symbol 521 GraphicUses:520Used by:522
Symbol 522 ButtonUses:521Used by:532 754
Symbol 523 EditableTextUses:7Used by:525
Symbol 524 EditableTextUses:7Used by:525
Symbol 525 MovieClipUses:523 524Used by:532
Symbol 526 FontUsed by:527 531 538 704 706 714 715 797
Symbol 527 EditableTextUses:526Used by:532
Symbol 528 BitmapUsed by:529
Symbol 529 GraphicUses:528Used by:530
Symbol 530 ButtonUses:529Used by:532 754
Symbol 531 EditableTextUses:526Used by:532
Symbol 532 MovieClip {BkgClass}Uses:505 508 509 514 519 522 525 527 530 531 361
Symbol 533 BitmapUsed by:534
Symbol 534 GraphicUses:533Used by:535
Symbol 535 Button {TweetButtonClass2}Uses:534
Symbol 536 EditableTextUses:7Used by:537
Symbol 537 MovieClip {MenuHelpScreenClass}Uses:505 412 536 457
Symbol 538 EditableTextUses:526Used by:541
Symbol 539 BitmapUsed by:540
Symbol 540 GraphicUses:539Used by:541
Symbol 541 MovieClip {IphoneSmallClass}Uses:538 540
Symbol 542 EditableTextUses:7Used by:554
Symbol 543 BitmapUsed by:544
Symbol 544 GraphicUses:543Used by:545
Symbol 545 MovieClipUses:544Used by:554 667 691
Symbol 546 BitmapUsed by:547
Symbol 547 GraphicUses:546Used by:548
Symbol 548 MovieClipUses:547Used by:554 667 691
Symbol 549 EditableTextUses:7Used by:554
Symbol 550 BitmapUsed by:552
Symbol 551 BitmapUsed by:552
Symbol 552 GraphicUses:550 551Used by:554
Symbol 553 MovieClipUses:369Used by:554
Symbol 554 MovieClip {HintScreenClass}Uses:542 545 548 549 552 553
Symbol 555 BitmapUsed by:556
Symbol 556 GraphicUses:555Used by:572
Symbol 557 EditableTextUses:7Used by:572
Symbol 558 EditableTextUses:7Used by:572
Symbol 559 EditableTextUses:7Used by:572
Symbol 560 EditableTextUses:7Used by:572
Symbol 561 EditableTextUses:7Used by:572
Symbol 562 BitmapUsed by:563
Symbol 563 GraphicUses:562Used by:564
Symbol 564 MovieClipUses:563Used by:572
Symbol 565 BitmapUsed by:566
Symbol 566 GraphicUses:565Used by:572
Symbol 567 BitmapUsed by:568
Symbol 568 GraphicUses:567Used by:569
Symbol 569 MovieClipUses:568Used by:572
Symbol 570 EditableTextUses:7Used by:572
Symbol 571 EditableTextUses:7Used by:572
Symbol 572 MovieClip {EpisodeScreenClass}Uses:556 557 558 559 560 561 564 566 569 570 571
Symbol 573 BitmapUsed by:574
Symbol 574 GraphicUses:573Used by:588
Symbol 575 EditableTextUses:7Used by:588
Symbol 576 BitmapUsed by:577
Symbol 577 GraphicUses:576Used by:578
Symbol 578 MovieClipUses:577Used by:588
Symbol 579 BitmapUsed by:580
Symbol 580 GraphicUses:579Used by:581
Symbol 581 MovieClipUses:580Used by:588
Symbol 582 BitmapUsed by:583
Symbol 583 GraphicUses:582Used by:584
Symbol 584 MovieClipUses:583Used by:588
Symbol 585 BitmapUsed by:586
Symbol 586 GraphicUses:585Used by:587
Symbol 587 MovieClipUses:586Used by:588
Symbol 588 MovieClip {DeviceAdClass}Uses:574 575 578 581 584 587 457
Symbol 589 BitmapUsed by:590
Symbol 590 GraphicUses:589Used by:591
Symbol 591 MovieClipUses:590
Symbol 592 BitmapUsed by:593
Symbol 593 GraphicUses:592Used by:598
Symbol 594 BitmapUsed by:595
Symbol 595 GraphicUses:594Used by:598
Symbol 596 BitmapUsed by:597
Symbol 597 GraphicUses:596Used by:598
Symbol 598 MovieClipUses:593 595 597Used by:632
Symbol 599 BitmapUsed by:600
Symbol 600 GraphicUses:599Used by:605
Symbol 601 BitmapUsed by:602
Symbol 602 GraphicUses:601Used by:605
Symbol 603 BitmapUsed by:604
Symbol 604 GraphicUses:603Used by:605
Symbol 605 MovieClipUses:600 602 604Used by:632
Symbol 606 BitmapUsed by:607
Symbol 607 GraphicUses:606Used by:608
Symbol 608 MovieClipUses:607Used by:632
Symbol 609 BitmapUsed by:610
Symbol 610 GraphicUses:609Used by:611
Symbol 611 MovieClipUses:610Used by:632
Symbol 612 BitmapUsed by:613
Symbol 613 GraphicUses:612Used by:618
Symbol 614 BitmapUsed by:615
Symbol 615 GraphicUses:614Used by:618
Symbol 616 BitmapUsed by:617
Symbol 617 GraphicUses:616Used by:618
Symbol 618 MovieClipUses:613 615 617Used by:632
Symbol 619 BitmapUsed by:620
Symbol 620 GraphicUses:619Used by:625
Symbol 621 BitmapUsed by:622
Symbol 622 GraphicUses:621Used by:625
Symbol 623 BitmapUsed by:624
Symbol 624 GraphicUses:623Used by:625
Symbol 625 MovieClipUses:620 622 624Used by:632
Symbol 626 EditableTextUses:7Used by:632
Symbol 627 BitmapUsed by:628
Symbol 628 GraphicUses:627Used by:629
Symbol 629 MovieClipUses:628Used by:632
Symbol 630 EditableTextUses:7Used by:631
Symbol 631 ButtonUses:630Used by:632 667 691
Symbol 632 MovieClip {IntroClass}Uses:504 598 605 608 611 618 625 626 629 631
Symbol 633 EditableTextUses:7Used by:667
Symbol 634 EditableTextUses:7Used by:667
Symbol 635 BitmapUsed by:636
Symbol 636 GraphicUses:635Used by:637
Symbol 637 MovieClipUses:636Used by:667
Symbol 638 BitmapUsed by:639
Symbol 639 GraphicUses:638Used by:644
Symbol 640 BitmapUsed by:641
Symbol 641 GraphicUses:640Used by:644
Symbol 642 BitmapUsed by:643
Symbol 643 GraphicUses:642Used by:644
Symbol 644 MovieClipUses:639 641 643Used by:667
Symbol 645 BitmapUsed by:646
Symbol 646 GraphicUses:645Used by:647
Symbol 647 MovieClipUses:646Used by:667
Symbol 648 BitmapUsed by:649
Symbol 649 GraphicUses:648Used by:650
Symbol 650 MovieClipUses:649Used by:667
Symbol 651 BitmapUsed by:652
Symbol 652 GraphicUses:651Used by:653
Symbol 653 MovieClipUses:652Used by:667
Symbol 654 BitmapUsed by:655
Symbol 655 GraphicUses:654Used by:660
Symbol 656 BitmapUsed by:657
Symbol 657 GraphicUses:656Used by:660
Symbol 658 BitmapUsed by:659
Symbol 659 GraphicUses:658Used by:660
Symbol 660 MovieClipUses:655 657 659Used by:667
Symbol 661 BitmapUsed by:662
Symbol 662 GraphicUses:661Used by:663
Symbol 663 MovieClipUses:662Used by:667
Symbol 664 BitmapUsed by:665
Symbol 665 GraphicUses:664Used by:666
Symbol 666 MovieClipUses:665Used by:667
Symbol 667 MovieClip {IntroClass3}Uses:505 633 545 548 634 631 637 644 647 650 653 660 663 666
Symbol 668 EditableTextUses:7Used by:691
Symbol 669 BitmapUsed by:670
Symbol 670 GraphicUses:669Used by:671
Symbol 671 MovieClipUses:670Used by:691
Symbol 672 BitmapUsed by:673
Symbol 673 GraphicUses:672Used by:674
Symbol 674 MovieClipUses:673Used by:691
Symbol 675 BitmapUsed by:676
Symbol 676 GraphicUses:675Used by:677
Symbol 677 MovieClipUses:676Used by:691
Symbol 678 BitmapUsed by:679
Symbol 679 GraphicUses:678Used by:680
Symbol 680 MovieClipUses:679Used by:691
Symbol 681 BitmapUsed by:682
Symbol 682 GraphicUses:681Used by:683
Symbol 683 MovieClipUses:682Used by:691
Symbol 684 BitmapUsed by:685
Symbol 685 GraphicUses:684Used by:686
Symbol 686 MovieClipUses:685Used by:691
Symbol 687 BitmapUsed by:688
Symbol 688 GraphicUses:687Used by:689
Symbol 689 MovieClipUses:688Used by:691
Symbol 690 EditableTextUses:7Used by:691
Symbol 691 MovieClip {IntroClass2}Uses:505 668 671 674 677 680 683 686 689 690 631 545 548
Symbol 692 GraphicUses:5Used by:693
Symbol 693 MovieClipUses:692Used by:754
Symbol 694 BitmapUsed by:695
Symbol 695 GraphicUses:694Used by:700
Symbol 696 BitmapUsed by:697
Symbol 697 GraphicUses:696Used by:700
Symbol 698 BitmapUsed by:699
Symbol 699 GraphicUses:698Used by:700
Symbol 700 MovieClipUses:695 697 699Used by:754
Symbol 701 GraphicUses:4Used by:702
Symbol 702 MovieClipUses:701Used by:754
Symbol 703 EditableTextUses:7Used by:754
Symbol 704 EditableTextUses:526Used by:754
Symbol 705 EditableTextUses:7Used by:754
Symbol 706 EditableTextUses:526Used by:754
Symbol 707 BitmapUsed by:708
Symbol 708 GraphicUses:707Used by:713
Symbol 709 BitmapUsed by:710
Symbol 710 GraphicUses:709Used by:713
Symbol 711 BitmapUsed by:712
Symbol 712 GraphicUses:711Used by:713
Symbol 713 MovieClipUses:708 710 712Used by:754
Symbol 714 EditableTextUses:526Used by:754
Symbol 715 EditableTextUses:526Used by:754
Symbol 716 BitmapUsed by:717
Symbol 717 GraphicUses:716Used by:718
Symbol 718 MovieClipUses:717Used by:754
Symbol 719 GraphicUsed by:720
Symbol 720 ButtonUses:719Used by:723
Symbol 721 BitmapUsed by:722
Symbol 722 GraphicUses:721Used by:723
Symbol 723 MovieClipUses:720 722Used by:754
Symbol 724 BitmapUsed by:725
Symbol 725 GraphicUses:724Used by:726
Symbol 726 ButtonUses:725Used by:754
Symbol 727 BitmapUsed by:728
Symbol 728 GraphicUses:727Used by:729
Symbol 729 ButtonUses:728Used by:754
Symbol 730 BitmapUsed by:731
Symbol 731 GraphicUses:730Used by:732
Symbol 732 ButtonUses:731Used by:754
Symbol 733 BitmapUsed by:734
Symbol 734 GraphicUses:733Used by:735
Symbol 735 MovieClipUses:734Used by:742 746
Symbol 736 BitmapUsed by:737
Symbol 737 GraphicUses:736Used by:738
Symbol 738 MovieClipUses:737Used by:742
Symbol 739 BitmapUsed by:740
Symbol 740 GraphicUses:739Used by:741
Symbol 741 MovieClipUses:740Used by:742 746
Symbol 742 MovieClipUses:14 735 738 741Used by:754
Symbol 743 BitmapUsed by:744
Symbol 744 GraphicUses:743Used by:745
Symbol 745 MovieClipUses:744Used by:746
Symbol 746 MovieClipUses:14 735 745 741Used by:754
Symbol 747 ButtonUsed by:754
Symbol 748 EditableTextUses:7Used by:749
Symbol 749 ButtonUses:11 748Used by:754
Symbol 750 EditableTextUses:7Used by:751
Symbol 751 ButtonUses:11 750Used by:754
Symbol 752 EditableTextUses:7Used by:753
Symbol 753 ButtonUses:11 752Used by:754
Symbol 754 MovieClip {MainMenuClass}Uses:693 700 702 703 522 704 705 446 706 713 530 714 715 718 723 726 26 729 732 742 746 747 749 751 753Used by:Timeline
Symbol 755 GraphicUsed by:770
Symbol 756 GraphicUsed by:770
Symbol 757 GraphicUsed by:770
Symbol 758 SoundUsed by:770
Symbol 759 SoundUsed by:770
Symbol 760 GraphicUsed by:770
Symbol 761 GraphicUsed by:762
Symbol 762 MovieClipUses:761Used by:770
Symbol 763 SoundUsed by:770
Symbol 764 SoundUsed by:770
Symbol 765 SoundUsed by:770
Symbol 766 GraphicUsed by:767
Symbol 767 ButtonUses:766Used by:770
Symbol 768 SoundUsed by:770
Symbol 769 SoundUsed by:770
Symbol 770 MovieClip {doodlegod2_cs5_fla.ag_intro_mc_11}Uses:755 756 757 758 759 760 762 763 764 765 767 768 769Used by:Timeline
Symbol 771 MovieClipUses:1Used by:799
Symbol 772 GraphicUsed by:773
Symbol 773 ButtonUses:772Used by:799
Symbol 774 GraphicUsed by:799
Symbol 775 GraphicUsed by:776
Symbol 776 MovieClipUses:775Used by:794 799
Symbol 777 GraphicUsed by:778
Symbol 778 MovieClipUses:777Used by:793 799
Symbol 779 GraphicUsed by:780
Symbol 780 MovieClipUses:779Used by:787 793 794 799
Symbol 781 GraphicUsed by:782
Symbol 782 MovieClipUses:781Used by:787 793 794 799
Symbol 783 GraphicUsed by:784
Symbol 784 MovieClipUses:783Used by:787 793 794 799
Symbol 785 GraphicUsed by:786
Symbol 786 MovieClipUses:785Used by:787 793 794 799
Symbol 787 MovieClipUses:780 782 784 786Used by:799
Symbol 788 GraphicUsed by:799
Symbol 789 GraphicUsed by:790 799
Symbol 790 MovieClipUses:789Used by:799
Symbol 791 GraphicUsed by:799
Symbol 792 GraphicUsed by:794
Symbol 793 MovieClipUses:778 780 782 784 786Used by:794
Symbol 794 MovieClipUses:792 776 793 780 782 784 786Used by:799
Symbol 795 GraphicUsed by:796
Symbol 796 MovieClipUses:795Used by:799
Symbol 797 TextUses:526Used by:798
Symbol 798 MovieClipUses:797Used by:799
Symbol 799 MovieClip {doodlegod2_cs5_fla.Kongintro30fps_14}Uses:1 771 773 774 776 778 787 788 790 791 780 782 784 786 794 796 789 798Used by:Timeline
Symbol 800 GraphicUsed by:801
Symbol 801 ButtonUses:800Used by:843
Symbol 802 ShapeTweeningUsed by:804
Symbol 803 GraphicUsed by:804
Symbol 804 MovieClip {doodlegod2_cs5_fla.NGI_MASK_CUBE_33}Uses:802 803Used by:805
Symbol 805 MovieClip {doodlegod2_cs5_fla.NGI_MASK_IN_32}Uses:804Used by:808 843
Symbol 806 GraphicUsed by:807
Symbol 807 MovieClipUses:806Used by:808 843
Symbol 808 MovieClipUses:805 807Used by:843
Symbol 809 GraphicUsed by:810
Symbol 810 MovieClipUses:809Used by:843
Symbol 811 GraphicUsed by:843
Symbol 812 GraphicUsed by:843
Symbol 813 GraphicUsed by:843
Symbol 814 GraphicUsed by:843
Symbol 815 GraphicUsed by:843
Symbol 816 GraphicUsed by:843
Symbol 817 GraphicUsed by:843
Symbol 818 GraphicUsed by:843
Symbol 819 GraphicUsed by:843
Symbol 820 GraphicUsed by:843
Symbol 821 GraphicUsed by:843
Symbol 822 GraphicUsed by:843
Symbol 823 GraphicUsed by:843
Symbol 824 GraphicUsed by:843
Symbol 825 GraphicUsed by:843
Symbol 826 GraphicUsed by:843
Symbol 827 GraphicUsed by:843
Symbol 828 GraphicUsed by:843
Symbol 829 GraphicUsed by:843
Symbol 830 GraphicUsed by:843
Symbol 831 GraphicUsed by:843
Symbol 832 GraphicUsed by:843
Symbol 833 GraphicUsed by:834
Symbol 834 MovieClipUses:833Used by:843
Symbol 835 GraphicUsed by:836
Symbol 836 MovieClipUses:835Used by:843
Symbol 837 GraphicUsed by:838
Symbol 838 MovieClipUses:837Used by:843
Symbol 839 GraphicUsed by:840
Symbol 840 MovieClipUses:839Used by:843
Symbol 841 GraphicUsed by:842
Symbol 842 MovieClipUses:841Used by:843
Symbol 843 MovieClip {doodlegod2_cs5_fla.NGI_INTRO_29}Uses:801 808 805 807 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 834 836 838 840 842 SS1Used by:Timeline
Streaming Sound 1Used by:Symbol 843 MovieClip {doodlegod2_cs5_fla.NGI_INTRO_29}

Instance Names

"loader2"Frame 1Symbol 19 MovieClip
"elitegamesLogo"Frame 1Symbol 22 Button
"kongregateLogo"Frame 1Symbol 26 Button
"armorGamesSplash"Frame 2Symbol 770 MovieClip {doodlegod2_cs5_fla.ag_intro_mc_11}
"kongregateSplash"Frame 3Symbol 799 MovieClip {doodlegod2_cs5_fla.Kongintro30fps_14}
"ngSplash"Frame 4Symbol 843 MovieClip {doodlegod2_cs5_fla.NGI_INTRO_29}
"cpmStarBox"Symbol 19 MovieClip Frame 1Symbol 3 MovieClip
"percents"Symbol 19 MovieClip Frame 1Symbol 8 EditableText
"loading"Symbol 19 MovieClip Frame 1Symbol 9 EditableText
"startButton"Symbol 19 MovieClip Frame 1Symbol 15 Button
"doodleGodBanner"Symbol 19 MovieClip Frame 1Symbol 18 Button
"adMask"Symbol 48 MovieClip {MedalPopup_fla.NewgroundsAPIAsset_FlashAd_Container_26} Frame 1Symbol 35 MovieClip
"ngLinkButton"Symbol 48 MovieClip {MedalPopup_fla.NewgroundsAPIAsset_FlashAd_Container_26} Frame 1Symbol 40 Button
"background"Symbol 49 MovieClip {com.newgrounds.components.FlashAd} Frame 1Symbol 48 MovieClip {MedalPopup_fla.NewgroundsAPIAsset_FlashAd_Container_26}
"medalNameText"Symbol 67 MovieClip {com.newgrounds.components.MedalPopup} Frame 10Symbol 60 EditableText
"medalValueText"Symbol 67 MovieClip {com.newgrounds.components.MedalPopup} Frame 10Symbol 63 EditableText
"medalContainer"Symbol 67 MovieClip {com.newgrounds.components.MedalPopup} Frame 10Symbol 65 MovieClip
"positionText"Symbol 77 MovieClip Frame 1Symbol 73 EditableText
"usernameText"Symbol 77 MovieClip Frame 1Symbol 74 EditableText
"scoreText"Symbol 77 MovieClip Frame 1Symbol 75 EditableText
"score_row_0"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_1"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_2"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_3"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_4"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_5"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_6"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_7"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_8"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"score_row_9"Symbol 78 MovieClip Frame 1Symbol 77 MovieClip
"periodText"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 1Symbol 80 EditableText
"periodListButton"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 1Symbol 84 Button
"periodListUpButton"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 2Symbol 84 Button
"period0"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 2Symbol 88 Button
"period1"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 2Symbol 91 Button
"period2"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 2Symbol 94 Button
"period3"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 2Symbol 97 Button
"period4"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 2Symbol 100 Button
"ngLinkButton"Symbol 102 MovieClip {com.newgrounds.components.ScoreTable} Frame 1Symbol 40 Button
"boardNameText"Symbol 102 MovieClip {com.newgrounds.components.ScoreTable} Frame 1Symbol 70 EditableText
"scoreRows"Symbol 102 MovieClip {com.newgrounds.components.ScoreTable} Frame 1Symbol 78 MovieClip
"periodList"Symbol 102 MovieClip {com.newgrounds.components.ScoreTable} Frame 1Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39}
"goal"Symbol 358 MovieClip {TutorialClass} Frame 1Symbol 344 MovieClip
"clickGroupLeft"Symbol 358 MovieClip {TutorialClass} Frame 1Symbol 348 MovieClip
"clickGroupRight"Symbol 358 MovieClip {TutorialClass} Frame 1Symbol 351 MovieClip
"clickElement"Symbol 358 MovieClip {TutorialClass} Frame 1Symbol 353 MovieClip
"newElementLeft"Symbol 358 MovieClip {TutorialClass} Frame 1Symbol 355 MovieClip
"newElementRight"Symbol 358 MovieClip {TutorialClass} Frame 1Symbol 357 MovieClip
"toMenu"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 361 Button
"hint"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 364 Button
"log"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 367 Button
"help"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 370 Button
"balloon1"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 373 MovieClip {Balloon1Class}
"balloon3"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 376 MovieClip {Balloon3Class}
"balloon2"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 379 MovieClip {Balloon2Class}
"soundOnButton"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 382 Button
"hint2"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 385 Button
"hintCooldown"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 388 Button
"hintCooldownText"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 390 EditableText
"back"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 393 Button
"soundOffButton"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 396 Button
"hintCooldown2"Symbol 400 MovieClip {ToolbarClass} Frame 1Symbol 399 Button
"text"Symbol 408 MovieClip {QuoteClass} Frame 1Symbol 406 EditableText
"author"Symbol 408 MovieClip {QuoteClass} Frame 1Symbol 407 EditableText
"text"Symbol 410 MovieClip {NewElementCreatedClass} Frame 1Symbol 409 EditableText
"screen1"Symbol 434 MovieClip Frame 1Symbol 421 MovieClip
"screen2"Symbol 434 MovieClip Frame 1Symbol 424 MovieClip
"screen3"Symbol 434 MovieClip Frame 1Symbol 427 MovieClip
"screen4"Symbol 434 MovieClip Frame 1Symbol 430 MovieClip
"screen5"Symbol 434 MovieClip Frame 1Symbol 433 MovieClip
"bkg"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 416 MovieClip
"iphone"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 434 MovieClip
"text1"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 435 EditableText
"checkItOut"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 440 MovieClip
"text2"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 441 EditableText
"text3"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 442 EditableText
"caption"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 443 EditableText
"moreGames"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 446 MovieClip {MoreGamesClass}
"kongregateLogo"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 26 Button
"rect1"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 447 MovieClip
"youtube"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 450 Button
"checkoutButton"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 453 Button
"continueButton"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 457 MovieClip {ClickToContinueClass}
"ipad"Symbol 461 MovieClip {IphoneBigAdGodClass} Frame 1Symbol 460 MovieClip
"screen1"Symbol 483 MovieClip Frame 1Symbol 470 MovieClip
"screen2"Symbol 483 MovieClip Frame 1Symbol 473 MovieClip
"screen3"Symbol 483 MovieClip Frame 1Symbol 476 MovieClip
"screen4"Symbol 483 MovieClip Frame 1Symbol 479 MovieClip
"screen5"Symbol 483 MovieClip Frame 1Symbol 482 MovieClip
"bkg"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 464 MovieClip
"checkoutButton"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 467 Button
"iphone"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 483 MovieClip
"caption"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 484 EditableText
"rect1"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 447 MovieClip
"continueButton"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 485 MovieClip
"text1"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 486 EditableText
"checkItOut"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 440 MovieClip
"text2"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 487 EditableText
"youtube"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 490 Button
"ipad"Symbol 494 MovieClip {IphoneBigAdDevilClass} Frame 1Symbol 493 MovieClip
"counter"Symbol 514 MovieClip Frame 1Symbol 510 EditableText
"caption"Symbol 514 MovieClip Frame 1Symbol 511 EditableText
"slash"Symbol 514 MovieClip Frame 1Symbol 512 EditableText
"total"Symbol 514 MovieClip Frame 1Symbol 513 EditableText
"counter"Symbol 519 MovieClip Frame 1Symbol 515 EditableText
"caption"Symbol 519 MovieClip Frame 1Symbol 516 EditableText
"slash"Symbol 519 MovieClip Frame 1Symbol 517 EditableText
"total"Symbol 519 MovieClip Frame 1Symbol 518 EditableText
"value"Symbol 525 MovieClip Frame 1Symbol 523 EditableText
"caption"Symbol 525 MovieClip Frame 1Symbol 524 EditableText
"bkg"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 505 MovieClip
"submitScoreButton"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 508 Button
"hintCaption"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 509 EditableText
"elementsCounter"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 514 MovieClip
"groupsCounter"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 519 MovieClip
"appStore"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 522 Button
"score"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 525 MovieClip
"appStoreTooltip"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 527 EditableText
"devicesButton"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 530 Button
"devicesTooltip"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 531 EditableText
"toMenu"Symbol 532 MovieClip {BkgClass} Frame 1Symbol 361 Button
"caption"Symbol 537 MovieClip {MenuHelpScreenClass} Frame 1Symbol 536 EditableText
"continueButton"Symbol 537 MovieClip {MenuHelpScreenClass} Frame 1Symbol 457 MovieClip {ClickToContinueClass}
"tooltip"Symbol 541 MovieClip {IphoneSmallClass} Frame 1Symbol 538 EditableText
"caption"Symbol 554 MovieClip {HintScreenClass} Frame 1Symbol 542 EditableText
"halo"Symbol 554 MovieClip {HintScreenClass} Frame 1Symbol 545 MovieClip
"eye"Symbol 554 MovieClip {HintScreenClass} Frame 1Symbol 548 MovieClip
"q1"Symbol 554 MovieClip {HintScreenClass} Frame 1Symbol 553 MovieClip
"q2"Symbol 554 MovieClip {HintScreenClass} Frame 1Symbol 553 MovieClip
"episode1"Symbol 572 MovieClip {EpisodeScreenClass} Frame 1Symbol 564 MovieClip
"episode2"Symbol 572 MovieClip {EpisodeScreenClass} Frame 1Symbol 569 MovieClip
"caption"Symbol 588 MovieClip {DeviceAdClass} Frame 1Symbol 575 EditableText
"iphone"Symbol 588 MovieClip {DeviceAdClass} Frame 1Symbol 578 MovieClip
"android"Symbol 588 MovieClip {DeviceAdClass} Frame 1Symbol 581 MovieClip
"windows7"Symbol 588 MovieClip {DeviceAdClass} Frame 1Symbol 584 MovieClip
"bada"Symbol 588 MovieClip {DeviceAdClass} Frame 1Symbol 587 MovieClip
"continueButton"Symbol 588 MovieClip {DeviceAdClass} Frame 1Symbol 457 MovieClip {ClickToContinueClass}
"earth"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 598 MovieClip
"water"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 605 MovieClip
"halo"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 608 MovieClip
"eye"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 611 MovieClip
"fire"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 618 MovieClip
"air"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 625 MovieClip
"subtitle"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 626 EditableText
"idea"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 629 MovieClip
"skip"Symbol 632 MovieClip {IntroClass} Frame 1Symbol 631 Button
"caption"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 633 EditableText
"halo"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 545 MovieClip
"eye"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 548 MovieClip
"subtitle"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 634 EditableText
"skip"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 631 Button
"building"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 637 MovieClip
"crack"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 644 MovieClip
"crack1"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 647 MovieClip
"crack2"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 650 MovieClip
"comms"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 653 MovieClip
"dragon"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 660 MovieClip
"oops"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 663 MovieClip
"wizzard"Symbol 667 MovieClip {IntroClass3} Frame 1Symbol 666 MovieClip
"caption"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 668 EditableText
"box"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 671 MovieClip
"void2"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 674 MovieClip
"voidBkg2"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 677 MovieClip
"stars"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 680 MovieClip
"voidBkg"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 683 MovieClip
"planetSmall"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 686 MovieClip
"planet2"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 689 MovieClip
"subtitle"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 690 EditableText
"skip"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 631 Button
"halo"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 545 MovieClip
"eye"Symbol 691 MovieClip {IntroClass2} Frame 1Symbol 548 MovieClip
"link"Symbol 723 MovieClip Frame 1Symbol 720 Button
"soundButton"Symbol 742 MovieClip Frame 1Symbol 14 MovieClip
"playButtonImage"Symbol 742 MovieClip Frame 1Symbol 735 MovieClip
"bkg"Symbol 742 MovieClip Frame 1Symbol 738 MovieClip
"playButton"Symbol 742 MovieClip Frame 1Symbol 14 MovieClip
"soundOffIcon"Symbol 742 MovieClip Frame 1Symbol 741 MovieClip
"helpButton"Symbol 742 MovieClip Frame 1Symbol 14 MovieClip
"resetButton"Symbol 742 MovieClip Frame 1Symbol 14 MovieClip
"soundButton"Symbol 742 MovieClip Frame 1Symbol 14 MovieClip
"soundButton"Symbol 746 MovieClip Frame 1Symbol 14 MovieClip
"playButtonImage"Symbol 746 MovieClip Frame 1Symbol 735 MovieClip
"bkg"Symbol 746 MovieClip Frame 1Symbol 745 MovieClip
"playButton"Symbol 746 MovieClip Frame 1Symbol 14 MovieClip
"soundOffIcon"Symbol 746 MovieClip Frame 1Symbol 741 MovieClip
"helpButton"Symbol 746 MovieClip Frame 1Symbol 14 MovieClip
"highScoresButton"Symbol 746 MovieClip Frame 1Symbol 14 MovieClip
"resetButton"Symbol 746 MovieClip Frame 1Symbol 14 MovieClip
"soundButton"Symbol 746 MovieClip Frame 1Symbol 14 MovieClip
"bkg"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 693 MovieClip
"alco"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 700 MovieClip
"messageBkg"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 702 MovieClip
"resetWarning"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 703 EditableText
"appStore"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 522 Button
"appStoreTooltip"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 704 EditableText
"loading"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 705 EditableText
"moreGames"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 446 MovieClip {MoreGamesClass}
"moreGamesTooltip"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 706 EditableText
"snake"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 713 MovieClip
"devicesButton"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 530 Button
"devicesTooltip"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 714 EditableText
"jbTooltip"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 715 EditableText
"walkthrough"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 718 MovieClip
"logo"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 723 MovieClip
"armorGamesLogo"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 726 Button
"kongregateLogo"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 26 Button
"ngLogo"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 729 Button
"ninjakiwiLogo"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 732 Button
"menuBar2"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 742 MovieClip
"menuBar1"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 746 MovieClip
"walkthrough_1_2"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 749 Button
"walkthrough_3"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 751 Button
"walkthrough_Play"Symbol 754 MovieClip {MainMenuClass} Frame 1Symbol 753 Button

Special Tags

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

Labels

"armorgames"Frame 2
"kongregate"Frame 3
"newgrounds"Frame 4
"ninjakiwi"Frame 5
"game"Frame 6
"medal_show"Symbol 67 MovieClip {com.newgrounds.components.MedalPopup} Frame 2
"medal_hide"Symbol 67 MovieClip {com.newgrounds.components.MedalPopup} Frame 11
"listIdle"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 1
"listSelecting"Symbol 101 MovieClip {MedalPopup_fla.score_period_dropdown_39} Frame 2




https://swfchan.com/53/263947/info.shtml
Created: 17/4 -2026 22:04:39 Last modified: 17/4 -2026 22:04:39 Server time: 18/04 -2026 00:42:38