Section 1
//ArrayUtilities (ascb.util.ArrayUtilities)
package ascb.util {
public class ArrayUtilities {
public static function duplicate(_arg1:Object, _arg2:Boolean=false):Object{
var _local3:Object;
var _local4:String;
var _local5:Number;
if (_arg2){
if ((_arg1 is Array)){
_local3 = new Array();
_local5 = 0;
while (_local5 < _arg1.length) {
if ((_arg1[_local5] is Object)){
_local3[_local5] = duplicate(_arg1[_local5]);
} else {
_local3[_local5] = _arg1[_local5];
};
_local5++;
};
return (_local3);
} else {
_local3 = new Object();
for (_local4 in _arg1) {
if ((((((((_arg1[_local4] is Object)) && (!((_arg1[_local4] is String))))) && (!((_arg1[_local4] is Boolean))))) && (!((_arg1[_local4] is Number))))){
_local3[_local4] = duplicate(_arg1[_local4], _arg2);
} else {
_local3[_local4] = _arg1[_local4];
};
};
return (_local3);
};
//unresolved jump
};
if ((_arg1 is Array)){
return ((_arg1 as Array).concat());
};
_local3 = new Object();
for (_local4 in _arg1) {
_local3[_local4] = _arg1[_local4];
};
return (_local3);
}
public static function max(_arg1:Array):Number{
var _local2:Array;
var _local3:Number;
_local2 = _arg1.concat();
_local2.sort(Array.NUMERIC);
_local3 = Number(_local2.pop());
return (_local3);
}
public static function findMatchIndex(_arg1:Array, _arg2:Object, ... _args):Number{
var _local4:Number;
var _local5:Boolean;
var _local6:Boolean;
var _local7:Number;
_local4 = 0;
_local5 = false;
if (typeof(_args[0]) == "number"){
_local4 = _args[0];
} else {
if (typeof(_args[1]) == "number"){
_local4 = _args[1];
};
};
if (typeof(_args[0]) == "boolean"){
_local5 = _args[0];
};
_local6 = false;
_local7 = _local4;
while (_local7 < _arg1.length) {
if (_local5){
_local6 = !((_arg1[_local7].indexOf(_arg2) == -1));
} else {
_local6 = (_arg1[_local7] == _arg2);
};
if (_local6){
return (_local7);
};
_local7++;
};
return (-1);
}
public static function switchElements(_arg1:Array, _arg2:Number, _arg3:Number):void{
var _local4:Object;
var _local5:Object;
_local4 = _arg1[_arg2];
_local5 = _arg1[_arg3];
_arg1.splice(_arg2, 1, _local5);
_arg1.splice(_arg3, 1, _local4);
}
public static function toString(_arg1:Object, _arg2:uint=0):String{
var _local3:String;
var _local4:Number;
var _local5:String;
var _local6:String;
_local3 = "";
_local4 = 0;
while (_local4 < _arg2) {
_local3 = (_local3 + "\t");
_local4++;
};
_local5 = "";
for (_local6 in _arg1) {
if ((_arg1[_local6] is Object)){
_local5 = (((((_local3 + "** ") + _local6) + " **\n") + toString(_arg1[_local6], (_arg2 + 1))) + _local5);
} else {
_local5 = (_local5 + ((((_local3 + _local6) + ":") + _arg1[_local6]) + "\n"));
};
};
return (_local5);
}
public static function randomize(_arg1:Array):Array{
var _local2:Array;
var _local3:Array;
var _local4:Object;
var _local5:Number;
var _local6:Number;
_local2 = _arg1.concat();
_local3 = new Array();
_local6 = 0;
while (_local6 < _local2.length) {
_local5 = NumberUtilities.random(0, (_local2.length - 1));
_local3.push(_local2[_local5]);
_local2.splice(_local5, 1);
--_local6;
_local6++;
};
return (_local3);
}
public static function min(_arg1:Array):Number{
var _local2:Array;
var _local3:Number;
_local2 = _arg1.concat();
_local2.sort(Array.NUMERIC);
_local3 = Number(_local2.shift());
return (_local3);
}
public static function sum(_arg1:Array):Number{
var _local2:Number;
var _local3:Number;
_local2 = 0;
_local3 = 0;
while (_local3 < _arg1.length) {
if (typeof(_arg1[_local3]) == "number"){
_local2 = (_local2 + _arg1[_local3]);
};
_local3++;
};
return (_local2);
}
public static function findMatchIndices(_arg1:Array, _arg2:Object, _arg3:Boolean=false):Array{
var _local4:Array;
var _local5:Number;
_local4 = new Array();
_local5 = findMatchIndex(_arg1, _arg2, _arg3);
while (_local5 != -1) {
_local4.push(_local5);
_local5 = findMatchIndex(_arg1, _arg2, _arg3, (_local5 + 1));
};
return (_local4);
}
public static function findLastMatchIndex(_arg1:Array, _arg2:Object, _arg3:Object):Number{
var _local5:Number;
var _local6:Boolean;
var _local7:Boolean;
var _local8:Number;
_local5 = _arg1.length;
_local6 = false;
if (typeof(arguments[2]) == "number"){
_local5 = arguments[2];
} else {
if (typeof(arguments[3]) == "number"){
_local5 = arguments[3];
};
};
if (typeof(arguments[2]) == "boolean"){
_local6 = arguments[2];
};
_local7 = false;
_local8 = _local5;
while (_local8 >= 0) {
if (_local6){
_local7 = !((_arg1[_local8].indexOf(_arg2) == -1));
} else {
_local7 = (_arg1[_local8] == _arg2);
};
if (_local7){
return (_local8);
};
_local8--;
};
return (-1);
}
public static function average(_arg1:Array):Number{
return ((sum(_arg1) / _arg1.length));
}
private static function objectEquals(_arg1:Object, _arg2:Object):Boolean{
var _local3:String;
for (_local3 in _arg1) {
if ((_arg1[_local3] is Object)){
if (!objectEquals(_arg1[_local3], _arg2[_local3])){
return (false);
};
} else {
if (_arg1[_local3] != _arg2[_local3]){
return (false);
};
};
};
return (true);
}
public static function equals(_arg1:Array, _arg2:Array, _arg3:Boolean, _arg4:Boolean):Boolean{
var _local5:Array;
var _local6:Array;
var _local7:Number;
if (_arg1.length != _arg2.length){
return (false);
};
_local5 = _arg1.concat();
_local6 = _arg2.concat();
if (_arg3){
_local5.sort();
_local6.sort();
};
_local7 = 0;
while (_local7 < _local5.length) {
if ((((_local5[_local7] is Array)) && (_arg4))){
if (!equals(_local5[_local7], _local6[_local7], _arg3, _arg4)){
return (false);
};
} else {
if ((((_local5[_local7] is Object)) && (_arg4))){
if (!objectEquals(_local5[_local7], _local6[_local7])){
return (false);
};
} else {
if (_local5[_local7] != _local6[_local7]){
return (false);
};
};
};
_local7++;
};
return (true);
}
}
}//package ascb.util
Section 2
//DateFormat (ascb.util.DateFormat)
package ascb.util {
public class DateFormat {
private var _sMask:String;
public static const DAYSINMONTH:Array = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
public static const MONTHS_ABBREVIATED:Array = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
public static const DAYS_ABBREVIATED:Array = ["Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat"];
public static const MONTHS:Array = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
public static const DAYS:Array = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
public function DateFormat(_arg1:String){
_sMask = _arg1;
}
public function format(_arg1:Date):String{
var _local2:Array;
var _local3:Array;
var _local4:Number;
var _local5:Number;
var _local6:NumberFormat;
_local2 = getMaskElements();
_local3 = new Array();
_local4 = 0;
while (_local4 < _local2.length) {
switch (_local2[_local4].element){
case "a":
if (_arg1.getHours() < 12){
_local3.push("am");
} else {
_local3.push("pm");
};
break;
case "A":
if (_arg1.getHours() < 12){
_local3.push("AM");
} else {
_local3.push("PM");
};
break;
case "d":
_local3.push(_arg1.getDate());
break;
case "D":
_local3.push(DateFormat.DAYS_ABBREVIATED[_arg1.getDay()]);
break;
case "F":
_local3.push(DateFormat.MONTHS[_arg1.getMonth()]);
break;
case "g":
_local5 = _arg1.getHours();
if (_local5 == 12){
_local3.push(12);
} else {
if (_local5 <= 12){
_local3.push(_local5);
} else {
_local3.push((_local5 - 12));
};
};
break;
case "G":
_local3.push(_arg1.getHours());
break;
case "h":
_local6 = new NumberFormat("00");
_local5 = _arg1.getHours();
if (_local5 == 12){
_local3.push(12);
} else {
if (_local5 <= 12){
_local3.push(_local6.format(_local5));
} else {
_local3.push(_local6.format((_local5 - 12)));
};
};
break;
case "H":
_local6 = new NumberFormat("00");
_local3.push(_local6.format(_arg1.getHours()));
break;
case "i":
_local6 = new NumberFormat("00");
_local3.push(_local6.format(_arg1.getMinutes()));
break;
case "j":
_local3.push(_arg1.getDate());
break;
case "l":
_local3.push(DateFormat.DAYS[_arg1.getDay()]);
break;
case "m":
_local6 = new NumberFormat("00");
_local3.push(_local6.format((_arg1.getMonth() + 1)));
break;
case "M":
_local3.push(DateFormat.MONTHS_ABBREVIATED[_arg1.getMonth()]);
break;
case "n":
_local3.push((_arg1.getMonth() + 1));
break;
case "s":
_local6 = new NumberFormat("00");
_local3.push(_local6.format(_arg1.getSeconds()));
break;
case "t":
_local3.push(DateFormat.DAYSINMONTH[_arg1.getMonth()]);
break;
case "w":
_local3.push(_arg1.getDay());
break;
case "y":
_local3.push(String(_arg1.getFullYear()).substring(2));
break;
case "Y":
_local3.push(_arg1.getFullYear());
break;
case "\\":
_local3.push((_local2[_local4].element + ((_local2[(_local4 + 1)].element)==undefined) ? "" : _local2[(_local4 + 1)].element));
_local4++;
break;
default:
_local3.push(_local2[_local4].element);
};
_local4++;
};
return (_local3.join(""));
}
public function set mask(_arg1:String):void{
_sMask = _arg1;
}
private function getMaskElements(_arg1:Boolean=false):Array{
var _local2:Array;
var _local3:Array;
var _local4:Array;
var _local5:RegExp;
var _local6:Number;
var _local7:Number;
_local2 = _sMask.split("'");
_local3 = new Array();
_local5 = new RegExp("[a-zA-Z]");
_local6 = 0;
while (_local6 < _local2.length) {
if ((_local6 % 2) != 0){
_local3.push({type:"quoted", element:_local2[_local6]});
} else {
_local4 = _local2[_local6].split("");
_local7 = 0;
while (_local7 < _local4.length) {
if (((_local5.test(_local4[_local7])) && (_arg1))){
_local3.push({type:"regular", element:_local4[_local7]});
} else {
if (!_arg1){
_local3.push({type:"regular", element:_local4[_local7]});
};
};
_local7++;
};
};
_local6++;
};
return (_local3);
}
public function parse(_arg1:String):Date{
var _local2:Array;
var _local3:Number;
var _local4:Number;
var _local5:RegExp;
var _local6:Array;
var _local7:Date;
var _local8:String;
var _local9:String;
var _local10:String;
var _local11:Number;
_local2 = getMaskElements(true);
_local4 = 0;
while (_local4 < _local2.length) {
_local3 = _arg1.indexOf(_local2[_local4].element);
if (_local2[_local4].type == "quoted"){
if (_local3 != -1){
_arg1 = ((_arg1.substring(0, _local3) + " ") + _arg1.substring((_local3 + _local2[_local4].element.length)));
_local2.splice(_local4, 1);
_local4--;
};
};
_local4++;
};
_local5 = new RegExp("[^a-zA-Z0-9]+");
_local6 = _arg1.split(_local5);
_local7 = new Date(0, 0, 0, 0, 0, 0, 0);
_local4 = 0;
while (_local4 < _local2.length) {
_local9 = String(_local6.shift());
switch (_local2[_local4].element){
case "a":
case "A":
_local8 = _local9.toLowerCase();
break;
case "d":
_local7.setDate(parseInt(_local9));
break;
case "F":
_local10 = _local6.shift().toLowerCase();
_local11 = 0;
while (_local11 < DateFormat.MONTHS.length) {
if (_local10 == DateFormat.MONTHS[_local11].toLowerCase()){
_local7.setMonth(_local11);
break;
};
_local11++;
};
break;
case "g":
case "G":
case "h":
case "H":
_local7.setHours(parseInt(_local9));
break;
case "i":
_local7.setMinutes(parseInt(_local9));
break;
case "j":
_local7.setDate(parseInt(_local9));
break;
case "m":
case "n":
_local7.setMonth((parseInt(_local9) - 1));
break;
case "M":
_local10 = _local9.toLowerCase();
_local11 = 0;
while (_local11 < DateFormat.MONTHS_ABBREVIATED.length) {
if (DateFormat.MONTHS_ABBREVIATED[_local11].toLowerCase() == _local10){
_local7.setMonth(_local11);
break;
};
_local11++;
};
break;
case "s":
_local7.setSeconds(parseInt(_local9));
break;
case "y":
_local7.setFullYear((2000 + parseInt(_local9)));
break;
case "Y":
_local7.setFullYear(parseInt(_local9));
break;
};
_local4++;
};
if (_local8 == "pm"){
if (_local7.getHours() < 12){
_local7.setHours((_local7.getHours() + 12));
};
} else {
if (_local8 == "am"){
if (_local7.getHours() == 12){
_local7.setHours(0);
};
};
};
return (_local7);
}
public function get mask():String{
return (_sMask);
}
public static function formatMilliseconds(_arg1:Number):String{
var _local2:Number;
_local2 = (_arg1 / 1000);
return (formatSeconds(_local2));
}
public static function formatSeconds(_arg1:Number):String{
var _local2:NumberFormat;
var _local3:String;
var _local4:String;
_local2 = new NumberFormat("00");
_local3 = _local2.format(Math.floor((_arg1 / 60)));
_local4 = _local2.format(Math.round((_arg1 - (parseInt(_local3) * 60))));
return (((_local3 + ":") + _local4));
}
}
}//package ascb.util
Section 3
//Locale (ascb.util.Locale)
package ascb.util {
import flash.system.*;
public class Locale {
private var _sLanguage:String;
private var _sVariant:String;
public static const GERMAN:String = "de";
public static const CHINESE:String = "zh";
public static const ENGLISH:String = "en";
public static const SPANISH:String = "es";
public static const UK:String = "UK";
public static const US:String = "US";
public static const FRENCH:String = "fr";
public static const JAPANESE:String = "jp";
private static var __sLanguage:String;
private static var __sVariant:String;
public function Locale(_arg1:String=null, _arg2:String=null){
_sLanguage = _arg1;
_sVariant = _arg2;
}
public function get variant():String{
if (_sVariant == null){
if (Locale.svariant == null){
if (Capabilities.language.length > 2){
_sVariant = Capabilities.language.substr(3);
} else {
if (language == ENGLISH){
if (new Date().getTimezoneOffset() > 120){
_sVariant = US;
} else {
_sVariant = UK;
};
} else {
if (language == SPANISH){
if (new Date().getTimezoneOffset() > 120){
_sVariant = "MX";
} else {
_sVariant = "ES";
};
};
};
};
} else {
_sVariant = Locale.svariant;
};
};
return (_sVariant);
}
public function set variant(_arg1:String):void{
_sVariant = _arg1;
}
public function get languageVariant():String{
var _local1:String;
_local1 = language;
if (variant != null){
_local1 = (_local1 + ("-" + variant));
};
return (_local1);
}
public function set language(_arg1:String):void{
_sLanguage = _arg1;
}
public function reset():void{
_sLanguage = null;
_sVariant = null;
}
public function set languageVariant(_arg1:String):void{
var _local2:Array;
_local2 = _arg1.split("-");
_sLanguage = _local2[0];
_sVariant = _local2[1];
}
public function get language():String{
if (_sLanguage == null){
if (Locale.slanguage == null){
_sLanguage = Capabilities.language.substr(0, 2);
} else {
_sLanguage = Locale.slanguage;
};
};
return (_sLanguage);
}
public static function sreset():void{
__sLanguage = null;
__sVariant = null;
}
public static function get slanguage():String{
return (__sLanguage);
}
public static function set slanguage(_arg1:String):void{
__sLanguage = _arg1;
}
public static function set svariant(_arg1:String):void{
__sVariant = _arg1;
}
public static function get svariant():String{
return (__sVariant);
}
public static function get slanguageVariant():String{
var _local1:String;
_local1 = slanguage;
if (svariant != null){
_local1 = (_local1 + ("-" + svariant));
};
return (_local1);
}
public static function set slanguageVariant(_arg1:String):void{
var _local2:Array;
_local2 = _arg1.split("-");
__sLanguage = _local2[0];
__sVariant = _local2[1];
}
}
}//package ascb.util
Section 4
//MathUtilites (ascb.util.MathUtilites)
package ascb.util {
public class MathUtilites {
public static function getDistance(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (Math.sqrt((((_arg1 - _arg3) * (_arg1 - _arg3)) + ((_arg2 - _arg4) * (_arg2 - _arg4)))));
}
}
}//package ascb.util
Section 5
//NumberFormat (ascb.util.NumberFormat)
package ascb.util {
public class NumberFormat {
private var _sMask:String;
public function NumberFormat(_arg1:String=null){
_sMask = _arg1;
}
public function parse(_arg1:String, _arg2:Number, _arg3:Boolean, _arg4:Locale):Number{
var _local5:Object;
var _local6:Array;
var _local7:Number;
if (_arg4 == null){
_arg4 = new Locale();
};
_local5 = getSymbols(_arg3, _arg4);
_local6 = _arg1.split("");
if (isNaN(_arg2)){
if (_local6[0] == "O"){
if (_local6[1] == "x"){
_arg2 = 16;
} else {
_arg2 = 8;
};
} else {
if (_local6[0] == "#"){
_arg2 = 16;
} else {
_arg2 = (isNaN(_arg2)) ? 10 : _arg2;
};
};
};
_local7 = 0;
while (_local7 < _local6.length) {
switch (_local6[_local7]){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
break;
case _local5.decimal:
_local6[_local7] = ".";
break;
default:
if (_arg2 > 10){
if ((((((_local6[_local7].charCodeAt(0) > 64)) && ((_local6[_local7].charCodeAt(0) < 91)))) || ((((_local6[_local7].charCodeAt(0) > 96)) && ((_local6[_local7].charCodeAt(0) < 123)))))){
break;
};
};
_local6.splice(_local7, 1);
_local7--;
};
_local7++;
};
if (_arg2 == 10){
return (Number(_local6.join("")));
};
return (parseInt(_local6.join(""), _arg2));
}
private function getSymbols(_arg1:Boolean, _arg2:Locale):Object{
var _local3:Object;
_local3 = new Object();
switch (_arg2.languageVariant){
case "en-US":
_local3.currency = "$";
_local3.group = ",";
_local3.decimal = ".";
_local3.before = true;
break;
case "en-UK":
_local3.currency = "£";
_local3.group = ",";
_local3.decimal = ".";
_local3.before = true;
break;
case "es-MX":
_local3.currency = "$";
_local3.group = ",";
_local3.decimal = ".";
_local3.before = true;
break;
case "es-ES":
_local3.currency = "€";
_local3.group = ".";
_local3.decimal = ",";
_local3.before = false;
break;
case "fr":
_local3.currency = "€";
_local3.group = ".";
_local3.decimal = ",";
_local3.before = false;
break;
case "sv":
_local3.currency = "kr";
_local3.group = (_arg1) ? "," : " ";
_local3.decimal = ".";
_local3.before = false;
break;
case "jp":
_local3.currency = " 5";
_local3.group = ",";
_local3.decimal = ".";
_local3.before = true;
break;
case "nl":
_local3.currency = "€";
_local3.group = ".";
_local3.decimal = ",";
_local3.before = true;
break;
default:
_local3.currency = "€";
_local3.group = ".";
_local3.decimal = ",";
_local3.before = true;
break;
};
return (_local3);
}
public function format(_arg1:Number, _arg2:Object=null, _arg3:Object=null):String{
var _local4:Number;
var _local5:Number;
var _local6:String;
var _local7:Object;
var _local8:String;
var _local9:String;
var _local10:Array;
var _local11:Array;
var _local12:Array;
var _local13:Number;
var _local14:String;
var _local15:Locale;
var _local16:Locale;
var _local17:Array;
var _local18:Array;
var _local19:Array;
var _local20:Number;
var _local21:Number;
var _local22:Array;
var _local23:Boolean;
var _local24:Number;
if (typeof(_arg2) == "number"){
_local13 = Number(_arg2);
_local6 = _arg1.toString(_local13);
_local14 = "";
if (_local13 == 16){
_local14 = "0x";
};
if (_local13 == 8){
_local14 = "0";
};
if (_arg3 != null){
_local14 = String(_arg3);
};
return ((_local14 + _local6.toUpperCase()));
};
_local8 = ",";
_local9 = ".";
if (((!((_arg2 == null))) && (_arg2.hasOwnProperty("group")))){
_local7 = _arg2;
} else {
_local15 = Locale(_arg2);
if (_local15 == null){
_local15 = new Locale();
};
_local16 = Locale(_local15);
_local7 = getSymbols(false, _local16);
};
_local8 = _local7.decimal;
_local9 = _local7.group;
_local10 = String(_arg1).split(".");
_local11 = _local10[0].split("");
_local12 = ((_local10.length)>1) ? _local10[1].split("") : new Array();
if (_sMask == null){
_local4 = 1;
_local11.reverse();
_local5 = 0;
while (_local5 < _local11.length) {
if (_local4 > 3){
_local4 = 0;
_local11.splice(_local5, 0, _local9);
};
_local4++;
_local5++;
};
_local11.reverse();
_local6 = _local11.join("");
if (_local10[1] != null){
_local6 = (_local6 + (_local8 + _local10[1]));
};
} else {
_local17 = _sMask.split("");
_local5 = 0;
while (_local5 < _local17.length) {
if (((((!((_local17[_local5] == "0"))) && (!((_local17[_local5] == "#"))))) && (!((_local17[_local5] == "."))))){
_local17.splice(_local5, 1);
_local5--;
};
_local5++;
};
_local17 = _local17.join("").split(".");
_local18 = _local17[0].split("");
_local19 = ((_local17.length)>1) ? _local17[1].split("") : new Array();
_local4 = _local18.length;
_local20 = 0;
_local21 = 0;
_local6 = "";
if (_local4 < _local11.length){
_local5 = 0;
while (_local5 < (_local11.length - _local4)) {
_local6 = (_local6 + _local11[_local5]);
_local20++;
_local5++;
};
} else {
if (_local4 > _local11.length){
_local5 = 0;
while (_local5 < (_local4 - _local11.length)) {
if (_local18[_local5] == "0"){
_local6 = (_local6 + "0");
} else {
if (_local18[_local5] == "#"){
_local6 = (_local6 + " ");
};
};
_local21++;
_local5++;
};
};
};
_local23 = false;
_local5 = _local21;
while (_local5 < _local18.length) {
if ((((_local18[_local5] == "0")) || ((_local18[_local5] == "#")))){
_local6 = (_local6 + ((_local11[_local20])==undefined) ? "" : _local11[_local20]);
_local20++;
};
_local5++;
};
_local17 = _sMask.split(".");
_local17 = _local17[0].split("");
_local22 = _local6.split("");
_local23 = false;
_local5 = 0;
while (_local5 < _local17.length) {
if (((((!((_local17[_local5] == "0"))) && (!((_local17[_local5] == "#"))))) && (!((_local17[_local5] == "."))))){
if (_local23){
_local22.splice(_local5, 0, _local9);
} else {
_local22.splice(_local5, 0, " ");
};
};
if (((!((_local22[_local5] == " "))) && (!((_local22[_local5] == "0"))))){
_local23 = true;
};
_local5++;
};
_local6 = _local22.join("");
if (_local19.length > 0){
_local6 = (_local6 + _local8);
};
_local5 = 0;
while (_local5 < _local19.length) {
if (_local12[_local5] == null){
if (_local19[_local5] == "0"){
_local6 = (_local6 + "0");
} else {
if (_local19[_local5] == "#"){
_local6 = (_local6 + " ");
};
};
} else {
_local24 = Number(((_local12[_local5] + "") + _local12[(_local5 + 1)]));
if ((((_local5 == (_local19.length - 1))) && (!(isNaN(_local24))))){
_local6 = (_local6 + String(Math.round((_local24 / 10))));
} else {
_local6 = (_local6 + _local12[_local5]);
};
};
_local5++;
};
};
return (_local6);
}
public function set mask(_arg1:String):void{
_sMask = _arg1;
}
public function currencyFormat(_arg1:Number, _arg2:Object=null):String{
var _local4:Locale;
var _local5:Object;
var _local6:String;
var _local7:String;
var _local8:String;
var _local9:String;
var _local10:Locale;
var _local11:String;
var _local12:Array;
var _local13:Array;
var _local14:Number;
var _local15:String;
var _local16:Number;
_local4 = ((arguments[1] is Locale)) ? arguments[1] : new Locale();
if (((!((_arg2 == null))) && (_arg2.hasOwnProperty("group")))){
_local5 = _arg2;
} else {
_local5 = getSymbols(true, _local4);
};
_local6 = _local5.currency;
_local7 = _local5.group;
_local8 = _local5.decimal;
_local9 = _sMask;
_sMask = null;
_local10 = new Locale();
_local10.language = "en";
_local10.variant = "US";
_local11 = format(_arg1, _local10);
_sMask = _local9;
_local12 = _local11.split(".");
if (_local12[1] == undefined){
_local12[1] = "00";
} else {
_local12[1] = Number(_local12[1]);
_local16 = String(_local12[1]).length;
if (_local16 > 2){
_local12[1] = (_local12[1] / Math.pow(10, (_local16 - 2)));
_local12[1] = Math.round(_local12[1]);
};
};
_local11 = _local12.join(".");
_local13 = _local11.split("");
_local14 = 0;
while (_local14 < _local13.length) {
if (_local13[_local14] == ","){
_local13[_local14] = _local7;
} else {
if (_local13[_local14] == "."){
_local13[_local14] = _local8;
};
};
_local14++;
};
_local15 = (((_local5.before) ? _local6 : "" + _local13.join("")) + (_local5.before) ? "" : _local6);
return (_local15);
}
public function get mask():String{
return (_sMask);
}
}
}//package ascb.util
Section 6
//NumberUtilities (ascb.util.NumberUtilities)
package ascb.util {
public class NumberUtilities {
private static var _aUniqueIDs:Array;
public static function random(_arg1:Number, _arg2:Number=0, _arg3:Number=1):Number{
var _local4:Number;
var _local5:Number;
var _local6:Number;
if (_arg1 > _arg2){
_local6 = _arg1;
_arg1 = _arg2;
_arg2 = _local6;
};
_local4 = ((_arg2 - _arg1) + (1 * _arg3));
_local5 = (Math.random() * _local4);
_local5 = (_local5 + _arg1);
return (floor(_local5, _arg3));
}
public static function ceil(_arg1:Number, _arg2:Number=1):Number{
return ((Math.ceil((_arg1 / _arg2)) * _arg2));
}
public static function getUnique():Number{
var _local1:Date;
var _local2:Number;
if (_aUniqueIDs == null){
_aUniqueIDs = new Array();
};
_local1 = new Date();
_local2 = _local1.getTime();
while (!(isUnique(_local2))) {
_local2 = (_local2 + _slot1.random(_local1.getTime(), (2 * _local1.getTime())));
};
_aUniqueIDs.push(_local2);
return (_local2);
}
private static function isUnique(_arg1:Number):Boolean{
var _local2:Number;
_local2 = 0;
while (_local2 < _aUniqueIDs.length) {
if (_aUniqueIDs[_local2] == _arg1){
return (false);
};
_local2++;
};
return (true);
}
public static function floor(_arg1:Number, _arg2:Number=1):Number{
return ((Math.floor((_arg1 / _arg2)) * _arg2));
}
public static function round(_arg1:Number, _arg2:Number=1):Number{
return ((Math.round((_arg1 / _arg2)) * _arg2));
}
}
}//package ascb.util
Section 7
//MD5 (CMG_AS3.MD5)
package CMG_AS3 {
public class MD5 {
public static const HEX_FORMAT_LOWERCASE:uint = 0;
public static const HEX_FORMAT_UPPERCASE:uint = 1;
public static const BASE64_PAD_CHARACTER_DEFAULT_COMPLIANCE:String = "";
public static const BASE64_PAD_CHARACTER_RFC_COMPLIANCE:String = "=";
public static var hexcase:uint = 0;
public static var b64pad:String = "";
public static function md5_gg(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_cmn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
return (safe_add(bit_rol(safe_add(safe_add(_arg2, _arg1), safe_add(_arg4, _arg6)), _arg5), _arg3));
}
public static function binl_md5(_arg1:Array, _arg2:Number):Array{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 % 32)));
_arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2;
_local3 = 1732584193;
_local4 = -271733879;
_local5 = -1732584194;
_local6 = 271733878;
_local7 = 0;
while (_local7 < _arg1.length) {
_local8 = _local3;
_local9 = _local4;
_local10 = _local5;
_local11 = _local6;
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 7, -680876936);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 1)], 12, -389564586);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 17, 606105819);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 3)], 22, -1044525330);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 7, -176418897);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 5)], 12, 1200080426);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 17, -1473231341);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 7)], 22, -45705983);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 7, 1770035416);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 9)], 12, -1958414417);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 17, -42063);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 11)], 22, -1990404162);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 7, 1804603682);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 13)], 12, -40341101);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 17, -1502002290);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 15)], 22, 1236535329);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 5, -165796510);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 6)], 9, -1069501632);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 14, 643717713);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 0)], 20, -373897302);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 5, -701558691);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 10)], 9, 38016083);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 14, -660478335);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 4)], 20, -405537848);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 5, 568446438);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 14)], 9, -1019803690);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 14, -187363961);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 8)], 20, 1163531501);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 5, -1444681467);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 2)], 9, -51403784);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 14, 1735328473);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 12)], 20, -1926607734);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 4, -378558);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 8)], 11, -2022574463);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 16, 1839030562);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 14)], 23, -35309556);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 4, -1530992060);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 4)], 11, 1272893353);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 16, -155497632);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 10)], 23, -1094730640);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 4, 681279174);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 0)], 11, -358537222);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 16, -722521979);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 6)], 23, 76029189);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 4, -640364487);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 12)], 11, -421815835);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 16, 530742520);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 2)], 23, -995338651);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 6, -198630844);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 7)], 10, 1126891415);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 15, -1416354905);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 5)], 21, -57434055);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 6, 1700485571);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 3)], 10, -1894986606);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 15, -1051523);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 1)], 21, -2054922799);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 6, 1873313359);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 15)], 10, -30611744);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 15, -1560198380);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 13)], 21, 1309151649);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 6, -145523070);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 11)], 10, -1120210379);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 15, 718787259);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 9)], 21, -343485551);
_local3 = safe_add(_local3, _local8);
_local4 = safe_add(_local4, _local9);
_local5 = safe_add(_local5, _local10);
_local6 = safe_add(_local6, _local11);
_local7 = (_local7 + 16);
};
return ([_local3, _local4, _local5, _local6]);
}
public static function str2rstr_utf16le(_arg1:String):String{
var _local2:String;
var _local3:Number;
_local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode((_arg1.charCodeAt(_local3) & 0xFF), ((_arg1.charCodeAt(_local3) >>> 8) & 0xFF)));
_local3++;
};
return (_local2);
}
public static function hex_hmac_md5(_arg1:String, _arg2:String):String{
return (rstr2hex(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2))));
}
public static function binl2rstr(_arg1:Array):String{
var _local2:String;
var _local3:Number;
_local2 = "";
_local3 = 0;
while (_local3 < (_arg1.length * 32)) {
_local2 = (_local2 + String.fromCharCode(((_arg1[(_local3 >> 5)] >>> (_local3 % 32)) & 0xFF)));
_local3 = (_local3 + 8);
};
return (_local2);
}
public static function md5_ff(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_ii(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function rstr2binl(_arg1:String):Array{
var _local2:Array;
var _local3:Number;
_local2 = new Array((_arg1.length >> 2));
_local3 = 0;
while (_local3 < _local2.length) {
_local2[_local3] = 0;
_local3++;
};
_local3 = 0;
while (_local3 < (_arg1.length * 8)) {
_local2[(_local3 >> 5)] = (_local2[(_local3 >> 5)] | ((_arg1.charCodeAt((_local3 / 8)) & 0xFF) << (_local3 % 32)));
_local3 = (_local3 + 8);
};
return (_local2);
}
public static function md5_vm_test():Boolean{
return ((hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"));
}
public static function b64_md5(_arg1:String):String{
return (rstr2b64(rstr_md5(str2rstr_utf8(_arg1))));
}
public static function any_hmac_md5(_arg1:String, _arg2:String, _arg3:String):String{
return (rstr2any(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2)), _arg3));
}
public static function hex_md5(_arg1:String):String{
return (rstr2hex(rstr_md5(str2rstr_utf8(_arg1))));
}
public static function bit_rol(_arg1:Number, _arg2:Number):Number{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
public static function encrypt(_arg1:String):String{
return (hex_md5(_arg1));
}
public static function md5_hh(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function rstr2hex(_arg1:String):String{
var _local2:String;
var _local3:String;
var _local4:Number;
var _local5:Number;
_local2 = (hexcase) ? "0123456789ABCDEF" : "0123456789abcdef";
_local3 = "";
_local5 = 0;
while (_local5 < _arg1.length) {
_local4 = _arg1.charCodeAt(_local5);
_local3 = (_local3 + (_local2.charAt(((_local4 >>> 4) & 15)) + _local2.charAt((_local4 & 15))));
_local5++;
};
return (_local3);
}
public static function any_md5(_arg1:String, _arg2:String):String{
return (rstr2any(rstr_md5(str2rstr_utf8(_arg1)), _arg2));
}
public static function b64_hmac_md5(_arg1:String, _arg2:String):String{
return (rstr2b64(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2))));
}
public static function rstr2b64(_arg1:String):String{
var _local2:String;
var _local3:String;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
_local3 = "";
_local4 = _arg1.length;
_local5 = 0;
while (_local5 < _local4) {
_local6 = (((_arg1.charCodeAt(_local5) << 16) | (((_local5 + 1) < _local4)) ? (_arg1.charCodeAt((_local5 + 1)) << 8) : 0) | (((_local5 + 2) < _local4)) ? _arg1.charCodeAt((_local5 + 2)) : 0);
_local7 = 0;
while (_local7 < 4) {
if (((_local5 * 8) + (_local7 * 6)) > (_arg1.length * 8)){
_local3 = (_local3 + b64pad);
} else {
_local3 = (_local3 + _local2.charAt(((_local6 >>> (6 * (3 - _local7))) & 63)));
};
_local7++;
};
_local5 = (_local5 + 3);
};
return (_local3);
}
public static function safe_add(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
var _local4:Number;
_local3 = ((_arg1 & 0xFFFF) + (_arg2 & 0xFFFF));
_local4 = (((_arg1 >> 16) + (_arg2 >> 16)) + (_local3 >> 16));
return (((_local4 << 16) | (_local3 & 0xFFFF)));
}
public static function str2rstr_utf8(_arg1:String):String{
var _local2:String;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = "";
_local3 = -1;
while (++_local3 < _arg1.length) {
_local4 = _arg1.charCodeAt(_local3);
_local5 = (((_local3 + 1) < _arg1.length)) ? _arg1.charCodeAt((_local3 + 1)) : 0;
if ((((((((0xD800 <= _local4)) && ((_local4 <= 56319)))) && ((0xDC00 <= _local5)))) && ((_local5 <= 57343)))){
_local4 = ((65536 + ((_local4 & 1023) << 10)) + (_local5 & 1023));
_local3++;
};
if (_local4 <= 127){
_local2 = (_local2 + String.fromCharCode(_local4));
} else {
if (_local4 <= 2047){
_local2 = (_local2 + String.fromCharCode((192 | ((_local4 >>> 6) & 31)), (128 | (_local4 & 63))));
} else {
if (_local4 <= 0xFFFF){
_local2 = (_local2 + String.fromCharCode((224 | ((_local4 >>> 12) & 15)), (128 | ((_local4 >>> 6) & 63)), (128 | (_local4 & 63))));
} else {
if (_local4 <= 2097151){
_local2 = (_local2 + String.fromCharCode((240 | ((_local4 >>> 18) & 7)), (128 | ((_local4 >>> 12) & 63)), (128 | ((_local4 >>> 6) & 63)), (128 | (_local4 & 63))));
};
};
};
};
};
return (_local2);
}
public static function rstr_hmac_md5(_arg1:String, _arg2:String):String{
var _local3:Array;
var _local4:Array;
var _local5:Array;
var _local6:Number;
var _local7:Array;
_local3 = rstr2binl(_arg1);
if (_local3.length > 16){
_local3 = binl_md5(_local3, (_arg1.length * 8));
};
_local4 = new Array(16);
_local5 = new Array(16);
_local6 = 0;
while (_local6 < 16) {
_local4[_local6] = (_local3[_local6] ^ 909522486);
_local5[_local6] = (_local3[_local6] ^ 1549556828);
_local6++;
};
_local7 = binl_md5(_local4.concat(rstr2binl(_arg2)), (0x0200 + (_arg2.length * 8)));
return (binl2rstr(binl_md5(_local5.concat(_local7), (0x0200 + 128))));
}
public static function str2rstr_utf16be(_arg1:String):String{
var _local2:String;
var _local3:Number;
_local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(((_arg1.charCodeAt(_local3) >>> 8) & 0xFF), (_arg1.charCodeAt(_local3) & 0xFF)));
_local3++;
};
return (_local2);
}
public static function rstr2any(_arg1:String, _arg2:String):String{
var _local3:Number;
var _local4:Array;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Array;
var _local9:Array;
var _local10:String;
_local3 = _arg2.length;
_local4 = [];
_local9 = new Array((_arg1.length / 2));
_local5 = 0;
while (_local5 < _local9.length) {
_local9[_local5] = ((_arg1.charCodeAt((_local5 * 2)) << 8) | _arg1.charCodeAt(((_local5 * 2) + 1)));
_local5++;
};
while (_local9.length > 0) {
_local8 = [];
_local7 = 0;
_local5 = 0;
while (_local5 < _local9.length) {
_local7 = ((_local7 << 16) + _local9[_local5]);
_local6 = Math.floor((_local7 / _local3));
_local7 = (_local7 - (_local6 * _local3));
if ((((_local8.length > 0)) || ((_local6 > 0)))){
_local8[_local8.length] = _local6;
};
_local5++;
};
_local4[_local4.length] = _local7;
_local9 = _local8;
};
_local10 = "";
_local5 = (_local4.length - 1);
while (_local5 >= 0) {
_local10 = (_local10 + _arg2.charAt(_local4[_local5]));
_local5--;
};
return (_local10);
}
public static function rstr_md5(_arg1:String):String{
return (binl2rstr(binl_md5(rstr2binl(_arg1), (_arg1.length * 8))));
}
}
}//package CMG_AS3
Section 8
//ScoreSubmitter (CMG_AS3.ScoreSubmitter)
package CMG_AS3 {
import flash.events.*;
import flash.net.*;
public class ScoreSubmitter extends EventDispatcher {
private var m_UrlLoader:URLLoader;// = null
public static const RETURNCODE_SUCCESS = 1;
public static const RETURNCODE_REJECTED = 2;
public static const RETURNCODE_INTERNALERROR = 5;
public static const URL_SUBMITSCORE = "http://scores.crazymonkeygames.com/hs/regscores2.php";
public static const URL_UPDATEGAME = "http://scores.crazymonkeygames.com/hs/pleaseupdate.php";
public static const SCORE_RESPONSE:String = "score_response";
public static const RETURNCODE_WORKING = 0;
public static const RETURNCODE_WRONGVERSION = 3;
public static const URL_VIEWSCORES = "http://scores.crazymonkeygames.com/hs/listscores.php";
public static const RETURNCODE_NETWORKERROR = 4;
public static var gameVersion:String = "";
public static var gameValidationCode:String = "";
public static var gameId:uint = 0;
public function ScoreSubmitter(){
m_UrlLoader = null;
super();
}
private function onIoError(_arg1:Event){
dispatchEvent(new ServerResponseEvent(SCORE_RESPONSE, RETURNCODE_NETWORKERROR));
}
public function submitScore(_arg1:String, _arg2, _arg3:String=null):void{
var _local4:*;
var _local5:URLRequest;
_arg1 = Utilities.trim(_arg1);
gameVersion = Utilities.trim(gameVersion);
if (_arg3 == null){
_arg3 = "";
} else {
_arg3 = Utilities.trim(_arg3);
};
gameValidationCode = Utilities.trim(gameValidationCode);
if ((((((gameId < 1)) || ((gameVersion == "")))) || ((gameValidationCode == "")))){
trace("ERROR: CMG_AS3.ScoreSubmitter.submitScore: gameId, gameVersion, or gameValidationCode member variables were not set before calling this function!");
dispatchEvent(new ServerResponseEvent(SCORE_RESPONSE, RETURNCODE_REJECTED));
return;
};
dispatchEvent(new ServerResponseEvent(SCORE_RESPONSE, RETURNCODE_WORKING));
_local4 = new URLVariables();
_local4.name = _arg1;
_local4.score = _arg2;
_local4.gameId = gameId;
_local4.gameVersion = gameVersion;
_local4.special = _arg3;
_local4.key = MD5.encrypt(((((((((_arg1 + "|") + _arg2) + "|") + gameId) + "|") + _arg3) + "|") + gameValidationCode));
_local5 = new URLRequest(URL_SUBMITSCORE);
_local5.method = URLRequestMethod.POST;
_local5.data = _local4;
m_UrlLoader = new URLLoader();
m_UrlLoader.addEventListener("complete", onComplete);
m_UrlLoader.addEventListener("ioError", onIoError);
m_UrlLoader.load(_local5);
}
private function onComplete(_arg1:Event):void{
var _local2:URLVariables;
var _local3:*;
_local2 = new URLVariables(m_UrlLoader.data.replace("&", ""));
_local3 = Utilities.trim(_local2.ok);
if (_local3 == 1){
dispatchEvent(new ServerResponseEvent(SCORE_RESPONSE, RETURNCODE_SUCCESS));
} else {
if (_local3 == 0){
dispatchEvent(new ServerResponseEvent(SCORE_RESPONSE, RETURNCODE_REJECTED));
} else {
if (_local3 == 2){
dispatchEvent(new ServerResponseEvent(SCORE_RESPONSE, RETURNCODE_WRONGVERSION));
} else {
dispatchEvent(new ServerResponseEvent(SCORE_RESPONSE, RETURNCODE_INTERNALERROR));
};
};
};
}
public static function loadHighScorePage():void{
Utilities.goToUrl(((URL_VIEWSCORES + "?id=") + gameId));
}
public static function loadUpdatePage(){
Utilities.goToUrl(((URL_VIEWSCORES + "?id=") + gameId));
}
}
}//package CMG_AS3
Section 9
//ServerResponseEvent (CMG_AS3.ServerResponseEvent)
package CMG_AS3 {
import flash.events.*;
public class ServerResponseEvent extends Event {
public var returnCode:uint;
public function ServerResponseEvent(_arg1:String, _arg2:uint){
super(_arg1, false, false);
returnCode = _arg2;
}
}
}//package CMG_AS3
Section 10
//Utilities (CMG_AS3.Utilities)
package CMG_AS3 {
import flash.net.*;
import flash.system.*;
import flash.external.*;
public class Utilities {
public static function trim(_arg1:String):String{
var _local2:*;
var _local3:*;
_local2 = 0;
while (_arg1.charCodeAt(_local2) < 33) {
_local2++;
};
_local3 = (_arg1.length - 1);
while (_arg1.charCodeAt(_local3) < 33) {
_local3--;
};
return (_arg1.substring(_local2, (_local3 + 1)));
}
public static function goToUrl(_arg1:String):void{
var success:Boolean;
var url = _arg1;
success = false;
if (((ExternalInterface.available) && (!((Capabilities.playerType == "External"))))){
try {
ExternalInterface.call("window.open", url, "win", "");
success = true;
} catch(error:Error) {
} catch(error:SecurityError) {
};
};
if (success != true){
navigateToURL(new URLRequest(url), "_BLANK");
};
}
}
}//package CMG_AS3
Section 11
//Back (fl.motion.easing.Back)
package fl.motion.easing {
public class Back {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0):Number{
if (!_arg5){
_arg5 = 1.70158;
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2));
};
_arg1 = (_arg1 - 2);
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2));
}
}
}//package fl.motion.easing
Section 12
//CMG_Logo_Animation_1 (game_fla.CMG_Logo_Animation_1)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class CMG_Logo_Animation_1 extends MovieClip {
public var CMG_MonkeyBlink:MovieClip;
public var CMG_HomePageLink:SimpleButton;
public var monkeyBlinkCheckTimer:Timer;
public var CMG_LoadingWidget:MovieClip;
public function CMG_Logo_Animation_1(){
addFrameScript(0, frame1, 80, frame81, 81, frame82);
}
public function goToUrl(_arg1:String):void{
var success:Boolean;
var url = _arg1;
success = false;
if (((ExternalInterface.available) && (!((Capabilities.playerType == "External"))))){
try {
ExternalInterface.call("window.open", url, "win", "");
success = true;
} catch(error:Error) {
} catch(error:SecurityError) {
};
};
if (success != true){
navigateToURL(new URLRequest(url), "_BLANK");
};
}
function frame81(){
stop();
monkeyBlinkCheckTimer.addEventListener(TimerEvent.TIMER, onMonkeyBlinkCheckTimer);
monkeyBlinkCheckTimer.start();
}
function frame82(){
monkeyBlinkCheckTimer.stop();
MovieClip(parent).gotoAndStop("menu");
}
public function onMouseUpHandler_CMGHomePageBtn(_arg1:MouseEvent):void{
goToUrl("http://www.crazymonkeygames.com");
}
function frame1(){
MovieClip(parent).stop();
CMG_HomePageLink.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler_CMGHomePageBtn);
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler_CMGLoader);
monkeyBlinkCheckTimer = new Timer(800);
}
public function onEnterFrameHandler_CMGLoader(_arg1:Event):void{
var _local2:Number;
var _local3:Number;
_local2 = CMG_HomePageLink.stage.loaderInfo.bytesLoaded;
_local3 = CMG_HomePageLink.stage.loaderInfo.bytesTotal;
CMG_LoadingWidget.CMG_LoadingBar.bar.scaleX = (_local2 / _local3);
if (_local2 == _local3){
CMG_LoadingWidget.nextFrame();
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler_CMGLoader);
};
}
public function onMonkeyBlinkCheckTimer(_arg1:TimerEvent):void{
var _local2:Number;
_local2 = Math.random();
if (_local2 < 0.3){
CMG_MonkeyBlink.play();
};
}
}
}//package game_fla
Section 13
//CMG_monkey_blink_19 (game_fla.CMG_monkey_blink_19)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class CMG_monkey_blink_19 extends MovieClip {
public function CMG_monkey_blink_19(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package game_fla
Section 14
//control_mc_65 (game_fla.control_mc_65)
package game_fla {
import flash.display.*;
import flash.text.*;
public dynamic class control_mc_65 extends MovieClip {
public var lives:TextField;
public var enemy_num:TextField;
public var menuoptions_mc:OptionsMenu;
public var menu_btn:SimpleButton;
public var score:TextField;
public var sendscore_btn:SimpleButton;
public var gameover_mc:MovieClip;
}
}//package game_fla
Section 15
//load_barMC_12 (game_fla.load_barMC_12)
package game_fla {
import flash.display.*;
public dynamic class load_barMC_12 extends MovieClip {
public var bar:MovieClip;
}
}//package game_fla
Section 16
//logo_57 (game_fla.logo_57)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class logo_57 extends MovieClip {
public var CMG_HomePageLink:SimpleButton;
public function logo_57(){
addFrameScript(0, frame1);
}
public function goToUrl(_arg1:String):void{
var success:Boolean;
var url = _arg1;
success = false;
if (((ExternalInterface.available) && (!((Capabilities.playerType == "External"))))){
try {
ExternalInterface.call("window.open", url, "win", "");
success = true;
} catch(error:Error) {
} catch(error:SecurityError) {
};
};
if (success != true){
navigateToURL(new URLRequest(url), "_BLANK");
};
}
public function onMouseUpHandler_CMGHomePageBtn(_arg1:MouseEvent):void{
goToUrl("http://www.crazymonkeygames.com");
}
function frame1(){
CMG_HomePageLink.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler_CMGHomePageBtn);
}
}
}//package game_fla
Section 17
//MainTimeline (game_fla.MainTimeline)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import mochi.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class MainTimeline extends MovieClip {
public function MainTimeline(){
addFrameScript(0, frame1, 2, frame3);
}
function frame3(){
stop();
}
function frame1(){
stop();
stage.showDefaultContextMenu = false;
MochiBot.track(this, "e9414214");
}
}
}//package game_fla
Section 18
//menudifficulty_mc_52 (game_fla.menudifficulty_mc_52)
package game_fla {
import flash.display.*;
public dynamic class menudifficulty_mc_52 extends MovieClip {
public var back_btn:SimpleButton;
public var deasy_btn:SimpleButton;
public var dnormal_btn:SimpleButton;
public var dhard_btn:SimpleButton;
public var slider:MovieClip;
}
}//package game_fla
Section 19
//menuhighscores_mc_56 (game_fla.menuhighscores_mc_56)
package game_fla {
import flash.display.*;
public dynamic class menuhighscores_mc_56 extends MovieClip {
public var back_btn:SimpleButton;
public var deasy_btn:SimpleButton;
public var dnormal_btn:SimpleButton;
public var dhard_btn:SimpleButton;
}
}//package game_fla
Section 20
//menuinstruction_mc_59 (game_fla.menuinstruction_mc_59)
package game_fla {
import flash.display.*;
public dynamic class menuinstruction_mc_59 extends MovieClip {
public var back_btn:SimpleButton;
}
}//package game_fla
Section 21
//Preloader_2 (game_fla.Preloader_2)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class Preloader_2 extends MovieClip {
public var CMG_LoadingBar:MovieClip;
public var play_btn:SimpleButton;
public function Preloader_2(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
trace(this.currentFrame);
stop();
}
function frame2(){
play_btn.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler_CMGPlayBtn);
}
public function onMouseUpHandler_CMGPlayBtn(_arg1:MouseEvent):void{
MovieClip(parent).gotoAndStop(82);
}
}
}//package game_fla
Section 22
//rip1_72 (game_fla.rip1_72)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class rip1_72 extends MovieClip {
public function rip1_72(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package game_fla
Section 23
//rip2_71 (game_fla.rip2_71)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class rip2_71 extends MovieClip {
public function rip2_71(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package game_fla
Section 24
//rip3_70 (game_fla.rip3_70)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class rip3_70 extends MovieClip {
public function rip3_70(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package game_fla
Section 25
//Timeline_20 (game_fla.Timeline_20)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class Timeline_20 extends MovieClip {
public function Timeline_20(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package game_fla
Section 26
//userinput_mc_61 (game_fla.userinput_mc_61)
package game_fla {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
import flash.net.*;
import flash.text.*;
import flash.system.*;
import flash.external.*;
import flash.ui.*;
import flash.accessibility.*;
import flash.errors.*;
public dynamic class userinput_mc_61 extends MovieClip {
public var output_txt:TextField;
public var submit_btn:SimpleButton;
public var view_btn:SimpleButton;
public var name_txt:TextField;
public function userinput_mc_61(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package game_fla
Section 27
//TweenFilterLite (gs.TweenFilterLite)
package gs {
import flash.display.*;
import flash.filters.*;
import flash.utils.*;
public class TweenFilterLite extends TweenLite {
private var _mc:DisplayObject;
private var _clrsa:Array;
private var _fType:Class;
private var _clrMtxTw:TweenLite;
public var _matrix:Array;
private var _f:BitmapFilter;
private var _endMatrix:Array;
public static var version:Number = 5.87;
private static var _idMatrix:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
public static var killTweensOf:Function = TweenLite.killTweensOf;
public static var delayedCall:Function = TweenLite.delayedCall;
private static var _lumB:Number = 0.072169;
private static var _lumG:Number = 0.71516;
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
private static var _lumR:Number = 0.212671;
public function TweenFilterLite(_arg1:DisplayObject, _arg2:Number, _arg3:Object){
_fType = _slot1;
super(_arg1, _arg2, _arg3);
if (_arg1 == null){
return;
};
_mc = _arg1;
_clrsa = [];
if (this.vars.runBackwards == true){
initTweenVals();
};
if ((((TweenLite.version < 5.87)) || (isNaN(TweenLite.version)))){
trace("ERROR! Please update your TweenLite class. TweenFilterLite requires a more recent version. Download updates at http://www.TweenLite.com.");
};
}
private function setFilter(_arg1:Class, _arg2:Array, _arg3:BitmapFilter):void{
var _local4:Array;
var _local5:int;
var _local6:Number;
var _local7:String;
var _local8:Object;
var _local9:Object;
var _local10:Object;
_fType = _arg1;
_local4 = _mc.filters;
_local5 = 0;
while (_local5 < _local4.length) {
if ((_local4[_local5] is _arg1)){
_f = _local4[_local5];
break;
};
_local5++;
};
if (_f == null){
_local4.push(_arg3);
_mc.filters = _local4;
_f = _arg3;
};
_local5 = 0;
while (_local5 < _arg2.length) {
_local7 = _arg2[_local5];
if (this.tweens[_local7] != undefined){
_local8 = this.tweens[_local7];
delete this.tweens[_local7];
} else {
if (this.extraTweens[_local7] != undefined){
_local8 = this.extraTweens[_local7];
} else {
_local8 = null;
};
};
if (_local8 != null){
if ((((((((((((((_local7 == "brightness")) || ((_local7 == "colorize")))) || ((_local7 == "amount")))) || ((_local7 == "saturation")))) || ((_local7 == "contrast")))) || ((_local7 == "hue")))) || ((_local7 == "threshold")))){
} else {
if ((((((_local7 == "color")) || ((_local7 == "highlightColor")))) || ((_local7 == "shadowColor")))){
_local9 = HEXtoRGB(_f[_local7]);
_local10 = HEXtoRGB(this.vars[_local7]);
_clrsa.push({p:_local7, e:this.vars.ease, sr:_local9.rb, cr:(_local10.rb - _local9.rb), sg:_local9.gb, cg:(_local10.gb - _local9.gb), sb:_local9.bb, cb:(_local10.bb - _local9.bb)});
} else {
if ((((((((_local7 == "quality")) || ((_local7 == "inner")))) || ((_local7 == "knockout")))) || ((_local7 == "hideObject")))){
_f[_local7] = this.vars[_local7];
} else {
if (typeof(this.vars[_local7]) == "number"){
_local6 = (this.vars[_local7] - _f[_local7]);
} else {
_local6 = Number(this.vars[_local7]);
};
this.tweens[_local7] = {o:_f, p:_local7, s:_f[_local7], c:_local6, e:this.vars.ease};
};
};
};
};
_local5++;
};
}
override public function render(_arg1:uint):void{
var _local2:Number;
var _local3:Number;
var _local4:Object;
var _local5:String;
var _local6:int;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Array;
_local2 = ((_arg1 - this.startTime) / 1000);
if (_local2 > this.duration){
_local2 = this.duration;
};
_local3 = this.vars.ease(_local2, 0, 1, this.duration);
for (_local5 in this.tweens) {
_local4 = this.tweens[_local5];
_local4.o[_local5] = (_local4.s + (_local3 * _local4.c));
};
if (_mc.parent != null){
_local6 = 0;
while (_local6 < _clrsa.length) {
_local4 = _clrsa[_local6];
_local7 = (_local4.sr + (_local3 * _local4.cr));
_local8 = (_local4.sg + (_local3 * _local4.cg));
_local9 = (_local4.sb + (_local3 * _local4.cb));
_f[_local4.p] = (((_local7 << 16) | (_local8 << 8)) | _local9);
_local6++;
};
if (_endMatrix != null){
ColorMatrixFilter(_f).matrix = _matrix;
};
_local10 = _mc.filters.slice();
_local6 = (_local10.length - 1);
while (_local6 > -1) {
if ((_local10[_local6] is _fType)){
_local10[_local6] = _f;
break;
};
_local6--;
};
_mc.filters = _local10;
};
if (this.vars.onUpdate != null){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (_local2 == this.duration){
super.complete(true);
};
}
public function HEXtoRGB(_arg1:Number):Object{
return ({rb:(_arg1 >> 16), gb:((_arg1 >> 8) & 0xFF), bb:(_arg1 & 0xFF)});
}
override public function initTweenVals():void{
var _local1:String;
var _local2:Number;
if (_mc != null){
super.initTweenVals();
if (this.vars.type != null){
_clrsa = [];
_matrix = _idMatrix.slice();
if ((((this.vars.quality == undefined)) || (isNaN(this.vars.quality)))){
this.vars.quality = 2;
};
if (this.vars.runBackwards == true){
for (_local1 in this.tweens) {
this.tweens[_local1].flipped = true;
};
};
switch (this.vars.type.toLowerCase()){
case "blur":
setFilter(BlurFilter, ["blurX", "blurY", "quality"], new BlurFilter(0, 0, this.vars.quality));
break;
case "glow":
setFilter(GlowFilter, ["alpha", "blurX", "blurY", "color", "quality", "strength", "inner", "knockout"], new GlowFilter(0xFFFFFF, 0, 0, 0, ((this.vars.strength) || (1)), this.vars.quality, this.vars.inner, this.vars.knockout));
break;
case "colormatrix":
case "color":
case "colormatrixfilter":
case "colorize":
setFilter(ColorMatrixFilter, [], new ColorMatrixFilter(_matrix));
_matrix = ColorMatrixFilter(_f).matrix;
if (this.vars.relative == true){
_endMatrix = _matrix.slice();
} else {
_endMatrix = _idMatrix.slice();
};
_endMatrix = setBrightness(_endMatrix, this.vars.brightness);
_endMatrix = setContrast(_endMatrix, this.vars.contrast);
_endMatrix = setHue(_endMatrix, this.vars.hue);
_endMatrix = setSaturation(_endMatrix, this.vars.saturation);
_endMatrix = setThreshold(_endMatrix, this.vars.threshold);
if (!isNaN(this.vars.colorize)){
_endMatrix = colorize(_endMatrix, this.vars.colorize, this.vars.amount);
} else {
if (!isNaN(this.vars.color)){
_endMatrix = colorize(_endMatrix, this.vars.color, this.vars.amount);
};
};
_local2 = (this.delay - ((getTimer() - this.initTime) / 1000));
_clrMtxTw = new TweenLite(_matrix, this.duration, {endArray:_endMatrix, ease:this.vars.ease, delay:_local2, overwrite:false, runBackwards:this.vars.runBackwards});
_clrMtxTw.endTarget = _mc;
break;
case "shadow":
case "dropshadow":
setFilter(DropShadowFilter, ["alpha", "angle", "blurX", "blurY", "color", "distance", "quality", "strength", "inner", "knockout", "hideObject"], new DropShadowFilter(0, 45, 0, 0, 0, 0, 1, this.vars.quality, this.vars.inner, this.vars.knockout, this.vars.hideObject));
break;
case "bevel":
setFilter(BevelFilter, ["angle", "blurX", "blurY", "distance", "highlightAlpha", "highlightColor", "quality", "shadowAlpha", "shadowColor", "strength"], new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0, 0.5, 2, 2, 0, this.vars.quality));
break;
};
if (this.vars.runBackwards == true){
flipFilterVals();
};
};
};
}
private function flipFilterVals():void{
var _local1:Boolean;
var _local2:int;
var _local3:Object;
var _local4:String;
var _local5:Array;
_local1 = this.active;
for (_local4 in this.tweens) {
if (this.tweens[_local4].flipped != true){
_local3 = this.tweens[_local4];
_local3.s = (_local3.s + _local3.c);
_local3.c = (_local3.c * -1);
_local3.o[_local4] = _local3.s;
_local3.flipped = true;
};
};
_local2 = 0;
while (_local2 < _clrsa.length) {
_local3 = _clrsa[_local2];
_local3.sr = (_local3.sr + _local3.cr);
_local3.cr = (_local3.cr * -1);
_local3.sg = (_local3.sg + _local3.cg);
_local3.cg = (_local3.cg * -1);
_local3.sb = (_local3.sb + _local3.cb);
_local3.cb = (_local3.cb * -1);
if (!_local1){
_f[_local3.p] = (((_local3.sr << 16) | (_local3.sg << 8)) | _local3.sb);
};
_local2++;
};
if (((_local1) && (!((this.duration == 0.001))))){
render(getTimer());
} else {
if (((!((_mc.parent == null))) && (!((_fType == null))))){
if (_endMatrix != null){
ColorMatrixFilter(_f).matrix = _matrix;
};
_local5 = _mc.filters.slice();
_local2 = (_local5.length - 1);
while (_local2 > -1) {
if ((_local5[_local2] is _fType)){
_local5[_local2] = _f;
break;
};
_local2--;
};
_mc.filters = _local5;
};
};
if (this.vars.onUpdate != null){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
}
public static function setContrast(_arg1:Array, _arg2:Number):Array{
var _local3:Array;
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = (_arg2 + 0.01);
_local3 = [_arg2, 0, 0, 0, (128 * (1 - _arg2)), 0, _arg2, 0, 0, (128 * (1 - _arg2)), 0, 0, _arg2, 0, (128 * (1 - _arg2)), 0, 0, 0, 1, 0];
return (applyMatrix(_local3, _arg1));
}
public static function applyMatrix(_arg1:Array, _arg2:Array):Array{
var _local3:Array;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){
return (_arg2);
};
_local3 = [];
_local4 = 0;
_local5 = 0;
_local6 = 0;
while (_local6 < 4) {
_local7 = 0;
while (_local7 < 5) {
if (_local7 == 4){
_local5 = _arg1[(_local4 + 4)];
} else {
_local5 = 0;
};
_local3[(_local4 + _local7)] = (((((_arg1[_local4] * _arg2[_local7]) + (_arg1[(_local4 + 1)] * _arg2[(_local7 + 5)])) + (_arg1[(_local4 + 2)] * _arg2[(_local7 + 10)])) + (_arg1[(_local4 + 3)] * _arg2[(_local7 + 15)])) + _local5);
_local7++;
};
_local4 = (_local4 + 5);
_local6++;
};
return (_local3);
}
public static function colorize(_arg1:Array, _arg2:Number, _arg3:Number=100):Array{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Array;
if (isNaN(_arg2)){
return (_arg1);
};
if (isNaN(_arg3)){
_arg3 = 1;
};
_local4 = (((_arg2 >> 16) & 0xFF) / 0xFF);
_local5 = (((_arg2 >> 8) & 0xFF) / 0xFF);
_local6 = ((_arg2 & 0xFF) / 0xFF);
_local7 = (1 - _arg3);
_local8 = [(_local7 + ((_arg3 * _local4) * _lumR)), ((_arg3 * _local4) * _lumG), ((_arg3 * _local4) * _lumB), 0, 0, ((_arg3 * _local5) * _lumR), (_local7 + ((_arg3 * _local5) * _lumG)), ((_arg3 * _local5) * _lumB), 0, 0, ((_arg3 * _local6) * _lumR), ((_arg3 * _local6) * _lumG), (_local7 + ((_arg3 * _local6) * _lumB)), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(_local8, _arg1));
}
public static function setBrightness(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = ((_arg2 * 100) - 100);
return (applyMatrix([1, 0, 0, 0, _arg2, 0, 1, 0, 0, _arg2, 0, 0, 1, 0, _arg2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], _arg1));
}
public static function setSaturation(_arg1:Array, _arg2:Number):Array{
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Array;
if (isNaN(_arg2)){
return (_arg1);
};
_local3 = (1 - _arg2);
_local4 = (_local3 * _lumR);
_local5 = (_local3 * _lumG);
_local6 = (_local3 * _lumB);
_local7 = [(_local4 + _arg2), _local5, _local6, 0, 0, _local4, (_local5 + _arg2), _local6, 0, 0, _local4, _local5, (_local6 + _arg2), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(_local7, _arg1));
}
public static function from(_arg1:DisplayObject, _arg2:Number, _arg3:Object):TweenFilterLite{
_arg3.runBackwards = true;
return (new TweenFilterLite(_arg1, _arg2, _arg3));
}
public static function setThreshold(_arg1:Array, _arg2:Number):Array{
var _local3:Array;
if (isNaN(_arg2)){
return (_arg1);
};
_local3 = [(_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), 0, 0, 0, 1, 0];
return (applyMatrix(_local3, _arg1));
}
public static function setHue(_arg1:Array, _arg2:Number):Array{
var _local3:Number;
var _local4:Number;
var _local5:Array;
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = (_arg2 * (Math.PI / 180));
_local3 = Math.cos(_arg2);
_local4 = Math.sin(_arg2);
_local5 = [((_lumR + (_local3 * (1 - _lumR))) + (_local4 * -(_lumR))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * -(_lumG))), ((_lumB + (_local3 * -(_lumB))) + (_local4 * (1 - _lumB))), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * 0.143)), ((_lumG + (_local3 * (1 - _lumG))) + (_local4 * 0.14)), ((_lumB + (_local3 * -(_lumB))) + (_local4 * -0.283)), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * -((1 - _lumR)))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * _lumG)), ((_lumB + (_local3 * (1 - _lumB))) + (_local4 * _lumB)), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
return (applyMatrix(_local5, _arg1));
}
public static function to(_arg1:DisplayObject, _arg2:Number, _arg3:Object):TweenFilterLite{
return (new TweenFilterLite(_arg1, _arg2, _arg3));
}
}
}//package gs
Section 28
//TweenLite (gs.TweenLite)
package gs {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.media.*;
import flash.utils.*;
public class TweenLite {
public var delay:Number;
protected var _endTarget:Object;
private var _sound:SoundTransform;
public var target:Object;
public var duration:Number;
public var startTime:uint;
public var extraTweens:Object;
protected var _color:ColorTransform;
protected var _active:Boolean;
protected var _endColor:ColorTransform;
public var vars:Object;
public var tweens:Object;
public var initTime:uint;
private static var _sprite:Sprite = new Sprite();
private static var _timer:Timer = new Timer(2000);
protected static var _all:Dictionary = new Dictionary();
public static var killDelayedCallsTo:Function = killTweensOf;
public static var version:Number = 5.87;
private static var _listening:Boolean;
public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){
if (_arg1 == null){
return;
};
if (((((!((_arg3.overwrite == false))) && (!((_arg1 == null))))) || ((_all[_arg1] == undefined)))){
delete _all[_arg1];
_all[_arg1] = new Dictionary();
};
_all[_arg1][this] = this;
this.vars = _arg3;
this.duration = _arg2;
this.delay = ((_arg3.delay) || (0));
if (_arg2 == 0){
this.duration = 0.001;
if (this.delay == 0){
this.vars.runBackwards = true;
};
};
this.target = (_endTarget = _arg1);
if (!(this.vars.ease is Function)){
this.vars.ease = easeOut;
};
if (this.vars.easeParams != null){
this.vars.proxiedEase = this.vars.ease;
this.vars.ease = easeProxy;
};
if (this.vars.mcColor != null){
this.vars.tint = this.vars.mcColor;
};
if (!isNaN(Number(this.vars.autoAlpha))){
this.vars.alpha = Number(this.vars.autoAlpha);
};
this.tweens = {};
this.extraTweens = {};
this.initTime = getTimer();
if (this.vars.runBackwards == true){
initTweenVals();
};
_active = false;
if ((((_arg2 == 0)) && ((this.delay == 0)))){
complete(true);
} else {
if (!_listening){
_sprite.addEventListener(Event.ENTER_FRAME, executeAll);
_timer.addEventListener("timer", killGarbage);
_timer.start();
_listening = true;
};
};
}
public function set endTarget(_arg1:Object):void{
if ((((this.duration == 0.001)) && ((this.delay <= 0)))){
removeTween(this);
} else {
delete _all[_endTarget][this];
_endTarget = _arg1;
if (_all[_arg1] == undefined){
_all[_arg1] = new Dictionary();
};
_all[_arg1][this] = this;
};
}
public function get colorProxy():Number{
return (0);
}
public function get endTarget():Object{
return (_endTarget);
}
public function get active():Boolean{
if (_active){
return (true);
};
if (((getTimer() - this.initTime) / 1000) > this.delay){
_active = true;
this.startTime = (this.initTime + (this.delay * 1000));
if (this.vars.runBackwards != true){
initTweenVals();
} else {
if (typeof(this.vars.autoAlpha) == "number"){
this.target.visible = true;
};
};
if (this.vars.onStart != null){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
if (this.duration == 0.001){
this.startTime = (this.startTime - 1);
};
return (true);
//unresolved jump
};
return (false);
}
public function initTweenVals():void{
var _local1:Number;
var _local2:String;
var _local3:Number;
var _local4:Array;
var _local5:int;
var _local6:TweenLite;
var _local7:TweenLite;
var _local8:Object;
_local1 = (this.delay - ((getTimer() - this.initTime) / 1000));
if ((this.target is Array)){
_local4 = ((this.vars.endArray) || ([]));
_local5 = 0;
while (_local5 < _local4.length) {
if (((!((this.target[_local5] == _local4[_local5]))) && (!((this.target[_local5] == undefined))))){
this.tweens[_local5.toString()] = {o:this.target, s:this.target[_local5], c:(_local4[_local5] - this.target[_local5])};
};
_local5++;
};
} else {
for (_local2 in this.vars) {
if ((((((((((((((((((((((((((((_local2 == "delay")) || ((_local2 == "ease")))) || ((_local2 == "overwrite")))) || ((_local2 == "onComplete")))) || ((_local2 == "onCompleteParams")))) || ((_local2 == "runBackwards")))) || ((_local2 == "onUpdate")))) || ((_local2 == "onUpdateParams")))) || ((_local2 == "autoAlpha")))) || ((_local2 == "onStart")))) || ((_local2 == "onStartParams")))) || ((_local2 == "easeParams")))) || ((_local2 == "mcColor")))) || ((_local2 == "type")))){
} else {
if ((((_local2 == "tint")) && ((this.target is DisplayObject)))){
_color = this.target.transform.colorTransform;
_endColor = new ColorTransform();
if (this.vars.alpha != undefined){
_endColor.alphaMultiplier = this.vars.alpha;
delete this.vars.alpha;
delete this.tweens.alpha;
} else {
_endColor.alphaMultiplier = this.target.alpha;
};
if (((!((this.vars[_local2] == null))) && (!((this.vars[_local2] == ""))))){
_endColor.color = this.vars[_local2];
};
_local6 = new TweenLite(this, this.duration, {colorProxy:1, delay:_local1, overwrite:false, ease:this.vars.ease, runBackwards:this.vars.runBackwards});
_local6.endTarget = this.target;
} else {
if ((((_local2 == "volume")) && ((this.target is MovieClip)))){
_sound = this.target.soundTransform;
_local7 = new TweenLite(this, this.duration, {volumeProxy:this.vars[_local2], ease:easeOut, delay:_local1, overwrite:false, runBackwards:this.vars.runBackwards});
_local7.endTarget = this.target;
} else {
if (this.target.hasOwnProperty(_local2)){
if (typeof(this.vars[_local2]) == "number"){
_local3 = (this.vars[_local2] - this.target[_local2]);
} else {
_local3 = Number(this.vars[_local2]);
};
this.tweens[_local2] = {o:this.target, s:this.target[_local2], c:_local3};
} else {
this.extraTweens[_local2] = {o:this.target, s:0, c:0, v:this.vars[_local2]};
};
};
};
};
};
};
if (this.vars.runBackwards == true){
for (_local2 in this.tweens) {
_local8 = this.tweens[_local2];
this.tweens[_local2].s = (_local8.s + _local8.c);
_local8.c = (_local8.c * -1);
_local8.o[_local2] = _local8.s;
};
if (this.vars.onUpdate != null){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
};
if (typeof(this.vars.autoAlpha) == "number"){
this.target.visible = !((((this.vars.runBackwards == true)) && ((this.target.alpha == 0))));
};
}
public function render(_arg1:uint):void{
var _local2:Number;
var _local3:Number;
var _local4:Object;
var _local5:String;
_local2 = ((_arg1 - this.startTime) / 1000);
if (_local2 > this.duration){
_local2 = this.duration;
};
_local3 = this.vars.ease(_local2, 0, 1, this.duration);
for (_local5 in this.tweens) {
_local4 = this.tweens[_local5];
_local4.o[_local5] = (_local4.s + (_local3 * _local4.c));
};
if (this.vars.onUpdate != null){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (_local2 == this.duration){
complete(true);
};
}
public function set colorProxy(_arg1:Number):void{
var _local2:Number;
_local2 = (1 - _arg1);
this.target.transform.colorTransform = new ColorTransform(((_color.redMultiplier * _local2) + (_endColor.redMultiplier * _arg1)), ((_color.greenMultiplier * _local2) + (_endColor.greenMultiplier * _arg1)), ((_color.blueMultiplier * _local2) + (_endColor.blueMultiplier * _arg1)), ((_color.alphaMultiplier * _local2) + (_endColor.alphaMultiplier * _arg1)), ((_color.redOffset * _local2) + (_endColor.redOffset * _arg1)), ((_color.greenOffset * _local2) + (_endColor.greenOffset * _arg1)), ((_color.blueOffset * _local2) + (_endColor.blueOffset * _arg1)), ((_color.alphaOffset * _local2) + (_endColor.alphaOffset * _arg1)));
}
public function get volumeProxy():Number{
return (_sound.volume);
}
public function set volumeProxy(_arg1:Number):void{
_sound.volume = _arg1;
this.target.soundTransform = _sound;
}
protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams)));
}
public function complete(_arg1:Boolean=false):void{
if (!_arg1){
this.startTime = 0;
render((this.duration * 1000));
return;
};
if ((((typeof(this.vars.autoAlpha) == "number")) && ((this.target.alpha == 0)))){
this.target.visible = false;
};
if (this.vars.onComplete != null){
this.vars.onComplete.apply(null, this.vars.onCompleteParams);
};
removeTween(this);
}
public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null):TweenLite{
return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, overwrite:false}));
}
public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
_arg3.runBackwards = true;
return (new TweenLite(_arg1, _arg2, _arg3));
}
public static function removeTween(_arg1:TweenLite=null):void{
if (((!((_arg1 == null))) && (!((_all[_arg1.endTarget] == undefined))))){
delete _all[_arg1.endTarget][_arg1];
};
}
protected static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
public static function killGarbage(_arg1:TimerEvent):void{
var _local2:Object;
var _local3:uint;
var _local4:Boolean;
var _local5:Object;
var _local6:Object;
var _local7:Object;
_local2 = _all;
_local3 = 0;
for (_local5 in _local2) {
_local4 = false;
for (_local6 in _local2[_local5]) {
_local4 = true;
break;
};
if (!_local4){
delete _local2[_local5];
} else {
_local3++;
};
};
if (_local3 == 0){
_sprite.removeEventListener(Event.ENTER_FRAME, executeAll);
_timer.removeEventListener("timer", killGarbage);
_timer.stop();
_listening = false;
};
}
public static function executeAll(_arg1:Event):void{
var _local2:Object;
var _local3:uint;
var _local4:Object;
var _local5:Object;
_local2 = _all;
_local3 = getTimer();
for (_local4 in _local2) {
for (_local5 in _local2[_local4]) {
if (((!((_local2[_local4][_local5] == undefined))) && (_local2[_local4][_local5].active))){
_local2[_local4][_local5].render(_local3);
if (_local2[_local4] == undefined){
break;
};
};
};
};
}
public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
return (new TweenLite(_arg1, _arg2, _arg3));
}
public static function killTweensOf(_arg1:Object=null, _arg2:Boolean=false):void{
var _local3:Object;
var _local4:*;
if (((!((_arg1 == null))) && (!((_all[_arg1] == undefined))))){
if (_arg2){
_local3 = _all[_arg1];
for (_local4 in _local3) {
_local3[_local4].complete(false);
};
};
delete _all[_arg1];
};
}
}
}//package gs
Section 29
//MochiBot (mochi.MochiBot)
package mochi {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
var _local3:MochiBot;
var _local4:String;
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:Loader;
if (Security.sandboxType == "localWithFile"){
return (null);
};
_local3 = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
_local4 = "http://core.mochibot.com/my/core.swf";
_local5 = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
_local6 = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
_local7 = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
_local8 = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package mochi
Section 30
//MochiScores (mochi.MochiScores)
package mochi {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public static function showLeaderboard(_arg1:Object=null):void{
var options = _arg1;
if (options != null){
if (options.clip != null){
if ((options.clip is Sprite)){
MochiServices.setContainer(options.clip);
};
delete options.clip;
} else {
MochiServices.setContainer();
};
MochiServices.stayOnTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onClose.");
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (_slot1.boardID != null){
options.boardID = _slot1.boardID;
};
};
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local2:Object;
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
_local2 = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function onClose(_arg1:Object=null):void{
if (_arg1 != null){
if (_arg1.error != null){
if (_arg1.error == true){
if (onErrorHandler != null){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
};
};
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
_slot1.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
}
}//package mochi
Section 31
//MochiServices (mochi.MochiServices)
package mochi {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _swfVersion:String;
private static var _sendChannel:LocalConnection;
private static var _rcvChannelName:String;
private static var _gatewayURL:String = "http://www.mochiads.com/static/lib/services/services.swf";
private static var _clip:MovieClip;
private static var _loader:Loader;
private static var _id:String;
private static var _listenChannel:LocalConnection;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _startTime:Number;
private static var _connecting:Boolean = false;
public static var onError:Object;
private static var _listenChannelName:String = "__mochiservices";
private static var _rcvChannel:LocalConnection;
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_sendChannel.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
onError("NotConnected");
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_clip._nextcallbackID++;
};
};
}
public static function get connected():Boolean{
return (_connected);
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (_clip != null){
if (_clip._queue != null){
while (_clip._queue.length > 0) {
_local2 = _clip._queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _clip._callbacks[_local2.callbackID];
};
delete _clip._callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
public static function get childClip():Object{
return (_clip);
}
public static function get id():String{
return (_id);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, _slot1.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function getVersion():String{
return ("1.32");
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
try {
_listenChannel.close();
_rcvChannel.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
} catch(error:Error) {
};
};
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
Security.allowDomain("*");
Security.allowInsecureDomain("*");
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
return (_local2);
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, _slot1.bringToTop);
if (_clip.parent != null){
Sprite(_clip.parent).removeChild(_clip);
};
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_arg1 != null){
if ((_arg1 is Sprite)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function onStatus(_arg1:StatusEvent):void{
switch (_arg1.level){
case "error":
_connected = false;
_listenChannel.connect(_listenChannelName);
break;
};
}
private static function initComChannels():void{
if (!_connected){
_sendChannel.addEventListener(StatusEvent.STATUS, _slot1.onStatus);
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion()});
_rcvChannel.addEventListener(StatusEvent.STATUS, _slot1.onStatus);
_clip.onReceive = function (_arg1:Object):void{
var cb:String;
var cblst:Object;
var method:*;
var methodName:String;
var obj:Object;
var pkg = _arg1;
cb = pkg.callbackID;
cblst = this.client._callbacks[cb];
if (!cblst){
return;
};
method = cblst.callbackMethod;
methodName = "";
obj = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
} else {
trace((("Error: Method " + method) + " does not exist."));
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString()));
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
trace(("Error invoking method on object: " + error.toString()));
};
};
};
delete this.client._callbacks[cb];
};
_clip.onError = function ():void{
_slot1.onError("IOError");
};
_rcvChannel.connect(_rcvChannelName);
trace("connected!");
_connecting = false;
_connected = true;
_listenChannel.close();
while (_clip._queue.length > 0) {
_sendChannel.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function listen():void{
_listenChannel = new LocalConnection();
_listenChannel.client = _clip;
_clip.handshake = function (_arg1:Object):void{
_slot1.comChannelName = _arg1.newChannel;
};
_listenChannel.allowDomain("*", "localhost");
_listenChannel.allowInsecureDomain("*", "localhost");
_listenChannel.connect(_listenChannelName);
trace("Waiting for MochiAds services to connect...");
}
private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
var args = _arg1;
var callbackObject = _arg2;
var callbackMethod = _arg3;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
if (((!((args.options == null))) && (!((args.options.onError == null))))){
args.options.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
try {
var _local5 = callbackObject;
_local5[callbackMethod](args);
} catch(error:Error) {
};
} else {
if (callbackMethod != null){
try {
callbackMethod.apply(args);
} catch(error:Error) {
};
};
};
};
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
_rcvChannelName = _arg1;
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var clipname:String;
var f:Function;
var req:URLRequest;
var id = _arg1;
var clip = _arg2;
clipname = ("_mochiservices_com_" + id);
if (_clip != null){
return (_clip);
};
if (!_slot1.isNetworkAvailable()){
return (null);
};
_slot1.allowDomains(_gatewayURL);
_clip = createEmptyMovieClip(clip, clipname, 10336, false);
_loader = new Loader();
_timer = new Timer(1000, 0);
_startTime = getTimer();
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
f = function (_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
_slot1.disconnect();
_slot1.onError("IOError");
};
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f);
req = new URLRequest(_gatewayURL);
_loader.load(req);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_rcvChannel = new LocalConnection();
_rcvChannel.allowDomain("*", "localhost");
_rcvChannel.allowInsecureDomain("*", "localhost");
_rcvChannel.client = _clip;
_clip._nextcallbackID = 0;
_clip._callbacks = {};
listen();
return (_clip);
}
public static function bringToTop(_arg1:Event):void{
var e = _arg1;
if (_slot1.clip != null){
if (_slot1.childClip != null){
try {
if (_slot1.clip.numChildren > 1){
_slot1.clip.setChildIndex(_slot1.childClip, (_slot1.clip.numChildren - 1));
};
} catch(errorObject:Error) {
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, _slot1.bringToTop);
};
};
};
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
if ((clip is DisplayObject)){
if (((!(_connected)) && ((_clip == null)))){
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
};
} else {
trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage.");
};
if (onError != null){
_slot1.onError = onError;
} else {
if (_slot1.onError == null){
_slot1.onError = function (_arg1:String):void{
trace(_arg1);
};
};
};
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{
var mc:MovieClip;
var parent = _arg1;
var name = _arg2;
var depth = _arg3;
var doAdd = _arg4;
mc = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
try {
parent[name] = mc;
} catch(e:Error) {
throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
mc["_name"] = name;
return (mc);
}
public static function connectWait(_arg1:TimerEvent):void{
if ((getTimer() - _startTime) > 10000){
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
_slot1.disconnect();
_slot1.onError("IOError");
};
_timer.stop();
};
}
}
}//package mochi
Section 32
//AbstractCollection (org.cove.ape.AbstractCollection)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public class AbstractCollection {
private var _sprite:Sprite;
private var _isParented:Boolean;
private var _particles:Array;
private var _constraints:Array;
public function AbstractCollection(){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractCollection"){
throw (new ArgumentError("AbstractCollection can't be instantiated directly"));
};
_isParented = false;
_particles = new Array();
_constraints = new Array();
}
public function getAll():Array{
return (particles.concat(constraints));
}
function checkCollisionsVsCollection(_arg1:AbstractCollection):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:AbstractParticle;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:AbstractParticle;
var _local10:SpringConstraint;
var _local11:SpringConstraint;
var _local12:int;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local5 = _particles[_local3];
if (!_local5.collidable){
} else {
_local6 = _arg1.particles.length;
_local7 = 0;
while (_local7 < _local6) {
_local9 = _arg1.particles[_local7];
if (_local9.collidable){
CollisionDetector.test(_local5, _local9);
};
_local7++;
};
_local8 = _arg1.constraints.length;
_local7 = 0;
while (_local7 < _local8) {
_local10 = _arg1.constraints[_local7];
if (((_local10.collidable) && (!(_local10.isConnectedTo(_local5))))){
_local10.scp.updatePosition();
CollisionDetector.test(_local5, _local10.scp);
};
_local7++;
};
};
_local3++;
};
_local4 = _constraints.length;
_local3 = 0;
while (_local3 < _local4) {
_local11 = _constraints[_local3];
if (!_local11.collidable){
} else {
_local6 = _arg1.particles.length;
_local12 = 0;
while (_local12 < _local6) {
_local9 = _arg1.particles[_local12];
if (((_local9.collidable) && (!(_local11.isConnectedTo(_local9))))){
_local11.scp.updatePosition();
CollisionDetector.test(_local9, _local11.scp);
};
_local12++;
};
};
_local3++;
};
}
public function get sprite():Sprite{
if (_sprite != null){
return (_sprite);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_sprite = new Sprite();
APEngine.container.addChild(_sprite);
return (_sprite);
}
function checkInternalCollisions():void{
var _local1:int;
var _local2:int;
var _local3:AbstractParticle;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:AbstractParticle;
var _local8:SpringConstraint;
_local1 = _particles.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _particles[_local2];
if (!_local3.collidable){
} else {
_local4 = (_local2 + 1);
while (_local4 < _local1) {
_local7 = _particles[_local4];
if (_local7.collidable){
CollisionDetector.test(_local3, _local7);
};
_local4++;
};
_local5 = _constraints.length;
_local6 = 0;
while (_local6 < _local5) {
_local8 = _constraints[_local6];
if (((_local8.collidable) && (!(_local8.isConnectedTo(_local3))))){
_local8.scp.updatePosition();
CollisionDetector.test(_local3, _local8.scp);
};
_local6++;
};
};
_local2++;
};
}
public function addParticle(_arg1:AbstractParticle):void{
particles.push(_arg1);
if (isParented){
_arg1.init();
};
}
public function removeConstraint(_arg1:AbstractConstraint):void{
var _local2:int;
_local2 = constraints.indexOf(_arg1);
if (_local2 == -1){
return;
};
constraints.splice(_local2, 1);
_arg1.cleanup();
}
function get isParented():Boolean{
return (_isParented);
}
public function init():void{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
particles[_local1].init();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].init();
_local1++;
};
}
function satisfyConstraints():void{
var _local1:int;
var _local2:int;
var _local3:AbstractConstraint;
_local1 = _constraints.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _constraints[_local2];
_local3.resolve();
_local2++;
};
}
public function paint():void{
var _local1:AbstractParticle;
var _local2:int;
var _local3:int;
var _local4:SpringConstraint;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local1 = _particles[_local3];
if (((!(_local1.fixed)) || (_local1.alwaysRepaint))){
_local1.paint();
};
_local3++;
};
_local2 = _constraints.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _constraints[_local3];
if (((!(_local4.fixed)) || (_local4.alwaysRepaint))){
_local4.paint();
};
_local3++;
};
}
public function addConstraint(_arg1:AbstractConstraint):void{
constraints.push(_arg1);
if (isParented){
_arg1.init();
};
}
function set isParented(_arg1:Boolean):void{
_isParented = _arg1;
}
public function removeParticle(_arg1:AbstractParticle):void{
var _local2:int;
_local2 = particles.indexOf(_arg1);
if (_local2 == -1){
return;
};
particles.splice(_local2, 1);
_arg1.cleanup();
}
public function cleanup():void{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
particles[_local1].cleanup();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].cleanup();
_local1++;
};
}
public function get particles():Array{
return (_particles);
}
function integrate(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:AbstractParticle;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _particles[_local3];
_local4.update(_arg1);
_local3++;
};
}
public function get constraints():Array{
return (_constraints);
}
}
}//package org.cove.ape
Section 33
//AbstractConstraint (org.cove.ape.AbstractConstraint)
package org.cove.ape {
import flash.utils.*;
public class AbstractConstraint extends AbstractItem {
private var _stiffness:Number;
public function AbstractConstraint(_arg1:Number){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractConstraint"){
throw (new ArgumentError("AbstractConstraint can't be instantiated directly"));
};
this.stiffness = _arg1;
setStyle();
}
public function get stiffness():Number{
return (_stiffness);
}
public function set stiffness(_arg1:Number):void{
_stiffness = _arg1;
}
function resolve():void{
}
}
}//package org.cove.ape
Section 34
//AbstractItem (org.cove.ape.AbstractItem)
package org.cove.ape {
import flash.display.*;
public class AbstractItem {
var lineAlpha:Number;
var lineColor:uint;
var displayObjectOffset:Vector;
var lineThickness:Number;
var displayObject:DisplayObject;
var fillAlpha:Number;
private var _sprite:Sprite;
var fillColor:uint;
private var _visible:Boolean;
private var _alwaysRepaint:Boolean;
var displayObjectRotation:Number;
public function AbstractItem(){
_visible = true;
_alwaysRepaint = false;
}
public function setLine(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1):void{
lineThickness = _arg1;
lineColor = _arg2;
lineAlpha = _arg3;
}
public function set visible(_arg1:Boolean):void{
_visible = _arg1;
sprite.visible = _arg1;
}
public function setFill(_arg1:uint=0xFFFFFF, _arg2:Number=1):void{
fillColor = _arg1;
fillAlpha = _arg2;
}
public function init():void{
}
public function get sprite():Sprite{
if (_sprite != null){
return (_sprite);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_sprite = new Sprite();
APEngine.container.addChild(_sprite);
return (_sprite);
}
public function paint():void{
}
public function cleanup():void{
var _local1:int;
sprite.graphics.clear();
_local1 = 0;
while (_local1 < sprite.numChildren) {
sprite.removeChildAt(_local1);
_local1++;
};
}
public function setStyle(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1, _arg4:uint=0xFFFFFF, _arg5:Number=1):void{
setLine(_arg1, _arg2, _arg3);
setFill(_arg4, _arg5);
}
public function get visible():Boolean{
return (_visible);
}
final public function set alwaysRepaint(_arg1:Boolean):void{
_alwaysRepaint = _arg1;
}
final public function get alwaysRepaint():Boolean{
return (_alwaysRepaint);
}
}
}//package org.cove.ape
Section 35
//AbstractParticle (org.cove.ape.AbstractParticle)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public class AbstractParticle extends AbstractItem {
private var _collidable:Boolean;
private var _multisample:int;
private var collision:Collision;
var prev:Vector;
private var _kfr:Number;
var curr:Vector;
private var _invMass:Number;
var interval:Interval;
private var _mass:Number;
private var temp:Vector;
private var _friction:Number;
private var forces:Vector;
var samp:Vector;
private var _center:Vector;
private var _fixed:Boolean;
public function AbstractParticle(_arg1:Number, _arg2:Number, _arg3:Boolean, _arg4:Number, _arg5:Number, _arg6:Number){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractParticle"){
throw (new ArgumentError("AbstractParticle can't be instantiated directly"));
};
interval = new Interval(0, 0);
curr = new Vector(_arg1, _arg2);
prev = new Vector(_arg1, _arg2);
samp = new Vector();
temp = new Vector();
fixed = _arg3;
forces = new Vector();
collision = new Collision(new Vector(), new Vector());
collidable = true;
this.mass = _arg4;
this.elasticity = _arg5;
this.friction = _arg6;
setStyle();
_center = new Vector();
_multisample = 0;
}
public function set friction(_arg1:Number):void{
if ((((_arg1 < 0)) || ((_arg1 > 1)))){
throw (new ArgumentError("Legal friction must be >= 0 and <=1"));
};
_friction = _arg1;
}
public function get px():Number{
return (curr.x);
}
public function get py():Number{
return (curr.y);
}
public function set py(_arg1:Number):void{
curr.y = _arg1;
prev.y = _arg1;
}
function getComponents(_arg1:Vector):Collision{
var _local2:Vector;
var _local3:Number;
_local2 = velocity;
_local3 = _arg1.dot(_local2);
collision.vn = _arg1.mult(_local3);
collision.vt = _local2.minus(collision.vn);
return (collision);
}
public function set mass(_arg1:Number):void{
if (_arg1 <= 0){
throw (new ArgumentError("mass may not be set <= 0"));
};
_mass = _arg1;
_invMass = (1 / _mass);
}
public function get fixed():Boolean{
return (_fixed);
}
public function set px(_arg1:Number):void{
curr.x = _arg1;
prev.x = _arg1;
}
function initDisplay():void{
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
sprite.addChild(displayObject);
}
function get invMass():Number{
return ((fixed) ? 0 : _invMass);
}
public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
displayObject = _arg1;
displayObjectRotation = _arg4;
displayObjectOffset = new Vector(_arg2, _arg3);
}
public function get position():Vector{
return (new Vector(curr.x, curr.y));
}
public function get multisample():int{
return (_multisample);
}
function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
curr.plusEquals(_arg1);
velocity = _arg2;
}
public function set fixed(_arg1:Boolean):void{
_fixed = _arg1;
}
public function addMasslessForce(_arg1:Vector):void{
forces.plusEquals(_arg1);
}
public function set velocity(_arg1:Vector):void{
prev = curr.minus(_arg1);
}
public function set multisample(_arg1:int):void{
_multisample = _arg1;
}
public function get elasticity():Number{
return (_kfr);
}
public function set position(_arg1:Vector):void{
curr.copy(_arg1);
prev.copy(_arg1);
}
public function get center():Vector{
_center.setTo(px, py);
return (_center);
}
public function update(_arg1:Number):void{
var _local2:Vector;
if (fixed){
return;
};
addForce(APEngine.force);
addMasslessForce(APEngine.masslessForce);
temp.copy(curr);
_local2 = velocity.plus(forces.multEquals(_arg1));
curr.plusEquals(_local2.multEquals(APEngine.damping));
prev.copy(temp);
forces.setTo(0, 0);
}
public function set collidable(_arg1:Boolean):void{
_collidable = _arg1;
}
public function get velocity():Vector{
return (curr.minus(prev));
}
public function get collidable():Boolean{
return (_collidable);
}
public function addForce(_arg1:Vector):void{
forces.plusEquals(_arg1.mult(invMass));
}
public function set elasticity(_arg1:Number):void{
_kfr = _arg1;
}
public function get friction():Number{
return (_friction);
}
public function get mass():Number{
return (_mass);
}
}
}//package org.cove.ape
Section 36
//APEngine (org.cove.ape.APEngine)
package org.cove.ape {
import flash.display.*;
public final class APEngine {
private static var _container:DisplayObjectContainer;
private static var _damping:Number;
private static var _constraintCollisionCycles:int;
private static var groups:Array;
static var masslessForce:Vector;
private static var _constraintCycles:int;
static var force:Vector;
private static var timeStep:Number;
private static var numGroups:int;
public static function get container():DisplayObjectContainer{
return (_container);
}
public static function get constraintCollisionCycles():int{
return (_constraintCollisionCycles);
}
public static function set damping(_arg1:Number):void{
_damping = _arg1;
}
public static function step():void{
var _local1:int;
var _local2:int;
integrate();
_local1 = 0;
while (_local1 < _constraintCycles) {
satisfyConstraints();
_local1++;
};
_local2 = 0;
while (_local2 < _constraintCollisionCycles) {
satisfyConstraints();
checkCollisions();
_local2++;
};
}
public static function init(_arg1:Number=0.25):void{
timeStep = (_arg1 * _arg1);
numGroups = 0;
groups = new Array();
force = new Vector(0, 0);
masslessForce = new Vector(0, 0);
damping = 1;
_constraintCycles = 0;
_constraintCollisionCycles = 1;
}
public static function get constraintCycles():int{
return (_constraintCycles);
}
public static function set constraintCollisionCycles(_arg1:int):void{
_constraintCollisionCycles = _arg1;
}
public static function set constraintCycles(_arg1:int):void{
_constraintCycles = _arg1;
}
public static function addForce(_arg1:Vector):void{
force.plusEquals(_arg1);
}
public static function get damping():Number{
return (_damping);
}
public static function set container(_arg1:DisplayObjectContainer):void{
_container = _arg1;
}
public static function addGroup(_arg1:Group):void{
groups.push(_arg1);
_arg1.isParented = true;
numGroups++;
_arg1.init();
}
public static function removeGroup(_arg1:Group):void{
var _local2:int;
_local2 = groups.indexOf(_arg1);
if (_local2 == -1){
return;
};
groups.splice(_local2, 1);
_arg1.isParented = false;
numGroups--;
_arg1.cleanup();
}
public static function paint():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.paint();
_local1++;
};
}
private static function checkCollisions():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.checkCollisions();
_local1++;
};
}
private static function integrate():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.integrate(timeStep);
_local1++;
};
}
private static function satisfyConstraints():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.satisfyConstraints();
_local1++;
};
}
public static function addMasslessForce(_arg1:Vector):void{
masslessForce.plusEquals(_arg1);
}
}
}//package org.cove.ape
Section 37
//CircleParticle (org.cove.ape.CircleParticle)
package org.cove.ape {
public class CircleParticle extends AbstractParticle {
private var _radius:Number;
public function CircleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=0.3, _arg7:Number=0){
super(_arg1, _arg2, _arg4, _arg5, _arg6, _arg7);
_radius = _arg3;
}
function getIntervalX():Interval{
interval.min = (curr.x - _radius);
interval.max = (curr.x + _radius);
return (interval);
}
function getIntervalY():Interval{
interval.min = (curr.y - _radius);
interval.max = (curr.y + _radius);
return (interval);
}
override public function init():void{
cleanup();
if (displayObject != null){
initDisplay();
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginFill(fillColor, fillAlpha);
sprite.graphics.drawCircle(0, 0, radius);
sprite.graphics.endFill();
};
paint();
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
}
public function get radius():Number{
return (_radius);
}
function getProjection(_arg1:Vector):Interval{
var _local2:Number;
_local2 = samp.dot(_arg1);
interval.min = (_local2 - _radius);
interval.max = (_local2 + _radius);
return (interval);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
}
}
}//package org.cove.ape
Section 38
//Collision (org.cove.ape.Collision)
package org.cove.ape {
import org.cove.ape.*;
final class Collision {
var vn:Vector;
var vt:Vector;
function Collision(_arg1:Vector, _arg2:Vector){
this.vn = _arg1;
this.vt = _arg2;
}
}
}//package org.cove.ape
Section 39
//CollisionDetector (org.cove.ape.CollisionDetector)
package org.cove.ape {
import org.cove.ape.*;
final class CollisionDetector {
private static function testOBBvsCircle(_arg1:RectangleParticle, _arg2:CircleParticle):Boolean{
var _local3:Vector;
var _local4:Number;
var _local5:Array;
var _local6:int;
var _local7:Number;
var _local8:Vector;
var _local9:Number;
var _local10:Vector;
var _local11:Number;
_local4 = Number.POSITIVE_INFINITY;
_local5 = new Array(2);
_local6 = 0;
while (_local6 < 2) {
_local8 = _arg1.axes[_local6];
_local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8));
if (_local9 == 0){
return (false);
};
if (Math.abs(_local9) < Math.abs(_local4)){
_local3 = _local8;
_local4 = _local9;
};
_local5[_local6] = _local9;
_local6++;
};
_local7 = _arg2.radius;
if ((((Math.abs(_local5[0]) < _local7)) && ((Math.abs(_local5[1]) < _local7)))){
_local10 = closestVertexOnOBB(_arg2.samp, _arg1);
_local3 = _local10.minus(_arg2.samp);
_local11 = _local3.magnitude();
_local4 = (_local7 - _local11);
if (_local4 > 0){
_local3.divEquals(_local11);
} else {
return (false);
};
};
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4);
return (true);
}
static function test(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
if (((_arg1.fixed) && (_arg2.fixed))){
return;
};
if ((((_arg1.multisample == 0)) && ((_arg2.multisample == 0)))){
normVsNorm(_arg1, _arg2);
} else {
if ((((_arg1.multisample > 0)) && ((_arg2.multisample == 0)))){
sampVsNorm(_arg1, _arg2);
} else {
if ((((_arg2.multisample > 0)) && ((_arg1.multisample == 0)))){
sampVsNorm(_arg2, _arg1);
} else {
if (_arg1.multisample == _arg2.multisample){
sampVsSamp(_arg1, _arg2);
} else {
normVsNorm(_arg1, _arg2);
};
};
};
};
}
private static function testIntervals(_arg1:Interval, _arg2:Interval):Number{
var _local3:Number;
var _local4:Number;
if (_arg1.max < _arg2.min){
return (0);
};
if (_arg2.max < _arg1.min){
return (0);
};
_local3 = (_arg2.max - _arg1.min);
_local4 = (_arg2.min - _arg1.max);
return (((Math.abs(_local3))<Math.abs(_local4)) ? _local3 : _local4);
}
private static function normVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
_arg1.samp.copy(_arg1.curr);
_arg2.samp.copy(_arg2.curr);
testTypes(_arg1, _arg2);
}
private static function testCirclevsCircle(_arg1:CircleParticle, _arg2:CircleParticle):Boolean{
var _local3:Number;
var _local4:Number;
var _local5:Vector;
var _local6:Number;
var _local7:Number;
_local3 = testIntervals(_arg1.getIntervalX(), _arg2.getIntervalX());
if (_local3 == 0){
return (false);
};
_local4 = testIntervals(_arg1.getIntervalY(), _arg2.getIntervalY());
if (_local4 == 0){
return (false);
};
_local5 = _arg1.samp.minus(_arg2.samp);
_local6 = _local5.magnitude();
_local7 = ((_arg1.radius + _arg2.radius) - _local6);
if (_local7 > 0){
_local5.divEquals(_local6);
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local5, _local7);
return (true);
};
return (false);
}
private static function testTypes(_arg1:AbstractParticle, _arg2:AbstractParticle):Boolean{
if ((((_arg1 is RectangleParticle)) && ((_arg2 is RectangleParticle)))){
return (testOBBvsOBB((_arg1 as RectangleParticle), (_arg2 as RectangleParticle)));
};
if ((((_arg1 is CircleParticle)) && ((_arg2 is CircleParticle)))){
return (testCirclevsCircle((_arg1 as CircleParticle), (_arg2 as CircleParticle)));
};
if ((((_arg1 is RectangleParticle)) && ((_arg2 is CircleParticle)))){
return (testOBBvsCircle((_arg1 as RectangleParticle), (_arg2 as CircleParticle)));
};
if ((((_arg1 is CircleParticle)) && ((_arg2 is RectangleParticle)))){
return (testOBBvsCircle((_arg2 as RectangleParticle), (_arg1 as CircleParticle)));
};
return (false);
}
private static function sampVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
var _local3:Number;
var _local4:Number;
var _local5:int;
_local3 = (1 / (_arg1.multisample + 1));
_local4 = _local3;
_arg2.samp.copy(_arg2.curr);
_local5 = 0;
while (_local5 <= _arg1.multisample) {
_arg1.samp.setTo((_arg1.prev.x + (_local4 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local4 * (_arg1.curr.y - _arg1.prev.y))));
if (testTypes(_arg1, _arg2)){
return;
};
_local4 = (_local4 + _local3);
_local5++;
};
}
private static function closestVertexOnOBB(_arg1:Vector, _arg2:RectangleParticle):Vector{
var _local3:Vector;
var _local4:Vector;
var _local5:int;
var _local6:Number;
_local3 = _arg1.minus(_arg2.samp);
_local4 = new Vector(_arg2.samp.x, _arg2.samp.y);
_local5 = 0;
while (_local5 < 2) {
_local6 = _local3.dot(_arg2.axes[_local5]);
if (_local6 >= 0){
_local6 = _arg2.extents[_local5];
} else {
if (_local6 < 0){
_local6 = -(_arg2.extents[_local5]);
};
};
_local4.plusEquals(_arg2.axes[_local5].mult(_local6));
_local5++;
};
return (_local4);
}
private static function testOBBvsOBB(_arg1:RectangleParticle, _arg2:RectangleParticle):Boolean{
var _local3:Vector;
var _local4:Number;
var _local5:int;
var _local6:Vector;
var _local7:Number;
var _local8:Vector;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Boolean;
_local4 = Number.POSITIVE_INFINITY;
_local5 = 0;
while (_local5 < 2) {
_local6 = _arg1.axes[_local5];
_local7 = testIntervals(_arg1.getProjection(_local6), _arg2.getProjection(_local6));
if (_local7 == 0){
return (false);
};
_local8 = _arg2.axes[_local5];
_local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8));
if (_local9 == 0){
return (false);
};
_local10 = Math.abs(_local7);
_local11 = Math.abs(_local9);
if ((((_local10 < Math.abs(_local4))) || ((_local11 < Math.abs(_local4))))){
_local12 = (_local10 < _local11);
_local3 = (_local12) ? _local6 : _local8;
_local4 = (_local12) ? _local7 : _local9;
};
_local5++;
};
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4);
return (true);
}
private static function sampVsSamp(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
var _local3:Number;
var _local4:Number;
var _local5:int;
_local3 = (1 / (_arg1.multisample + 1));
_local4 = _local3;
_local5 = 0;
while (_local5 <= _arg1.multisample) {
_arg1.samp.setTo((_arg1.prev.x + (_local4 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local4 * (_arg1.curr.y - _arg1.prev.y))));
_arg2.samp.setTo((_arg2.prev.x + (_local4 * (_arg2.curr.x - _arg2.prev.x))), (_arg2.prev.y + (_local4 * (_arg2.curr.y - _arg2.prev.y))));
if (testTypes(_arg1, _arg2)){
return;
};
_local4 = (_local4 + _local3);
_local5++;
};
}
}
}//package org.cove.ape
Section 40
//CollisionResolver (org.cove.ape.CollisionResolver)
package org.cove.ape {
import org.cove.ape.*;
final class CollisionResolver {
static function resolveParticleParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Vector, _arg4:Number):void{
var _local5:Vector;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Collision;
var _local10:Collision;
var _local11:Vector;
var _local12:Vector;
var _local13:Vector;
var _local14:Vector;
_arg1.curr.copy(_arg1.samp);
_arg2.curr.copy(_arg2.samp);
_local5 = _arg3.mult(_arg4);
_local6 = (_arg1.elasticity + _arg2.elasticity);
_local7 = (_arg1.invMass + _arg2.invMass);
_local8 = clamp((1 - (_arg1.friction + _arg2.friction)), 0, 1);
_local9 = _arg1.getComponents(_arg3);
_local10 = _arg2.getComponents(_arg3);
_local11 = _local10.vn.mult(((_local6 + 1) * _arg1.invMass)).plus(_local9.vn.mult((_arg2.invMass - (_local6 * _arg1.invMass)))).divEquals(_local7);
_local12 = _local9.vn.mult(((_local6 + 1) * _arg2.invMass)).plus(_local10.vn.mult((_arg1.invMass - (_local6 * _arg2.invMass)))).divEquals(_local7);
_local9.vt.multEquals(_local8);
_local10.vt.multEquals(_local8);
_local13 = _local5.mult((_arg1.invMass / _local7));
_local14 = _local5.mult((-(_arg2.invMass) / _local7));
_local11.plusEquals(_local9.vt);
_local12.plusEquals(_local10.vt);
if (!_arg1.fixed){
_arg1.resolveCollision(_local13, _local11, _arg3, _arg4, -1, _arg2);
};
if (!_arg2.fixed){
_arg2.resolveCollision(_local14, _local12, _arg3, _arg4, 1, _arg1);
};
}
static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 > _arg3){
return (_arg3);
};
if (_arg1 < _arg2){
return (_arg2);
};
return (_arg1);
}
}
}//package org.cove.ape
Section 41
//Composite (org.cove.ape.Composite)
package org.cove.ape {
public class Composite extends AbstractCollection {
private var delta:Vector;
public function Composite(){
delta = new Vector();
}
private function getRelativeAngle(_arg1:Vector, _arg2:Vector):Number{
delta.setTo((_arg2.x - _arg1.x), (_arg2.y - _arg1.y));
return (Math.atan2(delta.y, delta.x));
}
public function rotateByRadian(_arg1:Number, _arg2:Vector):void{
var _local3:AbstractParticle;
var _local4:Array;
var _local5:int;
var _local6:int;
var _local7:Number;
var _local8:Number;
_local4 = particles;
_local5 = _local4.length;
_local6 = 0;
while (_local6 < _local5) {
_local3 = _local4[_local6];
_local7 = _local3.center.distance(_arg2);
_local8 = (getRelativeAngle(_arg2, _local3.center) + _arg1);
_local3.px = ((Math.cos(_local8) * _local7) + _arg2.x);
_local3.py = ((Math.sin(_local8) * _local7) + _arg2.y);
_local6++;
};
}
public function rotateByAngle(_arg1:Number, _arg2:Vector):void{
var _local3:Number;
_local3 = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY);
rotateByRadian(_local3, _arg2);
}
public function set fixed(_arg1:Boolean):void{
var _local2:int;
_local2 = 0;
while (_local2 < particles.length) {
particles[_local2].fixed = _arg1;
_local2++;
};
}
public function get fixed():Boolean{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
if (!particles[_local1].fixed){
return (false);
};
_local1++;
};
return (true);
}
}
}//package org.cove.ape
Section 42
//Group (org.cove.ape.Group)
package org.cove.ape {
public class Group extends AbstractCollection {
private var _collideInternal:Boolean;
private var _composites:Array;
private var _collisionList:Array;
public function Group(_arg1:Boolean=false){
_composites = new Array();
_collisionList = new Array();
this.collideInternal = _arg1;
}
function checkCollisions():void{
var _local1:int;
var _local2:int;
var _local3:Group;
if (collideInternal){
checkCollisionGroupInternal();
};
_local1 = collisionList.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = collisionList[_local2];
checkCollisionVsGroup(_local3);
_local2++;
};
}
public function get composites():Array{
return (_composites);
}
override public function init():void{
var _local1:int;
super.init();
_local1 = 0;
while (_local1 < composites.length) {
composites[_local1].init();
_local1++;
};
}
public function removeCollidable(_arg1:Group):void{
var _local2:int;
_local2 = collisionList.indexOf(_arg1);
if (_local2 == -1){
return;
};
collisionList.splice(_local2, 1);
}
private function checkCollisionVsGroup(_arg1:Group):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:Composite;
var _local6:int;
var _local7:Composite;
checkCollisionsVsCollection(_arg1);
_local2 = _composites.length;
_local3 = _arg1.composites.length;
_local4 = 0;
while (_local4 < _local2) {
_local5 = _composites[_local4];
_local5.checkCollisionsVsCollection(_arg1);
_local6 = 0;
while (_local6 < _local3) {
_local7 = _arg1.composites[_local6];
_local5.checkCollisionsVsCollection(_local7);
_local6++;
};
_local4++;
};
_local6 = 0;
while (_local6 < _local3) {
_local7 = _arg1.composites[_local6];
checkCollisionsVsCollection(_local7);
_local6++;
};
}
override function satisfyConstraints():void{
var _local1:int;
var _local2:int;
var _local3:Composite;
super.satisfyConstraints();
_local1 = _composites.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.satisfyConstraints();
_local2++;
};
}
public function get collideInternal():Boolean{
return (_collideInternal);
}
public function addCollidableList(_arg1:Array):void{
var _local2:int;
var _local3:Group;
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2];
collisionList.push(_local3);
_local2++;
};
}
public function removeComposite(_arg1:Composite):void{
var _local2:int;
_local2 = composites.indexOf(_arg1);
if (_local2 == -1){
return;
};
composites.splice(_local2, 1);
_arg1.isParented = false;
_arg1.cleanup();
}
override public function cleanup():void{
var _local1:int;
super.cleanup();
_local1 = 0;
while (_local1 < composites.length) {
composites[_local1].cleanup();
_local1++;
};
}
override public function paint():void{
var _local1:int;
var _local2:int;
var _local3:Composite;
super.paint();
_local1 = _composites.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.paint();
_local2++;
};
}
public function addCollidable(_arg1:Group):void{
collisionList.push(_arg1);
}
override public function getAll():Array{
return (particles.concat(constraints).concat(composites));
}
public function get collisionList():Array{
return (_collisionList);
}
override function integrate(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:Composite;
super.integrate(_arg1);
_local2 = _composites.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _composites[_local3];
_local4.integrate(_arg1);
_local3++;
};
}
public function addComposite(_arg1:Composite):void{
composites.push(_arg1);
_arg1.isParented = true;
if (isParented){
_arg1.init();
};
}
private function checkCollisionGroupInternal():void{
var _local1:int;
var _local2:int;
var _local3:Composite;
var _local4:int;
var _local5:Composite;
checkInternalCollisions();
_local1 = _composites.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.checkCollisionsVsCollection(this);
_local4 = (_local2 + 1);
while (_local4 < _local1) {
_local5 = _composites[_local4];
_local3.checkCollisionsVsCollection(_local5);
_local4++;
};
_local2++;
};
}
public function set collideInternal(_arg1:Boolean):void{
_collideInternal = _arg1;
}
}
}//package org.cove.ape
Section 43
//Interval (org.cove.ape.Interval)
package org.cove.ape {
import org.cove.ape.*;
final class Interval {
var min:Number;
var max:Number;
function Interval(_arg1:Number, _arg2:Number){
this.min = _arg1;
this.max = _arg2;
}
function toString():String{
return (((min + " : ") + max));
}
}
}//package org.cove.ape
Section 44
//MathUtil (org.cove.ape.MathUtil)
package org.cove.ape {
import org.cove.ape.*;
final class MathUtil {
static var ONE_EIGHTY_OVER_PI:Number = (180 / Math.PI);
static var PI_OVER_ONE_EIGHTY:Number = (Math.PI / 180);
static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 < _arg2){
return (_arg2);
};
if (_arg1 > _arg3){
return (_arg3);
};
return (_arg1);
}
static function sign(_arg1:Number):int{
if (_arg1 < 0){
return (-1);
};
return (1);
}
}
}//package org.cove.ape
Section 45
//RectangleParticle (org.cove.ape.RectangleParticle)
package org.cove.ape {
public class RectangleParticle extends AbstractParticle {
private var _axes:Array;
private var _radian:Number;
private var _extents:Array;
public function RectangleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Boolean=false, _arg7:Number=1, _arg8:Number=0.3, _arg9:Number=0){
super(_arg1, _arg2, _arg6, _arg7, _arg8, _arg9);
_extents = new Array((_arg3 / 2), (_arg4 / 2));
_axes = new Array(new Vector(0, 0), new Vector(0, 0));
radian = _arg5;
}
override public function init():void{
var _local1:Number;
var _local2:Number;
cleanup();
if (displayObject != null){
initDisplay();
} else {
_local1 = (extents[0] * 2);
_local2 = (extents[1] * 2);
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginFill(fillColor, fillAlpha);
sprite.graphics.drawRect((-(_local1) / 2), (-(_local2) / 2), _local1, _local2);
sprite.graphics.endFill();
};
paint();
}
public function set width(_arg1:Number):void{
_extents[0] = (_arg1 / 2);
}
function get axes():Array{
return (_axes);
}
public function get height():Number{
return ((_extents[1] * 2));
}
function get extents():Array{
return (_extents);
}
public function set angle(_arg1:Number):void{
radian = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY);
}
private function setAxes(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
_local2 = Math.sin(_arg1);
_local3 = Math.cos(_arg1);
axes[0].x = _local3;
axes[0].y = _local2;
axes[1].x = -(_local2);
axes[1].y = _local3;
}
public function get radian():Number{
return (_radian);
}
public function get width():Number{
return ((_extents[0] * 2));
}
public function set height(_arg1:Number):void{
_extents[1] = (_arg1 / 2);
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
function getProjection(_arg1:Vector):Interval{
var _local2:Number;
var _local3:Number;
_local2 = ((extents[0] * Math.abs(_arg1.dot(axes[0]))) + (extents[1] * Math.abs(_arg1.dot(axes[1]))));
_local3 = samp.dot(_arg1);
interval.min = (_local3 - _local2);
interval.max = (_local3 + _local2);
return (interval);
}
public function set radian(_arg1:Number):void{
_radian = _arg1;
setAxes(_arg1);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
sprite.rotation = angle;
}
}
}//package org.cove.ape
Section 46
//SpringConstraint (org.cove.ape.SpringConstraint)
package org.cove.ape {
import flash.display.*;
public class SpringConstraint extends AbstractConstraint {
private var _collidable:Boolean;
private var _restLength:Number;
private var p1:AbstractParticle;
private var p2:AbstractParticle;
private var _scp:SpringConstraintParticle;
public function SpringConstraint(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Number=0.5, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=1, _arg7:Boolean=false){
super(_arg3);
this.p1 = _arg1;
this.p2 = _arg2;
checkParticlesLocation();
_restLength = currLength;
setCollidable(_arg4, _arg5, _arg6, _arg7);
}
public function set rectScale(_arg1:Number):void{
if (scp == null){
return;
};
scp.rectScale = _arg1;
}
override public function init():void{
cleanup();
if (collidable){
scp.init();
} else {
if (displayObject != null){
initDisplay();
};
};
paint();
}
function initDisplay():void{
if (collidable){
scp.initDisplay();
} else {
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
sprite.addChild(displayObject);
};
}
private function checkParticlesLocation():void{
if ((((p1.curr.x == p2.curr.x)) && ((p1.curr.y == p2.curr.y)))){
p2.curr.x = (p2.curr.x + 0.0001);
};
}
public function get radian():Number{
var _local1:Vector;
_local1 = delta;
return (Math.atan2(_local1.y, _local1.x));
}
function get scp():SpringConstraintParticle{
return (_scp);
}
public function get rectHeight():Number{
return (scp.rectHeight);
}
public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
if (collidable){
scp.setDisplay(_arg1, _arg2, _arg3, _arg4);
} else {
displayObject = _arg1;
displayObjectRotation = _arg4;
displayObjectOffset = new Vector(_arg2, _arg3);
};
}
public function set restLength(_arg1:Number):void{
if (_arg1 <= 0){
throw (new ArgumentError("restLength must be greater than 0"));
};
_restLength = _arg1;
}
public function get currLength():Number{
return (p1.curr.distance(p2.curr));
}
public function get fixedEndLimit():Number{
return (scp.fixedEndLimit);
}
public function get rectScale():Number{
return (scp.rectScale);
}
function get delta():Vector{
return (p1.curr.minus(p2.curr));
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
public function get center():Vector{
return (p1.curr.plus(p2.curr).divEquals(2));
}
public function set rectHeight(_arg1:Number):void{
if (scp == null){
return;
};
scp.rectHeight = _arg1;
}
public function get restLength():Number{
return (_restLength);
}
override public function paint():void{
var _local1:Vector;
if (collidable){
scp.paint();
} else {
if (displayObject != null){
_local1 = center;
sprite.x = _local1.x;
sprite.y = _local1.y;
sprite.rotation = angle;
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.moveTo(p1.px, p1.py);
sprite.graphics.lineTo(p2.px, p2.py);
};
};
}
public function setCollidable(_arg1:Boolean, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{
_collidable = _arg1;
_scp = null;
if (_collidable){
_scp = new SpringConstraintParticle(p1, p2, this, _arg2, _arg3, _arg4);
};
}
public function get collidable():Boolean{
return (_collidable);
}
public function isConnectedTo(_arg1:AbstractParticle):Boolean{
return ((((_arg1 == p1)) || ((_arg1 == p2))));
}
override function resolve():void{
var _local1:Number;
var _local2:Number;
var _local3:Vector;
if (((p1.fixed) && (p2.fixed))){
return;
};
_local1 = currLength;
_local2 = ((_local1 - restLength) / (_local1 * (p1.invMass + p2.invMass)));
_local3 = delta.mult((_local2 * stiffness));
p1.curr.minusEquals(_local3.mult(p1.invMass));
p2.curr.plusEquals(_local3.mult(p2.invMass));
}
public function get fixed():Boolean{
return (((p1.fixed) && (p2.fixed)));
}
public function set fixedEndLimit(_arg1:Number):void{
if (scp == null){
return;
};
scp.fixedEndLimit = _arg1;
}
}
}//package org.cove.ape
Section 47
//SpringConstraintParticle (org.cove.ape.SpringConstraintParticle)
package org.cove.ape {
import flash.display.*;
import org.cove.ape.*;
class SpringConstraintParticle extends RectangleParticle {
private var _fixedEndLimit:Number;
private var _rectScale:Number;
private var rca:Vector;
private var rcb:Vector;
private var s:Number;
private var parent:SpringConstraint;
private var scaleToLength:Boolean;
private var p1:AbstractParticle;
private var p2:AbstractParticle;
private var lambda:Vector;
private var avgVelocity:Vector;
private var _rectHeight:Number;
function SpringConstraintParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:SpringConstraint, _arg4:Number, _arg5:Number, _arg6:Boolean){
super(0, 0, 0, 0, 0, false);
this.p1 = _arg1;
this.p2 = _arg2;
lambda = new Vector(0, 0);
avgVelocity = new Vector(0, 0);
parent = _arg3;
this.rectScale = _arg5;
this.rectHeight = _arg4;
this.scaleToLength = _arg6;
fixedEndLimit = 0;
rca = new Vector();
rcb = new Vector();
}
private function setCorners(_arg1:RectangleParticle, _arg2:int):void{
var _local3:Number;
var _local4:Number;
var _local5:Array;
var _local6:Array;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
_local3 = _arg1.curr.x;
_local4 = _arg1.curr.y;
_local5 = _arg1.axes;
_local6 = _arg1.extents;
_local7 = (_local5[0].x * _local6[0]);
_local8 = (_local5[0].y * _local6[0]);
_local9 = (_local5[1].x * _local6[1]);
_local10 = (_local5[1].y * _local6[1]);
_local11 = (_local7 - _local9);
_local12 = (_local8 - _local10);
_local13 = (_local7 + _local9);
_local14 = (_local8 + _local10);
if (_arg2 == 0){
rca.x = (_local3 - _local13);
rca.y = (_local4 - _local14);
rcb.x = (_local3 + _local11);
rcb.y = (_local4 + _local12);
} else {
if (_arg2 == 1){
rca.x = (_local3 + _local11);
rca.y = (_local4 + _local12);
rcb.x = (_local3 + _local13);
rcb.y = (_local4 + _local14);
} else {
if (_arg2 == 2){
rca.x = (_local3 + _local13);
rca.y = (_local4 + _local14);
rcb.x = (_local3 - _local11);
rcb.y = (_local4 - _local12);
} else {
if (_arg2 == 3){
rca.x = (_local3 - _local11);
rca.y = (_local4 - _local12);
rcb.x = (_local3 - _local13);
rcb.y = (_local4 - _local14);
};
};
};
};
}
override public function init():void{
var _local1:Sprite;
var _local2:Number;
var _local3:Number;
if (displayObject != null){
initDisplay();
} else {
_local1 = new Sprite();
parent.sprite.addChild(_local1);
_local1.name = "inner";
_local2 = (parent.currLength * rectScale);
_local3 = rectHeight;
_local1.graphics.clear();
_local1.graphics.lineStyle(parent.lineThickness, parent.lineColor, parent.lineAlpha);
_local1.graphics.beginFill(parent.fillColor, parent.fillAlpha);
_local1.graphics.drawRect((-(_local2) / 2), (-(_local3) / 2), _local2, _local3);
_local1.graphics.endFill();
};
paint();
}
function updatePosition():void{
var _local1:Vector;
_local1 = parent.center;
curr.setTo(_local1.x, _local1.y);
width = (scaleToLength) ? (parent.currLength * rectScale) : (parent.restLength * rectScale);
height = rectHeight;
radian = parent.radian;
}
private function closestPtSegmentSegment():Number{
var _local1:Vector;
var _local2:Vector;
var _local3:Vector;
var _local4:Vector;
var _local5:Vector;
var _local6:Vector;
var _local7:Vector;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Vector;
var _local16:Vector;
var _local17:Vector;
_local1 = p1.curr;
_local2 = p2.curr;
_local3 = rca;
_local4 = rcb;
_local5 = _local2.minus(_local1);
_local6 = _local4.minus(_local3);
_local7 = _local1.minus(_local3);
_local9 = _local5.dot(_local5);
_local10 = _local6.dot(_local6);
_local11 = _local6.dot(_local7);
_local12 = _local5.dot(_local7);
_local13 = _local5.dot(_local6);
_local14 = ((_local9 * _local10) - (_local13 * _local13));
if (_local14 != 0){
s = MathUtil.clamp((((_local13 * _local11) - (_local12 * _local10)) / _local14), 0, 1);
} else {
s = 0.5;
};
_local8 = (((_local13 * s) + _local11) / _local10);
if (_local8 < 0){
_local8 = 0;
s = MathUtil.clamp((-(_local12) / _local9), 0, 1);
} else {
if (_local8 > 0){
_local8 = 1;
s = MathUtil.clamp(((_local13 - _local12) / _local9), 0, 1);
};
};
_local15 = _local1.plus(_local5.mult(s));
_local16 = _local3.plus(_local6.mult(_local8));
_local17 = _local15.minus(_local16);
return (_local15.minus(_local16).dot(_local17));
}
function get rectHeight():Number{
return (_rectHeight);
}
function get fixedEndLimit():Number{
return (_fixedEndLimit);
}
private function closestParamPoint(_arg1:Vector):Number{
var _local2:Vector;
var _local3:Number;
_local2 = p2.curr.minus(p1.curr);
_local3 = (_local2.dot(_arg1.minus(p1.curr)) / _local2.dot(_local2));
return (MathUtil.clamp(_local3, 0, 1));
}
function set rectHeight(_arg1:Number):void{
_rectHeight = _arg1;
}
override public function paint():void{
var _local1:Vector;
var _local2:Sprite;
_local1 = parent.center;
_local2 = parent.sprite;
if (scaleToLength){
_local2.getChildByName("inner").width = (parent.currLength * rectScale);
} else {
if (displayObject != null){
_local2.getChildByName("inner").width = (parent.restLength * rectScale);
};
};
_local2.x = _local1.x;
_local2.y = _local1.y;
_local2.rotation = parent.angle;
}
private function getContactPointParam(_arg1:AbstractParticle):Number{
var _local2:Number;
var _local3:Number;
var _local4:Array;
var _local5:Number;
var _local6:int;
var _local7:Number;
if ((_arg1 is CircleParticle)){
_local2 = closestParamPoint(_arg1.curr);
} else {
if ((_arg1 is RectangleParticle)){
_local4 = new Array(4);
_local5 = Number.POSITIVE_INFINITY;
_local6 = 0;
while (_local6 < 4) {
setCorners((_arg1 as RectangleParticle), _local6);
_local7 = closestPtSegmentSegment();
if (_local7 < _local5){
_local5 = _local7;
_local3 = _local6;
_local4[_local6] = s;
};
_local6++;
};
_local2 = _local4[_local3];
};
};
return (_local2);
}
function set fixedEndLimit(_arg1:Number):void{
_fixedEndLimit = _arg1;
}
override function get invMass():Number{
if (((p1.fixed) && (p2.fixed))){
return (0);
};
return ((1 / ((p1.mass + p2.mass) / 2)));
}
override function initDisplay():void{
var _local1:Sprite;
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
_local1 = new Sprite();
_local1.name = "inner";
_local1.addChild(displayObject);
parent.sprite.addChild(_local1);
}
function set rectScale(_arg1:Number):void{
_rectScale = _arg1;
}
override function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:AbstractParticle;
_local7 = getContactPointParam(_arg6);
_local8 = (1 - _local7);
_local9 = _local7;
if (p1.fixed){
if (_local9 <= fixedEndLimit){
return;
};
lambda.setTo((_arg1.x / _local9), (_arg1.y / _local9));
p2.curr.plusEquals(lambda);
p2.velocity = _arg2;
} else {
if (p2.fixed){
if (_local8 <= fixedEndLimit){
return;
};
lambda.setTo((_arg1.x / _local8), (_arg1.y / _local8));
p1.curr.plusEquals(lambda);
p1.velocity = _arg2;
} else {
_local10 = ((_local8 * _local8) + (_local9 * _local9));
if (_local10 == 0){
return;
};
lambda.setTo((_arg1.x / _local10), (_arg1.y / _local10));
p1.curr.plusEquals(lambda.mult(_local8));
p2.curr.plusEquals(lambda.mult(_local9));
if (_local7 == 0.5){
p1.velocity = _arg2;
p2.velocity = _arg2;
} else {
_local11 = ((_local7)<0.5) ? p1 : p2;
_local11.velocity = _arg2;
};
};
};
}
override public function get elasticity():Number{
return (((p1.elasticity + p2.elasticity) / 2));
}
function get rectScale():Number{
return (_rectScale);
}
override public function get velocity():Vector{
var _local1:Vector;
var _local2:Vector;
_local1 = p1.velocity;
_local2 = p2.velocity;
avgVelocity.setTo(((_local1.x + _local2.x) / 2), ((_local1.y + _local2.y) / 2));
return (avgVelocity);
}
override public function get friction():Number{
return (((p1.friction + p2.friction) / 2));
}
override public function get mass():Number{
return (((p1.mass + p2.mass) / 2));
}
}
}//package org.cove.ape
Section 48
//Vector (org.cove.ape.Vector)
package org.cove.ape {
public class Vector {
public var x:Number;
public var y:Number;
public function Vector(_arg1:Number=0, _arg2:Number=0){
x = _arg1;
y = _arg2;
}
public function cross(_arg1:Vector):Number{
return (((x * _arg1.y) - (y * _arg1.x)));
}
public function magnitude():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function divEquals(_arg1:Number):Vector{
if (_arg1 == 0){
_arg1 = 0.0001;
};
x = (x / _arg1);
y = (y / _arg1);
return (this);
}
public function times(_arg1:Vector):Vector{
return (new Vector((x * _arg1.x), (y * _arg1.y)));
}
public function plusEquals(_arg1:Vector):Vector{
x = (x + _arg1.x);
y = (y + _arg1.y);
return (this);
}
public function dot(_arg1:Vector):Number{
return (((x * _arg1.x) + (y * _arg1.y)));
}
public function toString():String{
return (((x + " : ") + y));
}
public function normalize():Vector{
var _local1:Number;
_local1 = magnitude();
if (_local1 == 0){
_local1 = 0.0001;
};
return (mult((1 / _local1)));
}
public function copy(_arg1:Vector):void{
x = _arg1.x;
y = _arg1.y;
}
public function minusEquals(_arg1:Vector):Vector{
x = (x - _arg1.x);
y = (y - _arg1.y);
return (this);
}
public function minus(_arg1:Vector):Vector{
return (new Vector((x - _arg1.x), (y - _arg1.y)));
}
public function plus(_arg1:Vector):Vector{
return (new Vector((x + _arg1.x), (y + _arg1.y)));
}
public function distance(_arg1:Vector):Number{
var _local2:Vector;
_local2 = this.minus(_arg1);
return (_local2.magnitude());
}
public function setTo(_arg1:Number, _arg2:Number):void{
x = _arg1;
y = _arg2;
}
public function multEquals(_arg1:Number):Vector{
x = (x * _arg1);
y = (y * _arg1);
return (this);
}
public function mult(_arg1:Number):Vector{
return (new Vector((x * _arg1), (y * _arg1)));
}
}
}//package org.cove.ape
Section 49
//back (back)
package {
import flash.media.*;
public dynamic class back extends Sound {
}
}//package
Section 50
//Bonus (Bonus)
package {
import gs.*;
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import fl.motion.easing.*;
import flash.utils.*;
import flash.text.*;
public class Bonus extends MovieClip {
public var timer:Number;// = 0
private var txtTime:TextField;
public var timer_txt:TextField;
private var t:Timer;
public var type:String;
public var m_txt:TextField;
public function Bonus(_arg1:String){
timer = 0;
super();
txtTime = this["timer_txt"];
txtTime.text = "";
this.type = _arg1;
gotoAndStop(_arg1);
Game.game.addEventListener("game_pause", onGamePause);
Game.game.addEventListener("game_continue", onGameContinue);
}
private function onGamePause(_arg1:Event):void{
t.stop();
}
public function init(_arg1:Number=0):void{
if (timer > 0){
x = 20;
} else {
this.filters = [new BlurFilter(30, 0, 3)];
TweenLite.to(this, 0.3, {x:20, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(this, 0.3, {type:"Blur", blurX:0, alpha:1, overwrite:false});
};
timer = (timer + _arg1);
if (timer > 99){
timer = 99;
};
txtTime.text = timer.toString();
if (t){
t.stop();
};
t = new Timer(1000, timer);
t.addEventListener(TimerEvent.TIMER, onTimer);
t.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);
t.start();
}
private function removeClip():void{
try {
parent.removeChild(this);
} catch(e:Error) {
trace("no clip");
};
}
private function onGameContinue(_arg1:Event):void{
t.start();
}
private function onComplete(_arg1:TimerEvent):void{
Game.game.stopBonus(this);
Game.game.removeEventListener("game_pause", onGamePause);
Game.game.removeEventListener("game_continue", onGameContinue);
}
public function setScore(_arg1:Number):void{
var _local2:TextField;
_local2 = this["m_txt"];
_local2.text = _arg1.toString();
}
public function remove():void{
TweenLite.to(this, 0.3, {x:-20, overwrite:false, onComplete:removeClip});
TweenFilterLite.from(this, 0.3, {type:"Blur", blurX:30, alpha:1, overwrite:false});
}
private function onTimer(_arg1:TimerEvent):void{
timer--;
txtTime.text = timer.toString();
}
}
}//package
Section 51
//Breakable (Breakable)
package {
import ascb.util.*;
import gs.*;
import flash.display.*;
public class Breakable extends MovieClip {
private var life:int;
private var mcBody:MovieClip;
public var fence_left:MovieClip;
public var stone:MovieClip;
public var fence_right:MovieClip;
private var maxlife:int;
public var curCell:Cell;
public var bush:MovieClip;
public function Breakable(_arg1:String){
var _local2:Array;
var _local3:Number;
super();
_local2 = ["fence_left", "fence_right", "stone", "bush"];
_local3 = 0;
while (_local3 < _local2.length) {
this[_local2[_local3]].visible = false;
_local3++;
};
mcBody = this[_arg1];
mcBody.visible = true;
maxlife = (life = mcBody.totalFrames);
life++;
decreaseLife(1);
TweenLite.from(this, 1, {alpha:0, delay:(NumberUtilities.random(1, 10) / 10)});
}
public function setCell(_arg1:Number, _arg2:Number):void{
curCell = Game.game.field.fieldElements[_arg1][_arg2];
x = curCell.x;
y = curCell.y;
curCell.object = this;
}
public function decreaseLife(_arg1:Number):Number{
life = (life - _arg1);
mcBody.gotoAndStop(((maxlife - life) + 1));
return (life);
}
}
}//package
Section 52
//Bullet (Bullet)
package {
import flash.events.*;
import flash.display.*;
public class Bullet extends MovieClip {
private var sounds:SoundController;
private var speed:Number;// = 15
public var damage:Number;// = 1
public static var TYPE:String = "bullet";
public function Bullet(){
speed = 15;
damage = 1;
sounds = SoundController.getInstance();
super();
gotoAndStop(TYPE);
sounds.playSound((TYPE + "_snd"));
}
public function startMove():void{
if (TYPE == "bullet"){
damage = 1;
} else {
damage = 5;
};
addEventListener(Event.ENTER_FRAME, move);
}
public function remove():void{
removeEventListener(Event.ENTER_FRAME, move);
try {
parent.removeChild(this);
} catch(e:Error) {
};
}
private function move(_arg1:Event):void{
if (Game.PAUSE){
return;
};
y = (y - speed);
if (Game.game.allEnemys.hitTestPoint(x, y, true)){
Game.game.hitEnemy(this);
};
if (y < 0){
remove();
};
}
}
}//package
Section 53
//bullet_snd (bullet_snd)
package {
import flash.media.*;
public dynamic class bullet_snd extends Sound {
}
}//package
Section 54
//catch (catch)
package {
import flash.media.*;
public dynamic class catch extends Sound {
}
}//package
Section 55
//Cell (Cell)
package {
import flash.display.*;
import flash.text.*;
public class Cell extends MovieClip {
public var num_txt:TextField;
public var object:Object;
public var target:Object;
public var num:TextField;
public var posy:Number;
public var posx:Number;
public var depth:Number;
public function Cell(_arg1:Number, _arg2:Number){
num_txt = this["num"];
posx = _arg1;
posy = _arg2;
width = (Field.WIDTH / Field.CELL_WIDTH);
x = ((width * _arg2) + (width / 2));
height = (Field.HEIGHT / Field.CELL_HEIGHT);
y = ((height * _arg1) + (height / 2));
}
}
}//package
Section 56
//click (click)
package {
import flash.media.*;
public dynamic class click extends Sound {
}
}//package
Section 57
//CreditsMenu (CreditsMenu)
package {
import flash.display.*;
public class CreditsMenu extends MovieClip {
public var back_btn:SimpleButton;
public var btnBack:SimpleButton;
public function CreditsMenu(){
btnBack = this["back_btn"];
}
}
}//package
Section 58
//crowd (crowd)
package {
import flash.media.*;
public dynamic class crowd extends Sound {
}
}//package
Section 59
//Difficulty (Difficulty)
package {
public class Difficulty {
public var maxSpeed:Number;
public var obstacles:Number;
public var addInTroop:Number;
public var speed:Number;
public var addTroopCount:Number;
public var maxTroopCount:Number;
public var enemyCount:Number;
public var maxInTroops:Number;
public var maxNextStart:Number;
public var enemyPerWave:Number;
public var obstaclesAppear:Number;
public var maxEnemyCount:Number;
}
}//package
Section 60
//Enemy (Enemy)
package {
import ascb.util.*;
import gs.*;
import flash.events.*;
import flash.display.*;
public class Enemy extends MovieClip {
public var life:Number;// = 1
public var path:Array;
public var celly:Number;
public var lineBar_mc:MovieClip;
private var yspeed:Number;
public var lineBar:MovieClip;
public var cellx:Number;
public var maxLife:Number;// = 5
public var direction:Number;
private var currentState:int;
public var curCell:Cell;
private var xspeed:Number;
private var directiony:Number;// = 1
private var endX:Number;
private var endY:Number;
public static var speed:Number = 3;
public function Enemy(){
path = [];
maxLife = 5;
life = 1;
directiony = 1;
super();
addFrameScript(21, frame22, 43, frame44, 49, frame50, 55, frame56, 90, frame91);
lineBar = this["lineBar_mc"];
x = Game.RIGHT;
y = 0;
direction = 1;
Game.game.addEventListener("game_pause", onGamePause);
Game.game.addEventListener("game_continue", onGameContinue);
}
public function destroy():void{
removeEventListener(Event.ENTER_FRAME, move);
gotoAndPlay("wait");
curCell.object = null;
TweenLite.to(this, 0.5, {alpha:0, delay:((NumberUtilities.random(1, 20) / 10) + 3), onComplete:removeClip});
}
private function removeClip():void{
Game.game.removeEventListener("game_pause", onGamePause);
Game.game.removeEventListener("game_continue", onGameContinue);
try {
parent.removeChild(this);
} catch(e:Error) {
trace("no enemy clip");
};
if (Game.game.getEnemyCount() <= 0){
Game.game.onLoseLife();
};
}
private function onGamePause(_arg1:Event):void{
currentState = currentFrame;
gotoAndPlay("wait");
}
private function onGameContinue(_arg1:Event):void{
gotoAndPlay(currentState);
}
function frame91(){
gotoAndPlay("wait");
}
private function rotate():void{
direction = (direction * -1);
if (directiony > 0){
if (direction > 0){
gotoAndPlay("turnleft");
} else {
gotoAndPlay("turnright");
};
} else {
if (direction < 0){
gotoAndPlay("turnbackleft");
} else {
gotoAndPlay("turnbackright");
};
};
}
public function startMove():void{
if (celly == 10){
direction = -1;
curCell = new Cell(cellx, celly);
gotoAndPlay("walkleft");
} else {
gotoAndPlay("walkright");
curCell = Game.game.field.fieldElements[cellx][celly];
};
x = curCell.x;
y = curCell.y;
findNextCell();
addEventListener(Event.ENTER_FRAME, move);
}
function frame22(){
gotoAndPlay("walkleft");
}
public function remove():void{
removeEventListener(Event.ENTER_FRAME, move);
Game.game.removeEventListener("game_pause", onGamePause);
Game.game.removeEventListener("game_continue", onGameContinue);
}
public function decreaseLife(_arg1:Number):Number{
life = (life - _arg1);
lineBar.scaleX = (life / maxLife);
return (life);
}
function frame44(){
gotoAndPlay("walkright");
}
private function findNextCell():void{
var nextCell:Cell;
var alpha:Number;
try {
nextCell = Game.game.field.fieldElements[curCell.posx][(curCell.posy + direction)];
if (((((!(nextCell)) || (((curCell.posy + direction) < 0)))) || (((curCell.posy + direction) > (Field.CELL_WIDTH - 1))))){
if ((curCell.posx + directiony) >= Field.CELL_HEIGHT){
directiony = -1;
};
if ((curCell.posx + directiony) <= (Field.CELL_HEIGHT - 6)){
directiony = 1;
};
rotate();
nextCell = Game.game.field.fieldElements[(curCell.posx + directiony)][curCell.posy];
} else {
if (nextCell.object != null){
if ((((nextCell.object is Enemy)) && (!((Enemy(nextCell.object).direction == direction))))){
nextCell = Game.game.field.fieldElements[(curCell.posx + directiony)][curCell.posy];
rotate();
} else {
if (!(nextCell.object is Enemy)){
rotate();
nextCell = Game.game.field.fieldElements[(curCell.posx + directiony)][curCell.posy];
};
};
};
};
endX = nextCell.x;
endY = nextCell.y;
alpha = Math.atan2((endX - x), (endY - y));
xspeed = (speed * Math.sin(alpha));
yspeed = (speed * Math.cos(alpha));
if ((curCell.object is Enemy)){
curCell.object = null;
};
curCell = nextCell;
curCell.object = this;
} catch(e:Error) {
trace("incorrect cell!");
};
}
private function move(_arg1:Event):void{
var _local2:Number;
if (Game.PAUSE){
return;
};
_local2 = MathUtilites.getDistance(x, y, endX, endY);
x = (x + xspeed);
y = (y + yspeed);
if (_local2 < speed){
x = endX;
y = endY;
findNextCell();
};
}
function frame56(){
gotoAndPlay("walkright");
}
function frame50(){
gotoAndPlay("walkleft");
}
}
}//package
Section 61
//Explosion (Explosion)
package {
import flash.events.*;
import flash.display.*;
public class Explosion extends MovieClip {
public var cell:Cell;
public function Explosion(){
addEventListener(Event.ENTER_FRAME, listener);
scaleX = (scaleY = 0.5);
}
public function clearListener():void{
removeEventListener(Event.ENTER_FRAME, listener);
addEventListener(Event.ENTER_FRAME, listenerRip);
}
private function listener(_arg1:Event):void{
if (currentFrame == totalFrames){
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, listener);
Game.game.createRip(cell);
};
}
private function listenerRip(_arg1:Event):void{
if (currentFrame == totalFrames){
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, listenerRip);
};
}
}
}//package
Section 62
//Field (Field)
package {
public class Field {
public var fieldElements:Array;
public static const CELL_HEIGHT:Number = 19;
public static const WIDTH:Number = 640;
public static const HEIGHT:Number = 450;
public static const CELL_WIDTH:Number = 10;
public function Field(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Cell;
super();
fieldElements = [];
_local1 = 0;
_local2 = 0;
while (_local2 < (CELL_HEIGHT + 1)) {
fieldElements[_local2] = [];
_local3 = -1;
while (_local3 < (CELL_WIDTH + 1)) {
_local4 = new Cell(_local2, _local3);
var _temp1 = _local1;
_local1 = (_local1 + 1);
_local4.depth = _temp1;
fieldElements[_local2][_local3] = _local4;
_local4.num_txt.text = _local4.depth.toString();
_local3++;
};
_local2++;
};
}
}
}//package
Section 63
//FlyScore (FlyScore)
package {
import gs.*;
import flash.display.*;
import flash.text.*;
public class FlyScore extends MovieClip {
public var _txt:TextField;
public function init(_arg1:Number):void{
var _local2:TextField;
_local2 = this["_txt"];
_local2.text = _arg1.toString();
TweenLite.to(this, 1, {alpha:0.5, y:(y - 20), onComplete:removeClip});
}
private function removeClip():void{
parent.removeChild(this);
}
}
}//package
Section 64
//Game (Game)
package {
import ascb.util.*;
import gs.*;
import flash.events.*;
import flash.display.*;
import org.cove.ape.*;
import flash.filters.*;
import fl.motion.easing.*;
import flash.utils.*;
import flash.text.*;
import flash.ui.*;
public class Game extends MovieClip {
private var _lives:Number;
private var txtScore:TextField;
private var bonusLives:Number;
private var troopsCount:Number;// = 0
private var mcOptions:OptionsMenu;
public var bg:MovieClip;
public var allExplosion:MovieClip;
private var txtLives:TextField;
private var mcBg:MovieClip;
public var waves:Array;
private var controlPanel:MovieClip;
private var startcell:Number;
public var allBullets:MovieClip;
private var _ecount:Number;
public var allEnemys:MovieClip;
private var nextBonus:Number;// = 1
private var btnSendScore:SimpleButton;
private var txtEnemyCount:TextField;
private var wave:Number;// = 0
public var field:Field;
private var troopsFrequency:Number;// = 5000
public var isShoot:Boolean;// = false
private var sounds:SoundController;
private var soldierInTroop:Number;// = 0
private var bonusTypes:Array;
private var mcGameOver:MovieClip;
private var bonusGroup:Group;
private var difficulty:Difficulty;
private var currentBulletInterval:Number;
public var control_mc:MovieClip;
private var btnMenu:SimpleButton;
private var nextWaveCount:Number;// = 0
private var bulletInterval:Number;// = 15
private var scoreMultiplier:Number;// = 1
public var hero:Hero;
public static const LEFT:Number = 20;
public static const RIGHT:Number = 610;
private static var GAME:Game;
public static var PAUSE:Boolean = false;
public function Game(){
hero = new Hero();
isShoot = false;
bulletInterval = 15;
bonusTypes = ["machinegun", "rocket", "score"];
scoreMultiplier = 1;
wave = 0;
waves = [];
nextWaveCount = 0;
troopsCount = 0;
soldierInTroop = 0;
troopsFrequency = 5000;
nextBonus = 1;
sounds = SoundController.getInstance();
super();
setDifficultyVariables(GameMenu.DIFFICULTY);
PAUSE = false;
GAME = this;
Bullet.TYPE = "bullet";
Mouse.hide();
field = new Field();
allEnemys = new MovieClip();
allBullets = new MovieClip();
allExplosion = new MovieClip();
mcBg = this["bg"];
controlPanel = this["control_mc"];
txtEnemyCount = controlPanel["enemy_num"];
txtScore = controlPanel["score"];
txtLives = controlPanel["lives"];
mcGameOver = controlPanel["gameover_mc"];
mcGameOver.x = 235;
mcGameOver.y = -130;
btnMenu = controlPanel["menu_btn"];
btnMenu.x = -108;
btnMenu.y = 366;
btnMenu.addEventListener(MouseEvent.CLICK, gotoMenu);
btnSendScore = controlPanel["sendscore_btn"];
btnSendScore.x = 753;
btnSendScore.y = 425;
btnSendScore.addEventListener(MouseEvent.CLICK, sendScore);
mcOptions = controlPanel["menuoptions_mc"];
mcOptions.btnBack.addEventListener(MouseEvent.CLICK, onClickBackButton);
ecount = 0;
txtScore.text = "0";
bonusLives = 0;
lives = 3;
allEnemys.y = (allBullets.y = (allExplosion.y = 20));
createFieldView();
startLevel(difficulty.enemyCount);
addChild(allEnemys);
addChild(allBullets);
addChild(allExplosion);
addChild(hero);
setChildIndex(controlPanel, (numChildren - 1));
hero.init();
currentBulletInterval = 1;
addEventListener(Event.ENTER_FRAME, gameCycle);
initEngine();
addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
stage.addEventListener(KeyboardEvent.KEY_DOWN, reportKeyDown);
}
private function removeBonus(_arg1:CircleParticle):void{
bonusGroup.removeParticle(_arg1);
_arg1.cleanup();
}
public function set lives(_arg1:Number):void{
_lives = _arg1;
txtLives.text = _arg1.toString();
}
private function gameCycle(_arg1:Event):void{
if (PAUSE){
return;
};
if (hero.active){
if ((((((getDecreasedInterval() == 0)) && (isShoot))) && (hero.active))){
currentBulletInterval = bulletInterval;
shoot();
};
APEngine.step();
APEngine.paint();
detectBonus();
zSorting();
if (allEnemys.hitTestPoint(hero.x, hero.y, true)){
hitHero();
};
};
}
function checkDomain():Boolean{
var _local1:String;
var _local2:Number;
var _local3:Number;
var _local4:String;
var _local5:Number;
var _local6:Number;
_local1 = stage.loaderInfo.url;
_local2 = (_local1.indexOf("://") + 3);
_local3 = _local1.indexOf("/", _local2);
_local4 = _local1.substring(_local2, _local3);
_local5 = (_local4.lastIndexOf(".") - 1);
_local6 = (_local4.lastIndexOf(".", _local5) + 1);
_local4 = _local4.substring(_local6, _local4.length);
return ((_local4 == "kornushin.com"));
}
public function shoot():void{
var _local1:Bullet;
_local1 = new Bullet();
_local1.x = (hero.x + 3);
_local1.y = (hero.y - 10);
allBullets.addChild(_local1);
hero.gotoAndPlay("shoot");
_local1.startMove();
}
private function hitHero():void{
var _local1:Number;
var _local2:Enemy;
var _local3:Number;
_local1 = 0;
while (_local1 < allEnemys.numChildren) {
if ((allEnemys.getChildAt(_local1) is Enemy)){
_local2 = Enemy(allEnemys.getChildAt(_local1));
if (((_local2.hitTestObject(hero)) && (hero.active))){
lives--;
hero.stopDrag();
hero.gotoAndPlay("lose");
isShoot = false;
_local2.remove();
_local2.curCell.object = null;
ecount--;
allEnemys.removeChildAt(_local1);
destroyEnemy();
sounds.playSound("crowd");
sounds.playSound("catch");
_local3 = 0;
while (_local3 < waves.length) {
Wave(waves[_local3]).stop();
_local3++;
};
return;
};
};
_local1++;
};
}
private function setDifficultyVariables(_arg1:Number):void{
difficulty = new Difficulty();
switch (_arg1){
case 1:
difficulty.enemyCount = 12;
difficulty.maxEnemyCount = 20;
difficulty.enemyPerWave = 1;
difficulty.speed = 0;
difficulty.maxSpeed = 3;
difficulty.maxNextStart = 2;
difficulty.maxTroopCount = 3;
difficulty.addTroopCount = 6;
difficulty.obstacles = 4;
difficulty.obstaclesAppear = 6;
difficulty.maxInTroops = 4;
difficulty.addInTroop = 5;
break;
case 2:
difficulty.enemyCount = 15;
difficulty.maxEnemyCount = 30;
difficulty.enemyPerWave = 2;
difficulty.speed = 0.05;
difficulty.maxSpeed = 4;
difficulty.maxNextStart = 5;
difficulty.maxTroopCount = 5;
difficulty.addTroopCount = 4;
difficulty.obstacles = 8;
difficulty.obstaclesAppear = 4;
difficulty.maxInTroops = 6;
difficulty.addInTroop = 4;
break;
case 3:
difficulty.enemyCount = 20;
difficulty.maxEnemyCount = 35;
difficulty.enemyPerWave = 2;
difficulty.speed = 0.1;
difficulty.maxSpeed = 4.5;
difficulty.maxNextStart = 8;
difficulty.maxTroopCount = 7;
difficulty.addTroopCount = 3;
difficulty.obstacles = 10;
difficulty.obstaclesAppear = 3;
difficulty.maxInTroops = 8;
difficulty.addInTroop = 3;
};
}
private function createObstacles(_arg1:Number):void{
var _local2:Breakable;
var _local3:Array;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Cell;
_local3 = field.fieldElements.concat();
_local3 = ArrayUtilities.randomize(_local3);
_local4 = 0;
while (_local4 < _arg1) {
_local5 = NumberUtilities.random(0, (field.fieldElements.length - 6));
_local6 = NumberUtilities.random(0, (field.fieldElements[_local5].length - 1));
_local7 = Cell(field.fieldElements[_local5][_local6]);
if (((((!(_local7.object)) && (!((((_local5 == 0)) && ((_local6 == 0))))))) && (!((((_local5 == 0)) && ((_local6 == 9))))))){
_local2 = new Breakable(((NumberUtilities.random(1, 10) > 5)) ? "bush" : "stone");
_local2.setCell(_local7.posx, _local7.posy);
allEnemys.addChild(_local2);
};
_local4++;
};
}
public function getEnemyCount():Number{
var _local1:Number;
var _local2:Number;
_local1 = 0;
_local2 = (allEnemys.numChildren - 1);
while (_local2 >= 0) {
if ((allEnemys.getChildAt(_local2) is Enemy)){
_local1++;
};
_local2--;
};
return (_local1);
}
private function getBonus(_arg1:String):Bonus{
var _local2:Number;
var _local3:Bonus;
_local2 = (controlPanel.numChildren - 1);
while (_local2 >= 0) {
if ((((controlPanel.getChildAt(_local2) is Bonus)) && ((Bonus(controlPanel.getChildAt(_local2)).type == _arg1)))){
return (Bonus(controlPanel.getChildAt(_local2)));
};
_local2--;
};
_local3 = new Bonus(_arg1);
controlPanel.addChild(_local3);
return (_local3);
}
private function startLevel(_arg1:int):void{
wave++;
startcell = (((wave % 2))==0) ? -1 : 10;
new Wave(0, startcell, 100, _arg1);
addWave();
Enemy.speed = (Enemy.speed + difficulty.speed);
if (Enemy.speed > difficulty.maxSpeed){
Enemy.speed = difficulty.maxSpeed;
};
nextWaveCount++;
if (nextWaveCount > difficulty.maxNextStart){
nextWaveCount = difficulty.maxNextStart;
};
}
private function addScore(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:FlyScore;
txtScore.text = (Number(txtScore.text) + _arg1).toString();
_local4 = new FlyScore();
_local4.x = _arg2;
_local4.y = _arg3;
allExplosion.addChild(_local4);
_local4.init(_arg1);
if (bonusLives != Math.floor((Number(txtScore.text) / 5000))){
lives = (lives + 1);
bonusLives = Math.floor((Number(txtScore.text) / 5000));
};
}
private function createBonus(_arg1:Number, _arg2:Number):void{
var _local3:CircleParticle;
_local3 = new CircleParticle(_arg1, _arg2, 10, false, 0.5, 1);
_local3.setDisplay(new Skull());
bonusGroup.addParticle(_local3);
_local3.addForce(new Vector(NumberUtilities.random(-20, 20), NumberUtilities.random(-10, -25)));
}
public function createRip(_arg1:Cell):void{
var _local2:Rip;
var _local3:Number;
if (!(_arg1.object is Enemy)){
return;
};
_local2 = new Rip();
_local3 = 25;
if ((_arg1.object is Enemy)){
_local3 = (_local3 * Enemy(_arg1.object).direction);
};
_local2.x = (_arg1.x - _local3);
_local2.y = _arg1.y;
_arg1.object = _local2;
_local2.curCell = _arg1;
allEnemys.addChild(_local2);
}
public function onLoseLife():void{
ecount = 0;
if (lives > 0){
createObstacles(difficulty.obstacles);
hero.init();
startLevel((((difficulty.enemyCount + (wave * difficulty.enemyPerWave)) > difficulty.maxEnemyCount)) ? difficulty.maxEnemyCount : (difficulty.enemyCount + (wave * difficulty.enemyPerWave)));
} else {
sounds.stopBackground();
sounds.playBackground("vstuplenie");
hero.visible = false;
Mouse.show();
mcGameOver.filters = [new BlurFilter(0, 50, 3), new DropShadowFilter(4, 45, 0, 1, 4, 4, 0.3)];
TweenLite.to(mcGameOver, 0.6, {y:163, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(mcGameOver, 0.6, {type:"Blur", blurY:0, ease:Back.easeOut, overwrite:false});
btnMenu.filters = [new BlurFilter(50, 0, 3), new DropShadowFilter(4, 45, 0, 1, 4, 4, 0.3)];
TweenLite.to(btnMenu, 0.6, {x:333, delay:1, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(btnMenu, 0.6, {type:"Blur", delay:1, blurX:0, ease:Back.easeOut, overwrite:false});
btnSendScore.filters = [new BlurFilter(50, 0, 3), new DropShadowFilter(4, 45, 0, 1, 4, 4, 0.3)];
TweenLite.to(btnSendScore, 0.6, {x:333, delay:1, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(btnSendScore, 0.6, {type:"Blur", delay:1, blurX:0, ease:Back.easeOut, overwrite:false});
};
}
private function onClickBackButton(_arg1:MouseEvent):void{
PAUSE = false;
dispatchEvent(new Event("game_continue", true));
Mouse.hide();
TweenLite.to(btnMenu, 0.6, {x:770, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(btnMenu, 0.6, {type:"Blur", blurX:50, overwrite:false});
TweenLite.to(mcOptions, 0.6, {x:-140, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(mcOptions, 0.6, {type:"Blur", blurX:50, overwrite:false});
hero.init();
sounds.playSound("click");
}
private function createExplosionRip(_arg1:Number, _arg2:Number):void{
var _local3:Explosion;
_local3 = new Explosion();
_local3.x = _arg1;
_local3.y = _arg2;
_local3.clearListener();
allExplosion.addChild(_local3);
createRuins(_arg1, _arg2);
}
public function get lives():Number{
return (_lives);
}
private function createFieldView():void{
var _local1:Breakable;
_local1 = new Breakable("fence_left");
_local1.setCell(13, 0);
allEnemys.addChild(_local1);
_local1 = new Breakable("fence_right");
_local1.setCell(13, 9);
allEnemys.addChild(_local1);
}
private function createRuins(_arg1:Number, _arg2:Number):void{
var _local3:Ruins;
_local3 = new Ruins();
_local3.x = _arg1;
_local3.y = (_arg2 + 15);
mcBg.addChild(_local3);
}
private function addWave():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
if ((wave % difficulty.addTroopCount) == 0){
troopsCount++;
if (troopsCount > difficulty.maxTroopCount){
troopsCount = difficulty.maxTroopCount;
};
};
if (((((wave % difficulty.obstaclesAppear) == 0)) || ((wave == 1)))){
createObstacles(difficulty.obstacles);
_local2 = 0;
while (_local2 < (mcBg.numChildren / 2)) {
if ((mcBg.getChildAt(_local2) is Ruins)){
mcBg.removeChildAt(_local2);
};
_local2++;
};
};
if ((wave % difficulty.addInTroop) == 0){
soldierInTroop++;
if (soldierInTroop > difficulty.maxInTroops){
soldierInTroop = difficulty.maxInTroops;
};
};
_local1 = 0;
while (_local1 < troopsCount) {
_local3 = NumberUtilities.random((2 + _local1), (Field.CELL_HEIGHT - 1));
_local4 = ((NumberUtilities.random(1, 10))>5) ? -1 : 10;
_local5 = NumberUtilities.random(soldierInTroop, (soldierInTroop + 2));
_local6 = ((troopsFrequency * (_local1 + 1)) + (1000 * NumberUtilities.random(1, 5)));
new Wave(_local3, _local4, _local6, _local5);
_local1++;
};
}
private function detectBonus():void{
var _local1:Number;
var _local2:CircleParticle;
var _local3:String;
var _local4:Bonus;
_local1 = 0;
while (_local1 < bonusGroup.particles.length) {
_local2 = bonusGroup.particles[_local1];
if (_local2.sprite.hitTestPoint(hero.x, hero.y, true)){
removeBonus(_local2);
sounds.playSound("scull");
_local3 = bonusTypes[NumberUtilities.random(0, (bonusTypes.length - 1))];
_local4 = getBonus(_local3);
switch (_local4.type){
case bonusTypes[0]:
bulletInterval = 5;
_local4.y = 100;
_local4.x = -20;
_local4.init(20);
break;
case bonusTypes[1]:
_local4.x = -20;
Bullet.TYPE = _local4.type;
_local4.y = 200;
_local4.init(20);
break;
case bonusTypes[2]:
_local4.x = -20;
_local4.y = 150;
_local4.init(20);
if (scoreMultiplier < 5){
scoreMultiplier++;
};
_local4.setScore(scoreMultiplier);
break;
};
};
if (_local2.py >= 480){
removeBonus(_local2);
};
_local1++;
};
}
public function stopBonus(_arg1:Bonus):void{
getBonus(_arg1.type).remove();
switch (_arg1.type){
case bonusTypes[0]:
bulletInterval = 15;
break;
case bonusTypes[1]:
Bullet.TYPE = "bullet";
break;
case bonusTypes[2]:
scoreMultiplier = 1;
break;
};
}
private function onMouseUp(_arg1:MouseEvent):void{
_slot1.game.isShoot = false;
}
private function gotoMenu(_arg1:MouseEvent):void{
sounds.stopBackground();
LeaderBoards.instance.visible = false;
MovieClip(parent).gotoAndStop("menu");
sounds.playSound("click");
}
private function initEngine():void{
APEngine.init((1 / 4));
APEngine.addMasslessForce(new Vector(0, 4));
APEngine.container = this;
bonusGroup = new Group();
APEngine.addGroup(bonusGroup);
}
private function createExplosion(_arg1:Cell, _arg2:Number, _arg3:Number):void{
var _local4:Explosion;
_local4 = new Explosion();
_local4.x = _arg2;
_local4.y = _arg3;
_local4.cell = _arg1;
allExplosion.addChild(_local4);
}
public function set ecount(_arg1:Number):void{
_ecount = _arg1;
txtEnemyCount.text = _arg1.toString();
}
public function zSorting():void{
var _local1:Array;
var _local2:Number;
var _local3:Number;
_local1 = [];
_local2 = 0;
while (_local2 < allEnemys.numChildren) {
_local1.push({item:allEnemys.getChildAt(_local2), name:getQualifiedClassName(allEnemys.getChildAt(_local2)), z:allEnemys.getChildAt(_local2)["curCell"].depth});
_local2++;
};
_local1.sortOn(["z", "name"], Array.NUMERIC);
_local3 = 0;
while (_local3 < _local1.length) {
allEnemys.setChildIndex(_local1[_local3].item, _local3);
_local3++;
};
}
private function destroyEnemy():void{
var _local1:Number;
var _local2:Number;
bonusGroup.cleanup();
_local1 = 0;
while (_local1 < bonusGroup.particles.length) {
bonusGroup.removeParticle(bonusGroup.particles[_local2]);
_local1++;
};
_local2 = (allEnemys.numChildren - 1);
while (_local2 >= 0) {
if ((allEnemys.getChildAt(_local2) is Enemy)){
Enemy(allEnemys.getChildAt(_local2)).destroy();
};
_local2--;
};
}
private function getDecreasedInterval():Number{
if (--currentBulletInterval < 0){
currentBulletInterval = 0;
};
return (currentBulletInterval);
}
private function onMouseDown(_arg1:MouseEvent):void{
if (hero.active){
_slot1.game.isShoot = true;
};
}
public function get ecount():Number{
return (_ecount);
}
private function reportKeyDown(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.ESCAPE){
showMenu();
};
}
public function hitEnemy(_arg1:Bullet):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Enemy;
var _local6:Rip;
var _local7:Breakable;
_local2 = _arg1.damage;
_local3 = 4;
_local4 = 0;
while (_local4 < allEnemys.numChildren) {
if ((allEnemys.getChildAt(_local4) is Enemy)){
_local5 = Enemy(allEnemys.getChildAt(_local4));
if (_local5.hitTestPoint(_arg1.x, _arg1.y, true)){
_arg1.remove();
sounds.playSound(("hit" + NumberUtilities.random(3, (_local3 + 1)).toString()));
if (_local5.decreaseLife(_local2) <= 0){
allEnemys.removeChildAt(_local4);
_local5.remove();
ecount--;
if (ecount == nextWaveCount){
startLevel((((difficulty.enemyCount + (wave * difficulty.enemyPerWave)) > difficulty.maxEnemyCount)) ? difficulty.maxEnemyCount : (difficulty.enemyCount + (wave * difficulty.enemyPerWave)));
};
createExplosion(_local5.curCell, _local5.x, _local5.y);
addScore((1 * scoreMultiplier), _local5.x, _local5.y);
break;
};
};
};
if ((allEnemys.getChildAt(_local4) is Rip)){
_local6 = Rip(allEnemys.getChildAt(_local4));
if (_local6.hitTestPoint(_arg1.x, _arg1.y, true)){
_arg1.remove();
sounds.playSound(("hit" + NumberUtilities.random(1, _local3).toString()));
if (_local6.decreaseLife(_local2) <= 0){
_local6.curCell.object = null;
createExplosionRip(_local6.x, _local6.y);
allEnemys.removeChildAt(_local4);
if (--nextBonus == 0){
sounds.playSound("skullapear");
createBonus(_arg1.x, _arg1.y);
nextBonus = NumberUtilities.random((5 + Math.floor((wave / 5))), (10 + Math.floor((wave / 5))));
};
addScore((5 * scoreMultiplier), _arg1.x, _arg1.y);
break;
};
};
} else {
if ((allEnemys.getChildAt(_local4) is Breakable)){
_local7 = Breakable(allEnemys.getChildAt(_local4));
if (_local7.hitTestPoint(_arg1.x, (_arg1.y + 20), true)){
_arg1.remove();
sounds.playSound(("hit" + NumberUtilities.random(1, _local3).toString()));
if (_local7.decreaseLife(_local2) <= 0){
_local7.curCell.object = null;
createExplosionRip(_local7.x, _local7.y);
allEnemys.removeChildAt(_local4);
addScore((10 * scoreMultiplier), _local7.x, _local7.y);
break;
};
};
};
};
_local4++;
};
}
private function sendScore(_arg1:MouseEvent):void{
LeaderBoards.instance.score = Number(txtScore.text);
LeaderBoards.instance.showUserName();
sounds.playSound("click");
TweenLite.to(mcGameOver, 0.6, {y:-150, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(mcGameOver, 0.6, {type:"Blur", blurY:30, ease:Back.easeOut, overwrite:false});
TweenLite.to(btnSendScore, 0.6, {x:753, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(btnSendScore, 0.6, {type:"Blur", blurX:50, ease:Back.easeOut, overwrite:false});
}
private function showMenu():void{
Mouse.show();
btnMenu.filters = [new BlurFilter(50, 0, 3), new DropShadowFilter(4, 45, 0, 1, 4, 4, 0.3)];
TweenLite.to(btnMenu, 0.6, {x:333, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(btnMenu, 0.6, {type:"Blur", blurX:0, ease:Back.easeOut, overwrite:false});
mcOptions.filters = [new BlurFilter(50, 0, 3), new DropShadowFilter(4, 45, 0, 1, 4, 4, 0.3)];
TweenLite.to(mcOptions, 0.6, {x:333, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(mcOptions, 0.6, {type:"Blur", blurX:0, ease:Back.easeOut, overwrite:false});
PAUSE = true;
dispatchEvent(new Event("game_pause", true));
hero.stopDrag();
}
public static function get game():Game{
return (GAME);
}
}
}//package
Section 65
//GameMenu (GameMenu)
package {
import gs.*;
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import CMG_AS3.*;
import flash.net.*;
public class GameMenu extends MovieClip {
public var menuinstruction_mc:MovieClip;
public var menuhighscores_mc:MovieClip;
private var btnInstructions:SimpleButton;
private var mcCredits:CreditsMenu;
private var mcOptions:OptionsMenu;
public var moregames_btn:SimpleButton;
private var btnDificulty:SimpleButton;
private var btnInstructionsX:Number;
private var mcInstructions:MovieClip;
public var highscores_btn:SimpleButton;
private var t:Number;// = 0.3
private var mcHighscores:MovieClip;
private var btnCredits:SimpleButton;
private var btnOptions:SimpleButton;
public var instructions_btn:SimpleButton;
private var btnMoreGamesX:Number;
public var start_btn:SimpleButton;
public var credits_btn:SimpleButton;
private var sounds:SoundController;
private var btnStart:SimpleButton;
private var btnMoreGames:SimpleButton;
public var menuoptions_mc:OptionsMenu;
private var btnCreditsX:Number;
private var btnDificultyX:Number;
public var option_btn:SimpleButton;
public var menudifficulty_mc:MovieClip;
private var btnHighscoreX:Number;
private var btnStartX:Number;
private var btnHighscores:SimpleButton;
public var difficulty_btn:SimpleButton;
private var mcDifficulty:MovieClip;
public var menucredits_mc:CreditsMenu;
private var btnOptionsX:Number;
public static var DIFFICULTY:Number = 2;
private static var INSTANCE:GameMenu;
public function GameMenu(){
t = 0.3;
super();
INSTANCE = this;
sounds = SoundController.getInstance();
sounds.playBackground("vstuplenie");
btnStart = this["start_btn"];
btnStart.addEventListener(MouseEvent.CLICK, onClickStartButton);
btnHighscores = this["highscores_btn"];
btnHighscores.addEventListener(MouseEvent.CLICK, showLeaderBoards);
btnDificulty = this["difficulty_btn"];
btnDificulty.addEventListener(MouseEvent.CLICK, showDifficultMenu);
btnInstructions = this["instructions_btn"];
btnInstructions.addEventListener(MouseEvent.CLICK, showInstructios);
btnOptions = this["option_btn"];
btnOptions.addEventListener(MouseEvent.CLICK, onClickOptionsButton);
btnCredits = this["credits_btn"];
btnCredits.addEventListener(MouseEvent.CLICK, onClickCreditButton);
btnMoreGames = this["moregames_btn"];
btnMoreGames.addEventListener(MouseEvent.CLICK, onMoreGames);
mcCredits = this["menucredits_mc"];
mcCredits.alpha = 0;
mcCredits.btnBack.addEventListener(MouseEvent.CLICK, closeCredits);
mcOptions = this["menuoptions_mc"];
mcOptions.alpha = 0;
mcOptions.bg.visible = false;
mcOptions.btnBack.addEventListener(MouseEvent.CLICK, onClickBackButton);
mcDifficulty = this["menudifficulty_mc"];
mcDifficulty.alpha = 0;
mcDifficulty["back_btn"].addEventListener(MouseEvent.CLICK, closeDifficultyMenu);
mcDifficulty["deasy_btn"].addEventListener(MouseEvent.CLICK, setDifficulty);
mcDifficulty["dnormal_btn"].addEventListener(MouseEvent.CLICK, setDifficulty);
mcDifficulty["dhard_btn"].addEventListener(MouseEvent.CLICK, setDifficulty);
mcHighscores = this["menuhighscores_mc"];
mcHighscores.alpha = 0;
mcHighscores["back_btn"].addEventListener(MouseEvent.CLICK, closeHighscoresMenu);
mcHighscores["deasy_btn"].addEventListener(MouseEvent.CLICK, showScore);
mcHighscores["dnormal_btn"].addEventListener(MouseEvent.CLICK, showScore);
mcHighscores["dhard_btn"].addEventListener(MouseEvent.CLICK, showScore);
mcInstructions = this["menuinstruction_mc"];
mcInstructions.alpha = 0;
mcInstructions["back_btn"].addEventListener(MouseEvent.CLICK, closeInstructions);
btnStartX = btnStart.x;
btnOptionsX = btnOptions.x;
btnCreditsX = btnCredits.x;
btnDificultyX = btnDificulty.x;
btnHighscoreX = btnHighscores.x;
btnInstructionsX = btnInstructions.x;
btnMoreGamesX = btnMoreGames.x;
alpha = 0;
TweenLite.to(this, (t * 2), {alpha:1, overwrite:false});
TweenFilterLite.from(this, (t * 2), {type:"Blur", blurX:50, overwrite:false});
}
private function hideMainMenu():void{
btnStart.enabled = (btnOptions.enabled = (btnCredits.enabled = false));
TweenLite.to(btnStart, t, {x:125, overwrite:false, alpha:0});
TweenFilterLite.to(btnStart, t, {type:"Blur", blurX:50, overwrite:false});
TweenLite.to(btnOptions, t, {x:125, overwrite:false, alpha:0});
TweenFilterLite.to(btnOptions, t, {type:"Blur", blurX:50, overwrite:false});
TweenLite.to(btnCredits, t, {x:125, overwrite:false, alpha:0});
TweenFilterLite.to(btnCredits, t, {type:"Blur", blurX:50, overwrite:false});
TweenLite.to(btnHighscores, t, {x:125, overwrite:false, alpha:0});
TweenFilterLite.to(btnHighscores, t, {type:"Blur", blurX:50, overwrite:false});
TweenLite.to(btnDificulty, t, {x:125, overwrite:false, alpha:0});
TweenFilterLite.to(btnDificulty, t, {type:"Blur", blurX:50, overwrite:false});
TweenLite.to(btnInstructions, t, {x:125, overwrite:false, alpha:0});
TweenFilterLite.to(btnInstructions, t, {type:"Blur", blurX:50, overwrite:false});
TweenLite.to(btnMoreGames, t, {x:125, overwrite:false, alpha:0});
TweenFilterLite.to(btnMoreGames, t, {type:"Blur", blurX:50, overwrite:false});
}
private function closeHighscoresMenu(_arg1:MouseEvent):void{
showMainMenu();
TweenLite.to(mcHighscores, t, {x:752, alpha:0, overwrite:false});
TweenFilterLite.to(mcHighscores, t, {type:"Blur", blurX:50, overwrite:false});
sounds.playSound("click");
}
private function showLeaderBoards(_arg1:MouseEvent):void{
hideMainMenu();
mcHighscores.filters = [new BlurFilter(50, 0, 3)];
TweenLite.to(mcHighscores, t, {x:442, alpha:1, overwrite:false});
TweenFilterLite.to(mcHighscores, t, {type:"Blur", blurX:0, overwrite:false});
sounds.playSound("click");
}
private function onClickBackButton(_arg1:Event):void{
showMainMenu();
TweenLite.to(mcOptions, t, {x:752, alpha:0, overwrite:false});
TweenFilterLite.to(mcOptions, t, {type:"Blur", blurX:50, overwrite:false});
sounds.playSound("click");
}
private function showMainMenu():void{
btnStart.enabled = (btnOptions.enabled = (btnCredits.enabled = true));
TweenLite.to(btnStart, t, {x:btnStartX, overwrite:false, alpha:1});
TweenFilterLite.to(btnStart, t, {type:"Blur", blurX:0, overwrite:false});
TweenLite.to(btnOptions, t, {x:btnOptionsX, overwrite:false, alpha:1});
TweenFilterLite.to(btnOptions, t, {type:"Blur", blurX:0, overwrite:false});
TweenLite.to(btnCredits, t, {x:btnCreditsX, overwrite:false, alpha:1});
TweenFilterLite.to(btnCredits, t, {type:"Blur", blurX:0, overwrite:false});
TweenLite.to(btnHighscores, t, {x:btnHighscoreX, overwrite:false, alpha:1});
TweenFilterLite.to(btnHighscores, t, {type:"Blur", blurX:0, overwrite:false});
TweenLite.to(btnDificulty, t, {x:btnDificultyX, overwrite:false, alpha:1});
TweenFilterLite.to(btnDificulty, t, {type:"Blur", blurX:0, overwrite:false});
TweenLite.to(btnInstructions, t, {x:btnDificultyX, overwrite:false, alpha:1});
TweenFilterLite.to(btnInstructions, t, {type:"Blur", blurX:0, overwrite:false});
TweenLite.to(btnMoreGames, t, {x:btnMoreGamesX, overwrite:false, alpha:1});
TweenFilterLite.to(btnMoreGames, t, {type:"Blur", blurX:0, overwrite:false});
}
private function showDifficultMenu(_arg1:MouseEvent):void{
hideMainMenu();
mcDifficulty.filters = [new BlurFilter(50, 0, 3)];
TweenLite.to(mcDifficulty, t, {x:442, alpha:1, overwrite:false});
TweenFilterLite.to(mcDifficulty, t, {type:"Blur", blurX:0, overwrite:false});
mcDifficulty["slider"].y = (-97 + (25 * (DIFFICULTY - 1)));
sounds.playSound("click");
}
private function onClickOptionsButton(_arg1:MouseEvent):void{
hideMainMenu();
mcOptions.filters = [new BlurFilter(50, 0, 3)];
TweenLite.to(mcOptions, t, {x:442, alpha:1, overwrite:false});
TweenFilterLite.to(mcOptions, t, {type:"Blur", blurX:0, overwrite:false});
sounds.playSound("click");
}
private function onClickCreditButton(_arg1:MouseEvent):void{
hideMainMenu();
mcCredits.filters = [new BlurFilter(50, 0, 3)];
TweenLite.to(mcCredits, t, {x:442, alpha:1, overwrite:false});
TweenFilterLite.to(mcCredits, t, {type:"Blur", blurX:0, overwrite:false});
sounds.playSound("click");
}
private function onMoreGames(_arg1:MouseEvent):void{
var url:String;
var request:URLRequest;
var event = _arg1;
url = "http://crazymonkeygames.com";
request = new URLRequest(url);
try {
navigateToURL(request, "_blank");
} catch(e:Error) {
};
}
private function showInstructios(_arg1:MouseEvent):void{
hideMainMenu();
mcInstructions.filters = [new BlurFilter(50, 0, 3)];
TweenLite.to(mcInstructions, t, {x:442, alpha:1, overwrite:false});
TweenFilterLite.to(mcInstructions, t, {type:"Blur", blurX:0, overwrite:false});
sounds.playSound("click");
}
private function startGame():void{
MovieClip(parent).gotoAndStop("game");
}
private function closeCredits(_arg1:MouseEvent):void{
showMainMenu();
TweenLite.to(mcCredits, t, {x:752, alpha:0, overwrite:false});
TweenFilterLite.to(mcCredits, t, {type:"Blur", blurX:50, overwrite:false});
sounds.playSound("click");
}
private function onClickStartButton(_arg1:MouseEvent):void{
TweenLite.to(this, (t * 3), {alpha:0, overwrite:false});
TweenFilterLite.to(this, (t * 3), {type:"Blur", blurX:50, overwrite:false, onComplete:startGame});
sounds.playSound("click");
sounds.stopBackground();
sounds.playBackground("back");
}
private function showScore(_arg1:MouseEvent):void{
var _local2:SimpleButton;
_local2 = (_arg1.currentTarget as SimpleButton);
switch (_local2.name){
case "deasy_btn":
ScoreSubmitter.gameId = 391;
break;
case "dnormal_btn":
ScoreSubmitter.gameId = 392;
break;
case "dhard_btn":
ScoreSubmitter.gameId = 393;
break;
};
ScoreSubmitter.loadHighScorePage();
}
private function setDifficulty(_arg1:MouseEvent):void{
var _local2:SimpleButton;
_local2 = (_arg1.currentTarget as SimpleButton);
mcDifficulty["slider"].y = (_local2.y + 11);
switch (_local2.name){
case "deasy_btn":
DIFFICULTY = 1;
break;
case "dnormal_btn":
DIFFICULTY = 2;
break;
case "dhard_btn":
DIFFICULTY = 3;
break;
};
}
private function closeInstructions(_arg1:MouseEvent):void{
showMainMenu();
TweenLite.to(mcInstructions, t, {x:752, alpha:0, overwrite:false});
TweenFilterLite.to(mcInstructions, t, {type:"Blur", blurX:50, overwrite:false});
sounds.playSound("click");
}
private function closeDifficultyMenu(_arg1:Event):void{
showMainMenu();
TweenLite.to(mcDifficulty, t, {x:752, alpha:0, overwrite:false});
TweenFilterLite.to(mcDifficulty, t, {type:"Blur", blurX:50, overwrite:false});
sounds.playSound("click");
}
public static function getInstance():GameMenu{
return (INSTANCE);
}
}
}//package
Section 66
//Hero (Hero)
package {
import flash.display.*;
import flash.geom.*;
public class Hero extends MovieClip {
public var active:Boolean;
public function Hero(){
addFrameScript(0, frame1, 11, frame12, 19, frame20);
}
public function init():void{
startDrag(true, new Rectangle(15, 350, 610, 110));
gotoAndStop("stay");
}
override public function stopDrag():void{
super.stopDrag();
active = false;
}
function frame12(){
gotoAndPlay("stay");
}
function frame1(){
stop();
}
function frame20(){
gotoAndPlay("lose");
}
override public function startDrag(_arg1:Boolean=false, _arg2:Rectangle=null):void{
super.startDrag(_arg1, _arg2);
active = true;
}
}
}//package
Section 67
//hit1 (hit1)
package {
import flash.media.*;
public dynamic class hit1 extends Sound {
}
}//package
Section 68
//hit2 (hit2)
package {
import flash.media.*;
public dynamic class hit2 extends Sound {
}
}//package
Section 69
//hit3 (hit3)
package {
import flash.media.*;
public dynamic class hit3 extends Sound {
}
}//package
Section 70
//hit4 (hit4)
package {
import flash.media.*;
public dynamic class hit4 extends Sound {
}
}//package
Section 71
//hit5 (hit5)
package {
import flash.media.*;
public dynamic class hit5 extends Sound {
}
}//package
Section 72
//hit6 (hit6)
package {
import flash.media.*;
public dynamic class hit6 extends Sound {
}
}//package
Section 73
//LeaderBoards (LeaderBoards)
package {
import ascb.util.*;
import gs.*;
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import mochi.*;
import CMG_AS3.*;
import fl.motion.easing.*;
import flash.net.*;
import flash.text.*;
public class LeaderBoards extends MovieClip {
public var boardHard:String;// = "8b1df28bd86abee3"
private var btnDone:SimpleButton;
private var hsOutput:TextField;
public var boardEasy:String;// = "e7c10932e596d8be"
private var btnMonthly:SimpleButton;
private var btnDaily:SimpleButton;
private var mcTabDifficult:MovieClip;
private var btnWeekly:SimpleButton;
private var sounds:SoundController;
private var btnNormal:SimpleButton;
public var boardNormal:String;// = "06ec0ae0a0897027"
private var btnHard:SimpleButton;
private var mcBlocker:MovieClip;
private var container:MovieClip;
private var txtUserName:TextField;
public var score:Number;
private var btnSubmit:SimpleButton;
private var btnEasy:SimpleButton;
private var mcTabTime:MovieClip;
private var mcUserInput:MovieClip;
private var mcWaiting:MovieClip;
private var newScores:Object;
private var btnViewScore:SimpleButton;
private var btnAlltime:SimpleButton;
public var userinput_mc:MovieClip;
private static var _instance:LeaderBoards;
public function LeaderBoards(){
boardNormal = "06ec0ae0a0897027";
boardEasy = "e7c10932e596d8be";
boardHard = "8b1df28bd86abee3";
sounds = SoundController.getInstance();
super();
_instance = this;
visible = false;
mcUserInput = this["userinput_mc"];
btnSubmit = mcUserInput["submit_btn"];
btnSubmit.addEventListener(MouseEvent.CLICK, submitScore);
txtUserName = mcUserInput["name_txt"];
hsOutput = mcUserInput["output_txt"];
btnViewScore = mcUserInput["view_btn"];
btnViewScore.addEventListener(MouseEvent.CLICK, viewScore);
}
public function showUserName():void{
visible = true;
mcUserInput.x = 800;
hsOutput.text = "";
mcUserInput.gotoAndStop(1);
mcUserInput.filters = [new BlurFilter(50, 0, 3), new DropShadowFilter(4, 45, 0, 1, 4, 4, 0.3)];
TweenLite.to(mcUserInput, 0.6, {x:333, delay:0.5, overwrite:false, ease:Back.easeOut});
TweenFilterLite.to(mcUserInput, 0.6, {type:"Blur", delay:0.5, blurX:0, ease:Back.easeOut, overwrite:false});
}
public function changeBoard(_arg1:MouseEvent=null):void{
while (container.numChildren > 0) {
container.removeChildAt(0);
};
if (_arg1 == null){
getRequest(boardNormal);
mcTabDifficult.gotoAndStop(2);
return;
};
switch (_arg1.currentTarget){
case btnEasy:
getRequest(boardEasy);
mcTabDifficult.gotoAndStop(1);
break;
case btnNormal:
getRequest(boardNormal);
mcTabDifficult.gotoAndStop(2);
break;
case btnHard:
getRequest(boardHard);
mcTabDifficult.gotoAndStop(3);
break;
};
}
private function show(_arg1:String):void{
var _local2:TextField;
var _local3:*;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:*;
var _local8:*;
var _local9:TextClip;
var _local10:TextClip;
var _local11:NumberFormat;
var _local12:TextClip;
var _local13:Date;
var _local14:DateFormat;
var _local15:TextClip;
var _local16:Loader;
var _local17:String;
var _local18:URLRequest;
_local2 = this["currentplace_txt"];
if (newScores.places != null){
_local2.text = ((txtUserName.text + " ") + newScores.places[_arg1]);
if (Number(newScores.places[_arg1]) < 11){
_local2.text = "";
};
} else {
_local2.text = "";
};
switch (_arg1){
case "daily":
mcTabTime.gotoAndStop(1);
break;
case "weekly":
mcTabTime.gotoAndStop(2);
break;
case "monthly":
mcTabTime.gotoAndStop(3);
break;
case "alltime":
mcTabTime.gotoAndStop(4);
break;
};
for (_local3 in newScores) {
trace(((("myObject." + _local3) + " = ") + newScores[_local3]));
for (_local7 in newScores[_local3]) {
trace(((((("myObject." + _local3) + ".") + _local7) + " = ") + newScores[_local3][_local7]));
for (_local8 in newScores[_local3][_local7]) {
trace(((((((("myObject." + _local3) + ".") + _local7) + ".") + _local8) + " = ") + newScores[_local3][_local7][_local8]));
};
};
};
while (container.numChildren > 0) {
container.removeChildAt(0);
};
_local4 = 170;
_local5 = ((newScores[_arg1].length)>10) ? 10 : newScores[_arg1].length;
_local6 = 0;
while (_local6 < _local5) {
_local9 = new TextClip((_local6 + 1).toString());
container.addChild(_local9);
_local9.x = 100;
_local9.y = (_local4 + (_local6 * 20));
_local10 = new TextClip(newScores[_arg1][_local6].name);
container.addChild(_local10);
_local10.x = 150;
_local10.y = (_local4 + (_local6 * 20));
_local11 = new NumberFormat();
_local12 = new TextClip(_local11.format(Number(newScores[_arg1][_local6].score)));
container.addChild(_local12);
_local12.x = 370;
_local12.y = (_local4 + (_local6 * 20));
_local13 = new Date(Number(newScores[_arg1][_local6].timestamp));
_local14 = new DateFormat("M d Y");
_local15 = new TextClip(_local14.format(_local13));
container.addChild(_local15);
_local15.x = 440;
_local15.y = (_local4 + (_local6 * 20));
_local16 = new Loader();
_local17 = (("http://xs.mochiads.com/static/lib/flags/" + newScores[_arg1][_local6].geo) + ".swf");
_local18 = new URLRequest(_local17);
_local16.load(_local18);
container.addChild(_local16);
_local16.x = 122;
_local16.y = ((_local4 + (_local6 * 20)) + 5);
_local6++;
};
}
private function showBoard(_arg1:MouseEvent):void{
switch (_arg1.currentTarget){
case btnDaily:
show("daily");
break;
case btnWeekly:
show("weekly");
break;
case btnMonthly:
show("monthly");
break;
case btnAlltime:
show("alltime");
break;
};
}
private function onScoreResponse(_arg1:ServerResponseEvent):void{
switch (_arg1.returnCode){
case ScoreSubmitter.RETURNCODE_WORKING:
hsOutput.text = "Submitting...";
break;
case ScoreSubmitter.RETURNCODE_SUCCESS:
hsOutput.text = "Your score has been submitted!";
ScoreSubmitter.loadHighScorePage();
break;
case ScoreSubmitter.RETURNCODE_REJECTED:
hsOutput.text = "The server rejected your score!";
break;
case ScoreSubmitter.RETURNCODE_WRONGVERSION:
hsOutput.text = "This is the wrong version of the game. Check for the newest version at CrazyMonkeyGames.com";
ScoreSubmitter.loadUpdatePage();
break;
case ScoreSubmitter.RETURNCODE_NETWORKERROR:
hsOutput.text = "Your score could not reach the server at this time.";
break;
default:
hsOutput.text = ("Unknown error " + _arg1.returnCode);
break;
};
}
private function submitScore(_arg1:MouseEvent):void{
var _local2:ScoreSubmitter;
if (txtUserName.text.length > 0){
switch (GameMenu.DIFFICULTY){
case 1:
ScoreSubmitter.gameId = 391;
ScoreSubmitter.gameVersion = "1.0";
ScoreSubmitter.gameValidationCode = "lege49913861954f34694cea019f9a3be330";
break;
case 2:
ScoreSubmitter.gameId = 392;
ScoreSubmitter.gameVersion = "1.0";
ScoreSubmitter.gameValidationCode = "lege5087c35391082a9c765a9abe2db3ee46";
break;
case 3:
ScoreSubmitter.gameId = 393;
ScoreSubmitter.gameVersion = "1.0";
ScoreSubmitter.gameValidationCode = "legefe0a51d592b10f60ba7612e1bfa96fad";
break;
};
_local2 = new ScoreSubmitter();
_local2.addEventListener(ScoreSubmitter.SCORE_RESPONSE, onScoreResponse);
_local2.submitScore(txtUserName.text, Number(score));
mcUserInput.gotoAndStop(2);
};
}
public function getRequest(_arg1:String):void{
while (container.numChildren > 0) {
container.removeChildAt(0);
};
visible = true;
MochiScores.setBoardID(_arg1);
MochiScores.requestList(this.parent, "onScoresReceived");
showWaiting();
}
private function showWaiting():void{
setChildIndex(mcBlocker, (numChildren - 1));
setChildIndex(btnDone, (numChildren - 1));
mcWaiting.visible = true;
}
public function onGetPlayerInfo(_arg1:Object):void{
txtUserName.text = _arg1["name"];
}
private function onRequest(_arg1:Object):void{
hideWaiting();
this.newScores = _arg1;
show("daily");
}
private function hideWaiting():void{
setChildIndex(mcBlocker, 0);
mcWaiting.visible = false;
}
public function onSentScore(_arg1:Object):void{
hideWaiting();
this.newScores = MochiScores.scoresArrayToObjects(_arg1.scores);
show("daily");
}
private function closeBoard(_arg1:MouseEvent):void{
visible = false;
if (MovieClip(parent).currentLabel != "menu"){
sounds.stopBackground();
};
MovieClip(parent).gotoAndStop("menu");
}
private function viewScore(_arg1:MouseEvent):void{
switch (GameMenu.DIFFICULTY){
case 1:
ScoreSubmitter.gameId = 391;
break;
case 2:
ScoreSubmitter.gameId = 392;
break;
case 3:
ScoreSubmitter.gameId = 393;
break;
};
ScoreSubmitter.loadHighScorePage();
}
public static function get instance():LeaderBoards{
return (_instance);
}
}
}//package
Section 74
//OptionsMenu (OptionsMenu)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.text.*;
public class OptionsMenu extends MovieClip {
public var back_btn:SimpleButton;
private var sliderMusicVolume:MovieClip;
public var slider_music_volume:MovieClip;
private var txtMusicVolume:TextField;
private var sounds:SoundController;
public var bg:MovieClip;
public var volume_sound_txt:TextField;
public var btnBack:SimpleButton;
private var boundsMusic:Rectangle;
public var volume_music_txt:TextField;
private var btnQMedium:SimpleButton;
public var options_menu_bg:MovieClip;
private var sliderSoundVolume:MovieClip;
private var txtSoundVolume:TextField;
public var qlow_btn:SimpleButton;
private var btnQLow:SimpleButton;
public var slider_quality:MovieClip;
private var boundsSounds:Rectangle;
public var qhigh_btn:SimpleButton;
private var btnQHigh:SimpleButton;
public var qmedium_btn:SimpleButton;
private var sliderQuality:MovieClip;
public var slider_sound_volume:MovieClip;
public function OptionsMenu(){
sounds = SoundController.getInstance();
super();
btnQHigh = this["qhigh_btn"];
btnQHigh.addEventListener(MouseEvent.CLICK, onChangeQuality);
btnQLow = this["qmedium_btn"];
btnQLow.addEventListener(MouseEvent.CLICK, onChangeQuality);
btnQMedium = this["qlow_btn"];
btnQMedium.addEventListener(MouseEvent.CLICK, onChangeQuality);
btnBack = this["back_btn"];
bg = this["options_menu_bg"];
txtSoundVolume = this["volume_sound_txt"];
txtMusicVolume = this["volume_music_txt"];
sliderQuality = this["slider_quality"];
sliderQuality.y = (btnQHigh.y + 11);
sliderMusicVolume = this["slider_music_volume"];
sliderMusicVolume.buttonMode = true;
sliderMusicVolume.addEventListener(MouseEvent.MOUSE_DOWN, onPressMusicVolumeSlider);
sliderSoundVolume = this["slider_sound_volume"];
sliderSoundVolume.buttonMode = true;
sliderSoundVolume.addEventListener(MouseEvent.MOUSE_DOWN, onPressSoundVolumeSlider);
boundsSounds = new Rectangle((sliderSoundVolume.x - 100), sliderSoundVolume.y, 101, 0);
boundsMusic = new Rectangle((sliderMusicVolume.x - 100), sliderMusicVolume.y, 101, 0);
sliderSoundVolume.x = Math.floor((((sounds.volume / 100) * boundsSounds.width) + boundsSounds.x));
txtSoundVolume.text = (sounds.volume.toString() + "%");
sliderMusicVolume.x = Math.floor((((sounds.musicVolume / 100) * boundsMusic.width) + boundsMusic.x));
txtMusicVolume.text = (sounds.musicVolume.toString() + "%");
}
private function onPressSoundVolumeSlider(_arg1:MouseEvent):void{
MovieClip(parent).addEventListener(MouseEvent.MOUSE_UP, onUpSoundVolumeSlider);
sliderSoundVolume.addEventListener(MouseEvent.MOUSE_MOVE, onChangeSoundVolume);
sliderSoundVolume.startDrag(false, boundsSounds);
}
private function onChangeSoundVolume(_arg1:MouseEvent):void{
sounds.volume = Math.ceil(((Math.floor((sliderSoundVolume.x - boundsSounds.x)) / boundsSounds.width) * 100));
txtSoundVolume.text = (sounds.volume.toString() + "%");
}
private function onPressMusicVolumeSlider(_arg1:MouseEvent):void{
MovieClip(parent).addEventListener(MouseEvent.MOUSE_UP, onUpMusicVolumeSlider);
sliderMusicVolume.addEventListener(MouseEvent.MOUSE_MOVE, onChangeMusicVolume);
sliderMusicVolume.startDrag(false, boundsMusic);
}
private function onUpSoundVolumeSlider(_arg1:MouseEvent):void{
sliderSoundVolume.stopDrag();
MovieClip(parent).removeEventListener(MouseEvent.MOUSE_UP, onUpSoundVolumeSlider);
sliderSoundVolume.removeEventListener(MouseEvent.MOUSE_MOVE, onChangeSoundVolume);
}
private function onChangeQuality(_arg1:MouseEvent):void{
var _local2:SimpleButton;
_local2 = (_arg1.currentTarget as SimpleButton);
sliderQuality.y = (_local2.y + 11);
switch (_local2.name){
case btnQHigh.name:
stage.quality = StageQuality.HIGH;
break;
case btnQMedium.name:
stage.quality = StageQuality.MEDIUM;
break;
case btnQLow.name:
stage.quality = StageQuality.LOW;
break;
};
}
private function onUpMusicVolumeSlider(_arg1:MouseEvent):void{
sliderMusicVolume.stopDrag();
MovieClip(parent).removeEventListener(MouseEvent.MOUSE_UP, onUpMusicVolumeSlider);
sliderMusicVolume.removeEventListener(MouseEvent.MOUSE_MOVE, onChangeMusicVolume);
}
private function onChangeMusicVolume(_arg1:MouseEvent):void{
sounds.musicVolume = Math.ceil(((Math.floor((sliderMusicVolume.x - boundsMusic.x)) / boundsMusic.width) * 100));
txtMusicVolume.text = (sounds.musicVolume.toString() + "%");
}
}
}//package
Section 75
//Rip (Rip)
package {
import ascb.util.*;
import flash.display.*;
public class Rip extends MovieClip {
private var life:Number;
private var mcBody:MovieClip;
private var maxlife:Number;// = 4
public var curCell:Cell;
public var body1:MovieClip;
public var body2:MovieClip;
public var body3:MovieClip;
public function Rip(){
maxlife = 4;
super();
life = maxlife;
this["body1"].visible = false;
this["body2"].visible = false;
this["body3"].visible = false;
mcBody = this[("body" + NumberUtilities.random(1, 3))];
mcBody.visible = true;
mcBody.gotoAndStop(1);
}
public function decreaseLife(_arg1:Number):Number{
life = (life - _arg1);
mcBody.gotoAndStop(((maxlife - life) + 1));
return (life);
}
}
}//package
Section 76
//rocket_snd (rocket_snd)
package {
import flash.media.*;
public dynamic class rocket_snd extends Sound {
}
}//package
Section 77
//Ruins (Ruins)
package {
import flash.display.*;
public class Ruins extends MovieClip {
}
}//package
Section 78
//scull (scull)
package {
import flash.media.*;
public dynamic class scull extends Sound {
}
}//package
Section 79
//Skull (Skull)
package {
import flash.display.*;
public class Skull extends MovieClip {
public function Skull(){
scaleX = (scaleY = 0.75);
}
}
}//package
Section 80
//skullapear (skullapear)
package {
import flash.media.*;
public dynamic class skullapear extends Sound {
}
}//package
Section 81
//SoundController (SoundController)
package {
import flash.media.*;
import flash.utils.*;
public class SoundController {
public var _musicVolume:Number;// = 50
private var channelBgMisic:SoundChannel;
private var _volume:Number;// = 100
public static var __instance:SoundController;
public function SoundController(_arg1:SingletonEnforcer){
_volume = 100;
_musicVolume = 50;
super();
}
public function playBackground(_arg1:String):void{
var v:Number;
var soundClass:Class;
var soundInstance:Sound;
var transform:SoundTransform;
var soundName = _arg1;
v = musicVolume;
try {
soundClass = (getDefinitionByName(soundName) as Class);
soundInstance = new (soundClass);
channelBgMisic = soundInstance.play(0, 9999);
transform = channelBgMisic.soundTransform;
transform.volume = (v / 100);
channelBgMisic.soundTransform = transform;
} catch(e:Error) {
};
}
public function stopBackground():void{
try {
channelBgMisic.stop();
} catch(e:Error) {
};
}
public function set volume(_arg1:Number):void{
_volume = _arg1;
}
public function get volume():Number{
return (_volume);
}
public function playSound(_arg1:String):void{
var v:Number;
var soundClass:Class;
var soundInstance:Sound;
var channel:SoundChannel;
var transform:SoundTransform;
var soundName = _arg1;
v = volume;
try {
soundClass = (getDefinitionByName(soundName) as Class);
soundInstance = new (soundClass);
channel = soundInstance.play();
transform = channel.soundTransform;
transform.volume = (v / 100);
channel.soundTransform = transform;
} catch(e:Error) {
};
}
public function set musicVolume(_arg1:Number):void{
var _local2:SoundTransform;
_musicVolume = _arg1;
if (channelBgMisic){
_local2 = channelBgMisic.soundTransform;
_local2.volume = (_arg1 / 100);
channelBgMisic.soundTransform = _local2;
};
}
public function get musicVolume():Number{
return (_musicVolume);
}
public static function getInstance():SoundController{
if (__instance == null){
__instance = new SoundController(new SingletonEnforcer());
};
return (__instance);
}
}
}//package
class SingletonEnforcer {
private function SingletonEnforcer(){
}
}
Section 82
//TextClip (TextClip)
package {
import flash.display.*;
import flash.text.*;
public class TextClip extends MovieClip {
private var text:TextField;
public var txt:TextField;
public function TextClip(_arg1:String){
text = this["txt"];
text.text = _arg1;
}
}
}//package
Section 83
//Wave (Wave)
package {
import flash.events.*;
import flash.utils.*;
public class Wave {
private var startTimer:Timer;
private var needStartWave:Boolean;// = false
private var delay:Number;
private var ecount:Number;
private var startx:Number;
private var starty:Number;
private var needStartEnemy:Boolean;// = false
private var enemyTimer:Timer;
public function Wave(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
needStartWave = false;
needStartEnemy = false;
super();
startx = _arg1;
starty = _arg2;
delay = _arg3;
ecount = _arg4;
startTimer = new Timer(delay, 1);
startTimer.addEventListener(TimerEvent.TIMER, startWave);
startTimer.start();
Game.game.waves.push(this);
Game.game.addEventListener("game_pause", onGamePause);
Game.game.addEventListener("game_continue", onGameContinue);
}
public function stop():void{
try {
Game.game.removeEventListener("game_pause", onGamePause);
Game.game.removeEventListener("game_continue", onGameContinue);
enemyTimer.stop();
startTimer.stop();
startTimer = null;
enemyTimer = null;
} catch(e:Error) {
trace("broken wave");
};
}
private function createEnemys(_arg1:TimerEvent):void{
var _local2:Enemy;
if (!Game.game.hero.active){
return;
};
_local2 = new Enemy();
Game.game.allEnemys.addChildAt(_local2, 0);
_local2.cellx = startx;
_local2.celly = starty;
_local2.startMove();
}
private function onGamePause(_arg1:Event):void{
var event = _arg1;
try {
if (enemyTimer.running){
needStartEnemy = true;
};
enemyTimer.stop();
if (startTimer.running){
needStartWave = true;
};
startTimer.stop();
} catch(e:Error) {
trace("broken wave");
};
}
private function startWave(_arg1:TimerEvent):void{
if (!Game.game.hero.active){
return;
};
if (Game.game.ecount >= 50){
startTimer = new Timer(delay, 1);
startTimer.addEventListener(TimerEvent.TIMER, startWave);
startTimer.start();
return;
};
enemyTimer = new Timer(400, ecount);
enemyTimer.addEventListener(TimerEvent.TIMER, createEnemys);
Game.game.ecount = (Game.game.ecount + ecount);
enemyTimer.start();
}
private function onGameContinue(_arg1:Event):void{
var event = _arg1;
try {
if (needStartEnemy){
enemyTimer.start();
};
if (needStartWave){
startTimer.start();
};
} catch(e:Error) {
trace("broken wave");
};
}
}
}//package
Section 84
//vstuplenie (vstuplenie)
package {
import flash.media.*;
public dynamic class vstuplenie extends Sound {
}
}//package