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

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

Space Attack - a mix of a strategy game and a puzzle game.swf

This is the info page for
Flash #90209

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


ActionScript [AS3]
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

Library Items

Symbol 1 BinaryData {net.louissi.SpaceAttack.screens.Preloader_PRELOADER_SWF_dataClass} [net.louissi.SpaceAttack.screens.Preloader_PRELOADER_SWF_dataClass]
Symbol 2 MovieClip {net.louissi.SpaceAttack.screens.Preloader_PRELOADER_SWF}
Symbol 3 MovieClip {net.louissi.SpaceAttack.global.Ressources_DEFEAT_SWF} [net.louissi.SpaceAttack.global.Ressources_GAMESCREEN_SWF]
Symbol 4 Sound {net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELNORMAL_MUSIC} [net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELNORMAL_MUSIC]
Symbol 5 Sound {net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELHIT_MUSIC} [net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELHIT_MUSIC]
Symbol 6 Sound {net.louissi.SpaceAttack.global.Ressources_MENU_MUSIC} [net.louissi.SpaceAttack.global.Ressources_MENU_MUSIC]
Symbol 7 Sound {net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELBIG_MUSIC} [net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELBIG_MUSIC]
Symbol 8 Sound {net.louissi.SpaceAttack.global.Ressources_SOUND_BASE_MUSIC} [net.louissi.SpaceAttack.global.Ressources_SOUND_BASE_MUSIC]
Symbol 9 Sound {net.louissi.SpaceAttack.global.Ressources_SOUND_SHIPDESTROYED_MUSIC} [net.louissi.SpaceAttack.global.Ressources_SOUND_SHIPDESTROYED_MUSIC]
Symbol 10 Sound {net.louissi.SpaceAttack.global.Ressources_GAME1_MUSIC} [net.louissi.SpaceAttack.global.Ressources_GAME1_MUSIC]
Symbol 11 Sound {net.louissi.SpaceAttack.global.Ressources_GAME2_MUSIC} [net.louissi.SpaceAttack.global.Ressources_GAME2_MUSIC]
Symbol 12 Sound {net.louissi.SpaceAttack.global.Ressources_GAME3_MUSIC} [net.louissi.SpaceAttack.global.Ressources_GAME3_MUSIC]
Symbol 13 BinaryData {net.louissi.SpaceAttack.global.Ressources_AUTHOR_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_AUTHOR_SWF_dataClass]
Symbol 14 BinaryData {net.louissi.SpaceAttack.global.Ressources_GAMESCREEN_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_GAMESCREEN_SWF_dataClass]
Symbol 15 BinaryData {net.louissi.SpaceAttack.global.Ressources_OVERLAYS_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_OVERLAYS_SWF_dataClass]
Symbol 16 BinaryData {net.louissi.SpaceAttack.global.Ressources_SPONSOR_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_SPONSOR_SWF_dataClass]
Symbol 17 BinaryData {net.louissi.SpaceAttack.global.Ressources_SURVIVALEND_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_SURVIVALEND_SWF_dataClass]
Symbol 18 BinaryData {net.louissi.SpaceAttack.global.Ressources_LEVELS_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_LEVELS_SWF_dataClass]
Symbol 19 BinaryData {net.louissi.SpaceAttack.global.Ressources_ACHIEVEMENTS_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_ACHIEVEMENTS_SWF_dataClass]
Symbol 20 BinaryData {net.louissi.SpaceAttack.global.Ressources_VICTORY_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_VICTORY_SWF_dataClass]
Symbol 21 BinaryData {net.louissi.SpaceAttack.global.Ressources_MAINMENU_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_MAINMENU_SWF_dataClass]
Symbol 22 BinaryData {net.louissi.SpaceAttack.global.Ressources_DEFEAT_SWF_dataClass} [net.louissi.SpaceAttack.global.Ressources_DEFEAT_SWF_dataClass]
Symbol 23 GraphicUsed by:24
Symbol 24 MovieClip {net.louissi.SpaceAttack.overlays.AGIcontainer_ICON} [icon]Uses:23

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1457 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 1 as "net.louissi.SpaceAttack.screens.Preloader_PRELOADER_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 3 as "net.louissi.SpaceAttack.global.Ressources_GAMESCREEN_SWF"
ExportAssets (56)Timeline Frame 2Symbol 4 as "net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELNORMAL_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 5 as "net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELHIT_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 6 as "net.louissi.SpaceAttack.global.Ressources_MENU_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 7 as "net.louissi.SpaceAttack.global.Ressources_SOUND_JEWELBIG_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 8 as "net.louissi.SpaceAttack.global.Ressources_SOUND_BASE_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 9 as "net.louissi.SpaceAttack.global.Ressources_SOUND_SHIPDESTROYED_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 10 as "net.louissi.SpaceAttack.global.Ressources_GAME1_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 11 as "net.louissi.SpaceAttack.global.Ressources_GAME2_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 12 as "net.louissi.SpaceAttack.global.Ressources_GAME3_MUSIC"
ExportAssets (56)Timeline Frame 2Symbol 13 as "net.louissi.SpaceAttack.global.Ressources_AUTHOR_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 14 as "net.louissi.SpaceAttack.global.Ressources_GAMESCREEN_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 15 as "net.louissi.SpaceAttack.global.Ressources_OVERLAYS_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 16 as "net.louissi.SpaceAttack.global.Ressources_SPONSOR_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 17 as "net.louissi.SpaceAttack.global.Ressources_SURVIVALEND_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 18 as "net.louissi.SpaceAttack.global.Ressources_LEVELS_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 19 as "net.louissi.SpaceAttack.global.Ressources_ACHIEVEMENTS_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 20 as "net.louissi.SpaceAttack.global.Ressources_VICTORY_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 21 as "net.louissi.SpaceAttack.global.Ressources_MAINMENU_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 22 as "net.louissi.SpaceAttack.global.Ressources_DEFEAT_SWF_dataClass"
ExportAssets (56)Timeline Frame 2Symbol 24 as "icon"
EnableDebugger2 (64)Timeline Frame 131 bytes "u.$1$Wm$Ts4ePdK5AGSpSRK86244z0."
DebugMX1 (63)Timeline Frame 1
SerialNumber (41)Timeline Frame 1

Labels

"net_louissi_SpaceAttack_EngineStart"Frame 1
"SpaceAttack"Frame 2




http://swfchan.com/19/90209/info.shtml
Created: 28/3 -2019 13:50:48 Last modified: 28/3 -2019 13:50:48 Server time: 13/05 -2024 00:41:50