Section 1
//ColorShortcuts (caurina.transitions.properties.ColorShortcuts)
package caurina.transitions.properties {
import flash.geom.*;
import caurina.transitions.*;
import flash.filters.*;
public class ColorShortcuts {
private static var LUMINANCE_B:Number = 0.072169;
private static var LUMINANCE_G:Number = 0.71516;
private static var LUMINANCE_R:Number = 0.212671;
public function ColorShortcuts(){
super();
trace("This is an static class and should not be instantiated.");
}
public static function _color_splitter(p_value, p_parameters:Array):Array{
var nArray:Array = new Array();
if (p_value == null){
nArray.push({name:"_color_redMultiplier", value:1});
nArray.push({name:"_color_redOffset", value:0});
nArray.push({name:"_color_greenMultiplier", value:1});
nArray.push({name:"_color_greenOffset", value:0});
nArray.push({name:"_color_blueMultiplier", value:1});
nArray.push({name:"_color_blueOffset", value:0});
} else {
nArray.push({name:"_color_redMultiplier", value:0});
nArray.push({name:"_color_redOffset", value:AuxFunctions.numberToR(p_value)});
nArray.push({name:"_color_greenMultiplier", value:0});
nArray.push({name:"_color_greenOffset", value:AuxFunctions.numberToG(p_value)});
nArray.push({name:"_color_blueMultiplier", value:0});
nArray.push({name:"_color_blueOffset", value:AuxFunctions.numberToB(p_value)});
};
return (nArray);
}
public static function _contrast_set(p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object=null):void{
var mc:Number;
var co:Number;
mc = (p_value + 1);
co = Math.round((p_value * -128));
var cfm:ColorTransform = new ColorTransform(mc, mc, mc, 1, co, co, co, 0);
p_obj.transform.colorTransform = cfm;
}
public static function _brightness_get(p_obj:Object, p_parameters:Array, p_extra:Object=null):Number{
var isTint:Boolean = p_parameters[0];
var cfm:ColorTransform = p_obj.transform.colorTransform;
var mc:Number = (1 - (((cfm.redMultiplier + cfm.greenMultiplier) + cfm.blueMultiplier) / 3));
var co:Number = (((cfm.redOffset + cfm.greenOffset) + cfm.blueOffset) / 3);
if (isTint){
return (((co > 0)) ? (co / 0xFF) : -(mc));
//unresolved jump
};
return ((co / 100));
}
public static function _saturation_get(p_obj:Object, p_parameters:Array, p_extra:Object=null):Number{
var mtx:Array = getObjectMatrix(p_obj);
var isDumb:Boolean = p_parameters[0];
var rl:Number = (isDumb) ? (1 / 3) : LUMINANCE_R;
var gl:Number = (isDumb) ? (1 / 3) : LUMINANCE_G;
var bl:Number = (isDumb) ? (1 / 3) : LUMINANCE_B;
var mc:Number = (((((mtx[0] - rl) / (1 - rl)) + ((mtx[6] - gl) / (1 - gl))) + ((mtx[12] - bl) / (1 - bl))) / 3);
var cc:Number = (1 - (((((((mtx[1] / gl) + (mtx[2] / bl)) + (mtx[5] / rl)) + (mtx[7] / bl)) + (mtx[10] / rl)) + (mtx[11] / gl)) / 6));
return (((mc + cc) / 2));
}
public static function _oldColor_property_get(p_obj:Object, p_parameters:Array, p_extra:Object=null):Number{
return ((p_obj.transform.colorTransform[p_parameters[0]] * 100));
}
public static function _brightness_set(p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object=null):void{
var mc:Number;
var co:Number;
var isTint:Boolean = p_parameters[0];
if (isTint){
mc = (1 - Math.abs(p_value));
co = ((p_value > 0)) ? Math.round((p_value * 0xFF)) : 0;
} else {
mc = 1;
co = Math.round((p_value * 100));
};
var cfm:ColorTransform = new ColorTransform(mc, mc, mc, 1, co, co, co, 0);
p_obj.transform.colorTransform = cfm;
}
public static function _saturation_set(p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object=null):void{
var isDumb:Boolean = p_parameters[0];
var rl:Number = (isDumb) ? (1 / 3) : LUMINANCE_R;
var gl:Number = (isDumb) ? (1 / 3) : LUMINANCE_G;
var bl:Number = (isDumb) ? (1 / 3) : LUMINANCE_B;
var sf:Number = p_value;
var nf:Number = (1 - sf);
var nr:Number = (rl * nf);
var ng:Number = (gl * nf);
var nb:Number = (bl * nf);
var mtx:Array = [(nr + sf), ng, nb, 0, 0, nr, (ng + sf), nb, 0, 0, nr, ng, (nb + sf), 0, 0, 0, 0, 0, 1, 0];
setObjectMatrix(p_obj, mtx);
}
private static function getObjectMatrix(p_obj:Object):Array{
var i:Number = 0;
while (i < p_obj.filters.length) {
if ((p_obj.filters[i] is ColorMatrixFilter)){
return (p_obj.filters[i].matrix.concat());
};
i++;
};
return ([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0]);
}
public static function getHueDistance(mtx1:Array, mtx2:Array):Number{
return (((Math.abs((mtx1[0] - mtx2[0])) + Math.abs((mtx1[1] - mtx2[1]))) + Math.abs((mtx1[2] - mtx2[2]))));
}
public static function _hue_set(p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object=null):void{
setObjectMatrix(p_obj, getHueMatrix(p_value));
}
public static function _hue_get(p_obj:Object, p_parameters:Array, p_extra:Object=null):Number{
var i:Number;
var angleToSplit:Number;
var mtx:Array = getObjectMatrix(p_obj);
var hues:Array = [];
hues[0] = {angle:-179.9, matrix:getHueMatrix(-179.9)};
hues[1] = {angle:180, matrix:getHueMatrix(180)};
i = 0;
while (i < hues.length) {
hues[i].distance = getHueDistance(mtx, hues[i].matrix);
i++;
};
var maxTries:Number = 15;
i = 0;
while (i < maxTries) {
if (hues[0].distance < hues[1].distance){
angleToSplit = 1;
} else {
angleToSplit = 0;
};
hues[angleToSplit].angle = ((hues[0].angle + hues[1].angle) / 2);
hues[angleToSplit].matrix = getHueMatrix(hues[angleToSplit].angle);
hues[angleToSplit].distance = getHueDistance(mtx, hues[angleToSplit].matrix);
i++;
};
return (hues[angleToSplit].angle);
}
public static function getHueMatrix(hue:Number):Array{
var ha:Number = ((hue * Math.PI) / 180);
var rl:Number = LUMINANCE_R;
var gl:Number = LUMINANCE_G;
var bl:Number = LUMINANCE_B;
var c:Number = Math.cos(ha);
var s:Number = Math.sin(ha);
var mtx:Array = [((rl + (c * (1 - rl))) + (s * -(rl))), ((gl + (c * -(gl))) + (s * -(gl))), ((bl + (c * -(bl))) + (s * (1 - bl))), 0, 0, ((rl + (c * -(rl))) + (s * 0.143)), ((gl + (c * (1 - gl))) + (s * 0.14)), ((bl + (c * -(bl))) + (s * -0.283)), 0, 0, ((rl + (c * -(rl))) + (s * -((1 - rl)))), ((gl + (c * -(gl))) + (s * gl)), ((bl + (c * (1 - bl))) + (s * bl)), 0, 0, 0, 0, 0, 1, 0];
return (mtx);
}
public static function _color_property_get(p_obj:Object, p_parameters:Array, p_extra:Object=null):Number{
return (p_obj.transform.colorTransform[p_parameters[0]]);
}
public static function init():void{
Tweener.registerSpecialProperty("_color_ra", _oldColor_property_get, _oldColor_property_set, ["redMultiplier"]);
Tweener.registerSpecialProperty("_color_rb", _color_property_get, _color_property_set, ["redOffset"]);
Tweener.registerSpecialProperty("_color_ga", _oldColor_property_get, _oldColor_property_set, ["greenMultiplier"]);
Tweener.registerSpecialProperty("_color_gb", _color_property_get, _color_property_set, ["greenOffset"]);
Tweener.registerSpecialProperty("_color_ba", _oldColor_property_get, _oldColor_property_set, ["blueMultiplier"]);
Tweener.registerSpecialProperty("_color_bb", _color_property_get, _color_property_set, ["blueOffset"]);
Tweener.registerSpecialProperty("_color_aa", _oldColor_property_get, _oldColor_property_set, ["alphaMultiplier"]);
Tweener.registerSpecialProperty("_color_ab", _color_property_get, _color_property_set, ["alphaOffset"]);
Tweener.registerSpecialProperty("_color_redMultiplier", _color_property_get, _color_property_set, ["redMultiplier"]);
Tweener.registerSpecialProperty("_color_redOffset", _color_property_get, _color_property_set, ["redOffset"]);
Tweener.registerSpecialProperty("_color_greenMultiplier", _color_property_get, _color_property_set, ["greenMultiplier"]);
Tweener.registerSpecialProperty("_color_greenOffset", _color_property_get, _color_property_set, ["greenOffset"]);
Tweener.registerSpecialProperty("_color_blueMultiplier", _color_property_get, _color_property_set, ["blueMultiplier"]);
Tweener.registerSpecialProperty("_color_blueOffset", _color_property_get, _color_property_set, ["blueOffset"]);
Tweener.registerSpecialProperty("_color_alphaMultiplier", _color_property_get, _color_property_set, ["alphaMultiplier"]);
Tweener.registerSpecialProperty("_color_alphaOffset", _color_property_get, _color_property_set, ["alphaOffset"]);
Tweener.registerSpecialPropertySplitter("_color", _color_splitter);
Tweener.registerSpecialPropertySplitter("_colorTransform", _colorTransform_splitter);
Tweener.registerSpecialProperty("_brightness", _brightness_get, _brightness_set, [false]);
Tweener.registerSpecialProperty("_tintBrightness", _brightness_get, _brightness_set, [true]);
Tweener.registerSpecialProperty("_contrast", _contrast_get, _contrast_set);
Tweener.registerSpecialProperty("_hue", _hue_get, _hue_set);
Tweener.registerSpecialProperty("_saturation", _saturation_get, _saturation_set, [false]);
Tweener.registerSpecialProperty("_dumbSaturation", _saturation_get, _saturation_set, [true]);
}
private static function setObjectMatrix(p_obj:Object, p_matrix:Array):void{
var cmtx:ColorMatrixFilter;
var objFilters:Array = p_obj.filters.concat();
var found:Boolean;
var i:Number = 0;
while (i < objFilters.length) {
if ((objFilters[i] is ColorMatrixFilter)){
objFilters[i].matrix = p_matrix.concat();
found = true;
};
i++;
};
if (!found){
cmtx = new ColorMatrixFilter(p_matrix);
objFilters[objFilters.length] = cmtx;
};
p_obj.filters = objFilters;
}
public static function _color_property_set(p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object=null):void{
var cfm:ColorTransform = p_obj.transform.colorTransform;
cfm[p_parameters[0]] = p_value;
p_obj.transform.colorTransform = cfm;
}
public static function _oldColor_property_set(p_obj:Object, p_value:Number, p_parameters:Array, p_extra:Object=null):void{
var tf:ColorTransform = p_obj.transform.colorTransform;
tf[p_parameters[0]] = (p_value / 100);
p_obj.transform.colorTransform = tf;
}
public static function _contrast_get(p_obj:Object, p_parameters:Array, p_extra:Object=null):Number{
var mc:Number;
var co:Number;
var cfm:ColorTransform = p_obj.transform.colorTransform;
mc = ((((cfm.redMultiplier + cfm.greenMultiplier) + cfm.blueMultiplier) / 3) - 1);
co = ((((cfm.redOffset + cfm.greenOffset) + cfm.blueOffset) / 3) / -128);
return (((mc + co) / 2));
}
public static function _colorTransform_splitter(p_value:Object, p_parameters:Array):Array{
var nArray:Array = new Array();
if (p_value == null){
nArray.push({name:"_color_redMultiplier", value:1});
nArray.push({name:"_color_redOffset", value:0});
nArray.push({name:"_color_greenMultiplier", value:1});
nArray.push({name:"_color_greenOffset", value:0});
nArray.push({name:"_color_blueMultiplier", value:1});
nArray.push({name:"_color_blueOffset", value:0});
} else {
nArray.push({name:"_color_redMultiplier", value:p_value.redMultiplier});
nArray.push({name:"_color_redOffset", value:p_value.redOffset});
nArray.push({name:"_color_blueMultiplier", value:p_value.blueMultiplier});
nArray.push({name:"_color_blueOffset", value:p_value.blueOffset});
nArray.push({name:"_color_greenMultiplier", value:p_value.greenMultiplier});
nArray.push({name:"_color_greenOffset", value:p_value.greenOffset});
nArray.push({name:"_color_alphaMultiplier", value:p_value.alphaMultiplier});
nArray.push({name:"_color_alphaOffset", value:p_value.alphaOffset});
};
return (nArray);
}
}
}//package caurina.transitions.properties
Section 2
//AuxFunctions (caurina.transitions.AuxFunctions)
package caurina.transitions {
public class AuxFunctions {
public function AuxFunctions(){
super();
}
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 3
//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 4
//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 5
//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 6
//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 7
//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 8
//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 9
//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 10
//KongregateEvent (com.kongregate.as3.client.events.KongregateEvent)
package com.kongregate.as3.client.events {
import flash.events.*;
public class KongregateEvent extends Event {
public static const COMPLETE:String = "component_api_available";
public function KongregateEvent(_arg1:String){
super(_arg1);
}
}
}//package com.kongregate.as3.client.events
Section 11
//AbstractShadowService (com.kongregate.as3.client.services.AbstractShadowService)
package com.kongregate.as3.client.services {
import flash.events.*;
public class AbstractShadowService extends EventDispatcher {
protected function alert(_arg1:String, _arg2:String, _arg3="", _arg4:String=""):void{
trace(((((((("Kongregate API: " + _arg1) + ".") + _arg2) + "(") + _arg3) + ") ") + _arg4));
}
}
}//package com.kongregate.as3.client.services
Section 12
//HighScoreServiceShadow (com.kongregate.as3.client.services.HighScoreServiceShadow)
package com.kongregate.as3.client.services {
public class HighScoreServiceShadow extends AbstractShadowService implements IHighScoreServices {
private var mode:String;
public function HighScoreServiceShadow(){
mode = "";
}
public function submit(_arg1:Number, _arg2:String=null):void{
alert("IHighScoreServices", "submit", arguments);
}
public function connect():Boolean{
alert("IKongregateServices", "connect");
return (true);
}
public function requestList(_arg1:Function):void{
alert("IHighScoreServices", "requestList", "", (("[Mode: " + mode) + "]"));
_arg1({success:false});
}
public function setMode(_arg1:String):void{
alert("IHighScoreServices", "setMode", arguments);
this.mode = _arg1;
}
}
}//package com.kongregate.as3.client.services
Section 13
//IHighScoreServices (com.kongregate.as3.client.services.IHighScoreServices)
package com.kongregate.as3.client.services {
public interface IHighScoreServices {
function setMode(_arg1:String):void;
function submit(_arg1:Number, _arg2:String=null):void;
function requestList(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 14
//IKongregateServices (com.kongregate.as3.client.services.IKongregateServices)
package com.kongregate.as3.client.services {
import flash.events.*;
public interface IKongregateServices extends IEventDispatcher {
function getPlayerInfo(_arg1:Function):void;
function connect(_arg1:Number=-1):Boolean;
}
}//package com.kongregate.as3.client.services
Section 15
//IStatServices (com.kongregate.as3.client.services.IStatServices)
package com.kongregate.as3.client.services {
public interface IStatServices {
function submitArray(_arg1:Array):void;
function submit(_arg1:String, _arg2:Number):void;
}
}//package com.kongregate.as3.client.services
Section 16
//IUserServices (com.kongregate.as3.client.services.IUserServices)
package com.kongregate.as3.client.services {
public interface IUserServices {
function getName():String;
function getPlayerInfo(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 17
//KongregateServiceShadow (com.kongregate.as3.client.services.KongregateServiceShadow)
package com.kongregate.as3.client.services {
public class KongregateServiceShadow extends AbstractShadowService implements IKongregateServices {
public function getName():String{
alert("IKongregateServices", "getName");
return ("Guest");
}
public function connect(_arg1:Number=-1):Boolean{
alert("IKongregateServices", "connect", arguments);
return (true);
}
public function getPlayerInfo(_arg1:Function):void{
alert("IKongregateServices", "getPlayerInfo");
_arg1(new Object());
}
}
}//package com.kongregate.as3.client.services
Section 18
//StatServiceShadow (com.kongregate.as3.client.services.StatServiceShadow)
package com.kongregate.as3.client.services {
public class StatServiceShadow extends AbstractShadowService implements IStatServices {
public function submitArray(_arg1:Array):void{
alert("IStatServices", "submitArray", arguments);
}
public function submit(_arg1:String, _arg2:Number):void{
alert("IStatServices", "submitStat", arguments);
}
}
}//package com.kongregate.as3.client.services
Section 19
//UserServiceShadow (com.kongregate.as3.client.services.UserServiceShadow)
package com.kongregate.as3.client.services {
public class UserServiceShadow extends AbstractShadowService implements IUserServices {
public function getName():String{
alert("UserService", "getName");
return ("Guest");
}
public function getPlayerInfo(_arg1:Function):void{
alert("UserService", "getPlayerInfo");
_arg1({isGuest:true, name:"Guest", points:0, level:0, isMode:false, isAdmin:false, isDeveloper:false, avatarPath:"", chatAvatarPath:""});
}
}
}//package com.kongregate.as3.client.services
Section 20
//IAPIBootstrap (com.kongregate.as3.client.IAPIBootstrap)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
public interface IAPIBootstrap {
function init(_arg1:Event=null, _arg2:Stage=null):void;
function hideLog():void;
function showLog(_arg1:int=0):void;
}
}//package com.kongregate.as3.client
Section 21
//KongregateAPI (com.kongregate.as3.client.KongregateAPI)
package com.kongregate.as3.client {
import flash.events.*;
import com.kongregate.as3.client.events.*;
import flash.display.*;
import com.kongregate.as3.client.services.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
import flash.errors.*;
public class KongregateAPI extends Sprite {
private const VERSION:Number = 1;
private var loader:Loader;
private var loadedDomain:ApplicationDomain;
private static const CLASS_USER:String = "com.kongregate.as3.client.services.UserServices";
private static const CLASS_STATS:String = "com.kongregate.as3.client.services.StatServices";
private static const CLASS_SERVICES:String = "com.kongregate.as3.client.services.KongregateServices";
private static const CLASS_SCORES:String = "com.kongregate.as3.client.services.HighScoreServices";
private static const DEBUG_API_URL:String = "//Linuxpc/kongregate/public/flash/API_AS3.swf";
private static var _connected:Boolean;
private static var kUser:IUserServices;
private static var _loaded:Boolean;
private static var kServices:IKongregateServices;
private static var kScores:IHighScoreServices;
private static var mInstance:KongregateAPI;
private static var kStats:IStatServices;
private static var kAPI:IAPIBootstrap;
public function KongregateAPI(){
if (mInstance != null){
throw (new Error("Warning: KongregateAPI has been added to stage more than once or accessed improperly. Use getInstance() or a stage reference to access."));
};
mInstance = this;
this.addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
}
public function get loaded():Boolean{
return (_loaded);
}
public function get connected():Boolean{
return (_connected);
}
private function alertConnected(_arg1:TimerEvent=null):void{
var _local2:KongregateEvent;
var _local3:Boolean;
_local2 = new KongregateEvent(KongregateEvent.COMPLETE);
_local3 = this.dispatchEvent(_local2);
}
private function init(_arg1:Event):void{
var _local2:Object;
var _local3:String;
var _local4:URLRequest;
var _local5:LoaderContext;
this.removeEventListener(Event.ADDED_TO_STAGE, init);
_loaded = false;
_connected = false;
_local2 = LoaderInfo(root.loaderInfo).parameters;
_local3 = _local2.api_path;
if (_local3 == null){
trace("Alert: Kongregate API could not be loaded, due to local testing. API will load when the game is uploaded.");
createShadowServices();
return;
};
Security.allowDomain("*.kongregate.com");
Security.allowDomain("kongregatetrunk.com");
_local4 = new URLRequest(_local3);
_local5 = new LoaderContext(false);
_local5.applicationDomain = ApplicationDomain.currentDomain;
_local5.securityDomain = SecurityDomain.currentDomain;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.load(_local4, _local5);
}
public function get api():IAPIBootstrap{
return (kAPI);
}
private function loadComplete(_arg1:Event):void{
getServices();
}
public function get scores():IHighScoreServices{
return (kScores);
}
private function ioErrorHandler(_arg1:IOErrorEvent):void{
throw (new IOError(("API file not found. " + _arg1)));
}
public function get services():IKongregateServices{
return (kServices);
}
public function get stats():IStatServices{
return (kStats);
}
private function createShadowServices():void{
var _local1:Timer;
trace(">>> Kongregate Shadow Services instantiated for local development..");
kServices = new KongregateServiceShadow();
kScores = new HighScoreServiceShadow();
kStats = new StatServiceShadow();
kUser = new UserServiceShadow();
_local1 = new Timer(200, 1);
_local1.addEventListener(TimerEvent.TIMER_COMPLETE, alertConnected);
_local1.start();
_connected = true;
}
public function get user():IUserServices{
return (kUser);
}
private function getServices():void{
var _local1:ApplicationDomain;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local1 = ApplicationDomain.currentDomain;
kAPI = IAPIBootstrap(loader.getChildAt(0));
this.addChild(loader);
_local2 = _local1.getDefinition(CLASS_SERVICES);
trace(_local2);
kServices = _local2.getInstance();
_local3 = _local1.getDefinition(CLASS_SCORES);
kScores = _local3.getInstance();
_local4 = _local1.getDefinition(CLASS_STATS);
kStats = _local4.getInstance();
_local5 = _local1.getDefinition(CLASS_USER);
kUser = _local5.getInstance();
kServices.connect(VERSION);
_loaded = true;
_connected = true;
alertConnected();
}
public static function getInstance():KongregateAPI{
if (!mInstance){
throw (new IllegalOperationError("You must add the Kongregate API component to the stage before attempting to access it."));
};
return (mInstance);
}
}
}//package com.kongregate.as3.client
Section 22
//PseudoRandom (com.urbansquall.chaos.PseudoRandom)
package com.urbansquall.chaos {
public class PseudoRandom {
private var m_initialSeed:uint;
private var m_seed:uint;
private static var m_instance:PseudoRandom;
public function PseudoRandom(a_seed:uint=1){
super();
if ((((a_seed == 0)) || ((a_seed >= uint((uint.MAX_VALUE / 2)))))){
a_seed = 1;
};
seed = a_seed;
}
public function set seed(a_value:uint):void{
m_initialSeed = (m_seed = a_value);
}
public function boolean(a_chance:Number=0.5):Boolean{
return ((random() < a_chance));
}
public function reset():void{
m_seed = m_initialSeed;
}
public function get seed():uint{
return (m_initialSeed);
}
public function random():Number{
return ((nextRand() / 2147483647));
}
private function nextRand():uint{
return ((m_seed = ((m_seed * 16807) % 2147483647)));
}
public function randomRange(a_minimum:Number, a_maximum:Number=NaN):Number{
if (isNaN(a_maximum)){
a_maximum = a_minimum;
a_minimum = 0;
};
return ((a_minimum + (random() * (a_maximum - a_minimum))));
}
public function sign(a_chance:Number=0.5):int{
return (((random() < a_chance)) ? 1 : -1);
}
public static function get seed():uint{
return (instance.seed);
}
public static function random():Number{
return (instance.random());
}
public static function get instance():PseudoRandom{
if (m_instance == null){
m_instance = new (PseudoRandom);
};
return (m_instance);
}
public static function boolean(chance:Number=0.5):Boolean{
return (instance.boolean(chance));
}
public static function set seed(a_value:uint):void{
instance.seed = a_value;
}
public static function randomRange(a_minimum:Number, a_maximum:Number):Number{
return (instance.randomRange(a_minimum, a_maximum));
}
public static function sign(chance:Number=0.5):int{
return (instance.sign(chance));
}
public static function reset():void{
instance.reset();
}
}
}//package com.urbansquall.chaos
Section 23
//WeightedRandom (com.urbansquall.chaos.WeightedRandom)
package com.urbansquall.chaos {
import flash.utils.*;
public class WeightedRandom {
private var m_options:Dictionary;
private var m_random:PseudoRandom;
private var m_totalWeight:Number;
public function WeightedRandom(a_random:PseudoRandom=null){
super();
if (a_random == null){
a_random = new PseudoRandom(getTimer());
};
m_random = a_random;
m_options = new Dictionary(false);
m_totalWeight = 0;
}
public function grabOption():Object{
var key:Object;
var weight:Number;
var random:Number = m_random.random();
var target:Number = (m_totalWeight * random);
var accruedWeight:Number = 0;
for (key in m_options) {
weight = m_options[key];
accruedWeight = (accruedWeight + weight);
if (accruedWeight >= target){
return (key);
};
};
return (null);
}
public function dispose():void{
var key:String;
m_random = null;
for (key in m_options) {
delete m_options[key];
};
m_options = null;
}
public function changeWeight(a_option:Object, a_newWeight:Number):void{
unregisterOption(a_option);
registerOption(a_option, a_newWeight);
}
public function unregisterOption(a_option:Object):void{
if (m_options[a_option] == null){
return;
};
m_totalWeight = (m_totalWeight - m_options[a_option]);
delete m_options[a_option];
}
public function registerOption(a_option:Object, a_weight:Number):void{
if (a_weight < 0){
trace(("WeightedRandom::registerOption. Bad weight for " + a_option));
return;
};
m_totalWeight = (m_totalWeight + a_weight);
m_options[a_option] = a_weight;
}
public function toString():String{
var key:Object;
var weight:Number;
var result:String = "[WeightedRandom ";
for (key in m_options) {
weight = m_options[key];
result = (result + (((("{" + key) + ":") + weight) + "}"));
};
result = (result + "]");
return (result);
}
public function get totalWeight():Number{
return (m_totalWeight);
}
}
}//package com.urbansquall.chaos
Section 24
//ChannelWrapper (com.urbansquall.echo.ChannelWrapper)
package com.urbansquall.echo {
import flash.events.*;
import flash.media.*;
public class ChannelWrapper extends EventDispatcher {
private var m_volume:Number;
private var m_channel:SoundChannel;
private var m_parent:SoundGroup;
public function ChannelWrapper(a_channel:SoundChannel){
super();
m_channel = a_channel;
m_volume = 1;
m_channel.addEventListener(Event.SOUND_COMPLETE, completeEvent);
}
private function completeEvent(a_event:Event):void{
this.dispatchEvent(new WrapperEvent(this, WrapperEvent.SOUND_COMPLETE));
}
public function get channel():SoundChannel{
return (m_channel);
}
public function get localVolume():Number{
return (m_volume);
}
public function stop():void{
m_channel.stop();
this.dispatchEvent(new WrapperEvent(this, WrapperEvent.SOUND_STOPPED));
}
public function set localVolume(a_volume:Number):void{
m_volume = a_volume;
updateChannelVolume();
}
public function set parent(a_group:SoundGroup):void{
m_parent = a_group;
}
public function updateChannelVolume():void{
var st:SoundTransform = m_channel.soundTransform;
st.volume = (localVolume * m_parent.volume);
m_channel.soundTransform = st;
}
}
}//package com.urbansquall.echo
Section 25
//GroupedSound (com.urbansquall.echo.GroupedSound)
package com.urbansquall.echo {
import flash.media.*;
public class GroupedSound {
private var m_defaultVolume:Number;
private var m_group:SoundGroup;
private var m_sound:Sound;
public function GroupedSound(a_group:SoundGroup, a_sound:Sound, a_defaultVolume:Number=1){
super();
m_group = a_group;
m_sound = a_sound;
m_defaultVolume = a_defaultVolume;
}
public function get sound():Sound{
return (m_sound);
}
public function play(a_startTime:int=0, a_loops:int=0, a_transform:SoundTransform=null):ChannelWrapper{
var channel:SoundChannel = m_sound.play(a_startTime, a_loops, a_transform);
var wrap:ChannelWrapper;
if (channel != null){
wrap = new ChannelWrapper(channel);
m_group.addChild(wrap);
wrap.localVolume = m_defaultVolume;
};
return (wrap);
}
public function set defaultVolume(a_value:Number):void{
m_defaultVolume = a_value;
}
public function get defaultVolume():Number{
return (m_defaultVolume);
}
public function get group():SoundGroup{
return (m_group);
}
}
}//package com.urbansquall.echo
Section 26
//Loop (com.urbansquall.echo.Loop)
package com.urbansquall.echo {
import flash.media.*;
public class Loop {
private var m_wrapper:ChannelWrapper;
private var m_groupedSound:GroupedSound;
private var m_volume:Number;
public function Loop(a_group:SoundGroup, a_sound:Sound){
super();
m_groupedSound = new GroupedSound(a_group, a_sound);
m_volume = 1;
}
public function isPlaying():Boolean{
return (!((m_wrapper == null)));
}
public function stop():void{
m_wrapper.stop();
}
private function wrapperPlaybackEnded(a_event:WrapperEvent):void{
m_wrapper.removeEventListener(WrapperEvent.SOUND_COMPLETE, wrapperPlaybackEnded);
m_wrapper.removeEventListener(WrapperEvent.SOUND_STOPPED, wrapperPlaybackEnded);
m_wrapper = null;
}
public function play():void{
if (m_wrapper != null){
stop();
};
m_wrapper = m_groupedSound.play(0, int.MAX_VALUE);
m_wrapper.localVolume = m_volume;
if (m_wrapper != null){
m_wrapper.addEventListener(WrapperEvent.SOUND_COMPLETE, wrapperPlaybackEnded);
m_wrapper.addEventListener(WrapperEvent.SOUND_STOPPED, wrapperPlaybackEnded);
};
}
public function set volume(a_volume:Number):void{
m_volume = a_volume;
if (m_wrapper != null){
m_wrapper.localVolume = m_volume;
};
}
public function get volume():Number{
if (m_wrapper != null){
return (m_wrapper.localVolume);
};
return (0);
}
}
}//package com.urbansquall.echo
Section 27
//SoundGroup (com.urbansquall.echo.SoundGroup)
package com.urbansquall.echo {
public class SoundGroup {
private var m_volume:Number;
private var m_children:Array;
public function SoundGroup(){
super();
m_volume = 1;
m_children = new Array();
}
private function childPlaybackEnded(a_event:WrapperEvent):void{
removeChild(a_event.channelWrapper);
}
public function get numChildren():int{
return (m_children.length);
}
public function dispose():void{
stopAll();
m_children = null;
}
public function removeChild(a_wrapper:ChannelWrapper):void{
var idx:int = m_children.indexOf(a_wrapper);
if (idx == -1){
throw (new Error("SoundGroup:removeChild. Object must be a child of the Group"));
};
m_children.splice(idx, 1);
a_wrapper.parent = null;
a_wrapper.removeEventListener(WrapperEvent.SOUND_COMPLETE, childPlaybackEnded);
a_wrapper.removeEventListener(WrapperEvent.SOUND_STOPPED, childPlaybackEnded);
}
public function set volume(a_volume:Number):void{
var cw:ChannelWrapper;
m_volume = a_volume;
for each (cw in m_children) {
cw.updateChannelVolume();
};
}
public function get volume():Number{
return (m_volume);
}
public function addChild(a_wrapper:ChannelWrapper):void{
m_children.push(a_wrapper);
a_wrapper.parent = this;
a_wrapper.updateChannelVolume();
a_wrapper.addEventListener(WrapperEvent.SOUND_COMPLETE, childPlaybackEnded);
a_wrapper.addEventListener(WrapperEvent.SOUND_STOPPED, childPlaybackEnded);
}
public function stopAll():void{
var wrapper:ChannelWrapper;
var tmp:Array = new Array(m_children.length);
var i:int;
while (i < m_children.length) {
tmp[i] = m_children[i];
i++;
};
for each (wrapper in tmp) {
wrapper.stop();
};
}
}
}//package com.urbansquall.echo
Section 28
//WrapperEvent (com.urbansquall.echo.WrapperEvent)
package com.urbansquall.echo {
import flash.events.*;
public class WrapperEvent extends Event {
private var m_wrapper:ChannelWrapper;
public static const SOUND_COMPLETE:String = "wrapper_soundComplete";
public static const SOUND_STOPPED:String = "wrapper_soundStop";
public function WrapperEvent(a_channelWrapper:ChannelWrapper, a_type:String, a_bubbles:Boolean=false, a_cancelable:Boolean=false){
super(a_type, a_bubbles, a_cancelable);
m_wrapper = a_channelWrapper;
}
public function get channelWrapper():ChannelWrapper{
return (m_wrapper);
}
}
}//package com.urbansquall.echo
Section 29
//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=0, a_offsetY:Number=0, 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 30
//AnimationBuilder (com.urbansquall.ginger.AnimationBuilder)
package com.urbansquall.ginger {
import flash.display.*;
import flash.geom.*;
public class AnimationBuilder {
public function AnimationBuilder(){
super();
}
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 31
//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 32
//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_desiredY:Number;// = 0
private var m_currentAnimation:Animation;
private var m_fps:int;
private var m_desiredX:Number;// = 0
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 (m_desiredX);
}
override public function set width(value:Number):void{
throw (new Error("<AnimationPlayer> Width / Height cannot be changed!"));
}
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);
}
public function isPaused():Boolean{
return (m_isPlaying);
}
public function get defaultAnimationID():String{
return (m_defaultAnimationID);
}
public function get offsetY():Number{
return (m_currentFrame.offsetY);
}
private function updateFrame():void{
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;
};
m_currentFrame = Frame(m_frames[m_frameIndex]);
bitmapData = (m_currentFrame.bitmapData[m_rotationFrame] as BitmapData);
performOffset();
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);
}
override public function set x(value:Number):void{
m_desiredX = value;
performOffset();
}
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 [" + a_animationID) + "]")));
};
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]);
}
override public function get height():Number{
return (m_currentFrame.height[m_rotationFrame]);
}
private function startNewAnimation(a_animationID:String):void{
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];
performOffset();
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 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();
};
};
}
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];
m_currentFrame = Frame(m_frames[index]);
performOffset();
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));
};
};
}
private function performOffset():void{
super.x = (m_desiredX - offsetX);
super.y = (m_desiredY - offsetY);
}
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);
performOffset();
};
}
public function get currentAnimationID():String{
return (m_currentAnimationID);
}
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 fps():int{
return (m_fps);
}
override public function set y(value:Number):void{
m_desiredY = value;
performOffset();
}
public function pause():void{
m_isPlaying = false;
}
override public function get y():Number{
return (m_desiredY);
}
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 33
//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 34
//Frame (com.urbansquall.ginger.Frame)
package com.urbansquall.ginger {
import flash.display.*;
import flash.geom.*;
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=0, a_offsetY:Number=0){
super();
numFrames = a_numFrames;
frameID = a_frameID;
bitmapData = [];
width = [];
height = [];
offsetX = a_offsetX;
offsetY = a_offsetY;
if (a_numRotations == 1){
createFrameWithNoRotation(a_bitmapData);
} else {
createRotatedFrame(a_bitmapData, a_numRotations);
};
}
private function createRotatedFrame(a_bitmapData:BitmapData, a_numRotations:int):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++;
};
offsetX = (offsetX + ((bd.width - tileWidth) / 2));
offsetY = (offsetY + ((bd.height - tileHeight) / 2));
}
private function createFrameWithNoRotation(a_bitmapData:BitmapData):void{
bitmapData[0] = a_bitmapData;
width[0] = a_bitmapData.width;
height[0] = a_bitmapData.height;
}
}
}//package com.urbansquall.ginger
Section 35
//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 36
//Ticker (com.urbansquall.metronome.Ticker)
package com.urbansquall.metronome {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class Ticker extends EventDispatcher {
private var m_accruedTime:Number;
private var m_running:Boolean;
private var m_shape:Shape;
private var m_delay:Number;
private var m_timeOfLastUpdate:Number;
public function Ticker(a_delay:Number=33){
super();
m_running = false;
m_delay = a_delay;
m_shape = new Shape();
}
public function get delay():int{
return (m_delay);
}
public function stop():void{
m_shape.removeEventListener(Event.ENTER_FRAME, tick);
m_running = false;
}
private function calculateDeltaTime():Number{
var currentTime:Number = getTimer();
var deltaTime:Number = (currentTime - m_timeOfLastUpdate);
m_timeOfLastUpdate = currentTime;
return (deltaTime);
}
public function start():void{
m_running = true;
m_timeOfLastUpdate = getTimer();
m_accruedTime = 0;
m_shape.addEventListener(Event.ENTER_FRAME, tick, false, 0, true);
}
private function tick(a_event:Event):void{
var deltaTime:Number = calculateDeltaTime();
if (!m_running){
return;
};
m_accruedTime = (m_accruedTime + deltaTime);
while (m_accruedTime >= m_delay) {
m_accruedTime = (m_accruedTime - m_delay);
dispatchEvent(new TickerEvent(m_delay));
};
}
public function get running():Boolean{
return (m_running);
}
}
}//package com.urbansquall.metronome
Section 37
//TickerEvent (com.urbansquall.metronome.TickerEvent)
package com.urbansquall.metronome {
import flash.events.*;
public class TickerEvent extends Event {
private var m_interval:Number;
public static const TICK:String = "tick";
public function TickerEvent(a_interval:Number){
super(TICK, false, false);
m_interval = a_interval;
}
public function get interval():Number{
return (m_interval);
}
}
}//package com.urbansquall.metronome
Section 38
//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 39
//SafeSolManager (com.urbansquall.security.SafeSolManager)
package com.urbansquall.security {
import flash.utils.*;
import flash.net.*;
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 40
//Hex (com.urbansquall.shex.Hex)
package com.urbansquall.shex {
import flash.display.*;
public class Hex extends Sprite {
public var size:int;
public var col:int;
private var m_image:Sprite;
private var m_possibleIndicator:Sprite;
private var m_goldTile:Sprite;
public var row:int;
private var m_lifeTile:Sprite;
public var dirtyCount:uint;
private var m_deathTile:Sprite;
private var m_data:HexData;
private static const BASE_TILE_1:Class = Hex_BASE_TILE_1;
private static const BASE_TILE_2:Class = Hex_BASE_TILE_2;
private static const BASE_TILE_3:Class = Hex_BASE_TILE_3;
private static const BASE_TILE_4:Class = Hex_BASE_TILE_4;
private static const BASE_TILE_5:Class = Hex_BASE_TILE_5;
private static const BASE_TILE_6:Class = Hex_BASE_TILE_6;
private static const BASE_TILE_7:Class = Hex_BASE_TILE_7;
private static const BASE_TILE_8:Class = Hex_BASE_TILE_8;
private static const BASE_TILE_9:Class = Hex_BASE_TILE_9;
private static const s_deathTileClasses:Array = [DEATH_TILE_1, DEATH_TILE_2, DEATH_TILE_3, DEATH_TILE_4];
private static const BASE_TILE_11:Class = Hex_BASE_TILE_11;
private static const DEATH_TILE_1:Class = Hex_DEATH_TILE_1;
private static const DEATH_TILE_3:Class = Hex_DEATH_TILE_3;
private static const DEATH_TILE_4:Class = Hex_DEATH_TILE_4;
private static const BASE_TILE_10:Class = Hex_BASE_TILE_10;
private static const DEATH_TILE_2:Class = Hex_DEATH_TILE_2;
private static const s_baseTileClasses:Array = [BASE_TILE_1, BASE_TILE_2, BASE_TILE_3, BASE_TILE_4, BASE_TILE_5, BASE_TILE_6, BASE_TILE_7, BASE_TILE_8, BASE_TILE_9, BASE_TILE_10, BASE_TILE_11];
private static const GOLD_TILE:Class = Hex_GOLD_TILE;
public function Hex(a_size:int, a_col:int, a_row:int){
var g:Graphics;
super();
dirtyCount = 0;
size = a_size;
col = a_col;
row = a_row;
var randomIndex:int = Math.floor((s_baseTileClasses.length * Math.random()));
var tileGraphicClass:Class = s_baseTileClasses[randomIndex];
m_lifeTile = new (tileGraphicClass);
m_lifeTile.width = a_size;
m_lifeTile.height = a_size;
m_lifeTile.cacheAsBitmap = true;
this.addChild(m_lifeTile);
randomIndex = Math.floor((s_deathTileClasses.length * Math.random()));
tileGraphicClass = s_deathTileClasses[randomIndex];
m_deathTile = new (tileGraphicClass);
m_deathTile.width = a_size;
m_deathTile.height = a_size;
m_deathTile.cacheAsBitmap = true;
this.addChild(m_deathTile);
m_goldTile = new GOLD_TILE();
m_goldTile.width = a_size;
m_goldTile.height = a_size;
m_goldTile.cacheAsBitmap = true;
this.addChild(m_goldTile);
live();
var fullSize:int = a_size;
var halfSize:int = (fullSize / 2);
var fourthSize:int = (halfSize / 2);
m_possibleIndicator = new Sprite();
m_possibleIndicator.visible = false;
m_possibleIndicator.mouseEnabled = false;
m_possibleIndicator.cacheAsBitmap = true;
this.addChild(m_possibleIndicator);
g = m_possibleIndicator.graphics;
g.lineStyle(2, 0xFFFFFF);
g.beginFill(0xFFFFFF, 0.35);
g.moveTo(halfSize, 2);
g.lineTo((fullSize - 2), fourthSize);
g.lineTo((fullSize - 2), (fourthSize * 3));
g.lineTo(halfSize, (fullSize - 2));
g.lineTo(2, (fourthSize * 3));
g.lineTo(2, fourthSize);
g.lineTo(halfSize, 2);
g.endFill();
g.lineStyle();
}
public function beGold():void{
m_goldTile.visible = true;
m_lifeTile.visible = false;
m_deathTile.visible = false;
}
public function hidePossibleIndicator():void{
m_possibleIndicator.visible = false;
}
private function addImage(a_image:Sprite):void{
m_image = a_image;
this.addChild(m_image);
}
public function set data(a_data:HexData):void{
if (a_data == null){
throw (new Error("Don't set data = null, use clearData()"));
};
if (m_data != null){
clearData();
};
m_data = a_data;
addImage(m_data.image);
m_data.doTween();
}
public function clearData():HexData{
removeImage();
var data:HexData = m_data;
m_data = null;
return (data);
}
public function showPossibleIndicator():void{
m_possibleIndicator.visible = true;
}
public function die():void{
m_deathTile.visible = true;
m_lifeTile.visible = false;
m_goldTile.visible = false;
}
public function get isShowingPossibleIndicator():Boolean{
return (m_possibleIndicator.visible);
}
public function tick(a_deltaTime:Number):void{
if (m_data != null){
m_data.tick(a_deltaTime);
};
}
public function get data():HexData{
return (m_data);
}
public function live():void{
m_lifeTile.visible = true;
m_deathTile.visible = false;
m_goldTile.visible = false;
}
private function removeImage():void{
if (m_image == null){
return;
};
this.removeChild(m_image);
m_image = null;
}
}
}//package com.urbansquall.shex
Section 41
//Hex_BASE_TILE_1 (com.urbansquall.shex.Hex_BASE_TILE_1)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_1 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 42
//Hex_BASE_TILE_10 (com.urbansquall.shex.Hex_BASE_TILE_10)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_10 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 43
//Hex_BASE_TILE_11 (com.urbansquall.shex.Hex_BASE_TILE_11)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_11 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 44
//Hex_BASE_TILE_2 (com.urbansquall.shex.Hex_BASE_TILE_2)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_2 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 45
//Hex_BASE_TILE_3 (com.urbansquall.shex.Hex_BASE_TILE_3)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_3 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 46
//Hex_BASE_TILE_4 (com.urbansquall.shex.Hex_BASE_TILE_4)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_4 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 47
//Hex_BASE_TILE_5 (com.urbansquall.shex.Hex_BASE_TILE_5)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_5 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 48
//Hex_BASE_TILE_6 (com.urbansquall.shex.Hex_BASE_TILE_6)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_6 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 49
//Hex_BASE_TILE_7 (com.urbansquall.shex.Hex_BASE_TILE_7)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_7 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 50
//Hex_BASE_TILE_8 (com.urbansquall.shex.Hex_BASE_TILE_8)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_8 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 51
//Hex_BASE_TILE_9 (com.urbansquall.shex.Hex_BASE_TILE_9)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_BASE_TILE_9 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 52
//Hex_DEATH_TILE_1 (com.urbansquall.shex.Hex_DEATH_TILE_1)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_DEATH_TILE_1 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 53
//Hex_DEATH_TILE_2 (com.urbansquall.shex.Hex_DEATH_TILE_2)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_DEATH_TILE_2 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 54
//Hex_DEATH_TILE_3 (com.urbansquall.shex.Hex_DEATH_TILE_3)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_DEATH_TILE_3 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 55
//Hex_DEATH_TILE_4 (com.urbansquall.shex.Hex_DEATH_TILE_4)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_DEATH_TILE_4 extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 56
//Hex_GOLD_TILE (com.urbansquall.shex.Hex_GOLD_TILE)
package com.urbansquall.shex {
import mx.core.*;
public class Hex_GOLD_TILE extends SpriteAsset {
}
}//package com.urbansquall.shex
Section 57
//HexData (com.urbansquall.shex.HexData)
package com.urbansquall.shex {
import flash.display.*;
public class HexData {
protected var m_image:Sprite;
public function HexData(){
super();
m_image = new Sprite();
}
public function doTween():void{
}
public function makeSureYouDie():void{
}
public function doFinalTween(a_callback:Function):void{
a_callback();
}
public function get image():Sprite{
return (m_image);
}
public function tick(a_deltaTime:Number):void{
}
}
}//package com.urbansquall.shex
Section 58
//HexRectGrid (com.urbansquall.shex.HexRectGrid)
package com.urbansquall.shex {
import flash.display.*;
public class HexRectGrid extends Sprite {
private var m_cols:int;
private var m_rows:int;
private var m_hexSize:int;
private var m_hexes:Array;
public function HexRectGrid(a_cols:int, a_rows:int, a_hexSize:int=56){
var c:int;
var hex:Hex;
super();
m_cols = a_cols;
m_rows = a_rows;
m_hexSize = a_hexSize;
m_hexes = new Array();
var r:int;
while (r < m_rows) {
m_hexes.push(new Array());
c = 0;
while (c < m_cols) {
hex = new Hex(m_hexSize, c, r);
m_hexes[r].push(hex);
this.addChild(hex);
hex.mouseChildren = false;
hex.mouseEnabled = false;
hex.y = (r * ((hex.width * 3) / 4));
if ((r % 2) == 0){
hex.x = ((hex.width / 2) + (c * hex.width));
} else {
hex.x = (c * hex.width);
};
c++;
};
r++;
};
}
public function getNeighborsTo(a_col:int, a_row:int):Array{
var neighbors:Array = [];
if (!isOutOfBounds((a_col - 1), a_row)){
neighbors.push(m_hexes[a_row][(a_col - 1)]);
};
if (!isOutOfBounds((a_col + 1), a_row)){
neighbors.push(m_hexes[a_row][(a_col + 1)]);
};
if ((a_row - 1) >= 0){
if ((a_row % 2) == 0){
if (!isOutOfBounds(a_col, (a_row - 1))){
neighbors.push(m_hexes[(a_row - 1)][a_col]);
};
if (!isOutOfBounds((a_col + 1), (a_row - 1))){
neighbors.push(m_hexes[(a_row - 1)][(a_col + 1)]);
};
} else {
if (!isOutOfBounds((a_col - 1), (a_row - 1))){
neighbors.push(m_hexes[(a_row - 1)][(a_col - 1)]);
};
if (!isOutOfBounds(a_col, (a_row - 1))){
neighbors.push(m_hexes[(a_row - 1)][a_col]);
};
};
};
if ((a_row + 1) < m_rows){
if ((a_row % 2) == 0){
if (!isOutOfBounds(a_col, (a_row + 1))){
neighbors.push(m_hexes[(a_row + 1)][a_col]);
};
if (!isOutOfBounds((a_col + 1), (a_row + 1))){
neighbors.push(m_hexes[(a_row + 1)][(a_col + 1)]);
};
} else {
if (!isOutOfBounds((a_col - 1), (a_row + 1))){
neighbors.push(m_hexes[(a_row + 1)][(a_col - 1)]);
};
if (!isOutOfBounds(a_col, (a_row + 1))){
neighbors.push(m_hexes[(a_row + 1)][a_col]);
};
};
};
return (neighbors);
}
public function isOutOfBounds(a_col:int, a_row:int):Boolean{
return ((((((((a_col < 0)) || ((a_col >= m_cols)))) || ((a_row < 0)))) || ((a_row >= m_rows))));
}
public function isHexAdjacentTo(a_hex:Hex, a_adjacentTest:Hex):Boolean{
var n:Hex;
var neighbors:Array = getNeighborsTo(a_hex.col, a_hex.row);
for each (n in neighbors) {
if (n == a_adjacentTest){
return (true);
};
};
return (false);
}
public function getHexAt(a_col:int, a_row:int):Hex{
if (isOutOfBounds(a_col, a_row)){
return (null);
};
return (m_hexes[a_row][a_col]);
}
public function get numCols():int{
return (m_cols);
}
public function getNeighborsAndNullsTo(a_col:int, a_row:int):Array{
var neighbors:Array = [];
if (!isOutOfBounds((a_col - 1), a_row)){
neighbors.push(m_hexes[a_row][(a_col - 1)]);
} else {
neighbors.push(null);
};
if (!isOutOfBounds((a_col + 1), a_row)){
neighbors.push(m_hexes[a_row][(a_col + 1)]);
} else {
neighbors.push(null);
};
if ((a_row - 1) >= 0){
if ((a_row % 2) == 0){
if (!isOutOfBounds(a_col, (a_row - 1))){
neighbors.push(m_hexes[(a_row - 1)][a_col]);
} else {
neighbors.push(null);
};
if (!isOutOfBounds((a_col + 1), (a_row - 1))){
neighbors.push(m_hexes[(a_row - 1)][(a_col + 1)]);
} else {
neighbors.push(null);
};
} else {
if (!isOutOfBounds((a_col - 1), (a_row - 1))){
neighbors.push(m_hexes[(a_row - 1)][(a_col - 1)]);
} else {
neighbors.push(null);
};
if (!isOutOfBounds(a_col, (a_row - 1))){
neighbors.push(m_hexes[(a_row - 1)][a_col]);
} else {
neighbors.push(null);
};
};
} else {
neighbors.push(null);
neighbors.push(null);
};
if ((a_row + 1) < m_rows){
if ((a_row % 2) == 0){
if (!isOutOfBounds(a_col, (a_row + 1))){
neighbors.push(m_hexes[(a_row + 1)][a_col]);
} else {
neighbors.push(null);
};
if (!isOutOfBounds((a_col + 1), (a_row + 1))){
neighbors.push(m_hexes[(a_row + 1)][(a_col + 1)]);
} else {
neighbors.push(null);
};
} else {
if (!isOutOfBounds((a_col - 1), (a_row + 1))){
neighbors.push(m_hexes[(a_row + 1)][(a_col - 1)]);
} else {
neighbors.push(null);
};
if (!isOutOfBounds(a_col, (a_row + 1))){
neighbors.push(m_hexes[(a_row + 1)][a_col]);
} else {
neighbors.push(null);
};
};
} else {
neighbors.push(null);
neighbors.push(null);
};
return (neighbors);
}
public function translateMouse(a_mouseX:int, a_mouseY:int):Array{
var lx:int;
var ly:int;
var c:int = (a_mouseX / (m_hexSize / 2));
var r:int = (a_mouseY / (m_hexSize / 4));
var col:int = (c / 2);
var row:int = (r / 3);
if ((r % 3) == 0){
lx = ((a_mouseX - (c * (m_hexSize / 2))) / 2);
ly = (a_mouseY - (r * (m_hexSize / 4)));
if ((c % 2) == (row % 2)){
lx = ((m_hexSize / 4) - lx);
};
if ((lx + ly) <= (m_hexSize / 4)){
row--;
};
};
if (((((row % 2) == 0)) && (((c % 2) == 0)))){
col--;
};
return ([col, row]);
}
public function get numRows():int{
return (m_rows);
}
}
}//package com.urbansquall.shex
Section 59
//Delegate (com.urbansquall.utils.Delegate)
package com.urbansquall.utils {
public class Delegate {
public function Delegate(){
super();
}
public static function create(target, handler:Function, ... _args):Function{
var target = target;
var handler = handler;
var rest = _args;
var delegate:Function = function (... _args){
var fullArgs:Array = _args.concat(rest);
return (handler.apply(target, fullArgs));
};
return (delegate);
}
}
}//package com.urbansquall.utils
Section 60
//ChooseHexEvent (events.ChooseHexEvent)
package events {
public class ChooseHexEvent extends TutorialEvent {
public var col:int;
public var row:int;
public function ChooseHexEvent(a_col:int, a_row:int){
super(TutorialEvent.CHOOSE_HEX);
col = a_col;
row = a_row;
}
}
}//package events
Section 61
//LevelUpScreenGoneEvent (events.LevelUpScreenGoneEvent)
package events {
public class LevelUpScreenGoneEvent extends TutorialEvent {
public var level:int;
public function LevelUpScreenGoneEvent(a_level:int){
super(TutorialEvent.LEVEL_UP_SCREEN_GONE);
level = a_level;
}
}
}//package events
Section 62
//SpecialPowerSelectEvent (events.SpecialPowerSelectEvent)
package events {
public class SpecialPowerSelectEvent extends TutorialEvent {
public var power:String;
public function SpecialPowerSelectEvent(a_power:String){
super(TutorialEvent.SPECIAL_POWER_SELECT);
power = a_power;
}
}
}//package events
Section 63
//TutorialEvent (events.TutorialEvent)
package events {
import flash.events.*;
public class TutorialEvent extends Event {
public static var CHOOSE_HEX:String = "choose_hex";
public static var TUTORIAL_POPUP_CLOSE:String = "tutorial_popup_close";
public static var LEVEL_UP_SCREEN_GONE:String = "level_up_screen_gone";
public static var SPECIAL_POWER_SELECT:String = "special_power_select";
public function TutorialEvent(a_type:String){
super(a_type);
}
}
}//package events
Section 64
//TutorialPopupCloseEvent (events.TutorialPopupCloseEvent)
package events {
public class TutorialPopupCloseEvent extends TutorialEvent {
public function TutorialPopupCloseEvent(){
super(TutorialEvent.TUTORIAL_POPUP_CLOSE);
}
}
}//package events
Section 65
//MochiAd (mochi.as3.MochiAd)
package mochi.as3 {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class MochiAd {
public function MochiAd(){
super();
}
public static function getVersion():String{
return ("3.0 as3");
}
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 = _slot1._parseOptions(options, DEFAULTS);
clip = options.clip;
var ad_timeout:Number = options.ad_timeout;
delete options.ad_timeout;
if (!_slot1.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
_slot1._cleanup(mc);
options.ad_finished();
};
var wh:Array = _slot1._getRes(options, clip);
var w:Number = wh[0];
var h:Number = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
mc.unloadAd = function ():void{
_slot1.unload(clip);
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.rpc = function (callbackID:Number, arg:Object):void{
_slot1.rpc(clip, callbackID, arg);
};
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];
if (Security.sandboxType == "application"){
return (hostname);
};
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 = _slot1._parseOptions(options, DEFAULTS);
clip = options.clip;
var ad_msec:Number = 11000;
var ad_timeout:Number = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time:Number = options.fadeout_time;
delete options.fadeout_time;
if (!_slot1.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
_slot1._cleanup(mc);
options.ad_finished();
};
var wh:Array = _slot1._getRes(options, clip);
var w:Number = wh[0];
var h:Number = wh[1];
mc.x = (w * 0.5);
mc.y = (h * 0.5);
chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
chk.ad_msec = ad_msec;
chk.ad_timeout = ad_timeout;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function ():void{
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
var p:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
if (p > 0){
this.parent.alpha = (p * 0.01);
} else {
_slot1.unload(clip);
delete this["onEnterFrame"];
};
};
mc.unloadAd = function ():void{
_slot1.unload(clip);
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.adjustProgress = function (msec:Number):void{
var _chk:Object = mc._mochiad_wait;
_chk.server_control = true;
_chk.showing = true;
_chk.started = getTimer();
_chk.ad_msec = (msec - 250);
};
mc.rpc = function (callbackID:Number, arg:Object):void{
_slot1.rpc(clip, callbackID, arg);
};
chk["onEnterFrame"] = function ():void{
var total:Number;
if (!this.parent){
delete this.onEnterFrame;
delete this.fadeFunction;
return;
};
var ad_clip:Object = this.parent._mochiad_ctr;
var elapsed:Number = (getTimer() - this.started);
var finished:Boolean;
if (!chk.showing){
total = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
if (total > 0){
chk.showing = true;
chk.started = getTimer();
_slot1.adShowing(clip);
} else {
if (elapsed > chk.ad_timeout){
options.ad_failed();
finished = true;
};
};
};
if (elapsed > chk.ad_msec){
finished = true;
};
if (finished){
if (this.server_control){
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
};
};
};
doOnEnterFrame(chk);
}
public static function _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 = _slot1._parseOptions(options, DEFAULTS);
options.swfv = 9;
options.mav = _slot1.getVersion();
clip = options.clip;
if (!_slot1._isNetworkAvailable()){
return (null);
};
if (clip._mochiad_loaded){
return (null);
};
//unresolved jump
var _slot1 = e;
throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
var depth:Number = options.depth;
delete options.depth;
var mc:MovieClip = createEmptyMovieClip(clip, "_mochiad", depth);
var wh:Array = _slot1._getRes(options, clip);
options.res = ((wh[0] + "x") + wh[1]);
options.server = (options.server + options.id);
delete options.id;
clip._mochiad_loaded = true;
if (clip.loaderInfo.loaderURL.indexOf("http") == 0){
options.as3_swf = clip.loaderInfo.loaderURL;
} else {
trace("[MochiAd] NOTE: Security Sandbox Violation errors below are normal");
};
var lv:URLVariables = new URLVariables();
for (k in options) {
v = options[k];
if (!(v is Function)){
lv[k] = v;
};
};
server = lv.server;
delete lv.server;
hostname = _allowDomains(server);
lc = new LocalConnection();
lc.client = mc;
name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
lc.allowDomain("*", "localhost");
lc.allowInsecureDomain("*", "localhost");
lc.connect(name);
mc.lc = lc;
mc.lcName = name;
lv.lc = name;
lv.st = getTimer();
loader = new Loader();
g = function (ev:Object):void{
ev.target.removeEventListener(ev.type, arguments.callee);
_slot1.unload(clip);
};
loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g);
req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime()));
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (io:IOErrorEvent):void{
trace("[MochiAds] Blocked URL");
});
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":
_slot1.setValue(clip, arg.objectName, arg.value);
break;
case "getValue":
_local4 = _slot1.getValue(clip, arg.objectName);
clip._mochiad.lc.send(clip._mochiad._containerLCName, "rpcResult", callbackID, _local4);
break;
case "runMethod":
_local5 = _slot1.runMethod(clip, arg.method, arg.args);
clip._mochiad.lc.send(clip._mochiad._containerLCName, "rpcResult", callbackID, _local5);
break;
default:
trace(("[mochiads rpc] unknown rpc id: " + arg.id));
};
}
public static function setValue(base:Object, objectName:String, value:Object):void{
var nameArray:Array = objectName.split(".");
var i:Number = 0;
while (i < (nameArray.length - 1)) {
if ((((base[nameArray[i]] == undefined)) || ((base[nameArray[i]] == null)))){
return;
};
base = base[nameArray[i]];
i++;
};
base[nameArray[i]] = value;
}
public static function 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 = _slot1._parseOptions(options, DEFAULTS);
if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){
options.ad_started();
fn = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
return;
};
clip = options.clip;
var ad_msec:Number = 11000;
var ad_timeout:Number = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time:Number = options.fadeout_time;
delete options.fadeout_time;
if (!_slot1.load(options)){
options.ad_failed();
options.ad_finished();
return;
};
options.ad_started();
mc = clip._mochiad;
mc["onUnload"] = function ():void{
_slot1._cleanup(mc);
var fn:Function = function ():void{
options.ad_finished();
};
setTimeout(fn, 100);
};
var wh:Array = _slot1._getRes(options, clip);
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 {
_slot1.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){
_slot1.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){
_slot1.unload(clip);
};
};
mc.adLoaded = options.ad_loaded;
mc.adSkipped = options.ad_skipped;
mc.adjustProgress = function (msec:Number):void{
var _chk:Object = mc._mochiad_wait;
_chk.server_control = true;
_chk.showing = true;
_chk.started = getTimer();
_chk.ad_msec = msec;
};
mc.rpc = function (callbackID:Number, arg:Object):void{
_slot1.rpc(clip, callbackID, arg);
};
mc.rpcTestFn = function (s:String):Object{
trace(("[MOCHIAD rpcTestFn] " + s));
return (s);
};
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();
_slot1.adShowing(clip);
} else {
if ((((elapsed > chk.ad_timeout)) && ((clip_pcnt == 100)))){
options.ad_failed();
finished = true;
};
};
};
if (elapsed > chk.ad_msec){
finished = true;
};
if (((complete) && (finished))){
if (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");
_slot1.showPreGameAd(options);
}
public static function showTimedAd(options:Object):void{
trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0");
_slot1.showInterLevelAd(options);
}
public static function 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 mochi.as3
Section 66
//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 67
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
public function ByteArrayAsset(){
super();
}
}
}//package mx.core
Section 68
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(left:Number=0, top:Number=0, right:Number=0, bottom:Number=0){
super();
this.left = left;
this.top = top;
this.right = right;
this.bottom = bottom;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 69
//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 70
//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexMovieClip extends MovieClip {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexMovieClip(){
super();
name = NameUtil.createUniqueName(this);
//unresolved jump
var _slot1 = e;
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 71
//FlexSprite (mx.core.FlexSprite)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexSprite extends Sprite {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexSprite(){
super();
name = NameUtil.createUniqueName(this);
//unresolved jump
var _slot1 = e;
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 72
//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 73
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 74
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 75
//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 76
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(E:\dev\3.0.x\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get isDocument():Boolean;
function set repeaters(E:\dev\3.0.x\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function initializeRepeaterArrays(E:\dev\3.0.x\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(E:\dev\3.0.x\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 77
//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {
public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipAsset(){
super();
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
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;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 78
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.system.*;
public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject {
protected var initialHeight:Number;// = 0
private var loader:Loader;// = null
private var initialized:Boolean;// = false
protected var initialWidth:Number;// = 0
private var requestedHeight:Number;
private var requestedWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipLoaderAsset(){
super();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
if (("allowLoadBytesCodeExecution" in loaderContext)){
loaderContext["allowLoadBytesCodeExecution"] = true;
};
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.loadBytes(movieClipData, loaderContext);
addChild(loader);
}
override public function get width():Number{
if (!initialized){
return (initialWidth);
};
return (super.width);
}
override public function set width(value:Number):void{
if (!initialized){
requestedWidth = value;
} else {
loader.width = value;
};
}
override public function get measuredHeight():Number{
return (initialHeight);
}
private function completeHandler(event:Event):void{
initialized = true;
initialWidth = loader.width;
initialHeight = loader.height;
if (!isNaN(requestedWidth)){
loader.width = requestedWidth;
};
if (!isNaN(requestedHeight)){
loader.height = requestedHeight;
};
dispatchEvent(event);
}
override public function set height(value:Number):void{
if (!initialized){
requestedHeight = value;
} else {
loader.height = value;
};
}
override public function get measuredWidth():Number{
return (initialWidth);
}
override public function get height():Number{
if (!initialized){
return (initialHeight);
};
return (super.height);
}
public function get movieClipData():ByteArray{
return (null);
}
}
}//package mx.core
Section 79
//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 80
//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 81
//SpriteAsset (mx.core.SpriteAsset)
package mx.core {
public class SpriteAsset extends FlexSprite implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function SpriteAsset(){
super();
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
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;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 82
//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 function NameUtil(){
super();
}
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 83
//BasicAttack (powers.BasicAttack)
package powers {
import flash.display.*;
import com.urbansquall.shex.*;
import caurina.transitions.*;
import flash.text.*;
import com.urbansquall.utils.*;
import flash.filters.*;
public class BasicAttack {
private var m_kills:Array;
private var m_game:Game;
protected var m_button:PowerButton;
private var m_cutieTracker:Array;
private var m_countTextField:CustomTextField;
protected var m_searchNum:uint;// = 1
private var m_soulsAbsorbed:int;
private static const s_btn_basic_attack:Class = BasicAttack_s_btn_basic_attack;
public function BasicAttack(){
super();
m_cutieTracker = [];
m_button = new PowerButton(s_btn_basic_attack, this);
}
public function findAffectedCuties(a_grid:HexRectGrid, a_cutieHex:Hex, a_reaperHex:Hex):Array{
if ((a_cutieHex.data is EggData)){
return ([a_cutieHex]);
};
if ((((a_cutieHex.data == null)) || ((a_cutieHex.data is ReaperData)))){
return ([]);
};
var cuties:Array = [];
var color:uint = (a_cutieHex.data as ColorData).color;
cuties.push(a_cutieHex);
a_cutieHex.dirtyCount = m_searchNum;
findCutiesRecursion(cuties, a_grid, color, a_cutieHex.col, a_cutieHex.row);
m_searchNum = (m_searchNum + 1);
return (cuties);
}
public function get cost():int{
return (0);
}
public function get colorName():String{
return ("red");
}
public function get name():String{
return ("Basic Attack");
}
public function killCuties(a_grid:HexRectGrid, a_cutieHex:Hex, a_reaperHex:Hex, a_callback:Function):void{
var c:Hex;
var color:uint;
var cuties:Array = findAffectedCuties(a_grid, a_cutieHex, a_reaperHex);
m_kills = [];
m_soulsAbsorbed = 0;
m_countTextField = null;
m_cutieTracker = cuties.slice();
var i:int;
while (i < cuties.length) {
c = cuties[i];
if ((c.data is ColorData)){
color = modifyCutieColor((c.data as ColorData).color);
countKill(m_kills, color);
c.data.doFinalTween(Delegate.create(this, showSoulAnimation, color, a_grid, c, i, a_cutieHex, a_reaperHex, a_callback));
} else {
if ((c.data is EggData)){
if ((c.data as EggData).isGolden){
countKill(m_kills, Game.GOLDEN_EGG);
} else {
countKill(m_kills, Game.EGG);
};
c.data.doFinalTween(Delegate.create(this, actuallyClearTheHex, c, i, a_cutieHex, a_reaperHex, a_callback));
} else {
if (c.data == null){
actuallyClearTheHex(c, i, a_cutieHex, a_reaperHex, a_callback);
};
};
};
i++;
};
}
private function showSoulAnimation(a_color:uint, a_grid:HexRectGrid, a_hex:Hex, a_index:int, a_startHex:Hex, a_reaperHex:Hex, a_callback:Function):void{
var countTextFieldContainer:Sprite;
actuallyClearTheHex(a_hex, a_index, a_startHex, a_reaperHex, a_callback);
var soul:CutieSoul = new CutieSoul(a_color, (modifyKillCount(1) > 1));
soul.mouseEnabled = false;
soul.x = (a_hex.x + (a_hex.width / 2));
soul.y = (a_hex.y + (a_hex.height / 4));
a_grid.addChild(soul);
var xFalter = 5;
Tweener.addTween(soul, {y:(soul.y - 40), time:0.75, transition:"easeInQuad"});
Tweener.addTween(soul, {x:(soul.x - xFalter), delay:0.05, time:0.2, transition:"linear"});
Tweener.addTween(soul, {x:(soul.x + (xFalter * 2)), delay:0.25, time:0.2, transition:"linear"});
Tweener.addTween(soul, {x:(soul.x - (xFalter * 2)), delay:0.45, time:0.2, transition:"linear"});
Tweener.addTween(soul, {x:(soul.x + xFalter), delay:0.65, time:0.1, transition:"linear"});
var animationTargetX:Number = a_startHex.x;
var animationTargetY:Number = a_startHex.y;
if (a_color == Game.RED_CUTIE){
m_game.registerRedCutie();
animationTargetX = -100;
animationTargetY = -70;
} else {
if (!movesReaper){
animationTargetX = a_reaperHex.x;
animationTargetY = a_reaperHex.y;
};
};
var MAX_DISTANCE:Number = 300;
var MIN_TRAVEL_TIME:Number = 0.3;
var separationX:Number = Math.abs((a_hex.x - animationTargetX));
var separationY:Number = Math.abs((a_hex.y - animationTargetY));
var distance:Number = Math.sqrt(((separationX * separationX) + (separationY * separationY)));
distance = Math.min(distance, MAX_DISTANCE);
var initialDelay:Number = 0.75;
var timeToTarget:Number = (MIN_TRAVEL_TIME + ((0.5 * distance) / MAX_DISTANCE));
var style:String = "Circ";
var curveHeight:Number = 60;
var yApex:Number = a_hex.y;
if ((((a_hex.y > animationTargetY)) && (!((a_color == Game.RED_CUTIE))))){
yApex = animationTargetY;
};
yApex = (yApex - curveHeight);
Tweener.addTween(soul, {x:(animationTargetX + (Game.HEX_SIZE / 2)), alpha:0.5, delay:initialDelay, time:timeToTarget, transition:"linear", onUpdate:orientToPath, onUpdateParams:[soul]});
Tweener.addTween(soul, {y:yApex, delay:initialDelay, time:(timeToTarget / 2), transition:("easeOut" + style)});
Tweener.addTween(soul, {y:animationTargetY, delay:(initialDelay + (timeToTarget / 2)), time:(timeToTarget / 2), transition:("easeIn" + style)});
Tweener.addTween(soul, {y:(animationTargetY + (Game.HEX_SIZE / 2)), delay:(initialDelay + timeToTarget), time:0.07, transition:"linear", onComplete:Delegate.create(this, onSoulComplete, soul)});
if (m_countTextField == null){
countTextFieldContainer = new Sprite();
m_countTextField = new CustomTextField("", 0xFFFFFF);
m_countTextField.autoSize = TextFieldAutoSize.CENTER;
m_countTextField.mouseEnabled = false;
m_countTextField.alpha = 0;
m_countTextField.filters = [new GlowFilter(a_color)];
countTextFieldContainer.addChild(m_countTextField);
a_grid.parent.addChild(countTextFieldContainer);
countTextFieldContainer.x = a_grid.x;
countTextFieldContainer.y = a_grid.y;
countTextFieldContainer.mouseEnabled = false;
m_countTextField.x = ((animationTargetX + (Game.HEX_SIZE / 2)) - (m_countTextField.width / 2));
};
var floatUpTime:Number = 0.4;
var baseDelay:Number = (initialDelay + timeToTarget);
Tweener.addTween(m_countTextField, {delay:baseDelay, alpha:1, time:0, transition:"linear", onComplete:Delegate.create(this, startTextFieldTween, m_countTextField, animationTargetY, (a_color == Game.RED_CUTIE))});
}
protected function endTextFieldTween(a_textField:TextField):void{
if (a_textField.parent.parent != null){
a_textField.parent.parent.removeChild(a_textField.parent);
};
}
private function onSoulComplete(a_soul:CutieSoul):void{
a_soul.parent.removeChild(a_soul);
m_game.useKillsToGainPower(a_soul.color, modifyKillCount(1));
}
private function findCutiesRecursion(a_cuties:Array, a_grid:HexRectGrid, a_cutieColor:uint, a_startCol:int, a_startRow:int):void{
var n:Hex;
var startNeighbors:Array = a_grid.getNeighborsTo(a_startCol, a_startRow);
for each (n in startNeighbors) {
if (n.dirtyCount == m_searchNum){
} else {
n.dirtyCount = m_searchNum;
if ((((n.data is ColorData)) && (((n.data as ColorData).color == a_cutieColor)))){
a_cuties.push(n);
findCutiesRecursion(a_cuties, a_grid, a_cutieColor, n.col, n.row);
};
};
};
}
protected function countKill(a_kills:Array, a_color:uint):void{
var a:Array;
for each (a in a_kills) {
if (a[0] == a_color){
a[1] = (a[1] + modifyKillCount(1));
return;
};
};
a_kills.push([a_color, 1]);
}
private function actuallyClearTheHex(a_hex:Hex, a_index:int, a_startHex:Hex, a_reaperHex:Hex, a_callback:Function):void{
var isGolden:Boolean;
var hadNullData = (a_hex.data == null);
var hadEggData = (a_hex.data is EggData);
a_hex.clearData();
if ((((((((a_index > 0)) || (!(movesReaper)))) && (!(hadEggData)))) && (!(hadNullData)))){
isGolden = (((a_index + 1) % 10) == 0);
a_hex.data = new EggData(isGolden);
if (isGolden){
a_hex.beGold();
};
} else {
a_hex.die();
};
m_cutieTracker.splice(m_cutieTracker.indexOf(a_hex), 1);
if (m_cutieTracker.length == 0){
a_callback(a_startHex, a_reaperHex, m_kills);
};
}
public function get color():uint{
return (Game.RED_CUTIE);
}
public function set game(a_game:Game):void{
m_game = a_game;
}
private function orientToPath(a_soul:CutieSoul):void{
if (isNaN(a_soul.oldX)){
a_soul.oldX = a_soul.x;
a_soul.oldY = a_soul.y;
return;
};
var newRotation:Number = ((Math.atan2((a_soul.oldY - a_soul.y), (a_soul.oldX - a_soul.x)) * (180 / Math.PI)) - 90);
a_soul.rotation = newRotation;
a_soul.oldX = a_soul.x;
a_soul.oldY = a_soul.y;
}
protected function startTextFieldTween(a_textfield:TextField, a_positionY:Number, a_redCutie:Boolean):void{
m_soulsAbsorbed = (m_soulsAbsorbed + modifyKillCount(1));
Tweener.removeTweens(a_textfield, "y");
Tweener.removeTweens(a_textfield, "x");
Tweener.removeTweens(a_textfield.parent, "scaleX");
Tweener.removeTweens(a_textfield.parent, "scaleY");
a_textfield.y = a_positionY;
a_textfield.text = String(m_soulsAbsorbed);
var floatUpTime:Number = 0.6;
var offsetY:Number = -80;
if (a_redCutie){
offsetY = (offsetY * -1);
};
if (a_redCutie){
a_textfield.parent.x = 36;
a_textfield.parent.y = 36;
a_textfield.x = (-(a_textfield.width) / 2);
a_textfield.y = (-(a_textfield.height) / 2);
Tweener.addTween(a_textfield.parent, {scaleX:2, time:(floatUpTime / 4), transition:"easeInExpo"});
Tweener.addTween(a_textfield.parent, {scaleY:2, time:(floatUpTime / 4), transition:"easeInExpo"});
Tweener.addTween(a_textfield.parent, {scaleX:1.5, time:(floatUpTime / 4), delay:(floatUpTime / 4), transition:"easeOutExpo"});
Tweener.addTween(a_textfield.parent, {scaleY:1.5, time:(floatUpTime / 4), delay:(floatUpTime / 4), transition:"easeOutExpo"});
} else {
Tweener.addTween(a_textfield, {y:(a_positionY + offsetY), time:floatUpTime, transition:"linear"});
};
Tweener.addTween(a_textfield, {x:a_textfield.x, delay:floatUpTime, transition:"linear", onComplete:Delegate.create(this, endTextFieldTween, a_textfield)});
}
public function isValidTarget(a_grid:HexRectGrid, a_reaperHex:Hex, a_targetHex:Hex):Boolean{
if ((((a_reaperHex == a_targetHex)) || ((a_targetHex.data == null)))){
return (false);
};
return (a_grid.isHexAdjacentTo(a_reaperHex, a_targetHex));
}
public function get movesReaper():Boolean{
return (true);
}
public function get button():PowerButton{
return (m_button);
}
protected function modifyKillCount(a_kills:int):int{
return (a_kills);
}
public function get description():String{
return ("Kill an adjacent group of cuties. Absorb their souls.");
}
protected function modifyCutieColor(a_color:uint):uint{
return (a_color);
}
}
}//package powers
Section 84
//BasicAttack_s_btn_basic_attack (powers.BasicAttack_s_btn_basic_attack)
package powers {
import mx.core.*;
public class BasicAttack_s_btn_basic_attack extends SpriteAsset {
}
}//package powers
Section 85
//EyeLasers (powers.EyeLasers)
package powers {
import com.urbansquall.shex.*;
public class EyeLasers extends BasicAttack {
private static const s_btn_eye_lasers:Class = EyeLasers_s_btn_eye_lasers;
public function EyeLasers(){
super();
m_button = new PowerButton(s_btn_eye_lasers, this);
}
private function laserKill(a_cuties:Array, a_grid:HexRectGrid, a_direction:int, a_hex:Hex):void{
var neighbors:Array = a_grid.getNeighborsAndNullsTo(a_hex.col, a_hex.row);
var laserHex:Hex = neighbors[a_direction];
if (laserHex == null){
return;
};
a_cuties.push(laserHex);
laserKill(a_cuties, a_grid, a_direction, laserHex);
}
override public function get movesReaper():Boolean{
return (false);
}
override public function isValidTarget(a_grid:HexRectGrid, a_reaperHex:Hex, a_targetHex:Hex):Boolean{
var c:Hex;
if (a_reaperHex == a_targetHex){
return (false);
};
var cuties:Array = [];
var reaperNeighbors:Array = a_grid.getNeighborsAndNullsTo(a_reaperHex.col, a_reaperHex.row);
var i:int;
while (i <= 5) {
if (reaperNeighbors[i] == null){
} else {
cuties = [reaperNeighbors[i]];
laserKill(cuties, a_grid, i, reaperNeighbors[i]);
for each (c in cuties) {
if (c == a_targetHex){
return (true);
};
};
};
i++;
};
return (false);
}
override public function findAffectedCuties(a_grid:HexRectGrid, a_cutieHex:Hex, a_reaperHex:Hex):Array{
var c:Hex;
var cuties:Array = [];
var reaperNeighbors:Array = a_grid.getNeighborsAndNullsTo(a_reaperHex.col, a_reaperHex.row);
var i:int;
while (i <= 5) {
if (reaperNeighbors[i] == null){
} else {
cuties = [reaperNeighbors[i]];
laserKill(cuties, a_grid, i, reaperNeighbors[i]);
for each (c in cuties) {
if (c == a_cutieHex){
return (cuties);
};
};
};
i++;
};
return ([]);
}
override public function get color():uint{
return (Game.BLACK_CUTIE);
}
override public function get name():String{
return ("Eye Lasers");
}
override public function get description():String{
return ("Kill a straight line of cuties. Absorb their souls.");
}
override public function get cost():int{
return (13);
}
override public function get colorName():String{
return ("black");
}
}
}//package powers
Section 86
//EyeLasers_s_btn_eye_lasers (powers.EyeLasers_s_btn_eye_lasers)
package powers {
import mx.core.*;
public class EyeLasers_s_btn_eye_lasers extends SpriteAsset {
}
}//package powers
Section 87
//FireBlast (powers.FireBlast)
package powers {
import com.urbansquall.shex.*;
public class FireBlast extends BasicAttack {
private static const s_btn_fire_blast:Class = FireBlast_s_btn_fire_blast;
public function FireBlast(){
super();
m_button = new PowerButton(s_btn_fire_blast, this);
}
override public function get movesReaper():Boolean{
return (false);
}
override public function isValidTarget(a_grid:HexRectGrid, a_reaperHex:Hex, a_targetHex:Hex):Boolean{
return (((!((a_targetHex.data == null))) && (!((a_targetHex.data is ReaperData)))));
}
override public function get color():uint{
return (Game.BLACK_CUTIE);
}
override public function get name():String{
return ("Fire Blast");
}
override public function get description():String{
return ("Kill a group of cuties any distance away. Absorb their souls.");
}
override public function get cost():int{
return (18);
}
override public function get colorName():String{
return ("black");
}
}
}//package powers
Section 88
//FireBlast_s_btn_fire_blast (powers.FireBlast_s_btn_fire_blast)
package powers {
import mx.core.*;
public class FireBlast_s_btn_fire_blast extends SpriteAsset {
}
}//package powers
Section 89
//Harvest (powers.Harvest)
package powers {
public class Harvest extends BasicAttack {
private static const s_btn_harvest:Class = Harvest_s_btn_harvest;
public function Harvest(){
super();
m_button = new PowerButton(s_btn_harvest, this);
}
override protected function modifyKillCount(a_kills:int):int{
return ((a_kills * 2));
}
override public function get color():uint{
return (Game.BLUE_CUTIE);
}
override public function get name():String{
return ("Harvest");
}
override public function get description():String{
return ("Kill an adjacent group of cuties. Absorb two souls for each cutie.");
}
override public function get cost():int{
return (23);
}
override public function get colorName():String{
return ("blue");
}
}
}//package powers
Section 90
//Harvest_s_btn_harvest (powers.Harvest_s_btn_harvest)
package powers {
import mx.core.*;
public class Harvest_s_btn_harvest extends SpriteAsset {
}
}//package powers
Section 91
//JumpSlash (powers.JumpSlash)
package powers {
import com.urbansquall.shex.*;
public class JumpSlash extends BasicAttack {
private static const s_btn_jump_slash:Class = JumpSlash_s_btn_jump_slash;
public function JumpSlash(){
super();
m_button = new PowerButton(s_btn_jump_slash, this);
}
override public function isValidTarget(a_grid:HexRectGrid, a_reaperHex:Hex, a_targetHex:Hex):Boolean{
var n:Hex;
if ((((a_reaperHex == a_targetHex)) || ((a_targetHex.data == null)))){
return (false);
};
if (a_grid.isHexAdjacentTo(a_targetHex, a_reaperHex)){
return (false);
};
var reaperNeighbors:Array = a_grid.getNeighborsTo(a_reaperHex.col, a_reaperHex.row);
for each (n in reaperNeighbors) {
if (a_grid.isHexAdjacentTo(n, a_targetHex)){
return (true);
};
};
return (false);
}
override public function get color():uint{
return (Game.BLUE_CUTIE);
}
override public function get name():String{
return ("Jump Slash");
}
override public function get description():String{
return ("Kill a group of cuties two tiles away. Absorb their souls.");
}
override public function get cost():int{
return (9);
}
override public function get colorName():String{
return ("blue");
}
}
}//package powers
Section 92
//JumpSlash_s_btn_jump_slash (powers.JumpSlash_s_btn_jump_slash)
package powers {
import mx.core.*;
public class JumpSlash_s_btn_jump_slash extends SpriteAsset {
}
}//package powers
Section 93
//Transform (powers.Transform)
package powers {
import com.urbansquall.shex.*;
public class Transform extends BasicAttack {
private static const s_btn_transform:Class = Transform_s_btn_transform;
public function Transform(){
super();
m_button = new PowerButton(s_btn_transform, this);
}
override public function get movesReaper():Boolean{
return (false);
}
override public function isValidTarget(a_grid:HexRectGrid, a_reaperHex:Hex, a_targetHex:Hex):Boolean{
if ((((a_reaperHex == a_targetHex)) || (!((a_targetHex.data is ColorData))))){
return (false);
};
return (a_grid.isHexAdjacentTo(a_reaperHex, a_targetHex));
}
override public function killCuties(a_grid:HexRectGrid, a_cutieHex:Hex, a_reaperHex:Hex, a_callback:Function):void{
var c:Hex;
var randChoices:Array = [Game.BLACK_CUTIE, Game.BLUE_CUTIE, Game.RED_CUTIE, Game.YELLOW_CUTIE];
var color:uint = (a_cutieHex.data as ColorData).color;
randChoices.splice(randChoices.indexOf(color), 1);
var randIndex:int = (Math.random() * randChoices.length);
var randColor:uint = randChoices[randIndex];
var cuties:Array = findAffectedCuties(a_grid, a_cutieHex, a_reaperHex);
for each (c in cuties) {
c.data = new ColorData(randColor);
};
a_callback(a_cutieHex, a_reaperHex, []);
}
override public function get color():uint{
return (Game.YELLOW_CUTIE);
}
override public function get name():String{
return ("Transform");
}
override public function get description():String{
return ("Randomly change the color of an adjacent group of cuties. They will not be killed.");
}
override public function get cost():int{
return (19);
}
override public function get colorName():String{
return ("yellow");
}
}
}//package powers
Section 94
//Transform_s_btn_transform (powers.Transform_s_btn_transform)
package powers {
import mx.core.*;
public class Transform_s_btn_transform extends SpriteAsset {
}
}//package powers
Section 95
//VampiricTouch (powers.VampiricTouch)
package powers {
import com.urbansquall.shex.*;
import com.urbansquall.utils.*;
public class VampiricTouch extends BasicAttack {
private static const s_btn_vampiric_touch:Class = VampiricTouch_s_btn_vampiric_touch;
public function VampiricTouch(){
super();
m_button = new PowerButton(s_btn_vampiric_touch, this);
}
override public function isValidTarget(a_grid:HexRectGrid, a_reaperHex:Hex, a_targetHex:Hex):Boolean{
if ((((a_reaperHex == a_targetHex)) || (!((a_targetHex.data is ColorData))))){
return (false);
};
if ((a_targetHex.data as ColorData).color == Game.RED_CUTIE){
return (false);
};
return (a_grid.isHexAdjacentTo(a_reaperHex, a_targetHex));
}
override public function killCuties(a_grid:HexRectGrid, a_cutieHex:Hex, a_reaperHex:Hex, a_callback:Function):void{
super.killCuties(a_grid, a_cutieHex, a_reaperHex, Delegate.create(this, getKills, a_callback));
}
override protected function modifyCutieColor(a_color:uint):uint{
return (Game.RED_CUTIE);
}
override public function get color():uint{
return (Game.YELLOW_CUTIE);
}
override public function get name():String{
return ("Vampiric Touch");
}
override public function get description():String{
return ("Kill an adjacent group of cuties. Absorb their souls, which are converted to red souls.");
}
override public function get cost():int{
return (24);
}
override public function get colorName():String{
return ("yellow");
}
private function getKills(a_cutieHex:Hex, a_reaperHex:Hex, a_kills:Array, a_actualCallback:Function):void{
a_kills[0][0] = Game.RED_CUTIE;
a_actualCallback(a_cutieHex, a_reaperHex, a_kills);
}
}
}//package powers
Section 96
//VampiricTouch_s_btn_vampiric_touch (powers.VampiricTouch_s_btn_vampiric_touch)
package powers {
import mx.core.*;
public class VampiricTouch_s_btn_vampiric_touch extends SpriteAsset {
}
}//package powers
Section 97
//ColorData (ColorData)
package {
import flash.display.*;
import com.urbansquall.shex.*;
import com.urbansquall.ginger.*;
import caurina.transitions.*;
public class ColorData extends HexData {
private var m_ring:Sprite;
public var color:uint;
private var m_dieComplete:Function;// = null
private var m_cutie:Sprite;
private var m_animationController:AnimationPlayer;// = null
private var m_bg:Sprite;
private static const PLATE_BLACK_SYMBOL:Class = ColorData_PLATE_BLACK_SYMBOL;
public static const DIE_FPS:int = 30;
private static const PLATE_RED_SYMBOL:Class = ColorData_PLATE_RED_SYMBOL;
public static const NORMAL_FPS:int = 18;
private static const PLATE_YELLOW_SYMBOL:Class = ColorData_PLATE_YELLOW_SYMBOL;
private static const PLATE_BLUE_SYMBOL:Class = ColorData_PLATE_BLUE_SYMBOL;
public function ColorData(a_color:uint){
var plateClass:Class;
super();
color = a_color;
m_bg = new Sprite();
m_bg.y = 1;
m_image.addChild(m_bg);
switch (color){
case Game.RED_CUTIE:
plateClass = PLATE_RED_SYMBOL;
break;
case Game.BLUE_CUTIE:
plateClass = PLATE_BLUE_SYMBOL;
break;
case Game.BLACK_CUTIE:
plateClass = PLATE_BLACK_SYMBOL;
break;
case Game.YELLOW_CUTIE:
plateClass = PLATE_YELLOW_SYMBOL;
break;
};
var plate:Sprite = new (plateClass);
m_bg.addChild(plate);
plate.x = ((Game.HEX_SIZE - plate.width) / 2);
plate.y = (((Game.HEX_SIZE - plate.height) / 2) - 2);
plate.cacheAsBitmap = true;
plate.mouseEnabled = false;
createGraphics();
}
override public function doTween():void{
if (Game.IS_FIRST_TIME){
return;
};
m_cutie.y = m_image.height;
m_cutie.scaleY = 0;
m_bg.alpha = 0;
Tweener.addTween(m_cutie, {scaleY:1, y:0, time:0.8, transition:"easeOutExpo"});
Tweener.addTween(m_bg, {alpha:1, time:0.8, transition:"easeOutExpo"});
}
private function callDie():void{
if (m_dieComplete != null){
m_dieComplete();
m_dieComplete = null;
};
}
override public function makeSureYouDie():void{
callDie();
}
public function get animationController():AnimationPlayer{
return (m_animationController);
}
override public function doFinalTween(a_callback:Function):void{
if (m_animationController.currentAnimationID == "die"){
return;
};
m_animationController.play("die");
m_dieComplete = a_callback;
}
private function changeAnimation(a_animationEvent:AnimationEvent):void{
m_animationController.x = (Game.HEX_SIZE / 2);
m_animationController.y = 10;
if (a_animationEvent.animationID == "die"){
m_animationController.fps = DIE_FPS;
if (!a_animationEvent.begin){
callDie();
};
} else {
m_animationController.fps = NORMAL_FPS;
};
}
private function createGraphics():void{
m_cutie = new Sprite();
m_image.addChild(m_cutie);
m_animationController = CutiePopperAnimationFactory.instance.instantiate(String(color));
m_animationController.play("idle");
m_animationController.addEventListener(AnimationEvent.CHANGE, changeAnimation);
var frameWidth:Number = 32;
var frameHeight:Number = 48;
m_animationController.x = (Game.HEX_SIZE / 2);
m_animationController.y = 10;
m_cutie.addChild(m_animationController);
}
override public function tick(a_deltaTime:Number):void{
if (m_animationController != null){
m_animationController.update(a_deltaTime);
};
}
}
}//package
Section 98
//ColorData_PLATE_BLACK_SYMBOL (ColorData_PLATE_BLACK_SYMBOL)
package {
import mx.core.*;
public class ColorData_PLATE_BLACK_SYMBOL extends SpriteAsset {
}
}//package
Section 99
//ColorData_PLATE_BLUE_SYMBOL (ColorData_PLATE_BLUE_SYMBOL)
package {
import mx.core.*;
public class ColorData_PLATE_BLUE_SYMBOL extends SpriteAsset {
}
}//package
Section 100
//ColorData_PLATE_RED_SYMBOL (ColorData_PLATE_RED_SYMBOL)
package {
import mx.core.*;
public class ColorData_PLATE_RED_SYMBOL extends SpriteAsset {
}
}//package
Section 101
//ColorData_PLATE_YELLOW_SYMBOL (ColorData_PLATE_YELLOW_SYMBOL)
package {
import mx.core.*;
public class ColorData_PLATE_YELLOW_SYMBOL extends SpriteAsset {
}
}//package
Section 102
//CustomTextField (CustomTextField)
package {
import flash.text.*;
public class CustomTextField extends TextField {
private static const us_customFont:String = "CustomTextField_us_customFont";
public function CustomTextField(a_text:String="", a_color:uint=0, a_size:int=28){
super();
this.autoSize = TextFieldAutoSize.LEFT;
this.selectable = false;
this.embedFonts = true;
this.defaultTextFormat = new TextFormat("us_customFont", a_size, a_color);
this.text = a_text;
}
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 size(a_size:int):void{
var f:TextFormat = copyTextFormat();
f.size = a_size;
this.defaultTextFormat = 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;
}
public function underline():void{
var f:TextFormat = copyTextFormat();
f.underline = true;
this.defaultTextFormat = f;
}
}
}//package
Section 103
//CustomTextField_us_customFont (CustomTextField_us_customFont)
package {
import mx.core.*;
public class CustomTextField_us_customFont extends FontAsset {
}
}//package
Section 104
//CutiePopperAnimationFactory (CutiePopperAnimationFactory)
package {
import flash.display.*;
import flash.geom.*;
import com.urbansquall.ginger.*;
public class CutiePopperAnimationFactory extends AnimationPlayerFactory {
private static const s_idle_box:Class = CutiePopperAnimationFactory_s_idle_box;
private static const s_cutie_black_death:Class = CutiePopperAnimationFactory_s_cutie_black_death;
public static const BABY_REAPER_SKIN:String = "baby_reaper_skin";
public static const MS_REAPER_SKIN:String = "ms_reaper_skin";
private static const s_cutie_red_death:Class = CutiePopperAnimationFactory_s_cutie_red_death;
private static const s_baby_reaper_attack:Class = CutiePopperAnimationFactory_s_baby_reaper_attack;
private static const s_cutie_blue_death:Class = CutiePopperAnimationFactory_s_cutie_blue_death;
private static const s_regular_egg:Class = CutiePopperAnimationFactory_s_regular_egg;
private static const s_golden_egg_crack:Class = CutiePopperAnimationFactory_s_golden_egg_crack;
private static const CUTIES_TILESHEET:Class = CutiePopperAnimationFactory_CUTIES_TILESHEET;
private static const s_golden_egg:Class = CutiePopperAnimationFactory_s_golden_egg;
private static const s_ms_reaper_attack:Class = CutiePopperAnimationFactory_s_ms_reaper_attack;
public static const REAPER_SKIN:String = "reaper_skin";
private static const s_baby_reaper_idle:Class = CutiePopperAnimationFactory_s_baby_reaper_idle;
private static const s_egg_crack:Class = CutiePopperAnimationFactory_s_egg_crack;
private static const s_ms_reaper_idle:Class = CutiePopperAnimationFactory_s_ms_reaper_idle;
private static const s_reaper_idle:Class = CutiePopperAnimationFactory_s_reaper_idle;
private static const s_reaper_attack:Class = CutiePopperAnimationFactory_s_reaper_attack;
private static const s_cutie_yellow_death:Class = CutiePopperAnimationFactory_s_cutie_yellow_death;
private static var s_instance:CutiePopperAnimationFactory;
public function CutiePopperAnimationFactory(){
super();
if (s_instance != null){
throw (new Error("DIIIIIIIE"));
};
s_instance = this;
createCuties();
createReaper();
createEggs();
createBox();
}
private function createCuties():void{
var animationController:AnimationPlayer;
var color:uint;
var frameWidth:Number;
var frameHeight:Number;
var fps:int;
var frameLocation:Rectangle;
var idleAnimation:Animation;
var hopAnimation:Animation;
var framesPerRow:int;
var die:Animation;
var cutieTileSheet:BitmapData = new CUTIES_TILESHEET().bitmapData;
var yellowDeathSheet:BitmapData = new s_cutie_yellow_death().bitmapData;
var redDeathSheet:BitmapData = new s_cutie_red_death().bitmapData;
var blueDeathSheet:BitmapData = new s_cutie_blue_death().bitmapData;
var blackDeathSheet:BitmapData = new s_cutie_black_death().bitmapData;
var frameCount = 4;
var startingColumn:int;
var startingRow:int;
var deathSheet:BitmapData;
var colors:Array = [Game.RED_CUTIE, Game.BLACK_CUTIE, Game.BLUE_CUTIE, Game.YELLOW_CUTIE];
var c:int;
while (c < colors.length) {
color = colors[c];
frameCount = 4;
startingColumn = 0;
startingRow = 0;
switch (color){
case Game.RED_CUTIE:
deathSheet = redDeathSheet;
break;
case Game.BLUE_CUTIE:
deathSheet = blueDeathSheet;
startingColumn = 4;
break;
case Game.BLACK_CUTIE:
deathSheet = blackDeathSheet;
startingRow = 1;
break;
case Game.YELLOW_CUTIE:
deathSheet = yellowDeathSheet;
startingRow = 1;
startingColumn = 4;
break;
};
frameWidth = 32;
frameHeight = 48;
fps = ColorData.NORMAL_FPS;
frameLocation = new Rectangle((startingColumn * frameWidth), (startingRow * frameHeight), frameWidth, frameHeight);
idleAnimation = new Animation(fps);
idleAnimation.addFrame(1, cutieTileSheet, frameLocation, (frameWidth / 2), (frameHeight / 2));
idleAnimation.isLooping = true;
hopAnimation = AnimationBuilder.importStrip(fps, cutieTileSheet, frameWidth, frameHeight, 4, (startingColumn * frameWidth), (startingRow * frameHeight));
hopAnimation.isLooping = false;
framesPerRow = 6;
frameCount = 12;
frameWidth = 64;
frameHeight = 80;
die = AnimationBuilder.importStrip(32, deathSheet, frameWidth, frameHeight);
die.isLooping = false;
animationController = new AnimationPlayer();
animationController.addAnimation("idle", idleAnimation);
animationController.addAnimation("hop", hopAnimation);
animationController.addAnimation("die", die);
animationController.fps = fps;
this.register(String(color), animationController);
c++;
};
cutieTileSheet.dispose();
yellowDeathSheet.dispose();
redDeathSheet.dispose();
blueDeathSheet.dispose();
blackDeathSheet.dispose();
}
private function createEggs():void{
var tilesheet:BitmapData = new s_golden_egg().bitmapData;
var regularSheet:BitmapData = new s_regular_egg().bitmapData;
var regularAnimSheet:BitmapData = new s_egg_crack().bitmapData;
var goldenCrackSheet:BitmapData = new s_golden_egg_crack().bitmapData;
var frameWidth:Number = 32;
var frameHeight:Number = 32;
var frameCount = 1;
var framesPerRow = 1;
var i:int;
var frameLocation:Rectangle = new Rectangle();
var startingX:int;
var startingY:int;
var regular:Animation = AnimationBuilder.importStrip(32, regularSheet, frameWidth, frameHeight);
regular.isLooping = false;
frameCount = 12;
framesPerRow = 4;
var crack:Animation = AnimationBuilder.importStrip(32, regularAnimSheet, frameWidth, frameHeight);
crack.isLooping = false;
frameCount = 4;
var golden:Animation = AnimationBuilder.importStrip(12, tilesheet, frameWidth, frameHeight);
golden.isLooping = true;
frameCount = 12;
framesPerRow = 6;
frameWidth = 64;
frameHeight = 48;
var goldenCrack:Animation = AnimationBuilder.importStrip(32, goldenCrackSheet, frameWidth, frameHeight);
goldenCrack.changeAllOffsets((frameWidth / 2), ((frameHeight / 2) + 8));
var animationController:AnimationPlayer = new AnimationPlayer();
animationController.addAnimation("regular", regular);
animationController.addAnimation("crack", crack);
animationController.addAnimation("golden", golden);
animationController.addAnimation("goldenCrack", goldenCrack);
animationController.fps = EggData.NORMAL_FPS;
register("egg", animationController);
tilesheet.dispose();
regularSheet.dispose();
regularAnimSheet.dispose();
}
private function createReaper():void{
var animationController:AnimationPlayer;
var idle:Animation;
var attack:Animation;
var reaperIdles:Array = [new s_reaper_idle().bitmapData, new s_ms_reaper_idle().bitmapData, new s_baby_reaper_idle().bitmapData];
var reaperAttacks:Array = [new s_reaper_attack().bitmapData, new s_ms_reaper_attack().bitmapData, new s_baby_reaper_attack().bitmapData];
var registerNames:Array = [REAPER_SKIN, MS_REAPER_SKIN, BABY_REAPER_SKIN];
var i:int;
while (i < reaperIdles.length) {
animationController = new AnimationPlayer();
animationController.fps = ReaperData.NORMAL_FPS;
idle = AnimationBuilder.importStrip(8, reaperIdles[i], 48, 64);
idle.isLooping = true;
animationController.addAnimation("idle", idle);
attack = AnimationBuilder.importStrip(32, reaperAttacks[i], 96, 96);
attack.isLooping = false;
animationController.addAnimation("attack", attack);
register(registerNames[i], animationController);
reaperIdles[i].dispose();
reaperAttacks[i].dispose();
i++;
};
}
private function createBox():void{
var animationController:AnimationPlayer = new AnimationPlayer();
var data:BitmapData = new s_idle_box().bitmapData;
var idle:Animation = AnimationBuilder.importStrip(16, data, 48, 64);
idle.isLooping = true;
animationController.addAnimation("idle", idle);
register("box", animationController);
data.dispose();
}
public static function get instance():CutiePopperAnimationFactory{
return (s_instance);
}
}
}//package
Section 105
//CutiePopperAnimationFactory_CUTIES_TILESHEET (CutiePopperAnimationFactory_CUTIES_TILESHEET)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_CUTIES_TILESHEET extends BitmapAsset {
}
}//package
Section 106
//CutiePopperAnimationFactory_s_baby_reaper_attack (CutiePopperAnimationFactory_s_baby_reaper_attack)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_baby_reaper_attack extends BitmapAsset {
}
}//package
Section 107
//CutiePopperAnimationFactory_s_baby_reaper_idle (CutiePopperAnimationFactory_s_baby_reaper_idle)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_baby_reaper_idle extends BitmapAsset {
}
}//package
Section 108
//CutiePopperAnimationFactory_s_cutie_black_death (CutiePopperAnimationFactory_s_cutie_black_death)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_cutie_black_death extends BitmapAsset {
}
}//package
Section 109
//CutiePopperAnimationFactory_s_cutie_blue_death (CutiePopperAnimationFactory_s_cutie_blue_death)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_cutie_blue_death extends BitmapAsset {
}
}//package
Section 110
//CutiePopperAnimationFactory_s_cutie_red_death (CutiePopperAnimationFactory_s_cutie_red_death)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_cutie_red_death extends BitmapAsset {
}
}//package
Section 111
//CutiePopperAnimationFactory_s_cutie_yellow_death (CutiePopperAnimationFactory_s_cutie_yellow_death)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_cutie_yellow_death extends BitmapAsset {
}
}//package
Section 112
//CutiePopperAnimationFactory_s_egg_crack (CutiePopperAnimationFactory_s_egg_crack)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_egg_crack extends BitmapAsset {
}
}//package
Section 113
//CutiePopperAnimationFactory_s_golden_egg (CutiePopperAnimationFactory_s_golden_egg)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_golden_egg extends BitmapAsset {
}
}//package
Section 114
//CutiePopperAnimationFactory_s_golden_egg_crack (CutiePopperAnimationFactory_s_golden_egg_crack)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_golden_egg_crack extends BitmapAsset {
}
}//package
Section 115
//CutiePopperAnimationFactory_s_idle_box (CutiePopperAnimationFactory_s_idle_box)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_idle_box extends BitmapAsset {
}
}//package
Section 116
//CutiePopperAnimationFactory_s_ms_reaper_attack (CutiePopperAnimationFactory_s_ms_reaper_attack)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_ms_reaper_attack extends BitmapAsset {
}
}//package
Section 117
//CutiePopperAnimationFactory_s_ms_reaper_idle (CutiePopperAnimationFactory_s_ms_reaper_idle)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_ms_reaper_idle extends BitmapAsset {
}
}//package
Section 118
//CutiePopperAnimationFactory_s_reaper_attack (CutiePopperAnimationFactory_s_reaper_attack)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_reaper_attack extends BitmapAsset {
}
}//package
Section 119
//CutiePopperAnimationFactory_s_reaper_idle (CutiePopperAnimationFactory_s_reaper_idle)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_reaper_idle extends BitmapAsset {
}
}//package
Section 120
//CutiePopperAnimationFactory_s_regular_egg (CutiePopperAnimationFactory_s_regular_egg)
package {
import mx.core.*;
public class CutiePopperAnimationFactory_s_regular_egg extends BitmapAsset {
}
}//package
Section 121
//CutieSoul (CutieSoul)
package {
import flash.display.*;
import flash.geom.*;
public class CutieSoul extends Sprite {
private var m_bitmap:Bitmap;
private var m_oldX:Number;// = NAN
private var m_oldY:Number;// = NAN
public var isDoubled:Boolean;
public var color:uint;
public static const WIDTH:int = 32;
public static const HEIGHT:int = 48;
private static const CUTIE_SOUL_PNG:Class = CutieSoul_CUTIE_SOUL_PNG;
private static var s_cutieSoulBitmapData:BitmapData;
public function CutieSoul(a_type:uint, a_isDoubled:Boolean=false){
var b2:Bitmap;
super();
color = a_type;
isDoubled = a_isDoubled;
if (s_cutieSoulBitmapData == null){
s_cutieSoulBitmapData = new CUTIE_SOUL_PNG().bitmapData;
};
m_bitmap = new Bitmap();
addChild(m_bitmap);
m_bitmap.x = (m_bitmap.x - (WIDTH / 2));
m_bitmap.y = (m_bitmap.y - (HEIGHT / 2));
m_bitmap.bitmapData = s_cutieSoulBitmapData;
if (a_isDoubled){
b2 = new Bitmap();
this.addChild(b2);
b2.x = (b2.x - (WIDTH / 2));
b2.bitmapData = s_cutieSoulBitmapData;
};
var frameWidth:Number = WIDTH;
var frameHeight:Number = HEIGHT;
var frameIndex:int;
switch (a_type){
case Game.BLUE_CUTIE:
frameIndex = 0;
break;
case Game.RED_CUTIE:
frameIndex = 1;
break;
case Game.YELLOW_CUTIE:
frameIndex = 2;
break;
case Game.BLACK_CUTIE:
frameIndex = 3;
break;
};
var rectangle:Rectangle = new Rectangle((frameIndex * frameWidth), 0, frameWidth, frameHeight);
m_bitmap.scrollRect = rectangle;
if (a_isDoubled){
b2.scrollRect = rectangle;
};
}
public function set oldY(value:Number):void{
m_oldY = value;
}
public function get oldX():Number{
return (m_oldX);
}
public function get oldY():Number{
return (m_oldY);
}
public function set oldX(value:Number):void{
m_oldX = value;
}
}
}//package
Section 122
//CutieSoul_CUTIE_SOUL_PNG (CutieSoul_CUTIE_SOUL_PNG)
package {
import mx.core.*;
public class CutieSoul_CUTIE_SOUL_PNG extends BitmapAsset {
}
}//package
Section 123
//EggData (EggData)
package {
import com.urbansquall.shex.*;
import com.urbansquall.ginger.*;
import caurina.transitions.*;
public class EggData extends HexData {
private var animationController:AnimationPlayer;// = null
private var m_isGolden:Boolean;
private var m_dieComplete:Function;
public static const BREAK_FPS:int = 36;
public static const NORMAL_FPS:int = 32;
public function EggData(a_isGolden:Boolean){
super();
m_isGolden = a_isGolden;
m_dieComplete = null;
createGraphics();
m_image.x = (Game.HEX_SIZE / 2);
m_image.y = ((Game.HEX_SIZE / 2) - 6);
if (a_isGolden){
animationController.play("golden");
};
}
private function callDie():void{
if (m_dieComplete != null){
m_dieComplete();
m_dieComplete = null;
};
}
override public function makeSureYouDie():void{
callDie();
}
private function createGraphics():void{
animationController = CutiePopperAnimationFactory.instance.instantiate("egg");
animationController.addEventListener(AnimationEvent.CHANGE, changeAnimation);
m_image.addChild(animationController);
}
override public function doFinalTween(a_callback:Function):void{
if ((((animationController.currentAnimationID == "crack")) || ((animationController.currentAnimationID == "goldenCrack")))){
return;
};
m_dieComplete = a_callback;
if (m_isGolden){
animationController.play("goldenCrack");
} else {
animationController.play("crack");
};
}
public function get isGolden():Boolean{
return (m_isGolden);
}
private function changeAnimation(a_animationEvent:AnimationEvent):void{
if ((((a_animationEvent.animationID == "crack")) || ((a_animationEvent.animationID == "goldenCrack")))){
animationController.fps = BREAK_FPS;
if (!a_animationEvent.begin){
animationController.pause();
callDie();
};
} else {
animationController.fps = NORMAL_FPS;
};
}
override public function doTween():void{
var fallHeight = 20;
animationController.y = (animationController.y - fallHeight);
Tweener.addTween(animationController, {y:(animationController.y + fallHeight), time:0.4, transition:"easeOutBounce"});
}
public function play(a_name:String):void{
animationController.play(a_name);
}
override public function tick(a_deltaTime:Number):void{
if (animationController != null){
animationController.update(a_deltaTime);
};
}
}
}//package
Section 124
//Game (Game)
package {
import flash.events.*;
import flash.display.*;
import powers.*;
import com.urbansquall.metronome.*;
import com.urbansquall.shex.*;
import caurina.transitions.*;
import flash.text.*;
import com.urbansquall.chaos.*;
import com.urbansquall.echo.*;
import events.*;
import com.urbansquall.utils.*;
import flash.ui.*;
import flash.filters.*;
public class Game extends Sprite {
private const TIME_BETWEEN_CUTIE_ANIMATIONS:int = 1000;
private var m_affected:Array;
private var m_lastGridCoord:Array;
private var m_inputDisabled:Boolean;
private var m_bgMusic:Loop;
private var m_randGen:WeightedRandom;
private var m_transform:GroupedSound;
private var m_ticker:Ticker;
private var m_description:CustomTextField;
private var m_currAttack:BasicAttack;
private var m_animationTimer:int;
private var m_quitFunc:Function;
private var m_isBgDanger:Boolean;
private var m_attacks:Array;
private var m_isGameOverHappening:Boolean;
private var m_laser:GroupedSound;
private var m_lowHealth:Loop;
private var m_buttonFrame:Sprite;
private var m_highlightedIndicator:Sprite;
private var m_screams:Array;
private var m_tutorialManager:TutorialManager;
private var m_flash:Sprite;
private var m_ohNooChannel:ChannelWrapper;
private var m_flyingRedCuties:int;
private var m_ui:GamePanel;
private var m_eggs:Array;
private var m_sfx:SoundGroup;
private var m_isTutorial:Boolean;
private var m_animationIndex:int;
private var m_fireball:GroupedSound;
private var m_levelMap:LevelMap;
private var m_currentHighlight:Array;
private var m_grid:HexRectGrid;
private var m_woosh:GroupedSound;
private var m_reaper:Reaper;
private var m_ohNoo:GroupedSound;
private var m_bgm:SoundGroup;
public static const HEX_SIZE:int = 60;
private static const s_frame_bottom:Class = Game_s_frame_bottom;
public static const EGG_CRUSHER_POINTS:int = -2;
private static const TUTORIAL_CUTIES:Array = [[YELLOW_CUTIE, BLACK_CUTIE, BLACK_CUTIE, RED_CUTIE, RED_CUTIE, RED_CUTIE, YELLOW_CUTIE, YELLOW_CUTIE, YELLOW_CUTIE], [BLUE_CUTIE, YELLOW_CUTIE, BLACK_CUTIE, BLACK_CUTIE, BLUE_CUTIE, BLUE_CUTIE, RED_CUTIE, RED_CUTIE, YELLOW_CUTIE], [BLUE_CUTIE, YELLOW_CUTIE, BLACK_CUTIE, BLUE_CUTIE, BLUE_CUTIE, RED_CUTIE, YELLOW_CUTIE, YELLOW_CUTIE, YELLOW_CUTIE], [BLUE_CUTIE, BLUE_CUTIE, YELLOW_CUTIE, BLUE_CUTIE, BLUE_CUTIE, BLUE_CUTIE, YELLOW_CUTIE, BLACK_CUTIE, BLACK_CUTIE], [BLUE_CUTIE, BLUE_CUTIE, YELLOW_CUTIE, BLACK_CUTIE, RED_CUTIE, BLACK_CUTIE, BLACK_CUTIE, BLACK_CUTIE, BLACK_CUTIE], [YELLOW_CUTIE, YELLOW_CUTIE, YELLOW_CUTIE, YELLOW_CUTIE, BLACK_CUTIE, BLUE_CUTIE, BLACK_CUTIE, BLACK_CUTIE, BLACK_CUTIE], [RED_CUTIE, RED_CUTIE, RED_CUTIE, YELLOW_CUTIE, BLACK_CUTIE, BLUE_CUTIE, BLUE_CUTIE, BLUE_CUTIE, BLUE_CUTIE], [RED_CUTIE, RED_CUTIE, RED_CUTIE, RED_CUTIE, YELLOW_CUTIE, BLACK_CUTIE, BLUE_CUTIE, BLUE_CUTIE, BLUE_CUTIE]];
public static const BLUE_CUTIE:uint = 0xFF;
public static const BLACK_CUTIE:uint = 0;
public static const EGG:uint = 0xFFFFFF;
public static const GOD_MODE:Boolean = false;
public static const GOLDEN_EGG:uint = 16777214;
public static const RED_CUTIE:uint = 0xFF0000;
public static const YELLOW_CUTIE:uint = 0xFFD800;
private static const s_button_frame:Class = Game_s_button_frame;
public static const CHEATS_ON:Boolean = false;
public static var IS_FIRST_TIME:Boolean = true;
public function Game(a_cols:int, a_rows:int, a_quitFunc:Function, a_maxLevel:int, a_skin:String, a_isTutorial:Boolean){
var b:PowerButton;
super();
if (CHEATS_ON){
trace("CHEATS ON CHEATS ON CHEATS ON CHEATS ON");
};
m_attacks = [new BasicAttack(), new JumpSlash(), new Harvest(), new Transform(), new VampiricTouch(), new EyeLasers(), new FireBlast()];
m_isGameOverHappening = false;
m_flyingRedCuties = 0;
m_isBgDanger = true;
m_isTutorial = a_isTutorial;
m_quitFunc = a_quitFunc;
m_currAttack = m_attacks[0];
m_currentHighlight = [-1, -1];
m_inputDisabled = false;
m_affected = [];
m_levelMap = new LevelMap();
this.addChild(m_levelMap);
m_bgm = new SoundGroup();
m_sfx = new SoundGroup();
m_ui = new GamePanel(m_levelMap, onNewEnemiesTrigger, onQuit, a_maxLevel, showGameOver, onSfxMute, onBgmMute);
this.addChild(m_ui);
m_levelMap.draw(m_ui.lifeLeft, 0);
m_grid = new HexRectGrid(a_cols, a_rows, HEX_SIZE);
m_grid.x = ((((this.width - m_levelMap.width) - m_grid.width) / 2) + m_levelMap.width);
m_grid.y = ((m_ui.y + m_ui.height) + 8);
m_grid.buttonMode = true;
m_grid.addEventListener(MouseEvent.MOUSE_MOVE, onGridMove);
m_grid.addEventListener(MouseEvent.CLICK, onGridClick);
m_randGen = new WeightedRandom();
m_randGen.registerOption(RED_CUTIE, 5);
m_randGen.registerOption(BLUE_CUTIE, 8);
m_randGen.registerOption(BLACK_CUTIE, 8);
m_randGen.registerOption(YELLOW_CUTIE, 8);
m_reaper = new Reaper(a_skin);
m_reaper.mouseEnabled = false;
m_grid.addChild(m_reaper);
var reaperHex:Hex = m_grid.getHexAt(m_reaper.col, m_reaper.row);
m_reaper.x = reaperHex.x;
m_reaper.y = (reaperHex.y - 8);
reaperHex.die();
m_ticker = new Ticker();
m_ticker.addEventListener(TickerEvent.TICK, tick);
m_ticker.start();
m_animationTimer = TIME_BETWEEN_CUTIE_ANIMATIONS;
m_animationIndex = 0;
var powerBg:Sprite = new Sprite();
powerBg.addChild(new s_frame_bottom());
powerBg.y = (Main.GAME_HEIGHT - powerBg.height);
var i:int;
while (i < m_attacks.length) {
b = m_attacks[i].button;
m_attacks[i].game = this;
b.x = (2 + (i * (m_attacks[0].button.width + 3)));
b.y = ((powerBg.height - m_attacks[0].button.height) - 2);
b.addEventListener(MouseEvent.CLICK, Delegate.create(this, onPowerButtonClick, i));
b.addEventListener(MouseEvent.MOUSE_MOVE, Delegate.create(this, onPowerButtonMove, i));
b.addEventListener(MouseEvent.MOUSE_OUT, onPowerButtonOut);
powerBg.addChild(b);
if (i > 0){
b.expend();
} else {
b.recharge(m_attacks[i].cost);
};
i++;
};
m_buttonFrame = new Sprite();
m_buttonFrame.addChild(new s_button_frame());
m_buttonFrame.cacheAsBitmap = true;
m_buttonFrame.x = -1;
m_buttonFrame.y = (m_attacks[0].button.y - 4);
powerBg.addChild(m_buttonFrame);
m_description = new CustomTextField("Hover over a power to see what it does.", 0xFFFFFF, 16);
m_description.filters = [new GlowFilter(0xDDDDDD, 1, 2, 2, 32), new DropShadowFilter()];
m_description.background = true;
m_description.backgroundColor = 3946595;
m_description.wordWrap = true;
m_description.autoSize = TextFieldAutoSize.NONE;
m_description.width = (Main.GAME_WIDTH - 8);
m_description.height = 22;
m_description.x = 4;
m_description.y = 10;
m_description.mouseEnabled = false;
m_description.visible = false;
powerBg.addChild(m_description);
this.addChild(m_grid);
this.addChild(powerBg);
fillStartingBoard();
IS_FIRST_TIME = false;
m_flash = new Sprite();
m_flash.graphics.beginFill(0xFFFFFF, 1);
m_flash.graphics.drawRect(0, 0, Main.GAME_WIDTH, Main.GAME_HEIGHT);
m_flash.graphics.endFill();
m_flash.visible = false;
m_flash.mouseEnabled = false;
this.addChild(m_flash);
var bgVolume:Number = 0.38;
m_bgMusic = new Loop(m_bgm, new SoundLibrary.s_bgm());
m_bgMusic.volume = bgVolume;
m_ohNoo = new GroupedSound(m_bgm, new SoundLibrary.s_oh_noo());
m_ohNoo.defaultVolume = bgVolume;
m_lowHealth = new Loop(m_bgm, new SoundLibrary.s_low_health());
m_lowHealth.volume = bgVolume;
playRegularMusic();
m_woosh = new GroupedSound(m_sfx, new SoundLibrary.s_woosh());
m_fireball = new GroupedSound(m_sfx, new SoundLibrary.s_fireball());
m_laser = new GroupedSound(m_sfx, new SoundLibrary.s_laser());
m_transform = new GroupedSound(m_sfx, new SoundLibrary.s_transform());
m_screams = [];
var s:int;
while (s < SoundLibrary.screams.length) {
m_screams.push(new GroupedSound(m_sfx, SoundLibrary.screams[s], SoundLibrary.screamVol[s]));
s++;
};
m_eggs = [];
var e:int;
while (e < SoundLibrary.eggs.length) {
m_eggs.push(new GroupedSound(m_sfx, SoundLibrary.eggs[e]));
e++;
};
if (m_isTutorial){
m_tutorialManager = new TutorialManager(this);
this.addChild(m_tutorialManager);
};
selectAttack();
m_ui.showLevelScreen();
this.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
}
private function describePower(a_power:BasicAttack=null):void{
if (a_power == null){
a_power = m_currAttack;
};
m_description.text = ((a_power.name + ": ") + a_power.description);
}
public function showGameOver():void{
var gos:GameOverScreen;
if (m_isGameOverHappening){
return;
};
m_isGameOverHappening = true;
if (m_isTutorial){
Main.s_safeSolManager.writeInt("tutorialBadges", 1);
onGameOverClick(false);
} else {
playRegularMusic();
gos = new GameOverScreen(onGameOverClick, (m_ui.lifeLeft > 0));
this.stage.addChild(gos);
};
m_ui.submitStats(m_isTutorial);
}
public function enableInput():void{
var p:BasicAttack;
var hoverSpot:Array;
for each (p in m_attacks) {
p.button.tryEnable();
};
showIndicators(m_currAttack);
hoverSpot = m_grid.translateMouse(m_grid.mouseX, m_grid.mouseY);
doGridMove(hoverSpot[0], hoverSpot[1]);
m_inputDisabled = false;
}
private function onCutiesDoneDying(a_hex:Hex, a_reaper:Hex, a_kills:Array, a_movesReaper:Boolean):void{
if (a_movesReaper){
if (a_hex.data != null){
a_hex.data.makeSureYouDie();
};
a_hex.data = a_reaper.clearData();
m_reaper.col = a_hex.col;
m_reaper.row = a_hex.row;
};
if (m_ui.newEnemiesIn == 0){
Tweener.addCaller(this, {onUpdate:finishDoneDying, onUpdateParams:[a_kills], delay:0.5, time:0.5, count:1, transition:"linear"});
} else {
finishDoneDying(a_kills);
};
}
public function useKillsToGainPower(a_color:uint, a_kills:int):void{
switch (a_color){
case RED_CUTIE:
m_ui.increaseLife(a_kills);
m_flyingRedCuties = (m_flyingRedCuties - 1);
break;
case BLUE_CUTIE:
m_attacks[1].button.recharge(a_kills);
m_attacks[2].button.recharge(a_kills);
break;
case YELLOW_CUTIE:
m_attacks[3].button.recharge(a_kills);
m_attacks[4].button.recharge(a_kills);
break;
case BLACK_CUTIE:
m_attacks[5].button.recharge(a_kills);
m_attacks[6].button.recharge(a_kills);
break;
};
}
public function get roundsUntilEggsHatch():int{
return (m_ui.newEnemiesIn);
}
private function showIndicators(a_power:BasicAttack):void{
var c:int;
var r:int;
var hex:Hex;
var neighbors:Array;
var n:Hex;
unhighlightAllIndicators();
unhighlightAllAffected();
var reaper:Hex = m_grid.getHexAt(m_reaper.col, m_reaper.row);
if ((((((a_power is JumpSlash)) || ((a_power is FireBlast)))) || ((a_power is EyeLasers)))){
c = 0;
while (c < m_grid.numCols) {
r = 0;
while (r < m_grid.numRows) {
hex = m_grid.getHexAt(c, r);
if (a_power.isValidTarget(m_grid, reaper, hex)){
hex.showPossibleIndicator();
};
r++;
};
c++;
};
} else {
neighbors = m_grid.getNeighborsTo(m_reaper.col, m_reaper.row);
for each (n in neighbors) {
if (a_power.isValidTarget(m_grid, reaper, n)){
n.showPossibleIndicator();
};
};
};
}
private function onBgmMute():void{
m_bgm.volume = (1 - m_bgm.volume);
Main.s_safeSolManager.writeBool("muteBgm", (m_bgm.volume == 0));
}
private function onPowerButtonMove(a_event:MouseEvent, a_index:int):void{
describePower(m_attacks[a_index]);
m_description.visible = true;
}
private function onPowerButtonClick(a_event:MouseEvent, a_index:int):void{
selectPowerButton(a_index);
}
private function onGridMove(a_event:MouseEvent):void{
if (m_inputDisabled){
return;
};
var gridCoord:Array = m_grid.translateMouse(a_event.localX, a_event.localY);
if ((((gridCoord[0] == m_currentHighlight[0])) && ((gridCoord[1] == m_currentHighlight[1])))){
return;
};
doGridMove(gridCoord[0], gridCoord[1]);
}
private function playRegularMusic():void{
if (!m_isBgDanger){
return;
};
m_isBgDanger = false;
if (m_ohNooChannel != null){
m_ohNooChannel.stop();
};
if (m_lowHealth.isPlaying()){
m_lowHealth.stop();
};
m_bgMusic.play();
}
private function unhighlightAllIndicators():void{
var r:int;
var c:int;
while (c < m_grid.numCols) {
r = 0;
while (r < m_grid.numRows) {
m_grid.getHexAt(c, r).hidePossibleIndicator();
r++;
};
c++;
};
}
private function removePimpText(a_tf:CustomTextField):void{
if (a_tf.parent != null){
a_tf.parent.removeChild(a_tf);
};
}
private function onNewEnemiesTrigger():void{
var r:int;
var hex:Hex;
var c:int;
while (c < m_grid.numCols) {
r = 0;
while (r < m_grid.numRows) {
hex = m_grid.getHexAt(c, r);
if ((hex.data is EggData)){
hex.live();
if (m_isTutorial){
hex.data = new ColorData(TUTORIAL_CUTIES[r][c]);
} else {
hex.data = new ColorData((m_randGen.grabOption() as uint));
};
} else {
if (hex.data == null){
hex.live();
hex.data = new EggData(false);
};
};
r++;
};
c++;
};
m_ui.increaseScore(GamePanel.MORE_CUTIES_SCORE, true);
}
private function onSfxMute():void{
m_sfx.volume = (1 - m_sfx.volume);
Main.s_safeSolManager.writeBool("muteSfx", (m_sfx.volume == 0));
}
private function selectAttack(a_index:int=-1, a_shouldShowIndicators:Boolean=true):void{
if (a_index == -1){
a_index = m_attacks.indexOf(m_currAttack);
};
m_currAttack = m_attacks[a_index];
describePower();
var newFrameX:Number = (m_attacks[a_index].button.x - 4);
var newFrameY:Number = (m_attacks[a_index].button.y - 4);
Tweener.addTween(m_buttonFrame, {x:newFrameX, y:newFrameY, time:0.2, transition:"easeInSine"});
if (a_shouldShowIndicators){
showIndicators(m_currAttack);
};
}
private function finishDoneDying(a_kills:Array):void{
m_ui.trackStats(a_kills);
m_ui.checkForNewEnemiesTrigger();
checkForValidMoves();
checkForGameOver(a_kills);
m_highlightedIndicator.visible = false;
enableInput();
var che:ChooseHexEvent = new ChooseHexEvent(m_lastGridCoord[0], m_lastGridCoord[1]);
this.dispatchEvent(che);
}
public function registerRedCutie():void{
m_flyingRedCuties = (m_flyingRedCuties + 1);
}
private function onGameOverClick(a_playAgain:Boolean):void{
cleanUp();
m_quitFunc(a_playAgain);
}
private function tick(a_event:TickerEvent):void{
var r:int;
var hex:Hex;
var colorCode:uint;
var data:ColorData;
m_reaper.tick(a_event.interval);
var interval:Number = a_event.interval;
var c:int;
while (c < m_grid.numCols) {
r = 0;
while (r < m_grid.numRows) {
hex = m_grid.getHexAt(c, r);
hex.tick(interval);
r++;
};
c++;
};
m_animationTimer = (m_animationTimer - interval);
if (m_animationTimer <= 0){
m_animationTimer = TIME_BETWEEN_CUTIE_ANIMATIONS;
switch (m_animationIndex){
case 0:
colorCode = RED_CUTIE;
break;
case 1:
colorCode = BLUE_CUTIE;
break;
case 2:
colorCode = BLACK_CUTIE;
break;
case 3:
colorCode = YELLOW_CUTIE;
break;
};
c = 0;
while (c < m_grid.numCols) {
r = 0;
while (r < m_grid.numRows) {
hex = m_grid.getHexAt(c, r);
data = (hex.data as ColorData);
if (data != null){
if (data.color == colorCode){
if (data.animationController.currentAnimationID != "die"){
data.animationController.play("hop");
};
};
};
r++;
};
c++;
};
m_animationIndex++;
if (m_animationIndex == 4){
m_animationIndex = 0;
};
};
}
private function checkForGameOver(a_kills:Array):void{
var a:Array;
var totalLifePool:int;
var redCount:int;
for each (a in a_kills) {
if (a[0] == RED_CUTIE){
redCount = a[1];
break;
};
};
totalLifePool = ((m_ui.lifeLeft + redCount) + m_flyingRedCuties);
if (totalLifePool > 0){
if (totalLifePool < 6){
m_ui.startHeart();
playDangerMusic();
} else {
m_ui.resetHeart();
playRegularMusic();
};
} else {
showGameOver();
};
}
private function checkForValidMoves():void{
var n:Hex;
var newEnemiesIn:int;
var i:int;
if (m_ui.newEnemiesIn == 0){
return;
};
var neighbors:Array = m_grid.getNeighborsTo(m_reaper.col, m_reaper.row);
for each (n in neighbors) {
if (n.data != null){
return;
};
};
newEnemiesIn = m_ui.newEnemiesIn;
m_ui.decreaseLife(newEnemiesIn);
i = 0;
while (i < newEnemiesIn) {
m_ui.popQueue();
i++;
};
m_levelMap.draw(m_ui.lifeLeft, (newEnemiesIn - 1));
m_ui.checkForNewEnemiesTrigger();
}
public function disableInput():void{
var p:BasicAttack;
m_inputDisabled = true;
unhighlightAllAffected();
unhighlightAllIndicators();
m_highlightedIndicator.visible = false;
m_grid.useHandCursor = false;
for each (p in m_attacks) {
p.button.enabled = false;
};
}
private function fillStartingBoard():void{
var g:Graphics;
var r:int;
var hex:Hex;
var halfSize:int = (HEX_SIZE / 2);
var fourthSize:int = (halfSize / 2);
var c:int;
while (c < m_grid.numCols) {
r = 0;
while (r < m_grid.numRows) {
hex = m_grid.getHexAt(c, r);
if ((((c == m_reaper.col)) && ((r == m_reaper.row)))){
hex.data = new ReaperData();
} else {
if (m_isTutorial){
hex.data = new ColorData(TUTORIAL_CUTIES[r][c]);
} else {
hex.data = new ColorData((m_randGen.grabOption() as uint));
};
};
r++;
};
c++;
};
m_highlightedIndicator = new Sprite();
m_highlightedIndicator.mouseEnabled = false;
m_highlightedIndicator.visible = false;
this.addChild(m_highlightedIndicator);
g = m_highlightedIndicator.graphics;
g.beginFill(0xFFFFFF, 0.4);
g.moveTo(halfSize, 0);
g.lineTo(Game.HEX_SIZE, fourthSize);
g.lineTo(Game.HEX_SIZE, (fourthSize * 3));
g.lineTo(halfSize, Game.HEX_SIZE);
g.lineTo(0, (fourthSize * 3));
g.lineTo(0, fourthSize);
g.lineTo(halfSize, 0);
g.endFill();
}
private function cleanUp():void{
var b:PowerButton;
m_bgm.stopAll();
m_sfx.stopAll();
m_grid.removeEventListener(MouseEvent.MOUSE_MOVE, onGridMove);
m_grid.removeEventListener(MouseEvent.CLICK, onGridClick);
m_ticker.removeEventListener(TickerEvent.TICK, tick);
var i:int;
while (i < m_attacks.length) {
b = m_attacks[i].button;
b.removeEventListener(MouseEvent.CLICK, Delegate.create(this, onPowerButtonClick, i));
b.removeEventListener(MouseEvent.MOUSE_MOVE, Delegate.create(this, onPowerButtonMove, i));
b.removeEventListener(MouseEvent.MOUSE_OUT, onPowerButtonOut);
i++;
};
}
private function calculateScore():void{
var a:Hex;
var goldenEggPimp:CustomTextField;
var eggUnpimp:CustomTextField;
var runningScore:int;
var scoreMultiplier = 1;
for each (a in m_affected) {
if ((((a.data is EggData)) && ((a.data as EggData).isGolden))){
goldenEggPimp = new CustomTextField("", 2289186, 20);
goldenEggPimp.center();
goldenEggPimp.selectable = false;
goldenEggPimp.mouseEnabled = false;
goldenEggPimp.autoSize = TextFieldAutoSize.CENTER;
goldenEggPimp.text = "Golden Egg!\n+5000";
goldenEggPimp.x = (a.x + ((Game.HEX_SIZE - goldenEggPimp.width) / 2));
goldenEggPimp.y = a.y;
goldenEggPimp.filters = [new GlowFilter(0, 1, 2, 2, 32)];
m_grid.addChild(goldenEggPimp);
Tweener.addTween(goldenEggPimp, {y:(goldenEggPimp.y - 40), time:1.3});
Tweener.addTween(goldenEggPimp, {alpha:0.1, delay:0.5, time:0.8, transition:"linear", onComplete:removePimpText, onCompleteParams:[goldenEggPimp]});
a.die();
m_flash.alpha = 0.3;
m_flash.visible = true;
Tweener.addTween(m_flash, {alpha:0, time:0.4});
m_ui.increaseScore(5000);
} else {
if ((a.data is EggData)){
eggUnpimp = new CustomTextField("", 15606306, 20);
eggUnpimp.center();
eggUnpimp.selectable = false;
eggUnpimp.mouseEnabled = false;
eggUnpimp.autoSize = TextFieldAutoSize.CENTER;
eggUnpimp.text = ("Egg Crusher...\n" + String(EGG_CRUSHER_POINTS));
eggUnpimp.x = (a.x + ((Game.HEX_SIZE - eggUnpimp.width) / 2));
eggUnpimp.y = a.y;
eggUnpimp.filters = [new GlowFilter(0, 1, 2, 2, 32)];
m_grid.addChild(eggUnpimp);
Tweener.addTween(eggUnpimp, {y:(eggUnpimp.y - 40), time:1.3});
Tweener.addTween(eggUnpimp, {alpha:0.1, delay:0.5, time:0.8, transition:"linear", onComplete:removePimpText, onCompleteParams:[eggUnpimp]});
m_ui.increaseScore(EGG_CRUSHER_POINTS);
} else {
if ((((a.data is ColorData)) && (!((m_currAttack is Transform))))){
runningScore = (runningScore + Math.min((GamePanel.PER_CUTIE_RAISE_SCORE * scoreMultiplier), GamePanel.CUTIE_MAX_SCORE));
scoreMultiplier = (scoreMultiplier + 1);
};
};
};
};
if (runningScore > 0){
m_ui.increaseScore(runningScore);
};
}
private function onQuit():void{
m_ui.submitStats(false);
onGameOverClick(false);
}
private function onKeyDown(a_event:KeyboardEvent):void{
if (((!((a_event.keyCode == Keyboard.SPACE))) && (!((a_event.keyCode == Keyboard.ESCAPE))))){
return;
};
selectPowerButton(0);
}
private function onGridClick(a_event:MouseEvent):void{
var randDelay:Number;
var i:int;
var randScream:int;
var randEgg:int;
var xDist:Number;
var yDist:Number;
if (m_inputDisabled){
return;
};
var gridCoord:Array = m_grid.translateMouse(a_event.localX, a_event.localY);
var hex:Hex = m_grid.getHexAt(gridCoord[0], gridCoord[1]);
if ((((hex == null)) || ((((hex.data == null)) && (!((m_currAttack is EyeLasers))))))){
return;
};
if ((((gridCoord[0] == m_reaper.col)) && ((gridCoord[1] == m_reaper.row)))){
return;
};
var reaper:Hex = m_grid.getHexAt(m_reaper.col, m_reaper.row);
if (!m_currAttack.isValidTarget(m_grid, reaper, hex)){
return;
};
if (((m_isTutorial) && (!(m_tutorialManager.isChosenHexValid(gridCoord[0], gridCoord[1]))))){
return;
};
m_lastGridCoord = gridCoord;
var facingDir = 1;
if (hex.x > reaper.x){
facingDir = -1;
};
disableInput();
if (m_currAttack != m_attacks[0]){
m_currAttack.button.expend();
};
var sfx:GroupedSound = m_woosh;
var sfxDelay:Number = 0.45;
if ((m_currAttack is EyeLasers)){
sfx = m_laser;
sfxDelay = 0;
} else {
if ((m_currAttack is Transform)){
sfx = m_transform;
sfxDelay = 0;
} else {
if ((m_currAttack is FireBlast)){
sfx = m_fireball;
sfxDelay = 0;
};
};
};
Tweener.addCaller(this, {onUpdate:sfx.play, delay:sfxDelay, count:1});
var affectedCuties:Array = m_currAttack.findAffectedCuties(m_grid, hex, reaper);
var affectedCount:int;
var eggCount:int;
if (!(m_currAttack is Transform)){
i = 0;
while (i < affectedCuties.length) {
if ((affectedCuties[i].data is ColorData)){
affectedCount = (affectedCount + 1);
} else {
if ((affectedCuties[i].data is EggData)){
eggCount = (eggCount + 1);
};
};
i++;
};
};
var soundCap:int;
var j:int;
while (j < affectedCount) {
if (soundCap >= 29){
break;
};
randScream = (Math.random() * m_screams.length);
randDelay = ((sfxDelay + 0.2) + (Math.random() * 0.1));
Tweener.addCaller(this, {onUpdate:m_screams[randScream].play, delay:randDelay, count:1});
soundCap = (soundCap + 1);
j++;
};
var k:int;
while (k < eggCount) {
if (soundCap >= 29){
break;
};
randEgg = (Math.random() * m_eggs.length);
randDelay = ((sfxDelay + 0.2) + (Math.random() * 0.1));
Tweener.addCaller(this, {onUpdate:m_eggs[randEgg].play, delay:randDelay, count:1});
soundCap = (soundCap + 1);
k++;
};
if (m_currAttack.movesReaper){
xDist = (hex.x - reaper.x);
yDist = (hex.y - reaper.y);
m_reaper.play("attack", facingDir);
Tweener.addTween(m_reaper, {x:hex.x, y:(hex.y - 8), delay:0.5, time:0.1, transition:"easeOutSine", onComplete:startKillingCuties, onCompleteParams:[hex, reaper]});
} else {
m_reaper.play("idle", facingDir);
startKillingCuties(hex, reaper);
};
}
private function doGridMove(a_col:int, a_row:int):void{
var a:Hex;
m_currentHighlight[0] = a_col;
m_currentHighlight[1] = a_row;
var hex:Hex = m_grid.getHexAt(a_col, a_row);
if (hex == null){
return;
};
unhighlightAllAffected();
m_highlightedIndicator.visible = hex.isShowingPossibleIndicator;
m_grid.useHandCursor = m_highlightedIndicator.visible;
if (m_highlightedIndicator.visible){
m_highlightedIndicator.x = (m_grid.x + hex.x);
m_highlightedIndicator.y = (m_grid.y + hex.y);
m_affected = m_currAttack.findAffectedCuties(m_grid, hex, m_grid.getHexAt(m_reaper.col, m_reaper.row));
for each (a in m_affected) {
a.filters = [new GlowFilter(0xEEEEEE, 0.7, 64, 64, 2, 1, true)];
};
};
}
private function playDangerMusic():void{
if (m_isBgDanger){
return;
};
m_isBgDanger = true;
if (m_bgMusic.isPlaying()){
m_bgMusic.stop();
};
m_ohNooChannel = m_ohNoo.play();
m_ohNooChannel.channel.addEventListener(Event.SOUND_COMPLETE, onOhNooComplete);
}
private function onOhNooComplete(a_event:Event):void{
m_ohNooChannel.channel.removeEventListener(Event.SOUND_COMPLETE, onOhNooComplete);
m_lowHealth.play();
}
private function startKillingCuties(a_hex:Hex, a_reaper:Hex):void{
if (m_currAttack.movesReaper){
a_hex.die();
};
calculateScore();
m_ui.decreaseLife();
m_ui.popQueue();
m_levelMap.draw(m_ui.lifeLeft, 0);
m_currAttack.killCuties(m_grid, a_hex, a_reaper, Delegate.create(this, onCutiesDoneDying, m_currAttack.movesReaper));
selectAttack(0, false);
}
private function unhighlightAllAffected():void{
var a:Hex;
for each (a in m_affected) {
a.filters = [];
};
}
private function selectPowerButton(a_index:int):void{
if (m_inputDisabled){
return;
};
if (!m_attacks[a_index].button.enabled){
return;
};
selectAttack(a_index);
var spse:SpecialPowerSelectEvent = new SpecialPowerSelectEvent(m_attacks[a_index].name);
this.dispatchEvent(spse);
}
private function onPowerButtonOut(a_event:MouseEvent):void{
describePower(m_currAttack);
m_description.visible = false;
}
}
}//package
Section 125
//Game_s_button_frame (Game_s_button_frame)
package {
import mx.core.*;
public class Game_s_button_frame extends SpriteAsset {
}
}//package
Section 126
//Game_s_frame_bottom (Game_s_frame_bottom)
package {
import mx.core.*;
public class Game_s_frame_bottom extends BitmapAsset {
}
}//package
Section 127
//GameOverScreen (GameOverScreen)
package {
public class GameOverScreen extends PromptPopup {
private var m_playAgainFunc:Function;
public function GameOverScreen(a_playAgainFunc:Function, a_hasLifeLeft:Boolean){
m_playAgainFunc = a_playAgainFunc;
var title:String = "Game Over";
var body:String = "You ran out of health. Kill more red cuties next time!\nWould you like to play again?";
if (a_hasLifeLeft){
title = "You Win!";
body = "You managed to survive all the levels! You should try unlimited mode.";
};
super(title, body, "Again!", "Quit", onAgainClick, onQuitClick);
}
private function onQuitClick():void{
m_playAgainFunc(false);
}
private function onAgainClick():void{
m_playAgainFunc(true);
}
}
}//package
Section 128
//GamePanel (GamePanel)
package {
import flash.events.*;
import flash.display.*;
import caurina.transitions.*;
import com.kongregate.as3.client.*;
import flash.text.*;
import com.urbansquall.security.*;
import com.urbansquall.utils.*;
import flash.filters.*;
public class GamePanel extends Sprite {
private const LIFE_BAR_WIDTH:int = 188;
private var m_lifeLeftText:CustomTextField;
private var m_scoreText:CustomTextField;
private var m_maxLevel:int;
private var m_bgmMuteFunc:Function;
private var m_newEnemiesTriggerFunc:Function;
private var m_biggestCombo:safeint;
private var m_hud:Sprite;
private var m_levelsPushed:int;
private var m_level:safeint;
private var m_hiscoreText:CustomTextField;
private var m_lifeLeft:safeint;
private var m_newEnemiesIn:safeint;
private var m_score:safeint;
private var m_cutiesKilled:safeint;
private var m_levelMap:LevelMap;
private var m_onQuitFunc:Function;
private var m_sfxMuteFunc:Function;
private var m_lastEnemiesSpawnIn:int;
private var m_enemyResetCount:safeint;
private var m_eggsCrushed:safeint;
private var m_hiscore:safeint;
private var m_quit:RegularButton;
private var m_gameOverFunc:Function;
private var m_realtimeEnemiesIn:safeint;
private var m_heart:Sprite;
private static const s_ui_music:Class = GamePanel_s_ui_music;
public static const FIXED_BRONZE:int = 20000;
public static const UNLIMITED_SILVER:int = 70000;
public static const FIXED_GOLD:int = 55000;
private static const s_ui_quit:Class = GamePanel_s_ui_quit;
public static const MAX_LIFE:int = 40;
public static const UNLIMITED_BRONZE:int = 50000;
public static const UNLIMITED_GOLD:int = 100000;
public static const FIXED_SILVER:int = 40000;
private static const s_ui_heart:Class = GamePanel_s_ui_heart;
private static const s_cutie_HUD:Class = GamePanel_s_cutie_HUD;
public static const MAX_RESET_TURNS:int = 38;
private static const s_ui_sound:Class = GamePanel_s_ui_sound;
public static const MORE_CUTIES_SCORE:int = 100;
public static const CUTIE_MAX_SCORE:int = 50;
public static const START_NEW_ENEMIES_IN:int = 4;
private static const s_ui_disabled:Class = GamePanel_s_ui_disabled;
public static const PER_CUTIE_RAISE_SCORE:int = 5;
public function GamePanel(a_levelMap:LevelMap, a_newEnemiesTriggerFunc:Function, a_onQuitFunc:Function, a_maxLevel:int, a_gameOverFunc:Function, a_sfxMuteFunc:Function, a_bgmMuteFunc:Function){
super();
m_levelMap = a_levelMap;
m_newEnemiesTriggerFunc = a_newEnemiesTriggerFunc;
m_onQuitFunc = a_onQuitFunc;
m_lastEnemiesSpawnIn = START_NEW_ENEMIES_IN;
m_maxLevel = a_maxLevel;
m_gameOverFunc = a_gameOverFunc;
m_sfxMuteFunc = a_sfxMuteFunc;
m_bgmMuteFunc = a_bgmMuteFunc;
m_levelsPushed = 0;
m_level = new safeint(1);
m_lifeLeft = new safeint(20);
m_newEnemiesIn = new safeint(START_NEW_ENEMIES_IN);
m_enemyResetCount = new safeint(0);
m_hiscore = new safeint(0);
m_realtimeEnemiesIn = new safeint(START_NEW_ENEMIES_IN);
m_score = new safeint(0);
m_biggestCombo = new safeint(0);
m_cutiesKilled = new safeint(0);
m_eggsCrushed = new safeint(0);
if (m_maxLevel == 0){
m_hiscore.val = Main.s_safeSolManager.readInt("unlimitedHighScore");
} else {
m_hiscore.val = Main.s_safeSolManager.readInt("fixedHighScore");
};
m_hud = new Sprite();
m_hud.addChild(new s_cutie_HUD());
m_hud.cacheAsBitmap = true;
this.addChild(m_hud);
m_heart = new Sprite();
m_heart.addChild(new s_ui_heart());
m_heart.y = 3;
m_hud.addChild(m_heart);
m_levelMap.push(LevelMap.BIP_HATCH);
var i:int;
while (i < (LevelMap.s_bufferSize - 1)) {
fillLevelMap();
i++;
};
m_lifeLeftText = new CustomTextField("", 0xFFFFFF, 28);
m_lifeLeftText.autoSize = TextFieldAutoSize.CENTER;
m_lifeLeftText.x = ((m_heart.width / 2) - 2);
m_lifeLeftText.y = 23;
m_lifeLeftText.filters = [new GlowFilter(9643044, 1, 2, 2, 32)];
m_heart.addChild(m_lifeLeftText);
m_scoreText = new CustomTextField("", 0xFFFFFF, 26);
m_scoreText.autoSize = TextFieldAutoSize.RIGHT;
m_scoreText.x = (Main.GAME_WIDTH - 222);
m_scoreText.y = 28;
m_scoreText.filters = [new GlowFilter(9802, 1, 2, 2, 32)];
m_hud.addChild(m_scoreText);
m_hiscoreText = new CustomTextField("", 0xFFFFFF, 20);
m_hiscoreText.autoSize = TextFieldAutoSize.RIGHT;
m_hiscoreText.x = (Main.GAME_WIDTH - 99);
m_hiscoreText.y = 29;
m_hiscoreText.filters = [new GlowFilter(9802, 1, 2, 2, 32)];
m_hud.addChild(m_hiscoreText);
updateText();
var sfxMute:RegularButton = new RegularButton(s_ui_sound, s_ui_disabled);
sfxMute.x = ((Main.GAME_WIDTH - sfxMute.width) - 4);
sfxMute.y = 4;
m_hud.addChild(sfxMute);
sfxMute.addEventListener(MouseEvent.CLICK, onSfxMuteClick);
if (Main.s_safeSolManager.readBool("muteSfx")){
m_sfxMuteFunc();
sfxMute.toggleOverThings();
};
var mute:RegularButton = new RegularButton(s_ui_music, s_ui_disabled);
mute.x = sfxMute.x;
mute.y = ((sfxMute.y + sfxMute.height) + 1);
m_hud.addChild(mute);
mute.addEventListener(MouseEvent.CLICK, onBgmMuteClick);
if (Main.s_safeSolManager.readBool("muteBgm")){
m_bgmMuteFunc();
mute.toggleOverThings();
};
m_quit = new RegularButton(s_ui_quit);
m_quit.x = sfxMute.x;
m_quit.y = ((mute.y + mute.height) + 1);
m_hud.addChild(m_quit);
m_quit.addEventListener(MouseEvent.CLICK, onQuitClick);
}
private function onBgmMuteClick(a_event:MouseEvent):void{
m_bgmMuteFunc();
}
private function updateText():void{
m_lifeLeftText.text = m_lifeLeft.toString();
m_scoreText.text = m_score.toString();
m_hiscoreText.text = m_hiscore.toString();
m_heart.x = ((68 - (m_heart.width / 2)) + (LIFE_BAR_WIDTH * (m_lifeLeft.val / MAX_LIFE)));
}
public function trackStats(a_kills:Array):void{
var comboSize:int;
var i:int;
while (i < a_kills.length) {
if ((((((((a_kills[i][0] == Game.RED_CUTIE)) || ((a_kills[i][0] == Game.BLUE_CUTIE)))) || ((a_kills[i][0] == Game.YELLOW_CUTIE)))) || ((a_kills[i][0] == Game.BLACK_CUTIE)))){
comboSize = (comboSize + a_kills[i][1]);
} else {
if ((((a_kills[i][0] == Game.EGG)) || ((a_kills[i][0] == Game.GOLDEN_EGG)))){
m_eggsCrushed.val = (m_eggsCrushed.val + a_kills[i][1]);
};
};
i++;
};
if (m_biggestCombo.val < comboSize){
m_biggestCombo.val = comboSize;
};
m_cutiesKilled.val = (m_cutiesKilled.val + comboSize);
}
public function get lifeLeft():int{
return (m_lifeLeft.val);
}
public function get newEnemiesIn():int{
return (m_levelMap.nextHatchIn);
}
private function beatHeart():void{
Tweener.addTween(m_heart, {scaleX:1.1, scaleY:1.1, time:0.35, onComplete:unbeatHeart});
}
public function startHeart():void{
if (Tweener.getTweenCount(m_heart) > 0){
return;
};
beatHeart();
}
private function unbeatHeart():void{
Tweener.addTween(m_heart, {scaleX:1, scaleY:1, time:0.35, onComplete:beatHeart});
}
private function resetNewEnemiesIn():void{
var boost:int;
m_enemyResetCount.val = (m_enemyResetCount.val + 1);
if (m_enemyResetCount.val >= 14){
boost = ((m_enemyResetCount.val + 2) / 4);
trace(boost);
m_newEnemiesIn.val = Math.min((START_NEW_ENEMIES_IN + boost), MAX_RESET_TURNS);
} else {
if (m_enemyResetCount.val >= 10){
m_newEnemiesIn.val = (START_NEW_ENEMIES_IN + 3);
} else {
if (m_enemyResetCount.val >= 6){
m_newEnemiesIn.val = (START_NEW_ENEMIES_IN + 2);
} else {
if (m_enemyResetCount.val >= 2){
m_newEnemiesIn.val = (START_NEW_ENEMIES_IN + 1);
} else {
m_newEnemiesIn.val = START_NEW_ENEMIES_IN;
};
};
};
};
m_realtimeEnemiesIn.val = m_newEnemiesIn.val;
}
public function decreaseLife(a_count:int=1):void{
m_lifeLeft.val = Math.max((m_lifeLeft.val - a_count), 0);
updateText();
}
public function resetHeart():void{
Tweener.removeTweens(m_heart);
m_heart.scaleX = 1;
m_heart.scaleY = 1;
}
public function popQueue():int{
fillLevelMap();
return (m_levelMap.pop());
}
private function delayFlush():void{
Tweener.removeTweens(Main.s_safeSolManager);
if (m_maxLevel == 0){
Main.s_safeSolManager.writeInt("unlimitedHighScore", m_hiscore.val);
} else {
Main.s_safeSolManager.writeInt("fixedHighScore", m_hiscore.val);
};
Main.s_safeSolManager.flush();
}
public function showLevelScreen():void{
this.parent.addChild(new LevelUpScreen(m_level.val, m_lastEnemiesSpawnIn));
if (m_level.val != 1){
submitStats(false);
};
}
private function fillLevelMap():void{
var currentEnemiesIn:int;
if (((!((m_maxLevel == 0))) && ((m_levelsPushed >= m_maxLevel)))){
return;
};
m_newEnemiesIn.val = (m_newEnemiesIn.val - 1);
if (m_newEnemiesIn.val > 0){
m_levelMap.push(LevelMap.BIP_NORMAL);
} else {
currentEnemiesIn = m_realtimeEnemiesIn.val;
resetNewEnemiesIn();
if (currentEnemiesIn < m_newEnemiesIn.val){
m_levelsPushed = (m_levelsPushed + 1);
m_levelMap.push(LevelMap.BIP_LEVELUP);
} else {
m_levelMap.push(LevelMap.BIP_HATCH);
};
};
}
public function increaseLife(a_count:int=1):void{
m_lifeLeft.val = Math.min((m_lifeLeft.val + a_count), MAX_LIFE);
updateText();
m_levelMap.drawLife(m_lifeLeft.val);
}
public function checkForNewEnemiesTrigger():void{
var nextHatchIn:int;
if (m_levelMap.peek() != LevelMap.BIP_NORMAL){
nextHatchIn = m_levelMap.nextHatchIn;
if (m_lastEnemiesSpawnIn != nextHatchIn){
m_lastEnemiesSpawnIn = nextHatchIn;
m_level.val = (m_level.val + 1);
if (((!((m_maxLevel == 0))) && ((m_level.val > m_maxLevel)))){
m_gameOverFunc();
return;
};
showLevelScreen();
};
m_newEnemiesTriggerFunc();
};
}
private function cleanUp():void{
m_quit.removeEventListener(MouseEvent.CLICK, onQuitClick);
m_onQuitFunc();
}
public function submitStats(a_isTutorial:Boolean):void{
var kongregate:KongregateAPI;
var unlimitedNum:int;
var fixedNum:int;
var stats:Array = [];
stats.push({name:"CutiesKilled", value:m_cutiesKilled.val});
stats.push({name:"EggsCrushed", value:m_eggsCrushed.val});
stats.push({name:"LargestCombo", value:m_biggestCombo.val});
stats.push({name:"HighestLevel", value:m_level.val});
if (a_isTutorial){
stats.push({name:"TutorialCompleted", value:1});
};
if (m_maxLevel == 0){
stats.push({name:"UnlimitedHighScore", value:m_score.val});
} else {
stats.push({name:"5LevelHighScore", value:m_score.val});
if (m_level.val > m_maxLevel){
stats.push({name:"5LevelComplete", value:1});
};
};
if (SponsorManager.instance.isKongregate()){
kongregate = KongregateAPI.getInstance();
kongregate.stats.submitArray(stats);
};
if (m_maxLevel == 0){
unlimitedNum = Main.s_safeSolManager.readInt("unlimitedBadges");
if ((((unlimitedNum < 3)) && ((m_score.val >= UNLIMITED_GOLD)))){
Main.s_safeSolManager.writeInt("unlimitedBadges", 3);
} else {
if ((((unlimitedNum < 2)) && ((m_score.val >= UNLIMITED_SILVER)))){
Main.s_safeSolManager.writeInt("unlimitedBadges", 2);
} else {
if ((((unlimitedNum < 1)) && ((m_hiscore.val >= UNLIMITED_BRONZE)))){
Main.s_safeSolManager.writeInt("unlimitedBadges", 1);
};
};
};
} else {
fixedNum = Main.s_safeSolManager.readInt("fixedBadges");
if ((((fixedNum < 3)) && ((m_score.val >= FIXED_GOLD)))){
Main.s_safeSolManager.writeInt("fixedBadges", 3);
} else {
if ((((fixedNum < 2)) && ((m_score.val >= FIXED_SILVER)))){
Main.s_safeSolManager.writeInt("fixedBadges", 2);
} else {
if ((((fixedNum < 1)) && ((m_score.val >= FIXED_BRONZE)))){
Main.s_safeSolManager.writeInt("fixedBadges", 1);
};
};
};
};
}
private function onSfxMuteClick(a_event:MouseEvent):void{
m_sfxMuteFunc();
}
public function increaseScore(a_count:int, a_useLevelMultiplier:Boolean=false):void{
if (a_useLevelMultiplier){
a_count = (a_count * m_level.val);
};
m_score.val = (m_score.val + a_count);
if (m_score.val > m_hiscore.val){
m_hiscoreText.textColor = 0xFFFF00;
m_hiscore.val = m_score.val;
Tweener.addTween(Main.s_safeSolManager, {delay:0.5, time:0, transition:"linear", onComplete:Delegate.create(this, delayFlush)});
};
updateText();
}
private function onQuitClick(a_event:MouseEvent):void{
this.stage.addChild(new QuitPopup(cleanUp));
}
}
}//package
Section 129
//GamePanel_s_cutie_HUD (GamePanel_s_cutie_HUD)
package {
import mx.core.*;
public class GamePanel_s_cutie_HUD extends BitmapAsset {
}
}//package
Section 130
//GamePanel_s_ui_disabled (GamePanel_s_ui_disabled)
package {
import mx.core.*;
public class GamePanel_s_ui_disabled extends SpriteAsset {
}
}//package
Section 131
//GamePanel_s_ui_heart (GamePanel_s_ui_heart)
package {
import mx.core.*;
public class GamePanel_s_ui_heart extends SpriteAsset {
}
}//package
Section 132
//GamePanel_s_ui_music (GamePanel_s_ui_music)
package {
import mx.core.*;
public class GamePanel_s_ui_music extends SpriteAsset {
}
}//package
Section 133
//GamePanel_s_ui_quit (GamePanel_s_ui_quit)
package {
import mx.core.*;
public class GamePanel_s_ui_quit extends SpriteAsset {
}
}//package
Section 134
//GamePanel_s_ui_sound (GamePanel_s_ui_sound)
package {
import mx.core.*;
public class GamePanel_s_ui_sound extends SpriteAsset {
}
}//package
Section 135
//KongregateConfirmationPopup (KongregateConfirmationPopup)
package {
public class KongregateConfirmationPopup extends PromptPopup {
public function KongregateConfirmationPopup(a_plainConfirm:Boolean=false){
var body:String = "This is a special feature available only at Kongregate, an awesome flash games site.";
if (a_plainConfirm){
body = "The website will open in a new window.";
};
super("Visit kongregate.com ?", body, "Go", "Cancel", onGoClick, onNevermindClick);
}
private function onNevermindClick():void{
if (this.parent != null){
this.parent.removeChild(this);
};
}
private function onGoClick():void{
SponsorManager.instance.visitSite();
}
}
}//package
Section 136
//LevelMap (LevelMap)
package {
import flash.display.*;
import caurina.transitions.*;
public class LevelMap extends Sprite {
private var m_lastBipContainer:Sprite;
private var m_lastBip:int;
private var m_theQueue:Array;
private var m_reaperDial:Sprite;
private var m_ripDial:Sprite;
private var m_track:Sprite;
private static const s_ui_boneSmall:Class = LevelMap_s_ui_boneSmall;
private static const s_ui_gameover:Class = LevelMap_s_ui_gameover;
private static const s_spacePerBip:Number = 25.125;
private static const s_bottomPosition:Number = (s_topBuffer + (s_spacePerBip * (s_bufferSize - 1)));
private static const s_ui_boneBig:Class = LevelMap_s_ui_boneBig;
private static const s_reaperReachY:Number = (s_bottomPosition - (s_spacePerBip * 2));
private static const s_ui_skeletonPointer:Class = LevelMap_s_ui_skeletonPointer;
public static const BIP_HATCH:int = 984322;
private static const s_ui_levelUp:Class = LevelMap_s_ui_levelUp;
public static const s_bufferSize:int = 16;
private static const s_panelWidth:int = 74;
private static const s_topBuffer:int = 66;
private static const s_ui_eggsHatch:Class = LevelMap_s_ui_eggsHatch;
private static const s_frame_side:Class = LevelMap_s_frame_side;
public static const BIP_LEVELUP:int = 984323;
public static const BIP_NORMAL:int = 984321;
private static const s_panelHeight:int = 402;
public function LevelMap(){
super();
m_theQueue = [];
var bg:Sprite = new Sprite();
bg.cacheAsBitmap = true;
bg.addChild(new s_frame_side());
this.addChild(bg);
m_track = new Sprite();
m_track.cacheAsBitmap = true;
m_track.y = (s_topBuffer - s_spacePerBip);
m_track.addChild(new Sprite());
this.addChild(m_track);
m_lastBipContainer = new Sprite();
m_lastBipContainer.cacheAsBitmap = true;
m_lastBipContainer.y = s_bottomPosition;
this.addChild(m_lastBipContainer);
m_lastBipContainer.addChild(new Sprite());
m_reaperDial = new Sprite();
m_reaperDial.cacheAsBitmap = true;
var skeletonPointer:Sprite = new Sprite();
skeletonPointer.x = -2;
skeletonPointer.y = -10;
skeletonPointer.addChild(new s_ui_skeletonPointer());
m_reaperDial.addChild(skeletonPointer);
m_reaperDial.y = (s_bottomPosition - s_spacePerBip);
m_ripDial = new Sprite();
m_ripDial.cacheAsBitmap = true;
var gameOver:Sprite = new Sprite();
gameOver.addChild(new s_ui_gameover());
gameOver.y = ((-(gameOver.height) / 2) + 7);
m_ripDial.addChild(gameOver);
m_ripDial.x = m_reaperDial.x;
this.addChild(m_ripDial);
this.addChild(m_reaperDial);
}
public function printQueue():void{
var s:String = "[";
var i:int;
while (i < m_theQueue.length) {
if (m_theQueue[i] == BIP_NORMAL){
s = (s + "n");
} else {
if (m_theQueue[i] == BIP_HATCH){
s = (s + "H");
} else {
if (m_theQueue[i] == BIP_LEVELUP){
s = (s + "L");
};
};
};
if (i == 0){
s = (s + "]");
} else {
s = (s + " ");
};
i++;
};
trace(s);
}
public function draw(a_lifeLeft:int, a_extraSteps:int):void{
var reachY:Number = (s_reaperReachY - (s_spacePerBip * a_extraSteps));
Tweener.addTween(m_reaperDial, {y:reachY, time:0.35});
Tweener.addTween(m_reaperDial, {y:m_reaperDial.y, delay:0.35, time:0.35});
var ripY:Number = (reachY - (s_spacePerBip * (a_lifeLeft - 1)));
Tweener.addTween(m_ripDial, {y:ripY, delay:0.35, time:0.35});
m_ripDial.visible = (ripY >= (s_panelHeight - (m_theQueue.length * s_spacePerBip)));
var oldTrackY:Number = (s_spacePerBip * (1 + a_extraSteps));
var oldTrack:DisplayObject = m_track.getChildAt(0);
Tweener.addTween(oldTrack, {y:oldTrackY, delay:0.35, time:0.35, onComplete:doneScrolling});
var oldLastBip:DisplayObject = m_lastBipContainer.getChildAt(0);
Tweener.addTween(oldLastBip, {y:(oldLastBip.y + s_spacePerBip), delay:0.35, time:0.35});
}
public function drawLife(a_lifeLeft:int):void{
var ripY:Number = (s_reaperReachY - (s_spacePerBip * (a_lifeLeft - 1)));
Tweener.addTween(m_ripDial, {y:ripY, time:0.35});
}
public function get nextHatchIn():int{
var count:int;
var i = 1;
while (i < m_theQueue.length) {
count = (count + 1);
if (m_theQueue[i] != BIP_NORMAL){
break;
};
i++;
};
return (count);
}
private function makeSpriteForBip(a_bip:int, a_showPointer:Boolean):Sprite{
var hatchPointer:Sprite;
var levelUpPointer:Sprite;
var icon:Sprite = new Sprite();
if (a_bip == BIP_NORMAL){
icon.addChild(new s_ui_boneSmall());
icon.x = 10;
icon.y = (-(icon.height) / 2);
} else {
if (a_bip == BIP_HATCH){
icon.addChild(new s_ui_boneBig());
icon.y = (-(icon.height) / 2);
if (a_showPointer){
hatchPointer = new Sprite();
hatchPointer.addChild(new s_ui_eggsHatch());
hatchPointer.x = (-(hatchPointer.width) + (icon.width / 2));
hatchPointer.y = ((-(hatchPointer.height) / 2) - 2);
icon.addChild(hatchPointer);
};
} else {
if (a_bip == BIP_LEVELUP){
icon.addChild(new s_ui_boneBig());
icon.y = (-(icon.height) / 2);
if (a_showPointer){
levelUpPointer = new Sprite();
levelUpPointer.addChild(new s_ui_levelUp());
levelUpPointer.x = (-(levelUpPointer.width) + (icon.width / 2));
levelUpPointer.y = ((-(levelUpPointer.height) / 2) - 2);
icon.addChild(levelUpPointer);
};
};
};
};
return (icon);
}
public function pop():int{
m_lastBip = m_theQueue.shift();
return (m_lastBip);
}
private function doneScrolling():void{
var icon:Sprite;
var nextScreen:Sprite = new Sprite();
var halfWidth:Number = (s_panelWidth / 2);
var i:int;
while (i < m_theQueue.length) {
icon = makeSpriteForBip(m_theQueue[i], !((i == 0)));
icon.x = (icon.x + halfWidth);
icon.y = (icon.y + (s_panelHeight - (s_spacePerBip * (i + (1 / 2)))));
nextScreen.addChild(icon);
i++;
};
m_track.removeChildAt(0);
m_track.addChildAt(nextScreen, 0);
var lastBip:Sprite = makeSpriteForBip(m_lastBip, false);
lastBip.x = (lastBip.x + halfWidth);
lastBip.y = (lastBip.y + (s_panelHeight - (s_spacePerBip * (i - (1 / 2)))));
m_lastBipContainer.removeChildAt(0);
m_lastBipContainer.addChild(lastBip);
}
public function peek():int{
return (m_theQueue[0]);
}
public function push(a_type:int):void{
m_theQueue.push(a_type);
}
}
}//package
Section 137
//LevelMap_s_frame_side (LevelMap_s_frame_side)
package {
import mx.core.*;
public class LevelMap_s_frame_side extends BitmapAsset {
}
}//package
Section 138
//LevelMap_s_ui_boneBig (LevelMap_s_ui_boneBig)
package {
import mx.core.*;
public class LevelMap_s_ui_boneBig extends SpriteAsset {
}
}//package
Section 139
//LevelMap_s_ui_boneSmall (LevelMap_s_ui_boneSmall)
package {
import mx.core.*;
public class LevelMap_s_ui_boneSmall extends SpriteAsset {
}
}//package
Section 140
//LevelMap_s_ui_eggsHatch (LevelMap_s_ui_eggsHatch)
package {
import mx.core.*;
public class LevelMap_s_ui_eggsHatch extends SpriteAsset {
}
}//package
Section 141
//LevelMap_s_ui_gameover (LevelMap_s_ui_gameover)
package {
import mx.core.*;
public class LevelMap_s_ui_gameover extends SpriteAsset {
}
}//package
Section 142
//LevelMap_s_ui_levelUp (LevelMap_s_ui_levelUp)
package {
import mx.core.*;
public class LevelMap_s_ui_levelUp extends SpriteAsset {
}
}//package
Section 143
//LevelMap_s_ui_skeletonPointer (LevelMap_s_ui_skeletonPointer)
package {
import mx.core.*;
public class LevelMap_s_ui_skeletonPointer extends SpriteAsset {
}
}//package
Section 144
//LevelUpScreen (LevelUpScreen)
package {
import flash.events.*;
import flash.display.*;
import caurina.transitions.*;
import flash.text.*;
import events.*;
import flash.filters.*;
public class LevelUpScreen extends Sprite {
private var m_level:int;
private var m_turns:int;
private static const s_ui_levelUP:Class = LevelUpScreen_s_ui_levelUP;
public static const s_kong_logo:Class = LevelUpScreen_s_kong_logo;
public function LevelUpScreen(a_level:int, a_turns:int){
var logo:Sprite;
super();
m_level = a_level;
m_turns = a_turns;
var fader:Sprite = new Sprite();
fader.graphics.beginFill(0, 0.5);
fader.graphics.drawRect(0, 0, Main.GAME_WIDTH, Main.GAME_HEIGHT);
fader.graphics.endFill();
this.addChild(fader);
var bg:Sprite = new s_ui_levelUP();
bg.name = "bg";
bg.x = ((Main.GAME_WIDTH - bg.width) / 2);
bg.y = (-(bg.height) - 10);
bg.cacheAsBitmap = true;
bg.mouseEnabled = false;
fader.addChild(bg);
var tf:CustomTextField = new CustomTextField("", 2289186, 34);
tf.autoSize = TextFieldAutoSize.CENTER;
tf.center();
tf.leading = 13;
tf.mouseEnabled = false;
tf.text = (((("Level " + m_level.toString()) + ":\nEggs hatch in ") + m_turns.toString()) + " turns");
tf.filters = [new GlowFilter(0, 1, 4, 4, 32)];
tf.x = (((bg.width - tf.width) / 2) + 10);
tf.y = (((bg.height - tf.height) / 2) - 2);
bg.addChild(tf);
var click:CustomTextField = new CustomTextField("Click to continue...", 0xFFFFFF, 16);
click.filters = [new GlowFilter(0, 1, 2, 2, 32)];
click.mouseEnabled = false;
click.x = (((bg.width - click.width) / 2) + 4);
click.y = ((tf.y + tf.height) + 8);
bg.addChild(click);
var midY:Number = ((Main.GAME_HEIGHT - bg.height) / 2);
if (SponsorManager.instance.isFreeKongregateVersion()){
logo = new Sprite();
logo.buttonMode = true;
logo.addChild(new s_kong_logo());
logo.x = ((bg.width - logo.width) / 2);
logo.y = (((Main.GAME_HEIGHT - midY) - logo.height) - 8);
bg.addChild(logo);
logo.addEventListener(MouseEvent.CLICK, onLogoClick);
};
fader.buttonMode = true;
fader.useHandCursor = true;
fader.addEventListener(MouseEvent.CLICK, removeLevelEarly);
Tweener.addTween(bg, {y:midY, time:2, transition:"easeOutBounce"});
Tweener.addTween(bg, {y:(-(bg.height) - 10), delay:3.5, time:2, transition:"linear", onComplete:removeLevel, onCompleteParams:[this]});
}
private function removeLevel(a_screen:Sprite):void{
var lusge:LevelUpScreenGoneEvent;
if (a_screen.parent != null){
lusge = new LevelUpScreenGoneEvent(m_level);
a_screen.parent.dispatchEvent(lusge);
a_screen.parent.removeChild(a_screen);
};
}
private function removeLevelEarly(a_event:MouseEvent):void{
var fader:Sprite = (a_event.target as Sprite);
fader.removeEventListener(MouseEvent.CLICK, removeLevelEarly);
var bg:Sprite = (fader.getChildByName("bg") as Sprite);
Tweener.removeTweens(bg);
Tweener.addTween(bg, {y:(-(bg.height) - 10), time:0.2, transition:"linear", onComplete:removeLevel, onCompleteParams:[this]});
}
private function onLogoClick(a_event:MouseEvent):void{
a_event.stopPropagation();
this.parent.addChild(new KongregateConfirmationPopup(true));
}
}
}//package
Section 145
//LevelUpScreen_s_kong_logo (LevelUpScreen_s_kong_logo)
package {
import mx.core.*;
public class LevelUpScreen_s_kong_logo extends BitmapAsset {
}
}//package
Section 146
//LevelUpScreen_s_ui_levelUP (LevelUpScreen_s_ui_levelUP)
package {
import mx.core.*;
public class LevelUpScreen_s_ui_levelUP extends SpriteAsset {
}
}//package
Section 147
//Main (Main)
package {
import flash.events.*;
import com.kongregate.as3.client.events.*;
import flash.display.*;
import caurina.transitions.*;
import com.kongregate.as3.client.*;
import flash.utils.*;
import com.urbansquall.security.*;
import caurina.transitions.properties.*;
import mochi.as3.*;
import flash.ui.*;
public dynamic class Main extends Sprite {
private var m_logo:Sprite;
private static const s_cutie_bg:Class = Main_s_cutie_bg;
public static const GAME_HEIGHT:int = 600;
public static const GAME_WIDTH:int = 700;
public static var s_safeSolManager:SafeSolManager;
public function Main(){
super();
hackPreloader();
}
private function completePreloading():void{
var kongregate:KongregateAPI;
s_safeSolManager = new SafeSolManager("bloody_fun_day", 2300338);
s_safeSolManager.createInt("fixedHighScore", 10000, true);
s_safeSolManager.createInt("unlimitedHighScore", 20000, true);
s_safeSolManager.createBool("seenFirstTimeHelp", false);
s_safeSolManager.createInt("tutorialBadges", 0, true);
s_safeSolManager.createInt("fixedBadges", 0, true);
s_safeSolManager.createInt("unlimitedBadges", 0, true);
s_safeSolManager.createBool("muteBgm", false, true);
s_safeSolManager.createBool("muteSfx", false, true);
var singleton:CutiePopperAnimationFactory = new CutiePopperAnimationFactory();
Tweener.init();
ColorShortcuts.init();
if (SponsorManager.instance.isKongregate()){
kongregate = new KongregateAPI();
kongregate.addEventListener(KongregateEvent.COMPLETE, onKongregateComplete);
this.addChild(kongregate);
} else {
continueLoading();
};
}
private function startAd():void{
}
private function hackPreloader():void{
var mc:MovieClip;
var timer:Timer;
var menu:ContextMenu = new ContextMenu();
menu.hideBuiltInItems();
this.contextMenu = menu;
var sponsor:SponsorManager = SponsorManager.create(SponsorManager.ARMOR_GAMES, this.stage);
var allowedToPlayOffsite:Boolean = sponsor.isKongregate();
if (((!(allowedToPlayOffsite)) && (!(sponsor.isPlayingOnSponsorSite())))){
this.visible = false;
return;
};
m_logo = SponsorManager.instance.createPreloaderClip();
m_logo.buttonMode = true;
m_logo.addEventListener(MouseEvent.CLICK, onLogoClick);
this.addChild(m_logo);
if ((m_logo is MovieClip)){
mc = (m_logo as MovieClip);
this.stage.frameRate = 30;
mc.addFrameScript((mc.totalFrames - 1), stopLogoAnimation);
} else {
timer = new Timer(3000, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
timer.start();
};
if (SponsorManager.instance.centerSplash){
m_logo.x = (GAME_WIDTH / 2);
m_logo.y = (GAME_HEIGHT / 2);
} else {
m_logo.x = ((GAME_WIDTH - m_logo.width) / 2);
m_logo.y = ((GAME_HEIGHT - m_logo.height) / 2);
};
}
private function finishAd():void{
this.stage.stageFocusRect = false;
this.addChild(new s_cutie_bg());
this.addChild(new Menu());
}
private function stopLogoAnimation():void{
if ((m_logo is MovieClip)){
this.stage.frameRate = 120;
(m_logo as MovieClip).stop();
};
this.removeChild(m_logo);
m_logo = null;
completePreloading();
}
private function onKongregateComplete(a_event:KongregateEvent):void{
continueLoading();
}
private function continueLoading():void{
if (((Game.CHEATS_ON) || (!(SponsorManager.instance.allowMochi)))){
finishAd();
return;
};
MochiAd.showInterLevelAd({clip:this, id:"170c7da2e40c6b61", res:"700x600", ad_finished:finishAd, ad_started:startAd});
}
private function onLogoClick(a_event:MouseEvent):void{
SponsorManager.instance.visitSite();
}
private function onTimerComplete(a_event:TimerEvent):void{
var timer:Timer = (a_event.target as Timer);
timer.stop();
timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
stopLogoAnimation();
}
}
}//package
Section 148
//Main_s_cutie_bg (Main_s_cutie_bg)
package {
import mx.core.*;
public class Main_s_cutie_bg extends BitmapAsset {
}
}//package
Section 149
//Menu (Menu)
package {
import flash.events.*;
import flash.display.*;
import com.urbansquall.metronome.*;
import flash.text.*;
import flash.net.*;
import flash.filters.*;
public class Menu extends Sprite {
private var m_unlimitedHighScore:CustomTextField;
private var m_skin:String;
private var m_tutorialBadge:Sprite;
private var m_fixedHighScore:CustomTextField;
private var m_babyReaper:Reaper;
private var m_ticker:Ticker;
private var m_unlimitedBadges:Array;
private var m_reaper:Reaper;
private var m_msReaper:Reaper;
private var m_fixedBadges:Array;
private var m_mode:int;
private static const FIXED_LEVELS:int = 5;
private static const s_title_5level:Class = Menu_s_title_5level;
private static const s_ultd_bronze:Class = Menu_s_ultd_bronze;
private static const s_title_urbansquall:Class = Menu_s_title_urbansquall;
private static const s_title:Class = Menu_s_title;
private static const s_5level_silver:Class = Menu_s_5level_silver;
private static const s_title_nickEsposito:Class = Menu_s_title_nickEsposito;
private static const s_tutorial_gold:Class = Menu_s_tutorial_gold;
private static const s_ultd_gold:Class = Menu_s_ultd_gold;
private static const s_5level_bronze:Class = Menu_s_5level_bronze;
private static const s_bfd_gameonsite:Class = Menu_s_bfd_gameonsite;
private static const s_5level_gold:Class = Menu_s_5level_gold;
private static const s_title_charselect:Class = Menu_s_title_charselect;
private static const s_title_credits:Class = Menu_s_title_credits;
private static const s_title_unlimited:Class = Menu_s_title_unlimited;
private static const s_title_tutorial:Class = Menu_s_title_tutorial;
private static const VERSION:String = "1.0317.A";
private static const s_ultd_silver:Class = Menu_s_ultd_silver;
public function Menu(){
var logo:SimpleButton;
var putThisGame:SimpleButton;
super();
m_mode = FIXED_LEVELS;
m_skin = CutiePopperAnimationFactory.REAPER_SKIN;
m_fixedBadges = [];
m_unlimitedBadges = [];
var header:Sprite = new Sprite();
header.addChild(new s_title());
header.mouseEnabled = false;
header.cacheAsBitmap = true;
this.addChild(header);
var reaperPlate:Sprite = new Sprite();
reaperPlate.name = "reaperPlate";
reaperPlate.buttonMode = true;
reaperPlate.addChild(new s_title_charselect());
reaperPlate.x = 14;
reaperPlate.y = 252;
this.addChild(reaperPlate);
reaperPlate.addEventListener(MouseEvent.CLICK, onReaperClick);
m_reaper = new Reaper(CutiePopperAnimationFactory.REAPER_SKIN);
m_reaper.buttonMode = true;
m_reaper.x = 28;
m_reaper.y = 226;
this.addChild(m_reaper);
m_reaper.addEventListener(MouseEvent.CLICK, onReaperClick);
var msReaperPlate:Sprite = new Sprite();
msReaperPlate.buttonMode = true;
msReaperPlate.name = "msReaperPlate";
msReaperPlate.addChild(new s_title_charselect());
msReaperPlate.x = 114;
msReaperPlate.y = 252;
this.addChild(msReaperPlate);
msReaperPlate.addEventListener(MouseEvent.CLICK, onMsReaperClick);
m_msReaper = new Reaper(CutiePopperAnimationFactory.MS_REAPER_SKIN);
m_msReaper.buttonMode = true;
m_msReaper.x = ((m_reaper.x + m_reaper.width) + 52);
m_msReaper.y = (m_reaper.y - (m_msReaper.height - m_reaper.height));
this.addChild(m_msReaper);
m_msReaper.addEventListener(MouseEvent.CLICK, onMsReaperClick);
var babyReaperPlate:Sprite = new Sprite();
babyReaperPlate.buttonMode = true;
babyReaperPlate.name = "babyReaperPlate";
babyReaperPlate.addChild(new s_title_charselect());
babyReaperPlate.x = 214;
babyReaperPlate.y = 252;
this.addChild(babyReaperPlate);
babyReaperPlate.addEventListener(MouseEvent.CLICK, onBabyReaperClick);
var babySkin:String = CutiePopperAnimationFactory.BABY_REAPER_SKIN;
if (SponsorManager.instance.isFreeKongregateVersion()){
babySkin = "box";
};
m_babyReaper = new Reaper(babySkin);
m_babyReaper.buttonMode = true;
m_babyReaper.x = ((m_msReaper.x + m_msReaper.width) + 52);
m_babyReaper.y = (m_reaper.y - (m_babyReaper.height - m_reaper.height));
this.addChild(m_babyReaper);
m_babyReaper.addEventListener(MouseEvent.CLICK, onBabyReaperClick);
if (SponsorManager.instance.isFreeKongregateVersion()){
m_babyReaper.x = (m_babyReaper.x + 8);
m_babyReaper.y = (m_babyReaper.y - 4);
};
m_ticker = new Ticker();
m_ticker.addEventListener(TickerEvent.TICK, tick);
m_ticker.start();
var tutorialButton:SimpleButton = new RegularButton(s_title_tutorial);
tutorialButton.x = 10;
tutorialButton.y = ((m_reaper.y + m_reaper.height) + 28);
this.addChild(tutorialButton);
tutorialButton.addEventListener(MouseEvent.CLICK, onTutorialClick);
m_tutorialBadge = new Sprite();
m_tutorialBadge.mouseEnabled = false;
m_tutorialBadge.addChild(new s_tutorial_gold());
m_tutorialBadge.x = (tutorialButton.x + 164);
m_tutorialBadge.y = (tutorialButton.y + ((tutorialButton.height - m_tutorialBadge.height) / 2));
this.addChild(m_tutorialBadge);
var playFixedButton:SimpleButton = new RegularButton(s_title_5level);
playFixedButton.x = tutorialButton.x;
playFixedButton.y = ((tutorialButton.y + tutorialButton.height) + 4);
this.addChild(playFixedButton);
playFixedButton.addEventListener(MouseEvent.CLICK, onPlayFixedClick);
var fixedBronze:Sprite = new Sprite();
fixedBronze.mouseEnabled = false;
fixedBronze.addChild(new s_5level_bronze());
fixedBronze.x = m_tutorialBadge.x;
fixedBronze.y = ((playFixedButton.y + 4) + ((playFixedButton.height - fixedBronze.height) / 2));
this.addChild(fixedBronze);
m_fixedBadges.push(fixedBronze);
var fixedSilver:Sprite = new Sprite();
fixedSilver.mouseEnabled = false;
fixedSilver.addChild(new s_5level_silver());
fixedSilver.x = ((fixedBronze.x + fixedBronze.width) + 7);
fixedSilver.y = fixedBronze.y;
this.addChild(fixedSilver);
m_fixedBadges.push(fixedSilver);
var fixedGold:Sprite = new Sprite();
fixedGold.mouseEnabled = false;
fixedGold.addChild(new s_5level_gold());
fixedGold.x = ((fixedSilver.x + fixedSilver.width) + 7);
fixedGold.y = fixedBronze.y;
this.addChild(fixedGold);
m_fixedBadges.push(fixedGold);
var playUnlimitedButton:SimpleButton = new RegularButton(s_title_unlimited);
playUnlimitedButton.x = tutorialButton.x;
playUnlimitedButton.y = ((playFixedButton.y + playFixedButton.height) + 4);
this.addChild(playUnlimitedButton);
playUnlimitedButton.addEventListener(MouseEvent.CLICK, onPlayUnlimitedClick);
var unlimitedBronze:Sprite = new Sprite();
unlimitedBronze.mouseEnabled = false;
unlimitedBronze.addChild(new s_ultd_bronze());
unlimitedBronze.x = m_tutorialBadge.x;
unlimitedBronze.y = ((playUnlimitedButton.y + 4) + ((playUnlimitedButton.height - unlimitedBronze.height) / 2));
this.addChild(unlimitedBronze);
m_unlimitedBadges.push(unlimitedBronze);
var unlimitedSilver:Sprite = new Sprite();
unlimitedSilver.mouseEnabled = false;
unlimitedSilver.addChild(new s_ultd_silver());
unlimitedSilver.x = ((unlimitedBronze.x + unlimitedBronze.width) + 7);
unlimitedSilver.y = unlimitedBronze.y;
this.addChild(unlimitedSilver);
m_unlimitedBadges.push(unlimitedSilver);
var unlimitedGold:Sprite = new Sprite();
unlimitedGold.mouseEnabled = false;
unlimitedGold.addChild(new s_ultd_gold());
unlimitedGold.x = ((unlimitedSilver.x + unlimitedSilver.width) + 7);
unlimitedGold.y = unlimitedBronze.y;
this.addChild(unlimitedGold);
m_unlimitedBadges.push(unlimitedGold);
if (((!((SponsorManager.instance.titleClass == null))) && (((SponsorManager.instance.isFreeKongregateVersion()) || (!(SponsorManager.instance.isKongregate())))))){
logo = new RegularButton(SponsorManager.instance.titleClass);
logo.x = tutorialButton.x;
logo.y = ((playUnlimitedButton.y + playUnlimitedButton.height) + 12);
this.addChild(logo);
logo.addEventListener(MouseEvent.CLICK, onLogoClick);
};
m_fixedHighScore = new CustomTextField("", 0xFFD800, 26);
m_fixedHighScore.mouseEnabled = false;
m_fixedHighScore.autoSize = TextFieldAutoSize.RIGHT;
m_fixedHighScore.filters = [new GlowFilter(0, 1, 2, 2, 32)];
m_fixedHighScore.x = (playFixedButton.width - m_fixedHighScore.width);
m_fixedHighScore.y = ((playFixedButton.y - 6) + ((playFixedButton.height - m_fixedHighScore.height) / 2));
m_fixedHighScore.text = "0";
this.addChild(m_fixedHighScore);
m_unlimitedHighScore = new CustomTextField("", 0xFFD800, 26);
m_unlimitedHighScore.mouseEnabled = false;
m_unlimitedHighScore.autoSize = TextFieldAutoSize.RIGHT;
m_unlimitedHighScore.filters = [new GlowFilter(0, 1, 2, 2, 32)];
m_unlimitedHighScore.x = (playUnlimitedButton.width - m_unlimitedHighScore.width);
m_unlimitedHighScore.y = ((playUnlimitedButton.y - 6) + ((playUnlimitedButton.height - m_unlimitedHighScore.height) / 2));
m_unlimitedHighScore.text = "0";
this.addChild(m_unlimitedHighScore);
var credits:Sprite = new Sprite();
credits.addChild(new s_title_credits());
this.addChild(credits);
var espoWrapper:Sprite = new Sprite();
var espo:SimpleButton = new RegularButton(s_title_nickEsposito);
espoWrapper.addChild(espo);
espoWrapper.x = 42;
espoWrapper.y = 127;
credits.addChild(espoWrapper);
espo.enabled = SponsorManager.instance.allowNickClick;
espo.addEventListener(MouseEvent.CLICK, onEspoClick);
if (SponsorManager.instance.allowNickClick){
espoWrapper.graphics.lineStyle(1, 0xFFFFFF);
espoWrapper.graphics.moveTo(0, (espoWrapper.height - 2));
espoWrapper.graphics.lineTo(espoWrapper.width, (espoWrapper.height - 2));
espoWrapper.graphics.lineStyle();
};
var urbansquall:SimpleButton = new RegularButton(s_title_urbansquall);
urbansquall.x = (credits.width - 18);
urbansquall.y = 10;
credits.addChildAt(urbansquall, 0);
urbansquall.enabled = SponsorManager.instance.allowUrbansquallClick;
urbansquall.addEventListener(MouseEvent.CLICK, onUrbansquallClick);
credits.x = ((Main.GAME_WIDTH - credits.width) - 8);
credits.y = ((Main.GAME_HEIGHT - credits.height) - 8);
if (SponsorManager.instance.isKongregate()){
putThisGame = new RegularButton(s_bfd_gameonsite);
addChild(putThisGame);
putThisGame.x = (this.width - putThisGame.width);
putThisGame.addEventListener(MouseEvent.CLICK, clickPutThisGameOnYourSite);
};
var version:TextField = new TextField();
version.autoSize = TextFieldAutoSize.LEFT;
version.text = VERSION;
version.textColor = 0xFFFFFF;
version.setTextFormat(new TextFormat(null, 9));
version.x = (Main.GAME_WIDTH - version.width);
version.y = (Main.GAME_HEIGHT - version.height);
this.addChild(version);
refreshBadges();
updateHiScore();
updatePlates();
}
private function onTutorialClick(a_event:MouseEvent):void{
m_mode = FIXED_LEVELS;
startGame(true);
}
private function onLogoClick(a_event:MouseEvent):void{
SponsorManager.instance.visitSite();
}
private function onBabyReaperClick(a_event:MouseEvent):void{
if (SponsorManager.instance.isFreeKongregateVersion()){
this.addChild(new KongregateConfirmationPopup());
return;
};
m_skin = CutiePopperAnimationFactory.BABY_REAPER_SKIN;
updatePlates();
}
private function onPlayFixedClick(a_event:MouseEvent):void{
m_mode = FIXED_LEVELS;
startGame(false);
}
private function updateHiScore():void{
m_fixedHighScore.text = Main.s_safeSolManager.readInt("fixedHighScore").toString();
m_unlimitedHighScore.text = Main.s_safeSolManager.readInt("unlimitedHighScore").toString();
}
private function updatePlates():void{
if (m_skin == CutiePopperAnimationFactory.REAPER_SKIN){
this.getChildByName("reaperPlate").alpha = 1;
this.getChildByName("msReaperPlate").alpha = 0.01;
this.getChildByName("babyReaperPlate").alpha = 0.01;
} else {
if (m_skin == CutiePopperAnimationFactory.MS_REAPER_SKIN){
this.getChildByName("reaperPlate").alpha = 0.01;
this.getChildByName("msReaperPlate").alpha = 1;
this.getChildByName("babyReaperPlate").alpha = 0.01;
} else {
if (m_skin == CutiePopperAnimationFactory.BABY_REAPER_SKIN){
this.getChildByName("reaperPlate").alpha = 0.01;
this.getChildByName("msReaperPlate").alpha = 0.01;
this.getChildByName("babyReaperPlate").alpha = 1;
};
};
};
}
private function onPlayUnlimitedClick(a_event:MouseEvent):void{
if (((SponsorManager.instance.isFreeKongregateVersion()) && (!(SponsorManager.instance.isNgHack())))){
this.addChild(new KongregateConfirmationPopup());
return;
};
m_mode = 0;
startGame(false);
}
private function onMsReaperClick(a_event:MouseEvent):void{
m_skin = CutiePopperAnimationFactory.MS_REAPER_SKIN;
updatePlates();
}
private function onReaperClick(a_event:MouseEvent):void{
m_skin = CutiePopperAnimationFactory.REAPER_SKIN;
updatePlates();
}
private function tick(a_event:TickerEvent):void{
m_reaper.tick(a_event.interval);
m_msReaper.tick(a_event.interval);
m_babyReaper.tick(a_event.interval);
}
private function onGameOver(a_playAgain:Boolean):void{
m_ticker.start();
this.parent.removeChildAt((this.parent.numChildren - 1));
this.visible = true;
updateHiScore();
refreshBadges();
if (a_playAgain){
startGame(false);
};
}
private function refreshBadges():void{
var fade:Number = 0.1;
m_tutorialBadge.alpha = ((Main.s_safeSolManager.readInt("tutorialBadges"))>0) ? 1 : fade;
var fixedBadgesCount:int = Main.s_safeSolManager.readInt("fixedBadges");
m_fixedBadges[0].alpha = ((fixedBadgesCount)>0) ? 1 : fade;
m_fixedBadges[1].alpha = ((fixedBadgesCount)>1) ? 1 : fade;
m_fixedBadges[2].alpha = ((fixedBadgesCount)>2) ? 1 : fade;
var unlimitedBadgesCount:int = Main.s_safeSolManager.readInt("unlimitedBadges");
m_unlimitedBadges[0].alpha = ((unlimitedBadgesCount)>0) ? 1 : fade;
m_unlimitedBadges[1].alpha = ((unlimitedBadgesCount)>1) ? 1 : fade;
m_unlimitedBadges[2].alpha = ((unlimitedBadgesCount)>2) ? 1 : fade;
}
private function clickPutThisGameOnYourSite(a_event:Event):void{
navigateToURL(new URLRequest("http://www.kongregate.com/games_for_your_site"), "_blank");
}
private function startGame(a_isTutorial:Boolean):void{
m_ticker.stop();
var g:Game = new Game(9, 8, onGameOver, m_mode, m_skin, a_isTutorial);
this.parent.addChild(g);
this.visible = false;
}
private function onUrbansquallClick(a_event:MouseEvent):void{
SponsorManager.instance.visitUrbansquall();
}
private function onEspoClick(a_event:MouseEvent):void{
SponsorManager.instance.visitMusic();
}
}
}//package
Section 150
//Menu_s_5level_bronze (Menu_s_5level_bronze)
package {
import mx.core.*;
public class Menu_s_5level_bronze extends BitmapAsset {
}
}//package
Section 151
//Menu_s_5level_gold (Menu_s_5level_gold)
package {
import mx.core.*;
public class Menu_s_5level_gold extends BitmapAsset {
}
}//package
Section 152
//Menu_s_5level_silver (Menu_s_5level_silver)
package {
import mx.core.*;
public class Menu_s_5level_silver extends BitmapAsset {
}
}//package
Section 153
//Menu_s_bfd_gameonsite (Menu_s_bfd_gameonsite)
package {
import mx.core.*;
public class Menu_s_bfd_gameonsite extends BitmapAsset {
}
}//package
Section 154
//Menu_s_title (Menu_s_title)
package {
import mx.core.*;
public class Menu_s_title extends BitmapAsset {
}
}//package
Section 155
//Menu_s_title_5level (Menu_s_title_5level)
package {
import mx.core.*;
public class Menu_s_title_5level extends BitmapAsset {
}
}//package
Section 156
//Menu_s_title_charselect (Menu_s_title_charselect)
package {
import mx.core.*;
public class Menu_s_title_charselect extends BitmapAsset {
}
}//package
Section 157
//Menu_s_title_credits (Menu_s_title_credits)
package {
import mx.core.*;
public class Menu_s_title_credits extends BitmapAsset {
}
}//package
Section 158
//Menu_s_title_nickEsposito (Menu_s_title_nickEsposito)
package {
import mx.core.*;
public class Menu_s_title_nickEsposito extends BitmapAsset {
}
}//package
Section 159
//Menu_s_title_tutorial (Menu_s_title_tutorial)
package {
import mx.core.*;
public class Menu_s_title_tutorial extends BitmapAsset {
}
}//package
Section 160
//Menu_s_title_unlimited (Menu_s_title_unlimited)
package {
import mx.core.*;
public class Menu_s_title_unlimited extends BitmapAsset {
}
}//package
Section 161
//Menu_s_title_urbansquall (Menu_s_title_urbansquall)
package {
import mx.core.*;
public class Menu_s_title_urbansquall extends BitmapAsset {
}
}//package
Section 162
//Menu_s_tutorial_gold (Menu_s_tutorial_gold)
package {
import mx.core.*;
public class Menu_s_tutorial_gold extends BitmapAsset {
}
}//package
Section 163
//Menu_s_ultd_bronze (Menu_s_ultd_bronze)
package {
import mx.core.*;
public class Menu_s_ultd_bronze extends BitmapAsset {
}
}//package
Section 164
//Menu_s_ultd_gold (Menu_s_ultd_gold)
package {
import mx.core.*;
public class Menu_s_ultd_gold extends BitmapAsset {
}
}//package
Section 165
//Menu_s_ultd_silver (Menu_s_ultd_silver)
package {
import mx.core.*;
public class Menu_s_ultd_silver extends BitmapAsset {
}
}//package
Section 166
//PowerButton (PowerButton)
package {
import flash.display.*;
import flash.geom.*;
import powers.*;
import caurina.transitions.*;
import flash.text.*;
import com.urbansquall.security.*;
import flash.filters.*;
public class PowerButton extends SimpleButton {
private var m_maskHeight:Number;
private var m_costText:CustomTextField;
private var m_power:BasicAttack;
private var m_soul:CutieSoul;
private var m_currentSouls:safeint;
private var m_mask:Sprite;
private var m_cost:safeint;
private static const s_button_mask:Class = PowerButton_s_button_mask;
private static var s_firstCharge:Boolean = true;
public function PowerButton(a_imgClass:Class, a_power:BasicAttack){
super();
m_power = a_power;
m_cost = new safeint(m_power.cost);
m_currentSouls = new safeint(m_power.cost);
var up:Sprite = new Sprite();
up.addChild(new (a_imgClass));
up.cacheAsBitmap = true;
up.filters = [new DropShadowFilter(4, 45, 0, 0.8)];
this.upState = up;
var over:Sprite = new Sprite();
over.addChild(new (a_imgClass));
over.transform.colorTransform = new ColorTransform(1.2, 1.2, 1.2);
over.cacheAsBitmap = true;
over.filters = [new DropShadowFilter(4, 45, 0, 0.8)];
this.overState = over;
var down:Sprite = new Sprite();
down.x = 2;
down.y = 2;
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;
m_mask = new Sprite();
m_mask.cacheAsBitmap = true;
up.addChild(m_mask);
var gfx:Graphics = m_mask.graphics;
gfx.clear();
gfx.beginFill(0, 0.8);
gfx.lineStyle(1, 0);
gfx.drawRect(0, 0, this.width, this.height);
gfx.lineStyle();
gfx.endFill();
var buttonMask:Sprite = new Sprite();
buttonMask.addChild(new s_button_mask());
buttonMask.cacheAsBitmap = true;
up.addChild(buttonMask);
m_mask.mask = buttonMask;
m_maskHeight = m_mask.height;
m_costText = new CustomTextField("", 0xFFFFFF, 20);
m_costText.autoSize = TextFieldAutoSize.CENTER;
m_costText.center();
m_costText.leading = -2;
m_costText.filters = [new GlowFilter(0, 1, 2, 2, 32)];
up.addChild(m_costText);
m_soul = new CutieSoul(m_power.color);
m_soul.mouseEnabled = false;
m_soul.x = (up.width / 2);
m_soul.y = (up.height - 22);
if (m_power.color != Game.RED_CUTIE){
up.addChild(m_soul);
};
updateText();
}
public function tryEnable():void{
this.enabled = isCharged;
}
public function recharge(a_soulsGained:int):void{
if (a_soulsGained > 0){
m_currentSouls.val = (m_currentSouls.val + a_soulsGained);
};
updateText();
var percent:Number = Math.min((m_currentSouls.val / m_cost.val), 1);
if (m_cost.val == 0){
percent = 1;
};
this.enabled = (percent >= 1);
if (((this.enabled) && ((m_cost.val > 0)))){
};
var newY:Number = (m_maskHeight * percent);
Tweener.addTween(m_mask, {y:newY, height:(m_maskHeight - newY), time:0.5});
}
public function expend():void{
m_currentSouls.val = 0;
recharge(0);
updateText();
}
public function get isCharged():Boolean{
var percent:Number = Math.min((m_currentSouls.val / m_cost.val), 1);
if (m_cost.val == 0){
percent = 1;
};
return ((percent >= 1));
}
private function updateText():void{
var left:int = (m_cost.val - m_currentSouls.val);
if (left > 0){
m_costText.size = 20;
m_costText.textColor = 0xFFFFFF;
m_costText.text = (("Get\n" + left.toString()) + "\nmore");
m_costText.visible = true;
m_soul.visible = true;
} else {
if (m_cost.val > 0){
m_costText.size = 16;
m_costText.textColor = 2289186;
m_costText.text = "Click to\nactivate !";
m_costText.visible = false;
m_soul.visible = false;
};
};
m_costText.x = ((m_mask.width - m_costText.width) / 2);
m_costText.y = 6;
}
}
}//package
Section 167
//PowerButton_s_button_mask (PowerButton_s_button_mask)
package {
import mx.core.*;
import flash.utils.*;
public class PowerButton_s_button_mask extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function PowerButton_s_button_mask(){
dataClass = PowerButton_s_button_mask_dataClass;
super();
initialWidth = (1920 / 20);
initialHeight = (2080 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 168
//PowerButton_s_button_mask_dataClass (PowerButton_s_button_mask_dataClass)
package {
import mx.core.*;
public class PowerButton_s_button_mask_dataClass extends ByteArrayAsset {
}
}//package
Section 169
//PromptPopup (PromptPopup)
package {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
public class PromptPopup extends Sprite {
private var m_button1:TextButton;
private var m_button2:TextButton;
private var m_button1Callback:Function;
private var m_button2Callback:Function;
private var m_popup:Sprite;
public function PromptPopup(a_title:String, a_message:String, a_button1:String, a_button2:String, a_button1Callback:Function, a_button2Callback:Function){
super();
m_button1Callback = a_button1Callback;
m_button2Callback = a_button2Callback;
this.cacheAsBitmap = true;
var gfx:Graphics = this.graphics;
gfx.beginFill(0, 0.5);
gfx.drawRect(0, 0, Main.GAME_WIDTH, Main.GAME_HEIGHT);
gfx.endFill();
m_popup = new Sprite();
m_popup.addChild(new TutorialPopup.s_ui_popup());
m_popup.x = ((this.width - m_popup.width) / 2);
m_popup.y = (((this.height - m_popup.height) / 2) - 35);
this.addChild(m_popup);
var title:CustomTextField = new CustomTextField(a_title, 0xFFFFFF, 30);
title.filters = [new GlowFilter(0, 1, 2, 2, 32)];
title.width = (m_popup.width - 50);
title.x = ((m_popup.width - title.width) / 2);
title.y = 25;
m_popup.addChild(title);
var message:CustomTextField = new CustomTextField(a_message, 0xFFFFFF, 20);
message.filters = [new GlowFilter(0, 1, 2, 2, 32)];
message.wordWrap = true;
message.width = (m_popup.width - 50);
message.x = 27;
message.y = ((title.y + title.height) + 8);
m_popup.addChild(message);
m_button1 = new TextButton(a_button1);
m_button1.x = (23 + 30);
m_button1.y = ((m_popup.height - m_button1.height) - 40);
m_button1.addEventListener(MouseEvent.CLICK, onButton1Click);
m_popup.addChild(m_button1);
m_button2 = new TextButton(a_button2);
m_button2.x = (((m_popup.width - m_button2.width) - 23) - 30);
m_button2.y = ((m_popup.height - m_button2.height) - 40);
m_button2.addEventListener(MouseEvent.CLICK, onButton2Click);
m_popup.addChild(m_button2);
}
private function cleanUp():void{
m_button1.removeEventListener(MouseEvent.CLICK, onButton1Click);
m_button2.removeEventListener(MouseEvent.CLICK, onButton2Click);
this.parent.removeChild(this);
}
private function onButton2Click(a_event:MouseEvent):void{
cleanUp();
if (m_button2Callback != null){
m_button2Callback();
};
}
private function onButton1Click(a_event:MouseEvent):void{
cleanUp();
if (m_button1Callback != null){
m_button1Callback();
};
}
}
}//package
Section 170
//QuitPopup (QuitPopup)
package {
public class QuitPopup extends PromptPopup {
private var m_quitFunc:Function;
public function QuitPopup(a_quitFunc:Function){
m_quitFunc = a_quitFunc;
super("Quit the game ?", "Are you sure you want to end your game?", "Quit", "Play", onQuitClick, onPlayClick);
}
private function onQuitClick():void{
m_quitFunc();
}
private function onPlayClick():void{
}
}
}//package
Section 171
//Reaper (Reaper)
package {
import flash.display.*;
import com.urbansquall.ginger.*;
public class Reaper extends Sprite {
private const REAPER_ROW:int = 4;
private const REAPER_COL:int = 4;
public var col:int;
private var m_wrapper:Sprite;
public var animationController:AnimationPlayer;// = null
private var m_skin:String;
public var row:int;
public function Reaper(a_skin:String){
super();
col = REAPER_COL;
row = REAPER_ROW;
m_skin = a_skin;
m_wrapper = new Sprite();
m_wrapper.mouseEnabled = false;
animationController = CutiePopperAnimationFactory.instance.instantiate(a_skin);
animationController.addEventListener(AnimationEvent.CHANGE, changeAnimation);
animationController.play("idle");
m_wrapper.addChild(animationController);
m_wrapper.x = (Game.HEX_SIZE / 2);
m_wrapper.y = (Game.HEX_SIZE / 2);
this.addChild(m_wrapper);
}
private function changeAnimation(a_animationEvent:AnimationEvent):void{
if (a_animationEvent.begin){
if (a_animationEvent.animationID == "idle"){
animationController.y = -12;
if (m_skin == CutiePopperAnimationFactory.REAPER_SKIN){
animationController.x = -7;
} else {
if (m_skin == CutiePopperAnimationFactory.MS_REAPER_SKIN){
animationController.x = 7;
} else {
if (m_skin == CutiePopperAnimationFactory.BABY_REAPER_SKIN){
animationController.x = 4;
} else {
if (m_skin == "box"){
animationController.x = -5;
animationController.y = -6;
};
};
};
};
} else {
if (a_animationEvent.animationID == "attack"){
if (m_skin == CutiePopperAnimationFactory.REAPER_SKIN){
animationController.x = 1;
animationController.y = -8;
} else {
if (m_skin == CutiePopperAnimationFactory.MS_REAPER_SKIN){
animationController.x = 3;
animationController.y = -11;
} else {
if (m_skin == CutiePopperAnimationFactory.BABY_REAPER_SKIN){
animationController.x = -1;
animationController.y = -9;
};
};
};
};
};
};
}
public function play(a_name:String, a_facingDir:int):void{
m_wrapper.scaleX = a_facingDir;
animationController.play(a_name);
}
public function tick(a_deltaTime:Number):void{
if (animationController != null){
animationController.update(a_deltaTime);
};
}
}
}//package
Section 172
//ReaperData (ReaperData)
package {
import flash.display.*;
import com.urbansquall.shex.*;
public class ReaperData extends HexData {
private var m_reaper:Sprite;
private var m_bg:Sprite;
public static const NORMAL_FPS:int = 10;
public function ReaperData(){
super();
m_bg = new Sprite();
var halfSize:int = (Game.HEX_SIZE / 2);
var fourthSize:int = (halfSize / 2);
var g:Graphics = m_bg.graphics;
g.beginFill(0x333333, 0.8);
g.moveTo(halfSize, 2);
g.lineTo((Game.HEX_SIZE - 2), fourthSize);
g.lineTo((Game.HEX_SIZE - 2), (fourthSize * 3));
g.lineTo(halfSize, (Game.HEX_SIZE - 2));
g.lineTo(2, (fourthSize * 3));
g.lineTo(2, fourthSize);
g.lineTo(halfSize, 2);
g.endFill();
}
}
}//package
Section 173
//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.3, 1.3, 1.3);
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();
}
public function toggleOverThings():void{
var t:Sprite;
for each (t in m_overThings) {
t.visible = !(t.visible);
};
}
}
}//package
Section 174
//SoundLibrary (SoundLibrary)
package {
public class SoundLibrary {
public static const s_fireball:Class = SoundLibrary_s_fireball;
public static const s_s14:Class = SoundLibrary_s_s14;
public static const s_s15:Class = SoundLibrary_s_s15;
public static const s_s16:Class = SoundLibrary_s_s16;
public static const eggs:Array = [new s_egg1(), new s_egg2(), new s_egg3()];
public static const s_squish02:Class = SoundLibrary_s_squish02;
public static const s_egg1:Class = SoundLibrary_s_egg1;
public static const s_egg2:Class = SoundLibrary_s_egg2;
public static const s_squish01:Class = SoundLibrary_s_squish01;
public static const s_woosh:Class = SoundLibrary_s_woosh;
public static const s_egg3:Class = SoundLibrary_s_egg3;
public static const screams:Array = [new s_s06(), new s_s07(), new s_s08(), new s_s14(), new s_s15(), new s_s16(), new s_squish01(), new s_squish02()];
public static const s_transform:Class = SoundLibrary_s_transform;
public static const screamVol:Array = [0.5, 0.5, 0.6, 0.4, 0.7, 0.8, 1, 1];
public static const s_s06:Class = SoundLibrary_s_s06;
public static const s_s07:Class = SoundLibrary_s_s07;
public static const s_s08:Class = SoundLibrary_s_s08;
public static const s_low_health:Class = SoundLibrary_s_low_health;
public static const s_oh_noo:Class = SoundLibrary_s_oh_noo;
public static const s_bgm:Class = SoundLibrary_s_bgm;
public static const s_laser:Class = SoundLibrary_s_laser;
public function SoundLibrary(){
super();
}
}
}//package
Section 175
//SoundLibrary_s_bgm (SoundLibrary_s_bgm)
package {
import mx.core.*;
public class SoundLibrary_s_bgm extends SoundAsset {
}
}//package
Section 176
//SoundLibrary_s_egg1 (SoundLibrary_s_egg1)
package {
import mx.core.*;
public class SoundLibrary_s_egg1 extends SoundAsset {
}
}//package
Section 177
//SoundLibrary_s_egg2 (SoundLibrary_s_egg2)
package {
import mx.core.*;
public class SoundLibrary_s_egg2 extends SoundAsset {
}
}//package
Section 178
//SoundLibrary_s_egg3 (SoundLibrary_s_egg3)
package {
import mx.core.*;
public class SoundLibrary_s_egg3 extends SoundAsset {
}
}//package
Section 179
//SoundLibrary_s_fireball (SoundLibrary_s_fireball)
package {
import mx.core.*;
public class SoundLibrary_s_fireball extends SoundAsset {
}
}//package
Section 180
//SoundLibrary_s_laser (SoundLibrary_s_laser)
package {
import mx.core.*;
public class SoundLibrary_s_laser extends SoundAsset {
}
}//package
Section 181
//SoundLibrary_s_low_health (SoundLibrary_s_low_health)
package {
import mx.core.*;
public class SoundLibrary_s_low_health extends SoundAsset {
}
}//package
Section 182
//SoundLibrary_s_oh_noo (SoundLibrary_s_oh_noo)
package {
import mx.core.*;
public class SoundLibrary_s_oh_noo extends SoundAsset {
}
}//package
Section 183
//SoundLibrary_s_s06 (SoundLibrary_s_s06)
package {
import mx.core.*;
public class SoundLibrary_s_s06 extends SoundAsset {
}
}//package
Section 184
//SoundLibrary_s_s07 (SoundLibrary_s_s07)
package {
import mx.core.*;
public class SoundLibrary_s_s07 extends SoundAsset {
}
}//package
Section 185
//SoundLibrary_s_s08 (SoundLibrary_s_s08)
package {
import mx.core.*;
public class SoundLibrary_s_s08 extends SoundAsset {
}
}//package
Section 186
//SoundLibrary_s_s14 (SoundLibrary_s_s14)
package {
import mx.core.*;
public class SoundLibrary_s_s14 extends SoundAsset {
}
}//package
Section 187
//SoundLibrary_s_s15 (SoundLibrary_s_s15)
package {
import mx.core.*;
public class SoundLibrary_s_s15 extends SoundAsset {
}
}//package
Section 188
//SoundLibrary_s_s16 (SoundLibrary_s_s16)
package {
import mx.core.*;
public class SoundLibrary_s_s16 extends SoundAsset {
}
}//package
Section 189
//SoundLibrary_s_squish01 (SoundLibrary_s_squish01)
package {
import mx.core.*;
public class SoundLibrary_s_squish01 extends SoundAsset {
}
}//package
Section 190
//SoundLibrary_s_squish02 (SoundLibrary_s_squish02)
package {
import mx.core.*;
public class SoundLibrary_s_squish02 extends SoundAsset {
}
}//package
Section 191
//SoundLibrary_s_transform (SoundLibrary_s_transform)
package {
import mx.core.*;
public class SoundLibrary_s_transform extends SoundAsset {
}
}//package
Section 192
//SoundLibrary_s_woosh (SoundLibrary_s_woosh)
package {
import mx.core.*;
public class SoundLibrary_s_woosh extends SoundAsset {
}
}//package
Section 193
//SponsorManager (SponsorManager)
package {
import flash.display.*;
import flash.net.*;
public class SponsorManager {
private var m_allowUrbansquallClick:Boolean;
private var m_allowMochi:Boolean;
private var m_titleClass:Class;
private var m_clickUrl:String;
private var m_stage:Stage;
private var m_preloaderClass:Class;
private var m_centerSplash:Boolean;
private var m_urls:Array;
private var m_sponsorKey:String;
private var m_allowNickClick:Boolean;
private static const s_kong_preloader:Class = SponsorManager_s_kong_preloader;
public static const ARMOR_GAMES:String = "ag";
private static const s_andkon_logo:Class = SponsorManager_s_andkon_logo;
private static const s_title_kong:Class = SponsorManager_s_title_kong;
public static const ANDKON:String = "andkon";
private static const s_ag_intro_mc:Class = SponsorManager_s_ag_intro_mc;
private static const s_armor_logo:Class = SponsorManager_s_armor_logo;
public static const KONGREGATE:String = "kong";
private static var s_instance:SponsorManager;
public function SponsorManager(a_sponsorKey:String, a_stage:Stage){
super();
m_sponsorKey = a_sponsorKey;
m_stage = a_stage;
m_urls = [];
switch (m_sponsorKey){
case ARMOR_GAMES:
m_urls.push("armorgames.com");
m_preloaderClass = s_ag_intro_mc;
m_titleClass = s_armor_logo;
m_centerSplash = true;
m_clickUrl = "http://www.armorgames.com";
m_allowUrbansquallClick = true;
m_allowNickClick = false;
m_allowMochi = false;
break;
case ANDKON:
m_urls.push("andkon.com");
m_preloaderClass = s_andkon_logo;
m_titleClass = null;
m_centerSplash = false;
m_clickUrl = "http://www.andkon.com/arcade/";
m_allowUrbansquallClick = true;
m_allowNickClick = false;
m_allowMochi = false;
break;
case KONGREGATE:
default:
m_urls.push("kongregate.com");
m_preloaderClass = s_kong_preloader;
m_titleClass = s_title_kong;
m_centerSplash = true;
m_clickUrl = "http://www.kongregate.com/games/urbansquall/bloody-fun-day/?gamereferral=bloody-fun-day";
m_allowUrbansquallClick = true;
m_allowNickClick = true;
m_allowMochi = true;
break;
};
}
public function get titleClass():Class{
return (m_titleClass);
}
public function visitSite():void{
navigateToURL(new URLRequest(m_clickUrl), "_blank");
}
public function isNgHack():Boolean{
return ((getDomain() == "ungrounded.net"));
}
public function get clickUrl():String{
return (m_clickUrl);
}
public function createPreloaderClip():Sprite{
var wrap:Sprite;
if (m_preloaderClass == null){
return (null);
};
var disp:DisplayObject = new m_preloaderClass();
if ((disp is Bitmap)){
wrap = new Sprite();
wrap.addChild(disp);
return (wrap);
};
return ((disp as Sprite));
}
private function hasKongregateFlashVar():Boolean{
if (m_stage.root.loaderInfo.parameters == null){
return (false);
};
return ((m_stage.root.loaderInfo.parameters.kongregate == "true"));
}
public function get allowUrbansquallClick():Boolean{
return (m_allowUrbansquallClick);
}
public function visitMusic():void{
if (!m_allowNickClick){
return;
};
navigateToURL(new URLRequest("http://www.myspace.com/alphastudionj"), "_blank");
}
public function get allowNickClick():Boolean{
return (m_allowNickClick);
}
public function isPlayingOnSponsorSite():Boolean{
var domain:String = getDomain();
var i:int;
while (i < m_urls.length) {
if (domain == m_urls[i]){
if (isKongregate()){
return (hasKongregateFlashVar());
};
return (true);
};
i++;
};
return (false);
}
public function isKongregate():Boolean{
return ((m_sponsorKey == KONGREGATE));
}
public function isFreeKongregateVersion():Boolean{
return (((!(Game.CHEATS_ON)) && (((isKongregate()) && (!(isPlayingOnSponsorSite()))))));
}
public function visitUrbansquall():void{
if (!m_allowUrbansquallClick){
return;
};
navigateToURL(new URLRequest("http://www.urbansquall.com/?referrer=bloody-fun-day"), "_blank");
}
public function get allowMochi():Boolean{
return (m_allowMochi);
}
private function getDomain():String{
var url:String = m_stage.root.loaderInfo.url;
var urlStart:int = (url.indexOf("://") + 3);
var urlEnd:int = url.indexOf("/", urlStart);
var domain:String = url.substring(urlStart, urlEnd);
var lastDot:int = (domain.lastIndexOf(".") - 1);
var pfixEnd:int = (domain.lastIndexOf(".", lastDot) + 1);
domain = domain.substring(pfixEnd, domain.length);
return (domain);
}
public function get centerSplash():Boolean{
return (m_centerSplash);
}
public static function get instance():SponsorManager{
return (s_instance);
}
public static function create(a_sponsorKey:String, a_stage:Stage):SponsorManager{
s_instance = new SponsorManager(a_sponsorKey, a_stage);
return (s_instance);
}
}
}//package
Section 194
//SponsorManager_s_ag_intro_mc (SponsorManager_s_ag_intro_mc)
package {
import mx.core.*;
public class SponsorManager_s_ag_intro_mc extends MovieClipAsset {
}
}//package
Section 195
//SponsorManager_s_andkon_logo (SponsorManager_s_andkon_logo)
package {
import mx.core.*;
public class SponsorManager_s_andkon_logo extends BitmapAsset {
}
}//package
Section 196
//SponsorManager_s_armor_logo (SponsorManager_s_armor_logo)
package {
import mx.core.*;
public class SponsorManager_s_armor_logo extends BitmapAsset {
}
}//package
Section 197
//SponsorManager_s_kong_preloader (SponsorManager_s_kong_preloader)
package {
import mx.core.*;
public class SponsorManager_s_kong_preloader extends MovieClipAsset {
}
}//package
Section 198
//SponsorManager_s_title_kong (SponsorManager_s_title_kong)
package {
import mx.core.*;
public class SponsorManager_s_title_kong extends BitmapAsset {
}
}//package
Section 199
//TextButton (TextButton)
package {
import flash.display.*;
import flash.filters.*;
public class TextButton extends RegularButton {
private static const s_ui_button:Class = TextButton_s_ui_button;
public function TextButton(a_text:String){
super(s_ui_button);
var upTf:CustomTextField = new CustomTextField(a_text, 0xFFFFFF, 24);
upTf.x = ((this.upState.width - upTf.width) / 2);
upTf.y = ((this.upState.height - upTf.height) / 2);
upTf.filters = [new GlowFilter(0, 1, 2, 2, 32)];
(this.upState as Sprite).addChild(upTf);
var overTf:CustomTextField = new CustomTextField(a_text, 0xFFFFFF, 24);
overTf.x = ((this.overState.width - overTf.width) / 2);
overTf.y = ((this.overState.height - overTf.height) / 2);
overTf.filters = [new GlowFilter(0, 1, 2, 2, 32)];
(this.overState as Sprite).addChild(overTf);
var downTf:CustomTextField = new CustomTextField(a_text, 0xFFFFFF, 24);
downTf.x = ((this.downState.width - downTf.width) / 2);
downTf.y = ((this.downState.height - downTf.height) / 2);
downTf.filters = [new GlowFilter(0, 1, 2, 2, 32)];
(this.downState as Sprite).addChild(downTf);
}
}
}//package
Section 200
//TextButton_s_ui_button (TextButton_s_ui_button)
package {
import mx.core.*;
public class TextButton_s_ui_button extends SpriteAsset {
}
}//package
Section 201
//TutorialManager (TutorialManager)
package {
import flash.display.*;
import caurina.transitions.*;
import events.*;
import flash.filters.*;
public class TutorialManager extends Sprite {
private var m_game:Game;
private var m_currentCol:int;
private var m_arrow:Sprite;
private var m_currentRow:int;
private static const s_arrow:Class = TutorialManager_s_arrow;
public function TutorialManager(a_game:Game){
super();
m_game = a_game;
resetChosenHex();
this.mouseEnabled = false;
m_arrow = new Sprite();
m_arrow.mouseEnabled = false;
m_arrow.filters = [new GlowFilter(0xFFD800)];
var arrowInner:Sprite = new Sprite();
arrowInner.addChild(new s_arrow());
arrowInner.x = -11;
arrowInner.y = -(arrowInner.height);
m_arrow.addChild(arrowInner);
this.addChild(m_arrow);
m_game.addEventListener(TutorialEvent.LEVEL_UP_SCREEN_GONE, onLevel1);
}
private function onPopupCloseEnda(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupCloseEnda);
var tut:TutorialPopup = new TutorialPopup("Graduation", "This is the end of the tutorial. It's time for you to kill some cuties on your own. Have a Bloody Fun Day!");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupCloseEndb);
}
private function resetChosenHex():void{
m_currentCol = -1;
m_currentRow = -1;
}
private function onPopupClose3c(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose3c);
m_currentCol = 6;
m_currentRow = 3;
m_game.addEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex3);
m_game.enableInput();
showArrowAt(486, 237);
}
private function onPopupClose6c(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose6c);
m_currentCol = 3;
m_currentRow = 4;
m_game.addEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex6);
m_game.enableInput();
showArrowAt(338, 282);
}
private function onPopupClose3b(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose3b);
var tut:TutorialPopup = new TutorialPopup("Objective:", "Kill this group of yellow cuties.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose3c);
}
private function onPopupClose1a(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose1a);
var tut:TutorialPopup = new TutorialPopup("Objective:", "You can kill adjacent groups of cuties by clicking on them. Click on this blue cutie to kill him.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose1b);
}
private function onChooseHex8(a_event:ChooseHexEvent):void{
m_game.removeEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex8);
hideArrow();
}
private function onPopupClose7a(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose7a);
var tut:TutorialPopup = new TutorialPopup("Objective:", "Kill this group of yellow cuties.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose7b);
}
private function onJumpSlashSelect(a_event:SpecialPowerSelectEvent):void{
hideArrow();
m_game.removeEventListener(TutorialEvent.SPECIAL_POWER_SELECT, onJumpSlashSelect);
m_game.disableInput();
var tut:TutorialPopup = new TutorialPopup("Eggs Everywhere!", "Sometimes you need to crush eggs that are in your way. This makes you lose points and prevents eggs from hatching, so you should avoid crushing them.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose6b);
}
private function upTween():void{
Tweener.addTween(m_arrow, {x:(m_arrow.x - 2), y:(m_arrow.y - 10), time:0.5, onComplete:downTween});
}
private function onChooseHex7(a_event:ChooseHexEvent):void{
var tut:TutorialPopup;
if (isChosenHexValid(a_event.col, a_event.row)){
hideArrow();
m_game.removeEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex7);
m_game.disableInput();
tut = new TutorialPopup("Shiny!", "There's the golden egg. Unlike normal eggs, if you break this one you will be rewarded with 5,000 points!", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose8a);
};
}
private function onPopupClose8b(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose8b);
m_game.addEventListener(TutorialEvent.LEVEL_UP_SCREEN_GONE, onLevel2);
showArrowAt(338, 372);
m_currentCol = 3;
m_currentRow = 6;
m_game.addEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex8);
m_game.enableInput();
}
private function onPopupClose6a(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose6a);
m_game.addEventListener(TutorialEvent.SPECIAL_POWER_SELECT, onJumpSlashSelect);
m_game.enableInput();
showArrowAt(150, 504);
}
private function onPopupClose6b(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose6b);
var tut:TutorialPopup = new TutorialPopup("Objective:", "Luckily you have your Jump Slash power which will let you jump over the eggs and kill cuties on the other side. Kill this group of black cuties.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose6c);
}
private function onPopupClose4a(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose4a);
var tut:TutorialPopup = new TutorialPopup("Health Meter", "Your health is shown in the top-left. Every time you make an attack your health goes down by one.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose4b);
}
private function onPopupClose2a(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose2a);
var tut:TutorialPopup = new TutorialPopup("Objective:", "Kill this group of black cuties.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose2b);
}
private function onPopupClose2b(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose2b);
m_currentCol = 5;
m_currentRow = 4;
m_game.addEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex2);
m_game.enableInput();
showArrowAt(460, 283);
}
private function showArrowAt(a_x:Number, a_y:Number):void{
m_arrow.x = a_x;
m_arrow.y = a_y;
m_arrow.visible = true;
downTween();
}
private function onPopupClose4b(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose4b);
var tut:TutorialPopup = new TutorialPopup("Objective:", "To get more health, you need to kill red cuties. Kill this group here.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose4c);
}
private function onPopupClose4c(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose4c);
m_currentCol = 5;
m_currentRow = 2;
m_game.addEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex4);
m_game.enableInput();
showArrowAt(457, 192);
}
private function onPopupClose8a(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose8a);
var tut:TutorialPopup = new TutorialPopup("Objective:", "All the eggs are about to hatch, including the golden one, so you have to get it this turn.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose8b);
}
private function hideArrow():void{
m_arrow.visible = false;
Tweener.removeTweens(m_arrow);
}
private function downTween():void{
Tweener.addTween(m_arrow, {x:(m_arrow.x + 2), y:(m_arrow.y + 10), time:0.5, onComplete:upTween});
}
private function onPopupCloseEndb(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupCloseEndb);
resetChosenHex();
m_game.showGameOver();
}
private function onChooseHex1(a_event:ChooseHexEvent):void{
var tut:TutorialPopup;
if (isChosenHexValid(a_event.col, a_event.row)){
m_game.removeEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex1);
hideArrow();
m_game.disableInput();
tut = new TutorialPopup("Bloody!", "As you kill cuties and collect souls, your special powers at the bottom will charge up.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose2a);
};
}
private function onChooseHex2(a_event:ChooseHexEvent):void{
var tut:TutorialPopup;
if (isChosenHexValid(a_event.col, a_event.row)){
hideArrow();
m_game.removeEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex2);
m_game.disableInput();
m_game.disableInput();
tut = new TutorialPopup("Bloody!", "When a cutie dies, it leaves behind an egg. If you wait long enough for the egg to hatch, you can kill that cutie too.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose3a);
};
}
private function onChooseHex4(a_event:ChooseHexEvent):void{
var tut:TutorialPopup;
if (isChosenHexValid(a_event.col, a_event.row)){
hideArrow();
m_game.removeEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex4);
m_game.disableInput();
tut = new TutorialPopup("Bloody!", "Not only did you get health back, all the eggs hatched too! The withered spaces also regrew and new eggs appeared on them. They will hatch next time.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose5a);
};
}
private function onChooseHex5(a_event:ChooseHexEvent):void{
var tut:TutorialPopup;
if (isChosenHexValid(a_event.col, a_event.row)){
hideArrow();
m_game.removeEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex5);
m_game.disableInput();
tut = new TutorialPopup("Bloody!", "Your Jump Slash special power is now fully charged! Click on the icon to switch to it.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose6a);
};
}
private function onChooseHex6(a_event:ChooseHexEvent):void{
var tut:TutorialPopup;
if (isChosenHexValid(a_event.col, a_event.row)){
hideArrow();
m_game.removeEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex6);
m_game.disableInput();
tut = new TutorialPopup("Golden Eggs", "This is a big group of yellow cuties! Whenever you kill a group of ten or more cuties, one of their eggs will be golden.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose7a);
};
}
private function onLevel2(a_event:LevelUpScreenGoneEvent):void{
var tut:TutorialPopup;
if (a_event.level == 2){
m_game.removeEventListener(TutorialEvent.LEVEL_UP_SCREEN_GONE, onLevel2);
m_game.disableInput();
tut = new TutorialPopup("Power Tips", "The reaper has lots of special powers, be sure to try them all out. If you hover over a button, you can read more about each power.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupCloseEnda);
};
}
private function onChooseHex3(a_event:ChooseHexEvent):void{
var tut:TutorialPopup;
if (isChosenHexValid(a_event.col, a_event.row)){
hideArrow();
m_game.removeEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex3);
m_game.disableInput();
tut = new TutorialPopup("Bloody!", "Every space that you stand on withers and dies. Nothing can live on these spaces until they regrow. Regrowth happens automatically whenever eggs hatch.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose4a);
};
}
private function onPopupClose7b(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose7b);
m_currentCol = 3;
m_currentRow = 5;
m_game.addEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex7);
m_game.enableInput();
showArrowAt(305, 322);
}
private function onPopupClose5b(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose5b);
m_currentCol = 4;
m_currentRow = 2;
m_game.addEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex5);
m_game.enableInput();
showArrowAt(398, 193);
}
private function onPopupClose3a(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose3a);
var tut:TutorialPopup = new TutorialPopup("The Schedule", "This bar on the left tells you when the eggs are going to hatch next. The bar moves one notch every time you make an attack.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose3b);
}
private function onLevel1(a_event:LevelUpScreenGoneEvent):void{
var tut:TutorialPopup;
if (a_event.level == 1){
m_game.removeEventListener(TutorialEvent.LEVEL_UP_SCREEN_GONE, onLevel1);
m_game.disableInput();
tut = new TutorialPopup("You're the reaper!", "You like to kill things and harvest their tasty souls.", true);
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose1a);
};
}
private function onPopupClose1b(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose1b);
m_currentCol = 5;
m_currentRow = 5;
m_game.addEventListener(TutorialEvent.CHOOSE_HEX, onChooseHex1);
m_game.enableInput();
showArrowAt(430, 324);
}
public function isChosenHexValid(a_col:int, a_row:int):Boolean{
if ((((m_currentCol < 0)) && ((m_currentRow < 0)))){
return (true);
};
return ((((a_col == m_currentCol)) && ((a_row == m_currentRow))));
}
private function onPopupClose5a(a_event:TutorialPopupCloseEvent):void{
var oldTut:TutorialPopup = (a_event.target as TutorialPopup);
oldTut.removeEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose5a);
var tut:TutorialPopup = new TutorialPopup("Objective:", "Now let's finish charging up one of your special powers. Kill this group of blue cuties.");
this.addChild(tut);
tut.addEventListener(TutorialEvent.TUTORIAL_POPUP_CLOSE, onPopupClose5b);
}
}
}//package
Section 202
//TutorialManager_s_arrow (TutorialManager_s_arrow)
package {
import mx.core.*;
public class TutorialManager_s_arrow extends BitmapAsset {
}
}//package
Section 203
//TutorialPopup (TutorialPopup)
package {
import flash.events.*;
import flash.display.*;
import events.*;
import flash.filters.*;
public class TutorialPopup extends Sprite {
private var m_popup:Sprite;
public static const s_ui_popup:Class = TutorialPopup_s_ui_popup;
public function TutorialPopup(a_title:String, a_message:String, a_isNext:Boolean=false){
super();
this.graphics.beginFill(0, 0.3);
this.graphics.drawRect(0, 0, Main.GAME_WIDTH, Main.GAME_HEIGHT);
this.graphics.endFill();
m_popup = new Sprite();
m_popup.x = 66;
m_popup.y = 50;
m_popup.filters = [new DropShadowFilter(4)];
m_popup.addChild(new s_ui_popup());
this.addChild(m_popup);
var title:CustomTextField = new CustomTextField(a_title, 0xFFFFFF, 30);
title.selectable = false;
title.filters = [new GlowFilter(0, 1, 2, 2, 32)];
title.width = (m_popup.width - 50);
title.x = 25;
title.y = 25;
m_popup.addChild(title);
var message:CustomTextField = new CustomTextField(a_message, 0xFFFFFF, 20);
message.selectable = false;
message.filters = [new GlowFilter(0, 1, 2, 2, 32)];
message.wordWrap = true;
message.width = (m_popup.width - 50);
message.x = 25;
message.y = ((title.y + title.height) + 8);
m_popup.addChild(message);
var buttonText:String = "Close";
if (a_isNext){
buttonText = "Next";
};
var button:TextButton = new TextButton(buttonText);
button.x = ((m_popup.width - button.width) - 23);
button.y = ((m_popup.height - button.height) - 25);
button.addEventListener(MouseEvent.CLICK, onCloseClick);
m_popup.addChild(button);
}
private function close():void{
this.parent.removeChild(this);
this.dispatchEvent(new TutorialPopupCloseEvent());
}
private function onCloseClick(a_event:MouseEvent):void{
close();
}
}
}//package
Section 204
//TutorialPopup_s_ui_popup (TutorialPopup_s_ui_popup)
package {
import mx.core.*;
public class TutorialPopup_s_ui_popup extends SpriteAsset {
}
}//package