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

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

Robo Riot.swf

This is the info page for
Flash #57273

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


Text
www.kongregate.com

ActionScript [AS3]

Section 1
//AuxFunctions (caurina.transitions.AuxFunctions) package caurina.transitions { public class AuxFunctions { public static function getObjectLength(p_object:Object):uint{ var pName:String; var totalProperties:uint; for (pName in p_object) { totalProperties++; }; return (totalProperties); } public static function numberToG(p_num:Number):Number{ return (((p_num & 0xFF00) >> 8)); } public static function numberToB(p_num:Number):Number{ return ((p_num & 0xFF)); } public static function numberToR(p_num:Number):Number{ return (((p_num & 0xFF0000) >> 16)); } public static function concatObjects(... _args):Object{ var currentObject:Object; var prop:String; var finalObject:Object = {}; var i:int; while (i < _args.length) { currentObject = _args[i]; for (prop in currentObject) { if (currentObject[prop] == null){ delete finalObject[prop]; } else { finalObject[prop] = currentObject[prop]; }; }; i++; }; return (finalObject); } } }//package caurina.transitions
Section 2
//Equations (caurina.transitions.Equations) package caurina.transitions { public class Equations { public function Equations(){ super(); trace("Equations is a static class and should not be instantiated."); } public static function easeOutBounce(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / d); if (t < (1 / 2.75)){ return (((c * ((7.5625 * t) * t)) + b)); }; if (t < (2 / 2.75)){ t = (t - (1.5 / 2.75)); return (((c * (((7.5625 * t) * t) + 0.75)) + b)); }; if (t < (2.5 / 2.75)){ t = (t - (2.25 / 2.75)); return (((c * (((7.5625 * t) * t) + 0.9375)) + b)); }; t = (t - (2.625 / 2.75)); return (((c * (((7.5625 * t) * t) + 0.984375)) + b)); } public static function easeInOutElastic(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ var s:Number; if (t == 0){ return (b); }; t = (t / (d / 2)); if (t == 2){ return ((b + c)); }; var p:Number = (((!(Boolean(p_params))) || (isNaN(p_params.period)))) ? (d * (0.3 * 1.5)) : p_params.period; var a:Number = (((!(Boolean(p_params))) || (isNaN(p_params.amplitude)))) ? 0 : p_params.amplitude; if (((!(Boolean(a))) || ((a < Math.abs(c))))){ a = c; s = (p / 4); } else { s = ((p / (2 * Math.PI)) * Math.asin((c / a))); }; if (t < 1){ --t; return (((-0.5 * ((a * Math.pow(2, (10 * t))) * Math.sin(((((t * d) - s) * (2 * Math.PI)) / p)))) + b)); }; --t; return ((((((a * Math.pow(2, (-10 * t))) * Math.sin(((((t * d) - s) * (2 * Math.PI)) / p))) * 0.5) + c) + b)); } public static function easeInOutQuad(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / (d / 2)); if (t < 1){ return (((((c / 2) * t) * t) + b)); }; --t; return ((((-(c) / 2) * ((t * (t - 2)) - 1)) + b)); } public static function easeInOutBounce(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (((easeInBounce((t * 2), 0, c, d) * 0.5) + b)); }; return ((((easeOutBounce(((t * 2) - d), 0, c, d) * 0.5) + (c * 0.5)) + b)); } public static function easeInOutBack(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ var s:Number = (((!(Boolean(p_params))) || (isNaN(p_params.overshoot)))) ? 1.70158 : p_params.overshoot; t = (t / (d / 2)); if (t < 1){ s = (s * 1.525); return ((((c / 2) * ((t * t) * (((s + 1) * t) - s))) + b)); }; t = (t - 2); s = (s * 1.525); return ((((c / 2) * (((t * t) * (((s + 1) * t) + s)) + 2)) + b)); } public static function easeOutInCubic(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutCubic((t * 2), b, (c / 2), d, p_params)); }; return (easeInCubic(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function easeNone(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ return ((((c * t) / d) + b)); } public static function easeOutBack(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ var s:Number = (((!(Boolean(p_params))) || (isNaN(p_params.overshoot)))) ? 1.70158 : p_params.overshoot; t = ((t / d) - 1); return (((c * (((t * t) * (((s + 1) * t) + s)) + 1)) + b)); } public static function easeInOutSine(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ return ((((-(c) / 2) * (Math.cos(((Math.PI * t) / d)) - 1)) + b)); } public static function easeInBack(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ var s:Number = (((!(Boolean(p_params))) || (isNaN(p_params.overshoot)))) ? 1.70158 : p_params.overshoot; t = (t / d); return (((((c * t) * t) * (((s + 1) * t) - s)) + b)); } public static function easeInQuart(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / d); return ((((((c * t) * t) * t) * t) + b)); } public static function easeOutInQuint(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutQuint((t * 2), b, (c / 2), d, p_params)); }; return (easeInQuint(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function easeOutInBounce(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutBounce((t * 2), b, (c / 2), d, p_params)); }; return (easeInBounce(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function init():void{ Tweener.registerTransition("easenone", easeNone); Tweener.registerTransition("linear", easeNone); Tweener.registerTransition("easeinquad", easeInQuad); Tweener.registerTransition("easeoutquad", easeOutQuad); Tweener.registerTransition("easeinoutquad", easeInOutQuad); Tweener.registerTransition("easeoutinquad", easeOutInQuad); Tweener.registerTransition("easeincubic", easeInCubic); Tweener.registerTransition("easeoutcubic", easeOutCubic); Tweener.registerTransition("easeinoutcubic", easeInOutCubic); Tweener.registerTransition("easeoutincubic", easeOutInCubic); Tweener.registerTransition("easeinquart", easeInQuart); Tweener.registerTransition("easeoutquart", easeOutQuart); Tweener.registerTransition("easeinoutquart", easeInOutQuart); Tweener.registerTransition("easeoutinquart", easeOutInQuart); Tweener.registerTransition("easeinquint", easeInQuint); Tweener.registerTransition("easeoutquint", easeOutQuint); Tweener.registerTransition("easeinoutquint", easeInOutQuint); Tweener.registerTransition("easeoutinquint", easeOutInQuint); Tweener.registerTransition("easeinsine", easeInSine); Tweener.registerTransition("easeoutsine", easeOutSine); Tweener.registerTransition("easeinoutsine", easeInOutSine); Tweener.registerTransition("easeoutinsine", easeOutInSine); Tweener.registerTransition("easeincirc", easeInCirc); Tweener.registerTransition("easeoutcirc", easeOutCirc); Tweener.registerTransition("easeinoutcirc", easeInOutCirc); Tweener.registerTransition("easeoutincirc", easeOutInCirc); Tweener.registerTransition("easeinexpo", easeInExpo); Tweener.registerTransition("easeoutexpo", easeOutExpo); Tweener.registerTransition("easeinoutexpo", easeInOutExpo); Tweener.registerTransition("easeoutinexpo", easeOutInExpo); Tweener.registerTransition("easeinelastic", easeInElastic); Tweener.registerTransition("easeoutelastic", easeOutElastic); Tweener.registerTransition("easeinoutelastic", easeInOutElastic); Tweener.registerTransition("easeoutinelastic", easeOutInElastic); Tweener.registerTransition("easeinback", easeInBack); Tweener.registerTransition("easeoutback", easeOutBack); Tweener.registerTransition("easeinoutback", easeInOutBack); Tweener.registerTransition("easeoutinback", easeOutInBack); Tweener.registerTransition("easeinbounce", easeInBounce); Tweener.registerTransition("easeoutbounce", easeOutBounce); Tweener.registerTransition("easeinoutbounce", easeInOutBounce); Tweener.registerTransition("easeoutinbounce", easeOutInBounce); } public static function easeOutExpo(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ return (((t)==d) ? (b + c) : (((c * 1.001) * (-(Math.pow(2, ((-10 * t) / d))) + 1)) + b)); } public static function easeOutInBack(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutBack((t * 2), b, (c / 2), d, p_params)); }; return (easeInBack(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function easeInExpo(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ return (((t)==0) ? b : (((c * Math.pow(2, (10 * ((t / d) - 1)))) + b) - (c * 0.001))); } public static function easeInCubic(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / d); return (((((c * t) * t) * t) + b)); } public static function easeInQuint(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / d); return (((((((c * t) * t) * t) * t) * t) + b)); } public static function easeInOutCirc(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / (d / 2)); if (t < 1){ return ((((-(c) / 2) * (Math.sqrt((1 - (t * t))) - 1)) + b)); }; t = (t - 2); return ((((c / 2) * (Math.sqrt((1 - (t * t))) + 1)) + b)); } public static function easeInQuad(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / d); return ((((c * t) * t) + b)); } public static function easeInBounce(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ return (((c - easeOutBounce((d - t), 0, c, d)) + b)); } public static function easeOutInExpo(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutExpo((t * 2), b, (c / 2), d, p_params)); }; return (easeInExpo(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function easeOutQuart(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = ((t / d) - 1); return (((-(c) * ((((t * t) * t) * t) - 1)) + b)); } public static function easeInSine(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ return ((((-(c) * Math.cos(((t / d) * (Math.PI / 2)))) + c) + b)); } public static function easeInOutQuart(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / (d / 2)); if (t < 1){ return (((((((c / 2) * t) * t) * t) * t) + b)); }; t = (t - 2); return ((((-(c) / 2) * ((((t * t) * t) * t) - 2)) + b)); } public static function easeOutQuad(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / d); return ((((-(c) * t) * (t - 2)) + b)); } public static function easeOutInElastic(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutElastic((t * 2), b, (c / 2), d, p_params)); }; return (easeInElastic(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function easeInElastic(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ var s:Number; if (t == 0){ return (b); }; t = (t / d); if (t == 1){ return ((b + c)); }; var p:Number = (((!(Boolean(p_params))) || (isNaN(p_params.period)))) ? (d * 0.3) : p_params.period; var a:Number = (((!(Boolean(p_params))) || (isNaN(p_params.amplitude)))) ? 0 : p_params.amplitude; if (((!(Boolean(a))) || ((a < Math.abs(c))))){ a = c; s = (p / 4); } else { s = ((p / (2 * Math.PI)) * Math.asin((c / a))); }; --t; return ((-(((a * Math.pow(2, (10 * t))) * Math.sin(((((t * d) - s) * (2 * Math.PI)) / p)))) + b)); } public static function easeOutCubic(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = ((t / d) - 1); return (((c * (((t * t) * t) + 1)) + b)); } public static function easeOutQuint(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = ((t / d) - 1); return (((c * (((((t * t) * t) * t) * t) + 1)) + b)); } public static function easeOutInQuad(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutQuad((t * 2), b, (c / 2), d, p_params)); }; return (easeInQuad(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function easeOutSine(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ return (((c * Math.sin(((t / d) * (Math.PI / 2)))) + b)); } public static function easeInOutCubic(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / (d / 2)); if (t < 1){ return ((((((c / 2) * t) * t) * t) + b)); }; t = (t - 2); return ((((c / 2) * (((t * t) * t) + 2)) + b)); } public static function easeInOutQuint(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / (d / 2)); if (t < 1){ return ((((((((c / 2) * t) * t) * t) * t) * t) + b)); }; t = (t - 2); return ((((c / 2) * (((((t * t) * t) * t) * t) + 2)) + b)); } public static function easeInCirc(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = (t / d); return (((-(c) * (Math.sqrt((1 - (t * t))) - 1)) + b)); } public static function easeOutInSine(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutSine((t * 2), b, (c / 2), d, p_params)); }; return (easeInSine(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function easeInOutExpo(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t == 0){ return (b); }; if (t == d){ return ((b + c)); }; t = (t / (d / 2)); if (t < 1){ return (((((c / 2) * Math.pow(2, (10 * (t - 1)))) + b) - (c * 0.0005))); }; --t; return (((((c / 2) * 1.0005) * (-(Math.pow(2, (-10 * t))) + 2)) + b)); } public static function easeOutElastic(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ var s:Number; if (t == 0){ return (b); }; t = (t / d); if (t == 1){ return ((b + c)); }; var p:Number = (((!(Boolean(p_params))) || (isNaN(p_params.period)))) ? (d * 0.3) : p_params.period; var a:Number = (((!(Boolean(p_params))) || (isNaN(p_params.amplitude)))) ? 0 : p_params.amplitude; if (((!(Boolean(a))) || ((a < Math.abs(c))))){ a = c; s = (p / 4); } else { s = ((p / (2 * Math.PI)) * Math.asin((c / a))); }; return (((((a * Math.pow(2, (-10 * t))) * Math.sin(((((t * d) - s) * (2 * Math.PI)) / p))) + c) + b)); } public static function easeOutCirc(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ t = ((t / d) - 1); return (((c * Math.sqrt((1 - (t * t)))) + b)); } public static function easeOutInQuart(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutQuart((t * 2), b, (c / 2), d, p_params)); }; return (easeInQuart(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } public static function easeOutInCirc(t:Number, b:Number, c:Number, d:Number, p_params:Object=null):Number{ if (t < (d / 2)){ return (easeOutCirc((t * 2), b, (c / 2), d, p_params)); }; return (easeInCirc(((t * 2) - d), (b + (c / 2)), (c / 2), d, p_params)); } } }//package caurina.transitions
Section 3
//PropertyInfoObj (caurina.transitions.PropertyInfoObj) package caurina.transitions { public class PropertyInfoObj { public var modifierParameters:Array; public var isSpecialProperty:Boolean; public var valueComplete:Number; public var modifierFunction:Function; public var extra:Object; public var valueStart:Number; public var hasModifier:Boolean; public var arrayIndex:Number; public var originalValueComplete:Object; public function PropertyInfoObj(p_valueStart:Number, p_valueComplete:Number, p_originalValueComplete:Object, p_arrayIndex:Number, p_extra:Object, p_isSpecialProperty:Boolean, p_modifierFunction:Function, p_modifierParameters:Array){ super(); valueStart = p_valueStart; valueComplete = p_valueComplete; originalValueComplete = p_originalValueComplete; arrayIndex = p_arrayIndex; extra = p_extra; isSpecialProperty = p_isSpecialProperty; hasModifier = Boolean(p_modifierFunction); modifierFunction = p_modifierFunction; modifierParameters = p_modifierParameters; } public function toString():String{ var returnStr:String = "\n[PropertyInfoObj "; returnStr = (returnStr + ("valueStart:" + String(valueStart))); returnStr = (returnStr + ", "); returnStr = (returnStr + ("valueComplete:" + String(valueComplete))); returnStr = (returnStr + ", "); returnStr = (returnStr + ("originalValueComplete:" + String(originalValueComplete))); returnStr = (returnStr + ", "); returnStr = (returnStr + ("arrayIndex:" + String(arrayIndex))); returnStr = (returnStr + ", "); returnStr = (returnStr + ("extra:" + String(extra))); returnStr = (returnStr + ", "); returnStr = (returnStr + ("isSpecialProperty:" + String(isSpecialProperty))); returnStr = (returnStr + ", "); returnStr = (returnStr + ("hasModifier:" + String(hasModifier))); returnStr = (returnStr + ", "); returnStr = (returnStr + ("modifierFunction:" + String(modifierFunction))); returnStr = (returnStr + ", "); returnStr = (returnStr + ("modifierParameters:" + String(modifierParameters))); returnStr = (returnStr + "]\n"); return (returnStr); } public function clone():PropertyInfoObj{ var nProperty:PropertyInfoObj = new PropertyInfoObj(valueStart, valueComplete, originalValueComplete, arrayIndex, extra, isSpecialProperty, modifierFunction, modifierParameters); return (nProperty); } } }//package caurina.transitions
Section 4
//SpecialProperty (caurina.transitions.SpecialProperty) package caurina.transitions { public class SpecialProperty { public var parameters:Array; public var getValue:Function; public var preProcess:Function; public var setValue:Function; public function SpecialProperty(p_getFunction:Function, p_setFunction:Function, p_parameters:Array=null, p_preProcessFunction:Function=null){ super(); getValue = p_getFunction; setValue = p_setFunction; parameters = p_parameters; preProcess = p_preProcessFunction; } public function toString():String{ var value:String = ""; value = (value + "[SpecialProperty "); value = (value + ("getValue:" + String(getValue))); value = (value + ", "); value = (value + ("setValue:" + String(setValue))); value = (value + ", "); value = (value + ("parameters:" + String(parameters))); value = (value + ", "); value = (value + ("preProcess:" + String(preProcess))); value = (value + "]"); return (value); } } }//package caurina.transitions
Section 5
//SpecialPropertyModifier (caurina.transitions.SpecialPropertyModifier) package caurina.transitions { public class SpecialPropertyModifier { public var getValue:Function; public var modifyValues:Function; public function SpecialPropertyModifier(p_modifyFunction:Function, p_getFunction:Function){ super(); modifyValues = p_modifyFunction; getValue = p_getFunction; } public function toString():String{ var value:String = ""; value = (value + "[SpecialPropertyModifier "); value = (value + ("modifyValues:" + String(modifyValues))); value = (value + ", "); value = (value + ("getValue:" + String(getValue))); value = (value + "]"); return (value); } } }//package caurina.transitions
Section 6
//SpecialPropertySplitter (caurina.transitions.SpecialPropertySplitter) package caurina.transitions { public class SpecialPropertySplitter { public var parameters:Array; public var splitValues:Function; public function SpecialPropertySplitter(p_splitFunction:Function, p_parameters:Array){ super(); splitValues = p_splitFunction; parameters = p_parameters; } public function toString():String{ var value:String = ""; value = (value + "[SpecialPropertySplitter "); value = (value + ("splitValues:" + String(splitValues))); value = (value + ", "); value = (value + ("parameters:" + String(parameters))); value = (value + "]"); return (value); } } }//package caurina.transitions
Section 7
//Tweener (caurina.transitions.Tweener) package caurina.transitions { import flash.events.*; import flash.display.*; import flash.utils.*; public class Tweener { private static var _timeScale:Number = 1; private static var _currentTimeFrame:Number; private static var _specialPropertySplitterList:Object; private static var _engineExists:Boolean = false; private static var _specialPropertyModifierList:Object; private static var _currentTime:Number; private static var _tweenList:Array; private static var _specialPropertyList:Object; private static var _transitionList:Object; private static var _inited:Boolean = false; private static var __tweener_controller__:MovieClip; public function Tweener(){ super(); trace("Tweener is a static class and should not be instantiated."); } public static function registerSpecialPropertyModifier(p_name:String, p_modifyFunction:Function, p_getFunction:Function):void{ if (!_inited){ init(); }; var spm:SpecialPropertyModifier = new SpecialPropertyModifier(p_modifyFunction, p_getFunction); _specialPropertyModifierList[p_name] = spm; } public static function registerSpecialProperty(p_name:String, p_getFunction:Function, p_setFunction:Function, p_parameters:Array=null, p_preProcessFunction:Function=null):void{ if (!_inited){ init(); }; var sp:SpecialProperty = new SpecialProperty(p_getFunction, p_setFunction, p_parameters, p_preProcessFunction); _specialPropertyList[p_name] = sp; } public static function init(... _args):void{ _inited = true; _transitionList = new Object(); Equations.init(); _specialPropertyList = new Object(); _specialPropertyModifierList = new Object(); _specialPropertySplitterList = new Object(); } private static function updateTweens():Boolean{ var i:int; if (_tweenList.length == 0){ return (false); }; i = 0; while (i < _tweenList.length) { if ((((_tweenList[i] == undefined)) || (!(_tweenList[i].isPaused)))){ if (!updateTweenByIndex(i)){ removeTweenByIndex(i); }; if (_tweenList[i] == null){ removeTweenByIndex(i, true); i--; }; }; i++; }; return (true); } public static function addCaller(p_scopes:Object=null, p_parameters:Object=null):Boolean{ var i:Number; var rScopes:Array; var rTransition:Function; var nTween:TweenListObj; var myT:Number; var trans:String; if (!Boolean(p_scopes)){ return (false); }; if ((p_scopes is Array)){ rScopes = p_scopes.concat(); } else { rScopes = [p_scopes]; }; var p_obj:Object = p_parameters; if (!_inited){ init(); }; if (((!(_engineExists)) || (!(Boolean(__tweener_controller__))))){ startEngine(); }; var rTime:Number = (isNaN(p_obj.time)) ? 0 : p_obj.time; var rDelay:Number = (isNaN(p_obj.delay)) ? 0 : p_obj.delay; if (typeof(p_obj.transition) == "string"){ trans = p_obj.transition.toLowerCase(); rTransition = _transitionList[trans]; } else { rTransition = p_obj.transition; }; if (!Boolean(rTransition)){ rTransition = _transitionList["easeoutexpo"]; }; i = 0; while (i < rScopes.length) { if (p_obj.useFrames == true){ nTween = new TweenListObj(rScopes[i], (_currentTimeFrame + (rDelay / _timeScale)), (_currentTimeFrame + ((rDelay + rTime) / _timeScale)), true, rTransition, p_obj.transitionParams); } else { nTween = new TweenListObj(rScopes[i], (_currentTime + ((rDelay * 1000) / _timeScale)), (_currentTime + (((rDelay * 1000) + (rTime * 1000)) / _timeScale)), false, rTransition, p_obj.transitionParams); }; nTween.properties = null; nTween.onStart = p_obj.onStart; nTween.onUpdate = p_obj.onUpdate; nTween.onComplete = p_obj.onComplete; nTween.onOverwrite = p_obj.onOverwrite; nTween.onStartParams = p_obj.onStartParams; nTween.onUpdateParams = p_obj.onUpdateParams; nTween.onCompleteParams = p_obj.onCompleteParams; nTween.onOverwriteParams = p_obj.onOverwriteParams; nTween.onStartScope = p_obj.onStartScope; nTween.onUpdateScope = p_obj.onUpdateScope; nTween.onCompleteScope = p_obj.onCompleteScope; nTween.onOverwriteScope = p_obj.onOverwriteScope; nTween.onErrorScope = p_obj.onErrorScope; nTween.isCaller = true; nTween.count = p_obj.count; nTween.waitFrames = p_obj.waitFrames; _tweenList.push(nTween); if ((((rTime == 0)) && ((rDelay == 0)))){ myT = (_tweenList.length - 1); updateTweenByIndex(myT); removeTweenByIndex(myT); }; i++; }; return (true); } public static function pauseAllTweens():Boolean{ var i:uint; if (!Boolean(_tweenList)){ return (false); }; var paused:Boolean; i = 0; while (i < _tweenList.length) { pauseTweenByIndex(i); paused = true; i++; }; return (paused); } public static function removeTweens(p_scope:Object, ... _args):Boolean{ var i:uint; var sps:SpecialPropertySplitter; var specialProps:Array; var j:uint; var properties:Array = new Array(); i = 0; while (i < _args.length) { if ((((typeof(_args[i]) == "string")) && ((properties.indexOf(_args[i]) == -1)))){ if (_specialPropertySplitterList[_args[i]]){ sps = _specialPropertySplitterList[_args[i]]; specialProps = sps.splitValues(p_scope, null); j = 0; while (j < specialProps.length) { properties.push(specialProps[j].name); j++; }; } else { properties.push(_args[i]); }; }; i++; }; return (affectTweens(removeTweenByIndex, p_scope, properties)); } public static function splitTweens(p_tween:Number, p_properties:Array):uint{ var i:uint; var pName:String; var found:Boolean; var originalTween:TweenListObj = _tweenList[p_tween]; var newTween:TweenListObj = originalTween.clone(false); i = 0; while (i < p_properties.length) { pName = p_properties[i]; if (Boolean(originalTween.properties[pName])){ originalTween.properties[pName] = undefined; delete originalTween.properties[pName]; }; i++; }; for (pName in newTween.properties) { found = false; i = 0; while (i < p_properties.length) { if (p_properties[i] == pName){ found = true; break; }; i++; }; if (!found){ newTween.properties[pName] = undefined; delete newTween.properties[pName]; }; }; _tweenList.push(newTween); return ((_tweenList.length - 1)); } public static function updateFrame():void{ _currentTimeFrame++; } public static function resumeTweenByIndex(p_tween:Number):Boolean{ var tTweening:TweenListObj = _tweenList[p_tween]; if ((((tTweening == null)) || (!(tTweening.isPaused)))){ return (false); }; var cTime:Number = getCurrentTweeningTime(tTweening); tTweening.timeStart = (tTweening.timeStart + (cTime - tTweening.timePaused)); tTweening.timeComplete = (tTweening.timeComplete + (cTime - tTweening.timePaused)); tTweening.timePaused = undefined; tTweening.isPaused = false; return (true); } public static function getVersion():String{ return ("AS3 1.31.74"); } public static function onEnterFrame(e:Event):void{ updateTime(); updateFrame(); var hasUpdated:Boolean; hasUpdated = updateTweens(); if (!hasUpdated){ stopEngine(); }; } public static function updateTime():void{ _currentTime = getTimer(); } private static function updateTweenByIndex(i:Number):Boolean{ var tTweening:TweenListObj; var mustUpdate:Boolean; var nv:Number; var t:Number; var b:Number; var c:Number; var d:Number; var pName:String; var eventScope:Object; var tScope:Object; var tProperty:Object; var pv:Number; var i = i; tTweening = _tweenList[i]; if ((((tTweening == null)) || (!(Boolean(tTweening.scope))))){ return (false); }; var isOver:Boolean; var cTime:Number = getCurrentTweeningTime(tTweening); if (cTime >= tTweening.timeStart){ tScope = tTweening.scope; if (tTweening.isCaller){ do { t = (((tTweening.timeComplete - tTweening.timeStart) / tTweening.count) * (tTweening.timesCalled + 1)); b = tTweening.timeStart; c = (tTweening.timeComplete - tTweening.timeStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, b, c, d); //unresolved if if (Boolean(tTweening.onUpdate)){ eventScope = (Boolean(tTweening.onUpdateScope)) ? tTweening.onUpdateScope : tScope; tTweening.onUpdate.apply(eventScope, tTweening.onUpdateParams); continue; var _slot1 = e1; handleError(tTweening, _slot1, "onUpdate"); }; } while (tTweening.timesCalled++, !(tTweening.timesCalled >= tTweening.count)); } else { mustUpdate = (((((tTweening.skipUpdates < 1)) || (!(tTweening.skipUpdates)))) || ((tTweening.updatesSkipped >= tTweening.skipUpdates))); if (cTime >= tTweening.timeComplete){ isOver = true; mustUpdate = true; }; if (!tTweening.hasStarted){ if (Boolean(tTweening.onStart)){ eventScope = (Boolean(tTweening.onStartScope)) ? tTweening.onStartScope : tScope; tTweening.onStart.apply(eventScope, tTweening.onStartParams); //unresolved jump var _slot1 = e2; handleError(tTweening, _slot1, "onStart"); }; for (pName in tTweening.properties) { if (tTweening.properties[pName].isSpecialProperty){ if (Boolean(_specialPropertyList[pName].preProcess)){ tTweening.properties[pName].valueComplete = _specialPropertyList[pName].preProcess(tScope, _specialPropertyList[pName].parameters, tTweening.properties[pName].originalValueComplete, tTweening.properties[pName].extra); }; pv = _specialPropertyList[pName].getValue(tScope, _specialPropertyList[pName].parameters, tTweening.properties[pName].extra); } else { pv = tScope[pName]; }; tTweening.properties[pName].valueStart = (isNaN(pv)) ? tTweening.properties[pName].valueComplete : pv; }; mustUpdate = true; tTweening.hasStarted = true; }; if (mustUpdate){ for (pName in tTweening.properties) { tProperty = tTweening.properties[pName]; if (isOver){ nv = tProperty.valueComplete; } else { if (tProperty.hasModifier){ t = (cTime - tTweening.timeStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, 0, 1, d, tTweening.transitionParams); nv = tProperty.modifierFunction(tProperty.valueStart, tProperty.valueComplete, nv, tProperty.modifierParameters); } else { t = (cTime - tTweening.timeStart); b = tProperty.valueStart; c = (tProperty.valueComplete - tProperty.valueStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, b, c, d, tTweening.transitionParams); }; }; if (tTweening.rounded){ nv = Math.round(nv); }; if (tProperty.isSpecialProperty){ _specialPropertyList[pName].setValue(tScope, nv, _specialPropertyList[pName].parameters, tTweening.properties[pName].extra); } else { tScope[pName] = nv; }; }; tTweening.updatesSkipped = 0; if (Boolean(tTweening.onUpdate)){ eventScope = (Boolean(tTweening.onUpdateScope)) ? tTweening.onUpdateScope : tScope; tTweening.onUpdate.apply(eventScope, tTweening.onUpdateParams); //unresolved jump var _slot1 = e3; handleError(tTweening, _slot1, "onUpdate"); }; } else { tTweening.updatesSkipped++; }; }; if (((isOver) && (Boolean(tTweening.onComplete)))){ eventScope = (Boolean(tTweening.onCompleteScope)) ? tTweening.onCompleteScope : tScope; tTweening.onComplete.apply(eventScope, tTweening.onCompleteParams); //unresolved jump var _slot1 = e4; handleError(tTweening, _slot1, "onComplete"); }; return (!(isOver)); }; return (true); } public static function setTimeScale(p_time:Number):void{ var i:Number; var cTime:Number; if (isNaN(p_time)){ p_time = 1; }; if (p_time < 1E-5){ p_time = 1E-5; }; if (p_time != _timeScale){ if (_tweenList != null){ i = 0; while (i < _tweenList.length) { cTime = getCurrentTweeningTime(_tweenList[i]); _tweenList[i].timeStart = (cTime - (((cTime - _tweenList[i].timeStart) * _timeScale) / p_time)); _tweenList[i].timeComplete = (cTime - (((cTime - _tweenList[i].timeComplete) * _timeScale) / p_time)); if (_tweenList[i].timePaused != undefined){ _tweenList[i].timePaused = (cTime - (((cTime - _tweenList[i].timePaused) * _timeScale) / p_time)); }; i++; }; }; _timeScale = p_time; }; } public static function resumeAllTweens():Boolean{ var i:uint; if (!Boolean(_tweenList)){ return (false); }; var resumed:Boolean; i = 0; while (i < _tweenList.length) { resumeTweenByIndex(i); resumed = true; i++; }; return (resumed); } private static function handleError(pTweening:TweenListObj, pError:Error, pCallBackName:String):void{ var eventScope:Object; var pTweening = pTweening; var pError = pError; var pCallBackName = pCallBackName; if (((Boolean(pTweening.onError)) && ((pTweening.onError is Function)))){ eventScope = (Boolean(pTweening.onErrorScope)) ? pTweening.onErrorScope : pTweening.scope; pTweening.onError.apply(eventScope, [pTweening.scope, pError]); //unresolved jump var _slot1 = metaError; printError(((((String(pTweening.scope) + " raised an error while executing the 'onError' handler. Original error:\n ") + pError.getStackTrace()) + "\nonError error: ") + _slot1.getStackTrace())); } else { if (!Boolean(pTweening.onError)){ printError(((((String(pTweening.scope) + " raised an error while executing the '") + pCallBackName) + "'handler. \n") + pError.getStackTrace())); }; }; } private static function startEngine():void{ _engineExists = true; _tweenList = new Array(); __tweener_controller__ = new MovieClip(); __tweener_controller__.addEventListener(Event.ENTER_FRAME, Tweener.onEnterFrame); _currentTimeFrame = 0; updateTime(); } public static function removeAllTweens():Boolean{ var i:uint; if (!Boolean(_tweenList)){ return (false); }; var removed:Boolean; i = 0; while (i < _tweenList.length) { removeTweenByIndex(i); removed = true; i++; }; return (removed); } public static function addTween(p_scopes:Object=null, p_parameters:Object=null):Boolean{ var i:Number; var j:Number; var istr:String; var rScopes:Array; var rTransition:Function; var nProperties:Object; var nTween:TweenListObj; var myT:Number; var splitProperties:Array; var splitProperties2:Array; var tempModifiedProperties:Array; var trans:String; if (!Boolean(p_scopes)){ return (false); }; if ((p_scopes is Array)){ rScopes = p_scopes.concat(); } else { rScopes = [p_scopes]; }; var p_obj:Object = TweenListObj.makePropertiesChain(p_parameters); if (!_inited){ init(); }; if (((!(_engineExists)) || (!(Boolean(__tweener_controller__))))){ startEngine(); }; var rTime:Number = (isNaN(p_obj.time)) ? 0 : p_obj.time; var rDelay:Number = (isNaN(p_obj.delay)) ? 0 : p_obj.delay; var rProperties:Array = new Array(); var restrictedWords:Object = {time:true, delay:true, useFrames:true, skipUpdates:true, transition:true, transitionParams:true, onStart:true, onUpdate:true, onComplete:true, onOverwrite:true, onError:true, rounded:true, onStartParams:true, onUpdateParams:true, onCompleteParams:true, onOverwriteParams:true, onStartScope:true, onUpdateScope:true, onCompleteScope:true, onOverwriteScope:true, onErrorScope:true}; var modifiedProperties:Object = new Object(); for (istr in p_obj) { if (!restrictedWords[istr]){ if (_specialPropertySplitterList[istr]){ splitProperties = _specialPropertySplitterList[istr].splitValues(p_obj[istr], _specialPropertySplitterList[istr].parameters); i = 0; while (i < splitProperties.length) { if (_specialPropertySplitterList[splitProperties[i].name]){ splitProperties2 = _specialPropertySplitterList[splitProperties[i].name].splitValues(splitProperties[i].value, _specialPropertySplitterList[splitProperties[i].name].parameters); j = 0; while (j < splitProperties2.length) { rProperties[splitProperties2[j].name] = {valueStart:undefined, valueComplete:splitProperties2[j].value, arrayIndex:splitProperties2[j].arrayIndex, isSpecialProperty:false}; j++; }; } else { rProperties[splitProperties[i].name] = {valueStart:undefined, valueComplete:splitProperties[i].value, arrayIndex:splitProperties[i].arrayIndex, isSpecialProperty:false}; }; i++; }; } else { if (_specialPropertyModifierList[istr] != undefined){ tempModifiedProperties = _specialPropertyModifierList[istr].modifyValues(p_obj[istr]); i = 0; while (i < tempModifiedProperties.length) { modifiedProperties[tempModifiedProperties[i].name] = {modifierParameters:tempModifiedProperties[i].parameters, modifierFunction:_specialPropertyModifierList[istr].getValue}; i++; }; } else { rProperties[istr] = {valueStart:undefined, valueComplete:p_obj[istr]}; }; }; }; }; for (istr in rProperties) { if (_specialPropertyList[istr] != undefined){ rProperties[istr].isSpecialProperty = true; } else { if (rScopes[0][istr] == undefined){ printError((((("The property '" + istr) + "' doesn't seem to be a normal object property of ") + String(rScopes[0])) + " or a registered special property.")); }; }; }; for (istr in modifiedProperties) { if (rProperties[istr] != undefined){ rProperties[istr].modifierParameters = modifiedProperties[istr].modifierParameters; rProperties[istr].modifierFunction = modifiedProperties[istr].modifierFunction; }; }; if (typeof(p_obj.transition) == "string"){ trans = p_obj.transition.toLowerCase(); rTransition = _transitionList[trans]; } else { rTransition = p_obj.transition; }; if (!Boolean(rTransition)){ rTransition = _transitionList["easeoutexpo"]; }; i = 0; while (i < rScopes.length) { nProperties = new Object(); for (istr in rProperties) { nProperties[istr] = new PropertyInfoObj(rProperties[istr].valueStart, rProperties[istr].valueComplete, rProperties[istr].valueComplete, rProperties[istr].arrayIndex, {}, rProperties[istr].isSpecialProperty, rProperties[istr].modifierFunction, rProperties[istr].modifierParameters); }; if (p_obj.useFrames == true){ nTween = new TweenListObj(rScopes[i], (_currentTimeFrame + (rDelay / _timeScale)), (_currentTimeFrame + ((rDelay + rTime) / _timeScale)), true, rTransition, p_obj.transitionParams); } else { nTween = new TweenListObj(rScopes[i], (_currentTime + ((rDelay * 1000) / _timeScale)), (_currentTime + (((rDelay * 1000) + (rTime * 1000)) / _timeScale)), false, rTransition, p_obj.transitionParams); }; nTween.properties = nProperties; nTween.onStart = p_obj.onStart; nTween.onUpdate = p_obj.onUpdate; nTween.onComplete = p_obj.onComplete; nTween.onOverwrite = p_obj.onOverwrite; nTween.onError = p_obj.onError; nTween.onStartParams = p_obj.onStartParams; nTween.onUpdateParams = p_obj.onUpdateParams; nTween.onCompleteParams = p_obj.onCompleteParams; nTween.onOverwriteParams = p_obj.onOverwriteParams; nTween.onStartScope = p_obj.onStartScope; nTween.onUpdateScope = p_obj.onUpdateScope; nTween.onCompleteScope = p_obj.onCompleteScope; nTween.onOverwriteScope = p_obj.onOverwriteScope; nTween.onErrorScope = p_obj.onErrorScope; nTween.rounded = p_obj.rounded; nTween.skipUpdates = p_obj.skipUpdates; removeTweensByTime(nTween.scope, nTween.properties, nTween.timeStart, nTween.timeComplete); _tweenList.push(nTween); if ((((rTime == 0)) && ((rDelay == 0)))){ myT = (_tweenList.length - 1); updateTweenByIndex(myT); removeTweenByIndex(myT); }; i++; }; return (true); } public static function registerTransition(p_name:String, p_function:Function):void{ if (!_inited){ init(); }; _transitionList[p_name] = p_function; } public static function printError(p_message:String):void{ trace(("## [Tweener] Error: " + p_message)); } private static function affectTweens(p_affectFunction:Function, p_scope:Object, p_properties:Array):Boolean{ var i:uint; var affectedProperties:Array; var j:uint; var objectProperties:uint; var slicedTweenIndex:uint; var affected:Boolean; if (!Boolean(_tweenList)){ return (false); }; i = 0; while (i < _tweenList.length) { if (((_tweenList[i]) && ((_tweenList[i].scope == p_scope)))){ if (p_properties.length == 0){ p_affectFunction(i); affected = true; } else { affectedProperties = new Array(); j = 0; while (j < p_properties.length) { if (Boolean(_tweenList[i].properties[p_properties[j]])){ affectedProperties.push(p_properties[j]); }; j++; }; if (affectedProperties.length > 0){ objectProperties = AuxFunctions.getObjectLength(_tweenList[i].properties); if (objectProperties == affectedProperties.length){ p_affectFunction(i); affected = true; } else { slicedTweenIndex = splitTweens(i, affectedProperties); p_affectFunction(slicedTweenIndex); affected = true; }; }; }; }; i++; }; return (affected); } public static function getTweens(p_scope:Object):Array{ var i:uint; var pName:String; if (!Boolean(_tweenList)){ return ([]); }; var tList:Array = new Array(); i = 0; while (i < _tweenList.length) { if (((Boolean(_tweenList[i])) && ((_tweenList[i].scope == p_scope)))){ for (pName in _tweenList[i].properties) { tList.push(pName); }; }; i++; }; return (tList); } public static function isTweening(p_scope:Object):Boolean{ var i:uint; if (!Boolean(_tweenList)){ return (false); }; i = 0; while (i < _tweenList.length) { if (((Boolean(_tweenList[i])) && ((_tweenList[i].scope == p_scope)))){ return (true); }; i++; }; return (false); } public static function pauseTweenByIndex(p_tween:Number):Boolean{ var tTweening:TweenListObj = _tweenList[p_tween]; if ((((tTweening == null)) || (tTweening.isPaused))){ return (false); }; tTweening.timePaused = getCurrentTweeningTime(tTweening); tTweening.isPaused = true; return (true); } public static function getCurrentTweeningTime(p_tweening:Object):Number{ return ((p_tweening.useFrames) ? _currentTimeFrame : _currentTime); } public static function getTweenCount(p_scope:Object):Number{ var i:uint; if (!Boolean(_tweenList)){ return (0); }; var c:Number = 0; i = 0; while (i < _tweenList.length) { if (((Boolean(_tweenList[i])) && ((_tweenList[i].scope == p_scope)))){ c = (c + AuxFunctions.getObjectLength(_tweenList[i].properties)); }; i++; }; return (c); } private static function stopEngine():void{ _engineExists = false; _tweenList = null; _currentTime = 0; _currentTimeFrame = 0; __tweener_controller__.removeEventListener(Event.ENTER_FRAME, Tweener.onEnterFrame); __tweener_controller__ = null; } public static function removeTweensByTime(p_scope:Object, p_properties:Object, p_timeStart:Number, p_timeComplete:Number):Boolean{ var removedLocally:Boolean; var i:uint; var pName:String; var eventScope:Object; var p_scope = p_scope; var p_properties = p_properties; var p_timeStart = p_timeStart; var p_timeComplete = p_timeComplete; var removed:Boolean; var tl:uint = _tweenList.length; i = 0; while (i < tl) { if (((Boolean(_tweenList[i])) && ((p_scope == _tweenList[i].scope)))){ if ((((p_timeComplete > _tweenList[i].timeStart)) && ((p_timeStart < _tweenList[i].timeComplete)))){ removedLocally = false; for (pName in _tweenList[i].properties) { if (Boolean(p_properties[pName])){ if (Boolean(_tweenList[i].onOverwrite)){ eventScope = (Boolean(_tweenList[i].onOverwriteScope)) ? _tweenList[i].onOverwriteScope : _tweenList[i].scope; _tweenList[i].onOverwrite.apply(eventScope, _tweenList[i].onOverwriteParams); //unresolved jump var _slot1 = e; handleError(_tweenList[i], _slot1, "onOverwrite"); }; _tweenList[i].properties[pName] = undefined; delete _tweenList[i].properties[pName]; removedLocally = true; removed = true; }; }; if (removedLocally){ if (AuxFunctions.getObjectLength(_tweenList[i].properties) == 0){ removeTweenByIndex(i); }; }; }; }; i = (i + 1); }; return (removed); } public static function registerSpecialPropertySplitter(p_name:String, p_splitFunction:Function, p_parameters:Array=null):void{ if (!_inited){ init(); }; var sps:SpecialPropertySplitter = new SpecialPropertySplitter(p_splitFunction, p_parameters); _specialPropertySplitterList[p_name] = sps; } public static function removeTweenByIndex(i:Number, p_finalRemoval:Boolean=false):Boolean{ _tweenList[i] = null; if (p_finalRemoval){ _tweenList.splice(i, 1); }; return (true); } public static function resumeTweens(p_scope:Object, ... _args):Boolean{ var i:uint; var properties:Array = new Array(); i = 0; while (i < _args.length) { if ((((typeof(_args[i]) == "string")) && ((properties.indexOf(_args[i]) == -1)))){ properties.push(_args[i]); }; i++; }; return (affectTweens(resumeTweenByIndex, p_scope, properties)); } public static function pauseTweens(p_scope:Object, ... _args):Boolean{ var i:uint; var properties:Array = new Array(); i = 0; while (i < _args.length) { if ((((typeof(_args[i]) == "string")) && ((properties.indexOf(_args[i]) == -1)))){ properties.push(_args[i]); }; i++; }; return (affectTweens(pauseTweenByIndex, p_scope, properties)); } } }//package caurina.transitions
Section 8
//TweenListObj (caurina.transitions.TweenListObj) package caurina.transitions { public class TweenListObj { public var hasStarted:Boolean; public var onUpdate:Function; public var useFrames:Boolean; public var count:Number; public var onOverwriteParams:Array; public var timeStart:Number; public var timeComplete:Number; public var onStartParams:Array; public var onUpdateScope:Object; public var rounded:Boolean; public var onUpdateParams:Array; public var properties:Object; public var onComplete:Function; public var transitionParams:Object; public var updatesSkipped:Number; public var onStart:Function; public var onOverwriteScope:Object; public var skipUpdates:Number; public var onStartScope:Object; public var scope:Object; public var isCaller:Boolean; public var timePaused:Number; public var transition:Function; public var onCompleteParams:Array; public var onError:Function; public var timesCalled:Number; public var onErrorScope:Object; public var onOverwrite:Function; public var isPaused:Boolean; public var waitFrames:Boolean; public var onCompleteScope:Object; public function TweenListObj(p_scope:Object, p_timeStart:Number, p_timeComplete:Number, p_useFrames:Boolean, p_transition:Function, p_transitionParams:Object){ super(); scope = p_scope; timeStart = p_timeStart; timeComplete = p_timeComplete; useFrames = p_useFrames; transition = p_transition; transitionParams = p_transitionParams; properties = new Object(); isPaused = false; timePaused = undefined; isCaller = false; updatesSkipped = 0; timesCalled = 0; skipUpdates = 0; hasStarted = false; } public function clone(omitEvents:Boolean):TweenListObj{ var pName:String; var nTween:TweenListObj = new TweenListObj(scope, timeStart, timeComplete, useFrames, transition, transitionParams); nTween.properties = new Array(); for (pName in properties) { nTween.properties[pName] = properties[pName].clone(); }; nTween.skipUpdates = skipUpdates; nTween.updatesSkipped = updatesSkipped; if (!omitEvents){ nTween.onStart = onStart; nTween.onUpdate = onUpdate; nTween.onComplete = onComplete; nTween.onOverwrite = onOverwrite; nTween.onError = onError; nTween.onStartParams = onStartParams; nTween.onUpdateParams = onUpdateParams; nTween.onCompleteParams = onCompleteParams; nTween.onOverwriteParams = onOverwriteParams; nTween.onStartScope = onStartScope; nTween.onUpdateScope = onUpdateScope; nTween.onCompleteScope = onCompleteScope; nTween.onOverwriteScope = onOverwriteScope; nTween.onErrorScope = onErrorScope; }; nTween.rounded = rounded; nTween.isPaused = isPaused; nTween.timePaused = timePaused; nTween.isCaller = isCaller; nTween.count = count; nTween.timesCalled = timesCalled; nTween.waitFrames = waitFrames; nTween.hasStarted = hasStarted; return (nTween); } public function toString():String{ var i:String; var returnStr:String = "\n[TweenListObj "; returnStr = (returnStr + ("scope:" + String(scope))); returnStr = (returnStr + ", properties:"); var isFirst:Boolean; for (i in properties) { if (!isFirst){ returnStr = (returnStr + ","); }; returnStr = (returnStr + ("[name:" + properties[i].name)); returnStr = (returnStr + (",valueStart:" + properties[i].valueStart)); returnStr = (returnStr + (",valueComplete:" + properties[i].valueComplete)); returnStr = (returnStr + "]"); isFirst = false; }; returnStr = (returnStr + (", timeStart:" + String(timeStart))); returnStr = (returnStr + (", timeComplete:" + String(timeComplete))); returnStr = (returnStr + (", useFrames:" + String(useFrames))); returnStr = (returnStr + (", transition:" + String(transition))); returnStr = (returnStr + (", transitionParams:" + String(transitionParams))); if (skipUpdates){ returnStr = (returnStr + (", skipUpdates:" + String(skipUpdates))); }; if (updatesSkipped){ returnStr = (returnStr + (", updatesSkipped:" + String(updatesSkipped))); }; if (Boolean(onStart)){ returnStr = (returnStr + (", onStart:" + String(onStart))); }; if (Boolean(onUpdate)){ returnStr = (returnStr + (", onUpdate:" + String(onUpdate))); }; if (Boolean(onComplete)){ returnStr = (returnStr + (", onComplete:" + String(onComplete))); }; if (Boolean(onOverwrite)){ returnStr = (returnStr + (", onOverwrite:" + String(onOverwrite))); }; if (Boolean(onError)){ returnStr = (returnStr + (", onError:" + String(onError))); }; if (onStartParams){ returnStr = (returnStr + (", onStartParams:" + String(onStartParams))); }; if (onUpdateParams){ returnStr = (returnStr + (", onUpdateParams:" + String(onUpdateParams))); }; if (onCompleteParams){ returnStr = (returnStr + (", onCompleteParams:" + String(onCompleteParams))); }; if (onOverwriteParams){ returnStr = (returnStr + (", onOverwriteParams:" + String(onOverwriteParams))); }; if (onStartScope){ returnStr = (returnStr + (", onStartScope:" + String(onStartScope))); }; if (onUpdateScope){ returnStr = (returnStr + (", onUpdateScope:" + String(onUpdateScope))); }; if (onCompleteScope){ returnStr = (returnStr + (", onCompleteScope:" + String(onCompleteScope))); }; if (onOverwriteScope){ returnStr = (returnStr + (", onOverwriteScope:" + String(onOverwriteScope))); }; if (onErrorScope){ returnStr = (returnStr + (", onErrorScope:" + String(onErrorScope))); }; if (rounded){ returnStr = (returnStr + (", rounded:" + String(rounded))); }; if (isPaused){ returnStr = (returnStr + (", isPaused:" + String(isPaused))); }; if (timePaused){ returnStr = (returnStr + (", timePaused:" + String(timePaused))); }; if (isCaller){ returnStr = (returnStr + (", isCaller:" + String(isCaller))); }; if (count){ returnStr = (returnStr + (", count:" + String(count))); }; if (timesCalled){ returnStr = (returnStr + (", timesCalled:" + String(timesCalled))); }; if (waitFrames){ returnStr = (returnStr + (", waitFrames:" + String(waitFrames))); }; if (hasStarted){ returnStr = (returnStr + (", hasStarted:" + String(hasStarted))); }; returnStr = (returnStr + "]\n"); return (returnStr); } public static function makePropertiesChain(p_obj:Object):Object{ var chainedObject:Object; var chain:Object; var currChainObj:Object; var len:Number; var i:Number; var k:Number; var baseObject:Object = p_obj.base; if (baseObject){ chainedObject = {}; if ((baseObject is Array)){ chain = []; k = 0; while (k < baseObject.length) { chain.push(baseObject[k]); k++; }; } else { chain = [baseObject]; }; chain.push(p_obj); len = chain.length; i = 0; while (i < len) { if (chain[i]["base"]){ currChainObj = AuxFunctions.concatObjects(makePropertiesChain(chain[i]["base"]), chain[i]); } else { currChainObj = chain[i]; }; chainedObject = AuxFunctions.concatObjects(chainedObject, currChainObj); i++; }; if (chainedObject["base"]){ delete chainedObject["base"]; }; return (chainedObject); //unresolved jump }; return (p_obj); } } }//package caurina.transitions
Section 9
//Animation (com.urbansquall.ginger.Animation) package com.urbansquall.ginger { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; public class Animation extends EventDispatcher { var m_frameMap:Dictionary; private var m_totalFrames:int; private var m_isLooping:Boolean; var m_framesOfRotation:int; var m_fps:int; var m_frames:Array; var m_degToRotBy:Number; public function Animation(a_fps:int, a_numRotations:int=1){ super(); m_frames = []; m_frameMap = new Dictionary(); m_fps = a_fps; m_framesOfRotation = a_numRotations; if (m_framesOfRotation < 1){ m_framesOfRotation = 1; }; m_degToRotBy = (360 / m_framesOfRotation); } public function addFrame(a_numFrames:int, a_bitmapData:BitmapData, a_frameLocation:Rectangle, a_offsetX:Number, a_offsetY:Number, a_frameID:String=null):void{ if (a_frameID == ""){ a_frameID = null; }; var bmpData:BitmapData = new BitmapData(a_frameLocation.width, a_frameLocation.height, true, 0); bmpData.copyPixels(a_bitmapData, a_frameLocation, new Point()); m_frames.push(new Frame(a_numFrames, bmpData, m_framesOfRotation, a_frameID, a_offsetX, a_offsetY)); if (a_frameID != null){ m_frameMap[a_frameID] = m_totalFrames; }; m_totalFrames++; } public function set isLooping(a_value:Boolean):void{ m_isLooping = a_value; } public function get isLooping():Boolean{ return (m_isLooping); } public function changeAllOffsets(a_offsetX:int, a_offsetY:int):void{ var frame:Frame; var i:int; while (i < m_frames.length) { frame = m_frames[i]; frame.offsetX = a_offsetX; frame.offsetY = a_offsetY; i++; }; } } }//package com.urbansquall.ginger
Section 10
//AnimationBuilder (com.urbansquall.ginger.AnimationBuilder) package com.urbansquall.ginger { import flash.display.*; import flash.geom.*; public class AnimationBuilder { public static function importStrip(a_fps:int, a_bitmapData:BitmapData, a_tileWidth:int, a_tileHeight:int, a_tileCount:int=-1, a_startingX:int=0, a_startingY:int=0, a_rotations:int=1):Animation{ var frameLocation:Rectangle; var tileX:int; var tileY:int; var animation:Animation = new Animation(a_fps, a_rotations); var rows:int = Math.ceil((a_bitmapData.height / a_tileHeight)); var cols:int = Math.ceil((a_bitmapData.width / a_tileWidth)); if (a_tileCount == -1){ a_tileCount = (rows * cols); }; var i:int; while (i < a_tileCount) { tileX = (i % cols); tileY = Math.floor((i / cols)); frameLocation = new Rectangle((a_startingX + (tileX * a_tileWidth)), (a_startingY + (tileY * a_tileHeight)), a_tileWidth, a_tileHeight); animation.addFrame(1, a_bitmapData, frameLocation, (a_tileWidth / 2), (a_tileHeight / 2)); i++; }; return (animation); } } }//package com.urbansquall.ginger
Section 11
//AnimationEvent (com.urbansquall.ginger.AnimationEvent) package com.urbansquall.ginger { import flash.events.*; public class AnimationEvent extends Event { public var begin:Boolean; public var animationID:String; public static const CHANGE:String = "animation_event_change"; public function AnimationEvent(type:String, a_begin:Boolean, a_animationID:String, bubbles:Boolean=false, cancelable:Boolean=false){ super(type, bubbles, cancelable); begin = a_begin; animationID = a_animationID; } } }//package com.urbansquall.ginger
Section 12
//AnimationPlayer (com.urbansquall.ginger.AnimationPlayer) package com.urbansquall.ginger { import flash.display.*; import flash.utils.*; public class AnimationPlayer extends Bitmap { private var m_animationDelay:int; private var m_framesMap:Dictionary; private var m_currentFrame:Frame; private var m_hasAnimationEnded:Boolean; private var m_rotation:Number;// = 0 private var m_currentAnimation:Animation; private var m_fps:int; private var m_IDArray:Array; private var m_defaultAnimationID:String; private var m_totalFrames:int; private var m_rotationFrame:int; private var m_frames:Array; private var m_framesPassed:int; private var m_animationMap:Dictionary; private var m_isPlaying:Boolean; private var m_isLooping:Boolean; private var m_hasRotationChanged:Boolean; private var m_frameIndex:int; private var m_currentAnimationID:String; private var m_timeSinceLastUpdate:int; private var m_animationQueue:Array; public function AnimationPlayer(pixelSnapping:String="auto", smoothing:Boolean=false){ super(null, pixelSnapping, smoothing); m_IDArray = []; m_animationQueue = []; m_frames = []; m_animationMap = new Dictionary(); m_framesMap = new Dictionary(); } public function togglePause():void{ if (m_currentAnimation != null){ m_isPlaying = !(m_isPlaying); }; } override public function get rotation():Number{ return (m_rotation); } override public function get x():Number{ return ((super.x + offsetX)); } public function queue(a_animationID:String):void{ var animation:Animation = m_animationMap[a_animationID]; if (animation == null){ throw (new Error("<AnimationPlayer> Invalid Animation ID!")); }; m_animationQueue.push(a_animationID); } override public function set width(value:Number):void{ throw (new Error("<AnimationPlayer> Width / Height cannot be changed!")); } public function isPaused():Boolean{ return (m_isPlaying); } public function copy():AnimationPlayer{ var id:String; var player:AnimationPlayer = new AnimationPlayer(); var i:int; while (i < m_IDArray.length) { id = m_IDArray[i]; player.addAnimation(id, m_animationMap[id]); i++; }; player.defaultAnimationID = m_defaultAnimationID; player.fps = m_fps; player.play(m_defaultAnimationID); return (player); } public function get defaultAnimationID():String{ return (m_defaultAnimationID); } public function get offsetY():Number{ return (m_currentFrame.offsetY); } override public function get height():Number{ return (m_currentFrame.height[m_rotationFrame]); } private function updateFrame():void{ var currentX:Number; var currentY:Number; if (m_currentFrame == null){ return; }; m_framesPassed++; if (m_framesPassed > m_currentFrame.numFrames){ m_framesPassed = 0; if (++m_frameIndex >= m_totalFrames){ if (!m_isLooping){ m_hasAnimationEnded = true; return; }; m_frameIndex = 0; }; currentX = 0; currentY = 0; if (m_currentAnimationID != null){ currentX = this.x; currentY = this.y; }; m_currentFrame = Frame(m_frames[m_frameIndex]); bitmapData = (m_currentFrame.bitmapData[m_rotationFrame] as BitmapData); this.x = currentX; this.y = currentY; if (m_currentFrame.frameID != null){ if (hasEventListener(FrameEvent.CHANGE)){ dispatchEvent(new FrameEvent(FrameEvent.CHANGE, true, m_currentFrame.frameID, m_currentAnimationID)); }; }; }; } public function get offsetX():Number{ return (m_currentFrame.offsetX); } public function get animationIDs():Array{ return (m_IDArray.slice()); } public function set defaultAnimationID(value:String):void{ m_defaultAnimationID = value; } public function play(a_animationID:String):void{ if (m_animationMap[a_animationID] == null){ throw (new Error("<AnimationPlayer> Invalid Animation ID!")); }; m_isPlaying = true; m_hasAnimationEnded = false; m_currentAnimationID = a_animationID; startNewAnimation(a_animationID); m_animationQueue = []; m_animationQueue.push(m_currentAnimation); } override public function get width():Number{ return (m_currentFrame.width[m_rotationFrame]); } public function update(a_ms:Number):void{ var eventToDispatch:AnimationEvent; if (m_hasAnimationEnded){ eventToDispatch = null; if (hasEventListener(AnimationEvent.CHANGE)){ eventToDispatch = new AnimationEvent(AnimationEvent.CHANGE, false, m_currentAnimationID); }; m_animationQueue.shift(); if (((((((!(m_isLooping)) && ((m_animationQueue.length == 0)))) && ((m_animationQueue[0] == undefined)))) && ((m_currentAnimationID == m_defaultAnimationID)))){ m_isPlaying = false; } else { startNewAnimation(m_animationQueue[0]); }; m_hasAnimationEnded = false; if (eventToDispatch != null){ dispatchEvent(eventToDispatch); }; } else { if (m_hasRotationChanged){ bitmapData = m_currentFrame.bitmapData[m_rotationFrame]; m_hasRotationChanged = false; }; }; if (m_isPlaying){ m_timeSinceLastUpdate = (m_timeSinceLastUpdate + a_ms); if (m_timeSinceLastUpdate > m_animationDelay){ m_timeSinceLastUpdate = (m_timeSinceLastUpdate - m_animationDelay); updateFrame(); }; }; } private function startNewAnimation(a_animationID:String):void{ var currentX:Number = 0; var currentY:Number = 0; if (m_currentAnimationID != null){ currentX = this.x; currentY = this.y; }; m_timeSinceLastUpdate = 0; m_currentAnimationID = a_animationID; m_currentAnimation = m_animationMap[m_currentAnimationID]; if (m_currentAnimation == null){ m_currentAnimation = m_animationMap[m_defaultAnimationID]; m_currentAnimationID = m_defaultAnimationID; }; fps = m_currentAnimation.m_fps; m_frames = m_currentAnimation.m_frames; m_framesMap = m_currentAnimation.m_frameMap; m_isLooping = m_currentAnimation.isLooping; m_totalFrames = m_frames.length; m_frameIndex = 0; m_currentFrame = Frame(m_frames[0]); bitmapData = m_currentFrame.bitmapData[m_rotationFrame]; this.x = currentX; this.y = currentY; if (hasEventListener(AnimationEvent.CHANGE)){ dispatchEvent(new AnimationEvent(AnimationEvent.CHANGE, true, m_currentAnimationID)); }; } override public function set height(value:Number):void{ throw (new Error("<AnimationPlayer> Width / Height cannot be changed!")); } public function gotoFrame(a_frameID:String, a_animationID:String=null):void{ if (a_animationID != null){ startNewAnimation(a_animationID); }; var index:int = m_framesMap[a_frameID]; var currentX:Number = 0; var currentY:Number = 0; if (m_currentAnimationID != null){ currentX = this.x; currentY = this.y; }; m_currentFrame = Frame(m_frames[index]); this.x = currentX; this.y = currentY; bitmapData = (m_currentFrame.bitmapData[m_rotationFrame] as BitmapData); m_frameIndex = index; m_framesPassed = 0; m_isPlaying = false; if (m_currentFrame.frameID != null){ if (hasEventListener(FrameEvent.CHANGE)){ dispatchEvent(new FrameEvent(FrameEvent.CHANGE, true, m_currentFrame.frameID, m_currentAnimationID)); }; }; } public function set fps(value:int):void{ m_fps = value; if (value <= 0){ m_fps = 0; m_animationDelay = 0; } else { m_fps = value; m_animationDelay = (1000 / value); }; } public function addAnimation(a_animationID:String, a_animation:Animation):void{ m_IDArray.push(a_animationID); m_animationMap[a_animationID] = a_animation; if (m_defaultAnimationID == null){ m_defaultAnimationID = a_animationID; startNewAnimation(m_defaultAnimationID); play(a_animationID); this.x = 0; this.y = 0; }; } public function get currentAnimationID():String{ return (m_currentAnimationID); } public function get fps():int{ return (m_fps); } override public function set x(value:Number):void{ super.x = (value - offsetX); } override public function set y(value:Number):void{ super.y = (value - offsetY); } public function pause():void{ m_isPlaying = false; } override public function get y():Number{ return ((super.y + offsetY)); } override public function set rotation(value:Number):void{ m_rotation = int(value); m_rotation = (m_rotation % 360); if (m_rotation < 0){ m_rotation = (m_rotation + 360); }; m_rotationFrame = Math.round((m_rotation / m_currentAnimation.m_degToRotBy)); if (m_rotationFrame >= m_currentAnimation.m_framesOfRotation){ m_rotationFrame = 0; }; m_hasRotationChanged = true; } public function unpause():void{ if (m_currentAnimation != null){ m_isPlaying = true; }; } } }//package com.urbansquall.ginger
Section 13
//AnimationPlayerFactory (com.urbansquall.ginger.AnimationPlayerFactory) package com.urbansquall.ginger { import flash.utils.*; public class AnimationPlayerFactory { private var m_animations:Dictionary; public function AnimationPlayerFactory(){ super(); m_animations = new Dictionary(); } public function instantiate(a_name:String):AnimationPlayer{ if (m_animations[a_name] == null){ throw (new Error((("AnimationFactory:instantiate. There is no animation with the name [" + a_name) + "]"))); }; var animationPlayer:AnimationPlayer = m_animations[a_name]; return (animationPlayer.copy()); } public function register(a_name:String, a_animationPlayer:AnimationPlayer):void{ if (m_animations[a_name] != null){ throw (new Error((("AnimationFactory:register. There is already an animation with the name [" + a_name) + "]"))); }; m_animations[a_name] = a_animationPlayer; } public function dispose():void{ var key:String; var animationPlayer:AnimationPlayer; for (key in m_animations) { animationPlayer = m_animations[key]; delete m_animations[key]; }; m_animations = null; } } }//package com.urbansquall.ginger
Section 14
//Frame (com.urbansquall.ginger.Frame) package com.urbansquall.ginger { import flash.display.*; import flash.geom.*; import com.urbansquall.ginger.*; class Frame { public var offsetX:Number; public var width:Array; public var height:Array; public var frameID:String; public var numFrames:int; public var offsetY:Number; public var bitmapData:Array; function Frame(a_numFrames:int, a_bitmapData:BitmapData, a_numRotations:int, a_frameID:String, a_offsetX:Number, a_offsetY:Number){ super(); numFrames = a_numFrames; frameID = a_frameID; bitmapData = []; width = []; height = []; offsetX = a_offsetX; offsetY = a_offsetY; if (a_numRotations == 1){ createFrameWithNoRotation(a_bitmapData, a_frameID, a_offsetX, a_offsetY); } else { createRotatedFrame(a_bitmapData, a_numRotations, a_frameID, a_offsetX, a_offsetY); }; } private function createRotatedFrame(a_bitmapData:BitmapData, a_numRotations:int, a_frameID:String, a_offsetX:Number, a_offsetY:Number):void{ var tileWidth:int = a_bitmapData.width; var tileHeight:int = a_bitmapData.height; var tx:Number = ((tileWidth / 2) * Math.SQRT2); var ty:Number = ((tileHeight / 2) * Math.SQRT2); var maxTxy:Number = Math.max(tx, ty); var bdSize:Number = Math.ceil((Math.max(tileWidth, tileHeight) * Math.SQRT2)); var mat:Matrix = new Matrix(1, 0, 0, 1, maxTxy, maxTxy); var bd:BitmapData = new BitmapData(bdSize, bdSize, true, 0); var container:Sprite = new Sprite(); var bmpHolder:Sprite = new Sprite(); var bmpData:BitmapData = new BitmapData(tileWidth, tileHeight, true, 0); var bmp:Bitmap = new Bitmap(a_bitmapData, "auto", true); bmp.x = -((tileWidth / 2)); bmp.y = -((tileHeight / 2)); bmpHolder.addChild(bmp); container.addChild(bmpHolder); var ri:int; while (ri < a_numRotations) { bd.fillRect(bd.rect, 0); bd.draw(container, mat); bitmapData[ri] = bd.clone(); width[ri] = bmpHolder.width; height[ri] = bmpHolder.height; bmpHolder.rotation = (bmpHolder.rotation + (360 / a_numRotations)); ri++; }; } private function createFrameWithNoRotation(a_bitmapData:BitmapData, a_frameID:String, a_offsetX:Number, a_offsetY:Number):void{ bitmapData[0] = a_bitmapData; width[0] = a_bitmapData.width; height[0] = a_bitmapData.height; } } }//package com.urbansquall.ginger
Section 15
//FrameEvent (com.urbansquall.ginger.FrameEvent) package com.urbansquall.ginger { import flash.events.*; public class FrameEvent extends Event { public var frameID:String; public var begin:Boolean; public var animationID:String; public static const CHANGE:String = "frame_event_change"; public function FrameEvent(type:String, a_begin:Boolean, a_frameID:String, a_animationID:String, bubbles:Boolean=false, cancelable:Boolean=false){ super(type, bubbles, cancelable); begin = a_begin; frameID = a_frameID; animationID = a_animationID; } } }//package com.urbansquall.ginger
Section 16
//Preloader (com.urbansquall.preloader.Preloader) package com.urbansquall.preloader { import flash.events.*; import flash.display.*; import flash.utils.*; public class Preloader extends MovieClip { private var m_firstFrame:Boolean;// = true public function Preloader(){ super(); addEventListener(Event.ENTER_FRAME, checkFrame); } protected function endLoading():void{ } protected function updateLoading(a_percent:Number):void{ } private function checkFrame(e:Event):void{ if (currentFrame == totalFrames){ removeEventListener(Event.ENTER_FRAME, checkFrame); startup(); return; }; if (m_firstFrame){ beginLoading(); m_firstFrame = false; return; }; var percent:Number = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal); updateLoading(percent); } protected function get mainClassName():String{ return ("Main"); } protected function beginLoading():void{ } private function startup():void{ stop(); if (!m_firstFrame){ endLoading(); }; var MainClass:Class = (getDefinitionByName(mainClassName) as Class); if (MainClass == null){ throw (new Error((("Preloader:startup. There was no class matching [" + mainClassName) + "]. You may need to override Preloader::mainClassName"))); }; var main:DisplayObject = (new (MainClass) as DisplayObject); if (main == null){ throw (new Error((("Preloader::startup. [" + mainClassName) + "] needs to inherit from Sprite or MovieClip."))); }; addChildAt(main, 0); } } }//package com.urbansquall.preloader
Section 17
//safeint (com.urbansquall.security.safeint) package com.urbansquall.security { public class safeint { private var m_safeVal:int; private var m_seed:int; public function safeint(a_value:int){ super(); m_seed = (Math.random() * int.MAX_VALUE); this.val = a_value; } public function get val():int{ return ((m_safeVal ^ m_seed)); } public function set val(a_value:int):void{ m_safeVal = (a_value ^ m_seed); } public function toString():String{ return (this.val.toString()); } } }//package com.urbansquall.security
Section 18
//SafeSolManager (com.urbansquall.security.SafeSolManager) package com.urbansquall.security { import flash.net.*; import flash.utils.*; public class SafeSolManager { private var m_keys:Array; private var m_hexKey:uint; private var m_so:SharedObject; private var m_xorKey:int; public function SafeSolManager(a_name:String, a_hexKey:uint=16753249){ super(); m_so = SharedObject.getLocal(a_name); m_hexKey = a_hexKey; m_keys = []; if (m_so.data["ads"] == undefined){ m_so.data["ads"] = new Object(); }; if (readRealData(m_hexKey, int, false) == undefined){ m_xorKey = (Math.random() * int.MAX_VALUE); writeRealData(m_hexKey, m_xorKey, int, false); } else { m_xorKey = readRealData(m_hexKey, int, false); }; } private function hexStr(a_hex:uint):String{ return (a_hex.toString(16).toUpperCase()); } public function flush():void{ m_so.flush(); } public function readString(a_var:String):String{ return (read(a_var, String)); } public function writeNumber(a_var:String, a_value:Number):void{ write(a_var, a_value, Number); } public function createBool(a_var:String, a_value:Boolean, a_hasFake:Boolean=false):void{ create(a_var, a_value, Boolean, a_hasFake); } public function writeInt(a_var:String, a_value:int):void{ write(a_var, a_value, int); } public function createInt(a_var:String, a_value:int, a_hasFake:Boolean=false):void{ create(a_var, a_value, int, a_hasFake); } private function readFakeData(a_name:String){ return (m_so.data[a_name]); } public function writeString(a_var:String, a_value:String):void{ write(a_var, a_value, String); } private function read(a_var:String, a_type:Class){ var i:int = m_keys.indexOf(a_var); if (i < 0){ return (undefined); }; var dictKey:uint = ((m_hexKey + i) + 1); return (readRealData(dictKey, a_type, true)); } private function readRealData(a_hexKey:uint, a_type:Class, a_isEncrypted:Boolean){ var bab:ByteArray; var ban:ByteArray; var bas:ByteArray; var j:int; var intBytes:int; var val:* = m_so.data["ads"][hexStr(a_hexKey)]; if (((!((val == undefined))) && (a_isEncrypted))){ if (a_type == int){ val = (val ^ m_xorKey); } else { if (a_type == Boolean){ bab = new ByteArray(); bab.writeInt((val ^ m_xorKey)); bab.position = 0; val = bab.readBoolean(); } else { if (a_type == Number){ ban = new ByteArray(); ban.writeInt((val ^ m_xorKey)); ban.position = 0; val = ban.readFloat(); } else { if (a_type == String){ bas = new ByteArray(); val.position = 0; j = 0; while (j < (val.length / 4)) { intBytes = val.readInt(); bas.writeInt((intBytes ^ m_xorKey)); j++; }; bas.position = 0; val = bas.readUTF(); }; }; }; }; }; return (val); } private function write(a_var:String, a_value, a_type:Class):void{ var i:int = m_keys.indexOf(a_var); if (i < 0){ throw (new Error((("You did not first call create() for [" + a_var) + "] so it was not written."))); }; var dictKey:uint = ((m_hexKey + i) + 1); writeRealData(dictKey, a_value, a_type, true); if (readFakeData(a_var) != undefined){ writeFakeData(a_var, a_value); }; } public function readBool(a_var:String):Boolean{ return (read(a_var, Boolean)); } public function createNumber(a_var:String, a_value:Number, a_hasFake:Boolean=false):void{ create(a_var, a_value, Number, a_hasFake); } private function writeRealData(a_hexKey:uint, a_value, a_type:Class, a_isEncrypted:Boolean):void{ var bab:ByteArray; var ban:ByteArray; var bas:ByteArray; var i:int; var j:int; var bytes:int; var writeVal:int = a_value; if (a_isEncrypted){ if (a_type == int){ writeVal = (a_value ^ m_xorKey); } else { if (a_type == Boolean){ bab = new ByteArray(); bab.writeBoolean(a_value); bab.writeByte((Math.random() * 0xFF)); bab.writeByte((Math.random() * 0xFF)); bab.writeByte((Math.random() * 0xFF)); bab.position = 0; writeVal = (bab.readInt() ^ m_xorKey); } else { if (a_type == Number){ ban = new ByteArray(); ban.writeFloat(a_value); ban.position = 0; writeVal = (ban.readInt() ^ m_xorKey); } else { if (a_type == String){ bas = new ByteArray(); bas.writeUTF(a_value); i = (3 - (bas.length % 4)); while (i >= 0) { bas.writeByte((Math.random() * 0xFF)); i--; }; bas.position = 0; j = 0; while (j < (bas.length / 4)) { bytes = bas.readInt(); bas.position = (bas.position - 4); bas.writeInt((bytes ^ m_xorKey)); j++; }; m_so.data["ads"][hexStr(a_hexKey)] = bas; return; }; }; }; }; }; m_so.data["ads"][hexStr(a_hexKey)] = writeVal; } public function writeBool(a_var:String, a_value:Boolean):void{ write(a_var, a_value, Boolean); } public function createString(a_var:String, a_value:String, a_hasFake:Boolean=false):void{ create(a_var, a_value, String, a_hasFake); } private function writeFakeData(a_name:String, a_value):void{ m_so.data[a_name] = a_value; } public function readInt(a_var:String):int{ return (read(a_var, int)); } private function create(a_var:String, a_value, a_type:Class, a_hasFake:Boolean):void{ m_keys.push(a_var); var dictKey:uint = (m_hexKey + m_keys.length); if (readRealData(dictKey, a_type, true) != undefined){ return; }; writeRealData(dictKey, a_value, a_type, true); if (a_hasFake){ writeFakeData(a_var, a_value); }; } public function readNumber(a_var:String):Number{ return (read(a_var, Number)); } } }//package com.urbansquall.security
Section 19
//EntityContainer (com.urbansquall.serenity.EntityContainer) package com.urbansquall.serenity { import flash.utils.*; public class EntityContainer { private var m_entitiesToBeAdded:Array; private var m_entitiesToBeRemoved:Array; private var m_entities:Array; private var m_idMap:Dictionary; public function EntityContainer(){ super(); m_entities = new Array(); m_idMap = new Dictionary(); m_entitiesToBeAdded = new Array(); m_entitiesToBeRemoved = new Array(); } private function addNewEntities():void{ var entity:IEntity; var entityCount:int = m_entitiesToBeAdded.length; var entityIndex:int = (entityCount - 1); while (entityIndex >= 0) { entity = m_entitiesToBeAdded[entityIndex]; m_idMap[entity.id] = entity; m_entities.push(entity); entityIndex--; }; m_entitiesToBeAdded.splice(0); } public function addEntity(a_entity:IEntity):void{ var entity:IEntity; if (m_entitiesToBeAdded.indexOf(a_entity) != -1){ return; }; if (m_idMap[a_entity.id] != null){ return; }; var entityCount:int = m_entitiesToBeAdded.length; var entityIndex:int = (entityCount - 1); while (entityIndex >= 0) { entity = m_entitiesToBeAdded[entityIndex]; if (entity.id == a_entity.id){ return; }; entityIndex--; }; m_entitiesToBeAdded.push(a_entity); } public function removeEntity(a_entity:IEntity):void{ if (m_entitiesToBeRemoved.indexOf(a_entity) != -1){ return; }; if (m_idMap[a_entity.id] == null){ return; }; m_entitiesToBeRemoved.push(a_entity); } private function processAddAndRemoves():void{ addNewEntities(); removeOldEntities(); } private function removeOldEntities():void{ var entity:IEntity; var removalIndex:int; var entityCount:int = m_entitiesToBeRemoved.length; var entityIndex:int = (entityCount - 1); while (entityIndex >= 0) { entity = m_entitiesToBeRemoved[entityIndex]; removalIndex = m_entities.indexOf(entity); if (removalIndex >= 0){ m_entities.splice(removalIndex, 1); delete m_idMap[entity.id]; }; entityIndex--; }; m_entitiesToBeRemoved.splice(0); } public function getEntityAt(a_index:int):IEntity{ return (m_entities[a_index]); } public function get numEntities():int{ return (m_entities.length); } public function tick(a_deltaTime:Number):void{ var entity:IEntity; var entityCount:int = m_entities.length; var entityIndex:int = (entityCount - 1); while (entityIndex >= 0) { entity = m_entities[entityIndex]; entity.tick(a_deltaTime); entityIndex--; }; processAddAndRemoves(); } public function lookupEntity(a_id:String):IEntity{ return (m_idMap[a_id]); } public function dispose():void{ var entity:IEntity; if (m_entities == null){ return; }; processAddAndRemoves(); var entityCount:int = m_entities.length; var entityIndex:int = (entityCount - 1); while (entityIndex >= 0) { entity = m_entities[entityIndex]; delete m_idMap[entity.id]; entity.dispose(); entityIndex--; }; m_entities.splice(0); m_entities = null; m_entitiesToBeAdded = null; m_entitiesToBeRemoved = null; m_idMap = null; } } }//package com.urbansquall.serenity
Section 20
//IEntity (com.urbansquall.serenity.IEntity) package com.urbansquall.serenity { public interface IEntity { function get id():String; function tick(C:\Users\Marshall\Desktop\roboriot\lib\serenity;com\urbansquall\serenity;IEntity.as:Number):void; function dispose():void; } }//package com.urbansquall.serenity
Section 21
//BitmapAsset (mx.core.BitmapAsset) package mx.core { import flash.display.*; public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject { mx_internal static const VERSION:String = "3.0.0.0"; public function BitmapAsset(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){ super(bitmapData, pixelSnapping, smoothing); } public function get measuredWidth():Number{ if (bitmapData){ return (bitmapData.width); }; return (0); } public function get measuredHeight():Number{ if (bitmapData){ return (bitmapData.height); }; return (0); } public function setActualSize(newWidth:Number, newHeight:Number):void{ width = newWidth; height = newHeight; } public function move(x:Number, y:Number):void{ this.x = x; this.y = y; } } }//package mx.core
Section 22
//FlexBitmap (mx.core.FlexBitmap) package mx.core { import flash.display.*; import mx.utils.*; public class FlexBitmap extends Bitmap { mx_internal static const VERSION:String = "3.0.0.0"; public function FlexBitmap(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){ var bitmapData = bitmapData; var pixelSnapping = pixelSnapping; var smoothing = smoothing; super(bitmapData, pixelSnapping, smoothing); name = NameUtil.createUniqueName(this); //unresolved jump var _slot1 = e; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 23
//FontAsset (mx.core.FontAsset) package mx.core { import flash.text.*; public class FontAsset extends Font implements IFlexAsset { mx_internal static const VERSION:String = "3.0.0.0"; public function FontAsset(){ super(); } } }//package mx.core
Section 24
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 25
//IFlexDisplayObject (mx.core.IFlexDisplayObject) package mx.core { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.accessibility.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get visible():Boolean; function get rotation():Number; function localToGlobal(void:Point):Point; function get name():String; function set width(flash.display:Number):void; function get measuredHeight():Number; function get blendMode():String; function get scale9Grid():Rectangle; function set name(flash.display:String):void; function set scaleX(flash.display:Number):void; function set scaleY(flash.display:Number):void; function get measuredWidth():Number; function get accessibilityProperties():AccessibilityProperties; function set scrollRect(flash.display:Rectangle):void; function get cacheAsBitmap():Boolean; function globalToLocal(void:Point):Point; function get height():Number; function set blendMode(flash.display:String):void; function get parent():DisplayObjectContainer; function getBounds(String:DisplayObject):Rectangle; function get opaqueBackground():Object; function set scale9Grid(flash.display:Rectangle):void; function setActualSize(_arg1:Number, _arg2:Number):void; function set alpha(flash.display:Number):void; function set accessibilityProperties(flash.display:AccessibilityProperties):void; function get width():Number; function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean; function set cacheAsBitmap(flash.display:Boolean):void; function get scaleX():Number; function get scaleY():Number; function get scrollRect():Rectangle; function get mouseX():Number; function get mouseY():Number; function set height(flash.display:Number):void; function set mask(flash.display:DisplayObject):void; function getRect(String:DisplayObject):Rectangle; function get alpha():Number; function set transform(flash.display:Transform):void; function move(_arg1:Number, _arg2:Number):void; function get loaderInfo():LoaderInfo; function get root():DisplayObject; function hitTestObject(mx.core:IFlexDisplayObject/mx.core:IFlexDisplayObject:stage/get:DisplayObject):Boolean; function set opaqueBackground(flash.display:Object):void; function set visible(flash.display:Boolean):void; function get mask():DisplayObject; function set x(flash.display:Number):void; function set y(flash.display:Number):void; function get transform():Transform; function set filters(flash.display:Array):void; function get x():Number; function get y():Number; function get filters():Array; function set rotation(flash.display:Number):void; function get stage():Stage; } }//package mx.core
Section 26
//IRepeaterClient (mx.core.IRepeaterClient) package mx.core { public interface IRepeaterClient { function get instanceIndices():Array; function set instanceIndices(E:\dev\3.0.3\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function get isDocument():Boolean; function set repeaters(E:\dev\3.0.3\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function initializeRepeaterArrays(E:\dev\3.0.3\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void; function get repeaters():Array; function set repeaterIndices(E:\dev\3.0.3\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void; function get repeaterIndices():Array; } }//package mx.core
Section 27
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 28
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "3.0.0.0"; public function SoundAsset(){ super(); } } }//package mx.core
Section 29
//NameUtil (mx.utils.NameUtil) package mx.utils { import flash.display.*; import mx.core.*; import flash.utils.*; public class NameUtil { mx_internal static const VERSION:String = "3.0.0.0"; private static var counter:int = 0; public static function displayObjectToString(displayObject:DisplayObject):String{ var result:String; var s:String; var indices:Array; var o:DisplayObject = displayObject; while (o != null) { if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){ break; }; s = o.name; if ((o is IRepeaterClient)){ indices = IRepeaterClient(o).instanceIndices; if (indices){ s = (s + (("[" + indices.join("][")) + "]")); }; }; result = ((result == null)) ? s : ((s + ".") + result); o = o.parent; }; return (result); } public static function createUniqueName(object:Object):String{ if (!object){ return (null); }; var name:String = getQualifiedClassName(object); var index:int = name.indexOf("::"); if (index != -1){ name = name.substr((index + 2)); }; var charCode:int = name.charCodeAt((name.length - 1)); if ((((charCode >= 48)) && ((charCode <= 57)))){ name = (name + "_"); }; return ((name + counter++)); } } }//package mx.utils
Section 30
//AlarmEffect (AlarmEffect) package { import flash.media.*; public dynamic class AlarmEffect extends Sound { } }//package
Section 31
//Animations (Animations) package { import flash.geom.*; import com.urbansquall.ginger.*; public class Animations extends AnimationPlayerFactory { private static var s_instance:Animations = null; public function Animations(){ super(); } private static function createColorBot(a_botidx:int):AnimationPlayer{ var bw:int = Block.s_blockSize; var bh:int = Block.s_blockSize; var player:AnimationPlayer = new AnimationPlayer(); var stillAnimation:Animation = AnimationBuilder.importStrip(30, AssetManager.RobotBitmap.bitmapData, bw, bh, 1, 0, (bh * a_botidx)); stillAnimation.changeAllOffsets(0, 0); player.addAnimation("still", stillAnimation); var waveAnimation:Animation = AnimationBuilder.importStrip(30, AssetManager.RobotBitmap.bitmapData, bw, bh, 4, 0, (bh * a_botidx)); waveAnimation.changeAllOffsets(0, 0); player.addAnimation("wave", waveAnimation); var deathAnimation:Animation = new Animation(30); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((0 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((1 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((0 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((1 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((0 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((2 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((3 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((4 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((5 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((6 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((7 * bw), ((a_botidx + 1) * bh), bw, bh), 0, 0); deathAnimation.isLooping = false; player.addAnimation("death", deathAnimation); var eyesAnimation:Animation = new Animation(1); eyesAnimation.addFrame(1, AssetManager.RobotEyesBitmap.bitmapData, new Rectangle((0 * bw), (a_botidx * bh), bw, bh), 0, 0); player.addAnimation("eyes", eyesAnimation); return (player); } private static function createCrossPowerUp():AnimationPlayer{ var player:AnimationPlayer = new AnimationPlayer(); var a:Animation = AnimationBuilder.importStrip(30, AssetManager.RobotBitmap.bitmapData, Block.s_blockSize, Block.s_blockSize, 8, 0, (11 * Block.s_blockSize)); a.changeAllOffsets(0, 0); a.isLooping = true; player.addAnimation("still", a); return (player); } private static function createBombPowerUp():AnimationPlayer{ var player:AnimationPlayer = new AnimationPlayer(); var a:Animation = AnimationBuilder.importStrip(30, AssetManager.RobotBitmap.bitmapData, Block.s_blockSize, Block.s_blockSize, 8, 0, (6 * Block.s_blockSize)); a.changeAllOffsets(0, 0); a.isLooping = true; player.addAnimation("still", a); return (player); } private static function createRowPowerUp():AnimationPlayer{ var player:AnimationPlayer = new AnimationPlayer(); var a:Animation = AnimationBuilder.importStrip(30, AssetManager.RobotBitmap.bitmapData, Block.s_blockSize, Block.s_blockSize, 8, 0, (12 * Block.s_blockSize)); a.changeAllOffsets(0, 0); a.isLooping = true; player.addAnimation("still", a); return (player); } private static function createColumnPowerUp():AnimationPlayer{ var player:AnimationPlayer = new AnimationPlayer(); var a:Animation = AnimationBuilder.importStrip(30, AssetManager.RobotBitmap.bitmapData, Block.s_blockSize, Block.s_blockSize, 8, 0, (13 * Block.s_blockSize)); a.changeAllOffsets(0, 0); a.isLooping = true; player.addAnimation("still", a); return (player); } private static function init():void{ s_instance.register("explosion", createExplosion()); var bot_idx:int; while (bot_idx < 5) { s_instance.register(ColorBlock.s_animationNames[bot_idx], createColorBot(bot_idx)); bot_idx++; }; s_instance.register("wildcardbot", createWildCardBot()); s_instance.register("rowpowerup", createRowPowerUp()); s_instance.register("columnpowerup", createColumnPowerUp()); s_instance.register("crosspowerup", createCrossPowerUp()); s_instance.register("bigpowerup", createBigPowerUp()); s_instance.register("bombpowerup", createBombPowerUp()); s_instance.register("active_smartbomb", createActiveSmartbomb()); s_instance.register("disabled_smartbomb", createDisabledSmartbomb()); } private static function createWildCardBot():AnimationPlayer{ var bw:int = Block.s_blockSize; var bh:int = Block.s_blockSize; var player:AnimationPlayer = new AnimationPlayer(); var stillAnimation:Animation = AnimationBuilder.importStrip(30, AssetManager.RobotBitmap.bitmapData, bw, bh, 6, 0, (5 * bh)); stillAnimation.changeAllOffsets(0, 0); stillAnimation.isLooping = true; player.addAnimation("still", stillAnimation); var deathAnimation:Animation = new Animation(30); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((0 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((1 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((0 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((1 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((0 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((2 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((3 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((4 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((5 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((6 * bw), 0, bw, bh), 0, 0); deathAnimation.addFrame(1, AssetManager.RobotDeathBitmap.bitmapData, new Rectangle((7 * bw), 0, bw, bh), 0, 0); deathAnimation.isLooping = false; player.addAnimation("death", deathAnimation); return (player); } private static function createDisabledSmartbomb():AnimationPlayer{ var player:AnimationPlayer = new AnimationPlayer(); var a:Animation = AnimationBuilder.importStrip(30, new AssetManager.LockedSmartBombPNG().bitmapData, 30, 30, 1); a.changeAllOffsets(0, 0); a.isLooping = true; player.addAnimation("still", a); return (player); } public static function get instance():Animations{ if (s_instance == null){ s_instance = new (Animations); init(); }; return (s_instance); } private static function createActiveSmartbomb():AnimationPlayer{ var player:AnimationPlayer = new AnimationPlayer(); var a:Animation = new Animation(10); a.addFrame(1, AssetManager.SmartBombBitmap.bitmapData, new Rectangle(0, 0, 30, 30), 0, 0); a.addFrame(4, AssetManager.SmartBombBitmap.bitmapData, new Rectangle(30, 0, 30, 30), 0, 0); a.isLooping = true; player.addAnimation("still", a); return (player); } private static function createExplosion():AnimationPlayer{ var ew:int = Explosion.s_explosionWidth; var eh:int = Explosion.s_explosionHeight; var player:AnimationPlayer = new AnimationPlayer(); var animation:Animation = new Animation(60); animation.addFrame(2, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((0 * ew), (0 * eh), ew, eh), 0, 0); animation.addFrame(2, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((1 * ew), (0 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((2 * ew), (0 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((3 * ew), (0 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((0 * ew), (1 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((1 * ew), (1 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((2 * ew), (1 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((3 * ew), (1 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((0 * ew), (2 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((1 * ew), (2 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((2 * ew), (2 * eh), ew, eh), 0, 0); animation.addFrame(3, AssetManager.ExplosionBitmap.bitmapData, new Rectangle((3 * ew), (2 * eh), ew, eh), 0, 0); animation.isLooping = false; animation.changeAllOffsets(0, 0); player.addAnimation("explode", animation); return (player); } private static function createBigPowerUp():AnimationPlayer{ var player:AnimationPlayer = new AnimationPlayer(); var a:Animation = AnimationBuilder.importStrip(30, AssetManager.RobotBitmap.bitmapData, Block.s_blockSize, Block.s_blockSize, 8, 0, (14 * Block.s_blockSize)); a.changeAllOffsets(0, 0); a.isLooping = true; player.addAnimation("still", a); return (player); } } }//package
Section 32
//AssassinationGame (AssassinationGame) package { import flash.events.*; import flash.display.*; import flash.media.*; import com.urbansquall.serenity.*; import com.urbansquall.security.*; import flash.text.*; import flash.filters.*; import caurina.transitions.*; public class AssassinationGame extends Sprite { private var m_seenAssassinationTutorial:Boolean; private var m_toolTips:Sprite; private var m_tutorialQueue:Array; private var m_pauseSprite:Sprite; private var m_waveIndex:int; private var m_innocentCount:safeint; private var m_missionBoxPlaceholder:Sprite; private var m_timerSprite:TimerBar; private var m_spotlight:Sprite; private var m_bgLoop:LoopingSound; private var m_spotLayer:Sprite; private var m_blocks:EntityContainer; private var m_scope:Bitmap; private var m_safeLevel:safeint; private var m_container:Sprite; private var m_targets:Array; private var m_paused:Boolean; private var m_background:Sprite; private var m_fxSprite:Sprite; private var m_main:Main; private var m_targetGraphics:Array; private var m_timerContainer:Sprite; private var m_score:ScoreDisplay; private var m_botsKilledPreviously:Array; private var m_blockSprite:Sprite; private var m_levelLabel:CustomTextField; private var m_fx:EntityContainer; private var m_blockArray:Array; private var m_interface:Sprite; private var m_showingTutorial:Boolean; private var m_leveling:Boolean; private var m_waveTime:int; private var m_deltaTimer:DeltaTimer; private static const c_boardHeight:int = 474; private static const c_waveTime:int = 1000; private static const c_maxTime:int = 17000; private static const c_boardWidth:int = 520; public function AssassinationGame(a_main:Main){ var a_main = a_main; super(); m_main = a_main; m_paused = false; m_leveling = false; m_showingTutorial = false; m_safeLevel = new safeint(0); m_fx = new EntityContainer(); m_blocks = new EntityContainer(); m_targets = new Array(null, null, null, null, null); m_targetGraphics = new Array(null, null, null, null, null); createContainerSprite(); createBgSprite(); createBlockSprite(); m_spotLayer = new Sprite(); m_spotLayer.cacheAsBitmap = true; m_spotLayer.mouseEnabled = false; m_spotLayer.blendMode = BlendMode.LAYER; this.addChild(m_spotLayer); var black:Sprite = new Sprite(); black.cacheAsBitmap = true; black.mouseEnabled = false; black.graphics.beginFill(0); black.graphics.drawRect(0, 0, 640, 480); black.graphics.endFill(); m_spotLayer.addChild(black); m_spotlight = createSpotlight(); m_spotLayer.addChild(m_spotlight); m_scope = new AssetManager.ScopePNG(); addChild(m_scope); this.addEventListener(MouseEvent.MOUSE_MOVE, updateSpotlight); createFxSprite(); createInterface(); m_botsKilledPreviously = new Array(0, 0, 0, 0, 0); m_innocentCount = new safeint(0); m_bgLoop = new LoopingSound(SoundManager.s_assassinationLoop); m_bgLoop.startLoop(); m_tutorialQueue = new Array(); startLevel(); m_seenAssassinationTutorial = Main.s_safeSolManager.readBool(Main.tutAss); if (((true) || (!(m_seenAssassinationTutorial)))){ m_seenAssassinationTutorial = true; Main.s_safeSolManager.writeBool(Main.tutAss, true); Tweener.addTween(this, {time:1.25, onComplete:function ():void{ push_tutorial(new AssetManager.HowToPlayAssassinationPNG()); }}); }; } private function addScoreLabel(a_bot:ColorBlock, a_value:int):void{ m_score.score = (m_score.score + a_value); var sl:ScoreLabel = new ScoreLabel(a_value); m_fxSprite.addChild(sl); sl.x = a_bot.x; sl.y = a_bot.y; Tweener.addTween(sl, {y:(sl.y - 100), time:1, transition:"linear"}); Tweener.addTween(sl, {alpha:0.3, time:0.5, delay:0.25, transition:"linear", onComplete:Tweens.removeOnComplete}); } private function createBgSprite():void{ m_background = new Sprite(); m_background.graphics.beginBitmapFill(AssetManager.BackgroundBitmap.bitmapData); m_background.graphics.drawRect(0, 0, c_boardWidth, c_boardHeight); m_background.graphics.endFill(); m_container.addChild(m_background); } private function createContainerSprite():void{ m_container = new Sprite(); addChild(m_container); m_container.x = ((640 - c_boardWidth) - 22); } private function unpause():void{ Tweener.resumeAllTweens(); m_paused = false; m_pauseSprite.visible = false; m_blockSprite.mouseChildren = true; } private function botClicked(a_me:MouseEvent):void{ var idx:int; if (!(a_me.target is ColorBlock)){ return; }; SoundManager.s_surgeSound.play(0, 0, new SoundTransform(0.4)); var bot:ColorBlock = (a_me.target as ColorBlock); bot.playAnimation("death"); bot.onComplete = removeOnComplete(bot); Tweener.removeTweens(bot); bot.removeEventListener(MouseEvent.MOUSE_DOWN, botClicked); bot.mouseEnabled = false; m_botsKilledPreviously[bot.index] = (m_botsKilledPreviously[bot.index] + 1); var inno = 1; var val:int = (-5 * (m_safeLevel.val - 1)); if (m_targets[bot.index] === bot){ m_botsKilledPreviously[bot.index] = (m_botsKilledPreviously[bot.index] - 1); inno = 0; val = (10 * m_safeLevel.val); killTarget(bot.index); } else { idx = 0; while (idx < 5) { if (m_targets[idx] != null){ hilightTarget(m_targets[idx], Math.max(0.2, (0.8 - (0.1 * m_safeLevel.val)))); }; idx++; }; }; if (val != 0){ addScoreLabel(bot, val); }; m_innocentCount.val = (m_innocentCount.val + inno); } private function depthSortBlocks():void{ var i:int; while (i < m_blocks.numEntities) { m_blockArray[i] = m_blocks.getEntityAt(i); i++; }; m_blockArray.sortOn("y", Array.NUMERIC); var j:int; while (j < m_blockArray.length) { m_blockSprite.swapChildrenAt(j, m_blockSprite.getChildIndex(m_blockArray[j])); j++; }; } private function killTarget(a_idx:int):void{ var elim:Bitmap; var a_idx = a_idx; flashScreen(); addExplosionAt(m_targets[a_idx]); SoundManager.s_explosionEffect.play(); m_targets[a_idx] = null; var target:ColorBlock = (m_targetGraphics[a_idx] as ColorBlock); elim = new AssetManager.TargetEliminatedPNG(); m_interface.addChild(elim); var x_final:int = ((target.x + ((40 - elim.width) / 2)) - 3); var y_final:int = (target.y + ((40 - elim.height) / 2)); elim.smoothing = true; elim.scaleX = 5; elim.scaleY = 5; elim.x = ((target.x + ((40 - elim.width) / 2)) - 3); elim.y = (target.y + ((40 - elim.height) / 2)); Tweener.addTween(elim, {x:x_final, y:y_final, scaleX:1, scaleY:1, time:1.5, transition:"easeInQuad", onComplete:function ():void{ if (elim.stage != null){ SoundManager.s_clearSounds[0].play(); }; }}); } private function createTimer():void{ m_deltaTimer = new DeltaTimer(); m_deltaTimer.reset(); m_timerSprite = new TimerBar(c_maxTime, 20, 480, 0); m_timerSprite.timeRemaining = (c_maxTime - 1); m_timerContainer.addChild(m_timerSprite); m_timerSprite.x = (640 - m_timerSprite.width); addEventListener(Event.ENTER_FRAME, tick); updateTimeDisplay(); m_waveTime = c_waveTime; m_waveIndex = 0; } private function createInterface():void{ m_timerContainer = new Sprite(); addChild(m_timerContainer); m_interface = new Sprite(); m_interface.mouseEnabled = false; m_interface.addChild(new AssetManager.AssassinationOverlayPNG()); addChild(m_interface); createScore(); var pauseButton:RegularButton = new RegularButton(AssetManager.PauseButtonPNG); m_interface.addChild(pauseButton); pauseButton.x = 1; pauseButton.y = 338; pauseButton.height = 28; pauseButton.width = 90; pauseButton.addEventListener(MouseEvent.CLICK, function (a_event:Event):void{ togglePause(); }); var pause_msg:CustomTextField = new CustomTextField("PAUSED", 0, 48, true); m_pauseSprite = new Sprite(); m_pauseSprite.mouseEnabled = false; m_pauseSprite.mouseChildren = false; m_pauseSprite.graphics.beginFill(0); m_pauseSprite.graphics.drawRect(0, 0, m_background.width, m_background.height); m_pauseSprite.graphics.endFill(); m_fxSprite.addChild(m_pauseSprite); m_pauseSprite.addChild(pause_msg); pause_msg.x = ((m_background.width - pause_msg.width) / 2); pause_msg.y = ((m_background.height - pause_msg.height) / 2); m_pauseSprite.visible = false; m_toolTips = new Sprite(); m_toolTips.mouseEnabled = false; addChild(m_toolTips); } private function updateSpotlight(a_event:MouseEvent):void{ if (m_paused){ return; }; Tweener.addTween(m_spotlight, {alpha:0, time:0.2, transition:"linear", onComplete:Tweens.removeOnComplete}); m_spotlight = createSpotlight(); m_spotLayer.addChild(m_spotlight); m_spotlight.x = a_event.stageX; m_spotlight.y = a_event.stageY; m_scope.x = (a_event.stageX - (m_scope.width / 2)); m_scope.y = (a_event.stageY - (m_scope.height / 2)); } private function createBlockSprite():void{ m_blockSprite = new Sprite(); m_container.addChild(m_blockSprite); } private function show_tutorial(a_bmp:Bitmap):void{ var black:Sprite; var btn:RegularButton; var a_bmp = a_bmp; m_showingTutorial = true; black = new Sprite(); black.graphics.beginFill(0, 1); black.graphics.drawRect(0, 0, width, height); black.graphics.endFill(); black.alpha = 0.7; addChild(black); pause(); addChild(a_bmp); a_bmp.x = ((640 - a_bmp.width) / 2); a_bmp.y = 150; btn = new RegularButton(AssetManager.ContinueButtonPNG); addChild(btn); btn.x = ((640 - btn.width) / 2); btn.y = (a_bmp.getBounds(this).bottom + 2); var rem:Function = function (a_event:MouseEvent):void{ removeChild(black); removeChild(a_bmp); removeChild(btn); Tweener.removeTweens(black); unpause(); m_showingTutorial = false; }; btn.addEventListener(MouseEvent.CLICK, rem); } private function hilightTarget(a_bot:ColorBlock, a_time:Number):void{ var hilight:ColorBlock; var a_bot = a_bot; var a_time = a_time; hilight = new ColorBlock(a_bot.index, false); hilight.playAnimation("eyes"); hilight.filters = [new GlowFilter()]; a_bot.filters = [new GlowFilter()]; m_fx.addEntity(hilight); m_fxSprite.addChild(hilight); hilight.x = a_bot.x; hilight.y = a_bot.y; Tweener.addTween(a_bot, {time:a_time, onComplete:function ():void{ a_bot.filters = []; }}); Tweener.addTween(hilight, {time:a_time, transition:"linear", onUpdate:function ():void{ hilight.x = a_bot.x; hilight.y = a_bot.y; }, onComplete:removeOnComplete(hilight)}); } private function createSpotlight():Sprite{ var spotlight:Sprite = new Sprite(); spotlight.blendMode = BlendMode.ERASE; spotlight.cacheAsBitmap = true; spotlight.mouseEnabled = false; spotlight.graphics.beginFill(0xFFFFFF); spotlight.graphics.drawCircle(0, 0, 85); spotlight.graphics.endFill(); spotlight.filters = [new GlowFilter(0xFFFFFF, 1, 32, 32, 8)]; return (spotlight); } private function endLevel():void{ var disp:DisplayObject; var j:int; var target:ColorBlock; var o:DisplayObject; var cb:ColorBlock; flashScreen(); SoundManager.s_levelUpEffect.play(); var i:int; while (i < 6) { target = (m_targetGraphics[i] as ColorBlock); m_targetGraphics[i] = null; if (target != null){ m_interface.removeChild(target); }; i++; }; var xs:Array = new Array(); var if_idx:int; while (if_idx < m_interface.numChildren) { o = m_interface.getChildAt(if_idx); if ((o is AssetManager.TargetEliminatedPNG)){ xs.push(o); }; if_idx++; }; for each (disp in xs) { m_interface.removeChild(disp); }; j = 0; while (j < m_blocks.numEntities) { cb = (m_blocks.getEntityAt(j) as ColorBlock); if (cb != null){ m_blockSprite.removeChild(cb); Tweener.removeTweens(cb); }; j++; }; if (m_safeLevel.val == 15){ m_main.updateMinStat(Main.assMinInno, m_innocentCount.val); }; m_blocks.dispose(); m_blocks = new EntityContainer(); setLevel((m_safeLevel.val + 1)); } private function startLevel():void{ var num:int; var b:ColorBlock; levelUpMessage(); createTimer(); var max_index:int = (2 + Math.min(3, (m_safeLevel.val / 4))); var count:int; var diff_idx:int; while (diff_idx < max_index) { num = 0; while (num < (3 + (m_botsKilledPreviously[diff_idx] * 2))) { count = (count + 1); b = new ColorBlock(diff_idx); m_blocks.addEntity(b); if (num == 0){ m_targets[diff_idx] = b; hilightTarget(b, 0.3); }; m_blockSprite.addChild(b); randomLocation(b); randomDestination(b); b.addEventListener(MouseEvent.MOUSE_DOWN, botClicked); num++; }; diff_idx++; }; m_blockArray = new Array(count); createTargets(max_index); updateTargets(); } private function randomLocation(a_block:ColorBlock):void{ a_block.x = RandomUtils.RandomInt((0 - (a_block.width / 2)), (m_background.width - (a_block.width / 2))); a_block.y = RandomUtils.RandomInt((0 - (a_block.height / 2)), (m_background.height - (a_block.height / 2))); } private function setLevel(a_level:int):void{ m_safeLevel.val = a_level; m_levelLabel.text = ("" + m_safeLevel.val); } private function randomDestination(a_block:ColorBlock):void{ var a_block = a_block; Tweener.addTween(a_block, {x:RandomUtils.RandomInt(3, ((m_background.width - a_block.width) - 3)), y:RandomUtils.RandomInt(3, ((m_background.height - a_block.height) - 3)), time:RandomUtils.RandomInt(6, 10), transition:"linear", onComplete:function ():void{ randomDestination(a_block); }}); } private function createFxSprite():void{ var mask:Sprite = new Sprite(); mask.graphics.beginFill(0); mask.graphics.drawRect(0, 0, m_background.width, m_background.height); mask.graphics.endFill(); addChild(mask); mask.x = m_container.x; mask.y = m_container.y; m_fxSprite = new Sprite(); addChild(m_fxSprite); m_fxSprite.mask = mask; m_fxSprite.x = m_container.x; m_fxSprite.y = m_container.y; m_fxSprite.mouseEnabled = false; m_fxSprite.mouseChildren = false; } private function levelUpMessage():void{ var l:CustomTextField = new CustomTextField(("LEVEL " + m_safeLevel.val), 0xFF0000, 70); l.filters = [new GlowFilter(0xFFFFFF, 1, 4, 4, 4)]; l.background = false; l.mouseEnabled = false; l.x = (320 - (l.width / 2)); l.y = 480; addChild(l); Tweener.addTween(l, {y:(240 - (l.height / 2)), time:1, transition:"easeOutExpo"}); Tweener.addTween(l, {y:-(l.height), time:1, delay:1, transition:"easeInExpo", onComplete:Tweens.removeOnComplete}); } private function updateTimeDisplay():void{ m_timerSprite.updateBar(); } private function removeOnComplete(a_ent:SpriteEntity):Function{ var a_ent = a_ent; return (function ():void{ a_ent.parent.removeChild(this); m_blockArray.splice(m_blockArray.indexOf(a_ent), 1); m_blocks.removeEntity(this); }); } private function tick(a_event:Event):void{ var deltaTime:int = m_deltaTimer.calculateDeltaTime(); m_blocks.tick(deltaTime); m_fx.tick(deltaTime); if (((m_paused) || (m_showingTutorial))){ return; }; if ((((m_tutorialQueue.length > 0)) && (!(m_showingTutorial)))){ show_tutorial(m_tutorialQueue.shift()); }; m_timerSprite.updateTime(deltaTime); m_waveTime = (m_waveTime - deltaTime); if (m_waveTime < 0){ blockWave(); m_waveTime = c_waveTime; }; depthSortBlocks(); if (levelComplete()){ endLevel(); startLevel(); }; if (m_timerSprite.timeRemaining < 0){ gameOver(); }; updateTimeDisplay(); } private function createTargets(a_max_idx:int):void{ var bot:ColorBlock; var eyes:ColorBlock; var i:int; while (i < a_max_idx) { bot = new ColorBlock(i); eyes = new ColorBlock(i, false); eyes.playAnimation("eyes"); bot.addChild(eyes); m_targetGraphics[i] = bot; m_interface.addChild(m_targetGraphics[i]); i++; }; } private function push_tutorial(a_bmp:Bitmap):void{ m_tutorialQueue.push(a_bmp); } private function levelComplete():Boolean{ var complete:Boolean; var i:int; while (i < 6) { if (m_targets[i] != null){ complete = false; }; i++; }; return (complete); } private function gameOver():void{ m_bgLoop.stopLoop(); SoundManager.s_gameOverSound.play(); removeEventListener(Event.ENTER_FRAME, tick); m_main.createAssassinationGameOver(m_safeLevel.val, m_score.score); } private function addExplosionAt(a_bot:ColorBlock):void{ var e:Explosion = new Explosion(); e.x = (a_bot.x - ((e.width - Block.s_blockSize) / 2)); e.y = (((a_bot.y + Block.s_blockSize) - e.height) + 10); m_fxSprite.addChild(e); m_fx.addEntity(e); e.onComplete = removeOnComplete(e); } private function togglePause():void{ if (m_paused){ unpause(); } else { pause(); }; } private function createScore():void{ m_score = new ScoreDisplay(); m_interface.addChild(m_score); m_score.y = (480 - m_score.height); m_levelLabel = new CustomTextField("", 0, 22); m_interface.addChild(m_levelLabel); m_levelLabel.background = false; m_levelLabel.y = 393; setLevel((m_safeLevel.val + 1)); } private function updateTargets():void{ var target:ColorBlock; var i:int; while (i < 6) { target = (m_targetGraphics[i] as ColorBlock); if (target != null){ target.x = 28; target.y = (38 + ((target.height + 7) * i)); }; i++; }; } private function blockWave():void{ var wave_idx:int; var wave_block:ColorBlock; var num_wave:int = (m_blocks.numEntities / 4); var i:int; while (i < num_wave) { wave_idx = RandomUtils.RandomInt(0, (m_blocks.numEntities - 1)); wave_block = (m_blocks.getEntityAt(wave_idx) as ColorBlock); if (wave_block == null){ trace("null wave block"); } else { wave_block.playAnimation("wave"); }; i++; }; } private function flashScreen():void{ var f:Sprite = new Sprite(); f.graphics.beginFill(0xFFFFFF); f.graphics.drawRect(0, 0, 640, 480); f.graphics.endFill(); addChild(f); Tweener.addTween(f, {alpha:0, time:0.2, transition:"easeInQuad", onComplete:Tweens.removeOnComplete}); } private function pause():void{ Tweener.pauseAllTweens(); m_paused = true; m_pauseSprite.visible = true; m_blockSprite.mouseChildren = false; } } }//package
Section 33
//AssassinationGameOver (AssassinationGameOver) package { import flash.events.*; import flash.display.*; import flash.filters.*; public class AssassinationGameOver extends Sprite { private var m_controller:Main; public function AssassinationGameOver(a_level:int, a_score:int, a_controller:Main){ var btn:RegularButton; var rem:Function; var a_level = a_level; var a_score = a_score; var a_controller = a_controller; super(); m_controller = a_controller; var filter:GlowFilter = new GlowFilter(0xFFFFFF, 0.7, 12, 12, 4); addChild(new AssetManager.AssassinationGameOverPNG()); var score:CustomTextField = new CustomTextField(("Score : " + a_score), 0, 28, true); addChild(score); score.x = ((640 - score.width) / 2); score.y = 150; var level:CustomTextField = new CustomTextField(("Level : " + a_level), 0, 28, true); addChild(level); level.x = ((640 - level.width) / 2); level.y = (score.getBounds(this).bottom + 5); m_controller.updateMaxStat(Main.assHighScore, a_score); m_controller.updateMaxStat(Main.assHighLevel, a_level); var str:String = ("High Score: " + Main.s_safeSolManager.readInt(Main.assHighScore)); var assHighScore:CustomTextField = new CustomTextField(str, 0, 28, true); addChild(assHighScore); assHighScore.x = ((640 - assHighScore.width) / 2); assHighScore.y = (level.getBounds(this).bottom + 2); str = ("Best Level: " + Main.s_safeSolManager.readInt(Main.assHighLevel)); var assHighLevel:CustomTextField = new CustomTextField(str, 0, 28, true); addChild(assHighLevel); assHighLevel.x = ((640 - assHighLevel.width) / 2); assHighLevel.y = (assHighScore.getBounds(this).bottom + 2); btn = new RegularButton(AssetManager.MainMenuButtonPNG); addChild(btn); btn.x = ((640 - btn.width) / 2); btn.y = ((480 - btn.height) - 5); rem = function (a_event:MouseEvent):void{ btn.removeEventListener(MouseEvent.CLICK, rem); m_controller.createMainMenu(); }; btn.addEventListener(MouseEvent.CLICK, rem); } } }//package
Section 34
//AssassinationLoop (AssassinationLoop) package { import flash.media.*; public dynamic class AssassinationLoop extends Sound { } }//package
Section 35
//AssetManager (AssetManager) package { import flash.display.*; public class AssetManager { public static const PerimiterBitmap:Bitmap = new PerimiterPNG(); public static const RobotBitmap:Bitmap = new RobotPNG(); public static const RobotEyesBitmap:Bitmap = new RobotEyesPNG(); public static const BackgroundBitmap:Bitmap = new BackgroundPNG(); public static const RobotDeathBitmap:Bitmap = new RobotDeathPNG(); public static const interfaceFont:String = "AssetManager_interfaceFont"; public static const ExplosionBitmap:Bitmap = new ExplosionPNG(); public static const SmartBombBitmap:Bitmap = new ActiveSmartBombPNG(); public static var BackgroundPNG:Class = AssetManager_BackgroundPNG; public static var AssassinationButtonPNG:Class = AssetManager_AssassinationButtonPNG; public static var Score5MP3:Class = AssetManager_Score5MP3; public static var KongTitlePNG:Class = AssetManager_KongTitlePNG; public static var TargetEliminatedPNG:Class = AssetManager_TargetEliminatedPNG; public static var Score8MP3:Class = AssetManager_Score8MP3; public static var BonusAllAtOncePNG:Class = AssetManager_BonusAllAtOncePNG; public static var KongInGamePNG:Class = AssetManager_KongInGamePNG; public static var HowToPlayAssassinationPNG:Class = AssetManager_HowToPlayAssassinationPNG; public static var BonusBlueMatchPNG:Class = AssetManager_BonusBlueMatchPNG; public static var Score10MP3:Class = AssetManager_Score10MP3; public static var GameOverPNG:Class = AssetManager_GameOverPNG; public static var CreditsButtonPNG:Class = AssetManager_CreditsButtonPNG; public static var AssassinationOverlayPNG:Class = AssetManager_AssassinationOverlayPNG; public static var TitleBgPNG:Class = AssetManager_TitleBgPNG; public static var UrbanSquallPNG:Class = AssetManager_UrbanSquallPNG; public static var Score3MP3:Class = AssetManager_Score3MP3; public static var BonusOrangeMatchPNG:Class = AssetManager_BonusOrangeMatchPNG; public static var HowToLowTimePNG:Class = AssetManager_HowToLowTimePNG; public static var ScopePNG:Class = AssetManager_ScopePNG; public static var BonusRedMatchPNG:Class = AssetManager_BonusRedMatchPNG; public static var HowToScorePNG:Class = AssetManager_HowToScorePNG; public static var CreditsPNG:Class = AssetManager_CreditsPNG; public static var PauseButtonPNG:Class = AssetManager_PauseButtonPNG; public static var ActiveSmartBombPNG:Class = AssetManager_ActiveSmartBombPNG; public static var CrowdControlButtonPNG:Class = AssetManager_CrowdControlButtonPNG; public static var LockedSmartBombPNG:Class = AssetManager_LockedSmartBombPNG; public static var Score6MP3:Class = AssetManager_Score6MP3; public static var HowToBonusPNG:Class = AssetManager_HowToBonusPNG; public static var RobotDeathPNG:Class = AssetManager_RobotDeathPNG; public static var PutOnSiteButtonPNG:Class = AssetManager_PutOnSiteButtonPNG; public static var BonusGreenMatchPNG:Class = AssetManager_BonusGreenMatchPNG; public static var Score9MP3:Class = AssetManager_Score9MP3; public static var ContinueButtonPNG:Class = AssetManager_ContinueButtonPNG; public static var Score1MP3:Class = AssetManager_Score1MP3; public static var HowToLevelUpPNG:Class = AssetManager_HowToLevelUpPNG; public static var RobotPNG:Class = AssetManager_RobotPNG; public static var MainMenuButtonPNG:Class = AssetManager_MainMenuButtonPNG; public static var PlayButtonPNG:Class = AssetManager_PlayButtonPNG; public static var CrossHairPNG:Class = AssetManager_CrossHairPNG; public static var Score4MP3:Class = AssetManager_Score4MP3; public static var HowToPowerUpPNG:Class = AssetManager_HowToPowerUpPNG; public static var RobotEyesPNG:Class = AssetManager_RobotEyesPNG; public static var NextButtonPNG:Class = AssetManager_NextButtonPNG; public static var BonusChainPNG:Class = AssetManager_BonusChainPNG; public static var Score7MP3:Class = AssetManager_Score7MP3; public static var AssassinationGameOverPNG:Class = AssetManager_AssassinationGameOverPNG; public static var BonusPurpleMatchPNG:Class = AssetManager_BonusPurpleMatchPNG; public static var InGameOverlayPNG:Class = AssetManager_InGameOverlayPNG; public static var Score2MP3:Class = AssetManager_Score2MP3; public static var ExplosionPNG:Class = AssetManager_ExplosionPNG; public static var PerimiterPNG:Class = AssetManager_PerimiterPNG; public function AssetManager(){ super(); } } }//package
Section 36
//AssetManager_ActiveSmartBombPNG (AssetManager_ActiveSmartBombPNG) package { import mx.core.*; public class AssetManager_ActiveSmartBombPNG extends BitmapAsset { } }//package
Section 37
//AssetManager_AssassinationButtonPNG (AssetManager_AssassinationButtonPNG) package { import mx.core.*; public class AssetManager_AssassinationButtonPNG extends BitmapAsset { } }//package
Section 38
//AssetManager_AssassinationGameOverPNG (AssetManager_AssassinationGameOverPNG) package { import mx.core.*; public class AssetManager_AssassinationGameOverPNG extends BitmapAsset { } }//package
Section 39
//AssetManager_AssassinationOverlayPNG (AssetManager_AssassinationOverlayPNG) package { import mx.core.*; public class AssetManager_AssassinationOverlayPNG extends BitmapAsset { } }//package
Section 40
//AssetManager_BackgroundPNG (AssetManager_BackgroundPNG) package { import mx.core.*; public class AssetManager_BackgroundPNG extends BitmapAsset { } }//package
Section 41
//AssetManager_BonusAllAtOncePNG (AssetManager_BonusAllAtOncePNG) package { import mx.core.*; public class AssetManager_BonusAllAtOncePNG extends BitmapAsset { } }//package
Section 42
//AssetManager_BonusBlueMatchPNG (AssetManager_BonusBlueMatchPNG) package { import mx.core.*; public class AssetManager_BonusBlueMatchPNG extends BitmapAsset { } }//package
Section 43
//AssetManager_BonusChainPNG (AssetManager_BonusChainPNG) package { import mx.core.*; public class AssetManager_BonusChainPNG extends BitmapAsset { } }//package
Section 44
//AssetManager_BonusGreenMatchPNG (AssetManager_BonusGreenMatchPNG) package { import mx.core.*; public class AssetManager_BonusGreenMatchPNG extends BitmapAsset { } }//package
Section 45
//AssetManager_BonusOrangeMatchPNG (AssetManager_BonusOrangeMatchPNG) package { import mx.core.*; public class AssetManager_BonusOrangeMatchPNG extends BitmapAsset { } }//package
Section 46
//AssetManager_BonusPurpleMatchPNG (AssetManager_BonusPurpleMatchPNG) package { import mx.core.*; public class AssetManager_BonusPurpleMatchPNG extends BitmapAsset { } }//package
Section 47
//AssetManager_BonusRedMatchPNG (AssetManager_BonusRedMatchPNG) package { import mx.core.*; public class AssetManager_BonusRedMatchPNG extends BitmapAsset { } }//package
Section 48
//AssetManager_ContinueButtonPNG (AssetManager_ContinueButtonPNG) package { import mx.core.*; public class AssetManager_ContinueButtonPNG extends BitmapAsset { } }//package
Section 49
//AssetManager_CreditsButtonPNG (AssetManager_CreditsButtonPNG) package { import mx.core.*; public class AssetManager_CreditsButtonPNG extends BitmapAsset { } }//package
Section 50
//AssetManager_CreditsPNG (AssetManager_CreditsPNG) package { import mx.core.*; public class AssetManager_CreditsPNG extends BitmapAsset { } }//package
Section 51
//AssetManager_CrossHairPNG (AssetManager_CrossHairPNG) package { import mx.core.*; public class AssetManager_CrossHairPNG extends BitmapAsset { } }//package
Section 52
//AssetManager_CrowdControlButtonPNG (AssetManager_CrowdControlButtonPNG) package { import mx.core.*; public class AssetManager_CrowdControlButtonPNG extends BitmapAsset { } }//package
Section 53
//AssetManager_ExplosionPNG (AssetManager_ExplosionPNG) package { import mx.core.*; public class AssetManager_ExplosionPNG extends BitmapAsset { } }//package
Section 54
//AssetManager_GameOverPNG (AssetManager_GameOverPNG) package { import mx.core.*; public class AssetManager_GameOverPNG extends BitmapAsset { } }//package
Section 55
//AssetManager_HowToBonusPNG (AssetManager_HowToBonusPNG) package { import mx.core.*; public class AssetManager_HowToBonusPNG extends BitmapAsset { } }//package
Section 56
//AssetManager_HowToLevelUpPNG (AssetManager_HowToLevelUpPNG) package { import mx.core.*; public class AssetManager_HowToLevelUpPNG extends BitmapAsset { } }//package
Section 57
//AssetManager_HowToLowTimePNG (AssetManager_HowToLowTimePNG) package { import mx.core.*; public class AssetManager_HowToLowTimePNG extends BitmapAsset { } }//package
Section 58
//AssetManager_HowToPlayAssassinationPNG (AssetManager_HowToPlayAssassinationPNG) package { import mx.core.*; public class AssetManager_HowToPlayAssassinationPNG extends BitmapAsset { } }//package
Section 59
//AssetManager_HowToPowerUpPNG (AssetManager_HowToPowerUpPNG) package { import mx.core.*; public class AssetManager_HowToPowerUpPNG extends BitmapAsset { } }//package
Section 60
//AssetManager_HowToScorePNG (AssetManager_HowToScorePNG) package { import mx.core.*; public class AssetManager_HowToScorePNG extends BitmapAsset { } }//package
Section 61
//AssetManager_InGameOverlayPNG (AssetManager_InGameOverlayPNG) package { import mx.core.*; public class AssetManager_InGameOverlayPNG extends BitmapAsset { } }//package
Section 62
//AssetManager_interfaceFont (AssetManager_interfaceFont) package { import mx.core.*; public class AssetManager_interfaceFont extends FontAsset { } }//package
Section 63
//AssetManager_KongInGamePNG (AssetManager_KongInGamePNG) package { import mx.core.*; public class AssetManager_KongInGamePNG extends BitmapAsset { } }//package
Section 64
//AssetManager_KongTitlePNG (AssetManager_KongTitlePNG) package { import mx.core.*; public class AssetManager_KongTitlePNG extends BitmapAsset { } }//package
Section 65
//AssetManager_LockedSmartBombPNG (AssetManager_LockedSmartBombPNG) package { import mx.core.*; public class AssetManager_LockedSmartBombPNG extends BitmapAsset { } }//package
Section 66
//AssetManager_MainMenuButtonPNG (AssetManager_MainMenuButtonPNG) package { import mx.core.*; public class AssetManager_MainMenuButtonPNG extends BitmapAsset { } }//package
Section 67
//AssetManager_NextButtonPNG (AssetManager_NextButtonPNG) package { import mx.core.*; public class AssetManager_NextButtonPNG extends BitmapAsset { } }//package
Section 68
//AssetManager_PauseButtonPNG (AssetManager_PauseButtonPNG) package { import mx.core.*; public class AssetManager_PauseButtonPNG extends BitmapAsset { } }//package
Section 69
//AssetManager_PerimiterPNG (AssetManager_PerimiterPNG) package { import mx.core.*; public class AssetManager_PerimiterPNG extends BitmapAsset { } }//package
Section 70
//AssetManager_PlayButtonPNG (AssetManager_PlayButtonPNG) package { import mx.core.*; public class AssetManager_PlayButtonPNG extends BitmapAsset { } }//package
Section 71
//AssetManager_PutOnSiteButtonPNG (AssetManager_PutOnSiteButtonPNG) package { import mx.core.*; public class AssetManager_PutOnSiteButtonPNG extends BitmapAsset { } }//package
Section 72
//AssetManager_RobotDeathPNG (AssetManager_RobotDeathPNG) package { import mx.core.*; public class AssetManager_RobotDeathPNG extends BitmapAsset { } }//package
Section 73
//AssetManager_RobotEyesPNG (AssetManager_RobotEyesPNG) package { import mx.core.*; public class AssetManager_RobotEyesPNG extends BitmapAsset { } }//package
Section 74
//AssetManager_RobotPNG (AssetManager_RobotPNG) package { import mx.core.*; public class AssetManager_RobotPNG extends BitmapAsset { } }//package
Section 75
//AssetManager_ScopePNG (AssetManager_ScopePNG) package { import mx.core.*; public class AssetManager_ScopePNG extends BitmapAsset { } }//package
Section 76
//AssetManager_Score10MP3 (AssetManager_Score10MP3) package { import mx.core.*; public class AssetManager_Score10MP3 extends SoundAsset { } }//package
Section 77
//AssetManager_Score1MP3 (AssetManager_Score1MP3) package { import mx.core.*; public class AssetManager_Score1MP3 extends SoundAsset { } }//package
Section 78
//AssetManager_Score2MP3 (AssetManager_Score2MP3) package { import mx.core.*; public class AssetManager_Score2MP3 extends SoundAsset { } }//package
Section 79
//AssetManager_Score3MP3 (AssetManager_Score3MP3) package { import mx.core.*; public class AssetManager_Score3MP3 extends SoundAsset { } }//package
Section 80
//AssetManager_Score4MP3 (AssetManager_Score4MP3) package { import mx.core.*; public class AssetManager_Score4MP3 extends SoundAsset { } }//package
Section 81
//AssetManager_Score5MP3 (AssetManager_Score5MP3) package { import mx.core.*; public class AssetManager_Score5MP3 extends SoundAsset { } }//package
Section 82
//AssetManager_Score6MP3 (AssetManager_Score6MP3) package { import mx.core.*; public class AssetManager_Score6MP3 extends SoundAsset { } }//package
Section 83
//AssetManager_Score7MP3 (AssetManager_Score7MP3) package { import mx.core.*; public class AssetManager_Score7MP3 extends SoundAsset { } }//package
Section 84
//AssetManager_Score8MP3 (AssetManager_Score8MP3) package { import mx.core.*; public class AssetManager_Score8MP3 extends SoundAsset { } }//package
Section 85
//AssetManager_Score9MP3 (AssetManager_Score9MP3) package { import mx.core.*; public class AssetManager_Score9MP3 extends SoundAsset { } }//package
Section 86
//AssetManager_TargetEliminatedPNG (AssetManager_TargetEliminatedPNG) package { import mx.core.*; public class AssetManager_TargetEliminatedPNG extends BitmapAsset { } }//package
Section 87
//AssetManager_TitleBgPNG (AssetManager_TitleBgPNG) package { import mx.core.*; public class AssetManager_TitleBgPNG extends BitmapAsset { } }//package
Section 88
//AssetManager_UrbanSquallPNG (AssetManager_UrbanSquallPNG) package { import mx.core.*; public class AssetManager_UrbanSquallPNG extends BitmapAsset { } }//package
Section 89
//BiggestBlock (BiggestBlock) package { public class BiggestBlock extends Block { public function BiggestBlock(){ super(); buttonMode = true; m_player = Animations.instance.instantiate("bigpowerup"); addChild(m_player); toolTip = "Executes the biggest move."; } } }//package
Section 90
//BigMatchMission (BigMatchMission) package { import flash.display.*; import flash.geom.*; public class BigMatchMission extends Mission { private var m_icon:Bitmap; private var m_goal:int; private var m_complete:Boolean; public function BigMatchMission(a_maxIndex:int){ super(); m_goal = 25; m_complete = false; createLabel(); toolTip = (("Zap at least " + m_goal) + " bots at once"); } override public function get isComplete():Boolean{ return (m_complete); } public function createLabel():void{ m_icon = new AssetManager.BonusAllAtOncePNG(); addChild(m_icon); var label:CustomTextField = new CustomTextField("25", 0, c_missionFontSize); label.background = false; addChild(label); label.x = (((m_icon.width - label.width) / 2) - 3); label.y = (m_icon.getBounds(this).bottom - 10); } override public function update(a_columns:Array, a_rect:Rectangle):void{ if ((a_rect.width * a_rect.height) >= m_goal){ m_complete = true; }; } } }//package
Section 91
//Block (Block) package { import flash.events.*; import flash.display.*; import com.urbansquall.ginger.*; public class Block extends SpriteEntity { protected var m_onComplete:Function; protected var m_player:AnimationPlayer; protected var m_board:CrowdControlGame; protected var m_tileX:int; protected var m_tileY:int; public static const s_blockSize:uint = 40; private static var s_id_counter:int = 0; public function Block(hasShadow:Boolean=true){ var dropShadow:Sprite; var g:Graphics; super(); m_onComplete = null; m_id = ("Block_" + s_id_counter); s_id_counter = (s_id_counter + 1); if (hasShadow){ dropShadow = new Sprite(); g = dropShadow.graphics; g.beginFill(0, 0.4); g.drawEllipse(2, (s_blockSize - 6), (s_blockSize - 4), 8); g.endFill(); addChildAt(dropShadow, 0); }; } private function blockMouseDown(a_event:MouseEvent):void{ m_board.mouseDown(m_tileX, m_tileY); } private function blockMouseUp(a_event:MouseEvent):void{ m_board.mouseUp(m_tileX, m_tileY); } protected function animationChange(a_event:AnimationEvent):void{ if (((((!(a_event.begin)) && ((a_event.animationID == "death")))) && (!((m_onComplete == null))))){ m_player.removeEventListener(AnimationEvent.CHANGE, animationChange); m_onComplete(); }; } override public function tick(a_deltaTime:Number):void{ m_player.update(a_deltaTime); } private function blockMouseMove(a_event:MouseEvent):void{ m_board.mouseMove(m_tileX, m_tileY); } override public function dispose():void{ super.dispose(); unregisterEvents(); } public function unregisterEvents():void{ removeEventListener(MouseEvent.MOUSE_MOVE, blockMouseMove); removeEventListener(MouseEvent.MOUSE_DOWN, blockMouseDown); removeEventListener(MouseEvent.MOUSE_UP, blockMouseUp); } public function set onComplete(a_func:Function):void{ m_onComplete = a_func; } public function registerEvents(a_board:CrowdControlGame, a_tileX:int, a_tileY:int):void{ m_board = a_board; m_tileX = a_tileX; m_tileY = a_tileY; addEventListener(MouseEvent.MOUSE_MOVE, blockMouseMove); addEventListener(MouseEvent.MOUSE_DOWN, blockMouseDown); addEventListener(MouseEvent.MOUSE_UP, blockMouseUp); } public function playAnimation(a_animId:String):void{ m_player.play(a_animId); } public function equals(a_block:Block):Boolean{ return (true); } } }//package
Section 92
//BlockGenerator (BlockGenerator) package { public class BlockGenerator { public function BlockGenerator(){ super(); } public static function generateRandomColorBlock(a_maxIndex:int, a_probabilityOfLastIndex:Number=0):ColorBlock{ var idx:int; var n:Number = Math.random(); if (n < a_probabilityOfLastIndex){ idx = (a_maxIndex - 1); } else { idx = RandomUtils.RandomInt(0, (a_maxIndex - 1)); }; return (new ColorBlock(idx)); } } }//package
Section 93
//BonusAchievedEffect (BonusAchievedEffect) package { import flash.media.*; public dynamic class BonusAchievedEffect extends Sound { } }//package
Section 94
//CancelDragEffect (CancelDragEffect) package { import flash.media.*; public dynamic class CancelDragEffect extends Sound { } }//package
Section 95
//ChainMission (ChainMission) package { import flash.display.*; import flash.geom.*; public class ChainMission extends Mission { private var m_countText:CustomTextField; private var m_chain:Bitmap; private var m_prevRect:Rectangle; private var m_count:int; private static const c_goal:int = 5; public function ChainMission(a_maxIndex:int){ super(); m_count = c_goal; createCount(); updateDisplay(); toolTip = "Make matches with matches inside them"; } public function createCount():void{ m_chain = new AssetManager.BonusChainPNG(); addChild(m_chain); m_countText = new CustomTextField("", 0, c_missionFontSize); m_countText.background = false; addChild(m_countText); m_countText.x = ((m_chain.width - m_countText.width) / 2); m_countText.y = (m_chain.getBounds(this).bottom - 10); } override public function get isComplete():Boolean{ return ((m_count <= 0)); } override public function update(a_columns:Array, a_rect:Rectangle):void{ if (((!((m_prevRect == null))) && (m_prevRect.containsRect(a_rect)))){ m_count = (m_count - 1); }; m_prevRect = a_rect; updateDisplay(); } public function updateDisplay():void{ m_countText.text = ("x" + m_count); m_countText.x = ((m_chain.width - m_countText.width) / 2); } } }//package
Section 96
//ColorBlock (ColorBlock) package { import com.urbansquall.ginger.*; public class ColorBlock extends Block { private var m_index:uint; public static var s_animationNames:Array = new Array("bluebot", "redbot", "greenbot", "purplebot", "orangebot"); private static var s_matchColors:Array = new Array(4210943, 0xFF0000, 0xFF00, 0xFF00FF, 0xFFFF00); public function ColorBlock(a_index:int, hasShadow:Boolean=true){ super(hasShadow); m_index = a_index; m_player = Animations.instance.instantiate(s_animationNames[m_index]); m_player.play("still"); addChild(m_player); m_player.addEventListener(AnimationEvent.CHANGE, animationChange); } public function get index():uint{ return (m_index); } override public function playAnimation(a_animId:String):void{ if (m_player.currentAnimationID != "death"){ super.playAnimation(a_animId); }; } public function get matchColor():uint{ return (s_matchColors[m_index]); } override public function equals(a_block:Block):Boolean{ if ((a_block is ColorBlock)){ return (((a_block as ColorBlock).index == this.index)); }; return (false); } } }//package
Section 97
//ColumnBlock (ColumnBlock) package { import flash.display.*; public class ColumnBlock extends Block { private static var s_bitmap:BitmapData = null; public function ColumnBlock(){ super(); buttonMode = true; m_player = Animations.instance.instantiate("columnpowerup"); addChild(m_player); toolTip = "Replaces this column with one color."; } } }//package
Section 98
//CreditsScreen (CreditsScreen) package { import flash.events.*; import flash.display.*; import flash.net.*; public class CreditsScreen extends Sprite { private var m_controller:Main; public function CreditsScreen(a_controller:Main){ var btn:RegularButton; var rem:Function; var a_controller = a_controller; super(); m_controller = a_controller; addChild(new AssetManager.CreditsPNG()); var urbansquall:SimpleButton = new RegularButton(AssetManager.UrbanSquallPNG); addChild(urbansquall); urbansquall.x = ((640 - urbansquall.width) / 2); urbansquall.y = 50; urbansquall.addEventListener(MouseEvent.CLICK, goToUrbanSquall); btn = new RegularButton(AssetManager.MainMenuButtonPNG); addChild(btn); btn.x = ((640 - btn.width) / 2); btn.y = ((480 - btn.height) - 5); rem = function (a_event:MouseEvent):void{ btn.removeEventListener(MouseEvent.CLICK, rem); m_controller.createMainMenu(); }; btn.addEventListener(MouseEvent.CLICK, rem); } private function goToUrbanSquall(a_event:Event=null):void{ navigateToURL(new URLRequest("http://www.urbansquall.com/blog/"), "_blank"); } } }//package
Section 99
//CrossBlock (CrossBlock) package { public class CrossBlock extends Block { public function CrossBlock(){ super(); buttonMode = true; m_player = Animations.instance.instantiate("crosspowerup"); addChild(m_player); toolTip = "Replaces this row and column with one color."; } } }//package
Section 100
//CrowdControlGame (CrowdControlGame) package { import flash.events.*; import flash.display.*; import flash.geom.*; import com.urbansquall.serenity.*; import com.urbansquall.security.*; import flash.text.*; import flash.filters.*; import caurina.transitions.*; public class CrowdControlGame extends Sprite { private var m_timeInLevel:int; private var m_tutorialQueue:Array; private var m_missionBoxPlaceholder:Sprite; private var m_curMaxTime:int; private var m_waveIndex:int; private var m_seenScoreTutorial:Boolean; private var m_columns:Array; private var m_kongStatTime:int; private var m_safePowerUpCount:safeint; private var m_seenPowerUpTutorial:Boolean; private var m_level:safeint; private var m_selectionRect:Rectangle; private var m_paused:Boolean; private var m_arcLoop:LoopingSound; private var m_score:ScoreDisplay; private var m_main:Main; private var m_background:Sprite; private var m_selectionOverBlocks:Sprite; private var m_leveling:Boolean; private var m_showingTutorial:Boolean; private var m_selectionMgr:SelectionManager; private var m_removalSprite:Sprite; private var m_toolTips:Sprite; private var m_deltaTimer:DeltaTimer; private var m_pauseSprite:Sprite; private var m_seenBonusTutorial:Boolean; private var m_botBuffer:int; private var m_blocks:EntityContainer; private var m_boardWidth:uint; private var m_bgLoop:LoopingSound; private var m_warningLoop:LoopingSound; private var m_matching:Boolean; private var m_timerSprite:TimerBar; private var m_safeCrowdControlCount:safeint; private var m_safeBonusCount:safeint; private var m_mission:Mission; private var m_curBonusTime:int; private var m_bombs:Array; private var m_safeBotCount:safeint; private var m_fxSprite:Sprite; private var m_timerContainer:Sprite; private var m_boardHeight:uint; private var m_prev_tile_x:int; private var m_prev_tile_y:int; private var m_fx:EntityContainer; private var m_blockSprite:Sprite; private var m_levelLabel:CustomTextField; private var m_interface:Sprite; private var m_seenLevelUpTutorial:Boolean; private var m_seenLowTimeTutorial:Boolean; private var m_waveTime:int; private static const c_smushFactor:int = 7; private static const c_initialBonusTime:int = 10000; private static const c_initialMaxTime:int = 90000; private static const c_waveTime:int = 2000; private static const c_timeFactor:Number = 0.96; private static const c_penaltyInterval:int = 10000; private static const c_rectClearTime:int = 5000; private static const c_kongStatTime:int = 5000; private static var s_missionTypes:Array = new Array(BigMatchMission, OneColorBlockCountMission, ChainMission); private static var s_bonusTypes:Array = new Array(CrossBlock, MorphBlock, ColumnBlock, RowBlock, BiggestBlock, WildCardBlock); public function CrowdControlGame(a_width:uint, a_height:uint, a_main:Main){ super(); m_main = a_main; m_seenScoreTutorial = Main.s_safeSolManager.readBool(Main.tutScore); m_seenPowerUpTutorial = Main.s_safeSolManager.readBool(Main.tutPower); m_seenLevelUpTutorial = Main.s_safeSolManager.readBool(Main.tutLevel); m_seenLowTimeTutorial = Main.s_safeSolManager.readBool(Main.tutTime); m_seenBonusTutorial = Main.s_safeSolManager.readBool(Main.tutBonus); m_paused = false; m_leveling = false; m_matching = false; m_showingTutorial = false; m_botBuffer = 0; m_safeBotCount = new safeint(0); m_safeBonusCount = new safeint(0); m_safeCrowdControlCount = new safeint(0); m_safePowerUpCount = new safeint(0); m_boardWidth = a_width; m_boardHeight = a_height; addEventListener(Event.ADDED_TO_STAGE, added); } private function unpause():void{ Tweener.resumeAllTweens(); m_paused = false; m_pauseSprite.visible = false; m_blockSprite.mouseChildren = true; } private function togglePause():void{ if (m_paused){ unpause(); } else { pause(); }; } private function depthSortBlocks():void{ var row:int; var b:Block; var col:int; while (col < m_boardHeight) { row = 0; while (row < m_boardWidth) { b = (m_columns[row][col] as Block); m_blockSprite.setChildIndex(b, (m_blockSprite.numChildren - 1)); row++; }; col++; }; } private function removeOnComplete(a_ent:SpriteEntity):Function{ var a_ent = a_ent; return (function ():void{ a_ent.parent.removeChild(this); m_fx.removeEntity(this); m_blocks.removeEntity(this); }); } private function destroySelectionSprite():void{ var b:Block; while (m_selectionOverBlocks.numChildren > 0) { m_selectionOverBlocks.removeChildAt(0); }; var idx:int; while (idx < m_blockSprite.numChildren) { b = (m_blockSprite.getChildAt(idx) as Block); b.filters = []; idx++; }; } private function added(a_event:Event):void{ var a_event = a_event; removeEventListener(Event.ADDED_TO_STAGE, added); m_curMaxTime = c_initialMaxTime; m_curBonusTime = c_initialBonusTime; m_deltaTimer = new DeltaTimer(); m_deltaTimer.reset(); addEventListener(Event.ENTER_FRAME, tick); m_arcLoop = new LoopingSound(SoundManager.s_electricalArcLoop); m_warningLoop = new LoopingSound(SoundManager.s_warningLoop); m_bgLoop = new LoopingSound(SoundManager.s_crowdControlLoop); m_bgLoop.startLoop(); m_bgLoop.volume = 0; Tweener.addTween(m_bgLoop, {volume:1, time:5, transition:"easeOutQuad"}); m_fx = new EntityContainer(); m_blocks = new EntityContainer(); m_level = new safeint(0); createBgSprite(); createBlockSprite(); createRemovalSprite(); createFxSprite(); createInterface(); createMissionSprite(); startLevel(); m_tutorialQueue = new Array(); if (!m_seenScoreTutorial){ m_seenScoreTutorial = true; Main.s_safeSolManager.writeBool(Main.tutScore, true); Tweener.addTween(m_blockSprite, {time:1, onComplete:function ():void{ push_tutorial(new AssetManager.HowToScorePNG()); }}); }; } private function crowdControlMessage():void{ var l:CustomTextField = new CustomTextField("CROWD CONTROL!", 0, 70); l.filters = [new GlowFilter(0xFFFFFF, 1, 4, 4, 4)]; l.background = false; l.x = (320 - (l.width / 2)); l.y = 480; addChild(l); Tweener.addTween(l, {y:(240 - (l.height / 2)), time:1, transition:"easeOutExpo"}); Tweener.addTween(l, {y:-(l.height), time:1, delay:1, transition:"easeInExpo", onComplete:Tweens.removeOnComplete}); } private function createBlockSprite():void{ m_blockSprite = new Sprite(); addChild(m_blockSprite); m_blockSprite.x = m_background.x; m_blockSprite.y = m_background.y; m_selectionOverBlocks = new Sprite(); m_selectionOverBlocks.mouseEnabled = false; m_selectionOverBlocks.mouseChildren = false; addChild(m_selectionOverBlocks); m_selectionOverBlocks.x = m_blockSprite.x; m_selectionOverBlocks.y = m_blockSprite.y; } private function resetSelectionIndicators():void{ m_prev_tile_x = -1; m_prev_tile_y = -1; destroySelectionSprite(); } public function mouseMove(a_tileX:int, a_tileY:int):void{ if (((((m_leveling) || (m_matching))) || ((m_prev_tile_x < 0)))){ return; }; var t_x:int = a_tileX; var t_y:int = a_tileY; if ((((((((t_x < 0)) || ((t_y < 0)))) || ((t_x >= m_boardWidth)))) || ((t_y >= m_boardHeight)))){ return; }; var tile_left:uint = Math.min(a_tileX, m_prev_tile_x); var tile_right:uint = Math.max(a_tileX, m_prev_tile_x); var tile_top:uint = Math.min(a_tileY, m_prev_tile_y); var tile_bottom:uint = Math.max(a_tileY, m_prev_tile_y); updateSelection(new Rectangle(tile_left, tile_top, ((tile_right - tile_left) + 1), ((tile_bottom - tile_top) + 1))); } private function blockWave():void{ var i:int; var j:int; var cb:ColorBlock; var sparkled:Boolean; var loops:int; while (((!(sparkled)) && ((loops < 5)))) { i = 0; while (i < m_boardWidth) { j = 0; while (j < m_boardHeight) { if ((m_columns[i][j] is ColorBlock)){ cb = m_columns[i][j]; if (cb.index == m_waveIndex){ sparkled = true; cb.playAnimation("wave"); }; }; j++; }; i++; }; loops++; m_waveIndex = ((m_waveIndex + 1) % 5); }; } public function mouseUp(a_tileX:int, a_tileY:int):void{ if (((m_leveling) || (m_matching))){ return; }; if ((((m_prev_tile_x == -1)) || ((m_selectionRect == null)))){ return; }; if ((((m_selectionRect.width == 1)) && ((m_selectionRect.height == 1)))){ return; }; finalizeMove(); resetSelectionIndicators(); } private function createRemovalSprite():void{ m_removalSprite = new Sprite(); addChild(m_removalSprite); m_removalSprite.x = m_blockSprite.x; m_removalSprite.y = m_blockSprite.y; m_removalSprite.mouseEnabled = false; m_removalSprite.mouseChildren = false; } private function isLegalMove(a_rect:Rectangle):Boolean{ return (isCornerMatch(a_rect)); } private function applyCrossBlock(a_x:int, a_y:int):void{ SoundManager.s_linePowerUpEffect.play(); var paintColor:int = RandomUtils.RandomInt(0, (missionIndex() - 1)); removeBlock(a_x, a_y); addExplosionAt(a_x, a_y); addBlockAt(new ColorBlock(paintColor), a_x, a_y); paintRow(a_x, a_y, paintColor); paintColumn(a_x, a_y, paintColor); depthSortBlocks(); } private function finalizeMove():void{ var d:Number; m_arcLoop.stopLoop(); if (!isLegalMove(m_selectionRect)){ m_selectionRect = null; resetSelectionIndicators(); SoundManager.s_cancelMoveEffect.play(); return; }; if ((((m_selectionRect.width == m_boardWidth)) && ((m_selectionRect.height == m_boardHeight)))){ m_safeCrowdControlCount.val = (m_safeCrowdControlCount.val + 1); m_main.updateMaxStat(Main.ccMaxCrowdControls, m_safeCrowdControlCount.val); crowdControlMessage(); }; m_matching = true; d = animateRemoval(m_selectionRect, 0, 0); Tweener.addTween(this, {delay:d, onComplete:function ():void{ m_matching = false; if (m_timerSprite.timeRemaining >= m_curMaxTime){ setLevel((m_level.val + 1)); endLevel(); } else { SoundManager.s_surgeSound.play(); removeAndReplace(m_selectionRect); if (d > 0.5){ addRandomBonusBlock(m_selectionRect); }; }; m_selectionRect = null; resetSelectionIndicators(); }}); } private function applyBombBlock(a_x:int, a_y:int):void{ var j:int; var b:ColorBlock; SoundManager.s_explosionEffect.play(); var ob:Block = randomBlock(); while (!((ob is ColorBlock))) { ob = randomBlock(); }; var orig_index:int = (ob as ColorBlock).index; var i:int; while (i < m_boardWidth) { j = 0; while (j < m_boardHeight) { if ((m_columns[i][j] is ColorBlock)){ b = m_columns[i][j]; if (b.index == orig_index){ removeBlock(i, j, ((i * 0.025) + (j * 0.025))); addExplosionAt(i, j, ((i * 0.025) + (j * 0.025))); addBlockAt(blockFromLevel(), i, j); }; }; j++; }; i++; }; removeBlock(a_x, a_y); addExplosionAt(a_x, a_y); addBlockAt(blockFromLevel(), a_x, a_y); depthSortBlocks(); } private function startLevel():void{ newMission(); m_timeInLevel = 0; m_columns = new Array(m_boardWidth); var i:int; while (i < m_boardWidth) { m_columns[i] = new Array(m_boardHeight); i++; }; fillEmptySpaces(); m_prev_tile_x = -1; m_prev_tile_y = -1; destroySelectionSprite(); levelUpMessage(); if (((!(m_seenLevelUpTutorial)) && ((m_level.val == 2)))){ m_seenLevelUpTutorial = true; Main.s_safeSolManager.writeBool(Main.tutLevel, true); push_tutorial(new AssetManager.HowToLevelUpPNG()); }; m_leveling = false; createTimer(); Tweener.addTween(m_timerSprite, {timeRemaining:(m_curMaxTime * 0.4), time:1.5, transition:"easeOutQuad", onUpdate:m_timerSprite.updateBar}); } private function removeOneRect(a_rect:Rectangle, a_soundIndex:int):void{ var sound_index:int = Math.min(a_soundIndex, (SoundManager.s_clearSounds.length - 1)); SoundManager.s_clearSounds[sound_index].play(); if (m_mission != null){ m_mission.update(m_columns, a_rect); if (m_mission.isComplete){ missionSuccess(); SoundManager.s_bonusAchievedEffect.play(); }; }; var s:Sprite = new Sprite(); var cb:ColorBlock = getMatchColorBlock(a_rect, m_columns); s.graphics.beginFill(((cb == null)) ? 0xFFFFFF : cb.matchColor, 1); s.graphics.drawRect(0, 0, tilePxX(a_rect.width), (tilePxY(a_rect.height) + c_smushFactor)); s.graphics.endFill(); m_background.addChild(s); s.x = tilePxX(a_rect.x); s.y = tilePxY(a_rect.y); Tweener.addTween(s, {alpha:0.15, time:0.5, transition:"easeOutQuad", onComplete:Tweens.removeOnComplete}); scoreMove(a_rect); m_timerSprite.timeRemaining = (m_timerSprite.timeRemaining + (500 * (a_soundIndex + 1))); } private function setLevel(a_level:int):void{ m_level.val = a_level; m_levelLabel.text = ("" + m_level.val); } private function createFxSprite():void{ var mask:Sprite = new Sprite(); mask.graphics.beginFill(0); mask.graphics.drawRect(0, 0, m_background.width, m_background.height); mask.graphics.endFill(); addChild(mask); mask.x = m_background.x; mask.y = m_background.y; m_fxSprite = new Sprite(); addChild(m_fxSprite); m_fxSprite.mask = mask; m_fxSprite.x = m_blockSprite.x; m_fxSprite.y = m_blockSprite.y; m_fxSprite.mouseEnabled = false; m_fxSprite.mouseChildren = false; } private function fillEmptySpaces():void{ var k:uint; var i:uint; while (i < m_columns.length) { k = 0; while (k < m_columns[i].length) { if (m_columns[i][k] == null){ addBlockAt(blockFromLevel(), i, k); }; k++; }; i++; }; depthSortBlocks(); } private function paintColumn(a_x:int, a_y:int, a_index:int):void{ var up:int; var down:int; var d = 1; while (d < m_boardWidth) { up = (a_y - d); down = (a_y + d); if (up >= 0){ removeBlock(a_x, up, (d * 0.05)); addExplosionAt(a_x, up, (d * 0.05)); addBlockAt(new ColorBlock(a_index), a_x, up); }; if (down < m_boardHeight){ removeBlock(a_x, down, (d * 0.05)); addExplosionAt(a_x, down, (d * 0.05)); addBlockAt(new ColorBlock(a_index), a_x, down); }; d++; }; } private function removeExistingMission():void{ if (m_mission != null){ Tweener.addTween(m_mission, {alpha:0.2, delay:0.25, time:0.75, transition:"linear"}); Tweener.addTween(m_mission, {scaleX:2, scaleY:2, x:(m_mission.x - (m_mission.width / 2)), y:(m_mission.y - (m_mission.height / 2)), time:1, transition:"linear", onComplete:Tweens.removeOnComplete}); }; } private function findListMatchesInside(a_rect:Rectangle, a_list:Array):Array{ var a_rect = a_rect; var a_list = a_list; return (a_list.filter(function (r:Rectangle, index:int, array:Array):Boolean{ return (((!(a_rect.equals(r))) && (a_rect.containsRect(r)))); })); } private function show_tutorial(a_bmp:Bitmap):void{ var black:Sprite; var btn:RegularButton; var a_bmp = a_bmp; m_showingTutorial = true; black = new Sprite(); black.graphics.beginFill(0, 1); black.graphics.drawRect(0, 0, width, height); black.graphics.endFill(); black.alpha = 0.7; addChild(black); pause(); addChild(a_bmp); a_bmp.x = ((640 - a_bmp.width) / 2); a_bmp.y = 150; btn = new RegularButton(AssetManager.ContinueButtonPNG); addChild(btn); btn.x = ((640 - btn.width) / 2); btn.y = (a_bmp.getBounds(this).bottom + 2); var rem:Function = function (a_event:MouseEvent):void{ removeChild(black); removeChild(a_bmp); removeChild(btn); Tweener.removeTweens(black); unpause(); m_showingTutorial = false; }; btn.addEventListener(MouseEvent.CLICK, rem); } private function applyRowBlock(a_x:int, a_y:int):void{ SoundManager.s_linePowerUpEffect.play(); var paintColor:int = RandomUtils.RandomInt(0, (missionIndex() - 1)); removeBlock(a_x, a_y); addExplosionAt(a_x, a_y); addBlockAt(new ColorBlock(paintColor), a_x, a_y); paintRow(a_x, a_y, paintColor); depthSortBlocks(); } private function endLevel():void{ var j:int; var t:Number; flashScreen(); destroyTimer(); m_curMaxTime = (m_curMaxTime * c_timeFactor); m_curBonusTime = (m_curBonusTime * c_timeFactor); m_leveling = true; var i:int; while (i < m_boardWidth) { j = 0; while (j < m_boardHeight) { t = (Math.random() * 2); addExplosionAt(i, j, t); removeBlock(i, j, t); if (Math.random() < 0.05){ Tweener.addTween(this, {time:t, onComplete:function ():void{ SoundManager.s_explosionEffect.play(); }}); }; j = (j + 1); }; i = (i + 1); }; Tweener.addTween(this, {delay:1.8, time:0.5, transition:"linear", onComplete:function ():void{ SoundManager.s_levelUpEffect.play(); startLevel(); }}); } private function destroyTimer():void{ if (m_timerSprite != null){ Tweener.addTween(m_timerSprite, {alpha:0, transition:"linear", time:1, onComplete:Tweens.removeOnComplete}); }; } private function applyMorphBlock(a_event:Event):void{ var j:int; var b:ColorBlock; if (((((m_paused) || (m_matching))) || (m_leveling))){ return; }; SoundManager.s_radarPowerUpEffect.play(); var sb:SmartBomb = (a_event.target as SmartBomb); if (sb.buttonMode){ sb.removeEventListener(MouseEvent.CLICK, applyMorphBlock); m_interface.removeChild(sb); m_fx.removeEntity(sb); m_bombs.splice(m_bombs.indexOf(sb), 1); }; updateBombs(); var ob:Block = randomBlock(); while (!((ob is ColorBlock))) { ob = randomBlock(); }; var orig_index:int = (ob as ColorBlock).index; var new_index:int = RandomUtils.RandomInt(0, (missionIndex() - 1)); while (new_index == orig_index) { new_index = RandomUtils.RandomInt(0, (missionIndex() - 1)); }; var i:int; while (i < m_boardWidth) { j = 0; while (j < m_boardHeight) { if ((m_columns[i][j] is ColorBlock)){ b = m_columns[i][j]; if (b.index == orig_index){ removeBlock(i, j, ((i * 0.025) + (j * 0.025))); addExplosionAt(i, j, ((i * 0.025) + (j * 0.025))); addBlockAt(new ColorBlock(new_index), i, j); }; }; j++; }; i++; }; depthSortBlocks(); } private function removeBlock(a_tileX:int, a_tileY:int, a_delay:Number=0):void{ var b:Block; var a_tileX = a_tileX; var a_tileY = a_tileY; var a_delay = a_delay; b = (m_columns[a_tileX][a_tileY] as Block); m_columns[a_tileX][a_tileY] = null; var r:Rectangle = b.getBounds(m_blockSprite); b.unregisterEvents(); m_blockSprite.removeChild(b); m_removalSprite.addChild(b); b.x = r.left; b.y = r.top; if ((((b is ColorBlock)) || ((b is WildCardBlock)))){ b.filters = []; Tweener.addTween(b, {delay:a_delay, onStart:function ():void{ b.onComplete = removeOnComplete(b); b.playAnimation("death"); }}); m_botBuffer = (m_botBuffer + 1); } else { Tweener.addTween(b, {scaleX:0.2, scaleY:1.5, x:(b.x + (Block.s_blockSize * 0.4)), y:(b.y - (Block.s_blockSize * 0.75)), delay:a_delay, time:0.5, transition:"easeOutQuad", onComplete:removeOnComplete(b)}); }; } private function findBoardMatchesInside(a_rect:Rectangle, a_allowSelf:Boolean=false):Array{ var top:int; var width:int; var height:int; var candidate:Rectangle; var r:Rectangle = a_rect; var ret:Array = new Array(); var left:int = r.x; while (left < (r.x + r.width)) { top = r.y; while (top < (r.y + r.height)) { width = 2; while (((left + width) - 1) < (r.x + r.width)) { height = 2; while (((top + height) - 1) < (r.y + r.height)) { candidate = new Rectangle(left, top, width, height); if (((((a_allowSelf) || (!(candidate.equals(a_rect))))) && (isCornerMatch(candidate)))){ ret.push(candidate); }; height++; }; width++; }; top++; }; left++; }; return (ret); } private function removeAndReplace(a_rect:Rectangle):void{ var j:uint; var b:Block; var i:uint; while (i < a_rect.width) { j = 0; while (j < a_rect.height) { b = m_columns[(i + a_rect.x)][(j + a_rect.y)]; if ((((b == null)) || (((!((b is WildCardBlock))) && (!((b is ColorBlock))))))){ } else { removeBlock((i + a_rect.x), (j + a_rect.y)); m_columns[(i + a_rect.x)][(j + a_rect.y)] = null; }; j++; }; i++; }; fillEmptySpaces(); } private function scoreMove(a_rect:Rectangle):void{ var score:int; var sl:ScoreLabel; var penalty:Number = Math.max(-1, (1 - (0.1 * Math.floor((m_timeInLevel / c_penaltyInterval))))); if (penalty > 0){ score = calculateScore(a_rect); score = (score * m_level.val); score = (score * penalty); m_score.score = (m_score.score + score); sl = new ScoreLabel(score); m_interface.addChild(sl); sl.x = ((m_blockSprite.getBounds(m_interface).left + tilePxX(a_rect.x)) + (tilePxX(a_rect.width) / 2)); sl.y = ((m_blockSprite.getBounds(m_interface).top + tilePxY(a_rect.y)) + (tilePxY(a_rect.height) / 2)); Tweener.addTween(sl, {y:(sl.y - 100), time:1, transition:"linear"}); Tweener.addTween(sl, {alpha:0.3, time:0.5, delay:0.25, transition:"linear", onComplete:Tweens.removeOnComplete}); }; } private function flashScreen():void{ var f:Sprite = new Sprite(); f.graphics.beginFill(0xFFFFFF); f.graphics.drawRect(0, 0, 640, 480); f.graphics.endFill(); addChild(f); Tweener.addTween(f, {alpha:0, time:0.2, transition:"easeInQuad", onComplete:Tweens.removeOnComplete}); } private function createBgSprite():void{ m_background = new Sprite(); m_background.graphics.beginBitmapFill(AssetManager.BackgroundBitmap.bitmapData); m_background.graphics.drawRect(0, 0, tilePxX(m_boardWidth), ((tilePxY(m_boardHeight) + c_smushFactor) + 4)); m_background.graphics.endFill(); m_background.x = ((640 - tilePxX(m_boardWidth)) - 22); addChild(m_background); } private function randomBlock():Block{ var r_x:int = RandomUtils.RandomInt(0, (m_boardWidth - 1)); var r_y:int = RandomUtils.RandomInt(0, (m_boardHeight - 1)); return (m_columns[r_x][r_y]); } private function difficultyFromLevel():int{ return (((m_level.val / 3) + 1)); } private function addRandomBonusBlock(a_rect:Rectangle):void{ if (!m_seenPowerUpTutorial){ m_seenPowerUpTutorial = true; Main.s_safeSolManager.writeBool(Main.tutPower, true); push_tutorial(new AssetManager.HowToPowerUpPNG()); }; var x:int = RandomUtils.RandomInt(a_rect.x, ((a_rect.x + a_rect.width) - 1)); var y:int = RandomUtils.RandomInt(a_rect.y, ((a_rect.y + a_rect.height) - 1)); removeBlock(x, y); var bonusType:Class = RandomUtils.RandomSelection(s_bonusTypes); var b:Block = new (bonusType); b.registerToolTips(m_toolTips); addBlockAt(b, x, y); depthSortBlocks(); } private function paintRow(a_x:int, a_y:int, a_index:int):void{ var left:int; var right:int; var d = 1; while (d < m_boardWidth) { left = (a_x - d); right = (a_x + d); if (left >= 0){ removeBlock(left, a_y, (d * 0.05)); addExplosionAt(left, a_y, (d * 0.05)); addBlockAt(new ColorBlock(a_index), left, a_y); }; if (right < m_boardWidth){ removeBlock(right, a_y, (d * 0.05)); addExplosionAt(right, a_y, (d * 0.05)); addBlockAt(new ColorBlock(a_index), right, a_y); }; d++; }; } private function createInterface():void{ var b:SmartBomb; var sponsorButton:RegularButton; m_timerContainer = new Sprite(); addChild(m_timerContainer); m_interface = new Sprite(); m_interface.mouseEnabled = false; m_interface.addChild(new AssetManager.InGameOverlayPNG()); addChild(m_interface); m_toolTips = new Sprite(); m_toolTips.mouseEnabled = false; addChild(m_toolTips); createScore(); m_bombs = new Array(); var num_usable = 3; if (SponsorSingleton.instance.isStolen(stage)){ num_usable = 1; }; var i:int; while (i < 3) { b = new SmartBomb((i < num_usable)); m_bombs.push(b); m_interface.addChild(b); m_fx.addEntity(b); b.registerToolTips(m_toolTips); b.tick((i * 100)); if (b.usable){ b.addEventListener(MouseEvent.CLICK, applyMorphBlock); } else { b.addEventListener(MouseEvent.MOUSE_DOWN, SponsorSingleton.instance.goToSponsorSite); }; i = (i + 1); }; updateBombs(); if (SponsorSingleton.instance.isStolen(stage)){ sponsorButton = SponsorSingleton.instance.createInGameButton(); m_interface.addChild(sponsorButton); sponsorButton.y = (m_bombs[0].getBounds(m_interface).bottom + 2); }; var pauseButton:RegularButton = new RegularButton(AssetManager.PauseButtonPNG); m_interface.addChild(pauseButton); pauseButton.x = 1; pauseButton.y = 338; pauseButton.height = 28; pauseButton.width = 90; pauseButton.addEventListener(MouseEvent.CLICK, function (a_event:Event):void{ togglePause(); }); var pause_msg:CustomTextField = new CustomTextField("PAUSED", 0, 48, true); m_pauseSprite = new Sprite(); m_pauseSprite.mouseEnabled = false; m_pauseSprite.mouseChildren = false; m_pauseSprite.graphics.beginFill(0); m_pauseSprite.graphics.drawRect(0, 0, m_background.width, m_background.height); m_pauseSprite.graphics.endFill(); m_fxSprite.addChild(m_pauseSprite); m_pauseSprite.addChild(pause_msg); pause_msg.x = ((m_background.width - pause_msg.width) / 2); pause_msg.y = ((m_background.height - pause_msg.height) / 2); m_pauseSprite.visible = false; } private function missionIndex():int{ var difficulty:int = difficultyFromLevel(); if (difficulty < 4){ return (3); }; if (difficulty < 6){ return (4); }; return (5); } private function createTimer():void{ m_timerSprite = new TimerBar(m_curMaxTime, 20, 480, 0); m_timerSprite.timeRemaining = 1000; m_timerContainer.addChild(m_timerSprite); m_timerSprite.x = (640 - m_timerSprite.width); m_waveTime = c_waveTime; m_waveIndex = 0; m_kongStatTime = c_kongStatTime; } private function applyColumnBlock(a_x:int, a_y:int):void{ SoundManager.s_linePowerUpEffect.play(); var paintColor:int = RandomUtils.RandomInt(0, (missionIndex() - 1)); removeBlock(a_x, a_y); addExplosionAt(a_x, a_y); addBlockAt(new ColorBlock(paintColor), a_x, a_y); paintColumn(a_x, a_y, paintColor); depthSortBlocks(); } private function tick(a_event:Event):void{ var a_event = a_event; var deltaTime:int = m_deltaTimer.calculateDeltaTime(); m_blocks.tick(deltaTime); m_fx.tick(deltaTime); if (((((m_paused) || (m_showingTutorial))) || (m_leveling))){ return; }; if ((((m_tutorialQueue.length > 0)) && (!(m_showingTutorial)))){ show_tutorial(m_tutorialQueue.shift()); }; if (m_timerSprite.timeRemaining < m_curMaxTime){ m_timerSprite.updateTime(deltaTime); } else { m_timerSprite.updateTime(0); }; m_waveTime = (m_waveTime - deltaTime); m_timeInLevel = (m_timeInLevel + deltaTime); m_kongStatTime = (m_kongStatTime - deltaTime); if ((((Tweener.getTweenCount(m_timerSprite) == 0)) && ((m_timerSprite.timeRemaining < (m_curMaxTime * 0.2))))){ if (!m_seenLowTimeTutorial){ m_seenLowTimeTutorial = true; Main.s_safeSolManager.writeBool(Main.tutTime, true); Tweener.addTween(m_blockSprite, {time:1, onComplete:function ():void{ push_tutorial(new AssetManager.HowToLowTimePNG()); }}); }; }; if (Tweener.getTweenCount(m_timerSprite) == 0){ if (((((m_bgLoop.playing) && (!(m_warningLoop.playing)))) && ((m_timerSprite.timeRemaining < (m_curMaxTime * 0.2))))){ Tweener.removeTweens(m_bgLoop); Tweener.removeTweens(m_warningLoop); Tweener.addTween(m_bgLoop, {volume:0, time:0.75, transition:"linear", onComplete:m_bgLoop.stopLoop}); m_warningLoop.startLoop(); m_warningLoop.volume = 0; Tweener.addTween(m_warningLoop, {volume:1, time:0.75, transition:"linear"}); }; if (((((m_warningLoop.playing) && (!(m_bgLoop.playing)))) && ((m_timerSprite.timeRemaining >= (m_curMaxTime * 0.2))))){ Tweener.removeTweens(m_bgLoop); Tweener.removeTweens(m_warningLoop); Tweener.addTween(m_warningLoop, {volume:0, time:0.75, transition:"linear", onComplete:m_warningLoop.stopLoop}); m_bgLoop.startLoop(); m_bgLoop.volume = 0; Tweener.addTween(m_bgLoop, {volume:1, time:0.75, transition:"linear"}); }; }; if (m_botBuffer > 0){ m_safeBotCount.val = (m_safeBotCount.val + m_botBuffer); m_main.updateMaxStat(Main.ccMaxBotsPerGame, m_safeBotCount.val); m_botBuffer = 0; }; if (m_timerSprite.timeRemaining < 0){ gameOver(); }; if (m_waveTime < 0){ m_waveTime = c_waveTime; if (!m_leveling){ blockWave(); }; }; if (m_kongStatTime < 0){ m_kongStatTime = c_kongStatTime; m_main.submitAllKongStats(); }; if (m_selectionMgr != null){ m_selectionMgr.update(deltaTime); }; updateTimeDisplay(); } private function updateTimeDisplay():void{ m_timerSprite.updateBar(); } private function applyBiggestBlock(a_x:int, a_y:int):void{ SoundManager.s_radarPowerUpEffect.play(); removeBlock(a_x, a_y); addExplosionAt(a_x, a_y); addBlockAt(blockFromLevel(), a_x, a_y); var r:Rectangle = new Rectangle(0, 0, m_boardWidth, m_boardHeight); m_selectionRect = findLargestRectangle(findBoardMatchesInside(r, true)); finalizeMove(); resetSelectionIndicators(); } private function updateSelection(a_rect:Rectangle):void{ var xoff:int; var yoff:int; var b:Block; if (((!((m_selectionRect == null))) && (a_rect.equals(m_selectionRect)))){ return; }; m_selectionRect = a_rect; destroySelectionSprite(); createSelectionSprite(a_rect); if (isCornerMatch(a_rect)){ xoff = 0; while (xoff < a_rect.width) { yoff = 0; while (yoff < a_rect.height) { b = (m_columns[(a_rect.left + xoff)][(a_rect.top + yoff)] as Block); b.filters = [new GlowFilter(0xEEEEEE, 0.4, 64, 64, 2, 1, true)]; yoff++; }; xoff++; }; }; } private function addBlockAt(a_block:Block, tile_x:uint, tile_y:uint):void{ var b:Block = a_block; m_columns[tile_x][tile_y] = b; m_blockSprite.addChildAt(b, 0); b.registerEvents(this, tile_x, tile_y); b.x = tilePxX(tile_x); b.y = tilePxY(tile_y); b.alpha = 0; m_blocks.addEntity(b); Tweener.addTween(b, {alpha:1, time:0.5, delay:0.8, transition:"linear"}); } private function newMission():void{ removeExistingMission(); var missionClass:Class = RandomUtils.RandomSelection(s_missionTypes); m_mission = new missionClass(missionIndex()); m_mission.x = 0; m_mission.alpha = 0; m_missionBoxPlaceholder.addChild(m_mission); Tweener.addTween(m_mission, {alpha:1, delay:0.3, time:0.7, transition:"linear"}); m_mission.registerToolTips(m_toolTips); } private function updateBombs():void{ var b:SmartBomb; var y = 120; var x_off = 2; var throbber:Function = function (a_bomb:SmartBomb):Function{ var expand:Boolean; var f:Function; var a_bomb = a_bomb; expand = true; f = function ():void{ var scl:Number; var off:int; var trans:String; if (a_bomb.stage != null){ scl = 1.2; off = -3; trans = "easeInQuad"; expand = !(expand); if (expand){ scl = 1; off = 3; trans = "easeOutQuad"; }; Tweener.addTween(a_bomb, {x:(a_bomb.x + off), y:(a_bomb.y + off), scaleX:scl, scaleY:scl, time:0.5, transition:trans, onComplete:f}); }; }; return (f); }; var i:int; while (i < m_bombs.length) { b = (m_bombs[i] as SmartBomb); b.x = (x_off + (28 * i)); b.y = y; if (Tweener.getTweenCount(b) != 1){ throbber(b)(); }; i = (i + 1); }; } private function animateRemoval(a_rect:Rectangle, a_delay:Number, a_soundIndex:int, a_rect_list:Array=null):Number{ var matches:Array; var sub:Rectangle; var recursive_delay:Number; var a_rect = a_rect; var a_delay = a_delay; var a_soundIndex = a_soundIndex; var a_rect_list = a_rect_list; var d:Number = a_delay; Tweener.addTween(this, {delay:d, onComplete:function ():void{ removeOneRect(a_rect, a_soundIndex); }}); if (a_rect_list == null){ matches = findBoardMatchesInside(a_rect); } else { matches = findListMatchesInside(a_rect, a_rect_list); }; if (matches.length > 0){ sub = findLargestRectangle(matches); if ((sub.width * sub.height) >= ((a_rect.width * a_rect.height) * 0.5)){ recursive_delay = animateRemoval(sub, (d + 0.25), (a_soundIndex + 1), matches); d = recursive_delay; }; }; return (d); } private function findLargestRectangle(a_array:Array):Rectangle{ var biggest:Array; var r:Rectangle; var area:int; var biggest_area = -1; for each (r in a_array) { area = (r.width * r.height); if (area > biggest_area){ biggest = new Array(); biggest_area = area; }; if (area == biggest_area){ biggest.push(r); }; }; return (RandomUtils.RandomSelection(biggest)); } private function addExplosionAt(tile_x:int, tile_y:int, a_delay:Number=0):void{ var e:Explosion; var tile_x = tile_x; var tile_y = tile_y; var a_delay = a_delay; e = new Explosion(); e.x = (tilePxX(tile_x) - ((e.width - Block.s_blockSize) / 2)); e.y = (((tilePxY(tile_y) + Block.s_blockSize) - Explosion.s_explosionHeight) + 7); Tweener.addTween(e, {delay:a_delay, time:0.5, transition:"linear", onStart:function ():void{ m_fxSprite.addChild(e); m_fx.addEntity(e); e.onComplete = removeOnComplete(e); }}); } private function missionSuccess():void{ m_timerSprite.timeRemaining = (m_timerSprite.timeRemaining + m_curBonusTime); m_safeBonusCount.val = (m_safeBonusCount.val + 1); m_main.updateMaxStat(Main.ccMaxBonuses, m_safeBonusCount.val); if (!m_seenBonusTutorial){ m_seenBonusTutorial = true; Main.s_safeSolManager.writeBool(Main.tutBonus, true); push_tutorial(new AssetManager.HowToBonusPNG()); }; newMission(); } private function createMissionSprite():void{ m_missionBoxPlaceholder = new Sprite(); m_interface.addChild(m_missionBoxPlaceholder); m_missionBoxPlaceholder.x = 0; m_missionBoxPlaceholder.y = 35; } private function push_tutorial(a_bmp:Bitmap):void{ m_tutorialQueue.push(a_bmp); } private function isCornerMatch(a_rect:Rectangle):Boolean{ var block:ColorBlock; var y:int; var b:Block; if ((((a_rect.width < 2)) || ((a_rect.height < 2)))){ return (false); }; var blocks:Array = new Array(); var x:int; while (x < 2) { y = 0; while (y < 2) { b = m_columns[(a_rect.x + (x * (a_rect.width - 1)))][(a_rect.y + (y * (a_rect.height - 1)))]; if ((b is WildCardBlock)){ } else { if ((b is ColorBlock)){ blocks.push(b); } else { return (false); }; }; y++; }; x++; }; if (blocks.length == 0){ return (true); }; var first:ColorBlock = blocks[0]; for each (block in blocks) { if (!first.equals(block)){ return (false); }; }; return (true); } private function levelUpMessage():void{ var l:CustomTextField = new CustomTextField(("LEVEL " + m_level.val), 0, 70); l.filters = [new GlowFilter(0xFFFFFF, 1, 4, 4, 4)]; l.background = false; l.x = (320 - (l.width / 2)); l.y = 480; addChild(l); Tweener.addTween(l, {y:(240 - (l.height / 2)), time:1, transition:"easeOutExpo"}); Tweener.addTween(l, {y:-(l.height), time:1, delay:1, transition:"easeInExpo", onComplete:Tweens.removeOnComplete}); } private function createSelectionSprite(a_rect:Rectangle):void{ m_selectionMgr = new SelectionManager(a_rect, tilePxX, tilePxY, m_selectionOverBlocks); } private function blockFromLevel():ColorBlock{ var difficulty:int = difficultyFromLevel(); if (difficulty == 1){ return (BlockGenerator.generateRandomColorBlock(4, 0)); }; if (difficulty == 2){ return (BlockGenerator.generateRandomColorBlock(4, 0.05)); }; if (difficulty == 3){ return (BlockGenerator.generateRandomColorBlock(4, 0.15)); }; if (difficulty == 4){ return (BlockGenerator.generateRandomColorBlock(5, 0)); }; if (difficulty == 5){ return (BlockGenerator.generateRandomColorBlock(5, 0.05)); }; return (BlockGenerator.generateRandomColorBlock(6)); } private function gameOver():void{ m_bgLoop.stopLoop(); m_warningLoop.stopLoop(); m_arcLoop.stopLoop(); SoundManager.s_gameOverSound.play(); removeEventListener(Event.ENTER_FRAME, tick); m_main.createResults(m_level.val, m_score.score); } private function createScore():void{ m_score = new ScoreDisplay(); m_interface.addChild(m_score); m_score.y = (480 - m_score.height); m_levelLabel = new CustomTextField("", 0, 22); m_interface.addChild(m_levelLabel); m_levelLabel.background = false; m_levelLabel.y = 393; setLevel((m_level.val + 1)); } private function calculateScore(a_rect:Rectangle):int{ var j:uint; var b:Block; var score:int = (a_rect.width * a_rect.height); if (a_rect.width > a_rect.height){ score = (score * a_rect.height); } else { score = (score * a_rect.width); }; var multiplier:int; var i:uint; while (i < a_rect.width) { j = 0; while (j < a_rect.height) { b = m_columns[(i + a_rect.x)][(j + a_rect.y)]; if ((b is WildCardBlock)){ multiplier = (multiplier + 5); }; j++; }; i++; }; score = (score * Math.max(1, multiplier)); return (score); } private function pause():void{ Tweener.pauseAllTweens(); m_paused = true; m_pauseSprite.visible = true; m_blockSprite.mouseChildren = false; } public function mouseDown(a_tileX:int, a_tileY:int):void{ var c_x:int; var c_y:int; var clicked_block:Block; if (((m_leveling) || (m_matching))){ return; }; if (m_prev_tile_x == -1){ c_x = a_tileX; c_y = a_tileY; clicked_block = m_columns[c_x][c_y]; if (!(clicked_block is ColorBlock)){ m_safePowerUpCount.val = (m_safePowerUpCount.val + 1); m_main.updateMaxStat(Main.ccMaxPowerUps, m_safePowerUpCount.val); }; if ((clicked_block is CrossBlock)){ applyCrossBlock(c_x, c_y); return; }; if ((clicked_block is RowBlock)){ applyRowBlock(c_x, c_y); return; }; if ((clicked_block is ColumnBlock)){ applyColumnBlock(c_x, c_y); return; }; if ((clicked_block is MorphBlock)){ applyBombBlock(c_x, c_y); return; }; if ((clicked_block is BiggestBlock)){ applyBiggestBlock(c_x, c_y); return; }; m_prev_tile_x = a_tileX; m_prev_tile_y = a_tileY; mouseMove(a_tileX, a_tileY); m_arcLoop.startLoop(); SoundManager.s_startMoveEffect.play(); return; }; finalizeMove(); resetSelectionIndicators(); } private static function tilePxY(a_tile:int):int{ return ((a_tile * (Block.s_blockSize - c_smushFactor))); } private static function tilePxX(a_tile:int):int{ return ((a_tile * Block.s_blockSize)); } public static function getMatchColorBlock(a_rect:Rectangle, a_columns:Array):ColorBlock{ var y:int; var b:Block; var x:int; while (x < 2) { y = 0; while (y < 2) { b = a_columns[(a_rect.x + (x * (a_rect.width - 1)))][(a_rect.y + (y * (a_rect.height - 1)))]; if ((b is ColorBlock)){ return ((b as ColorBlock)); }; y++; }; x++; }; return (null); } } }//package
Section 101
//CrowdControlLoop (CrowdControlLoop) package { import flash.media.*; public dynamic class CrowdControlLoop extends Sound { } }//package
Section 102
//CustomTextField (CustomTextField) package { import flash.text.*; import flash.filters.*; public class CustomTextField extends TextField { private static var filter:GlowFilter = new GlowFilter(0xFFFFFF, 0.7, 12, 12, 4); public function CustomTextField(a_text:String="", a_color:uint=0, a_size:int=28, a_glow:Boolean=false, a_fontName:String="interfaceFont"){ super(); this.background = false; this.backgroundColor = 0xFFFFFF; this.autoSize = TextFieldAutoSize.LEFT; this.multiline = true; this.selectable = false; this.embedFonts = true; this.defaultTextFormat = new TextFormat(a_fontName, a_size, a_color, null, null, null, null, null, TextFormatAlign.CENTER); this.text = a_text; if (a_glow){ this.filters = [filter]; }; } private function copyTextFormat():TextFormat{ var f:TextFormat = this.defaultTextFormat; f = new TextFormat(f.font, f.size, f.color, f.bold, f.italic, f.underline, f.url, f.target, f.align, f.leftMargin, f.rightMargin, f.indent, f.leading); return (f); } public function set leading(a_val:int):void{ var f:TextFormat = copyTextFormat(); f.leading = a_val; this.defaultTextFormat = f; } public function center():void{ var f:TextFormat = copyTextFormat(); f.align = TextFormatAlign.CENTER; this.defaultTextFormat = f; } } }//package
Section 103
//DeltaTimer (DeltaTimer) package { import flash.utils.*; public class DeltaTimer { private var m_timeSinceLastTick:int; public function DeltaTimer(){ super(); reset(); } public function calculateDeltaTime():int{ var currentTime:int = getTimer(); var deltaTime:int = (currentTime - m_timeSinceLastTick); m_timeSinceLastTick = currentTime; return (deltaTime); } public function reset():void{ m_timeSinceLastTick = getTimer(); } } }//package
Section 104
//Effect11 (Effect11) package { import flash.media.*; public dynamic class Effect11 extends Sound { } }//package
Section 105
//Effect13 (Effect13) package { import flash.media.*; public dynamic class Effect13 extends Sound { } }//package
Section 106
//Effect15 (Effect15) package { import flash.media.*; public dynamic class Effect15 extends Sound { } }//package
Section 107
//Effect17 (Effect17) package { import flash.media.*; public dynamic class Effect17 extends Sound { } }//package
Section 108
//Effect19 (Effect19) package { import flash.media.*; public dynamic class Effect19 extends Sound { } }//package
Section 109
//Effect7 (Effect7) package { import flash.media.*; public dynamic class Effect7 extends Sound { } }//package
Section 110
//Effect9 (Effect9) package { import flash.media.*; public dynamic class Effect9 extends Sound { } }//package
Section 111
//ElectricalArcLoop (ElectricalArcLoop) package { import flash.media.*; public dynamic class ElectricalArcLoop extends Sound { } }//package
Section 112
//ElectricalSurgeEffect (ElectricalSurgeEffect) package { import flash.media.*; public dynamic class ElectricalSurgeEffect extends Sound { } }//package
Section 113
//Explosion (Explosion) package { import com.urbansquall.ginger.*; public class Explosion extends SpriteEntity { private var m_player:AnimationPlayer; private var m_onComplete:Function; public static const s_explosionHeight:int = 96; public static const s_explosionWidth:int = 56; private static var s_id_counter:int = 0; public function Explosion(){ super(); m_id = ("Explosion_" + s_id_counter); s_id_counter = (s_id_counter + 1); m_player = Animations.instance.instantiate("explosion"); addChild(m_player); m_player.play("explode"); m_player.addEventListener(AnimationEvent.CHANGE, animationChange); onComplete = null; } public function set onComplete(a_func:Function):void{ m_onComplete = a_func; } private function animationChange(a_event:AnimationEvent):void{ if (((((!(a_event.begin)) && ((a_event.animationID == "explode")))) && (!((m_onComplete == null))))){ m_player.removeEventListener(AnimationEvent.CHANGE, animationChange); m_onComplete(); }; } override public function tick(a_deltaTime:Number):void{ m_player.update(a_deltaTime); } } }//package
Section 114
//ExplosionEffect (ExplosionEffect) package { import flash.media.*; public dynamic class ExplosionEffect extends Sound { } }//package
Section 115
//GameOverEffect (GameOverEffect) package { import flash.media.*; public dynamic class GameOverEffect extends Sound { } }//package
Section 116
//ISponsor (ISponsor) package { import flash.events.*; import flash.display.*; public interface ISponsor { function isStolen(:Stage):Boolean; function createInGameButton():RegularButton; function createPreloader(a_stage:Stage):MovieClip; function createTitleButton():RegularButton; function goToSponsorSite(Boolean:Event=null):void; } }//package
Section 117
//KongregateSponsor (KongregateSponsor) package { import flash.events.*; import flash.display.*; import caurina.transitions.*; import flash.net.*; public class KongregateSponsor implements ISponsor { public static const c_kongURL:String = "http://www.kongregate.com/games/urbansquall/robo-riot?gamereferral=robo-riot"; public function KongregateSponsor(){ super(); } public function isStolen(a_stage:Stage):Boolean{ return (!((0 == a_stage.loaderInfo.url.indexOf("http://chat.kongregate.com")))); } public function createPreloader(a_stage:Stage):MovieClip{ var a_stage = a_stage; var mc:MovieClip = new splash_kong(); if (isStolen(a_stage)){ mc.addEventListener(MouseEvent.CLICK, function ():void{ navigateToURL(new URLRequest("http://www.kongregate.com/?gamereferral=robo-riot"), "_blank"); }); }; return (mc); } public function createInGameButton():RegularButton{ var button:RegularButton = new RegularButton(AssetManager.KongInGamePNG); button.addEventListener(MouseEvent.MOUSE_DOWN, goToSponsorSite); return (button); } public function goToSponsorSite(a_event:Event=null):void{ navigateToURL(new URLRequest(c_kongURL), "_blank"); } public function createTitleButton():RegularButton{ var button:RegularButton; var dir:int; var complete:Function; button = new RegularButton(AssetManager.KongTitlePNG); button.addEventListener(MouseEvent.MOUSE_DOWN, goToSponsorSite); dir = -7; complete = function ():void{ dir = (dir * -1); Tweener.addTween(button, {y:(button.y + dir), transition:"linear", time:1, onComplete:complete}); }; complete(); button.addEventListener(Event.REMOVED_FROM_STAGE, function ():void{ Tweener.removeTweens(button); }); return (button); } } }//package
Section 118
//LevelAchievedEffect (LevelAchievedEffect) package { import flash.media.*; public dynamic class LevelAchievedEffect extends Sound { } }//package
Section 119
//LinePowerUp (LinePowerUp) package { import flash.media.*; public dynamic class LinePowerUp extends Sound { } }//package
Section 120
//LoopingSound (LoopingSound) package { import flash.events.*; import flash.media.*; public class LoopingSound { private var m_soundChannel:SoundChannel; private var m_sound:Sound; public function LoopingSound(a_sound:Sound){ super(); m_sound = a_sound; m_soundChannel = null; } public function get playing():Boolean{ return (!((m_soundChannel == null))); } public function get volume():Number{ return (m_soundChannel.soundTransform.volume); } public function set volume(a_value:Number):void{ var transform:SoundTransform = m_soundChannel.soundTransform; transform.volume = a_value; m_soundChannel.soundTransform = transform; } public function startLoop():void{ m_soundChannel = m_sound.play(0, 100); m_soundChannel.addEventListener(Event.SOUND_COMPLETE, soundComplete); } private function soundComplete(a_event:Event):void{ m_soundChannel.removeEventListener(Event.SOUND_COMPLETE, soundComplete); m_soundChannel = m_sound.play(0, 100); m_soundChannel.addEventListener(Event.SOUND_COMPLETE, soundComplete); } public function stopLoop():void{ if (m_soundChannel != null){ m_soundChannel.removeEventListener(Event.SOUND_COMPLETE, soundComplete); m_soundChannel.stop(); m_soundChannel = null; }; } } }//package
Section 121
//Main (Main) package { import flash.events.*; import flash.display.*; import flash.media.*; import flash.ui.*; import com.urbansquall.security.*; import flash.net.*; import caurina.transitions.*; public dynamic class Main extends Sprite { public var kongregate; private var m_currentDisplay:DisplayObject; private var m_toolTipContext:ContextMenuItem; private var m_muted:Boolean; private var m_uiLoop:LoopingSound; private var m_dirtyStats:Boolean; public static var tutTime:String = "seenLowTimeTutorial"; public static var assHighLevel:String = "assassinationHighLevel"; public static var ccHighLevel:String = "crowdControlHighLevel"; public static var tutBonus:String = "seenBonusTutorial"; public static var tutScore:String = "seenScoreTutorial"; public static var assHighScore:String = "assassinationHighScore"; public static var ccHighScore:String = "crowdControlHighScore"; public static var assMinInno:String = "assassinationMinInnocent"; public static var ccMaxBonuses:String = "ccMaxBonus"; public static var s_showToolTips:Boolean = true; public static var gameName:String = "roboriot"; public static var ccMaxBotsPerGame:String = "ccMaxBots"; public static var toolTip:String = "showToolTips"; public static var muted:String = "muted"; public static var tutLevel:String = "seenLevelUpTutorial"; public static var tutPower:String = "seenPowerUpTutorial"; public static var s_safeSolManager:SafeSolManager; public static var ccMaxPowerUps:String = "ccMaxPowerUps"; public static var tutAss:String = "seenAssassinationTutorial"; public static var ccMaxCrowdControls:String = "ccMaxCrowdControl"; public function Main():void{ super(); m_dirtyStats = true; s_safeSolManager = new SafeSolManager(gameName, 5018373); s_safeSolManager.createInt(ccHighScore, 0, true); s_safeSolManager.createInt(ccHighLevel, 0, true); s_safeSolManager.createInt(assHighScore, 0, true); s_safeSolManager.createInt(assHighLevel, 0, true); s_safeSolManager.createInt(ccMaxBonuses, 0, true); s_safeSolManager.createInt(ccMaxBotsPerGame, 0, true); s_safeSolManager.createInt(ccMaxCrowdControls, 0, true); s_safeSolManager.createInt(ccMaxPowerUps, 0, true); s_safeSolManager.createInt(assMinInno, 10000, true); s_safeSolManager.createBool(toolTip, true); s_safeSolManager.createBool(tutScore, false); s_safeSolManager.createBool(tutPower, false); s_safeSolManager.createBool(tutLevel, false); s_safeSolManager.createBool(tutTime, false); s_safeSolManager.createBool(tutBonus, false); s_safeSolManager.createBool(tutAss, false); s_safeSolManager.createBool(muted, false); s_showToolTips = s_safeSolManager.readBool(toolTip); m_uiLoop = new LoopingSound(SoundManager.s_uiLoop); m_muted = s_safeSolManager.readBool(muted); if (m_muted){ soundOff(); }; addEventListener(Event.ADDED_TO_STAGE, added); } public function added(a_event:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, added); kongregate = null; if (hostedOnKongregate()){ loadKongApi(); } else { finishInit(); }; } public function hostedOnKongregate():Boolean{ return ((((SponsorSingleton.instance is KongregateSponsor)) && (!(SponsorSingleton.instance.isStolen(stage))))); } private function finishInit():void{ var showMochi:Boolean; if (showMochi){ MochiAd.showInterLevelAd({clip:this, id:"82ce5996ae5b3af2", res:"640x480", ad_started:startAd, ad_finished:finishAd}); } else { finishAd(); }; } public function createAssassinationGame():void{ if (m_uiLoop.playing){ m_uiLoop.stopLoop(); }; updateDisplay(new AssassinationGame(this)); } public function submitKongStat(a_stat:String):void{ if (kongregate != null){ kongregate.stats.submit(a_stat, s_safeSolManager.readInt(a_stat)); }; } private function toolTipCaption(a_val:Boolean):String{ var s:String = "ToolTips Off"; if (!s_showToolTips){ s = "ToolTips On"; }; return (s); } public function createCredits():void{ if (!m_uiLoop.playing){ m_uiLoop.startLoop(); }; updateDisplay(new CreditsScreen(this)); } public function soundOn():void{ var t:SoundTransform = SoundMixer.soundTransform; t.volume = 1; SoundMixer.soundTransform = t; } public function updateMaxStat(a_stat:String, a_value:int):void{ var cur_val:int = s_safeSolManager.readInt(a_stat); s_safeSolManager.writeInt(a_stat, Math.max(cur_val, a_value)); m_dirtyStats = (cur_val < a_value); } public function createContextMenu():void{ var myContextMenu:ContextMenu = new ContextMenu(); myContextMenu.hideBuiltInItems(); var mute:ContextMenuItem = new ContextMenuItem("Toggle Sound"); myContextMenu.customItems.push(mute); mute.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, toggleSound); m_toolTipContext = new ContextMenuItem(toolTipCaption(s_showToolTips)); myContextMenu.customItems.push(m_toolTipContext); m_toolTipContext.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, toggleToolTips); var reset:ContextMenuItem = new ContextMenuItem("Reset Tutorials"); myContextMenu.customItems.push(reset); reset.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, resetTutorial); this.contextMenu = myContextMenu; } private function finishAd():void{ createMainMenu(); createContextMenu(); } public function submitAllKongStats(a_force:Boolean=false):void{ var a:Array; var s:String; if (((m_dirtyStats) || (a_force))){ a = new Array(ccHighLevel, ccHighScore, ccMaxBonuses, ccMaxBotsPerGame, ccMaxCrowdControls, ccMaxPowerUps, assHighScore, assHighLevel, assMinInno); for each (s in a) { submitKongStat(s); }; m_dirtyStats = false; }; } public function createResults(a_level:int, a_score:int):void{ if (!m_uiLoop.playing){ m_uiLoop.startLoop(); }; updateDisplay(new ResultsScreen(a_level, a_score, this)); } private function resetTutorial(a_event:ContextMenuEvent=null):void{ s_safeSolManager.writeBool(tutScore, false); s_safeSolManager.writeBool(tutPower, false); s_safeSolManager.writeBool(tutLevel, false); s_safeSolManager.writeBool(tutTime, false); s_safeSolManager.writeBool(tutBonus, false); s_safeSolManager.writeBool(tutAss, false); } public function toggleSound(a_event:ContextMenuEvent=null):void{ if (m_muted){ soundOn(); m_muted = false; } else { soundOff(); m_muted = true; }; s_safeSolManager.writeBool(muted, m_muted); } public function kongApiLoaded(a_event:Event=null):void{ kongregate = a_event.target.content; kongregate.services.connect(); finishInit(); } public function createMainMenu():void{ if (!m_uiLoop.playing){ m_uiLoop.startLoop(); }; updateDisplay(new MainMenu(this)); } public function toggleToolTips(a_event:ContextMenuEvent=null):void{ s_showToolTips = !(s_showToolTips); m_toolTipContext.caption = toolTipCaption(s_showToolTips); s_safeSolManager.writeBool(toolTip, s_showToolTips); } private function startAd():void{ } public function soundOff():void{ var t:SoundTransform = SoundMixer.soundTransform; t.volume = 0; SoundMixer.soundTransform = t; } public function createCrowdControlGame():void{ if (m_uiLoop.playing){ m_uiLoop.stopLoop(); }; updateDisplay(new CrowdControlGame(13, 14, this)); } public function loadKongApi():void{ var paramObj:Object = LoaderInfo(root.loaderInfo).parameters; var api_url:String = ((paramObj.api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf")); var request:URLRequest = new URLRequest(api_url); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, kongApiLoaded); loader.load(request); this.addChild(loader); } private function updateDisplay(a_replacement:DisplayObject):void{ var speed:Number = 0.5; var d:Number = 0; if (m_currentDisplay != null){ d = speed; Tweener.addTween(m_currentDisplay, {alpha:0, time:speed, transition:"linear", onComplete:Tweens.removeOnComplete}); }; m_currentDisplay = a_replacement; m_currentDisplay.alpha = 0; addChild(m_currentDisplay); Tweener.addTween(m_currentDisplay, {alpha:1, delay:d, time:speed, transition:"linear"}); } public function createAssassinationGameOver(a_level:int, a_score:int):void{ if (!m_uiLoop.playing){ m_uiLoop.startLoop(); }; updateDisplay(new AssassinationGameOver(a_level, a_score, this)); } public function updateMinStat(a_stat:String, a_value:int):void{ var cur_val:int = s_safeSolManager.readInt(a_stat); s_safeSolManager.writeInt(a_stat, Math.min(cur_val, a_value)); m_dirtyStats = (cur_val > a_value); } } }//package
Section 122
//MainMenu (MainMenu) package { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.net.*; import flash.filters.*; import caurina.transitions.*; public class MainMenu extends Sprite { private var m_main:Main; private var m_assassinationButton:SimpleButton; private var m_creditsButton:SimpleButton; private var m_crowdControlButton:SimpleButton; private var m_rightClick:CustomTextField; public function MainMenu(a_main:Main){ super(); m_main = a_main; addEventListener(Event.ADDED_TO_STAGE, added); } private function creditsButtonClick(a_event:Event):void{ m_main.createCredits(); } private function createButtons():void{ var filter:GlowFilter = new GlowFilter(0xFFFFFF, 0.7, 12, 12, 4); var btnSprite:Sprite = new Sprite(); var recordSize = 14; m_crowdControlButton = new RegularButton(AssetManager.CrowdControlButtonPNG); btnSprite.addChild(m_crowdControlButton); m_crowdControlButton.addEventListener(MouseEvent.CLICK, crowdControlButtonClick); m_assassinationButton = new RegularButton(AssetManager.AssassinationButtonPNG); btnSprite.addChild(m_assassinationButton); m_assassinationButton.x = (m_crowdControlButton.getBounds(btnSprite).right + 5); if (SponsorSingleton.instance.isStolen(stage)){ m_assassinationButton.addEventListener(MouseEvent.MOUSE_DOWN, SponsorSingleton.instance.goToSponsorSite); } else { m_assassinationButton.addEventListener(MouseEvent.CLICK, assassinationButtonClick); }; m_creditsButton = new RegularButton(AssetManager.CreditsButtonPNG); m_creditsButton.x = m_crowdControlButton.x; m_creditsButton.y = (m_crowdControlButton.getBounds(btnSprite).bottom + 2); btnSprite.addChild(m_creditsButton); m_creditsButton.addEventListener(MouseEvent.CLICK, creditsButtonClick); var stealButton:RegularButton = new RegularButton(AssetManager.PutOnSiteButtonPNG); stealButton.x = m_assassinationButton.x; stealButton.y = (m_assassinationButton.getBounds(btnSprite).bottom + 2); btnSprite.addChild(stealButton); stealButton.addEventListener(MouseEvent.CLICK, stealButtonClick); addChild(btnSprite); btnSprite.x = (320 - (btnSprite.width / 2)); btnSprite.y = (m_rightClick.getBounds(this).top - btnSprite.height); } private function crowdControlButtonClick(a_event:Event):void{ m_main.createCrowdControlGame(); } private function added(a_event:Event):void{ var color:Number; var transform:ColorTransform; var throb:Function; var b:RegularButton; var a_event = a_event; removeEventListener(Event.ADDED_TO_STAGE, added); addChild(new AssetManager.TitleBgPNG()); m_rightClick = new CustomTextField("Right Click to Change Settings", 0xFFFFFF, 20); m_rightClick.filters = [new GlowFilter(0, 1, 12, 12, 4)]; addChild(m_rightClick); m_rightClick.x = ((640 - m_rightClick.width) / 2); m_rightClick.y = (480 - m_rightClick.height); color = 0; transform = new ColorTransform(1, 1, 1); throb = function ():void{ if (stage != null){ if (color < 0.1){ color = 1; } else { color = 0; }; Tweener.addTween(transform, {time:0.75, transition:"linear", greenMultiplier:color, blueMultiplier:color, onUpdate:function ():void{ m_rightClick.transform.colorTransform = transform; }, onComplete:throb}); }; }; throb(); createButtons(); if (SponsorSingleton.instance.isStolen(stage)){ b = SponsorSingleton.instance.createTitleButton(); addChild(b); b.x = (640 - b.width); }; m_main.submitAllKongStats(); } private function assassinationButtonClick(a_event:Event):void{ m_main.createAssassinationGame(); } private function stealButtonClick(a_event:Event):void{ navigateToURL(new URLRequest("http://www.kongregate.com/game_sponsorships/list"), "_blank"); } } }//package
Section 123
//Mission (Mission) package { import flash.geom.*; public class Mission extends SpriteEntity { public static const c_missionFontSize:int = 22; public function Mission(a_maxIndex:int=4){ super(); } public function update(a_columns:Array, a_rect:Rectangle):void{ } public function get isComplete():Boolean{ return (false); } } }//package
Section 124
//MochiAd (MochiAd) package { import flash.events.*; import flash.display.*; import flash.net.*; import flash.utils.*; import flash.system.*; public class MochiAd { public static function getVersion():String{ return ("2.7"); } public static function showClickAwayAd(options:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var options = options; var DEFAULTS:Object = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{ }, ad_finished:function ():void{ }, ad_loaded:function (width:Number, height:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; var wh:Array = MochiAd._getRes(options, clip); var w:Number = wh[0]; var h:Number = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.rpc = function (callbackID:Number, arg:Object):void{ MochiAd.rpc(clip, callbackID, arg); }; var sendHostProgress:Boolean; mc.regContLC = function (lc_name:String):void{ mc._containerLCName = lc_name; }; chk["onEnterFrame"] = function ():void{ var total:Number; if (!this.parent){ delete this.onEnterFrame; return; }; var ad_clip:Object = this.parent._mochiad_ctr; var elapsed:Number = (getTimer() - this.started); var finished:Boolean; if (!chk.showing){ total = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (total > 0){ chk.showing = true; finished = true; chk.started = getTimer(); } else { if (elapsed > chk.ad_timeout){ options.ad_failed(); finished = true; }; }; }; if (this.root == null){ finished = true; }; if (finished){ delete this.onEnterFrame; }; }; doOnEnterFrame(chk); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _allowDomains(server:String):String{ var hostname:String = server.split("/")[2].split(":")[0]; Security.allowDomain("*"); Security.allowDomain(hostname); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(hostname); return (hostname); } public static function unload(clip:Object):Boolean{ if (((clip.clip) && (clip.clip._mochiad))){ clip = clip.clip; }; if (clip.origFrameRate != undefined){ clip.stage.frameRate = clip.origFrameRate; }; if (!clip._mochiad){ return (false); }; if (clip._mochiad._containerLCName != undefined){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"unload"}); }; if (clip._mochiad.onUnload){ clip._mochiad.onUnload(); }; delete clip._mochiad_loaded; delete clip._mochiad; return (true); } public static function showInterLevelAd(options:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var options = options; var DEFAULTS:Object = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (width:Number, height:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; var ad_msec:Number = 11000; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; var fadeout_time:Number = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; var wh:Array = MochiAd._getRes(options, clip); var w:Number = wh[0]; var h:Number = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; var p:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (p > 0){ this.parent.alpha = (p * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (msec:Number):void{ var _chk:Object = mc._mochiad_wait; _chk.server_control = true; _chk.showing = true; _chk.started = getTimer(); _chk.ad_msec = (msec - 250); }; mc.rpc = function (callbackID:Number, arg:Object):void{ MochiAd.rpc(clip, callbackID, arg); }; chk["onEnterFrame"] = function ():void{ var total:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; var ad_clip:Object = this.parent._mochiad_ctr; var elapsed:Number = (getTimer() - this.started); var finished:Boolean; if (!chk.showing){ total = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (total > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if (elapsed > chk.ad_timeout){ options.ad_failed(); finished = true; }; }; }; if (elapsed > chk.ad_msec){ finished = true; }; if (finished){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _parseOptions(options:Object, defaults:Object):Object{ var k:String; var pairs:Array; var i:Number; var kv:Array; var optcopy:Object = {}; for (k in defaults) { optcopy[k] = defaults[k]; }; if (options){ for (k in options) { optcopy[k] = options[k]; }; }; if (optcopy.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; options = optcopy.clip.loaderInfo.parameters.mochiad_options; if (options){ pairs = options.split("&"); i = 0; while (i < pairs.length) { kv = pairs[i].split("="); optcopy[unescape(kv[0])] = unescape(kv[1]); i++; }; }; if (optcopy.id == "test"){ trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); }; return (optcopy); } public static function _cleanup(mc:Object):void{ var k:String; var lc:LocalConnection; var f:Function; var mc = mc; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ lc.client = null; lc.close(); //unresolved jump var _slot1 = e; }; setTimeout(f, 0); }; var idx:Number = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function load(options:Object):MovieClip{ var clip:Object; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var g:Function; var req:URLRequest; var v:Object; var options = options; var DEFAULTS:Object = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!MochiAd._isNetworkAvailable()){ return (null); }; if (clip._mochiad_loaded){ return (null); }; //unresolved jump var _slot1 = e; throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); var depth:Number = options.depth; delete options.depth; var mc:MovieClip = createEmptyMovieClip(clip, "_mochiad", depth); var wh:Array = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; }; var lv:URLVariables = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; mc.lcName = name; lv.lc = name; lv.st = getTimer(); loader = new Loader(); g = function (ev:Object):void{ ev.target.removeEventListener(ev.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime())); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function runMethod(base:Object, methodName:String, argsArray:Array):Object{ var nameArray:Array = methodName.split("."); var i:Number = 0; while (i < (nameArray.length - 1)) { if ((((base[nameArray[i]] == undefined)) || ((base[nameArray[i]] == null)))){ return (undefined); }; base = base[nameArray[i]]; i++; }; if (typeof(base[nameArray[i]]) == "function"){ return (base[nameArray[i]].apply(base, argsArray)); }; return (undefined); } public static function createEmptyMovieClip(parent:Object, name:String, depth:Number):MovieClip{ var mc:MovieClip = new MovieClip(); if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; parent[name] = mc; mc["_name"] = name; return (mc); } public static function _getRes(options:Object, clip:Object):Array{ var xy:Array; var b:Object = clip.getBounds(clip.root); var w:Number = 0; var h:Number = 0; if (typeof(options.res) != "undefined"){ xy = options.res.split("x"); w = parseFloat(xy[0]); h = parseFloat(xy[1]); } else { w = (b.xMax - b.xMin); h = (b.yMax - b.yMin); }; if ((((w == 0)) || ((h == 0)))){ w = clip.stage.stageWidth; h = clip.stage.stageHeight; }; return ([w, h]); } public static function adShowing(mc:Object):void{ mc.origFrameRate = mc.stage.frameRate; mc.stage.frameRate = 30; } public static function getValue(base:Object, objectName:String):Object{ var nameArray:Array = objectName.split("."); var i:Number = 0; while (i < (nameArray.length - 1)) { if ((((base[nameArray[i]] == undefined)) || ((base[nameArray[i]] == null)))){ return (undefined); }; base = base[nameArray[i]]; i++; }; return (base[nameArray[i]]); } public static function rpc(clip:Object, callbackID:Number, arg:Object):void{ var _local4:Object; var _local5:Object; switch (arg.id){ case "setValue": MochiAd.setValue(clip, arg.objectName, arg.value); break; case "getValue": _local4 = MochiAd.getValue(clip, arg.objectName); clip._mochiad.lc.send(clip._mochiad._containerLCName, "rpcResult", callbackID, _local4); break; case "runMethod": _local5 = MochiAd.runMethod(clip, arg.method, arg.args); clip._mochiad.lc.send(clip._mochiad._containerLCName, "rpcResult", callbackID, _local5); break; default: trace(("[mochiads rpc] unknown rpc id: " + arg.id)); }; } public static function setValue(base:Object, objectName:String, value:Object):void{ var nameArray:Array = objectName.split("."); var i:Number = 0; while (i < (nameArray.length - 1)) { if ((((base[nameArray[i]] == undefined)) || ((base[nameArray[i]] == null)))){ return; }; base = base[nameArray[i]]; i++; }; base[nameArray[i]] = value; } public static function showPreGameAd(options:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var complete:Boolean; var unloaded:Boolean; var sendHostProgress:Boolean; var fn:Function; var r:MovieClip; var options = options; var DEFAULTS:Object = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (width:Number, height:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }, ad_progress:function (percent:Number):void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){ options.ad_started(); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); return; }; clip = options.clip; var ad_msec:Number = 11000; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; var fadeout_time:Number = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); var fn:Function = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; var wh:Array = MochiAd._getRes(options, clip); var w:Number = wh[0]; var h:Number = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); var bar:MovieClip = createEmptyMovieClip(chk, "_mochiad_bar", 4); if (options.no_progress_bar){ bar.visible = false; delete options.no_progress_bar; } else { bar.x = 10; bar.y = (h - 20); }; var bar_color:Number = options.color; delete options.color; var bar_background:Number = options.background; delete options.background; var bar_outline:Number = options.outline; delete options.outline; var backing_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 1); var backing:Object = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo((w - 20), 0); backing.lineTo((w - 20), 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); var inside_mc:MovieClip = createEmptyMovieClip(bar, "_inside", 2); var inside:Object = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo((w - 20), 0); inside.lineTo((w - 20), 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; var outline_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 3); var outline:Object = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo((w - 20), 0); outline.lineTo((w - 20), 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var p:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (p > 0){ this.parent.alpha = (p * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; var f:Function = function (ev:Event):void{ ev.target.removeEventListener(ev.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; clip.loaderInfo.addEventListener(Event.COMPLETE, f); if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (msec:Number):void{ var _chk:Object = mc._mochiad_wait; _chk.server_control = true; _chk.showing = true; _chk.started = getTimer(); _chk.ad_msec = msec; }; mc.rpc = function (callbackID:Number, arg:Object):void{ MochiAd.rpc(clip, callbackID, arg); }; mc.rpcTestFn = function (s:String):Object{ trace(("[MOCHIAD rpcTestFn] " + s)); return (s); }; mc.regContLC = function (lc_name:String):void{ mc._containerLCName = lc_name; }; sendHostProgress = false; mc.sendHostLoadProgress = function (lc_name:String):void{ sendHostProgress = true; }; chk["onEnterFrame"] = function ():void{ var total:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; var _clip:Object = this.parent.parent.root; var ad_clip:Object = this.parent._mochiad_ctr; var elapsed:Number = (getTimer() - this.started); var finished:Boolean; var clip_total:Number = _clip.loaderInfo.bytesTotal; var clip_loaded:Number = _clip.loaderInfo.bytesLoaded; if (complete){ clip_loaded = Math.max(1, clip_loaded); clip_total = clip_loaded; }; var clip_pcnt:Number = ((100 * clip_loaded) / clip_total); var ad_pcnt:Number = ((100 * elapsed) / chk.ad_msec); var _inside:Object = this._mochiad_bar._inside; var pcnt:Number = Math.min(100, Math.min(((clip_pcnt) || (0)), ad_pcnt)); pcnt = Math.max(this.last_pcnt, pcnt); this.last_pcnt = pcnt; _inside.scaleX = (pcnt * 0.01); options.ad_progress(pcnt); if (sendHostProgress){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:clip_pcnt}); if (clip_pcnt == 100){ sendHostProgress = false; }; }; if (!chk.showing){ total = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (total > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if ((((elapsed > chk.ad_timeout)) && ((clip_pcnt == 100)))){ options.ad_failed(); finished = true; }; }; }; if (elapsed > chk.ad_msec){ finished = true; }; if (((complete) && (finished))){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(options:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); MochiAd.showPreGameAd(options); } public static function showTimedAd(options:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); MochiAd.showInterLevelAd(options); } public static function doOnEnterFrame(mc:MovieClip):void{ var mc = mc; var f:Function = function (ev:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { ev.target.removeEventListener(ev.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package
Section 125
//MochiBot (MochiBot) package { import flash.display.*; import flash.system.*; import flash.net.*; public dynamic class MochiBot extends Sprite { public static function track(parent:Sprite, tag:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var self:MochiBot = new (MochiBot); parent.addChild(self); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var server:String = "http://core.mochibot.com/my/core.swf"; var lv:URLVariables = new URLVariables(); lv["sb"] = Security.sandboxType; lv["v"] = Capabilities.version; lv["swfid"] = tag; lv["mv"] = "8"; lv["fv"] = "9"; var url:String = self.root.loaderInfo.loaderURL; if (url.indexOf("http") == 0){ lv["url"] = url; } else { lv["url"] = "local"; }; var req:URLRequest = new URLRequest(server); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; var loader:Loader = new Loader(); self.addChild(loader); loader.load(req); return (self); } } }//package
Section 126
//MorphBlock (MorphBlock) package { public class MorphBlock extends Block { public function MorphBlock(){ super(); buttonMode = true; m_player = Animations.instance.instantiate("bombpowerup"); addChild(m_player); toolTip = "Destroys bots of one color."; } } }//package
Section 127
//MyPreloader (MyPreloader) package { import flash.display.*; import com.urbansquall.preloader.*; public class MyPreloader extends Preloader { private var m_movieClip:MovieClip; private var m_text:CustomTextField; public function MyPreloader(){ super(); MochiBot.track(this, "4d652990"); } override protected function endLoading():void{ removeChild(m_movieClip); m_movieClip = null; removeChild(m_text); m_text = null; } override protected function updateLoading(a_percent:Number):void{ m_text.text = (("" + Math.floor((100 * a_percent))) + "%"); m_text.x = (320 - (m_text.width / 2)); m_text.y = ((480 - m_text.height) - 10); m_movieClip.gotoAndStop(Math.floor((m_movieClip.totalFrames * a_percent))); } override protected function beginLoading():void{ m_movieClip = SponsorSingleton.instance.createPreloader(stage); addChild(m_movieClip); m_movieClip.x = 320; m_movieClip.y = 240; m_movieClip.gotoAndPlay(0); m_text = new CustomTextField("", 0xFFFFFF); addChild(m_text); } } }//package
Section 128
//OneColorBlockCountMission (OneColorBlockCountMission) package { import flash.display.*; import flash.geom.*; public class OneColorBlockCountMission extends Mission { private var m_label:CustomTextField; private var m_icon:Bitmap; private var m_count:int; private var m_block:ColorBlock; private static const c_goal:int = 25; private static var icons:Array = new Array(AssetManager.BonusBlueMatchPNG, AssetManager.BonusRedMatchPNG, AssetManager.BonusGreenMatchPNG, AssetManager.BonusPurpleMatchPNG, AssetManager.BonusOrangeMatchPNG); public function OneColorBlockCountMission(a_maxIndex:int){ super(); m_count = c_goal; m_block = BlockGenerator.generateRandomColorBlock(a_maxIndex); createCount(); updateDisplay(); toolTip = "Zap bots of this color"; } override public function get isComplete():Boolean{ return ((m_count <= 0)); } override public function update(a_columns:Array, a_rect:Rectangle):void{ var j:int; var num:int; var i:int = a_rect.left; while (i < a_rect.right) { j = a_rect.top; while (j < a_rect.bottom) { if ((((a_columns[i][j] is ColorBlock)) && ((a_columns[i][j] as ColorBlock).equals(m_block)))){ num++; }; j++; }; i++; }; m_count = Math.max(0, (m_count - num)); updateDisplay(); } public function createCount():void{ var bot:Class = icons[m_block.index]; m_icon = new (bot); addChild(m_icon); m_label = new CustomTextField("", 0, c_missionFontSize); m_label.background = false; addChild(m_label); m_label.y = (m_icon.getBounds(this).bottom - 10); updateDisplay(); } public function updateDisplay():void{ m_label.text = ("x" + m_count); m_label.x = (((m_icon.width - m_label.width) / 2) - 3); } } }//package
Section 129
//RandomUtils (RandomUtils) package { public class RandomUtils { public function RandomUtils(){ super(); } public static function Shuffle(a_array:Array):void{ var swapIndex:int; var tmp:Object; var i:int; while (i < a_array.length) { swapIndex = RandomInt(i, (a_array.length - 1)); tmp = a_array[swapIndex]; a_array[swapIndex] = a_array[i]; a_array[i] = tmp; i++; }; } public static function RandomSelection(a_array:Array){ return (a_array[Math.floor((a_array.length * Math.random()))]); } public static function RandomInt(a_min:int, a_max:int):int{ var range:int = (a_max - a_min); return ((a_min + Math.floor((Math.random() * range)))); } public static function RandomBool(a_probabilityTrue:Number):Boolean{ return ((Math.random() < a_probabilityTrue)); } } }//package
Section 130
//RegularButton (RegularButton) package { import flash.events.*; import flash.display.*; import flash.geom.*; public class RegularButton extends SimpleButton { private var m_overThings:Array; public function RegularButton(a_imgClass:Class, a_optionalPutOverThing:Class=null){ var upThing:Sprite; var overThing:Sprite; var downThing:Sprite; super(); m_overThings = []; var up:Sprite = new Sprite(); up.addChild(new (a_imgClass)); up.cacheAsBitmap = true; this.upState = up; var over:Sprite = new Sprite(); over.addChild(new (a_imgClass)); over.transform.colorTransform = new ColorTransform(1.1, 1.1, 1.1); over.cacheAsBitmap = true; this.overState = over; var down:Sprite = new Sprite(); down.addChild(new (a_imgClass)); down.transform.colorTransform = new ColorTransform(0.8, 0.8, 0.8); down.cacheAsBitmap = true; this.downState = down; this.hitTestState = up; this.cacheAsBitmap = true; this.useHandCursor = true; if (a_optionalPutOverThing != null){ upThing = new (a_optionalPutOverThing); up.addChild(upThing); overThing = new (a_optionalPutOverThing); over.addChild(overThing); downThing = new (a_optionalPutOverThing); down.addChild(downThing); m_overThings = [upThing, overThing, downThing]; toggleOverThings(); this.addEventListener(MouseEvent.CLICK, onClick); }; } private function onClick(a_event:MouseEvent):void{ toggleOverThings(); } private function toggleOverThings():void{ var t:Sprite; for each (t in m_overThings) { t.visible = !(t.visible); }; } } }//package
Section 131
//ResultsScreen (ResultsScreen) package { import flash.events.*; import flash.display.*; public class ResultsScreen extends Sprite { private var m_controller:Main; public function ResultsScreen(a_level:int, a_score:int, a_controller:Main){ var str:String; var btn:RegularButton; var rem:Function; var a_level = a_level; var a_score = a_score; var a_controller = a_controller; super(); m_controller = a_controller; addChild(new AssetManager.GameOverPNG()); var score:CustomTextField = new CustomTextField(("Score : " + a_score), 0, 28, true); addChild(score); score.x = ((640 - score.width) / 2); score.y = 150; var level:CustomTextField = new CustomTextField(("Level : " + a_level), 0, 28, true); addChild(level); level.x = ((640 - level.width) / 2); level.y = (score.getBounds(this).bottom + 5); m_controller.updateMaxStat(Main.ccHighScore, a_score); m_controller.updateMaxStat(Main.ccHighLevel, a_level); str = ("High Score: " + Main.s_safeSolManager.readInt(Main.ccHighScore)); var ccHighScore:CustomTextField = new CustomTextField(str, 0, 28, true); addChild(ccHighScore); ccHighScore.x = ((640 - ccHighScore.width) / 2); ccHighScore.y = (level.getBounds(this).bottom + 2); str = ("Best Level: " + Main.s_safeSolManager.readInt(Main.ccHighLevel)); var ccHighLevel:CustomTextField = new CustomTextField(str, 0, 28, true); addChild(ccHighLevel); ccHighLevel.x = ((640 - ccHighLevel.width) / 2); ccHighLevel.y = (ccHighScore.getBounds(this).bottom + 2); btn = new RegularButton(AssetManager.MainMenuButtonPNG); addChild(btn); btn.x = ((640 - btn.width) / 2); btn.y = ((480 - btn.height) - 38); rem = function (a_event:MouseEvent):void{ btn.removeEventListener(MouseEvent.CLICK, rem); m_controller.createMainMenu(); }; btn.addEventListener(MouseEvent.CLICK, rem); } } }//package
Section 132
//RowBlock (RowBlock) package { public class RowBlock extends Block { public function RowBlock(){ super(); buttonMode = true; m_player = Animations.instance.instantiate("rowpowerup"); addChild(m_player); toolTip = "Replaces this row with one color."; } } }//package
Section 133
//ScoreDisplay (ScoreDisplay) package { import flash.display.*; import com.urbansquall.security.*; import flash.text.*; import caurina.transitions.*; public class ScoreDisplay extends Sprite { private var m_scoreValue:safeint; public var m_scoreDisplay:int; private var m_textField:TextField; public function ScoreDisplay(){ super(); m_scoreValue = new safeint(0); m_textField = new CustomTextField("", 0, 22); m_textField.background = false; addChild(m_textField); updateScore(); } private function updateScore():void{ m_textField.text = ("" + m_scoreDisplay); } public function get score():int{ return (m_scoreValue.val); } public function set score(value:int):void{ m_scoreValue.val = value; if (Tweener.getTweenCount(this) > 0){ Tweener.removeTweens(this); }; Tweener.addTween(this, {m_scoreDisplay:value, time:1, transition:"linear", onUpdate:updateScore}); } } }//package
Section 134
//ScoreLabel (ScoreLabel) package { import flash.display.*; import flash.text.*; import flash.filters.*; public class ScoreLabel extends Sprite { private var m_labelText:TextField; public function ScoreLabel(a_points:int){ super(); m_labelText = new CustomTextField(("" + a_points), 0xFFFFFF, (30 + (15 * Math.max(1, Math.floor((Math.log(Math.abs(a_points)) / Math.log(10))))))); m_labelText.filters = [new GlowFilter(0, 1, 2, 2, 32)]; m_labelText.x = (-(m_labelText.width) / 2); m_labelText.y = (-(m_labelText.height) / 2); m_labelText.background = false; addChild(m_labelText); } } }//package
Section 135
//SelectionManager (SelectionManager) package { import flash.display.*; import flash.geom.*; import com.urbansquall.ginger.*; public class SelectionManager { private var m_controllers:Array; private static const c_ls:String = "Left"; private static const c_bl:String = "BottomLeft"; private static const c_ts:String = "Top"; private static const c_br:String = "BottomRight"; private static const c_tr:String = "TopRight"; private static const c_tl:String = "TopLeft"; private static const c_bs:String = "Bottom"; private static const c_rs:String = "Right"; public static var s_masterController:AnimationPlayer = null; public function SelectionManager(a_selectionRect:Rectangle, a_tilePxX:Function, a_tilePxY:Function, a_foreground:Sprite){ var t:AnimationPlayer; var b:AnimationPlayer; var l:AnimationPlayer; var r:AnimationPlayer; super(); m_controllers = new Array(); var tl:AnimationPlayer = getAnimation(); tl.play(c_tl); m_controllers.push(tl); a_foreground.addChild(tl); tl.x = a_tilePxX(a_selectionRect.left); tl.y = a_tilePxY(a_selectionRect.top); var tr:AnimationPlayer = getAnimation(); tr.play(c_tr); m_controllers.push(tr); a_foreground.addChild(tr); tr.x = a_tilePxX((a_selectionRect.right - 1)); tr.y = a_tilePxY(a_selectionRect.top); var bl:AnimationPlayer = getAnimation(); bl.play(c_bl); m_controllers.push(bl); a_foreground.addChild(bl); bl.x = a_tilePxX(a_selectionRect.left); bl.y = a_tilePxY((a_selectionRect.bottom - 1)); var br:AnimationPlayer = getAnimation(); br.play(c_br); m_controllers.push(br); a_foreground.addChild(br); br.x = a_tilePxX((a_selectionRect.right - 1)); br.y = a_tilePxY((a_selectionRect.bottom - 1)); var xoff = 1; while (xoff < (a_selectionRect.width - 1)) { t = getAnimation(); t.play(c_ts); m_controllers.push(t); a_foreground.addChild(t); t.x = a_tilePxX((a_selectionRect.left + xoff)); t.y = a_tilePxY(a_selectionRect.top); b = getAnimation(); b.play(c_bs); m_controllers.push(b); a_foreground.addChild(b); b.x = a_tilePxX((a_selectionRect.left + xoff)); b.y = (a_tilePxY(a_selectionRect.bottom) - 3); xoff++; }; var yoff = 1; while (yoff < (a_selectionRect.height - 1)) { l = getAnimation(); l.play(c_ls); m_controllers.push(l); a_foreground.addChild(l); l.x = a_tilePxX(a_selectionRect.left); l.y = a_tilePxY((a_selectionRect.top + yoff)); r = getAnimation(); r.play(c_rs); m_controllers.push(r); a_foreground.addChild(r); r.x = a_tilePxX((a_selectionRect.right - 1)); r.y = a_tilePxY((a_selectionRect.top + yoff)); yoff++; }; } public function update(a_deltaTime:int):void{ var a:AnimationPlayer; for each (a in m_controllers) { a.update(a_deltaTime); }; } private function getAnimation():AnimationPlayer{ var a:Array; var o:Object; var anim:Animation; if (null == s_masterController){ s_masterController = new AnimationPlayer(); a = new Array({name:c_tl, startX:0, startY:1}, {name:c_tr, startX:4, startY:1}, {name:c_bl, startX:0, startY:2}, {name:c_br, startX:4, startY:2}, {name:c_ls, startX:0, startY:3}, {name:c_rs, startX:4, startY:3}, {name:c_ts, startX:0, startY:0}, {name:c_bs, startX:0, startY:0}); for each (o in a) { anim = AnimationBuilder.importStrip(30, AssetManager.PerimiterBitmap.bitmapData, 40, 40, 4, (o.startX * 40), (o.startY * 40)); anim.isLooping = true; anim.changeAllOffsets(0, 0); s_masterController.addAnimation(o.name, anim); }; }; return (s_masterController.copy()); } } }//package
Section 136
//SmartBomb (SmartBomb) package { import com.urbansquall.ginger.*; public class SmartBomb extends SpriteEntity { private var m_player:AnimationPlayer; private var m_usable:Boolean; private static const c_radius:int = 13; public function SmartBomb(a_usable:Boolean){ super(); m_usable = a_usable; buttonMode = true; if (!a_usable){ m_player = Animations.instance.instantiate("disabled_smartbomb"); this.toolTip = "Extra bombs available in the Kongregate version.\nClick to go there now"; } else { m_player = Animations.instance.instantiate("active_smartbomb"); this.toolTip = "Transforms one color into another"; }; addChild(m_player); } public function get usable():Boolean{ return (m_usable); } override public function tick(a_deltaTime:Number):void{ super.tick(a_deltaTime); m_player.update(a_deltaTime); } } }//package
Section 137
//SonarEffect (SonarEffect) package { import flash.media.*; public dynamic class SonarEffect extends Sound { } }//package
Section 138
//SoundManager (SoundManager) package { import flash.media.*; public class SoundManager { public static var s_crowdControlLoop:Sound = new CrowdControlLoop(); public static var s_explosionEffect:Sound = new ExplosionEffect(); public static var s_assassinationLoop:Sound = new AssassinationLoop(); public static var s_surgeSound:Sound = new ElectricalSurgeEffect(); public static var s_linePowerUpEffect:Sound = new LinePowerUp(); public static var s_warningLoop:Sound = new AlarmEffect(); public static var s_radarPowerUpEffect:Sound = new SonarEffect(); public static var s_bonusAchievedEffect:Sound = new BonusAchievedEffect(); public static var s_levelUpEffect:Sound = new LevelAchievedEffect(); public static var s_clearSounds:Array = new Array(new Effect7(), new Effect9(), new Effect11(), new Effect13(), new Effect15(), new Effect17(), new Effect19()); public static var s_cancelMoveEffect:Sound = new CancelDragEffect(); public static var s_electricalArcLoop:Sound = new ElectricalArcLoop(); public static var s_uiLoop:Sound = new UILoop(); public static var sfx_transform:SoundTransform = new SoundTransform(); public static var s_startMoveEffect:Sound = new StartMoveEffect(); public static var bgm_transform:SoundTransform = new SoundTransform(); public static var s_gameOverSound:Sound = new GameOverEffect(); public function SoundManager(){ super(); } } }//package
Section 139
//splash_kong (splash_kong) package { import flash.display.*; public dynamic class splash_kong extends MovieClip { } }//package
Section 140
//SponsorSingleton (SponsorSingleton) package { public class SponsorSingleton { private static var m_instance:ISponsor; public function SponsorSingleton(){ super(); } public static function get instance():ISponsor{ if (m_instance == null){ m_instance = new KongregateSponsor(); }; return (m_instance); } } }//package
Section 141
//SpriteEntity (SpriteEntity) package { import flash.events.*; import flash.display.*; import com.urbansquall.serenity.*; import flash.filters.*; public class SpriteEntity extends Sprite implements IEntity { protected var m_id:String; protected var m_toolTip:CustomTextField; protected var m_toolTipSprite:Sprite; private static const glow:GlowFilter = new GlowFilter(0, 0.8, 12, 12, 4); public static var m_counter:int = 0; public function SpriteEntity(){ super(); m_id = ("SpriteEntity_" + m_counter); m_counter = (m_counter + 1); m_toolTip = new CustomTextField("", 0xFFFFFF, 14); m_toolTip.filters = [glow]; m_toolTip.visible = false; m_toolTip.mouseEnabled = false; m_toolTip.background = false; } public function get toolTip():String{ return (m_toolTip.text); } protected function mouseMove(a_event:MouseEvent):void{ if (Main.s_showToolTips){ m_toolTip.visible = true; m_toolTip.x = Math.min(Math.max(0, (a_event.stageX - (m_toolTip.width / 2))), (640 - m_toolTip.width)); m_toolTip.y = (a_event.stageY - m_toolTip.height); }; } protected function mouseOut(a_event:MouseEvent):void{ m_toolTip.visible = false; } public function get id():String{ return (m_id); } public function registerToolTips(a_sprite:Sprite):void{ addEventListener(MouseEvent.MOUSE_MOVE, mouseMove); addEventListener(MouseEvent.MOUSE_OUT, mouseOut); a_sprite.addChild(m_toolTip); } public function set toolTip(a_val:String):void{ m_toolTip.text = a_val; } public function tick(a_deltaTime:Number):void{ } public function dispose():void{ removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove); removeEventListener(MouseEvent.ROLL_OUT, mouseOut); } } }//package
Section 142
//StartMoveEffect (StartMoveEffect) package { import flash.media.*; public dynamic class StartMoveEffect extends Sound { } }//package
Section 143
//TimerBar (TimerBar) package { import flash.display.*; import flash.geom.*; public class TimerBar extends Sprite { private var m_orange:Sprite; private var m_height:int; private var m_prevTime:int; private var m_timeRemaining:int; private var m_margin:int; private var m_cover:Sprite; private var m_blue:Sprite; private var m_width:int; private var m_box:Sprite; private var m_maxTime:int; private static var s_orange:ColorTransform = new ColorTransform(1, 0.5, 0); private static var s_red:ColorTransform = new ColorTransform(1, 0, 0); public function TimerBar(a_maxTime:int, a_width:int, a_height:int, a_margin:int){ super(); m_maxTime = a_maxTime; m_timeRemaining = m_maxTime; m_prevTime = 0; m_margin = a_margin; m_width = a_width; m_height = a_height; m_box = new Sprite(); m_box.graphics.beginFill(0); m_box.graphics.drawRect(0, 0, a_width, a_height); m_box.graphics.endFill(); addChild(m_box); var blue_mask:Sprite = makeBar(0); addChild(blue_mask); blue_mask.x = m_margin; blue_mask.y = m_margin; m_blue = makeBar(33023); m_blue.mask = blue_mask; addChild(m_blue); m_blue.x = m_margin; m_blue.y = m_margin; var orange_mask:Sprite = makeBar(0); addChild(orange_mask); orange_mask.x = m_margin; orange_mask.y = m_margin; m_orange = makeBar(0xFFFFFF); m_orange.mask = orange_mask; addChild(m_orange); m_orange.x = m_margin; m_orange.y = m_margin; } private function makeBar(a_color:uint):Sprite{ var bar:Sprite = new Sprite(); bar.graphics.beginFill(a_color); bar.graphics.drawRect(0, 0, (m_width - (m_margin * 2)), (m_height - (m_margin * 2))); bar.graphics.endFill(); return (bar); } public function updateBar():void{ m_orange.y = ((m_margin * 2) + (m_orange.height * ((m_maxTime - m_prevTime) / m_maxTime))); m_blue.y = ((m_margin * 2) + (m_orange.height * ((m_maxTime - m_timeRemaining) / m_maxTime))); m_orange.transform.colorTransform = s_orange; if (m_timeRemaining < (m_maxTime * 0.15)){ m_orange.transform.colorTransform = s_red; }; } public function set timeRemaining(a_value:int):void{ m_timeRemaining = Math.min(m_maxTime, a_value); } public function get timeRemaining():int{ return (m_timeRemaining); } public function updateTime(a_deltaTime:int):void{ m_timeRemaining = (m_timeRemaining - a_deltaTime); m_prevTime = Math.min(m_timeRemaining, (m_prevTime + ((m_timeRemaining - m_prevTime) / 10))); } } }//package
Section 144
//Tweens (Tweens) package { public class Tweens { public static const removeOnComplete:Function = function ():void{ this.parent.removeChild(this); }; public function Tweens(){ super(); } } }//package
Section 145
//UILoop (UILoop) package { import flash.media.*; public dynamic class UILoop extends Sound { } }//package
Section 146
//WildCardBlock (WildCardBlock) package { import com.urbansquall.ginger.*; public class WildCardBlock extends Block { public function WildCardBlock(){ super(); m_onComplete = null; m_player = Animations.instance.instantiate("wildcardbot"); addChild(m_player); m_player.addEventListener(AnimationEvent.CHANGE, animationChange); toolTip = "Matches any color and multiplies score."; } } }//package

Library Items

Symbol 1 GraphicUsed by:2 31
Symbol 2 MovieClipUses:1Used by:31
Symbol 3 GraphicUsed by:4
Symbol 4 ButtonUses:3Used by:31
Symbol 5 GraphicUsed by:31
Symbol 6 GraphicUsed by:7
Symbol 7 MovieClipUses:6Used by:25 31
Symbol 8 GraphicUsed by:9
Symbol 9 MovieClipUses:8Used by:24 31
Symbol 10 GraphicUsed by:11
Symbol 11 MovieClipUses:10Used by:18 24 25 31
Symbol 12 GraphicUsed by:13
Symbol 13 MovieClipUses:12Used by:18 24 25 31
Symbol 14 GraphicUsed by:15
Symbol 15 MovieClipUses:14Used by:18 24 25 31
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClipUses:16Used by:18 24 25 31
Symbol 18 MovieClipUses:11 13 15 17Used by:31
Symbol 19 GraphicUsed by:31
Symbol 20 GraphicUsed by:21 31
Symbol 21 MovieClipUses:20Used by:31
Symbol 22 GraphicUsed by:31
Symbol 23 GraphicUsed by:25
Symbol 24 MovieClipUses:9 11 13 15 17Used by:25
Symbol 25 MovieClipUses:23 7 24 11 13 15 17Used by:31
Symbol 26 GraphicUsed by:27
Symbol 27 MovieClipUses:26Used by:31
Symbol 28 FontUsed by:29
Symbol 29 TextUses:28Used by:30
Symbol 30 MovieClipUses:29Used by:31
Symbol 31 MovieClip {splash_kong} [splash_kong]Uses:1 2 4 5 7 9 18 19 21 22 11 13 15 17 25 27 20 30
Symbol 32 Sound {AssetManager_Score2MP3} [AssetManager_Score2MP3]
Symbol 33 Sound {AssetManager_Score9MP3} [AssetManager_Score9MP3]
Symbol 34 Sound {AssetManager_Score4MP3} [AssetManager_Score4MP3]
Symbol 35 Sound {AssetManager_Score10MP3} [AssetManager_Score10MP3]
Symbol 36 Sound {AssetManager_Score3MP3} [AssetManager_Score3MP3]
Symbol 37 Sound {AssetManager_Score6MP3} [AssetManager_Score6MP3]
Symbol 38 Sound {AssetManager_Score8MP3} [AssetManager_Score8MP3]
Symbol 39 Sound {AssetManager_Score5MP3} [AssetManager_Score5MP3]
Symbol 40 Sound {AssetManager_Score1MP3} [AssetManager_Score1MP3]
Symbol 41 Sound {AssetManager_Score7MP3} [AssetManager_Score7MP3]
Symbol 42 Bitmap {AssetManager_CrowdControlButtonPNG}
Symbol 43 Bitmap {AssetManager_BonusBlueMatchPNG}
Symbol 44 Bitmap {AssetManager_BonusAllAtOncePNG}
Symbol 45 Bitmap {AssetManager_BonusOrangeMatchPNG}
Symbol 46 Bitmap {AssetManager_CrossHairPNG}
Symbol 47 Bitmap {AssetManager_PlayButtonPNG}
Symbol 48 Bitmap {AssetManager_HowToLowTimePNG}
Symbol 49 Bitmap {AssetManager_AssassinationOverlayPNG}
Symbol 50 Bitmap {AssetManager_LockedSmartBombPNG}
Symbol 51 Bitmap {AssetManager_BackgroundPNG}
Symbol 52 Bitmap {AssetManager_TitleBgPNG}
Symbol 53 Bitmap {AssetManager_TargetEliminatedPNG}
Symbol 54 Bitmap {AssetManager_PauseButtonPNG}
Symbol 55 Bitmap {AssetManager_GameOverPNG}
Symbol 56 Bitmap {AssetManager_HowToScorePNG}
Symbol 57 Bitmap {AssetManager_AssassinationGameOverPNG}
Symbol 58 Bitmap {AssetManager_BonusGreenMatchPNG}
Symbol 59 Bitmap {AssetManager_AssassinationButtonPNG}
Symbol 60 Bitmap {AssetManager_HowToLevelUpPNG}
Symbol 61 Bitmap {AssetManager_MainMenuButtonPNG}
Symbol 62 Bitmap {AssetManager_RobotPNG}
Symbol 63 Bitmap {AssetManager_HowToBonusPNG}
Symbol 64 Bitmap {AssetManager_HowToPlayAssassinationPNG}
Symbol 65 Bitmap {AssetManager_BonusRedMatchPNG}
Symbol 66 Bitmap {AssetManager_ExplosionPNG}
Symbol 67 Bitmap {AssetManager_ContinueButtonPNG}
Symbol 68 Bitmap {AssetManager_RobotDeathPNG}
Symbol 69 Font {AssetManager_interfaceFont}
Symbol 70 Bitmap {AssetManager_CreditsButtonPNG}
Symbol 71 Bitmap {AssetManager_CreditsPNG}
Symbol 72 Bitmap {AssetManager_UrbanSquallPNG}
Symbol 73 Bitmap {AssetManager_BonusChainPNG}
Symbol 74 Bitmap {AssetManager_PerimiterPNG}
Symbol 75 Bitmap {AssetManager_KongInGamePNG}
Symbol 76 Bitmap {AssetManager_KongTitlePNG}
Symbol 77 Bitmap {AssetManager_ActiveSmartBombPNG}
Symbol 78 Bitmap {AssetManager_NextButtonPNG}
Symbol 79 Bitmap {AssetManager_BonusPurpleMatchPNG}
Symbol 80 Bitmap {AssetManager_PutOnSiteButtonPNG}
Symbol 81 Bitmap {AssetManager_RobotEyesPNG}
Symbol 82 Bitmap {AssetManager_InGameOverlayPNG}
Symbol 83 Bitmap {AssetManager_HowToPowerUpPNG}
Symbol 84 Sound {BonusAchievedEffect} [BonusAchievedEffect]
Symbol 85 Sound {ElectricalArcLoop} [ElectricalArcLoop]
Symbol 86 Sound {Effect19} [Effect19]
Symbol 87 Sound {GameOverEffect} [GameOverEffect]
Symbol 88 Sound {CrowdControlLoop} [CrowdControlLoop]
Symbol 89 Sound {Effect15} [Effect15]
Symbol 90 Sound {Effect17} [Effect17]
Symbol 91 Sound {Effect11} [Effect11]
Symbol 92 Sound {Effect13} [Effect13]
Symbol 93 Sound {ElectricalSurgeEffect} [ElectricalSurgeEffect]
Symbol 94 Sound {UILoop} [UILoop]
Symbol 95 Sound {LinePowerUp} [LinePowerUp]
Symbol 96 Sound {ExplosionEffect} [ExplosionEffect]
Symbol 97 Sound {Effect9} [Effect9]
Symbol 98 Sound {StartMoveEffect} [StartMoveEffect]
Symbol 99 Sound {LevelAchievedEffect} [LevelAchievedEffect]
Symbol 100 Sound {AssassinationLoop} [AssassinationLoop]
Symbol 101 Sound {SonarEffect} [SonarEffect]
Symbol 102 Sound {AlarmEffect} [AlarmEffect]
Symbol 103 Sound {CancelDragEffect} [CancelDragEffect]
Symbol 104 Sound {Effect7} [Effect7]

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1459 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 31 as "splash_kong"
ExportAssets (56)Timeline Frame 1Symbol 32 as "AssetManager_Score2MP3"
ExportAssets (56)Timeline Frame 1Symbol 33 as "AssetManager_Score9MP3"
ExportAssets (56)Timeline Frame 1Symbol 34 as "AssetManager_Score4MP3"
ExportAssets (56)Timeline Frame 1Symbol 35 as "AssetManager_Score10MP3"
ExportAssets (56)Timeline Frame 1Symbol 36 as "AssetManager_Score3MP3"
ExportAssets (56)Timeline Frame 1Symbol 37 as "AssetManager_Score6MP3"
ExportAssets (56)Timeline Frame 1Symbol 38 as "AssetManager_Score8MP3"
ExportAssets (56)Timeline Frame 1Symbol 39 as "AssetManager_Score5MP3"
ExportAssets (56)Timeline Frame 1Symbol 40 as "AssetManager_Score1MP3"
ExportAssets (56)Timeline Frame 1Symbol 41 as "AssetManager_Score7MP3"
ExportAssets (56)Timeline Frame 2Symbol 84 as "BonusAchievedEffect"
ExportAssets (56)Timeline Frame 2Symbol 85 as "ElectricalArcLoop"
ExportAssets (56)Timeline Frame 2Symbol 86 as "Effect19"
ExportAssets (56)Timeline Frame 2Symbol 87 as "GameOverEffect"
ExportAssets (56)Timeline Frame 2Symbol 88 as "CrowdControlLoop"
ExportAssets (56)Timeline Frame 2Symbol 89 as "Effect15"
ExportAssets (56)Timeline Frame 2Symbol 90 as "Effect17"
ExportAssets (56)Timeline Frame 2Symbol 91 as "Effect11"
ExportAssets (56)Timeline Frame 2Symbol 92 as "Effect13"
ExportAssets (56)Timeline Frame 2Symbol 93 as "ElectricalSurgeEffect"
ExportAssets (56)Timeline Frame 2Symbol 94 as "UILoop"
ExportAssets (56)Timeline Frame 2Symbol 95 as "LinePowerUp"
ExportAssets (56)Timeline Frame 2Symbol 96 as "ExplosionEffect"
ExportAssets (56)Timeline Frame 2Symbol 97 as "Effect9"
ExportAssets (56)Timeline Frame 2Symbol 98 as "StartMoveEffect"
ExportAssets (56)Timeline Frame 2Symbol 99 as "LevelAchievedEffect"
ExportAssets (56)Timeline Frame 2Symbol 100 as "AssassinationLoop"
ExportAssets (56)Timeline Frame 2Symbol 101 as "SonarEffect"
ExportAssets (56)Timeline Frame 2Symbol 102 as "AlarmEffect"
ExportAssets (56)Timeline Frame 2Symbol 103 as "CancelDragEffect"
ExportAssets (56)Timeline Frame 2Symbol 104 as "Effect7"
EnableDebugger2 (64)Timeline Frame 131 bytes "u.$1$4m$.FncXFMl9bfzeYAAR4sf3/."
DebugMX1 (63)Timeline Frame 1
SerialNumber (41)Timeline Frame 1

Labels

"MyPreloader"Frame 1
"start"Frame 2




http://swfchan.com/12/57273/info.shtml
Created: 18/4 -2019 09:29:19 Last modified: 18/4 -2019 09:29:19 Server time: 13/05 -2024 06:35:51