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

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

looming.swf

This is the info page for
Flash #85778

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


Text
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

ActionScript [AS3]

Section 1
//MD5 (com.adobe.crypto.MD5) package com.adobe.crypto { import flash.utils.*; import com.adobe.utils.*; public class MD5 { public static var digest:ByteArray; private static function ff(a:int, b:int, c:int, d:int, x:int, s:int, t:int):int{ return (transform(f, a, b, c, d, x, s, t)); } private static function f(x:int, y:int, z:int):int{ return (((x & y) | (~(x) & z))); } private static function g(x:int, y:int, z:int):int{ return (((x & z) | (y & ~(z)))); } private static function h(x:int, y:int, z:int):int{ return (((x ^ y) ^ z)); } private static function i(x:int, y:int, z:int):int{ return ((y ^ (x | ~(z)))); } private static function transform(func:Function, a:int, b:int, c:int, d:int, x:int, s:int, t:int):int{ var tmp:int = (((a + int(func(b, c, d))) + x) + t); return ((IntUtil.rol(tmp, s) + b)); } private static function hh(a:int, b:int, c:int, d:int, x:int, s:int, t:int):int{ return (transform(h, a, b, c, d, x, s, t)); } public static function hash(s:String):String{ var ba:ByteArray = new ByteArray(); ba.writeUTFBytes(s); return (hashBinary(ba)); } private static function createBlocks(s:ByteArray):Array{ var blocks:Array = new Array(); var len:int = (s.length * 8); var mask = 0xFF; var i:int; while (i < len) { blocks[int((i >> 5))] = (blocks[int((i >> 5))] | ((s[(i / 8)] & mask) << (i % 32))); i = (i + 8); }; blocks[int((len >> 5))] = (blocks[int((len >> 5))] | (128 << (len % 32))); blocks[int(((((len + 64) >>> 9) << 4) + 14))] = len; return (blocks); } public static function hashBinary(s:ByteArray):String{ var aa:int; var bb:int; var cc:int; var dd:int; var a = 1732584193; var b = -271733879; var c = -1732584194; var d = 271733878; var x:Array = createBlocks(s); var len:int = x.length; var i:int; while (i < len) { aa = a; bb = b; cc = c; dd = d; a = ff(a, b, c, d, x[int((i + 0))], 7, -680876936); d = ff(d, a, b, c, x[int((i + 1))], 12, -389564586); c = ff(c, d, a, b, x[int((i + 2))], 17, 606105819); b = ff(b, c, d, a, x[int((i + 3))], 22, -1044525330); a = ff(a, b, c, d, x[int((i + 4))], 7, -176418897); d = ff(d, a, b, c, x[int((i + 5))], 12, 1200080426); c = ff(c, d, a, b, x[int((i + 6))], 17, -1473231341); b = ff(b, c, d, a, x[int((i + 7))], 22, -45705983); a = ff(a, b, c, d, x[int((i + 8))], 7, 1770035416); d = ff(d, a, b, c, x[int((i + 9))], 12, -1958414417); c = ff(c, d, a, b, x[int((i + 10))], 17, -42063); b = ff(b, c, d, a, x[int((i + 11))], 22, -1990404162); a = ff(a, b, c, d, x[int((i + 12))], 7, 1804603682); d = ff(d, a, b, c, x[int((i + 13))], 12, -40341101); c = ff(c, d, a, b, x[int((i + 14))], 17, -1502002290); b = ff(b, c, d, a, x[int((i + 15))], 22, 1236535329); a = gg(a, b, c, d, x[int((i + 1))], 5, -165796510); d = gg(d, a, b, c, x[int((i + 6))], 9, -1069501632); c = gg(c, d, a, b, x[int((i + 11))], 14, 643717713); b = gg(b, c, d, a, x[int((i + 0))], 20, -373897302); a = gg(a, b, c, d, x[int((i + 5))], 5, -701558691); d = gg(d, a, b, c, x[int((i + 10))], 9, 38016083); c = gg(c, d, a, b, x[int((i + 15))], 14, -660478335); b = gg(b, c, d, a, x[int((i + 4))], 20, -405537848); a = gg(a, b, c, d, x[int((i + 9))], 5, 568446438); d = gg(d, a, b, c, x[int((i + 14))], 9, -1019803690); c = gg(c, d, a, b, x[int((i + 3))], 14, -187363961); b = gg(b, c, d, a, x[int((i + 8))], 20, 1163531501); a = gg(a, b, c, d, x[int((i + 13))], 5, -1444681467); d = gg(d, a, b, c, x[int((i + 2))], 9, -51403784); c = gg(c, d, a, b, x[int((i + 7))], 14, 1735328473); b = gg(b, c, d, a, x[int((i + 12))], 20, -1926607734); a = hh(a, b, c, d, x[int((i + 5))], 4, -378558); d = hh(d, a, b, c, x[int((i + 8))], 11, -2022574463); c = hh(c, d, a, b, x[int((i + 11))], 16, 1839030562); b = hh(b, c, d, a, x[int((i + 14))], 23, -35309556); a = hh(a, b, c, d, x[int((i + 1))], 4, -1530992060); d = hh(d, a, b, c, x[int((i + 4))], 11, 1272893353); c = hh(c, d, a, b, x[int((i + 7))], 16, -155497632); b = hh(b, c, d, a, x[int((i + 10))], 23, -1094730640); a = hh(a, b, c, d, x[int((i + 13))], 4, 681279174); d = hh(d, a, b, c, x[int((i + 0))], 11, -358537222); c = hh(c, d, a, b, x[int((i + 3))], 16, -722521979); b = hh(b, c, d, a, x[int((i + 6))], 23, 76029189); a = hh(a, b, c, d, x[int((i + 9))], 4, -640364487); d = hh(d, a, b, c, x[int((i + 12))], 11, -421815835); c = hh(c, d, a, b, x[int((i + 15))], 16, 530742520); b = hh(b, c, d, a, x[int((i + 2))], 23, -995338651); a = ii(a, b, c, d, x[int((i + 0))], 6, -198630844); d = ii(d, a, b, c, x[int((i + 7))], 10, 1126891415); c = ii(c, d, a, b, x[int((i + 14))], 15, -1416354905); b = ii(b, c, d, a, x[int((i + 5))], 21, -57434055); a = ii(a, b, c, d, x[int((i + 12))], 6, 1700485571); d = ii(d, a, b, c, x[int((i + 3))], 10, -1894986606); c = ii(c, d, a, b, x[int((i + 10))], 15, -1051523); b = ii(b, c, d, a, x[int((i + 1))], 21, -2054922799); a = ii(a, b, c, d, x[int((i + 8))], 6, 1873313359); d = ii(d, a, b, c, x[int((i + 15))], 10, -30611744); c = ii(c, d, a, b, x[int((i + 6))], 15, -1560198380); b = ii(b, c, d, a, x[int((i + 13))], 21, 1309151649); a = ii(a, b, c, d, x[int((i + 4))], 6, -145523070); d = ii(d, a, b, c, x[int((i + 11))], 10, -1120210379); c = ii(c, d, a, b, x[int((i + 2))], 15, 718787259); b = ii(b, c, d, a, x[int((i + 9))], 21, -343485551); a = (a + aa); b = (b + bb); c = (c + cc); d = (d + dd); i = (i + 16); }; digest = new ByteArray(); digest.writeInt(a); digest.writeInt(b); digest.writeInt(c); digest.writeInt(d); digest.position = 0; return ((((IntUtil.toHex(a) + IntUtil.toHex(b)) + IntUtil.toHex(c)) + IntUtil.toHex(d))); } private static function gg(a:int, b:int, c:int, d:int, x:int, s:int, t:int):int{ return (transform(g, a, b, c, d, x, s, t)); } private static function ii(a:int, b:int, c:int, d:int, x:int, s:int, t:int):int{ return (transform(i, a, b, c, d, x, s, t)); } public static function hashBytes(s:ByteArray):String{ return (hashBinary(s)); } } }//package com.adobe.crypto
Section 2
//PNGEncoder (com.adobe.images.PNGEncoder) package com.adobe.images { import flash.display.*; import flash.utils.*; import flash.geom.*; public class PNGEncoder { private static var crcTableComputed:Boolean = false; private static var crcTable:Array; private static function writeChunk(png:ByteArray, type:uint, data:ByteArray):void{ var c:uint; var n:uint; var k:uint; if (!crcTableComputed){ crcTableComputed = true; crcTable = []; n = 0; while (n < 0x0100) { c = n; k = 0; while (k < 8) { if ((c & 1)){ c = uint((uint(3988292384) ^ uint((c >>> 1)))); } else { c = uint((c >>> 1)); }; k++; }; crcTable[n] = c; n++; }; }; var len:uint; if (data != null){ len = data.length; }; png.writeUnsignedInt(len); var p:uint = png.position; png.writeUnsignedInt(type); if (data != null){ png.writeBytes(data); }; var e:uint = png.position; png.position = p; c = 4294967295; var i:int; while (i < (e - p)) { c = uint((crcTable[((c ^ png.readUnsignedByte()) & uint(0xFF))] ^ uint((c >>> 8)))); i++; }; c = uint((c ^ uint(4294967295))); png.position = e; png.writeUnsignedInt(c); } public static function encode(img:BitmapData):ByteArray{ var p:uint; var j:int; var png:ByteArray = new ByteArray(); png.writeUnsignedInt(2303741511); png.writeUnsignedInt(218765834); var IHDR:ByteArray = new ByteArray(); IHDR.writeInt(img.width); IHDR.writeInt(img.height); IHDR.writeUnsignedInt(134610944); IHDR.writeByte(0); writeChunk(png, 1229472850, IHDR); var IDAT:ByteArray = new ByteArray(); var i:int; while (i < img.height) { IDAT.writeByte(0); if (!img.transparent){ j = 0; while (j < img.width) { p = img.getPixel(j, i); IDAT.writeUnsignedInt(uint((((p & 0xFFFFFF) << 8) | 0xFF))); j++; }; } else { j = 0; while (j < img.width) { p = img.getPixel32(j, i); IDAT.writeUnsignedInt(uint((((p & 0xFFFFFF) << 8) | (p >>> 24)))); j++; }; }; i++; }; IDAT.compress(); writeChunk(png, 1229209940, IDAT); writeChunk(png, 1229278788, null); return (png); } } }//package com.adobe.images
Section 3
//JSON (com.adobe.serialization.json.JSON) package com.adobe.serialization.json { public class JSON { public static function decode(s:String){ var decoder:JSONDecoder = new JSONDecoder(s); return (decoder.getValue()); } public static function encode(o:Object):String{ var encoder:JSONEncoder = new JSONEncoder(o); return (encoder.getString()); } } }//package com.adobe.serialization.json
Section 4
//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(s:String){ super(); this.tokenizer = new JSONTokenizer(s); this.nextToken(); this.value = this.parseValue(); } private function parseObject():Object{ var key:String; var o:Object = new Object(); this.nextToken(); if (this.token.type == JSONTokenType.RIGHT_BRACE){ return (o); }; while (true) { if (this.token.type == JSONTokenType.STRING){ key = String(this.token.value); this.nextToken(); if (this.token.type == JSONTokenType.COLON){ this.nextToken(); o[key] = this.parseValue(); this.nextToken(); if (this.token.type == JSONTokenType.RIGHT_BRACE){ return (o); }; 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); } private function nextToken():JSONToken{ return ((this.token = this.tokenizer.getNextToken())); } public function getValue(){ return (this.value); } private function parseArray():Array{ var a:Array = new Array(); this.nextToken(); if (this.token.type == JSONTokenType.RIGHT_BRACKET){ return (a); }; while (true) { a.push(this.parseValue()); this.nextToken(); if (this.token.type == JSONTokenType.RIGHT_BRACKET){ return (a); }; if (this.token.type == JSONTokenType.COMMA){ this.nextToken(); } else { this.tokenizer.parseError(("Expecting ] or , but found " + this.token.value)); }; }; return (null); } } }//package com.adobe.serialization.json
Section 5
//JSONEncoder (com.adobe.serialization.json.JSONEncoder) package com.adobe.serialization.json { import flash.utils.*; public class JSONEncoder { private var jsonString:String; public function JSONEncoder(value){ super(); this.jsonString = this.convertToString(value); } 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 + this.convertToString(a[i])); i++; }; return ((("[" + s) + "]")); } public function getString():String{ return (this.jsonString); } 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 + ((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) + "}")); } private function convertToString(value):String{ if ((value is String)){ return (this.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 (this.arrayToString((value as Array))); }; if ((((value is Object)) && (!((value == null))))){ return (this.objectToString(value)); }; }; }; return ("null"); } } }//package com.adobe.serialization.json
Section 6
//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(message:String="", location:int=0, text:String=""){ super(message); name = "JSONParseError"; this._location = location; this._text = text; } public function get location():int{ return (this._location); } public function get text():String{ return (this._text); } } }//package com.adobe.serialization.json
Section 7
//JSONToken (com.adobe.serialization.json.JSONToken) package com.adobe.serialization.json { public class JSONToken { private var _value:Object; private var _type:int; public function JSONToken(type:int=-1, value:Object=null){ super(); this._type = type; this._value = value; } public function get value():Object{ return (this._value); } public function get type():int{ return (this._type); } public function set type(value:int):void{ this._type = value; } public function set value(v:Object):void{ this._value = v; } } }//package com.adobe.serialization.json
Section 8
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer) package com.adobe.serialization.json { public class JSONTokenizer { private var loc:int; private var ch:String; private var obj:Object; private var jsonString:String; public function JSONTokenizer(s:String){ super(); this.jsonString = s; this.loc = 0; this.nextChar(); } 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 isDigit(ch:String):Boolean{ return ((((ch >= "0")) && ((ch <= "9")))); } private function readString():JSONToken{ var _local5:String; var i:int; var token:JSONToken = new JSONToken(); token.type = JSONTokenType.STRING; var string:String = ""; this.nextChar(); while (((!((this.ch == "\""))) && (!((this.ch == ""))))) { if (this.ch == "\\"){ this.nextChar(); switch (this.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 (!this.isHexDigit(this.nextChar())){ this.parseError((" Excepted a hex digit, but found: " + this.ch)); }; _local5 = (_local5 + this.ch); i++; }; string = (string + String.fromCharCode(parseInt(_local5, 16))); break; default: string = (string + ("\\" + this.ch)); }; } else { string = (string + this.ch); }; this.nextChar(); }; if (this.ch == ""){ this.parseError("Unterminated string literal"); }; this.nextChar(); token.value = string; return (token); } private function nextChar():String{ return ((this.ch = this.jsonString.charAt(this.loc++))); } public function getNextToken():JSONToken{ var _local2:String; var _local3:String; var _local4:String; var token:JSONToken = new JSONToken(); this.skipIgnored(); switch (this.ch){ case "{": token.type = JSONTokenType.LEFT_BRACE; token.value = "{"; this.nextChar(); break; case "}": token.type = JSONTokenType.RIGHT_BRACE; token.value = "}"; this.nextChar(); break; case "[": token.type = JSONTokenType.LEFT_BRACKET; token.value = "["; this.nextChar(); break; case "]": token.type = JSONTokenType.RIGHT_BRACKET; token.value = "]"; this.nextChar(); break; case ",": token.type = JSONTokenType.COMMA; token.value = ","; this.nextChar(); break; case ":": token.type = JSONTokenType.COLON; token.value = ":"; this.nextChar(); break; case "t": _local2 = ((("t" + this.nextChar()) + this.nextChar()) + this.nextChar()); if (_local2 == "true"){ token.type = JSONTokenType.TRUE; token.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"){ token.type = JSONTokenType.FALSE; token.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"){ token.type = JSONTokenType.NULL; token.value = null; this.nextChar(); } else { this.parseError(("Expecting 'null' but found " + _local4)); }; break; case "\"": token = this.readString(); break; default: if (((this.isDigit(this.ch)) || ((this.ch == "-")))){ token = this.readNumber(); } else { if (this.ch == ""){ return (null); }; this.parseError((("Unexpected " + this.ch) + " encountered")); }; }; return (token); } private function skipWhite():void{ while (this.isWhiteSpace(this.ch)) { this.nextChar(); }; } public function parseError(message:String):void{ throw (new JSONParseError(message, this.loc, this.jsonString)); } private function isWhiteSpace(ch:String):Boolean{ return ((((((((ch == " ")) || ((ch == "\t")))) || ((ch == "\n")))) || ((ch == "\r")))); } private function skipIgnored():void{ var originalLoc:int; do { originalLoc = this.loc; this.skipWhite(); this.skipComments(); } while (originalLoc != this.loc); } private function isHexDigit(ch:String):Boolean{ var uc:String = ch.toUpperCase(); return (((this.isDigit(ch)) || ((((uc >= "A")) && ((uc <= "F")))))); } private function readNumber():JSONToken{ var token:JSONToken = new JSONToken(); token.type = JSONTokenType.NUMBER; var input:String = ""; if (this.ch == "-"){ input = (input + "-"); this.nextChar(); }; if (!this.isDigit(this.ch)){ this.parseError("Expecting a digit"); }; if (this.ch == "0"){ input = (input + this.ch); this.nextChar(); if (this.isDigit(this.ch)){ this.parseError("A digit cannot immediately follow 0"); }; } else { while (this.isDigit(this.ch)) { input = (input + this.ch); this.nextChar(); }; }; if (this.ch == "."){ input = (input + "."); this.nextChar(); if (!this.isDigit(this.ch)){ this.parseError("Expecting a digit"); }; while (this.isDigit(this.ch)) { input = (input + this.ch); this.nextChar(); }; }; if ((((this.ch == "e")) || ((this.ch == "E")))){ input = (input + "e"); this.nextChar(); if ((((this.ch == "+")) || ((this.ch == "-")))){ input = (input + this.ch); this.nextChar(); }; if (!this.isDigit(this.ch)){ this.parseError("Scientific notation number needs exponent value"); }; while (this.isDigit(this.ch)) { input = (input + this.ch); this.nextChar(); }; }; var num:Number = Number(input); if (((isFinite(num)) && (!(isNaN(num))))){ token.value = num; return (token); }; this.parseError((("Number " + num) + " is not valid!")); return (null); } } }//package com.adobe.serialization.json
Section 9
//JSONTokenType (com.adobe.serialization.json.JSONTokenType) package com.adobe.serialization.json { public class JSONTokenType { public static const NUMBER:int = 11; public static const FALSE:int = 8; public static const RIGHT_BRACKET:int = 4; public static const NULL:int = 9; public static const TRUE:int = 7; public static const RIGHT_BRACE:int = 2; public static const UNKNOWN:int = -1; public static const COMMA:int = 0; public static const LEFT_BRACKET:int = 3; public static const STRING:int = 10; public static const LEFT_BRACE:int = 1; public static const COLON:int = 6; } }//package com.adobe.serialization.json
Section 10
//IntUtil (com.adobe.utils.IntUtil) package com.adobe.utils { public class IntUtil { private static var hexChars:String = "0123456789abcdef"; public static function toHex(n:int, bigEndian:Boolean=false):String{ var i:int; var x:int; var s:String = ""; if (bigEndian){ i = 0; while (i < 4) { s = (s + (hexChars.charAt(((n >> (((3 - i) * 8) + 4)) & 15)) + hexChars.charAt(((n >> ((3 - i) * 8)) & 15)))); i++; }; } else { x = 0; while (x < 4) { s = (s + (hexChars.charAt(((n >> ((x * 8) + 4)) & 15)) + hexChars.charAt(((n >> (x * 8)) & 15)))); x++; }; }; return (s); } public static function ror(x:int, n:int):uint{ var nn:int = (32 - n); return (((x << nn) | (x >>> (32 - nn)))); } public static function rol(x:int, n:int):int{ return (((x << n) | (x >>> (32 - n)))); } } }//package com.adobe.utils
Section 11
//FlashAd (com.newgrounds.components.FlashAd) package com.newgrounds.components { import flash.events.*; import com.newgrounds.*; import flash.display.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class FlashAd extends Sprite { private var _adURLLoader:URLLoader; private var _ad:Loader; private var _adRect:Sprite; private var _mask:Shape; private var _showBackground:Boolean; public var background:MovieClip; private static const REMOVED_FROM_STAGE:String = "removedFromStage"; private static const DEBUG_AD_URL:String = "http://www.ngads.com/adtest.php"; private static var _adResetTime:uint = 0; private static var _adURL:URLRequest; public function FlashAd(showBackground:Boolean=true){ super(); if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return; }; 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 = showBackground; } private function onAdFeedLoaded(e:Event):void{ var loader:URLLoader = URLLoader(e.target); if (((loader.data) && (!((loader.data == ""))))){ this.loadAd((loader.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(e:Event):void{ trace("[NewgroundsAPI] :: Unable to load ad feed!"); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = false; }; } private function onAdError(e:Event):void{ dispatchEvent(new APIEvent(APIEvent.AD_ATTACHED, false, new APIError("FLASH_ADS_NOT_APPROVED", "Unable to render ad"))); this.removeAd(); } private function onAdLoaded(e: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)); } public function get showBackground():Boolean{ return (this._showBackground); } public function set showBackground(value:Boolean):void{ this._showBackground = value; if (this.background){ this.background.visible = value; this._adRect.mask = (value) ? this.background.adMask : null; }; } private function get hasAdElapsed():Boolean{ if (getTimer() >= _adResetTime){ _adResetTime = (getTimer() + ((1000 * 60) * 5)); return (true); }; return (false); } private function loadAdFeed(adFeedURL:String):void{ var adFeedURL = adFeedURL; 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())); }; }; this._adURLLoader.load(_adURL); //unresolved jump var _slot1 = e; onAdError(null); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = true; }; } private function onAdsApproved(e:APIEvent):void{ API.removeEventListener(APIEvent.ADS_APPROVED, this.onAdsApproved, false); if (e.success){ this.loadAdFeed(API.adFeedURL); } else { trace("[NewgroundsAPI] :: No ad feed URL supplied to Newgrounds API ad!"); }; } private function loadAd(url:String):void{ 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); this._ad.load(new URLRequest(url), new LoaderContext(false, new ApplicationDomain(null))); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = true; }; } public function removeAd():void{ removeEventListener(REMOVED_FROM_STAGE, this.onRemovedFromStage); if (((this.background) && (this.background.loadingClip))){ this.background.loadingClip.visible = false; }; if (this._adURLLoader){ this._adURLLoader.close(); //unresolved jump var _slot1 = e; }; if (this._adRect){ this._adRect.visible = false; }; if (this._ad){ trace("[NewgroundsAPI] :: Ad removed"); this._ad.close(); //unresolved jump var _slot1 = e; Object(this._ad).unloadAndStop(true); //unresolved jump var _slot1 = e; _ad.unload(); if (this._ad.parent){ this._ad.parent.removeChild(this._ad); }; }; this._ad = null; } private function onRemovedFromStage(e:Event):void{ this.removeAd(); } private function linkClickHandler(event:MouseEvent):void{ API.loadNewgrounds(); } } }//package com.newgrounds.components
Section 12
//FlxNGPreloader (com.newgrounds.components.FlxNGPreloader) package com.newgrounds.components { import flash.events.*; import com.newgrounds.*; import flash.display.*; import flash.utils.*; public class FlxNGPreloader extends MovieClip { protected var _ad:FlashAd; public var autoPlay:Boolean;// = false public var NewgroundsAPIEncryptionKey:String; protected var _loadBar:Bitmap; protected var _loadBarMask:Shape; protected var _adContainer:Sprite; public var className:String; protected var _initialized:Boolean; public var NewgroundsAPIShowAds:Boolean;// = true public var NewgroundsAPIId:String; protected var _preloader:Sprite; public function FlxNGPreloader():void{ this._preloader = new Sprite(); this._adContainer = new Sprite(); this._loadBarMask = new Shape(); super(); addEventListener(Event.ENTER_FRAME, this.enterFrameHandler); } private function playButtonClickHandler(event:MouseEvent):void{ this.startGame(); } protected function createMedalPopup(x:Number, y:Number):void{ var popup:MedalPopup = new MedalPopup(); popup.x = x; popup.y = y; addChild(popup); } private function adsApprovedHandler(event:APIEvent):void{ API.removeEventListener(APIEvent.ADS_APPROVED, this.adsApprovedHandler); if (this._adContainer){ this._ad = new FlashAd(false); this._adContainer.addChild(this._ad); this._preloader.addChild(this._adContainer); this._adContainer.visible = true; }; } protected function enterFrameHandler(event:Event):void{ var button:Sprite; if (!this._initialized){ if (stage){ this.create(); }; return; }; var percent:Number = (loaderInfo.bytesLoaded / loaderInfo.bytesTotal); this._loadBarMask.scaleX = (uint((percent * 200)) / 200); if (percent >= 1){ removeEventListener(Event.ENTER_FRAME, this.enterFrameHandler); if (this.autoPlay){ this.startGame(); } else { button = new Sprite(); button.addChild(new Bitmap(new FlxLoaderPlay(0, 0))); button.x = this._loadBarMask.x; button.y = this._loadBarMask.y; button.buttonMode = true; this._loadBar.visible = false; button.addEventListener(MouseEvent.CLICK, this.playButtonClickHandler); this._preloader.addChild(button); }; }; } protected function startGame():void{ var app:Object; nextFrame(); var mainClass:Class = Class(getDefinitionByName(this.className)); if (mainClass){ app = new (mainClass); addChild((app as DisplayObject)); }; removeChild(this._preloader); if (this._ad){ this._ad.removeAd(); }; this._ad = null; this._adContainer = null; this._loadBarMask = null; this._preloader = null; } protected function create():void{ if (!this.NewgroundsAPIId){ trace("[NewgroundsAPI] :: No API ID set! Please set NewgroundsAPIId in your preloader."); return; }; if (this.NewgroundsAPIShowAds){ API.addEventListener(APIEvent.ADS_APPROVED, this.adsApprovedHandler, false, 0, true); this._adContainer.graphics.beginFill(0); this._adContainer.graphics.moveTo(-4, -4); this._adContainer.graphics.lineTo(304, -4); this._adContainer.graphics.lineTo(304, 254); this._adContainer.graphics.lineTo(-4, 254); this._adContainer.graphics.lineTo(-4, -4); this._adContainer.graphics.endFill(); this._adContainer.scaleX = Math.min(1, (stage.stageWidth / 325)); this._adContainer.scaleY = this._adContainer.scaleX; }; this._preloader.addChild(this._adContainer); this._adContainer.visible = false; var frame:Bitmap = new Bitmap(new FlxLoaderFrame(0, 0)); frame.y = 260; this._preloader.addChild(frame); this._loadBarMask.graphics.beginFill(0); this._loadBarMask.graphics.lineTo(304, 0); this._loadBarMask.graphics.lineTo(304, 70); this._loadBarMask.graphics.lineTo(0, 70); this._loadBarMask.graphics.lineTo(0, 0); this._loadBarMask.graphics.endFill(); this._loadBarMask.scaleX = 0; this._loadBarMask.y = frame.y; this._preloader.addChild(this._loadBarMask); this._loadBar = new Bitmap(new FlxLoaderBar(0, 0)); this._loadBar.y = frame.y; this._preloader.addChild(this._loadBar); this._loadBar.mask = this._loadBarMask; addChild(this._preloader); this._preloader.x = ((stage.stageWidth - this._preloader.width) / 2); this._preloader.y = ((stage.stageHeight - this._preloader.height) / 2); API.connect(loaderInfo, this.NewgroundsAPIId, this.NewgroundsAPIEncryptionKey); this._initialized = true; } } }//package com.newgrounds.components
Section 13
//MedalPopup (com.newgrounds.components.MedalPopup) package com.newgrounds.components { import flash.events.*; import com.newgrounds.*; import flash.display.*; import flash.utils.*; import flash.text.*; public class MedalPopup extends MovieClip { public var medalValueText:TextField; public var medalContainer:Sprite; private var _popDelay:Timer; private var _initialized:Boolean; private var _medalIcon:Bitmap; public var medalNameText:TextField; private var _medal:Medal; private var _medalQueue:Array; 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); } private function timerHandler(event:TimerEvent):void{ if (((this._medalIcon) && (this._medalIcon.parent))){ this._medalIcon.parent.removeChild(this._medalIcon); this._medalIcon = null; }; gotoAndPlay("medal_hide"); this._popDelay.stop(); } 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(); } function frame10(){ this.showMedalInfo(); stop(); } public function get popupTime():Number{ return ((this._popDelay.delay / 1000)); } private function onMedalUnlocked(e:APIEvent):void{ if (((((e.success) && (e.data))) && ((e.data is Medal)))){ this._medalQueue.push(Medal(e.data)); }; } private function enterFrameHandler(event:Event):void{ var myIndex:uint; var topIndex:uint; var event = event; if (((this._medalQueue.length) && (!(visible)))){ this._medal = this._medalQueue.pop(); this._popDelay.start(); gotoAndPlay("medal_show"); visible = true; }; if (((visible) && (parent))){ myIndex = parent.getChildIndex(this); topIndex = (parent.numChildren - 1); if (myIndex != topIndex){ parent.setChildIndex(this, topIndex); }; //unresolved jump var _slot1 = error; }; } function frame1(){ stop(); } function frame19(){ stop(); visible = false; } public function set popupTime(n:Number):void{ if (isNaN(n)){ n = 3; }; this._popDelay.delay = (n * 1000); } } }//package com.newgrounds.components
Section 14
//API (com.newgrounds.API) package com.newgrounds { import flash.events.*; import flash.display.*; import com.newgrounds.components.*; import flash.utils.*; import com.adobe.serialization.json.*; import flash.net.*; import com.adobe.crypto.*; import com.adobe.images.*; import flash.system.*; public class API { private static const COMMANDS_WIKI_URL:String = "http://www.newgrounds.com/wiki/flashapi/commands/"; private static const AD_TERMS_URL:String = "http://www.newgrounds.com/wiki/flashads/terms/"; private static const GATEWAY_URL:String = "http://www.ngads.com/gateway_v2.php"; public static const VERSION:String = "2.3"; private static var connected:Boolean; private static var user_id:uint; private static var _preloadComplete:Boolean = false; private static var user_email:String; private static var _movieId:String; private static var _saveFileId:uint; private static var _isMetadataLoaded:Boolean = false; private static var publisher_id:uint; private static var _imageFilePath:String; private static var _saveFilePath:String; private static var ad_url:String; private static var _debug:Boolean = true; private static var _saveGroups:Array = []; private static var do_echo:Boolean = false; private static var session_id:String; public static var errors:Dictionary = APIError.init_codes(); private static var timeoutTimer:Timer = new Timer(8000, 1); private static var _medals:Array; private static var user_name:String; 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 _host:String; private static var _connected:Boolean = false; private static var _userpageFormat:String; private static var _scoreboards:Array = new Array(); private static var _eventDispatcher:EventDispatcher = new EventDispatcher(); private static var compressor:BaseN = new BaseN(compression_radix); private static var score_page_counts:Object = new Object(); private static var _adsApproved:Boolean = false; private static var version:String; public static var periods:Object = getPeriodAliases(); private static var _encryptionKey:String; private static var root:DisplayObject; private static var compression_radix:String = "/g8236klvBQ#&|;Zb*7CEA59%s`Oue1wziFp$rDVY@TKxUPWytSaGHJ>dmoMR^<0~4qNLhc(I+fjn)X"; private static var _preloadAssets:Array = []; private static var sharedObjects:Dictionary = new Dictionary(); private static var _trackerId:uint; private static var _saveFile:SaveFile; private static var userpage_format:String; private static var _saveGroupId:uint; public static function loadUserPage(userId:uint=0, userName:String=null):Boolean{ var userPage:String; if ((((userId == 0)) && ((userName == null)))){ if (hasUserSession()){ userId = user_id; userName = user_name; } else { return (false); }; }; if (publisher_id == 1){ userPage = (("http://" + userName.toLowerCase()) + ".newgrounds.com"); navigateToURL(new URLRequest(userPage), "_blank"); return (true); }; if (userpage_format){ userPage = userpage_format; userPage = userPage.split(":user_id:").join(userId.toString()); userPage = userPage.split(":user_name:").join(escape(userName)); navigateToURL(new URLRequest(userPage), "_blank"); return (true); }; return (false); } public static function getPeriodAlias(p:String):String{ var i:String; for (i in period_aliases) { if (i == p){ return (period_aliases[i].alias); }; }; return (null); } private static function onCommandError(e:Event):void{ var loader:SmartURLLoader = SmartURLLoader(e.target); var i:uint; while (i < _preloadAssets.length) { if (_preloadAssets[i] == loader){ _preloadAssets.splice(i, 1); break; }; i++; }; } private static function sendWarning(m:String, c:String=null):void{ if (c){ m = (m + ((("\n[NewgroundsAPI WARNING] :: \tSee " + COMMANDS_WIKI_URL) + c.toLowerCase()) + " for additional information.")); }; trace(("[NewgroundsAPI WARNING] :: " + m)); } public static function unlockMedal(medalName:String):void{ var params:Object; var medalsUnlocked:Object; if (((!(medalName)) || ((medalName == "")))){ sendError({command_id:getCommandID("unlockMedal")}, new APIError("MISSING_PARAM", "missing required medal name")); return; }; var medal:Medal = getMedalByName(medalName); if (!medal){ sendMessage(("No medal with name: " + medalName)); return; }; if (((hasUserSession()) || (debugMode))){ sendMessage((("Attempting to unlock '" + medal.name) + "'")); if (medal.unlocked){ sendWarning((("Medal '" + medal.name) + "' is already unlocked!")); return; }; params = new Object(); params.medal_id = medal.id; sendSecureCommand("unlockMedal", params); } else { sendMessage(("Locally unlocking " + medal.name)); if (medal.unlocked){ sendWarning((("Medal '" + medal.name) + "' is already unlocked!")); return; }; medal.unlocked = true; medalsUnlocked = loadLocal("medals_unlocked"); if (!medalsUnlocked){ medalsUnlocked = new Object(); }; medalsUnlocked[medal.id.toString()] = true; saveLocal("medals_unlocked", medalsUnlocked); callListener(APIEvent.MEDAL_UNLOCKED, true, medal); }; } public static function setVersion(v:String):void{ if (((v) && (!((v == ""))))){ version = v; }; } public static function isFlashVersion(major:uint, minor:uint=0, buildNumber:uint=0, internalBuildNumber:uint=0):Boolean{ var version:Array = Capabilities.version.split(" ")[1].split(","); var requiredVersion:Array = arguments; var i:uint; while (i < requiredVersion.length) { version[i] = uint(version[i]); i++; }; i = 0; while (i < requiredVersion.length) { if (version[i] > requiredVersion[i]){ return (true); }; if (version[i] < requiredVersion[i]){ return (false); }; i++; }; return (true); } public static function getUserID():uint{ return (user_id); } private static function getHost():String{ return (_host); } public static function hasUserEmail():Boolean{ return (((!((user_email == null))) && (!((user_email == ""))))); } private static function uncompressHex(base_value:String):String{ var hl:uint; var chunk:String; var num:uint; var hex:String; var offset:uint = uint(base_value.charAt(0)); var hex_value:String = ""; var i:uint = 1; while (i < base_value.length) { chunk = base_value.substr(i, 4); num = uint(compressor.decode(chunk)); hex = num.toString(16); if ((i + 4) < base_value.length){ hl = 6; } else { hl = offset; }; while (hex.length < hl) { hex = ("0" + hex); }; hex_value = (hex_value + hex); i = (i + 4); }; return (hex_value); } public static function getMedalByName(medalName:String):Medal{ var medal:Medal; for each (medal in _medals) { if (medal.name == medalName){ return (medal); }; }; return (null); } private static function callListener(type:String, success:Boolean=true, data=undefined):void{ dispatchEvent(new APIEvent(type, success, data)); } public static function loadLocal(save_id:String):Object{ var sharedObj:SharedObject; var save_id = save_id; 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); }; //unresolved jump var _slot1 = e; sendWarning(("loadLocal ERROR: " + _slot1)); return (null); } private static function populateScoreBoards(scoreBoards:Array):void{ _scoreboards = []; var i:uint; while (i < scoreBoards.length) { _scoreboards.push(new ScoreBoard(scoreBoards[i].id, scoreBoards[i].name, "")); i++; }; } public static function set debugMode(value:Boolean):void{ _debug = value; } public static function createAd():FlashAd{ sendMessage("You may see a security sandbox violation. This is normal!"); return (new FlashAd()); } private static function populateSaveGroups(saveGroupList:Array):void{ var saveGroup:SaveGroup; _saveGroups = []; var i:uint; while (i < saveGroupList.length) { saveGroup = SaveGroup.createFromObject(saveGroupList[i]); _saveGroups.push(saveGroup); i++; }; } public static function getSaveGroupById(groupId:uint):SaveGroup{ if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){ sendWarning("No save groups found"); return (null); }; var i:uint; while (i < _saveGroups.length) { if (_saveGroups[i].id == groupId){ return (_saveGroups[i]); }; i++; }; return (null); } private static function dispatchEvent(event:Event):void{ _eventDispatcher.dispatchEvent(event); echo(("Fired Event: " + event.type)); } public static function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{ _eventDispatcher.removeEventListener(type, listener, useCapture); } public static function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:uint=0, useWeakReference:Boolean=false):void{ _eventDispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference); } public static function get adFeedURL():String{ return (ad_url); } public static function setUserEmail(e:String):void{ user_email = e; } public static function hasUserSession():Boolean{ return (((((!((session_id == null))) && (!((session_id == ""))))) && (!((publisher_id == 0))))); } private static function echo(m:String):void{ if (do_echo){ trace(m); }; } public static function getOfficialURL():String{ var o_url:String = ((((((GATEWAY_URL + "?tracker_id=") + _movieId) + "&command_id=") + getCommandID("loadOfficalVersion")) + "&seed=") + Math.random()); if (debugMode){ o_url = (o_url + "&debug=1"); }; return (o_url); } public static function executeSaveQuery(query:SaveGroupQuery):void{ sendCommand("lookupSaveFiles", {publisher_id:publisher_id, group_id:query.groupId, query:JSON.encode(query.toObject())}, false, null, query); trace(JSON.encode(query.toObject())); } public static function getScoreBoardById(id:uint):ScoreBoard{ var board:ScoreBoard; for each (board in _scoreboards) { if (board.id == id){ return (board); }; }; return (null); } private static function getPeriodAliases():Object{ var i:String; var aliases:Object = new Object(); for (i in period_aliases) { aliases[period_aliases[i].alias] = i; }; return (aliases); } private static function compressHex(hex_value:String):String{ var offset:uint = (hex_value.length % 6); var basen_value:String = ""; var i:uint; while (i < hex_value.length) { basen_value = (basen_value + compressor.encode(uint(("0x" + hex_value.substr(i, 6))), 4)); i = (i + 6); }; return ((offset.toString() + basen_value)); } public static function get preloadComplete():Boolean{ return (_preloadComplete); } private static function assertConnected():Boolean{ if (!_connected){ return (false); }; return (true); } public static function sendSecureCommand(command:String, secure_params:Object, unsecure_params:Object=null, files:Object=null, owner=null):void{ if (((((!(debugMode)) && (!(hasUserSession())))) && (!(hasUserEmail())))){ sendError({command_id:getCommandID(command)}, new APIError("IDENTIFICATION_REQUIRED", (("You must be logged in or provide an e-mail address ( using NewgroundsAPI.setUserEmail(\"name@domain.com\"); ) to use " + command) + "()."))); return; }; if (!command){ fatalError("Missing command", "sendSecureCommand"); }; if (!secure_params){ fatalError("Missing secure_params", "sendSecureCommand"); }; if (!unsecure_params){ unsecure_params = new Object(); }; var seed:String = ""; var i:uint; while (i < 16) { seed = (seed + compression_radix.charAt(Math.floor((Math.random() * compression_radix.length)))); i++; }; if (((debugMode) && (!(session_id)))){ secure_params.session_id = ""; } else { secure_params.session_id = session_id; }; secure_params.as_version = 3; secure_params.user_email = user_email; secure_params.publisher_id = publisher_id; secure_params.seed = seed; secure_params.command_id = getCommandID(command); var hash:String = MD5.hash(seed); var rc4enc:String = RC4.encrypt(JSON.encode(secure_params), _encryptionKey); var hex_value:String = (hash + rc4enc); unsecure_params.secure = compressHex(hex_value); sendCommand("securePacket", unsecure_params, false, files, owner); } private static function sendError(c:Object, e:APIError):void{ trace(((((("[NewgroundsAPI ERROR] :: " + getCommandName(c.command_id)) + "() - ") + e.name) + ":\n\t\t\t\t") + e.message)); } public static function getUserName():String{ return (user_name); } private static function getCommandName(id:String):String{ return (id); } public static function sendMessage(m:String, r:Boolean=false):void{ var msg:String = ("[NewgroundsAPI] :: " + m); trace(msg); } public static function newSaveFile(groupName:String):SaveFile{ var group:SaveGroup = getSaveGroupByName(groupName); if (group){ return (new SaveFile(group)); }; sendError({command_id:"newSaveFile"}, new APIError("INVALID_SAVE_GROUP", (("'" + group) + "' is not a valid save group."))); return (null); } public static function get medals():Array{ return ((_medals) ? _medals.concat() : []); } public static function connectionTimeOut(e:Event=null):void{ dispatchEvent(new APIEvent(APIEvent.API_CONNECTED, false, new APIError("CONNECTION_FAILED", "Connection to NewgroundsAPI gateway timed out."))); } private static function fatalError(m:String, c:String):void{ if (c){ m = (m + ((("\n\tSee " + COMMANDS_WIKI_URL) + c.toLowerCase()) + " for additional information.")); }; throw (new Error(("***ERROR*** class=API\n\n" + m))); } public static function getScoreBoardByName(name:String):ScoreBoard{ var board:ScoreBoard; for each (board in _scoreboards) { if (board.name == name){ return (board); }; }; return (null); } private static function sendNotice(m:String, c:String=null):void{ if (c){ m = (m + ((("\n[NewgroundsAPI NOTICE] :: \tSee " + COMMANDS_WIKI_URL) + c.toLowerCase()) + " for additional information.")); }; trace(("[NewgroundsAPI NOTICE] :: " + m)); } public static function get debugMode():Boolean{ return (_debug); } public static function loadCustomLink(link:String):void{ sendCommand("loadCustomLink", {host:getHost(), link:link}, true); } public static function loadMySite():void{ sendCommand("loadMySite", {host:getHost()}, true); } public static function getTrackerID():uint{ return (_trackerId); } public static function get adsApproved():Boolean{ return (_adsApproved); } private static function sendCommand(command:String, params:Object, openBrowser:Boolean=false, files:Object=null, owner=null):void{ var msg:String; var key:String; var name:String; if (((!(connected)) && (!((command == "connectMovie"))))){ msg = (("NewgroundsAPI." + command) + "() - NewgroundsAPI.connectMovie() must be called before this command can be called\n"); fatalError(msg, "connectMovie"); }; var loader:SmartURLLoader = new SmartURLLoader(); loader.addVariable("command_id", getCommandID(command)); loader.addVariable("tracker_id", _movieId); if (debugMode){ loader.addVariable("debug", 1); }; if (params){ for (key in params) { loader.addVariable(key, params[key]); }; }; if (files){ for (name in files) { loader.addFile(name, files[name], name); }; }; if (openBrowser){ loader.method = URLRequestMethod.GET; } else { loader.method = URLRequestMethod.POST; }; loader.preventCache = true; if (openBrowser){ loader.openBrowser = true; loader.method = URLRequestMethod.GET; } else { loader.addEventListener(Event.COMPLETE, onCommandComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, onCommandError); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onCommandError); loader.method = URLRequestMethod.POST; }; loader.owner = owner; loader.load(GATEWAY_URL); } public static function checkFilePrivledges(file:SaveFile):void{ sendCommand("checkFilePrivs", {group:file.groupId, filename:file.name, user_id:(user_id) ? user_id : 0, publisher_id:publisher_id}); } public static function isPublishedHost():Boolean{ return (((!((getHost() == "localhost"))) && ((getHost().indexOf("file://") == -1)))); } public static function loadOfficialVersion():void{ navigateToURL(new URLRequest(getOfficialURL())); } public static function createSaveQuery(groupName:String):SaveGroupQuery{ var group:SaveGroup = getSaveGroupByName(groupName); if (group){ return (group.createQuery()); }; return (null); } public static function saveFile(file:SaveFile, overwrite:Boolean=false):void{ var params:Object = file.toObject(); params.user_name = user_name; params.overwrite = (overwrite) ? 1 : 0; var byteArray:ByteArray = new ByteArray(); if ((file.contents is ByteArray)){ byteArray.writeByte(0); byteArray.writeBytes(file.contents); } else { byteArray.writeByte(1); byteArray.writeObject(file.contents); }; byteArray.compress(); var files:Object = new Object(); files.file = byteArray; if (file.thumbnail){ files.thumbnail = PNGEncoder.encode(file.thumbnail); }; sendSecureCommand("saveFile", params, null, files, file); } public static function getMedalById(medalId:uint):Medal{ var medal:Medal; for each (medal in _medals) { if (medal.id == medalId){ return (medal); }; }; return (null); } public static function loadSaveFile(save_id:Number, get_contents:Boolean=true){ var packet:Object = {publisher_id:publisher_id, save_id:save_id, get_contents:get_contents}; sendCommand("loadSaveFile", packet); } public static function loadNewgrounds():void{ sendCommand("loadNewgrounds", {host:getHost()}, true); } public static function rateSaveFile(file:SaveFile, rating:SaveRating, vote:Number):void{ sendSecureCommand("rateSaveFile", {group:file.groupId, save_id:file.id, rating_id:rating.id, vote:vote, user_id:user_id}, null, null, file); } public static function IsCompatible():Boolean{ return (!((publisher_id == 0))); } public static function loadScores(board:ScoreBoard, tag:String=null):void{ var command_name:String = "loadScores"; if (!board.id){ sendError({command_id:getCommandID(command_name)}, new APIError("MISSING_PARAM", "missing required ScoreBoard instance")); return; }; if (!hasUserSession()){ callListener(APIEvent.SCORES_LOADED, false, new APIError("SITE_ID_REQUIRED", (("Host '" + getHost()) + "' does not have high scores enabled"))); return; }; var params:Object = {}; params.publisher_id = publisher_id; params.period = board.period; params.board = board.id; params.num_results = board.num_results; params.page = board.page; if (((!(tag)) || ((tag == "")))){ params.tag = board.tag; } else { params.tag = tag; }; sendCommand(command_name, params); } public static function logCustomEvent(event:String):void{ sendCommand("logCustomEvent", {host:getHost(), event:event}); } public static function decodeData(base:String){ return (JSON.decode(RC4.decrypt(uncompressHex(base), _encryptionKey))); } public static function postScore(boardName:String, value:uint, tag:String=""):void{ if (((!(boardName)) || ((boardName == "")))){ sendError({command_id:getCommandID("postScore")}, new APIError("MISSING_PARAM", "missing required parameter(s)")); return; }; if (tag == null){ tag = ""; }; sendSecureCommand("postScore", {user_name:user_name, board:boardName, value:value, publisher_id:publisher_id, tag:tag}); } private static function onCommandComplete(e:Event):void{ var response:Object; var error:APIError; 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++; }; if (loader.response){ response = JSON.decode(loader.response); } else { response = {success:false}; }; if (!response.success){ trace(("Error: " + response)); error = new APIError(response.error_code, response.error_msg); sendError(response, error); } else { response.owner = loader.owner; doEvent(response); }; } public static function encodeData(data:Object):String{ return (compressHex(RC4.encrypt(JSON.encode(data), _encryptionKey))); } private static function populateMedals(medal_list:Array):void{ var i:uint; var m:Object; if (_medals === null){ _medals = new Array(); i = 0; while (i < medal_list.length) { m = medal_list[i]; _medals.push(Medal.createFromObject(m)); i++; }; }; trace("[NewgroundsAPI] :: Medals loaded!"); } private static function doEvent(e:Object):void{ var msg:String; var packet:Object; var user:String; var _local7:Boolean; var _local8:ScoreBoard; var _local9:SaveFile; var _local10:Array; var medalsUnlocked:*; var medalId:String; var medal:Medal; var group:SaveGroup; var i:uint; var fileData:Object; var j:uint; switch (getCommandName(e.command_id)){ case "connectMovie": timeoutTimer.stop(); sendMessage("You have successfully connected to the Newgrounds API Gateway"); sendMessage((("Movie identified as \"" + e.movie_name) + "\"")); callListener(APIEvent.API_CONNECTED, e.success, {title:e.movie_name}); _local7 = false; if (e.ad_status === -1){ msg = "This movie was not approved to run Flash Ads."; sendWarning(msg); sendWarning((("visit " + AD_TERMS_URL) + " to view our approval guidelines")); if (!e.ad_url){ callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", msg)); } else { _local7 = true; }; } else { if (e.ad_status === 0){ msg = "Flash Ads are currently awaiting approval."; sendNotice(msg); if (!e.ad_url){ callListener(APIEvent.ADS_APPROVED, false, new APIError("FLASH_ADS_NOT_APPROVED", msg)); } else { _local7 = true; }; }; }; if (e.ad_url){ ad_url = unescape(e.ad_url); if (!_local7){ sendMessage("This movie has been approved to run Flash Ads!"); }; _adsApproved = true; callListener(APIEvent.ADS_APPROVED, true); }; if (e.deny_host){ msg = (getHost() + " does not have permission to run this movie!"); sendWarning(msg); sendWarning(("\tUpdate your API configuration to unblock " + getHost())); callListener(APIEvent.HOST_BLOCKED, true, {real_url:unescape(e.movie_url), url:getOfficialURL()}); }; if (e.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 " + e.movie_version)); callListener(APIEvent.NEW_VERSION_AVAILABLE, true, {version:e.movie_version, real_url:unescape(e.movie_url), url:getOfficialURL()}); }; if (e.request_portal_url){ sendCommand("setPortalID", {portal_url:_host}); }; sendCommand("preloadSettings", {publisher_id:publisher_id, user_id:user_id}); break; case "preloadSettings": if (e.medals){ populateMedals(e.medals); if (((!(hasUserSession())) && (!(debugMode)))){ echo("Checking for SharedObject Medals..."); medalsUnlocked = loadLocal("medals_unlocked"); if (medalsUnlocked){ for (medalId in medalsUnlocked) { if (medalsUnlocked[medalId]){ medal = getMedalById(uint(medalId)); echo(("Now unlocking " + medal.name)); medal.unlocked = true; }; }; }; }; }; if (e.save_groups){ populateSaveGroups(e.save_groups); }; if (e.save_file_path){ _saveFilePath = (e.save_file_path + "/"); }; if (e.image_file_path){ _imageFilePath = (e.image_file_path + "/"); }; if (e.score_boards){ populateScoreBoards(e.score_boards); }; trace("[NewgroundsAPI] :: Metadata loaded!"); callListener(APIEvent.METADATA_LOADED); if (((_saveFileId) && (_saveGroupId))){ group = getSaveGroupById(_saveGroupId); if (group){ callListener(APIEvent.FILE_REQUESTED, true, {save_id:_saveFileId, group:group}); }; }; _preloadComplete = true; break; case "logCustomEvent": if (e.success){ sendMessage((("Event '" + e.event) + "' was logged.")); }; callListener(APIEvent.EVENT_LOGGED, e.success, {event:e.event}); break; case "postScore": if (e.success){ user = "User"; if (user_email){ user = user_email; } else { if (user_name){ user = user_name; }; }; _local8 = getScoreBoardById(e.board); if (_local8){ sendMessage((((((user + " posted ") + e.value) + " to '") + _local8.name) + "'")); }; packet = {score:e.score, value:e.value, username:user}; }; callListener(APIEvent.SCORE_POSTED, e.success, packet); break; case "loadScores": packet = new Object(); _local8 = getScoreBoardById(e.board); if (_local8){ _local8.setScores(e.scores, e.period, e.page, e.num_results); }; callListener(APIEvent.SCORES_LOADED, e.success, _local8); break; case "unlockMedal": if (_medals){ medal = getMedalByName(e.medal_name); if (medal.unlocked){ return; }; medal.unlocked = true; callListener(APIEvent.MEDAL_UNLOCKED, e.success, medal); }; break; case "getMedals": populateMedals(e.medals); callListener(APIEvent.MEDALS_LOADED, e.success, packet); break; case "loadSaveFile": group = getSaveGroupById(e.group_id); _local9 = new SaveFile(group); _local9.id = e.file.save_id; _local9.name = e.file.filename; _local9.fileUrl = (_saveFilePath + e.file.file); _local9.thumbnailUrl = (_imageFilePath + e.file.thumb); _local9.authorName = e.file.user_name; _local9.authorId = e.file.user_id; _local9.description = e.file.description; if (((e.file.keys) && (e.file.keys.length))){ i = 0; while (i < e.file.keys.length) { _local9.setKey(e.file.keys[i].id, e.file.keys[i].value); i++; }; }; if (((e.file.ratings) && (e.file.ratings.length))){ i = 0; while (i < e.file.ratings.length) { _local9.setRating(e.file.ratings[i].id, e.file.ratings[i].votes, e.file.ratings[i].score); i++; }; }; if (e.get_contents){ _local9.loadContents(); }; callListener(APIEvent.FILE_INITIALIZED, e.success, _local9); break; case "lookupSaveFiles": _local10 = []; i = 0; while (i < e.files.length) { fileData = e.files[i]; _local9 = new SaveFile(getSaveGroupById(e.group_id)); _local9.name = fileData.filename; _local9.id = fileData.save_id; _local9.description = fileData.description; _local9.thumbnailUrl = (_imageFilePath + fileData.thumb); _local9.fileUrl = (_saveFilePath + fileData.file); _local9.authorName = fileData.user_name; _local9.authorId = fileData.user_id; if (((fileData.keys) && (fileData.keys.length))){ j = 0; while (j < fileData.keys.length) { _local9.setKey(fileData.keys[j].id, fileData.keys[j].value); j++; }; }; if (((fileData.ratings) && (fileData.ratings.length))){ j = 0; while (j < fileData.ratings.length) { _local9.setRating(fileData.ratings[j].id, fileData.ratings[j].votes, fileData.ratings[j].score); j++; }; }; _local10.push(_local9); i++; }; e.owner.dispatchEvent(new APIEvent(APIEvent.QUERY_COMPLETE, e.success, _local10)); break; case "rateSaveFile": _local9 = e.owner; if (e.success){ _local9.setRating(e.rating_id, e.votes, e.score); }; _local9.dispatchEvent(new APIEvent(APIEvent.VOTE_COMPLETE, e.success, e)); break; case "saveFile": packet = {save_id:e.save_id, filename:e.filename, file_url:e.file_url, thumbnail:e.thumbnail, icon:e.icon}; e.owner.dispatchEvent(new APIEvent(APIEvent.FILE_SAVED, e.success, packet)); break; case "checkFilePrivs": packet = {filename:e.filename, folder:e.folder, can_read:e.can_read, can_write:e.can_write}; callListener(APIEvent.FILE_PRIVS_LOADED, e.success, packet); break; }; } public static function loadMedals():void{ if (_medals){ dispatchEvent(new APIEvent(APIEvent.MEDALS_LOADED, true, medals)); return; }; var params:Object = new Object(); if (hasUserSession()){ params.publisher_id = publisher_id; params.user_id = user_id; }; sendCommand("getMedals", params); } public static function connect(loaderInfo:LoaderInfo, m_id:String, encrypt_key:String=null):void{ var loaderInfo = loaderInfo; var m_id = m_id; var encrypt_key = encrypt_key; if (!loaderInfo){ fatalError("Null loaderInfo paremeter passed in to connectMovie!", ""); return; }; if (loaderInfo.loader){ loaderInfo = loaderInfo.loader.loaderInfo; }; //unresolved jump var _slot1 = error; _host = loaderInfo.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 = 1; }; 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; }; } else { publisher_id = 1; session_id = "D3bu64p1U53R"; user_id = 10; user_name = "API-Debugger"; }; if (connected){ 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}); } public static function saveLocal(save_id:String, save_data:Object, size_allocation:uint=0):void{ var sharedObj:SharedObject; var save_id = save_id; var save_data = save_data; var size_allocation = size_allocation; 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(); //unresolved jump var _slot1 = e; sendWarning(("saveLocal ERROR: " + _slot1)); } public static function getPeriodName(p:String):String{ var i:String; for (i in period_aliases) { if (i == p){ return (period_aliases[i].name); }; }; return (null); } public static function getSaveGroupByName(groupName:String):SaveGroup{ if (((!(_saveGroups)) || ((_saveGroups.length < 1)))){ sendWarning("No save groups found"); return (null); }; var i:uint; while (i < _saveGroups.length) { if (_saveGroups[i].name == groupName){ return (_saveGroups[i]); }; i++; }; return (null); } private static function getCommandID(name:String):String{ return (name); } public static function hasEventListener(type:String):Boolean{ return (_eventDispatcher.hasEventListener(type)); } public static function isNewgrounds():Boolean{ return ((((publisher_id == 1)) || ((getHost().toLowerCase().indexOf("ungrounded.net") > -1)))); } public static function isConnected():Boolean{ return (_connected); } } }//package com.newgrounds
Section 15
//APIError (com.newgrounds.APIError) package com.newgrounds { import flash.utils.*; public class APIError { public var alias:String; public var message:String; public var name:String; public var code:Number;// = 0 private static const always_caps:Array = new Array("API", "URL", "ID"); public static const error_names:Object = init_names(); 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"); public static const error_codes:Object = init_codes(); public function APIError(error, msg:String){ super(); if ((error is String)){ error = error_codes[error]; } else { if (!(error is uint)){ error = 0; }; }; this.code = error; this.message = msg; this.name = error_names[error]; this.alias = aliases[error]; } public function isError():Boolean{ return (true); } private static function init_names():Array{ var alias_parts:Array; var a:uint; var c:String; var result:Array = new Array(); var i:uint; while (i < aliases.length) { alias_parts = aliases[i].toLowerCase().split("_"); a = 0; while (a < alias_parts.length) { alias_parts[a] = (alias_parts[a].substr(0, 1).toUpperCase() + alias_parts[a].substr(1, alias_parts[a].length)); for each (c in always_caps) { if (alias_parts[a].toUpperCase() == c){ alias_parts[a] = alias_parts[a].toUpperCase(); }; }; a++; }; result[i] = alias_parts.join(" "); i++; }; return (result); } public static function init_codes():Dictionary{ var result:Dictionary = new Dictionary(); var i:uint; while (i < aliases.length) { result[aliases[i]] = i; i++; }; return (result); } } }//package com.newgrounds
Section 16
//APIEvent (com.newgrounds.APIEvent) package com.newgrounds { import flash.events.*; public class APIEvent extends Event { private var _error:APIError; private var _success:Boolean; private var _target; private var _data; public static const AD_ATTACHED:String = "adAttached"; public static const FILE_PRIVS_LOADED:String = "filePrivsLoaded"; public static const ADS_APPROVED:String = "adsApproved"; public static const MEDAL_UNLOCKED:String = "medalUnlocked"; public static const MEDALS_LOADED:String = "medalsLoaded"; public static const FILE_REQUESTED:String = "fileRequested"; public static const METADATA_LOADED:String = "metadataLoaded"; public static const NEW_VERSION_AVAILABLE:String = "newVersionAvailable"; public static const API_CONNECTED:String = "movieConnected"; public static const EVENT_LOGGED:String = "eventLogged"; public static const FILE_SAVED:String = "fileSaved"; public static const SCORE_POSTED:String = "scorePosted"; public static const VOTE_COMPLETE:String = "voteComplete"; public static const FILE_LOADED:String = "fileLoaded"; public static const QUERY_COMPLETE:String = "queryComplete"; public static const SCORES_LOADED:String = "scoresLoaded"; public static const HOST_BLOCKED:String = "hostBlocked"; public static const FILE_INITIALIZED:String = "fileInitialized"; public function APIEvent(type:String, success:Boolean=true, data=undefined){ super(type); this._data = data; this._success = success; } public function get success():Boolean{ return (this._success); } public function get data(){ return (this._data); } } }//package com.newgrounds
Section 17
//BaseN (com.newgrounds.BaseN) package com.newgrounds { import flash.utils.*; public class BaseN { private var _hashVal:Dictionary; private var _hashIndex:String; private var _base:Number; public function BaseN(hash:String=null){ super(); if (hash){ this._hashIndex = hash; } else { this._hashIndex = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`~@#$%^&*()+|;/"; }; this._base = this._hashIndex.length; this._hashVal = new Dictionary(); var i:uint; while (i < this._base) { this._hashVal[this._hashIndex.charAt(i)] = i; i++; }; } public function encode(n:Number, minchars:uint=1):String{ var s:String = n.toString(); var str:String = ""; if (s.charAt(0) == "-"){ str = "-"; s = s.substring(1); }; var halves:Array = s.split(".", 2); str = (str + this.baseNEncoder(halves[0], minchars)); if (halves.length > 1){ str = (str + ("." + this.baseNEncoder(halves[1]))); }; return (str); } private function baseNDecoder(s:String):uint{ var val:uint; var i:uint; while (i < s.length) { val = (val * this._base); val = (val + this._hashVal[s.charAt(i)]); i++; }; return (val); } public function decode(s:String):Number{ var val:String = ""; if (s.charAt(0) == "-"){ val = "-"; s = s.substring(1); }; var halves:Array = s.split(".", 2); val = (val + this.baseNDecoder(halves[0])); if (halves.length > 1){ val = (val + "."); val = (val + this.baseNDecoder(halves[1])); }; return (Number(val)); } private function baseNEncoder(n:uint, minchars:uint=1):String{ var str:String = ""; var val:uint = n; while (val != 0) { str = (this._hashIndex.charAt((val % this._base)) + str); val = (val / this._base); }; if (minchars){ while (str.length < minchars) { str = (this._hashIndex.charAt(0) + str); }; }; return (str); } } }//package com.newgrounds
Section 18
//Medal (com.newgrounds.Medal) package com.newgrounds { import flash.events.*; import flash.display.*; import flash.net.*; import flash.system.*; public class Medal { private var _unlocked:Boolean;// = false private var _iconLoader:Loader; private var _difficultyId:uint; private var _icon:BitmapData; private var _value:uint; private var _iconUrl:URLRequest; private var _name:String; private var _id:uint; private static const DIFFICULT_NAMES:Array = [null, "Easy", "Moderate", "Challenging", "Difficult", "Brutal"]; private static const DEFAULT_ICON:BitmapData = new BitmapData(50, 50, false, 0); public function Medal(id:uint, name:String, value:uint, difficulty:uint, unlocked:Boolean, iconUrl:String){ var id = id; var name = name; var value = value; var difficulty = difficulty; var unlocked = unlocked; var iconUrl = iconUrl; 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); this._iconLoader.load(this._iconUrl, new LoaderContext(true)); //unresolved jump var _slot1 = e; onIconLoaderError(null); }; } public function get icon():BitmapData{ return (this._icon); } public function set unlocked(b:Boolean):void{ this._unlocked = b; } public function get bytesLoaded():uint{ return ((this._iconLoader) ? this._iconLoader.contentLoaderInfo.bytesLoaded : 0); } public function get name():String{ return (this._name); } private function onIconLoaderComplete(e:Event):void{ var bitmap:Bitmap = (this._iconLoader.content as Bitmap); this._icon = bitmap.bitmapData; this._iconLoader.unload(); this._iconLoader = null; } public function get bytesTotal():uint{ return ((this._iconLoader) ? this._iconLoader.contentLoaderInfo.bytesTotal : 0); } public function get id():uint{ return (this._id); } public function unlock():void{ if (!this._unlocked){ API.unlockMedal(this._name); }; } private function onIconLoaderError(e: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 onIconLoaderInit(e:Event):void{ } public function get unlocked():Boolean{ return (this._unlocked); } public function createIconBitmap():Bitmap{ return (new Bitmap(this.icon)); } public function toString():String{ return (this._name); } public function get value():uint{ return (this._value); } public function get difficultyId():uint{ return (this._difficultyId); } public function get difficulty():String{ return (DIFFICULT_NAMES[this._difficultyId]); } public static function createFromObject(medalData:Object):Medal{ return (new Medal(medalData.medal_id, medalData.medal_name, medalData.medal_value, medalData.medal_difficulty, medalData.medal_unlocked, medalData.medal_icon)); } } }//package com.newgrounds
Section 19
//RC4 (com.newgrounds.RC4) package com.newgrounds { public class RC4 { private static var mykey:Array = new Array(0xFF); private static var sbox:Array = new Array(0xFF); private static function charsToHex(chars:Array):String{ var result:String = new String(""); var hexes:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); var i:uint; while (i < chars.length) { result = (result + (hexes[(chars[i] >> 4)] + hexes[(chars[i] & 15)])); i++; }; return (result); } public static function encrypt(src:String, key:String):String{ var mtxt:Array = strToChars(src); var mkey:Array = strToChars(key); var result:Array = calculate(mtxt, mkey); return (charsToHex(result)); } private static function hexToChars(hex:String):Array{ var codes:Array = new Array(); var i:uint = ((hex.substr(0, 2))=="0x") ? 2 : 0; while (i < hex.length) { codes.push(parseInt(hex.substr(i, 2), 16)); i = (i + 2); }; return (codes); } public static function encryptbin(src:String, key:String):Array{ var mtxt:Array = strToChars(src); var mkey:Array = strToChars(key); var result:Array = calculate(mtxt, mkey); return (result); } public static function decrypt(src:String, key:String):String{ var mtxt:Array = hexToChars(src); var mkey:Array = strToChars(key); var result:Array = calculate(mtxt, mkey); return (charsToStr(result)); } private static function strToChars(str:String):Array{ var codes:Array = new Array(); var i:uint; while (i < str.length) { codes.push(str.charCodeAt(i)); i++; }; return (codes); } private static function calculate(plaintxt:Array, psw:Array):Array{ var k:uint; var temp:uint; var cipherby:uint; var idx:uint; initialize(psw); var i:uint; var j:uint; var cipher:Array = new Array(); var a:uint; while (a < plaintxt.length) { i = ((i + 1) % 0x0100); j = ((j + sbox[i]) % 0x0100); temp = sbox[i]; sbox[i] = sbox[j]; sbox[j] = temp; idx = ((sbox[i] + sbox[j]) % 0x0100); k = sbox[idx]; cipherby = (plaintxt[a] ^ k); cipher.push(cipherby); a++; }; return (cipher); } private static function initialize(pwd:Array):void{ var tempSwap:uint; var b:uint; var intLength:uint = pwd.length; var a:uint; while (a <= 0xFF) { mykey[a] = pwd[(a % intLength)]; sbox[a] = a; a++; }; a = 0; while (a <= 0xFF) { b = (((b + sbox[a]) + mykey[a]) % 0x0100); tempSwap = sbox[a]; sbox[a] = sbox[b]; sbox[b] = tempSwap; a++; }; } private static function charsToStr(chars:Array):String{ var result:String = new String(""); var i:uint; while (i < chars.length) { result = (result + String.fromCharCode(chars[i])); i++; }; return (result); } } }//package com.newgrounds
Section 20
//SaveFile (com.newgrounds.SaveFile) package com.newgrounds { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.net.*; public class SaveFile extends EventDispatcher { private var _group:SaveGroup; private var _status:uint; private var _fileUrl:String; private var _ratings:Dictionary; private var _id:uint; private var _thumbnailUrl:String; private var _description:String; private var _keys:Dictionary; private var _authorName:String; private var _filename:String; private var _thumbnail:BitmapData; private var _authorId:uint; private var _contents; public function SaveFile(group:SaveGroup){ super(); this._keys = new Dictionary(); this._ratings = new Dictionary(); this._group = group; this._description = ""; } public function get authorId():uint{ return (this._authorId); } public function get name():String{ return (this._filename); } public function set authorId(value:uint):void{ this._authorId = value; } override public function toString():String{ var key:Object; var rating:Object; var str = (((((("Save File " + this._filename) + " ID: ") + this._id) + "\n ") + this._description) + "\n"); for each (key in this._keys) { str = (str + ((((" " + this._group.getKeyById(key.id).name) + ": ") + key.val) + "\n")); }; for each (rating in this._ratings) { str = (str + ((((((" " + this._group.getRatingById(rating.id).name) + "\n Score: ") + rating.score) + " Votes: ") + rating.votes) + "\n")); }; return (str); } public function getRating(rating):Object{ var r:SaveRating; if ((rating is String)){ r = this._group.getRatingByName(rating); } else { r = this._group.getRatingById(rating); }; if (r){ return (this._ratings[r]); }; return (null); } public function set name(s:String):void{ this._filename = s; } public function get contents(){ return (this._contents); } public function get id():uint{ return (this._id); } public function setKey(key, value):void{ var k:SaveKey; if ((key is String)){ k = this._group.getKeyByName(key); } else { k = this._group.getKeyById(key); }; if (k){ this._keys[k] = {id:k.id, val:value}; }; } public function setRating(rating, votes:Number, score:Number):void{ var r:SaveRating; if ((rating is String)){ r = this._group.getRatingByName(rating); } else { r = this._group.getRatingById(rating); }; if (r){ this._ratings[r] = {id:r.id, name:r.name, votes:votes, score:score}; }; } public function loadContents():void{ var loader:SmartURLLoader; if (this._fileUrl){ loader = new SmartURLLoader(); loader.responseFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, this.onContentsLoaded); loader.load(this._fileUrl); }; } public function toObject():Object{ var key:Object; var obj:Object = {group:this.groupId, filename:this.name, description:this.description, shared:true}; obj.keys = []; for each (key in this._keys) { obj.keys.push({id:key.id, value:key.val}); }; return (obj); } public function getKey(key){ var k:SaveKey; if ((key is String)){ k = this._group.getKeyByName(key); } else { k = this._group.getKeyById(key); }; if (k){ return (this._keys[k]); }; return (null); } public function set fileUrl(s:String):void{ this._fileUrl = s; } public function get groupName():String{ return (this._group.name); } public function set contents(o):void{ this._contents = o; } public function get authorName():String{ return (this._authorName); } public function set id(i:uint):void{ this._id = i; } public function loadAuthorPage(){ API.loadUserPage(this._authorId, this._authorName); } public function sendRating(rating:String, vote:Number):void{ var ratingObject:SaveRating = this._group.getRatingByName(rating); if (!ratingObject){ trace((("[NewgroundsAPISaveFile] " + rating) + " is not a recognized save file")); return; }; if ((((vote < ratingObject.minValue)) || ((vote > ratingObject.maxValue)))){ trace(((("[NewgroundsAPISaveFile] Vote must be between " + ratingObject.minValue) + " and ") + ratingObject.maxValue)); return; }; ratingObject.voted = true; API.rateSaveFile(this, ratingObject, vote); } public function set thumbnailUrl(s:String):void{ this._thumbnailUrl = s; } public function set thumbnail(bData:BitmapData):void{ if (this._thumbnail){ this._thumbnail.dispose(); }; this._thumbnail = bData.clone(); } public function get groupType():uint{ return (this._group.type); } public function get fileUrl():String{ return (this._fileUrl); } public function get thumbnailUrl():String{ return (this._thumbnailUrl); } public function get shared():Boolean{ return (true); } public function set authorName(value:String):void{ this._authorName = value; } public function get thumbnail():BitmapData{ return (this._thumbnail); } public function set description(s:String):void{ this._description = s; } public function get groupId():uint{ return (this._group.id); } public function get description():String{ return (this._description); } public function save():void{ API.saveFile(this); } private function onContentsLoaded(e:Event):void{ var byteArray:ByteArray = e.target.response; byteArray.uncompress(); var tag:uint = byteArray.readUnsignedByte(); if (tag == 0){ this._contents = new ByteArray(); this._contents.writeBytes(byteArray, 1); } else { this._contents = byteArray.readObject(); }; dispatchEvent(new APIEvent(APIEvent.FILE_LOADED, true, this.contents)); } } }//package com.newgrounds
Section 21
//SaveGroup (com.newgrounds.SaveGroup) package com.newgrounds { public class SaveGroup { private var _id:uint; private var _keys:Array; private var _type:uint; private var _name:String; private var _ratings:Array; private var _files:Array; public static const TYPE_SYSTEM:uint = 0; public static const TYPE_PRIVATE:uint = 1; public static const TYPE_MODERATED:uint = 3; public static const TYPE_PUBLIC:uint = 2; public function SaveGroup(groupId:uint, groupName:String, groupType:uint){ super(); this._name = groupName; this._id = groupId; this._type = groupType; this._ratings = []; this._keys = []; this._files = []; } public function toString():String{ return ((((((("SaveGroup { name: " + this._name) + ", id: ") + this._id) + ", keys: ") + this._keys) + "}")); } public function getRatingById(ratingId:uint):SaveRating{ var i:uint; while (i < this._ratings.length) { if (this._ratings[i].id == ratingId){ return (this._ratings[i]); }; i++; }; return (null); } public function getKeyByName(keyName:String):SaveKey{ var i:uint; while (i < this._keys.length) { if (this._keys[i].name == keyName){ return (this._keys[i]); }; i++; }; return (null); } public function get name():String{ return (this._name); } public function getKeyById(keyId:uint):SaveKey{ var i:uint; while (i < this._keys.length) { if (this._keys[i].id == keyId){ return (this._keys[i]); }; i++; }; return (null); } public function addRating(rating:SaveRating):void{ this._ratings.push(rating); } public function get id():uint{ return (this._id); } public function createQuery():SaveGroupQuery{ return (new SaveGroupQuery(this)); } public function get keys():Array{ return (this._keys.concat()); } public function getRatingByName(ratingName:String):SaveRating{ var i:uint; while (i < this._ratings.length) { if (this._ratings[i].name == ratingName){ return (this._ratings[i]); }; i++; }; return (null); } public function get ratings():Array{ return (this._ratings.concat()); } public function get type():uint{ return (this._type); } public function addKey(key:SaveKey):void{ this._keys.push(key); } public static function createFromObject(groupData:Object):SaveGroup{ var keyData:Object; var ratingData:Object; var saveGroup:SaveGroup = new SaveGroup(groupData.group_id, groupData.group_name, groupData.group_type); var i:uint; while (i < groupData.keys.length) { keyData = groupData.keys[i]; saveGroup.addKey(new SaveKey(keyData.id, keyData.name, keyData.type)); i++; }; i = 0; while (i < groupData.ratings.length) { ratingData = groupData.ratings[i]; saveGroup.addRating(new SaveRating(ratingData.id, ratingData.name, ratingData.float, ratingData.min, ratingData.max)); i++; }; return (saveGroup); } } }//package com.newgrounds
Section 22
//SaveGroupQuery (com.newgrounds.SaveGroupQuery) package com.newgrounds { import flash.events.*; public class SaveGroupQuery extends EventDispatcher { private var _group:SaveGroup; private var _fileConditions:Array; private var _ratingConditions:Array; private var _resultsPerPage:uint; private var _sortConditions:Array; private var _lookupRatings:Array; private var _randomizeResults:Boolean; private var _lookupKeys:Array; private var _page:uint; private var _groupBy:Array; private var _keyConditions:Array; public static const UPDATED_ON:uint = 5; public static const TABLE_RATINGS:uint = 3; public static const TABLE_FILES:uint = 1; public static const TOTAL_VOTES:String = "votes"; public static const AUTHOR_ID:uint = 1; public static const FILE_STATUS:uint = 7; public static const TABLE_KEYS:uint = 2; public static const FILE_NAME:uint = 3; public static const SCORE:String = "score"; public static const TOTAL_VIEWS:uint = 6; public static const CREATED_ON:uint = 4; public static const FILE_ID:uint = 0; public static const AUTHOR_NAME:uint = 2; public function SaveGroupQuery(group:SaveGroup){ super(); this._group = group; this.reset(); } public function addKeyCondition(keyName:String, operator:String, value):void{ var key:SaveKey = this._group.getKeyByName(keyName); if (!key){ return; }; if (!this.checkValue(value, key.type)){ return; }; this._keyConditions.push({key_id:key.id, operator:operator, value:value}); } public function sortOn(field:uint, sortDescending:Boolean=false):void{ this.addSortCondition(TABLE_FILES, field, sortDescending); } public function set isRandomized(b:Boolean):void{ this._randomizeResults = b; } public function get isRandomized():Boolean{ return (this._randomizeResults); } public function groupByRating(ratingName:String):void{ var rating:SaveRating = this._group.getRatingByName(ratingName); if (!rating){ return; }; this._groupBy.push({table:TABLE_RATINGS, field:rating.id}); } public function execute():void{ API.executeSaveQuery(this); } public function get page():uint{ return (this._page); } public function groupByKey(keyName:String):void{ var key:SaveKey = this._group.getKeyByName(keyName); if (!key){ return; }; this._groupBy.push({table:TABLE_KEYS, field:key.id}); } public function sortOnKey(keyName:String, sortDescending:Boolean=false):void{ this.addSortCondition(TABLE_KEYS, this._group.getKeyByName(keyName).id, sortDescending); } public function toObject():Object{ var query:Object = {page:this._page, num_results:this._resultsPerPage}; if (this.isRandomized){ query.randomize = 1; }; if (((this._fileConditions) && ((this._fileConditions.length > 0)))){ query.file_conditions = this._fileConditions; }; if (((this._keyConditions) && ((this._keyConditions.length > 0)))){ query.key_conditions = this._keyConditions; }; if (((this._ratingConditions) && ((this._ratingConditions.length > 0)))){ query.rating_conditions = this._ratingConditions; }; if (((this._sortConditions) && ((this._sortConditions.length > 0)))){ query.sort_conditions = this._sortConditions; }; if (((this._lookupKeys) && ((this._lookupKeys.length > 0)))){ query.lookup_keys = this._lookupKeys; }; if (((this._lookupRatings) && ((this._lookupRatings.length > 0)))){ query.lookup_ratings = this._lookupRatings; }; if (((this._groupBy) && ((this._groupBy.length > 0)))){ query.group_by = this._groupBy; }; return (query); } 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; } public function includeKey(keyName:String):void{ var key:SaveKey = this._group.getKeyByName(keyName); if (key){ this._lookupKeys.push(key.id); }; } private function checkValue(obj, type:uint):Boolean{ return (true); } public function set page(n:uint):void{ this._page = n; } public function addRatingCondition(ratingName:String, operator:String, value, column:String="score"):void{ var rating:SaveRating = this._group.getRatingByName(ratingName); if (!rating){ return; }; this._ratingConditions.push({rating_id:rating.id, operator:operator, value:value, column:column}); } public function includeRating(ratingName:String):void{ var rating:SaveRating = this._group.getRatingByName(ratingName); if (rating){ this._lookupRatings.push(rating.id); }; } public function sortOnRating(ratingName:String, sortDescending:Boolean=false, column:String="score"):void{ this.addSortCondition(TABLE_RATINGS, this._group.getRatingByName(ratingName).id, sortDescending, column); } public function set resultsPerPage(n:uint):void{ this._resultsPerPage = n; } public function excludeRating(ratingName:String):void{ var rating:SaveRating = this._group.getRatingByName(ratingName); var i:uint; while (i < this._lookupRatings.length) { if (this._lookupRatings[i] == rating.id){ this._lookupRatings.splice(i, 1); return; }; i++; }; } public function addFileCondition(field:uint, operator:String, value):void{ this._fileConditions.push({field:field, operator:operator, value:value}); } public function excludeKey(keyName:String):void{ var key:SaveKey = this._group.getKeyByName(keyName); var i:uint; while (i < this._lookupKeys.length) { if (this._lookupKeys[i] == key.id){ this._lookupKeys.splice(i, 1); return; }; i++; }; } public function get resultsPerPage():uint{ return (this._resultsPerPage); } public function get groupId():uint{ return (this._group.id); } override public function toString():String{ return (""); } private function addSortCondition(table:uint, field:uint, sortDescending:Boolean=false, extra=null):void{ var sortCondition:Object = {table:table, field:field, desc:sortDescending}; if (extra){ sortCondition.extra = extra; }; this._sortConditions.push(sortCondition); } public function groupBy(field:uint):void{ this._groupBy.push({table:TABLE_FILES, field:field}); } public function get group():SaveGroup{ return (this._group); } } }//package com.newgrounds
Section 23
//SaveKey (com.newgrounds.SaveKey) package com.newgrounds { public class SaveKey { private var _id:uint; private var _type:uint; private var _name:String; public static const TYPE_BOOLEAN:uint = 4; public static const TYPE_STRING:uint = 3; public static const TYPE_FLOAT:uint = 1; public static const TYPE_INTEGER:uint = 2; public function SaveKey(id:uint, name:String, type:uint){ super(); this._id = id; this._name = name; this._type = type; } public function isValueValid(value):Boolean{ if (this._type == TYPE_INTEGER){ return ((((value is int)) || ((value is uint)))); }; if (this._type == TYPE_FLOAT){ return ((((((value is int)) || ((value is uint)))) || ((value is Number)))); }; if (this._type == TYPE_STRING){ return ((value is String)); }; if (this._type == TYPE_BOOLEAN){ return ((((((((value is Boolean)) || ((value === 0)))) || ((value === 1)))) || ((value == "")))); }; return (false); } public function get name():String{ return (this._name); } public function get type():uint{ return (this._type); } public function get id():uint{ return (this._id); } public function toString():String{ return (this._name); } } }//package com.newgrounds
Section 24
//SaveRating (com.newgrounds.SaveRating) package com.newgrounds { public class SaveRating { private var _voted:Boolean; private var _name:String; private var _maxValue:Number; private var _isFloat:Boolean; private var _id:uint; private var _minValue:Number; public function SaveRating(id:uint, name:String, isFloat:Boolean, minValue:Number=-INF, maxValue:Number=INF){ super(); this._id = id; this._name = name; this._isFloat = isFloat; this._minValue = minValue; this._maxValue = maxValue; } public function get voted():Boolean{ return (this._voted); } public function set voted(b:Boolean):void{ this._voted = b; } public function toString():String{ return (this._name); } public function get maxValue():Number{ return (this._maxValue); } public function get name():String{ return (this._name); } public function get isFloat():Boolean{ return (this._isFloat); } public function get id():uint{ return (this._id); } public function get minValue():Number{ return (this._minValue); } } }//package com.newgrounds
Section 25
//Score (com.newgrounds.Score) package com.newgrounds { public class Score { private var _board:ScoreBoard; private var _position:uint; private var _numeric_value:uint; private var _value:String; private var _username:String; private var _tag:String; public function Score(board:ScoreBoard, position:Number, username:String, value:String, numeric_value:uint, tag:String){ super(); this._board = board; this._position = position; this._username = username; this._value = value; this._numeric_value = numeric_value; this._tag = tag; } public function get tag():String{ return (this._tag); } public function get board():ScoreBoard{ return (this._board); } public function get position():uint{ return (this._position); } public function get value():String{ return (this._value); } public function get username():String{ return (this._username); } public function get numeric_value():uint{ return (this._numeric_value); } } }//package com.newgrounds
Section 26
//ScoreBoard (com.newgrounds.ScoreBoard) package com.newgrounds { import flash.events.*; public class ScoreBoard extends EventDispatcher { private var _scores:Array; private var _tag:String; private var _period:String;// = "Today" private var _name:String; private var _page:uint;// = 1 private var _id:uint; private var _num_results:uint;// = 10 public function ScoreBoard(id:uint, name:String, tag:String){ super(); this._name = name; this._id = id; this._scores = []; this._tag = tag; } public function get period():String{ return (this._period); } public function get name():String{ return (this._name); } public function postScore(value:uint):void{ API.postScore(this._name, value); } public function get page():uint{ return (this._page); } public function get tag():String{ return (this._tag); } public function exists():Boolean{ return ((this._id > 0)); } public function get scores():Array{ return (this._scores); } public function get id():Number{ return (this._id); } public function loadScores(period:String="Today", page:uint=1, num_results:uint=10):void{ this._period = period; if (((!(this._period)) || ((this._period == "")))){ this._period = ScoreBoardPeriod.TODAY; }; this._page = page; this._num_results = num_results; API.loadScores(this); } function setScores(scores:Array, period:String, page:Number, num_results:Number):void{ var position:uint; this._period = period; this._page = page; this._num_results = num_results; this._scores = []; var i:uint; while (i < scores.length) { position = (((this._num_results * (this._page - 1)) + 1) + i); this._scores.push(new Score(this, position, scores[i].username, scores[i].value, scores[i].numeric_value, scores[i].tag)); i++; }; } public function get num_results():uint{ return (this._num_results); } } }//package com.newgrounds
Section 27
//ScoreBoardPeriod (com.newgrounds.ScoreBoardPeriod) package com.newgrounds { public class ScoreBoardPeriod { public static const MONTH:String = "This Month"; public static const TODAY:String = "Today"; public static const WEEK:String = "This Week"; public static const ALL_TIME:String = "All-Time"; public static const YEAR:String = "This Year"; } }//package com.newgrounds
Section 28
//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 _urlRequest:URLRequest; private var _method:String;// = "GET" private var _files:Dictionary; private var _hasVariables:Boolean; private var _dataFormat:String;// = "text" private var _urlLoader:URLLoader; private var _preventCache:Boolean;// = false private var _variables:Dictionary; public var owner; private var _openBrowser:Boolean;// = false private static const CRLF:String = " "; private static var _loaders:Dictionary = new Dictionary(); public function SmartURLLoader(){ super(); this._urlRequest = new URLRequest(); this._variables = new Dictionary(); } public function get response(){ return (this._urlLoader.data); } public function set method(m:String):void{ if (((this.hasFiles) && ((m == URLRequestMethod.GET)))){ throw (new IllegalOperationError("GET cannot be used to upload files.")); }; this._method = m; } private function onIOError(e:IOErrorEvent):void{ dispatchEvent(e); this.dispose(); } public function addVariable(name:String, value=""):void{ this._variables[name] = value; if (value){ this._hasVariables = true; }; } private function onSecurityError(e:SecurityErrorEvent):void{ dispatchEvent(e); this.dispose(); } public function get preventCache():Boolean{ return (this._preventCache); } public function addFile(fileName:String, data:ByteArray, dataField:String, contentType:String="application/octect-stream"):void{ this.method = URLRequestMethod.POST; if (!this._files){ this._files = new Dictionary(); }; this._files[fileName] = new File(fileName, data, dataField, contentType); } public function get openBrowser():Boolean{ return (this._openBrowser); } public function set preventCache(b:Boolean):void{ this._preventCache = b; } public function get responseFormat():String{ return (this._dataFormat); } private function onComplete(e:Event):void{ dispatchEvent(e); this.dispose(); } public function dispose():void{ 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; _loaders[this] = null; } public function get method():String{ return (this._method); } public function close():void{ this._urlLoader.close(); //unresolved jump var _slot1 = e; } private function buildMultipartData(boundary:String):ByteArray{ var key:String; var file:File; var postData:ByteArray = new ByteArray(); postData.endian = Endian.BIG_ENDIAN; boundary = ("--" + boundary); for (key in this._variables) { postData.writeUTFBytes((boundary + CRLF)); postData.writeUTFBytes(((("Content-Disposition: form-data; name=\"" + key) + "\"") + CRLF)); postData.writeUTFBytes(CRLF); postData.writeUTFBytes((this._variables[key] + CRLF)); }; if (this.hasFiles){ for each (file in this._files) { postData.writeUTFBytes((boundary + CRLF)); postData.writeUTFBytes(("Content-Disposition: form-data; name=\"Filename\"" + CRLF)); postData.writeUTFBytes(CRLF); postData.writeUTFBytes((file.fileName + CRLF)); postData.writeUTFBytes((boundary + CRLF)); postData.writeUTFBytes(((((("Content-Disposition: form-data; name=\"" + file.dataField) + "\"; filename=\"") + file.fileName) + "\"") + CRLF)); postData.writeUTFBytes((("Content-Type: " + file.contentType) + CRLF)); postData.writeUTFBytes(CRLF); postData.writeBytes(file.data); postData.writeUTFBytes(CRLF); }; postData.writeUTFBytes((boundary + CRLF)); postData.writeUTFBytes(("Content-Disposition: form-data; name=\"Upload\"" + CRLF)); postData.writeUTFBytes(CRLF); postData.writeUTFBytes(("Submit Query" + CRLF)); }; postData.writeUTFBytes((boundary + "--")); postData.position = 0; trace(postData.readUTFBytes(postData.length)); postData.position = 0; return (postData); } public function clearVariables():void{ this._variables = new Dictionary(); } private function onProgress(e:ProgressEvent):void{ dispatchEvent(e); } public function load(url:String):void{ var urlVariables:URLVariables; var key:String; var boundary:String; var i:uint; var event:SecurityErrorEvent; var url = url; 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; this._urlLoader.load(this._urlRequest); //unresolved jump var _slot1 = error; event = new SecurityErrorEvent(SecurityErrorEvent.SECURITY_ERROR, false, false, _slot1.message); onSecurityError(event); }; } public function set responseFormat(s:String):void{ this._dataFormat = s; } public function clearFiles():void{ this._files = null; } private function onHTTPStatus(e:HTTPStatusEvent):void{ dispatchEvent(e); } public function set openBrowser(b:Boolean):void{ this._openBrowser = b; } public function get hasFiles():Boolean{ return (Boolean(this._files)); } } }//package com.newgrounds import flash.utils.*; class File { private var dataField:String; private var contentType:String; private var fileName:String; private var data:ByteArray; private function File(fileName:String, data:ByteArray, dataField:String="Filedata", contentType:String="application/octet-stream"){ super(); this.fileName = fileName; this.data = data; this.dataField = dataField; this.contentType = contentType; } }
Section 29
//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.5.0.12683"; 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 30
//EdgeMetrics (mx.core.EdgeMetrics) package mx.core { public class EdgeMetrics { public var top:Number; public var left:Number; public var bottom:Number; public var right:Number; mx_internal static const VERSION:String = "3.5.0.12683"; public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0); ; public function EdgeMetrics(left:Number=0, top:Number=0, right:Number=0, bottom:Number=0){ super(); this.left = left; this.top = top; this.right = right; this.bottom = bottom; } public function clone():EdgeMetrics{ return (new EdgeMetrics(left, top, right, bottom)); } } }//package mx.core
Section 31
//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.5.0.12683"; 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 32
//FlexLoader (mx.core.FlexLoader) package mx.core { import flash.display.*; import mx.utils.*; public class FlexLoader extends Loader { mx_internal static const VERSION:String = "3.5.0.12683"; public function FlexLoader(){ super(); name = NameUtil.createUniqueName(this); //unresolved jump var _slot1 = e; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 33
//FlexShape (mx.core.FlexShape) package mx.core { import flash.display.*; import mx.utils.*; public class FlexShape extends Shape { mx_internal static const VERSION:String = "3.5.0.12683"; public function FlexShape(){ super(); name = NameUtil.createUniqueName(this); //unresolved jump var _slot1 = e; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 34
//FlexVersion (mx.core.FlexVersion) package mx.core { import mx.resources.*; public class FlexVersion { public static const VERSION_2_0_1:uint = 33554433; public static const CURRENT_VERSION:uint = 50331648; public static const VERSION_3_0:uint = 50331648; public static const VERSION_2_0:uint = 33554432; public static const VERSION_ALREADY_READ:String = "versionAlreadyRead"; public static const VERSION_ALREADY_SET:String = "versionAlreadySet"; mx_internal static const VERSION:String = "3.5.0.12683"; private static var compatibilityVersionChanged:Boolean = false; private static var _compatibilityErrorFunction:Function; private static var _compatibilityVersion:uint = 50331648; private static var compatibilityVersionRead:Boolean = false; public function FlexVersion(){ super(); } mx_internal static function changeCompatibilityVersionString(value:String):void{ var pieces:Array = value.split("."); var major:uint = parseInt(pieces[0]); var minor:uint = parseInt(pieces[1]); var update:uint = parseInt(pieces[2]); _compatibilityVersion = (((major << 24) + (minor << 16)) + update); } public static function set compatibilityVersion(value:uint):void{ var s:String; if (value == _compatibilityVersion){ return; }; if (compatibilityVersionChanged){ if (compatibilityErrorFunction == null){ s = ResourceManager.getInstance().getString("core", VERSION_ALREADY_SET); throw (new Error(s)); }; compatibilityErrorFunction(value, VERSION_ALREADY_SET); }; if (compatibilityVersionRead){ if (compatibilityErrorFunction == null){ s = ResourceManager.getInstance().getString("core", VERSION_ALREADY_READ); throw (new Error(s)); }; compatibilityErrorFunction(value, VERSION_ALREADY_READ); }; _compatibilityVersion = value; compatibilityVersionChanged = true; } public static function get compatibilityVersion():uint{ compatibilityVersionRead = true; return (_compatibilityVersion); } public static function set compatibilityErrorFunction(value:Function):void{ _compatibilityErrorFunction = value; } public static function set compatibilityVersionString(value:String):void{ var pieces:Array = value.split("."); var major:uint = parseInt(pieces[0]); var minor:uint = parseInt(pieces[1]); var update:uint = parseInt(pieces[2]); compatibilityVersion = (((major << 24) + (minor << 16)) + update); } public static function get compatibilityErrorFunction():Function{ return (_compatibilityErrorFunction); } public static function get compatibilityVersionString():String{ var major:uint = ((compatibilityVersion >> 24) & 0xFF); var minor:uint = ((compatibilityVersion >> 16) & 0xFF); var update:uint = (compatibilityVersion & 0xFFFF); return (((((major.toString() + ".") + minor.toString()) + ".") + update.toString())); } } }//package mx.core
Section 35
//FontAsset (mx.core.FontAsset) package mx.core { import flash.text.*; public class FontAsset extends Font implements IFlexAsset { mx_internal static const VERSION:String = "3.5.0.12683"; public function FontAsset(){ super(); } } }//package mx.core
Section 36
//IBorder (mx.core.IBorder) package mx.core { public interface IBorder { function get borderMetrics():EdgeMetrics; } }//package mx.core
Section 37
//IButton (mx.core.IButton) package mx.core { public interface IButton extends IUIComponent { function get emphasized():Boolean; function set emphasized(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IButton.as:Boolean):void; function callLater(_arg1:Function, _arg2:Array=null):void; } }//package mx.core
Section 38
//IChildList (mx.core.IChildList) package mx.core { import flash.display.*; import flash.geom.*; public interface IChildList { function get numChildren():int; function removeChild(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IChildList.as:DisplayObject):DisplayObject; function getChildByName(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IChildList.as:String):DisplayObject; function removeChildAt(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IChildList.as:int):DisplayObject; function getChildIndex(:DisplayObject):int; function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject; function getObjectsUnderPoint(child:Point):Array; function setChildIndex(_arg1:DisplayObject, _arg2:int):void; function getChildAt(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IChildList.as:int):DisplayObject; function addChild(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IChildList.as:DisplayObject):DisplayObject; function contains(flash.display:DisplayObject):Boolean; } }//package mx.core
Section 39
//IContainer (mx.core.IContainer) package mx.core { import flash.display.*; import flash.geom.*; import flash.text.*; import mx.managers.*; import flash.media.*; public interface IContainer extends IUIComponent { function set hitArea(mx.core:IContainer/mx.core:IContainer:graphics/get:Sprite):void; function swapChildrenAt(_arg1:int, _arg2:int):void; function getChildByName(Graphics:String):DisplayObject; function get doubleClickEnabled():Boolean; function get graphics():Graphics; function get useHandCursor():Boolean; function addChildAt(_arg1:DisplayObject, _arg2:int):DisplayObject; function set mouseChildren(mx.core:IContainer/mx.core:IContainer:graphics/get:Boolean):void; function set creatingContentPane(mx.core:IContainer/mx.core:IContainer:graphics/get:Boolean):void; function get textSnapshot():TextSnapshot; function getChildIndex(value:DisplayObject):int; function set doubleClickEnabled(mx.core:IContainer/mx.core:IContainer:graphics/get:Boolean):void; function getObjectsUnderPoint(lockCenter:Point):Array; function get creatingContentPane():Boolean; function setChildIndex(_arg1:DisplayObject, _arg2:int):void; function get soundTransform():SoundTransform; function set useHandCursor(mx.core:IContainer/mx.core:IContainer:graphics/get:Boolean):void; function get numChildren():int; function contains(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;ISpriteInterface.as:DisplayObject):Boolean; function get verticalScrollPosition():Number; function set defaultButton(mx.core:IContainer/mx.core:IContainer:graphics/get:IFlexDisplayObject):void; function swapChildren(_arg1:DisplayObject, _arg2:DisplayObject):void; function set horizontalScrollPosition(mx.core:IContainer/mx.core:IContainer:graphics/get:Number):void; function get focusManager():IFocusManager; function startDrag(_arg1:Boolean=false, _arg2:Rectangle=null):void; function set mouseEnabled(mx.core:IContainer/mx.core:IContainer:graphics/get:Boolean):void; function getChildAt(Graphics:int):DisplayObject; function set soundTransform(mx.core:IContainer/mx.core:IContainer:graphics/get:SoundTransform):void; function get tabChildren():Boolean; function get tabIndex():int; function set focusRect(mx.core:IContainer/mx.core:IContainer:graphics/get:Object):void; function get hitArea():Sprite; function get mouseChildren():Boolean; function removeChildAt(Graphics:int):DisplayObject; function get defaultButton():IFlexDisplayObject; function stopDrag():void; function set tabEnabled(mx.core:IContainer/mx.core:IContainer:graphics/get:Boolean):void; function get horizontalScrollPosition():Number; function get focusRect():Object; function get viewMetrics():EdgeMetrics; function set verticalScrollPosition(mx.core:IContainer/mx.core:IContainer:graphics/get:Number):void; function get dropTarget():DisplayObject; function get mouseEnabled():Boolean; function set tabChildren(mx.core:IContainer/mx.core:IContainer:graphics/get:Boolean):void; function set buttonMode(mx.core:IContainer/mx.core:IContainer:graphics/get:Boolean):void; function get tabEnabled():Boolean; function get buttonMode():Boolean; function removeChild(Graphics:DisplayObject):DisplayObject; function set tabIndex(mx.core:IContainer/mx.core:IContainer:graphics/get:int):void; function addChild(Graphics:DisplayObject):DisplayObject; function areInaccessibleObjectsUnderPoint(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;ISpriteInterface.as:Point):Boolean; } }//package mx.core
Section 40
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 41
//IFlexDisplayObject (mx.core.IFlexDisplayObject) package mx.core { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.accessibility.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get visible():Boolean; function get rotation():Number; function localToGlobal(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 42
//IFlexModuleFactory (mx.core.IFlexModuleFactory) package mx.core { import flash.utils.*; public interface IFlexModuleFactory { function get preloadedRSLs():Dictionary; function allowInsecureDomain(... _args):void; function create(... _args):Object; function allowDomain(... _args):void; function info():Object; } }//package mx.core
Section 43
//IInvalidating (mx.core.IInvalidating) package mx.core { public interface IInvalidating { function validateNow():void; function invalidateSize():void; function invalidateDisplayList():void; function invalidateProperties():void; } }//package mx.core
Section 44
//IProgrammaticSkin (mx.core.IProgrammaticSkin) package mx.core { public interface IProgrammaticSkin { function validateNow():void; function validateDisplayList():void; } }//package mx.core
Section 45
//IRawChildrenContainer (mx.core.IRawChildrenContainer) package mx.core { public interface IRawChildrenContainer { function get rawChildren():IChildList; } }//package mx.core
Section 46
//IRectangularBorder (mx.core.IRectangularBorder) package mx.core { import flash.geom.*; public interface IRectangularBorder extends IBorder { function get backgroundImageBounds():Rectangle; function get hasBackgroundImage():Boolean; function set backgroundImageBounds(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IRectangularBorder.as:Rectangle):void; function layoutBackgroundImage():void; } }//package mx.core
Section 47
//IRepeaterClient (mx.core.IRepeaterClient) package mx.core { public interface IRepeaterClient { function get instanceIndices():Array; function set instanceIndices(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function get isDocument():Boolean; function set repeaters(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function initializeRepeaterArrays(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void; function get repeaters():Array; function set repeaterIndices(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function get repeaterIndices():Array; } }//package mx.core
Section 48
//ISWFBridgeGroup (mx.core.ISWFBridgeGroup) package mx.core { import flash.events.*; public interface ISWFBridgeGroup { function getChildBridgeProvider(mx.core:ISWFBridgeGroup/mx.core:ISWFBridgeGroup:parentBridge/get:IEventDispatcher):ISWFBridgeProvider; function removeChildBridge(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;ISWFBridgeGroup.as:IEventDispatcher):void; function get parentBridge():IEventDispatcher; function addChildBridge(_arg1:IEventDispatcher, _arg2:ISWFBridgeProvider):void; function set parentBridge(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\core;ISWFBridgeGroup.as:IEventDispatcher):void; function containsBridge(IEventDispatcher:IEventDispatcher):Boolean; function getChildBridges():Array; } }//package mx.core
Section 49
//ISWFBridgeProvider (mx.core.ISWFBridgeProvider) package mx.core { import flash.events.*; public interface ISWFBridgeProvider { function get childAllowsParent():Boolean; function get swfBridge():IEventDispatcher; function get parentAllowsChild():Boolean; } }//package mx.core
Section 50
//IUIComponent (mx.core.IUIComponent) package mx.core { import flash.display.*; import mx.managers.*; public interface IUIComponent extends IFlexDisplayObject { function set focusPane(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Sprite):void; function get enabled():Boolean; function set enabled(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Boolean):void; function set isPopUp(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Boolean):void; function get explicitMinHeight():Number; function get percentWidth():Number; function get isPopUp():Boolean; function get owner():DisplayObjectContainer; function get percentHeight():Number; function get baselinePosition():Number; function owns(Number:DisplayObject):Boolean; function initialize():void; function get maxWidth():Number; function get minWidth():Number; function getExplicitOrMeasuredWidth():Number; function get explicitMaxWidth():Number; function get explicitMaxHeight():Number; function set percentHeight(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Number):void; function get minHeight():Number; function set percentWidth(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Number):void; function get document():Object; function get focusPane():Sprite; function getExplicitOrMeasuredHeight():Number; function set tweeningProperties(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Array):void; function set explicitWidth(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Number):void; function set measuredMinHeight(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Number):void; function get explicitMinWidth():Number; function get tweeningProperties():Array; function get maxHeight():Number; function set owner(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:DisplayObjectContainer):void; function set includeInLayout(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Boolean):void; function setVisible(_arg1:Boolean, _arg2:Boolean=false):void; function parentChanged(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:DisplayObjectContainer):void; function get explicitWidth():Number; function get measuredMinHeight():Number; function set measuredMinWidth(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Number):void; function set explicitHeight(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Number):void; function get includeInLayout():Boolean; function get measuredMinWidth():Number; function get explicitHeight():Number; function set systemManager(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:ISystemManager):void; function set document(mx.core:IUIComponent/mx.core:IUIComponent:baselinePosition/get:Object):void; function get systemManager():ISystemManager; } }//package mx.core
Section 51
//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 52
//Singleton (mx.core.Singleton) package mx.core { public class Singleton { mx_internal static const VERSION:String = "3.5.0.12683"; private static var classMap:Object = {}; public function Singleton(){ super(); } public static function registerClass(interfaceName:String, clazz:Class):void{ var c:Class = classMap[interfaceName]; if (!c){ classMap[interfaceName] = clazz; }; } public static function getClass(interfaceName:String):Class{ return (classMap[interfaceName]); } public static function getInstance(interfaceName:String):Object{ var c:Class = classMap[interfaceName]; if (!c){ throw (new Error((("No class registered for interface '" + interfaceName) + "'."))); }; return (c["getInstance"]()); } } }//package mx.core
Section 53
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "3.5.0.12683"; public function SoundAsset(){ super(); } } }//package mx.core
Section 54
//UIComponentGlobals (mx.core.UIComponentGlobals) package mx.core { import flash.display.*; import flash.geom.*; import mx.managers.*; public class UIComponentGlobals { mx_internal static var callLaterSuspendCount:int = 0; mx_internal static var layoutManager:ILayoutManager; mx_internal static var nextFocusObject:InteractiveObject; mx_internal static var designTime:Boolean = false; mx_internal static var tempMatrix:Matrix = new Matrix(); mx_internal static var callLaterDispatcherCount:int = 0; private static var _catchCallLaterExceptions:Boolean = false; public function UIComponentGlobals(){ super(); } public static function set catchCallLaterExceptions(value:Boolean):void{ _catchCallLaterExceptions = value; } public static function get designMode():Boolean{ return (designTime); } public static function set designMode(value:Boolean):void{ designTime = value; } public static function get catchCallLaterExceptions():Boolean{ return (_catchCallLaterExceptions); } } }//package mx.core
Section 55
//ModuleEvent (mx.events.ModuleEvent) package mx.events { import flash.events.*; import mx.core.*; import mx.modules.*; public class ModuleEvent extends ProgressEvent { public var errorText:String; private var _module:IModuleInfo; public static const READY:String = "ready"; public static const ERROR:String = "error"; public static const PROGRESS:String = "progress"; mx_internal static const VERSION:String = "3.5.0.12683"; public static const SETUP:String = "setup"; public static const UNLOAD:String = "unload"; public function ModuleEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, bytesLoaded:uint=0, bytesTotal:uint=0, errorText:String=null, module:IModuleInfo=null){ super(type, bubbles, cancelable, bytesLoaded, bytesTotal); this.errorText = errorText; this._module = module; } public function get module():IModuleInfo{ if (_module){ return (_module); }; return ((target as IModuleInfo)); } override public function clone():Event{ return (new ModuleEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, errorText, module)); } } }//package mx.events
Section 56
//ResourceEvent (mx.events.ResourceEvent) package mx.events { import flash.events.*; import mx.core.*; public class ResourceEvent extends ProgressEvent { public var errorText:String; mx_internal static const VERSION:String = "3.5.0.12683"; public static const COMPLETE:String = "complete"; public static const PROGRESS:String = "progress"; public static const ERROR:String = "error"; public function ResourceEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, bytesLoaded:uint=0, bytesTotal:uint=0, errorText:String=null){ super(type, bubbles, cancelable, bytesLoaded, bytesTotal); this.errorText = errorText; } override public function clone():Event{ return (new ResourceEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, errorText)); } } }//package mx.events
Section 57
//StyleEvent (mx.events.StyleEvent) package mx.events { import flash.events.*; import mx.core.*; public class StyleEvent extends ProgressEvent { public var errorText:String; mx_internal static const VERSION:String = "3.5.0.12683"; public static const COMPLETE:String = "complete"; public static const PROGRESS:String = "progress"; public static const ERROR:String = "error"; public function StyleEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, bytesLoaded:uint=0, bytesTotal:uint=0, errorText:String=null){ super(type, bubbles, cancelable, bytesLoaded, bytesTotal); this.errorText = errorText; } override public function clone():Event{ return (new StyleEvent(type, bubbles, cancelable, bytesLoaded, bytesTotal, errorText)); } } }//package mx.events
Section 58
//RectangularDropShadow (mx.graphics.RectangularDropShadow) package mx.graphics { import mx.core.*; import flash.display.*; import flash.geom.*; import mx.utils.*; import flash.filters.*; public class RectangularDropShadow { private var leftShadow:BitmapData; private var _tlRadius:Number;// = 0 private var _trRadius:Number;// = 0 private var _angle:Number;// = 45 private var topShadow:BitmapData; private var _distance:Number;// = 4 private var rightShadow:BitmapData; private var _alpha:Number;// = 0.4 private var shadow:BitmapData; private var _brRadius:Number;// = 0 private var _blRadius:Number;// = 0 private var _color:int;// = 0 private var bottomShadow:BitmapData; private var changed:Boolean;// = true mx_internal static const VERSION:String = "3.5.0.12683"; public function RectangularDropShadow(){ super(); } public function get blRadius():Number{ return (_blRadius); } public function set brRadius(value:Number):void{ if (_brRadius != value){ _brRadius = value; changed = true; }; } public function set color(value:int):void{ if (_color != value){ _color = value; changed = true; }; } public function drawShadow(g:Graphics, x:Number, y:Number, width:Number, height:Number):void{ var tlWidth:Number; var tlHeight:Number; var trWidth:Number; var trHeight:Number; var blWidth:Number; var blHeight:Number; var brWidth:Number; var brHeight:Number; if (changed){ createShadowBitmaps(); changed = false; }; width = Math.ceil(width); height = Math.ceil(height); var leftThickness:int = (leftShadow) ? leftShadow.width : 0; var rightThickness:int = (rightShadow) ? rightShadow.width : 0; var topThickness:int = (topShadow) ? topShadow.height : 0; var bottomThickness:int = (bottomShadow) ? bottomShadow.height : 0; var widthThickness:int = (leftThickness + rightThickness); var heightThickness:int = (topThickness + bottomThickness); var maxCornerHeight:Number = ((height + heightThickness) / 2); var maxCornerWidth:Number = ((width + widthThickness) / 2); var matrix:Matrix = new Matrix(); if (((leftShadow) || (topShadow))){ tlWidth = Math.min((tlRadius + widthThickness), maxCornerWidth); tlHeight = Math.min((tlRadius + heightThickness), maxCornerHeight); matrix.tx = (x - leftThickness); matrix.ty = (y - topThickness); g.beginBitmapFill(shadow, matrix); g.drawRect((x - leftThickness), (y - topThickness), tlWidth, tlHeight); g.endFill(); }; if (((rightShadow) || (topShadow))){ trWidth = Math.min((trRadius + widthThickness), maxCornerWidth); trHeight = Math.min((trRadius + heightThickness), maxCornerHeight); matrix.tx = (((x + width) + rightThickness) - shadow.width); matrix.ty = (y - topThickness); g.beginBitmapFill(shadow, matrix); g.drawRect((((x + width) + rightThickness) - trWidth), (y - topThickness), trWidth, trHeight); g.endFill(); }; if (((leftShadow) || (bottomShadow))){ blWidth = Math.min((blRadius + widthThickness), maxCornerWidth); blHeight = Math.min((blRadius + heightThickness), maxCornerHeight); matrix.tx = (x - leftThickness); matrix.ty = (((y + height) + bottomThickness) - shadow.height); g.beginBitmapFill(shadow, matrix); g.drawRect((x - leftThickness), (((y + height) + bottomThickness) - blHeight), blWidth, blHeight); g.endFill(); }; if (((rightShadow) || (bottomShadow))){ brWidth = Math.min((brRadius + widthThickness), maxCornerWidth); brHeight = Math.min((brRadius + heightThickness), maxCornerHeight); matrix.tx = (((x + width) + rightThickness) - shadow.width); matrix.ty = (((y + height) + bottomThickness) - shadow.height); g.beginBitmapFill(shadow, matrix); g.drawRect((((x + width) + rightThickness) - brWidth), (((y + height) + bottomThickness) - brHeight), brWidth, brHeight); g.endFill(); }; if (leftShadow){ matrix.tx = (x - leftThickness); matrix.ty = 0; g.beginBitmapFill(leftShadow, matrix); g.drawRect((x - leftThickness), ((y - topThickness) + tlHeight), leftThickness, ((((height + topThickness) + bottomThickness) - tlHeight) - blHeight)); g.endFill(); }; if (rightShadow){ matrix.tx = (x + width); matrix.ty = 0; g.beginBitmapFill(rightShadow, matrix); g.drawRect((x + width), ((y - topThickness) + trHeight), rightThickness, ((((height + topThickness) + bottomThickness) - trHeight) - brHeight)); g.endFill(); }; if (topShadow){ matrix.tx = 0; matrix.ty = (y - topThickness); g.beginBitmapFill(topShadow, matrix); g.drawRect(((x - leftThickness) + tlWidth), (y - topThickness), ((((width + leftThickness) + rightThickness) - tlWidth) - trWidth), topThickness); g.endFill(); }; if (bottomShadow){ matrix.tx = 0; matrix.ty = (y + height); g.beginBitmapFill(bottomShadow, matrix); g.drawRect(((x - leftThickness) + blWidth), (y + height), ((((width + leftThickness) + rightThickness) - blWidth) - brWidth), bottomThickness); g.endFill(); }; } public function get brRadius():Number{ return (_brRadius); } public function get angle():Number{ return (_angle); } private function createShadowBitmaps():void{ var roundRectWidth:Number = ((Math.max(tlRadius, blRadius) + (2 * distance)) + Math.max(trRadius, brRadius)); var roundRectHeight:Number = ((Math.max(tlRadius, trRadius) + (2 * distance)) + Math.max(blRadius, brRadius)); if ((((roundRectWidth < 0)) || ((roundRectHeight < 0)))){ return; }; var roundRect:Shape = new FlexShape(); var g:Graphics = roundRect.graphics; g.beginFill(0xFFFFFF); GraphicsUtil.drawRoundRectComplex(g, 0, 0, roundRectWidth, roundRectHeight, tlRadius, trRadius, blRadius, brRadius); g.endFill(); var roundRectBitmap:BitmapData = new BitmapData(roundRectWidth, roundRectHeight, true, 0); roundRectBitmap.draw(roundRect, new Matrix()); var filter:DropShadowFilter = new DropShadowFilter(distance, angle, color, alpha); filter.knockout = true; var inputRect:Rectangle = new Rectangle(0, 0, roundRectWidth, roundRectHeight); var outputRect:Rectangle = roundRectBitmap.generateFilterRect(inputRect, filter); var leftThickness:Number = (inputRect.left - outputRect.left); var rightThickness:Number = (outputRect.right - inputRect.right); var topThickness:Number = (inputRect.top - outputRect.top); var bottomThickness:Number = (outputRect.bottom - inputRect.bottom); shadow = new BitmapData(outputRect.width, outputRect.height); shadow.applyFilter(roundRectBitmap, inputRect, new Point(leftThickness, topThickness), filter); var origin:Point = new Point(0, 0); var rect:Rectangle = new Rectangle(); if (leftThickness > 0){ rect.x = 0; rect.y = ((tlRadius + topThickness) + bottomThickness); rect.width = leftThickness; rect.height = 1; leftShadow = new BitmapData(leftThickness, 1); leftShadow.copyPixels(shadow, rect, origin); } else { leftShadow = null; }; if (rightThickness > 0){ rect.x = (shadow.width - rightThickness); rect.y = ((trRadius + topThickness) + bottomThickness); rect.width = rightThickness; rect.height = 1; rightShadow = new BitmapData(rightThickness, 1); rightShadow.copyPixels(shadow, rect, origin); } else { rightShadow = null; }; if (topThickness > 0){ rect.x = ((tlRadius + leftThickness) + rightThickness); rect.y = 0; rect.width = 1; rect.height = topThickness; topShadow = new BitmapData(1, topThickness); topShadow.copyPixels(shadow, rect, origin); } else { topShadow = null; }; if (bottomThickness > 0){ rect.x = ((blRadius + leftThickness) + rightThickness); rect.y = (shadow.height - bottomThickness); rect.width = 1; rect.height = bottomThickness; bottomShadow = new BitmapData(1, bottomThickness); bottomShadow.copyPixels(shadow, rect, origin); } else { bottomShadow = null; }; } public function get alpha():Number{ return (_alpha); } public function get color():int{ return (_color); } public function set angle(value:Number):void{ if (_angle != value){ _angle = value; changed = true; }; } public function set trRadius(value:Number):void{ if (_trRadius != value){ _trRadius = value; changed = true; }; } public function set tlRadius(value:Number):void{ if (_tlRadius != value){ _tlRadius = value; changed = true; }; } public function get trRadius():Number{ return (_trRadius); } public function set distance(value:Number):void{ if (_distance != value){ _distance = value; changed = true; }; } public function get distance():Number{ return (_distance); } public function get tlRadius():Number{ return (_tlRadius); } public function set alpha(value:Number):void{ if (_alpha != value){ _alpha = value; changed = true; }; } public function set blRadius(value:Number):void{ if (_blRadius != value){ _blRadius = value; changed = true; }; } } }//package mx.graphics
Section 59
//IFocusManager (mx.managers.IFocusManager) package mx.managers { import flash.events.*; import mx.core.*; import flash.display.*; public interface IFocusManager { function get focusPane():Sprite; function getFocus():IFocusManagerComponent; function deactivate():void; function set defaultButton(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManager.as:IButton):void; function set focusPane(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManager.as:Sprite):void; function set showFocusIndicator(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManager.as:Boolean):void; function moveFocus(_arg1:String, _arg2:DisplayObject=null):void; function addSWFBridge(_arg1:IEventDispatcher, _arg2:DisplayObject):void; function removeSWFBridge(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManager.as:IEventDispatcher):void; function get defaultButtonEnabled():Boolean; function findFocusManagerComponent(value:InteractiveObject):IFocusManagerComponent; function get nextTabIndex():int; function get defaultButton():IButton; function get showFocusIndicator():Boolean; function setFocus(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManager.as:IFocusManagerComponent):void; function activate():void; function showFocus():void; function set defaultButtonEnabled(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManager.as:Boolean):void; function hideFocus():void; function getNextFocusManagerComponent(value:Boolean=false):IFocusManagerComponent; } }//package mx.managers
Section 60
//IFocusManagerComponent (mx.managers.IFocusManagerComponent) package mx.managers { public interface IFocusManagerComponent { function set focusEnabled(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManagerComponent.as:Boolean):void; function drawFocus(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManagerComponent.as:Boolean):void; function setFocus():void; function get focusEnabled():Boolean; function get tabEnabled():Boolean; function get tabIndex():int; function get mouseFocusEnabled():Boolean; } }//package mx.managers
Section 61
//IFocusManagerContainer (mx.managers.IFocusManagerContainer) package mx.managers { import flash.events.*; import flash.display.*; public interface IFocusManagerContainer extends IEventDispatcher { function set focusManager(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;IFocusManagerContainer.as:IFocusManager):void; function get focusManager():IFocusManager; function get systemManager():ISystemManager; function contains(mx.managers:DisplayObject):Boolean; } }//package mx.managers
Section 62
//ILayoutManager (mx.managers.ILayoutManager) package mx.managers { import flash.events.*; public interface ILayoutManager extends IEventDispatcher { function validateNow():void; function validateClient(_arg1:ILayoutManagerClient, _arg2:Boolean=false):void; function isInvalid():Boolean; function invalidateDisplayList(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManager.as:ILayoutManagerClient):void; function set usePhasedInstantiation(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManager.as:Boolean):void; function invalidateSize(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManager.as:ILayoutManagerClient):void; function get usePhasedInstantiation():Boolean; function invalidateProperties(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManager.as:ILayoutManagerClient):void; } }//package mx.managers
Section 63
//ILayoutManagerClient (mx.managers.ILayoutManagerClient) package mx.managers { import flash.events.*; public interface ILayoutManagerClient extends IEventDispatcher { function get updateCompletePendingFlag():Boolean; function set updateCompletePendingFlag(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManagerClient.as:Boolean):void; function set initialized(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManagerClient.as:Boolean):void; function validateProperties():void; function validateDisplayList():void; function get nestLevel():int; function get initialized():Boolean; function get processedDescriptors():Boolean; function validateSize(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManagerClient.as:Boolean=false):void; function set nestLevel(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManagerClient.as:int):void; function set processedDescriptors(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ILayoutManagerClient.as:Boolean):void; } }//package mx.managers
Section 64
//ISystemManager (mx.managers.ISystemManager) package mx.managers { import flash.events.*; import mx.core.*; import flash.display.*; import flash.geom.*; import flash.text.*; public interface ISystemManager extends IEventDispatcher, IChildList, IFlexModuleFactory { function set focusPane(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:Sprite):void; function get toolTipChildren():IChildList; function useSWFBridge():Boolean; function isFontFaceEmbedded(flash.display:TextFormat):Boolean; function deployMouseShields(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:Boolean):void; function get rawChildren():IChildList; function get topLevelSystemManager():ISystemManager; function dispatchEventFromSWFBridges(_arg1:Event, _arg2:IEventDispatcher=null, _arg3:Boolean=false, _arg4:Boolean=false):void; function getSandboxRoot():DisplayObject; function get swfBridgeGroup():ISWFBridgeGroup; function removeFocusManager(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:IFocusManagerContainer):void; function addChildToSandboxRoot(_arg1:String, _arg2:DisplayObject):void; function get document():Object; function get focusPane():Sprite; function get loaderInfo():LoaderInfo; function addChildBridge(_arg1:IEventDispatcher, _arg2:DisplayObject):void; function getTopLevelRoot():DisplayObject; function removeChildBridge(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:IEventDispatcher):void; function isDisplayObjectInABridgedApplication(flash.display:DisplayObject):Boolean; function get popUpChildren():IChildList; function get screen():Rectangle; function removeChildFromSandboxRoot(_arg1:String, _arg2:DisplayObject):void; function getDefinitionByName(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\managers;ISystemManager.as:String):Object; function activate(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:IFocusManagerContainer):void; function deactivate(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:IFocusManagerContainer):void; function get cursorChildren():IChildList; function set document(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:Object):void; function get embeddedFontList():Object; function set numModalWindows(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:int):void; function isTopLevel():Boolean; function isTopLevelRoot():Boolean; function get numModalWindows():int; function addFocusManager(mx.managers:ISystemManager/mx.managers:ISystemManager:cursorChildren/get:IFocusManagerContainer):void; function get stage():Stage; function getVisibleApplicationRect(value:Rectangle=null):Rectangle; } }//package mx.managers
Section 65
//SystemManagerGlobals (mx.managers.SystemManagerGlobals) package mx.managers { public class SystemManagerGlobals { public static var topLevelSystemManagers:Array = []; public static var changingListenersInOtherSystemManagers:Boolean; public static var bootstrapLoaderInfoURL:String; public static var showMouseCursor:Boolean; public static var dispatchingEventToOtherSystemManagers:Boolean; public function SystemManagerGlobals(){ super(); } } }//package mx.managers
Section 66
//IModuleInfo (mx.modules.IModuleInfo) package mx.modules { import flash.events.*; import mx.core.*; import flash.utils.*; import flash.system.*; public interface IModuleInfo extends IEventDispatcher { function get ready():Boolean; function get loaded():Boolean; function load(_arg1:ApplicationDomain=null, _arg2:SecurityDomain=null, _arg3:ByteArray=null):void; function release():void; function get error():Boolean; function get data():Object; function publish(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\modules;IModuleInfo.as:IFlexModuleFactory):void; function get factory():IFlexModuleFactory; function set data(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\modules;IModuleInfo.as:Object):void; function get url():String; function get setup():Boolean; function unload():void; } }//package mx.modules
Section 67
//ModuleManager (mx.modules.ModuleManager) package mx.modules { import mx.core.*; public class ModuleManager { mx_internal static const VERSION:String = "3.5.0.12683"; public function ModuleManager(){ super(); } public static function getModule(url:String):IModuleInfo{ return (getSingleton().getModule(url)); } private static function getSingleton():Object{ if (!ModuleManagerGlobals.managerSingleton){ ModuleManagerGlobals.managerSingleton = new ModuleManagerImpl(); }; return (ModuleManagerGlobals.managerSingleton); } public static function getAssociatedFactory(object:Object):IFlexModuleFactory{ return (getSingleton().getAssociatedFactory(object)); } } }//package mx.modules import flash.events.*; import mx.core.*; import flash.display.*; import flash.utils.*; import flash.system.*; import mx.events.*; import flash.net.*; class ModuleInfoProxy extends EventDispatcher implements IModuleInfo { private var _data:Object; private var info:ModuleInfo; private var referenced:Boolean;// = false private function ModuleInfoProxy(info:ModuleInfo){ super(); this.info = info; info.addEventListener(ModuleEvent.SETUP, moduleEventHandler, false, 0, true); info.addEventListener(ModuleEvent.PROGRESS, moduleEventHandler, false, 0, true); info.addEventListener(ModuleEvent.READY, moduleEventHandler, false, 0, true); info.addEventListener(ModuleEvent.ERROR, moduleEventHandler, false, 0, true); info.addEventListener(ModuleEvent.UNLOAD, moduleEventHandler, false, 0, true); } public function get loaded():Boolean{ return (info.loaded); } public function release():void{ if (referenced){ info.removeReference(); referenced = false; }; } public function get error():Boolean{ return (info.error); } public function get factory():IFlexModuleFactory{ return (info.factory); } public function publish(factory:IFlexModuleFactory):void{ info.publish(factory); } public function set data(value:Object):void{ _data = value; } public function get ready():Boolean{ return (info.ready); } public function load(applicationDomain:ApplicationDomain=null, securityDomain:SecurityDomain=null, bytes:ByteArray=null):void{ var moduleEvent:ModuleEvent; info.resurrect(); if (!referenced){ info.addReference(); referenced = true; }; if (info.error){ dispatchEvent(new ModuleEvent(ModuleEvent.ERROR)); } else { if (info.loaded){ if (info.setup){ dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); if (info.ready){ moduleEvent = new ModuleEvent(ModuleEvent.PROGRESS); moduleEvent.bytesLoaded = info.size; moduleEvent.bytesTotal = info.size; dispatchEvent(moduleEvent); dispatchEvent(new ModuleEvent(ModuleEvent.READY)); }; }; } else { info.load(applicationDomain, securityDomain, bytes); }; }; } private function moduleEventHandler(event:ModuleEvent):void{ dispatchEvent(event); } public function get url():String{ return (info.url); } public function get data():Object{ return (_data); } public function get setup():Boolean{ return (info.setup); } public function unload():void{ info.unload(); info.removeEventListener(ModuleEvent.SETUP, moduleEventHandler); info.removeEventListener(ModuleEvent.PROGRESS, moduleEventHandler); info.removeEventListener(ModuleEvent.READY, moduleEventHandler); info.removeEventListener(ModuleEvent.ERROR, moduleEventHandler); info.removeEventListener(ModuleEvent.UNLOAD, moduleEventHandler); } } class ModuleManagerImpl extends EventDispatcher { private var moduleList:Object; private function ModuleManagerImpl(){ moduleList = {}; super(); } public function getModule(url:String):IModuleInfo{ var info:ModuleInfo = (moduleList[url] as ModuleInfo); if (!info){ info = new ModuleInfo(url); moduleList[url] = info; }; return (new ModuleInfoProxy(info)); } public function getAssociatedFactory(object:Object):IFlexModuleFactory{ var m:Object; var info:ModuleInfo; var domain:ApplicationDomain; var cls:Class; var object = object; var className:String = getQualifiedClassName(object); for each (m in moduleList) { info = (m as ModuleInfo); if (!info.ready){ } else { domain = info.applicationDomain; cls = Class(domain.getDefinition(className)); if ((object is cls)){ return (info.factory); }; //unresolved jump var _slot1 = error; }; }; return (null); } } class ModuleInfo extends EventDispatcher { private var _error:Boolean;// = false private var loader:Loader; private var factoryInfo:FactoryInfo; private var limbo:Dictionary; private var _loaded:Boolean;// = false private var _ready:Boolean;// = false private var numReferences:int;// = 0 private var _url:String; private var _setup:Boolean;// = false private function ModuleInfo(url:String){ super(); _url = url; } private function clearLoader():void{ if (loader){ if (loader.contentLoaderInfo){ loader.contentLoaderInfo.removeEventListener(Event.INIT, initHandler); loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler); loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.contentLoaderInfo.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); }; if (loader.content){ loader.content.removeEventListener("ready", readyHandler); loader.content.removeEventListener("error", moduleErrorHandler); }; //unresolved jump var _slot1 = error; if (_loaded){ loader.close(); //unresolved jump var _slot1 = error; }; loader.unload(); //unresolved jump var _slot1 = error; loader = null; }; } public function get size():int{ return ((((!(limbo)) && (factoryInfo))) ? factoryInfo.bytesTotal : 0); } public function get loaded():Boolean{ return ((limbo) ? false : _loaded); } public function release():void{ if (((_ready) && (!(limbo)))){ limbo = new Dictionary(true); limbo[factoryInfo] = 1; factoryInfo = null; } else { unload(); }; } public function get error():Boolean{ return ((limbo) ? false : _error); } public function get factory():IFlexModuleFactory{ return ((((!(limbo)) && (factoryInfo))) ? factoryInfo.factory : null); } public function completeHandler(event:Event):void{ var moduleEvent:ModuleEvent = new ModuleEvent(ModuleEvent.PROGRESS, event.bubbles, event.cancelable); moduleEvent.bytesLoaded = loader.contentLoaderInfo.bytesLoaded; moduleEvent.bytesTotal = loader.contentLoaderInfo.bytesTotal; dispatchEvent(moduleEvent); } public function publish(factory:IFlexModuleFactory):void{ if (factoryInfo){ return; }; if (_url.indexOf("published://") != 0){ return; }; factoryInfo = new FactoryInfo(); factoryInfo.factory = factory; _loaded = true; _setup = true; _ready = true; _error = false; dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); dispatchEvent(new ModuleEvent(ModuleEvent.PROGRESS)); dispatchEvent(new ModuleEvent(ModuleEvent.READY)); } public function initHandler(event:Event):void{ var moduleEvent:ModuleEvent; var event = event; factoryInfo = new FactoryInfo(); factoryInfo.factory = (loader.content as IFlexModuleFactory); //unresolved jump var _slot1 = error; if (!factoryInfo.factory){ moduleEvent = new ModuleEvent(ModuleEvent.ERROR, event.bubbles, event.cancelable); moduleEvent.bytesLoaded = 0; moduleEvent.bytesTotal = 0; moduleEvent.errorText = "SWF is not a loadable module"; dispatchEvent(moduleEvent); return; }; loader.content.addEventListener("ready", readyHandler); loader.content.addEventListener("error", moduleErrorHandler); factoryInfo.applicationDomain = loader.contentLoaderInfo.applicationDomain; //unresolved jump var _slot1 = error; _setup = true; dispatchEvent(new ModuleEvent(ModuleEvent.SETUP)); } public function resurrect():void{ var f:Object; if (((!(factoryInfo)) && (limbo))){ for (f in limbo) { factoryInfo = (f as FactoryInfo); break; }; limbo = null; }; if (!factoryInfo){ if (_loaded){ dispatchEvent(new ModuleEvent(ModuleEvent.UNLOAD)); }; loader = null; _loaded = false; _setup = false; _ready = false; _error = false; }; } public function errorHandler(event:ErrorEvent):void{ _error = true; var moduleEvent:ModuleEvent = new ModuleEvent(ModuleEvent.ERROR, event.bubbles, event.cancelable); moduleEvent.bytesLoaded = 0; moduleEvent.bytesTotal = 0; moduleEvent.errorText = event.text; dispatchEvent(moduleEvent); } public function get ready():Boolean{ return ((limbo) ? false : _ready); } private function loadBytes(applicationDomain:ApplicationDomain, bytes:ByteArray):void{ var c:LoaderContext = new LoaderContext(); c.applicationDomain = (applicationDomain) ? applicationDomain : new ApplicationDomain(ApplicationDomain.currentDomain); if (("allowLoadBytesCodeExecution" in c)){ c["allowLoadBytesCodeExecution"] = true; }; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); loader.loadBytes(bytes, c); } public function removeReference():void{ numReferences--; if (numReferences == 0){ release(); }; } public function addReference():void{ numReferences++; } public function progressHandler(event:ProgressEvent):void{ var moduleEvent:ModuleEvent = new ModuleEvent(ModuleEvent.PROGRESS, event.bubbles, event.cancelable); moduleEvent.bytesLoaded = event.bytesLoaded; moduleEvent.bytesTotal = event.bytesTotal; dispatchEvent(moduleEvent); } public function load(applicationDomain:ApplicationDomain=null, securityDomain:SecurityDomain=null, bytes:ByteArray=null):void{ if (_loaded){ return; }; _loaded = true; limbo = null; if (bytes){ loadBytes(applicationDomain, bytes); return; }; if (_url.indexOf("published://") == 0){ return; }; var r:URLRequest = new URLRequest(_url); var c:LoaderContext = new LoaderContext(); c.applicationDomain = (applicationDomain) ? applicationDomain : new ApplicationDomain(ApplicationDomain.currentDomain); c.securityDomain = securityDomain; if ((((securityDomain == null)) && ((Security.sandboxType == Security.REMOTE)))){ c.securityDomain = SecurityDomain.currentDomain; }; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler); loader.load(r, c); } public function get url():String{ return (_url); } public function get applicationDomain():ApplicationDomain{ return ((((!(limbo)) && (factoryInfo))) ? factoryInfo.applicationDomain : null); } public function moduleErrorHandler(event:Event):void{ var errorEvent:ModuleEvent; _ready = true; factoryInfo.bytesTotal = loader.contentLoaderInfo.bytesTotal; clearLoader(); if ((event is ModuleEvent)){ errorEvent = ModuleEvent(event); } else { errorEvent = new ModuleEvent(ModuleEvent.ERROR); }; dispatchEvent(errorEvent); } public function readyHandler(event:Event):void{ _ready = true; factoryInfo.bytesTotal = loader.contentLoaderInfo.bytesTotal; var moduleEvent:ModuleEvent = new ModuleEvent(ModuleEvent.READY); moduleEvent.bytesLoaded = loader.contentLoaderInfo.bytesLoaded; moduleEvent.bytesTotal = loader.contentLoaderInfo.bytesTotal; clearLoader(); dispatchEvent(moduleEvent); } public function get setup():Boolean{ return ((limbo) ? false : _setup); } public function unload():void{ clearLoader(); if (_loaded){ dispatchEvent(new ModuleEvent(ModuleEvent.UNLOAD)); }; limbo = null; factoryInfo = null; _loaded = false; _setup = false; _ready = false; _error = false; } } class FactoryInfo { public var bytesTotal:int;// = 0 public var factory:IFlexModuleFactory; public var applicationDomain:ApplicationDomain; private function FactoryInfo(){ super(); } }
Section 68
//ModuleManagerGlobals (mx.modules.ModuleManagerGlobals) package mx.modules { public class ModuleManagerGlobals { public static var managerSingleton:Object = null; public function ModuleManagerGlobals(){ super(); } } }//package mx.modules
Section 69
//IResourceBundle (mx.resources.IResourceBundle) package mx.resources { public interface IResourceBundle { function get content():Object; function get locale():String; function get bundleName():String; } }//package mx.resources
Section 70
//IResourceManager (mx.resources.IResourceManager) package mx.resources { import flash.events.*; import flash.system.*; public interface IResourceManager extends IEventDispatcher { function loadResourceModule(_arg1:String, _arg2:Boolean=true, _arg3:ApplicationDomain=null, _arg4:SecurityDomain=null):IEventDispatcher; function getBoolean(_arg1:String, _arg2:String, _arg3:String=null):Boolean; function getClass(_arg1:String, _arg2:String, _arg3:String=null):Class; function getLocales():Array; function removeResourceBundlesForLocale(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\resources;IResourceManager.as:String):void; function getResourceBundle(_arg1:String, _arg2:String):IResourceBundle; function get localeChain():Array; function getInt(_arg1:String, _arg2:String, _arg3:String=null):int; function update():void; function set localeChain(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\resources;IResourceManager.as:Array):void; function getUint(_arg1:String, _arg2:String, _arg3:String=null):uint; function addResourceBundle(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\resources;IResourceManager.as:IResourceBundle):void; function getStringArray(_arg1:String, _arg2:String, _arg3:String=null):Array; function getBundleNamesForLocale(:String):Array; function removeResourceBundle(_arg1:String, _arg2:String):void; function getObject(_arg1:String, _arg2:String, _arg3:String=null); function getString(_arg1:String, _arg2:String, _arg3:Array=null, _arg4:String=null):String; function installCompiledResourceBundles(_arg1:ApplicationDomain, _arg2:Array, _arg3:Array):void; function unloadResourceModule(_arg1:String, _arg2:Boolean=true):void; function getPreferredLocaleChain():Array; function findResourceBundleWithResource(_arg1:String, _arg2:String):IResourceBundle; function initializeLocaleChain(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\resources;IResourceManager.as:Array):void; function getNumber(_arg1:String, _arg2:String, _arg3:String=null):Number; } }//package mx.resources
Section 71
//IResourceModule (mx.resources.IResourceModule) package mx.resources { public interface IResourceModule { function get resourceBundles():Array; } }//package mx.resources
Section 72
//LocaleSorter (mx.resources.LocaleSorter) package mx.resources { import mx.core.*; public class LocaleSorter { mx_internal static const VERSION:String = "3.5.0.12683"; public function LocaleSorter(){ super(); } private static function normalizeLocale(locale:String):String{ return (locale.toLowerCase().replace(/-/g, "_")); } public static function sortLocalesByPreference(appLocales:Array, systemPreferences:Array, ultimateFallbackLocale:String=null, addAll:Boolean=false):Array{ var result:Array; var hasLocale:Object; var i:int; var j:int; var k:int; var l:int; var locale:String; var plocale:LocaleID; var appLocales = appLocales; var systemPreferences = systemPreferences; var ultimateFallbackLocale = ultimateFallbackLocale; var addAll = addAll; var promote:Function = function (locale:String):void{ if (typeof(hasLocale[locale]) != "undefined"){ result.push(appLocales[hasLocale[locale]]); delete hasLocale[locale]; }; }; result = []; hasLocale = {}; var locales:Array = trimAndNormalize(appLocales); var preferenceLocales:Array = trimAndNormalize(systemPreferences); addUltimateFallbackLocale(preferenceLocales, ultimateFallbackLocale); j = 0; while (j < locales.length) { hasLocale[locales[j]] = j; j = (j + 1); }; i = 0; l = preferenceLocales.length; while (i < l) { plocale = LocaleID.fromString(preferenceLocales[i]); promote(preferenceLocales[i]); promote(plocale.toString()); while (plocale.transformToParent()) { promote(plocale.toString()); }; plocale = LocaleID.fromString(preferenceLocales[i]); j = 0; while (j < l) { locale = preferenceLocales[j]; if (plocale.isSiblingOf(LocaleID.fromString(locale))){ promote(locale); }; j = (j + 1); }; j = 0; k = locales.length; while (j < k) { locale = locales[j]; if (plocale.isSiblingOf(LocaleID.fromString(locale))){ promote(locale); }; j = (j + 1); }; i = (i + 1); }; if (addAll){ j = 0; k = locales.length; while (j < k) { promote(locales[j]); j = (j + 1); }; }; return (result); } private static function addUltimateFallbackLocale(preferenceLocales:Array, ultimateFallbackLocale:String):void{ var locale:String; if (((!((ultimateFallbackLocale == null))) && (!((ultimateFallbackLocale == ""))))){ locale = normalizeLocale(ultimateFallbackLocale); if (preferenceLocales.indexOf(locale) == -1){ preferenceLocales.push(locale); }; }; } private static function trimAndNormalize(list:Array):Array{ var resultList:Array = []; var i:int; while (i < list.length) { resultList.push(normalizeLocale(list[i])); i++; }; return (resultList); } } }//package mx.resources class LocaleID { private var privateLangs:Boolean;// = false private var script:String;// = "" private var variants:Array; private var privates:Array; private var extensions:Object; private var lang:String;// = "" private var region:String;// = "" private var extended_langs:Array; public static const STATE_PRIMARY_LANGUAGE:int = 0; public static const STATE_REGION:int = 3; public static const STATE_EXTENDED_LANGUAGES:int = 1; public static const STATE_EXTENSIONS:int = 5; public static const STATE_SCRIPT:int = 2; public static const STATE_VARIANTS:int = 4; public static const STATE_PRIVATES:int = 6; private function LocaleID(){ extended_langs = []; variants = []; extensions = {}; privates = []; super(); } public function equals(locale:LocaleID):Boolean{ return ((toString() == locale.toString())); } public function canonicalize():void{ var i:String; for (i in extensions) { if (extensions.hasOwnProperty(i)){ if (extensions[i].length == 0){ delete extensions[i]; } else { extensions[i] = extensions[i].sort(); }; }; }; extended_langs = extended_langs.sort(); variants = variants.sort(); privates = privates.sort(); if (script == ""){ script = LocaleRegistry.getScriptByLang(lang); }; if ((((script == "")) && (!((region == ""))))){ script = LocaleRegistry.getScriptByLangAndRegion(lang, region); }; if ((((region == "")) && (!((script == ""))))){ region = LocaleRegistry.getDefaultRegionForLangAndScript(lang, script); }; } public function toString():String{ var i:String; var stack:Array = [lang]; appendElements(stack, extended_langs); if (script != ""){ stack.push(script); }; if (region != ""){ stack.push(region); }; appendElements(stack, variants); for (i in extensions) { if (extensions.hasOwnProperty(i)){ stack.push(i); appendElements(stack, extensions[i]); }; }; if (privates.length > 0){ stack.push("x"); appendElements(stack, privates); }; return (stack.join("_")); } public function isSiblingOf(other:LocaleID):Boolean{ return ((((lang == other.lang)) && ((script == other.script)))); } public function transformToParent():Boolean{ var i:String; var lastExtension:Array; var defaultRegion:String; if (privates.length > 0){ privates.splice((privates.length - 1), 1); return (true); }; var lastExtensionName:String; for (i in extensions) { if (extensions.hasOwnProperty(i)){ lastExtensionName = i; }; }; if (lastExtensionName){ lastExtension = extensions[lastExtensionName]; if (lastExtension.length == 1){ delete extensions[lastExtensionName]; return (true); }; lastExtension.splice((lastExtension.length - 1), 1); return (true); }; if (variants.length > 0){ variants.splice((variants.length - 1), 1); return (true); }; if (script != ""){ if (LocaleRegistry.getScriptByLang(lang) != ""){ script = ""; return (true); }; if (region == ""){ defaultRegion = LocaleRegistry.getDefaultRegionForLangAndScript(lang, script); if (defaultRegion != ""){ region = defaultRegion; script = ""; return (true); }; }; }; if (region != ""){ if (!(((script == "")) && ((LocaleRegistry.getScriptByLang(lang) == "")))){ region = ""; return (true); }; }; if (extended_langs.length > 0){ extended_langs.splice((extended_langs.length - 1), 1); return (true); }; return (false); } private static function appendElements(dest:Array, src:Array):void{ var i:uint; var argc:uint = src.length; while (i < argc) { dest.push(src[i]); i++; }; } public static function fromString(str:String):LocaleID{ var last_extension:Array; var subtag:String; var subtag_length:int; var firstChar:String; var localeID:LocaleID = new (LocaleID); var state:int = STATE_PRIMARY_LANGUAGE; var subtags:Array = str.replace(/-/g, "_").split("_"); var i:int; var l:int = subtags.length; while (i < l) { subtag = subtags[i].toLowerCase(); if (state == STATE_PRIMARY_LANGUAGE){ if (subtag == "x"){ localeID.privateLangs = true; } else { if (subtag == "i"){ localeID.lang = (localeID.lang + "i-"); } else { localeID.lang = (localeID.lang + subtag); state = STATE_EXTENDED_LANGUAGES; }; }; } else { subtag_length = subtag.length; if (subtag_length == 0){ } else { firstChar = subtag.charAt(0).toLowerCase(); if ((((state <= STATE_EXTENDED_LANGUAGES)) && ((subtag_length == 3)))){ localeID.extended_langs.push(subtag); if (localeID.extended_langs.length == 3){ state = STATE_SCRIPT; }; } else { if ((((state <= STATE_SCRIPT)) && ((subtag_length == 4)))){ localeID.script = subtag; state = STATE_REGION; } else { if ((((state <= STATE_REGION)) && ((((subtag_length == 2)) || ((subtag_length == 3)))))){ localeID.region = subtag; state = STATE_VARIANTS; } else { if ((((state <= STATE_VARIANTS)) && ((((((((firstChar >= "a")) && ((firstChar <= "z")))) && ((subtag_length >= 5)))) || ((((((firstChar >= "0")) && ((firstChar <= "9")))) && ((subtag_length >= 4)))))))){ localeID.variants.push(subtag); state = STATE_VARIANTS; } else { if ((((state < STATE_PRIVATES)) && ((subtag_length == 1)))){ if (subtag == "x"){ state = STATE_PRIVATES; last_extension = localeID.privates; } else { state = STATE_EXTENSIONS; last_extension = ((localeID.extensions[subtag]) || ([])); localeID.extensions[subtag] = last_extension; }; } else { if (state >= STATE_EXTENSIONS){ last_extension.push(subtag); }; }; }; }; }; }; }; }; i++; }; localeID.canonicalize(); return (localeID); } } class LocaleRegistry { private static const SCRIPT_ID_BY_LANG:Object = {ab:5, af:1, am:2, ar:3, as:4, ay:1, be:5, bg:5, bn:4, bs:1, ca:1, ch:1, cs:1, cy:1, da:1, de:1, dv:6, dz:7, el:8, en:1, eo:1, es:1, et:1, eu:1, fa:3, fi:1, fj:1, fo:1, fr:1, frr:1, fy:1, ga:1, gl:1, gn:1, gu:9, gv:1, he:10, hi:11, hr:1, ht:1, hu:1, hy:12, id:1, in:1, is:1, it:1, iw:10, ja:13, ka:14, kk:5, kl:1, km:15, kn:16, ko:17, la:1, lb:1, ln:1, lo:18, lt:1, lv:1, mg:1, mh:1, mk:5, ml:19, mo:1, mr:11, ms:1, mt:1, my:20, na:1, nb:1, nd:1, ne:11, nl:1, nn:1, no:1, nr:1, ny:1, om:1, or:21, pa:22, pl:1, ps:3, pt:1, qu:1, rn:1, ro:1, ru:5, rw:1, sg:1, si:23, sk:1, sl:1, sm:1, so:1, sq:1, ss:1, st:1, sv:1, sw:1, ta:24, te:25, th:26, ti:2, tl:1, tn:1, to:1, tr:1, ts:1, uk:5, ur:3, ve:1, vi:1, wo:1, xh:1, yi:10, zu:1, cpe:1, dsb:1, frs:1, gsw:1, hsb:1, kok:11, mai:11, men:1, nds:1, niu:1, nqo:27, nso:1, son:1, tem:1, tkl:1, tmh:1, tpi:1, tvl:1, zbl:28}; private static const SCRIPTS:Array = ["", "latn", "ethi", "arab", "beng", "cyrl", "thaa", "tibt", "grek", "gujr", "hebr", "deva", "armn", "jpan", "geor", "khmr", "knda", "kore", "laoo", "mlym", "mymr", "orya", "guru", "sinh", "taml", "telu", "thai", "nkoo", "blis", "hans", "hant", "mong", "syrc"]; private static const DEFAULT_REGION_BY_LANG_AND_SCRIPT:Object = {bg:{5:"bg"}, ca:{1:"es"}, zh:{30:"tw", 29:"cn"}, cs:{1:"cz"}, da:{1:"dk"}, de:{1:"de"}, el:{8:"gr"}, en:{1:"us"}, es:{1:"es"}, fi:{1:"fi"}, fr:{1:"fr"}, he:{10:"il"}, hu:{1:"hu"}, is:{1:"is"}, it:{1:"it"}, ja:{13:"jp"}, ko:{17:"kr"}, nl:{1:"nl"}, nb:{1:"no"}, pl:{1:"pl"}, pt:{1:"br"}, ro:{1:"ro"}, ru:{5:"ru"}, hr:{1:"hr"}, sk:{1:"sk"}, sq:{1:"al"}, sv:{1:"se"}, th:{26:"th"}, tr:{1:"tr"}, ur:{3:"pk"}, id:{1:"id"}, uk:{5:"ua"}, be:{5:"by"}, sl:{1:"si"}, et:{1:"ee"}, lv:{1:"lv"}, lt:{1:"lt"}, fa:{3:"ir"}, vi:{1:"vn"}, hy:{12:"am"}, az:{1:"az", 5:"az"}, eu:{1:"es"}, mk:{5:"mk"}, af:{1:"za"}, ka:{14:"ge"}, fo:{1:"fo"}, hi:{11:"in"}, ms:{1:"my"}, kk:{5:"kz"}, ky:{5:"kg"}, sw:{1:"ke"}, uz:{1:"uz", 5:"uz"}, tt:{5:"ru"}, pa:{22:"in"}, gu:{9:"in"}, ta:{24:"in"}, te:{25:"in"}, kn:{16:"in"}, mr:{11:"in"}, sa:{11:"in"}, mn:{5:"mn"}, gl:{1:"es"}, kok:{11:"in"}, syr:{32:"sy"}, dv:{6:"mv"}, nn:{1:"no"}, sr:{1:"cs", 5:"cs"}, cy:{1:"gb"}, mi:{1:"nz"}, mt:{1:"mt"}, quz:{1:"bo"}, tn:{1:"za"}, xh:{1:"za"}, zu:{1:"za"}, nso:{1:"za"}, se:{1:"no"}, smj:{1:"no"}, sma:{1:"no"}, sms:{1:"fi"}, smn:{1:"fi"}, bs:{1:"ba"}}; private static const SCRIPT_BY_ID:Object = {latn:1, ethi:2, arab:3, beng:4, cyrl:5, thaa:6, tibt:7, grek:8, gujr:9, hebr:10, deva:11, armn:12, jpan:13, geor:14, khmr:15, knda:16, kore:17, laoo:18, mlym:19, mymr:20, orya:21, guru:22, sinh:23, taml:24, telu:25, thai:26, nkoo:27, blis:28, hans:29, hant:30, mong:31, syrc:32}; private static const SCRIPT_ID_BY_LANG_AND_REGION:Object = {zh:{cn:29, sg:29, tw:30, hk:30, mo:30}, mn:{cn:31, sg:5}, pa:{pk:3, in:22}, ha:{gh:1, ne:1}}; private function LocaleRegistry(){ super(); } public static function getScriptByLangAndRegion(lang:String, region:String):String{ var langRegions:Object = SCRIPT_ID_BY_LANG_AND_REGION[lang]; if (langRegions == null){ return (""); }; var scriptID:Object = langRegions[region]; if (scriptID == null){ return (""); }; return (SCRIPTS[int(scriptID)].toLowerCase()); } public static function getScriptByLang(lang:String):String{ var scriptID:Object = SCRIPT_ID_BY_LANG[lang]; if (scriptID == null){ return (""); }; return (SCRIPTS[int(scriptID)].toLowerCase()); } public static function getDefaultRegionForLangAndScript(lang:String, script:String):String{ var langObj:Object = DEFAULT_REGION_BY_LANG_AND_SCRIPT[lang]; var scriptID:Object = SCRIPT_BY_ID[script]; if ((((langObj == null)) || ((scriptID == null)))){ return (""); }; return (((langObj[int(scriptID)]) || (""))); } }
Section 73
//ResourceBundle (mx.resources.ResourceBundle) package mx.resources { import mx.core.*; import flash.system.*; import mx.utils.*; public class ResourceBundle implements IResourceBundle { mx_internal var _locale:String; private var _content:Object; mx_internal var _bundleName:String; mx_internal static const VERSION:String = "3.5.0.12683"; mx_internal static var backupApplicationDomain:ApplicationDomain; mx_internal static var locale:String; public function ResourceBundle(locale:String=null, bundleName:String=null){ _content = {}; super(); mx_internal::_locale = locale; mx_internal::_bundleName = bundleName; _content = getContent(); } protected function getContent():Object{ return ({}); } public function getString(key:String):String{ return (String(_getObject(key))); } public function get content():Object{ return (_content); } public function getBoolean(key:String, defaultValue:Boolean=true):Boolean{ var temp:String = _getObject(key).toLowerCase(); if (temp == "false"){ return (false); }; if (temp == "true"){ return (true); }; return (defaultValue); } public function getStringArray(key:String):Array{ var array:Array = _getObject(key).split(","); var n:int = array.length; var i:int; while (i < n) { array[i] = StringUtil.trim(array[i]); i++; }; return (array); } public function getObject(key:String):Object{ return (_getObject(key)); } private function _getObject(key:String):Object{ var value:Object = content[key]; if (!value){ throw (new Error(((("Key " + key) + " was not found in resource bundle ") + bundleName))); }; return (value); } public function get locale():String{ return (mx_internal::_locale); } public function get bundleName():String{ return (mx_internal::_bundleName); } public function getNumber(key:String):Number{ return (Number(_getObject(key))); } private static function getClassByName(name:String, domain:ApplicationDomain):Class{ var c:Class; if (domain.hasDefinition(name)){ c = (domain.getDefinition(name) as Class); }; return (c); } public static function getResourceBundle(baseName:String, currentDomain:ApplicationDomain=null):ResourceBundle{ var className:String; var bundleClass:Class; var bundleObj:Object; var bundle:ResourceBundle; if (!currentDomain){ currentDomain = ApplicationDomain.currentDomain; }; className = (((mx_internal::locale + "$") + baseName) + "_properties"); bundleClass = getClassByName(className, currentDomain); if (!bundleClass){ className = (baseName + "_properties"); bundleClass = getClassByName(className, currentDomain); }; if (!bundleClass){ className = baseName; bundleClass = getClassByName(className, currentDomain); }; if (((!(bundleClass)) && (mx_internal::backupApplicationDomain))){ className = (baseName + "_properties"); bundleClass = getClassByName(className, mx_internal::backupApplicationDomain); if (!bundleClass){ className = baseName; bundleClass = getClassByName(className, mx_internal::backupApplicationDomain); }; }; if (bundleClass){ bundleObj = new (bundleClass); if ((bundleObj is ResourceBundle)){ bundle = ResourceBundle(bundleObj); return (bundle); }; }; throw (new Error(("Could not find resource bundle " + baseName))); } } }//package mx.resources
Section 74
//ResourceManager (mx.resources.ResourceManager) package mx.resources { import mx.core.*; public class ResourceManager { mx_internal static const VERSION:String = "3.5.0.12683"; private static var implClassDependency:ResourceManagerImpl; private static var instance:IResourceManager; public function ResourceManager(){ super(); } public static function getInstance():IResourceManager{ if (!instance){ instance = IResourceManager(Singleton.getInstance("mx.resources::IResourceManager")); //unresolved jump var _slot1 = e; instance = new ResourceManagerImpl(); }; return (instance); } } }//package mx.resources
Section 75
//ResourceManagerImpl (mx.resources.ResourceManagerImpl) package mx.resources { import flash.events.*; import mx.core.*; import flash.utils.*; import flash.system.*; import mx.modules.*; import mx.events.*; import mx.utils.*; public class ResourceManagerImpl extends EventDispatcher implements IResourceManager { private var resourceModules:Object; private var initializedForNonFrameworkApp:Boolean;// = false private var localeMap:Object; private var _localeChain:Array; mx_internal static const VERSION:String = "3.5.0.12683"; private static var instance:IResourceManager; public function ResourceManagerImpl(){ localeMap = {}; resourceModules = {}; super(); } public function get localeChain():Array{ return (_localeChain); } public function set localeChain(value:Array):void{ _localeChain = value; update(); } public function getStringArray(bundleName:String, resourceName:String, locale:String=null):Array{ var resourceBundle:IResourceBundle = findBundle(bundleName, resourceName, locale); if (!resourceBundle){ return (null); }; var value:* = resourceBundle.content[resourceName]; var array:Array = String(value).split(","); var n:int = array.length; var i:int; while (i < n) { array[i] = StringUtil.trim(array[i]); i++; }; return (array); } mx_internal function installCompiledResourceBundle(applicationDomain:ApplicationDomain, locale:String, bundleName:String):void{ var packageName:String; var localName:String = bundleName; var colonIndex:int = bundleName.indexOf(":"); if (colonIndex != -1){ packageName = bundleName.substring(0, colonIndex); localName = bundleName.substring((colonIndex + 1)); }; if (getResourceBundle(locale, bundleName)){ return; }; var resourceBundleClassName = (((locale + "$") + localName) + "_properties"); if (packageName != null){ resourceBundleClassName = ((packageName + ".") + resourceBundleClassName); }; var bundleClass:Class; if (applicationDomain.hasDefinition(resourceBundleClassName)){ bundleClass = Class(applicationDomain.getDefinition(resourceBundleClassName)); }; if (!bundleClass){ resourceBundleClassName = bundleName; if (applicationDomain.hasDefinition(resourceBundleClassName)){ bundleClass = Class(applicationDomain.getDefinition(resourceBundleClassName)); }; }; if (!bundleClass){ resourceBundleClassName = (bundleName + "_properties"); if (applicationDomain.hasDefinition(resourceBundleClassName)){ bundleClass = Class(applicationDomain.getDefinition(resourceBundleClassName)); }; }; if (!bundleClass){ throw (new Error((((("Could not find compiled resource bundle '" + bundleName) + "' for locale '") + locale) + "'."))); }; var resourceBundle:ResourceBundle = ResourceBundle(new (bundleClass)); resourceBundle.mx_internal::_locale = locale; resourceBundle.mx_internal::_bundleName = bundleName; addResourceBundle(resourceBundle); } public function getString(bundleName:String, resourceName:String, parameters:Array=null, locale:String=null):String{ var resourceBundle:IResourceBundle = findBundle(bundleName, resourceName, locale); if (!resourceBundle){ return (null); }; var value:String = String(resourceBundle.content[resourceName]); if (parameters){ value = StringUtil.substitute(value, parameters); }; return (value); } public function loadResourceModule(url:String, updateFlag:Boolean=true, applicationDomain:ApplicationDomain=null, securityDomain:SecurityDomain=null):IEventDispatcher{ var moduleInfo:IModuleInfo; var resourceEventDispatcher:ResourceEventDispatcher; var timer:Timer; var timerHandler:Function; var url = url; var updateFlag = updateFlag; var applicationDomain = applicationDomain; var securityDomain = securityDomain; moduleInfo = ModuleManager.getModule(url); resourceEventDispatcher = new ResourceEventDispatcher(moduleInfo); var readyHandler:Function = function (event:ModuleEvent):void{ var resourceModule:* = event.module.factory.create(); resourceModules[event.module.url].resourceModule = resourceModule; if (updateFlag){ update(); }; }; moduleInfo.addEventListener(ModuleEvent.READY, readyHandler, false, 0, true); var errorHandler:Function = function (event:ModuleEvent):void{ var resourceEvent:ResourceEvent; var message:String = ("Unable to load resource module from " + url); if (resourceEventDispatcher.willTrigger(ResourceEvent.ERROR)){ resourceEvent = new ResourceEvent(ResourceEvent.ERROR, event.bubbles, event.cancelable); resourceEvent.bytesLoaded = 0; resourceEvent.bytesTotal = 0; resourceEvent.errorText = message; resourceEventDispatcher.dispatchEvent(resourceEvent); } else { throw (new Error(message)); }; }; moduleInfo.addEventListener(ModuleEvent.ERROR, errorHandler, false, 0, true); resourceModules[url] = new ResourceModuleInfo(moduleInfo, readyHandler, errorHandler); timer = new Timer(0); timerHandler = function (event:TimerEvent):void{ timer.removeEventListener(TimerEvent.TIMER, timerHandler); timer.stop(); moduleInfo.load(applicationDomain, securityDomain); }; timer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, true); timer.start(); return (resourceEventDispatcher); } public function getLocales():Array{ var p:String; var locales:Array = []; for (p in localeMap) { locales.push(p); }; return (locales); } public function removeResourceBundlesForLocale(locale:String):void{ delete localeMap[locale]; } public function getResourceBundle(locale:String, bundleName:String):IResourceBundle{ var bundleMap:Object = localeMap[locale]; if (!bundleMap){ return (null); }; return (bundleMap[bundleName]); } private function dumpResourceModule(resourceModule):void{ var bundle:ResourceBundle; var p:String; for each (bundle in resourceModule.resourceBundles) { trace(bundle.locale, bundle.bundleName); for (p in bundle.content) { }; }; } public function addResourceBundle(resourceBundle:IResourceBundle):void{ var locale:String = resourceBundle.locale; var bundleName:String = resourceBundle.bundleName; if (!localeMap[locale]){ localeMap[locale] = {}; }; localeMap[locale][bundleName] = resourceBundle; } public function getObject(bundleName:String, resourceName:String, locale:String=null){ var resourceBundle:IResourceBundle = findBundle(bundleName, resourceName, locale); if (!resourceBundle){ return (undefined); }; return (resourceBundle.content[resourceName]); } public function getInt(bundleName:String, resourceName:String, locale:String=null):int{ var resourceBundle:IResourceBundle = findBundle(bundleName, resourceName, locale); if (!resourceBundle){ return (0); }; var value:* = resourceBundle.content[resourceName]; return (int(value)); } private function findBundle(bundleName:String, resourceName:String, locale:String):IResourceBundle{ supportNonFrameworkApps(); return (((locale)!=null) ? getResourceBundle(locale, bundleName) : findResourceBundleWithResource(bundleName, resourceName)); } private function supportNonFrameworkApps():void{ if (initializedForNonFrameworkApp){ return; }; initializedForNonFrameworkApp = true; if (getLocales().length > 0){ return; }; var applicationDomain:ApplicationDomain = ApplicationDomain.currentDomain; if (!applicationDomain.hasDefinition("_CompiledResourceBundleInfo")){ return; }; var c:Class = Class(applicationDomain.getDefinition("_CompiledResourceBundleInfo")); var locales:Array = c.compiledLocales; var bundleNames:Array = c.compiledResourceBundleNames; installCompiledResourceBundles(applicationDomain, locales, bundleNames); localeChain = locales; } public function getBundleNamesForLocale(locale:String):Array{ var p:String; var bundleNames:Array = []; for (p in localeMap[locale]) { bundleNames.push(p); }; return (bundleNames); } public function getPreferredLocaleChain():Array{ return (LocaleSorter.sortLocalesByPreference(getLocales(), getSystemPreferredLocales(), null, true)); } public function getNumber(bundleName:String, resourceName:String, locale:String=null):Number{ var resourceBundle:IResourceBundle = findBundle(bundleName, resourceName, locale); if (!resourceBundle){ return (NaN); }; var value:* = resourceBundle.content[resourceName]; return (Number(value)); } public function update():void{ dispatchEvent(new Event(Event.CHANGE)); } public function getClass(bundleName:String, resourceName:String, locale:String=null):Class{ var resourceBundle:IResourceBundle = findBundle(bundleName, resourceName, locale); if (!resourceBundle){ return (null); }; var value:* = resourceBundle.content[resourceName]; return ((value as Class)); } public function removeResourceBundle(locale:String, bundleName:String):void{ delete localeMap[locale][bundleName]; if (getBundleNamesForLocale(locale).length == 0){ delete localeMap[locale]; }; } public function initializeLocaleChain(compiledLocales:Array):void{ localeChain = LocaleSorter.sortLocalesByPreference(compiledLocales, getSystemPreferredLocales(), null, true); } public function findResourceBundleWithResource(bundleName:String, resourceName:String):IResourceBundle{ var locale:String; var bundleMap:Object; var bundle:ResourceBundle; if (!_localeChain){ return (null); }; var n:int = _localeChain.length; var i:int; while (i < n) { locale = localeChain[i]; bundleMap = localeMap[locale]; if (!bundleMap){ } else { bundle = bundleMap[bundleName]; if (!bundle){ } else { if ((resourceName in bundle.content)){ return (bundle); }; }; }; i++; }; return (null); } public function getUint(bundleName:String, resourceName:String, locale:String=null):uint{ var resourceBundle:IResourceBundle = findBundle(bundleName, resourceName, locale); if (!resourceBundle){ return (0); }; var value:* = resourceBundle.content[resourceName]; return (uint(value)); } private function getSystemPreferredLocales():Array{ var systemPreferences:Array; if (Capabilities["languages"]){ systemPreferences = Capabilities["languages"]; } else { systemPreferences = [Capabilities.language]; }; return (systemPreferences); } public function installCompiledResourceBundles(applicationDomain:ApplicationDomain, locales:Array, bundleNames:Array):void{ var locale:String; var j:int; var bundleName:String; var n:int = (locales) ? locales.length : 0; var m:int = (bundleNames) ? bundleNames.length : 0; var i:int; while (i < n) { locale = locales[i]; j = 0; while (j < m) { bundleName = bundleNames[j]; mx_internal::installCompiledResourceBundle(applicationDomain, locale, bundleName); j++; }; i++; }; } public function getBoolean(bundleName:String, resourceName:String, locale:String=null):Boolean{ var resourceBundle:IResourceBundle = findBundle(bundleName, resourceName, locale); if (!resourceBundle){ return (false); }; var value:* = resourceBundle.content[resourceName]; return ((String(value).toLowerCase() == "true")); } public function unloadResourceModule(url:String, update:Boolean=true):void{ var bundles:Array; var n:int; var i:int; var locale:String; var bundleName:String; var rmi:ResourceModuleInfo = resourceModules[url]; if (!rmi){ return; }; if (rmi.resourceModule){ bundles = rmi.resourceModule.resourceBundles; if (bundles){ n = bundles.length; i = 0; while (i < n) { locale = bundles[i].locale; bundleName = bundles[i].bundleName; removeResourceBundle(locale, bundleName); i++; }; }; }; resourceModules[url] = null; delete resourceModules[url]; rmi.moduleInfo.unload(); if (update){ this.update(); }; } public static function getInstance():IResourceManager{ if (!instance){ instance = new (ResourceManagerImpl); }; return (instance); } } }//package mx.resources import flash.events.*; import mx.modules.*; import mx.events.*; class ResourceModuleInfo { public var resourceModule:IResourceModule; public var errorHandler:Function; public var readyHandler:Function; public var moduleInfo:IModuleInfo; private function ResourceModuleInfo(moduleInfo:IModuleInfo, readyHandler:Function, errorHandler:Function){ super(); this.moduleInfo = moduleInfo; this.readyHandler = readyHandler; this.errorHandler = errorHandler; } } class ResourceEventDispatcher extends EventDispatcher { private function ResourceEventDispatcher(moduleInfo:IModuleInfo){ super(); moduleInfo.addEventListener(ModuleEvent.ERROR, moduleInfo_errorHandler, false, 0, true); moduleInfo.addEventListener(ModuleEvent.PROGRESS, moduleInfo_progressHandler, false, 0, true); moduleInfo.addEventListener(ModuleEvent.READY, moduleInfo_readyHandler, false, 0, true); } private function moduleInfo_progressHandler(event:ModuleEvent):void{ var resourceEvent:ResourceEvent = new ResourceEvent(ResourceEvent.PROGRESS, event.bubbles, event.cancelable); resourceEvent.bytesLoaded = event.bytesLoaded; resourceEvent.bytesTotal = event.bytesTotal; dispatchEvent(resourceEvent); } private function moduleInfo_readyHandler(event:ModuleEvent):void{ var resourceEvent:ResourceEvent = new ResourceEvent(ResourceEvent.COMPLETE); dispatchEvent(resourceEvent); } private function moduleInfo_errorHandler(event:ModuleEvent):void{ var resourceEvent:ResourceEvent = new ResourceEvent(ResourceEvent.ERROR, event.bubbles, event.cancelable); resourceEvent.bytesLoaded = event.bytesLoaded; resourceEvent.bytesTotal = event.bytesTotal; resourceEvent.errorText = event.errorText; dispatchEvent(resourceEvent); } }
Section 76
//HaloBorder (mx.skins.halo.HaloBorder) package mx.skins.halo { import mx.core.*; import flash.display.*; import mx.styles.*; import mx.skins.*; import mx.graphics.*; import mx.utils.*; public class HaloBorder extends RectangularBorder { mx_internal var radiusObj:Object; mx_internal var backgroundHole:Object; mx_internal var radius:Number; mx_internal var bRoundedCorners:Boolean; mx_internal var backgroundColor:Object; private var dropShadow:RectangularDropShadow; protected var _borderMetrics:EdgeMetrics; mx_internal var backgroundAlphaName:String; mx_internal static const VERSION:String = "3.5.0.12683"; private static var BORDER_WIDTHS:Object = {none:0, solid:1, inset:2, outset:2, alert:3, dropdown:2, menuBorder:1, comboNonEdit:2}; public function HaloBorder(){ super(); BORDER_WIDTHS["default"] = 3; } override public function styleChanged(styleProp:String):void{ if ((((((((((styleProp == null)) || ((styleProp == "styleName")))) || ((styleProp == "borderStyle")))) || ((styleProp == "borderThickness")))) || ((styleProp == "borderSides")))){ _borderMetrics = null; }; invalidateDisplayList(); } override protected function updateDisplayList(w:Number, h:Number):void{ if (((isNaN(w)) || (isNaN(h)))){ return; }; super.updateDisplayList(w, h); backgroundColor = getBackgroundColor(); bRoundedCorners = false; backgroundAlphaName = "backgroundAlpha"; backgroundHole = null; radius = 0; radiusObj = null; drawBorder(w, h); drawBackground(w, h); } mx_internal function drawBorder(w:Number, h:Number):void{ var backgroundAlpha:Number; var borderCapColor:uint; var borderColor:uint; var borderSides:String; var borderThickness:Number; var buttonColor:uint; var docked:Boolean; var dropdownBorderColor:uint; var fillColors:Array; var footerColors:Array; var highlightColor:uint; var shadowCapColor:uint; var shadowColor:uint; var themeColor:uint; var translucent:Boolean; var hole:Object; var borderColorDrk1:Number; var borderColorDrk2:Number; var borderColorLt1:Number; var borderInnerColor:Object; var contentAlpha:Number; var br:Number; var parentContainer:IContainer; var vm:EdgeMetrics; var showChrome:Boolean; var borderAlpha:Number; var fillAlphas:Array; var backgroundColorNum:uint; var bHasAllSides:Boolean; var holeRadius:Number; var borderStyle:String = getStyle("borderStyle"); var highlightAlphas:Array = getStyle("highlightAlphas"); var drawTopHighlight:Boolean; var g:Graphics = graphics; g.clear(); if (borderStyle){ switch (borderStyle){ case "none": break; case "inset": borderColor = getStyle("borderColor"); borderColorDrk1 = ColorUtil.adjustBrightness2(borderColor, -40); borderColorDrk2 = ColorUtil.adjustBrightness2(borderColor, 25); borderColorLt1 = ColorUtil.adjustBrightness2(borderColor, 40); borderInnerColor = backgroundColor; if ((((borderInnerColor === null)) || ((borderInnerColor === "")))){ borderInnerColor = borderColor; }; draw3dBorder(borderColorDrk2, borderColorDrk1, borderColorLt1, Number(borderInnerColor), Number(borderInnerColor), Number(borderInnerColor)); break; case "outset": borderColor = getStyle("borderColor"); borderColorDrk1 = ColorUtil.adjustBrightness2(borderColor, -40); borderColorDrk2 = ColorUtil.adjustBrightness2(borderColor, -25); borderColorLt1 = ColorUtil.adjustBrightness2(borderColor, 40); borderInnerColor = backgroundColor; if ((((borderInnerColor === null)) || ((borderInnerColor === "")))){ borderInnerColor = borderColor; }; draw3dBorder(borderColorDrk2, borderColorLt1, borderColorDrk1, Number(borderInnerColor), Number(borderInnerColor), Number(borderInnerColor)); break; case "alert": case "default": if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){ contentAlpha = getStyle("backgroundAlpha"); backgroundAlpha = getStyle("borderAlpha"); backgroundAlphaName = "borderAlpha"; radius = getStyle("cornerRadius"); bRoundedCorners = (getStyle("roundedBottomCorners").toString().toLowerCase() == "true"); br = (bRoundedCorners) ? radius : 0; drawDropShadow(0, 0, w, h, radius, radius, br, br); if (!bRoundedCorners){ radiusObj = {}; }; parentContainer = (parent as IContainer); if (parentContainer){ vm = parentContainer.viewMetrics; backgroundHole = {x:vm.left, y:vm.top, w:Math.max(0, ((w - vm.left) - vm.right)), h:Math.max(0, ((h - vm.top) - vm.bottom)), r:0}; if ((((backgroundHole.w > 0)) && ((backgroundHole.h > 0)))){ if (contentAlpha != backgroundAlpha){ drawDropShadow(backgroundHole.x, backgroundHole.y, backgroundHole.w, backgroundHole.h, 0, 0, 0, 0); }; g.beginFill(Number(backgroundColor), contentAlpha); g.drawRect(backgroundHole.x, backgroundHole.y, backgroundHole.w, backgroundHole.h); g.endFill(); }; }; backgroundColor = getStyle("borderColor"); }; break; case "dropdown": dropdownBorderColor = getStyle("dropdownBorderColor"); drawDropShadow(0, 0, w, h, 4, 0, 0, 4); drawRoundRect(0, 0, w, h, {tl:4, tr:0, br:0, bl:4}, 5068126, 1); drawRoundRect(0, 0, w, h, {tl:4, tr:0, br:0, bl:4}, [0xFFFFFF, 0xFFFFFF], [0.7, 0], verticalGradientMatrix(0, 0, w, h)); drawRoundRect(1, 1, (w - 1), (h - 2), {tl:3, tr:0, br:0, bl:3}, 0xFFFFFF, 1); drawRoundRect(1, 2, (w - 1), (h - 3), {tl:3, tr:0, br:0, bl:3}, [0xEEEEEE, 0xFFFFFF], 1, verticalGradientMatrix(0, 0, (w - 1), (h - 3))); if (!isNaN(dropdownBorderColor)){ drawRoundRect(0, 0, (w + 1), h, {tl:4, tr:0, br:0, bl:4}, dropdownBorderColor, 0.5); drawRoundRect(1, 1, (w - 1), (h - 2), {tl:3, tr:0, br:0, bl:3}, 0xFFFFFF, 1); drawRoundRect(1, 2, (w - 1), (h - 3), {tl:3, tr:0, br:0, bl:3}, [0xEEEEEE, 0xFFFFFF], 1, verticalGradientMatrix(0, 0, (w - 1), (h - 3))); }; backgroundColor = null; break; case "menuBorder": borderColor = getStyle("borderColor"); drawRoundRect(0, 0, w, h, 0, borderColor, 1); drawDropShadow(1, 1, (w - 2), (h - 2), 0, 0, 0, 0); break; case "comboNonEdit": break; case "controlBar": if ((((w == 0)) || ((h == 0)))){ backgroundColor = null; break; }; footerColors = getStyle("footerColors"); showChrome = !((footerColors == null)); borderAlpha = getStyle("borderAlpha"); if (showChrome){ g.lineStyle(0, ((footerColors.length > 0)) ? footerColors[1] : footerColors[0], borderAlpha); g.moveTo(0, 0); g.lineTo(w, 0); g.lineStyle(0, 0, 0); if (((((parent) && (parent.parent))) && ((parent.parent is IStyleClient)))){ radius = IStyleClient(parent.parent).getStyle("cornerRadius"); borderAlpha = IStyleClient(parent.parent).getStyle("borderAlpha"); }; if (isNaN(radius)){ radius = 0; }; if (IStyleClient(parent.parent).getStyle("roundedBottomCorners").toString().toLowerCase() != "true"){ radius = 0; }; drawRoundRect(0, 1, w, (h - 1), {tl:0, tr:0, bl:radius, br:radius}, footerColors, borderAlpha, verticalGradientMatrix(0, 0, w, h)); if ((((footerColors.length > 1)) && (!((footerColors[0] == footerColors[1]))))){ drawRoundRect(0, 1, w, (h - 1), {tl:0, tr:0, bl:radius, br:radius}, [0xFFFFFF, 0xFFFFFF], highlightAlphas, verticalGradientMatrix(0, 0, w, h)); drawRoundRect(1, 2, (w - 2), (h - 3), {tl:0, tr:0, bl:(radius - 1), br:(radius - 1)}, footerColors, borderAlpha, verticalGradientMatrix(0, 0, w, h)); }; }; backgroundColor = null; break; case "applicationControlBar": fillColors = getStyle("fillColors"); backgroundAlpha = getStyle("backgroundAlpha"); highlightAlphas = getStyle("highlightAlphas"); fillAlphas = getStyle("fillAlphas"); docked = getStyle("docked"); backgroundColorNum = uint(backgroundColor); radius = getStyle("cornerRadius"); if (!radius){ radius = 0; }; drawDropShadow(0, 1, w, (h - 1), radius, radius, radius, radius); if (((!((backgroundColor === null))) && (StyleManager.isValidStyleValue(backgroundColor)))){ drawRoundRect(0, 1, w, (h - 1), radius, backgroundColorNum, backgroundAlpha, verticalGradientMatrix(0, 0, w, h)); }; drawRoundRect(0, 1, w, (h - 1), radius, fillColors, fillAlphas, verticalGradientMatrix(0, 0, w, h)); drawRoundRect(0, 1, w, ((h / 2) - 1), {tl:radius, tr:radius, bl:0, br:0}, [0xFFFFFF, 0xFFFFFF], highlightAlphas, verticalGradientMatrix(0, 0, w, ((h / 2) - 1))); drawRoundRect(0, 1, w, (h - 1), {tl:radius, tr:radius, bl:0, br:0}, 0xFFFFFF, 0.3, null, GradientType.LINEAR, null, {x:0, y:2, w:w, h:(h - 2), r:{tl:radius, tr:radius, bl:0, br:0}}); backgroundColor = null; break; default: borderColor = getStyle("borderColor"); borderThickness = getStyle("borderThickness"); borderSides = getStyle("borderSides"); bHasAllSides = true; radius = getStyle("cornerRadius"); bRoundedCorners = (getStyle("roundedBottomCorners").toString().toLowerCase() == "true"); holeRadius = Math.max((radius - borderThickness), 0); hole = {x:borderThickness, y:borderThickness, w:(w - (borderThickness * 2)), h:(h - (borderThickness * 2)), r:holeRadius}; if (!bRoundedCorners){ radiusObj = {tl:radius, tr:radius, bl:0, br:0}; hole.r = {tl:holeRadius, tr:holeRadius, bl:0, br:0}; }; if (borderSides != "left top right bottom"){ hole.r = {tl:holeRadius, tr:holeRadius, bl:(bRoundedCorners) ? holeRadius : 0, br:(bRoundedCorners) ? holeRadius : 0}; radiusObj = {tl:radius, tr:radius, bl:(bRoundedCorners) ? radius : 0, br:(bRoundedCorners) ? radius : 0}; borderSides = borderSides.toLowerCase(); if (borderSides.indexOf("left") == -1){ hole.x = 0; hole.w = (hole.w + borderThickness); hole.r.tl = 0; hole.r.bl = 0; radiusObj.tl = 0; radiusObj.bl = 0; bHasAllSides = false; }; if (borderSides.indexOf("top") == -1){ hole.y = 0; hole.h = (hole.h + borderThickness); hole.r.tl = 0; hole.r.tr = 0; radiusObj.tl = 0; radiusObj.tr = 0; bHasAllSides = false; }; if (borderSides.indexOf("right") == -1){ hole.w = (hole.w + borderThickness); hole.r.tr = 0; hole.r.br = 0; radiusObj.tr = 0; radiusObj.br = 0; bHasAllSides = false; }; if (borderSides.indexOf("bottom") == -1){ hole.h = (hole.h + borderThickness); hole.r.bl = 0; hole.r.br = 0; radiusObj.bl = 0; radiusObj.br = 0; bHasAllSides = false; }; }; if ((((radius == 0)) && (bHasAllSides))){ drawDropShadow(0, 0, w, h, 0, 0, 0, 0); g.beginFill(borderColor); g.drawRect(0, 0, w, h); g.drawRect(borderThickness, borderThickness, (w - (2 * borderThickness)), (h - (2 * borderThickness))); g.endFill(); } else { if (radiusObj){ drawDropShadow(0, 0, w, h, radiusObj.tl, radiusObj.tr, radiusObj.br, radiusObj.bl); drawRoundRect(0, 0, w, h, radiusObj, borderColor, 1, null, null, null, hole); radiusObj.tl = Math.max((radius - borderThickness), 0); radiusObj.tr = Math.max((radius - borderThickness), 0); radiusObj.bl = (bRoundedCorners) ? Math.max((radius - borderThickness), 0) : 0; radiusObj.br = (bRoundedCorners) ? Math.max((radius - borderThickness), 0) : 0; } else { drawDropShadow(0, 0, w, h, radius, radius, radius, radius); drawRoundRect(0, 0, w, h, radius, borderColor, 1, null, null, null, hole); radius = Math.max((getStyle("cornerRadius") - borderThickness), 0); }; }; }; }; } mx_internal function drawBackground(w:Number, h:Number):void{ var nd:Number; var alpha:Number; var bm:EdgeMetrics; var g:Graphics; var bottom:Number; var topRadius:Number; var bottomRadius:Number; var highlightAlphas:Array; var highlightAlpha:Number; if (((((((!((backgroundColor === null))) && (!((backgroundColor === ""))))) || (getStyle("mouseShield")))) || (getStyle("mouseShieldChildren")))){ nd = Number(backgroundColor); alpha = 1; bm = getBackgroundColorMetrics(); g = graphics; if (((((isNaN(nd)) || ((backgroundColor === "")))) || ((backgroundColor === null)))){ alpha = 0; nd = 0xFFFFFF; } else { alpha = getStyle(backgroundAlphaName); }; if (((!((radius == 0))) || (backgroundHole))){ bottom = bm.bottom; if (radiusObj){ topRadius = Math.max((radius - Math.max(bm.top, bm.left, bm.right)), 0); bottomRadius = (bRoundedCorners) ? Math.max((radius - Math.max(bm.bottom, bm.left, bm.right)), 0) : 0; radiusObj = {tl:topRadius, tr:topRadius, bl:bottomRadius, br:bottomRadius}; drawRoundRect(bm.left, bm.top, (width - (bm.left + bm.right)), (height - (bm.top + bottom)), radiusObj, nd, alpha, null, GradientType.LINEAR, null, backgroundHole); } else { drawRoundRect(bm.left, bm.top, (width - (bm.left + bm.right)), (height - (bm.top + bottom)), radius, nd, alpha, null, GradientType.LINEAR, null, backgroundHole); }; } else { g.beginFill(nd, alpha); g.drawRect(bm.left, bm.top, ((w - bm.right) - bm.left), ((h - bm.bottom) - bm.top)); g.endFill(); }; }; var borderStyle:String = getStyle("borderStyle"); if ((((((FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)) && ((((borderStyle == "alert")) || ((borderStyle == "default")))))) && ((getStyle("headerColors") == null)))){ highlightAlphas = getStyle("highlightAlphas"); highlightAlpha = (highlightAlphas) ? highlightAlphas[0] : 0.3; drawRoundRect(0, 0, w, h, {tl:radius, tr:radius, bl:0, br:0}, 0xFFFFFF, highlightAlpha, null, GradientType.LINEAR, null, {x:0, y:1, w:w, h:(h - 1), r:{tl:radius, tr:radius, bl:0, br:0}}); }; } mx_internal function drawDropShadow(x:Number, y:Number, width:Number, height:Number, tlRadius:Number, trRadius:Number, brRadius:Number, blRadius:Number):void{ var angle:Number; var docked:Boolean; if ((((((((getStyle("dropShadowEnabled") == false)) || ((getStyle("dropShadowEnabled") == "false")))) || ((width == 0)))) || ((height == 0)))){ return; }; var distance:Number = getStyle("shadowDistance"); var direction:String = getStyle("shadowDirection"); if (getStyle("borderStyle") == "applicationControlBar"){ docked = getStyle("docked"); angle = (docked) ? 90 : getDropShadowAngle(distance, direction); distance = Math.abs(distance); } else { angle = getDropShadowAngle(distance, direction); distance = (Math.abs(distance) + 2); }; if (!dropShadow){ dropShadow = new RectangularDropShadow(); }; dropShadow.distance = distance; dropShadow.angle = angle; dropShadow.color = getStyle("dropShadowColor"); dropShadow.alpha = 0.4; dropShadow.tlRadius = tlRadius; dropShadow.trRadius = trRadius; dropShadow.blRadius = blRadius; dropShadow.brRadius = brRadius; dropShadow.drawShadow(graphics, x, y, width, height); } mx_internal function getBackgroundColor():Object{ var color:Object; var p:IUIComponent = (parent as IUIComponent); if (((p) && (!(p.enabled)))){ color = getStyle("backgroundDisabledColor"); if (((!((color === null))) && (StyleManager.isValidStyleValue(color)))){ return (color); }; }; return (getStyle("backgroundColor")); } mx_internal function draw3dBorder(c1:Number, c2:Number, c3:Number, c4:Number, c5:Number, c6:Number):void{ var w:Number = width; var h:Number = height; drawDropShadow(0, 0, width, height, 0, 0, 0, 0); var g:Graphics = graphics; g.beginFill(c1); g.drawRect(0, 0, w, h); g.drawRect(1, 0, (w - 2), h); g.endFill(); g.beginFill(c2); g.drawRect(1, 0, (w - 2), 1); g.endFill(); g.beginFill(c3); g.drawRect(1, (h - 1), (w - 2), 1); g.endFill(); g.beginFill(c4); g.drawRect(1, 1, (w - 2), 1); g.endFill(); g.beginFill(c5); g.drawRect(1, (h - 2), (w - 2), 1); g.endFill(); g.beginFill(c6); g.drawRect(1, 2, (w - 2), (h - 4)); g.drawRect(2, 2, (w - 4), (h - 4)); g.endFill(); } mx_internal function getBackgroundColorMetrics():EdgeMetrics{ return (borderMetrics); } mx_internal function getDropShadowAngle(distance:Number, direction:String):Number{ if (direction == "left"){ return (((distance >= 0)) ? 135 : 225); } else { if (direction == "right"){ return (((distance >= 0)) ? 45 : 315); //unresolved jump }; }; return (!NULL!); } override public function get borderMetrics():EdgeMetrics{ var borderThickness:Number; var borderSides:String; if (_borderMetrics){ return (_borderMetrics); }; var borderStyle:String = getStyle("borderStyle"); if ((((borderStyle == "default")) || ((borderStyle == "alert")))){ if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){ _borderMetrics = new EdgeMetrics(0, 0, 0, 0); } else { return (EdgeMetrics.EMPTY); }; } else { if ((((borderStyle == "controlBar")) || ((borderStyle == "applicationControlBar")))){ _borderMetrics = new EdgeMetrics(1, 1, 1, 1); } else { if (borderStyle == "solid"){ borderThickness = getStyle("borderThickness"); if (isNaN(borderThickness)){ borderThickness = 0; }; _borderMetrics = new EdgeMetrics(borderThickness, borderThickness, borderThickness, borderThickness); borderSides = getStyle("borderSides"); if (borderSides != "left top right bottom"){ if (borderSides.indexOf("left") == -1){ _borderMetrics.left = 0; }; if (borderSides.indexOf("top") == -1){ _borderMetrics.top = 0; }; if (borderSides.indexOf("right") == -1){ _borderMetrics.right = 0; }; if (borderSides.indexOf("bottom") == -1){ _borderMetrics.bottom = 0; }; }; } else { borderThickness = BORDER_WIDTHS[borderStyle]; if (isNaN(borderThickness)){ borderThickness = 0; }; _borderMetrics = new EdgeMetrics(borderThickness, borderThickness, borderThickness, borderThickness); }; }; }; return (_borderMetrics); } } }//package mx.skins.halo
Section 77
//HaloFocusRect (mx.skins.halo.HaloFocusRect) package mx.skins.halo { import mx.core.*; import flash.display.*; import mx.styles.*; import mx.skins.*; import mx.utils.*; public class HaloFocusRect extends ProgrammaticSkin implements IStyleClient { private var _focusColor:Number; mx_internal static const VERSION:String = "3.5.0.12683"; public function HaloFocusRect(){ super(); } public function get inheritingStyles():Object{ return (styleName.inheritingStyles); } public function set inheritingStyles(value:Object):void{ } public function notifyStyleChangeInChildren(styleProp:String, recursive:Boolean):void{ } public function registerEffects(effects:Array):void{ } public function regenerateStyleCache(recursive:Boolean):void{ } public function get styleDeclaration():CSSStyleDeclaration{ return (CSSStyleDeclaration(styleName)); } public function getClassStyleDeclarations():Array{ return ([]); } public function get className():String{ return ("HaloFocusRect"); } public function clearStyle(styleProp:String):void{ if (styleProp == "focusColor"){ _focusColor = NaN; }; } public function setStyle(styleProp:String, newValue):void{ if (styleProp == "focusColor"){ _focusColor = newValue; }; } public function set nonInheritingStyles(value:Object):void{ } public function get nonInheritingStyles():Object{ return (styleName.nonInheritingStyles); } override protected function updateDisplayList(w:Number, h:Number):void{ var tl:Number; var bl:Number; var tr:Number; var br:Number; var nr:Number; var ellipseSize:Number; super.updateDisplayList(w, h); var focusBlendMode:String = getStyle("focusBlendMode"); var focusAlpha:Number = getStyle("focusAlpha"); var focusColor:Number = getStyle("focusColor"); var cornerRadius:Number = getStyle("cornerRadius"); var focusThickness:Number = getStyle("focusThickness"); var focusRoundedCorners:String = getStyle("focusRoundedCorners"); var themeColor:Number = getStyle("themeColor"); var rectColor:Number = focusColor; if (isNaN(rectColor)){ rectColor = themeColor; }; var g:Graphics = graphics; g.clear(); if (focusBlendMode){ blendMode = focusBlendMode; }; if (((!((focusRoundedCorners == "tl tr bl br"))) && ((cornerRadius > 0)))){ tl = 0; bl = 0; tr = 0; br = 0; nr = (cornerRadius + focusThickness); if (focusRoundedCorners.indexOf("tl") >= 0){ tl = nr; }; if (focusRoundedCorners.indexOf("tr") >= 0){ tr = nr; }; if (focusRoundedCorners.indexOf("bl") >= 0){ bl = nr; }; if (focusRoundedCorners.indexOf("br") >= 0){ br = nr; }; g.beginFill(rectColor, focusAlpha); GraphicsUtil.drawRoundRectComplex(g, 0, 0, w, h, tl, tr, bl, br); tl = (tl) ? cornerRadius : 0; tr = (tr) ? cornerRadius : 0; bl = (bl) ? cornerRadius : 0; br = (br) ? cornerRadius : 0; GraphicsUtil.drawRoundRectComplex(g, focusThickness, focusThickness, (w - (2 * focusThickness)), (h - (2 * focusThickness)), tl, tr, bl, br); g.endFill(); nr = (cornerRadius + (focusThickness / 2)); tl = (tl) ? nr : 0; tr = (tr) ? nr : 0; bl = (bl) ? nr : 0; br = (br) ? nr : 0; g.beginFill(rectColor, focusAlpha); GraphicsUtil.drawRoundRectComplex(g, (focusThickness / 2), (focusThickness / 2), (w - focusThickness), (h - focusThickness), tl, tr, bl, br); tl = (tl) ? cornerRadius : 0; tr = (tr) ? cornerRadius : 0; bl = (bl) ? cornerRadius : 0; br = (br) ? cornerRadius : 0; GraphicsUtil.drawRoundRectComplex(g, focusThickness, focusThickness, (w - (2 * focusThickness)), (h - (2 * focusThickness)), tl, tr, bl, br); g.endFill(); } else { g.beginFill(rectColor, focusAlpha); ellipseSize = (((cornerRadius > 0)) ? (cornerRadius + focusThickness) : 0 * 2); g.drawRoundRect(0, 0, w, h, ellipseSize, ellipseSize); ellipseSize = (cornerRadius * 2); g.drawRoundRect(focusThickness, focusThickness, (w - (2 * focusThickness)), (h - (2 * focusThickness)), ellipseSize, ellipseSize); g.endFill(); g.beginFill(rectColor, focusAlpha); ellipseSize = (((cornerRadius > 0)) ? (cornerRadius + (focusThickness / 2)) : 0 * 2); g.drawRoundRect((focusThickness / 2), (focusThickness / 2), (w - focusThickness), (h - focusThickness), ellipseSize, ellipseSize); ellipseSize = (cornerRadius * 2); g.drawRoundRect(focusThickness, focusThickness, (w - (2 * focusThickness)), (h - (2 * focusThickness)), ellipseSize, ellipseSize); g.endFill(); }; } override public function getStyle(styleProp:String){ return (((styleProp == "focusColor")) ? _focusColor : super.getStyle(styleProp)); } public function set styleDeclaration(value:CSSStyleDeclaration):void{ } } }//package mx.skins.halo
Section 78
//Border (mx.skins.Border) package mx.skins { import mx.core.*; public class Border extends ProgrammaticSkin implements IBorder { mx_internal static const VERSION:String = "3.5.0.12683"; public function Border(){ super(); } public function get borderMetrics():EdgeMetrics{ return (EdgeMetrics.EMPTY); } } }//package mx.skins
Section 79
//ProgrammaticSkin (mx.skins.ProgrammaticSkin) package mx.skins { import mx.core.*; import flash.display.*; import flash.geom.*; import mx.styles.*; import mx.managers.*; import mx.utils.*; public class ProgrammaticSkin extends FlexShape implements IFlexDisplayObject, IInvalidating, ILayoutManagerClient, ISimpleStyleClient, IProgrammaticSkin { private var _initialized:Boolean;// = false private var _height:Number; private var invalidateDisplayListFlag:Boolean;// = false private var _styleName:IStyleClient; private var _nestLevel:int;// = 0 private var _processedDescriptors:Boolean;// = false private var _updateCompletePendingFlag:Boolean;// = true private var _width:Number; mx_internal static const VERSION:String = "3.5.0.12683"; private static var tempMatrix:Matrix = new Matrix(); public function ProgrammaticSkin(){ super(); _width = measuredWidth; _height = measuredHeight; } public function getStyle(styleProp:String){ return ((_styleName) ? _styleName.getStyle(styleProp) : null); } protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{ } public function get nestLevel():int{ return (_nestLevel); } public function set nestLevel(value:int):void{ _nestLevel = value; invalidateDisplayList(); } override public function get height():Number{ return (_height); } public function get updateCompletePendingFlag():Boolean{ return (_updateCompletePendingFlag); } protected function verticalGradientMatrix(x:Number, y:Number, width:Number, height:Number):Matrix{ return (rotatedGradientMatrix(x, y, width, height, 90)); } public function validateSize(recursive:Boolean=false):void{ } public function invalidateDisplayList():void{ if (((!(invalidateDisplayListFlag)) && ((nestLevel > 0)))){ invalidateDisplayListFlag = true; UIComponentGlobals.layoutManager.invalidateDisplayList(this); }; } public function set updateCompletePendingFlag(value:Boolean):void{ _updateCompletePendingFlag = value; } protected function horizontalGradientMatrix(x:Number, y:Number, width:Number, height:Number):Matrix{ return (rotatedGradientMatrix(x, y, width, height, 0)); } override public function set height(value:Number):void{ _height = value; invalidateDisplayList(); } public function set processedDescriptors(value:Boolean):void{ _processedDescriptors = value; } public function validateDisplayList():void{ invalidateDisplayListFlag = false; updateDisplayList(width, height); } public function get measuredWidth():Number{ return (0); } override public function set width(value:Number):void{ _width = value; invalidateDisplayList(); } public function get measuredHeight():Number{ return (0); } public function set initialized(value:Boolean):void{ _initialized = value; } protected function drawRoundRect(x:Number, y:Number, width:Number, height:Number, cornerRadius:Object=null, color:Object=null, alpha:Object=null, gradientMatrix:Matrix=null, gradientType:String="linear", gradientRatios:Array=null, hole:Object=null):void{ var ellipseSize:Number; var alphas:Array; var holeR:Object; var g:Graphics = graphics; if ((((width == 0)) || ((height == 0)))){ return; }; if (color !== null){ if ((color is uint)){ g.beginFill(uint(color), Number(alpha)); } else { if ((color is Array)){ alphas = ((alpha is Array)) ? (alpha as Array) : [alpha, alpha]; if (!gradientRatios){ gradientRatios = [0, 0xFF]; }; g.beginGradientFill(gradientType, (color as Array), alphas, gradientRatios, gradientMatrix); }; }; }; if (!cornerRadius){ g.drawRect(x, y, width, height); } else { if ((cornerRadius is Number)){ ellipseSize = (Number(cornerRadius) * 2); g.drawRoundRect(x, y, width, height, ellipseSize, ellipseSize); } else { GraphicsUtil.drawRoundRectComplex(g, x, y, width, height, cornerRadius.tl, cornerRadius.tr, cornerRadius.bl, cornerRadius.br); }; }; if (hole){ holeR = hole.r; if ((holeR is Number)){ ellipseSize = (Number(holeR) * 2); g.drawRoundRect(hole.x, hole.y, hole.w, hole.h, ellipseSize, ellipseSize); } else { GraphicsUtil.drawRoundRectComplex(g, hole.x, hole.y, hole.w, hole.h, holeR.tl, holeR.tr, holeR.bl, holeR.br); }; }; if (color !== null){ g.endFill(); }; } public function get processedDescriptors():Boolean{ return (_processedDescriptors); } public function set styleName(value:Object):void{ if (_styleName != value){ _styleName = (value as IStyleClient); invalidateDisplayList(); }; } public function setActualSize(newWidth:Number, newHeight:Number):void{ var changed:Boolean; if (_width != newWidth){ _width = newWidth; changed = true; }; if (_height != newHeight){ _height = newHeight; changed = true; }; if (changed){ invalidateDisplayList(); }; } public function styleChanged(styleProp:String):void{ invalidateDisplayList(); } override public function get width():Number{ return (_width); } public function invalidateProperties():void{ } public function get initialized():Boolean{ return (_initialized); } protected function rotatedGradientMatrix(x:Number, y:Number, width:Number, height:Number, rotation:Number):Matrix{ tempMatrix.createGradientBox(width, height, ((rotation * Math.PI) / 180), x, y); return (tempMatrix); } public function move(x:Number, y:Number):void{ this.x = x; this.y = y; } public function get styleName():Object{ return (_styleName); } public function validateNow():void{ if (invalidateDisplayListFlag){ validateDisplayList(); }; } public function invalidateSize():void{ } public function validateProperties():void{ } } }//package mx.skins
Section 80
//RectangularBorder (mx.skins.RectangularBorder) package mx.skins { import flash.events.*; import mx.core.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import mx.styles.*; import flash.system.*; import mx.resources.*; import flash.net.*; public class RectangularBorder extends Border implements IRectangularBorder { private var backgroundImage:DisplayObject; private var backgroundImageHeight:Number; private var _backgroundImageBounds:Rectangle; private var backgroundImageStyle:Object; private var backgroundImageWidth:Number; private var resourceManager:IResourceManager; mx_internal static const VERSION:String = "3.5.0.12683"; public function RectangularBorder(){ resourceManager = ResourceManager.getInstance(); super(); addEventListener(Event.REMOVED, removedHandler); } public function layoutBackgroundImage():void{ var sW:Number; var sH:Number; var sX:Number; var sY:Number; var scale:Number; var g:Graphics; var p:DisplayObject = parent; var bm:EdgeMetrics = ((p is IContainer)) ? IContainer(p).viewMetrics : borderMetrics; var scrollableBk = !((getStyle("backgroundAttachment") == "fixed")); if (_backgroundImageBounds){ sW = _backgroundImageBounds.width; sH = _backgroundImageBounds.height; } else { sW = ((width - bm.left) - bm.right); sH = ((height - bm.top) - bm.bottom); }; var percentage:Number = getBackgroundSize(); if (isNaN(percentage)){ sX = 1; sY = 1; } else { scale = (percentage * 0.01); sX = ((scale * sW) / backgroundImageWidth); sY = ((scale * sH) / backgroundImageHeight); }; backgroundImage.scaleX = sX; backgroundImage.scaleY = sY; var offsetX:Number = Math.round((0.5 * (sW - (backgroundImageWidth * sX)))); var offsetY:Number = Math.round((0.5 * (sH - (backgroundImageHeight * sY)))); backgroundImage.x = bm.left; backgroundImage.y = bm.top; var backgroundMask:Shape = Shape(backgroundImage.mask); backgroundMask.x = bm.left; backgroundMask.y = bm.top; if (((scrollableBk) && ((p is IContainer)))){ offsetX = (offsetX - IContainer(p).horizontalScrollPosition); offsetY = (offsetY - IContainer(p).verticalScrollPosition); }; backgroundImage.alpha = getStyle("backgroundAlpha"); backgroundImage.x = (backgroundImage.x + offsetX); backgroundImage.y = (backgroundImage.y + offsetY); var maskWidth:Number = ((width - bm.left) - bm.right); var maskHeight:Number = ((height - bm.top) - bm.bottom); if (((!((backgroundMask.width == maskWidth))) || (!((backgroundMask.height == maskHeight))))){ g = backgroundMask.graphics; g.clear(); g.beginFill(0xFFFFFF); g.drawRect(0, 0, maskWidth, maskHeight); g.endFill(); }; } public function set backgroundImageBounds(value:Rectangle):void{ if (((((_backgroundImageBounds) && (value))) && (_backgroundImageBounds.equals(value)))){ return; }; _backgroundImageBounds = value; invalidateDisplayList(); } private function getBackgroundSize():Number{ var index:int; var percentage:Number = NaN; var backgroundSize:Object = getStyle("backgroundSize"); if (((backgroundSize) && ((backgroundSize is String)))){ index = backgroundSize.indexOf("%"); if (index != -1){ percentage = Number(backgroundSize.substr(0, index)); }; }; return (percentage); } private function removedHandler(event:Event):void{ var childrenList:IChildList; if (backgroundImage){ childrenList = ((parent is IRawChildrenContainer)) ? IRawChildrenContainer(parent).rawChildren : IChildList(parent); childrenList.removeChild(backgroundImage.mask); childrenList.removeChild(backgroundImage); backgroundImage = null; }; } private function initBackgroundImage(image:DisplayObject):void{ backgroundImage = image; if ((image is Loader)){ backgroundImageWidth = Loader(image).contentLoaderInfo.width; backgroundImageHeight = Loader(image).contentLoaderInfo.height; } else { backgroundImageWidth = backgroundImage.width; backgroundImageHeight = backgroundImage.height; if ((image is ISimpleStyleClient)){ ISimpleStyleClient(image).styleName = styleName; }; }; var childrenList:IChildList = ((parent is IRawChildrenContainer)) ? IRawChildrenContainer(parent).rawChildren : IChildList(parent); var backgroundMask:Shape = new FlexShape(); backgroundMask.name = "backgroundMask"; backgroundMask.x = 0; backgroundMask.y = 0; childrenList.addChild(backgroundMask); var myIndex:int = childrenList.getChildIndex(this); childrenList.addChildAt(backgroundImage, (myIndex + 1)); backgroundImage.mask = backgroundMask; } public function get backgroundImageBounds():Rectangle{ return (_backgroundImageBounds); } public function get hasBackgroundImage():Boolean{ return (!((backgroundImage == null))); } private function completeEventHandler(event:Event):void{ if (!parent){ return; }; var target:DisplayObject = DisplayObject(LoaderInfo(event.target).loader); initBackgroundImage(target); layoutBackgroundImage(); dispatchEvent(event.clone()); } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{ var cls:Class; var newStyleObj:DisplayObject; var loader:Loader; var loaderContext:LoaderContext; var message:String; var unscaledWidth = unscaledWidth; var unscaledHeight = unscaledHeight; if (!parent){ return; }; var newStyle:Object = getStyle("backgroundImage"); if (newStyle != backgroundImageStyle){ removedHandler(null); backgroundImageStyle = newStyle; if (((newStyle) && ((newStyle as Class)))){ cls = Class(newStyle); initBackgroundImage(new (cls)); } else { if (((newStyle) && ((newStyle is String)))){ cls = Class(getDefinitionByName(String(newStyle))); //unresolved jump var _slot1 = e; if (cls){ newStyleObj = new (cls); initBackgroundImage(newStyleObj); } else { loader = new FlexLoader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeEventHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorEventHandler); loader.contentLoaderInfo.addEventListener(ErrorEvent.ERROR, errorEventHandler); loaderContext = new LoaderContext(); loaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); loader.load(new URLRequest(String(newStyle)), loaderContext); }; } else { if (newStyle){ message = resourceManager.getString("skins", "notLoaded", [newStyle]); throw (new Error(message)); }; }; }; }; if (backgroundImage){ layoutBackgroundImage(); }; } private function errorEventHandler(event:Event):void{ } } }//package mx.skins
Section 81
//CSSStyleDeclaration (mx.styles.CSSStyleDeclaration) package mx.styles { import flash.events.*; import mx.core.*; import flash.display.*; import flash.utils.*; import mx.managers.*; public class CSSStyleDeclaration extends EventDispatcher { mx_internal var effects:Array; protected var overrides:Object; public var defaultFactory:Function; public var factory:Function; mx_internal var selectorRefCount:int;// = 0 private var styleManager:IStyleManager2; private var clones:Dictionary; mx_internal static const VERSION:String = "3.5.0.12683"; private static const NOT_A_COLOR:uint = 4294967295; private static const FILTERMAP_PROP:String = "__reserved__filterMap"; public function CSSStyleDeclaration(selector:String=null){ clones = new Dictionary(true); super(); if (selector){ styleManager = (Singleton.getInstance("mx.styles::IStyleManager2") as IStyleManager2); styleManager.setStyleDeclaration(selector, this, false); }; } mx_internal function addStyleToProtoChain(chain:Object, target:DisplayObject, filterMap:Object=null):Object{ var p:String; var emptyObjectFactory:Function; var filteredChain:Object; var filterObjectFactory:Function; var i:String; var chain = chain; var target = target; var filterMap = filterMap; var nodeAddedToChain:Boolean; var originalChain:Object = chain; if (filterMap){ chain = {}; }; if (defaultFactory != null){ defaultFactory.prototype = chain; chain = new defaultFactory(); nodeAddedToChain = true; }; if (factory != null){ factory.prototype = chain; chain = new factory(); nodeAddedToChain = true; }; if (overrides){ if ((((defaultFactory == null)) && ((factory == null)))){ emptyObjectFactory = function ():void{ }; emptyObjectFactory.prototype = chain; chain = new (emptyObjectFactory); nodeAddedToChain = true; }; for (p in overrides) { if (overrides[p] === undefined){ delete chain[p]; } else { chain[p] = overrides[p]; }; }; }; if (filterMap){ if (nodeAddedToChain){ filteredChain = {}; filterObjectFactory = function ():void{ }; filterObjectFactory.prototype = originalChain; filteredChain = new (filterObjectFactory); for (i in chain) { if (filterMap[i] != null){ filteredChain[filterMap[i]] = chain[i]; }; }; chain = filteredChain; chain[FILTERMAP_PROP] = filterMap; } else { chain = originalChain; }; }; if (nodeAddedToChain){ clones[chain] = 1; }; return (chain); } public function getStyle(styleProp:String){ var o:*; var v:*; if (overrides){ if ((((styleProp in overrides)) && ((overrides[styleProp] === undefined)))){ return (undefined); }; v = overrides[styleProp]; if (v !== undefined){ return (v); }; }; if (factory != null){ factory.prototype = {}; o = new factory(); v = o[styleProp]; if (v !== undefined){ return (v); }; }; if (defaultFactory != null){ defaultFactory.prototype = {}; o = new defaultFactory(); v = o[styleProp]; if (v !== undefined){ return (v); }; }; return (undefined); } public function clearStyle(styleProp:String):void{ setStyle(styleProp, undefined); } public function setStyle(styleProp:String, newValue):void{ var i:int; var sm:Object; var oldValue:Object = getStyle(styleProp); var regenerate:Boolean; if ((((((((((selectorRefCount > 0)) && ((factory == null)))) && ((defaultFactory == null)))) && (!(overrides)))) && (!((oldValue === newValue))))){ regenerate = true; }; if (newValue !== undefined){ setStyle(styleProp, newValue); } else { if (newValue == oldValue){ return; }; setStyle(styleProp, newValue); }; var sms:Array = SystemManagerGlobals.topLevelSystemManagers; var n:int = sms.length; if (regenerate){ i = 0; while (i < n) { sm = sms[i]; sm.regenerateStyleCache(true); i++; }; }; i = 0; while (i < n) { sm = sms[i]; sm.notifyStyleChangeInChildren(styleProp, true); i++; }; } private function clearStyleAttr(styleProp:String):void{ var clone:*; if (!overrides){ overrides = {}; }; overrides[styleProp] = undefined; for (clone in clones) { delete clone[styleProp]; }; } mx_internal function createProtoChainRoot():Object{ var root:Object = {}; if (defaultFactory != null){ defaultFactory.prototype = root; root = new defaultFactory(); }; if (factory != null){ factory.prototype = root; root = new factory(); }; clones[root] = 1; return (root); } mx_internal function clearOverride(styleProp:String):void{ if (((overrides) && (overrides[styleProp]))){ delete overrides[styleProp]; }; } mx_internal function setStyle(styleProp:String, value):void{ var o:Object; var clone:*; var colorNumber:Number; var cloneFilter:Object; if (value === undefined){ clearStyleAttr(styleProp); return; }; if ((value is String)){ if (!styleManager){ styleManager = (Singleton.getInstance("mx.styles::IStyleManager2") as IStyleManager2); }; colorNumber = styleManager.getColorName(value); if (colorNumber != NOT_A_COLOR){ value = colorNumber; }; }; if (defaultFactory != null){ o = new defaultFactory(); if (o[styleProp] !== value){ if (!overrides){ overrides = {}; }; overrides[styleProp] = value; } else { if (overrides){ delete overrides[styleProp]; }; }; }; if (factory != null){ o = new factory(); if (o[styleProp] !== value){ if (!overrides){ overrides = {}; }; overrides[styleProp] = value; } else { if (overrides){ delete overrides[styleProp]; }; }; }; if ((((defaultFactory == null)) && ((factory == null)))){ if (!overrides){ overrides = {}; }; overrides[styleProp] = value; }; for (clone in clones) { cloneFilter = clone[FILTERMAP_PROP]; if (cloneFilter){ if (cloneFilter[styleProp] != null){ clone[cloneFilter[styleProp]] = value; }; } else { clone[styleProp] = value; }; }; } } }//package mx.styles
Section 82
//ISimpleStyleClient (mx.styles.ISimpleStyleClient) package mx.styles { public interface ISimpleStyleClient { function set styleName(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;ISimpleStyleClient.as:Object):void; function styleChanged(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;ISimpleStyleClient.as:String):void; function get styleName():Object; } }//package mx.styles
Section 83
//IStyleClient (mx.styles.IStyleClient) package mx.styles { public interface IStyleClient extends ISimpleStyleClient { function regenerateStyleCache(mx.styles:IStyleClient/mx.styles:IStyleClient:className/get:Boolean):void; function get className():String; function clearStyle(mx.styles:IStyleClient/mx.styles:IStyleClient:className/get:String):void; function getClassStyleDeclarations():Array; function get inheritingStyles():Object; function set nonInheritingStyles(mx.styles:IStyleClient/mx.styles:IStyleClient:className/get:Object):void; function setStyle(_arg1:String, _arg2):void; function get styleDeclaration():CSSStyleDeclaration; function set styleDeclaration(mx.styles:IStyleClient/mx.styles:IStyleClient:className/get:CSSStyleDeclaration):void; function get nonInheritingStyles():Object; function set inheritingStyles(mx.styles:IStyleClient/mx.styles:IStyleClient:className/get:Object):void; function getStyle(*:String); function notifyStyleChangeInChildren(_arg1:String, _arg2:Boolean):void; function registerEffects(mx.styles:IStyleClient/mx.styles:IStyleClient:className/get:Array):void; } }//package mx.styles
Section 84
//IStyleManager (mx.styles.IStyleManager) package mx.styles { import flash.events.*; public interface IStyleManager { function isColorName(value:String):Boolean; function registerParentDisplayListInvalidatingStyle(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;IStyleManager.as:String):void; function registerInheritingStyle(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;IStyleManager.as:String):void; function set stylesRoot(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;IStyleManager.as:Object):void; function get typeSelectorCache():Object; function styleDeclarationsChanged():void; function setStyleDeclaration(_arg1:String, _arg2:CSSStyleDeclaration, _arg3:Boolean):void; function isParentDisplayListInvalidatingStyle(value:String):Boolean; function isSizeInvalidatingStyle(value:String):Boolean; function get inheritingStyles():Object; function isValidStyleValue(value):Boolean; function isParentSizeInvalidatingStyle(value:String):Boolean; function getColorName(mx.styles:IStyleManager/mx.styles:IStyleManager:inheritingStyles/set:Object):uint; function set typeSelectorCache(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;IStyleManager.as:Object):void; function unloadStyleDeclarations(_arg1:String, _arg2:Boolean=true):void; function getColorNames(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;IStyleManager.as:Array):void; function loadStyleDeclarations(_arg1:String, _arg2:Boolean=true, _arg3:Boolean=false):IEventDispatcher; function isInheritingStyle(value:String):Boolean; function set inheritingStyles(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;IStyleManager.as:Object):void; function get stylesRoot():Object; function initProtoChainRoots():void; function registerColorName(_arg1:String, _arg2:uint):void; function registerParentSizeInvalidatingStyle(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;IStyleManager.as:String):void; function registerSizeInvalidatingStyle(C:\autobuild\3.5.0\frameworks\projects\framework\src;mx\styles;IStyleManager.as:String):void; function clearStyleDeclaration(_arg1:String, _arg2:Boolean):void; function isInheritingTextFormatStyle(value:String):Boolean; function getStyleDeclaration(mx.styles:IStyleManager/mx.styles:IStyleManager:inheritingStyles/get:String):CSSStyleDeclaration; } }//package mx.styles
Section 85
//IStyleManager2 (mx.styles.IStyleManager2) package mx.styles { import flash.events.*; import flash.system.*; public interface IStyleManager2 extends IStyleManager { function get selectors():Array; function loadStyleDeclarations2(_arg1:String, _arg2:Boolean=true, _arg3:ApplicationDomain=null, _arg4:SecurityDomain=null):IEventDispatcher; } }//package mx.styles
Section 86
//IStyleModule (mx.styles.IStyleModule) package mx.styles { public interface IStyleModule { function unload():void; } }//package mx.styles
Section 87
//StyleManager (mx.styles.StyleManager) package mx.styles { import flash.events.*; import mx.core.*; import flash.system.*; public class StyleManager { mx_internal static const VERSION:String = "3.5.0.12683"; public static const NOT_A_COLOR:uint = 4294967295; private static var _impl:IStyleManager2; private static var implClassDependency:StyleManagerImpl; public function StyleManager(){ super(); } public static function isParentSizeInvalidatingStyle(styleName:String):Boolean{ return (impl.isParentSizeInvalidatingStyle(styleName)); } public static function registerInheritingStyle(styleName:String):void{ impl.registerInheritingStyle(styleName); } mx_internal static function set stylesRoot(value:Object):void{ impl.stylesRoot = value; } mx_internal static function get inheritingStyles():Object{ return (impl.inheritingStyles); } mx_internal static function styleDeclarationsChanged():void{ impl.styleDeclarationsChanged(); } public static function setStyleDeclaration(selector:String, styleDeclaration:CSSStyleDeclaration, update:Boolean):void{ impl.setStyleDeclaration(selector, styleDeclaration, update); } public static function registerParentDisplayListInvalidatingStyle(styleName:String):void{ impl.registerParentDisplayListInvalidatingStyle(styleName); } mx_internal static function get typeSelectorCache():Object{ return (impl.typeSelectorCache); } mx_internal static function set inheritingStyles(value:Object):void{ impl.inheritingStyles = value; } public static function isColorName(colorName:String):Boolean{ return (impl.isColorName(colorName)); } public static function isParentDisplayListInvalidatingStyle(styleName:String):Boolean{ return (impl.isParentDisplayListInvalidatingStyle(styleName)); } public static function isSizeInvalidatingStyle(styleName:String):Boolean{ return (impl.isSizeInvalidatingStyle(styleName)); } public static function getColorName(colorName:Object):uint{ return (impl.getColorName(colorName)); } mx_internal static function set typeSelectorCache(value:Object):void{ impl.typeSelectorCache = value; } public static function unloadStyleDeclarations(url:String, update:Boolean=true):void{ impl.unloadStyleDeclarations(url, update); } public static function getColorNames(colors:Array):void{ impl.getColorNames(colors); } public static function loadStyleDeclarations(url:String, update:Boolean=true, trustContent:Boolean=false, applicationDomain:ApplicationDomain=null, securityDomain:SecurityDomain=null):IEventDispatcher{ return (impl.loadStyleDeclarations2(url, update, applicationDomain, securityDomain)); } private static function get impl():IStyleManager2{ if (!_impl){ _impl = IStyleManager2(Singleton.getInstance("mx.styles::IStyleManager2")); }; return (_impl); } public static function isValidStyleValue(value):Boolean{ return (impl.isValidStyleValue(value)); } mx_internal static function get stylesRoot():Object{ return (impl.stylesRoot); } public static function isInheritingStyle(styleName:String):Boolean{ return (impl.isInheritingStyle(styleName)); } mx_internal static function initProtoChainRoots():void{ impl.initProtoChainRoots(); } public static function registerParentSizeInvalidatingStyle(styleName:String):void{ impl.registerParentSizeInvalidatingStyle(styleName); } public static function get selectors():Array{ return (impl.selectors); } public static function registerSizeInvalidatingStyle(styleName:String):void{ impl.registerSizeInvalidatingStyle(styleName); } public static function clearStyleDeclaration(selector:String, update:Boolean):void{ impl.clearStyleDeclaration(selector, update); } public static function registerColorName(colorName:String, colorValue:uint):void{ impl.registerColorName(colorName, colorValue); } public static function isInheritingTextFormatStyle(styleName:String):Boolean{ return (impl.isInheritingTextFormatStyle(styleName)); } public static function getStyleDeclaration(selector:String):CSSStyleDeclaration{ return (impl.getStyleDeclaration(selector)); } } }//package mx.styles
Section 88
//StyleManagerImpl (mx.styles.StyleManagerImpl) package mx.styles { import flash.events.*; import mx.core.*; import flash.utils.*; import flash.system.*; import mx.modules.*; import mx.events.*; import mx.resources.*; import mx.managers.*; public class StyleManagerImpl implements IStyleManager2 { private var _stylesRoot:Object; private var _selectors:Object; private var styleModules:Object; private var _inheritingStyles:Object; private var resourceManager:IResourceManager; private var _typeSelectorCache:Object; mx_internal static const VERSION:String = "3.5.0.12683"; private static var parentSizeInvalidatingStyles:Object = {bottom:true, horizontalCenter:true, left:true, right:true, top:true, verticalCenter:true, baseline:true}; private static var colorNames:Object = {transparent:"transparent", black:0, blue:0xFF, green:0x8000, gray:0x808080, silver:0xC0C0C0, lime:0xFF00, olive:0x808000, white:0xFFFFFF, yellow:0xFFFF00, maroon:0x800000, navy:128, red:0xFF0000, purple:0x800080, teal:0x8080, fuchsia:0xFF00FF, aqua:0xFFFF, magenta:0xFF00FF, cyan:0xFFFF, halogreen:8453965, haloblue:40447, haloorange:0xFFB600, halosilver:11455193}; private static var inheritingTextFormatStyles:Object = {align:true, bold:true, color:true, font:true, indent:true, italic:true, size:true}; private static var instance:IStyleManager2; private static var parentDisplayListInvalidatingStyles:Object = {bottom:true, horizontalCenter:true, left:true, right:true, top:true, verticalCenter:true, baseline:true}; private static var sizeInvalidatingStyles:Object = {borderStyle:true, borderThickness:true, fontAntiAliasType:true, fontFamily:true, fontGridFitType:true, fontSharpness:true, fontSize:true, fontStyle:true, fontThickness:true, fontWeight:true, headerHeight:true, horizontalAlign:true, horizontalGap:true, kerning:true, leading:true, letterSpacing:true, paddingBottom:true, paddingLeft:true, paddingRight:true, paddingTop:true, strokeWidth:true, tabHeight:true, tabWidth:true, verticalAlign:true, verticalGap:true}; public function StyleManagerImpl(){ _selectors = {}; styleModules = {}; resourceManager = ResourceManager.getInstance(); _inheritingStyles = {}; _typeSelectorCache = {}; super(); } public function setStyleDeclaration(selector:String, styleDeclaration:CSSStyleDeclaration, update:Boolean):void{ styleDeclaration.selectorRefCount++; _selectors[selector] = styleDeclaration; typeSelectorCache = {}; if (update){ styleDeclarationsChanged(); }; } public function registerParentDisplayListInvalidatingStyle(styleName:String):void{ parentDisplayListInvalidatingStyles[styleName] = true; } public function getStyleDeclaration(selector:String):CSSStyleDeclaration{ var index:int; if (selector.charAt(0) != "."){ index = selector.lastIndexOf("."); if (index != -1){ selector = selector.substr((index + 1)); }; }; return (_selectors[selector]); } public function set typeSelectorCache(value:Object):void{ _typeSelectorCache = value; } public function isColorName(colorName:String):Boolean{ return (!((colorNames[colorName.toLowerCase()] === undefined))); } public function set inheritingStyles(value:Object):void{ _inheritingStyles = value; } public function getColorNames(colors:Array):void{ var colorNumber:uint; if (!colors){ return; }; var n:int = colors.length; var i:int; while (i < n) { if (((!((colors[i] == null))) && (isNaN(colors[i])))){ colorNumber = getColorName(colors[i]); if (colorNumber != StyleManager.NOT_A_COLOR){ colors[i] = colorNumber; }; }; i++; }; } public function isInheritingTextFormatStyle(styleName:String):Boolean{ return ((inheritingTextFormatStyles[styleName] == true)); } public function registerParentSizeInvalidatingStyle(styleName:String):void{ parentSizeInvalidatingStyles[styleName] = true; } public function registerColorName(colorName:String, colorValue:uint):void{ colorNames[colorName.toLowerCase()] = colorValue; } public function isParentSizeInvalidatingStyle(styleName:String):Boolean{ return ((parentSizeInvalidatingStyles[styleName] == true)); } public function registerInheritingStyle(styleName:String):void{ inheritingStyles[styleName] = true; } public function set stylesRoot(value:Object):void{ _stylesRoot = value; } public function get typeSelectorCache():Object{ return (_typeSelectorCache); } public function isParentDisplayListInvalidatingStyle(styleName:String):Boolean{ return ((parentDisplayListInvalidatingStyles[styleName] == true)); } public function isSizeInvalidatingStyle(styleName:String):Boolean{ return ((sizeInvalidatingStyles[styleName] == true)); } public function styleDeclarationsChanged():void{ var sm:Object; var sms:Array = SystemManagerGlobals.topLevelSystemManagers; var n:int = sms.length; var i:int; while (i < n) { sm = sms[i]; sm.regenerateStyleCache(true); sm.notifyStyleChangeInChildren(null, true); i++; }; } public function isValidStyleValue(value):Boolean{ return (!((value === undefined))); } public function loadStyleDeclarations(url:String, update:Boolean=true, trustContent:Boolean=false):IEventDispatcher{ return (loadStyleDeclarations2(url, update)); } public function get inheritingStyles():Object{ return (_inheritingStyles); } public function unloadStyleDeclarations(url:String, update:Boolean=true):void{ var module:IModuleInfo; var styleModuleInfo:StyleModuleInfo = styleModules[url]; if (styleModuleInfo){ styleModuleInfo.styleModule.unload(); module = styleModuleInfo.module; module.unload(); module.removeEventListener(ModuleEvent.READY, styleModuleInfo.readyHandler); module.removeEventListener(ModuleEvent.ERROR, styleModuleInfo.errorHandler); styleModules[url] = null; }; if (update){ styleDeclarationsChanged(); }; } public function getColorName(colorName:Object):uint{ var n:Number; var c:*; if ((colorName is String)){ if (colorName.charAt(0) == "#"){ n = Number(("0x" + colorName.slice(1))); return ((isNaN(n)) ? StyleManager.NOT_A_COLOR : uint(n)); }; if ((((colorName.charAt(1) == "x")) && ((colorName.charAt(0) == "0")))){ n = Number(colorName); return ((isNaN(n)) ? StyleManager.NOT_A_COLOR : uint(n)); }; c = colorNames[colorName.toLowerCase()]; if (c === undefined){ return (StyleManager.NOT_A_COLOR); }; return (uint(c)); }; return (uint(colorName)); } public function isInheritingStyle(styleName:String):Boolean{ return ((inheritingStyles[styleName] == true)); } public function get stylesRoot():Object{ return (_stylesRoot); } public function initProtoChainRoots():void{ if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0){ delete _inheritingStyles["textDecoration"]; delete _inheritingStyles["leading"]; }; if (!stylesRoot){ stylesRoot = _selectors["global"].addStyleToProtoChain({}, null); }; } public function loadStyleDeclarations2(url:String, update:Boolean=true, applicationDomain:ApplicationDomain=null, securityDomain:SecurityDomain=null):IEventDispatcher{ var module:IModuleInfo; var styleEventDispatcher:StyleEventDispatcher; var timer:Timer; var timerHandler:Function; var url = url; var update = update; var applicationDomain = applicationDomain; var securityDomain = securityDomain; module = ModuleManager.getModule(url); var readyHandler:Function = function (moduleEvent:ModuleEvent):void{ var styleModule:IStyleModule = IStyleModule(moduleEvent.module.factory.create()); styleModules[moduleEvent.module.url].styleModule = styleModule; if (update){ styleDeclarationsChanged(); }; }; module.addEventListener(ModuleEvent.READY, readyHandler, false, 0, true); styleEventDispatcher = new StyleEventDispatcher(module); var errorHandler:Function = function (moduleEvent:ModuleEvent):void{ var styleEvent:StyleEvent; var errorText:String = resourceManager.getString("styles", "unableToLoad", [moduleEvent.errorText, url]); if (styleEventDispatcher.willTrigger(StyleEvent.ERROR)){ styleEvent = new StyleEvent(StyleEvent.ERROR, moduleEvent.bubbles, moduleEvent.cancelable); styleEvent.bytesLoaded = 0; styleEvent.bytesTotal = 0; styleEvent.errorText = errorText; styleEventDispatcher.dispatchEvent(styleEvent); } else { throw (new Error(errorText)); }; }; module.addEventListener(ModuleEvent.ERROR, errorHandler, false, 0, true); styleModules[url] = new StyleModuleInfo(module, readyHandler, errorHandler); timer = new Timer(0); timerHandler = function (event:TimerEvent):void{ timer.removeEventListener(TimerEvent.TIMER, timerHandler); timer.stop(); module.load(applicationDomain, securityDomain); }; timer.addEventListener(TimerEvent.TIMER, timerHandler, false, 0, true); timer.start(); return (styleEventDispatcher); } public function registerSizeInvalidatingStyle(styleName:String):void{ sizeInvalidatingStyles[styleName] = true; } public function clearStyleDeclaration(selector:String, update:Boolean):void{ var styleDeclaration:CSSStyleDeclaration = getStyleDeclaration(selector); if (((styleDeclaration) && ((styleDeclaration.selectorRefCount > 0)))){ styleDeclaration.selectorRefCount--; }; delete _selectors[selector]; if (update){ styleDeclarationsChanged(); }; } public function get selectors():Array{ var i:String; var theSelectors:Array = []; for (i in _selectors) { theSelectors.push(i); }; return (theSelectors); } public static function getInstance():IStyleManager2{ if (!instance){ instance = new (StyleManagerImpl); }; return (instance); } } }//package mx.styles import flash.events.*; import mx.modules.*; import mx.events.*; class StyleEventDispatcher extends EventDispatcher { private function StyleEventDispatcher(moduleInfo:IModuleInfo){ super(); moduleInfo.addEventListener(ModuleEvent.ERROR, moduleInfo_errorHandler, false, 0, true); moduleInfo.addEventListener(ModuleEvent.PROGRESS, moduleInfo_progressHandler, false, 0, true); moduleInfo.addEventListener(ModuleEvent.READY, moduleInfo_readyHandler, false, 0, true); } private function moduleInfo_progressHandler(event:ModuleEvent):void{ var styleEvent:StyleEvent = new StyleEvent(StyleEvent.PROGRESS, event.bubbles, event.cancelable); styleEvent.bytesLoaded = event.bytesLoaded; styleEvent.bytesTotal = event.bytesTotal; dispatchEvent(styleEvent); } private function moduleInfo_readyHandler(event:ModuleEvent):void{ var styleEvent:StyleEvent = new StyleEvent(StyleEvent.COMPLETE); styleEvent.bytesLoaded = event.bytesLoaded; styleEvent.bytesTotal = event.bytesTotal; dispatchEvent(styleEvent); } private function moduleInfo_errorHandler(event:ModuleEvent):void{ var styleEvent:StyleEvent = new StyleEvent(StyleEvent.ERROR, event.bubbles, event.cancelable); styleEvent.bytesLoaded = event.bytesLoaded; styleEvent.bytesTotal = event.bytesTotal; styleEvent.errorText = event.errorText; dispatchEvent(styleEvent); } } class StyleModuleInfo { public var errorHandler:Function; public var readyHandler:Function; public var module:IModuleInfo; public var styleModule:IStyleModule; private function StyleModuleInfo(module:IModuleInfo, readyHandler:Function, errorHandler:Function){ super(); this.module = module; this.readyHandler = readyHandler; this.errorHandler = errorHandler; } }
Section 89
//ColorUtil (mx.utils.ColorUtil) package mx.utils { import mx.core.*; public class ColorUtil { mx_internal static const VERSION:String = "3.5.0.12683"; public function ColorUtil(){ super(); } public static function adjustBrightness2(rgb:uint, brite:Number):uint{ var r:Number; var g:Number; var b:Number; if (brite == 0){ return (rgb); }; if (brite < 0){ brite = ((100 + brite) / 100); r = (((rgb >> 16) & 0xFF) * brite); g = (((rgb >> 8) & 0xFF) * brite); b = ((rgb & 0xFF) * brite); } else { brite = (brite / 100); r = ((rgb >> 16) & 0xFF); g = ((rgb >> 8) & 0xFF); b = (rgb & 0xFF); r = (r + ((0xFF - r) * brite)); g = (g + ((0xFF - g) * brite)); b = (b + ((0xFF - b) * brite)); r = Math.min(r, 0xFF); g = Math.min(g, 0xFF); b = Math.min(b, 0xFF); }; return ((((r << 16) | (g << 8)) | b)); } public static function rgbMultiply(rgb1:uint, rgb2:uint):uint{ var r1:Number = ((rgb1 >> 16) & 0xFF); var g1:Number = ((rgb1 >> 8) & 0xFF); var b1:Number = (rgb1 & 0xFF); var r2:Number = ((rgb2 >> 16) & 0xFF); var g2:Number = ((rgb2 >> 8) & 0xFF); var b2:Number = (rgb2 & 0xFF); return ((((((r1 * r2) / 0xFF) << 16) | (((g1 * g2) / 0xFF) << 8)) | ((b1 * b2) / 0xFF))); } public static function adjustBrightness(rgb:uint, brite:Number):uint{ var r:Number = Math.max(Math.min((((rgb >> 16) & 0xFF) + brite), 0xFF), 0); var g:Number = Math.max(Math.min((((rgb >> 8) & 0xFF) + brite), 0xFF), 0); var b:Number = Math.max(Math.min(((rgb & 0xFF) + brite), 0xFF), 0); return ((((r << 16) | (g << 8)) | b)); } } }//package mx.utils
Section 90
//GraphicsUtil (mx.utils.GraphicsUtil) package mx.utils { import mx.core.*; import flash.display.*; public class GraphicsUtil { mx_internal static const VERSION:String = "3.5.0.12683"; public function GraphicsUtil(){ super(); } public static function drawRoundRectComplex(graphics:Graphics, x:Number, y:Number, width:Number, height:Number, topLeftRadius:Number, topRightRadius:Number, bottomLeftRadius:Number, bottomRightRadius:Number):void{ var xw:Number = (x + width); var yh:Number = (y + height); var minSize:Number = ((width < height)) ? (width * 2) : (height * 2); topLeftRadius = ((topLeftRadius < minSize)) ? topLeftRadius : minSize; topRightRadius = ((topRightRadius < minSize)) ? topRightRadius : minSize; bottomLeftRadius = ((bottomLeftRadius < minSize)) ? bottomLeftRadius : minSize; bottomRightRadius = ((bottomRightRadius < minSize)) ? bottomRightRadius : minSize; var a:Number = (bottomRightRadius * 0.292893218813453); var s:Number = (bottomRightRadius * 0.585786437626905); graphics.moveTo(xw, (yh - bottomRightRadius)); graphics.curveTo(xw, (yh - s), (xw - a), (yh - a)); graphics.curveTo((xw - s), yh, (xw - bottomRightRadius), yh); a = (bottomLeftRadius * 0.292893218813453); s = (bottomLeftRadius * 0.585786437626905); graphics.lineTo((x + bottomLeftRadius), yh); graphics.curveTo((x + s), yh, (x + a), (yh - a)); graphics.curveTo(x, (yh - s), x, (yh - bottomLeftRadius)); a = (topLeftRadius * 0.292893218813453); s = (topLeftRadius * 0.585786437626905); graphics.lineTo(x, (y + topLeftRadius)); graphics.curveTo(x, (y + s), (x + a), (y + a)); graphics.curveTo((x + s), y, (x + topLeftRadius), y); a = (topRightRadius * 0.292893218813453); s = (topRightRadius * 0.585786437626905); graphics.lineTo((xw - topRightRadius), y); graphics.curveTo((xw - s), y, (xw - a), (y + a)); graphics.curveTo(xw, (y + s), xw, (y + topRightRadius)); graphics.lineTo(xw, (yh - bottomRightRadius)); } } }//package mx.utils
Section 91
//NameUtil (mx.utils.NameUtil) package mx.utils { import mx.core.*; import flash.display.*; import flash.utils.*; public class NameUtil { mx_internal static const VERSION:String = "3.5.0.12683"; 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 92
//StringUtil (mx.utils.StringUtil) package mx.utils { import mx.core.*; public class StringUtil { mx_internal static const VERSION:String = "3.5.0.12683"; 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 93
//NewgroundsAPIAsset_FlashAd_Container_23 (NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23) package NewgroundsAPI_fla { import flash.events.*; import com.newgrounds.*; import flash.display.*; public dynamic class NewgroundsAPIAsset_FlashAd_Container_23 extends MovieClip { public var ngLinkButton:SimpleButton; public var adMask:MovieClip; public function NewgroundsAPIAsset_FlashAd_Container_23(){ addFrameScript(0, this.frame1, 10, this.frame11); } function frame1(){ this.ngLinkButton.addEventListener(MouseEvent.CLICK, this.onNGLinkClicked); } public function onNGLinkClicked(e:MouseEvent):void{ API.loadNewgrounds(); } function frame11(){ gotoAndPlay(1); } } }//package NewgroundsAPI_fla
Section 94
//NewgroundsAPIAsset_Load_Indicator_3 (NewgroundsAPI_fla.NewgroundsAPIAsset_Load_Indicator_3) package NewgroundsAPI_fla { import flash.events.*; import flash.display.*; public dynamic class NewgroundsAPIAsset_Load_Indicator_3 extends MovieClip { public function NewgroundsAPIAsset_Load_Indicator_3(){ addFrameScript(0, this.frame1); } function frame1(){ addEventListener(Event.ENTER_FRAME, this.onEnterFrame); } public function onEnterFrame(e:Event):void{ if (((visible) && (stage))){ rotation = (rotation + 30); } else { removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); }; } } }//package NewgroundsAPI_fla
Section 95
//FlxAnim (org.flixel.data.FlxAnim) package org.flixel.data { public class FlxAnim { public var delay:Number; public var frames:Array; public var looped:Boolean; public var name:String; public function FlxAnim(Name:String, Frames:Array, FrameRate:Number=0, Looped:Boolean=true){ super(); name = Name; delay = 0; if (FrameRate > 0){ delay = (1 / FrameRate); }; frames = Frames; looped = Looped; } } }//package org.flixel.data
Section 96
//FlxConsole (org.flixel.data.FlxConsole) package org.flixel.data { import org.flixel.*; import flash.display.*; import flash.text.*; public class FlxConsole extends Sprite { protected const MAX_CONSOLE_LINES:uint = 0x0100; protected var _lines:Array; public var lastElapsed:Number; protected var _text:TextField; protected var _fpsUpdate:Boolean; protected var _console:Sprite; protected var _Y:Number; protected var _curFPS:uint; protected var _fps:Array; protected var _bx:int; protected var _by:int; protected var _fpsDisplay:TextField; protected var _YT:Number; protected var _byt:int; public function FlxConsole(X:uint, Y:uint, Zoom:uint){ super(); visible = false; x = (X * Zoom); _by = (Y * Zoom); _byt = (_by - (FlxG.height * Zoom)); _YT = (_Y = (y = _byt)); var tmp:Bitmap = new Bitmap(new BitmapData((FlxG.width * Zoom), (FlxG.height * Zoom), true, 2130706432)); addChild(tmp); _fps = new Array(8); _curFPS = 0; _fpsUpdate = true; _text = new TextField(); _text.width = tmp.width; _text.height = tmp.height; _text.multiline = true; _text.wordWrap = true; _text.embedFonts = true; _text.antiAliasType = AntiAliasType.NORMAL; _text.gridFitType = GridFitType.PIXEL; _text.defaultTextFormat = new TextFormat("system", 8, 0xFFFFFF); addChild(_text); _fpsDisplay = new TextField(); _fpsDisplay.width = tmp.width; _fpsDisplay.height = 20; _fpsDisplay.multiline = true; _fpsDisplay.wordWrap = true; _fpsDisplay.embedFonts = true; _fpsDisplay.antiAliasType = AntiAliasType.NORMAL; _fpsDisplay.gridFitType = GridFitType.PIXEL; _fpsDisplay.defaultTextFormat = new TextFormat("system", 16, 0xFFFFFF, true, null, null, null, null, "right"); addChild(_fpsDisplay); _lines = new Array(); } public function log(Text:String):void{ var newText:String; var i:uint; if (Text == null){ Text = "NULL"; }; trace(Text); _lines.push(Text); if (_lines.length > MAX_CONSOLE_LINES){ _lines.shift(); newText = ""; i = 0; while (i < _lines.length) { newText = (newText + (_lines[i] + "\n")); i++; }; _text.text = newText; } else { _text.appendText((Text + "\n")); }; _text.scrollV = _text.height; } public function update():void{ var fps:uint; var i:uint; if (visible){ _fps[_curFPS] = (1 / lastElapsed); if (++_curFPS >= _fps.length){ _curFPS = 0; }; _fpsUpdate = !(_fpsUpdate); if (_fpsUpdate){ fps = 0; i = 0; while (i < _fps.length) { fps = (fps + _fps[i]); i++; }; _fpsDisplay.text = (Math.floor((fps / _fps.length)) + " fps"); }; }; if (_Y < _YT){ _Y = (_Y + ((FlxG.height * 10) * FlxG.elapsed)); } else { if (_Y > _YT){ _Y = (_Y - ((FlxG.height * 10) * FlxG.elapsed)); }; }; if (_Y > _by){ _Y = _by; } else { if (_Y < _byt){ _Y = _byt; visible = false; }; }; y = Math.floor(_Y); } public function toggle():void{ if (_YT == _by){ _YT = _byt; } else { _YT = _by; visible = true; }; } } }//package org.flixel.data
Section 97
//FlxFade (org.flixel.data.FlxFade) package org.flixel.data { import org.flixel.*; public class FlxFade extends FlxSprite { protected var _delay:Number; protected var _complete:Function; public function FlxFade(){ super(); createGraphic(FlxG.width, FlxG.height, 0, true); scrollFactor.x = 0; scrollFactor.y = 0; exists = false; } override public function update():void{ alpha = (alpha + (FlxG.elapsed / _delay)); if (alpha >= 1){ alpha = 1; if (_complete != null){ _complete(); }; }; } public function start(Color:uint=4278190080, Duration:Number=1, FadeComplete:Function=null, Force:Boolean=false):void{ if (((!(Force)) && (exists))){ return; }; fill(Color); _delay = Duration; _complete = FadeComplete; alpha = 0; exists = true; } public function stop():void{ exists = false; } } }//package org.flixel.data
Section 98
//FlxFlash (org.flixel.data.FlxFlash) package org.flixel.data { import org.flixel.*; public class FlxFlash extends FlxSprite { protected var _delay:Number; protected var _complete:Function; public function FlxFlash(){ super(); createGraphic(FlxG.width, FlxG.height, 0, true); scrollFactor.x = 0; scrollFactor.y = 0; exists = false; } override public function update():void{ alpha = (alpha - (FlxG.elapsed / _delay)); if (alpha <= 0){ exists = false; if (_complete != null){ _complete(); }; }; } public function start(Color:uint=4294967295, Duration:Number=1, FlashComplete:Function=null, Force:Boolean=false):void{ if (((!(Force)) && (exists))){ return; }; fill(Color); _delay = Duration; _complete = FlashComplete; alpha = 1; exists = true; } public function stop():void{ exists = false; } } }//package org.flixel.data
Section 99
//FlxKeyboard (org.flixel.data.FlxKeyboard) package org.flixel.data { import flash.events.*; public class FlxKeyboard { protected const _t:uint = 0x0100; public var RIGHT:Boolean; public var LEFT:Boolean; public var FOUR:Boolean; public var TWO:Boolean; public var CONTROL:Boolean; public var A:Boolean; public var B:Boolean; public var C:Boolean; public var D:Boolean; public var E:Boolean; public var ONE:Boolean; public var G:Boolean; public var H:Boolean; public var I:Boolean; public var J:Boolean; public var K:Boolean; public var F:Boolean; public var N:Boolean; public var O:Boolean; public var Q:Boolean; public var R:Boolean; public var S:Boolean; public var T:Boolean; public var U:Boolean; public var MINUS:Boolean; public var Y:Boolean; public var L:Boolean; public var Z:Boolean; public var QUOTE:Boolean; public var V:Boolean; public var X:Boolean; public var P:Boolean; public var SHIFT:Boolean; public var SLASH:Boolean; public var BACKSPACE:Boolean; public var EIGHT:Boolean; public var W:Boolean; public var M:Boolean; public var THREE:Boolean; public var ESCAPE:Boolean; public var SEMICOLON:Boolean; public var CAPSLOCK:Boolean; protected var _lookup:Object; public var PLUS:Boolean; protected var _map:Array; public var ZERO:Boolean; public var DOWN:Boolean; public var F1:Boolean; public var F2:Boolean; public var F3:Boolean; public var F4:Boolean; public var F5:Boolean; public var F6:Boolean; public var F7:Boolean; public var NINE:Boolean; public var F9:Boolean; public var ALT:Boolean; public var F8:Boolean; public var DELETE:Boolean; public var LBRACKET:Boolean; public var UP:Boolean; public var ENTER:Boolean; public var FIVE:Boolean; public var SIX:Boolean; public var COMMA:Boolean; public var PERIOD:Boolean; public var BACKSLASH:Boolean; public var F10:Boolean; public var F11:Boolean; public var F12:Boolean; public var SEVEN:Boolean; public var SPACE:Boolean; public var RBRACKET:Boolean; public function FlxKeyboard(){ super(); var i:uint; _lookup = new Object(); _map = new Array(_t); i = 65; while (i <= 90) { addKey(String.fromCharCode(i), i); i++; }; i = 48; var _temp1 = i; i = (i + 1); addKey("ZERO", _temp1); var _temp2 = i; i = (i + 1); addKey("ONE", _temp2); var _temp3 = i; i = (i + 1); addKey("TWO", _temp3); var _temp4 = i; i = (i + 1); addKey("THREE", _temp4); var _temp5 = i; i = (i + 1); addKey("FOUR", _temp5); var _temp6 = i; i = (i + 1); addKey("FIVE", _temp6); var _temp7 = i; i = (i + 1); addKey("SIX", _temp7); var _temp8 = i; i = (i + 1); addKey("SEVEN", _temp8); var _temp9 = i; i = (i + 1); addKey("EIGHT", _temp9); var _temp10 = i; i = (i + 1); addKey("NINE", _temp10); i = 1; while (i <= 12) { addKey(("F" + i), (111 + i)); i++; }; addKey("ESCAPE", 27); addKey("MINUS", 189); addKey("PLUS", 187); addKey("DELETE", 46); addKey("BACKSPACE", 8); addKey("LBRACKET", 219); addKey("RBRACKET", 221); addKey("BACKSLASH", 220); addKey("CAPSLOCK", 20); addKey("SEMICOLON", 186); addKey("QUOTE", 222); addKey("ENTER", 13); addKey("SHIFT", 16); addKey("COMMA", 188); addKey("PERIOD", 190); addKey("SLASH", 191); addKey("CONTROL", 17); addKey("ALT", 18); addKey("SPACE", 32); addKey("UP", 38); addKey("DOWN", 40); addKey("LEFT", 37); addKey("RIGHT", 39); } public function handleKeyUp(event:KeyboardEvent):void{ var o:Object = _map[event.keyCode]; if (o == null){ return; }; if (o.current > 0){ o.current = -1; } else { o.current = 0; }; this[o.name] = false; } public function pressed(Key:String):Boolean{ return (this[Key]); } public function justReleased(Key:String):Boolean{ return ((_map[_lookup[Key]].current == -1)); } public function handleKeyDown(event:KeyboardEvent):void{ var o:Object = _map[event.keyCode]; if (o == null){ return; }; if (o.current > 0){ o.current = 1; } else { o.current = 2; }; this[o.name] = true; } public function reset():void{ var o:Object; var i:uint; while (i < _t) { if (_map[i] == null){ } else { o = _map[i]; this[o.name] = false; o.current = 0; o.last = 0; }; i++; }; } public function justPressed(Key:String):Boolean{ return ((_map[_lookup[Key]].current == 2)); } public function update():void{ var o:Object; var i:uint; while (i < _t) { if (_map[i] == null){ } else { o = _map[i]; if ((((o.last == -1)) && ((o.current == -1)))){ o.current = 0; } else { if ((((o.last == 2)) && ((o.current == 2)))){ o.current = 1; }; }; o.last = o.current; }; i++; }; } protected function addKey(KeyName:String, KeyCode:uint):void{ _lookup[KeyName] = KeyCode; _map[KeyCode] = {name:KeyName, current:0, last:0}; } } }//package org.flixel.data
Section 100
//FlxKong (org.flixel.data.FlxKong) package org.flixel.data { import flash.events.*; import flash.display.*; import flash.net.*; public class FlxKong extends Sprite { public var API; public function FlxKong(){ super(); API = null; } public function init():void{ var paramObj:Object = LoaderInfo(root.loaderInfo).parameters; var api_url:String = ((paramObj.api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf")); var request:URLRequest = new URLRequest(api_url); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, APILoaded); loader.load(request); this.addChild(loader); } protected function APILoaded(event:Event):void{ API = event.target.content; API.services.connect(); } } }//package org.flixel.data
Section 101
//FlxList (org.flixel.data.FlxList) package org.flixel.data { import org.flixel.*; public class FlxList { public var next:FlxList; public var object:FlxObject; public function FlxList(){ super(); object = null; next = null; } } }//package org.flixel.data
Section 102
//FlxMouse (org.flixel.data.FlxMouse) package org.flixel.data { import org.flixel.*; import flash.events.*; public class FlxMouse { protected var ImgDefaultCursor:Class; protected var _out:Boolean; public var cursor:FlxSprite; public var screenY:int; protected var _last:int; public var x:int; public var y:int; protected var _current:int; public var screenX:int; public function FlxMouse(){ ImgDefaultCursor = FlxMouse_ImgDefaultCursor; super(); x = 0; y = 0; screenX = 0; screenY = 0; _current = 0; _last = 0; cursor = null; _out = false; } public function hide():void{ if (cursor != null){ cursor.visible = false; _out = false; }; } public function update(X:int, Y:int, XScroll:Number, YScroll:Number):void{ screenX = X; screenY = Y; x = (screenX - FlxU.floor(XScroll)); y = (screenY - FlxU.floor(YScroll)); if (cursor != null){ cursor.x = x; cursor.y = y; }; if ((((_last == -1)) && ((_current == -1)))){ _current = 0; } else { if ((((_last == 2)) && ((_current == 2)))){ _current = 1; }; }; _last = _current; } public function reset():void{ _current = 0; _last = 0; } public function justReleased():Boolean{ return ((_current == -1)); } public function handleMouseOver(event:MouseEvent):void{ if (cursor != null){ cursor.visible = _out; }; } public function handleMouseDown(event:MouseEvent):void{ if (_current > 0){ _current = 1; } else { _current = 2; }; } public function pressed():Boolean{ return ((_current > 0)); } public function justPressed():Boolean{ return ((_current == 2)); } public function load(Graphic:Class, XOffset:int=0, YOffset:int=0):void{ if (Graphic == null){ Graphic = ImgDefaultCursor; }; cursor = new FlxSprite(screenX, screenY, Graphic); cursor.offset.x = XOffset; cursor.offset.y = YOffset; } public function handleMouseUp(event:MouseEvent):void{ if (_current > 0){ _current = -1; } else { _current = 0; }; } public function handleMouseOut(event:MouseEvent):void{ if (cursor != null){ _out = cursor.visible; cursor.visible = false; }; } public function show(Graphic:Class=null, XOffset:int=0, YOffset:int=0):void{ _out = true; if (Graphic != null){ load(Graphic, XOffset, YOffset); } else { if (cursor != null){ cursor.visible = true; } else { load(null); }; }; } public function unload():void{ if (cursor != null){ if (cursor.visible){ load(null); } else { cursor = null; }; }; } } }//package org.flixel.data
Section 103
//FlxMouse_ImgDefaultCursor (org.flixel.data.FlxMouse_ImgDefaultCursor) package org.flixel.data { import mx.core.*; public class FlxMouse_ImgDefaultCursor extends BitmapAsset { } }//package org.flixel.data
Section 104
//FlxPanel (org.flixel.data.FlxPanel) package org.flixel.data { import org.flixel.*; import flash.ui.*; public class FlxPanel extends FlxObject { protected var _close:FlxButton; protected var _digg:FlxButton; protected var _gameTitle:String; protected var _closed:Boolean; protected var _payPalID:String; protected var _donate:FlxButton; private var ImgClose:Class; protected var _topBar:FlxSprite; protected var _ty:Number; protected var _caption:FlxText; protected var _initialized:Boolean; protected var _twitter:FlxButton; protected var _delicious:FlxButton; protected var _stumble:FlxButton; private var ImgDelicious:Class; private var ImgTwitter:Class; protected var _mainBar:FlxSprite; protected var _gameURL:String; private var ImgStumble:Class; private var ImgReddit:Class; private var ImgDigg:Class; protected var _bottomBar:FlxSprite; protected var _payPalAmount:Number; protected var _s:Number; private var ImgDonate:Class; protected var _reddit:FlxButton; public function FlxPanel(){ ImgDonate = FlxPanel_ImgDonate; ImgStumble = FlxPanel_ImgStumble; ImgDigg = FlxPanel_ImgDigg; ImgReddit = FlxPanel_ImgReddit; ImgDelicious = FlxPanel_ImgDelicious; ImgTwitter = FlxPanel_ImgTwitter; ImgClose = FlxPanel_ImgClose; super(); y = -21; _ty = y; _closed = false; _initialized = false; _topBar = new FlxSprite(); _topBar.createGraphic(FlxG.width, 1, 2147483647); _topBar.scrollFactor.x = 0; _topBar.scrollFactor.y = 0; _mainBar = new FlxSprite(); _mainBar.createGraphic(FlxG.width, 19, 2130706432); _mainBar.scrollFactor.x = 0; _mainBar.scrollFactor.y = 0; _bottomBar = new FlxSprite(); _bottomBar.createGraphic(FlxG.width, 1, 2147483647); _bottomBar.scrollFactor.x = 0; _bottomBar.scrollFactor.y = 0; _donate = new FlxButton(3, 0, onDonate); _donate.loadGraphic(new FlxSprite(0, 0, ImgDonate)); _donate.scrollFactor.x = 0; _donate.scrollFactor.y = 0; _stumble = new FlxButton(((((((FlxG.width / 2) - 6) - 13) - 6) - 13) - 6), 0, onStumble); _stumble.loadGraphic(new FlxSprite(0, 0, ImgStumble)); _stumble.scrollFactor.x = 0; _stumble.scrollFactor.y = 0; _digg = new FlxButton(((((FlxG.width / 2) - 6) - 13) - 6), 0, onDigg); _digg.loadGraphic(new FlxSprite(0, 0, ImgDigg)); _digg.scrollFactor.x = 0; _digg.scrollFactor.y = 0; _reddit = new FlxButton(((FlxG.width / 2) - 6), 0, onReddit); _reddit.loadGraphic(new FlxSprite(0, 0, ImgReddit)); _reddit.scrollFactor.x = 0; _reddit.scrollFactor.y = 0; _delicious = new FlxButton((((FlxG.width / 2) + 7) + 6), 0, onDelicious); _delicious.loadGraphic(new FlxSprite(0, 0, ImgDelicious)); _delicious.scrollFactor.x = 0; _delicious.scrollFactor.y = 0; _twitter = new FlxButton((((((FlxG.width / 2) + 7) + 6) + 12) + 6), 0, onTwitter); _twitter.loadGraphic(new FlxSprite(0, 0, ImgTwitter)); _twitter.scrollFactor.x = 0; _twitter.scrollFactor.y = 0; _caption = new FlxText((FlxG.width / 2), 0, ((FlxG.width / 2) - 19), ""); _caption.alignment = "right"; _caption.scrollFactor.x = 0; _caption.scrollFactor.y = 0; _close = new FlxButton((FlxG.width - 16), 0, onClose); _close.loadGraphic(new FlxSprite(0, 0, ImgClose)); _close.scrollFactor.x = 0; _close.scrollFactor.y = 0; hide(); _s = 50; } public function onDelicious():void{ FlxU.openURL(((("http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url=" + encodeURIComponent(_gameURL)) + "&amp;title=") + encodeURIComponent(_gameTitle))); } public function onTwitter():void{ FlxU.openURL(("http://twitter.com/home?status=Playing" + encodeURIComponent((((" " + _gameTitle) + " - ") + _gameURL)))); } public function setup(PayPalID:String, PayPalAmount:Number, GameTitle:String, GameURL:String, Caption:String):void{ _payPalID = PayPalID; if (_payPalID.length <= 0){ _donate.visible = false; }; _payPalAmount = PayPalAmount; _gameTitle = GameTitle; _gameURL = GameURL; _caption.text = Caption; _initialized = true; } public function onStumble():void{ FlxU.openURL(("http://www.stumbleupon.com/submit?url=" + encodeURIComponent(_gameURL))); } override public function render():void{ if (!_initialized){ return; }; if (_topBar.visible){ _topBar.render(); }; if (_mainBar.visible){ _mainBar.render(); }; if (_bottomBar.visible){ _bottomBar.render(); }; if (_donate.visible){ _donate.render(); }; if (_stumble.visible){ _stumble.render(); }; if (_digg.visible){ _digg.render(); }; if (_reddit.visible){ _reddit.render(); }; if (_delicious.visible){ _delicious.render(); }; if (_twitter.visible){ _twitter.render(); }; if (_caption.visible){ _caption.render(); }; if (_close.visible){ _close.render(); }; } public function onDigg():void{ FlxU.openURL(((("http://digg.com/submit?url=" + encodeURIComponent(_gameURL)) + "&title=") + encodeURIComponent(_gameTitle))); } public function onReddit():void{ FlxU.openURL(("http://www.reddit.com/submit?url=" + encodeURIComponent(_gameURL))); } public function onDonate():void{ FlxU.openURL(((((("https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=" + encodeURIComponent(_payPalID)) + "&item_name=") + encodeURIComponent(((_gameTitle + " Contribution (") + _gameURL))) + ")&currency_code=USD&amount=") + _payPalAmount)); } override public function update():void{ if (!_initialized){ return; }; if (_ty != y){ if (y < _ty){ y = (y + (FlxG.elapsed * _s)); if (y > _ty){ y = _ty; }; } else { y = (y - (FlxG.elapsed * _s)); if (y < _ty){ y = _ty; }; }; }; if ((((y <= -21)) || ((y > FlxG.height)))){ visible = false; }; _topBar.y = y; _mainBar.y = (y + 1); _bottomBar.y = (y + 20); _donate.y = (y + 4); _stumble.y = (y + 4); _digg.y = (y + 4); _reddit.y = (y + 4); _delicious.y = (y + 5); _twitter.y = (y + 4); _caption.y = (y + 4); _close.y = (y + 4); if (_donate.active){ _donate.update(); }; if (_stumble.active){ _stumble.update(); }; if (_digg.active){ _digg.update(); }; if (_reddit.active){ _reddit.update(); }; if (_delicious.active){ _delicious.update(); }; if (_twitter.active){ _twitter.update(); }; if (_caption.active){ _caption.update(); }; if (_close.active){ _close.update(); }; } public function show(Top:Boolean=true):void{ if (!_initialized){ FlxG.log("SUPPORT PANEL ERROR: Uninitialized.\nYou forgot to call FlxGame.setupSupportPanel()\nfrom your game constructor."); return; }; if (_closed){ return; }; if (Top){ y = -21; _ty = -1; } else { y = FlxG.height; _ty = (FlxG.height - 20); }; Mouse.show(); visible = true; } public function onClose():void{ _closed = true; hide(); } public function hide():void{ if (y < 0){ _ty = -21; } else { _ty = FlxG.height; }; Mouse.hide(); visible = false; } } }//package org.flixel.data
Section 105
//FlxPanel_ImgClose (org.flixel.data.FlxPanel_ImgClose) package org.flixel.data { import mx.core.*; public class FlxPanel_ImgClose extends BitmapAsset { } }//package org.flixel.data
Section 106
//FlxPanel_ImgDelicious (org.flixel.data.FlxPanel_ImgDelicious) package org.flixel.data { import mx.core.*; public class FlxPanel_ImgDelicious extends BitmapAsset { } }//package org.flixel.data
Section 107
//FlxPanel_ImgDigg (org.flixel.data.FlxPanel_ImgDigg) package org.flixel.data { import mx.core.*; public class FlxPanel_ImgDigg extends BitmapAsset { } }//package org.flixel.data
Section 108
//FlxPanel_ImgDonate (org.flixel.data.FlxPanel_ImgDonate) package org.flixel.data { import mx.core.*; public class FlxPanel_ImgDonate extends BitmapAsset { } }//package org.flixel.data
Section 109
//FlxPanel_ImgReddit (org.flixel.data.FlxPanel_ImgReddit) package org.flixel.data { import mx.core.*; public class FlxPanel_ImgReddit extends BitmapAsset { } }//package org.flixel.data
Section 110
//FlxPanel_ImgStumble (org.flixel.data.FlxPanel_ImgStumble) package org.flixel.data { import mx.core.*; public class FlxPanel_ImgStumble extends BitmapAsset { } }//package org.flixel.data
Section 111
//FlxPanel_ImgTwitter (org.flixel.data.FlxPanel_ImgTwitter) package org.flixel.data { import mx.core.*; public class FlxPanel_ImgTwitter extends BitmapAsset { } }//package org.flixel.data
Section 112
//FlxPause (org.flixel.data.FlxPause) package org.flixel.data { import org.flixel.*; public class FlxPause extends FlxGroup { private var ImgKeyP:Class; private var ImgKey0:Class; private var ImgKeyPlus:Class; private var ImgKeyMinus:Class; public function FlxPause(){ var w:uint; var h:uint; ImgKeyMinus = FlxPause_ImgKeyMinus; ImgKeyPlus = FlxPause_ImgKeyPlus; ImgKey0 = FlxPause_ImgKey0; ImgKeyP = FlxPause_ImgKeyP; super(); scrollFactor.x = 0; scrollFactor.y = 0; w = 80; h = 92; x = ((FlxG.width - w) / 2); y = ((FlxG.height - h) / 2); add(new FlxSprite().createGraphic(w, h, 2852126720, true), true); (add(new FlxText(0, 0, w, "this game is"), true) as FlxText).alignment = "center"; add(new FlxText(0, 10, w, "PAUSED").setFormat(null, 16, 0xFFFFFF, "center"), true); add(new FlxSprite(4, 36, ImgKeyP), true); add(new FlxText(16, 36, (w - 16), "Pause Game"), true); add(new FlxSprite(4, 50, ImgKey0), true); add(new FlxText(16, 50, (w - 16), "Mute Sound"), true); add(new FlxSprite(4, 64, ImgKeyMinus), true); add(new FlxText(16, 64, (w - 16), "Sound Down"), true); add(new FlxSprite(4, 78, ImgKeyPlus), true); add(new FlxText(16, 78, (w - 16), "Sound Up"), true); } } }//package org.flixel.data
Section 113
//FlxPause_ImgKey0 (org.flixel.data.FlxPause_ImgKey0) package org.flixel.data { import mx.core.*; public class FlxPause_ImgKey0 extends BitmapAsset { } }//package org.flixel.data
Section 114
//FlxPause_ImgKeyMinus (org.flixel.data.FlxPause_ImgKeyMinus) package org.flixel.data { import mx.core.*; public class FlxPause_ImgKeyMinus extends BitmapAsset { } }//package org.flixel.data
Section 115
//FlxPause_ImgKeyP (org.flixel.data.FlxPause_ImgKeyP) package org.flixel.data { import mx.core.*; public class FlxPause_ImgKeyP extends BitmapAsset { } }//package org.flixel.data
Section 116
//FlxPause_ImgKeyPlus (org.flixel.data.FlxPause_ImgKeyPlus) package org.flixel.data { import mx.core.*; public class FlxPause_ImgKeyPlus extends BitmapAsset { } }//package org.flixel.data
Section 117
//FlxQuake (org.flixel.data.FlxQuake) package org.flixel.data { import org.flixel.*; public class FlxQuake { public var y:int; protected var _timer:Number; protected var _intensity:Number; public var x:int; protected var _zoom:uint; public function FlxQuake(Zoom:uint){ super(); _zoom = Zoom; start(0); } public function update():void{ if (_timer > 0){ _timer = (_timer - FlxG.elapsed); if (_timer <= 0){ _timer = 0; x = 0; y = 0; } else { x = (((((Math.random() * _intensity) * FlxG.width) * 2) - (_intensity * FlxG.width)) * _zoom); y = (((((Math.random() * _intensity) * FlxG.height) * 2) - (_intensity * FlxG.height)) * _zoom); }; }; } public function start(Intensity:Number=0.05, Duration:Number=0.5):void{ stop(); _intensity = Intensity; _timer = Duration; } public function stop():void{ x = 0; y = 0; _intensity = 0; _timer = 0; } } }//package org.flixel.data
Section 118
//FlxButton (org.flixel.FlxButton) package org.flixel { import flash.events.*; public class FlxButton extends FlxGroup { protected var _on:FlxSprite; protected var _offT:FlxText; protected var _initialized:Boolean; protected var _onT:FlxText; protected var _pressed:Boolean; protected var _callback:Function; protected var _off:FlxSprite; protected var _onToggle:Boolean; protected var _sf:FlxPoint; public function FlxButton(X:int, Y:int, Callback:Function){ super(); x = X; y = Y; width = 100; height = 20; _off = new FlxSprite().createGraphic(width, height, 4286545791); _off.solid = false; add(_off, true); _on = new FlxSprite().createGraphic(width, height, 4294967295); _on.solid = false; add(_on, true); _offT = null; _onT = null; _callback = Callback; _onToggle = false; _pressed = false; _initialized = false; _sf = null; } protected function onMouseUp(event:MouseEvent):void{ if (((((((((!(exists)) || (!(visible)))) || (!(active)))) || (!(FlxG.mouse.justReleased())))) || ((_callback == null)))){ return; }; if (overlapsPoint(FlxG.mouse.x, FlxG.mouse.y)){ _callback(); }; } override public function update():void{ if (!_initialized){ if (FlxG.stage != null){ FlxG.stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); _initialized = true; }; }; super.update(); visibility(false); if (overlapsPoint(FlxG.mouse.x, FlxG.mouse.y)){ if (!FlxG.mouse.pressed()){ _pressed = false; } else { if (!_pressed){ _pressed = true; }; }; visibility(!(_pressed)); }; if (_onToggle){ visibility(_off.visible); }; } protected function visibility(On:Boolean):void{ if (On){ _off.visible = false; if (_offT != null){ _offT.visible = false; }; _on.visible = true; if (_onT != null){ _onT.visible = true; }; } else { _on.visible = false; if (_onT != null){ _onT.visible = false; }; _off.visible = true; if (_offT != null){ _offT.visible = true; }; }; } public function get on():Boolean{ return (_onToggle); } public function loadGraphic(Image:FlxSprite, ImageHighlight:FlxSprite=null):FlxButton{ _off = (replace(_off, Image) as FlxSprite); if (ImageHighlight == null){ if (_on != _off){ remove(_on); }; _on = _off; } else { _on = (replace(_on, ImageHighlight) as FlxSprite); }; _on.solid = (_off.solid = false); _off.scrollFactor = scrollFactor; _on.scrollFactor = scrollFactor; width = _off.width; height = _off.height; refreshHulls(); return (this); } public function loadText(Text:FlxText, TextHighlight:FlxText=null):FlxButton{ if (Text != null){ if (_offT == null){ _offT = Text; add(_offT); } else { _offT = (replace(_offT, Text) as FlxText); }; }; if (TextHighlight == null){ _onT = _offT; } else { if (_onT == null){ _onT = TextHighlight; add(_onT); } else { _onT = (replace(_onT, TextHighlight) as FlxText); }; }; _offT.scrollFactor = scrollFactor; _onT.scrollFactor = scrollFactor; return (this); } override public function destroy():void{ if (FlxG.stage != null){ FlxG.stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); }; } public function set on(On:Boolean):void{ _onToggle = On; } } }//package org.flixel
Section 119
//FlxEmitter (org.flixel.FlxEmitter) package org.flixel { public class FlxEmitter extends FlxGroup { public var maxRotation:Number; public var delay:Number; public var quantity:uint; protected var _timer:Number; public var gravity:Number; public var particleDrag:FlxPoint; public var maxParticleSpeed:FlxPoint; public var on:Boolean; protected var _explode:Boolean; protected var _particle:uint; public var minParticleSpeed:FlxPoint; public var minRotation:Number; protected var _counter:uint; public function FlxEmitter(X:Number=0, Y:Number=0){ super(); x = X; y = Y; width = 0; height = 0; minParticleSpeed = new FlxPoint(-100, -100); maxParticleSpeed = new FlxPoint(100, 100); minRotation = -360; maxRotation = 360; gravity = 400; particleDrag = new FlxPoint(); delay = 0.1; quantity = 0; _counter = 0; _explode = true; exists = false; on = false; } public function setRotation(Min:Number=0, Max:Number=0):void{ minRotation = Min; maxRotation = Max; } override public function update():void{ super.update(); updateEmitter(); } public function setYSpeed(Min:Number=0, Max:Number=0):void{ minParticleSpeed.y = Min; maxParticleSpeed.y = Max; } public function stop(Delay:Number=3):void{ _explode = true; delay = Delay; if (delay < 0){ delay = -(Delay); }; on = false; } public function setSize(Width:uint, Height:uint):void{ width = Width; height = Height; } public function at(Object:FlxObject):void{ x = (Object.x + Object.origin.x); y = (Object.y + Object.origin.y); } override protected function updateMembers():void{ var o:FlxObject; var l:uint = members.length; var i:uint; while (i < l) { o = (members[i] as FlxObject); if (((((!((o == null))) && (o.exists))) && (o.active))){ o.update(); }; i++; }; } public function start(Explode:Boolean=true, Delay:Number=0, Quantity:uint=0):void{ if (members.length <= 0){ FlxG.log("WARNING: there are no sprites loaded in your emitter.\nAdd some to FlxEmitter.members or use FlxEmitter.createSprites()."); return; }; _explode = Explode; if (!_explode){ _counter = 0; }; if (!exists){ _particle = 0; }; exists = true; visible = true; active = true; dead = false; on = true; _timer = 0; if (quantity == 0){ quantity = Quantity; }; if (Delay != 0){ delay = Delay; }; if (delay < 0){ delay = -(delay); }; } protected function updateEmitter():void{ var i:uint; var l:uint; if (_explode){ _timer = (_timer + FlxG.elapsed); if ((((delay > 0)) && ((_timer > delay)))){ kill(); return; }; if (on){ on = false; l = members.length; if (quantity > 0){ l = quantity; }; l = (l + _particle); i = _particle; while (i < l) { emitParticle(); i++; }; }; return; }; if (!on){ return; }; _timer = (_timer + FlxG.elapsed); while ((((_timer > delay)) && ((((quantity <= 0)) || ((_counter < quantity)))))) { _timer = (_timer - delay); emitParticle(); }; } override public function kill():void{ super.kill(); on = false; } public function setXSpeed(Min:Number=0, Max:Number=0):void{ minParticleSpeed.x = Min; maxParticleSpeed.x = Max; } public function createSprites(Graphics:Class, Quantity:uint=50, BakedRotations:uint=16, Multiple:Boolean=true, Collide:Number=0):FlxEmitter{ var r:uint; var s:FlxSprite; var sw:Number; var sh:Number; members = new Array(); var tf:uint = 1; if (Multiple){ s = new FlxSprite(0, 0, Graphics); tf = (s.width / s.height); }; var i:uint; while (i < Quantity) { s = new FlxSprite(); if (Multiple){ r = (FlxU.random() * tf); if (BakedRotations > 0){ s.loadRotatedGraphic(Graphics, BakedRotations, r); } else { s.loadGraphic(Graphics, true); s.frame = r; }; } else { if (BakedRotations > 0){ s.loadRotatedGraphic(Graphics, BakedRotations); } else { s.loadGraphic(Graphics); }; }; if (Collide > 0){ sw = s.width; sh = s.height; s.width = (s.width * Collide); s.height = (s.height * Collide); s.offset.x = ((sw - s.width) / 2); s.offset.y = ((sh - s.height) / 2); s.solid = true; } else { s.solid = false; }; s.exists = false; s.scrollFactor = scrollFactor; add(s); i++; }; return (this); } public function emitParticle():void{ _counter++; var s:FlxSprite = (members[_particle] as FlxSprite); s.visible = true; s.exists = true; s.active = true; s.x = ((x - (s.width >> 1)) + (FlxU.random() * width)); s.y = ((y - (s.height >> 1)) + (FlxU.random() * height)); s.velocity.x = minParticleSpeed.x; if (minParticleSpeed.x != maxParticleSpeed.x){ s.velocity.x = (s.velocity.x + (FlxU.random() * (maxParticleSpeed.x - minParticleSpeed.x))); }; s.velocity.y = minParticleSpeed.y; if (minParticleSpeed.y != maxParticleSpeed.y){ s.velocity.y = (s.velocity.y + (FlxU.random() * (maxParticleSpeed.y - minParticleSpeed.y))); }; s.acceleration.y = gravity; s.angularVelocity = minRotation; if (minRotation != maxRotation){ s.angularVelocity = (s.angularVelocity + (FlxU.random() * (maxRotation - minRotation))); }; if (s.angularVelocity != 0){ s.angle = ((FlxU.random() * 360) - 180); }; s.drag.x = particleDrag.x; s.drag.y = particleDrag.y; s.visible = true; _particle++; if (_particle >= members.length){ _particle = 0; }; s.onEmit(); } } }//package org.flixel
Section 120
//FlxG (org.flixel.FlxG) package org.flixel { import flash.display.*; import flash.geom.*; import org.flixel.data.*; public class FlxG { public static var panel:FlxPanel; protected static var _mute:Boolean; public static var kong:FlxKong; public static var scores:Array; public static var music:FlxSound; public static var height:uint; protected static var _volume:Number; public static var buffer:BitmapData; public static var sounds:Array; public static var debug:Boolean; public static var LIBRARY_MINOR_VERSION:uint = 23; public static var LIBRARY_MAJOR_VERSION:uint = 2; public static var levels:Array; public static var fade:FlxFade; public static var timeScale:Number; protected static var _cache:Object; public static var level:int; public static var elapsed:Number; public static var score:int; public static var save:int; public static var saves:Array; protected static var _scrollTarget:Point; public static var mouse:FlxMouse; public static var followTarget:FlxObject; public static var followLead:Point; public static var LIBRARY_NAME:String = "flixel"; public static var width:uint; public static var followLerp:Number; public static var scroll:Point; protected static var _game:FlxGame; public static var quake:FlxQuake; public static var followMin:Point; public static var flash:FlxFlash; public static var followMax:Point; public static var keys:FlxKeyboard; protected static var _pause:Boolean; public function FlxG(){ super(); } public static function get stage():Stage{ if (((!((_game._state == null))) && (!((_game._state.parent == null))))){ return (_game._state.parent.stage); }; return (null); } protected static function changeSounds():void{ var s:FlxSound; if (((!((music == null))) && (music.active))){ music.updateTransform(); }; var sl:uint = sounds.length; var i:uint; while (i < sl) { s = (sounds[i] as FlxSound); if (((!((s == null))) && (s.active))){ s.updateTransform(); }; i++; }; } public static function get mute():Boolean{ return (_mute); } public static function get volume():Number{ return (_volume); } static function doFollow():void{ if (followTarget != null){ _scrollTarget.x = ((((width >> 1) - followTarget.x) - (followTarget.width >> 1)) + (followTarget as FlxSprite).offset.x); _scrollTarget.y = ((((height >> 1) - followTarget.y) - (followTarget.height >> 1)) + (followTarget as FlxSprite).offset.y); if (((!((followLead == null))) && ((followTarget is FlxSprite)))){ _scrollTarget.x = (_scrollTarget.x - ((followTarget as FlxSprite).velocity.x * followLead.x)); _scrollTarget.y = (_scrollTarget.y - ((followTarget as FlxSprite).velocity.y * followLead.y)); }; scroll.x = (scroll.x + (((_scrollTarget.x - scroll.x) * followLerp) * FlxG.elapsed)); scroll.y = (scroll.y + (((_scrollTarget.y - scroll.y) * followLerp) * FlxG.elapsed)); if (followMin != null){ if (scroll.x > followMin.x){ scroll.x = followMin.x; }; if (scroll.y > followMin.y){ scroll.y = followMin.y; }; }; if (followMax != null){ if (scroll.x < followMax.x){ scroll.x = followMax.x; }; if (scroll.y < followMax.y){ scroll.y = followMax.y; }; }; }; } public static function getMuteValue():uint{ if (_mute){ return (0); }; return (1); } public static function addBitmap(Graphic:Class, Reverse:Boolean=false, Unique:Boolean=false, Key:String=null):BitmapData{ var inc:uint; var ukey:String; var newPixels:BitmapData; var mtx:Matrix; var needReverse:Boolean; var key:String = Key; if (key == null){ key = String(Graphic); if (((((Unique) && (!((_cache[key] == undefined))))) && (!((_cache[key] == null))))){ inc = 0; do { var _temp1 = inc; inc = (inc + 1); ukey = (key + _temp1); } while (((!((_cache[ukey] == undefined))) && (!((_cache[ukey] == null))))); key = ukey; }; }; if (!checkBitmapCache(key)){ _cache[key] = new (Graphic).bitmapData; if (Reverse){ needReverse = true; }; }; var pixels:BitmapData = _cache[key]; if (((((!(needReverse)) && (Reverse))) && ((pixels.width == new (Graphic).bitmapData.width)))){ needReverse = true; }; if (needReverse){ newPixels = new BitmapData((pixels.width << 1), pixels.height, true, 0); newPixels.draw(pixels); mtx = new Matrix(); mtx.scale(-1, 1); mtx.translate(newPixels.width, 0); newPixels.draw(pixels, mtx); pixels = newPixels; }; return (pixels); } public static function set state(State:FlxState):void{ _game.switchState(State); } public static function set mute(Mute:Boolean):void{ _mute = Mute; changeSounds(); } public static function play(EmbeddedSound:Class, Volume:Number=1, Looped:Boolean=false):FlxSound{ var sl:uint = sounds.length; var i:uint; while (i < sl) { if (!(sounds[i] as FlxSound).active){ break; }; i++; }; if (sounds[i] == null){ sounds[i] = new FlxSound(); }; var s:FlxSound = sounds[i]; s.loadEmbedded(EmbeddedSound, Looped); s.volume = Volume; s.play(); return (s); } public static function set volume(Volume:Number):void{ _volume = Volume; if (_volume < 0){ _volume = 0; } else { if (_volume > 1){ _volume = 1; }; }; changeSounds(); } static function setGameData(Game:FlxGame, Width:uint, Height:uint, Zoom:uint):void{ _game = Game; _cache = new Object(); width = Width; height = Height; _mute = false; _volume = 0.5; sounds = new Array(); mouse = new FlxMouse(); keys = new FlxKeyboard(); scroll = null; _scrollTarget = null; unfollow(); FlxG.levels = new Array(); FlxG.scores = new Array(); level = 0; score = 0; FlxU.seed = NaN; kong = null; pause = false; timeScale = 1; panel = new FlxPanel(); quake = new FlxQuake(Zoom); flash = new FlxFlash(); fade = new FlxFade(); FlxU.setWorldBounds(); } public static function playMusic(Music:Class, Volume:Number=1):void{ if (music == null){ music = new FlxSound(); } else { if (music.active){ music.stop(); }; }; music.loadEmbedded(Music, true); music.volume = Volume; music.survive = true; music.play(); } public static function createBitmap(Width:uint, Height:uint, Color:uint, Unique:Boolean=false, Key:String=null):BitmapData{ var inc:uint; var ukey:String; var key:String = Key; if (key == null){ key = ((((Width + "x") + Height) + ":") + Color); if (((((Unique) && (!((_cache[key] == undefined))))) && (!((_cache[key] == null))))){ inc = 0; do { var _temp1 = inc; inc = (inc + 1); ukey = (key + _temp1); } while (((!((_cache[ukey] == undefined))) && (!((_cache[ukey] == null))))); key = ukey; }; }; if (!checkBitmapCache(key)){ _cache[key] = new BitmapData(Width, Height, true, Color); }; return (_cache[key]); } public static function log(Data:Object):void{ if (((!((_game == null))) && (!((_game._console == null))))){ _game._console.log(((Data)==null) ? "ERROR: null object" : Data.toString()); }; } public static function checkBitmapCache(Key:String):Boolean{ return (((!((_cache[Key] == undefined))) && (!((_cache[Key] == null))))); } static function updateSounds():void{ var s:FlxSound; if (((!((music == null))) && (music.active))){ music.update(); }; var sl:uint = sounds.length; var i:uint; while (i < sl) { s = (sounds[i] as FlxSound); if (((!((s == null))) && (s.active))){ s.update(); }; i++; }; } static function updateInput():void{ keys.update(); mouse.update(state.mouseX, state.mouseY, scroll.x, scroll.y); } public static function stream(URL:String, Volume:Number=1, Looped:Boolean=false):FlxSound{ var sl:uint = sounds.length; var i:uint; while (i < sl) { if (!(sounds[i] as FlxSound).active){ break; }; i++; }; if (sounds[i] == null){ sounds[i] = new FlxSound(); }; var s:FlxSound = sounds[i]; s.loadStream(URL, Looped); s.volume = Volume; s.play(); return (s); } static function unfollow():void{ followTarget = null; followLead = null; followLerp = 1; followMin = null; followMax = null; if (scroll == null){ scroll = new Point(); } else { scroll.x = (scroll.y = 0); }; if (_scrollTarget == null){ _scrollTarget = new Point(); } else { _scrollTarget.x = (_scrollTarget.y = 0); }; } public static function get state():FlxState{ return (_game._state); } protected static function playSounds():void{ var s:FlxSound; if (((!((music == null))) && (music.active))){ music.play(); }; var sl:uint = sounds.length; var i:uint; while (i < sl) { s = (sounds[i] as FlxSound); if (((!((s == null))) && (s.active))){ s.play(); }; i++; }; } public static function followAdjust(LeadX:Number=0, LeadY:Number=0):void{ followLead = new Point(LeadX, LeadY); } public static function follow(Target:FlxObject, Lerp:Number=1):void{ followTarget = Target; followLerp = Lerp; _scrollTarget.x = ((((width >> 1) - followTarget.x) - (followTarget.width >> 1)) + (followTarget as FlxSprite).offset.x); _scrollTarget.y = ((((height >> 1) - followTarget.y) - (followTarget.height >> 1)) + (followTarget as FlxSprite).offset.y); scroll.x = _scrollTarget.x; scroll.y = _scrollTarget.y; doFollow(); } public static function resetInput():void{ keys.reset(); mouse.reset(); } public static function followBounds(MinX:int=0, MinY:int=0, MaxX:int=0, MaxY:int=0, UpdateWorldBounds:Boolean=true):void{ followMin = new Point(-(MinX), -(MinY)); followMax = new Point((-(MaxX) + width), (-(MaxY) + height)); if (followMax.x > followMin.x){ followMax.x = followMin.x; }; if (followMax.y > followMin.y){ followMax.y = followMin.y; }; if (UpdateWorldBounds){ FlxU.setWorldBounds(-(MinX), -(MinY), (-(MinX) + MaxX), (-(MinY) + MaxY)); }; doFollow(); } protected static function pauseSounds():void{ var s:FlxSound; if (((!((music == null))) && (music.active))){ music.pause(); }; var sl:uint = sounds.length; var i:uint; while (i < sl) { s = (sounds[i] as FlxSound); if (((!((s == null))) && (s.active))){ s.pause(); }; i++; }; } static function destroySounds(ForceDestroy:Boolean=false):void{ var s:FlxSound; if (sounds == null){ return; }; if (((!((music == null))) && (((ForceDestroy) || (!(music.survive)))))){ music.destroy(); }; var sl:uint = sounds.length; var i:uint; while (i < sl) { s = (sounds[i] as FlxSound); if (((!((s == null))) && (((ForceDestroy) || (!(s.survive)))))){ s.destroy(); }; i++; }; } public static function set pause(Pause:Boolean):void{ var op:Boolean = _pause; _pause = Pause; if (_pause != op){ if (_pause){ _game.pauseGame(); pauseSounds(); } else { _game.unpauseGame(); playSounds(); }; }; } public static function get pause():Boolean{ return (_pause); } } }//package org.flixel
Section 121
//FlxGame (org.flixel.FlxGame) package org.flixel { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import flash.text.*; import org.flixel.data.*; import flash.ui.*; public class FlxGame extends Sprite { const MAX_ELAPSED:Number = 0.0333; var _bmpFront:Bitmap; protected var SndFlixel:Class; var _state:FlxState; protected var SndBeep:Class; var _console:FlxConsole; var _created:Boolean; var _zoom:uint; var _gameXOffset:int; var _elapsed:Number; var _flipped:Boolean; var _total:uint; var _soundTrayBars:Array; public var useDefaultHotKeys:Boolean; protected var junk:String;// = "FlxGame_junk" var _zeroPoint:Point; var _bmpBack:Bitmap; var _iState:Class; var _paused:Boolean; var _gameYOffset:int; var _buffer:Sprite; var _soundTray:Sprite; var _frame:Class; var _r:Rectangle; public var pause:FlxGroup; var _soundTrayTimer:Number; public function FlxGame(GameSizeX:uint, GameSizeY:uint, InitialState:Class, Zoom:uint=2){ SndBeep = FlxGame_SndBeep; SndFlixel = FlxGame_SndFlixel; super(); Mouse.hide(); _zoom = Zoom; FlxState.bgColor = 4278190080; FlxG.setGameData(this, GameSizeX, GameSizeY, Zoom); _elapsed = 0; _total = 0; pause = new FlxPause(); _state = null; _iState = InitialState; _zeroPoint = new Point(); useDefaultHotKeys = true; _frame = null; _gameXOffset = 0; _gameYOffset = 0; _paused = false; _created = false; addEventListener(Event.ENTER_FRAME, onEnterFrame); } function pauseGame():void{ if (((!((x == 0))) || (!((y == 0))))){ x = 0; y = 0; }; if (!_flipped){ _bmpBack.bitmapData.copyPixels(_bmpFront.bitmapData, _r, _zeroPoint); } else { _bmpFront.bitmapData.copyPixels(_bmpBack.bitmapData, _r, _zeroPoint); }; Mouse.show(); _paused = true; stage.frameRate = 10; } function unpauseGame():void{ if (!FlxG.panel.visible){ Mouse.hide(); }; FlxG.resetInput(); _paused = false; stage.frameRate = 60; } protected function onFocus(event:Event=null):void{ if (FlxG.pause){ FlxG.pause = false; }; } protected function onKeyUp(event:KeyboardEvent):void{ var c:int; var code:String; if ((((event.keyCode == 192)) || ((event.keyCode == 220)))){ _console.toggle(); return; }; if (useDefaultHotKeys){ c = event.keyCode; code = String.fromCharCode(event.charCode); switch (c){ case 48: case 96: FlxG.mute = !(FlxG.mute); showSoundTray(); return; case 109: case 189: FlxG.mute = false; FlxG.volume = (FlxG.volume - 0.1); showSoundTray(); return; case 107: case 187: FlxG.mute = false; FlxG.volume = (FlxG.volume + 0.1); showSoundTray(); return; case 80: FlxG.pause = !(FlxG.pause); default: break; }; }; FlxG.keys.handleKeyUp(event); } public function switchState(State:FlxState):void{ FlxG.panel.hide(); FlxG.unfollow(); FlxG.resetInput(); FlxG.destroySounds(); FlxG.flash.stop(); FlxG.fade.stop(); FlxG.quake.stop(); _buffer.x = 0; _buffer.y = 0; _buffer.addChild(State); if (_state != null){ _state.destroy(); _buffer.swapChildren(State, _state); _buffer.removeChild(_state); }; _state = State; _state.create(); } protected function addFrame(Frame:Class, ScreenOffsetX:uint, ScreenOffsetY:uint):FlxGame{ _frame = Frame; _gameXOffset = ScreenOffsetX; _gameYOffset = ScreenOffsetY; return (this); } protected function onEnterFrame(event:Event):void{ var i:uint; var soundPrefs:FlxSave; var vstring:String; var underline:String; var tmp:Bitmap; var text:TextField; var bx:uint; var by:uint; var bmp:Bitmap; var t:uint = getTimer(); _elapsed = ((t - _total) / 1000); if (_created){ _console.lastElapsed = _elapsed; }; _total = t; FlxG.elapsed = _elapsed; if (FlxG.elapsed > MAX_ELAPSED){ FlxG.elapsed = MAX_ELAPSED; }; FlxG.elapsed = (FlxG.elapsed * FlxG.timeScale); if (_soundTray != null){ if (_soundTrayTimer > 0){ _soundTrayTimer = (_soundTrayTimer - _elapsed); } else { if (_soundTray.y > -(_soundTray.height)){ _soundTray.y = (_soundTray.y - ((_elapsed * FlxG.height) * 2)); if (_soundTray.y <= -(_soundTray.height)){ _soundTray.visible = false; soundPrefs = new FlxSave(); if (soundPrefs.bind("flixel")){ if (soundPrefs.data.sound == null){ soundPrefs.data.sound = new Object(); }; soundPrefs.data.mute = FlxG.mute; soundPrefs.data.volume = FlxG.volume; soundPrefs.forceSave(); }; }; }; }; }; if (_created){ FlxG.panel.update(); _console.update(); FlxG.updateInput(); FlxG.updateSounds(); if (_paused){ pause.update(); if (_flipped){ FlxG.buffer.copyPixels(_bmpFront.bitmapData, _r, _zeroPoint); } else { FlxG.buffer.copyPixels(_bmpBack.bitmapData, _r, _zeroPoint); }; pause.render(); } else { if (_flipped){ FlxG.buffer = _bmpFront.bitmapData; } else { FlxG.buffer = _bmpBack.bitmapData; }; FlxState.screen.unsafeBind(FlxG.buffer); _state.preProcess(); FlxG.doFollow(); _state.update(); if (FlxG.flash.exists){ FlxG.flash.update(); }; if (FlxG.fade.exists){ FlxG.fade.update(); }; FlxG.quake.update(); _buffer.x = FlxG.quake.x; _buffer.y = FlxG.quake.y; _state.render(); if (FlxG.flash.exists){ FlxG.flash.render(); }; if (FlxG.fade.exists){ FlxG.fade.render(); }; if (FlxG.panel.visible){ FlxG.panel.render(); }; if (FlxG.mouse.cursor != null){ if (FlxG.mouse.cursor.active){ FlxG.mouse.cursor.update(); }; if (FlxG.mouse.cursor.visible){ FlxG.mouse.cursor.render(); }; }; _state.postProcess(); _bmpBack.visible = !((_bmpFront.visible = _flipped)); _flipped = !(_flipped); }; } else { if (root != null){ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.frameRate = 60; _buffer = new Sprite(); _buffer.scaleX = _zoom; _buffer.scaleY = _zoom; addChild(_buffer); _bmpBack = new Bitmap(new BitmapData(FlxG.width, FlxG.height, true, FlxState.bgColor)); _bmpBack.x = _gameXOffset; _bmpBack.y = _gameYOffset; _buffer.addChild(_bmpBack); _bmpFront = new Bitmap(new BitmapData(_bmpBack.width, _bmpBack.height, true, FlxState.bgColor)); _bmpFront.x = _bmpBack.x; _bmpFront.y = _bmpBack.y; _buffer.addChild(_bmpFront); _flipped = false; _r = new Rectangle(0, 0, _bmpFront.width, _bmpFront.height); _console = new FlxConsole(_gameXOffset, _gameYOffset, _zoom); addChild(_console); vstring = ((((FlxG.LIBRARY_NAME + " v") + FlxG.LIBRARY_MAJOR_VERSION) + ".") + FlxG.LIBRARY_MINOR_VERSION); if (FlxG.debug){ vstring = (vstring + " [debug]"); } else { vstring = (vstring + " [release]"); }; underline = ""; i = 0; while (i < (vstring.length + 32)) { underline = (underline + "-"); i++; }; FlxG.log(vstring); FlxG.log(underline); stage.addEventListener(KeyboardEvent.KEY_DOWN, FlxG.keys.handleKeyDown); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); stage.addEventListener(MouseEvent.MOUSE_DOWN, FlxG.mouse.handleMouseDown); stage.addEventListener(MouseEvent.MOUSE_UP, FlxG.mouse.handleMouseUp); stage.addEventListener(MouseEvent.MOUSE_OUT, FlxG.mouse.handleMouseOut); stage.addEventListener(MouseEvent.MOUSE_OVER, FlxG.mouse.handleMouseOver); stage.addEventListener(Event.DEACTIVATE, onFocusLost); stage.addEventListener(Event.ACTIVATE, onFocus); _soundTray = new Sprite(); _soundTray.visible = false; _soundTray.scaleX = 2; _soundTray.scaleY = 2; tmp = new Bitmap(new BitmapData(80, 30, true, 2130706432)); _soundTray.x = (((_gameXOffset + (FlxG.width / 2)) * _zoom) - ((tmp.width / 2) * _soundTray.scaleX)); _soundTray.addChild(tmp); text = new TextField(); text.width = tmp.width; text.height = tmp.height; text.multiline = true; text.wordWrap = true; text.selectable = false; text.embedFonts = true; text.antiAliasType = AntiAliasType.NORMAL; text.gridFitType = GridFitType.PIXEL; text.defaultTextFormat = new TextFormat("system", 8, 0xFFFFFF, null, null, null, null, null, "center"); _soundTray.addChild(text); text.text = "VOLUME"; text.y = 16; bx = 10; by = 14; _soundTrayBars = new Array(); i = 0; while (i < 10) { tmp = new Bitmap(new BitmapData(4, (i + 1), false, 0xFFFFFF)); tmp.x = bx; tmp.y = by; _soundTrayBars.push(_soundTray.addChild(tmp)); bx = (bx + 6); by--; i++; }; addChild(_soundTray); if (_frame != null){ bmp = new _frame(); bmp.scaleX = _zoom; bmp.scaleY = _zoom; addChild(bmp); }; soundPrefs = new FlxSave(); if (((soundPrefs.bind("flixel")) && (!((soundPrefs.data.sound == null))))){ if (soundPrefs.data.volume != null){ FlxG.volume = soundPrefs.data.volume; }; if (soundPrefs.data.mute != null){ FlxG.mute = soundPrefs.data.mute; }; showSoundTray(true); }; _created = true; switchState(new _iState()); }; }; } public function showSoundTray(Silent:Boolean=false):void{ if (!Silent){ FlxG.play(SndBeep); }; _soundTrayTimer = 1; _soundTray.y = (_gameYOffset * _zoom); _soundTray.visible = true; var gv:uint = Math.round((FlxG.volume * 10)); if (FlxG.mute){ gv = 0; }; var i:uint; while (i < _soundTrayBars.length) { if (i < gv){ _soundTrayBars[i].alpha = 1; } else { _soundTrayBars[i].alpha = 0.5; }; i++; }; } protected function onFocusLost(event:Event=null):void{ FlxG.pause = true; } } }//package org.flixel
Section 122
//FlxGame_junk (org.flixel.FlxGame_junk) package org.flixel { import mx.core.*; public class FlxGame_junk extends FontAsset { } }//package org.flixel
Section 123
//FlxGame_SndBeep (org.flixel.FlxGame_SndBeep) package org.flixel { import mx.core.*; public class FlxGame_SndBeep extends SoundAsset { } }//package org.flixel
Section 124
//FlxGame_SndFlixel (org.flixel.FlxGame_SndFlixel) package org.flixel { import mx.core.*; public class FlxGame_SndFlixel extends SoundAsset { } }//package org.flixel
Section 125
//FlxGroup (org.flixel.FlxGroup) package org.flixel { public class FlxGroup extends FlxObject { public var members:Array; protected var _first:Boolean; protected var _last:FlxPoint; public function FlxGroup(){ super(); _group = true; solid = false; members = new Array(); _last = new FlxPoint(); _first = true; } public function getFirstExtant():FlxObject{ var o:FlxObject; var ml:uint = members.length; var i:uint; while (i < ml) { o = (members[i] as FlxObject); if (((!((o == null))) && (o.exists))){ return (o); }; i++; }; return (null); } override public function destroy():void{ destroyMembers(); super.destroy(); } public function getFirstAlive():FlxObject{ var o:FlxObject; var ml:uint = members.length; var i:uint; while (i < ml) { o = (members[i] as FlxObject); if (((((!((o == null))) && (o.exists))) && (!(o.dead)))){ return (o); }; i++; }; return (null); } public function remove(Object:FlxObject, Splice:Boolean=false):FlxObject{ var index:int = members.indexOf(Object); if ((((index < 0)) || ((index >= members.length)))){ return (null); }; if (Splice){ members.splice(index, 1); } else { members[index] = null; }; return (Object); } override public function update():void{ saveOldPosition(); updateMotion(); updateMembers(); updateFlickering(); } public function resetFirstAvail(X:Number=0, Y:Number=0):Boolean{ var o:FlxObject = getFirstAvail(); if (o == null){ return (false); }; o.reset(X, Y); return (true); } override public function reset(X:Number, Y:Number):void{ var mx:Number; var my:Number; var o:FlxObject; saveOldPosition(); super.reset(X, Y); var moved:Boolean; if (((!((x == _last.x))) || (!((y == _last.y))))){ moved = true; mx = (x - _last.x); my = (y - _last.y); }; var l:uint = members.length; var i:uint; while (i < l) { o = (members[i] as FlxObject); if (((!((o == null))) && (o.exists))){ if (moved){ if (o._group){ o.reset((o.x + mx), (o.y + my)); } else { o.x = (o.x + mx); o.y = (o.y + my); if (solid){ o.colHullX.width = (o.colHullX.width + ((mx)>0) ? mx : -(mx)); if (mx < 0){ o.colHullX.x = (o.colHullX.x + mx); }; o.colHullY.x = x; o.colHullY.height = (o.colHullY.height + ((my)>0) ? my : -(my)); if (my < 0){ o.colHullY.y = (o.colHullY.y + my); }; o.colVector.x = (o.colVector.x + mx); o.colVector.y = (o.colVector.y + my); }; }; }; }; i++; }; } protected function updateMembers():void{ var mx:Number; var my:Number; var o:FlxObject; var moved:Boolean; if (((!((x == _last.x))) || (!((y == _last.y))))){ moved = true; mx = (x - _last.x); my = (y - _last.y); }; var l:uint = members.length; var i:uint; while (i < l) { o = (members[i] as FlxObject); if (((!((o == null))) && (o.exists))){ if (moved){ if (o._group){ o.reset((o.x + mx), (o.y + my)); } else { o.x = (o.x + mx); o.y = (o.y + my); }; }; if (o.active){ o.update(); }; if (((moved) && (o.solid))){ o.colHullX.width = (o.colHullX.width + ((mx)>0) ? mx : -(mx)); if (mx < 0){ o.colHullX.x = (o.colHullX.x + mx); }; o.colHullY.x = x; o.colHullY.height = (o.colHullY.height + ((my)>0) ? my : -(my)); if (my < 0){ o.colHullY.y = (o.colHullY.y + my); }; o.colVector.x = (o.colVector.x + mx); o.colVector.y = (o.colVector.y + my); }; }; i++; }; } public function countDead():int{ var o:FlxObject; var count = -1; var ml:uint = members.length; var i:uint; while (i < ml) { o = (members[i] as FlxObject); if (o != null){ if (count < 0){ count = 0; }; if (o.dead){ count++; }; }; i++; }; return (count); } public function getFirstAvail():FlxObject{ var o:FlxObject; var ml:uint = members.length; var i:uint; while (i < ml) { o = (members[i] as FlxObject); if (((!((o == null))) && (!(o.exists)))){ return (o); }; i++; }; return (null); } override public function render():void{ renderMembers(); } public function countLiving():int{ var o:FlxObject; var count = -1; var ml:uint = members.length; var i:uint; while (i < ml) { o = (members[i] as FlxObject); if (o != null){ if (count < 0){ count = 0; }; if (((o.exists) && (!(o.dead)))){ count++; }; }; i++; }; return (count); } public function countOnScreen():int{ var o:FlxObject; var count = -1; var ml:uint = members.length; var i:uint; while (i < ml) { o = (members[i] as FlxObject); if (o != null){ if (count < 0){ count = 0; }; if (o.onScreen()){ count++; }; }; i++; }; return (count); } protected function killMembers():void{ var o:FlxObject; var l:uint = members.length; var i:uint; while (i < l) { o = (members[i] as FlxObject); if (o != null){ o.kill(); }; i++; }; } override public function kill():void{ killMembers(); super.kill(); } public function getFirstNull():int{ var ml:uint = members.length; var i:uint; while (i < ml) { if (members[i] == null){ return (i); }; i++; }; return (-1); } protected function renderMembers():void{ var o:FlxObject; var l:uint = members.length; var i:uint; while (i < l) { o = (members[i] as FlxObject); if (((((!((o == null))) && (o.exists))) && (o.visible))){ o.render(); }; i++; }; } public function add(Object:FlxObject, ShareScroll:Boolean=false):FlxObject{ members.push(Object); if (ShareScroll){ Object.scrollFactor = scrollFactor; }; return (Object); } protected function saveOldPosition():void{ if (_first){ _first = false; _last.x = 0; _last.y = 0; return; }; _last.x = x; _last.y = y; } public function replace(OldObject:FlxObject, NewObject:FlxObject):FlxObject{ var index:int = members.indexOf(OldObject); if ((((index < 0)) || ((index >= members.length)))){ return (null); }; members[index] = NewObject; return (NewObject); } public function getRandom():FlxObject{ var c:uint; var o:FlxObject; var l:uint = members.length; var i:uint = uint((FlxU.random() * l)); while ((((o == null)) && ((c < members.length)))) { ++i; o = (members[(i % l)] as FlxObject); c++; }; return (o); } public function getFirstDead():FlxObject{ var o:FlxObject; var ml:uint = members.length; var i:uint; while (i < ml) { o = (members[i] as FlxObject); if (((!((o == null))) && (o.dead))){ return (o); }; i++; }; return (null); } protected function destroyMembers():void{ var o:FlxObject; var l:uint = members.length; var i:uint; while (i < l) { o = (members[i] as FlxObject); if (o != null){ o.destroy(); }; i++; }; members.length = 0; } } }//package org.flixel
Section 126
//FlxObject (org.flixel.FlxObject) package org.flixel { import flash.geom.*; public class FlxObject extends FlxRect { public var acceleration:FlxPoint; public var angularAcceleration:Number; public var active:Boolean; public var collideBottom:Boolean; var _group:Boolean; protected var _point:FlxPoint; public var colHullX:FlxRect; protected var _flickerTimer:Number; public var colHullY:FlxRect; protected var _flashPoint:Point; public var colOffsets:Array; public var solid:Boolean; public var origin:FlxPoint; public var drag:FlxPoint; public var angularDrag:Number; public var collideTop:Boolean; protected var _flicker:Boolean; protected var _rect:FlxRect; public var moves:Boolean; public var angle:Number; public var thrust:Number; public var health:Number; public var velocity:FlxPoint; public var maxAngular:Number; public var angularVelocity:Number; public var maxVelocity:FlxPoint; public var exists:Boolean; public var collideLeft:Boolean; public var colVector:FlxPoint; public var maxThrust:Number; public var onFloor:Boolean; public var dead:Boolean; public var fixed:Boolean; public var visible:Boolean; public var scrollFactor:FlxPoint; public var collideRight:Boolean; protected static const _pZero:FlxPoint = new FlxPoint(); public function FlxObject(X:Number=0, Y:Number=0, Width:Number=0, Height:Number=0){ super(X, Y, Width, Height); exists = true; active = true; visible = true; solid = true; fixed = false; moves = true; collideLeft = true; collideRight = true; collideTop = true; collideBottom = true; origin = new FlxPoint(); velocity = new FlxPoint(); acceleration = new FlxPoint(); drag = new FlxPoint(); maxVelocity = new FlxPoint(10000, 10000); angle = 0; angularVelocity = 0; angularAcceleration = 0; angularDrag = 0; maxAngular = 10000; thrust = 0; scrollFactor = new FlxPoint(1, 1); _flicker = false; _flickerTimer = -1; health = 1; dead = false; _point = new FlxPoint(); _rect = new FlxRect(); _flashPoint = new Point(); colHullX = new FlxRect(); colHullY = new FlxRect(); colVector = new FlxPoint(); colOffsets = new Array(new FlxPoint()); _group = false; } public function onScreen():Boolean{ getScreenXY(_point); if (((((((((_point.x + width) < 0)) || ((_point.x > FlxG.width)))) || (((_point.y + height) < 0)))) || ((_point.y > FlxG.height)))){ return (false); }; return (true); } public function kill():void{ exists = false; dead = true; } protected function updateFlickering():void{ if (flickering()){ if (_flickerTimer > 0){ _flickerTimer = (_flickerTimer - FlxG.elapsed); if (_flickerTimer == 0){ _flickerTimer = -1; }; }; if (_flickerTimer < 0){ flicker(-1); } else { _flicker = !(_flicker); visible = !(_flicker); }; }; } public function render():void{ } public function hitBottom(Contact:FlxObject, Velocity:Number):void{ onFloor = true; if (!fixed){ velocity.y = Velocity; }; } public function overlaps(Object:FlxObject):Boolean{ var ts:FlxSprite; var os:FlxSprite; getScreenXY(_point); var tx:Number = _point.x; var ty:Number = _point.y; var tw:Number = width; var th:Number = height; if ((this is FlxSprite)){ ts = (this as FlxSprite); tw = ts.frameWidth; th = ts.frameHeight; }; Object.getScreenXY(_point); var ox:Number = _point.x; var oy:Number = _point.y; var ow:Number = Object.width; var oh:Number = Object.height; if ((Object is FlxSprite)){ os = (Object as FlxSprite); ow = os.frameWidth; oh = os.frameHeight; }; if ((((((((ox <= (tx - ow))) || ((ox >= (tx + tw))))) || ((oy <= (ty - oh))))) || ((oy >= (ty + th))))){ return (false); }; return (true); } public function overlapsPoint(X:Number, Y:Number, PerPixel:Boolean=false):Boolean{ X = (X + FlxU.floor(FlxG.scroll.x)); Y = (Y + FlxU.floor(FlxG.scroll.y)); getScreenXY(_point); if ((((((((X <= _point.x)) || ((X >= (_point.x + width))))) || ((Y <= _point.y)))) || ((Y >= (_point.y + height))))){ return (false); }; return (true); } public function hurt(Damage:Number):void{ if ((health = (health - Damage)) <= 0){ kill(); }; } public function refreshHulls():void{ colHullX.x = x; colHullX.y = y; colHullX.width = width; colHullX.height = height; colHullY.x = x; colHullY.y = y; colHullY.width = width; colHullY.height = height; } public function preCollide(Object:FlxObject):void{ } public function hitLeft(Contact:FlxObject, Velocity:Number):void{ if (!fixed){ velocity.x = Velocity; }; } public function collide(Object:FlxObject=null):Boolean{ return (FlxU.collide(this, ((Object)==null) ? this : Object)); } public function reset(X:Number, Y:Number):void{ x = X; y = Y; exists = true; dead = false; } public function update():void{ updateMotion(); updateFlickering(); } public function hitTop(Contact:FlxObject, Velocity:Number):void{ if (!fixed){ velocity.y = Velocity; }; } protected function updateMotion():void{ var thrustComponents:FlxPoint; var maxComponents:FlxPoint; var max:Number; if (!moves){ return; }; if (solid){ refreshHulls(); }; onFloor = false; angle = (angle + ((angularVelocity = FlxU.computeVelocity(angularVelocity, angularAcceleration, angularDrag, maxAngular)) * FlxG.elapsed)); if (thrust != 0){ thrustComponents = FlxU.rotatePoint(-(thrust), 0, 0, 0, angle); maxComponents = FlxU.rotatePoint(-(maxThrust), 0, 0, 0, angle); max = ((maxComponents.x)>0) ? maxComponents.x : -(maxComponents.x); if (max > ((maxComponents.y)>0) ? maxComponents.y : -(maxComponents.y)){ maxComponents.y = max; } else { max = ((maxComponents.y)>0) ? maxComponents.y : -(maxComponents.y); }; maxVelocity.x = (maxVelocity.y = ((max)>0) ? max : -(max)); } else { thrustComponents = _pZero; }; velocity.x = FlxU.computeVelocity(velocity.x, (acceleration.x + thrustComponents.x), drag.x, maxVelocity.x); velocity.y = FlxU.computeVelocity(velocity.y, (acceleration.y + thrustComponents.y), drag.y, maxVelocity.y); var xd:Number = (velocity.x * FlxG.elapsed); var yd:Number = (velocity.y * FlxG.elapsed); x = (x + xd); y = (y + yd); if (!solid){ return; }; colVector.x = xd; colVector.y = yd; colHullX.width = (colHullX.width + ((colVector.x)>0) ? colVector.x : -(colVector.x)); if (colVector.x < 0){ colHullX.x = (colHullX.x + colVector.x); }; colHullY.x = x; colHullY.height = (colHullY.height + ((colVector.y)>0) ? colVector.y : -(colVector.y)); if (colVector.y < 0){ colHullY.y = (colHullY.y + colVector.y); }; } public function flickering():Boolean{ return ((_flickerTimer >= 0)); } public function hitRight(Contact:FlxObject, Velocity:Number):void{ hitLeft(Contact, Velocity); } public function destroy():void{ } public function getScreenXY(Point:FlxPoint=null):FlxPoint{ if (Point == null){ Point = new FlxPoint(); }; Point.x = (FlxU.floor((x + FlxU.roundingError)) + FlxU.floor((FlxG.scroll.x * scrollFactor.x))); Point.y = (FlxU.floor((y + FlxU.roundingError)) + FlxU.floor((FlxG.scroll.y * scrollFactor.y))); return (Point); } public function flicker(Duration:Number=1):void{ _flickerTimer = Duration; if (_flickerTimer < 0){ _flicker = false; visible = true; }; } } }//package org.flixel
Section 127
//FlxPoint (org.flixel.FlxPoint) package org.flixel { public class FlxPoint { public var x:Number; public var y:Number; public function FlxPoint(X:Number=0, Y:Number=0){ super(); x = X; y = Y; } public function toString():String{ return (FlxU.getClassName(this, true)); } } }//package org.flixel
Section 128
//FlxQuadTree (org.flixel.FlxQuadTree) package org.flixel { import org.flixel.data.*; public class FlxQuadTree extends FlxRect { protected var _sw:FlxQuadTree; protected var _mx:Number; protected var _my:Number; protected var _ne:FlxQuadTree; protected var _hh:Number; protected var _headA:FlxList; protected var _headB:FlxList; protected var _canSubdivide:Boolean; protected var _l:Number; protected var _hw:Number; protected var _nw:FlxQuadTree; protected var _se:FlxQuadTree; protected var _tailA:FlxList; protected var _r:Number; protected var _t:Number; protected var _tailB:FlxList; protected var _b:Number; public static const A_LIST:uint = 0; public static const MIN:Number = 48; public static const B_LIST:uint = 1; protected static var _ot:Number; protected static var _or:Number; protected static var _o:FlxObject; protected static var _oa:uint; protected static var _oc:Function; protected static var _ob:Number; protected static var _ol:Number; public function FlxQuadTree(X:Number, Y:Number, Width:Number, Height:Number, Parent:FlxQuadTree=null){ var itr:FlxList; var ot:FlxList; super(X, Y, Width, Height); _canSubdivide = (((Width > MIN)) || ((Height > MIN))); _headA = (_tailA = new FlxList()); _headB = (_tailB = new FlxList()); if (Parent){ if (Parent._headA.object != null){ itr = Parent._headA; while (itr != null) { if (_tailA.object != null){ ot = _tailA; _tailA = new FlxList(); ot.next = _tailA; }; _tailA.object = itr.object; itr = itr.next; }; }; if (Parent._headB.object != null){ itr = Parent._headB; while (itr != null) { if (_tailB.object != null){ ot = _tailB; _tailB = new FlxList(); ot.next = _tailB; }; _tailB.object = itr.object; itr = itr.next; }; }; }; _nw = null; _ne = null; _se = null; _sw = null; _l = x; _r = (x + width); _hw = (width / 2); _mx = (_l + _hw); _t = y; _b = (y + height); _hh = (height / 2); _my = (_t + _hh); } protected function addObject():void{ if (((!(_canSubdivide)) || ((((((((_l >= _ol)) && ((_r <= _or)))) && ((_t >= _ot)))) && ((_b <= _ob)))))){ addToList(); return; }; if ((((_ol > _l)) && ((_or < _mx)))){ if ((((_ot > _t)) && ((_ob < _my)))){ if (_nw == null){ _nw = new FlxQuadTree(_l, _t, _hw, _hh, this); }; _nw.addObject(); return; }; if ((((_ot > _my)) && ((_ob < _b)))){ if (_sw == null){ _sw = new FlxQuadTree(_l, _my, _hw, _hh, this); }; _sw.addObject(); return; }; }; if ((((_ol > _mx)) && ((_or < _r)))){ if ((((_ot > _t)) && ((_ob < _my)))){ if (_ne == null){ _ne = new FlxQuadTree(_mx, _t, _hw, _hh, this); }; _ne.addObject(); return; }; if ((((_ot > _my)) && ((_ob < _b)))){ if (_se == null){ _se = new FlxQuadTree(_mx, _my, _hw, _hh, this); }; _se.addObject(); return; }; }; if ((((((((_or > _l)) && ((_ol < _mx)))) && ((_ob > _t)))) && ((_ot < _my)))){ if (_nw == null){ _nw = new FlxQuadTree(_l, _t, _hw, _hh, this); }; _nw.addObject(); }; if ((((((((_or > _mx)) && ((_ol < _r)))) && ((_ob > _t)))) && ((_ot < _my)))){ if (_ne == null){ _ne = new FlxQuadTree(_mx, _t, _hw, _hh, this); }; _ne.addObject(); }; if ((((((((_or > _mx)) && ((_ol < _r)))) && ((_ob > _my)))) && ((_ot < _b)))){ if (_se == null){ _se = new FlxQuadTree(_mx, _my, _hw, _hh, this); }; _se.addObject(); }; if ((((((((_or > _l)) && ((_ol < _mx)))) && ((_ob > _my)))) && ((_ot < _b)))){ if (_sw == null){ _sw = new FlxQuadTree(_l, _my, _hw, _hh, this); }; _sw.addObject(); }; } protected function addToList():void{ var ot:FlxList; if (_oa == A_LIST){ if (_tailA.object != null){ ot = _tailA; _tailA = new FlxList(); ot.next = _tailA; }; _tailA.object = _o; } else { if (_tailB.object != null){ ot = _tailB; _tailB = new FlxList(); ot.next = _tailB; }; _tailB.object = _o; }; if (!_canSubdivide){ return; }; if (_nw != null){ _nw.addToList(); }; if (_ne != null){ _ne.addToList(); }; if (_se != null){ _se.addToList(); }; if (_sw != null){ _sw.addToList(); }; } public function overlap(BothLists:Boolean=true, Callback:Function=null):Boolean{ var itr:FlxList; _oc = Callback; var c:Boolean; if (BothLists){ _oa = B_LIST; if (_headA.object != null){ itr = _headA; while (itr != null) { _o = itr.object; if (((((_o.exists) && (_o.solid))) && (overlapNode()))){ c = true; }; itr = itr.next; }; }; _oa = A_LIST; if (_headB.object != null){ itr = _headB; while (itr != null) { _o = itr.object; if (((_o.exists) && (_o.solid))){ if (((!((_nw == null))) && (_nw.overlapNode()))){ c = true; }; if (((!((_ne == null))) && (_ne.overlapNode()))){ c = true; }; if (((!((_se == null))) && (_se.overlapNode()))){ c = true; }; if (((!((_sw == null))) && (_sw.overlapNode()))){ c = true; }; }; itr = itr.next; }; }; } else { if (_headA.object != null){ itr = _headA; while (itr != null) { _o = itr.object; if (((((_o.exists) && (_o.solid))) && (overlapNode(itr.next)))){ c = true; }; itr = itr.next; }; }; }; if (((!((_nw == null))) && (_nw.overlap(BothLists, _oc)))){ c = true; }; if (((!((_ne == null))) && (_ne.overlap(BothLists, _oc)))){ c = true; }; if (((!((_se == null))) && (_se.overlap(BothLists, _oc)))){ c = true; }; if (((!((_sw == null))) && (_sw.overlap(BothLists, _oc)))){ c = true; }; return (c); } public function add(Object:FlxObject, List:uint):void{ var m:FlxObject; var members:Array; var l:uint; var i:uint; _oa = List; if (Object._group){ members = (Object as FlxGroup).members; l = members.length; i = 0; while (i < l) { m = (members[i] as FlxObject); if (((!((m == null))) && (m.exists))){ if (m._group){ add(m, List); } else { if (m.solid){ _o = m; _ol = _o.x; _ot = _o.y; _or = (_o.x + _o.width); _ob = (_o.y + _o.height); addObject(); }; }; }; i++; }; }; if (Object.solid){ _o = Object; _ol = _o.x; _ot = _o.y; _or = (_o.x + _o.width); _ob = (_o.y + _o.height); addObject(); }; } protected function overlapNode(Iterator:FlxList=null):Boolean{ var co:FlxObject; var c:Boolean; var itr:FlxList = Iterator; if (itr == null){ if (_oa == A_LIST){ itr = _headA; } else { itr = _headB; }; }; if (itr.object != null){ while (itr != null) { co = itr.object; if ((((((((((((((((((_o === co)) || (!(co.exists)))) || (!(_o.exists)))) || (!(co.solid)))) || (!(_o.solid)))) || (((_o.x + _o.width) < (co.x + FlxU.roundingError))))) || (((_o.x + FlxU.roundingError) > (co.x + co.width))))) || (((_o.y + _o.height) < (co.y + FlxU.roundingError))))) || (((_o.y + FlxU.roundingError) > (co.y + co.height))))){ itr = itr.next; } else { if (_oc == null){ _o.kill(); co.kill(); c = true; } else { if (_oc(_o, co)){ c = true; }; }; itr = itr.next; }; }; }; return (c); } } }//package org.flixel
Section 129
//FlxRect (org.flixel.FlxRect) package org.flixel { public class FlxRect extends FlxPoint { public var width:Number; public var height:Number; public function FlxRect(X:Number=0, Y:Number=0, Width:Number=0, Height:Number=0){ super(X, Y); width = Width; height = Height; } public function get bottom():Number{ return ((y + height)); } public function get top():Number{ return (y); } public function get left():Number{ return (x); } public function get right():Number{ return ((x + width)); } } }//package org.flixel
Section 130
//FlxSave (org.flixel.FlxSave) package org.flixel { import flash.net.*; public class FlxSave { protected var _so:SharedObject; public var data:Object; public var name:String; public function FlxSave(){ super(); name = null; _so = null; data = null; } public function read(FieldName:String):Object{ if (_so == null){ FlxG.log("WARNING: You must call FlxSave.bind()\nbefore calling FlxSave.read()."); return (null); }; return (data[FieldName]); } public function forceSave(MinFileSize:uint=0):Boolean{ var MinFileSize = MinFileSize; if (_so == null){ FlxG.log("WARNING: You must call FlxSave.bind()\nbefore calling FlxSave.forceSave()."); return (false); }; var status:Object; status = _so.flush(MinFileSize); //unresolved jump var _slot1 = e; FlxG.log("WARNING: There was a problem flushing\nthe shared object data from FlxSave."); return (false); return ((status == SharedObjectFlushStatus.FLUSHED)); } public function bind(Name:String):Boolean{ var Name = Name; name = null; _so = null; data = null; name = Name; _so = SharedObject.getLocal(name); //unresolved jump var _slot1 = e; FlxG.log("WARNING: There was a problem binding to\nthe shared object data from FlxSave."); name = null; _so = null; data = null; return (false); data = _so.data; return (true); } public function erase(MinFileSize:uint=0):Boolean{ if (_so == null){ FlxG.log("WARNING: You must call FlxSave.bind()\nbefore calling FlxSave.erase()."); return (false); }; _so.clear(); return (forceSave(MinFileSize)); } public function write(FieldName:String, FieldValue:Object, MinFileSize:uint=0):Boolean{ if (_so == null){ FlxG.log("WARNING: You must call FlxSave.bind()\nbefore calling FlxSave.write()."); return (false); }; data[FieldName] = FieldValue; return (forceSave(MinFileSize)); } } }//package org.flixel
Section 131
//FlxSound (org.flixel.FlxSound) package org.flixel { import flash.events.*; import flash.media.*; import flash.net.*; public class FlxSound extends FlxObject { public var name:String; protected var _position:Number; protected var _fadeOutTotal:Number; protected var _fadeOutTimer:Number; protected var _sound:Sound; protected var _pauseOnFadeOut:Boolean; protected var _volumeAdjust:Number; public var playing:Boolean; protected var _radius:Number; protected var _volume:Number; protected var _point2:FlxPoint; protected var _fadeInTimer:Number; public var artist:String; protected var _channel:SoundChannel; protected var _fadeInTotal:Number; protected var _looped:Boolean; protected var _pan:Boolean; protected var _transform:SoundTransform; protected var _init:Boolean; public var survive:Boolean; protected var _core:FlxObject; public function FlxSound(){ super(); _point2 = new FlxPoint(); _transform = new SoundTransform(); init(); fixed = true; } public function loadStream(SoundURL:String, Looped:Boolean=false):FlxSound{ stop(); init(); _sound = new Sound(); _sound.addEventListener(Event.ID3, gotID3); _sound.load(new URLRequest(SoundURL)); _looped = Looped; updateTransform(); active = true; return (this); } public function stop():void{ _position = 0; if (_channel != null){ _channel.stop(); stopped(); }; } public function loadEmbedded(EmbeddedSound:Class, Looped:Boolean=false):FlxSound{ stop(); init(); _sound = new (EmbeddedSound); _looped = Looped; updateTransform(); active = true; return (this); } public function get volume():Number{ return (_volume); } function updateTransform():void{ _transform.volume = (((FlxG.getMuteValue() * FlxG.volume) * _volume) * _volumeAdjust); if (_channel != null){ _channel.soundTransform = _transform; }; } public function fadeOut(Seconds:Number, PauseInstead:Boolean=false):void{ _pauseOnFadeOut = PauseInstead; _fadeInTimer = 0; _fadeOutTimer = Seconds; _fadeOutTotal = _fadeOutTimer; } public function play():void{ if (_position < 0){ return; }; if (_looped){ if (_position == 0){ if (_channel == null){ _channel = _sound.play(0, 9999, _transform); }; if (_channel == null){ active = false; }; } else { _channel = _sound.play(_position, 0, _transform); if (_channel == null){ active = false; } else { _channel.addEventListener(Event.SOUND_COMPLETE, looped); }; }; } else { if (_position == 0){ if (_channel == null){ _channel = _sound.play(0, 0, _transform); if (_channel == null){ active = false; } else { _channel.addEventListener(Event.SOUND_COMPLETE, stopped); }; }; } else { _channel = _sound.play(_position, 0, _transform); if (_channel == null){ active = false; }; }; }; playing = !((_channel == null)); _position = 0; } public function set volume(Volume:Number):void{ _volume = Volume; if (_volume < 0){ _volume = 0; } else { if (_volume > 1){ _volume = 1; }; }; updateTransform(); } protected function init():void{ _transform.pan = 0; _sound = null; _position = 0; _volume = 1; _volumeAdjust = 1; _looped = false; _core = null; _radius = 0; _pan = false; _fadeOutTimer = 0; _fadeOutTotal = 0; _pauseOnFadeOut = false; _fadeInTimer = 0; _fadeInTotal = 0; active = false; visible = false; solid = false; playing = false; name = null; artist = null; } protected function looped(event:Event=null):void{ if (_channel == null){ return; }; _channel.removeEventListener(Event.SOUND_COMPLETE, looped); _channel = null; play(); } protected function updateSound():void{ var _point:FlxPoint; var _point2:FlxPoint; var dx:Number; var dy:Number; var d:Number; if (_position != 0){ return; }; var radial:Number = 1; var fade:Number = 1; if (_core != null){ _point = new FlxPoint(); _point2 = new FlxPoint(); _core.getScreenXY(_point); getScreenXY(_point2); dx = (_point.x - _point2.x); dy = (_point.y - _point2.y); radial = ((_radius - Math.sqrt(((dx * dx) + (dy * dy)))) / _radius); if (radial < 0){ radial = 0; }; if (radial > 1){ radial = 1; }; if (_pan){ d = (-(dx) / _radius); if (d < -1){ d = -1; } else { if (d > 1){ d = 1; }; }; _transform.pan = d; }; }; if (_fadeOutTimer > 0){ _fadeOutTimer = (_fadeOutTimer - FlxG.elapsed); if (_fadeOutTimer <= 0){ if (_pauseOnFadeOut){ pause(); } else { stop(); }; }; fade = (_fadeOutTimer / _fadeOutTotal); if (fade < 0){ fade = 0; }; } else { if (_fadeInTimer > 0){ _fadeInTimer = (_fadeInTimer - FlxG.elapsed); fade = (_fadeInTimer / _fadeInTotal); if (fade < 0){ fade = 0; }; fade = (1 - fade); }; }; _volumeAdjust = (radial * fade); updateTransform(); } public function fadeIn(Seconds:Number):void{ _fadeOutTimer = 0; _fadeInTimer = Seconds; _fadeInTotal = _fadeInTimer; play(); } override public function update():void{ super.update(); updateSound(); } protected function stopped(event:Event=null):void{ if (!_looped){ _channel.removeEventListener(Event.SOUND_COMPLETE, stopped); } else { _channel.removeEventListener(Event.SOUND_COMPLETE, looped); }; _channel = null; active = false; playing = false; } protected function gotID3(event:Event=null):void{ FlxG.log("got ID3 info!"); if (_sound.id3.songName.length > 0){ name = _sound.id3.songName; }; if (_sound.id3.artist.length > 0){ artist = _sound.id3.artist; }; _sound.removeEventListener(Event.ID3, gotID3); } public function pause():void{ if (_channel == null){ _position = -1; return; }; _position = _channel.position; _channel.stop(); if (_looped){ while (_position >= _sound.length) { _position = (_position - _sound.length); }; }; _channel = null; playing = false; } override public function destroy():void{ if (active){ stop(); }; } public function proximity(X:Number, Y:Number, Core:FlxObject, Radius:Number, Pan:Boolean=true):FlxSound{ x = X; y = Y; _core = Core; _radius = Radius; _pan = Pan; return (this); } } }//package org.flixel
Section 132
//FlxSprite (org.flixel.FlxSprite) package org.flixel { import flash.display.*; import flash.geom.*; import org.flixel.data.*; public class FlxSprite extends FlxObject { protected var _mtx:Matrix; protected var _caf:uint; public var finished:Boolean; protected var _animations:Array; protected var _ct:ColorTransform; public var offset:FlxPoint; protected var _callback:Function; protected var _curAnim:FlxAnim; protected var _framePixels:BitmapData; protected var _flipped:uint; public var scale:FlxPoint; protected var _pixels:BitmapData; protected var _bakedRotation:Number; public var blend:String; public var frameWidth:uint; protected var _flashRect2:Rectangle; protected var _alpha:Number; protected var _flashPointZero:Point; protected var _curFrame:uint; public var frameHeight:uint; protected var _flashRect:Rectangle; protected var _frameTimer:Number; protected var _facing:uint; public var antialiasing:Boolean; protected var _color:uint; public static const LEFT:uint = 0; public static const DOWN:uint = 3; public static const UP:uint = 2; public static const RIGHT:uint = 1; public function FlxSprite(X:Number=0, Y:Number=0, SimpleGraphic:Class=null){ super(); x = X; y = Y; _flashRect = new Rectangle(); _flashRect2 = new Rectangle(); _flashPointZero = new Point(); if (SimpleGraphic == null){ createGraphic(8, 8); } else { loadGraphic(SimpleGraphic); }; offset = new FlxPoint(); scale = new FlxPoint(1, 1); _alpha = 1; _color = 0xFFFFFF; blend = null; antialiasing = false; finished = false; _facing = RIGHT; _animations = new Array(); _flipped = 0; _curAnim = null; _curFrame = 0; _caf = 0; _frameTimer = 0; _mtx = new Matrix(); _callback = null; } protected function renderSprite():void{ getScreenXY(_point); _flashPoint.x = _point.x; _flashPoint.y = _point.y; if ((((((((((angle == 0)) || ((_bakedRotation > 0)))) && ((scale.x == 1)))) && ((scale.y == 1)))) && ((blend == null)))){ FlxG.buffer.copyPixels(_framePixels, _flashRect, _flashPoint, null, null, true); return; }; _mtx.identity(); _mtx.translate(-(origin.x), -(origin.y)); _mtx.scale(scale.x, scale.y); if (angle != 0){ _mtx.rotate(((Math.PI * 2) * (angle / 360))); }; _mtx.translate((_point.x + origin.x), (_point.y + origin.y)); FlxG.buffer.draw(_framePixels, _mtx, null, blend, null, antialiasing); } public function fill(Color:uint):void{ _pixels.fillRect(_flashRect2, Color); calcFrame(); } public function addAnimation(Name:String, Frames:Array, FrameRate:Number=0, Looped:Boolean=true):void{ _animations.push(new FlxAnim(Name, Frames, FrameRate, Looped)); } override public function overlapsPoint(X:Number, Y:Number, PerPixel:Boolean=false):Boolean{ X = (X - FlxU.floor(FlxG.scroll.x)); Y = (Y - FlxU.floor(FlxG.scroll.y)); getScreenXY(_point); if (PerPixel){ return (_framePixels.hitTest(new Point(0, 0), 0xFF, new Point((X - _point.x), (Y - _point.y)))); }; if ((((((((X <= _point.x)) || ((X >= (_point.x + frameWidth))))) || ((Y <= _point.y)))) || ((Y >= (_point.y + frameHeight))))){ return (false); }; return (true); } override public function render():void{ renderSprite(); } protected function calcFrame():void{ var rx:uint = (_caf * frameWidth); var ry:uint; var w:uint = (_flipped) ? _flipped : _pixels.width; if (rx >= w){ ry = (uint((rx / w)) * frameHeight); rx = (rx % w); }; if (((_flipped) && ((_facing == LEFT)))){ rx = (((_flipped << 1) - rx) - frameWidth); }; _flashRect.x = rx; _flashRect.y = ry; _framePixels.copyPixels(_pixels, _flashRect, _flashPointZero); _flashRect.x = (_flashRect.y = 0); if (_ct != null){ _framePixels.colorTransform(_flashRect, _ct); }; if (_callback != null){ _callback(_curAnim.name, _curFrame, _caf); }; } function unsafeBind(Pixels:BitmapData):void{ _pixels = (_framePixels = Pixels); } public function loadGraphic(Graphic:Class, Animated:Boolean=false, Reverse:Boolean=false, Width:uint=0, Height:uint=0, Unique:Boolean=false):FlxSprite{ _bakedRotation = 0; _pixels = FlxG.addBitmap(Graphic, Reverse, Unique); if (Reverse){ _flipped = (_pixels.width >> 1); } else { _flipped = 0; }; if (Width == 0){ if (Animated){ Width = _pixels.height; } else { if (_flipped > 0){ Width = (_pixels.width / 2); } else { Width = _pixels.width; }; }; }; width = (frameWidth = Width); if (Height == 0){ if (Animated){ Height = width; } else { Height = _pixels.height; }; }; height = (frameHeight = Height); resetHelpers(); return (this); } public function get pixels():BitmapData{ return (_pixels); } public function set facing(Direction:uint):void{ var c = !((_facing == Direction)); _facing = Direction; if (c){ calcFrame(); }; } protected function resetHelpers():void{ _flashRect.x = 0; _flashRect.y = 0; _flashRect.width = frameWidth; _flashRect.height = frameHeight; _flashRect2.x = 0; _flashRect2.y = 0; _flashRect2.width = _pixels.width; _flashRect2.height = _pixels.height; if ((((((_framePixels == null)) || (!((_framePixels.width == width))))) || (!((_framePixels.height == height))))){ _framePixels = new BitmapData(width, height); }; origin.x = (frameWidth / 2); origin.y = (frameHeight / 2); _framePixels.copyPixels(_pixels, _flashRect, _flashPointZero); _caf = 0; refreshHulls(); } override public function getScreenXY(Point:FlxPoint=null):FlxPoint{ if (Point == null){ Point = new FlxPoint(); }; Point.x = ((FlxU.floor((x + FlxU.roundingError)) + FlxU.floor((FlxG.scroll.x * scrollFactor.x))) - offset.x); Point.y = ((FlxU.floor((y + FlxU.roundingError)) + FlxU.floor((FlxG.scroll.y * scrollFactor.y))) - offset.y); return (Point); } public function set alpha(Alpha:Number):void{ if (Alpha > 1){ Alpha = 1; }; if (Alpha < 0){ Alpha = 0; }; if (Alpha == _alpha){ return; }; _alpha = Alpha; if (((!((_alpha == 1))) || (!((_color == 0xFFFFFF))))){ _ct = new ColorTransform((Number((_color >> 16)) / 0xFF), (Number(((_color >> 8) & 0xFF)) / 0xFF), (Number((_color & 0xFF)) / 0xFF), _alpha); } else { _ct = null; }; calcFrame(); } protected function updateAnimation():void{ var oc:uint; var ta:int; if (_bakedRotation){ oc = _caf; ta = (angle % 360); if (ta < 0){ ta = (ta + 360); }; _caf = (ta / _bakedRotation); if (oc != _caf){ calcFrame(); }; return; }; if (((((!((_curAnim == null))) && ((_curAnim.delay > 0)))) && (((_curAnim.looped) || (!(finished)))))){ _frameTimer = (_frameTimer + FlxG.elapsed); if (_frameTimer > _curAnim.delay){ _frameTimer = (_frameTimer - _curAnim.delay); if (_curFrame == (_curAnim.frames.length - 1)){ if (_curAnim.looped){ _curFrame = 0; }; finished = true; } else { _curFrame++; }; _caf = _curAnim.frames[_curFrame]; calcFrame(); }; }; } public function draw(Brush:FlxSprite, X:int=0, Y:int=0):void{ var b:BitmapData = Brush._framePixels; if ((((((((((Brush.angle == 0)) || ((Brush._bakedRotation > 0)))) && ((Brush.scale.x == 1)))) && ((Brush.scale.y == 1)))) && ((Brush.blend == null)))){ _flashPoint.x = X; _flashPoint.y = Y; _flashRect2.width = b.width; _flashRect2.height = b.height; _pixels.copyPixels(b, _flashRect2, _flashPoint, null, null, true); _flashRect2.width = _pixels.width; _flashRect2.height = _pixels.height; calcFrame(); return; }; _mtx.identity(); _mtx.translate(-(Brush.origin.x), -(Brush.origin.y)); _mtx.scale(Brush.scale.x, Brush.scale.y); if (Brush.angle != 0){ _mtx.rotate(((Math.PI * 2) * (Brush.angle / 360))); }; _mtx.translate((X + Brush.origin.x), (Y + Brush.origin.y)); _pixels.draw(b, _mtx, null, Brush.blend, null, Brush.antialiasing); calcFrame(); } public function loadRotatedGraphic(Graphic:Class, Rotations:uint=16, Frame:int=-1, AntiAliasing:Boolean=false, AutoBuffer:Boolean=false):FlxSprite{ var r:uint; var c:uint; var bw2:uint; var bh2:uint; var gxc:uint; var gyc:uint; var rows:uint = 4; var brush:FlxSprite = new FlxSprite().loadGraphic(Graphic, (Frame >= 0)); if (Frame >= 0){ brush.frame = Frame; }; brush.antialiasing = AntiAliasing; var max:uint = brush.width; if (brush.height > max){ max = brush.height; }; if (AutoBuffer){ max = (max * 1.5); }; var cols:uint = Math.ceil((Rotations / rows)); width = (max * cols); height = (max * rows); var key:String = ((((((String(Graphic) + ":") + Frame) + ":") + width) + "x") + height); var skipGen:Boolean = FlxG.checkBitmapCache(key); createGraphic(width, height, 0, true, key); _bakedRotation = (360 / Rotations); if (!skipGen){ bw2 = (brush.width / 2); bh2 = (brush.height / 2); gxc = (max / 2); gyc = (max / 2); r = 0; while (r < rows) { c = 0; while (c < cols) { draw(brush, ((gxc + (max * c)) - bw2), (gyc - bh2)); brush.angle = (brush.angle + _bakedRotation); c++; }; gyc = (gyc + max); r++; }; }; frameWidth = (frameHeight = (width = (height = max))); resetHelpers(); return (this); } public function set color(Color:uint):void{ Color = (Color & 0xFFFFFF); if (_color == Color){ return; }; _color = Color; if (((!((_alpha == 1))) || (!((_color == 0xFFFFFF))))){ _ct = new ColorTransform((Number((_color >> 16)) / 0xFF), (Number(((_color >> 8) & 0xFF)) / 0xFF), (Number((_color & 0xFF)) / 0xFF), _alpha); } else { _ct = null; }; calcFrame(); } override public function update():void{ updateMotion(); updateAnimation(); updateFlickering(); } public function onEmit():void{ } public function createGraphic(Width:uint, Height:uint, Color:uint=4294967295, Unique:Boolean=false, Key:String=null):FlxSprite{ _bakedRotation = 0; _pixels = FlxG.createBitmap(Width, Height, Color, Unique, Key); width = (frameWidth = _pixels.width); height = (frameHeight = _pixels.height); resetHelpers(); return (this); } public function play(AnimName:String, Force:Boolean=false):void{ if (((((!(Force)) && (!((_curAnim == null))))) && ((AnimName == _curAnim.name)))){ return; }; _curFrame = 0; _caf = 0; _frameTimer = 0; var al:uint = _animations.length; var i:uint; while (i < al) { if (_animations[i].name == AnimName){ _curAnim = _animations[i]; if (_curAnim.delay <= 0){ finished = true; } else { finished = false; }; _caf = _curAnim.frames[_curFrame]; calcFrame(); return; }; i++; }; } public function addAnimationCallback(AnimationCallback:Function):void{ _callback = AnimationCallback; } public function set pixels(Pixels:BitmapData):void{ _pixels = Pixels; width = (frameWidth = _pixels.width); height = (frameHeight = _pixels.height); resetHelpers(); } public function get alpha():Number{ return (_alpha); } public function get facing():uint{ return (_facing); } public function get color():uint{ return (_color); } public function set frame(Frame:uint):void{ _curAnim = null; _caf = Frame; calcFrame(); } public function get frame():uint{ return (_caf); } public function randomFrame():void{ _curAnim = null; _caf = int((FlxU.random() * (_pixels.width / frameWidth))); calcFrame(); } } }//package org.flixel
Section 133
//FlxState (org.flixel.FlxState) package org.flixel { import flash.display.*; public class FlxState extends Sprite { public var defaultGroup:FlxGroup; public static var screen:FlxSprite; public static var bgColor:uint; public function FlxState(){ super(); defaultGroup = new FlxGroup(); if (screen == null){ screen = new FlxSprite(); screen.createGraphic(FlxG.width, FlxG.height, 0, true); screen.origin.x = (screen.origin.y = 0); screen.antialiasing = true; }; } public function add(Core:FlxObject):FlxObject{ return (defaultGroup.add(Core)); } public function preProcess():void{ screen.fill(bgColor); } public function collide():void{ defaultGroup.collide(); } public function render():void{ defaultGroup.render(); } public function update():void{ defaultGroup.update(); } public function destroy():void{ defaultGroup.destroy(); } public function create():void{ } public function postProcess():void{ } } }//package org.flixel
Section 134
//FlxText (org.flixel.FlxText) package org.flixel { import flash.display.*; import flash.text.*; public class FlxText extends FlxSprite { protected var _tf:TextField; protected var _regen:Boolean; protected var _shadow:uint; public function FlxText(X:Number, Y:Number, Width:uint, Text:String=null){ super(X, Y); createGraphic(Width, 1); if (Text == null){ Text = ""; }; _tf = new TextField(); _tf.width = Width; _tf.embedFonts = true; _tf.selectable = false; _tf.sharpness = 100; _tf.multiline = true; _tf.wordWrap = true; _tf.text = Text; var tf:TextFormat = new TextFormat("system", 8, 0xFFFFFF); _tf.defaultTextFormat = tf; _tf.setTextFormat(tf); if (Text.length <= 0){ _tf.height = 1; } else { _tf.height = 10; }; _regen = true; _shadow = 0; solid = false; calcFrame(); } public function get shadow():uint{ return (_shadow); } public function get size():Number{ return ((_tf.defaultTextFormat.size as Number)); } override public function get color():uint{ return ((_tf.defaultTextFormat.color as uint)); } override public function set color(Color:uint):void{ var tf:TextFormat = dtfCopy(); tf.color = Color; _tf.defaultTextFormat = tf; _tf.setTextFormat(tf); _regen = true; calcFrame(); } public function set shadow(Color:uint):void{ _shadow = Color; calcFrame(); } public function set size(Size:Number):void{ var tf:TextFormat = dtfCopy(); tf.size = Size; _tf.defaultTextFormat = tf; _tf.setTextFormat(tf); _regen = true; calcFrame(); } public function get alignment():String{ return (_tf.defaultTextFormat.align); } protected function dtfCopy():TextFormat{ var dtf:TextFormat = _tf.defaultTextFormat; return (new TextFormat(dtf.font, dtf.size, dtf.color, dtf.bold, dtf.italic, dtf.underline, dtf.url, dtf.target, dtf.align)); } public function get text():String{ return (_tf.text); } public function get font():String{ return (_tf.defaultTextFormat.font); } public function set alignment(Alignment:String):void{ var tf:TextFormat = dtfCopy(); tf.align = Alignment; _tf.defaultTextFormat = tf; _tf.setTextFormat(tf); calcFrame(); } public function set font(Font:String):void{ var tf:TextFormat = dtfCopy(); tf.font = Font; _tf.defaultTextFormat = tf; _tf.setTextFormat(tf); _regen = true; calcFrame(); } override protected function calcFrame():void{ var nl:uint; var i:uint; if ((((((_tf == null)) || ((_tf.text == null)))) || ((_tf.text.length <= 0)))){ _pixels.fillRect(_flashRect, 0); return; }; if (_regen){ nl = _tf.numLines; height = 0; i = 0; while (i < nl) { height = (height + _tf.getLineMetrics(i).height); i++; }; height = (height + 4); _pixels = new BitmapData(width, height, true, 0); frameHeight = height; _tf.height = (height * 1.2); _flashRect.x = 0; _flashRect.y = 0; _flashRect.width = width; _flashRect.height = height; _regen = false; } else { _pixels.fillRect(_flashRect, 0); }; var tf:TextFormat = _tf.defaultTextFormat; var tfa:TextFormat = tf; _mtx.identity(); if ((((tf.align == "center")) && ((_tf.numLines == 1)))){ tfa = new TextFormat(tf.font, tf.size, tf.color, null, null, null, null, null, "left"); _tf.setTextFormat(tfa); _mtx.translate(Math.floor(((width - _tf.getLineMetrics(0).width) / 2)), 0); }; if (_shadow > 0){ _tf.setTextFormat(new TextFormat(tfa.font, tfa.size, _shadow, null, null, null, null, null, tfa.align)); _mtx.translate(1, 1); _pixels.draw(_tf, _mtx, _ct); _mtx.translate(-1, -1); _tf.setTextFormat(new TextFormat(tfa.font, tfa.size, tfa.color, null, null, null, null, null, tfa.align)); }; _pixels.draw(_tf, _mtx, _ct); _tf.setTextFormat(new TextFormat(tf.font, tf.size, tf.color, null, null, null, null, null, tf.align)); _framePixels = new BitmapData(_pixels.width, _pixels.height, true, 0); _framePixels.copyPixels(_pixels, _flashRect, _flashPointZero); if (solid){ refreshHulls(); }; } public function setFormat(Font:String=null, Size:Number=8, Color:uint=0xFFFFFF, Alignment:String=null, ShadowColor:uint=0):FlxText{ if (Font == null){ Font = ""; }; var tf:TextFormat = dtfCopy(); tf.font = Font; tf.size = Size; tf.color = Color; tf.align = Alignment; _tf.defaultTextFormat = tf; _tf.setTextFormat(tf); _shadow = ShadowColor; _regen = true; calcFrame(); return (this); } public function set text(Text:String):void{ _tf.text = Text; _regen = true; calcFrame(); } } }//package org.flixel
Section 135
//FlxTilemap (org.flixel.FlxTilemap) package org.flixel { import flash.display.*; import flash.geom.*; public class FlxTilemap extends FlxObject { protected var _tileWidth:uint; protected var _screenRows:uint; protected var _data:Array; public var startingIndex:uint; protected var _pixels:BitmapData; protected var _block:FlxObject; protected var _callbacks:Array; protected var _rects:Array; protected var _tileHeight:uint; public var totalTiles:uint; protected var _screenCols:uint; public var drawIndex:uint; public var auto:uint; protected var _flashRect:Rectangle; public var heightInTiles:uint; public var widthInTiles:uint; public var collideIndex:uint; public static const ALT:uint = 2; public static const AUTO:uint = 1; public static const OFF:uint = 0; public static var ImgAutoAlt:Class = FlxTilemap_ImgAutoAlt; public static var ImgAuto:Class = FlxTilemap_ImgAuto; public function FlxTilemap(){ super(); auto = OFF; collideIndex = 1; startingIndex = 0; drawIndex = 1; widthInTiles = 0; heightInTiles = 0; totalTiles = 0; _data = new Array(); _tileWidth = 0; _tileHeight = 0; _rects = null; _pixels = null; _block = new FlxObject(); _block.width = (_block.height = 0); _block.fixed = true; _callbacks = new Array(); fixed = true; } public function setTileByIndex(Index:uint, Tile:uint, UpdateGraphics:Boolean=true):Boolean{ var i:uint; if (Index >= _data.length){ return (false); }; var ok:Boolean; _data[Index] = Tile; if (!UpdateGraphics){ return (ok); }; if (auto == OFF){ updateTile(Index); return (ok); }; var r:int = (int((Index / widthInTiles)) - 1); var rl:int = (r + 3); var c:int = ((Index % widthInTiles) - 1); var cl:int = (c + 3); while (r < rl) { c = (cl - 3); while (c < cl) { if ((((((((r >= 0)) && ((r < heightInTiles)))) && ((c >= 0)))) && ((c < widthInTiles)))){ i = ((r * widthInTiles) + c); autoTile(i); updateTile(i); }; c++; }; r++; }; return (ok); } public function getTile(X:uint, Y:uint):uint{ return (getTileByIndex(((Y * widthInTiles) + X))); } public function setCallback(Tile:uint, Callback:Function, Range:uint=1):void{ if (Range <= 0){ return; }; var i:uint = Tile; while (i < (Tile + Range)) { _callbacks[i] = Callback; i++; }; } override public function overlaps(Core:FlxObject):Boolean{ var c:uint; var d:uint; var i:uint; var dd:uint; var blocks:Array = new Array(); var ix:uint = Math.floor(((Core.x - x) / _tileWidth)); var iy:uint = Math.floor(((Core.y - y) / _tileHeight)); var iw:uint = (Math.ceil((Core.width / _tileWidth)) + 1); var ih:uint = (Math.ceil((Core.height / _tileHeight)) + 1); var r:uint; while (r < ih) { if (r >= heightInTiles){ break; }; d = (((iy + r) * widthInTiles) + ix); c = 0; while (c < iw) { if (c >= widthInTiles){ break; }; dd = (_data[(d + c)] as uint); if (dd >= collideIndex){ blocks.push({x:(x + ((ix + c) * _tileWidth)), y:(y + ((iy + r) * _tileHeight)), data:dd}); }; c++; }; r++; }; var bl:uint = blocks.length; var hx:Boolean; i = 0; while (i < bl) { _block.x = blocks[i].x; _block.y = blocks[i].y; if (_block.overlaps(Core)){ return (true); }; i++; }; return (false); } public function loadMap(MapData:String, TileGraphic:Class, TileWidth:uint=0, TileHeight:uint=0):FlxTilemap{ var c:uint; var cols:Array; var i:uint; var rows:Array = MapData.split("\n"); heightInTiles = rows.length; var r:uint; while (r < heightInTiles) { cols = rows[r].split(","); if (cols.length <= 1){ heightInTiles--; } else { if (widthInTiles == 0){ widthInTiles = cols.length; }; c = 0; while (c < widthInTiles) { _data.push(uint(cols[c])); c++; }; }; r++; }; totalTiles = (widthInTiles * heightInTiles); if (auto > OFF){ collideIndex = (startingIndex = (drawIndex = 1)); i = 0; while (i < totalTiles) { autoTile(i); i++; }; }; _pixels = FlxG.addBitmap(TileGraphic); _tileWidth = TileWidth; if (_tileWidth == 0){ _tileWidth = _pixels.height; }; _tileHeight = TileHeight; if (_tileHeight == 0){ _tileHeight = _tileWidth; }; _block.width = _tileWidth; _block.height = _tileHeight; width = (widthInTiles * _tileWidth); height = (heightInTiles * _tileHeight); _rects = new Array(totalTiles); i = 0; while (i < totalTiles) { updateTile(i); i++; }; _screenRows = (Math.ceil((FlxG.height / _tileHeight)) + 1); if (_screenRows > heightInTiles){ _screenRows = heightInTiles; }; _screenCols = (Math.ceil((FlxG.width / _tileWidth)) + 1); if (_screenCols > widthInTiles){ _screenCols = widthInTiles; }; refreshHulls(); return (this); } public function ray(StartX:Number, StartY:Number, EndX:Number, EndY:Number, Result:FlxPoint, Resolution:Number=1):Boolean{ var tx:uint; var ty:uint; var rx:Number; var ry:Number; var q:Number; var lx:Number; var ly:Number; var step:Number = _tileWidth; if (_tileHeight < _tileWidth){ step = _tileHeight; }; step = (step / Resolution); var dx:Number = (EndX - StartX); var dy:Number = (EndY - StartY); var distance:Number = Math.sqrt(((dx * dx) + (dy * dy))); var steps:uint = Math.ceil((distance / step)); var stepX:Number = (dx / steps); var stepY:Number = (dy / steps); var curX:Number = (StartX - stepX); var curY:Number = (StartY - stepY); var i:uint; while (i < steps) { curX = (curX + stepX); curY = (curY + stepY); if ((((((((curX < 0)) || ((curX > width)))) || ((curY < 0)))) || ((curY > height)))){ } else { tx = (curX / _tileWidth); ty = (curY / _tileHeight); if ((_data[((ty * widthInTiles) + tx)] as uint) >= collideIndex){ tx = (tx * _tileWidth); ty = (ty * _tileHeight); rx = 0; ry = 0; lx = (curX - stepX); ly = (curY - stepY); q = tx; if (dx < 0){ q = (q + _tileWidth); }; rx = q; ry = (ly + (stepY * ((q - lx) / stepX))); if ((((ry > ty)) && ((ry < (ty + _tileHeight))))){ if (Result == null){ Result = new FlxPoint(); }; Result.x = rx; Result.y = ry; return (true); }; q = ty; if (dy < 0){ q = (q + _tileHeight); }; rx = (lx + (stepX * ((q - ly) / stepY))); ry = q; if ((((rx > tx)) && ((rx < (tx + _tileWidth))))){ if (Result == null){ Result = new FlxPoint(); }; Result.x = rx; Result.y = ry; return (true); }; return (false); }; }; i++; }; return (false); } override public function preCollide(Object:FlxObject):void{ var c:uint; var d:uint; colOffsets.length = 0; var ix:int = FlxU.floor(((Object.x - x) / _tileWidth)); var iy:int = FlxU.floor(((Object.y - y) / _tileHeight)); var iw:uint = (FlxU.ceil((Object.width / _tileWidth)) + 1); var ih:uint = (FlxU.ceil((Object.height / _tileHeight)) + 1); var r:uint; while (r < ih) { if (r >= heightInTiles){ break; }; d = (((iy + r) * widthInTiles) + ix); c = 0; while (c < iw) { if (c >= widthInTiles){ break; }; if ((_data[(d + c)] as uint) >= collideIndex){ colOffsets.push(new FlxPoint((x + ((ix + c) * _tileWidth)), (y + ((iy + r) * _tileHeight)))); }; c++; }; r++; }; } override public function render():void{ renderTilemap(); } protected function updateTile(Index:uint):void{ if (_data[Index] < drawIndex){ _rects[Index] = null; return; }; var rx:uint = ((_data[Index] - startingIndex) * _tileWidth); var ry:uint; if (rx >= _pixels.width){ ry = (uint((rx / _pixels.width)) * _tileHeight); rx = (rx % _pixels.width); }; _rects[Index] = new Rectangle(rx, ry, _tileWidth, _tileHeight); } override public function refreshHulls():void{ colHullX.x = 0; colHullX.y = 0; colHullX.width = _tileWidth; colHullX.height = _tileHeight; colHullY.x = 0; colHullY.y = 0; colHullY.width = _tileWidth; colHullY.height = _tileHeight; } public function setTile(X:uint, Y:uint, Tile:uint, UpdateGraphics:Boolean=true):Boolean{ if ((((X >= widthInTiles)) || ((Y >= heightInTiles)))){ return (false); }; return (setTileByIndex(((Y * widthInTiles) + X), Tile, UpdateGraphics)); } public function follow(Border:int=0):void{ FlxG.followBounds((x + (Border * _tileWidth)), (y + (Border * _tileHeight)), (width - (Border * _tileWidth)), (height - (Border * _tileHeight))); } protected function renderTilemap():void{ var c:uint; var cri:uint; getScreenXY(_point); _flashPoint.x = _point.x; _flashPoint.y = _point.y; var tx:int = Math.floor((-(_flashPoint.x) / _tileWidth)); var ty:int = Math.floor((-(_flashPoint.y) / _tileHeight)); if (tx < 0){ tx = 0; }; if (tx > (widthInTiles - _screenCols)){ tx = (widthInTiles - _screenCols); }; if (ty < 0){ ty = 0; }; if (ty > (heightInTiles - _screenRows)){ ty = (heightInTiles - _screenRows); }; var ri:int = ((ty * widthInTiles) + tx); _flashPoint.x = (_flashPoint.x + (tx * _tileWidth)); _flashPoint.y = (_flashPoint.y + (ty * _tileHeight)); var opx:int = _flashPoint.x; var r:uint; while (r < _screenRows) { cri = ri; c = 0; while (c < _screenCols) { var _temp1 = cri; cri = (cri + 1); _flashRect = (_rects[_temp1] as Rectangle); if (_flashRect != null){ FlxG.buffer.copyPixels(_pixels, _flashRect, _flashPoint, null, null, true); }; _flashPoint.x = (_flashPoint.x + _tileWidth); c++; }; ri = (ri + widthInTiles); _flashPoint.x = opx; _flashPoint.y = (_flashPoint.y + _tileHeight); r++; }; } protected function autoTile(Index:uint):void{ if (_data[Index] == 0){ return; }; _data[Index] = 0; if (((((Index - widthInTiles) < 0)) || ((_data[(Index - widthInTiles)] > 0)))){ _data[Index] = (_data[Index] + 1); }; if (((((Index % widthInTiles) >= (widthInTiles - 1))) || ((_data[(Index + 1)] > 0)))){ _data[Index] = (_data[Index] + 2); }; if (((((Index + widthInTiles) >= totalTiles)) || ((_data[(Index + widthInTiles)] > 0)))){ _data[Index] = (_data[Index] + 4); }; if (((((Index % widthInTiles) <= 0)) || ((_data[(Index - 1)] > 0)))){ _data[Index] = (_data[Index] + 8); }; if ((((auto == ALT)) && ((_data[Index] == 15)))){ if (((((((Index % widthInTiles) > 0)) && (((Index + widthInTiles) < totalTiles)))) && ((_data[((Index + widthInTiles) - 1)] <= 0)))){ _data[Index] = 1; }; if (((((((Index % widthInTiles) > 0)) && (((Index - widthInTiles) >= 0)))) && ((_data[((Index - widthInTiles) - 1)] <= 0)))){ _data[Index] = 2; }; if (((((((Index % widthInTiles) < widthInTiles)) && (((Index - widthInTiles) >= 0)))) && ((_data[((Index - widthInTiles) + 1)] <= 0)))){ _data[Index] = 4; }; if (((((((Index % widthInTiles) < widthInTiles)) && (((Index + widthInTiles) < totalTiles)))) && ((_data[((Index + widthInTiles) + 1)] <= 0)))){ _data[Index] = 8; }; }; _data[Index] = (_data[Index] + 1); } public function getTileByIndex(Index:uint):uint{ return ((_data[Index] as uint)); } public static function arrayToCSV(Data:Array, Width:int):String{ var r:uint; var c:uint; var csv:String; var Height:int = (Data.length / Width); r = 0; while (r < Height) { c = 0; while (c < Width) { if (c == 0){ if (r == 0){ csv = (csv + Data[0]); } else { csv = (csv + ("\n" + Data[(r * Width)])); }; } else { csv = (csv + (", " + Data[((r * Width) + c)])); }; c++; }; r++; }; return (csv); } public static function pngToCSV(PNGFile:Class, Invert:Boolean=false, Scale:uint=1):String{ var layout:Bitmap; var r:uint; var c:uint; var p:uint; var csv:String; var tmp:Bitmap; var mtx:Matrix; if (Scale <= 1){ layout = new (PNGFile); } else { tmp = new (PNGFile); layout = new Bitmap(new BitmapData((tmp.width * Scale), (tmp.height * Scale))); mtx = new Matrix(); mtx.scale(Scale, Scale); layout.bitmapData.draw(tmp, mtx); }; var bd:BitmapData = layout.bitmapData; var w:uint = layout.width; var h:uint = layout.height; r = 0; while (r < h) { c = 0; while (c < w) { p = bd.getPixel(c, r); if (((((Invert) && ((p > 0)))) || (((!(Invert)) && ((p == 0)))))){ p = 1; } else { p = 0; }; if (c == 0){ if (r == 0){ csv = (csv + p); } else { csv = (csv + ("\n" + p)); }; } else { csv = (csv + (", " + p)); }; c++; }; r++; }; return (csv); } } }//package org.flixel
Section 136
//FlxTilemap_ImgAuto (org.flixel.FlxTilemap_ImgAuto) package org.flixel { import mx.core.*; public class FlxTilemap_ImgAuto extends BitmapAsset { } }//package org.flixel
Section 137
//FlxTilemap_ImgAutoAlt (org.flixel.FlxTilemap_ImgAutoAlt) package org.flixel { import mx.core.*; public class FlxTilemap_ImgAutoAlt extends BitmapAsset { } }//package org.flixel
Section 138
//FlxU (org.flixel.FlxU) package org.flixel { import flash.utils.*; import flash.net.*; public class FlxU { protected static var _originalSeed:Number; public static var quadTree:FlxQuadTree; protected static var _seed:Number; static var roundingError:Number = 1E-7; public static var quadTreeBounds:FlxRect; public function FlxU(){ super(); } public static function random(UseGlobalSeed:Boolean=true):Number{ var random:Number; if (((UseGlobalSeed) && (!(isNaN(_seed))))){ random = randomize(_seed); _seed = mutate(_seed, random); return (random); }; return (Math.random()); } public static function mutate(Seed:Number, Mutator:Number):Number{ Seed = (Seed + Mutator); if (Seed > 1){ Seed = (Seed - int(Seed)); }; return (Seed); } public static function overlap(Object1:FlxObject, Object2:FlxObject, Callback:Function=null):Boolean{ if ((((((((Object1 == null)) || (!(Object1.exists)))) || ((Object2 == null)))) || (!(Object2.exists)))){ return (false); }; quadTree = new FlxQuadTree(quadTreeBounds.x, quadTreeBounds.y, quadTreeBounds.width, quadTreeBounds.height); quadTree.add(Object1, FlxQuadTree.A_LIST); if (Object1 === Object2){ return (quadTree.overlap(false, Callback)); }; quadTree.add(Object2, FlxQuadTree.B_LIST); return (quadTree.overlap(true, Callback)); } public static function getClass(Name:String):Class{ return ((getDefinitionByName(Name) as Class)); } public static function openURL(URL:String):void{ navigateToURL(new URLRequest(URL), "_blank"); } public static function floor(N:Number):Number{ var n:Number = int(N); return (((N)>0) ? n : ((n)!=N) ? (n - 1) : n); } public static function solveYCollision(Object1:FlxObject, Object2:FlxObject):Boolean{ var overlap:Number; var p1hn2:Boolean; var i1:uint; var i2:uint; var ox1:Number; var oy1:Number; var ox2:Number; var oy2:Number; var r1:Number; var r2:Number; var sv1:Number; var sv2:Number; var o1:Number = Object1.colVector.y; var o2:Number = Object2.colVector.y; if (o1 == o2){ return (false); }; Object1.preCollide(Object2); Object2.preCollide(Object1); var hit:Boolean; var obj1Stopped = (o1 == 0); var obj1MoveNeg = (o1 < 0); var obj1MovePos = (o1 > 0); var obj2Stopped = (o2 == 0); var obj2MoveNeg = (o2 < 0); var obj2MovePos = (o2 > 0); var obj1Hull:FlxRect = Object1.colHullY; var obj2Hull:FlxRect = Object2.colHullY; var co1:Array = Object1.colOffsets; var co2:Array = Object2.colOffsets; var l1:uint = co1.length; var l2:uint = co2.length; p1hn2 = ((((((((((obj1Stopped) && (obj2MoveNeg))) || (((obj1MovePos) && (obj2Stopped))))) || (((obj1MovePos) && (obj2MoveNeg))))) || (((((obj1MoveNeg) && (obj2MoveNeg))) && ((((o1)>0) ? o1 : -(o1) < ((o2)>0) ? o2 : -(o2))))))) || (((((obj1MovePos) && (obj2MovePos))) && ((((o1)>0) ? o1 : -(o1) > ((o2)>0) ? o2 : -(o2)))))); if ((p1hn2) ? ((!(Object1.collideBottom)) || (!(Object2.collideTop))) : ((!(Object1.collideTop)) || (!(Object2.collideBottom)))){ return (false); }; i1 = 0; while (i1 < l1) { ox1 = co1[i1].x; oy1 = co1[i1].y; obj1Hull.x = (obj1Hull.x + ox1); obj1Hull.y = (obj1Hull.y + oy1); i2 = 0; while (i2 < l2) { ox2 = co2[i2].x; oy2 = co2[i2].y; obj2Hull.x = (obj2Hull.x + ox2); obj2Hull.y = (obj2Hull.y + oy2); if (((((((((obj1Hull.x + obj1Hull.width) < (obj2Hull.x + roundingError))) || (((obj1Hull.x + roundingError) > (obj2Hull.x + obj2Hull.width))))) || (((obj1Hull.y + obj1Hull.height) < (obj2Hull.y + roundingError))))) || (((obj1Hull.y + roundingError) > (obj2Hull.y + obj2Hull.height))))){ obj2Hull.x = (obj2Hull.x - ox2); obj2Hull.y = (obj2Hull.y - oy2); } else { if (p1hn2){ if (obj1MoveNeg){ r1 = (obj1Hull.y + Object1.colHullX.height); } else { r1 = (obj1Hull.y + obj1Hull.height); }; if (obj2MoveNeg){ r2 = obj2Hull.y; } else { r2 = ((obj2Hull.y + obj2Hull.height) - Object2.colHullX.height); }; } else { if (obj2MoveNeg){ r1 = (-(obj2Hull.y) - Object2.colHullX.height); } else { r1 = (-(obj2Hull.y) - obj2Hull.height); }; if (obj1MoveNeg){ r2 = -(obj1Hull.y); } else { r2 = ((-(obj1Hull.y) - obj1Hull.height) + Object1.colHullX.height); }; }; overlap = (r1 - r2); if ((((((overlap == 0)) || (((!(Object1.fixed)) && ((((overlap)>0) ? overlap : -(overlap) > (obj1Hull.height * 0.8))))))) || (((!(Object2.fixed)) && ((((overlap)>0) ? overlap : -(overlap) > (obj2Hull.height * 0.8))))))){ obj2Hull.x = (obj2Hull.x - ox2); obj2Hull.y = (obj2Hull.y - oy2); } else { hit = true; sv1 = Object2.velocity.y; sv2 = Object1.velocity.y; if (((!(Object1.fixed)) && (Object2.fixed))){ if (Object1._group){ Object1.reset(Object1.x, (Object1.y - overlap)); } else { Object1.y = (Object1.y - overlap); }; } else { if (((Object1.fixed) && (!(Object2.fixed)))){ if (Object2._group){ Object2.reset(Object2.x, (Object2.y + overlap)); } else { Object2.y = (Object2.y + overlap); }; } else { if (((!(Object1.fixed)) && (!(Object2.fixed)))){ overlap = (overlap / 2); if (Object1._group){ Object1.reset(Object1.x, (Object1.y - overlap)); } else { Object1.y = (Object1.y - overlap); }; if (Object2._group){ Object2.reset(Object2.x, (Object2.y + overlap)); } else { Object2.y = (Object2.y + overlap); }; sv1 = (sv1 / 2); sv2 = (sv2 / 2); }; }; }; if (p1hn2){ Object1.hitBottom(Object2, sv1); Object2.hitTop(Object1, sv2); } else { Object1.hitTop(Object2, sv1); Object2.hitBottom(Object1, sv2); }; if (((!(Object1.fixed)) && (!((overlap == 0))))){ if (p1hn2){ obj1Hull.y = (obj1Hull.y - overlap); if (((Object2.fixed) && (Object2.moves))){ sv1 = Object2.colVector.x; Object1.x = (Object1.x + sv1); obj1Hull.x = (obj1Hull.x + sv1); Object1.colHullX.x = (Object1.colHullX.x + sv1); }; } else { obj1Hull.y = (obj1Hull.y - overlap); obj1Hull.height = (obj1Hull.height + overlap); }; }; if (((!(Object2.fixed)) && (!((overlap == 0))))){ if (p1hn2){ obj2Hull.y = (obj2Hull.y + overlap); obj2Hull.height = (obj2Hull.height - overlap); } else { obj2Hull.height = (obj2Hull.height + overlap); if (((Object1.fixed) && (Object1.moves))){ sv2 = Object1.colVector.x; Object2.x = (Object2.x + sv2); obj2Hull.x = (obj2Hull.x + sv2); Object2.colHullX.x = (Object2.colHullX.x + sv2); }; }; }; obj2Hull.x = (obj2Hull.x - ox2); obj2Hull.y = (obj2Hull.y - oy2); }; }; i2++; }; obj1Hull.x = (obj1Hull.x - ox1); obj1Hull.y = (obj1Hull.y - oy1); i1++; }; return (hit); } public static function ceil(N:Number):Number{ var n:Number = int(N); return (((N)>0) ? ((n)!=N) ? (n + 1) : n : n); } public static function getAngle(X:Number, Y:Number):Number{ return (((Math.atan2(Y, X) * 180) / Math.PI)); } public static function setWorldBounds(X:Number=0, Y:Number=0, Width:Number=0, Height:Number=0):void{ if ((((((((X == 0)) && ((Y == 0)))) && ((Width == 0)))) && ((Height == 0)))){ X = (-128 * FlxG.width); Y = (-128 * FlxG.height); Width = (0x0100 * FlxG.width); Height = (0x0100 * FlxG.height); }; if (quadTreeBounds == null){ quadTreeBounds = new FlxRect(); }; quadTreeBounds.x = X; quadTreeBounds.y = Y; if (Width != 0){ quadTreeBounds.width = Width; }; if (Height != 0){ quadTreeBounds.height = Height; }; } public static function set seed(Seed:Number):void{ _seed = Seed; _originalSeed = _seed; } public static function getClassName(Obj:Object, Simple:Boolean=false):String{ var s:String = getQualifiedClassName(Obj); s = s.replace("::", "."); if (Simple){ s = s.substr((s.lastIndexOf(".") + 1)); }; return (s); } public static function randomize(Seed:Number):Number{ return ((((69621 * int((Seed * 2147483647))) % 2147483647) / 2147483647)); } public static function abs(N:Number):Number{ return (((N)>0) ? N : -(N)); } public static function computeVelocity(Velocity:Number, Acceleration:Number=0, Drag:Number=0, Max:Number=10000):Number{ var d:Number; if (Acceleration != 0){ Velocity = (Velocity + (Acceleration * FlxG.elapsed)); } else { if (Drag != 0){ d = (Drag * FlxG.elapsed); if ((Velocity - d) > 0){ Velocity = (Velocity - d); } else { if ((Velocity + d) < 0){ Velocity = (Velocity + d); } else { Velocity = 0; }; }; }; }; if (((!((Velocity == 0))) && (!((Max == 10000))))){ if (Velocity > Max){ Velocity = Max; } else { if (Velocity < -(Max)){ Velocity = -(Max); }; }; }; return (Velocity); } public static function rotatePoint(X:Number, Y:Number, PivotX:Number, PivotY:Number, Angle:Number, P:FlxPoint=null):FlxPoint{ if (P == null){ P = new FlxPoint(); }; var radians:Number = ((-(Angle) / 180) * Math.PI); var dx:Number = (X - PivotX); var dy:Number = (PivotY - Y); P.x = ((PivotX + (Math.cos(radians) * dx)) - (Math.sin(radians) * dy)); P.y = (PivotY - ((Math.sin(radians) * dx) + (Math.cos(radians) * dy))); return (P); } public static function get seed():Number{ return (_originalSeed); } public static function solveXCollision(Object1:FlxObject, Object2:FlxObject):Boolean{ var f1:Boolean; var f2:Boolean; var overlap:Number; var p1hn2:Boolean; var i1:uint; var i2:uint; var ox1:Number; var oy1:Number; var ox2:Number; var oy2:Number; var r1:Number; var r2:Number; var sv1:Number; var sv2:Number; var o1:Number = Object1.colVector.x; var o2:Number = Object2.colVector.x; if (o1 == o2){ return (false); }; Object1.preCollide(Object2); Object2.preCollide(Object1); var hit:Boolean; var obj1Stopped = (o1 == 0); var obj1MoveNeg = (o1 < 0); var obj1MovePos = (o1 > 0); var obj2Stopped = (o2 == 0); var obj2MoveNeg = (o2 < 0); var obj2MovePos = (o2 > 0); var obj1Hull:FlxRect = Object1.colHullX; var obj2Hull:FlxRect = Object2.colHullX; var co1:Array = Object1.colOffsets; var co2:Array = Object2.colOffsets; var l1:uint = co1.length; var l2:uint = co2.length; p1hn2 = ((((((((((obj1Stopped) && (obj2MoveNeg))) || (((obj1MovePos) && (obj2Stopped))))) || (((obj1MovePos) && (obj2MoveNeg))))) || (((((obj1MoveNeg) && (obj2MoveNeg))) && ((((o1)>0) ? o1 : -(o1) < ((o2)>0) ? o2 : -(o2))))))) || (((((obj1MovePos) && (obj2MovePos))) && ((((o1)>0) ? o1 : -(o1) > ((o2)>0) ? o2 : -(o2)))))); if ((p1hn2) ? ((!(Object1.collideRight)) || (!(Object2.collideLeft))) : ((!(Object1.collideLeft)) || (!(Object2.collideRight)))){ return (false); }; i1 = 0; while (i1 < l1) { ox1 = co1[i1].x; oy1 = co1[i1].y; obj1Hull.x = (obj1Hull.x + ox1); obj1Hull.y = (obj1Hull.y + oy1); i2 = 0; while (i2 < l2) { ox2 = co2[i2].x; oy2 = co2[i2].y; obj2Hull.x = (obj2Hull.x + ox2); obj2Hull.y = (obj2Hull.y + oy2); if (((((((((obj1Hull.x + obj1Hull.width) < (obj2Hull.x + roundingError))) || (((obj1Hull.x + roundingError) > (obj2Hull.x + obj2Hull.width))))) || (((obj1Hull.y + obj1Hull.height) < (obj2Hull.y + roundingError))))) || (((obj1Hull.y + roundingError) > (obj2Hull.y + obj2Hull.height))))){ obj2Hull.x = (obj2Hull.x - ox2); obj2Hull.y = (obj2Hull.y - oy2); } else { if (p1hn2){ if (obj1MoveNeg){ r1 = (obj1Hull.x + Object1.colHullY.width); } else { r1 = (obj1Hull.x + obj1Hull.width); }; if (obj2MoveNeg){ r2 = obj2Hull.x; } else { r2 = ((obj2Hull.x + obj2Hull.width) - Object2.colHullY.width); }; } else { if (obj2MoveNeg){ r1 = (-(obj2Hull.x) - Object2.colHullY.width); } else { r1 = (-(obj2Hull.x) - obj2Hull.width); }; if (obj1MoveNeg){ r2 = -(obj1Hull.x); } else { r2 = ((-(obj1Hull.x) - obj1Hull.width) + Object1.colHullY.width); }; }; overlap = (r1 - r2); if ((((((overlap == 0)) || (((!(Object1.fixed)) && ((((overlap)>0) ? overlap : -(overlap) > (obj1Hull.width * 0.8))))))) || (((!(Object2.fixed)) && ((((overlap)>0) ? overlap : -(overlap) > (obj2Hull.width * 0.8))))))){ obj2Hull.x = (obj2Hull.x - ox2); obj2Hull.y = (obj2Hull.y - oy2); } else { hit = true; sv1 = Object2.velocity.x; sv2 = Object1.velocity.x; if (((!(Object1.fixed)) && (Object2.fixed))){ if (Object1._group){ Object1.reset((Object1.x - overlap), Object1.y); } else { Object1.x = (Object1.x - overlap); }; } else { if (((Object1.fixed) && (!(Object2.fixed)))){ if (Object2._group){ Object2.reset((Object2.x + overlap), Object2.y); } else { Object2.x = (Object2.x + overlap); }; } else { if (((!(Object1.fixed)) && (!(Object2.fixed)))){ overlap = (overlap / 2); if (Object1._group){ Object1.reset((Object1.x - overlap), Object1.y); } else { Object1.x = (Object1.x - overlap); }; if (Object2._group){ Object2.reset((Object2.x + overlap), Object2.y); } else { Object2.x = (Object2.x + overlap); }; sv1 = (sv1 / 2); sv2 = (sv2 / 2); }; }; }; if (p1hn2){ Object1.hitRight(Object2, sv1); Object2.hitLeft(Object1, sv2); } else { Object1.hitLeft(Object2, sv1); Object2.hitRight(Object1, sv2); }; if (((!(Object1.fixed)) && (!((overlap == 0))))){ if (p1hn2){ obj1Hull.width = (obj1Hull.width - overlap); } else { obj1Hull.x = (obj1Hull.x - overlap); obj1Hull.width = (obj1Hull.width + overlap); }; Object1.colHullY.x = (Object1.colHullY.x - overlap); }; if (((!(Object2.fixed)) && (!((overlap == 0))))){ if (p1hn2){ obj2Hull.x = (obj2Hull.x + overlap); obj2Hull.width = (obj2Hull.width - overlap); } else { obj2Hull.width = (obj2Hull.width + overlap); }; Object2.colHullY.x = (Object2.colHullY.x + overlap); }; obj2Hull.x = (obj2Hull.x - ox2); obj2Hull.y = (obj2Hull.y - oy2); }; }; i2++; }; obj1Hull.x = (obj1Hull.x - ox1); obj1Hull.y = (obj1Hull.y - oy1); i1++; }; return (hit); } public static function collide(Object1:FlxObject, Object2:FlxObject):Boolean{ if ((((((((Object1 == null)) || (!(Object1.exists)))) || ((Object2 == null)))) || (!(Object2.exists)))){ return (false); }; quadTree = new FlxQuadTree(quadTreeBounds.x, quadTreeBounds.y, quadTreeBounds.width, quadTreeBounds.height); quadTree.add(Object1, FlxQuadTree.A_LIST); var match = (Object1 === Object2); if (!match){ quadTree.add(Object2, FlxQuadTree.B_LIST); }; var cx:Boolean = quadTree.overlap(!(match), solveXCollision); var cy:Boolean = quadTree.overlap(!(match), solveYCollision); return (((cx) || (cy))); } } }//package org.flixel
Section 139
//ItemText (src.Data.ItemText) package src.Data { public class ItemText { public static const TabletsText:Array = [Tablet1, Tablet2, Tablet3, Tablet4, Tablet5, Tablet6]; public static const BONES_INDEX:int = 2; private static const Bones2:String = "This is a right rear thigh bone, seemingly from a large four-legged mammal. It is hollow, like that of a flying creature, but very sturdy to support a large weight. A faint sheen to the surface indicates that this creature could metabolize metal to reinforce its skeleton."; private static const Rod4:String = ""I spoke with one of the Lorem today. I had heard of their false beings, but I asked for details. She spoke of Physics, who controls how everything moves, and of Logic, who can tell all truth from all falsehood. There is Biology, who guides our bodies, and Psychology, who guides our minds. The Lorem are very strange.""; private static const Tablet5:String = ""The Seecha were very confused when the first wisps of the Epiphany began to fall. They thought it was appearing from nowhere. But strangely, they are not disturbed or alarmed by the mental effects it has. They say that knowing what will be merely means that they need not waste effort on building any more.""; private static const Bones1:String = "This is a long tail bone that appears to be reptilian in origin. Its irregular density suggests that it was broken at some point, then fully healed. Extrapolating from bone structure in similar smaller reptiles, the tail must have been at least ten feet long."; private static const Bones4:String = "This is a complex bone that bears a similarity both to an avian shoulder blade and to one half of a mammalian hip bone. It is sturdy but very light, and appears to be able to support a third pair of limbs between the forelimbs and the hindlimbs of a large creature."; private static const Bones6:String = "This is a skull roughly three feet in length. The front of the skull is extended in a long, strong beak with teeth rooted in the jaw. The owner of the skull had enormous brain capacity, an excellent sense of smell, and was omnivorous."; private static const Ring3:String = "This is a mindfulness ring of Lorem design. It was in the dirt near a large dome. Engraved inside is: "BIOLOGY - She directs the functioning of our bodies and of all bodies. Through her, we live and exist and breathe. May we always be thankful for her gifts, and may we treat our flesh with the care it deserves.""; public static const RomanNumerals:Array = ["I", "II", "III", "IV", "V", "VI"]; private static const Bones3:String = "This is a forearm bone that shows qualities of both mammalian and avian origins. It is exceptionally long, and marked with pits that suggest long flight feathers. This bone could have been part of a pair of wings that spanned over fifteen feet."; public static const MapTitle:String = "Shattered Diagram"; private static const Tally6:String = "This is a tally bead of Seecha design, marked with a symbol for "thirty-twos." It was found near a large device shaped like a triangular gateway. It is made from a solid pearl, unmarred except for the holes that let it be threaded onto a string."; public static const TABLET_INDEX:int = 0; private static const Ring1:String = "This is a mindfulness ring of Lorem design. It was found beside the path near the southern wall of the Looming site. Engraved inside is: "CHEMISTRY - She guides mixtures and solutions, the flames of all colors and the gases we breathe. Through her, we may break apart what seems permanent and rejoin it in new forms. May we refine ourselves in the same way.""; private static const Bones5:String = "This is a small wrist bone with a shape remarkably like that of a human wrist bone, but roughly twice the size. Its structure suggests that the hand of this animal had an opposable thumb."; private static const Ring6:String = "This is a mindfulness ring of Lorem design. It was near a collapsed arch over a path. Engraved inside is: "MATHEMATICS - She tallies and divides, separating the nothingness from the endless with an infinity of numbers. Through her, we may count all things and understand the colossal and the tiny. May we measure all things with clarity, and never falter in our equations.""; private static const Ring5:String = "This is a mindfulness ring of Lorem design. It was beside an upright stone hoop. Engraved inside is: "PHYSICS - She commands the movement of all things, that they fall to the ground and move across the earth. Through her, we may see the infinite glory hidden in white light or the calmness in a pendulum's swing. May we never forget the complexity that lurks beneath simplicity.""; public static const ItemTitles:Array = ["Lorem Tablet", "Seecha Rod", "Oarbor Bone", "Tally Bead", "Path Ring"]; public static const RODS_INDEX:int = 1; private static const Ring2:String = "This is a mindfulness ring of Lorem design. It was lying beside a washed-out portion of path. Engraved inside is: "LOGIC - She determines truth and falsehood. Through her, we reduce complexity to simplicity, and we ward against the dangers of unsound and invalid thought. May our minds be ever pure and keen, and may our emotions never lead our thoughts astray.""; private static const Ring4:String = "This is a mindfulness ring of Lorem design. It was to one side of a ruined colonnade. Engraved inside is: "PSYCHOLOGY - She organizes our minds, determining how we think and feel. Through her, we know the glory of sadness and the terror of pride. May we heed the warnings of our heart, and keep away the cold apathy of progress without passion.""; private static const Tally2:String = "This is a tally bead of Seecha design, marked with a symbol for "twos." It was found at the edge of a ruined mechanical area. It is silver, and etched with a sharp-edged frost-like pattern."; private static const Tally3:String = "This is a tally bead of Seecha design, marked with a symbol for "fours." It was found near a large arcing stone formation. It is beaten gold, and it is decorated with a flame pattern."; private static const Tally4:String = "This is a tally bead of Seecha design, marked with a symbol for "eights." It was found near a large decaying device on stilts with a snare-like structure on top. It is blown glass, colored with delicate blue helices."; private static const Tally5:String = "This is a tally bead of Seecha design, marked with a symbol for "sixteens." It was found on the edge of the Seecha territory. It is polished wood with a gear-like inlay of darker material."; public static const RING_INDEX:int = 4; private static const Rod2:String = ""Despite their strangeness, the Lorem are pleasant neighbors. They often invite us to their gatherings; although the food is simple, it is good. We have all learned to choose conversation topics that avoid their nonsense. Weather and mechanics are bad. Children and the strangenesses of Looming are better.""; private static const Tablet2:String = ""When we arrived here in Looming, the Seecha had already built one of their huge machines. One of us asked them how it worked. They could tell us what part did what, but not of the Theory behind it. They are a strange people, the Seecha. Instead of understanding a problem, they just build a machine attachment to fix it.""; private static const Tablet4:String = ""The Seecha are very brave, but perhaps foolhardy. A group of them has built a machine to try and capture the Oarbor. They do not understand that the Oarbor flies, but they know enough to put the machine on tall stilts. We do not think that the Seecha will succeed; our Calculations suggest very low chances.""; private static const Rod6:String = ""As we prepare to leave, I have learned that the Lorem are moving on as well. The Epiphany said they would, but the Lorem would not believe it and refused to go. But their stress and confusion proved too much, it seems. They are moving on to a place where what they see as impossible does not occur.""; private static const Tablet6:String = ""The Seecha have packed up to leave Looming. Since they saw that they were going to leave, they had no reason to stay. With this baffling explanation, they left, taking with them the hearts and other useful pieces of their great machines. The Epiphany, it seems, was merely an inconvenience to them.""; private static const Rod1:String = ""A group of people arrived today. They call themselves the Lorem. They seem to revere strange beings which do not exist, called names like Logic and Physics and Chemistry. They claim these beings make them smart, but they cannot build even simple machines. They spend much of their time discussing these fairy tales.""; private static const Rod3:String = ""Some Lorem youths came by today, asking about a machine. When we explained how it worked, they asked how each piece worked, and so on, until we could only throw up our hands in frustration. They are like children, in a way, asking 'Why?' repeatedly until the parent is fed up and stomps away.""; private static const Rod5:String = ""Strange things like cobwebs began appearing today. The Oarbor monster said they were the Epiphany. Touching them gave us visions of the past and the future, a flash of insight like the inspiration for a machine design. The Lorem do not trust what they cannot calculate, so they are very upset; at least one of them has collapsed in shock.""; public static const MAP_INDEX:int = 5; private static const Tablet1:String = ""Our neighbors the Seecha are strange people. They do not believe in the sky. We have pointed to it, drawn pictures, even used arguments of Logic, and they refuse to admit it exists. They spend their days never looking above the horizon, never seeing the stars.""; private static const Tablet3:String = ""In the early days in Looming, some of us tried to teach the Seecha of the Principles, but they said if they could not see it or feel it, it was not real. We tried to show them the Principles, but they said we were simply showing them toys and simple machines.""; private static const Tally1:String = "This is a tally bead of Seecha design, marked with a symbol for "ones." It was found near a path intersection. It is made of copper, and engraved with subtle waves and a stylized fish."; public static const TALLY_INDEX:int = 3; public static var TallyText:Array = [Tally1, Tally2, Tally3, Tally4, Tally5, Tally6]; public static var RingText:Array = [Ring1, Ring2, Ring3, Ring4, Ring5, Ring6]; public static var ItemTexts:Array = [TabletsText, RodsText, BonesText, TallyText, RingText]; public static var BonesText:Array = [Bones1, Bones2, Bones3, Bones4, Bones5, Bones6]; public static var RodsText:Array = [Rod1, Rod2, Rod3, Rod4, Rod5, Rod6]; public function ItemText(){ super(); } public static function get MapText():String{ var o:Object; var totalMapPieces:int; for each (o in SaveData.collection[ItemText.MAP_INDEX]) { if (o){ totalMapPieces++; }; }; if (totalMapPieces == 1){ return ("You've found a piece of clay with markings on it. It seems to be part of a diagram."); }; if (totalMapPieces <= 3){ return ("You have some pieces of a diagram. It's not clear what it represents."); }; if (totalMapPieces < 6){ return ("The diagram is nearly complete. With some searching, you should be able to find the rest of it."); }; return ("All the pieces to the diagram have been found. It depicts four labeled circles, with corresponding directions."); } } }//package src.Data
Section 140
//Levels (src.Data.Levels) package src.Data { public class Levels { public static const WORLD:XML = <level> <backgrounds> <stamp x="3137" y="5682" index="1"/> <stamp x="3137" y="5894" index="4"/> <stamp x="3137" y="5426" index="0"/> <stamp x="3139" y="5171" index="1"/> <stamp x="3129" y="4915" index="1"/> <stamp x="3068" y="4662" index="5"/> <stamp x="3016" y="4739" index="4"/> <stamp x="3124" y="4411" index="1"/> <stamp x="3127" y="4163" index="0"/> <stamp x="3131" y="4075" index="4"/> <stamp x="2567" y="5552" index="0"/> <stamp x="2339" y="5592" index="3"/> <stamp x="2567" y="5764" index="4"/> <stamp x="3320" y="4726" index="3"/> <stamp x="3576" y="4726" index="2"/> <stamp x="3828" y="4725" index="2"/> <stamp x="4080" y="4726" index="3"/> <stamp x="4276" y="4731" index="4"/> <stamp x="4410" y="4727" index="4"/> <stamp x="4494" y="4730" index="2"/> <stamp x="4746" y="4729" index="3"/> <stamp x="5001" y="4729" index="2"/> <stamp x="5225" y="4722" index="4"/> <stamp x="5228" y="4487" index="0"/> <stamp x="5231" y="4235" index="1"/> <stamp x="5240" y="3983" index="1"/> <stamp x="5240" y="3727" index="0"/> <stamp x="5244" y="3475" index="0"/> <stamp x="5249" y="3223" index="0"/> <stamp x="5250" y="2971" index="1"/> <stamp x="5192" y="2720" index="5"/> <stamp x="5444" y="2789" index="2"/> <stamp x="5664" y="2790" index="4"/> <stamp x="5256" y="2677" index="4"/> <stamp x="4940" y="2781" index="3"/> <stamp x="4684" y="2776" index="2"/> <stamp x="4432" y="2779" index="2"/> <stamp x="4176" y="2773" index="2"/> <stamp x="3920" y="2709" index="5"/> <stamp x="3986" y="2958" index="1"/> <stamp x="3982" y="3170" index="4"/> <stamp x="3983" y="4001" index="6"/> <stamp x="2095" y="5589" index="3"/> <stamp x="1999" y="5582" index="4"/> <stamp x="2567" y="5300" index="0"/> <stamp x="2571" y="5200" index="4"/> <stamp x="2479" y="5316" index="6"/> <stamp x="4848" y="4839" index="0"/> <stamp x="4852" y="5051" index="4"/> <stamp x="3984" y="2462" index="0"/> <stamp x="3989" y="2210" index="1"/> <stamp x="4003" y="1958" index="0"/> <stamp x="4009" y="1710" index="0"/> <stamp x="4019" y="1458" index="1"/> <stamp x="4023" y="1374" index="4"/> <stamp x="3789" y="1643" index="3"/> <stamp x="2498" y="2377" index="6"/> <stamp x="3844" y="2770" index="4"/> <stamp x="3272" y="2777" index="8"/> <stamp x="3585" y="2770" index="8"/> <stamp x="3701" y="1636" index="4"/> <stamp x="3660" y="1647" index="7"/> <stamp x="3442" y="1628" index="8"/> <stamp x="3471" y="1667" index="8"/> <stamp x="3170" y="1650" index="8"/> <stamp x="2793" y="1637" index="8"/> <stamp x="2536" y="1655" index="7"/> <stamp x="2808" y="5783" index="8"/> <stamp x="2725" y="5810" index="8"/> <stamp x="2891" y="5772" index="8"/> <stamp x="1932" y="5615" index="7"/> <stamp x="1935" y="5579" index="7"/> <stamp x="1931" y="5550" index="7"/> <stamp x="1904" y="5585" index="7"/> <stamp x="1817" y="5579" index="7"/> <stamp x="2400" y="5318" index="7"/> <stamp x="2443" y="3201" index="7"/> <stamp x="2480" y="3120" index="6"/> <stamp x="2504" y="3062" index="7"/> <stamp x="2128" y="3882" index="8"/> <stamp x="1926" y="3909" index="8"/> <stamp x="2034" y="4245" index="0"/> <stamp x="2046" y="4169" index="4"/> <stamp x="2034" y="4453" index="4"/> <stamp x="2085" y="4108" index="7"/> <stamp x="1965" y="4497" index="7"/> <stamp x="1990" y="4501" index="7"/> <stamp x="1958" y="4481" index="7"/> <stamp x="3003" y="2832" index="6"/> <stamp x="5480" y="4862" index="6"/> <stamp x="5418" y="4827" index="7"/> <stamp x="5452" y="4816" index="7"/> <stamp x="5504" y="4931" index="7"/> <stamp x="5540" y="4888" index="7"/> <stamp x="3223" y="5520" index="8"/> <stamp x="3231" y="5552" index="8"/> <stamp x="3425" y="5525" index="8"/> <stamp x="3727" y="5546" index="8"/> <stamp x="4790" y="4560" index="7"/> <stamp x="4813" y="4508" index="7"/> </backgrounds> <sceneries> <scenery x="3262" y="5851" index="0"/> <scenery x="3014" y="5181" index="2"/> <scenery x="3183" y="4121" index="1"/> <scenery x="3887" y="5730" index="3"/> <scenery x="4020" y="5671" index="3"/> <scenery x="4003" y="5755" index="3"/> <scenery x="3835" y="5803" index="3"/> <scenery x="2374" y="5741" index="4"/> <scenery x="4772" y="5459" index="5"/> <scenery x="1973" y="4834" index="6"/> <scenery x="2497" y="4616" index="13"/> <scenery x="2746" y="4616" index="13"/> <scenery x="1868" y="4118" index="12"/> <scenery x="2569" y="2987" index="4"/> <scenery x="2409" y="2980" index="12"/> <scenery x="4850" y="4445" index="9"/> <scenery x="4880" y="3102" index="10"/> <scenery x="4880" y="3217" index="10"/> <scenery x="4883" y="3350" index="10"/> <scenery x="4985" y="3103" index="11"/> <scenery x="4986" y="3217" index="11"/> <scenery x="4989" y="3351" index="11"/> <scenery x="4260" y="1735" index="8"/> <scenery x="4141" y="2017" index="3"/> <scenery x="3985" y="2019" index="3"/> <scenery x="3715" y="2061" index="13"/> <scenery x="5677" y="5143" index="3"/> <scenery x="5782" y="5145" index="3"/> <scenery x="5687" y="5198" index="3"/> <scenery x="5774" y="5199" index="3"/> <scenery x="5680" y="5268" index="3"/> <scenery x="5780" y="5271" index="3"/> <scenery x="5669" y="5339" index="3"/> <scenery x="5792" y="5341" index="3"/> <scenery x="5518" y="6038" index="3"/> <scenery x="4726" y="2090" index="3"/> <scenery x="5148" y="1958" index="3"/> <scenery x="5263" y="1678" index="3"/> <scenery x="5640" y="1566" index="3"/> <scenery x="5759" y="1392" index="3"/> <scenery x="5819" y="1392" index="3"/> <scenery x="3336" y="2707" index="14"/> <scenery x="2274" y="1834" index="7"/> <scenery x="2283" y="1597" index="7"/> <scenery x="1746" y="1586" index="7"/> <scenery x="1736" y="1831" index="7"/> </sceneries> <items> <item x="3275" y="5936" type="2" index="0"/> <item x="3918" y="5725" type="0" index="0"/> <item x="3275" y="5229" type="4" index="0"/> <item x="3109" y="4689" type="3" index="0"/> <item x="3249" y="3936" type="2" index="1"/> <item x="4399" y="4744" type="4" index="1"/> <item x="5358" y="4614" type="5" index="0"/> <item x="2528" y="5748" type="1" index="0"/> <item x="1990" y="5653" type="3" index="4"/> <item x="2710" y="5314" type="3" index="1"/> <item x="2024" y="4176" type="5" index="2"/> <item x="2217" y="3918" type="1" index="2"/> <item x="2439" y="3832" type="5" index="5"/> <item x="2607" y="3564" type="2" index="5"/> <item x="2581" y="3041" type="1" index="4"/> <item x="5022" y="5073" type="0" index="2"/> <item x="4824" y="4452" type="5" index="1"/> <item x="4954" y="3402" type="0" index="5"/> <item x="5039" y="3077" type="4" index="4"/> <item x="5237" y="2952" type="2" index="2"/> <item x="5795" y="2801" type="5" index="4"/> <item x="4312" y="1760" type="5" index="3"/> <item x="4196" y="2040" type="4" index="5"/> <item x="3683" y="2035" type="1" index="5"/> <item x="5756" y="5159" type="0" index="4"/> <item x="5847" y="5339" type="4" index="3"/> <item x="5548" y="6008" type="2" index="4"/> <item x="2809" y="4589" type="2" index="3"/> <item x="2476" y="4628" type="1" index="1"/> <item x="3017" y="5072" type="3" index="2"/> <item x="3248" y="2840" type="3" index="5"/> <item x="4767" y="5325" type="4" index="2"/> <item x="5099" y="5526" type="0" index="1"/> <item x="1945" y="4855" type="1" index="3"/> <item x="2211" y="4682" type="3" index="3"/> <item x="5452" y="6107" type="0" index="3"/> </items> <signposts> <signpost x="4043" y="3231" textindex="0" hidden="false"/> <signpost x="4043" y="4058" textindex="1" hidden="true"/> <signpost x="4043" y="6063" textindex="2" hidden="true"/> <signpost x="2630" y="6063" textindex="3" hidden="true"/> <signpost x="2645" y="4620" textindex="4" hidden="true"/> <signpost x="5518" y="6063" textindex="5" hidden="true"/> <signpost x="2559" y="2435" textindex="6" hidden="true"/> <signpost x="4415" y="2435" textindex="7" hidden="true"/> <signpost x="5792" y="1386" textindex="8" hidden="true"/> <signpost x="2050" y="1620" textindex="9" hidden="false"/> <signpost x="965" y="6370" textindex="12" hidden="true"/> <signpost x="6048" y="1305" textindex="11" hidden="true"/> <signpost x="965" y="1305" textindex="10" hidden="true"/> <signpost x="6048" y="6370" textindex="13" hidden="true"/> <signpost x="3530" y="2725" textindex="14" hidden="false"/> <signpost x="4975" y="5525" textindex="15" hidden="false"/> <signpost x="3115" y="5915" textindex="16" hidden="false"/> </signposts> </level> ; public function Levels(){ super(); } } }//package src.Data
Section 141
//Narration (src.Data.Narration) package src.Data { public class Narration { public static const EndingRetreat:String = "I could not stay today. It is all too much for me, January: the dark ground and the dry, towering geology. I will return another day, after steeling myself with your presence. Yours, September"; public static const EndingEpiphany:String = "I have experienced an Epiphany, dear January. I have seen time spread out before me like a ribbon, and I could see the end of it. Not the end of me; I know only of my time in Looming, and I know that the end of it will not be the end of me. Nor of us; as far as I can see, we are as one. But I never needed prophecy to know that. I come home tonight. I have seen myself leaving. Yours, September"; public static const Endings:Array = [EndingRetreat, EndingProgress, EndingExplore, EndingSeechaBeads, EndingLoremRings, EndingBones, EndingMap, EndingEpiphany, EndingSecret]; private static const TenthEntrance:String = "January, my love: As I stand in Looming, it is difficult to imagine you, living your life, back where things are alive and touched by your warmth. I am a fool, perhaps, to spend my time in this wasteland instead of by your side. Please, forgive me my foolishness."; public static const EndingBones:String = "The Oarbor knew it would die, and when. It knew to the hour and the second. Would you want to know the same, January? Would it make you cherish every moment more, or stain the time you have left with grief? I can not say, myself. All I know is that I would continue coming home to you, as I do so now. Yours, September"; private static const SixthEntrance:String = "January, my love: Coming to Looming again and again wears on me. My clothing will always bear traces of the dust here, I fear. My shoes will always bear its soil. My nose will always itch with the smell of bones."; private static const FourthEntrance:String = "January, my love: I almost could not stand to step through to Looming today. How I wish I could stay with you forever, but my work conspires to drive me away. Soon, I will understand the secrets of this place, and I will never have to return here again."; public static const EndingMap:String = "Mystery, January, is what drives us forward. We seek answers to questions, and new questions to ask. When we see a symbol, we wonder what it means; when we see a hill, we want to see what is on the other side. You are a mystery to me, January, a collection of mysteries, and there is nothing I adore more than unraveling them. I will make more progress soon, when I arrive home. Yours, September"; public static const EndingProgress:String = "I have spent much time here, January, but it seems as if I have made little progress. To be sure, I have seen new things, catalogued new facts. But I feel as if I have resolved no great issues this time. Perhaps next visit. I will be home soon. Yours, September"; private static const ThirdEntrance:String = "January, my love: The time I spend with you seems only moments compared to my time spent in Looming. How I wish it were the opposite. There is a feeling of inevitability about this place, that I fear will infect the rest of my life. Looming tells a story, but it is a story that has ended long ago. Despite all that, my dear, I know that our story, yours and mine, is only just beginning."; public static const Entrances:Array = [FirstEntrance, SecondEntrance, ThirdEntrance, FourthEntrance, FifthEntrance, SixthEntrance, SeventhEntrance, EighthEntrance, NinthEntrance, TenthEntrance, SubsequentEntrance]; private static const FirstEntrance:String = "January, my love: I have entered this new place called Looming for the first time. It is said to be a dead place, abandoned by everything but time and shadows. I will see what I can learn here, and then return to you as swiftly as I can."; public static const EndingSecret:String = "Even the dead tell stories, January. Among the rubble and the ashes and the bones and the watching spires, there are glimmers of knowledge and secrets that show what was and will be. That is Looming, January: a snapshot of the end of time, a place for remembering and discovering. I love you, January. I hope that we will be remembered in the same way that Looming remembers those who briefly stopped here. I hurry home. Yours, September"; private static const SecondEntrance:String = "January, my love: I have once again arrived in Looming. The second time is more imposing than the first. Then, I had heard only stories. Now, I know what awaits me: nothing. Nothing but bones and soil and aged relics. I long to return to your bright vitality, and I will be home again soon."; private static const SubsequentEntrance:String = "January, my love: Another visit to Looming, but my thoughts are always of you. I will be home again soon, my darling. Think of me until then."; public static const EndingSeechaBeads:String = "The Seecha could not, would not, see the sky, January. I pity them. For how barren Looming is, the sky here is as beautiful as any I have ever seen. Perhaps you will be able to join me some time. We can discuss it when I get home. Yours, September"; private static const FifthEntrance:String = "January, my love: I forgot to water the garden before I left. Would you check to make sure the plants are doing well?"; private static const EighthEntrance:String = "January, my love: Sometimes I think that it would be better to bring you along when I go to Looming. But it would be a heresy, I think, to put your brilliance among this desolation. Heresy against you, and against this place."; public static const EndingLoremRings:String = "The faith of the Lorem is something I envy, January. They believed so strongly, more strongly than I believe in anything. Anything except my love for you. Now, I make my pilgrimage back to your arms. May it be short. Yours, September"; private static const SeventhEntrance:String = "January, my love: I hope that you found the present I left behind. I wish that I could have left myself there in its place. But my place is here in Looming, for now. There is always more to learn."; public static const EndingExplore:String = "My feet are tired, January. It feels as if I have traipsed all through this place, with its rough paths and barren wastes. A broad area, yet still so small; there is an entire world outside the fence, but I, with the remnants of these people, am penned in a much smaller universe. You, though, are my true universe. Welcome me warmly when I arrive. Yours, September"; private static const NinthEntrance:String = "January, my love: I remember the illustrations in the book we looked at together. They were so warm, so vibrant; the colors glowed on the page. It would not take such colors to illustrate Looming. Bleached paper and gray ink is enough."; public function Narration(){ super(); } } }//package src.Data
Section 142
//SaveData (src.Data.SaveData) package src.Data { import org.flixel.*; import flash.net.*; import com.newgrounds.*; public class SaveData { private static const ITEM_TYPES:int = 6; public static var endings:Array = getEndings(); private static var save:SharedObject = SharedObject.getLocal("Looming", "/"); public static var collection:Array = getCollection(); public function SaveData(){ super(); } public static function checkPickupMedals():void{ var a:Array; var i:Boolean; var totalItems:uint; for each (a in collection) { for each (i in a) { if (i == true){ totalItems++; }; }; }; if (totalItems >= 6){ API.unlockMedal("Excavator"); }; if (totalItems >= 18){ API.unlockMedal("Archaeologist"); }; if (allCollected(ItemText.TALLY_INDEX)){ API.unlockMedal("Binary Abacist"); }; if (allCollected(ItemText.MAP_INDEX)){ API.unlockMedal("Lithocryptologist"); }; if (allCollected(ItemText.TABLET_INDEX)){ API.unlockMedal("Lorem Archivist"); }; if (allCollected(ItemText.RING_INDEX)){ API.unlockMedal("Priest of Science"); }; if (allCollected(ItemText.RODS_INDEX)){ API.unlockMedal("Seecha Expert"); }; if (allCollected(ItemText.BONES_INDEX)){ API.unlockMedal("Xenopaleontologist"); }; } public static function incrementEntrance():void{ var _local1 = save.data; var _local2 = "EntranceIndex"; var _local3 = (_local1[_local2] + 1); _local1[_local2] = _local3; } public static function getEntranceIndex():int{ var ret:Number = save.data["EntranceIndex"]; if (isNaN(ret)){ ret = 0; save.data["EntranceIndex"] = 0; }; return (ret); } public static function resetSaves():void{ if (FlxG.debug){ trace("Clearing saves."); }; save.clear(); } public static function allCollected(type:int):Boolean{ var i:int; while (i < ITEM_TYPES) { if (!collection[type][i]){ return (false); }; i++; }; trace((("All " + type) + " collected!")); return (true); } public static function pickupItem(type:int, index:int):void{ collection[type][index] = true; } private static function getCollection():Array{ var i:int; var c:Array = save.data["Collection"]; if (c == null){ c = new Array(); save.data["Collection"] = c; i = 0; while (i < ITEM_TYPES) { c.push(new Array()); i++; }; }; return (c); } public static function get numEndings():int{ var e:Boolean; var ret:int; for each (e in endings) { if (e){ ret++; }; }; return (ret); } private static function getEndings():Array{ var c:Array = save.data["Endings"]; if (c == null){ c = new Array(); save.data["Endings"] = c; }; return (c); } public static function collectAll():void{ var j:int; var i:int; while (i < ITEM_TYPES) { j = 0; while (j < ITEM_TYPES) { collection[i][j] = true; j++; }; i++; }; trace("ALL ITEMS COLLECTED!"); } } }//package src.Data
Section 143
//CollectionItem (src.Interface.CollectionItem) package src.Interface { import org.flixel.*; import src.Data.*; public class CollectionItem extends FlxSprite { private var index:int; private var currSprite:Class; private var type:int; private static var SprThumbRing:Class = CollectionItem_SprThumbRing; private static var SprThumbBone:Class = CollectionItem_SprThumbBone; private static var SprThumbRod:Class = CollectionItem_SprThumbRod; private static var SprThumbTablet:Class = CollectionItem_SprThumbTablet; private static var SprThumbSkull:Class = CollectionItem_SprThumbSkull; private static var SprThumbMissing:Class = CollectionItem_SprThumbMissing; private static var SprThumbWrist:Class = CollectionItem_SprThumbWrist; private static var SprThumbTally:Class = CollectionItem_SprThumbTally; private static var SprThumbHip:Class = CollectionItem_SprThumbHip; private static var SprThumbMap:Class = CollectionItem_SprThumbMap; public function CollectionItem(X:int, Y:int, type:int, index:int){ this.type = type; this.index = index; super(X, Y, null); updateSprite(); } public function updateSprite():void{ var sprite:Class; if (SaveData.collection[type][index] != true){ sprite = SprThumbMissing; } else { switch (type){ case ItemText.TABLET_INDEX: sprite = SprThumbTablet; break; case ItemText.RODS_INDEX: sprite = SprThumbRod; break; case ItemText.BONES_INDEX: switch (index){ case 3: sprite = SprThumbHip; break; case 4: sprite = SprThumbWrist; break; case 5: sprite = SprThumbSkull; break; default: sprite = SprThumbBone; break; }; break; case ItemText.TALLY_INDEX: sprite = SprThumbTally; break; case ItemText.RING_INDEX: sprite = SprThumbRing; break; case ItemText.MAP_INDEX: sprite = SprThumbMap; break; }; }; if (sprite != currSprite){ loadGraphic(sprite); calcFrame(); }; } } }//package src.Interface
Section 144
//CollectionItem_SprThumbBone (src.Interface.CollectionItem_SprThumbBone) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbBone extends BitmapAsset { } }//package src.Interface
Section 145
//CollectionItem_SprThumbHip (src.Interface.CollectionItem_SprThumbHip) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbHip extends BitmapAsset { } }//package src.Interface
Section 146
//CollectionItem_SprThumbMap (src.Interface.CollectionItem_SprThumbMap) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbMap extends BitmapAsset { } }//package src.Interface
Section 147
//CollectionItem_SprThumbMissing (src.Interface.CollectionItem_SprThumbMissing) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbMissing extends BitmapAsset { } }//package src.Interface
Section 148
//CollectionItem_SprThumbRing (src.Interface.CollectionItem_SprThumbRing) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbRing extends BitmapAsset { } }//package src.Interface
Section 149
//CollectionItem_SprThumbRod (src.Interface.CollectionItem_SprThumbRod) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbRod extends BitmapAsset { } }//package src.Interface
Section 150
//CollectionItem_SprThumbSkull (src.Interface.CollectionItem_SprThumbSkull) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbSkull extends BitmapAsset { } }//package src.Interface
Section 151
//CollectionItem_SprThumbTablet (src.Interface.CollectionItem_SprThumbTablet) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbTablet extends BitmapAsset { } }//package src.Interface
Section 152
//CollectionItem_SprThumbTally (src.Interface.CollectionItem_SprThumbTally) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbTally extends BitmapAsset { } }//package src.Interface
Section 153
//CollectionItem_SprThumbWrist (src.Interface.CollectionItem_SprThumbWrist) package src.Interface { import mx.core.*; public class CollectionItem_SprThumbWrist extends BitmapAsset { } }//package src.Interface
Section 154
//CollectionOverlay (src.Interface.CollectionOverlay) package src.Interface { import org.flixel.*; import src.*; import src.Data.*; public class CollectionOverlay extends FlxGroup { private var items:Array; private var _showing:Boolean;// = false private var currRow:int;// = 0 private var currCol:int;// = 0 private var selectFrame:FlxSprite; private static const ITEM_SPACING:int = 75; private static const NUM_ITEMS:int = 6; private static const ITEM_SPRITE_WIDTH:int = 65; private static const MARGIN:int = 15; private static var SprFrame:Class = CollectionOverlay_SprFrame; public function CollectionOverlay(){ var m:FlxSprite; var j:int; super(); this.x = (((FlxG.width - (ITEM_SPACING * NUM_ITEMS)) + (ITEM_SPACING - ITEM_SPRITE_WIDTH)) / 2); this.y = (((FlxG.height - (ITEM_SPACING * NUM_ITEMS)) + (ITEM_SPACING - ITEM_SPRITE_WIDTH)) / 2); this.scrollFactor.x = 0; this.scrollFactor.y = 0; var background:FlxSprite = new FlxSprite(-(MARGIN), -(MARGIN)); background.createGraphic((((ITEM_SPACING * NUM_ITEMS) + MARGIN) + MARGIN), (((ITEM_SPACING * NUM_ITEMS) + MARGIN) + MARGIN), 3137339392); background.scrollFactor.x = 0; background.scrollFactor.y = 0; background.alpha = 0; this.add(background); items = new Array(); var i:int; while (i < NUM_ITEMS) { items[i] = new Array(); j = 0; while (j < NUM_ITEMS) { items[i][j] = new CollectionItem((i * ITEM_SPACING), (j * ITEM_SPACING), j, i); items[i][j].scrollFactor.x = 0; items[i][j].scrollFactor.y = 0; this.add(items[i][j]); j++; }; i++; }; selectFrame = new FlxSprite(0, 0, SprFrame); selectFrame.scrollFactor.x = 0; selectFrame.scrollFactor.y = 0; selectFrame.alpha = 0; this.add(selectFrame); positionCursor(); for each (m in this.members) { m.alpha = 0; }; this.active = false; } public function get showing():Boolean{ return (_showing); } override public function update():void{ var m:FlxSprite; super.update(); if (!showing){ for each (m in this.members) { m.alpha = (m.alpha - 0.05); }; if (members[0].alpha <= 0){ active = false; }; } else { if (members[0].alpha < 1){ for each (m in this.members) { m.alpha = (m.alpha + 0.05); }; }; if (((FlxG.keys.justPressed("LEFT")) && ((currCol > 0)))){ currCol--; }; if (((FlxG.keys.justPressed("RIGHT")) && ((currCol < (NUM_ITEMS - 1))))){ currCol++; }; if (((FlxG.keys.justPressed("UP")) && ((currRow > 0)))){ currRow--; }; if (((FlxG.keys.justPressed("DOWN")) && ((currRow < (NUM_ITEMS - 1))))){ currRow++; }; positionCursor(); if (((FlxG.keys.justPressed("X")) && ((SaveData.collection[currRow][currCol] == true)))){ ItemOverlay.showItem(currRow, currCol); this.hide(); }; if (FlxG.keys.justPressed("C")){ FlxG.keys.reset(); this.hide(); PlayState.player.frozen = false; }; }; } private function hide():void{ _showing = false; } public function show():void{ var j:int; PlayState.player.frozen = true; var i:int; while (i < NUM_ITEMS) { j = 0; while (j < NUM_ITEMS) { items[i][j].updateSprite(); j++; }; i++; }; _showing = true; this.active = true; } private function positionCursor():void{ selectFrame.x = (((currCol * ITEM_SPACING) + ((ITEM_SPRITE_WIDTH - ITEM_SPACING) / 2)) + this.x); selectFrame.y = (((currRow * ITEM_SPACING) + ((ITEM_SPRITE_WIDTH - ITEM_SPACING) / 2)) + this.y); } } }//package src.Interface
Section 155
//CollectionOverlay_SprFrame (src.Interface.CollectionOverlay_SprFrame) package src.Interface { import mx.core.*; public class CollectionOverlay_SprFrame extends BitmapAsset { } }//package src.Interface
Section 156
//CollectionReminder (src.Interface.CollectionReminder) package src.Interface { import org.flixel.*; public class CollectionReminder extends FlxSprite { private static var C_REMINDER:Class = CollectionReminder_C_REMINDER; public function CollectionReminder(){ super((FlxG.width - 30), (FlxG.height - 30)); this.loadGraphic(C_REMINDER); this.scrollFactor.x = 0; this.scrollFactor.y = 0; } } }//package src.Interface
Section 157
//CollectionReminder_C_REMINDER (src.Interface.CollectionReminder_C_REMINDER) package src.Interface { import mx.core.*; public class CollectionReminder_C_REMINDER extends BitmapAsset { } }//package src.Interface
Section 158
//ItemOverlay (src.Interface.ItemOverlay) package src.Interface { import org.flixel.*; import src.WorldObjects.*; import src.*; import src.Data.*; public class ItemOverlay extends FlxGroup { private var itemTitle:FlxText; private var itemDesc:FlxText; private var itemSpriteActive:Boolean;// = false private var mapsprites:Array; private var itemsprite:FlxSprite; private var _displaying:Boolean;// = false private static const ITEMDESC_WIDTH:int = 600; private static var SprMap0_1:Class = ItemOverlay_SprMap0_1; private static var SprItemBoneHip:Class = ItemOverlay_SprItemBoneHip; private static var SprMap2_1:Class = ItemOverlay_SprMap2_1; private static var mapspritefiles:Array = [[SprMap0_0, SprMap0_1], [SprMap1_0, SprMap1_1], [SprMap2_0, SprMap2_1]]; private static var SprItemBoneWrist:Class = ItemOverlay_SprItemBoneWrist; private static var SprMap2_0:Class = ItemOverlay_SprMap2_0; private static var SprItemTablet:Class = ItemOverlay_SprItemTablet; private static var SprSignpost:Class = ItemOverlay_SprSignpost; private static var SprItemBead:Class = ItemOverlay_SprItemBead; private static var SprItemRing:Class = ItemOverlay_SprItemRing; private static var SprItemRod:Class = ItemOverlay_SprItemRod; private static var SprItemBone:Class = ItemOverlay_SprItemBone; private static var singleton:ItemOverlay; private static var SprItemSkull:Class = ItemOverlay_SprItemSkull; private static var SprMap0_0:Class = ItemOverlay_SprMap0_0; private static var SprMap1_0:Class = ItemOverlay_SprMap1_0; private static var SprMap1_1:Class = ItemOverlay_SprMap1_1; public function ItemOverlay(){ var child:FlxSprite; var j:int; mapsprites = new Array(); super(); singleton = this; scrollFactor.x = 0; scrollFactor.y = 0; itemsprite = new FlxSprite(0, 25); itemsprite.scrollFactor.x = 0; itemsprite.scrollFactor.y = 0; this.add(itemsprite); itemTitle = new FlxText(0, 290, FlxG.width, "LOREM TABLET I"); itemTitle.size = 30; itemTitle.alignment = "center"; itemTitle.scrollFactor.x = 0; itemTitle.scrollFactor.y = 0; itemTitle.font = "Dominican"; this.add(itemTitle); var descBG:FlxSprite = new FlxSprite(((FlxG.width - 610) / 2), 330); descBG.createGraphic(610, 140, 3137339392); descBG.scrollFactor.x = 0; descBG.scrollFactor.y = 0; this.add(descBG); itemDesc = new FlxText(((FlxG.width - 600) / 2), 335, 600, " "); itemDesc.size = 18; itemDesc.alignment = "center"; itemDesc.scrollFactor.x = 0; itemDesc.scrollFactor.y = 0; itemDesc.font = "Dominican"; this.add(itemDesc); var i:int; while (i < 3) { mapsprites[i] = new Array(); j = 0; while (j < 2) { mapsprites[i][j] = new FlxSprite((160 + (i * 100)), (50 + (j * 100)), mapspritefiles[i][j]); mapsprites[i][j].scrollFactor.x = 0; mapsprites[i][j].scrollFactor.y = 0; mapsprites[i][j].visible = false; this.add(mapsprites[i][j]); j++; }; i++; }; for each (child in this.members) { child.alpha = 0; }; } public function get displaying():Boolean{ return (_displaying); } override public function update():void{ var child:FlxSprite; if (_displaying){ if (itemsprite.alpha < 1){ for each (child in this.members) { child.alpha = (child.alpha + 0.05); }; }; if (((itemSpriteActive) && ((itemsprite.alpha > 0)))){ itemsprite.visible = true; }; if (((FlxG.keys.justPressed("X")) || (FlxG.keys.justPressed("C")))){ if (FlxG.debug){ trace("hiding ItemOverlay"); }; _displaying = false; PlayState.player.frozen = false; PlayState.xReminder.flashing = false; PlayState.xReminder.visible = false; PlayState.cReminder.visible = true; }; } else { if (itemsprite.alpha > 0){ for each (child in this.members) { child.alpha = (child.alpha - 0.05); }; }; }; super.update(); } private function loadItemGraphic(graphic:Class):void{ itemsprite.loadGraphic(graphic); itemsprite.x = ((FlxG.width - itemsprite.width) / 2); itemsprite.y = (25 + ((250 - itemsprite.height) / 2)); } public static function showSignpost(signpost:SignPost):void{ var i:*; var signpost = signpost; PlayState.player.frozen = true; PlayState.cReminder.visible = false; PlayState.xReminder.visible = true; PlayState.xReminder.flashing = true; var _local3 = singleton; with (_local3) { itemsprite.visible = false; itemSpriteActive = true; loadItemGraphic(SprSignpost); itemTitle.text = ""; itemDesc.font = "DominicanSC"; itemDesc.text = signpost.signText; i = 0; while (i < 3) { mapsprites[i][0].visible = false; mapsprites[i][1].visible = false; i++; }; _displaying = true; FlxG.keys.reset(); }; } public static function showItem(itemtype:int, itemindex:int):void{ var i:*; var itemtype = itemtype; var itemindex = itemindex; PlayState.player.frozen = true; PlayState.cReminder.visible = false; PlayState.xReminder.visible = true; PlayState.xReminder.flashing = true; var _local4 = singleton; with (_local4) { if (itemtype != ItemText.MAP_INDEX){ itemSpriteActive = true; i = 0; while (i < 3) { mapsprites[i][0].visible = false; mapsprites[i][1].visible = false; i++; }; } else { itemSpriteActive = false; i = 0; while (i < 3) { mapsprites[i][0].visible = SaveData.collection[ItemText.MAP_INDEX][i]; mapsprites[i][1].visible = SaveData.collection[ItemText.MAP_INDEX][(3 + i)]; i++; }; }; itemsprite.visible = false; switch (itemtype){ case ItemText.TABLET_INDEX: loadItemGraphic(SprItemTablet); break; case ItemText.BONES_INDEX: switch (itemindex){ case 3: loadItemGraphic(SprItemBoneHip); break; case 4: loadItemGraphic(SprItemBoneWrist); break; case 5: loadItemGraphic(SprItemSkull); break; default: loadItemGraphic(SprItemBone); break; }; break; case ItemText.RODS_INDEX: loadItemGraphic(SprItemRod); break; case ItemText.RING_INDEX: loadItemGraphic(SprItemRing); break; case ItemText.TALLY_INDEX: loadItemGraphic(SprItemBead); break; }; itemDesc.font = "Dominican"; if (itemtype != ItemText.MAP_INDEX){ itemTitle.text = ((ItemText.ItemTitles[itemtype] + " ") + ItemText.RomanNumerals[itemindex]); itemDesc.text = ItemText.ItemTexts[itemtype][itemindex]; } else { itemTitle.text = ItemText.MapTitle; itemDesc.text = ItemText.MapText; }; _displaying = true; }; } } }//package src.Interface
Section 159
//ItemOverlay_SprItemBead (src.Interface.ItemOverlay_SprItemBead) package src.Interface { import mx.core.*; public class ItemOverlay_SprItemBead extends BitmapAsset { } }//package src.Interface
Section 160
//ItemOverlay_SprItemBone (src.Interface.ItemOverlay_SprItemBone) package src.Interface { import mx.core.*; public class ItemOverlay_SprItemBone extends BitmapAsset { } }//package src.Interface
Section 161
//ItemOverlay_SprItemBoneHip (src.Interface.ItemOverlay_SprItemBoneHip) package src.Interface { import mx.core.*; public class ItemOverlay_SprItemBoneHip extends BitmapAsset { } }//package src.Interface
Section 162
//ItemOverlay_SprItemBoneWrist (src.Interface.ItemOverlay_SprItemBoneWrist) package src.Interface { import mx.core.*; public class ItemOverlay_SprItemBoneWrist extends BitmapAsset { } }//package src.Interface
Section 163
//ItemOverlay_SprItemRing (src.Interface.ItemOverlay_SprItemRing) package src.Interface { import mx.core.*; public class ItemOverlay_SprItemRing extends BitmapAsset { } }//package src.Interface
Section 164
//ItemOverlay_SprItemRod (src.Interface.ItemOverlay_SprItemRod) package src.Interface { import mx.core.*; public class ItemOverlay_SprItemRod extends BitmapAsset { } }//package src.Interface
Section 165
//ItemOverlay_SprItemSkull (src.Interface.ItemOverlay_SprItemSkull) package src.Interface { import mx.core.*; public class ItemOverlay_SprItemSkull extends BitmapAsset { } }//package src.Interface
Section 166
//ItemOverlay_SprItemTablet (src.Interface.ItemOverlay_SprItemTablet) package src.Interface { import mx.core.*; public class ItemOverlay_SprItemTablet extends BitmapAsset { } }//package src.Interface
Section 167
//ItemOverlay_SprMap0_0 (src.Interface.ItemOverlay_SprMap0_0) package src.Interface { import mx.core.*; public class ItemOverlay_SprMap0_0 extends BitmapAsset { } }//package src.Interface
Section 168
//ItemOverlay_SprMap0_1 (src.Interface.ItemOverlay_SprMap0_1) package src.Interface { import mx.core.*; public class ItemOverlay_SprMap0_1 extends BitmapAsset { } }//package src.Interface
Section 169
//ItemOverlay_SprMap1_0 (src.Interface.ItemOverlay_SprMap1_0) package src.Interface { import mx.core.*; public class ItemOverlay_SprMap1_0 extends BitmapAsset { } }//package src.Interface
Section 170
//ItemOverlay_SprMap1_1 (src.Interface.ItemOverlay_SprMap1_1) package src.Interface { import mx.core.*; public class ItemOverlay_SprMap1_1 extends BitmapAsset { } }//package src.Interface
Section 171
//ItemOverlay_SprMap2_0 (src.Interface.ItemOverlay_SprMap2_0) package src.Interface { import mx.core.*; public class ItemOverlay_SprMap2_0 extends BitmapAsset { } }//package src.Interface
Section 172
//ItemOverlay_SprMap2_1 (src.Interface.ItemOverlay_SprMap2_1) package src.Interface { import mx.core.*; public class ItemOverlay_SprMap2_1 extends BitmapAsset { } }//package src.Interface
Section 173
//ItemOverlay_SprSignpost (src.Interface.ItemOverlay_SprSignpost) package src.Interface { import mx.core.*; public class ItemOverlay_SprSignpost extends BitmapAsset { } }//package src.Interface
Section 174
//NarrationOverlay (src.Interface.NarrationOverlay) package src.Interface { import org.flixel.*; public class NarrationOverlay extends FlxGroup { private var reminder:XReminder; private var lingerTimer:int;// = 0 private var finalText:String;// = null private var callback:Function; private var doFade:Boolean; private var text:FlxText; private var fading:Boolean;// = false private static const FONT_SIZE:int = 18; private static const LINGER_TIME:int = 600; public function NarrationOverlay(fade:Boolean=true){ super(); text = new FlxText(20, FlxG.height, (FlxG.width - 60), " "); text.size = FONT_SIZE; text.scrollFactor.x = 0; text.scrollFactor.y = 0; text.font = "Dominican"; this.add(text); text.alpha = 0; doFade = fade; reminder = new XReminder(true); reminder.alpha = 0; this.add(reminder); } public function display(textToShow:String, whenDone:Function=null):void{ text.y = ((FlxG.height - FONT_SIZE) / 2); text.text = ""; this.finalText = textToShow; callback = whenDone; } override public function update():void{ var i:int; if (((doFade) && (fading))){ if (lingerTimer < LINGER_TIME){ lingerTimer++; } else { if (text.alpha > 0){ text.alpha = (text.alpha - 0.05); } else { fading = false; text.text = ""; finalText = null; if (callback != null){ callback(); }; }; }; } else { if (this.finalText != null){ if (text.alpha < 1){ text.alpha = (text.alpha + 0.05); }; i = 0; while ((((i < 2)) && ((text.text.length < finalText.length)))) { text.text = (text.text + finalText.charAt(text.text.length)); i++; }; text.y = ((FlxG.height - text.height) / 2); if (text.text.length >= finalText.length){ fading = true; lingerTimer = 0; }; reminder.alpha = text.alpha; }; }; super.update(); } } }//package src.Interface
Section 175
//Pause (src.Interface.Pause) package src.Interface { import org.flixel.*; public class Pause extends FlxGroup { public function Pause(){ var w:uint; var h:uint; super(); scrollFactor.x = 0; scrollFactor.y = 0; w = 175; h = 175; x = ((FlxG.width - w) / 2); y = ((FlxG.height - h) / 2); add(new FlxSprite().createGraphic(w, h, 3422815236, true), true); add(new FlxText(0, 0, w, "Paused").setFormat("DominicanSC", 36, 0xFFFFFF, "center"), true); add(new FlxText(4, 50, 60, "P:").setFormat("Dominican", 16, 0xFFFFFF), true); add(new FlxText(80, 50, (w - 80), "Pause Game").setFormat("Dominican", 16, 0xFFFFFF), true); add(new FlxText(4, 80, 60, "ZERO:").setFormat("Dominican", 16, 0xFFFFFF), true); add(new FlxText(80, 80, (w - 80), "Mute Sound").setFormat("Dominican", 16, 0xFFFFFF), true); add(new FlxText(4, 110, 60, "-:").setFormat("Dominican", 16, 0xFFFFFF), true); add(new FlxText(80, 110, (w - 80), "Sound Down").setFormat("Dominican", 16, 0xFFFFFF), true); add(new FlxText(4, 140, 60, "+:").setFormat("Dominican", 16, 0xFFFFFF), true); add(new FlxText(80, 140, (w - 80), "Sound Up").setFormat("Dominican", 16, 0xFFFFFF), true); } override public function update():void{ FlxG.mouse.reset(); super.update(); } } }//package src.Interface
Section 176
//TextButton (src.Interface.TextButton) package src.Interface { import org.flixel.*; public class TextButton extends FlxButton { public function TextButton(X:Number, Y:Number, label:String, width:Number, callback:Function, size:uint=18, font:String="DominicanSC", scrollfactor:int=0){ super(X, Y, callback); var text:FlxText = new FlxText(0, 0, width, label); text.font = font; text.size = size; var textHighlight:FlxText = new FlxText(0, 0, width, label); textHighlight.font = font; textHighlight.shadow = 4294967295; textHighlight.size = size; loadText(text, textHighlight); loadGraphic(new FlxSprite().createGraphic(text.width, text.height, 0)); scrollFactor.x = scrollfactor; scrollFactor.y = scrollfactor; } } }//package src.Interface
Section 177
//TutorialIndicator (src.Interface.TutorialIndicator) package src.Interface { import org.flixel.*; import src.*; public class TutorialIndicator extends FlxSprite { private static const FADE_DISTANCE:Number = 75; public static var SprX:Class = TutorialIndicator_SprX; public static var SprArrows:Class = TutorialIndicator_SprArrows; public function TutorialIndicator(X:int, Y:int, sprite:Class){ super(X, Y, sprite); offset.x = (width / 2); offset.y = (height / 2); } override public function update():void{ super.update(); this.alpha = alphaFunction(); } private function alphaFunction():Number{ if (PlayState.player == null){ return (NaN); }; var dx:int = (x - PlayState.player.centerX); var dy:int = (y - PlayState.player.centerY); var distance:Number = Math.sqrt(((dx * dx) + (dy * dy))); if (distance > FADE_DISTANCE){ return (0); }; return ((1 - (distance / FADE_DISTANCE))); } } }//package src.Interface
Section 178
//TutorialIndicator_SprArrows (src.Interface.TutorialIndicator_SprArrows) package src.Interface { import mx.core.*; public class TutorialIndicator_SprArrows extends BitmapAsset { } }//package src.Interface
Section 179
//TutorialIndicator_SprX (src.Interface.TutorialIndicator_SprX) package src.Interface { import mx.core.*; public class TutorialIndicator_SprX extends BitmapAsset { } }//package src.Interface
Section 180
//XReminder (src.Interface.XReminder) package src.Interface { import org.flixel.*; public class XReminder extends FlxSprite { private var _flashing:Boolean;// = false private var timeElapsed:Number;// = 0 private static const FLASH_TIME:Number = 0.5; private static var X_REMINDER:Class = XReminder_X_REMINDER; public function XReminder(visible:Boolean=false){ super((FlxG.width - 30), (FlxG.height - 30)); this.loadGraphic(X_REMINDER); this.scrollFactor.x = 0; this.scrollFactor.y = 0; this.visible = visible; } public function set flashing(value:Boolean):void{ _flashing = value; } override public function update():void{ super.update(); if (flashing){ timeElapsed = (timeElapsed + FlxG.elapsed); if (timeElapsed >= FLASH_TIME){ this.visible = !(this.visible); timeElapsed = 0; }; }; } public function get flashing():Boolean{ return (_flashing); } } }//package src.Interface
Section 181
//XReminder_X_REMINDER (src.Interface.XReminder_X_REMINDER) package src.Interface { import mx.core.*; public class XReminder_X_REMINDER extends BitmapAsset { } }//package src.Interface
Section 182
//BackgroundStamp (src.WorldObjects.BackgroundStamp) package src.WorldObjects { import org.flixel.*; public class BackgroundStamp extends FlxSprite { private var _spriteIndex:int; private static var SprPathEW1:Class = BackgroundStamp_SprPathEW1; private static var SprRoughPatch:Class = BackgroundStamp_SprRoughPatch; private static var SprPathEW2:Class = BackgroundStamp_SprPathEW2; public static var sprites:Array = [SprPathNS1, SprPathNS2, SprPathEW1, SprPathEW2, SprPathEnd1, SprPath4Way, SprRoughPatch, SprSmudge, SprPatchy]; private static var SprPathEnd1:Class = BackgroundStamp_SprPathEnd1; private static var SprPathNS1:Class = BackgroundStamp_SprPathNS1; private static var SprPathNS2:Class = BackgroundStamp_SprPathNS2; private static var SprPath4Way:Class = BackgroundStamp_SprPath4Way; private static var SprSmudge:Class = BackgroundStamp_SprSmudge; private static var SprPatchy:Class = BackgroundStamp_SprPatchy; public function BackgroundStamp(X:int, Y:int, spriteIndex:int){ _spriteIndex = spriteIndex; super(X, Y, sprites[spriteIndex]); } public function get spriteIndex():int{ return (_spriteIndex); } } }//package src.WorldObjects
Section 183
//BackgroundStamp_SprPatchy (src.WorldObjects.BackgroundStamp_SprPatchy) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprPatchy extends BitmapAsset { } }//package src.WorldObjects
Section 184
//BackgroundStamp_SprPath4Way (src.WorldObjects.BackgroundStamp_SprPath4Way) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprPath4Way extends BitmapAsset { } }//package src.WorldObjects
Section 185
//BackgroundStamp_SprPathEnd1 (src.WorldObjects.BackgroundStamp_SprPathEnd1) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprPathEnd1 extends BitmapAsset { } }//package src.WorldObjects
Section 186
//BackgroundStamp_SprPathEW1 (src.WorldObjects.BackgroundStamp_SprPathEW1) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprPathEW1 extends BitmapAsset { } }//package src.WorldObjects
Section 187
//BackgroundStamp_SprPathEW2 (src.WorldObjects.BackgroundStamp_SprPathEW2) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprPathEW2 extends BitmapAsset { } }//package src.WorldObjects
Section 188
//BackgroundStamp_SprPathNS1 (src.WorldObjects.BackgroundStamp_SprPathNS1) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprPathNS1 extends BitmapAsset { } }//package src.WorldObjects
Section 189
//BackgroundStamp_SprPathNS2 (src.WorldObjects.BackgroundStamp_SprPathNS2) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprPathNS2 extends BitmapAsset { } }//package src.WorldObjects
Section 190
//BackgroundStamp_SprRoughPatch (src.WorldObjects.BackgroundStamp_SprRoughPatch) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprRoughPatch extends BitmapAsset { } }//package src.WorldObjects
Section 191
//BackgroundStamp_SprSmudge (src.WorldObjects.BackgroundStamp_SprSmudge) package src.WorldObjects { import mx.core.*; public class BackgroundStamp_SprSmudge extends BitmapAsset { } }//package src.WorldObjects
Section 192
//Bird (src.WorldObjects.Bird) package src.WorldObjects { import org.flixel.*; import src.*; public class Bird extends FlxSprite { private var waitTime:Number; private var elapsed:Number;// = 0 private var flying:Boolean;// = false private static const MIN_FLY_TIME:Number = 1; private static const MIN_WAIT_TIME:Number = 5; private static const SPOOK_DISTANCE:int = 25; private static const MAX_FLY_TIME:Number = 3; private static const MAX_WAIT_TIME:Number = 15; private static var SndBird:Class = Bird_SndBird; private static var SprBird:Class = Bird_SprBird; public function Bird(X:int, Y:int){ super(X, Y); loadGraphic(SprBird, true, false, 5, 3); addAnimation("idle", [0]); addAnimation("fly", [0, 1, 2, 3], 20, true); startWait(); } public function checkSpook(player:Player):void{ if (((!(flying)) && ((((Math.abs((player.x - this.x)) <= SPOOK_DISTANCE)) && ((Math.abs((player.y - this.y)) <= SPOOK_DISTANCE)))))){ FlxG.play(SndBird); fly(); }; } private function startWait():void{ play("idle"); waitTime = (MIN_WAIT_TIME + (Math.random() * (MAX_WAIT_TIME - MIN_WAIT_TIME))); elapsed = 0; velocity.x = 0; velocity.y = 0; acceleration.y = 0; flying = false; } override public function update():void{ super.update(); if (!flying){ elapsed = (elapsed + FlxG.elapsed); if (elapsed >= waitTime){ fly(); }; } else { elapsed = (elapsed + FlxG.elapsed); if (elapsed >= waitTime){ startWait(); }; }; if (x < (-(FlxG.scroll.x) - FlxG.width)){ x = (x + ((FlxG.width + FlxG.width) + FlxG.width)); }; if (y < (-(FlxG.scroll.y) - FlxG.height)){ y = (y + ((FlxG.height + FlxG.height) + FlxG.height)); }; if (x > ((-(FlxG.scroll.x) + FlxG.width) + FlxG.width)){ x = (x - ((FlxG.width + FlxG.width) + FlxG.width)); }; if (y > ((-(FlxG.scroll.y) + FlxG.height) + FlxG.height)){ y = (y - ((FlxG.height + FlxG.height) + FlxG.height)); }; if (PlayState.player){ checkSpook(PlayState.player); }; } private function fly():void{ flying = true; play("fly"); this.velocity.x = (100 - (Math.random() * 50)); this.velocity.y = (50 - (Math.random() * 25)); if (Math.random() < 0.5){ this.velocity.x = -(this.velocity.x); }; if (Math.random() < 0.5){ this.velocity.y = -(this.velocity.y); }; this.acceleration.y = 30; waitTime = (MIN_FLY_TIME + (Math.random() * (MAX_FLY_TIME - MIN_FLY_TIME))); elapsed = 0; } } }//package src.WorldObjects
Section 193
//Bird_SndBird (src.WorldObjects.Bird_SndBird) package src.WorldObjects { import mx.core.*; public class Bird_SndBird extends SoundAsset { } }//package src.WorldObjects
Section 194
//Bird_SprBird (src.WorldObjects.Bird_SprBird) package src.WorldObjects { import mx.core.*; public class Bird_SprBird extends BitmapAsset { } }//package src.WorldObjects
Section 195
//Cloud (src.WorldObjects.Cloud) package src.WorldObjects { import org.flixel.*; public class Cloud extends FlxSprite { private static const CLOUD_SPEED:int = 10; private static var SprCloud:Class = Cloud_SprCloud; public function Cloud(){ super(0, 0, SprCloud); y = ((FlxU.random() * FlxG.height) - this.height); x = ((FlxU.random() * (FlxG.width + this.width)) - this.width); alpha = 0.2; this.velocity.x = -(CLOUD_SPEED); this.scrollFactor.x = 0; this.scrollFactor.y = 0; } override public function update():void{ super.update(); if (this.x <= -(this.width)){ this.x = FlxG.width; y = ((FlxU.random() * FlxG.height) - this.height); }; } } }//package src.WorldObjects
Section 196
//Cloud_SprCloud (src.WorldObjects.Cloud_SprCloud) package src.WorldObjects { import mx.core.*; public class Cloud_SprCloud extends BitmapAsset { } }//package src.WorldObjects
Section 197
//Firefly (src.WorldObjects.Firefly) package src.WorldObjects { import org.flixel.*; import src.*; public class Firefly extends FlxSprite { private var SPEED:Number;// = 100 private var direction:Number;// = 0 public function Firefly(X:int, Y:int){ super(0, 0, Looming.SprPixel); } override public function update():void{ direction = (direction + (Math.random() - 0.5)); if (direction > (Math.PI * 2)){ direction = (direction - (Math.PI * 2)); }; velocity.x = (Math.cos(direction) * SPEED); velocity.y = (Math.sin(direction) * SPEED); super.update(); if (x < (-(FlxG.scroll.x) - FlxG.width)){ x = (x + ((FlxG.width + FlxG.width) + FlxG.width)); }; if (y < (-(FlxG.scroll.y) - FlxG.height)){ y = (y + ((FlxG.height + FlxG.height) + FlxG.height)); }; if (x > ((-(FlxG.scroll.x) + FlxG.width) + FlxG.width)){ x = (x - ((FlxG.width + FlxG.width) + FlxG.width)); }; if (y > ((-(FlxG.scroll.y) + FlxG.height) + FlxG.height)){ y = (y - ((FlxG.height + FlxG.height) + FlxG.height)); }; } } }//package src.WorldObjects
Section 198
//HaloEmitter (src.WorldObjects.HaloEmitter) package src.WorldObjects { import org.flixel.*; public class HaloEmitter extends FlxEmitter { public var repel:Boolean;// = true public function HaloEmitter(X:Number=0, Y:Number=0){ super(X, Y); } override public function emitParticle():void{ var s:FlxSprite; _counter++; s = (members[_particle] as FlxSprite); s.visible = true; s.exists = true; s.active = true; var circumAngle:Number = ((FlxU.random() * Math.PI) * 2); s.x = ((x - (s.width >> 1)) + ((0.5 + (Math.cos(circumAngle) / 2)) * width)); s.y = ((y - (s.height >> 1)) + ((0.5 + (Math.sin(circumAngle) / 2)) * height)); var velFactor:Number = (repel) ? 1 : -1; var xVelMult:Number = 1; var yVelMult:Number = 1; if (width < height){ xVelMult = (width / height); } else { yVelMult = (height / width); }; s.velocity.x = (((minParticleSpeed.x * Math.cos(circumAngle)) * velFactor) * xVelMult); if (minParticleSpeed.x != maxParticleSpeed.x){ s.velocity.x = (s.velocity.x + ((((FlxU.random() * (maxParticleSpeed.x - minParticleSpeed.x)) * Math.cos(circumAngle)) * velFactor) * xVelMult)); }; s.velocity.y = (((minParticleSpeed.y * Math.sin(circumAngle)) * velFactor) * yVelMult); if (minParticleSpeed.y != maxParticleSpeed.y){ s.velocity.y = (s.velocity.y + ((((FlxU.random() * (maxParticleSpeed.y - minParticleSpeed.y)) * Math.sin(circumAngle)) * velFactor) * yVelMult)); }; s.acceleration.y = gravity; s.angularVelocity = minRotation; if (minRotation != maxRotation){ s.angularVelocity = (s.angularVelocity + (FlxU.random() * (maxRotation - minRotation))); }; if (s.angularVelocity != 0){ s.angle = ((FlxU.random() * 360) - 180); }; s.drag.x = particleDrag.x; s.drag.y = particleDrag.y; s.visible = true; _particle++; if (_particle >= members.length){ _particle = 0; }; s.onEmit(); } } }//package src.WorldObjects
Section 199
//ItemPickup (src.WorldObjects.ItemPickup) package src.WorldObjects { import org.flixel.*; import src.*; import src.Interface.*; import src.Data.*; public class ItemPickup extends FlxSprite { private var _index:int; private var _type:int; private static var SprSparkle:Class = ItemPickup_SprSparkle; public static var SndItemPickup:Class = ItemPickup_SndItemPickup; public static var pickupEmitter:FlxEmitter; private static var SprPartItemSparkle:Class = ItemPickup_SprPartItemSparkle; private static var frames:Array; public function ItemPickup(X:int, Y:int, type:int, index:int){ var i:int; _type = type; _index = index; super(X, Y); if ((((((type >= 0)) && ((index >= 0)))) && (SaveData.collection[type][index]))){ kill(); return; }; loadGraphic(SprSparkle, true); if (frames == null){ frames = [0, 1, 2]; i = 0; while (i < 60) { frames.push(3); i++; }; }; addAnimation("idle", frames, 15); play("idle"); _curFrame = (Math.random() * _curAnim.frames.length); } override public function update():void{ super.update(); if (((!(this.visible)) && (pickupEmitter.dead))){ kill(); ItemOverlay.showItem(type, index); }; } public function get index():int{ return (_index); } public function getPickedUp():void{ if (!visible){ return; }; if (pickupEmitter){ pickupEmitter.x = x; pickupEmitter.y = y; pickupEmitter.start(true, 0.5); }; this.visible = false; PlayState.player.frozen = true; FlxG.play(SndItemPickup); SaveData.pickupItem(type, index); SaveData.checkPickupMedals(); } public function get type():int{ return (_type); } public static function getPickupEmitter():FlxEmitter{ if (FlxG.debug){ trace("Creating item pickup particle emitter."); }; var ret:FlxEmitter = new FlxEmitter(); ret.createSprites(SprPartItemSparkle, 6, 0); ret.setRotation(); ret.setSize(7, 7); ret.setXSpeed(-50, 50); ret.setYSpeed(-50, 50); ret.gravity = 0; return (ret); } } }//package src.WorldObjects
Section 200
//ItemPickup_SndItemPickup (src.WorldObjects.ItemPickup_SndItemPickup) package src.WorldObjects { import mx.core.*; public class ItemPickup_SndItemPickup extends SoundAsset { } }//package src.WorldObjects
Section 201
//ItemPickup_SprPartItemSparkle (src.WorldObjects.ItemPickup_SprPartItemSparkle) package src.WorldObjects { import mx.core.*; public class ItemPickup_SprPartItemSparkle extends BitmapAsset { } }//package src.WorldObjects
Section 202
//ItemPickup_SprSparkle (src.WorldObjects.ItemPickup_SprSparkle) package src.WorldObjects { import mx.core.*; public class ItemPickup_SprSparkle extends BitmapAsset { } }//package src.WorldObjects
Section 203
//Level (src.WorldObjects.Level) package src.WorldObjects { import org.flixel.*; import src.*; import src.Interface.*; import src.Data.*; public class Level extends FlxGroup { public var sceneryShadows:FlxGroup; public var sceneryObjects:FlxGroup; public var bg:FlxTilemap; public var towers:FlxGroup; public var critters:FlxGroup; public var portals:Array; public var tutorials:FlxGroup; private var worldsize:int; public var lights:FlxGroup; public var backgroundStamps:FlxGroup; private var player:Player;// = null public var itemPickups:FlxGroup; private var worldy:int; public var walls:FlxGroup; private var worldx:int; private var playerLayer:FlxGroup; public var signposts:FlxGroup; private static var SprBackground:Class = Level_SprBackground; public function Level(){ walls = new FlxGroup(); backgroundStamps = new FlxGroup(); sceneryShadows = new FlxGroup(); sceneryObjects = new FlxGroup(); itemPickups = new FlxGroup(); signposts = new FlxGroup(); critters = new FlxGroup(); playerLayer = new FlxGroup(); towers = new FlxGroup(); lights = new FlxGroup(); tutorials = new FlxGroup(); portals = new Array(); super(); bg = new FlxTilemap(); bg.drawIndex = 0; bg.loadMap(getMonotonousMap(90, 90), SprBackground); bg.x = (10 * 64); bg.y = (15 * 64); this.add(bg); worldx = (15 * 64); worldy = (20 * 64); worldsize = (80 * 64); walls.add(new Wall(worldx, (worldy - 50))); walls.add(new Wall((worldx + Wall.SECTION_SPAN), (worldy - 50))); walls.add(new Wall(worldx, ((worldy + worldsize) - 25))); walls.add(new Wall((worldx + Wall.SECTION_SPAN), ((worldy + worldsize) - 25))); walls.add(new Wall((worldx - 20), worldy, true)); walls.add(new Wall((worldx - 20), (worldy + Wall.SECTION_SPAN), true)); walls.add(new Wall((worldx + worldsize), worldy, true)); walls.add(new Wall((worldx + worldsize), (worldy + Wall.SECTION_SPAN), true)); this.add(backgroundStamps); this.add(signposts); SignPost.dirtSpray = SignPost.getDirtSpray(); this.add(SignPost.dirtSpray); this.add(critters); this.add(playerLayer); var i:int; while (i < 10) { critters.add(new Bird(((Math.random() * ((FlxG.width + FlxG.width) + FlxG.width)) - FlxG.scroll.x), ((Math.random() * ((FlxG.height + FlxG.height) + FlxG.height)) - FlxG.scroll.y))); critters.add(new Firefly(((Math.random() * ((FlxG.width + FlxG.width) + FlxG.width)) - FlxG.scroll.x), ((Math.random() * ((FlxG.height + FlxG.height) + FlxG.height)) - FlxG.scroll.y))); critters.add(new Firefly(((Math.random() * ((FlxG.width + FlxG.width) + FlxG.width)) - FlxG.scroll.x), ((Math.random() * ((FlxG.height + FlxG.height) + FlxG.height)) - FlxG.scroll.y))); i++; }; addPortal(3200, 6050, 0, true); addPortal(4085, 1339, 2, true); addPortal(3422, 2730, 3, false); addPortal(4935, 5535, 4, false); addPortal(2045, 1730, 5, false); addPortal(2415, 3705, 6, false); addPortal(5790, 2180, 7, false); addPortal(2390, 3590, 8, false); loadLevelXML(Levels.WORLD); this.add(itemPickups); ItemPickup.pickupEmitter = ItemPickup.getPickupEmitter(); this.add(ItemPickup.pickupEmitter); this.add(sceneryShadows); this.add(sceneryObjects); this.add(towers); this.add(walls); this.add(lights); this.add(tutorials); this.add(new Cloud()); addLightTower(2276, 3650, 225); addLightTower(2475, 3650, 315); addLightTower(2310, 3801, 135); addLightTower(2511, 3801, 45); } private function getMonotonousMap(w:int, h:int):String{ var j:int; var ret:String = ""; var i:int; while (i < h) { ret = (ret + "0"); j = 0; while (j < (w - 1)) { ret = (ret + ", 0"); j++; }; ret = (ret + "\n"); i++; }; return (ret); } override public function update():void{ super.update(); if (player){ player.collide(sceneryObjects); player.collide(signposts); player.collide(towers); if (player.x < worldx){ player.x = worldx; }; if (player.x > (worldx + worldsize)){ player.x = (worldx + worldsize); }; if (player.y < worldy){ player.y = worldy; }; if (player.y > (worldy + worldsize)){ player.y = (worldy + worldsize); }; }; } private function addLightTower(X:int, Y:int, angle:Number):void{ var tower:LightTower = new LightTower(X, Y, angle); towers.add(tower); lights.add(tower.beam); tutorials.add(tower.tutorial); sceneryShadows.add(tower.shadow); } public function addPlayer(player:Player):void{ this.player = player; playerLayer.add(player); playerLayer.add(player.dustEmitter); tutorials.add(new TutorialIndicator(player.centerX, player.centerY, TutorialIndicator.SprArrows)); } private function addSignpost(X:int, Y:int, text:int, hidden:Boolean):void{ var s:SignPost = new SignPost(X, Y, text, hidden); signposts.add(s); tutorials.add(new TutorialIndicator(((X + (s.width / 2)) + 1), (Y + s.height), TutorialIndicator.SprX)); } public function overlapItems(f:Function):void{ FlxU.overlap(player, itemPickups, f); } private function addPortal(X:Number, Y:Number, index:int, visible:Boolean):void{ var p:Portal = new Portal(X, Y, index, visible); this.add(p); this.add(p.idleEmitter); this.add(p.inEmitter); portals[index] = p; tutorials.add(p.tutorial); } public function getLevelXML():XML{ var node:XML; var s:BackgroundStamp; var sc:Scenery; var ip:ItemPickup; var sp:SignPost; var ret:XML = <level><backgrounds/><sceneries/><items/><signposts/></level> ; for each (s in backgroundStamps.members) { if (((s.dead) || ((s == PlayState.editSprite)))){ } else { node = <stamp/> ; node.@x = s.x; node.@y = s.y; node.@index = s.spriteIndex; ret.backgrounds.appendChild(node); }; }; for each (sc in sceneryObjects.members) { if (((sc.dead) || ((sc == PlayState.editSprite)))){ } else { node = <scenery/> ; node.@x = sc.x; node.@y = sc.y; node.@index = sc.spriteIndex; ret.sceneries.appendChild(node); }; }; for each (ip in itemPickups.members) { if (((!(ip.active)) || ((ip == PlayState.editSprite)))){ } else { node = <item/> ; node.@x = ip.x; node.@y = ip.y; node.@type = ip.type; node.@index = ip.index; ret.items.appendChild(node); }; }; for each (sp in signposts.members) { if (((!(sp.active)) || ((sp == PlayState.editSprite)))){ } else { node = <signpost/> ; node.@x = sp.x; node.@y = sp.y; node.@textindex = sp.textIndex; node.@hidden = sp.startsHidden; ret.signposts.appendChild(node); }; }; return (ret); } private function loadLevelXML(level:XML):void{ var node:XML; var scenery:Scenery; for each (node in level.backgrounds.*) { backgroundStamps.add(new BackgroundStamp(node.@x, node.@y, node.@index)); }; for each (node in level.sceneries.*) { scenery = new Scenery(node.@x, node.@y, node.@index); sceneryObjects.add(scenery); if (scenery.shadow != null){ sceneryShadows.add(scenery.shadow); }; }; for each (node in level.items.*) { itemPickups.add(new ItemPickup(node.@x, node.@y, node.@type, node.@index)); }; for each (node in level.signposts.*) { addSignpost(node.@x, node.@y, node.@textindex, (node.@hidden == "true")); }; } } }//package src.WorldObjects
Section 204
//Level_SprBackground (src.WorldObjects.Level_SprBackground) package src.WorldObjects { import mx.core.*; public class Level_SprBackground extends BitmapAsset { } }//package src.WorldObjects
Section 205
//LightBeam (src.WorldObjects.LightBeam) package src.WorldObjects { import org.flixel.*; import flash.display.*; import flash.geom.*; public class LightBeam extends FlxObject { protected var _alphamtx:Matrix; protected var _mtx:Matrix; private static const _zeroPoint:Point = new Point(0, 0); private static var BitmapDataBeamOverlay:BitmapData = new SprBeamOverlay().bitmapData; private static var SprBeamOverlay:Class = LightBeam_SprBeamOverlay; private static var RotatedAlpha:BitmapData = new BitmapData(BitmapDataBeamOverlay.width, BitmapDataBeamOverlay.height); private static var BitmapDataBeamAlpha:BitmapData = new SprBeamAlpha().bitmapData; private static var SprBeamAlpha:Class = LightBeam_SprBeamAlpha; public function LightBeam(X:Number=0, Y:Number=0){ _mtx = new Matrix(); _alphamtx = new Matrix(); super(X, Y, BitmapDataBeamOverlay.width, BitmapDataBeamOverlay.height); } override public function render():void{ getScreenXY(_point); _flashPoint.x = _point.x; _flashPoint.y = _point.y; _mtx.identity(); _mtx.translate(-(origin.x), -(origin.y)); _mtx.translate((_point.x + origin.x), (_point.y + origin.y)); _alphamtx.identity(); _alphamtx.translate(0, (-(BitmapDataBeamAlpha.height) / 2)); if (angle != 0){ _alphamtx.rotate(((Math.PI * 2) * (angle / 360))); }; _alphamtx.translate((RotatedAlpha.width / 2), (RotatedAlpha.height / 2)); RotatedAlpha.fillRect(RotatedAlpha.rect, 0); RotatedAlpha.draw(BitmapDataBeamAlpha, _alphamtx, null, null, null, false); FlxG.buffer.copyPixels(BitmapDataBeamOverlay, BitmapDataBeamOverlay.rect, _flashPoint, RotatedAlpha, _zeroPoint, true); } } }//package src.WorldObjects
Section 206
//LightBeam_SprBeamAlpha (src.WorldObjects.LightBeam_SprBeamAlpha) package src.WorldObjects { import mx.core.*; public class LightBeam_SprBeamAlpha extends BitmapAsset { } }//package src.WorldObjects
Section 207
//LightBeam_SprBeamOverlay (src.WorldObjects.LightBeam_SprBeamOverlay) package src.WorldObjects { import mx.core.*; public class LightBeam_SprBeamOverlay extends BitmapAsset { } }//package src.WorldObjects
Section 208
//LightTower (src.WorldObjects.LightTower) package src.WorldObjects { import org.flixel.*; import src.*; import src.Interface.*; public class LightTower extends FlxSprite { public var shadow:SceneryShadow; public var tutorial:TutorialIndicator; public var beam:LightBeam; private static var rotationSound:FlxSound; private static var SprLightTower:Class = LightTower_SprLightTower; private static var SndTowerRotation:Class = LightTower_SndTowerRotation; public function LightTower(X:Number=0, Y:Number=0, angle:Number=NaN){ super(X, Y, SprLightTower); if (isNaN(angle)){ angle = (Math.random() * 360); }; beam = new LightBeam(((X - 125) + 15), (((y - 125) - 160) + 10)); beam.angle = angle; this.offset.y = 160; this.height = 15; this.fixed = true; tutorial = new TutorialIndicator((X + 15), (Y + height), TutorialIndicator.SprX); if (rotationSound == null){ rotationSound = new FlxSound(); rotationSound.loadEmbedded(SndTowerRotation, true); rotationSound.volume = 0.1; }; shadow = new SceneryShadow(this); } override public function update():void{ var dx:Number; var dy:Number; var distance2:Number; super.update(); if (((((FlxG.keys.X) && (PlayState.player))) && (!(PlayState.player.frozen)))){ dx = (PlayState.player.x - (x + 15)); dy = (PlayState.player.y - (y + 15)); distance2 = ((dx * dx) + (dy * dy)); if (distance2 < 225){ beam.angle++; if (beam.angle >= 360){ beam.angle = (beam.angle - 360); }; if (FlxG.debug){ trace(beam.angle); }; rotationSound.play(); }; } else { rotationSound.stop(); }; } } }//package src.WorldObjects
Section 209
//LightTower_SndTowerRotation (src.WorldObjects.LightTower_SndTowerRotation) package src.WorldObjects { import mx.core.*; public class LightTower_SndTowerRotation extends SoundAsset { } }//package src.WorldObjects
Section 210
//LightTower_SprLightTower (src.WorldObjects.LightTower_SprLightTower) package src.WorldObjects { import mx.core.*; public class LightTower_SprLightTower extends BitmapAsset { } }//package src.WorldObjects
Section 211
//Player (src.WorldObjects.Player) package src.WorldObjects { import org.flixel.*; import src.*; public class Player extends FlxSprite { public var frozen:Boolean; private var walkTime:Number;// = 0 public var dustEmitter:FlxEmitter; private var lastAnim:String; private static const ACCEL:Number = 1000; private static const WALK_SPEED:int = 100; private static const RUN_SPEED:int = 150; private static const DRAG:Number = 500; private static const RUN_DELAY:Number = 1.5; private static var SfxStep1:Class = Player_SfxStep1; private static var SfxStep2:Class = Player_SfxStep2; private static var SprPlayer:Class = Player_SprPlayer; public function Player(X:int, Y:int){ super(X, Y, null); loadGraphic(SprPlayer, true, true, 6, 14); addAnimation("idle", [0], 0, false); addAnimation("verticalwalk", [1, 2, 3, 4, 5, 6, 7, 8], 10, true); addAnimation("verticalrun", [1, 2, 3, 4, 5, 6, 7, 8], 20, true); addAnimation("horizontalwalk", [9, 10, 11, 12], 10, true); addAnimation("horizontalrun", [9, 10, 11, 12], 20, true); addAnimationCallback(onAnimate); play("idle"); drag.x = DRAG; drag.y = DRAG; dustEmitter = new FlxEmitter(X, (Y + height)); dustEmitter.createSprites(Looming.SprPixel, 9, 0, false, 0); dustEmitter.setRotation(); dustEmitter.setSize(1, 1); dustEmitter.setXSpeed(-20, 20); dustEmitter.setYSpeed(-20, 0); dustEmitter.gravity = -50; } private function onAnimate(name:String, framenumber:uint, frameindex:uint):void{ if (name == "idle"){ return; }; if ((((framenumber == 0)) || ((framenumber == 4)))){ if ((((name == "horizontalrun")) || ((name == "verticalrun")))){ dustEmitter.start(true, 0.5, 3); }; if (Math.random() < 0.5){ FlxG.play(SfxStep1, 1); } else { FlxG.play(SfxStep2, 1); }; }; } public function get centerX():int{ return ((x + (width >> 1))); } public function get centerY():int{ return ((y + (height >> 1))); } override public function update():void{ dustEmitter.x = this.centerX; dustEmitter.y = (this.y + height); if (((((!(frozen)) && (FlxG.keys.UP))) && (!(FlxG.keys.DOWN)))){ acceleration.y = -(ACCEL); } else { if (((((!(frozen)) && (!(FlxG.keys.UP)))) && (FlxG.keys.DOWN))){ acceleration.y = ACCEL; } else { acceleration.y = 0; }; }; if (((((!(frozen)) && (FlxG.keys.LEFT))) && (!(FlxG.keys.RIGHT)))){ acceleration.x = -(ACCEL); } else { if (((((!(frozen)) && (!(FlxG.keys.LEFT)))) && (FlxG.keys.RIGHT))){ acceleration.x = ACCEL; } else { acceleration.x = 0; }; }; if ((((acceleration.x == 0)) && ((acceleration.y == 0)))){ walkTime = 0; } else { walkTime = (walkTime + FlxG.elapsed); }; if (walkTime < RUN_DELAY){ maxVelocity.x = WALK_SPEED; maxVelocity.y = WALK_SPEED; } else { maxVelocity.x = RUN_SPEED; maxVelocity.y = RUN_SPEED; }; if (((!((acceleration.x == 0))) && (!((acceleration.y == 0))))){ maxVelocity.x = (maxVelocity.x * Math.SQRT1_2); maxVelocity.y = (maxVelocity.y * Math.SQRT1_2); }; if (acceleration.y != 0){ if (walkTime < RUN_DELAY){ play("verticalwalk"); } else { play("verticalrun"); }; } else { if (acceleration.x != 0){ if (acceleration.x > 0){ facing = RIGHT; } else { facing = LEFT; }; if (walkTime < RUN_DELAY){ play("horizontalwalk"); } else { play("horizontalrun"); }; } else { play("idle"); }; }; super.update(); } } }//package src.WorldObjects
Section 212
//Player_SfxStep1 (src.WorldObjects.Player_SfxStep1) package src.WorldObjects { import mx.core.*; public class Player_SfxStep1 extends SoundAsset { } }//package src.WorldObjects
Section 213
//Player_SfxStep2 (src.WorldObjects.Player_SfxStep2) package src.WorldObjects { import mx.core.*; public class Player_SfxStep2 extends SoundAsset { } }//package src.WorldObjects
Section 214
//Player_SprPlayer (src.WorldObjects.Player_SprPlayer) package src.WorldObjects { import mx.core.*; public class Player_SprPlayer extends BitmapAsset { } }//package src.WorldObjects
Section 215
//Portal (src.WorldObjects.Portal) package src.WorldObjects { import org.flixel.*; import src.*; import src.Interface.*; import src.Data.*; import com.newgrounds.*; public class Portal extends FlxSprite { private var exploded:Boolean; private var endingIndex:int; public var inEmitter:HaloEmitter; public var idleEmitter:FlxEmitter; public var tutorial:TutorialIndicator; private static const PLAYER_PROXIMITY:Number = 20; private static const FLEE_THRESHOLD:Number = 60; private static var SprPortal:Class = Portal_SprPortal; private static var PortalSound:FlxSound; private static var SndPortal:Class = Portal_SndPortal; private static var SprPartsIdle:Class = Portal_SprPartsIdle; public function Portal(x:int, y:int, endingIndex:int, startVisible:Boolean=true){ super(x, y, SprPortal); if (PortalSound == null){ PortalSound = new FlxSound(); PortalSound.loadEmbedded(SndPortal); PortalSound.survive = true; }; this.endingIndex = endingIndex; this.visible = startVisible; idleEmitter = new FlxEmitter(x, y); idleEmitter.createSprites(SprPartsIdle, 20, 0, true); idleEmitter.gravity = 0; idleEmitter.setRotation(0, 0); idleEmitter.setYSpeed(-10, -10); idleEmitter.setXSpeed(0, 0); idleEmitter.setSize(width, (height - 1)); startIdleEmitter(); inEmitter = new HaloEmitter(((x - width) - width), ((y - height) - height)); inEmitter.repel = false; inEmitter.createSprites(Looming.SprPixel, 25, 0); inEmitter.gravity = 0; inEmitter.setRotation(); inEmitter.setSize((width * 5), (height * 5)); inEmitter.setXSpeed(40, 40); inEmitter.setYSpeed(40, 40); tutorial = new TutorialIndicator(((x + (width / 2)) + 1), (y + height), TutorialIndicator.SprX); tutorial.visible = startVisible; } private function usePortal():void{ exploded = true; inEmitter.kill(); inEmitter.x = x; inEmitter.y = y; inEmitter.setSize(width, height); inEmitter.setXSpeed(400, 400); inEmitter.setYSpeed(400, 400); inEmitter.repel = true; inEmitter.start(true, 2); PlayState.player.frozen = true; FlxG.fade.start(4294967295, 1, onFadeComplete); PortalSound.play(); FlxG.music.fadeOut(1, true); } private function startInEmitter():void{ if (visible){ inEmitter.start(false, 0.05); }; } override public function update():void{ super.update(); if (PlayState.player){ if (playerIsNear()){ if (((!(exploded)) && (!(inEmitter.on)))){ startInEmitter(); idleEmitter.stop(0.5); }; if (((((!(PlayState.player.frozen)) && (FlxG.keys.justPressed("X")))) && (this.visible))){ usePortal(); }; } else { if (!idleEmitter.on){ startIdleEmitter(); inEmitter.stop(0.5); }; }; }; } public function reveal(silent:Boolean=true):void{ if (!this.visible){ this.visible = true; tutorial.visible = true; if (!silent){ FlxG.play(ItemPickup.SndItemPickup); }; }; } private function playerIsNear():Boolean{ var dx:Number = Math.abs(((this.x + (width >> 1)) - PlayState.player.centerX)); var dy:Number = Math.abs(((this.y + (height >> 1)) - PlayState.player.centerY)); return ((((dx < PLAYER_PROXIMITY)) && ((dy < PLAYER_PROXIMITY)))); } private function startIdleEmitter():void{ if (visible){ idleEmitter.start(false, 0.05); }; } private function onFadeComplete():void{ if ((((endingIndex == 0)) && ((PlayState.timePlayed > FLEE_THRESHOLD)))){ this.endingIndex = 1; }; SaveData.endings[endingIndex] = true; NarrationState.isOpening = false; NarrationState.nextClosing = Narration.Endings[this.endingIndex]; FlxG.state = new NarrationState(); FlxG.flash.start(4294967295, 0.5); API.unlockMedal("Traveler"); if (endingIndex == 8){ API.unlockMedal("Perceptive Explorer"); }; } } }//package src.WorldObjects
Section 216
//Portal_SndPortal (src.WorldObjects.Portal_SndPortal) package src.WorldObjects { import mx.core.*; public class Portal_SndPortal extends SoundAsset { } }//package src.WorldObjects
Section 217
//Portal_SprPartsIdle (src.WorldObjects.Portal_SprPartsIdle) package src.WorldObjects { import mx.core.*; public class Portal_SprPartsIdle extends BitmapAsset { } }//package src.WorldObjects
Section 218
//Portal_SprPortal (src.WorldObjects.Portal_SprPortal) package src.WorldObjects { import mx.core.*; public class Portal_SprPortal extends BitmapAsset { } }//package src.WorldObjects
Section 219
//Scenery (src.WorldObjects.Scenery) package src.WorldObjects { import org.flixel.*; public class Scenery extends FlxSprite { public var shadow:SceneryShadow; private var _spriteIndex:int; private static var collisions:Array = [new FlxRect(25, 250, 25, 25), new FlxRect(25, 250, 25, 25), new FlxRect(25, 250, 25, 25), new FlxRect(9, 90, 8, 8), new FlxRect(15, 175, 40, 20), new FlxRect(5, 140, 340, 60), new FlxRect(10, 235, 225, 15), new FlxRect(6, 59, 64, 14), new FlxRect(2, 183, 19, 13), new FlxRect(21, 177, 35, 23), new FlxRect(17, 116, 11, 6), new FlxRect(49, 117, 10, 5), new FlxRect(0, 48, 150, 26), new FlxRect(2, 3, 47, 27), new FlxRect(1, 128, 185, 15)]; public static var SprSceneCross:Class = Scenery_SprSceneCross; public static var SprScenePanel:Class = Scenery_SprScenePanel; public static var sprites:Array = [SprSceneNeedle, SprSceneCross, SprSceneRib, SprSceneSpike, SprSceneGear, SprSceneDome, SprSceneSnare, SprSceneBall, SprSceneBent, SprSceneBulb, SprSceneHoopL, SprSceneHoopR, SprSceneMiniGear, SprScenePanel, SprSceneTriArch]; public static var SprSceneSpike:Class = Scenery_SprSceneSpike; public static var SprSceneRib:Class = Scenery_SprSceneRib; public static var SprSceneBall:Class = Scenery_SprSceneBall; public static var SprSceneMiniGear:Class = Scenery_SprSceneMiniGear; public static var SprSceneBent:Class = Scenery_SprSceneBent; public static var SprSceneNeedle:Class = Scenery_SprSceneNeedle; public static var SprSceneBulb:Class = Scenery_SprSceneBulb; public static var SprSceneSnare:Class = Scenery_SprSceneSnare; public static var SprSceneTriArch:Class = Scenery_SprSceneTriArch; private static var shadows:Array = [SceneryShadow.SprShadowLarge, SceneryShadow.SprShadowLarge, SceneryShadow.SprShadowLarge, SceneryShadow.SprShadowSmall, SceneryShadow.SprShadowArc, SceneryShadow.SprShadowDome, SceneryShadow.SprShadowDome, SceneryShadow.SprShadowSmall, SceneryShadow.SprShadowLarge, SceneryShadow.SprShadowLarge, SceneryShadow.SprShadowArc, SceneryShadow.SprShadowSmall, SceneryShadow.SprShadowSmall, null, SceneryShadow.SprShadowDome]; public static var SprSceneGear:Class = Scenery_SprSceneGear; public static var SprSceneHoopR:Class = Scenery_SprSceneHoopR; public static var SprSceneDome:Class = Scenery_SprSceneDome; public static var SprSceneHoopL:Class = Scenery_SprSceneHoopL; public function Scenery(X:int, Y:int, spriteIndex:int){ _spriteIndex = spriteIndex; super(X, Y, sprites[spriteIndex]); this.fixed = true; this.offset.x = collisions[spriteIndex].x; this.offset.y = collisions[spriteIndex].y; this.width = collisions[spriteIndex].width; this.height = collisions[spriteIndex].height; if (shadows[spriteIndex] != null){ this.shadow = new SceneryShadow(this); }; } public function get shadowSprite():Class{ return (shadows[_spriteIndex]); } public function get spriteIndex():int{ return (_spriteIndex); } } }//package src.WorldObjects
Section 220
//Scenery_SprSceneBall (src.WorldObjects.Scenery_SprSceneBall) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneBall extends BitmapAsset { } }//package src.WorldObjects
Section 221
//Scenery_SprSceneBent (src.WorldObjects.Scenery_SprSceneBent) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneBent extends BitmapAsset { } }//package src.WorldObjects
Section 222
//Scenery_SprSceneBulb (src.WorldObjects.Scenery_SprSceneBulb) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneBulb extends BitmapAsset { } }//package src.WorldObjects
Section 223
//Scenery_SprSceneCross (src.WorldObjects.Scenery_SprSceneCross) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneCross extends BitmapAsset { } }//package src.WorldObjects
Section 224
//Scenery_SprSceneDome (src.WorldObjects.Scenery_SprSceneDome) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneDome extends BitmapAsset { } }//package src.WorldObjects
Section 225
//Scenery_SprSceneGear (src.WorldObjects.Scenery_SprSceneGear) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneGear extends BitmapAsset { } }//package src.WorldObjects
Section 226
//Scenery_SprSceneHoopL (src.WorldObjects.Scenery_SprSceneHoopL) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneHoopL extends BitmapAsset { } }//package src.WorldObjects
Section 227
//Scenery_SprSceneHoopR (src.WorldObjects.Scenery_SprSceneHoopR) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneHoopR extends BitmapAsset { } }//package src.WorldObjects
Section 228
//Scenery_SprSceneMiniGear (src.WorldObjects.Scenery_SprSceneMiniGear) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneMiniGear extends BitmapAsset { } }//package src.WorldObjects
Section 229
//Scenery_SprSceneNeedle (src.WorldObjects.Scenery_SprSceneNeedle) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneNeedle extends BitmapAsset { } }//package src.WorldObjects
Section 230
//Scenery_SprScenePanel (src.WorldObjects.Scenery_SprScenePanel) package src.WorldObjects { import mx.core.*; public class Scenery_SprScenePanel extends BitmapAsset { } }//package src.WorldObjects
Section 231
//Scenery_SprSceneRib (src.WorldObjects.Scenery_SprSceneRib) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneRib extends BitmapAsset { } }//package src.WorldObjects
Section 232
//Scenery_SprSceneSnare (src.WorldObjects.Scenery_SprSceneSnare) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneSnare extends BitmapAsset { } }//package src.WorldObjects
Section 233
//Scenery_SprSceneSpike (src.WorldObjects.Scenery_SprSceneSpike) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneSpike extends BitmapAsset { } }//package src.WorldObjects
Section 234
//Scenery_SprSceneTriArch (src.WorldObjects.Scenery_SprSceneTriArch) package src.WorldObjects { import mx.core.*; public class Scenery_SprSceneTriArch extends BitmapAsset { } }//package src.WorldObjects
Section 235
//SceneryShadow (src.WorldObjects.SceneryShadow) package src.WorldObjects { import org.flixel.*; public class SceneryShadow extends FlxSprite { public static var SprShadowSmall:Class = SceneryShadow_SprShadowSmall; public static var SprShadowLarge:Class = SceneryShadow_SprShadowLarge; public static var SprShadowDome:Class = SceneryShadow_SprShadowDome; public static var SprShadowArc:Class = SceneryShadow_SprShadowArc; public function SceneryShadow(scenery:FlxObject){ var sprite:Class; if ((scenery is Scenery)){ sprite = Scenery(scenery).shadowSprite; } else { sprite = SprShadowSmall; }; super(scenery.x, scenery.y, sprite); if (sprite == null){ kill(); }; y = (y - (this.height - scenery.height)); alpha = 0.4; } } }//package src.WorldObjects
Section 236
//SceneryShadow_SprShadowArc (src.WorldObjects.SceneryShadow_SprShadowArc) package src.WorldObjects { import mx.core.*; public class SceneryShadow_SprShadowArc extends BitmapAsset { } }//package src.WorldObjects
Section 237
//SceneryShadow_SprShadowDome (src.WorldObjects.SceneryShadow_SprShadowDome) package src.WorldObjects { import mx.core.*; public class SceneryShadow_SprShadowDome extends BitmapAsset { } }//package src.WorldObjects
Section 238
//SceneryShadow_SprShadowLarge (src.WorldObjects.SceneryShadow_SprShadowLarge) package src.WorldObjects { import mx.core.*; public class SceneryShadow_SprShadowLarge extends BitmapAsset { } }//package src.WorldObjects
Section 239
//SceneryShadow_SprShadowSmall (src.WorldObjects.SceneryShadow_SprShadowSmall) package src.WorldObjects { import mx.core.*; public class SceneryShadow_SprShadowSmall extends BitmapAsset { } }//package src.WorldObjects
Section 240
//SignPost (src.WorldObjects.SignPost) package src.WorldObjects { import org.flixel.*; import src.*; import src.Interface.*; public class SignPost extends FlxSprite { private var _textIndex:int; private var _signText:String; private var _hidden:Boolean;// = false public var startsHidden:Boolean;// = false private static const ACTIVATION_DISTANCE:int = 25; private static var SprSignpost:Class = SignPost_SprSignpost; public static var dirtSpray:FlxEmitter; private static var SndRumble:Class = SignPost_SndRumble; private static var texts:Array = ["\"Welcome, visitor. The time I have left here is brief, so I will dispense with courtesy. I wish you to visit and learn. South of here is a patch of rough ground. Look in the center for a hidden signpost.\"", "\"I have lived in Looming for a long time, but I was not born here. I will die here, however. Further south, past a cluster of spires, you will find a second hidden signpost.\"", "\"The Lorem came here after some trouble in their original home; I did not ask, and they did not offer. They were friendly, but flighty. They fled Looming in existential terror. To the west, a signpost is hidden off the end of a path.\"", "\"The Seecha were workers and explorers. They saw me as a threat, and attacked me. I admire their fierce tenacity. They saw no point in remaining after the Epiphany showed them their departure. Another signpost hides to the north between two metal floor panels.\"", "\"Many have come to Looming. When I first arrived, there were signs of earlier settlement, but those traces have crumbled to dust by now. Everyone leaves, but I will stay until my end. East of the second hidden signpost is another, at the base of a spire.\"", "\"The Epiphany occurs here. It is natural to Looming, as far as I know. It is like snow or wind; it comes, it lingers, it fades away. And it makes you know your future. Stand between the two gears, elsewhere, and travel north to another hidden signpost.\"", "\"I have been in Looming for a long time. I have seen many Epiphanies, and have seen far into the future. This place never keeps its visitors. They always leave. To the east, where the path is just out of sight, a signpost hides.\"", "\"I remember my death, and your arrival. I remember you reading these signs. I recall my bones growing dry and bleached in the dust. Follow the spires to the northeast. Between the final two is the last hidden signpost.\"", "\"If you have unearthed all of my messages, then a portal sits to the south. An Epiphany is coming. I remember it. What will it make you remember? That is one of the few mysteries still masked to me.\"", "\"Bring my bones together here, and you will be shown a new way.\"", "\"The northwest star shines west.\"", "\"The northeast star shines south.\"", "\"The southwest star shines east.\"", "\"The southeast star shines north.\"", "\"With tally in hand, step through our gateway.", "\"This door opens only to those with a grasp of the Sciences.\"", "\"Looming\""]; public function SignPost(X:int, Y:int, textIndex:int, hidden:Boolean=false){ super(X, Y); loadGraphic(SprSignpost, true, false, 7, 17); addAnimation("idle", [0], 0, false); addAnimation("hidden", [1], 0, false); addAnimation("reveal", [1, 1, 1, 1, 1, 2, 3, 4, 5, 0], 30, false); if (hidden){ play("hidden"); this.solid = false; startsHidden = true; } else { play("idle"); }; _hidden = hidden; this.fixed = true; this._textIndex = textIndex; if (textIndex < texts.length){ this._signText = texts[textIndex]; } else { if (FlxG.debug){ trace(("ERROR: INVALID SIGNPOST TEXT INDEX " + textIndex)); }; this._signText = "This is not a signpost."; }; } public function withinRange(player:Player):Boolean{ var dx:Number = Math.abs(((player.centerX - this.x) - (width / 2))); var dy:Number = Math.abs(((player.y - this.y) - (height / 2))); return ((((dx <= ACTIVATION_DISTANCE)) && ((dy <= ACTIVATION_DISTANCE)))); } public function getRead():void{ PlayState.player.frozen = true; if (_hidden){ dirtSpray.x = this.x; dirtSpray.y = ((this.y + this.height) - 3); dirtSpray.start(true, 1, 0); _hidden = false; solid = true; play("reveal"); FlxG.quake.start(0.005, 1); FlxG.play(SndRumble); } else { ItemOverlay.showSignpost(this); }; } public function get textIndex():int{ return (_textIndex); } public function get hidden():Boolean{ return (_hidden); } public function get signText():String{ return (_signText); } override public function update():void{ if (((((PlayState.player) && (!(PlayState.player.frozen)))) && (FlxG.keys.justPressed("X")))){ if (withinRange(PlayState.player)){ getRead(); }; }; super.update(); if (((((finished) && ((_curAnim.name == "reveal")))) && (dirtSpray.dead))){ play("idle"); ItemOverlay.showSignpost(this); }; } public static function getDirtSpray():FlxEmitter{ var dirtSpray:FlxEmitter = new FlxEmitter(0, 0); dirtSpray.createSprites(Looming.SprPixel, 8, 0); dirtSpray.setRotation(0, 0); dirtSpray.setSize(7, 3); dirtSpray.setXSpeed(-20, 20); dirtSpray.setYSpeed(-20, -25); dirtSpray.gravity = 40; return (dirtSpray); } } }//package src.WorldObjects
Section 241
//SignPost_SndRumble (src.WorldObjects.SignPost_SndRumble) package src.WorldObjects { import mx.core.*; public class SignPost_SndRumble extends SoundAsset { } }//package src.WorldObjects
Section 242
//SignPost_SprSignpost (src.WorldObjects.SignPost_SprSignpost) package src.WorldObjects { import mx.core.*; public class SignPost_SprSignpost extends BitmapAsset { } }//package src.WorldObjects
Section 243
//Wall (src.WorldObjects.Wall) package src.WorldObjects { import org.flixel.*; public class Wall extends FlxSprite { public static const SECTION_SPAN:int = 0x0A00; private static var SprWallVert:Class = Wall_SprWallVert; private static var SprWallHoriz:Class = Wall_SprWallHoriz; public function Wall(X:Number=0, Y:Number=0, vertical:Boolean=false){ var graphic:Class; if (vertical){ graphic = SprWallVert; } else { graphic = SprWallHoriz; }; super(X, Y, graphic); fixed = true; } override public function update():void{ } } }//package src.WorldObjects
Section 244
//Wall_SprWallHoriz (src.WorldObjects.Wall_SprWallHoriz) package src.WorldObjects { import mx.core.*; public class Wall_SprWallHoriz extends BitmapAsset { } }//package src.WorldObjects
Section 245
//Wall_SprWallVert (src.WorldObjects.Wall_SprWallVert) package src.WorldObjects { import mx.core.*; public class Wall_SprWallVert extends BitmapAsset { } }//package src.WorldObjects
Section 246
//CommentaryState (src.CommentaryState) package src { import org.flixel.*; import flash.net.*; import src.Interface.*; import com.newgrounds.*; public class CommentaryState extends FlxState { private var currScreen:int;// = 0 private var rightButton:FlxButton; private var leftButton:FlxButton; private var scrolltarget:FlxSprite; private static const NUM_SCREENS:int = 9; private static const screen6Text:String = "The world in Looming is designed to lead the player to important locations; I did my best to add rough patches or faded paths that guide the eye toward places where items can be found. With the exception of the secret signposts at the corners of the world, every collectible object should be near a landmark and tied to the main path by these little scenery hints."; private static const screen1Text:String = "The concept for Looming came to me at the 2010 Game Developer's Conference in San Francisco, during one of the lectures at the Independent Gaming Summit. The note in my notebook reads "Looming - Atmospheric moody game w/ tiny PC and huge architecture." The images in my head were of a dark environment, misty and mysterious, with huge, looming shapes scattered around a barren plain. The original concept was for an exploration game, with perhaps more puzzles than ended up in the final product."; private static const screen3Text:String = "A recurring theme in Looming is indirect learning: finding out about someone through roundabout means. The player character, September, is learning of the inhabitants of Looming through what they leave behind. The only writings about the Lorem are from the outside perspective of the Seecha, and vice versa. The Oarbor can leave messages directly, but it is dead by the time September arrives. The Epiphany, a strange psychoclimatic event, provides knowledge without a source. And the player only knows about September through the letters to September's love, January."; private static const screen5Text:String = "The sound in Looming is entirely foley (homemade), recorded and processed in an attempt to sound a bit otherworldly. Many of the sounds are heavily processed versions of my voice. The drones and odd chants in the ambiance are simply the word "Looming" said in various ways, then reversed and processed to make them a bit stranger. Some noises, like the birds and the footsteps, are me fiddling with stuff on my desk."; private static const screen7Text:String = "I got more serious with my development process during Looming, thanks in large part to my fiancee and project manager, Melissa Avery. I used FogBugz, an issue tracking web application, to track and estimate the tasks involved in the last half of development. I also decided to spend more time on polish, inspired by the IGS keynote I watched as I developed Looming's initial concept. This is, I think, my most polished game to date."; private static const screen9Text:String = "I hope that you enjoyed Looming. If you have comments, questions, or suggestions, please contact me at . You can find my blog and occasional podcast at . Thanks for playing. Gregory Weir 2010"; private static const screen2Text:String = "The story came a bit later. I knew I wanted the discovery of artifacts to play a large role, and so there needed to be a culture to leave the artifacts behind. Post-apocalypse is overplayed in video games, so I decided that the culture had simply moved on, been forced to leave for another place. Somehow, one culture became two, and I wanted an interesting duality between them. Instead of being divided between science and mysticism, the Seecha and the Lorem are divided between pragmatic intuition and theoretical analysis. They each hold beliefs that our culture would find rather strange."; private static const screen4Text:String = "I tried to make the graphical style of Looming very distinctive. I hold a certain fascination for one-bit color; there was some fantastically primitive art done in games like Transylvania and various early Macintosh titles. Looming uses patterned dithering for its black-and-white sprites; the result reminds me of old woodcuts, while still being definitively digital. I cheated a bit on certain effects: clouds, shadows, and alpha fades mean that Looming is not a fully one-bit game."; private static const screen8Text:String = "Looming has many inspirations, but two in particular. Myst is the most prominent game to feature learning about an abandoned place through exploration. Yume Nikki is a free game that plays very similarly to Looming, but is harder, larger, and much more surreal. I am also indebted to the one-bit color games to which Looming is a partial homage."; private static var SprNotes1:Class = CommentaryState_SprNotes1; private static var SprNotes2:Class = CommentaryState_SprNotes2; private static var SprNotes3:Class = CommentaryState_SprNotes3; private static var SprNotes4:Class = CommentaryState_SprNotes4; private static var SprNotes5:Class = CommentaryState_SprNotes5; private static var SprNotes7:Class = CommentaryState_SprNotes7; private static var SprNotes6:Class = CommentaryState_SprNotes6; private static var SprNotes8:Class = CommentaryState_SprNotes8; private static var SprArrowRightDim:Class = CommentaryState_SprArrowRightDim; private static var SprArrowRightBright:Class = CommentaryState_SprArrowRightBright; private static var SprArrowLeftDim:Class = CommentaryState_SprArrowLeftDim; private static var SprArrowLeftBright:Class = CommentaryState_SprArrowLeftBright; public function CommentaryState(){ super(); } private function onBackClicked():void{ FlxG.fade.start(4278190080, 0.5, goBack); } private function onLeftClick():void{ if (currScreen > 0){ currScreen--; }; rightButton.visible = true; if (currScreen == 0){ leftButton.visible = false; }; scrollToScreen(); } override public function create():void{ scrolltarget = new FlxSprite(0, 0); scrolltarget.createGraphic(1, 1, 0); this.add(scrolltarget); FlxG.followBounds(0, 0, (NUM_SCREENS * FlxG.width), FlxG.height); FlxG.follow(scrolltarget, 10); leftButton = new FlxButton(25, 410, onLeftClick); leftButton.loadGraphic(new FlxSprite(0, 0, SprArrowLeftDim), new FlxSprite(0, 0, SprArrowLeftBright)); leftButton.scrollFactor.x = 0; leftButton.scrollFactor.y = 0; leftButton.visible = false; this.add(leftButton); rightButton = new FlxButton(500, 410, onRightClick); rightButton.loadGraphic(new FlxSprite(0, 0, SprArrowRightDim), new FlxSprite(0, 0, SprArrowRightBright)); rightButton.scrollFactor.x = 0; rightButton.scrollFactor.y = 0; this.add(rightButton); this.add(new TextButton(575, 440, "Back", 65, onBackClicked)); this.add(new FlxSprite(250, 10, SprNotes1)); this.add(new FlxSprite(((1 * FlxG.width) + 100), 10, SprNotes2)); this.add(new FlxSprite(((2 * FlxG.width) + 180), 10, SprNotes3)); this.add(new FlxSprite(((3 * FlxG.width) + 50), 10, SprNotes4)); this.add(new FlxSprite(((4 * FlxG.width) + 200), 10, SprNotes5)); this.add(new FlxSprite(((5 * FlxG.width) + 100), 10, SprNotes6)); this.add(new FlxSprite(((6 * FlxG.width) + 15), 10, SprNotes7)); this.add(new FlxSprite(((7 * FlxG.width) + 20), 10, SprNotes8)); addText(screen1Text, 0); addText(screen2Text, 1); addText(screen3Text, 2); addText(screen4Text, 3, 200, 100); addText(screen5Text, 4, 0, 250); addText(screen6Text, 5); addText(screen7Text, 6, 0, 250); addText(screen8Text, 7, 0, 225); addText(screen9Text, 8, 0, 0); this.add(new TextButton(5278, 48, "Gregory.Weir@gmail.com", 200, onEmailClicked, 16, "Dominican", 1)); this.add(new TextButton(5213, 71, "ludusnovus.net", 150, onHomepageClicked, 16, "Dominican", 1)); FlxG.mouse.show(); API.unlockMedal("Confidant"); } private function onEmailClicked():void{ navigateToURL(new URLRequest("mailto:Gregory.Weir@gmail.com"), "_self"); } private function onRightClick():void{ if (currScreen < (NUM_SCREENS - 1)){ currScreen++; }; leftButton.visible = true; if (currScreen == (NUM_SCREENS - 1)){ rightButton.visible = false; }; scrollToScreen(); } private function addText(text:String, screen:int, xOffset:int=0, yOffset:int=200):void{ var t:FlxText = new FlxText(((xOffset + 25) + (screen * FlxG.width)), (yOffset + 25), ((FlxG.width - 50) - xOffset), text); t.size = 16; t.font = "Dominican"; this.add(t); } private function goBack():void{ FlxG.state = new MenuState(); FlxG.flash.start(4278190080, 0.5); } private function onHomepageClicked():void{ navigateToURL(new URLRequest("http://ludusnovus.net"), "_blank"); } private function scrollToScreen():void{ scrolltarget.x = ((currScreen + 0.5) * FlxG.width); } } }//package src
Section 247
//CommentaryState_SprArrowLeftBright (src.CommentaryState_SprArrowLeftBright) package src { import mx.core.*; public class CommentaryState_SprArrowLeftBright extends BitmapAsset { } }//package src
Section 248
//CommentaryState_SprArrowLeftDim (src.CommentaryState_SprArrowLeftDim) package src { import mx.core.*; public class CommentaryState_SprArrowLeftDim extends BitmapAsset { } }//package src
Section 249
//CommentaryState_SprArrowRightBright (src.CommentaryState_SprArrowRightBright) package src { import mx.core.*; public class CommentaryState_SprArrowRightBright extends BitmapAsset { } }//package src
Section 250
//CommentaryState_SprArrowRightDim (src.CommentaryState_SprArrowRightDim) package src { import mx.core.*; public class CommentaryState_SprArrowRightDim extends BitmapAsset { } }//package src
Section 251
//CommentaryState_SprNotes1 (src.CommentaryState_SprNotes1) package src { import mx.core.*; public class CommentaryState_SprNotes1 extends BitmapAsset { } }//package src
Section 252
//CommentaryState_SprNotes2 (src.CommentaryState_SprNotes2) package src { import mx.core.*; public class CommentaryState_SprNotes2 extends BitmapAsset { } }//package src
Section 253
//CommentaryState_SprNotes3 (src.CommentaryState_SprNotes3) package src { import mx.core.*; public class CommentaryState_SprNotes3 extends BitmapAsset { } }//package src
Section 254
//CommentaryState_SprNotes4 (src.CommentaryState_SprNotes4) package src { import mx.core.*; public class CommentaryState_SprNotes4 extends BitmapAsset { } }//package src
Section 255
//CommentaryState_SprNotes5 (src.CommentaryState_SprNotes5) package src { import mx.core.*; public class CommentaryState_SprNotes5 extends BitmapAsset { } }//package src
Section 256
//CommentaryState_SprNotes6 (src.CommentaryState_SprNotes6) package src { import mx.core.*; public class CommentaryState_SprNotes6 extends BitmapAsset { } }//package src
Section 257
//CommentaryState_SprNotes7 (src.CommentaryState_SprNotes7) package src { import mx.core.*; public class CommentaryState_SprNotes7 extends BitmapAsset { } }//package src
Section 258
//CommentaryState_SprNotes8 (src.CommentaryState_SprNotes8) package src { import mx.core.*; public class CommentaryState_SprNotes8 extends BitmapAsset { } }//package src
Section 259
//CreditsState (src.CreditsState) package src { import org.flixel.*; import flash.net.*; import src.Interface.*; public class CreditsState extends FlxState { private static const CREDITS_TEXT:String = "Looming was created by Gregory Weir. It was sponsored by Newgrounds. Art, sound, and programming by Gregory Weir. Project management by Melissa Avery. Looming was made in Adobe Flash with Adam Saltsman's Flixel. Tools used include FlashDevelop, the GIMP, and Audacity. Thanks to my testers: Jake Elliott Jonas Kyratzes Chris Morris For more by Gregory Weir, visit ."; public function CreditsState(){ super(); } private function onBackClicked():void{ FlxG.fade.start(4278190080, 0.5, goBack); } private function onHomepageClicked():void{ navigateToURL(new URLRequest("http://ludusnovus.net"), "_blank"); } override public function create():void{ super.create(); var text:FlxText = new FlxText(20, 20, (FlxG.width - 60), CREDITS_TEXT); text.size = 16; text.font = "Dominican"; this.add(text); this.add(new TextButton(575, 440, "Back", 65, onBackClicked)); this.add(new TextButton(245, 407, "http://ludusnovus.net", 150, onHomepageClicked, 16, "Dominican")); } private function goBack():void{ FlxG.state = new MenuState(); FlxG.flash.start(4278190080, 0.5); } } }//package src
Section 260
//HelpState (src.HelpState) package src { import org.flixel.*; import src.Interface.*; public class HelpState extends FlxState { private static const HELP_TEXT:String = "ARROW KEYS: Move. X: Interact with objects and select collection items. C: View collection. ZERO: Mute sound. + -: Adjust volume. Looming is a strange place, full of relics abandoned by visitors that left long ago. These relics glitter on the ground, and collecting them can reveal information about this place and its people, or even open up new paths out of Looming."; public function HelpState(){ super(); } private function onBackClicked():void{ FlxG.fade.start(4278190080, 0.5, goBack); } override public function create():void{ super.create(); var text:FlxText = new FlxText(20, 20, (FlxG.width - 60), HELP_TEXT); text.size = 18; text.font = "Dominican"; this.add(text); this.add(new TextButton(575, 440, "Back", 65, onBackClicked)); } private function goBack():void{ FlxG.state = new MenuState(); FlxG.flash.start(4278190080, 0.5); } } }//package src
Section 261
//Looming (src.Looming) package src { import org.flixel.*; import flash.events.*; import src.Interface.*; import com.newgrounds.*; public class Looming extends FlxGame { private var FontDominicanSmallcaps:String;// = "Looming_FontDominicanSmallcaps" private var FontDominican:String;// = "Looming_FontDominican" public static var SprPixel:Class = Looming_SprPixel; public static var SndBackground:Class = Looming_SndBackground; public function Looming(){ super(640, 480, NGLogoState, 1); addEventListener(Event.ADDED_TO_STAGE, onAdded); FlxG.music = new FlxSound(); FlxG.music.survive = true; FlxG.music.volume = 0.5; FlxG.music.loadEmbedded(Looming.SndBackground, true); FlxG.music.play(); this.pause = new Pause(); } private function onAdded(e:Event):void{ var hostDomain:String; var index:String; var offset:int; removeEventListener(Event.ADDED_TO_STAGE, onAdded); var domainsAllowed:Array = new Array(); var lock:Boolean; if (domainsAllowed.length > 0){ lock = false; hostDomain = stage.loaderInfo.url.split("/")[2]; for (index in domainsAllowed) { offset = hostDomain.toLowerCase().indexOf(domainsAllowed[index]); if ((((offset > -1)) && ((offset == (hostDomain.length - domainsAllowed[index].length))))){ lock = true; break; }; }; }; if (!lock){ this.alpha = 0; }; } } }//package src
Section 262
//Looming_FontDominican (src.Looming_FontDominican) package src { import mx.core.*; public class Looming_FontDominican extends FontAsset { } }//package src
Section 263
//Looming_FontDominicanSmallcaps (src.Looming_FontDominicanSmallcaps) package src { import mx.core.*; public class Looming_FontDominicanSmallcaps extends FontAsset { } }//package src
Section 264
//Looming_SndBackground (src.Looming_SndBackground) package src { import mx.core.*; public class Looming_SndBackground extends SoundAsset { } }//package src
Section 265
//Looming_SprPixel (src.Looming_SprPixel) package src { import mx.core.*; public class Looming_SprPixel extends BitmapAsset { } }//package src
Section 266
//MenuState (src.MenuState) package src { import org.flixel.*; import src.WorldObjects.*; import flash.net.*; import src.Interface.*; import src.Data.*; import com.newgrounds.*; public class MenuState extends FlxState { private var level:Level; private var scrollSpeed:Number;// = 0.5 private static var SprEndingOff:Class = MenuState_SprEndingOff; private static var SprEndingOn:Class = MenuState_SprEndingOn; private static var SprTitleLogo:Class = MenuState_SprTitleLogo; public function MenuState(){ super(); } private function startGame():void{ NarrationState.isOpening = true; FlxG.state = new NarrationState(); } private function onNotesClicked():void{ FlxG.fade.start(4278190080, 0.5, showNotes); } private function onHelpClicked():void{ FlxG.fade.start(4278190080, 0.5, showHelp); } override public function update():void{ super.update(); FlxG.scroll.y = (FlxG.scroll.y + scrollSpeed); if (FlxG.scroll.y > -3750){ scrollSpeed = -0.5; }; if (FlxG.scroll.y < -5710){ scrollSpeed = 0.5; }; } private function showNotes():void{ FlxG.state = new CommentaryState(); FlxG.flash.start(4278190080, 0.5); } private function onSponsorClicked():void{ API.loadNewgrounds(); } private function onByClicked():void{ navigateToURL(new URLRequest("http://ludusnovus.net/"), "_blank"); } private function addEndingSymbols():void{ var s:FlxSprite; var g:Class; var X:Number = 260; var Y:Number = 430; var i:int; while (i < 9) { if (SaveData.endings[i]){ g = SprEndingOn; } else { g = SprEndingOff; }; s = new FlxSprite((X + (i * 15)), Y, g); s.scrollFactor.x = 0; s.scrollFactor.y = 0; this.add(s); i++; }; } private function showCredits():void{ FlxG.state = new CreditsState(); FlxG.flash.start(4278190080, 0.5); } private function onCreditsClicked():void{ FlxG.fade.start(4278190080, 0.5, showCredits); } override public function create():void{ var logo:FlxSprite; level = new Level(); this.add(level); FlxG.scroll.x = -2878; FlxG.scroll.y = -5705; logo = new FlxSprite(25, 120, SprTitleLogo); logo.scrollFactor.x = 0; logo.scrollFactor.y = 0; this.add(logo); var numEndings:int = SaveData.numEndings; this.add(new TextButton(25, 400, "Help", 60, onHelpClicked)); this.add(new TextButton(290, 400, "BEGIN", 80, onBeginClicked)); this.add(new TextButton(540, 400, "Credits", 100, onCreditsClicked)); if (numEndings == 9){ this.add(new TextButton(290, 440, "NOTES", 80, onNotesClicked)); }; this.add(new TextButton(25, 460, "Created by Gregory Weir", 200, onByClicked, 12)); this.add(new TextButton(375, 460, "Play More Games at Newgrounds.com", 250, onSponsorClicked, 12)); if (numEndings > 0){ addEndingSymbols(); }; FlxG.mouse.show(); } private function onBeginClicked():void{ FlxG.fade.start(4278190080, 1, startGame); } private function showHelp():void{ FlxG.state = new HelpState(); FlxG.flash.start(4278190080, 0.5); } } }//package src
Section 267
//MenuState_SprEndingOff (src.MenuState_SprEndingOff) package src { import mx.core.*; public class MenuState_SprEndingOff extends BitmapAsset { } }//package src
Section 268
//MenuState_SprEndingOn (src.MenuState_SprEndingOn) package src { import mx.core.*; public class MenuState_SprEndingOn extends BitmapAsset { } }//package src
Section 269
//MenuState_SprTitleLogo (src.MenuState_SprTitleLogo) package src { import mx.core.*; public class MenuState_SprTitleLogo extends BitmapAsset { } }//package src
Section 270
//NarrationState (src.NarrationState) package src { import org.flixel.*; import src.Interface.*; import src.Data.*; import com.newgrounds.*; public class NarrationState extends FlxState { private var narrOverlay:NarrationOverlay; public static var nextClosing:String; public static var isOpening:Boolean = true; public function NarrationState(){ super(); } private function goToMenu():void{ FlxG.state = new MenuState(); FlxG.flash.start(4278190080, 1); FlxG.music.fadeIn(1); } private function startGame():void{ FlxG.state = new PlayState(); } override public function update():void{ super.update(); if (((FlxG.mouse.justPressed()) || (FlxG.keys.justPressed("X")))){ finishNarration(); }; } override public function create():void{ var entrance:int; narrOverlay = new NarrationOverlay(false); this.add(narrOverlay); if (isOpening){ FlxG.flash.start(4278190080); entrance = SaveData.getEntranceIndex(); if (entrance >= 9){ API.unlockMedal("Repeat Visitor"); }; if (entrance >= Narration.Entrances.length){ entrance = (Narration.Entrances.length - 1); }; narrOverlay.display(Narration.Entrances[entrance], finishNarration); if (entrance < (Narration.Entrances.length - 1)){ SaveData.incrementEntrance(); }; } else { narrOverlay.display(nextClosing, finishNarration); }; FlxG.mouse.show(); } private function finishNarration():void{ if (isOpening){ FlxG.fade.start(4278190080, 1, startGame); } else { FlxG.fade.start(4278190080, 1, goToMenu); }; } } }//package src
Section 271
//NGLogoState (src.NGLogoState) package src { import org.flixel.*; import com.newgrounds.*; public class NGLogoState extends FlxState { private var maskSprite:FlxSprite; private static const MASK_SPEED:uint = 4; private static var SprNGLogo:Class = NGLogoState_SprNGLogo; private static var SprGradMask:Class = NGLogoState_SprGradMask; public function NGLogoState(){ super(); } override public function update():void{ if (FlxG.mouse.justPressed()){ API.loadNewgrounds(); }; if ((maskSprite.y + maskSprite.height) > FlxG.height){ maskSprite.y = (maskSprite.y - MASK_SPEED); } else { FlxG.state = new MenuState(); FlxG.flash.start(4278190080, 1); }; super.update(); } override public function create():void{ var logo:FlxSprite = new FlxSprite(80, 0, SprNGLogo); this.add(logo); maskSprite = new FlxSprite(0, 0, SprGradMask); this.add(maskSprite); FlxG.mouse.show(); } } }//package src
Section 272
//NGLogoState_SprGradMask (src.NGLogoState_SprGradMask) package src { import mx.core.*; public class NGLogoState_SprGradMask extends BitmapAsset { } }//package src
Section 273
//NGLogoState_SprNGLogo (src.NGLogoState_SprNGLogo) package src { import mx.core.*; public class NGLogoState_SprNGLogo extends BitmapAsset { } }//package src
Section 274
//PlayState (src.PlayState) package src { import org.flixel.*; import flash.system.*; import src.WorldObjects.*; import src.Interface.*; import src.Data.*; public class PlayState extends FlxState { private var coordText:FlxText; private var level:Level; private var collOverlay:CollectionOverlay; private var editModeOn:Boolean; private var editMode:int;// = 0 private var editHelpText:FlxText; private var itemOverlay:ItemOverlay; private static const EDITMODE_BACKGROUND:int = 0; private static const TOWER_MAP_CODE:Array = [270, 90, 45, 225]; private static const EDITMODE_SCENERY:int = 1; private static const TOWER_SECRET_CODE:Array = [180, 90, 0, 270]; private static const EDITMODE_ITEMS:int = 2; private static const TOWER_FORGIVENESS:int = 10; public static var player:Player; public static var xReminder:XReminder; public static var editSprite:FlxSprite; public static var cReminder:CollectionReminder; private static var _timePlayed:Number; public function PlayState(){ itemOverlay = new ItemOverlay(); collOverlay = new CollectionOverlay(); super(); } private function checkPickupPortals():void{ if (SaveData.allCollected(3)){ level.portals[3].reveal(); }; if (SaveData.allCollected(4)){ level.portals[4].reveal(); }; if (SaveData.allCollected(2)){ level.portals[5].reveal(); }; } override public function update():void{ _timePlayed = (_timePlayed + FlxG.elapsed); if (FlxG.debug){ coordText.text = (((("(" + player.x.toFixed(0)) + ", ") + player.y.toFixed(0)) + ")"); }; level.overlapItems(onOverlapPickups); super.update(); updateLightTowers(); if (((FlxG.debug) && (FlxG.keys.justPressed("R")))){ SaveData.resetSaves(); }; if (FlxG.keys.justPressed("BACKSPACE")){ trace(((player.x + ", ") + player.y)); }; if (((FlxG.debug) && (FlxG.keys.justPressed("E")))){ toggleEditMode(); }; if (((FlxG.debug) && (FlxG.keys.justPressed("A")))){ SaveData.collectAll(); }; if (((!(player.frozen)) && (FlxG.keys.justPressed("C")))){ if (FlxG.debug){ trace("Showing collection."); }; collOverlay.show(); }; if (editModeOn){ updateEditMode(); }; checkEpiphanyPortal(); } private function checkEpiphanyPortal():void{ if (level.portals[7].visible){ return; }; var i = 1; while (i <= 8) { if (level.signposts.members[i].hidden){ return; }; i++; }; level.portals[7].reveal(false); } private function toggleEditMode():void{ if (editModeOn){ editHelpText.text = "Edit mode off."; editModeOn = false; if (editSprite){ editSprite.kill(); editSprite.active = false; editSprite = null; }; FlxG.mouse.hide(); } else { editHelpText.text = "Edit mode on."; editModeOn = true; createNewEditSprite(); FlxG.mouse.show(); }; } private function getGroupMemberAt(group:FlxGroup, x:int, y:int):FlxSprite{ var o:FlxObject; for each (o in group.members) { if ((((((((((o is FlxSprite)) && ((o.x <= x)))) && ((o.y <= y)))) && (((o.x + o.width) >= x)))) && (((o.y + o.height) >= y)))){ return (FlxSprite(o)); }; }; return (null); } private function createNewEditSprite(offset:int=0):void{ var index:int; if (editSprite){ if ((editSprite is BackgroundStamp)){ index = BackgroundStamp(editSprite).spriteIndex; } else { if ((editSprite is Scenery)){ index = Scenery(editSprite).spriteIndex; }; }; }; index = (index + offset); if (editMode == EDITMODE_BACKGROUND){ index = ((index + BackgroundStamp.sprites.length) % BackgroundStamp.sprites.length); editSprite = new BackgroundStamp(FlxG.mouse.x, FlxG.mouse.y, index); level.backgroundStamps.add(editSprite); } else { if (editMode == EDITMODE_SCENERY){ index = ((index + Scenery.sprites.length) % Scenery.sprites.length); editSprite = new Scenery(FlxG.mouse.x, FlxG.mouse.y, index); level.sceneryObjects.add(editSprite); } else { editSprite = new ItemPickup(FlxG.mouse.x, FlxG.mouse.y, -1, -1); level.itemPickups.add(editSprite); }; }; } private function lightTowerCodeMatched(code:Array):Boolean{ var i:int; while (i < level.lights.members.length) { if (Math.abs((level.lights.members[i].angle - code[i])) > TOWER_FORGIVENESS){ return (false); }; i++; }; return (true); } private function getLevelXML():XML{ return (level.getLevelXML()); } private function onOverlapPickups(player:Player, item:ItemPickup):void{ if ((((item.index == -1)) || ((item.type == -1)))){ return; }; item.getPickedUp(); checkPickupPortals(); } private function updateEditMode():void{ var grabbed:FlxSprite; var xml:String; if (FlxG.keys.justPressed("G")){ if (editMode == EDITMODE_BACKGROUND){ grabbed = getGroupMemberAt(level.backgroundStamps, FlxG.mouse.x, FlxG.mouse.y); } else { if (editMode == EDITMODE_SCENERY){ grabbed = getGroupMemberAt(level.sceneryObjects, FlxG.mouse.x, FlxG.mouse.y); } else { grabbed = getGroupMemberAt(level.itemPickups, FlxG.mouse.x, FlxG.mouse.y); }; }; if (((grabbed) && (!((grabbed == editSprite))))){ editSprite.kill(); editSprite.active = false; editSprite = grabbed; }; }; if (editSprite){ editSprite.x = FlxG.mouse.x; editSprite.y = FlxG.mouse.y; }; if (FlxG.mouse.justPressed()){ createNewEditSprite(); }; if (FlxG.keys.justPressed("M")){ editMode++; if (editMode > EDITMODE_ITEMS){ editMode = EDITMODE_BACKGROUND; }; if (editMode == EDITMODE_BACKGROUND){ editHelpText.text = "Editing background."; } else { if (editMode == EDITMODE_SCENERY){ editHelpText.text = "Editing scenery."; } else { editHelpText.text = "Editing items."; }; }; editSprite.kill(); editSprite.active = false; createNewEditSprite(); }; if (FlxG.keys.justPressed("ENTER")){ xml = getLevelXML().toString(); trace(xml); System.setClipboard(xml); }; if (((FlxG.keys.justPressed("LBRACKET")) && (!((editMode == EDITMODE_ITEMS))))){ editSprite.kill(); createNewEditSprite(-1); }; if (((FlxG.keys.justPressed("RBRACKET")) && (!((editMode == EDITMODE_ITEMS))))){ editSprite.kill(); createNewEditSprite(1); }; } private function updateLightTowers():void{ if (lightTowerCodeMatched(TOWER_MAP_CODE)){ level.portals[6].reveal(false); }; if (lightTowerCodeMatched(TOWER_SECRET_CODE)){ level.portals[8].reveal(false); }; } override public function destroy():void{ super.destroy(); player = null; } override public function create():void{ _timePlayed = 0; FlxG.mouse.hide(); level = new Level(); this.add(level); player = new Player(3200, 5945); level.addPlayer(player); FlxG.follow(player); this.add(itemOverlay); if (FlxG.debug){ editHelpText = new FlxText(10, 25, FlxG.width, " "); editHelpText.scrollFactor.x = 0; editHelpText.scrollFactor.y = 0; this.add(editHelpText); }; if (xReminder == null){ xReminder = new XReminder(); }; if (cReminder == null){ cReminder = new CollectionReminder(); }; this.add(cReminder); this.add(xReminder); this.add(collOverlay); if (FlxG.debug){ coordText = new FlxText(5, 5, 100, null); coordText.scrollFactor.x = 0; coordText.scrollFactor.y = 0; this.add(coordText); }; checkPickupPortals(); FlxG.flash.start(4278190080, 1); } public static function get timePlayed():Number{ return (_timePlayed); } } }//package src
Section 275
//Preloader (src.Preloader) package src { import com.newgrounds.components.*; public class Preloader extends FlxNGPreloader { public function Preloader(){ super(); className = "src.Looming"; NewgroundsAPIId = "12790:kBnQfLMF"; NewgroundsAPIEncryptionKey = "LSIbEEdF32IHqlbWRCFIOAZ0IlA6aPLe"; NewgroundsAPIShowAds = true; createMedalPopup(5, 5); } } }//package src
Section 276
//_activeButtonStyleStyle (_activeButtonStyleStyle) package { import mx.core.*; import mx.styles.*; public class _activeButtonStyleStyle { public static function init(_activeButtonStyleStyle:IFlexModuleFactory):void{ var fbs = _activeButtonStyleStyle; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".activeButtonStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".activeButtonStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ }; }; } } }//package
Section 277
//_activeTabStyleStyle (_activeTabStyleStyle) package { import mx.core.*; import mx.styles.*; public class _activeTabStyleStyle { public static function init(:IFlexModuleFactory):void{ var fbs = ; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".activeTabStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".activeTabStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fontWeight = "bold"; }; }; } } }//package
Section 278
//_alertButtonStyleStyle (_alertButtonStyleStyle) package { import mx.core.*; import mx.styles.*; public class _alertButtonStyleStyle { public static function init(:IFlexModuleFactory):void{ var fbs = ; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".alertButtonStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".alertButtonStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.color = 734012; }; }; } } }//package
Section 279
//_comboDropdownStyle (_comboDropdownStyle) package { import mx.core.*; import mx.styles.*; public class _comboDropdownStyle { public static function init(leading:IFlexModuleFactory):void{ var fbs = leading; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".comboDropdown"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".comboDropdown", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.shadowDirection = "center"; this.fontWeight = "normal"; this.dropShadowEnabled = true; this.leading = 0; this.backgroundColor = 0xFFFFFF; this.shadowDistance = 1; this.cornerRadius = 0; this.borderThickness = 0; this.paddingLeft = 5; this.paddingRight = 5; }; }; } } }//package
Section 280
//_dataGridStylesStyle (_dataGridStylesStyle) package { import mx.core.*; import mx.styles.*; public class _dataGridStylesStyle { public static function init(:IFlexModuleFactory):void{ var fbs = ; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".dataGridStyles"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".dataGridStyles", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fontWeight = "bold"; }; }; } } }//package
Section 281
//_dateFieldPopupStyle (_dateFieldPopupStyle) package { import mx.core.*; import mx.styles.*; public class _dateFieldPopupStyle { public static function init(_dateFieldPopupStyle.as$3:IFlexModuleFactory):void{ var fbs = _dateFieldPopupStyle.as$3; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".dateFieldPopup"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".dateFieldPopup", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.dropShadowEnabled = true; this.backgroundColor = 0xFFFFFF; this.borderThickness = 0; }; }; } } }//package
Section 282
//_errorTipStyle (_errorTipStyle) package { import mx.core.*; import mx.styles.*; public class _errorTipStyle { public static function init(borderColor:IFlexModuleFactory):void{ var fbs = borderColor; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".errorTip"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".errorTip", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fontWeight = "bold"; this.borderStyle = "errorTipRight"; this.paddingTop = 4; this.borderColor = 13510953; this.color = 0xFFFFFF; this.fontSize = 9; this.shadowColor = 0; this.paddingLeft = 4; this.paddingBottom = 4; this.paddingRight = 4; }; }; } } }//package
Section 283
//_globalStyle (_globalStyle) package { import mx.core.*; import mx.styles.*; import mx.skins.halo.*; public class _globalStyle { public static function init(horizontalGridLines:IFlexModuleFactory):void{ var fbs = horizontalGridLines; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration("global"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration("global", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fillColor = 0xFFFFFF; this.kerning = false; this.iconColor = 0x111111; this.textRollOverColor = 2831164; this.horizontalAlign = "left"; this.shadowCapColor = 14015965; this.backgroundAlpha = 1; this.filled = true; this.textDecoration = "none"; this.roundedBottomCorners = true; this.fontThickness = 0; this.focusBlendMode = "normal"; this.fillColors = [0xFFFFFF, 0xCCCCCC, 0xFFFFFF, 0xEEEEEE]; this.horizontalGap = 8; this.borderCapColor = 9542041; this.buttonColor = 7305079; this.indentation = 17; this.selectionDisabledColor = 0xDDDDDD; this.closeDuration = 250; this.embedFonts = false; this.paddingTop = 0; this.letterSpacing = 0; this.focusAlpha = 0.4; this.bevel = true; this.fontSize = 10; this.shadowColor = 0xEEEEEE; this.borderAlpha = 1; this.paddingLeft = 0; this.fontWeight = "normal"; this.indicatorGap = 14; this.focusSkin = HaloFocusRect; this.dropShadowEnabled = false; this.leading = 2; this.borderSkin = HaloBorder; this.fontSharpness = 0; this.modalTransparencyDuration = 100; this.borderThickness = 1; this.backgroundSize = "auto"; this.borderStyle = "inset"; this.borderColor = 12040892; this.fontAntiAliasType = "advanced"; this.errorColor = 0xFF0000; this.shadowDistance = 2; this.horizontalGridLineColor = 0xF7F7F7; this.stroked = false; this.modalTransparencyColor = 0xDDDDDD; this.cornerRadius = 0; this.verticalAlign = "top"; this.textIndent = 0; this.fillAlphas = [0.6, 0.4, 0.75, 0.65]; this.verticalGridLineColor = 14015965; this.themeColor = 40447; this.version = "3.0.0"; this.shadowDirection = "center"; this.modalTransparency = 0.5; this.repeatInterval = 35; this.openDuration = 250; this.textAlign = "left"; this.fontFamily = "Verdana"; this.textSelectedColor = 2831164; this.paddingBottom = 0; this.strokeWidth = 1; this.fontGridFitType = "pixel"; this.horizontalGridLines = false; this.useRollOver = true; this.verticalGridLines = true; this.repeatDelay = 500; this.fontStyle = "normal"; this.dropShadowColor = 0; this.focusThickness = 2; this.verticalGap = 6; this.disabledColor = 11187123; this.paddingRight = 0; this.focusRoundedCorners = "tl tr bl br"; this.borderSides = "left top right bottom"; this.disabledIconColor = 0x999999; this.modalTransparencyBlur = 3; this.color = 734012; this.selectionDuration = 250; this.highlightAlphas = [0.3, 0]; }; }; } } }//package
Section 284
//_headerDateTextStyle (_headerDateTextStyle) package { import mx.core.*; import mx.styles.*; public class _headerDateTextStyle { public static function init(bold:IFlexModuleFactory):void{ var fbs = bold; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".headerDateText"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".headerDateText", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fontWeight = "bold"; this.textAlign = "center"; }; }; } } }//package
Section 285
//_headerDragProxyStyleStyle (_headerDragProxyStyleStyle) package { import mx.core.*; import mx.styles.*; public class _headerDragProxyStyleStyle { public static function init(:IFlexModuleFactory):void{ var fbs = ; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".headerDragProxyStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".headerDragProxyStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fontWeight = "bold"; }; }; } } }//package
Section 286
//_linkButtonStyleStyle (_linkButtonStyleStyle) package { import mx.core.*; import mx.styles.*; public class _linkButtonStyleStyle { public static function init(http://adobe.com/AS3/2006/builtin:IFlexModuleFactory):void{ var fbs = http://adobe.com/AS3/2006/builtin; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".linkButtonStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".linkButtonStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.paddingTop = 2; this.paddingLeft = 2; this.paddingBottom = 2; this.paddingRight = 2; }; }; } } }//package
Section 287
//_opaquePanelStyle (_opaquePanelStyle) package { import mx.core.*; import mx.styles.*; public class _opaquePanelStyle { public static function init(Object:IFlexModuleFactory):void{ var fbs = Object; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".opaquePanel"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".opaquePanel", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.borderColor = 0xFFFFFF; this.backgroundColor = 0xFFFFFF; this.headerColors = [0xE7E7E7, 0xD9D9D9]; this.footerColors = [0xE7E7E7, 0xC7C7C7]; this.borderAlpha = 1; }; }; } } }//package
Section 288
//_plainStyle (_plainStyle) package { import mx.core.*; import mx.styles.*; public class _plainStyle { public static function init(backgroundImage:IFlexModuleFactory):void{ var fbs = backgroundImage; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".plain"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".plain", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.paddingTop = 0; this.backgroundColor = 0xFFFFFF; this.backgroundImage = ""; this.horizontalAlign = "left"; this.paddingLeft = 0; this.paddingBottom = 0; this.paddingRight = 0; }; }; } } }//package
Section 289
//_popUpMenuStyle (_popUpMenuStyle) package { import mx.core.*; import mx.styles.*; public class _popUpMenuStyle { public static function init(normal:IFlexModuleFactory):void{ var fbs = normal; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".popUpMenu"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".popUpMenu", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fontWeight = "normal"; this.textAlign = "left"; }; }; } } }//package
Section 290
//_richTextEditorTextAreaStyleStyle (_richTextEditorTextAreaStyleStyle) package { import mx.core.*; import mx.styles.*; public class _richTextEditorTextAreaStyleStyle { public static function init(_richTextEditorTextAreaStyleStyle:IFlexModuleFactory):void{ var fbs = _richTextEditorTextAreaStyleStyle; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".richTextEditorTextAreaStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".richTextEditorTextAreaStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ }; }; } } }//package
Section 291
//_swatchPanelTextFieldStyle (_swatchPanelTextFieldStyle) package { import mx.core.*; import mx.styles.*; public class _swatchPanelTextFieldStyle { public static function init(shadowCapColor:IFlexModuleFactory):void{ var fbs = shadowCapColor; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".swatchPanelTextField"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".swatchPanelTextField", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.borderStyle = "inset"; this.borderColor = 14015965; this.highlightColor = 12897484; this.backgroundColor = 0xFFFFFF; this.shadowCapColor = 14015965; this.shadowColor = 14015965; this.paddingLeft = 5; this.buttonColor = 7305079; this.borderCapColor = 9542041; this.paddingRight = 5; }; }; } } }//package
Section 292
//_textAreaHScrollBarStyleStyle (_textAreaHScrollBarStyleStyle) package { import mx.core.*; import mx.styles.*; public class _textAreaHScrollBarStyleStyle { public static function init(_textAreaHScrollBarStyleStyle:IFlexModuleFactory):void{ var fbs = _textAreaHScrollBarStyleStyle; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".textAreaHScrollBarStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".textAreaHScrollBarStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ }; }; } } }//package
Section 293
//_textAreaVScrollBarStyleStyle (_textAreaVScrollBarStyleStyle) package { import mx.core.*; import mx.styles.*; public class _textAreaVScrollBarStyleStyle { public static function init(_textAreaVScrollBarStyleStyle:IFlexModuleFactory):void{ var fbs = _textAreaVScrollBarStyleStyle; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".textAreaVScrollBarStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".textAreaVScrollBarStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ }; }; } } }//package
Section 294
//_todayStyleStyle (_todayStyleStyle) package { import mx.core.*; import mx.styles.*; public class _todayStyleStyle { public static function init(color:IFlexModuleFactory):void{ var fbs = color; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".todayStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".todayStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.color = 0xFFFFFF; this.textAlign = "center"; }; }; } } }//package
Section 295
//_weekDayStyleStyle (_weekDayStyleStyle) package { import mx.core.*; import mx.styles.*; public class _weekDayStyleStyle { public static function init(bold:IFlexModuleFactory):void{ var fbs = bold; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".weekDayStyle"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".weekDayStyle", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fontWeight = "bold"; this.textAlign = "center"; }; }; } } }//package
Section 296
//_windowStatusStyle (_windowStatusStyle) package { import mx.core.*; import mx.styles.*; public class _windowStatusStyle { public static function init(:IFlexModuleFactory):void{ var fbs = ; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".windowStatus"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".windowStatus", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.color = 0x666666; }; }; } } }//package
Section 297
//_windowStylesStyle (_windowStylesStyle) package { import mx.core.*; import mx.styles.*; public class _windowStylesStyle { public static function init(:IFlexModuleFactory):void{ var fbs = ; var style:CSSStyleDeclaration = StyleManager.getStyleDeclaration(".windowStyles"); if (!style){ style = new CSSStyleDeclaration(); StyleManager.setStyleDeclaration(".windowStyles", style, false); }; if (style.defaultFactory == null){ style.defaultFactory = function ():void{ this.fontWeight = "bold"; }; }; } } }//package
Section 298
//en_US$core_properties (en_US$core_properties) package { import mx.resources.*; public class en_US$core_properties extends ResourceBundle { public function en_US$core_properties(){ super("en_US", "core"); } override protected function getContent():Object{ var _local1:Object = {multipleChildSets_ClassAndInstance:"Multiple sets of visual children have been specified for this component (component definition and component instance).", truncationIndicator:"...", notExecuting:"Repeater is not executing.", versionAlreadyRead:"Compatibility version has already been read.", multipleChildSets_ClassAndSubclass:"Multiple sets of visual children have been specified for this component (base component definition and derived component definition).", viewSource:"View Source", badFile:"File does not exist.", stateUndefined:"Undefined state '{0}'.", versionAlreadySet:"Compatibility version has already been set."}; return (_local1); } } }//package
Section 299
//en_US$skins_properties (en_US$skins_properties) package { import mx.resources.*; public class en_US$skins_properties extends ResourceBundle { public function en_US$skins_properties(){ super("en_US", "skins"); } override protected function getContent():Object{ var _local1:Object = {notLoaded:"Unable to load '{0}'."}; return (_local1); } } }//package
Section 300
//en_US$styles_properties (en_US$styles_properties) package { import mx.resources.*; public class en_US$styles_properties extends ResourceBundle { public function en_US$styles_properties(){ super("en_US", "styles"); } override protected function getContent():Object{ var _local1:Object = {unableToLoad:"Unable to load style({0}): {1}."}; return (_local1); } } }//package
Section 301
//FlxLoaderBar (FlxLoaderBar) package { import flash.display.*; public dynamic class FlxLoaderBar extends BitmapData { public function FlxLoaderBar(w:Number, h:Number){ super(w, h); } } }//package
Section 302
//FlxLoaderFrame (FlxLoaderFrame) package { import flash.display.*; public dynamic class FlxLoaderFrame extends BitmapData { public function FlxLoaderFrame(w:Number, h:Number){ super(w, h); } } }//package
Section 303
//FlxLoaderPlay (FlxLoaderPlay) package { import flash.display.*; public dynamic class FlxLoaderPlay extends BitmapData { public function FlxLoaderPlay(w:Number, h:Number){ super(w, h); } } }//package

Library Items

Symbol 1 GraphicUsed by:15
Symbol 2 FontUsed by:4
Symbol 3 FontUsed by:4
Symbol 4 TextUses:2 3Used by:15
Symbol 5 GraphicUsed by:6
Symbol 6 MovieClipUses:5Used by:15
Symbol 7 FontUsed by:8 14
Symbol 8 EditableTextUses:7Used by:15
Symbol 9 FontUsed by:10 11
Symbol 10 TextUses:9Used by:15
Symbol 11 EditableTextUses:9Used by:15
Symbol 12 GraphicUsed by:13
Symbol 13 MovieClipUses:12Used by:15
Symbol 14 EditableTextUses:7Used by:15
Symbol 15 MovieClip {com.newgrounds.components.MedalPopup} [com.newgrounds.components.MedalPopup]Uses:1 4 6 8 10 11 13 14
Symbol 16 Bitmap {FlxLoaderBar} [FlxLoaderBar]
Symbol 17 GraphicUsed by:31
Symbol 18 GraphicUsed by:19
Symbol 19 MovieClipUses:18Used by:31
Symbol 20 GraphicUsed by:31
Symbol 21 GraphicUsed by:24
Symbol 22 GraphicUsed by:24
Symbol 23 GraphicUsed by:24
Symbol 24 ButtonUses:21 22 23Used by:31
Symbol 25 BitmapUsed by:26
Symbol 26 GraphicUses:25Used by:31
Symbol 27 GraphicUsed by:31
Symbol 28 GraphicUsed by:31
Symbol 29 GraphicUsed by:30
Symbol 30 MovieClip {NewgroundsAPI_fla.NewgroundsAPIAsset_Load_Indicator_3} [NewgroundsAPI_fla.NewgroundsAPIAsset_Load_Indicator_3]Uses:29Used by:31
Symbol 31 MovieClip {NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23} [NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23]Uses:17 19 20 24 26 27 28 30Used by:32
Symbol 32 MovieClip {com.newgrounds.components.FlashAd} [com.newgrounds.components.FlashAd]Uses:31
Symbol 33 Bitmap {FlxLoaderFrame} [FlxLoaderFrame]
Symbol 34 Bitmap {FlxLoaderPlay} [FlxLoaderPlay]
Symbol 35 Sound {org.flixel.FlxGame_SndFlixel} [org.flixel.FlxGame_SndFlixel]
Symbol 36 Sound {org.flixel.FlxGame_SndBeep} [org.flixel.FlxGame_SndBeep]
Symbol 37 Sound {src.Looming_SndBackground} [src.Looming_SndBackground]
Symbol 38 Sound {src.WorldObjects.Bird_SndBird} [src.WorldObjects.Bird_SndBird]
Symbol 39 Sound {src.WorldObjects.ItemPickup_SndItemPickup} [src.WorldObjects.ItemPickup_SndItemPickup]
Symbol 40 Sound {src.WorldObjects.LightTower_SndTowerRotation} [src.WorldObjects.LightTower_SndTowerRotation]
Symbol 41 Sound {src.WorldObjects.Player_SfxStep2} [src.WorldObjects.Player_SfxStep2]
Symbol 42 Sound {src.WorldObjects.Player_SfxStep1} [src.WorldObjects.Player_SfxStep1]
Symbol 43 Sound {src.WorldObjects.Portal_SndPortal} [src.WorldObjects.Portal_SndPortal]
Symbol 44 Sound {src.WorldObjects.SignPost_SndRumble} [src.WorldObjects.SignPost_SndRumble]
Symbol 45 Font {src.Looming_FontDominicanSmallcaps}
Symbol 46 Bitmap {src.Interface.CollectionOverlay_SprFrame}
Symbol 47 Bitmap {src.MenuState_SprEndingOff}
Symbol 48 Bitmap {src.Interface.CollectionItem_SprThumbRing}
Symbol 49 Bitmap {src.WorldObjects.SignPost_SprSignpost}
Symbol 50 Bitmap {src.WorldObjects.BackgroundStamp_SprRoughPatch}
Symbol 51 Bitmap {src.Interface.ItemOverlay_SprItemRing}
Symbol 52 Bitmap {src.WorldObjects.LightBeam_SprBeamOverlay}
Symbol 53 Bitmap {org.flixel.data.FlxPanel_ImgReddit}
Symbol 54 Bitmap {src.WorldObjects.Portal_SprPartsIdle}
Symbol 55 Bitmap {src.Looming_SprPixel}
Symbol 56 Bitmap {src.NGLogoState_SprNGLogo}
Symbol 57 Bitmap {src.WorldObjects.LightTower_SprLightTower}
Symbol 58 Bitmap {org.flixel.data.FlxMouse_ImgDefaultCursor}
Symbol 59 Bitmap {src.Interface.ItemOverlay_SprMap1_1}
Symbol 60 Bitmap {src.WorldObjects.ItemPickup_SprSparkle}
Symbol 61 Bitmap {src.Interface.ItemOverlay_SprMap1_0}
Symbol 62 Bitmap {org.flixel.data.FlxPanel_ImgStumble}
Symbol 63 Bitmap {src.WorldObjects.Scenery_SprSceneHoopL}
Symbol 64 Bitmap {org.flixel.data.FlxPause_ImgKeyPlus}
Symbol 65 Bitmap {src.Interface.ItemOverlay_SprMap2_1}
Symbol 66 Bitmap {src.WorldObjects.Level_SprBackground}
Symbol 67 Bitmap {src.WorldObjects.Wall_SprWallVert}
Symbol 68 Bitmap {src.Interface.ItemOverlay_SprMap2_0}
Symbol 69 Bitmap {src.WorldObjects.Bird_SprBird}
Symbol 70 Bitmap {src.CommentaryState_SprNotes8}
Symbol 71 Bitmap {src.CommentaryState_SprNotes7}
Symbol 72 Bitmap {src.CommentaryState_SprNotes6}
Symbol 73 Bitmap {src.CommentaryState_SprNotes5}
Symbol 74 Bitmap {src.MenuState_SprEndingOn}
Symbol 75 Bitmap {src.Interface.ItemOverlay_SprMap0_0}
Symbol 76 Bitmap {src.Interface.ItemOverlay_SprMap0_1}
Symbol 77 Bitmap {src.NGLogoState_SprGradMask}
Symbol 78 Bitmap {src.CommentaryState_SprNotes4}
Symbol 79 Bitmap {src.CommentaryState_SprNotes3}
Symbol 80 Bitmap {src.CommentaryState_SprNotes2}
Symbol 81 Bitmap {src.WorldObjects.SceneryShadow_SprShadowLarge}
Symbol 82 Bitmap {src.CommentaryState_SprNotes1}
Symbol 83 Bitmap {src.Interface.ItemOverlay_SprItemBoneWrist}
Symbol 84 Bitmap {org.flixel.data.FlxPanel_ImgClose}
Symbol 85 Bitmap {src.Interface.ItemOverlay_SprItemRod}
Symbol 86 Bitmap {org.flixel.data.FlxPause_ImgKeyP}
Symbol 87 Bitmap {src.WorldObjects.Scenery_SprSceneTriArch}
Symbol 88 Bitmap {src.WorldObjects.SceneryShadow_SprShadowDome}
Symbol 89 Bitmap {src.Interface.CollectionItem_SprThumbWrist}
Symbol 90 Bitmap {src.Interface.CollectionItem_SprThumbRod}
Symbol 91 Font {src.Looming_FontDominican}
Symbol 92 Bitmap {src.WorldObjects.LightBeam_SprBeamAlpha}
Symbol 93 Bitmap {src.WorldObjects.Scenery_SprSceneBall}
Symbol 94 Bitmap {src.Interface.CollectionReminder_C_REMINDER}
Symbol 95 Bitmap {src.Interface.ItemOverlay_SprItemTablet}
Symbol 96 Bitmap {src.WorldObjects.Portal_SprPortal}
Symbol 97 Bitmap {src.CommentaryState_SprArrowLeftDim}
Symbol 98 Bitmap {src.CommentaryState_SprArrowLeftBright}
Symbol 99 Bitmap {src.WorldObjects.Player_SprPlayer}
Symbol 100 Bitmap {src.Interface.ItemOverlay_SprItemBead}
Symbol 101 Bitmap {src.Interface.ItemOverlay_SprItemBoneHip}
Symbol 102 Bitmap {src.WorldObjects.Scenery_SprScenePanel}
Symbol 103 Bitmap {src.Interface.ItemOverlay_SprItemBone}
Symbol 104 Bitmap {src.WorldObjects.Cloud_SprCloud}
Symbol 105 Bitmap {org.flixel.FlxTilemap_ImgAuto}
Symbol 106 Bitmap {src.WorldObjects.ItemPickup_SprPartItemSparkle}
Symbol 107 Bitmap {src.CommentaryState_SprArrowRightDim}
Symbol 108 Bitmap {src.WorldObjects.BackgroundStamp_SprPath4Way}
Symbol 109 Bitmap {src.Interface.XReminder_X_REMINDER}
Symbol 110 Bitmap {src.WorldObjects.Scenery_SprSceneSnare}
Symbol 111 Bitmap {src.CommentaryState_SprArrowRightBright}
Symbol 112 Bitmap {src.WorldObjects.BackgroundStamp_SprPathEnd1}
Symbol 113 Bitmap {src.Interface.TutorialIndicator_SprArrows}
Symbol 114 Bitmap {src.WorldObjects.Scenery_SprSceneMiniGear}
Symbol 115 Bitmap {src.WorldObjects.BackgroundStamp_SprPathEW2}
Symbol 116 Bitmap {src.WorldObjects.BackgroundStamp_SprPathEW1}
Symbol 117 Bitmap {src.Interface.CollectionItem_SprThumbTally}
Symbol 118 Bitmap {src.WorldObjects.BackgroundStamp_SprSmudge}
Symbol 119 Bitmap {org.flixel.data.FlxPanel_ImgDelicious}
Symbol 120 Bitmap {src.WorldObjects.Scenery_SprSceneBulb}
Symbol 121 Bitmap {org.flixel.data.FlxPause_ImgKey0}
Symbol 122 Bitmap {src.WorldObjects.BackgroundStamp_SprPathNS1}
Symbol 123 Bitmap {src.WorldObjects.BackgroundStamp_SprPathNS2}
Symbol 124 Bitmap {src.WorldObjects.Scenery_SprSceneBent}
Symbol 125 Bitmap {src.WorldObjects.Scenery_SprSceneNeedle}
Symbol 126 Bitmap {src.Interface.CollectionItem_SprThumbTablet}
Symbol 127 Bitmap {src.Interface.CollectionItem_SprThumbMissing}
Symbol 128 Bitmap {src.WorldObjects.Scenery_SprSceneRib}
Symbol 129 Bitmap {org.flixel.FlxTilemap_ImgAutoAlt}
Symbol 130 Bitmap {src.WorldObjects.Scenery_SprSceneDome}
Symbol 131 Bitmap {src.WorldObjects.SceneryShadow_SprShadowSmall}
Symbol 132 Bitmap {src.MenuState_SprTitleLogo}
Symbol 133 Bitmap {src.WorldObjects.Scenery_SprSceneGear}
Symbol 134 Bitmap {src.Interface.CollectionItem_SprThumbMap}
Symbol 135 Bitmap {org.flixel.data.FlxPause_ImgKeyMinus}
Symbol 136 Font {org.flixel.FlxGame_junk}
Symbol 137 Bitmap {src.WorldObjects.Scenery_SprSceneHoopR}
Symbol 138 Bitmap {src.Interface.CollectionItem_SprThumbSkull}
Symbol 139 Bitmap {src.WorldObjects.Wall_SprWallHoriz}
Symbol 140 Bitmap {src.WorldObjects.Scenery_SprSceneCross}
Symbol 141 Bitmap {src.Interface.ItemOverlay_SprItemSkull}
Symbol 142 Bitmap {src.WorldObjects.SceneryShadow_SprShadowArc}
Symbol 143 Bitmap {src.WorldObjects.BackgroundStamp_SprPatchy}
Symbol 144 Bitmap {org.flixel.data.FlxPanel_ImgDonate}
Symbol 145 Bitmap {src.WorldObjects.Scenery_SprSceneSpike}
Symbol 146 Bitmap {org.flixel.data.FlxPanel_ImgTwitter}
Symbol 147 Bitmap {org.flixel.data.FlxPanel_ImgDigg}
Symbol 148 Bitmap {src.Interface.TutorialIndicator_SprX}
Symbol 149 Bitmap {src.Interface.CollectionItem_SprThumbBone}
Symbol 150 Bitmap {src.Interface.CollectionItem_SprThumbHip}
Symbol 151 Bitmap {src.Interface.ItemOverlay_SprSignpost}

Instance Names

"medalNameText"Symbol 15 MovieClip {com.newgrounds.components.MedalPopup} [com.newgrounds.components.MedalPopup] Frame 10Symbol 8 EditableText
"medalValueText"Symbol 15 MovieClip {com.newgrounds.components.MedalPopup} [com.newgrounds.components.MedalPopup] Frame 10Symbol 11 EditableText
"medalContainer"Symbol 15 MovieClip {com.newgrounds.components.MedalPopup} [com.newgrounds.components.MedalPopup] Frame 10Symbol 13 MovieClip
"adMask"Symbol 31 MovieClip {NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23} [NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23] Frame 1Symbol 19 MovieClip
"ngLinkButton"Symbol 31 MovieClip {NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23} [NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23] Frame 1Symbol 24 Button
"background"Symbol 32 MovieClip {com.newgrounds.components.FlashAd} [com.newgrounds.components.FlashAd] Frame 1Symbol 31 MovieClip {NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23} [NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23]

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1458 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 15 as "com.newgrounds.components.MedalPopup"
ExportAssets (56)Timeline Frame 1Symbol 16 as "FlxLoaderBar"
ExportAssets (56)Timeline Frame 1Symbol 32 as "com.newgrounds.components.FlashAd"
ExportAssets (56)Timeline Frame 1Symbol 33 as "FlxLoaderFrame"
ExportAssets (56)Timeline Frame 1Symbol 34 as "FlxLoaderPlay"
ExportAssets (56)Timeline Frame 1Symbol 31 as "NewgroundsAPI_fla.NewgroundsAPIAsset_FlashAd_Container_23"
ExportAssets (56)Timeline Frame 1Symbol 30 as "NewgroundsAPI_fla.NewgroundsAPIAsset_Load_Indicator_3"
ExportAssets (56)Timeline Frame 2Symbol 35 as "org.flixel.FlxGame_SndFlixel"
ExportAssets (56)Timeline Frame 2Symbol 36 as "org.flixel.FlxGame_SndBeep"
ExportAssets (56)Timeline Frame 2Symbol 37 as "src.Looming_SndBackground"
ExportAssets (56)Timeline Frame 2Symbol 38 as "src.WorldObjects.Bird_SndBird"
ExportAssets (56)Timeline Frame 2Symbol 39 as "src.WorldObjects.ItemPickup_SndItemPickup"
ExportAssets (56)Timeline Frame 2Symbol 40 as "src.WorldObjects.LightTower_SndTowerRotation"
ExportAssets (56)Timeline Frame 2Symbol 41 as "src.WorldObjects.Player_SfxStep2"
ExportAssets (56)Timeline Frame 2Symbol 42 as "src.WorldObjects.Player_SfxStep1"
ExportAssets (56)Timeline Frame 2Symbol 43 as "src.WorldObjects.Portal_SndPortal"
ExportAssets (56)Timeline Frame 2Symbol 44 as "src.WorldObjects.SignPost_SndRumble"
EnableDebugger2 (64)Timeline Frame 131 bytes "u.$1$De$knbnelE.ArJhVq58cYO0l.."
DebugMX1 (63)Timeline Frame 1
SerialNumber (41)Timeline Frame 1

Labels

"src_Preloader"Frame 1
"src_Looming"Frame 2
"medal_show"Symbol 15 MovieClip {com.newgrounds.components.MedalPopup} [com.newgrounds.components.MedalPopup] Frame 2
"medal_hide"Symbol 15 MovieClip {com.newgrounds.components.MedalPopup} [com.newgrounds.components.MedalPopup] Frame 11




http://swfchan.com/18/85778/info.shtml
Created: 30/3 -2019 18:28:37 Last modified: 30/3 -2019 18:28:37 Server time: 26/04 -2024 09:07:02