Section 1
//PropTween (com.greensock.core.PropTween)
package com.greensock.core {
public class PropTween {
public var priority:int;
public var start:Number;
public var prevNode:PropTween;
public var change:Number;
public var target:Object;
public var name:String;
public var property:String;
public var nextNode:PropTween;
public var isPlugin:Boolean;
public function PropTween(target:Object, property:String, start:Number, change:Number, name:String, isPlugin:Boolean, nextNode:PropTween=null, priority:int=0){
super();
this.target = target;
this.property = property;
this.start = start;
this.change = change;
this.name = name;
this.isPlugin = isPlugin;
if (nextNode){
nextNode.prevNode = this;
this.nextNode = nextNode;
};
this.priority = priority;
}
}
}//package com.greensock.core
Section 2
//SimpleTimeline (com.greensock.core.SimpleTimeline)
package com.greensock.core {
public class SimpleTimeline extends TweenCore {
public var autoRemoveChildren:Boolean;
protected var _lastChild:TweenCore;
protected var _firstChild:TweenCore;
public function SimpleTimeline(vars:Object=null){
super(0, vars);
}
override public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
var dur:Number;
var next:TweenCore;
var tween:TweenCore = _firstChild;
this.cachedTotalTime = time;
this.cachedTime = time;
while (tween) {
next = tween.nextNode;
if (((tween.active) || ((((((time >= tween.cachedStartTime)) && (!(tween.cachedPaused)))) && (!(tween.gc)))))){
if (!tween.cachedReversed){
tween.renderTime(((time - tween.cachedStartTime) * tween.cachedTimeScale), suppressEvents, false);
} else {
dur = (tween.cacheIsDirty) ? tween.totalDuration : tween.cachedTotalDuration;
tween.renderTime((dur - ((time - tween.cachedStartTime) * tween.cachedTimeScale)), suppressEvents, false);
};
};
tween = next;
};
}
public function addChild(tween:TweenCore):void{
if (((!(tween.gc)) && (tween.timeline))){
tween.timeline.remove(tween, true);
};
tween.timeline = this;
if (tween.gc){
tween.setEnabled(true, true);
};
if (_firstChild){
_firstChild.prevNode = tween;
};
tween.nextNode = _firstChild;
_firstChild = tween;
tween.prevNode = null;
}
public function remove(tween:TweenCore, skipDisable:Boolean=false):void{
if (((!(tween.gc)) && (!(skipDisable)))){
tween.setEnabled(false, true);
};
if (tween.nextNode){
tween.nextNode.prevNode = tween.prevNode;
} else {
if (_lastChild == tween){
_lastChild = tween.prevNode;
};
};
if (tween.prevNode){
tween.prevNode.nextNode = tween.nextNode;
} else {
if (_firstChild == tween){
_firstChild = tween.nextNode;
};
};
}
public function get rawTime():Number{
return (this.cachedTotalTime);
}
}
}//package com.greensock.core
Section 3
//TweenCore (com.greensock.core.TweenCore)
package com.greensock.core {
import com.greensock.*;
public class TweenCore {
public var initted:Boolean;
protected var _hasUpdate:Boolean;
public var active:Boolean;
protected var _delay:Number;
public var cachedTime:Number;
public var cachedReversed:Boolean;
public var nextNode:TweenCore;
protected var _rawPrevTime:Number;// = -1
public var vars:Object;
public var cachedTotalTime:Number;
public var timeline:SimpleTimeline;
public var data;
public var cachedStartTime:Number;
public var prevNode:TweenCore;
public var cachedDuration:Number;
public var gc:Boolean;
protected var _pauseTime:Number;
public var cacheIsDirty:Boolean;
public var cachedPaused:Boolean;
public var cachedTimeScale:Number;
public var cachedTotalDuration:Number;
public static const version:Number = 1.11;
protected static var _classInitted:Boolean;
public function TweenCore(duration:Number=0, vars:Object=null){
super();
this.vars = ((vars) || ({}));
this.cachedDuration = (this.cachedTotalDuration = ((duration) || (0)));
_delay = ((this.vars.delay) || (0));
this.cachedTimeScale = ((this.vars.timeScale) || (1));
this.active = Boolean((((((duration == 0)) && ((_delay == 0)))) && (!((this.vars.immediateRender == false)))));
this.cachedTotalTime = (this.cachedTime = 0);
this.data = this.vars.data;
if (!_classInitted){
if (isNaN(TweenLite.rootFrame)){
TweenLite.initClass();
_classInitted = true;
} else {
return;
};
};
var tl:SimpleTimeline = ((this.vars.timeline is SimpleTimeline)) ? this.vars.timeline : (this.vars.useFrames) ? TweenLite.rootFramesTimeline : TweenLite.rootTimeline;
this.cachedStartTime = (tl.cachedTotalTime + _delay);
tl.addChild(this);
if (this.vars.reversed){
this.cachedReversed = true;
};
if (this.vars.paused){
this.paused = true;
};
}
public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
}
public function get delay():Number{
return (_delay);
}
public function get duration():Number{
return (this.cachedDuration);
}
public function restart(includeDelay:Boolean=false, suppressEvents:Boolean=true):void{
this.reversed = false;
this.paused = false;
this.setTotalTime((includeDelay) ? -(_delay) : 0, suppressEvents);
}
public function set reversed(b:Boolean):void{
if (b != this.cachedReversed){
this.cachedReversed = b;
setTotalTime(this.cachedTotalTime, true);
};
}
public function set startTime(n:Number):void{
var adjust:Boolean = Boolean(((!((this.timeline == null))) && (((!((n == this.cachedStartTime))) || (this.gc)))));
this.cachedStartTime = n;
if (adjust){
this.timeline.addChild(this);
};
}
public function set delay(n:Number):void{
this.startTime = (this.startTime + (n - _delay));
_delay = n;
}
public function resume():void{
this.paused = false;
}
public function get paused():Boolean{
return (this.cachedPaused);
}
public function play():void{
this.reversed = false;
this.paused = false;
}
public function set duration(n:Number):void{
this.cachedDuration = (this.cachedTotalDuration = n);
setDirtyCache(false);
}
public function complete(skipRender:Boolean=false, suppressEvents:Boolean=false):void{
if (!skipRender){
renderTime(this.cachedTotalDuration, suppressEvents, false);
return;
};
if (this.timeline.autoRemoveChildren){
this.setEnabled(false, false);
} else {
this.active = false;
};
if (!suppressEvents){
if (((((this.vars.onComplete) && ((this.cachedTotalTime == this.cachedTotalDuration)))) && (!(this.cachedReversed)))){
this.vars.onComplete.apply(null, this.vars.onCompleteParams);
} else {
if (((((this.cachedReversed) && ((this.cachedTotalTime == 0)))) && (this.vars.onReverseComplete))){
this.vars.onReverseComplete.apply(null, this.vars.onReverseCompleteParams);
};
};
};
}
public function invalidate():void{
}
public function get totalTime():Number{
return (this.cachedTotalTime);
}
public function get reversed():Boolean{
return (this.cachedReversed);
}
public function get startTime():Number{
return (this.cachedStartTime);
}
public function set currentTime(n:Number):void{
setTotalTime(n, false);
}
protected function setDirtyCache(includeSelf:Boolean=true):void{
var tween:TweenCore = (includeSelf) ? this : this.timeline;
while (tween) {
tween.cacheIsDirty = true;
tween = tween.timeline;
};
}
public function reverse(forceResume:Boolean=true):void{
this.reversed = true;
if (forceResume){
this.paused = false;
} else {
if (this.gc){
this.setEnabled(true, false);
};
};
}
public function set paused(b:Boolean):void{
if (((!((b == this.cachedPaused))) && (this.timeline))){
if (b){
_pauseTime = this.timeline.rawTime;
} else {
this.cachedStartTime = (this.cachedStartTime + (this.timeline.rawTime - _pauseTime));
_pauseTime = NaN;
setDirtyCache(false);
};
this.cachedPaused = b;
this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration))));
};
if (((!(b)) && (this.gc))){
this.setTotalTime(this.cachedTotalTime, false);
this.setEnabled(true, false);
};
}
public function kill():void{
setEnabled(false, false);
}
public function set totalTime(n:Number):void{
setTotalTime(n, false);
}
public function get currentTime():Number{
return (this.cachedTime);
}
protected function setTotalTime(time:Number, suppressEvents:Boolean=false):void{
var tlTime:Number;
var dur:Number;
if (this.timeline){
tlTime = (((_pauseTime) || ((_pauseTime == 0)))) ? _pauseTime : this.timeline.cachedTotalTime;
if (this.cachedReversed){
dur = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration;
this.cachedStartTime = (tlTime - ((dur - time) / this.cachedTimeScale));
} else {
this.cachedStartTime = (tlTime - (time / this.cachedTimeScale));
};
if (!this.timeline.cacheIsDirty){
setDirtyCache(false);
};
if (this.cachedTotalTime != time){
renderTime(time, suppressEvents, false);
};
};
}
public function pause():void{
this.paused = true;
}
public function set totalDuration(n:Number):void{
this.duration = n;
}
public function get totalDuration():Number{
return (this.cachedTotalDuration);
}
public function setEnabled(enabled:Boolean, ignoreTimeline:Boolean=false):Boolean{
if (enabled == this.gc){
if (enabled){
this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration))));
if (!ignoreTimeline){
this.timeline.addChild(this);
};
} else {
this.active = false;
if (!ignoreTimeline){
this.timeline.remove(this, true);
};
};
this.gc = !(enabled);
};
return (false);
}
}
}//package com.greensock.core
Section 4
//Cubic (com.greensock.easing.Cubic)
package com.greensock.easing {
public class Cubic {
public static const power:uint = 2;
public function Cubic(){
super();
}
public static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{
t = ((t / d) - 1);
return (((c * (((t * t) * t) + 1)) + b));
}
public static function easeIn(t:Number, b:Number, c:Number, d:Number):Number{
t = (t / d);
return (((((c * t) * t) * t) + b));
}
public static function easeInOut(t:Number, b:Number, c:Number, d:Number):Number{
t = (t / (d * 0.5));
if (t < 1){
return ((((((c * 0.5) * t) * t) * t) + b));
};
t = (t - 2);
return ((((c * 0.5) * (((t * t) * t) + 2)) + b));
}
}
}//package com.greensock.easing
Section 5
//Linear (com.greensock.easing.Linear)
package com.greensock.easing {
public class Linear {
public static const power:uint = 0;
public function Linear(){
super();
}
public static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{
return ((((c * t) / d) + b));
}
public static function easeIn(t:Number, b:Number, c:Number, d:Number):Number{
return ((((c * t) / d) + b));
}
public static function easeNone(t:Number, b:Number, c:Number, d:Number):Number{
return ((((c * t) / d) + b));
}
public static function easeInOut(t:Number, b:Number, c:Number, d:Number):Number{
return ((((c * t) / d) + b));
}
}
}//package com.greensock.easing
Section 6
//TweenEvent (com.greensock.events.TweenEvent)
package com.greensock.events {
import flash.events.*;
public class TweenEvent extends Event {
public static const COMPLETE:String = "complete";
public static const START:String = "init";
public static const UPDATE:String = "change";
public static const REVERSE_COMPLETE:String = "reverseComplete";
public static const VERSION:Number = 1;
public static const REPEAT:String = "repeat";
public function TweenEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){
super(type, bubbles, cancelable);
}
override public function clone():Event{
return (new TweenEvent(this.type, this.bubbles, this.cancelable));
}
}
}//package com.greensock.events
Section 7
//AutoAlphaPlugin (com.greensock.plugins.AutoAlphaPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class AutoAlphaPlugin extends TweenPlugin {
protected var _target:Object;
protected var _ignoreVisible:Boolean;
public static const API:Number = 1;
public function AutoAlphaPlugin(){
super();
this.propName = "autoAlpha";
this.overwriteProps = ["alpha", "visible"];
}
override public function killProps(lookup:Object):void{
super.killProps(lookup);
_ignoreVisible = Boolean(("visible" in lookup));
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
addTween(target, "alpha", target.alpha, value, "alpha");
return (true);
}
override public function set changeFactor(n:Number):void{
updateTweens(n);
if (!_ignoreVisible){
_target.visible = Boolean(!((_target.alpha == 0)));
};
}
}
}//package com.greensock.plugins
Section 8
//BevelFilterPlugin (com.greensock.plugins.BevelFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class BevelFilterPlugin extends FilterPlugin {
public static const API:Number = 1;
private static var _propNames:Array = ["distance", "angle", "highlightColor", "highlightAlpha", "shadowColor", "shadowAlpha", "blurX", "blurY", "strength", "quality"];
public function BevelFilterPlugin(){
super();
this.propName = "bevelFilter";
this.overwriteProps = ["bevelFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = BevelFilter;
initFilter(value, new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0, 0.5, 2, 2, 0, ((value.quality) || (2))), _propNames);
return (true);
}
}
}//package com.greensock.plugins
Section 9
//BezierPlugin (com.greensock.plugins.BezierPlugin)
package com.greensock.plugins {
import com.greensock.*;
import com.greensock.core.*;
public class BezierPlugin extends TweenPlugin {
protected var _future:Object;
protected var _orient:Boolean;
protected var _orientData:Array;
protected var _target:Object;
protected var _beziers:Object;
public static const API:Number = 1;
protected static const _RAD2DEG:Number = 57.2957795130823;
public function BezierPlugin(){
_future = {};
super();
this.propName = "bezier";
this.overwriteProps = [];
}
override public function killProps(lookup:Object):void{
var p:String;
for (p in _beziers) {
if ((p in lookup)){
delete _beziers[p];
};
};
super.killProps(lookup);
}
protected function init(tween:TweenLite, beziers:Array, through:Boolean):void{
var i:int;
var p:String;
var killVarsLookup:Object;
_target = tween.target;
var enumerables:Object = ((tween.vars.isTV)==true) ? tween.vars.exposedVars : tween.vars;
if (enumerables.orientToBezier == true){
_orientData = [["x", "y", "rotation", 0, 0.01]];
_orient = true;
} else {
if ((enumerables.orientToBezier is Array)){
_orientData = enumerables.orientToBezier;
_orient = true;
};
};
var props:Object = {};
i = 0;
while (i < beziers.length) {
for (p in beziers[i]) {
if (props[p] == undefined){
props[p] = [tween.target[p]];
};
if (typeof(beziers[i][p]) == "number"){
props[p].push(beziers[i][p]);
} else {
props[p].push((tween.target[p] + Number(beziers[i][p])));
};
};
i++;
};
for (p in props) {
this.overwriteProps[this.overwriteProps.length] = p;
if (enumerables[p] != undefined){
if (typeof(enumerables[p]) == "number"){
props[p].push(enumerables[p]);
} else {
props[p].push((tween.target[p] + Number(enumerables[p])));
};
killVarsLookup = {};
killVarsLookup[p] = true;
tween.killVars(killVarsLookup, false);
delete enumerables[p];
};
};
_beziers = parseBeziers(props, through);
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (!(value is Array)){
return (false);
};
init(tween, (value as Array), false);
return (true);
}
override public function set changeFactor(n:Number):void{
var i:int;
var p:String;
var b:Object;
var t:Number;
var segments:uint;
var val:Number;
var curVals:Object;
var dx:Number;
var dy:Number;
var cotb:Array;
var toAdd:Number;
var oldTarget:Object;
var oldRound:Boolean;
if (n == 1){
for (p in _beziers) {
i = (_beziers[p].length - 1);
_target[p] = _beziers[p][i][2];
};
} else {
for (p in _beziers) {
segments = _beziers[p].length;
if (n < 0){
i = 0;
} else {
if (n >= 1){
i = (segments - 1);
} else {
i = int((segments * n));
};
};
t = ((n - (i * (1 / segments))) * segments);
b = _beziers[p][i];
if (this.round){
val = (b[0] + (t * (((2 * (1 - t)) * (b[1] - b[0])) + (t * (b[2] - b[0])))));
_target[p] = ((val)>0) ? int((val + 0.5)) : int((val - 0.5));
} else {
_target[p] = (b[0] + (t * (((2 * (1 - t)) * (b[1] - b[0])) + (t * (b[2] - b[0])))));
};
};
};
if (_orient){
i = _orientData.length;
curVals = {};
while (i--) {
cotb = _orientData[i];
curVals[cotb[0]] = _target[cotb[0]];
curVals[cotb[1]] = _target[cotb[1]];
};
oldTarget = _target;
oldRound = this.round;
_target = _future;
this.round = false;
_orient = false;
i = _orientData.length;
while (i--) {
cotb = _orientData[i];
this.changeFactor = (n + ((cotb[4]) || (0.01)));
toAdd = ((cotb[3]) || (0));
dx = (_future[cotb[0]] - curVals[cotb[0]]);
dy = (_future[cotb[1]] - curVals[cotb[1]]);
oldTarget[cotb[2]] = ((Math.atan2(dy, dx) * _RAD2DEG) + toAdd);
};
_target = oldTarget;
this.round = oldRound;
_orient = true;
};
}
public static function parseBeziers(props:Object, through:Boolean=false):Object{
var i:int;
var a:Array;
var b:Object;
var p:String;
var all:Object = {};
if (through){
for (p in props) {
a = props[p];
b = [];
all[p] = b;
if (a.length > 2){
b[b.length] = [a[0], (a[1] - ((a[2] - a[0]) / 4)), a[1]];
i = 1;
while (i < (a.length - 1)) {
b[b.length] = [a[i], (a[i] + (a[i] - b[(i - 1)][1])), a[(i + 1)]];
i++;
};
} else {
b[b.length] = [a[0], ((a[0] + a[1]) / 2), a[1]];
};
};
} else {
for (p in props) {
a = props[p];
b = [];
all[p] = b;
if (a.length > 3){
b[b.length] = [a[0], a[1], ((a[1] + a[2]) / 2)];
i = 2;
while (i < (a.length - 2)) {
b[b.length] = [b[(i - 2)][2], a[i], ((a[i] + a[(i + 1)]) / 2)];
i++;
};
b[b.length] = [b[(b.length - 1)][2], a[(a.length - 2)], a[(a.length - 1)]];
} else {
if (a.length == 3){
b[b.length] = [a[0], a[1], a[2]];
} else {
if (a.length == 2){
b[b.length] = [a[0], ((a[0] + a[1]) / 2), a[1]];
};
};
};
};
};
return (all);
}
}
}//package com.greensock.plugins
Section 10
//BezierThroughPlugin (com.greensock.plugins.BezierThroughPlugin)
package com.greensock.plugins {
import com.greensock.*;
public class BezierThroughPlugin extends BezierPlugin {
public static const API:Number = 1;
public function BezierThroughPlugin(){
super();
this.propName = "bezierThrough";
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (!(value is Array)){
return (false);
};
init(tween, (value as Array), true);
return (true);
}
}
}//package com.greensock.plugins
Section 11
//BlurFilterPlugin (com.greensock.plugins.BlurFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class BlurFilterPlugin extends FilterPlugin {
public static const API:Number = 1;
private static var _propNames:Array = ["blurX", "blurY", "quality"];
public function BlurFilterPlugin(){
super();
this.propName = "blurFilter";
this.overwriteProps = ["blurFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = BlurFilter;
initFilter(value, new BlurFilter(0, 0, ((value.quality) || (2))), _propNames);
return (true);
}
}
}//package com.greensock.plugins
Section 12
//ColorMatrixFilterPlugin (com.greensock.plugins.ColorMatrixFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class ColorMatrixFilterPlugin extends FilterPlugin {
protected var _matrix:Array;
protected var _matrixTween:EndArrayPlugin;
public static const API:Number = 1;
private static var _propNames:Array = [];
protected static var _lumG:Number = 0.71516;
protected static var _lumR:Number = 0.212671;
protected static var _idMatrix:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
protected static var _lumB:Number = 0.072169;
public function ColorMatrixFilterPlugin(){
super();
this.propName = "colorMatrixFilter";
this.overwriteProps = ["colorMatrixFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = ColorMatrixFilter;
var cmf:Object = value;
initFilter({remove:value.remove, index:value.index, addFilter:value.addFilter}, new ColorMatrixFilter(_idMatrix.slice()), _propNames);
_matrix = ColorMatrixFilter(_filter).matrix;
var endMatrix:Array = [];
if (((!((cmf.matrix == null))) && ((cmf.matrix is Array)))){
endMatrix = cmf.matrix;
} else {
if (cmf.relative == true){
endMatrix = _matrix.slice();
} else {
endMatrix = _idMatrix.slice();
};
endMatrix = setBrightness(endMatrix, cmf.brightness);
endMatrix = setContrast(endMatrix, cmf.contrast);
endMatrix = setHue(endMatrix, cmf.hue);
endMatrix = setSaturation(endMatrix, cmf.saturation);
endMatrix = setThreshold(endMatrix, cmf.threshold);
if (!isNaN(cmf.colorize)){
endMatrix = colorize(endMatrix, cmf.colorize, cmf.amount);
};
};
_matrixTween = new EndArrayPlugin();
_matrixTween.init(_matrix, endMatrix);
return (true);
}
override public function set changeFactor(n:Number):void{
_matrixTween.changeFactor = n;
ColorMatrixFilter(_filter).matrix = _matrix;
super.changeFactor = n;
}
public static function setSaturation(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
var inv:Number = (1 - n);
var r:Number = (inv * _lumR);
var g:Number = (inv * _lumG);
var b:Number = (inv * _lumB);
var temp:Array = [(r + n), g, b, 0, 0, r, (g + n), b, 0, 0, r, g, (b + n), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(temp, m));
}
public static function setHue(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
n = (n * (Math.PI / 180));
var c:Number = Math.cos(n);
var s:Number = Math.sin(n);
var temp:Array = [((_lumR + (c * (1 - _lumR))) + (s * -(_lumR))), ((_lumG + (c * -(_lumG))) + (s * -(_lumG))), ((_lumB + (c * -(_lumB))) + (s * (1 - _lumB))), 0, 0, ((_lumR + (c * -(_lumR))) + (s * 0.143)), ((_lumG + (c * (1 - _lumG))) + (s * 0.14)), ((_lumB + (c * -(_lumB))) + (s * -0.283)), 0, 0, ((_lumR + (c * -(_lumR))) + (s * -((1 - _lumR)))), ((_lumG + (c * -(_lumG))) + (s * _lumG)), ((_lumB + (c * (1 - _lumB))) + (s * _lumB)), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
return (applyMatrix(temp, m));
}
public static function setContrast(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
n = (n + 0.01);
var temp:Array = [n, 0, 0, 0, (128 * (1 - n)), 0, n, 0, 0, (128 * (1 - n)), 0, 0, n, 0, (128 * (1 - n)), 0, 0, 0, 1, 0];
return (applyMatrix(temp, m));
}
public static function applyMatrix(m:Array, m2:Array):Array{
var y:int;
var x:int;
if (((!((m is Array))) || (!((m2 is Array))))){
return (m2);
};
var temp:Array = [];
var i:int;
var z:int;
y = 0;
while (y < 4) {
x = 0;
while (x < 5) {
if (x == 4){
z = m[(i + 4)];
} else {
z = 0;
};
temp[(i + x)] = (((((m[i] * m2[x]) + (m[(i + 1)] * m2[(x + 5)])) + (m[(i + 2)] * m2[(x + 10)])) + (m[(i + 3)] * m2[(x + 15)])) + z);
x++;
};
i = (i + 5);
y++;
};
return (temp);
}
public static function setThreshold(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
var temp:Array = [(_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * n), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * n), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * n), 0, 0, 0, 1, 0];
return (applyMatrix(temp, m));
}
public static function colorize(m:Array, color:Number, amount:Number=1):Array{
if (isNaN(color)){
return (m);
};
if (isNaN(amount)){
amount = 1;
};
var r:Number = (((color >> 16) & 0xFF) / 0xFF);
var g:Number = (((color >> 8) & 0xFF) / 0xFF);
var b:Number = ((color & 0xFF) / 0xFF);
var inv:Number = (1 - amount);
var temp:Array = [(inv + ((amount * r) * _lumR)), ((amount * r) * _lumG), ((amount * r) * _lumB), 0, 0, ((amount * g) * _lumR), (inv + ((amount * g) * _lumG)), ((amount * g) * _lumB), 0, 0, ((amount * b) * _lumR), ((amount * b) * _lumG), (inv + ((amount * b) * _lumB)), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(temp, m));
}
public static function setBrightness(m:Array, n:Number):Array{
if (isNaN(n)){
return (m);
};
n = ((n * 100) - 100);
return (applyMatrix([1, 0, 0, 0, n, 0, 1, 0, 0, n, 0, 0, 1, 0, n, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], m));
}
}
}//package com.greensock.plugins
Section 13
//ColorTransformPlugin (com.greensock.plugins.ColorTransformPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.geom.*;
public class ColorTransformPlugin extends TintPlugin {
public static const API:Number = 1;
public function ColorTransformPlugin(){
super();
this.propName = "colorTransform";
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
var p:String;
var ratio:Number;
if (!(target is DisplayObject)){
return (false);
};
var end:ColorTransform = target.transform.colorTransform;
for (p in value) {
if ((((p == "tint")) || ((p == "color")))){
if (value[p] != null){
end.color = int(value[p]);
};
} else {
if ((((((p == "tintAmount")) || ((p == "exposure")))) || ((p == "brightness")))){
} else {
end[p] = value[p];
};
};
};
if (!isNaN(value.tintAmount)){
ratio = (value.tintAmount / (1 - (((end.redMultiplier + end.greenMultiplier) + end.blueMultiplier) / 3)));
end.redOffset = (end.redOffset * ratio);
end.greenOffset = (end.greenOffset * ratio);
end.blueOffset = (end.blueOffset * ratio);
end.redMultiplier = (end.greenMultiplier = (end.blueMultiplier = (1 - value.tintAmount)));
} else {
if (!isNaN(value.exposure)){
end.redOffset = (end.greenOffset = (end.blueOffset = (0xFF * (value.exposure - 1))));
end.redMultiplier = (end.greenMultiplier = (end.blueMultiplier = 1));
} else {
if (!isNaN(value.brightness)){
end.redOffset = (end.greenOffset = (end.blueOffset = Math.max(0, ((value.brightness - 1) * 0xFF))));
end.redMultiplier = (end.greenMultiplier = (end.blueMultiplier = (1 - Math.abs((value.brightness - 1)))));
};
};
};
_ignoreAlpha = Boolean(((!((tween.vars.alpha == undefined))) && ((value.alphaMultiplier == undefined))));
init((target as DisplayObject), end);
return (true);
}
}
}//package com.greensock.plugins
Section 14
//DropShadowFilterPlugin (com.greensock.plugins.DropShadowFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class DropShadowFilterPlugin extends FilterPlugin {
public static const API:Number = 1;
private static var _propNames:Array = ["distance", "angle", "color", "alpha", "blurX", "blurY", "strength", "quality", "inner", "knockout", "hideObject"];
public function DropShadowFilterPlugin(){
super();
this.propName = "dropShadowFilter";
this.overwriteProps = ["dropShadowFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = DropShadowFilter;
initFilter(value, new DropShadowFilter(0, 45, 0, 0, 0, 0, 1, ((value.quality) || (2)), value.inner, value.knockout, value.hideObject), _propNames);
return (true);
}
}
}//package com.greensock.plugins
Section 15
//EndArrayPlugin (com.greensock.plugins.EndArrayPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class EndArrayPlugin extends TweenPlugin {
protected var _a:Array;
protected var _info:Array;
public static const API:Number = 1;
public function EndArrayPlugin(){
_info = [];
super();
this.propName = "endArray";
this.overwriteProps = ["endArray"];
}
public function init(start:Array, end:Array):void{
_a = start;
var i:int = end.length;
while (i--) {
if (((!((start[i] == end[i]))) && (!((start[i] == null))))){
_info[_info.length] = new ArrayTweenInfo(i, _a[i], (end[i] - _a[i]));
};
};
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (((!((target is Array))) || (!((value is Array))))){
return (false);
};
init((target as Array), value);
return (true);
}
override public function set changeFactor(n:Number):void{
var ti:ArrayTweenInfo;
var val:Number;
var i:int = _info.length;
if (this.round){
while (i--) {
ti = _info[i];
val = (ti.start + (ti.change * n));
_a[ti.index] = ((val)>0) ? int((val + 0.5)) : int((val - 0.5));
};
} else {
while (i--) {
ti = _info[i];
_a[ti.index] = (ti.start + (ti.change * n));
};
};
}
}
}//package com.greensock.plugins
class ArrayTweenInfo {
public var change:Number;
public var start:Number;
public var index:uint;
private function ArrayTweenInfo(index:uint, start:Number, change:Number){
super();
this.index = index;
this.start = start;
this.change = change;
}
}
Section 16
//FilterPlugin (com.greensock.plugins.FilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import com.greensock.core.*;
import flash.filters.*;
public class FilterPlugin extends TweenPlugin {
protected var _remove:Boolean;
protected var _target:Object;
protected var _index:int;
protected var _filter:BitmapFilter;
protected var _type:Class;
public static const VERSION:Number = 2.03;
public static const API:Number = 1;
public function FilterPlugin(){
super();
}
public function onCompleteTween():void{
var filters:Array;
var i:int;
if (_remove){
filters = _target.filters;
if (!(filters[_index] is _type)){
i = filters.length;
while (i--) {
if ((filters[i] is _type)){
filters.splice(i, 1);
break;
};
};
} else {
filters.splice(_index, 1);
};
_target.filters = filters;
};
}
protected function initFilter(props:Object, defaultFilter:BitmapFilter, propNames:Array):void{
var p:String;
var i:int;
var colorTween:HexColorsPlugin;
var filters:Array = _target.filters;
var extras:Object = ((props is BitmapFilter)) ? {} : props;
_index = -1;
if (extras.index != null){
_index = extras.index;
} else {
i = filters.length;
while (i--) {
if ((filters[i] is _type)){
_index = i;
break;
};
};
};
if ((((((_index == -1)) || ((filters[_index] == null)))) || ((extras.addFilter == true)))){
_index = ((extras.index)!=null) ? extras.index : filters.length;
filters[_index] = defaultFilter;
_target.filters = filters;
};
_filter = filters[_index];
if (extras.remove == true){
_remove = true;
this.onComplete = onCompleteTween;
};
i = propNames.length;
while (i--) {
p = propNames[i];
if ((((p in props)) && (!((_filter[p] == props[p]))))){
if ((((((p == "color")) || ((p == "highlightColor")))) || ((p == "shadowColor")))){
colorTween = new HexColorsPlugin();
colorTween.initColor(_filter, p, _filter[p], props[p]);
_tweens[_tweens.length] = new PropTween(colorTween, "changeFactor", 0, 1, p, false);
} else {
if ((((((((p == "quality")) || ((p == "inner")))) || ((p == "knockout")))) || ((p == "hideObject")))){
_filter[p] = props[p];
} else {
addTween(_filter, p, _filter[p], props[p], p);
};
};
};
};
}
override public function set changeFactor(n:Number):void{
var ti:PropTween;
var i:int = _tweens.length;
var filters:Array = _target.filters;
while (i--) {
ti = _tweens[i];
ti.target[ti.property] = (ti.start + (ti.change * n));
};
if (!(filters[_index] is _type)){
i = (_index = filters.length);
while (i--) {
if ((filters[i] is _type)){
_index = i;
break;
};
};
};
filters[_index] = _filter;
_target.filters = filters;
}
}
}//package com.greensock.plugins
Section 17
//FrameLabelPlugin (com.greensock.plugins.FrameLabelPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class FrameLabelPlugin extends FramePlugin {
public static const API:Number = 1;
public function FrameLabelPlugin(){
super();
this.propName = "frameLabel";
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if ((!(tween.target) is MovieClip)){
return (false);
};
_target = (target as MovieClip);
this.frame = _target.currentFrame;
var labels:Array = _target.currentLabels;
var label:String = value;
var endFrame:int = _target.currentFrame;
var i:int = labels.length;
while (i--) {
if (labels[i].name == label){
endFrame = labels[i].frame;
break;
};
};
if (this.frame != endFrame){
addTween(this, "frame", this.frame, endFrame, "frame");
};
return (true);
}
}
}//package com.greensock.plugins
Section 18
//FramePlugin (com.greensock.plugins.FramePlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class FramePlugin extends TweenPlugin {
protected var _target:MovieClip;
public var frame:int;
public static const API:Number = 1;
public function FramePlugin(){
super();
this.propName = "frame";
this.overwriteProps = ["frame", "frameLabel"];
this.round = true;
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (((!((target is MovieClip))) || (isNaN(value)))){
return (false);
};
_target = (target as MovieClip);
this.frame = _target.currentFrame;
addTween(this, "frame", this.frame, value, "frame");
return (true);
}
override public function set changeFactor(n:Number):void{
updateTweens(n);
_target.gotoAndStop(this.frame);
}
}
}//package com.greensock.plugins
Section 19
//GlowFilterPlugin (com.greensock.plugins.GlowFilterPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.filters.*;
public class GlowFilterPlugin extends FilterPlugin {
public static const API:Number = 1;
private static var _propNames:Array = ["color", "alpha", "blurX", "blurY", "strength", "quality", "inner", "knockout"];
public function GlowFilterPlugin(){
super();
this.propName = "glowFilter";
this.overwriteProps = ["glowFilter"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_type = GlowFilter;
initFilter(value, new GlowFilter(0xFFFFFF, 0, 0, 0, ((value.strength) || (1)), ((value.quality) || (2)), value.inner, value.knockout), _propNames);
return (true);
}
}
}//package com.greensock.plugins
Section 20
//HexColorsPlugin (com.greensock.plugins.HexColorsPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class HexColorsPlugin extends TweenPlugin {
protected var _colors:Array;
public static const API:Number = 1;
public function HexColorsPlugin(){
super();
this.propName = "hexColors";
this.overwriteProps = [];
_colors = [];
}
override public function killProps(lookup:Object):void{
var i:int = (_colors.length - 1);
while (i > -1) {
if (lookup[_colors[i][1]] != undefined){
_colors.splice(i, 1);
};
i--;
};
super.killProps(lookup);
}
public function initColor(target:Object, propName:String, start:uint, end:uint):void{
var r:Number;
var g:Number;
var b:Number;
if (start != end){
r = (start >> 16);
g = ((start >> 8) & 0xFF);
b = (start & 0xFF);
_colors[_colors.length] = [target, propName, r, ((end >> 16) - r), g, (((end >> 8) & 0xFF) - g), b, ((end & 0xFF) - b)];
this.overwriteProps[this.overwriteProps.length] = propName;
};
}
override public function set changeFactor(n:Number):void{
var i:int;
var a:Array;
i = (_colors.length - 1);
while (i > -1) {
a = _colors[i];
a[0][a[1]] = ((((a[2] + (n * a[3])) << 16) | ((a[4] + (n * a[5])) << 8)) | (a[6] + (n * a[7])));
i--;
};
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
var p:String;
for (p in value) {
initColor(target, p, uint(target[p]), uint(value[p]));
};
return (true);
}
}
}//package com.greensock.plugins
Section 21
//RemoveTintPlugin (com.greensock.plugins.RemoveTintPlugin)
package com.greensock.plugins {
public class RemoveTintPlugin extends TintPlugin {
public static const API:Number = 1;
public function RemoveTintPlugin(){
super();
this.propName = "removeTint";
}
}
}//package com.greensock.plugins
Section 22
//RoundPropsPlugin (com.greensock.plugins.RoundPropsPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class RoundPropsPlugin extends TweenPlugin {
public static const API:Number = 1;
public function RoundPropsPlugin(){
super();
this.propName = "roundProps";
this.overwriteProps = [];
this.round = true;
}
public function add(object:Object, propName:String, start:Number, change:Number):void{
addTween(object, propName, start, (start + change), propName);
this.overwriteProps[this.overwriteProps.length] = propName;
}
}
}//package com.greensock.plugins
Section 23
//ShortRotationPlugin (com.greensock.plugins.ShortRotationPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class ShortRotationPlugin extends TweenPlugin {
public static const API:Number = 1;
public function ShortRotationPlugin(){
super();
this.propName = "shortRotation";
this.overwriteProps = [];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
var p:String;
if (typeof(value) == "number"){
trace("WARNING: You appear to be using the old shortRotation syntax. Instead of passing a number, please pass an object with properties that correspond to the rotations values For example, TweenMax.to(mc, 2, {shortRotation:{rotationX:-170, rotationY:25}})");
return (false);
};
for (p in value) {
initRotation(target, p, target[p], value[p]);
};
return (true);
}
public function initRotation(target:Object, propName:String, start:Number, end:Number):void{
var dif:Number = ((end - start) % 360);
if (dif != (dif % 180)){
dif = ((dif)<0) ? (dif + 360) : (dif - 360);
};
addTween(target, propName, start, (start + dif), propName);
this.overwriteProps[this.overwriteProps.length] = propName;
}
}
}//package com.greensock.plugins
Section 24
//TintPlugin (com.greensock.plugins.TintPlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import com.greensock.core.*;
import flash.geom.*;
public class TintPlugin extends TweenPlugin {
protected var _ct:ColorTransform;
protected var _transform:Transform;
protected var _ignoreAlpha:Boolean;
public static const API:Number = 1;
protected static var _props:Array = ["redMultiplier", "greenMultiplier", "blueMultiplier", "alphaMultiplier", "redOffset", "greenOffset", "blueOffset", "alphaOffset"];
public function TintPlugin(){
super();
this.propName = "tint";
this.overwriteProps = ["tint"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (!(target is DisplayObject)){
return (false);
};
var end:ColorTransform = new ColorTransform();
if (((!((value == null))) && (!((tween.vars.removeTint == true))))){
end.color = uint(value);
};
_ignoreAlpha = true;
init((target as DisplayObject), end);
return (true);
}
override public function set changeFactor(n:Number):void{
var ct:ColorTransform;
updateTweens(n);
if (_ignoreAlpha){
ct = _transform.colorTransform;
_ct.alphaMultiplier = ct.alphaMultiplier;
_ct.alphaOffset = ct.alphaOffset;
};
_transform.colorTransform = _ct;
}
public function init(target:DisplayObject, end:ColorTransform):void{
var p:String;
_transform = target.transform;
_ct = _transform.colorTransform;
var i:int = _props.length;
while (i--) {
p = _props[i];
if (_ct[p] != end[p]){
_tweens[_tweens.length] = new PropTween(_ct, p, _ct[p], (end[p] - _ct[p]), "tint", false);
};
};
}
}
}//package com.greensock.plugins
Section 25
//TweenPlugin (com.greensock.plugins.TweenPlugin)
package com.greensock.plugins {
import com.greensock.*;
import com.greensock.core.*;
public class TweenPlugin {
public var activeDisable:Boolean;
protected var _changeFactor:Number;// = 0
protected var _tweens:Array;
public var onDisable:Function;
public var propName:String;
public var round:Boolean;
public var onEnable:Function;
public var priority:int;// = 0
public var overwriteProps:Array;
public var onComplete:Function;
public static const VERSION:Number = 1.31;
public static const API:Number = 1;
public function TweenPlugin(){
_tweens = [];
super();
}
protected function updateTweens(changeFactor:Number):void{
var pt:PropTween;
var val:Number;
var i:int = _tweens.length;
if (this.round){
while (i--) {
pt = _tweens[i];
val = (pt.start + (pt.change * changeFactor));
pt.target[pt.property] = ((val)>0) ? int((val + 0.5)) : int((val - 0.5));
};
} else {
while (i--) {
pt = _tweens[i];
pt.target[pt.property] = (pt.start + (pt.change * changeFactor));
};
};
}
protected function addTween(object:Object, propName:String, start:Number, end, overwriteProp:String=null):void{
var change:Number;
if (end != null){
change = ((typeof(end))=="number") ? (Number(end) - start) : Number(end);
if (change != 0){
_tweens[_tweens.length] = new PropTween(object, propName, start, change, ((overwriteProp) || (propName)), false);
};
};
}
public function get changeFactor():Number{
return (_changeFactor);
}
public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
addTween(target, this.propName, target[this.propName], value, this.propName);
return (true);
}
public function killProps(lookup:Object):void{
var i:int = this.overwriteProps.length;
while (i--) {
if ((this.overwriteProps[i] in lookup)){
this.overwriteProps.splice(i, 1);
};
};
i = _tweens.length;
while (i--) {
if ((PropTween(_tweens[i]).name in lookup)){
_tweens.splice(i, 1);
};
};
}
public function set changeFactor(n:Number):void{
updateTweens(n);
_changeFactor = n;
}
public static function activate(plugins:Array):Boolean{
var instance:Object;
TweenLite.onPluginEvent = TweenPlugin.onTweenEvent;
var i:int = plugins.length;
while (i--) {
if (plugins[i].hasOwnProperty("API")){
instance = new ((plugins[i] as Class));
TweenLite.plugins[instance.propName] = plugins[i];
};
};
return (true);
}
private static function onTweenEvent(type:String, tween:TweenLite):Boolean{
var changed:Boolean;
var tweens:Array;
var i:int;
var pt:PropTween = tween.cachedPT1;
if (type == "onInit"){
tweens = [];
while (pt) {
tweens[tweens.length] = pt;
pt = pt.nextNode;
};
tweens.sortOn("priority", (Array.NUMERIC | Array.DESCENDING));
i = tweens.length;
while (i--) {
PropTween(tweens[i]).nextNode = tweens[(i + 1)];
PropTween(tweens[i]).prevNode = tweens[(i - 1)];
};
tween.cachedPT1 = tweens[0];
} else {
while (pt) {
if (((pt.isPlugin) && (pt.target[type]))){
if (pt.target.activeDisable){
changed = true;
};
var _local7 = pt.target;
_local7[type]();
};
pt = pt.nextNode;
};
};
return (changed);
}
}
}//package com.greensock.plugins
Section 26
//VisiblePlugin (com.greensock.plugins.VisiblePlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
public class VisiblePlugin extends TweenPlugin {
protected var _target:Object;
protected var _initVal:Boolean;
protected var _visible:Boolean;
protected var _tween:TweenLite;
public static const API:Number = 1;
public function VisiblePlugin(){
super();
this.propName = "visible";
this.overwriteProps = ["visible"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
_target = target;
_tween = tween;
_initVal = _target.visible;
_visible = Boolean(value);
return (true);
}
override public function set changeFactor(n:Number):void{
if ((((n == 1)) && ((((_tween.cachedDuration == _tween.cachedTime)) || ((_tween.cachedTime == 0)))))){
_target.visible = _visible;
} else {
_target.visible = _initVal;
};
}
}
}//package com.greensock.plugins
Section 27
//VolumePlugin (com.greensock.plugins.VolumePlugin)
package com.greensock.plugins {
import flash.display.*;
import com.greensock.*;
import flash.media.*;
public class VolumePlugin extends TweenPlugin {
protected var _target:Object;
protected var _st:SoundTransform;
public static const API:Number = 1;
public function VolumePlugin(){
super();
this.propName = "volume";
this.overwriteProps = ["volume"];
}
override public function onInitTween(target:Object, value, tween:TweenLite):Boolean{
if (((isNaN(value)) || (!(target.hasOwnProperty("soundTransform"))))){
return (false);
};
_target = target;
_st = _target.soundTransform;
addTween(_st, "volume", _st.volume, value, "volume");
return (true);
}
override public function set changeFactor(n:Number):void{
updateTweens(n);
_target.soundTransform = _st;
}
}
}//package com.greensock.plugins
Section 28
//OverwriteManager (com.greensock.OverwriteManager)
package com.greensock {
import flash.utils.*;
import com.greensock.core.*;
import flash.errors.*;
public class OverwriteManager {
public static const ALL_ONSTART:int = 4;
public static const CONCURRENT:int = 3;
public static const ALL_IMMEDIATE:int = 1;
public static const PREEXISTING:int = 5;
public static const AUTO:int = 2;
public static const version:Number = 6;
public static const NONE:int = 0;
public static var enabled:Boolean;
public static var mode:int;
public function OverwriteManager(){
super();
}
public static function getGlobalPaused(tween:TweenCore):Boolean{
while (tween) {
if (tween.cachedPaused){
return (true);
};
tween = tween.timeline;
};
return (false);
}
public static function init(defaultMode:int=2):int{
if (TweenLite.version < 11.099994){
throw (new Error("Warning: Your TweenLite class needs to be updated to work with OverwriteManager (or you may need to clear your ASO files). Please download and install the latest version from http://www.tweenlite.com."));
};
TweenLite.overwriteManager = _slot1;
mode = defaultMode;
enabled = true;
return (mode);
}
public static function manageOverwrites(tween:TweenLite, props:Object, targetTweens:Array, mode:uint):Boolean{
var i:int;
var changed:Boolean;
var curTween:TweenLite;
var l:uint;
var combinedTimeScale:Number;
var combinedStartTime:Number;
var cousin:TweenCore;
var cousinStartTime:Number;
var timeline:SimpleTimeline;
if (mode >= 4){
l = targetTweens.length;
i = 0;
while (i < l) {
curTween = targetTweens[i];
if (curTween != tween){
if (curTween.setEnabled(false, false)){
changed = true;
};
} else {
if (mode == 5){
break;
};
};
i++;
};
return (changed);
};
var startTime:Number = tween.startTime;
var overlaps:Array = [];
var cousins:Array = [];
var cCount:uint;
var oCount:uint;
i = targetTweens.length;
while (i--) {
curTween = targetTweens[i];
if ((((curTween == tween)) || (curTween.gc))){
} else {
if (curTween.timeline != tween.timeline){
if (!getGlobalPaused(curTween)){
var _temp1 = cCount;
cCount = (cCount + 1);
var _local19 = _temp1;
cousins[_local19] = curTween;
};
} else {
if ((((((curTween.startTime <= startTime)) && (((curTween.startTime + curTween.totalDuration) > startTime)))) && (!(getGlobalPaused(curTween))))){
var _temp2 = oCount;
oCount = (oCount + 1);
_local19 = _temp2;
overlaps[_local19] = curTween;
};
};
};
};
if (cCount != 0){
combinedTimeScale = tween.cachedTimeScale;
combinedStartTime = startTime;
timeline = tween.timeline;
while (timeline) {
combinedTimeScale = (combinedTimeScale * timeline.cachedTimeScale);
combinedStartTime = (combinedStartTime + timeline.startTime);
timeline = timeline.timeline;
};
startTime = (combinedTimeScale * combinedStartTime);
i = cCount;
while (i--) {
cousin = cousins[i];
combinedTimeScale = cousin.cachedTimeScale;
combinedStartTime = cousin.startTime;
timeline = cousin.timeline;
while (timeline) {
combinedTimeScale = (combinedTimeScale * timeline.cachedTimeScale);
combinedStartTime = (combinedStartTime + timeline.startTime);
timeline = timeline.timeline;
};
cousinStartTime = (combinedTimeScale * combinedStartTime);
if ((((cousinStartTime <= startTime)) && (((((cousinStartTime + (cousin.totalDuration * combinedTimeScale)) > startTime)) || ((cousin.cachedDuration == 0)))))){
var _temp3 = oCount;
oCount = (oCount + 1);
_local19 = _temp3;
overlaps[_local19] = cousin;
};
};
};
if (oCount == 0){
return (changed);
};
i = oCount;
if (mode == 2){
while (i--) {
curTween = overlaps[i];
if (curTween.killVars(props)){
changed = true;
};
if ((((curTween.cachedPT1 == null)) && (curTween.initted))){
curTween.setEnabled(false, false);
};
};
} else {
while (i--) {
if (TweenLite(overlaps[i]).setEnabled(false, false)){
changed = true;
};
};
};
return (changed);
}
}
}//package com.greensock
Section 29
//TweenLite (com.greensock.TweenLite)
package com.greensock {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import com.greensock.core.*;
import com.greensock.plugins.*;
public class TweenLite extends TweenCore {
protected var _hasPlugins:Boolean;
public var propTweenLookup:Object;
public var cachedPT1:PropTween;
protected var _overwrite:uint;
protected var _ease:Function;
public var target:Object;
public var ratio:Number;// = 0
protected var _overwrittenProps:Object;
protected var _notifyPluginsOfEnabled:Boolean;
public static const version:Number = 11.121;
public static var rootTimeline:SimpleTimeline;
public static var fastEaseLookup:Dictionary = new Dictionary(false);
public static var onPluginEvent:Function;
public static var rootFramesTimeline:SimpleTimeline;
public static var defaultEase:Function = TweenLite.easeOut;
public static var plugins:Object = {};
public static var masterList:Dictionary = new Dictionary(false);
public static var overwriteManager:Object;
public static var rootFrame:Number;
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
private static var _shape:Shape = new Shape();
protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, onReverseComplete:1, onReverseCompleteParams:1, onRepeat:1, onRepeatParams:1, proxiedEase:1, easeParams:1, yoyo:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, onReverseCompleteListener:1, onRepeatListener:1, orientToBezier:1, timeScale:1, immediateRender:1, repeat:1, repeatDelay:1, timeline:1, data:1, paused:1};
public function TweenLite(target:Object, duration:Number, vars:Object){
var sibling:TweenLite;
super(duration, vars);
this.target = target;
if ((((this.target is TweenCore)) && (("timeScale" in this.vars)))){
this.cachedTimeScale = 1;
};
propTweenLookup = {};
_ease = defaultEase;
_overwrite = (((!((Number(vars.overwrite) > -1))) || (((!(overwriteManager.enabled)) && ((vars.overwrite > 1)))))) ? overwriteManager.mode : int(vars.overwrite);
var a:Array = masterList[target];
if (!a){
masterList[target] = [this];
} else {
if (_overwrite == 1){
for each (sibling in a) {
if (!sibling.gc){
sibling.setEnabled(false, false);
};
};
masterList[target] = [this];
} else {
a[a.length] = this;
};
};
if (((this.active) || (this.vars.immediateRender))){
renderTime(0, false, true);
};
}
protected function easeProxy(t:Number, b:Number, c:Number, d:Number):Number{
return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams)));
}
override public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
var isComplete:Boolean;
var prevTime:Number = this.cachedTime;
if (((!(this.active)) && (!(this.cachedPaused)))){
this.active = true;
};
if (time >= this.cachedDuration){
this.cachedTotalTime = (this.cachedTime = this.cachedDuration);
this.ratio = 1;
isComplete = true;
if (this.cachedDuration == 0){
if ((((((time == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == time))))){
force = true;
};
_rawPrevTime = time;
};
} else {
if (time <= 0){
this.cachedTotalTime = (this.cachedTime = (this.ratio = 0));
if (time < 0){
this.active = false;
if (this.cachedDuration == 0){
if (_rawPrevTime > 0){
force = true;
isComplete = true;
};
_rawPrevTime = time;
};
};
if (((this.cachedReversed) && (!((prevTime == 0))))){
isComplete = true;
};
} else {
this.cachedTotalTime = (this.cachedTime = time);
this.ratio = _ease(time, 0, 1, this.cachedDuration);
};
};
if ((((this.cachedTime == prevTime)) && (!(force)))){
return;
};
if (!this.initted){
init();
if (((!(isComplete)) && (this.cachedTime))){
this.ratio = _ease(this.cachedTime, 0, 1, this.cachedDuration);
};
};
if ((((((((prevTime == 0)) && (this.vars.onStart))) && (!((this.cachedTime == 0))))) && (!(suppressEvents)))){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
var pt:PropTween = this.cachedPT1;
while (pt) {
pt.target[pt.property] = (pt.start + (this.ratio * pt.change));
pt = pt.nextNode;
};
if (((_hasUpdate) && (!(suppressEvents)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (isComplete){
if (((_hasPlugins) && (this.cachedPT1))){
onPluginEvent("onComplete", this);
};
complete(true, suppressEvents);
};
}
override public function setEnabled(enabled:Boolean, ignoreTimeline:Boolean=false):Boolean{
var a:Array;
if (enabled == this.gc){
if (enabled){
a = TweenLite.masterList[this.target];
if (!a){
TweenLite.masterList[this.target] = [this];
} else {
a[a.length] = this;
};
};
super.setEnabled(enabled, ignoreTimeline);
if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){
return (onPluginEvent((enabled) ? "onEnable" : "onDisable", this));
};
};
return (false);
}
protected function init():void{
var p:String;
var i:int;
var plugin:*;
var prioritize:Boolean;
var siblings:Array;
var pt:PropTween;
if (typeof(this.vars.ease) == "function"){
_ease = this.vars.ease;
};
if (this.vars.easeParams){
this.vars.proxiedEase = _ease;
_ease = easeProxy;
};
this.cachedPT1 = null;
this.propTweenLookup = {};
for (p in this.vars) {
if ((((p in _reservedProps)) && (!((((p == "timeScale")) && ((this.target is TweenCore))))))){
} else {
if ((((p in plugins)) && (new ((plugins[p] as Class)).onInitTween(this.target, this.vars[p], this)))){
this.cachedPT1 = new PropTween(plugin, "changeFactor", 0, 1, ((plugin.overwriteProps.length)==1) ? plugin.overwriteProps[0] : "_MULTIPLE_", true, this.cachedPT1);
if (this.cachedPT1.name == "_MULTIPLE_"){
i = plugin.overwriteProps.length;
while (i--) {
this.propTweenLookup[plugin.overwriteProps[i]] = this.cachedPT1;
};
} else {
this.propTweenLookup[this.cachedPT1.name] = this.cachedPT1;
};
if (plugin.priority){
this.cachedPT1.priority = plugin.priority;
prioritize = true;
};
if (((plugin.onDisable) || (plugin.onEnable))){
_notifyPluginsOfEnabled = true;
};
_hasPlugins = true;
} else {
this.cachedPT1 = new PropTween(this.target, p, Number(this.target[p]), ((typeof(this.vars[p]))=="number") ? (Number(this.vars[p]) - this.target[p]) : Number(this.vars[p]), p, false, this.cachedPT1);
this.propTweenLookup[p] = this.cachedPT1;
};
};
};
if (prioritize){
onPluginEvent("onInit", this);
};
if (this.vars.runBackwards){
pt = this.cachedPT1;
while (pt) {
pt.start = (pt.start + pt.change);
pt.change = -(pt.change);
pt = pt.nextNode;
};
};
_hasUpdate = Boolean(!((this.vars.onUpdate == null)));
if (_overwrittenProps){
killVars(_overwrittenProps);
if (this.cachedPT1 == null){
this.setEnabled(false, false);
};
};
if ((((((((_overwrite > 1)) && (this.cachedPT1))) && (masterList[this.target]))) && ((siblings.length > 1)))){
if (overwriteManager.manageOverwrites(this, this.propTweenLookup, siblings, _overwrite)){
init();
};
};
this.initted = true;
}
public function killVars(vars:Object, permanent:Boolean=true):Boolean{
var p:String;
var pt:PropTween;
var changed:Boolean;
if (_overwrittenProps == null){
_overwrittenProps = {};
};
for (p in vars) {
if ((p in propTweenLookup)){
pt = propTweenLookup[p];
if (((pt.isPlugin) && ((pt.name == "_MULTIPLE_")))){
pt.target.killProps(vars);
if (pt.target.overwriteProps.length == 0){
pt.name = "";
};
};
if (pt.name != "_MULTIPLE_"){
if (pt.nextNode){
pt.nextNode.prevNode = pt.prevNode;
};
if (pt.prevNode){
pt.prevNode.nextNode = pt.nextNode;
} else {
if (this.cachedPT1 == pt){
this.cachedPT1 = pt.nextNode;
};
};
if (((pt.isPlugin) && (pt.target.onDisable))){
pt.target.onDisable();
if (pt.target.activeDisable){
changed = true;
};
};
delete propTweenLookup[p];
};
};
if (permanent){
_overwrittenProps[p] = 1;
};
};
return (changed);
}
override public function invalidate():void{
if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){
onPluginEvent("onDisable", this);
};
this.cachedPT1 = null;
_overwrittenProps = null;
_hasUpdate = (this.initted = (this.active = (_notifyPluginsOfEnabled = false)));
this.propTweenLookup = {};
}
public static function initClass():void{
rootFrame = 0;
rootTimeline = new SimpleTimeline(null);
rootFramesTimeline = new SimpleTimeline(null);
rootTimeline.cachedStartTime = (getTimer() * 0.001);
rootFramesTimeline.cachedStartTime = rootFrame;
rootTimeline.autoRemoveChildren = true;
rootFramesTimeline.autoRemoveChildren = true;
_shape.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true);
if (overwriteManager == null){
overwriteManager = {mode:1, enabled:false};
};
}
public static function killTweensOf(target:Object, complete:Boolean=false):void{
var a:Array;
var i:int;
if ((target in masterList)){
a = masterList[target];
i = a.length;
while (i--) {
if (!TweenLite(a[i]).gc){
if (complete){
TweenLite(a[i]).complete(false, false);
} else {
TweenLite(a[i]).setEnabled(false, false);
};
};
};
delete masterList[target];
};
}
public static function from(target:Object, duration:Number, vars:Object):TweenLite{
vars.runBackwards = true;
if (!("immediateRender" in vars)){
vars.immediateRender = true;
};
return (new TweenLite(target, duration, vars));
}
protected static function easeOut(t:Number, b:Number, c:Number, d:Number):Number{
t = (1 - (t / d));
return ((1 - (t * t)));
}
public static function delayedCall(delay:Number, onComplete:Function, onCompleteParams:Array=null, useFrames:Boolean=false):TweenLite{
return (new TweenLite(onComplete, 0, {delay:delay, onComplete:onComplete, onCompleteParams:onCompleteParams, immediateRender:false, useFrames:useFrames, overwrite:0}));
}
protected static function updateAll(e:Event=null):void{
var ml:Dictionary;
var tgt:Object;
var a:Array;
var i:int;
rootTimeline.renderTime((((getTimer() * 0.001) - rootTimeline.cachedStartTime) * rootTimeline.cachedTimeScale), false, false);
rootFrame++;
rootFramesTimeline.renderTime(((rootFrame - rootFramesTimeline.cachedStartTime) * rootFramesTimeline.cachedTimeScale), false, false);
if (!(rootFrame % 60)){
ml = masterList;
for (tgt in ml) {
a = ml[tgt];
i = a.length;
while (i--) {
if (TweenLite(a[i]).gc){
a.splice(i, 1);
};
};
if (a.length == 0){
delete ml[tgt];
};
};
};
}
public static function to(target:Object, duration:Number, vars:Object):TweenLite{
return (new TweenLite(target, duration, vars));
}
}
}//package com.greensock
Section 30
//TweenMax (com.greensock.TweenMax)
package com.greensock {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import com.greensock.core.*;
import com.greensock.plugins.*;
import com.greensock.events.*;
public class TweenMax extends TweenLite implements IEventDispatcher {
protected var _easeType:uint;
public var yoyo:Boolean;
protected var _easePower:uint;
protected var _repeat:int;// = 0
protected var _cyclesComplete:uint;// = 0
protected var _dispatcher:EventDispatcher;
protected var _hasUpdateListener:Boolean;
protected var _repeatDelay:Number;// = 0
public static const version:Number = 11.12;
private static var _overwriteMode:int = (OverwriteManager.enabled) ? OverwriteManager.mode : OverwriteManager.init(2);
;
public static var killTweensOf:Function = TweenLite.killTweensOf;
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
public function TweenMax(target:Object, duration:Number, vars:Object){
super(target, duration, vars);
if (TweenLite.version < 11.1){
throw (new Error("TweenMax error! Please update your TweenLite class or try deleting your ASO files. TweenMax requires a more recent version. Download updates at http://www.TweenMax.com."));
};
this.yoyo = Boolean(this.vars.yoyo);
_repeat = ((this.vars.repeat) || (0));
_repeatDelay = ((this.vars.repeatDelay) || (0));
this.cacheIsDirty = true;
if (((((((((this.vars.onCompleteListener) || (this.vars.onUpdateListener))) || (this.vars.onStartListener))) || (this.vars.onRepeatListener))) || (this.vars.onReverseCompleteListener))){
initDispatcher();
if ((((duration == 0)) && ((_delay == 0)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE));
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE));
};
};
if (((("timeScale" in this.vars)) && (!((this.target is TweenCore))))){
this.cachedTimeScale = this.vars.timeScale;
};
}
override public function renderTime(time:Number, suppressEvents:Boolean=false, force:Boolean=false):void{
var isComplete:Boolean;
var repeated:Boolean;
var setRatio:Boolean;
var cycleDuration:Number;
var power:uint;
var val:Number;
if (((!(this.active)) && (!(this.cachedPaused)))){
this.active = true;
};
var totalDur:Number = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration;
var prevTime:Number = this.cachedTime;
if (time >= totalDur){
this.cachedTotalTime = totalDur;
this.cachedTime = this.cachedDuration;
this.ratio = 1;
isComplete = true;
if (this.cachedDuration == 0){
if ((((((time == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == time))))){
force = true;
};
_rawPrevTime = time;
};
} else {
if (time <= 0){
if (time < 0){
this.active = false;
if (this.cachedDuration == 0){
if (_rawPrevTime > 0){
force = true;
isComplete = true;
};
_rawPrevTime = time;
};
};
this.cachedTotalTime = (this.cachedTime = (this.ratio = 0));
if (((this.cachedReversed) && (!((prevTime == 0))))){
isComplete = true;
};
} else {
this.cachedTotalTime = (this.cachedTime = time);
setRatio = true;
};
};
if (_repeat != 0){
cycleDuration = (this.cachedDuration + _repeatDelay);
if (isComplete){
if (((this.yoyo) && ((_repeat % 2)))){
this.cachedTime = (this.ratio = 0);
};
} else {
if (time > 0){
if (_cyclesComplete != (_cyclesComplete = int((this.cachedTotalTime / cycleDuration)))){
repeated = true;
};
this.cachedTime = (((this.cachedTotalTime / cycleDuration) - _cyclesComplete) * cycleDuration);
if (((this.yoyo) && ((_cyclesComplete % 2)))){
this.cachedTime = (this.cachedDuration - this.cachedTime);
} else {
if (this.cachedTime >= this.cachedDuration){
this.cachedTime = this.cachedDuration;
this.ratio = 1;
setRatio = false;
};
};
if (this.cachedTime <= 0){
this.cachedTime = (this.ratio = 0);
setRatio = false;
};
};
};
};
if ((((prevTime == this.cachedTime)) && (!(force)))){
return;
};
if (!this.initted){
init();
};
if (setRatio){
if (_easeType){
power = _easePower;
val = (this.cachedTime / this.cachedDuration);
if (_easeType == 2){
val = (1 - val);
this.ratio = val;
while (power--) {
this.ratio = (val * this.ratio);
};
this.ratio = (1 - this.ratio);
} else {
if (_easeType == 1){
this.ratio = val;
while (power--) {
this.ratio = (val * this.ratio);
};
} else {
if (val < 0.5){
val = (val * 2);
this.ratio = val;
while (power--) {
this.ratio = (val * this.ratio);
};
this.ratio = (this.ratio * 0.5);
} else {
val = ((1 - val) * 2);
this.ratio = val;
while (power--) {
this.ratio = (val * this.ratio);
};
this.ratio = (1 - (0.5 * this.ratio));
};
};
};
} else {
this.ratio = _ease(this.cachedTime, 0, 1, this.cachedDuration);
};
};
if ((((((prevTime == 0)) && (!((this.cachedTotalTime == 0))))) && (!(suppressEvents)))){
if (this.vars.onStart){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
if (_dispatcher){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.START));
};
};
var pt:PropTween = this.cachedPT1;
while (pt) {
pt.target[pt.property] = (pt.start + (this.ratio * pt.change));
pt = pt.nextNode;
};
if (((_hasUpdate) && (!(suppressEvents)))){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (((_hasUpdateListener) && (!(suppressEvents)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE));
};
if (isComplete){
if (((_hasPlugins) && (this.cachedPT1))){
onPluginEvent("onComplete", this);
};
complete(true, suppressEvents);
} else {
if (((repeated) && (!(suppressEvents)))){
if (this.vars.onRepeat){
this.vars.onRepeat.apply(null, this.vars.onRepeatParams);
};
if (_dispatcher){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REPEAT));
};
};
};
}
public function willTrigger(type:String):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.willTrigger(type));
}
protected function insertPropTween(target:Object, property:String, start:Number, end, name:String, isPlugin:Boolean, nextNode:PropTween):PropTween{
var op:Array;
var i:int;
var pt:PropTween = new PropTween(target, property, start, ((typeof(end))=="number") ? (end - start) : Number(end), name, isPlugin, nextNode);
if (((isPlugin) && ((name == "_MULTIPLE_")))){
op = target.overwriteProps;
i = op.length;
while (i--) {
this.propTweenLookup[op[i]] = pt;
};
} else {
this.propTweenLookup[name] = pt;
};
return (pt);
}
override protected function init():void{
var startTween:TweenMax;
var j:int;
var prop:String;
var multiProps:String;
var rp:Array;
var plugin:Object;
var ptPlugin:PropTween;
var pt:PropTween;
var i:int;
if (this.vars.startAt){
this.vars.startAt.overwrite = 0;
this.vars.startAt.immediateRender = true;
startTween = new TweenMax(this.target, 0, this.vars.startAt);
};
super.init();
if ((_ease in fastEaseLookup)){
_easeType = fastEaseLookup[_ease][0];
_easePower = fastEaseLookup[_ease][1];
};
if (((!((this.vars.roundProps == null))) && (("roundProps" in TweenLite.plugins)))){
rp = this.vars.roundProps;
i = rp.length;
while (i--) {
prop = rp[i];
pt = this.cachedPT1;
while (pt) {
if (pt.name == prop){
if (pt.isPlugin){
pt.target.round = true;
} else {
if (plugin == null){
plugin = new TweenLite.plugins.roundProps();
plugin.add(pt.target, prop, pt.start, pt.change);
_hasPlugins = true;
ptPlugin = insertPropTween(plugin, "changeFactor", 0, 1, "_MULTIPLE_", true, this.cachedPT1);
this.cachedPT1 = ptPlugin;
} else {
plugin.add(pt.target, prop, pt.start, pt.change);
};
this.removePropTween(pt);
this.propTweenLookup[prop] = ptPlugin;
};
} else {
if (((((pt.isPlugin) && ((pt.name == "_MULTIPLE_")))) && (!(pt.target.round)))){
multiProps = ((" " + pt.target.overwriteProps.join(" ")) + " ");
if (multiProps.indexOf(((" " + prop) + " ")) != -1){
pt.target.round = true;
};
};
};
pt = pt.nextNode;
};
};
};
}
public function get totalProgress():Number{
return ((this.cachedTotalTime / this.totalDuration));
}
public function set currentProgress(n:Number):void{
if (_cyclesComplete == 0){
setTotalTime((this.duration * n), false);
} else {
setTotalTime(((this.duration * n) + (_cyclesComplete * this.cachedDuration)), false);
};
}
protected function adjustStartValues():void{
var inv:Number;
var pt:PropTween;
var endValue:Number;
if (this.cachedTime != 0){
inv = (1 / (1 - this.ratio));
pt = this.cachedPT1;
while (pt) {
if (!pt.isPlugin){
endValue = (pt.start + pt.change);
pt.change = ((endValue - pt.target[pt.property]) * inv);
pt.start = (endValue - pt.change);
pt = pt.nextNode;
};
};
};
}
public function get repeat():int{
return (_repeat);
}
public function set totalProgress(n:Number):void{
setTotalTime((this.totalDuration * n), false);
}
protected function removePropTween(propTween:PropTween):Boolean{
if (propTween.nextNode){
propTween.nextNode.prevNode = propTween.prevNode;
};
if (propTween.prevNode){
propTween.prevNode.nextNode = propTween.nextNode;
} else {
if (this.cachedPT1 == propTween){
this.cachedPT1 = propTween.nextNode;
};
};
if (((propTween.isPlugin) && (propTween.target.onDisable))){
propTween.target.onDisable();
if (propTween.target.activeDisable){
return (true);
};
};
return (false);
}
public function get repeatDelay():Number{
return (_repeatDelay);
}
protected function updateTo(vars:Object, adjustStartingValues:Boolean=true):void{
var p:String;
var plugin:Object;
var prioritize:Boolean;
var pluginKillVars:Object;
var i:int;
var pt:PropTween = this.cachedPT1;
var curTime:Number = this.cachedTotalTime;
if (this.initted){
if (!adjustStartingValues){
this.totalTime = 0;
};
killVars(vars, false);
for (p in vars) {
if ((p in _reservedProps)){
} else {
if ((((p in plugins)) && (new ((plugins[p] as Class)).onInitTween(this.target, vars[p], this)))){
pluginKillVars = {};
i = plugin.overwriteProps.length;
while (i--) {
pluginKillVars[plugin.overwriteProps[i]] = true;
};
killVars(pluginKillVars, false);
this.cachedPT1 = insertPropTween(plugin, "changeFactor", 0, 1, ((plugin.overwriteProps.length)==1) ? plugin.overwriteProps[0] : "_MULTIPLE_", true, this.cachedPT1);
_hasPlugins = true;
if (plugin.priority){
this.cachedPT1.priority = plugin.priority;
prioritize = true;
};
} else {
this.cachedPT1 = insertPropTween(this.target, p, this.target[p], vars[p], p, false, this.cachedPT1);
};
};
this.vars[p] = vars[p];
};
if (prioritize){
onPluginEvent("onInit", this);
};
if (((adjustStartingValues) && (this.cachedTotalTime))){
adjustStartValues();
};
} else {
for (p in vars) {
this.vars[p] = vars[p];
};
};
}
public function killProperties(names:Array):void{
var v:Object = {};
var i:int = names.length;
while (i--) {
v[names[i]] = true;
};
killVars(v);
}
public function set repeat(n:int):void{
_repeat = n;
setDirtyCache(true);
}
override public function complete(skipRender:Boolean=false, suppressEvents:Boolean=false):void{
super.complete(skipRender, suppressEvents);
if (((!(suppressEvents)) && (_dispatcher))){
if ((((this.cachedTotalTime == this.cachedTotalDuration)) && (!(this.cachedReversed)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE));
} else {
if (((this.cachedReversed) && ((this.cachedTotalTime == 0)))){
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.REVERSE_COMPLETE));
};
};
};
}
override public function invalidate():void{
this.yoyo = Boolean((this.vars.yoyo == true));
_repeat = ((this.vars.repeat) || (0));
_repeatDelay = ((this.vars.repeatDelay) || (0));
_hasUpdateListener = false;
if (((((!((this.vars.onCompleteListener == null))) || (!((this.vars.onUpdateListener == null))))) || (!((this.vars.onStartListener == null))))){
initDispatcher();
};
setDirtyCache(true);
super.invalidate();
}
public function dispatchEvent(e:Event):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.dispatchEvent(e));
}
public function removeEventListener(type:String, listener:Function, useCapture:Boolean=false):void{
if (_dispatcher){
_dispatcher.removeEventListener(type, listener, useCapture);
};
}
public function setDestination(property:String, value, adjustStartValues:Boolean=true):void{
var vars:Object = {};
vars[property] = value;
updateTo(vars, adjustStartValues);
}
public function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void{
if (_dispatcher == null){
initDispatcher();
};
if (type == TweenEvent.UPDATE){
_hasUpdateListener = true;
};
_dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
public function set repeatDelay(n:Number):void{
_repeatDelay = n;
setDirtyCache(true);
}
override public function set currentTime(n:Number):void{
if (_cyclesComplete == 0){
} else {
if (((this.yoyo) && (((_cyclesComplete % 2) == 1)))){
n = ((this.duration - n) + (_cyclesComplete * (this.cachedDuration + _repeatDelay)));
} else {
n = (n + (_cyclesComplete * (this.duration + _repeatDelay)));
};
};
setTotalTime(n, false);
}
public function get currentProgress():Number{
return ((this.cachedTime / this.duration));
}
protected function initDispatcher():void{
if (_dispatcher == null){
_dispatcher = new EventDispatcher(this);
};
if ((this.vars.onStartListener is Function)){
_dispatcher.addEventListener(TweenEvent.START, this.vars.onStartListener, false, 0, true);
};
if ((this.vars.onUpdateListener is Function)){
_dispatcher.addEventListener(TweenEvent.UPDATE, this.vars.onUpdateListener, false, 0, true);
_hasUpdateListener = true;
};
if ((this.vars.onCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.COMPLETE, this.vars.onCompleteListener, false, 0, true);
};
if ((this.vars.onRepeatListener is Function)){
_dispatcher.addEventListener(TweenEvent.REPEAT, this.vars.onRepeatListener, false, 0, true);
};
if ((this.vars.onReverseCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.REVERSE_COMPLETE, this.vars.onReverseCompleteListener, false, 0, true);
};
}
override public function set totalDuration(n:Number):void{
if (_repeat == -1){
return;
};
this.duration = ((n - (_repeat * _repeatDelay)) / (_repeat + 1));
}
public function hasEventListener(type:String):Boolean{
return (((_dispatcher)==null) ? false : _dispatcher.hasEventListener(type));
}
override public function get totalDuration():Number{
if (this.cacheIsDirty){
this.cachedTotalDuration = ((_repeat)==-1) ? 999999999999 : ((this.cachedDuration * (_repeat + 1)) + (_repeatDelay * _repeat));
this.cacheIsDirty = false;
};
return (this.cachedTotalDuration);
}
public function set timeScale(n:Number):void{
if (n == 0){
n = 0.0001;
};
var tlTime:Number = (((_pauseTime) || ((_pauseTime == 0)))) ? _pauseTime : this.timeline.cachedTotalTime;
this.cachedStartTime = (tlTime - (((tlTime - this.cachedStartTime) * this.cachedTimeScale) / n));
this.cachedTimeScale = n;
setDirtyCache(false);
}
public function get timeScale():Number{
return (this.cachedTimeScale);
}
public static function set globalTimeScale(n:Number):void{
if (n == 0){
n = 0.0001;
};
if (TweenLite.rootTimeline == null){
TweenLite.to({}, 0, {});
};
var tl:SimpleTimeline = TweenLite.rootTimeline;
var curTime:Number = (getTimer() * 0.001);
tl.cachedStartTime = (curTime - (((curTime - tl.cachedStartTime) * tl.cachedTimeScale) / n));
tl = TweenLite.rootFramesTimeline;
curTime = TweenLite.rootFrame;
tl.cachedStartTime = (curTime - (((curTime - tl.cachedStartTime) * tl.cachedTimeScale) / n));
TweenLite.rootFramesTimeline.cachedTimeScale = (TweenLite.rootTimeline.cachedTimeScale = n);
}
public static function fromTo(target:Object, duration:Number, fromVars:Object, toVars:Object):TweenMax{
toVars.startAt = fromVars;
if (fromVars.immediateRender){
toVars.immediateRender = true;
};
return (new TweenMax(target, duration, toVars));
}
public static function allFromTo(targets:Array, duration:Number, fromVars:Object, toVars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array{
toVars.startAt = fromVars;
if (fromVars.immediateRender){
toVars.immediateRender = true;
};
return (allTo(targets, duration, toVars, stagger, onCompleteAll, onCompleteAllParams));
}
public static function pauseAll(tweens:Boolean=true, delayedCalls:Boolean=true):void{
changePause(true, tweens, delayedCalls);
}
public static function getTweensOf(target:Object):Array{
var i:int;
var a:Array = masterList[target];
var toReturn:Array = [];
if (a){
i = a.length;
while (i--) {
if (!a[i].gc){
toReturn[toReturn.length] = a[i];
};
};
};
return (toReturn);
}
public static function get globalTimeScale():Number{
return (((TweenLite.rootTimeline)==null) ? 1 : TweenLite.rootTimeline.cachedTimeScale);
}
public static function killChildTweensOf(parent:DisplayObjectContainer, complete:Boolean=false):void{
var curTarget:Object;
var curParent:DisplayObjectContainer;
var a:Array = getAllTweens();
var i:int = a.length;
while (i--) {
curTarget = a[i].target;
if ((curTarget is DisplayObject)){
curParent = curTarget.parent;
while (curParent) {
if (curParent == parent){
if (complete){
a[i].complete(false);
} else {
a[i].setEnabled(false, false);
};
};
curParent = curParent.parent;
};
};
};
}
public static function delayedCall(delay:Number, onComplete:Function, onCompleteParams:Array=null, useFrames:Boolean=false):TweenMax{
return (new TweenMax(onComplete, 0, {delay:delay, onComplete:onComplete, onCompleteParams:onCompleteParams, immediateRender:false, useFrames:useFrames, overwrite:0}));
}
public static function isTweening(target:Object):Boolean{
var tween:TweenLite;
var a:Array = getTweensOf(target);
var i:int = a.length;
while (i--) {
tween = a[i];
if (((tween.active) || ((((tween.cachedStartTime == tween.timeline.cachedTime)) && (tween.timeline.active))))){
return (true);
};
};
return (false);
}
public static function killAll(complete:Boolean=false, tweens:Boolean=true, delayedCalls:Boolean=true):void{
var isDC:Boolean;
var a:Array = getAllTweens();
var i:int = a.length;
while (i--) {
isDC = (a[i].target == a[i].vars.onComplete);
if ((((isDC == delayedCalls)) || (!((isDC == tweens))))){
if (complete){
a[i].complete(false);
} else {
a[i].setEnabled(false, false);
};
};
};
}
private static function changePause(pause:Boolean, tweens:Boolean=true, delayedCalls:Boolean=false):void{
var isDC:Boolean;
var a:Array = getAllTweens();
var i:int = a.length;
while (i--) {
isDC = (TweenLite(a[i]).target == TweenLite(a[i]).vars.onComplete);
if ((((isDC == delayedCalls)) || (!((isDC == tweens))))){
TweenCore(a[i]).paused = pause;
};
};
}
public static function from(target:Object, duration:Number, vars:Object):TweenMax{
vars.runBackwards = true;
if (!("immediateRender" in vars)){
vars.immediateRender = true;
};
return (new TweenMax(target, duration, vars));
}
public static function allFrom(targets:Array, duration:Number, vars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array{
vars.runBackwards = true;
if (!("immediateRender" in vars)){
vars.immediateRender = true;
};
return (allTo(targets, duration, vars, stagger, onCompleteAll, onCompleteAllParams));
}
public static function getAllTweens():Array{
var a:Array;
var i:int;
var ml:Dictionary = masterList;
var cnt:uint;
var toReturn:Array = [];
for each (a in ml) {
i = a.length;
while (i--) {
if (!TweenLite(a[i]).gc){
var _temp1 = cnt;
cnt = (cnt + 1);
var _local8 = _temp1;
toReturn[_local8] = a[i];
};
};
};
return (toReturn);
}
public static function resumeAll(tweens:Boolean=true, delayedCalls:Boolean=true):void{
changePause(false, tweens, delayedCalls);
}
public static function to(target:Object, duration:Number, vars:Object):TweenMax{
return (new TweenMax(target, duration, vars));
}
public static function allTo(targets:Array, duration:Number, vars:Object, stagger:Number=0, onCompleteAll:Function=null, onCompleteAllParams:Array=null):Array{
var i:int;
var varsDup:Object;
var p:String;
var onCompleteProxy:Function;
var onCompleteParamsProxy:Array;
var targets = targets;
var duration = duration;
var vars = vars;
var stagger = stagger;
var onCompleteAll = onCompleteAll;
var onCompleteAllParams = onCompleteAllParams;
var l:uint = targets.length;
var a:Array = [];
var curDelay:Number = ((vars.delay) || (0));
onCompleteProxy = vars.onComplete;
onCompleteParamsProxy = vars.onCompleteParams;
var lastIndex:int = ((stagger)<=0) ? 0 : (l - 1);
i = 0;
while (i < l) {
varsDup = {};
for (p in vars) {
varsDup[p] = vars[p];
};
varsDup.delay = curDelay;
if ((((i == lastIndex)) && (!((onCompleteAll == null))))){
varsDup.onComplete = function ():void{
if (onCompleteProxy != null){
onCompleteProxy.apply(null, onCompleteParamsProxy);
};
onCompleteAll.apply(null, onCompleteAllParams);
};
};
a[a.length] = new TweenMax(targets[i], duration, varsDup);
curDelay = (curDelay + stagger);
i = (i + 1);
};
return (a);
}
TweenPlugin.activate([AutoAlphaPlugin, EndArrayPlugin, FramePlugin, RemoveTintPlugin, TintPlugin, VisiblePlugin, VolumePlugin, BevelFilterPlugin, BezierPlugin, BezierThroughPlugin, BlurFilterPlugin, ColorMatrixFilterPlugin, ColorTransformPlugin, DropShadowFilterPlugin, FrameLabelPlugin, GlowFilterPlugin, HexColorsPlugin, RoundPropsPlugin, ShortRotationPlugin, {}]);
}
}//package com.greensock
Section 31
//Tracker (com.memecounter.Tracker)
package com.memecounter {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
import flash.system.*;
public class Tracker {
public static const ORI_DOM:String = "ori_dom";
public static const LOCALHOST:String = "localhost";
public static const LOCAL:String = "Local";
public static const TRACKER_PATH:String = "/node/tracking/trackerAS3.swf";
private static var ori_dom:String;
private static var lurl:String;
private static var _isReady:Boolean = false;
public static var a:uint = 0;
public static var root:DisplayObject;
public static var c:uint;
public static var d:String = "";
private static var _isInited:Boolean = false;
public static var mcEvent:Function;
public static var fpv:String = "";
private static var l:Loader;
private static var tracker:MovieClip;
public static var da:Array = ["distralytics.com", "distralytics.co.uk"];
public function Tracker(){
super();
}
private static function loadError(e:Event):void{
a++;
lc();
}
public static function init(cId:uint, r:DisplayObject):void{
var i:uint;
if (!_isInited){
_isInited = true;
c = cId;
root = r;
i = 0;
while (i < da.length) {
Security.allowDomain(("*" + da[i]));
Security.allowDomain(da[i]);
Security.allowDomain(((c + ".c.") + da[i]));
Security.allowDomain(("*." + da[i]));
i++;
};
ori_dom = (root.loaderInfo.parameters.hasOwnProperty(ORI_DOM)) ? root.loaderInfo.parameters[ORI_DOM] : "";
d = ((ori_dom)!="") ? ori_dom : ((new LocalConnection().domain.indexOf(LOCALHOST))==-1) ? new LocalConnection().domain : LOCAL;
fpv = Capabilities.version.split(" ")[1].split(",")[0];
lurl = (((((((((TRACKER_PATH + "?c=") + c) + "&r=") + Math.floor((Math.random() * 10000000000))) + "&d=") + d) + "&p=") + fpv) + "&as=3");
l = new Loader();
l.contentLoaderInfo.addEventListener(Event.INIT, loadComplete);
l.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
lc();
mcEvent = kvEvent;
};
}
public static function kvClick(clickId:uint):void{
if (_isReady){
tracker.kvClick(clickId);
};
}
public static function get isReady():Boolean{
return (_isReady);
}
public static function mcClick(url:String, targ:String=null):void{
if (_isReady){
tracker.mcClick(url, targ);
};
}
public static function kvEvent(eventId):void{
if (_isReady){
tracker.kvEvent(eventId);
};
}
public static function kvCountry():String{
if (_isReady){
return (tracker.kvCountry());
};
return ("");
}
private static function lc():void{
var d:String;
var dom:String = da[(a % da.length)];
if (dom.charAt(0) === "."){
d = (("http://" + dom.substr(1, (dom.length - 1))) + lurl);
} else {
d = (((("http://" + c) + ".c.") + dom) + lurl);
};
Security.allowDomain(d);
l.load(new URLRequest(d));
}
private static function loadComplete(e:Event):void{
var e = e;
tracker = e.target.content;
tracker.init(getDefinitionByName("com.memecounter.Tracker"), root);
_isReady = true;
//unresolved jump
var _slot1 = e;
trace("Memecounter error: unable to access tracker object due to security sandbox.");
}
}
}//package com.memecounter
Section 32
//MochiBot (Mochi.MochiBot)
package Mochi {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public function MochiBot(){
super();
}
public static function track(parent:Sprite, tag:String):MochiBot{
if (Security.sandboxType == "localWithFile"){
return (null);
};
var self:MochiBot = new (MochiBot);
parent.addChild(self);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var server:String = "http://core.mochibot.com/my/core.swf";
var lv:URLVariables = new URLVariables();
lv["sb"] = Security.sandboxType;
lv["v"] = Capabilities.version;
lv["swfid"] = tag;
lv["mv"] = "8";
lv["fv"] = "9";
var url:String = self.root.loaderInfo.loaderURL;
if (url.indexOf("http") == 0){
lv["url"] = url;
} else {
lv["url"] = "local";
};
var req:URLRequest = new URLRequest(server);
req.contentType = "application/x-www-form-urlencoded";
req.method = URLRequestMethod.POST;
req.data = lv;
var loader:Loader = new Loader();
self.addChild(loader);
loader.load(req);
return (self);
}
}
}//package Mochi
Section 33
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.2.0.3958";
public function ByteArrayAsset(){
super();
}
}
}//package mx.core
Section 34
//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.2.0.3958";
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 35
//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.2.0.3958";
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 36
//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.2.0.3958";
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 37
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 38
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 39
//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 40
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get isDocument():Boolean;
function set repeaters(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function initializeRepeaterArrays(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 41
//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.2.0.3958";
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 42
//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.2.0.3958";
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 43
//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 44
//SoundAsset (mx.core.SoundAsset)
package mx.core {
import flash.media.*;
public class SoundAsset extends Sound implements IFlexAsset {
mx_internal static const VERSION:String = "3.2.0.3958";
public function SoundAsset(){
super();
}
}
}//package mx.core
Section 45
//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.2.0.3958";
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 46
//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.2.0.3958";
private static var counter:int = 0;
public function NameUtil(){
super();
}
public static function displayObjectToString(displayObject:DisplayObject):String{
var result:String;
var o:DisplayObject;
var s:String;
var indices:Array;
var displayObject = displayObject;
o = displayObject;
while (o != null) {
if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){
break;
};
s = o.name;
if ((o is IRepeaterClient)){
indices = IRepeaterClient(o).instanceIndices;
if (indices){
s = (s + (("[" + indices.join("][")) + "]"));
};
};
result = ((result == null)) ? s : ((s + ".") + result);
o = o.parent;
};
//unresolved jump
var _slot1 = e;
return (result);
}
public static function createUniqueName(object:Object):String{
if (!object){
return (null);
};
var name:String = getQualifiedClassName(object);
var index:int = name.indexOf("::");
if (index != -1){
name = name.substr((index + 2));
};
var charCode:int = name.charCodeAt((name.length - 1));
if ((((charCode >= 48)) && ((charCode <= 57)))){
name = (name + "_");
};
return ((name + counter++));
}
}
}//package mx.utils
Section 47
//Engine (net.louissi.Moon.Engines.Engine)
package net.louissi.Moon.Engines {
import flash.events.*;
import flash.display.*;
import net.louissi.Moon.Managers.*;
import Mochi.*;
import net.louissi.Moon.Transitions.*;
import flash.utils.*;
import net.louissi.Moon.Global.*;
import flash.ui.*;
import flash.net.*;
import flash.text.*;
public class Engine extends MovieClip {
private const ONE_SECOND:int = 1000;
private var fps:int;
private var fpsTime:int;
private var lastTime:int;
private var preloaderClass:Class;
private var fpsCount:int;
private var mainClassName:String;
private var paused:Boolean;
private var screenManager:ScreenManager;
private var firstScreen:Class;
private var mainClass:Object;
public function Engine(mainClassName:String, preloaderClass:Class, stageWidth:Number, stageHeight:Number, isLoadingEmbedded:Boolean, domains:Array, mochibot:String){
var item:ContextMenuItem;
var sharedObject:SharedObject;
var sender:LocalConnection;
var text:TextField;
super();
sender = new LocalConnection();
if (((!((mochibot == ""))) && (!((mochibot == null))))){
MochiBot.track(this, mochibot);
};
if ((((domains.length == 0)) || (!((domains.indexOf(sender.domain) == -1))))){
stop();
addEventListener(Event.ADDED_TO_STAGE, addedToStagehandler);
this.mainClassName = mainClassName;
this.preloaderClass = preloaderClass;
RessourceManager.getInstance().isLoadingEmbedded = isLoadingEmbedded;
GlobalVars.stage = stage;
GlobalVars.stageWidth = stageWidth;
GlobalVars.stageHeight = stageHeight;
} else {
text = new TextField();
text.text = "This game can only be played from armorgames.com!";
text.width = (text.textWidth + 5);
text.textColor = 0xFFFFFF;
text.selectable = false;
addChild(text);
};
}
private function calculate_enterFrameHandler(event:Event):void{
var time:int;
var delta:Number;
var timeAfter:int;
time = getTimer();
delta = ((time - lastTime) / ONE_SECOND);
lastTime = time;
if (screenManager != null){
screenManager.render((delta * GlobalVars.timeScale));
};
}
private function addedToStagehandler(event:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, addedToStagehandler);
checkLoaded();
}
private function mouseUpHandler(event:Event):void{
screenManager.mouseUp();
}
private function louissi_menuItemSelectHandler(event:ContextMenuEvent):void{
var targetURL:URLRequest = new URLRequest("http://armorgames.com/user/Louissi");
navigateToURL(targetURL);
}
private function keyUpHandler(event:KeyboardEvent):void{
screenManager.keyPress(false, event.keyCode);
}
private function createContextMenu():void{
var item:ContextMenuItem;
var customContext:ContextMenu;
customContext = new ContextMenu();
customContext.hideBuiltInItems();
item = new ContextMenuItem("Quality:", true);
customContext.customItems.push(item);
item = new ContextMenuItem("HIGH", true);
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, highquality_menuItemSelectHandler);
customContext.customItems.push(item);
item = new ContextMenuItem("MEDIUM");
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, mediumquality_menuItemSelectHandler);
customContext.customItems.push(item);
item = new ContextMenuItem("LOW");
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, lowquality_menuItemSelectHandler);
customContext.customItems.push(item);
item = new ContextMenuItem("Game by Louissi", true);
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, louissi_menuItemSelectHandler);
customContext.customItems.push(item);
item = new ContextMenuItem("Produced by ArmorGames", true);
item.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, maxgames_menuItemSelectHandler);
customContext.customItems.push(item);
contextMenu = customContext;
}
private function enterFrameHandler(event:Event):void{
var mainClass:Class;
if (framesLoaded == totalFrames){
trace("going to next frame");
nextFrame();
mainClass = Class(getDefinitionByName(mainClassName));
if (mainClass){
this.mainClass = new (mainClass);
};
stage.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
private function maxgames_menuItemSelectHandler(event:ContextMenuEvent):void{
var targetURL:URLRequest = new URLRequest("http://armorgames.com/");
navigateToURL(targetURL);
}
private function mouseDownHandler(event:Event):void{
screenManager.mouseDown();
}
private function mediumquality_menuItemSelectHandler(event:ContextMenuEvent):void{
stage.quality = StageQuality.MEDIUM;
}
private function lowquality_menuItemSelectHandler(event:ContextMenuEvent):void{
stage.quality = StageQuality.LOW;
}
private function keyDownHandler(event:KeyboardEvent):void{
screenManager.keyPress(true, event.keyCode);
}
private function checkLoaded():void{
if (((!(screenManager)) && (!((stage == null))))){
screenManager = ScreenManager.getInstance();
addChild(screenManager);
ScreenManager.getInstance().loadScreen(new preloaderClass(), new Transition_Fade(1));
stage.focus = this;
stage.tabChildren = false;
this.tabChildren = false;
this.tabEnabled = false;
stage.addEventListener(Event.ENTER_FRAME, calculate_enterFrameHandler);
stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
stage.addEventListener(Event.DEACTIVATE, deactivateHandler);
createContextMenu();
};
}
private function highquality_menuItemSelectHandler(event:ContextMenuEvent):void{
stage.quality = StageQuality.HIGH;
}
private function deactivateHandler(event:Event):void{
}
}
}//package net.louissi.Moon.Engines
Section 48
//GlobalVars (net.louissi.Moon.Global.GlobalVars)
package net.louissi.Moon.Global {
import flash.display.*;
public class GlobalVars {
public static var stageHeight:Number;
public static var stageWidth:Number;
public static var fps:int;
public static var firstScreen:Class;
public static var timeScale:Number = 1;
public static var stage:Stage;
public static var nextScreen:Class;
public function GlobalVars(){
super();
}
}
}//package net.louissi.Moon.Global
Section 49
//IScreen (net.louissi.Moon.Interfaces.IScreen)
package net.louissi.Moon.Interfaces {
public interface IScreen {
function init():void;
function keyPress(_arg1:Boolean, _arg2:int):void;
function render(:Number):void;
function mouseDown():void;
function destroy():void;
function mouseUp():void;
}
}//package net.louissi.Moon.Interfaces
Section 50
//ITransition (net.louissi.Moon.Interfaces.ITransition)
package net.louissi.Moon.Interfaces {
public interface ITransition {
function render(:Number):void;
}
}//package net.louissi.Moon.Interfaces
Section 51
//ButtonManager (net.louissi.Moon.Managers.ButtonManager)
package net.louissi.Moon.Managers {
import flash.events.*;
import flash.display.*;
import net.louissi.Moon.Screens.*;
public class ButtonManager {
private var screen:Screen;
private var buttonsList:Array;
private static var instance:ButtonManager = new (ButtonManager);
;
public function ButtonManager(){
super();
if (instance){
throw (new Error("Singleton and can only be accessed through Singleton.getInstance()"));
};
trace("button manager initiated");
buttonsList = new Array();
}
private function mouse_Handler(event:MouseEvent):void{
var i:int;
var index:int;
var btnButton:MovieClip;
var btnScreen:Screen;
var btnHasHZ:Boolean;
var frameName:String;
var funcName:String;
var func:Function;
if (buttonsList.length > 0){
i = 0;
while (i < buttonsList.length) {
if ((((buttonsList[i][0] == event.currentTarget)) || ((buttonsList[i][1] == event.currentTarget)))){
index = i;
break;
};
i++;
};
btnButton = buttonsList[index][0];
btnScreen = buttonsList[index][2];
btnHasHZ = buttonsList[index][3];
switch (event.type){
case "mouseOut":
funcName = (btnButton.name + "Out_Handler");
frameName = "out";
break;
case "mouseOver":
funcName = (btnButton.name + "Over_Handler");
frameName = "over";
break;
case "mouseUp":
funcName = (btnButton.name + "Up_Handler");
frameName = "over";
break;
case "mouseDown":
funcName = (btnButton.name + "Down_Handler");
frameName = "down";
break;
case "click":
funcName = (btnButton.name + "Click_Handler");
frameName = "over";
break;
default:
funcName = (btnButton.name + "Out_Handler");
frameName = "out";
break;
};
if ((funcName in btnScreen)){
func = btnScreen[funcName];
func(event);
};
btnButton.gotoAndStop(frameName);
};
}
private function checkButtons(object):void{
var a:int;
var strippedName:String;
var hasHZ:Boolean;
if (object.name){
if ((object is MovieClip)){
strippedName = object.name.slice(0, 3);
if (strippedName == "btn"){
hasHZ = false;
if (object.hitzone){
hasHZ = true;
};
buttonsList.push(new Array(object, object.hitzone, screen, hasHZ));
if (hasHZ){
object.hitzone.addEventListener(MouseEvent.MOUSE_OVER, mouse_Handler, false, 0, true);
object.hitzone.addEventListener(MouseEvent.MOUSE_OUT, mouse_Handler, false, 0, true);
object.hitzone.addEventListener(MouseEvent.MOUSE_DOWN, mouse_Handler, false, 0, true);
object.hitzone.addEventListener(MouseEvent.MOUSE_UP, mouse_Handler, false, 0, true);
object.hitzone.addEventListener(MouseEvent.CLICK, mouse_Handler, false, 0, true);
object.hitzone.buttonMode = true;
} else {
object.addEventListener(MouseEvent.MOUSE_OVER, mouse_Handler, false, 0, true);
object.addEventListener(MouseEvent.MOUSE_OUT, mouse_Handler, false, 0, true);
object.addEventListener(MouseEvent.MOUSE_DOWN, mouse_Handler, false, 0, true);
object.addEventListener(MouseEvent.MOUSE_UP, mouse_Handler, false, 0, true);
object.addEventListener(MouseEvent.CLICK, mouse_Handler, false, 0, true);
object.buttonMode = true;
};
trace(((("BUTTON : " + object.name) + " has hitzone: ") + hasHZ));
object.stop();
};
};
};
if ((object is DisplayObjectContainer)){
a = 0;
while (a < object.numChildren) {
checkButtons(object.getChildAt(a));
a++;
};
};
}
public function loadButtons(screen:Screen):void{
this.screen = screen;
checkButtons(screen);
this.screen = null;
}
public function clear():void{
var i:int;
var index:int;
var btnButton:MovieClip;
var btnScreen:Screen;
var btnHasHZ:Boolean;
trace("CLEARING BUTTONS!!");
trace(("Number of buttons: " + buttonsList.length));
i = 0;
while (i < buttonsList.length) {
btnButton = buttonsList[i][0];
btnScreen = buttonsList[i][2];
btnHasHZ = buttonsList[i][3];
if (btnHasHZ){
btnButton.hitzone.removeEventListener(MouseEvent.MOUSE_OVER, mouse_Handler);
btnButton.hitzone.removeEventListener(MouseEvent.MOUSE_OUT, mouse_Handler);
btnButton.hitzone.removeEventListener(MouseEvent.MOUSE_DOWN, mouse_Handler);
btnButton.hitzone.removeEventListener(MouseEvent.MOUSE_UP, mouse_Handler);
btnButton.hitzone.removeEventListener(MouseEvent.CLICK, mouse_Handler);
btnButton.hitzone.buttonMode = false;
} else {
btnButton.removeEventListener(MouseEvent.MOUSE_OVER, mouse_Handler);
btnButton.removeEventListener(MouseEvent.MOUSE_OUT, mouse_Handler);
btnButton.removeEventListener(MouseEvent.MOUSE_DOWN, mouse_Handler);
btnButton.removeEventListener(MouseEvent.MOUSE_UP, mouse_Handler);
btnButton.removeEventListener(MouseEvent.CLICK, mouse_Handler);
btnButton.buttonMode = false;
};
i++;
};
buttonsList = new Array();
}
public static function getInstance():ButtonManager{
return (instance);
}
}
}//package net.louissi.Moon.Managers
Section 52
//RessourceManager (net.louissi.Moon.Managers.RessourceManager)
package net.louissi.Moon.Managers {
import flash.events.*;
import flash.display.*;
import net.louissi.Moon.Utils.*;
import flash.net.*;
public final class RessourceManager {
private const POS_URL:int = 2;
private const POS_TYPE:int = 0;
private const POS_BYTE:int = 1;
private const POS_HANDLER:int = 3;
private var queue:Array;
public var isLoadingEmbedded:Boolean;// = true
private var _force:Boolean;// = false
private var loaders:Array;
public static const RESSOURCE_XML:int = 1;
public static const RESSOURCE_SWF:int = 0;
private static var _instance:RessourceManager = new (RessourceManager);
;
public function RessourceManager(){
super();
if (_instance){
throw (new Error("Singleton can only be accessed through Singleton.getInstance()"));
};
queue = [];
loaders = [];
}
private function XMLCompleteHandler(event:Event):void{
var loader:URLLoader;
loader = (event.currentTarget as URLLoader);
var _local3 = queue[0];
_local3[POS_HANDLER](new XML(loader.data));
loader.removeEventListener(Event.COMPLETE, XMLCompleteHandler);
ArrayUtil.removeElement(loaders, loader);
checkNextItem();
}
private function checkNextItem():void{
queue.shift();
if (queue.length != 0){
_force = true;
loadRessource(queue[0]);
};
}
private function SWFCompleteHandler(event:Event):void{
var loader:LoaderInfo;
var content:MovieClip;
loader = (event.currentTarget as LoaderInfo);
content = (loader.content as MovieClip);
var _local4 = queue[0];
_local4[POS_HANDLER](content);
loader.removeEventListener(Event.COMPLETE, SWFCompleteHandler);
ArrayUtil.removeElement(loaders, loader.loader);
checkNextItem();
}
public function loadXML(xml:Class, url:String, completeHandler:Function):void{
var loader:URLLoader;
if (((xml) || (!((url == ""))))){
if (((((isLoadingEmbedded) && (xml))) || ((url == "")))){
completeHandler(new XML(xml.data));
} else {
if (!_force){
queue.push([RESSOURCE_XML, xml, url, completeHandler]);
};
if ((((((queue.length == 1)) || (_force))) && (!((url == ""))))){
_force = false;
loader = new URLLoader(new URLRequest(url));
loader.addEventListener(Event.COMPLETE, XMLCompleteHandler);
loaders.push(loader);
};
};
} else {
completeHandler(null);
};
}
private function loadRessource(ressource:Array):void{
switch (ressource[POS_TYPE]){
case RESSOURCE_SWF:
loadSWF(ressource[POS_BYTE], ressource[POS_URL], ressource[POS_HANDLER]);
break;
case RESSOURCE_XML:
loadXML(ressource[POS_BYTE], ressource[POS_URL], ressource[POS_HANDLER]);
break;
default:
throw (new Error("Invalid ressource type"));
};
}
public function loadSWF(swf:Class, url:String, completeHandler:Function):void{
var mc:MovieClip;
var loader:Loader;
if (((swf) || (!((url == ""))))){
if (!_force){
queue.push([RESSOURCE_SWF, swf, url, completeHandler]);
};
if ((((queue.length == 1)) || (_force))){
_force = false;
if (((((isLoadingEmbedded) && (swf))) || ((url == "")))){
mc = new (swf);
loader = (mc.getChildAt(0) as Loader);
} else {
loader = new Loader();
loader.load(new URLRequest(url));
};
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, SWFCompleteHandler);
loaders.push(loader);
};
} else {
completeHandler(null);
};
}
public static function getInstance():RessourceManager{
return (_instance);
}
}
}//package net.louissi.Moon.Managers
Section 53
//ScreenManager (net.louissi.Moon.Managers.ScreenManager)
package net.louissi.Moon.Managers {
import flash.display.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.Moon.Transitions.*;
import net.louissi.Moon.Screens.*;
public class ScreenManager extends Sprite {
public var currentScreen:IScreen;
public var loadNextScreen:Boolean;// = false
private var transitionManager:TransitionsManager;
public var nextTransition:Transition;
private var isInTransition:Boolean;
private var paused:Boolean;// = false
private var isLoading:Boolean;
public var waitTrans:Boolean;// = false
public var nextScreen:IScreen;
private static var instance:ScreenManager = new (ScreenManager);
;
public function ScreenManager(){
super();
if (instance){
throw (new Error("Singleton and can only be accessed through Singleton.getInstance()"));
};
trace("screen manager initiated");
transitionManager = new TransitionsManager();
addChild(transitionManager);
isLoading = false;
isInTransition = false;
}
public function keyPress(isDown:Boolean, keyCode:int):void{
if (Screen(currentScreen).isLoaded){
currentScreen.keyPress(isDown, keyCode);
};
}
public function endOfTransition():void{
isInTransition = false;
}
public function screenLoaded():void{
isLoading = false;
addChildAt(Screen(currentScreen), 0);
transitionManager.startTransition();
isInTransition = true;
paused = false;
}
public function render(delta:Number):void{
transitionManager.render(delta);
if (isLoading){
if (Screen(currentScreen).isLoaded){
screenLoaded();
};
} else {
if (currentScreen != null){
if (Screen(currentScreen).isLoaded == true){
if ((((((waitTrans == true)) && ((isInTransition == false)))) && ((paused == false)))){
currentScreen.render(delta);
} else {
if ((((waitTrans == false)) && ((paused == false)))){
currentScreen.render(delta);
};
};
};
};
};
if (loadNextScreen){
changeScreen();
};
}
public function mouseUp():void{
if (Screen(currentScreen).isLoaded){
currentScreen.mouseUp();
};
}
public function mouseDown():void{
if (Screen(currentScreen).isLoaded){
currentScreen.mouseDown();
};
}
public function loadScreen(screenClass:IScreen, transition:Transition):void{
if (!isLoading){
paused = true;
nextScreen = screenClass;
nextTransition = transition;
loadNextScreen = true;
};
}
public function changeScreen():void{
paused = true;
if (currentScreen != null){
transitionManager.initTransition(Screen(currentScreen), nextTransition);
removeChild(Screen(currentScreen));
currentScreen.destroy();
currentScreen = null;
};
currentScreen = nextScreen;
currentScreen.init();
isLoading = true;
loadNextScreen = false;
nextScreen = null;
nextTransition = null;
}
public static function getInstance():ScreenManager{
return (instance);
}
}
}//package net.louissi.Moon.Managers
Section 54
//SoundManager (net.louissi.Moon.Managers.SoundManager)
package net.louissi.Moon.Managers {
import flash.events.*;
import flash.media.*;
public class SoundManager {
private var musicMuted:Boolean;// = false
private var musicTransform:SoundTransform;
private var soundVolume:Number;
public var playNext:Boolean;
private var soundMuted:Boolean;// = false
private var musicChannel:SoundChannel;
private var musicVolume:Number;
public var loopMusic:Boolean;
private var soundTransform:SoundTransform;
private var music:Sound;
private var currentMusic:Class;
private static var instance:SoundManager = new (SoundManager);
;
public function SoundManager(){
super();
if (instance){
throw (new Error("Singleton and can only be accessed through Singleton.getInstance()"));
};
trace("screen manager initiated");
musicVolume = 1;
soundVolume = 1;
musicMuted = false;
soundMuted = false;
musicChannel = new SoundChannel();
musicTransform = new SoundTransform(1, 0);
soundTransform = new SoundTransform(1, 0);
playNext = false;
loopMusic = true;
}
private function updateMusicTransforms():void{
if (musicMuted){
musicTransform.volume = 0;
musicChannel.soundTransform = musicTransform;
} else {
musicTransform.volume = musicVolume;
musicChannel.soundTransform = musicTransform;
};
}
private function musicComplete(e:Event):void{
trace("music complete");
if (loopMusic){
musicChannel.removeEventListener(Event.SOUND_COMPLETE, musicComplete);
musicChannel = music.play(0);
updateMusicTransforms();
musicChannel.soundTransform = musicTransform;
musicChannel.addEventListener(Event.SOUND_COMPLETE, musicComplete);
};
}
public function playMusic(soundClass:Class, loop:Boolean=true):void{
if (currentMusic == soundClass){
trace("music was already playing");
} else {
currentMusic = soundClass;
trace(("current music: " + currentMusic));
musicChannel.stop();
music = null;
loopMusic = loop;
playNext = false;
music = (new (soundClass) as Sound);
musicChannel = music.play();
updateMusicTransforms();
musicChannel.soundTransform = musicTransform;
musicChannel.addEventListener(Event.SOUND_COMPLETE, musicComplete);
};
}
public function stopMusic():void{
loopMusic = false;
playNext = false;
music = null;
musicChannel.stop();
updateMusicTransforms();
musicChannel.soundTransform = musicTransform;
musicChannel.addEventListener(Event.SOUND_COMPLETE, musicComplete);
}
public function setMusicVolume(volume:Number):void{
musicVolume = volume;
updateMusicTransforms();
}
public function setSoundVolume(volume:Number):void{
soundVolume = volume;
}
public function playSound(soundClass:Class, volume:Number=1, pan:Number=0):void{
var mySound:Sound;
var soundChanel:SoundChannel;
var soundTransform:SoundTransform;
if (!soundMuted){
mySound = (new (soundClass) as Sound);
soundChanel = new SoundChannel();
soundChanel = mySound.play();
if (soundChanel){
soundTransform = new SoundTransform((volume * soundVolume), pan);
soundChanel.soundTransform = soundTransform;
};
};
}
public static function getInstance():SoundManager{
return (instance);
}
}
}//package net.louissi.Moon.Managers
Section 55
//TransitionsManager (net.louissi.Moon.Managers.TransitionsManager)
package net.louissi.Moon.Managers {
import flash.display.*;
import net.louissi.Moon.Transitions.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Global.*;
public class TransitionsManager extends Sprite {
private var isWaiting:Boolean;
public var screenShot:BitmapData;
public var clickBlocker:MovieClip;
public var bit:Bitmap;
private var transition:MovieClip;
private var nextScreen:Screen;
public function TransitionsManager(){
super();
clickBlocker = new MovieClip();
clickBlocker.graphics.beginFill(0, 0);
clickBlocker.graphics.drawRect(0, 0, GlobalVars.stageWidth, GlobalVars.stageHeight);
clickBlocker.graphics.endFill();
clickBlocker.buttonMode = true;
clickBlocker.visible = false;
clickBlocker.useHandCursor = false;
addChild(clickBlocker);
screenShot = new BitmapData(GlobalVars.stageWidth, GlobalVars.stageHeight, true, 0);
}
public function initTransition(screen:Screen, transition:Transition):void{
isWaiting = true;
clickBlocker.visible = true;
screenShot.draw(Screen(screen));
this.transition = transition;
this.transition.setBitmap(screenShot);
addChildAt(this.transition, 0);
}
public function endOfTransition():void{
ScreenManager.getInstance().endOfTransition();
transition.destroy();
removeChild(transition);
clickBlocker.visible = false;
transition = null;
}
public function render(delta:Number):void{
if (((!((transition == null))) && (!(isWaiting)))){
if (!transition.isComplete){
transition.render(delta);
} else {
endOfTransition();
};
};
}
public function startTransition():void{
isWaiting = false;
}
}
}//package net.louissi.Moon.Managers
Section 56
//Screen (net.louissi.Moon.Screens.Screen)
package net.louissi.Moon.Screens {
import flash.display.*;
import net.louissi.Moon.Managers.*;
public class Screen extends Sprite {
private var completeHandler:Function;
public var content:MovieClip;
public var isLoaded:Boolean;
public function Screen(){
super();
isLoaded = false;
}
private function loadSWF_completeHandler(content:MovieClip):void{
var frameRate:int;
this.content = content;
addChild(content.loaderInfo.loader);
frameRate = content.loaderInfo.frameRate;
if (stage){
stage.frameRate = frameRate;
};
if (completeHandler != null){
completeHandler();
};
}
public function loadSWF(swfClass:Class, swfPath:String, completeHandler:Function):void{
this.completeHandler = completeHandler;
RessourceManager.getInstance().loadSWF(swfClass, swfPath, loadSWF_completeHandler);
}
}
}//package net.louissi.Moon.Screens
Section 57
//SquareScaleAndRotate (net.louissi.Moon.Transitions.Actors.SquareScaleAndRotate)
package net.louissi.Moon.Transitions.Actors {
import flash.display.*;
import flash.geom.*;
public class SquareScaleAndRotate extends MovieClip {
public var isAlive:Boolean;// = true
public var timer:Number;// = 0
public var timeLeft:Number;
public var stayTime:Number;
private var isMoving:Boolean;// = false
private var isReady:Boolean;// = false
public var startTimer:Number;
private var bit:Bitmap;
public function SquareScaleAndRotate(startTimer:Number, stayTime:Number, squareWidth:Number, nw:int, squareHeight:Number, nh:int, screenShot:BitmapData){
super();
x = ((nw * squareWidth) + (squareWidth / 2));
y = ((nh * squareHeight) + (squareHeight / 2));
var screen:BitmapData = new BitmapData(squareWidth, squareHeight, true);
var matrix:Matrix = new Matrix();
matrix.translate((-(x) + (squareWidth / 2)), (-(y) + (squareHeight / 2)));
screen.draw(screenShot, matrix);
bit = new Bitmap(screen);
bit.x = -((squareWidth / 2));
bit.y = -((squareHeight / 2));
addChild(bit);
this.startTimer = startTimer;
this.stayTime = stayTime;
this.timeLeft = stayTime;
isReady = true;
}
public function render(delta:Number):void{
if (isReady){
if (isMoving == false){
startTimer = (startTimer - delta);
if (startTimer <= 0){
isMoving = true;
};
} else {
timeLeft = (timeLeft - delta);
scaleX = (timeLeft / stayTime);
scaleY = (timeLeft / stayTime);
rotation = (90 * (1 - (timeLeft / stayTime)));
if (timeLeft <= 0){
removeChild(bit);
bit = null;
isAlive = false;
};
};
};
}
}
}//package net.louissi.Moon.Transitions.Actors
Section 58
//Transition (net.louissi.Moon.Transitions.Transition)
package net.louissi.Moon.Transitions {
import flash.display.*;
public class Transition extends MovieClip {
public var isComplete:Boolean;// = false
public function Transition(){
super();
}
public function complete():void{
isComplete = true;
}
}
}//package net.louissi.Moon.Transitions
Section 59
//Transition_Checkers (net.louissi.Moon.Transitions.Transition_Checkers)
package net.louissi.Moon.Transitions {
import flash.display.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.Moon.Transitions.Actors.*;
import net.louissi.Moon.Global.*;
public class Transition_Checkers extends Transition implements ITransition {
private var squareStayTime:Number;
private var timer:Number;
private var nw:int;
private var bit:Bitmap;
private var squares:Array;
private var squaresCreated:Boolean;
private var nh:int;
private var timerMax:Number;
public function Transition_Checkers(time:Number, nw:int, nh:int, squareStayTime:Number){
super();
timer = time;
timerMax = time;
this.nw = nw;
this.nh = nh;
this.squareStayTime = squareStayTime;
squaresCreated = false;
}
public function setBitmap(screenShot:BitmapData):void{
var i:int;
var i2:int;
var square:SquareScaleAndRotate;
bit = new Bitmap(screenShot);
addChild(bit);
squares = new Array();
var startTimer:Number = 0;
var startTimer2:Number = 0;
var timerSlice:Number = (timerMax / (nw * nh));
var squareWidth:Number = (GlobalVars.stageWidth / nw);
var squareHeight:Number = (GlobalVars.stageHeight / nh);
i = 0;
while (i < nh) {
i2 = 0;
while (i2 < nw) {
startTimer2 = (((i + 1) * (i2 + 1)) * timerSlice);
square = new SquareScaleAndRotate(startTimer2, squareStayTime, squareWidth, i2, squareHeight, i, screenShot);
addChild(square);
squares.push(square);
startTimer = (startTimer + timerSlice);
i2++;
};
i++;
};
squaresCreated = true;
}
public function destroy():void{
}
public function render(delta:Number):void{
var i:int;
var count:int;
var square:SquareScaleAndRotate;
var clean:Array;
if (bit){
removeChild(bit);
bit = null;
};
clean = new Array();
count = squares.length;
i = 0;
while (i < count) {
square = squares[i];
if (!square.isAlive){
removeChild(square);
clean.push(square);
} else {
square.render(delta);
};
i++;
};
count = clean.length;
i = 0;
while (i < count) {
squares.splice(squares.indexOf(clean[i]), 1);
i++;
};
if (squaresCreated){
if (squares.length <= 0){
complete();
};
};
}
}
}//package net.louissi.Moon.Transitions
Section 60
//Transition_Fade (net.louissi.Moon.Transitions.Transition_Fade)
package net.louissi.Moon.Transitions {
import flash.display.*;
import net.louissi.Moon.Interfaces.*;
public class Transition_Fade extends Transition implements ITransition {
public var timer:Number;
private var bit:Bitmap;
public var timerMax:Number;
public function Transition_Fade(transitionTime:Number){
super();
timer = transitionTime;
timerMax = transitionTime;
}
public function render(delta:Number):void{
alpha = (timer / timerMax);
timer = (timer - delta);
if ((((timer <= 0)) && (!(isComplete)))){
complete();
};
}
public function setBitmap(screenShot:BitmapData):void{
bit = new Bitmap(screenShot);
addChild(bit);
}
public function destroy():void{
removeChild(bit);
bit = null;
}
}
}//package net.louissi.Moon.Transitions
Section 61
//ArrayUtil (net.louissi.Moon.Utils.ArrayUtil)
package net.louissi.Moon.Utils {
public final class ArrayUtil {
public function ArrayUtil(){
super();
}
public static function removeElement(array:Array, element):Boolean{
var i:int;
i = array.indexOf(element);
if (i != -1){
array.splice(i, 1);
return (true);
};
return (false);
}
public static function randomArray(array:Array){
var i:int;
var element:*;
i = (Math.random() * array.length);
element = array[i];
array.splice(i, 1);
return (element);
}
}
}//package net.louissi.Moon.Utils
Section 62
//Base (net.louissi.SpaceAttack.battlefield.Base)
package net.louissi.SpaceAttack.battlefield {
import flash.display.*;
import net.louissi.Moon.Managers.*;
import net.louissi.SpaceAttack.global.*;
public class Base extends Sprite {
public var size:Number;
public var isAlive:Boolean;
public var healthMax:Number;
private var display:MovieClip;
public var side:String;
private var id:int;
public var health:Number;
public function Base(x:Number, y:Number, side:String, id:int){
super();
isAlive = true;
this.x = x;
this.y = y;
this.side = side;
this.id = id;
var clipName:String = ((side + "B") + id);
var displayClass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition(clipName) as Class);
display = new (displayClass);
addChild(display);
initVars();
}
private function initVars():void{
var xmlData:XML = GlobalVariables.shipsXML.bases.base[(id - 1)];
health = Number(xmlData.@health);
healthMax = health;
size = Number(xmlData.@size);
}
public function updateLifeBar():void{
display.hb.bar.scaleX = (health / healthMax);
trace("update");
}
public function render(delta:Number):void{
if (health <= 0){
isAlive = false;
};
}
public function destroy():void{
if (side == "R"){
Save.killedBase();
Achievements.checkMoney();
Achievements.checkBasesKilled();
GlobalVariables.game.buildingDestroyed();
};
SoundManager.getInstance().playSound(Ressources.SOUND_BASE_MUSIC, 1);
}
}
}//package net.louissi.SpaceAttack.battlefield
Section 63
//Battlefield (net.louissi.SpaceAttack.battlefield.Battlefield)
package net.louissi.SpaceAttack.battlefield {
import flash.display.*;
import net.louissi.SpaceAttack.global.*;
public class Battlefield extends Sprite {
public var greenTurrets:int;
public var bases:Array;
public var bullets:Array;
public var turrets:Array;
private var display:MovieClip;
private var trailUpdateTimer:Number;
private var structures:Sprite;
private var shipsLayer:Sprite;
public var redShips:int;
private var trailUpdateRate:Number;
public var redBases:int;
public var redTurrets:int;
public var greenShips:int;
private var levelName:String;
public var ships:Array;
private var bulletRender:Trails;
private var levelTimer:Number;
public var greenBases:int;
public function Battlefield(){
super();
initVars();
createDisplay();
x = 268;
y = 3;
GlobalVariables.battlefield = this;
}
public function renderShips(delta:Number):void{
var i:int;
var count:int;
var object:Ship;
var clean:Array;
clean = new Array();
count = ships.length;
i = 0;
while (i < count) {
object = ships[i];
if (!object.isAlive){
shipsLayer.removeChild(object);
clean.push(object);
object.destroy();
if (object.side == "R"){
redShips--;
} else {
if (object.side == "G"){
greenShips--;
};
};
} else {
object.render(delta);
};
i++;
};
count = clean.length;
i = 0;
while (i < count) {
ships.splice(ships.indexOf(clean[i]), 1);
i++;
};
}
public function loadLevel(id:int):void{
trace(("loading level " + id));
display.gotoAndStop(id);
display.addFrameScript((id - 1), loadStructures);
var xmlData:XML = GlobalVariables.levelsXML.levels.level[(id - 1)];
levelName = xmlData.@name;
}
public function renderTurrets(delta:Number):void{
var i:int;
var count:int;
var object:Turret;
var clean:Array;
clean = new Array();
count = turrets.length;
i = 0;
while (i < count) {
object = turrets[i];
if (!object.isAlive){
structures.removeChild(object);
clean.push(object);
object.destroy();
if (object.side == "R"){
redTurrets--;
} else {
if (object.side == "G"){
greenTurrets--;
};
};
} else {
object.render(delta);
};
i++;
};
count = clean.length;
i = 0;
while (i < count) {
turrets.splice(turrets.indexOf(clean[i]), 1);
i++;
};
}
public function renderBases(delta:Number):void{
var i:int;
var count:int;
var object:Base;
var clean:Array;
clean = new Array();
count = bases.length;
i = 0;
while (i < count) {
object = bases[i];
if (!object.isAlive){
structures.removeChild(object);
clean.push(object);
object.destroy();
if (object.side == "R"){
redBases--;
} else {
if (object.side == "G"){
greenBases--;
};
};
} else {
object.render(delta);
};
i++;
};
count = clean.length;
i = 0;
while (i < count) {
bases.splice(bases.indexOf(clean[i]), 1);
i++;
};
}
public function render(delta:Number):void{
renderBases(delta);
renderTurrets(delta);
renderShips(delta);
renderBullets(delta);
trailUpdateTimer = (trailUpdateTimer + delta);
if (trailUpdateTimer >= trailUpdateRate){
trailUpdateTimer = 0;
bulletRender.setParticles(bullets);
};
}
private function createStructure(type:String, id:Number, side:String, x:Number, y:Number):void{
var _local6:Base;
var _local7:Turret;
switch (type){
case "B":
switch (side){
case "R":
trace(("creating red base " + id));
redBases++;
break;
case "G":
trace(("creating green base " + id));
greenBases++;
break;
};
_local6 = new Base(x, y, side, id);
bases.push(_local6);
structures.addChild(_local6);
break;
case "T":
switch (side){
case "R":
trace(("creating red turret " + id));
redTurrets++;
break;
case "G":
trace(("creating green turret " + id));
greenTurrets++;
break;
};
_local7 = new Turret(x, y, side, id);
turrets.push(_local7);
structures.addChild(_local7);
break;
};
}
public function createShip(id:int, side:String, base:Base=null):void{
var spawnBase:Base;
var sx:Number;
var sy:Number;
var ship:Ship;
var b:Array;
var i:int;
var randId:int;
var tb:Base;
if (((GlobalVariables.game.survival) && ((side == "R")))){
createBoarderShip(id);
} else {
if (!base){
b = new Array();
i = 0;
while (i < bases.length) {
tb = bases[i];
if (tb.side == side){
b.push(tb);
};
i++;
};
randId = Math.round((Math.random() * (b.length - 1)));
spawnBase = b[randId];
} else {
spawnBase = base;
};
sx = spawnBase.x;
sy = spawnBase.y;
ship = new Ship(sx, sy, side, id);
ships.push(ship);
shipsLayer.addChild(ship);
if (side == "R"){
redShips++;
} else {
if (side == "G"){
greenShips++;
};
};
};
}
public function createBoarderShip(id:int):void{
var sx:Number = 448;
var sy:Number = (Math.random() * 448);
var ship:Ship = new Ship(sx, sy, "R", id);
ships.push(ship);
shipsLayer.addChild(ship);
redShips++;
}
private function initVars():void{
redShips = 0;
redBases = 0;
redTurrets = 0;
greenShips = 0;
greenBases = 0;
greenTurrets = 0;
bases = new Array();
turrets = new Array();
ships = new Array();
bullets = new Array();
trailUpdateRate = 0.01;
trailUpdateTimer = 0;
}
public function createBullet(x:Number, y:Number, angle:Number, side:String, damage:Number, speed:Number=5, attackType:String="ship"):void{
var bullet:Bullet = new Bullet(x, y, angle, side, damage, speed, attackType);
bullets.push(bullet);
}
private function loadStructures():void{
var mc:DisplayObject;
var buildingSide:String;
var buildingType:String;
var buildingId:int;
var buildingX:Number;
var buildingY:Number;
var numChild:int = display.numChildren;
var i:int;
while (i < numChild) {
mc = display.getChildAt(i);
buildingSide = mc.name.charAt(0);
buildingType = mc.name.charAt(1);
buildingId = int(mc.name.charAt(2));
buildingX = mc.x;
buildingY = mc.y;
mc.visible = false;
createStructure(buildingType, buildingId, buildingSide, buildingX, buildingY);
i++;
};
}
private function createDisplay():void{
var dispClass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition("battlefield") as Class);
display = (new (dispClass) as MovieClip);
addChild(display);
structures = new Sprite();
shipsLayer = new Sprite();
bulletRender = new Trails(GlobalVariables.BATTLEFIELDSIZE, GlobalVariables.BATTLEFIELDSIZE);
addChild(structures);
addChild(shipsLayer);
addChild(bulletRender);
bulletRender.blendMode = BlendMode.ADD;
}
public function renderBullets(delta:Number):void{
var i:int;
var count:int;
var object:Bullet;
var clean:Array;
clean = new Array();
count = bullets.length;
i = 0;
while (i < count) {
object = bullets[i];
if (!object.isAlive){
clean.push(object);
object.destroy();
} else {
object.render(delta);
};
i++;
};
count = clean.length;
i = 0;
while (i < count) {
bullets.splice(bullets.indexOf(clean[i]), 1);
i++;
};
}
}
}//package net.louissi.SpaceAttack.battlefield
Section 64
//Bullet (net.louissi.SpaceAttack.battlefield.Bullet)
package net.louissi.SpaceAttack.battlefield {
import net.louissi.SpaceAttack.global.*;
public class Bullet {
public var isAlive:Boolean;
private var speed:Number;
private var vx:Number;
private var vy:Number;
private var side:String;
public var color:Number;
private var rot:Number;
private var targetType:String;
private var damage:Number;
public var x:Number;
public var y:Number;
public function Bullet(x:Number, y:Number, angle:Number, side:String, damage:Number, speed:Number=5, targetType:String="ship"){
super();
isAlive = true;
this.speed = speed;
this.rot = angle;
this.x = x;
this.y = y;
this.damage = damage;
this.side = side;
this.targetType = targetType;
if (side == "R"){
color = 4294901760;
} else {
if (side == "G"){
color = 4278255360;
};
};
getSpeeds();
}
public function getSpeeds():void{
vx = cXspeed();
vy = cYspeed();
}
public function cXspeed():Number{
return ((Math.cos(((Math.PI / 180) * rot)) * speed));
}
public function checkCollide():void{
var dist:Number;
var i:int;
var sb:Ship;
var tb:Base;
var tt:Turret;
if (targetType == "ship"){
i = 0;
while (i < GlobalVariables.battlefield.ships.length) {
sb = GlobalVariables.battlefield.ships[i];
if (sb.side != side){
dist = (((x - sb.x) * (x - sb.x)) + ((y - sb.y) * (y - sb.y)));
if (dist < (sb.size * sb.size)){
sb.health = (sb.health - damage);
isAlive = false;
};
};
i++;
};
} else {
i = 0;
while (i < GlobalVariables.battlefield.bases.length) {
tb = GlobalVariables.battlefield.bases[i];
if (tb.side != side){
dist = (((x - tb.x) * (x - tb.x)) + ((y - tb.y) * (y - tb.y)));
if (dist < (tb.size * tb.size)){
tb.health = (tb.health - damage);
tb.updateLifeBar();
isAlive = false;
};
};
i++;
};
i = 0;
while (i < GlobalVariables.battlefield.turrets.length) {
tt = GlobalVariables.battlefield.turrets[i];
if (tt.side != side){
dist = (((x - tt.x) * (x - tt.x)) + ((y - tt.y) * (y - tt.y)));
if (dist < (tt.size * tt.size)){
tt.health = (tt.health - damage);
tt.updateLifeBar();
isAlive = false;
};
};
i++;
};
};
}
public function render(delta:Number):void{
x = (x + (vx * delta));
y = (y + (vy * delta));
if (x < 0){
isAlive = false;
};
if (y < 0){
isAlive = false;
};
if (y > GlobalVariables.BATTLEFIELDSIZE){
isAlive = false;
};
if (x > GlobalVariables.BATTLEFIELDSIZE){
isAlive = false;
};
checkCollide();
}
public function cYspeed():Number{
return ((Math.sin(((Math.PI / 180) * rot)) * speed));
}
public function destroy():void{
}
}
}//package net.louissi.SpaceAttack.battlefield
Section 65
//Ship (net.louissi.SpaceAttack.battlefield.Ship)
package net.louissi.SpaceAttack.battlefield {
import flash.display.*;
import net.louissi.Moon.Managers.*;
import net.louissi.SpaceAttack.global.*;
public class Ship extends Sprite {
public var size:Number;
private var targetRot:Number;
private var target:Object;
private var xs:Number;
private var ys:Number;
private var id:int;
private var shootingTimer:Number;
private var turningSpeed:Number;
private var reward:int;
private var updateTime:Number;
private var updateTarget:Boolean;
private var vx:Number;
private var vy:Number;
private var turning:Number;
private var speed:Number;
private var display:MovieClip;
public var isAlive:Boolean;
private var moving:Boolean;
private var disp:MovieClip;
private var shootingTime:Number;
private var rot:Number;
public var health:Number;
public var side:String;
private var shooting:Boolean;
public var targetType:String;
private var damage:Number;
private var lrot:Number;
private var friction:Number;
private var updateTimer:Number;
public function Ship(x:Number, y:Number, side:String, id:int){
super();
isAlive = true;
this.x = x;
this.y = y;
this.side = side;
this.id = id;
var clipName:String = "ship";
var displayClass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition(clipName) as Class);
display = new (displayClass);
addChild(display);
switch (side){
case "R":
display.green.visible = false;
disp = display.red;
break;
case "G":
display.red.visible = false;
disp = display.green;
Save.createdShip(id);
break;
};
disp.gotoAndStop(id);
initVars();
}
public function getSpeeds():void{
xs = cXspeed();
ys = cYspeed();
}
public function cXspeed():Number{
return (((Math.cos(((Math.PI / 180) * rotation)) * speed) / 5));
}
public function getNearestEnemyBuilding():Object{
var i:int;
var tb:Base;
var dist:Number;
var tt:Turret;
var nearest:Object;
var distance:Number = 100000000000;
var b:Array = new Array();
i = 0;
while (i < GlobalVariables.battlefield.bases.length) {
tb = GlobalVariables.battlefield.bases[i];
if (tb.side != side){
dist = (((x - tb.x) * (x - tb.x)) + ((y - tb.y) * (y - tb.y)));
if (dist < distance){
distance = dist;
nearest = tb;
};
};
i++;
};
i = 0;
while (i < GlobalVariables.battlefield.turrets.length) {
tt = GlobalVariables.battlefield.turrets[i];
if (tt.side != side){
dist = (((x - tt.x) * (x - tt.x)) + ((y - tt.y) * (y - tt.y)));
if (dist < distance){
distance = dist;
nearest = tt;
};
};
i++;
};
return (nearest);
}
public function render(delta:Number):void{
if (x < -10){
x = (GlobalVariables.BATTLEFIELDSIZE + 10);
} else {
if (x > (GlobalVariables.BATTLEFIELDSIZE + 10)){
x = -10;
};
};
if (y < -10){
y = (GlobalVariables.BATTLEFIELDSIZE + 10);
} else {
if (y > (GlobalVariables.BATTLEFIELDSIZE + 10)){
y = -10;
};
};
updateTimer = (updateTimer + delta);
if (updateTimer >= updateTime){
updateTarget = true;
updateTimer = 0;
};
if (updateTarget){
if (side == "R"){
if (GlobalVariables.battlefield.greenShips > 0){
target = getNearestEnemyShip();
targetType = "ship";
} else {
target = getNearestEnemyBuilding();
targetType = "building";
};
} else {
if (side == "G"){
if (GlobalVariables.target == "buildings"){
if ((((GlobalVariables.battlefield.redBases > 0)) || ((GlobalVariables.battlefield.redTurrets > 0)))){
target = getNearestEnemyBuilding();
targetType = "building";
} else {
target = getNearestEnemyShip();
targetType = "ship";
};
} else {
if (GlobalVariables.battlefield.redShips > 0){
target = getNearestEnemyShip();
targetType = "ship";
} else {
target = getNearestEnemyBuilding();
targetType = "building";
};
};
};
};
updateTarget = false;
};
if (target){
getRotation(delta);
if (isCloseEnough(100)){
shooting = true;
} else {
shooting = false;
};
} else {
updateTarget = true;
shooting = false;
};
getSpeeds();
updateVector(delta);
x = (x + (vx * delta));
y = (y + (vy * delta));
if (shooting){
shootingTimer = (shootingTimer + delta);
if (shootingTimer >= shootingTime){
shoot();
shootingTimer = 0;
};
};
if (health <= 0){
isAlive = false;
};
}
private function shoot():void{
GlobalVariables.battlefield.createBullet(x, y, rotation, side, damage, 170, targetType);
}
public function getNearestEnemyShip():Ship{
var tb:Ship;
var dist:Number;
var nearestShip:Ship;
var distance:Number = 100000000000;
var b:Array = new Array();
var i:int;
while (i < GlobalVariables.battlefield.ships.length) {
tb = GlobalVariables.battlefield.ships[i];
if (tb.side != side){
dist = (((x - tb.x) * (x - tb.x)) + ((y - tb.y) * (y - tb.y)));
if (dist < distance){
distance = dist;
nearestShip = tb;
};
};
i++;
};
return (nearestShip);
}
public function destroy():void{
if (side == "R"){
GlobalVariables.cash = (GlobalVariables.cash + reward);
GlobalVariables.game.updateMoney();
Save.gainedMoney(reward);
Save.killedShip(id);
GlobalVariables.moneyBonus = (GlobalVariables.moneyBonus + reward);
Achievements.checkMoney();
Achievements.checkShipsKilled();
};
SoundManager.getInstance().playSound(Ressources.SOUND_SHIPDESTROYED_MUSIC, 1);
}
public function cYspeed():Number{
return (((Math.sin(((Math.PI / 180) * rotation)) * speed) / 5));
}
private function initVars():void{
vx = 0;
vy = 0;
getSpeeds();
rot = 0;
lrot = 0;
var xmlData:XML = GlobalVariables.shipsXML.ships.ship[(id - 1)];
speed = Number(xmlData.@speed);
turningSpeed = Number(xmlData.@turningSpeed);
health = Number(xmlData.@health);
size = Number(xmlData.@size);
shootingTime = Number(xmlData.@shootingTime);
damage = Number(xmlData.@damage);
reward = Math.round((int(xmlData.@cost) * GlobalVariables.game.killReward));
friction = 0.8;
turning = (turningSpeed * (Math.PI / 180));
target = null;
updateTimer = 0;
updateTime = 2;
shootingTimer = 0;
shooting = false;
}
private function updateVector(delta:Number):void{
vx = (vx + ((xs * 100) * delta));
vy = (vy + ((ys * 100) * delta));
vx = (vx / (1 + (friction * delta)));
vy = (vy / (1 + (friction * delta)));
}
public function getRotation(delta:Number):void{
var lrot2:Number;
var waypoint:Number;
var rota:Number;
var orota:Number;
var turningDelta:Number = ((turning * delta) * 60);
var targetX:Number = target.x;
var targetY:Number = target.y;
if ((((targetX == x)) && ((targetY == y)))){
} else {
lrot2 = lrot;
lrot = rot;
waypoint = Math.atan(((x - targetX) / (targetY - y)));
if (targetY > y){
waypoint = (waypoint + Math.PI);
};
if (waypoint < 0){
waypoint = (waypoint + (Math.PI * 2));
} else {
if (waypoint >= (Math.PI * 2)){
waypoint = (waypoint - (Math.PI * 2));
};
};
rota = (rot * (Math.PI / 180));
if (rota < 0){
rota = (rota + (Math.PI * 2));
} else {
if (rota >= (Math.PI * 2)){
rota = (rota - (Math.PI * 2));
};
};
orota = (waypoint - rota);
if (orota < 0){
orota = (orota + (Math.PI * 2));
} else {
if (orota >= (Math.PI * 2)){
orota = (orota - (Math.PI * 2));
};
};
if ((((rota < ((waypoint - (turningDelta / 2)) + turningDelta))) && ((rota > (waypoint - (turningDelta / 2)))))){
rota = waypoint;
} else {
if (orota <= Math.PI){
rota = (rota + turningDelta);
} else {
rota = (rota - turningDelta);
};
};
if (rot == 0){
rot++;
rota = (rot * (Math.PI / 180));
};
rot = ((rota * 180) / Math.PI);
rotation = (rot - 90);
};
}
public function isCloseEnough(distance:Number):Boolean{
var c:Boolean;
distance = (distance * distance);
var dist:Number = (((x - target.x) * (x - target.x)) + ((y - target.y) * (y - target.y)));
if (dist <= distance){
c = true;
} else {
c = false;
};
return (c);
}
}
}//package net.louissi.SpaceAttack.battlefield
Section 66
//Trails (net.louissi.SpaceAttack.battlefield.Trails)
package net.louissi.SpaceAttack.battlefield {
import flash.display.*;
public class Trails extends Bitmap {
private var bmdClear:BitmapData;
private var bmd:BitmapData;
private var bmdDraw:BitmapData;
public function Trails(w:Number, h:Number){
super();
bmd = new BitmapData(w, h, true, 4278190080);
bmdDraw = new BitmapData(w, h, true, 0);
bmdClear = new BitmapData(w, h, true, 855638016);
this.bitmapData = bmd;
}
public function setParticles(pixels:Array):void{
var i:int;
while (i < pixels.length) {
bmdDraw.setPixel32(pixels[i].x, pixels[i].y, pixels[i].color);
i++;
};
bmd.draw(bmdDraw);
bmdDraw.draw(bmdClear);
}
}
}//package net.louissi.SpaceAttack.battlefield
Section 67
//Turret (net.louissi.SpaceAttack.battlefield.Turret)
package net.louissi.SpaceAttack.battlefield {
import flash.display.*;
import net.louissi.Moon.Managers.*;
import net.louissi.SpaceAttack.global.*;
public class Turret extends Sprite {
public var size:Number;
public var isAlive:Boolean;
private var display:MovieClip;
private var target:Object;
public var side:String;
private var id:int;
private var shootingTimer:Number;
private var shooting:Boolean;
public var healthMax:Number;
private var shootingRate:Number;
public var health:Number;
private var damage:Number;
public var rotSpeed:Number;// = 30
public function Turret(x:Number, y:Number, side:String, id:int){
super();
isAlive = true;
this.x = x;
this.y = y;
this.side = side;
this.id = id;
var clipName:String = ((side + "T") + id);
var displayClass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition(clipName) as Class);
display = new (displayClass);
addChild(display);
initVars();
}
public function render(delta:Number):void{
target = getNearestEnemyShip();
if (shooting){
shootingTimer = (shootingTimer + delta);
if (shootingTimer >= shootingRate){
shootingTimer = 0;
shoot();
};
};
if (target){
display.turret.rotation = (Math.atan2((target.y - y), (target.x - x)) / (Math.PI / 180));
if (isCloseEnough(100)){
shooting = true;
} else {
shooting = false;
};
} else {
display.turret.rotation = (display.turret.rotation + (rotSpeed * delta));
shooting = false;
};
if (health <= 0){
isAlive = false;
};
}
private function initVars():void{
var xmlData:XML = GlobalVariables.shipsXML.turrets.turret[(id - 1)];
target = null;
shooting = false;
damage = Number(xmlData.@damage);
shootingRate = Number(xmlData.@shootingRate);
health = Number(xmlData.@health);
healthMax = health;
size = Number(xmlData.@size);
shootingTimer = 0;
}
private function shoot():void{
GlobalVariables.battlefield.createBullet(x, y, display.turret.rotation, side, damage, 170);
}
public function updateLifeBar():void{
display.hb.bar.scaleX = (health / healthMax);
}
private function getNearestEnemyShip():Ship{
var tb:Ship;
var dist:Number;
var nearestShip:Ship;
var distance:Number = 100000000000;
var b:Array = new Array();
var i:int;
while (i < GlobalVariables.battlefield.ships.length) {
tb = GlobalVariables.battlefield.ships[i];
if (tb.side != side){
dist = (((x - tb.x) * (x - tb.x)) + ((y - tb.y) * (y - tb.y)));
if (dist < distance){
distance = dist;
nearestShip = tb;
};
};
i++;
};
return (nearestShip);
}
public function destroy():void{
if (side == "R"){
Save.killedTurret();
Achievements.checkTurretsKilled();
Achievements.checkMoney();
GlobalVariables.game.buildingDestroyed();
};
SoundManager.getInstance().playSound(Ressources.SOUND_BASE_MUSIC, 1);
}
private function isCloseEnough(distance:Number):Boolean{
var c:Boolean;
distance = (distance * distance);
var dist:Number = (((x - target.x) * (x - target.x)) + ((y - target.y) * (y - target.y)));
if (dist <= distance){
c = true;
} else {
c = false;
};
return (c);
}
}
}//package net.louissi.SpaceAttack.battlefield
Section 68
//Achievements (net.louissi.SpaceAttack.global.Achievements)
package net.louissi.SpaceAttack.global {
import flash.events.*;
import flash.display.*;
import net.louissi.Moon.Managers.*;
import net.louissi.SpaceAttack.overlays.*;
import net.louissi.Moon.Global.*;
import com.memecounter.*;
public class Achievements {
public static var soundMuted:Boolean;
public static var musicMuted:Boolean;
public static var footer:MovieClip;
public static var achievementManager:AchievementManager;
public function Achievements(){
super();
}
public static function allLoaded():void{
Achievements.achievementManager = new AchievementManager();
Achievements.achievementManager.name = "achievementManager";
Achievements.achievementManager.init();
GlobalVars.stage.addChild(Achievements.achievementManager);
GlobalVars.stage.addChild(Achievements.footer);
Achievements.footer.btnSound.status.gotoAndStop(1);
Achievements.footer.btnMusic.status.gotoAndStop(1);
Achievements.soundMuted = false;
Achievements.musicMuted = false;
Achievements.footer.btnSound.buttonMode = true;
Achievements.footer.btnSound.addEventListener(MouseEvent.CLICK, Achievements.btnSoundClick);
Achievements.footer.btnMusic.buttonMode = true;
Achievements.footer.btnMusic.addEventListener(MouseEvent.CLICK, Achievements.btnMusicClick);
}
public static function checkMoney():void{
if (Save.achievement3 == 0){
if (Save.moneyCollected > 500000){
Achievements.achieve(3);
};
};
}
public static function checkPlayTime():void{
if (Save.achievement5 == 0){
if ((Save.playTime / 60) >= 10){
Achievements.achieve(5);
};
};
if (Save.achievement6 == 0){
if ((Save.playTime / 60) >= 20){
Achievements.achieve(6);
};
};
}
public static function checkShipsKilled():void{
var i:int;
var totalKilled:int;
if (Save.achievement8 == 0){
totalKilled = 0;
i = 0;
while (i <= 9) {
totalKilled = (totalKilled + Save[("shipKilled" + i)]);
i++;
};
if (totalKilled > 1000){
Achievements.achieve(8);
};
};
}
public static function checkCombos():void{
if (Save.achievement9 == 0){
if (Save.biggestCombo > 19){
Achievements.achieve(9);
};
};
if (Save.achievement10 == 0){
if (Save.biggestCombo > 59){
Achievements.achieve(10);
};
};
}
public static function btnMusicClick(e:MouseEvent):void{
if (Achievements.musicMuted){
Achievements.footer.btnMusic.status.gotoAndStop(1);
Achievements.musicMuted = false;
SoundManager.getInstance().setMusicVolume(1);
} else {
Achievements.footer.btnMusic.status.gotoAndStop(2);
Achievements.musicMuted = true;
SoundManager.getInstance().setMusicVolume(0);
};
}
public static function init():void{
RessourceManager.getInstance().loadSWF(Ressources.OVERLAYS_SWF, Ressources.OVERLAYS_PATH, Achievements.completeHandler);
}
public static function completeHandler(mc:MovieClip):void{
var displayClass:Class = (mc.loaderInfo.applicationDomain.getDefinition("bar") as Class);
Achievements.footer = (new (displayClass) as MovieClip);
Achievements.footer.y = 570;
allLoaded();
}
public static function btnSoundClick(e:MouseEvent):void{
if (Achievements.soundMuted){
Achievements.footer.btnSound.status.gotoAndStop(1);
Achievements.soundMuted = false;
SoundManager.getInstance().setSoundVolume(1);
} else {
Achievements.footer.btnSound.status.gotoAndStop(2);
Achievements.soundMuted = true;
SoundManager.getInstance().setSoundVolume(0);
};
}
public static function render(delta:Number):void{
Achievements.achievementManager.render(delta);
}
public static function checkBasesKilled():void{
if (Save.achievement1 == 0){
if (Save.basesKilled > 0){
Achievements.achieve(1);
};
};
if (Save.achievement2 == 0){
if (Save.basesKilled > 49){
Achievements.achieve(2);
};
};
}
public static function achieve(id:int):void{
Save[("achievement" + id)] = 1;
Save.save();
Achievements.achievementManager.achieve(id);
}
public static function checkFinished():void{
if (Save.achievement4 == 0){
if (Save.progress > 14){
Tracker.kvEvent(8529);
Achievements.achieve(4);
};
};
}
public static function checkTurretsKilled():void{
if (Save.achievement7 == 0){
if (Save.turretsKilled > 99){
Achievements.achieve(7);
};
};
}
}
}//package net.louissi.SpaceAttack.global
Section 69
//GlobalVariables (net.louissi.SpaceAttack.global.GlobalVariables)
package net.louissi.SpaceAttack.global {
import flash.display.*;
import net.louissi.SpaceAttack.puzzle.*;
import net.louissi.SpaceAttack.battlefield.*;
import net.louissi.SpaceAttack.screens.*;
public class GlobalVariables {
public static const BATTLEFIELDSIZE:Number = 448;
public static const JEWELSIZE:Number = 30;
public static var battlefield:Battlefield;
public static var level:int = 1;
public static var target:String = "buildings";
public static var timeBonus:Number;
public static var gameAssets:MovieClip;
public static var nextLevel:int;
public static var jewelMap:Array;
public static var shipsXML:XML;
public static var levelsXML:XML;
public static var game:GameScreen;
public static var cash:int;
public static var puzzle:Puzzle;
public static var moneyBonus:int;
public function GlobalVariables(){
super();
}
}
}//package net.louissi.SpaceAttack.global
Section 70
//Ressources (net.louissi.SpaceAttack.global.Ressources)
package net.louissi.SpaceAttack.global {
public class Ressources {
public static var SOUND_JEWELNORMAL_MUSIC:Class = Ressources_SOUND_JEWELNORMAL_MUSIC;
public static var GAMESCREEN_SWF:Class = Ressources_GAMESCREEN_SWF;
public static var GAME2_MUSIC:Class = Ressources_GAME2_MUSIC;
public static var LEVELSDATA_PATH:String = "assets/data/levels_data.xml";
public static var LEVELS_SWF:Class = Ressources_LEVELS_SWF;
public static var VICTORY_SWF:Class = Ressources_VICTORY_SWF;
public static var SPONSOR_SWF:Class = Ressources_SPONSOR_SWF;
public static var MENU_MUSIC:Class = Ressources_MENU_MUSIC;
public static var AUTHOR_SWF:Class = Ressources_AUTHOR_SWF;
public static var DEFEAT_PATH:String = "assets/swf/screens/defeat.swf";
public static var SOUND_SHIPDESTROYED_MUSIC:Class = Ressources_SOUND_SHIPDESTROYED_MUSIC;
public static var MAINMENU_SWF:Class = Ressources_MAINMENU_SWF;
public static var OVERLAYS_PATH:String = "assets/swf/objects/overlays.swf";
public static var GAME1_MUSIC:Class = Ressources_GAME1_MUSIC;
public static var OVERLAYS_SWF:Class = Ressources_OVERLAYS_SWF;
public static var ACHIEVEMENTS_SWF:Class = Ressources_ACHIEVEMENTS_SWF;
public static var SPONSOR_PATH:String = "assets/swf/screens/sponsor.swf";
public static var VICTORY_PATH:String = "assets/swf/screens/victory.swf";
public static var DEFEAT_SWF:Class = Ressources_DEFEAT_SWF;
public static var AUTHOR_PATH:String = "assets/swf/screens/author.swf";
public static var SOUND_JEWELHIT_MUSIC:Class = Ressources_SOUND_JEWELHIT_MUSIC;
public static var GAME3_MUSIC:Class = Ressources_GAME3_MUSIC;
public static var SURVIVALEND_SWF:Class = Ressources_SURVIVALEND_SWF;
public static var SHIPSDATA_PATH:String = "assets/data/ships_data.xml";
public static var GAMESCREEN_PATH:String = "assets/swf/screens/gameScreen.swf";
public static var SURVIVALEND_PATH:String = "assets/swf/screens/survivalEnd.swf";
public static var LEVELSDATA_XML:Class = Ressources_LEVELSDATA_XML;
public static var MAINMENU_PATH:String = "assets/swf/screens/mainMenu.swf";
public static var SOUND_BASE_MUSIC:Class = Ressources_SOUND_BASE_MUSIC;
public static var ACHIEVEMENTS_PATH:String = "assets/swf/screens/achievements.swf";
public static var SOUND_JEWELBIG_MUSIC:Class = Ressources_SOUND_JEWELBIG_MUSIC;
public static var LEVELS_PATH:String = "assets/swf/screens/levels.swf";
public static var SHIPSDATA_XML:Class = Ressources_SHIPSDATA_XML;
public function Ressources(){
super();
}
}
}//package net.louissi.SpaceAttack.global
Section 71
//Ressources_ACHIEVEMENTS_SWF (net.louissi.SpaceAttack.global.Ressources_ACHIEVEMENTS_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_ACHIEVEMENTS_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_ACHIEVEMENTS_SWF(){
dataClass = Ressources_ACHIEVEMENTS_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 72
//Ressources_ACHIEVEMENTS_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_ACHIEVEMENTS_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_ACHIEVEMENTS_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 73
//Ressources_AUTHOR_SWF (net.louissi.SpaceAttack.global.Ressources_AUTHOR_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_AUTHOR_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_AUTHOR_SWF(){
dataClass = Ressources_AUTHOR_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 74
//Ressources_AUTHOR_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_AUTHOR_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_AUTHOR_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 75
//Ressources_DEFEAT_SWF (net.louissi.SpaceAttack.global.Ressources_DEFEAT_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_DEFEAT_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_DEFEAT_SWF(){
dataClass = Ressources_DEFEAT_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 76
//Ressources_DEFEAT_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_DEFEAT_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_DEFEAT_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 77
//Ressources_GAME1_MUSIC (net.louissi.SpaceAttack.global.Ressources_GAME1_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_GAME1_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 78
//Ressources_GAME2_MUSIC (net.louissi.SpaceAttack.global.Ressources_GAME2_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_GAME2_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 79
//Ressources_GAME3_MUSIC (net.louissi.SpaceAttack.global.Ressources_GAME3_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_GAME3_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 80
//Ressources_GAMESCREEN_SWF (net.louissi.SpaceAttack.global.Ressources_GAMESCREEN_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_GAMESCREEN_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_GAMESCREEN_SWF(){
dataClass = Ressources_GAMESCREEN_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 81
//Ressources_GAMESCREEN_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_GAMESCREEN_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_GAMESCREEN_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 82
//Ressources_LEVELS_SWF (net.louissi.SpaceAttack.global.Ressources_LEVELS_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_LEVELS_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_LEVELS_SWF(){
dataClass = Ressources_LEVELS_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 83
//Ressources_LEVELS_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_LEVELS_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_LEVELS_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 84
//Ressources_LEVELSDATA_XML (net.louissi.SpaceAttack.global.Ressources_LEVELSDATA_XML)
package net.louissi.SpaceAttack.global {
public class Ressources_LEVELSDATA_XML {
public static var data:XML = <spaceAttack>
<levels>
<level name="Tutorial" jewels="1,2,3" time="500" startingMoney="400" tileReward="5" tilePenalty="-20" killReward="1" bonus="100">
<event duration="2" maxShips="1" ships="1" minTime="7" maxTime="10"/>
</level>
<level name="First blood" jewels="1,2,3" time="180" startingMoney="600" tileReward="5" tilePenalty="-200" killReward="1" bonus="2000">
<event duration="40" maxShips="2" ships="1" minTime="3" maxTime="4"/>
<event duration="40" maxShips="3" ships="1" minTime="3" maxTime="7"/>
</level>
<level name="Assault" jewels="1,2,3" time="200" startingMoney="400" tileReward="20" tilePenalty="-2000" killReward="0.5" bonus="5000">
<event duration="5" maxShips="0" ships="1" minTime="3" maxTime="4"/>
<event duration="2" maxShips="10" ships="1" minTime="1" maxTime="2"/>
</level>
<level name="2 vs 1" jewels="1,2,3,4" time="200" startingMoney="400" tileReward="20" tilePenalty="-2000" killReward="2" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="2" maxShips="15" ships="1,2,3,3,3" minTime="1" maxTime="2"/>
</level>
<level name="Fortress" jewels="1,2,3" time="120" startingMoney="400" tileReward="15" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="30" maxShips="10" ships="1,2,3" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="1,2,1,2,1,4,5,3" minTime="2" maxTime="5"/>
</level>
<level name="Big Smile" jewels="4,5,6" time="180" startingMoney="400" tileReward="15" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="30" maxShips="10" ships="1,2,4" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="1,2,4,2,4,4,5,3" minTime="2" maxTime="5"/>
</level>
<level name="The hive" jewels="5,7,1,6" time="200" startingMoney="400" tileReward="30" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="30" maxShips="10" ships="1,2,4" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="1,2,4,2,4,4,5,3" minTime="2" maxTime="5"/>
</level>
<level name="Reversed" jewels="5,7,1,6" time="200" startingMoney="800" tileReward="30" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="30" maxShips="10" ships="1,2,4" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="1,2,4,2,4,4,5,3" minTime="2" maxTime="5"/>
</level>
<level name="2 vs 1 again" jewels="5,7,1,6" time="180" startingMoney="800" tileReward="30" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="30" maxShips="10" ships="1,2,4" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="6,2,6,2,4,4,5,3,1" minTime="1" maxTime="5"/>
</level>
<level name="Blood Rain" jewels="5,7,1,6" time="180" startingMoney="1000" tileReward="30" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="30" maxShips="10" ships="1,2,4" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="6,2,6,2,4,4,5,3,1,7,8,9" minTime="1" maxTime="5"/>
</level>
<level name="Assault 2" jewels="1,2,5,6" time="180" startingMoney="400" tileReward="5" tilePenalty="-20" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="30" maxShips="10" ships="1,2,3,4,5,6" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="6,2,6,2,4,4,5,3,1,7,8,9" minTime="1" maxTime="2"/>
</level>
<level name="The wall" jewels="1,2,5,6" time="240" startingMoney="400" tileReward="10" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="30" maxShips="10" ships="1,2,3,4,5,6" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="6,2,6,2,4,4,5,3,1,7,8,9" minTime="1" maxTime="2"/>
</level>
<level name="Mess" jewels="1,2,5,6" time="240" startingMoney="4000" tileReward="30" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="20" maxShips="10" ships="1,2,3,4,5,6" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="6,2,6,2,4,4,5,3,1,7,8,9" minTime="1" maxTime="2"/>
</level>
<level name="Mess Rush" jewels="1,2,5" time="90" startingMoney="4000" tileReward="100" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="5" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="5" maxShips="10" ships="1,2,3,4,5,6" minTime="1" maxTime="2"/>
<event duration="30" maxShips="20" ships="6,2,6,4,4,5,7,8,9" minTime="0.5" maxTime="1"/>
</level>
<level name="Final Fight" jewels="1,2,5,6" time="240" startingMoney="4000" tileReward="30" tilePenalty="-2000" killReward="1" bonus="10000">
<event duration="10" maxShips="5" ships="1" minTime="3" maxTime="4"/>
<event duration="20" maxShips="10" ships="1,2,3,4,5,6" minTime="1" maxTime="2"/>
<event duration="30" maxShips="15" ships="6,2,6,2,4,4,5,3,1,7,8,9" minTime="1" maxTime="2"/>
</level>
<level name="Survival" jewels="1,2,3" time="1" startingMoney="10000" tileReward="10" tilePenalty="-2000" killReward="0.1" bonus="10000">
<event duration="20" maxShips="10" ships="1" minTime="0" maxTime="2"/>
<event duration="20" maxShips="15" ships="1,2,3,4,5,6" minTime="1" maxTime="2"/>
<event duration="20" maxShips="15" ships="4,5,6" minTime="1" maxTime="2"/>
<event duration="20" maxShips="15" ships="4,5,6,7,8,9" minTime="1" maxTime="2"/>
<event duration="20" maxShips="20" ships="7,8,9" minTime="1" maxTime="2"/>
<event duration="20" maxShips="20" ships="7,8,9" minTime="0" maxTime="1"/>
</level>
</levels>
</spaceAttack>
;
}
}//package net.louissi.SpaceAttack.global
Section 85
//Ressources_MAINMENU_SWF (net.louissi.SpaceAttack.global.Ressources_MAINMENU_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_MAINMENU_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_MAINMENU_SWF(){
dataClass = Ressources_MAINMENU_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 86
//Ressources_MAINMENU_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_MAINMENU_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_MAINMENU_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 87
//Ressources_MENU_MUSIC (net.louissi.SpaceAttack.global.Ressources_MENU_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_MENU_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 88
//Ressources_OVERLAYS_SWF (net.louissi.SpaceAttack.global.Ressources_OVERLAYS_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_OVERLAYS_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_OVERLAYS_SWF(){
dataClass = Ressources_OVERLAYS_SWF_dataClass;
super();
initialWidth = (11000 / 20);
initialHeight = (8000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 89
//Ressources_OVERLAYS_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_OVERLAYS_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_OVERLAYS_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 90
//Ressources_SHIPSDATA_XML (net.louissi.SpaceAttack.global.Ressources_SHIPSDATA_XML)
package net.louissi.SpaceAttack.global {
public class Ressources_SHIPSDATA_XML {
public static var data:XML = <spaceAttack>
<ships>
<ship name="LF1" desc="Perfect for first encounters, the LF1 is cheap and fast" cost="100" turningSpeed="3" shootingTime="0.3" health="20" size="7" speed="4" damage="1"/>
<ship name="HF1" desc="Slow and powerfull, this fighter is good when protected by other ships" cost="400" turningSpeed="2" shootingTime="1" health="25" size="7" speed="2" damage="10"/>
<ship name="DCF1" desc="This ship is fast and sturdy, but won't really hurt anyone. It is best used as a decoy when you base is under attack" cost="150" turningSpeed="3.5" shootingTime="0.5" health="80" size="10" speed="3.5" damage="0.2"/>
<ship name="LF2" desc="Perfect for first encounters, the LF1 is cheap and fast" cost="400" turningSpeed="3" shootingTime="0.3" health="110" size="7" speed="4" damage="4"/>
<ship name="HF2" desc="Slow and powerfull, this fighter is good when protected by other ships" cost="1200" turningSpeed="2" shootingTime="0.8" health="50" size="7" speed="2" damage="20"/>
<ship name="DCF2" desc="This ship is best used as a decoy when you have to take down turrets" cost="600" turningSpeed="3.5" shootingTime="0.4" health="450" size="10" speed="3.5" damage="1"/>
<ship name="LF3" desc="Perfect for advanced battles, the LF3 is fast and balanced" cost="1000" turningSpeed="3" shootingTime="0.3" health="50" size="7" speed="4" damage="10"/>
<ship name="HF3" desc="Slow and powerfull, this advanced bomber is good when protected by other ships" cost="5000" turningSpeed="2" shootingTime="1" health="100" size="7" speed="1.5" damage="40"/>
<ship name="DCF3" desc="This is the most defensive ship of the fleet. Best used as a decoy." cost="1500" turningSpeed="3.5" shootingTime="0.1" health="1000" size="10" speed="3.5" damage="1"/>
</ships>
<bases>
<base health="800" size="10"/>
<base health="3000" size="10"/>
</bases>
<turrets>
<turret health="60" damage="0.1" shootingRate="0.1" size="10"/>
<turret health="400" damage="6" shootingRate="0.2" size="10"/>
</turrets>
<achievements>
<achievement name="War" desc="Destroy one base"/>
<achievement name="War Master" desc="Destroy 50 bases"/>
<achievement name="Gold digger" desc="Earn a total of 500000$"/>
<achievement name="Game complete" desc="Finish all levels"/>
<achievement name="Addict" desc="Play for 10 minutes"/>
<achievement name="Addict Pro" desc="Play for 20 minutes"/>
<achievement name="Turret killer" desc="Destroy 100 turrets"/>
<achievement name="No mercy" desc="Destroy 1000 ships"/>
<achievement name="Combo Master" desc="Match 20 jewels"/>
<achievement name="Combo Genius" desc="Match 60 jewels"/>
</achievements>
</spaceAttack>
;
}
}//package net.louissi.SpaceAttack.global
Section 91
//Ressources_SOUND_BASE_MUSIC (net.louissi.SpaceAttack.global.Ressources_SOUND_BASE_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_SOUND_BASE_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 92
//Ressources_SOUND_JEWELBIG_MUSIC (net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELBIG_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_SOUND_JEWELBIG_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 93
//Ressources_SOUND_JEWELHIT_MUSIC (net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELHIT_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_SOUND_JEWELHIT_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 94
//Ressources_SOUND_JEWELNORMAL_MUSIC (net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELNORMAL_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_SOUND_JEWELNORMAL_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 95
//Ressources_SOUND_SHIPDESTROYED_MUSIC (net.louissi.SpaceAttack.global.Ressources_SOUND_SHIPDESTROYED_MUSIC)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_SOUND_SHIPDESTROYED_MUSIC extends SoundAsset {
}
}//package net.louissi.SpaceAttack.global
Section 96
//Ressources_SPONSOR_SWF (net.louissi.SpaceAttack.global.Ressources_SPONSOR_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_SPONSOR_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_SPONSOR_SWF(){
dataClass = Ressources_SPONSOR_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 97
//Ressources_SPONSOR_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_SPONSOR_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_SPONSOR_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 98
//Ressources_SURVIVALEND_SWF (net.louissi.SpaceAttack.global.Ressources_SURVIVALEND_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_SURVIVALEND_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_SURVIVALEND_SWF(){
dataClass = Ressources_SURVIVALEND_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 99
//Ressources_SURVIVALEND_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_SURVIVALEND_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_SURVIVALEND_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 100
//Ressources_VICTORY_SWF (net.louissi.SpaceAttack.global.Ressources_VICTORY_SWF)
package net.louissi.SpaceAttack.global {
import flash.utils.*;
import mx.core.*;
public class Ressources_VICTORY_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Ressources_VICTORY_SWF(){
dataClass = Ressources_VICTORY_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.global
Section 101
//Ressources_VICTORY_SWF_dataClass (net.louissi.SpaceAttack.global.Ressources_VICTORY_SWF_dataClass)
package net.louissi.SpaceAttack.global {
import mx.core.*;
public class Ressources_VICTORY_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.global
Section 102
//Save (net.louissi.SpaceAttack.global.Save)
package net.louissi.SpaceAttack.global {
import net.louissi.Moon.Managers.*;
import flash.net.*;
public class Save {
public static var achievement8:int;
public static var achievement9:int;
public static var saveGame:XML;
public static var biggestCombo:int;
public static var playTime:Number;
public static var progress:int;
public static var score10:int;
public static var score11:int;
public static var score12:int;
public static var score13:int;
public static var SAVE_XML:Class = Save_SAVE_XML;
public static var score15:int;
public static var score14:int;
public static var moneyCollected:int;
public static var shipKilled1:int;
public static var shipKilled2:int;
public static var shipKilled3:int;
public static var shipKilled4:int;
public static var shipKilled5:int;
public static var shipKilled6:int;
public static var shipKilled7:int;
public static var shipKilled8:int;
public static var shipKilled9:int;
public static var emptySave:XML;
public static var moneySpent:int;
public static var lastScore:int;
public static var achievement10:int;
public static var shipCreated1:int;
public static var shipCreated2:int;
public static var SAVE_PATH:String = "assets/data/save.xml";
public static var shipCreated4:int;
public static var shipCreated5:int;
public static var shipCreated6:int;
public static var shipCreated7:int;
public static var shipCreated8:int;
public static var shipCreated9:int;
public static var shipCreated3:int;
public static var score1:int;
public static var score2:int;
public static var score3:int;
public static var score5:int;
public static var score6:int;
public static var score7:int;
public static var score9:int;
public static var achievement7:int;
public static var score4:int;
public static var achievement2:int;
public static var achievement3:int;
public static var achievement4:int;
public static var score8:int;
public static var turretsKilled:int;
public static var achievement1:int;
public static var achievement5:int;
public static var basesKilled:int;
public static var achievement6:int;
public function Save(){
super();
}
public static function spentMoney(amount:int):void{
Save.moneySpent = (Save.moneySpent + amount);
}
public static function gainedMoney(amount:int):void{
Save.moneyCollected = (Save.moneyCollected + amount);
}
public static function init():void{
var so:SharedObject = SharedObject.getLocal("userData");
trace(("Save size: " + so.size));
RessourceManager.getInstance().loadXML(Save.SAVE_XML, Save.SAVE_PATH, Save.saveLoaded);
}
public static function saveScore(levelId:int, score:int):void{
if (score > Save[("score" + levelId)]){
Save[("score" + levelId)] = score;
};
}
public static function createdShip(id:int):void{
var _local2 = Save;
var _local3 = ("shipCreated" + id);
var _local4 = (_local2[_local3] + 1);
_local2[_local3] = _local4;
}
public static function clear():void{
var so:SharedObject = SharedObject.getLocal("userData");
so.data.save = Save.emptySave.toString();
Save.load();
}
public static function killedShip(id:int):void{
var _local2 = Save;
var _local3 = ("shipKilled" + id);
var _local4 = (_local2[_local3] + 1);
_local2[_local3] = _local4;
}
public static function save():void{
var i:int;
var so:SharedObject = SharedObject.getLocal("userData");
var levelsXML:XML = Save.saveGame.save.levels[0];
var achievementsXML:XML = Save.saveGame.save.achievements[0];
var statsXML:XML = Save.saveGame.save.stats[0];
i = 1;
while (i <= 15) {
levelsXML.level[(i - 1)].@score = String(Save[("score" + i)]);
i++;
};
i = 1;
while (i <= 9) {
statsXML.@[("shipCreated" + i)] = String(Save[("shipCreated" + i)]);
i++;
};
i = 1;
while (i <= 9) {
statsXML.@[("shipKilled" + i)] = String(Save[("shipKilled" + i)]);
i++;
};
i = 1;
while (i <= 10) {
achievementsXML.achievement[(i - 1)].@earned = String(Save[("achievement" + i)]);
i++;
};
statsXML.@progress = String(Save.progress);
statsXML.@turretsKilled = String(Save.turretsKilled);
statsXML.@basesKilled = String(Save.basesKilled);
statsXML.@moneyCollected = String(Save.moneyCollected);
statsXML.@moneySpent = String(Save.moneySpent);
statsXML.@biggestCombo = String(Save.biggestCombo);
statsXML.@playTime = String(Save.playTime);
statsXML.@lastScore = String(Save.lastScore);
so.data.save = Save.saveGame.toString();
so.flush();
}
public static function combo(amount:int):void{
if (amount > Save.biggestCombo){
Save.biggestCombo = amount;
};
}
public static function killedTurret():void{
Save.turretsKilled++;
}
public static function saveLoaded(xmlData:XML):void{
var so:SharedObject = SharedObject.getLocal("userData");
Save.emptySave = xmlData;
if (so.size == 0){
Save.saveGame = xmlData;
so.data.save = Save.saveGame.toString();
};
Save.load();
}
public static function load():void{
var i:int;
var so:SharedObject = SharedObject.getLocal("userData");
Save.saveGame = XML(so.data.save);
var levelsXML:XML = Save.saveGame.save.levels[0];
var statsXML:XML = Save.saveGame.save.stats[0];
var achievementsXML:XML = Save.saveGame.save.achievements[0];
i = 1;
while (i <= 15) {
Save[("score" + i)] = int(levelsXML.level[(i - 1)].@score);
i++;
};
i = 1;
while (i <= 9) {
Save[("shipCreated" + i)] = int(statsXML.@[("shipCreated" + i)]);
i++;
};
i = 1;
while (i <= 9) {
Save[("shipKilled" + i)] = int(statsXML.@[("shipKilled" + i)]);
i++;
};
i = 1;
while (i <= 10) {
Save[("achievement" + i)] = int(achievementsXML.achievement[(i - 1)].@earned);
i++;
};
Save.progress = int(statsXML.@progress);
Save.turretsKilled = int(statsXML.@turretsKilled);
Save.basesKilled = int(statsXML.@basesKilled);
Save.moneyCollected = int(statsXML.@moneyCollected);
Save.moneySpent = int(statsXML.@moneySpent);
Save.biggestCombo = int(statsXML.@biggestCombo);
Save.playTime = int(statsXML.@playTime);
Save.lastScore = int(statsXML.@lastScore);
}
public static function killedBase():void{
Save.basesKilled++;
}
public static function completedLevel(id:int):void{
if (id > Save.progress){
Save.progress = id;
};
}
}
}//package net.louissi.SpaceAttack.global
Section 103
//Save_SAVE_XML (net.louissi.SpaceAttack.global.Save_SAVE_XML)
package net.louissi.SpaceAttack.global {
public class Save_SAVE_XML {
public static var data:XML = <spaceAttack>
<save>
<levels>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
<level score="0"/>
</levels>
<achievements>
<achievement earned="0"/>
<achievement earned="0"/>
<achievement earned="0"/>
<achievement earned="0"/>
<achievement earned="0"/>
<achievement earned="0"/>
<achievement earned="0"/>
<achievement earned="0"/>
<achievement earned="0"/>
<achievement earned="0"/>
</achievements>
<stats progress="0" shipCreated1="0" shipCreated2="0" shipCreated3="0" shipCreated4="0" shipCreated5="0" shipCreated6="0" shipCreated7="0" shipCreated8="0" shipCreated9="0" shipKilled1="0" shipKilled2="0" shipKilled3="0" shipKilled4="0" shipKilled5="0" shipKilled6="0" shipKilled7="0" shipKilled8="0" shipKilled9="0" turretsKilled="0" basesKilled="0" moneyCollected="0" moneySpent="0" biggestCombo="0" playTime="0" lastScore="0"/>
</save>
</spaceAttack>
;
}
}//package net.louissi.SpaceAttack.global
Section 104
//Stats (net.louissi.SpaceAttack.global.Stats)
package net.louissi.SpaceAttack.global {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.geom.*;
import flash.text.*;
import flash.system.*;
public class Stats extends Sprite {
protected const WIDTH:uint = 70;
protected const HEIGHT:uint = 100;
protected var timer:uint;
protected var mem_max_graph:uint;
protected var theme:Object;
protected var mem:Number;
protected var xml:XML;
protected var graph:Bitmap;
protected var mem_graph:uint;
protected var fps:uint;
protected var ms_prev:uint;
protected var text:TextField;
protected var rectangle:Rectangle;
protected var style:StyleSheet;
protected var ms:uint;
protected var fps_graph:uint;
protected var mem_max:Number;
public function Stats(_theme:Object=null):void{
theme = {bg:51, fps:0xFFFF00, ms:0xFF00, mem:0xFFFF, memmax:0xFF0070};
super();
if (_theme){
if (_theme.bg != null){
theme.bg = _theme.bg;
};
if (_theme.fps != null){
theme.fps = _theme.fps;
};
if (_theme.ms != null){
theme.ms = _theme.ms;
};
if (_theme.mem != null){
theme.mem = _theme.mem;
};
if (_theme.memmax != null){
theme.memmax = _theme.memmax;
};
};
mem_max = 0;
xml = <xml><fps>FPS:</fps><ms>MS:</ms><mem>MEM:</mem><memMax>MAX:</memMax></xml>
;
style = new StyleSheet();
style.setStyle("xml", {fontSize:"9px", fontFamily:"_sans", leading:"-2px"});
style.setStyle("fps", {color:hex2css(theme.fps)});
style.setStyle("ms", {color:hex2css(theme.ms)});
style.setStyle("mem", {color:hex2css(theme.mem)});
style.setStyle("memMax", {color:hex2css(theme.memmax)});
text = new TextField();
text.width = WIDTH;
text.height = 50;
text.styleSheet = style;
text.condenseWhite = true;
text.selectable = false;
text.mouseEnabled = false;
graph = new Bitmap();
graph.y = 50;
rectangle = new Rectangle((WIDTH - 1), 0, 1, (HEIGHT - 50));
addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
addEventListener(Event.REMOVED_FROM_STAGE, destroy, false, 0, true);
}
private function destroy(e:Event):void{
graphics.clear();
while (numChildren > 0) {
removeChildAt(0);
};
graph.bitmapData.dispose();
removeEventListener(MouseEvent.CLICK, onClick);
removeEventListener(Event.ENTER_FRAME, update);
}
private function onClick(e:MouseEvent):void{
if (((mouseY / height) > 0.5)){
stage.frameRate--;
} else {
stage.frameRate++;
};
xml.fps = ((("FPS: " + fps) + " / ") + stage.frameRate);
text.htmlText = xml;
}
private function init(e:Event):void{
graphics.beginFill(theme.bg);
graphics.drawRect(0, 0, WIDTH, HEIGHT);
graphics.endFill();
addChild(text);
graph.bitmapData = new BitmapData(WIDTH, (HEIGHT - 50), false, theme.bg);
addChild(graph);
addEventListener(MouseEvent.CLICK, onClick);
addEventListener(Event.ENTER_FRAME, update);
}
private function update(e:Event):void{
timer = getTimer();
if ((timer - 1000) > ms_prev){
ms_prev = timer;
mem = Number((System.totalMemory * 9.54E-7).toFixed(3));
mem_max = ((mem_max > mem)) ? mem_max : mem;
fps_graph = Math.min(graph.height, ((fps / stage.frameRate) * graph.height));
mem_graph = (Math.min(graph.height, Math.sqrt(Math.sqrt((mem * 5000)))) - 2);
mem_max_graph = (Math.min(graph.height, Math.sqrt(Math.sqrt((mem_max * 5000)))) - 2);
graph.bitmapData.scroll(-1, 0);
graph.bitmapData.fillRect(rectangle, theme.bg);
graph.bitmapData.setPixel((graph.width - 1), (graph.height - fps_graph), theme.fps);
graph.bitmapData.setPixel((graph.width - 1), (graph.height - ((timer - ms) >> 1)), theme.ms);
graph.bitmapData.setPixel((graph.width - 1), (graph.height - mem_graph), theme.mem);
graph.bitmapData.setPixel((graph.width - 1), (graph.height - mem_max_graph), theme.memmax);
xml.fps = ((("FPS: " + fps) + " / ") + stage.frameRate);
xml.mem = ("MEM: " + mem);
xml.memMax = ("MAX: " + mem_max);
fps = 0;
};
fps++;
xml.ms = ("MS: " + (timer - ms));
ms = timer;
text.htmlText = xml;
}
private function hex2css(color:int):String{
return (("#" + color.toString(16)));
}
}
}//package net.louissi.SpaceAttack.global
Section 105
//Achievement (net.louissi.SpaceAttack.overlays.Achievement)
package net.louissi.SpaceAttack.overlays {
import flash.display.*;
import net.louissi.Moon.Managers.*;
import com.greensock.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.Moon.Global.*;
public class Achievement extends Sprite {
public var isAlive:Boolean;
private var display:MovieClip;
private var timer:Number;
private var id:int;
public function Achievement(id:int){
super();
isAlive = true;
this.id = id;
RessourceManager.getInstance().loadSWF(Ressources.OVERLAYS_SWF, Ressources.OVERLAYS_PATH, completeHandler);
timer = 4;
}
public function completeHandler(content:MovieClip):void{
var displayClass:Class = (content.loaderInfo.applicationDomain.getDefinition("achievement") as Class);
display = (new (displayClass) as MovieClip);
addChild(display);
y = -110;
x = GlobalVars.stageWidth;
TweenMax.to(this, 0.5, {y:0});
var xmlData:XML = GlobalVariables.shipsXML.achievements.achievement[(id - 1)];
var title:String = String(xmlData.@name);
var desc:String = String(xmlData.@desc);
display.nameTXT.text = title;
display.descTXT.text = desc;
display.icon.gotoAndStop(id);
}
public function render(delta:Number):void{
timer = (timer - delta);
if (timer <= 0){
isAlive = false;
};
}
public function destroy():void{
removeChild(display);
display = null;
}
}
}//package net.louissi.SpaceAttack.overlays
Section 106
//AchievementManager (net.louissi.SpaceAttack.overlays.AchievementManager)
package net.louissi.SpaceAttack.overlays {
import flash.display.*;
public class AchievementManager extends Sprite {
private var achievements:Array;
public function AchievementManager(){
super();
}
public function init():void{
achievements = new Array();
}
public function achieve(id:int):void{
var ach:Achievement = new Achievement(id);
achievements.push(ach);
addChild(ach);
}
public function render(delta:Number):void{
var i:int;
var count:int;
var object:Achievement;
var clean:Array;
clean = new Array();
count = achievements.length;
i = 0;
while (i < count) {
object = achievements[i];
if (!object.isAlive){
this.removeChild(object);
clean.push(object);
object.destroy();
} else {
object.render(delta);
};
i++;
};
count = clean.length;
i = 0;
while (i < count) {
achievements.splice(achievements.indexOf(clean[i]), 1);
i++;
};
}
}
}//package net.louissi.SpaceAttack.overlays
Section 107
//AGIcontainer (net.louissi.SpaceAttack.overlays.AGIcontainer)
package net.louissi.SpaceAttack.overlays {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class AGIcontainer extends Sprite {
public var done:Boolean;
public var agi;
private var agi_url:String;
private var loader:Loader;
private var devKey:String;
private var ICON:Class;
private var gameKey:String;
public function AGIcontainer(){
ICON = AGIcontainer_ICON;
super();
done = false;
this.addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}
public function showHighScores():void{
if (agi){
addChild(agi);
agi.showScoreboardList([{type:null, format:"time"}], null);
};
}
public function destroy():void{
}
private function addedToStage(e:Event):void{
init();
this.removeEventListener(Event.ADDED_TO_STAGE, addedToStage);
}
private function handleAGIError(error:Object):void{
}
private function initReal():void{
agi_url = "http://agi.armorgames.com/assets/agi/AGI.swf";
Security.allowDomain(agi_url);
devKey = "9f6eb2a299314e772fb66b445660a4c0";
gameKey = "space-attack";
var urlRequest:URLRequest = new URLRequest(agi_url);
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete, false, 0, true);
loader.load(urlRequest);
}
public function init():void{
initReal();
}
private function handleAGUIClose():void{
trace("AGUI closed");
done = true;
}
public function submitScore(score:int):void{
if (agi){
addChild(agi);
agi.showScoreboardSubmit(score, null, null, [{type:null, format:"time"}]);
};
}
private function loadComplete(e:Event):void{
loader.removeEventListener(e.type, loadComplete);
agi = e.currentTarget.content;
addChild(agi);
agi.init(devKey, gameKey, handleAGIError, true);
trace("inited the AGI");
agi.initAGUI({iconGraphic:new ICON(), onClose:handleAGUIClose});
}
}
}//package net.louissi.SpaceAttack.overlays
Section 108
//AGIcontainer_ICON (net.louissi.SpaceAttack.overlays.AGIcontainer_ICON)
package net.louissi.SpaceAttack.overlays {
import mx.core.*;
public class AGIcontainer_ICON extends SpriteAsset {
}
}//package net.louissi.SpaceAttack.overlays
Section 109
//Part_ScoreBadTXT (net.louissi.SpaceAttack.particles.Part_ScoreBadTXT)
package net.louissi.SpaceAttack.particles {
import flash.display.*;
import com.greensock.*;
import net.louissi.SpaceAttack.global.*;
import com.greensock.easing.*;
public class Part_ScoreBadTXT extends Particle {
private var display:MovieClip;
private var timer:Number;// = 0.5
public function Part_ScoreBadTXT(xPos:Number, yPos:Number, score:Number){
super();
var displayClass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition("scoreTXT2") as Class);
display = new (displayClass);
addChild(display);
x = xPos;
y = yPos;
display.score.text = score;
display.scaleX = (display.scaleY = 0.2);
TweenMax.to(display, 0.2, {scaleX:1, scaleY:1, ease:Cubic.easeOut});
display.mouseChildren = false;
display.mouseEnabled = false;
}
override public function destroy():void{
removeChild(display);
display = null;
}
override public function render(delta:Number):void{
timer = (timer - delta);
y = (y - ((timer * delta) * 20));
if (timer <= 0){
isAlive = false;
};
}
}
}//package net.louissi.SpaceAttack.particles
Section 110
//Part_ScoreTXT (net.louissi.SpaceAttack.particles.Part_ScoreTXT)
package net.louissi.SpaceAttack.particles {
import flash.display.*;
import com.greensock.*;
import net.louissi.SpaceAttack.global.*;
import com.greensock.easing.*;
public class Part_ScoreTXT extends Particle {
private var display:MovieClip;
private var timer:Number;// = 0.5
public function Part_ScoreTXT(xPos:Number, yPos:Number, score:Number){
super();
var displayClass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition("scoreTXT") as Class);
display = new (displayClass);
addChild(display);
x = xPos;
y = yPos;
display.score.text = score;
display.scaleX = (display.scaleY = 0.2);
TweenMax.to(display, 0.2, {scaleX:1, scaleY:1, ease:Cubic.easeOut});
display.mouseChildren = false;
display.mouseEnabled = false;
}
override public function destroy():void{
removeChild(display);
display = null;
}
override public function render(delta:Number):void{
timer = (timer - delta);
y = (y - ((timer * delta) * 20));
if (timer <= 0){
isAlive = false;
};
}
}
}//package net.louissi.SpaceAttack.particles
Section 111
//Particle (net.louissi.SpaceAttack.particles.Particle)
package net.louissi.SpaceAttack.particles {
import flash.display.*;
public class Particle extends MovieClip {
public var isAlive:Boolean;// = true
public function Particle(){
super();
}
public function destroy():void{
}
public function render(delta:Number):void{
}
}
}//package net.louissi.SpaceAttack.particles
Section 112
//Particles (net.louissi.SpaceAttack.particles.Particles)
package net.louissi.SpaceAttack.particles {
import flash.display.*;
public class Particles extends Sprite {
public var objects:Array;
public function Particles(){
super();
objects = new Array();
this.mouseChildren = false;
this.mouseEnabled = false;
}
public function createParticle(object:Particle):void{
addChild(object);
objects.push(object);
}
public function render(delta:Number):void{
var i:int;
var count:int;
var object:Particle;
var clean:Array;
clean = new Array();
count = objects.length;
i = 0;
while (i < count) {
object = objects[i];
if (!object.isAlive){
removeChild(object);
clean.push(object);
object.destroy();
} else {
object.render(delta);
};
i++;
};
count = clean.length;
i = 0;
while (i < count) {
objects.splice(objects.indexOf(clean[i]), 1);
i++;
};
}
public function cleanAll():void{
var i:int;
var count:int;
var object:Particle;
var clean:Array;
count = objects.length;
i = 0;
while (i < count) {
object = objects[i];
object.isAlive = false;
i++;
};
}
}
}//package net.louissi.SpaceAttack.particles
Section 113
//Jewel (net.louissi.SpaceAttack.puzzle.Jewel)
package net.louissi.SpaceAttack.puzzle {
import flash.events.*;
import flash.display.*;
import com.greensock.*;
import net.louissi.SpaceAttack.global.*;
import com.greensock.easing.*;
public class Jewel extends Sprite {
private var display:MovieClip;
public var isAlive:Boolean;
public var tx:int;
public var ty:int;
public var moving:Boolean;
public var id:int;
public var priority:Number;
public var needToMove:Boolean;
private var dead:Boolean;
private var moveSpeed:Number;// = 0.05
private var waitingForSound:Boolean;
public var puzzle:Puzzle;
public function Jewel(tx:int, ty:int, id:int){
super();
this.puzzle = puzzle;
var tClass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition("jewel") as Class);
display = (new (tClass) as MovieClip);
addChild(display);
display.display.gotoAndStop(id);
x = (tx * GlobalVariables.JEWELSIZE);
y = ((-(ty) - 1) * GlobalVariables.JEWELSIZE);
display.hitzone.buttonMode = true;
this.tx = tx;
this.ty = ty;
moving = false;
isAlive = true;
display.hitzone.addEventListener(MouseEvent.CLICK, clickHandler);
dead = false;
this.id = id;
setPriority();
}
public function destroy():void{
removeChild(display);
display = null;
}
public function move():void{
needToMove = false;
GlobalVariables.puzzle.movingJewels++;
TweenMax.to(this, moveSpeed, {x:(tx * GlobalVariables.JEWELSIZE), y:((-(ty) - 1) * GlobalVariables.JEWELSIZE), onComplete:doneMoving, ease:Linear.easeNone});
}
public function updateMap():void{
if (isAlive){
GlobalVariables.jewelMap[ty][tx] = id;
};
}
public function render(delta:Number):void{
}
public function clickHandler(e:MouseEvent):void{
trace("jewel clicked");
GlobalVariables.puzzle.jewelClicked(this);
}
public function setPriority():void{
priority = ((ty * 30) + tx);
}
public function blowUp():void{
GlobalVariables.jewelMap[ty][tx] = 0;
isAlive = false;
}
public function checkLeft():void{
if (tx != 0){
if (GlobalVariables.jewelMap[ty][(tx - 1)] == 0){
GlobalVariables.jewelMap[ty][(tx - 1)] = id;
GlobalVariables.jewelMap[ty][tx] = 0;
tx--;
setPriority();
needToMove = true;
};
};
}
public function checkUnder():void{
if (ty != 0){
if (GlobalVariables.jewelMap[(ty - 1)][tx] == 0){
GlobalVariables.jewelMap[(ty - 1)][tx] = id;
GlobalVariables.jewelMap[ty][tx] = 0;
ty--;
setPriority();
needToMove = true;
} else {
if (waitingForSound){
waitingForSound = false;
GlobalVariables.puzzle.fallSound();
};
};
};
}
private function doneMoving():void{
waitingForSound = true;
GlobalVariables.puzzle.movingJewels--;
}
}
}//package net.louissi.SpaceAttack.puzzle
Section 114
//Puzzle (net.louissi.SpaceAttack.puzzle.Puzzle)
package net.louissi.SpaceAttack.puzzle {
import flash.display.*;
import net.louissi.Moon.Managers.*;
import net.louissi.SpaceAttack.particles.*;
import net.louissi.SpaceAttack.global.*;
public class Puzzle extends Sprite {
private const MAP_H:int = 24;
private const MAP_W:int = 8;
private var jewelsClip:MovieClip;
private var jewels:Array;
private var waitForMove:Boolean;
private var inLevel:Boolean;
private var jewelsMask:MovieClip;
private var tilesArray:Array;
private var particles:Particles;
private var background:MovieClip;
private var popSound:Boolean;
private var mapArray:Array;
private var phase:String;
public var movingJewels:int;
public function Puzzle(){
super();
x = 6;
y = 426;
createPuzzle();
GlobalVariables.puzzle = this;
}
private function gainMoney(amount:int):void{
GlobalVariables.cash = (GlobalVariables.cash + amount);
if (GlobalVariables.cash < 0){
GlobalVariables.cash = 0;
};
GlobalVariables.game.updateMoney();
trace(("gained money: " + amount));
}
private function checkJewelsVert():void{
var jewel:Jewel;
sortJewels();
var a:int;
while (a < jewels.length) {
jewel = jewels[a];
jewel.checkUnder();
if (jewel.needToMove){
jewel.move();
};
a++;
};
}
private function getEmptyMap():Array{
var b:int;
var mapArray:Array = new Array(MAP_H);
var a:int;
while (a < MAP_H) {
mapArray[a] = new Array(MAP_W);
b = 0;
while (b < MAP_W) {
mapArray[a][b] = 0;
b++;
};
a++;
};
return (mapArray);
}
public function loadLevel(id:int):void{
var xmlData:XML = GlobalVariables.levelsXML.levels.level[(id - 1)];
var jewelsString:String = xmlData.@jewels;
tilesArray = jewelsString.split(",");
jewels = new Array();
phase = "click";
waitForMove = false;
movingJewels = 0;
GlobalVariables.jewelMap = getRandomMap();
createFirstTiles();
inLevel = true;
}
private function sortJewels():void{
jewels.sortOn("priority", Array.NUMERIC);
}
private function createFirstTiles():void{
var b:int;
var a:int;
while (a < MAP_H) {
b = 0;
while (b < MAP_W) {
if (a < (MAP_H / 2)){
createJewel(b, a, GlobalVariables.jewelMap[a][b]);
};
b++;
};
a++;
};
}
private function updateMap():void{
var jewel:Jewel;
GlobalVariables.jewelMap = getEmptyMap();
var a:int;
while (a < jewels.length) {
jewel = jewels[a];
jewel.updateMap();
a++;
};
}
public function render(delta:Number):void{
var i:int;
var count:int;
var jewel:Jewel;
var clean:Array;
var a:int;
popSound = true;
if (inLevel){
if (particles){
particles.render(delta);
};
if ((((phase == "move1")) && (!(waitForMove)))){
if (isVertHoles()){
checkJewelsVert();
waitForMove = true;
} else {
phase = "move2";
};
} else {
if ((((phase == "move1")) && (waitForMove))){
if (movingJewels == 0){
waitForMove = false;
};
} else {
if ((((phase == "move2")) && (!(waitForMove)))){
if (isHorHoles()){
checkJewelsHor();
waitForMove = true;
} else {
phase = "click";
a = (MAP_H / 2);
while (a >= 0) {
trace(GlobalVariables.jewelMap[a]);
a--;
};
};
} else {
if ((((phase == "move2")) && (waitForMove))){
if (movingJewels == 0){
waitForMove = false;
};
} else {
if (phase == "drop"){
checkFall();
phase = "move1";
};
};
};
};
};
clean = new Array();
count = jewels.length;
i = 0;
while (i < count) {
jewel = jewels[i];
if (!jewel.isAlive){
jewelsClip.removeChild(jewel);
clean.push(jewel);
jewel.destroy();
} else {
jewel.render(delta);
};
i++;
};
count = clean.length;
i = 0;
while (i < count) {
jewels.splice(jewels.indexOf(clean[i]), 1);
i++;
};
};
}
private function getMatchArray(first:Jewel):Array{
var check:Array;
var match:Array;
var checked:Array;
var done:Boolean;
var id:int;
var clean:Array;
var a:int;
var count:int;
var i:int;
var jewel:Jewel;
var lj:Jewel;
var uj:Jewel;
var dj:Jewel;
var rj:Jewel;
check = new Array();
match = new Array();
checked = new Array();
done = false;
id = first.id;
check.push(first);
match.push(first);
while (!(done)) {
if (check.length == 0){
done = true;
} else {
clean = new Array();
a = 0;
while (a < check.length) {
jewel = check[a];
lj = getJewelAt((jewel.tx - 1), jewel.ty);
if (lj){
if (checked.indexOf(lj) == -1){
if (lj.id == id){
check.push(lj);
match.push(lj);
};
};
};
uj = getJewelAt(jewel.tx, (jewel.ty - 1));
if (uj){
if (checked.indexOf(uj) == -1){
if (uj.id == id){
check.push(uj);
match.push(uj);
};
};
};
dj = getJewelAt(jewel.tx, (jewel.ty + 1));
if (dj){
if (checked.indexOf(dj) == -1){
if (dj.id == id){
check.push(dj);
match.push(dj);
};
};
};
rj = getJewelAt((jewel.tx + 1), jewel.ty);
if (rj){
if (checked.indexOf(rj) == -1){
if (rj.id == id){
check.push(rj);
match.push(rj);
};
};
};
clean.push(jewel);
checked.push(jewel);
a++;
};
count = clean.length;
i = 0;
while (i < count) {
check.splice(check.indexOf(clean[i]), 1);
i++;
};
};
};
return (match);
}
private function createPuzzle():void{
var bgclass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition("puzzleBG") as Class);
background = (new (bgclass) as MovieClip);
addChild(background);
jewelsClip = new MovieClip();
addChild(jewelsClip);
particles = new Particles();
addChild(particles);
var maskclass:Class = (GlobalVariables.gameAssets.loaderInfo.applicationDomain.getDefinition("puzzleMask") as Class);
jewelsMask = (new (maskclass) as MovieClip);
addChild(jewelsMask);
jewelsClip.mask = jewelsMask;
}
public function fallSound():void{
if (popSound){
SoundManager.getInstance().playSound(Ressources.SOUND_JEWELHIT_MUSIC, 1);
popSound = false;
};
}
private function getJewelAt(tx:int, ty:int):Jewel{
var jewel:Jewel;
var j:Jewel;
for each (j in jewels) {
if ((((j.tx == tx)) && ((j.ty == ty)))){
jewel = j;
};
};
return (jewel);
}
private function getRandomMap():Array{
var b:int;
var randId:int;
var mapArray:Array = new Array(MAP_H);
var a:int;
while (a < MAP_H) {
mapArray[a] = new Array(MAP_W);
b = 0;
while (b < MAP_W) {
randId = Math.round((Math.random() * (tilesArray.length - 1)));
if (a < (MAP_H / 2)){
mapArray[a][b] = tilesArray[randId];
} else {
mapArray[a][b] = 0;
};
b++;
};
a++;
};
return (mapArray);
}
public function jewelClicked(jewel:Jewel):void{
var matches:Array;
var multi:int;
var gain:int;
var j:Jewel;
if (phase == "click"){
matches = getMatchArray(jewel);
multi = 1;
if (matches.length > 1){
gain = (GlobalVariables.game.tileReward * matches.length);
Save.combo(matches.length);
Save.gainedMoney(gain);
GlobalVariables.game.tutorialNext(3);
GlobalVariables.moneyBonus = (GlobalVariables.moneyBonus + gain);
if (matches.length > 20){
SoundManager.getInstance().playSound(Ressources.SOUND_JEWELBIG_MUSIC, 1);
} else {
SoundManager.getInstance().playSound(Ressources.SOUND_JEWELNORMAL_MUSIC, 1);
};
} else {
gain = GlobalVariables.game.tilePenalty;
};
if (gain > 0){
particles.createParticle(new Part_ScoreTXT((jewel.x + (GlobalVariables.JEWELSIZE / 2)), (jewel.y + (GlobalVariables.JEWELSIZE / 2)), gain));
} else {
if (gain < 0){
particles.createParticle(new Part_ScoreBadTXT((jewel.x + (GlobalVariables.JEWELSIZE / 2)), (jewel.y + (GlobalVariables.JEWELSIZE / 2)), gain));
};
};
gainMoney(gain);
for each (j in matches) {
j.blowUp();
};
phase = "drop";
Achievements.checkCombos();
Achievements.checkMoney();
};
}
private function createJewel(tx:int, ty:int, id:int):void{
var jewel:Jewel = new Jewel(tx, ty, id);
jewelsClip.addChild(jewel);
jewels.push(jewel);
}
private function checkFall():void{
var b:int;
var randId:int;
var yt:int;
while (yt < (MAP_H / 2)) {
b = 0;
while (b < MAP_W) {
if (GlobalVariables.jewelMap[yt][b] == 0){
randId = Math.round((Math.random() * (tilesArray.length - 1)));
createJewel(b, (yt + 12), tilesArray[randId]);
GlobalVariables.jewelMap[(yt + 12)][b] = tilesArray[randId];
};
b++;
};
yt++;
};
}
public function isHorHoles():Boolean{
var i:int;
var empty:Boolean;
var r:int;
var val:Boolean;
var emptyColumn:Boolean;
var emptyColumns:Array = new Array();
var startCol:int;
var c:int;
while (c < MAP_W) {
empty = true;
r = 0;
while (r < MAP_H) {
if (GlobalVariables.jewelMap[r][c] != 0){
empty = false;
if (c > startCol){
startCol = c;
};
};
r++;
};
if (empty){
emptyColumns.push(c);
};
c++;
};
var clean:Array = new Array();
i = 0;
while (i < emptyColumns.length) {
if (emptyColumns[i] > startCol){
clean.push(emptyColumns[i]);
};
i++;
};
var count:int = clean.length;
i = 0;
while (i < count) {
emptyColumns.splice(emptyColumns.indexOf(clean[i]), 1);
i++;
};
if (emptyColumns.length > 0){
emptyColumn = true;
};
if (emptyColumn){
val = true;
trace(("empty columns: " + emptyColumns));
trace(("start column: " + startCol));
};
return (val);
}
public function isVertHoles():Boolean{
var b:int;
var val:Boolean;
var a:int;
while (a < MAP_H) {
b = 0;
while (b < MAP_W) {
if (GlobalVariables.jewelMap[a][b] != 0){
if (a != 0){
if (GlobalVariables.jewelMap[(a - 1)][b] == 0){
val = true;
};
};
};
b++;
};
a++;
};
return (val);
}
private function checkJewelsHor():void{
var i:int;
var empty:Boolean;
var r:int;
var jewel:Jewel;
sortJewels();
var emptyColumn:Boolean;
var emptyColumns:Array = new Array();
var startCol:int;
var c:int;
while (c < MAP_W) {
empty = true;
r = 0;
while (r < MAP_H) {
if (GlobalVariables.jewelMap[r][c] != 0){
empty = false;
if (c > startCol){
startCol = c;
};
};
r++;
};
if (empty){
emptyColumns.push(c);
};
c++;
};
var clean:Array = new Array();
i = 0;
while (i < emptyColumns.length) {
if (emptyColumns[i] > startCol){
clean.push(emptyColumns[i]);
};
i++;
};
var count:int = clean.length;
i = 0;
while (i < count) {
emptyColumns.splice(emptyColumns.indexOf(clean[i]), 1);
i++;
};
if (emptyColumns.length > 0){
emptyColumn = true;
};
trace((":: " + emptyColumns));
var a:int;
while (a < jewels.length) {
jewel = jewels[a];
trace(jewel.tx);
if (emptyColumns.indexOf((jewel.tx - 1)) != -1){
trace("*");
jewel.checkLeft();
if (jewel.needToMove){
jewel.move();
};
};
a++;
};
}
}
}//package net.louissi.SpaceAttack.puzzle
Section 115
//AchievementsScreen (net.louissi.SpaceAttack.screens.AchievementsScreen)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.Moon.Transitions.*;
public class AchievementsScreen extends Screen implements IScreen {
public function AchievementsScreen(){
super();
}
public function mouseUp():void{
}
public function chrono(tmp:Number):String{
var heures:Number;
var jours:Number;
var minutes:Number;
var secondes:Number;
var heuresTXT:String;
var minutesTXT:String;
var secondesTXT:String;
jours = Math.floor((((tmp / 60) / 60) / 24));
heures = Math.floor(((tmp / 60) / 60));
minutes = Math.floor((tmp / 60));
secondes = Math.floor((tmp % 60));
if (heures < 10){
heuresTXT = ("0" + heures);
} else {
heuresTXT = String(heures);
};
if (minutes < 10){
minutesTXT = ("0" + minutes);
} else {
minutesTXT = String(minutes);
};
if (secondes < 10){
secondesTXT = ("0" + secondes);
} else {
secondesTXT = String(secondes);
};
return (((((((jours + "d ") + heuresTXT) + ":") + minutesTXT) + ":") + secondesTXT));
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
private function allLoaded():void{
var i:int;
ButtonManager.getInstance().loadButtons(this);
i = 1;
while (i <= 10) {
content[("btnAc" + i)].id = i;
content[("btnAc" + i)].addEventListener(MouseEvent.MOUSE_OVER, btnOver);
content[("btnAc" + i)].addEventListener(MouseEvent.MOUSE_OUT, btnOut);
if (Save[("achievement" + i)] == 0){
content[("ac" + i)].visible = false;
};
i++;
};
var totalKilled:Number = 0;
var totalCreated:Number = 0;
i = 1;
while (i <= 9) {
totalCreated = (totalCreated + Save[("shipCreated" + i)]);
totalKilled = (totalKilled + Save[("shipKilled" + i)]);
content[("sd" + i)].text = Save[("shipKilled" + i)];
content[("sc" + i)].text = Save[("shipCreated" + i)];
i++;
};
content.scTotal.text = totalCreated;
content.sdTotal.text = totalKilled;
content.bd.text = Save.basesKilled;
content.td.text = Save.turretsKilled;
content.bjc.text = Save.biggestCombo;
content.mc.text = Save.moneyCollected;
content.ms.text = Save.moneySpent;
content.time.text = chrono(Math.round(Save.playTime));
content.achievementInfo.visible = false;
}
public function mouseDown():void{
}
public function init():void{
loadSWF(Ressources.ACHIEVEMENTS_SWF, Ressources.ACHIEVEMENTS_PATH, completeHandler);
}
public function completeHandler():void{
isLoaded = true;
allLoaded();
}
private function btnOut(e:MouseEvent):void{
content.achievementInfo.visible = false;
}
private function btnOver(e:MouseEvent):void{
var id:int = e.currentTarget.id;
content.achievementInfo.visible = true;
var xmlData:XML = GlobalVariables.shipsXML.achievements.achievement[(id - 1)];
var desc:String = String(xmlData.@desc);
content.achievementInfo.descTXT.text = desc;
}
public function destroy():void{
var i:int;
i = 1;
while (i <= 10) {
content[("btnAc" + i)].removeEventListener(MouseEvent.MOUSE_OVER, btnOver);
content[("btnAc" + i)].removeEventListener(MouseEvent.MOUSE_OUT, btnOut);
i++;
};
ButtonManager.getInstance().clear();
}
public function render(delta:Number):void{
}
public function btnMainMenuClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new MainMenu() as IScreen), new Transition_Fade(0.2));
}
}
}//package net.louissi.SpaceAttack.screens
Section 116
//Author (net.louissi.SpaceAttack.screens.Author)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.Moon.Transitions.*;
import com.memecounter.*;
import flash.net.*;
public class Author extends Screen implements IScreen {
public function Author(){
super();
}
public function animDone():void{
ScreenManager.getInstance().loadScreen((new MainMenu() as IScreen), new Transition_Checkers(1, 24, 16, 0.3));
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
public function render(delta:Number):void{
if (content.done){
content.done = false;
animDone();
};
}
public function mouseDown():void{
}
public function mouseUp():void{
}
public function init():void{
loadSWF(Ressources.AUTHOR_SWF, Ressources.AUTHOR_PATH, completeHandler);
}
public function completeHandler():void{
isLoaded = true;
ButtonManager.getInstance().loadButtons(this);
}
public function destroy():void{
ButtonManager.getInstance().clear();
}
public function btnLinkClick_Handler(e:Event):void{
Tracker.kvEvent(8533);
navigateToURL(new URLRequest("http://armorgames.com/user/Louissi"), "_blank");
}
}
}//package net.louissi.SpaceAttack.screens
Section 117
//Defeat (net.louissi.SpaceAttack.screens.Defeat)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.Moon.Transitions.*;
import com.memecounter.*;
import flash.net.*;
public class Defeat extends Screen implements IScreen {
public function Defeat(){
super();
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
private function allLoaded():void{
ButtonManager.getInstance().loadButtons(this);
Achievements.checkPlayTime();
SoundManager.getInstance().playMusic(Ressources.MENU_MUSIC, true);
Save.save();
}
public function mouseUp():void{
}
public function mouseDown():void{
}
public function btnLevelSelectionClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new Levels() as IScreen), new Transition_Fade(0.2));
}
public function init():void{
loadSWF(Ressources.DEFEAT_SWF, Ressources.DEFEAT_PATH, completeHandler);
}
public function completeHandler():void{
isLoaded = true;
allLoaded();
}
public function destroy():void{
ButtonManager.getInstance().clear();
}
public function render(delta:Number):void{
Achievements.render(delta);
}
public function btnPlayMoreGamesClick_Handler(e:Event):void{
Tracker.kvEvent(8532);
navigateToURL(new URLRequest("http://armorgames.com"), "_blank");
}
public function btnMainMenuClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new MainMenu() as IScreen), new Transition_Fade(0.2));
}
}
}//package net.louissi.SpaceAttack.screens
Section 118
//GameScreen (net.louissi.SpaceAttack.screens.GameScreen)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.SpaceAttack.puzzle.*;
import net.louissi.SpaceAttack.battlefield.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.Moon.Transitions.*;
import net.louissi.Moon.Global.*;
import com.memecounter.*;
public class GameScreen extends Screen implements IScreen {
private var levelCodes:Array;
private var AIminTime:Number;
public var levelTimer:Number;
private var AImaxTime:Number;
private var AItimer:Number;
private var AIeventId:Number;
public var killReward:Number;
private var paused:Boolean;
private var puzzle:Puzzle;
private var AIshipTimer:Number;
private var battlefield:Battlefield;
public var survival:Boolean;
private var tutorialStep:int;
public var tileReward:int;
public var currentLevel:int;
private var AIships:Array;
private var inTutorial:Boolean;
private var AIdone:Boolean;
public var AImaxShips:int;
private var fps:Stats;
private var AIeventTimer:Number;
public var tilePenalty:int;
public function GameScreen(){
levelCodes = new Array(8535, 8536, 8537, 8538, 8539, 8540, 8541, 8542, 8543, 8544, 8545, 8546, 8547, 8548, 8549, 8528);
super();
}
public function btnShip1Out_Handler(e:Event):void{
showShipInfo(0);
}
public function gainedMoney(amount:int):void{
GlobalVariables.moneyBonus;
}
public function pause():void{
if (!inTutorial){
paused = true;
content.pauseScreen.visible = true;
};
}
public function allLoaded():void{
GlobalVars.stage.focus = this;
var musicId:int = (Math.round((Math.random() * 2)) + 1);
var musicClass:Class = Ressources[(("GAME" + musicId) + "_MUSIC")];
trace(("MUSIC ID: " + musicId));
SoundManager.getInstance().playMusic(musicClass, true);
ButtonManager.getInstance().loadButtons(this);
GlobalVariables.game = this;
GlobalVariables.gameAssets = content;
initVars();
createPuzzle();
createBattleField();
GlobalVars.stage.frameRate = 200;
updateAttackType();
loadLevel(GlobalVariables.nextLevel);
}
public function destroy():void{
ButtonManager.getInstance().clear();
}
public function init():void{
loadSWF(Ressources.GAMESCREEN_SWF, Ressources.GAMESCREEN_PATH, completeHandler);
}
public function btnShip2Click_Handler(e:Event):void{
askShip(2);
}
public function btnShip4Out_Handler(e:Event):void{
showShipInfo(0);
}
public function mouseUp():void{
}
public function keyPress(isDown:Boolean, keyCode:int):void{
trace(keyCode);
if (inTutorial){
if (tutorialStep < 7){
return;
};
};
if (isDown){
if (keyCode == 90){
trace("attack buildings!");
GlobalVariables.target = "buildings";
updateAttackType();
} else {
if (keyCode == 88){
trace("attack ships!");
GlobalVariables.target = "ships";
updateAttackType();
tutorialNext(4);
} else {
if (keyCode == 80){
pause();
};
};
};
};
}
public function showShipInfo(id:int):void{
var cost:String;
var shipName:String;
var desc:String;
var xmlData:XML;
if (id == 0){
content.desc.nameTXT.text = "";
content.desc.costTXT.text = "";
content.desc.descTXT.text = "";
} else {
xmlData = GlobalVariables.shipsXML.ships.ship[(id - 1)];
cost = (String(xmlData.@cost) + "$");
desc = String(xmlData.@desc);
shipName = String(xmlData.@name);
content.desc.nameTXT.text = shipName;
content.desc.costTXT.text = cost;
content.desc.descTXT.text = desc;
};
}
public function btnRestartClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new GameScreen() as IScreen), new Transition_Fade(0.2));
}
public function btnShip7Click_Handler(e:Event):void{
askShip(7);
}
public function btnSkipClick_Handler(e:Event):void{
tutorialNext(5);
}
public function btnShip7Out_Handler(e:Event):void{
showShipInfo(0);
}
public function loadLevel(id:int):void{
var xmlData:XML = GlobalVariables.levelsXML.levels.level[(id - 1)];
levelTimer = (Number(xmlData.@time) * 1000);
GlobalVariables.cash = int(xmlData.@startingMoney);
tileReward = int(xmlData.@tileReward);
tilePenalty = int(xmlData.@tilePenalty);
killReward = int(xmlData.@killReward);
battlefield.loadLevel(id);
puzzle.loadLevel(id);
updateMoney();
currentLevel = id;
AInextEvent();
}
public function AInextEvent():void{
var xmlData:XML = GlobalVariables.levelsXML.levels.level[(currentLevel - 1)];
var event:XML = xmlData.event[AIeventId];
if (event != null){
AItimer = Number(event.@duration);
AImaxTime = Number(event.@maxTime);
AIminTime = Number(event.@minTime);
AIships = String(event.@ships).split(",");
AImaxShips = int(event.@maxShips);
AIshipTimer = 0;
AIeventId++;
} else {
trace("AI done");
AIdone = true;
};
}
public function defeat():void{
if (survival){
GlobalVariables.timeBonus = Math.round((levelTimer / 1000));
ScreenManager.getInstance().loadScreen((new SurvivalEnd() as IScreen), new Transition_Fade(0.2));
} else {
ScreenManager.getInstance().loadScreen((new Defeat() as IScreen), new Transition_Fade(0.2));
};
}
public function btnNextClick_Handler(e:Event):void{
tutorialNext(1);
}
public function btnResumeClick_Handler(e:Event):void{
paused = false;
content.pauseScreen.visible = false;
}
public function updateAttackType():void{
if (GlobalVariables.target == "buildings"){
content.attackType.gotoAndStop(1);
} else {
if (GlobalVariables.target == "ships"){
content.attackType.gotoAndStop(2);
};
};
}
public function askShip(id:int):void{
var cost:Number;
var xmlData:XML;
if (battlefield.greenBases > 0){
xmlData = GlobalVariables.shipsXML.ships.ship[(id - 1)];
cost = Number(xmlData.@cost);
if (GlobalVariables.cash >= cost){
battlefield.createShip(id, "G");
GlobalVariables.cash = (GlobalVariables.cash - cost);
Save.spentMoney(cost);
updateMoney();
tutorialNext(2);
};
};
}
public function btnShip4Click_Handler(e:Event):void{
askShip(4);
}
public function btnShip2Over_Handler(e:Event):void{
showShipInfo(2);
}
public function btnShip4Over_Handler(e:Event):void{
showShipInfo(4);
}
public function initVars():void{
paused = false;
content.pauseScreen.visible = false;
content.quitScreen.visible = false;
GlobalVariables.cash = 0;
GlobalVariables.moneyBonus = 0;
currentLevel = 0;
updateMoney();
AIeventId = 0;
AIeventTimer = 0;
AImaxTime = 0;
AIminTime = 0;
AIships = new Array();
AItimer = 0;
AIshipTimer = 0;
AIdone = false;
tilePenalty = 0;
tileReward = 0;
killReward = 0;
inTutorial = false;
tutorialStep = 1;
survival = false;
Tracker.kvEvent(levelCodes[(GlobalVariables.nextLevel - 1)]);
if (GlobalVariables.nextLevel == 16){
survival = true;
content.tutorial.gotoAndStop(1);
content.tutorial.visible = false;
} else {
if (GlobalVariables.nextLevel == 1){
inTutorial = true;
content.tutorial.gotoAndStop(1);
content.tutorial.visible = true;
paused = true;
} else {
content.tutorial.gotoAndStop(1);
content.tutorial.visible = false;
};
};
if (GlobalVariables.nextLevel < 11){
content.tier3.visible = false;
};
if (GlobalVariables.nextLevel < 6){
content.tier2.visible = false;
};
}
public function btnShip6Over_Handler(e:Event):void{
showShipInfo(6);
}
public function btnShip2Out_Handler(e:Event):void{
showShipInfo(0);
}
public function createPuzzle():void{
puzzle = new Puzzle();
content.caca.addChild(puzzle);
}
public function btnShip8Over_Handler(e:Event):void{
showShipInfo(8);
}
public function btnQuitClick_Handler(e:Event):void{
paused = true;
content.quitScreen.visible = true;
}
public function tutorialNext(id:int):void{
if (id == 1){
if (((((((!((tutorialStep == 3))) && (!((tutorialStep == 6))))) && (!((tutorialStep == 7))))) && ((tutorialStep < 8)))){
tutorialStep++;
content.tutorial.gotoAndStop(tutorialStep);
} else {
if (tutorialStep == 8){
tutorialStep = 9;
content.tutorial.visible = false;
paused = false;
inTutorial = false;
};
};
switch (tutorialStep){
case 2:
case 4:
case 5:
case 8:
paused = true;
break;
default:
paused = false;
break;
};
};
if (id == 2){
if (tutorialStep == 3){
paused = true;
tutorialStep++;
content.tutorial.gotoAndStop(tutorialStep);
};
};
if (id == 3){
if (tutorialStep == 6){
paused = false;
tutorialStep++;
content.tutorial.gotoAndStop(tutorialStep);
};
};
if (id == 4){
if (tutorialStep == 7){
paused = true;
tutorialStep++;
content.tutorial.gotoAndStop(tutorialStep);
};
};
if (id == 5){
paused = false;
inTutorial = false;
content.tutorial.visible = false;
};
}
public function btnShip9Click_Handler(e:Event):void{
askShip(9);
}
public function updateMoney():void{
content.cash.text = GlobalVariables.cash;
}
public function btnShip1Click_Handler(e:Event):void{
askShip(1);
}
public function AIcreateShip():void{
var randId:int = Math.round((Math.random() * (AIships.length - 1)));
var shipId:int = AIships[randId];
if (!survival){
if ((((battlefield.redShips < AImaxShips)) && ((battlefield.redBases > 0)))){
battlefield.createShip(shipId, "R");
};
} else {
if ((((battlefield.redShips < AImaxShips)) && (survival))){
battlefield.createShip(shipId, "R");
};
};
}
public function btnShip5Out_Handler(e:Event):void{
showShipInfo(0);
}
public function createBattleField():void{
battlefield = new Battlefield();
content.caca.addChild(battlefield);
}
public function btnShip6Click_Handler(e:Event):void{
askShip(6);
}
public function btnPauseClick_Handler(e:Event):void{
pause();
}
public function render(delta:Number):void{
if (paused){
return;
};
if (puzzle){
puzzle.render(delta);
};
if (battlefield){
battlefield.render(delta);
};
updateTimer(delta);
AItimer = (AItimer - delta);
if ((((AItimer <= 0)) && (!(AIdone)))){
AInextEvent();
};
AIshipTimer = (AIshipTimer - delta);
if (AIshipTimer <= 0){
AIshipTimer = ((Math.random() * (AImaxTime - AIminTime)) + AIminTime);
AIcreateShip();
};
if ((((((battlefield.redBases == 0)) && ((battlefield.redShips == 0)))) && ((battlefield.redTurrets == 0)))){
if (!survival){
win();
};
};
if ((((((battlefield.greenBases == 0)) && ((battlefield.greenShips == 0)))) && ((battlefield.greenTurrets == 0)))){
defeat();
};
Save.playTime = (Save.playTime + delta);
Achievements.render(delta);
}
public function btnShip8Out_Handler(e:Event):void{
showShipInfo(0);
}
public function chrono(tmp:Number):String{
var minutes:Number;
var secondes:Number;
var minutesTXT:String;
var secondesTXT:String;
minutes = Math.floor(((tmp / 1000) / 60));
secondes = Math.floor(((tmp / 1000) % 60));
if (minutes < 10){
minutesTXT = ("0" + minutes);
} else {
minutesTXT = String(minutes);
};
if (secondes < 10){
secondesTXT = ("0" + secondes);
} else {
secondesTXT = String(secondes);
};
return (((minutesTXT + ":") + secondesTXT));
}
public function btnQuitYesClick_Handler(e:Event):void{
paused = false;
ScreenManager.getInstance().loadScreen((new MainMenu() as IScreen), new Transition_Fade(0.2));
}
public function btnShip3Click_Handler(e:Event):void{
askShip(3);
}
public function btnShip3Out_Handler(e:Event):void{
showShipInfo(0);
}
public function buildingDestroyed():void{
levelTimer = (levelTimer + 10000);
content.timeLeft.timeLeftTXT.text = chrono(levelTimer);
}
public function completeHandler():void{
isLoaded = true;
allLoaded();
}
public function btnShip8Click_Handler(e:Event):void{
askShip(8);
}
public function btnShip1Over_Handler(e:Event):void{
showShipInfo(1);
}
public function btnShip3Over_Handler(e:Event):void{
showShipInfo(3);
}
public function btnShip6Out_Handler(e:Event):void{
showShipInfo(0);
}
public function btnShip5Over_Handler(e:Event):void{
showShipInfo(5);
}
public function btnShip7Over_Handler(e:Event):void{
showShipInfo(7);
}
public function btnShip9Over_Handler(e:Event):void{
showShipInfo(9);
}
public function win():void{
GlobalVariables.timeBonus = Math.round((levelTimer / 1000));
ScreenManager.getInstance().loadScreen((new Victory() as IScreen), new Transition_Fade(0.2));
}
public function mouseDown():void{
}
public function btnShip9Out_Handler(e:Event):void{
showShipInfo(0);
}
public function updateTimer(delta:Number):void{
if (!survival){
levelTimer = (levelTimer - (delta * 1000));
} else {
levelTimer = (levelTimer + (delta * 1000));
};
content.timeLeft.timeLeftTXT.text = chrono(levelTimer);
if ((((levelTimer <= 0)) && (!(survival)))){
defeat();
};
}
public function btnShip5Click_Handler(e:Event):void{
askShip(5);
}
public function btnQuitNoClick_Handler(e:Event):void{
paused = false;
content.quitScreen.visible = false;
}
}
}//package net.louissi.SpaceAttack.screens
Section 119
//Levels (net.louissi.SpaceAttack.screens.Levels)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.SpaceAttack.overlays.*;
import net.louissi.Moon.Transitions.*;
public class Levels extends Screen implements IScreen {
private var agi:AGIcontainer;
private var totalScore:int;
public function Levels(){
super();
}
public function allLoaded():void{
agi = new AGIcontainer();
addChild(agi);
ButtonManager.getInstance().loadButtons(this);
initLevelButtons();
updateLevelsButtons();
}
public function updateLevelsButtons():void{
var i:int;
i = 1;
while (i <= 15) {
if (i <= (Save.progress + 1)){
content[("btn" + i)].lock.visible = false;
} else {
content[("btn" + i)].lock.visible = true;
};
i++;
};
totalScore = 0;
i = 1;
while (i <= 15) {
totalScore = (totalScore + Save[("score" + i)]);
i++;
};
content.totalScoreTXT.text = totalScore;
}
public function initLevelButtons():void{
var i:int;
content.levelInfo.visible = false;
i = 1;
while (i <= 15) {
content[("btn" + i)].id = i;
content[("btn" + i)].lock.mouseEnabled = false;
content[("btn" + i)].addEventListener(MouseEvent.CLICK, levelClick);
content[("btn" + i)].addEventListener(MouseEvent.MOUSE_OUT, hideLevelInfo);
content[("btn" + i)].addEventListener(MouseEvent.MOUSE_OVER, showLevelInfo);
i++;
};
content.confirm.visible = false;
}
public function init():void{
loadSWF(Ressources.LEVELS_SWF, Ressources.LEVELS_PATH, completeHandler);
}
public function completeHandler():void{
isLoaded = true;
allLoaded();
}
private function showLevelInfo(e:MouseEvent):void{
var id:int = e.currentTarget.id;
var xmlData:XML = GlobalVariables.levelsXML.levels.level[(id - 1)];
var levelName:String = String(xmlData.@name);
content.levelInfo.visible = true;
content.levelInfo.nameTXT.text = levelName;
content.levelInfo.scoreTXT.text = Save[("score" + id)];
}
public function btnScoresClick_Handler(e:Event):void{
agi.showHighScores();
}
public function btnSurvivalClick_Handler(e:Event):void{
GlobalVariables.nextLevel = 16;
ScreenManager.getInstance().loadScreen((new GameScreen() as IScreen), new Transition_Fade(0.2));
}
public function btnEraseYesClick_Handler(e:Event):void{
content.confirm.visible = false;
trace("clearing save game");
Save.clear();
Save.save();
updateLevelsButtons();
}
public function btnMainMenuClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new MainMenu() as IScreen), new Transition_Fade(0.2));
}
public function mouseUp():void{
}
private function levelClick(e:MouseEvent):void{
var id:int = e.currentTarget.id;
trace(("try level " + e.currentTarget.id));
if (id <= (Save.progress + 1)){
trace(("play level " + id));
GlobalVariables.nextLevel = id;
ScreenManager.getInstance().loadScreen((new GameScreen() as IScreen), new Transition_Fade(0.2));
};
}
public function btnEraseNoClick_Handler(e:Event):void{
content.confirm.visible = false;
}
public function btnEraseClick_Handler(e:Event):void{
content.confirm.visible = true;
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
public function mouseDown():void{
}
private function hideLevelInfo(e:MouseEvent):void{
e.currentTarget.gotoAndStop("out");
content.levelInfo.visible = false;
}
public function render(delta:Number):void{
Achievements.render(delta);
}
public function destroy():void{
ButtonManager.getInstance().clear();
}
}
}//package net.louissi.SpaceAttack.screens
Section 120
//MainMenu (net.louissi.SpaceAttack.screens.MainMenu)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.SpaceAttack.overlays.*;
import net.louissi.Moon.Transitions.*;
import com.memecounter.*;
import flash.net.*;
public class MainMenu extends Screen implements IScreen {
private var agi:AGIcontainer;
public function MainMenu(){
super();
}
public function mouseUp():void{
}
public function destroy():void{
ButtonManager.getInstance().clear();
agi.destroy();
}
public function btnTwitterClick_Handler(e:Event):void{
navigateToURL(new URLRequest("http://twitter.com/ArmorGames"), "_blank");
}
private function shipsXML_loaded(xmlData:XML):void{
GlobalVariables.shipsXML = xmlData;
RessourceManager.getInstance().loadXML(Ressources.LEVELSDATA_XML, Ressources.LEVELSDATA_PATH, levelsXML_loaded);
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
public function btnLouissiClick_Handler(e:Event):void{
Tracker.kvEvent(8534);
navigateToURL(new URLRequest("http://armorgames.com/user/Louissi"), "_blank");
}
public function btnStartClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new Levels() as IScreen), new Transition_Fade(0.2));
}
public function mouseDown():void{
}
public function init():void{
SoundManager.getInstance().playMusic(Ressources.MENU_MUSIC, true);
loadSWF(Ressources.MAINMENU_SWF, Ressources.MAINMENU_PATH, completeHandler);
}
public function completeHandler():void{
isLoaded = true;
ButtonManager.getInstance().loadButtons(this);
agi = new AGIcontainer();
addChild(agi);
RessourceManager.getInstance().loadXML(Ressources.SHIPSDATA_XML, Ressources.SHIPSDATA_PATH, shipsXML_loaded);
}
public function btnHighScoresClick_Handler(e:Event):void{
agi.showHighScores();
}
public function btnArmorGamesClick_Handler(e:Event):void{
Tracker.kvEvent(8532);
navigateToURL(new URLRequest("http://armorgames.com"), "_blank");
}
public function render(delta:Number):void{
Achievements.render(delta);
}
public function btnAchievementsClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new AchievementsScreen() as IScreen), new Transition_Fade(0.2));
}
private function levelsXML_loaded(xmlData:XML):void{
GlobalVariables.levelsXML = xmlData;
}
public function btnPlayMoreGamesClick_Handler(e:Event):void{
Tracker.kvEvent(8532);
navigateToURL(new URLRequest("http://armorgames.com"), "_blank");
}
}
}//package net.louissi.SpaceAttack.screens
Section 121
//Preloader (net.louissi.SpaceAttack.screens.Preloader)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.Moon.Transitions.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Global.*;
import com.memecounter.*;
import flash.net.*;
public class Preloader extends Screen implements IScreen {
public static var PRELOADER_SWF:Class = Preloader_PRELOADER_SWF;
public static var PRELOADER_PATH:String = "assets/swf/screens/preloader.swf";
public function Preloader(){
super();
}
public function btnPlayClick_Handler(event:Event):void{
ScreenManager.getInstance().loadScreen((new GlobalVars.nextScreen() as IScreen), new Transition_Fade(0.2));
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
public function mouseUp():void{
}
private function track():void{
var domains:Array = new Array("http://games.armorgames.com", "games.armorgames.com", "cache.armorgames.com", "http://cache.armorgames.com");
var sender:LocalConnection = new LocalConnection();
if (domains.indexOf(sender.domain) == -1){
Tracker.init(810, GlobalVars.stage);
};
}
public function btnLouissiClick_Handler(e:Event):void{
Tracker.kvEvent(8534);
navigateToURL(new URLRequest("http://armorgames.com/user/Louissi"), "_blank");
}
public function mouseDown():void{
}
public function init():void{
loadSWF(PRELOADER_SWF, PRELOADER_PATH, completeHandler);
}
public function completeHandler():void{
isLoaded = true;
content.btnPlay.visible = false;
ButtonManager.getInstance().loadButtons(this);
track();
}
public function btnArmorGamesClick_Handler(e:Event):void{
Tracker.kvEvent(8532);
navigateToURL(new URLRequest("http://armorgames.com"), "_blank");
}
public function render(delta:Number):void{
content.loading.bar.scaleX = (stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal);
if ((((stage.loaderInfo.bytesLoaded == stage.loaderInfo.bytesTotal)) && (GlobalVars.nextScreen))){
ScreenManager.getInstance().waitTrans = true;
content.btnPlay.visible = true;
content.loading.visible = false;
};
}
public function destroy():void{
ButtonManager.getInstance().clear();
}
}
}//package net.louissi.SpaceAttack.screens
Section 122
//Preloader_PRELOADER_SWF (net.louissi.SpaceAttack.screens.Preloader_PRELOADER_SWF)
package net.louissi.SpaceAttack.screens {
import mx.core.*;
import flash.utils.*;
public class Preloader_PRELOADER_SWF extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function Preloader_PRELOADER_SWF(){
dataClass = Preloader_PRELOADER_SWF_dataClass;
super();
initialWidth = (14400 / 20);
initialHeight = (11000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package net.louissi.SpaceAttack.screens
Section 123
//Preloader_PRELOADER_SWF_dataClass (net.louissi.SpaceAttack.screens.Preloader_PRELOADER_SWF_dataClass)
package net.louissi.SpaceAttack.screens {
import mx.core.*;
public class Preloader_PRELOADER_SWF_dataClass extends ByteArrayAsset {
}
}//package net.louissi.SpaceAttack.screens
Section 124
//Sponsor (net.louissi.SpaceAttack.screens.Sponsor)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.Moon.Transitions.*;
import com.memecounter.*;
import flash.net.*;
public class Sponsor extends Screen implements IScreen {
public function Sponsor(){
super();
}
public function animDone():void{
ScreenManager.getInstance().loadScreen((new Author() as IScreen), new Transition_Fade(0.2));
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
public function btnLinkClick_Handler(e:Event):void{
Tracker.kvEvent(8531);
navigateToURL(new URLRequest("http://armorgames.com"), "_blank");
}
public function mouseDown():void{
}
public function mouseUp():void{
}
public function init():void{
loadSWF(Ressources.SPONSOR_SWF, Ressources.SPONSOR_PATH, completeHandler);
}
public function completeHandler():void{
isLoaded = true;
ButtonManager.getInstance().loadButtons(this);
Save.init();
Achievements.init();
}
public function destroy():void{
ButtonManager.getInstance().clear();
}
public function render(delta:Number):void{
if (content.done){
content.done = false;
animDone();
};
}
}
}//package net.louissi.SpaceAttack.screens
Section 125
//SurvivalEnd (net.louissi.SpaceAttack.screens.SurvivalEnd)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.SpaceAttack.overlays.*;
import net.louissi.Moon.Transitions.*;
import com.memecounter.*;
import flash.net.*;
public class SurvivalEnd extends Screen implements IScreen {
private var agi:AGIcontainer;
public function SurvivalEnd(){
super();
}
public function mouseUp():void{
}
public function chrono(tmp:Number):String{
var heures:Number;
var jours:Number;
var minutes:Number;
var secondes:Number;
var heuresTXT:String;
var minutesTXT:String;
var secondesTXT:String;
jours = Math.floor((((tmp / 60) / 60) / 24));
heures = Math.floor(((tmp / 60) / 60));
minutes = Math.floor((tmp / 60));
secondes = Math.floor((tmp % 60));
if (heures < 10){
heuresTXT = ("0" + heures);
} else {
heuresTXT = String(heures);
};
if (minutes < 10){
minutesTXT = ("0" + minutes);
} else {
minutesTXT = String(minutes);
};
if (secondes < 10){
secondesTXT = ("0" + secondes);
} else {
secondesTXT = String(secondes);
};
return (((((heuresTXT + ":") + minutesTXT) + ":") + secondesTXT));
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
public function allLoaded():void{
agi = new AGIcontainer();
addChild(agi);
ButtonManager.getInstance().loadButtons(this);
Save.save();
SoundManager.getInstance().playMusic(Ressources.MENU_MUSIC, true);
Achievements.checkPlayTime();
content.timeTXT.text = chrono(GlobalVariables.timeBonus);
}
public function mouseDown():void{
}
public function btnLevelSelectionClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new Levels() as IScreen), new Transition_Fade(0.2));
}
public function init():void{
loadSWF(Ressources.SURVIVALEND_SWF, Ressources.SURVIVALEND_PATH, completeHandler);
}
public function completeHandler():void{
isLoaded = true;
allLoaded();
}
public function btnSubmitScoreClick_Handler(e:Event):void{
var xmlData:XML = GlobalVariables.levelsXML.levels.level[(GlobalVariables.nextLevel - 1)];
var levelBonus:int = int(xmlData.@bonus);
var totalScore:int = GlobalVariables.timeBonus;
agi.submitScore(totalScore);
}
public function destroy():void{
ButtonManager.getInstance().clear();
}
public function render(delta:Number):void{
Achievements.render(delta);
if (agi.done){
ScreenManager.getInstance().loadScreen((new Levels() as IScreen), new Transition_Fade(0.2));
};
}
public function btnPlayMoreGamesClick_Handler(e:Event):void{
Tracker.kvEvent(8532);
navigateToURL(new URLRequest("http://armorgames.com"), "_blank");
}
public function btnMainMenuClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new MainMenu() as IScreen), new Transition_Fade(0.2));
}
}
}//package net.louissi.SpaceAttack.screens
Section 126
//Victory (net.louissi.SpaceAttack.screens.Victory)
package net.louissi.SpaceAttack.screens {
import flash.events.*;
import net.louissi.Moon.Managers.*;
import net.louissi.Moon.Screens.*;
import net.louissi.Moon.Interfaces.*;
import net.louissi.SpaceAttack.global.*;
import net.louissi.SpaceAttack.overlays.*;
import net.louissi.Moon.Transitions.*;
import com.memecounter.*;
import flash.net.*;
public class Victory extends Screen implements IScreen {
private var agi:AGIcontainer;
public function Victory(){
super();
}
public function mouseUp():void{
}
public function keyPress(isDown:Boolean, keyCode:int):void{
}
private function allLoaded():void{
ButtonManager.getInstance().loadButtons(this);
}
public function mouseDown():void{
}
public function btnLevelSelectionClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new Levels() as IScreen), new Transition_Fade(0.2));
}
public function init():void{
loadSWF(Ressources.VICTORY_SWF, Ressources.VICTORY_PATH, completeHandler);
}
public function completeHandler():void{
agi = new AGIcontainer();
addChild(agi);
isLoaded = true;
allLoaded();
showScore();
if (GlobalVariables.nextLevel > Save.progress){
Save.progress++;
};
Save.save();
SoundManager.getInstance().playMusic(Ressources.MENU_MUSIC, true);
Achievements.checkFinished();
Achievements.checkPlayTime();
}
private function showScore():void{
content.moneyTXT.text = GlobalVariables.moneyBonus;
content.timeTXT.text = ((GlobalVariables.timeBonus + " x 500 = ") + (GlobalVariables.timeBonus * 500));
var xmlData:XML = GlobalVariables.levelsXML.levels.level[(GlobalVariables.nextLevel - 1)];
var levelBonus:int = int(xmlData.@bonus);
content.victoryTXT.text = levelBonus;
var totalScore:int = Number(((GlobalVariables.moneyBonus + (GlobalVariables.timeBonus * 500)) + levelBonus));
content.totalTXT.text = totalScore;
if (totalScore > Save[("score" + GlobalVariables.nextLevel)]){
Save[("score" + GlobalVariables.nextLevel)] = totalScore;
};
content.btnSubmitScore.visible = false;
}
public function destroy():void{
ButtonManager.getInstance().clear();
}
public function btnSubmitScoreClick_Handler(e:Event):void{
var xmlData:XML = GlobalVariables.levelsXML.levels.level[(GlobalVariables.nextLevel - 1)];
var levelBonus:int = int(xmlData.@bonus);
var totalScore:int = Number(((GlobalVariables.moneyBonus + (GlobalVariables.timeBonus * 500)) + levelBonus));
}
public function render(delta:Number):void{
Achievements.render(delta);
if (agi.done){
ScreenManager.getInstance().loadScreen((new Levels() as IScreen), new Transition_Fade(0.2));
};
}
public function btnPlayMoreGamesClick_Handler(e:Event):void{
Tracker.kvEvent(8532);
navigateToURL(new URLRequest("http://armorgames.com"), "_blank");
}
public function btnMainMenuClick_Handler(e:Event):void{
ScreenManager.getInstance().loadScreen((new MainMenu() as IScreen), new Transition_Fade(0.2));
}
}
}//package net.louissi.SpaceAttack.screens
Section 127
//EngineStart (net.louissi.SpaceAttack.EngineStart)
package net.louissi.SpaceAttack {
import net.louissi.Moon.Engines.*;
import net.louissi.SpaceAttack.screens.*;
public class EngineStart extends Engine {
private const IS_LOADING_EMBEDDED:Boolean = true;
private const STAGE_WIDTH:int = 720;
private const STAGE_HEIGHT:int = 570;
private const FPS:int = 45;
private const MOCHIBOT:String = "";
private const ALLOWED_DOMAINS:Array;
private const MAIN_CLASS:String = "SpaceAttack";
public function EngineStart(){
ALLOWED_DOMAINS = [];
trace("start engine");
super(MAIN_CLASS, Preloader, STAGE_WIDTH, STAGE_HEIGHT, IS_LOADING_EMBEDDED, ALLOWED_DOMAINS, MOCHIBOT);
stop();
}
}
}//package net.louissi.SpaceAttack
Section 128
//SpaceAttack (SpaceAttack)
package {
import flash.display.*;
import net.louissi.Moon.Managers.*;
import net.louissi.SpaceAttack.screens.*;
import net.louissi.Moon.Global.*;
public class SpaceAttack extends Sprite {
public function SpaceAttack(){
super();
GlobalVars.nextScreen = Sponsor;
ScreenManager.getInstance().waitTrans = false;
}
}
}//package