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

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

vantage.swf

This is the info page for
Flash #41841

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


Text
percentage loaded:

<p align="right"><font face="Futura Std Book" size="16" color="#000000" letterSpacing="0.000000" kerning="1">65%</font></p>

loading

<p align="left"></p>

enter

<p align="left"><font face="Century Gothic" size="13" color="#000000" letterSpacing="0.000000" kerning="0">Please enter your name:</font></p>

<p align="right"><font face="Century Gothic" size="22" color="#ffffff" letterSpacing="0.000000" kerning="1">Default Button</font></p>

<p align="left"><font face="Century Gothic" size="22" color="#ffffff" letterSpacing="0.000000" kerning="1">DefaultButton</font></p>

<p align="left"><font face="Century Gothic" size="16" color="#666666" letterSpacing="0.000000" kerning="1">Century Gothic</font></p>

<p align="left"><font face="Century Gothic" size="16" color="#666666" letterSpacing="0.000000" kerning="1"><b>Century Gothic Bold</b></font></p>

1  Rotate the playing field with your mouse.
2  Recreate the image in the upper right corner.
3  Only upright versions of the image count. Upside-down images don't count.
4  Produce as many images as you can before time runs out!

Name

score

20

show daily

show weekly highscores

show weekly highscores

show weekly highscores

show monthly

show all time highscores

show all time highscores

<p align="left"></p>

retry

<p align="left"></p>

<p align="left"><font face="Century Gothic" size="16" color="#ffffff" letterSpacing="0.000000" kerning="0"><b>Congratulations!</b></font></p>

<p align="left"><font face="Century Gothic" size="13" color="#ffffff" letterSpacing="0.000000" kerning="0">You have ...</font></p>

close

close

alltime highscores

<p align="center"></p>

weekly highscores

all time highscores

,  2008
visit us at bobblebrook.com

,  2008
visit us at bobblebrook.com

place your mouse cursor here!

rotate the playing field and produce a clear image

score

score

img

timer

timer

great!

your score: 20009008

your score: 20009008

game over

coign of vantage

Written and designed by
Philipp Seifried and Markus Mundjar
Many thanks to Armin Prucha-Stocker for
additional icon design (you're awesome!)
Music based on Johann Sebastian Bach's
Goldberg Variations, Variatio 1
we sincerely hope he's not rolling over in his grave

, 2008

credits

highscores

<p align="right"><font face="Century Gothic" size="16" color="#000000" letterSpacing="0.000000" kerning="0"><b>It looks like this site is not authorized <sbr />to host this game!</b></font></p><p align="right"></p><p align="right"><font face="Century Gothic" size="13" color="#000000" letterSpacing="0.000000" kerning="0">To play &quot;coign of vantage&quot;, please visit</font></p><p align="right"><font face="Century Gothic" size="13" color="#ffffff" letterSpacing="0.000000" kerning="0"><a href="http://www.bobblebrook.com/games/coign_of_vantage" target = "_top"><b>www.bobblebrook.com/games/vantage</b></a><font color="#000000"><b> </b></font></font></p><p align="right"></p><p align="right"><font face="Century Gothic" size="13" color="#000000" letterSpacing="0.000000" kerning="0">If you are the owner of this site, please <sbr />contact us at <font color="#ffffff"><a href="mailto:office@bobblebrook.com" target = "_self"><b>office@bobblebrook.com</b></a><b>,</b></font> if <sbr />you&apos;d like to obtain a license for the game!</font></p>

<p align="right"><font face="Century Gothic" size="16" color="#000000" letterSpacing="0.000000" kerning="0"><b>It looks like this site is not authorized to <sbr />host this game!</b></font></p><p align="right"></p><p align="right"><font face="Century Gothic" size="13" color="#000000" letterSpacing="0.000000" kerning="0">To play &quot;coign of vantage&quot;, please visit</font></p><p align="right"><font face="Century Gothic" size="13" color="#ffffff" letterSpacing="0.000000" kerning="0"><a href="http://www.bobblebrook.com/games/coign-of-vantage" target = "_top"><b>www.bobblebrook.com/games/coign-of-vantage</b></a><font color="#000000"><b> </b></font></font></p><p align="right"></p><p align="right"><font face="Century Gothic" size="13" color="#000000" letterSpacing="0.000000" kerning="0">If you are the owner of this site, please contact us <sbr />at <font color="#ffffff"><a href="mailto:office@bobblebrook.com" target = "_self"><b>office@bobblebrook.com</b></a><b>,</b></font> if you&apos;d like to obtain <sbr />a license for the game!</font></p>

ActionScript [AS3]

Section 1
//Billboard (com.bobblebrook.lisa.l3d.Billboard) package com.bobblebrook.lisa.l3d { import com.bobblebrook.lisa.math.*; public class Billboard extends Node3D { public var flipX:Boolean;// = false public function Billboard(){ flipX = false; super(); } override public function get zSort():Boolean{ return (true); } override public function draw(_arg1:Matrix3D, _arg2:Camera3D){ var _local3:Vector3D; _local3 = _arg1.v; x = (_local3.x + (_arg2.screenWidth / 2)); y = (_local3.y + (_arg2.screenHeight / 2)); z = _local3.z; if ((((z > _arg2.nearClip)) && ((z < _arg2.farClip)))){ scaleX = (scaleY = ((getScale() * _arg2.distanceToScreen) / z)); if (flipX){ scaleX = -(scaleX); }; visible = true; } else { visible = false; }; } } }//package com.bobblebrook.lisa.l3d
Section 2
//Camera3D (com.bobblebrook.lisa.l3d.Camera3D) package com.bobblebrook.lisa.l3d { import com.bobblebrook.lisa.math.*; public class Camera3D extends Node3D { private var _nearClip:Number; public var scrH:Number; public var scrW:Number; public var distScr:Number; private var _farClip:Number; public function Camera3D(){ distScr = 200; scrW = 550; scrH = 400; _nearClip = 1; _farClip = 10000; } public function setFOV(_arg1:Number){ } public function get farClip():Number{ return (_farClip); } private function compZ(_arg1:Node3D, _arg2:Node3D){ if (_arg1.z < _arg2.z){ return (-1); }; if (_arg1.z > _arg2.z){ return (1); }; return (0); } public function projectPoint(_arg1:Vector3D){ var _local2:Number; if (_arg1.z != 0){ _local2 = (distScr / _arg1.z); } else { _local2 = 1E20; }; _arg1.x = (_arg1.x * _local2); _arg1.y = (_arg1.y * _local2); } public function setClipping(_arg1:Number, _arg2:Number){ _nearClip = _arg1; _farClip = _arg2; } public function getFOV():Number{ var _local1:Vector2D; _local1 = new Vector2D((scrW / 2), distScr); return ((_local1.angleTo(Vector2D.yAxis) * 2)); } public function get nearClip():Number{ return (_nearClip); } public function getFOVY():Number{ var _local1:Vector2D; _local1 = new Vector2D((scrH / 2), distScr); return ((_local1.angleTo(Vector2D.yAxis) * 2)); } public function get screenHeight():Number{ return (scrH); } public function setScreen(_arg1:Number, _arg2:Number){ scrW = _arg1; scrH = _arg2; } public function render(_arg1:World3D){ var _local2:Array; var _local3:Matrix3D; var _local4:Vector3D; var _local5:Vector3D; var _local6:Vector3D; var _local7:Vector3D; var _local8:Number; var _local9:int; var _local10:Node3D; var _local11:Matrix3D; _local2 = _arg1.getAllChildren(); _local3 = this.toLocal(); _local4 = new Vector3D(0, 0, 0, 0); _local5 = new Vector3D(0, 0, 0, 0); _local6 = new Vector3D(0, 0, 0, 0); _local7 = new Vector3D(0, 0, 0, 1); _local8 = 0; while (_local8 < _local2.length) { _local10 = _local2[_local8]; if ((((_local10 == this)) || ((_local10 == _arg1)))){ } else { _local11 = _local10.toGlobal().preMultiplyMatrix(_local3); _local11.storePIn(_local4); _local11.storeQIn(_local5); _local11.storeRIn(_local6); _local11.storeVIn(_local7); _local4.add(_local7); _local5.add(_local7); _local6.add(_local7); projectPoint(_local4); projectPoint(_local5); projectPoint(_local6); projectPoint(_local7); _local4.subtract(_local7); _local5.subtract(_local7); _local6.subtract(_local7); _local11.p = _local4; _local11.q = _local5; _local11.r = _local6; _local11.v = _local7; _local10.draw(_local11, this); }; _local8++; }; _local2.sort(compZ); _local9 = (_arg1.numChildren - 1); _local8 = 0; while (_local8 < _local2.length) { if (((_arg1.contains(_local2[_local8])) && (_local2[_local8].zSort))){ _arg1.swapChildren(_local2[_local8], _arg1.getChildAt(_local9)); _local9--; }; _local8++; }; } public function get screenWidth():Number{ return (scrW); } public function set distanceToScreen(_arg1:Number){ distScr = _arg1; } public function get distanceToScreen():Number{ return (distScr); } public function getLookAtYRotation(_arg1:Vector2D):Number{ var _local2:Vector3D; var _local3:Vector3D; var _local4:Vector2D; var _local5:Number; _arg1 = _arg1.copy(); _local2 = matrix.r; _local3 = matrix.v; _local4 = new Vector2D(_local2.x, _local2.z); _arg1.subtract(new Vector2D(_local3.x, _local3.z)); _local5 = _local4.angleTo(_arg1); if (!_local4.clockwise(_arg1)){ _local5 = -(_local5); }; if (!isNaN(_local5)){ return (_local5); }; return (0); } } }//package com.bobblebrook.lisa.l3d
Section 3
//Node3D (com.bobblebrook.lisa.l3d.Node3D) package com.bobblebrook.lisa.l3d { import com.bobblebrook.lisa.math.*; import flash.display.*; import com.bobblebrook.lisa.utils.*; public class Node3D extends MovieClip { protected var aChildNodes:Array; protected var localSpace:Matrix3D; protected var _scale:Number; protected var _parentNode:Node3D; public var world:World3D; public var z:Number; public function Node3D(){ localSpace = new Matrix3D(); _scale = 1; z = 0; aChildNodes = new Array(); _parentNode = undefined; } public function toGlobal():Matrix3D{ var _local1:Matrix3D; var _local2:Node3D; var _local3:Matrix3D; _local1 = localSpace.copy(); _local2 = _parentNode; while (_local2 != null) { _local3 = _local2.matrix; _local1.preMultiplyMatrix(_local3); _local2 = _local2._parentNode; }; return (_local1); } public function axisAlign(){ var _local1:Vector3D; _local1 = localSpace.v; localSpace.setToIdentity(); localSpace.v = _local1; } public function setScale(_arg1:Number){ var _local2:Vector3D; var _local3:Vector3D; var _local4:Vector3D; _local2 = localSpace.p; _local3 = localSpace.q; _local4 = localSpace.r; _local2.normalize(); _local3.normalize(); _local4.normalize(); _local2.multiply(_arg1); _local3.multiply(_arg1); _local4.multiply(_arg1); localSpace.p = _local2; localSpace.q = _local3; localSpace.r = _local4; } public function removeChildNode(_arg1:Node3D){ ArrayUtils.removeFromArray(_arg1, aChildNodes); } public function get zSort():Boolean{ return (false); } public function draw(_arg1:Matrix3D, _arg2:Camera3D){ } public function translate(_arg1:Vector3D){ _arg1 = localSpace.postMultiplyVector(_arg1); localSpace.v = localSpace.v.add(_arg1); } public function rotateZ(_arg1:Number){ var _local2:Matrix3D; _local2 = Matrix3D.zRotationMatrix(_arg1); localSpace.postMultiplyMatrix(_local2); } public function rotateY(_arg1:Number){ var _local2:Matrix3D; _local2 = Matrix3D.yRotationMatrix(_arg1); localSpace.postMultiplyMatrix(_local2); } public function rotateX(_arg1:Number){ var _local2:Matrix3D; _local2 = Matrix3D.xRotationMatrix(_arg1); localSpace.postMultiplyMatrix(_local2); } public function process():void{ var _local1:Number; _local1 = 0; while (_local1 < aChildNodes.length) { aChildNodes[_local1].process(); _local1++; }; } public function scale(_arg1:Number){ var _local2:Vector3D; var _local3:Vector3D; var _local4:Vector3D; _local2 = localSpace.p; _local3 = localSpace.q; _local4 = localSpace.r; _local2.multiply(_arg1); _local3.multiply(_arg1); _local4.multiply(_arg1); localSpace.p = _local2; localSpace.q = _local3; localSpace.r = _local4; } public function rotateZWS(_arg1:Number){ var _local2:Vector3D; var _local3:Matrix3D; _local2 = localSpace.v; _local3 = Matrix3D.zRotationMatrix(_arg1); localSpace.preMultiplyMatrix(_local3); localSpace.v = _local2; } public function set matrix(_arg1:Matrix3D):void{ localSpace = _arg1; } public function getPosition():Vector3D{ return (localSpace.v); } public function getScale():Number{ var _local1:*; var _local2:*; var _local3:*; _local1 = localSpace.p.length(); _local2 = localSpace.q.length(); _local3 = localSpace.r.length(); return ((((_local1 + _local2) + _local3) / 3)); } public function toLocal():Matrix3D{ var _local1:Matrix3D; var _local2:Node3D; var _local3:Matrix3D; _local1 = localSpace.inverseMatrix(); _local2 = _parentNode; while (_local2 != null) { _local3 = _local2.matrix.inverseMatrix(); _local1.postMultiplyMatrix(_local3); _local2 = _local2._parentNode; }; return (_local1); } public function translateWS(_arg1:Vector3D){ localSpace.v = localSpace.v.add(_arg1); } public function addChildNode(_arg1:Node3D){ aChildNodes.push(_arg1); _arg1._parentNode = this; _arg1.world = this.world; } public function getAllChildren():Array{ var _local1:Array; var _local2:Number; var _local3:Array; var _local4:Number; _local1 = new Array(); _local2 = 0; while (_local2 < aChildNodes.length) { _local3 = aChildNodes[_local2].getAllChildren(); _local4 = 0; while (_local4 < _local3.length) { _local1.push(_local3[_local4]); _local4++; }; _local2++; }; _local1.push(this); return (_local1); } public function setPosition(_arg1:Vector3D){ localSpace.v = _arg1; } public function rotateYWS(_arg1:Number){ var _local2:Vector3D; var _local3:Matrix3D; _local2 = localSpace.v; _local3 = Matrix3D.yRotationMatrix(_arg1); localSpace.preMultiplyMatrix(_local3); localSpace.v = _local2; } public function localToLocal(_arg1:Node3D):Matrix3D{ var _local2:Matrix3D; var _local3:Matrix3D; var _local4:Node3D; var _local5:Matrix3D; _local2 = _arg1.toGlobal(); _local3 = localSpace.inverseMatrix(); _local4 = _parentNode; while (_local4 != null) { _local5 = _local4.matrix.inverseMatrix(); _local3.postMultiplyMatrix(_local5); _local4 = _local4._parentNode; }; _local2.preMultiplyMatrix(_local3); return (_local2); } public function get matrix():Matrix3D{ return (localSpace); } public function rotateXWS(_arg1:Number){ var _local2:Vector3D; var _local3:Matrix3D; _local2 = localSpace.v; _local3 = Matrix3D.xRotationMatrix(_arg1); localSpace.preMultiplyMatrix(_local3); localSpace.v = _local2; } } }//package com.bobblebrook.lisa.l3d
Section 4
//World3D (com.bobblebrook.lisa.l3d.World3D) package com.bobblebrook.lisa.l3d { public class World3D extends Node3D { private var activeCam:Camera3D; public function World3D(){ this.world = this; } override public function process():void{ super.process(); if (activeCam != null){ activeCam.render(this); }; } public function set activeCamera(_arg1:Camera3D){ activeCam = _arg1; } public function get activeCamera():Camera3D{ return (activeCam); } } }//package com.bobblebrook.lisa.l3d
Section 5
//Constants (com.bobblebrook.lisa.math.Constants) package com.bobblebrook.lisa.math { public class Constants { public static const RAD2DEG:Number = 57.2957795130823; public static const DEG2RAD:Number = 0.0174532925199433; } }//package com.bobblebrook.lisa.math
Section 6
//Matrix3D (com.bobblebrook.lisa.math.Matrix3D) package com.bobblebrook.lisa.math { public class Matrix3D { var entries:Array; public function Matrix3D(){ var _local1:Number; var _local2:Number; var _local3:Number; super(); entries = new Array(16); _local1 = 0; _local2 = 0; while (_local2 < 4) { _local3 = 0; while (_local3 < 4) { if (_local3 == _local2){ entries[_local1] = 1; } else { entries[_local1] = 0; }; _local1++; _local3++; }; _local2++; }; } public function addMatrix(_arg1:Matrix3D):Matrix3D{ var _local2:Number; _local2 = 0; while (_local2 < 16) { entries[_local2] = (entries[_local2] + _arg1.entries[_local2]); _local2++; }; return (this); } public function setToZero():Matrix3D{ var _local1:Number; _local1 = 0; while (_local1 < 16) { entries[_local1] = 0; _local1++; }; return (this); } public function preMultiplyMatrix(_arg1:Matrix3D):Matrix3D{ var _local2:*; var _local3:Number; _local2 = new Array(16); _local2[0] = ((((_arg1.entries[0] * entries[0]) + (_arg1.entries[1] * entries[4])) + (_arg1.entries[2] * entries[8])) + (_arg1.entries[3] * entries[12])); _local2[1] = ((((_arg1.entries[0] * entries[1]) + (_arg1.entries[1] * entries[5])) + (_arg1.entries[2] * entries[9])) + (_arg1.entries[3] * entries[13])); _local2[2] = ((((_arg1.entries[0] * entries[2]) + (_arg1.entries[1] * entries[6])) + (_arg1.entries[2] * entries[10])) + (_arg1.entries[3] * entries[14])); _local2[3] = ((((_arg1.entries[0] * entries[3]) + (_arg1.entries[1] * entries[7])) + (_arg1.entries[2] * entries[11])) + (_arg1.entries[3] * entries[15])); _local2[4] = ((((_arg1.entries[4] * entries[0]) + (_arg1.entries[5] * entries[4])) + (_arg1.entries[6] * entries[8])) + (_arg1.entries[7] * entries[12])); _local2[5] = ((((_arg1.entries[4] * entries[1]) + (_arg1.entries[5] * entries[5])) + (_arg1.entries[6] * entries[9])) + (_arg1.entries[7] * entries[13])); _local2[6] = ((((_arg1.entries[4] * entries[2]) + (_arg1.entries[5] * entries[6])) + (_arg1.entries[6] * entries[10])) + (_arg1.entries[7] * entries[14])); _local2[7] = ((((_arg1.entries[4] * entries[3]) + (_arg1.entries[5] * entries[7])) + (_arg1.entries[6] * entries[11])) + (_arg1.entries[7] * entries[15])); _local2[8] = ((((_arg1.entries[8] * entries[0]) + (_arg1.entries[9] * entries[4])) + (_arg1.entries[10] * entries[8])) + (_arg1.entries[11] * entries[12])); _local2[9] = ((((_arg1.entries[8] * entries[1]) + (_arg1.entries[9] * entries[5])) + (_arg1.entries[10] * entries[9])) + (_arg1.entries[11] * entries[13])); _local2[10] = ((((_arg1.entries[8] * entries[2]) + (_arg1.entries[9] * entries[6])) + (_arg1.entries[10] * entries[10])) + (_arg1.entries[11] * entries[14])); _local2[11] = ((((_arg1.entries[8] * entries[3]) + (_arg1.entries[9] * entries[7])) + (_arg1.entries[10] * entries[11])) + (_arg1.entries[11] * entries[15])); _local2[12] = ((((_arg1.entries[12] * entries[0]) + (_arg1.entries[13] * entries[4])) + (_arg1.entries[14] * entries[8])) + (_arg1.entries[15] * entries[12])); _local2[13] = ((((_arg1.entries[12] * entries[1]) + (_arg1.entries[13] * entries[5])) + (_arg1.entries[14] * entries[9])) + (_arg1.entries[15] * entries[13])); _local2[14] = ((((_arg1.entries[12] * entries[2]) + (_arg1.entries[13] * entries[6])) + (_arg1.entries[14] * entries[10])) + (_arg1.entries[15] * entries[14])); _local2[15] = ((((_arg1.entries[12] * entries[3]) + (_arg1.entries[13] * entries[7])) + (_arg1.entries[14] * entries[11])) + (_arg1.entries[15] * entries[15])); _local3 = 0; while (_local3 < 16) { entries[_local3] = _local2[_local3]; _local3++; }; return (this); } public function postMultiplyMatrix(_arg1:Matrix3D):Matrix3D{ var _local2:*; var _local3:Number; _local2 = new Array(16); _local2[0] = ((((entries[0] * _arg1.entries[0]) + (entries[1] * _arg1.entries[4])) + (entries[2] * _arg1.entries[8])) + (entries[3] * _arg1.entries[12])); _local2[1] = ((((entries[0] * _arg1.entries[1]) + (entries[1] * _arg1.entries[5])) + (entries[2] * _arg1.entries[9])) + (entries[3] * _arg1.entries[13])); _local2[2] = ((((entries[0] * _arg1.entries[2]) + (entries[1] * _arg1.entries[6])) + (entries[2] * _arg1.entries[10])) + (entries[3] * _arg1.entries[14])); _local2[3] = ((((entries[0] * _arg1.entries[3]) + (entries[1] * _arg1.entries[7])) + (entries[2] * _arg1.entries[11])) + (entries[3] * _arg1.entries[15])); _local2[4] = ((((entries[4] * _arg1.entries[0]) + (entries[5] * _arg1.entries[4])) + (entries[6] * _arg1.entries[8])) + (entries[7] * _arg1.entries[12])); _local2[5] = ((((entries[4] * _arg1.entries[1]) + (entries[5] * _arg1.entries[5])) + (entries[6] * _arg1.entries[9])) + (entries[7] * _arg1.entries[13])); _local2[6] = ((((entries[4] * _arg1.entries[2]) + (entries[5] * _arg1.entries[6])) + (entries[6] * _arg1.entries[10])) + (entries[7] * _arg1.entries[14])); _local2[7] = ((((entries[4] * _arg1.entries[3]) + (entries[5] * _arg1.entries[7])) + (entries[6] * _arg1.entries[11])) + (entries[7] * _arg1.entries[15])); _local2[8] = ((((entries[8] * _arg1.entries[0]) + (entries[9] * _arg1.entries[4])) + (entries[10] * _arg1.entries[8])) + (entries[11] * _arg1.entries[12])); _local2[9] = ((((entries[8] * _arg1.entries[1]) + (entries[9] * _arg1.entries[5])) + (entries[10] * _arg1.entries[9])) + (entries[11] * _arg1.entries[13])); _local2[10] = ((((entries[8] * _arg1.entries[2]) + (entries[9] * _arg1.entries[6])) + (entries[10] * _arg1.entries[10])) + (entries[11] * _arg1.entries[14])); _local2[11] = ((((entries[8] * _arg1.entries[3]) + (entries[9] * _arg1.entries[7])) + (entries[10] * _arg1.entries[11])) + (entries[11] * _arg1.entries[15])); _local2[12] = ((((entries[12] * _arg1.entries[0]) + (entries[13] * _arg1.entries[4])) + (entries[14] * _arg1.entries[8])) + (entries[15] * _arg1.entries[12])); _local2[13] = ((((entries[12] * _arg1.entries[1]) + (entries[13] * _arg1.entries[5])) + (entries[14] * _arg1.entries[9])) + (entries[15] * _arg1.entries[13])); _local2[14] = ((((entries[12] * _arg1.entries[2]) + (entries[13] * _arg1.entries[6])) + (entries[14] * _arg1.entries[10])) + (entries[15] * _arg1.entries[14])); _local2[15] = ((((entries[12] * _arg1.entries[3]) + (entries[13] * _arg1.entries[7])) + (entries[14] * _arg1.entries[11])) + (entries[15] * _arg1.entries[15])); _local3 = 0; while (_local3 < 16) { entries[_local3] = _local2[_local3]; _local3++; }; return (this); } public function translate(_arg1:Vector3D){ entries[3] = (entries[3] + _arg1.x); entries[7] = (entries[7] + _arg1.y); entries[11] = (entries[11] + _arg1.z); } public function inverseMatrix():Matrix3D{ var _local1:Matrix3D; var _local2:Vector3D; _local1 = this.copy().transposeMatrix(); _local2 = v.flip(); _local1.postMultiplyVectorAndStoreIn(_local2, _local2); _local1.entries[3] = _local2.x; _local1.entries[7] = _local2.y; _local1.entries[11] = _local2.z; return (_local1); } public function storePIn(_arg1:Vector3D){ _arg1.x = entries[0]; _arg1.y = entries[4]; _arg1.z = entries[8]; _arg1.w = 0; } public function storeQIn(_arg1:Vector3D){ _arg1.x = entries[1]; _arg1.y = entries[5]; _arg1.z = entries[9]; _arg1.w = 0; } public function storeRIn(_arg1:Vector3D){ _arg1.x = entries[2]; _arg1.y = entries[6]; _arg1.z = entries[10]; _arg1.w = 0; } public function storeVIn(_arg1:Vector3D){ _arg1.x = entries[3]; _arg1.y = entries[7]; _arg1.z = entries[11]; _arg1.w = 0; } public function setToIdentity():Matrix3D{ var _local1:Number; var _local2:Number; var _local3:Number; _local1 = 0; _local2 = 0; while (_local2 < 4) { _local3 = 0; while (_local3 < 4) { if (_local3 == _local2){ entries[_local1] = 1; } else { entries[_local1] = 0; }; _local1++; _local3++; }; _local2++; }; return (this); } public function orthonormalize(){ var _local1:Vector3D; var _local2:Vector3D; var _local3:Vector3D; _local1 = p; _local2 = q; _local3 = r; _local2 = _local1.cross(_local3); _local1 = _local3.cross(_local2); _local1.normalize(); _local2.normalize(); _local3.normalize(); p = _local1; q = _local2; r = _local3; } public function getValueAt(_arg1:Number, _arg2:Number):Number{ return (entries[((_arg1 * 4) + _arg2)]); } public function rotateY(_arg1:Number):Matrix3D{ var _local2:Number; var _local3:Number; var _local4:*; var _local5:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = new Array(16); _local4[0] = ((entries[0] * _local2) + (entries[2] * _local3)); _local4[1] = entries[1]; _local4[2] = ((entries[2] * _local2) - (entries[0] * _local3)); _local4[3] = entries[3]; _local4[4] = ((entries[4] * _local2) + (entries[6] * _local3)); _local4[5] = entries[5]; _local4[6] = ((entries[6] * _local2) - (entries[4] * _local3)); _local4[7] = entries[7]; _local4[8] = ((entries[8] * _local2) + (entries[10] * _local3)); _local4[9] = entries[9]; _local4[10] = ((entries[10] * _local2) - (entries[8] * _local3)); _local4[11] = entries[11]; _local4[12] = 0; _local4[13] = 0; _local4[14] = 0; _local4[15] = 1; _local5 = 0; while (_local5 < 16) { entries[_local5] = _local4[_local5]; _local5++; }; return (this); } public function postMultiplyVector(_arg1:Vector3D):Vector3D{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local2 = _arg1.x; _local3 = _arg1.y; _local4 = _arg1.z; _local5 = _arg1.w; _local6 = ((((entries[0] * _local2) + (entries[1] * _local3)) + (entries[2] * _local4)) + (entries[3] * _local5)); _local7 = ((((entries[4] * _local2) + (entries[5] * _local3)) + (entries[6] * _local4)) + (entries[7] * _local5)); _local8 = ((((entries[8] * _local2) + (entries[9] * _local3)) + (entries[10] * _local4)) + (entries[11] * _local5)); return (new Vector3D(_local6, _local7, _local8, _local5)); } public function set p(_arg1:Vector3D){ entries[0] = _arg1.x; entries[4] = _arg1.y; entries[8] = _arg1.z; entries[12] = 0; } public function transposeMatrix():Matrix3D{ var _local1:Number; var _local2:*; var _local3:Number; var _local4:Number; _local1 = 0; _local2 = new Array(16); _local3 = 0; while (_local3 < 4) { _local4 = 0; while (_local4 < 4) { _local2[_local1] = entries[((_local4 * 4) + _local3)]; _local1++; _local4++; }; _local3++; }; _local1 = 0; while (_local1 < 16) { entries[_local1] = _local2[_local1]; _local1++; }; return (this); } public function set q(_arg1:Vector3D){ entries[1] = _arg1.x; entries[5] = _arg1.y; entries[9] = _arg1.z; entries[13] = 0; } public function set r(_arg1:Vector3D){ entries[2] = _arg1.x; entries[6] = _arg1.y; entries[10] = _arg1.z; entries[14] = 0; } public function rotateZ(_arg1:Number):Matrix3D{ var _local2:Number; var _local3:Number; var _local4:*; var _local5:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = new Array(16); _local4[0] = ((entries[0] * _local2) + (entries[1] * _local3)); _local4[1] = ((entries[1] * _local2) - (entries[0] * _local3)); _local4[2] = entries[2]; _local4[3] = entries[3]; _local4[4] = ((entries[4] * _local2) + (entries[5] * _local3)); _local4[5] = ((entries[5] * _local2) - (entries[4] * _local3)); _local4[6] = entries[6]; _local4[7] = entries[7]; _local4[8] = ((entries[8] * _local2) + (entries[9] * _local3)); _local4[9] = ((entries[9] * _local2) - (entries[8] * _local3)); _local4[10] = entries[10]; _local4[11] = entries[11]; _local4[12] = 0; _local4[13] = 0; _local4[14] = 0; _local4[15] = 1; _local5 = 0; while (_local5 < 16) { entries[_local5] = _local4[_local5]; _local5++; }; return (this); } public function copyAndStoreIn(_arg1:Matrix3D){ var _local2:Number; _local2 = 0; while (_local2 < 16) { _arg1.entries[_local2] = entries[_local2]; _local2++; }; } public function set v(_arg1:Vector3D){ entries[3] = _arg1.x; entries[7] = _arg1.y; entries[11] = _arg1.z; entries[15] = 1; } public function get p():Vector3D{ return (new Vector3D(entries[0], entries[4], entries[8], 0)); } public function get q():Vector3D{ return (new Vector3D(entries[1], entries[5], entries[9], 0)); } public function get r():Vector3D{ return (new Vector3D(entries[2], entries[6], entries[10], 0)); } public function copy():Matrix3D{ var _local1:Matrix3D; _local1 = new Matrix3D(); copyAndStoreIn(_local1); return (_local1); } public function get v():Vector3D{ return (new Vector3D(entries[3], entries[7], entries[11], 1)); } public function toString():String{ var _local1:String; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = ""; _local2 = 0; _local3 = 0; while (_local3 < 4) { _local4 = 0; while (_local4 < 4) { _local1 = (_local1 + (entries[_local2] + " ")); _local2++; _local4++; }; _local1 = (_local1 + "\n"); _local3++; }; return (_local1); } public function multiply(_arg1:Number):Matrix3D{ var _local2:Number; _local2 = 0; while (_local2 < 16) { entries[_local2] = (entries[_local2] * _arg1); _local2++; }; return (this); } public function postMultiplyVectorAndStoreIn(_arg1:Vector3D, _arg2:Vector3D){ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; _local3 = _arg1.x; _local4 = _arg1.y; _local5 = _arg1.z; _local6 = _arg1.w; _local7 = ((((entries[0] * _local3) + (entries[1] * _local4)) + (entries[2] * _local5)) + (entries[3] * _local6)); _local8 = ((((entries[4] * _local3) + (entries[5] * _local4)) + (entries[6] * _local5)) + (entries[7] * _local6)); _local9 = ((((entries[8] * _local3) + (entries[9] * _local4)) + (entries[10] * _local5)) + (entries[11] * _local6)); _arg2.set(_local7, _local8, _local9, _local6); } public function rotateX(_arg1:Number):Matrix3D{ var _local2:Number; var _local3:Number; var _local4:*; var _local5:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = new Array(16); _local4[0] = entries[0]; _local4[1] = ((entries[1] * _local2) + (entries[2] * _local3)); _local4[2] = ((entries[2] * _local2) - (entries[1] * _local3)); _local4[3] = entries[3]; _local4[4] = entries[4]; _local4[5] = ((entries[5] * _local2) + (entries[6] * _local3)); _local4[6] = ((entries[6] * _local2) - (entries[5] * _local3)); _local4[7] = entries[7]; _local4[8] = entries[8]; _local4[9] = ((entries[9] * _local2) + (entries[10] * _local3)); _local4[10] = ((entries[10] * _local2) - (entries[9] * _local3)); _local4[11] = entries[11]; _local4[12] = 0; _local4[13] = 0; _local4[14] = 0; _local4[15] = 1; _local5 = 0; while (_local5 < 16) { entries[_local5] = _local4[_local5]; _local5++; }; return (this); } public static function yRotationMatrix(_arg1:Number):Matrix3D{ var _local2:Number; var _local3:Number; var _local4:Matrix3D; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = new (Matrix3D); _local4.entries[0] = _local2; _local4.entries[2] = -(_local3); _local4.entries[8] = _local3; _local4.entries[10] = _local2; return (_local4); } public static function zRotationMatrix(_arg1:Number):Matrix3D{ var _local2:Number; var _local3:Number; var _local4:Matrix3D; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = new (Matrix3D); _local4.entries[0] = _local2; _local4.entries[1] = -(_local3); _local4.entries[4] = _local3; _local4.entries[5] = _local2; return (_local4); } public static function xRotationMatrix(_arg1:Number):Matrix3D{ var _local2:Number; var _local3:Number; var _local4:Matrix3D; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); _local4 = new (Matrix3D); _local4.entries[5] = _local2; _local4.entries[6] = -(_local3); _local4.entries[9] = _local3; _local4.entries[10] = _local2; return (_local4); } } }//package com.bobblebrook.lisa.math
Section 7
//Vector2D (com.bobblebrook.lisa.math.Vector2D) package com.bobblebrook.lisa.math { public class Vector2D { public var y:Number; public var x:Number; public static var xAxis:Vector2D = new Vector2D(1, 0); ; public static var yAxis:Vector2D = new Vector2D(0, 1); ; public function Vector2D(_arg1:Number, _arg2:Number){ x = (y = 0); x = _arg1; y = _arg2; } public function degreesTo(_arg1:Vector2D):Number{ return ((angleTo(_arg1) * Constants.RAD2DEG)); } public function subtractAndStoreIn(_arg1:Vector2D, _arg2:Vector2D):Vector2D{ _arg2.set((x - _arg1.x), (y - _arg1.y)); return (_arg2); } public function equalsApprox(_arg1:Vector2D, _arg2:Number=1E-7):Boolean{ if ((((Math.abs((_arg1.x - x)) <= _arg2)) && ((Math.abs((_arg1.y - y)) <= _arg2)))){ return (true); }; return (false); } public function dot(_arg1:Vector2D):Number{ return (((x * _arg1.x) + (y * _arg1.y))); } public function normalizedDegreesTo(_arg1:Vector2D):Number{ return ((normalizedAngleTo(_arg1) * Constants.RAD2DEG)); } public function rotateDegrees(_arg1:Number):Vector2D{ _arg1 = (_arg1 * Constants.DEG2RAD); return (this.rotate(_arg1)); } public function normalize():Vector2D{ var _local1:Number; _local1 = this.length(); if (_local1 == 0){ y = 1; } else { x = (x / _local1); y = (y / _local1); }; return (this); } public function addAndStoreIn(_arg1:Vector2D, _arg2:Vector2D):Vector2D{ _arg2.set((x + _arg1.x), (y + _arg1.y)); return (_arg2); } public function toNormal():Vector2D{ var _local1:Number; _local1 = -(y); y = x; x = _local1; return (this); } public function multiplyAndStoreIn(_arg1:Number, _arg2:Vector2D):Vector2D{ _arg2.set((x * _arg1), (y * _arg1)); return (_arg2); } public function subtract(_arg1:Vector2D):Vector2D{ x = (x - _arg1.x); y = (y - _arg1.y); return (this); } public function rotate(_arg1:Number):Vector2D{ var _local2:Number; var _local3:Number; _local2 = ((x * Math.cos(_arg1)) - (y * Math.sin(_arg1))); _local3 = ((x * Math.sin(_arg1)) + (y * Math.cos(_arg1))); x = _local2; y = _local3; return (this); } public function add(_arg1:Vector2D):Vector2D{ x = (x + _arg1.x); y = (y + _arg1.y); return (this); } public function set(_arg1:Number, _arg2:Number){ x = _arg1; y = _arg2; return (this); } public function squareLength():Number{ return (((x * x) + (y * y))); } public function multiply(_arg1:Number):Vector2D{ x = (x * _arg1); y = (y * _arg1); return (this); } public function length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function normal():Vector2D{ return (new Vector2D(-(y), x)); } public function copyAndStoreIn(_arg1:Vector2D):void{ _arg1.x = x; _arg1.y = y; } public function toString():String{ return (((("Vector: x:" + x) + ", y:") + y)); } public function flip():Vector2D{ x = -(x); y = -(y); return (this); } public function angleTo(_arg1:Vector2D):Number{ return (Math.acos((this.dot(_arg1) / (this.length() * _arg1.length())))); } public function clockwise(_arg1:Vector2D):Boolean{ var _local2:Number; _local2 = ((x * _arg1.y) - (_arg1.x * y)); return ((_local2 >= 0)); } public function copy():Vector2D{ return (new Vector2D(x, y)); } public function randomUnit():Vector2D{ x = (Math.random() - 0.5); y = (Math.random() - 0.5); normalize(); return (this); } public function normalizedAngleTo(_arg1:Vector2D):Number{ return (Math.acos(this.dot(_arg1))); } public function equals(_arg1:Vector2D):Boolean{ if ((((_arg1.x == x)) && ((_arg1.y == y)))){ return (true); }; return (false); } } }//package com.bobblebrook.lisa.math
Section 8
//Vector3D (com.bobblebrook.lisa.math.Vector3D) package com.bobblebrook.lisa.math { public class Vector3D { public var w:Number; public var x:Number; public var y:Number; public var z:Number; public static var xAxis:Vector3D = new Vector3D(1, 0, 0, 0); ; public static var yAxis:Vector3D = new Vector3D(0, 1, 0, 0); ; public static var zAxis:Vector3D = new Vector3D(0, 0, 1, 0); ; public function Vector3D(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){ x = _arg1; y = _arg2; z = _arg3; w = _arg4; } public function cross(_arg1:Vector3D):Vector3D{ return (new Vector3D(((y * _arg1.z) - (z * _arg1.y)), ((z * _arg1.x) - (x * _arg1.z)), ((x * _arg1.y) - (y * _arg1.x)), 0)); } public function degreesTo(_arg1:Vector3D):Number{ return ((angleTo(_arg1) * Constants.RAD2DEG)); } public function subtractAndStoreIn(_arg1:Vector3D, _arg2:Vector3D):Vector3D{ _arg2.set((x - _arg1.x), (y - _arg1.y), (z - _arg1.z), (w - _arg1.w)); return (_arg2); } public function equalsApprox(_arg1:Vector3D, _arg2:Number=1E-7):Boolean{ if ((((((Math.abs((_arg1.x - x)) <= _arg2)) && ((Math.abs((_arg1.y - y)) <= _arg2)))) && ((Math.abs((_arg1.z - z)) <= _arg2)))){ return (true); }; return (false); } public function dot(_arg1:Vector3D):Number{ return ((((x * _arg1.x) + (y * _arg1.y)) + (z * _arg1.z))); } public function normalizedDegreesTo(_arg1:Vector3D):Number{ return ((normalizedAngleTo(_arg1) * Constants.RAD2DEG)); } public function normalize():Vector3D{ var _local1:Number; _local1 = this.length(); if (_local1 == 0){ y = 1; } else { x = (x / _local1); y = (y / _local1); z = (z / _local1); }; return (this); } public function addAndStoreIn(_arg1:Vector3D, _arg2:Vector3D):Vector3D{ _arg2.set((x + _arg1.x), (y + _arg1.y), (z + _arg1.z), (w + _arg1.w)); return (_arg2); } public function multiplyAndStoreIn(_arg1:Number, _arg2:Vector3D):Vector3D{ _arg2.set((x * _arg1), (y * _arg1), (z * _arg1), w); return (_arg2); } public function subtract(_arg1:Vector3D):Vector3D{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); w = (w - _arg1.w); return (this); } public function add(_arg1:Vector3D):Vector3D{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); w = (w + _arg1.w); return (this); } public function set(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Vector3D{ x = _arg1; y = _arg2; z = _arg3; w = _arg4; return (this); } public function squareLength():Number{ return ((((x * x) + (y * y)) + (z * z))); } public function multiply(_arg1:Number):Vector3D{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); return (this); } public function length():Number{ return (Math.sqrt((((x * x) + (y * y)) + (z * z)))); } public function randomUnit():Vector3D{ x = (Math.random() - 0.5); y = (Math.random() - 0.5); z = (Math.random() - 0.5); normalize(); return (this); } public function copyAndStoreIn(_arg1:Vector3D):void{ _arg1.x = x; _arg1.y = y; _arg1.z = z; _arg1.w = w; } public function toString():String{ return ((((((((("Vector: x:" + x) + ", y:") + y) + ", z:") + z) + "(, w:") + w) + ")")); } public function flip():Vector3D{ x = -(x); y = -(y); z = -(z); return (this); } public function angleTo(_arg1:Vector3D):Number{ return (Math.acos((this.dot(_arg1) / (this.length() * _arg1.length())))); } public function copy():Vector3D{ return (new Vector3D(x, y, z, w)); } public function normalizedAngleTo(_arg1:Vector3D):Number{ return (Math.acos(this.dot(_arg1))); } public function equals(_arg1:Vector3D):Boolean{ if ((((((_arg1.x == x)) && ((_arg1.y == y)))) && ((_arg1.z == z)))){ return (true); }; return (false); } } }//package com.bobblebrook.lisa.math
Section 9
//Tracker (com.bobblebrook.lisa.server.Tracker) package com.bobblebrook.lisa.server { import flash.events.*; import flash.utils.*; import flash.net.*; public class Tracker { private var timer:Timer; private var sID:String; private var isActive:Boolean; private var _status:Number; private var _debug:Boolean; private var aEvents:Array; private var tURL:String; private var urlLoader:URLLoader; private var pingIntervalID:Number; public static var CONNECTED:Number = 2; private static var REQUEST_ID:Number = 2; public static var ERROR:Number = 3; private static var _instance:Tracker; public static var UNCONNECTED:Number = 0; public static var CONNECTING:Number = 1; private static var PING:Number = 1; private static var EVENT:Number = 0; public function Tracker(){ sID = undefined; tURL = undefined; aEvents = new Array(); pingIntervalID = undefined; _debug = false; _status = UNCONNECTED; isActive = true; timer = null; urlLoader = new URLLoader(); urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; } public function get active():Boolean{ return (isActive); } public function send(_arg1:String, _arg2:Array=null):void{ var _local3:Object; var _local4:String; if (_arg2 == null){ _arg2 = new Array(); }; _local3 = new Object(); _local3.event = _arg1; _local3.args = _arg2; _local4 = _dateString(); _local3.time = _local4; aEvents.push(_local3); _processEvents(); if (_debug){ trace(((((_local4 + " | T R A C K I N G | ") + _arg1) + ", ") + _arg2.toString())); }; } public function turnOffPing():void{ if (timer != null){ timer.stop(); timer.removeEventListener("timer", _pingServer); timer = null; }; } public function set active(_arg1:Boolean){ isActive = _arg1; } public function get debug():Boolean{ return (_debug); } public function turnOnPing(_arg1:Number=30){ turnOffPing(); timer = new Timer((_arg1 * 1000), 0); timer.addEventListener("timer", _pingServer); timer.start(); } public function init(_arg1:String, _arg2:String):void{ var _local3:URLRequest; var _local4:URLVariables; if (_debug){ trace(((("Tracker initializing, game: " + _arg1) + " | Url: ") + _arg2)); }; if (!active){ return; }; tURL = _arg2; _status = CONNECTING; _local3 = new URLRequest(_arg2); _local4 = new URLVariables(); _local4.msg = _arg1; _local4.type = REQUEST_ID; _local4.time = _dateString(); _local3.data = _local4; _local3.method = URLRequestMethod.POST; urlLoader.addEventListener(Event.COMPLETE, _connectSuccess); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, _connectError); urlLoader.load(_local3); } function _connectSuccess(_arg1:Event){ if (_debug){ trace("tracker connected"); }; urlLoader.removeEventListener(Event.COMPLETE, _connectSuccess); if (URLVariables(URLLoader(_arg1.target).data).sID){ Tracker.instance.sID = URLVariables(URLLoader(_arg1.target).data).sID; }; Tracker.instance._status = CONNECTED; Tracker.instance._processEvents(); } function _connectError(_arg1:IOErrorEvent){ urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, _connectError); trace(("ERROR | " + _arg1.text)); Tracker.instance._status = ERROR; } public function set debug(_arg1:Boolean){ _debug = _arg1; } private function _processEvents(){ var _local1:Object; var _local2:*; var _local3:Number; var _local4:URLRequest; var _local5:URLVariables; if (!active){ return; }; if (_status != CONNECTED){ return; }; while (aEvents.length != 0) { _local1 = aEvents.shift(); _local2 = ((((("" + sID) + ";") + _local1.time) + ";") + _local1.event); _local3 = 0; while (_local3 < _local1.args.length) { _local2 = (_local2 + (";" + String(_local1.args[_local3]))); _local3++; }; urlLoader = new URLLoader(); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, _connectError); urlLoader.dataFormat = URLLoaderDataFormat.TEXT; _local4 = new URLRequest(tURL); _local5 = new URLVariables(); _local5.msg = _local2; _local5.type = EVENT; _local4.data = _local5; _local4.method = URLRequestMethod.POST; urlLoader.load(_local4); }; } public function status():Number{ return (_status); } private function _pingServer(_arg1:TimerEvent):void{ var _local2:URLRequest; var _local3:URLVariables; if (!active){ return; }; if (_status == CONNECTED){ _local2 = new URLRequest(tURL); _local3 = new URLVariables(); _local3.msg = this.sID; _local3.type = PING; _local3.time = _dateString(); _local2.data = _local3; _local2.method = URLRequestMethod.POST; urlLoader = new URLLoader(); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, _connectError); urlLoader.load(_local2); }; } private function _dateString():String{ var _local1:Date; _local1 = new Date(); return ((((((((((((("" + _local1.getFullYear()) + "-") + ((_local1.getMonth())<9) ? "0" : "") + (_local1.getMonth() + 1)) + "-") + _local1.getDate()) + " ") + _local1.getHours()) + ":") + _local1.getMinutes()) + ":") + _local1.getSeconds())); } public static function get instance():Tracker{ if (_instance == null){ _instance = new (Tracker); }; return (_instance); } } }//package com.bobblebrook.lisa.server
Section 10
//ArrayUtils (com.bobblebrook.lisa.utils.ArrayUtils) package com.bobblebrook.lisa.utils { public class ArrayUtils { public static function removeFromArray(_arg1:Object, _arg2:Array):Number{ var _local3:Number; var _local4:Number; _local3 = 0; _local4 = 0; while (_local4 < _arg2.length) { if (_arg2[_local4] == _arg1){ _arg2.splice(_local4, 1); _local4--; _local3++; }; _local4++; }; return (_local3); } public static function inArray(_arg1:Object, _arg2:Array):Boolean{ var _local3:Number; var _local4:Number; _local3 = _arg2.length; _local4 = 0; while (_local4 < _local3) { if (_arg2[_local4] == _arg1){ return (true); }; _local4++; }; return (false); } } }//package com.bobblebrook.lisa.utils
Section 11
//StringUtils (com.bobblebrook.lisa.utils.StringUtils) package com.bobblebrook.lisa.utils { public class StringUtils { private static var _numbers:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9"); private static var _whitespace:Array = new Array(" ", "\n", "\r"); public static function removeWhitespace(_arg1:String):String{ while (ArrayUtils.inArray(_arg1.charAt(0), _whitespace)) { _arg1 = _arg1.substring(1, _arg1.length); }; while (ArrayUtils.inArray(_arg1.charAt((_arg1.length - 1)), _whitespace)) { _arg1 = _arg1.substring(0, (_arg1.length - 1)); }; return (_arg1); } public static function isMail(_arg1:String):Boolean{ var _local2:Number; _local2 = _arg1.indexOf("@"); if ((((_local2 < 1)) || (!((_arg1.indexOf("@", (_local2 + 1)) == -1))))){ return (false); }; if (_arg1.indexOf(".", (_local2 + 2)) == -1){ return (false); }; return (true); } public static function isNumeric(_arg1:String):Boolean{ return (!(isNaN(Number(_arg1)))); } public static function convertFramesToMS(_arg1:Number):String{ var _local2:Number; var _local3:Number; _arg1 = (Math.ceil(((100 * _arg1) / 30)) / 100); _local2 = Math.floor((_arg1 / 60)); _local3 = (_arg1 - (_local2 * 60)); _local3 = Math.floor(_local3); return ((((_local2 + ":") + ((_local3)<10) ? "0" : "") + _local3)); } public static function convertFramesToMSM(_arg1:Number):String{ var _local2:Number; var _local3:Number; var _local4:Number; _arg1 = (Math.ceil(((100 * _arg1) / 30)) / 100); _local2 = Math.floor((_arg1 / 60)); _local3 = (_arg1 - (_local2 * 60)); _local4 = Math.floor(((_local3 % 1) * 100)); _local3 = Math.floor(_local3); return (((((((_local2 + ":") + ((_local3)<10) ? "0" : "") + _local3) + ":") + ((_local4)<10) ? "0" : "") + _local4)); } public static function randomNumberString():String{ var _local1:String; _local1 = ("" + (Math.floor((Math.random() * 90000)) + 9999)); return (_local1); } } }//package com.bobblebrook.lisa.utils
Section 12
//HighscoreRow (com.bobblebrook.lisa.HighscoreRow) package com.bobblebrook.lisa { import flash.display.*; import flash.text.*; public class HighscoreRow extends MovieClip { public var tfName:TextField; public var tfScore:TextField; public var tfRank:TextField; public function HighscoreRow(){ HighscoreTable(parent).registerRow(this); } public function get position():Number{ return (y); } } }//package com.bobblebrook.lisa
Section 13
//HighscoreTable (com.bobblebrook.lisa.HighscoreTable) package com.bobblebrook.lisa { import flash.events.*; import flash.display.*; import flash.net.*; import flash.text.*; public class HighscoreTable extends XMovieClip { public var weeklyScores:Array; private var scoreTableXML:XML; private var $viewOnly:Boolean; public var tfName:TextField; private var bBanned:Boolean;// = false public var personalScore:Number; public var btn_daily:SimpleButton; private var numRows:Number; public var monthlyScores:Array; public var mcMessageBox:MessageBox; public var bLoading:Boolean; public var bSubmitted:Boolean; private var allRows:Array; public var btn_monthly:SimpleButton; public var btn_allTime:SimpleButton; public var btn_retry:SimpleButton; public var tfMessage:TextField; public var btn_enter:SimpleButton; public var tfSystem:TextField; public var localScores:SharedObject; public var mcForm:Form; private var highestTable:String; public var dailyScores:Array; public var bLocalTesting:Boolean; public var allTimeScores:Array; public var btn_weekly:SimpleButton; public static var SUBMIT_SUCCESS:String = "<b>Success!</b><br>Your highscore has been submitted."; public static var NEW_HIGHSCORE_MONTHLY:String = "<b>monthly</b>"; public static var LOADING_SUCCESS:String = "<b>Loading highscores.</b><br>Highscores successfully loaded."; public static var NEW_HIGHSCORE_DAILY:String = "<b>daily</b>"; public static var NO_HIGHSCORE:String = (("This is quite impressive already, but you still need <b>" + "~minBest~") + " more points for a highscore.</b>"); public static var NEW_HIGHSCORE_LIST:String = "<b>highscore list</b>"; public static var NEW_HIGHSCORE_INTRO:String = "You have reached the"; public static var AND_PERSONAL_HIGHSCORE:String = " and you have a <b>new personal highscore</b>"; public static var LOADING:String = "<b>Loading highscores.</b><br>Just a second..."; public static var BANNED:String = "<b>You are not allowed to enter your highscore.</b><br>Your IP-address is banned for attempted cheating.<br><br>Please read the FAQ to find out how this could have happened and contact us, if you think you have been unfairly accused."; public static var SCOPES:Array = ["daily", "weekly", "monthly", "allTime", "personal"]; public static var CONNECTION_TIMEOUT:String = "<b>We are sorry.</b><br>There were problems connecting to the highscore server.<br><br>You can press this button to try again."; public static var NEW_HIGHSCORE_END:String = "<b>!</b>"; public static var NEW_HIGHSCORE_GLUE:String = "and the"; public static var YOUR_SCORE:String = (("Your score: <b>" + "~highscore~") + " points!</b> <br><br>"); public static var NEW_HIGHSCORE_ALLTIME:String = "<b>all-time</b>"; public static var ENTER_NAME:String = "Please enter your name: "; public static var NEW_HIGHSCORE_WEEKLY:String = "<b>weekly</b>"; public static var NEW_PERSONAL_HIGHSCORE:String = "You have a <b>new personal highscore!</b>"; public static var NO_PERSONAL_HIGHSCORE:String = "Just ~persBest~ more points, and you would have beaten your own personal best!"; public static var ZERO_HIGHSCORE:String = ("Sorry, but you need at least <br><b>~minBest~ points</b> for a highscore. <br>" + "<br>Good luck, I'm sure you can do this!"); public function HighscoreTable(){ var _local1:Object; bBanned = false; allRows = []; super(); addFrameScript(0, frame1, 12, frame13, 24, frame25, 35, frame36, 46, frame47, 57, frame58); _local1 = this; } public function viewTable(_arg1:String=""){ var _local2:int; var _local3:MovieClip; var _local4:Object; if ((((_arg1 == "")) || ((_arg1 == null)))){ return; }; gotoAndPlay(_arg1); allRows = allRows.sortOn("position", Array.NUMERIC); _local2 = 0; while (_local2 < allRows.length) { _local3 = allRows[_local2]; _local4 = this[(_arg1 + "Scores")][_local2]; if (_local4){ _local3.tfRank.text = _local4.rank; _local3.tfName.text = _local4.name; _local3.tfScore.text = formatScore(_local4.score); _local3.visible = true; } else { _local3.visible = false; }; _local2++; }; } public function registerRow(_arg1:HighscoreRow):void{ allRows.push(_arg1); } function cross(_arg1:String):Number{ var _local2:Number; var _local3:Number; var _local4:int; var _local5:String; _local2 = _arg1.length; _local3 = 0; _local4 = 0; while (_local4 < _local2) { _local5 = _arg1.substr(_local4, 1); if (isChar(_local5)){ _local3 = (_local3 + charToNum(_local5)); } else { _local3 = (_local3 + Number(_local5)); }; _local4++; }; return (_local3); } function frame13(){ stop(); } function frame25(){ stop(); } function frame1(){ stop(); } function frame36(){ stop(); } public function loadScores(_arg1:Event){ var _local2:String; var _local3:Object; var _local4:URLVariables; var _local5:URLRequest; var _local6:*; if (bLoading){ return; }; _local2 = ScoreMGR.instance.highscoreURL; if (_local2 == null){ tfSystem.htmlText = CONNECTION_TIMEOUT; } else { _local4 = new URLVariables(); _local4.appName = ScoreMGR.instance.gameName; _local4.noCache = Math.floor((Math.random() * 1000)); _local5 = new URLRequest(_local2); _local5.method = "GET"; _local5.data = _local4; _local6 = new URLLoader(); _local6.addEventListener(Event.COMPLETE, onXMLLoaded, false, 0, true); _local6.addEventListener(IOErrorEvent.IO_ERROR, onXMLLoaded, false, 0, true); _local6.load(_local5); bLoading = true; }; _local3 = this; btn_retry.removeEventListener(MouseEvent.MOUSE_UP, submitScore); btn_retry.addEventListener(MouseEvent.MOUSE_UP, loadScores, false, 0, true); tfSystem.htmlText = LOADING; btn_retry.visible = false; gotoAndPlay("loading"); } function frame47(){ stop(); } private function getPersonalBest():Number{ return (personalScore); } public function onMessageWindowClosed():void{ } public function userBanned():Boolean{ return (bBanned); } function frame58(){ stop(); } public function formatScore(_arg1:Number):String{ return (String(_arg1)); } public function init(_arg1:Array, _arg2:Boolean=false):void{ var _local3:int; var _local4:SimpleButton; bLocalTesting = false; _local3 = 0; viewOnly = _arg2; SCOPES = _arg1; bLoading = false; bSubmitted = false; tfName = mcForm.tfName; btn_enter = mcForm.btn_enter; _local3 = 0; while (_local3 < SCOPES.length) { if (SCOPES[_local3] != "personal"){ this[(SCOPES[_local3] + "Scores")] = []; }; _local3++; }; _local3 = 0; while (_local3 < allRows.length) { allRows[_local3].visible = false; _local3++; }; btn_enter.addEventListener(MouseEvent.MOUSE_UP, submitScore, false, 0, true); btn_retry.addEventListener(MouseEvent.MOUSE_UP, loadScores, false, 0, true); btn_daily.visible = (btn_weekly.visible = (btn_monthly.visible = (btn_allTime.visible = false))); _local3 = 0; while (_local3 < SCOPES.length) { if (SCOPES[_local3] != "personal"){ _local4 = SimpleButton(this[("btn_" + SCOPES[_local3])]); _local4.visible = true; _local4.addEventListener(MouseEvent.MOUSE_UP, onTableButtonPressed, false, 0, true); }; _local3++; }; if (!$viewOnly){ localScores = SharedObject.getLocal(ScoreMGR.instance.gameName); if (((!((localScores.data.highScore == undefined))) && (!((localScores.data.highScore == null))))){ personalScore = localScores.data.highScore; localScores.data.highScore = Math.max(ScoreMGR.instance.score, personalScore); } else { personalScore = 0; localScores.data.highScore = new Number(); localScores.data.highScore = ScoreMGR.instance.score; }; localScores.flush(); }; tfMessage.htmlText = replaceScores(YOUR_SCORE); mcForm.visible = false; loadScores(new Event("")); } public function encryptScore():String{ var _local1:int; var _local2:Number; var _local3:String; var _local4:String; var _local5:*; var _local6:Number; var _local7:String; _local1 = 0; _local2 = ScoreMGR.instance.score; _local3 = String(_local2); _local4 = ""; _local5 = ((Math.random() * 4) + 1); _local1 = 0; while (_local1 < _local5) { _local4 = (_local4 + numToChar((Math.random() * 20))); _local1++; }; _local6 = _local3.length; _local4 = (_local4 + String(_local6)); _local4 = (_local4 + _local3.substr(0, 1)); _local4 = (_local4 + String(cross(_local4))); _local7 = _local3.substr(1, (_local6 - 1)); _local1 = 0; while (_local1 < _local7.length) { _local4 = (_local4 + numToChar(Number(_local7.substr(_local1, 1)))); _local1++; }; _local5 = ((Math.random() * 4) + 1); _local1 = 0; while (_local1 < _local5) { _local4 = (_local4 + String(Math.floor((Math.random() * 10)))); _local1++; }; _local5 = ((Math.random() * 4) + 1); _local1 = 0; while (_local1 < _local5) { _local4 = (_local4 + numToChar((Math.random() * 20))); _local1++; }; _local4 = (_local4 + String(cross(_local4))); return (_local4); } private function _checkTableForHighscore(_arg1:String):Boolean{ var _local2:Number; var _local3:Array; var _local4:int; _local2 = ScoreMGR.instance.score; if (_local2 == 0){ return (false); }; if (_arg1 == "personal"){ return (((_local2)>getPersonalBest()) ? true : false); } else { _local3 = this[(_arg1 + "Scores")]; if (_local3.length == 0){ return (true); }; _local4 = 0; while (_local4 < _local3.length) { if (_local3[_local4].score <= _local2){ return (true); }; if ((((_local4 == (_local3.length - 1))) && (allRows[(_local4 + 1)]))){ return (true); }; _local4++; }; }; return (false); } function charToNum(_arg1:String):Number{ switch (_arg1){ case "b": return (0); case "n": return (1); case "a": return (2); case "u": return (3); case "l": return (4); case "v": return (5); case "z": return (6); case "p": return (7); case "c": return (8); case "x": return (9); case "m": return (10); case "k": return (11); case "q": return (12); case "w": return (13); case "o": return (14); case "e": return (15); case "h": return (16); case "i": return (17); case "s": return (18); case "d": return (19); }; return (-1); } public function submitScore(_arg1:Event):Boolean{ var _local2:String; var _local3:URLVariables; var _local4:*; var _local5:URLRequest; var _local6:*; if (bBanned){ tfSystem.htmlText = BANNED; return (false); }; if (bSubmitted){ return (false); }; _local2 = tfName.text; if (_local2 == ""){ mcMessageBox.show("It seems you didn't enter a name.", "Oh!"); return (false); }; _local3 = new URLVariables(); _local3.appName = ScoreMGR.instance.gameName; _local3.player = _local2; _local3.score = encryptScore(); _local3.noCache = Math.floor((Math.random() * 1000)); _local4 = ScoreMGR.instance.highscoreURL; _local5 = new URLRequest(_local4); _local5.method = "GET"; _local5.data = _local3; _local6 = new URLLoader(); _local6.addEventListener(Event.COMPLETE, onXMLLoaded, false, 0, true); _local6.addEventListener(IOErrorEvent.IO_ERROR, onXMLLoaded, false, 0, true); _local6.load(_local5); btn_retry.removeEventListener(MouseEvent.MOUSE_UP, loadScores); btn_retry.addEventListener(MouseEvent.MOUSE_UP, submitScore, false, 0, true); bLoading = true; bSubmitted = true; mcForm.visible = false; return (true); } public function assembleFeedback():String{ var _local1:String; var _local2:String; var _local3:String; var _local4:String; var _local5:String; var _local6:String; var _local7:String; var _local8:Array; var _local9:Array; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:String; var _local14:Number; if (bBanned){ tfSystem.htmlText = BANNED; return (""); }; _local1 = NEW_PERSONAL_HIGHSCORE; _local2 = replaceScores(NO_PERSONAL_HIGHSCORE); _local3 = AND_PERSONAL_HIGHSCORE; _local4 = replaceScores(NO_HIGHSCORE); _local5 = NEW_HIGHSCORE_INTRO; _local6 = NEW_HIGHSCORE_LIST; _local7 = NEW_HIGHSCORE_GLUE; _local8 = []; _local11 = 0; while (_local11 < SCOPES.length) { if (SCOPES[_local11] != "personal"){ _local8.push(HighscoreTable[("NEW_HIGHSCORE_" + String(SCOPES[_local11]).toUpperCase())]); }; _local11++; }; _local9 = _checkTables(); _local10 = 0; _local11 = 0; while (_local11 <= SCOPES.length) { if (((_local9[_local11]) && (!((SCOPES[_local11] == "personal"))))){ _local10 = (_local10 + 1); }; _local11++; }; _local12 = undefined; _local11 = 0; while (_local11 < SCOPES.length) { _local12 = ((SCOPES[_local11])=="personal") ? _local11 : undefined; _local11++; }; trace(((("personal: " + _local12) + " | hs(personal): ") + _local9[_local12])); if (ScoreMGR.instance.score == 0){ tfMessage.htmlText = (tfMessage.htmlText + replaceScores(ZERO_HIGHSCORE)); return (""); }; if (_local10 == 0){ tfMessage.htmlText = (tfMessage.htmlText + _local4); if (_local9[_local12]){ tfMessage.htmlText = (tfMessage.htmlText + _local1); } else { tfMessage.htmlText = (tfMessage.htmlText + _local2); }; viewTable(SCOPES[0]); return (""); }; if (_local9[_local12]){ if (_local10 == 0){ _local13 = _local1; } else { if (_local10 == 1){ _local13 = (_local5 + " "); _local11 = 0; while (_local11 < _local10) { if (_local9[_local11]){ _local13 = (_local13 + _local8[_local11]); }; _local11++; }; _local13 = (_local13 + ((" " + _local6) + _local3)); } else { _local13 = (_local5 + " "); _local14 = 0; _local11 = 0; while (_local11 < _local10) { if (_local9[_local11]){ ++_local14; if (_local14 == 1){ _local13 = (_local13 + _local8[_local11]); } else { if (_local14 == _local10){ _local13 = (_local13 + (((" " + _local7) + " ") + _local8[_local11])); } else { _local13 = (_local13 + (", " + _local8[_local11])); }; }; }; _local11++; }; _local13 = (_local13 + ((" " + _local6) + _local3)); }; }; } else { if (_local10 == 1){ _local13 = (_local5 + " "); _local11 = 0; while (_local11 < _local10) { if (_local9[_local11]){ _local13 = (_local13 + _local8[_local11]); }; _local11++; }; _local13 = (_local13 + (" " + _local6)); } else { _local13 = (_local5 + " "); _local14 = 0; _local11 = 0; while (_local11 < _local10) { if (_local9[_local11]){ ++_local14; if (_local14 == 1){ _local13 = (_local13 + _local8[_local11]); } else { if (_local14 == _local10){ _local13 = (_local13 + (((" " + _local7) + " ") + _local8[_local11])); } else { _local13 = (_local13 + (", " + _local8[_local11])); }; }; }; _local11++; }; _local13 = (_local13 + (" " + _local6)); }; }; _local13 = (_local13 + NEW_HIGHSCORE_END); if (((!(bSubmitted)) && (!($viewOnly)))){ tfMessage.htmlText = (tfMessage.htmlText + _local13); mcForm.tfEnterName.htmlText = ENTER_NAME; mcForm.visible = true; }; return (""); } private function fillScores(_arg1:String, _arg2:XML):void{ var _local3:*; var _local4:XMLList; var _local5:int; var _local6:XML; var _local7:Object; _local3 = (this[(_arg1 + "Scores")] = []); _local4 = _arg2..score; _local5 = 1; for each (_local6 in _local4) { _local7 = {}; var _temp1 = _local5; _local5 = (_local5 + 1); _local7.rank = _temp1; _local7.name = _local6.@player; _local7.score = _local6.@score; _local3.push(_local7); }; } function numToChar(_arg1:int):String{ switch (_arg1){ case 0: return ("b"); case 1: return ("n"); case 2: return ("a"); case 3: return ("u"); case 4: return ("l"); case 5: return ("v"); case 6: return ("z"); case 7: return ("p"); case 8: return ("c"); case 9: return ("x"); case 10: return ("m"); case 11: return ("k"); case 12: return ("q"); case 13: return ("w"); case 14: return ("o"); case 15: return ("e"); case 16: return ("h"); case 17: return ("i"); case 18: return ("s"); case 19: return ("d"); }; return ("-"); } function isChar(_arg1:String):Boolean{ if ((((((((((((((((((((_arg1 == "0")) || ((_arg1 == "1")))) || ((_arg1 == "2")))) || ((_arg1 == "3")))) || ((_arg1 == "4")))) || ((_arg1 == "5")))) || ((_arg1 == "6")))) || ((_arg1 == "7")))) || ((_arg1 == "8")))) || ((_arg1 == "9")))){ return (false); }; return (true); } public function onTableButtonPressed(_arg1:Event):void{ viewTable(_arg1.target.name.split("_")[1]); } private function _checkTables():Array{ var _local1:Array; var _local2:int; highestTable = SCOPES[0]; _local1 = []; _local2 = 0; while (_local2 < SCOPES.length) { _local1[_local2] = _checkTableForHighscore(SCOPES[_local2]); if (((_local1[_local2]) && (!((SCOPES[_local2] == "personal"))))){ highestTable = SCOPES[_local2]; }; _local2++; }; return (_local1); } private function getMinimumBest():Number{ var _local1:Number; var _local2:String; var _local3:Array; var _local4:Number; var _local5:int; var _local6:Number; _local1 = ScoreMGR.instance.score; _local2 = SCOPES[0]; _local3 = this[(_local2 + "Scores")]; if (_local3.toString() == ""){ return (0); }; _local4 = _local3[0].score; _local5 = 0; while (_local5 < SCOPES.length) { _local2 = SCOPES[_local5]; if (_local2 != "personal"){ _local3 = this[(_local2 + "Scores")]; _local6 = 0; while (_local6 < _local3.length) { _local4 = Math.min(_local3[_local6].score, _local4); _local6++; }; }; _local5++; }; return (_local4); } public function onXMLLoaded(_arg1:Event):void{ var _local2:XML; var _local3:XMLList; var _local4:XMLList; var _local5:XML; var _local6:String; bLoading = false; if (_arg1.type == IOErrorEvent.IO_ERROR){ bSubmitted = false; gotoAndPlay("loading"); tfSystem.htmlText = CONNECTION_TIMEOUT; btn_retry.visible = true; } else { btn_retry.visible = false; tfSystem.htmlText = LOADING_SUCCESS; _local2 = XML(_arg1.target.data); _local3 = _local2..user; if (_local3.@banned == true){ bBanned = true; }; _local4 = _local2..table; for each (_local5 in _local4) { _local6 = _local5.@scope; if (_local6){ fillScores(_local6, _local5); }; }; assembleFeedback(); _checkTables(); mcForm.y = ((tfMessage.y + TextField(tfMessage).textHeight) + 10); viewTable(highestTable); }; } public function set viewOnly(_arg1:Boolean):void{ $viewOnly = _arg1; tfMessage.visible = !(_arg1); } private function replaceScores(_arg1:String):String{ var _local2:String; var _local3:Array; var _local4:Number; var _local5:int; _local2 = ""; _local3 = _arg1.split("~"); _local4 = (ScoreMGR.instance.score) ? ScoreMGR.instance.score : 0; _local5 = 0; while (_local5 < _local3.length) { switch (_local3[_local5]){ case "highscore": _local3[_local5] = formatScore(ScoreMGR.instance.score); break; case "minBest": _local3[_local5] = formatScore((getMinimumBest() - ScoreMGR.instance.score)); break; case "persBest": _local3[_local5] = formatScore((getPersonalBest() - ScoreMGR.instance.score)); break; default: break; }; _local2 = (_local2 + _local3[_local5]); _local5++; }; return (_local2); } public function destroy():void{ } public static function get PERSONAL():Number{ return (4); } public static function get WEEKLY():Number{ return (1); } public static function get DAILY():Number{ return (0); } public static function get ALLTIME():Number{ return (3); } public static function get MONTHLY():Number{ return (2); } } }//package com.bobblebrook.lisa
Section 14
//MessageBox (com.bobblebrook.lisa.MessageBox) package com.bobblebrook.lisa { import flash.events.*; import flash.display.*; import flash.text.*; public class MessageBox extends MovieClip { public var mcText:MovieClip; public var btnClose:SimpleButton; public var btnEnter:SimpleButton; public var tfName:TextField; public var mcShade:MovieClip; public var mcBG:MovieClip; public var tfHeadline:TextField; public var mcHeadline:MovieClip; public var container:Object; public var mcForm:Form; public var tfText:TextField; public function MessageBox(){ super(); addFrameScript(3, frame4, 23, frame24, 24, frame25, 34, frame35, 39, frame40); tfName = mcForm.tfName; tfHeadline = mcHeadline.tfHeadline; tfHeadline.selectable = false; tfText = mcText.tfText; tfText.selectable = false; tfText.autoSize = "left"; visible = false; mcShade.addEventListener(MouseEvent.MOUSE_UP, function (){ }, false, 0, true); mcShade.useHandCursor = false; btnEnter = mcForm.btn_enter; btnEnter.addEventListener(MouseEvent.MOUSE_UP, enterName, false, 0, true); btnClose.addEventListener(MouseEvent.MOUSE_UP, hide, false, 0, true); container = parent; } public function showForm(_arg1:String, _arg2:String=""):void{ if (_arg2 == ""){ mcHeadline.visible = false; tfText.y = (tfText.y - 45); } else { tfHeadline.htmlText = (("<b>" + _arg2) + "</b>"); }; tfText.htmlText = _arg1; mcForm.y = (mcText.y + mcText.height); btnClose.visible = false; mcForm.visible = true; mcBG.height = ((mcForm.y + mcForm.height) + 16); visible = true; gotoAndPlay("lShow"); trace(((((((((((((((((("schow Form, headline: " + _arg2) + "\n text: ") + _arg1) + "\n mcForm: ") + mcForm) + "\n mcForm._visible: ") + mcForm.visible) + "\n mcForm.x: ") + mcForm.x) + "\n mcForm._y: ") + mcForm.y) + "mcForm._alpha: ") + mcForm.alpha) + "\n mcText.y: ") + mcText.y) + " | height: ") + mcText.height)); } function frame4(){ stop(); } function frame25(){ visible = false; } public function hide(_arg1:Event):void{ gotoAndPlay("lHide"); } public function enterName(_arg1:Event):void{ container.submitScore(tfName.text); hide(new Event("")); } function frame24(){ stop(); } function frame40(){ stop(); } function frame35(){ HighscoreTable(parent).onMessageWindowClosed(); } public function show(_arg1:String, _arg2:String="", _arg3:Boolean=true):void{ mcForm.visible = false; btnClose.visible = _arg3; if (_arg2 == ""){ mcHeadline.visible = false; tfText.y = (tfText.y - 45); } else { tfHeadline.htmlText = (("<b>" + _arg2) + "</b>"); }; tfText.htmlText = _arg1; mcBG.height = ((mcText.y + mcText.height) + 16); visible = true; gotoAndPlay("lShow"); } } }//package com.bobblebrook.lisa
Section 15
//ScoreMGR (com.bobblebrook.lisa.ScoreMGR) package com.bobblebrook.lisa { public class ScoreMGR { private var scriptURL:String; private var appName:String; private var currentScore:Number; private static var _instance:ScoreMGR; public function ScoreMGR(){ currentScore = 0; scriptURL = ""; } public function resetScore(){ currentScore = 0; } public function get score():Number{ return (currentScore); } public function set score(_arg1:Number){ currentScore = _arg1; } public function set gameName(_arg1:String){ appName = _arg1; trace(("gameName: " + _arg1)); } public function get gameName():String{ return (appName); } public function set highscoreURL(_arg1:String){ scriptURL = _arg1; } public function get highscoreURL():String{ return (scriptURL); } public static function get instance():ScoreMGR{ if (_instance == null){ _instance = new (ScoreMGR); }; return (_instance); } } }//package com.bobblebrook.lisa
Section 16
//SoundMGR (com.bobblebrook.lisa.SoundMGR) package com.bobblebrook.lisa { import flash.events.*; import flash.media.*; import flash.display.*; import flash.utils.*; public class SoundMGR extends MovieClip { protected var musicChannels:Array; protected var _soundsMuted:Boolean; protected var _musicMuted:Boolean; protected var soundChannels:Array; protected static const INF:Number = 1000000000; public static const NUM_MUSIC_CHANNELS:int = 4; public static const NUM_SOUND_CHANNELS:int = 28; protected static var _instance:SoundMGR; public function SoundMGR(){ addFrameScript(0, frame1, 1, frame2, 2, frame3); trace("SoundMGR: constructor"); soundChannels = new Array(); musicChannels = new Array(); _instance = this; _soundsMuted = (_musicMuted = false); } public function playSound(_arg1:String, _arg2:Boolean=false, _arg3:String=""):SoundChannel{ var _local4:Sound; var _local5:SoundChannel; var _local6:SoundTransform; if (soundChannels.length == NUM_SOUND_CHANNELS){ return (new SoundChannel()); }; _local4 = new (getDefinitionByName(_arg1)); _local5 = null; if (!_arg2){ _local5 = _local4.play(); } else { _local5 = _local4.play(0, INF); }; if (_soundsMuted){ _local6 = _local5.soundTransform; _local6.volume = 0; _local5.soundTransform = _local6; }; _local5.addEventListener(Event.SOUND_COMPLETE, _onSoundComplete); soundChannels.push(createSoundObj(_local4, _local5, _arg3, null)); return (_local5); } public function stopAll(){ stopMusic(); stopSounds(); } public function stopMusic(){ var _local1:int; _local1 = 0; while (_local1 < musicChannels.length) { musicChannels[_local1].channel.stop(); _local1++; }; musicChannels = new Array(); } public function mute(_arg1:Boolean){ muteMusic(_arg1); muteSounds(_arg1); } function frame3(){ trace("soundmgr: wrong frame reached"); } public function playMusic(_arg1:String, _arg2:String="", _arg3:Function=null):SoundChannel{ var _local4:Sound; var _local5:SoundChannel; var _local6:SoundTransform; if (musicChannels.length == NUM_MUSIC_CHANNELS){ return (new SoundChannel()); }; _local4 = new (getDefinitionByName(_arg1)); _local5 = null; if (_arg3 != null){ _local5 = _local4.play(); } else { _local5 = _local4.play(0, INF); }; if (_musicMuted){ _local6 = _local5.soundTransform; _local6.volume = 0; _local5.soundTransform = _local6; }; _local5.addEventListener(Event.SOUND_COMPLETE, _onSoundComplete); musicChannels.push(createSoundObj(_local4, _local5, _arg2, _arg3)); return (_local5); } function frame1(){ stop(); } public function process(_arg1:Event){ } public function getChannels(_arg1:Array):Array{ var _local2:Array; var _local3:int; var _local4:SoundChannel; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.length) { _local4 = getChannel(_arg1[_local3]); if (_local4 != null){ _local2.push(_local4); }; _local3++; }; return (_local2); } protected function createSoundObj(_arg1:Sound, _arg2:SoundChannel, _arg3:String="", _arg4:Function=null):Object{ var _local5:Object; _local5 = new Object(); _local5.sound = _arg1; _local5.prevPos = Number(0); _local5.channelName = _arg3; _local5.channel = _arg2; _local5.callback = _arg4; return (_local5); } public function soundsMuted():Boolean{ return (_soundsMuted); } protected function _onSoundComplete(_arg1:Event){ var _local2:Object; var _local3:int; _local3 = 0; while (_local3 < soundChannels.length) { _local2 = soundChannels[_local3]; if (_local2.channel == _arg1.target){ soundChannels.splice(_local3, 1); _local3--; }; _local3++; }; _local3 = 0; while (_local3 < musicChannels.length) { _local2 = musicChannels[_local3]; if (_local2.channel == _arg1.target){ if (_local2.callback != null){ _local2.callback(getQualifiedClassName(_local2.sound)); }; musicChannels.splice(_local3, 1); _local3--; }; _local3++; }; } public function musicMuted():Boolean{ return (_musicMuted); } public function muteMusic(_arg1:Boolean){ var _local2:int; var _local3:SoundTransform; _musicMuted = _arg1; _local2 = 0; while (_local2 < musicChannels.length) { _local3 = musicChannels[_local2].channel.soundTransform; if (_arg1){ _local3.volume = 0; } else { _local3.volume = 1; }; musicChannels[_local2].channel.soundTransform = _local3; _local2++; }; } public function muteSounds(_arg1:Boolean){ var _local2:int; var _local3:SoundTransform; _soundsMuted = _arg1; _local2 = 0; while (_local2 < soundChannels.length) { _local3 = soundChannels[_local2].channel.soundTransform; if (_arg1){ _local3.volume = 0; } else { _local3.volume = 1; }; soundChannels[_local2].channel.soundTransform = _local3; _local2++; }; } public function getChannel(_arg1:String):SoundChannel{ var _local2:int; if (_arg1 == ""){ return (null); }; _local2 = 0; while (_local2 < musicChannels.length) { if (musicChannels[_local2].channelName == _arg1){ return (musicChannels[_local2].channel); }; _local2++; }; _local2 = 0; while (_local2 < soundChannels.length) { if (soundChannels[_local2].channelName == _arg1){ return (soundChannels[_local2].channel); }; _local2++; }; return (null); } public function stopSounds(){ var _local1:int; _local1 = 0; while (_local1 < soundChannels.length) { soundChannels[_local1].channel.stop(); _local1++; }; soundChannels = new Array(); } function frame2(){ gotoAndStop(1); } public static function get instance():SoundMGR{ return (_instance); } } }//package com.bobblebrook.lisa
Section 17
//XMovieClip (com.bobblebrook.lisa.XMovieClip) package com.bobblebrook.lisa { import flash.events.*; import flash.display.*; public class XMovieClip extends MovieClip { public function XMovieClip(){ this.onFirstFrame(); addEventListener(Event.ENTER_FRAME, process); } public function onFirstFrame():void{ } public function process(_arg1:Event):void{ } } }//package com.bobblebrook.lisa
Section 18
//Game (com.bobblebrook.rotator.Game) package com.bobblebrook.rotator { import com.bobblebrook.lisa.math.*; import com.bobblebrook.lisa.server.*; import flash.events.*; import com.bobblebrook.lisa.*; import flash.media.*; import flash.display.*; import com.bobblebrook.lisa.l3d.*; import com.bobblebrook.lisa.utils.*; import com.bobblebrook.*; import flash.filters.*; import flash.geom.*; public class Game extends MovieClip { const TRANSITION:int = 1; const MENU:int = 2; const GAME:int = 0; var timerSpeed:Number;// = 0.5 var feedbackScoreToAdd:Number; var levelTimer:Number; public var aImages:Array; var timerPulseScale:Number;// = 2 var timerMaxY:Number;// = 60 public var scrH:int;// = 400 var prevMouseY:Number;// = 0 var prevMouseX:Number;// = 0 var timeLeft:Number; public var scrW:int;// = 550 var timerInitScale:Number;// = 1 var levelPar:Number;// = 750 var feedbackWaitTime:Number;// = 15 var feedbackTimeInc:Number; public var currentImageIndex:int;// = 0 var state:int; public var cMouseX:Number; public var cMouseY:Number; var score:Number; var transitionLength:int;// = 40 var timerEndGrow:Number;// = 150 var fxGlowFreq:Number;// = 5 var feedbackInitTime:Number; var timerMaxScale:Number;// = 2 var feedbackScoreInc:Number; public var particleParent:Node3D; var cLevel:Number; var transitionCounter:int; public var howTo:HowTo; var correctRotY:Number; var correctRotX:Number; var timerInitY:Number;// = 38 var cImgNum:int;// = 0 var scoreFeedbackX:Number;// = 400 var scoreFeedbackY:Number;// = 215 public var aParticles:Array; public var menuMY:Number; var scoreFeedbackScale:Number;// = 3 var feedbackTimeToAdd:Number; public var canvas:BitmapData; var feedbackInitScore:Number; public var menuMX:Number; public var camParent:Node3D; var finishLength:Number;// = 35 public var mcHUD:MovieClip; var timerFeedbackScale:Number;// = 3 var currentImg:BitmapData; public var world:World3D; public var mcGameOver:MovieClip; var scoreInitScale:Number;// = 1 var timerFeedbackY:Number;// = 160 public var numParticles:int;// = 0x0100 public var cam:Camera3D; var timerStartGrow:Number;// = 600 var feedbackArray:Array; var scoreInitY:Number;// = 39 var scoreInitX:Number;// = 520 var finishCounter:Number; public static const EXIT_GAME:String = "ExitGame"; public static const GAMEOVER:String = "GameOver"; public function Game(){ var _local1:int; var _local2:GlowFilter; var _local3:Array; var _local4:ImgParticle; scrW = 550; scrH = 400; numParticles = 0x0100; currentImageIndex = 0; cImgNum = 0; aImages = [new img2(16, 16), new img3(16, 16), new img4(16, 16), new img5(16, 16), new img6(16, 16), new img7(16, 16), new img8(16, 16), new img9(16, 16), new img10(16, 16), new img11(16, 16), new img12(16, 16), new img13(16, 16), new img14(16, 16), new img15(16, 16), new img16(16, 16), new img17(16, 16), new img18(16, 16), new img19(16, 16), new img20(16, 16), new img21(16, 16), new img22(16, 16), new img23(16, 16), new img24(16, 16), new img25(16, 16), new img26(16, 16), new img27(16, 16), new img28(16, 16), new img29(16, 16), new img30(16, 16), new img31(16, 16), new img32(16, 16), new img33(16, 16), new img34(16, 16), new img35(16, 16), new img36(16, 16), new img37(16, 16), new img38(16, 16), new img39(16, 16), new img40(16, 16), new img41(16, 16), new img42(16, 16), new img43(16, 16), new img44(16, 16), new img45(16, 16), new img46(16, 16), new img47(16, 16), new img48(16, 16), new img49(16, 16), new img50(16, 16), new img51(16, 16), new img52(16, 16), new img53(16, 16), new img54(16, 16), new img55(16, 16), new img56(16, 16), new img57(16, 16), new img58(16, 16), new img59(16, 16), new img60(16, 16), new img61(16, 16), new img62(16, 16), new img63(16, 16), new img64(16, 16), new img65(16, 16), new img66(16, 16), new img67(16, 16), new img68(16, 16), new img69(16, 16), new img70(16, 16), new img71(16, 16), new img72(16, 16), new img73(16, 16), new img74(16, 16), new img75(16, 16), new img76(16, 16), new img77(16, 16), new img78(16, 16), new img79(16, 16), new img80(16, 16), new img81(16, 16), new img82(16, 16), new img83(16, 16), new img84(16, 16), new img85(16, 16), new img86(16, 16), new img87(16, 16), new img88(16, 16), new img89(16, 16), new img90(16, 16)]; fxGlowFreq = 5; prevMouseX = 0; prevMouseY = 0; finishLength = 35; transitionLength = 40; levelPar = (30 * 25); timerSpeed = 0.5; timerPulseScale = 2; timerInitScale = 1; timerMaxScale = 2; timerStartGrow = 600; timerEndGrow = 150; timerInitY = 38; timerMaxY = 60; timerFeedbackY = 160; timerFeedbackScale = 3; scoreInitX = 520; scoreInitY = 39; scoreInitScale = 1; scoreFeedbackX = 400; scoreFeedbackY = 215; scoreFeedbackScale = 3; feedbackWaitTime = 15; feedbackArray = ["not bad!", "pretty good!", "good!", "nice!", "well done!", "great!", "superb!", "excellent", "amazing!", "beautiful!"]; super(); mcHUD.visible = false; canvas = new BitmapData(scrW, scrH); finishCounter = 0; world = new World3D(); cam = new Camera3D(); cam.setPosition(new Vector3D(0, 0, -100, 1)); cam.distScr = 100; camParent = new Node3D(); particleParent = new Node3D(); aParticles = new Array(); world.addChildNode(camParent); world.addChildNode(particleParent); world.addChildNode(cam); camParent.addChildNode(cam); world.activeCamera = cam; _local1 = 0; while (_local1 < numParticles) { _local4 = new ImgParticle(); aParticles.push(_local4); _local4.randomOutroBurst = new Vector3D(0, 0, 0, 0); particleParent.addChildNode(_local4); world.addChild(_local4); _local1++; }; this.addEventListener(Event.ENTER_FRAME, process, false, 0, true); beginMenuState(); cMouseX = 0; cMouseY = 0; mcHUD.btnSound.visible = false; mcHUD.btnExit.visible = false; howTo = new HowTo(); _local2 = new GlowFilter(16498069, 100, 10, 10, 3.73, 3); _local3 = []; _local3.push(_local2); howTo.filters = _local3; addChild(howTo); howTo.visible = false; } protected function adjustWind(_arg1:Number){ var _local2:SoundChannel; var _local3:SoundTransform; var _local4:Number; var _local5:Number; if (SoundMGR.instance.soundsMuted()){ return; }; _local2 = SoundMGR.instance.getChannel("wind"); if (_local2 == null){ return; }; _local3 = _local2.soundTransform; _local4 = (_arg1 / 40); if (_local4 > 1){ _local4 = 1; }; _local4 = Math.sqrt(_local4); _local3.volume = _local4; _local5 = (((cMouseX / scrW) * 2) - 1); if (_local5 < -0.7){ _local5 = -0.7; }; if (_local5 > 0.7){ _local5 = 0.7; }; _local3.pan = _local5; _local2.soundTransform = _local3; } private function assist(){ var _local1:Number; var _local2:Number; _local1 = (((correctRotX / (Math.PI * 2)) + 0.5) * 550); _local2 = (((correctRotY / (Math.PI * 2)) + 0.5) * 400); mcHUD.mcTutorialPointer.x = _local1; mcHUD.mcTutorialPointer.y = _local2; mcHUD.mcTutorialHelpText.x = _local1; mcHUD.mcTutorialHelpText.y = _local2; if (cLevel == 1){ mcHUD.mcTutorialPointer.visible = true; mcHUD.mcTutorialHelpText.visible = true; mcHUD.mcTutorialHelpText.gotoAndStop(1); } else { if (cLevel == 2){ mcHUD.mcTutorialPointer.visible = true; mcHUD.mcTutorialHelpText.visible = true; mcHUD.mcTutorialHelpText.gotoAndStop(2); } else { if (cLevel == 3){ mcHUD.mcTutorialPointer.visible = false; mcHUD.mcTutorialHelpText.visible = true; mcHUD.mcTutorialHelpText.gotoAndStop(3); mcHUD.mcTutorialHelpText.x = 316; mcHUD.mcTutorialHelpText.y = 305; } else { mcHUD.mcTutorialPointer.visible = false; mcHUD.mcTutorialHelpText.visible = false; }; }; }; } public function process(_arg1:Event){ var mX:Number; var mY:Number; var timerTargetY:Number; var timerTargetScale:Number; var endGameFactor:Number; var scoreTargetX:Number; var scoreTargetY:Number; var scoreTargetScale:Number; var blurFilter:BlurFilter; var tState:Number; var tState2:Number; var oldMouseX:Number; var oldMouseY:Number; var mDist:Number; var i:int; var cPart:ImgParticle; var cX:Number; var cY:Number; var cZ:Number; var freq:Number; var amp:Number; var oldTimeLeft:Number; var tick:SoundChannel; var tTransform:SoundTransform; var strength:Number; var index:int; var y:Number; var x:Number; var cStrength:Number; var evt = _arg1; world.process(); camParent.matrix.setToIdentity(); mX = ((((cMouseX / 550) - 0.5) * 2) * Math.PI); mY = ((((cMouseY / 400) - 0.5) * 2) * Math.PI); endGameFactor = (1 - ((timeLeft - timerEndGrow) / (timerStartGrow - timerEndGrow))); if (endGameFactor < 0){ endGameFactor = 0; }; if (endGameFactor > 1){ endGameFactor = 1; }; timerTargetScale = (timerInitScale + (endGameFactor * (timerMaxScale - timerInitScale))); timerTargetY = (timerInitY + (endGameFactor * (timerMaxY - timerInitY))); scoreTargetX = scoreInitX; scoreTargetY = scoreInitY; scoreTargetScale = scoreInitScale; switch (state){ case MENU: adjustWind(0); menuMX = (menuMX + 1); menuMY = (menuMY + 0.25); cMouseX = (((stage.mouseX - cMouseX) / 20) + cMouseX); cMouseY = (((stage.mouseY - cMouseY) / 20) + cMouseY); mX = (((((cMouseX + menuMX) / 550) - 0.5) * 2) * Math.PI); mY = (((((cMouseY + menuMY) / 400) - 0.5) * 2) * Math.PI); transitionCounter++; if (transitionCounter > transitionLength){ transitionCounter = transitionLength; }; tState = (transitionCounter / transitionLength); tState = (Math.pow(Math.abs(((tState - 0.5) * 2)), 0.6) * ((tState)>0.5) ? 1 : -1); tState = ((tState * 0.5) + 0.5); tState2 = (transitionCounter / transitionLength); tState2 = ((tState2)<=0.5) ? tState2 : (0.5 - (tState2 - 0.5)); tState2 = (tState2 * 2); tState2 = Math.pow(tState2, 5); i = 0; while (i < aParticles.length) { cPart = aParticles[i]; cPart.setScale((((cPart.targetScale - cPart.initScale) * tState) + cPart.initScale)); cPart.interpolateColor(tState); cX = (((cPart.targetPos.x - cPart.initPos.x) * tState) + cPart.initPos.x); cY = (((cPart.targetPos.y - cPart.initPos.y) * tState) + cPart.initPos.y); cZ = (((cPart.targetPos.z - cPart.initPos.z) * tState) + cPart.initPos.z); cX = (cX + (cPart.randomOutroBurst.x * tState2)); cY = (cY + (cPart.randomOutroBurst.y * tState2)); cZ = (cZ + (cPart.randomOutroBurst.z * tState2)); freq = 200; amp = 200; cX = (cX + ((Math.sin((cX / freq)) * tState2) * amp)); cY = (cY + ((Math.sin((cY / freq)) * tState2) * amp)); cZ = (cZ + ((Math.sin((cZ / freq)) * tState2) * amp)); cPart.setPosition(new Vector3D(cX, cY, cZ, 1)); cPart.drawRect(); i = (i + 1); }; break; case TRANSITION: mcHUD.mcTime.tfTimePlus.text = ""; mcHUD.mcScore.tfScorePlus.text = ""; transitionCounter++; if (transitionCounter == transitionLength){ state = GAME; }; oldMouseX = cMouseX; oldMouseY = cMouseY; cMouseX = (((stage.mouseX - cMouseX) / 14) + cMouseX); cMouseY = (((stage.mouseY - cMouseY) / 14) + cMouseY); mDist = Math.sqrt((Math.pow((cMouseX - oldMouseX), 2) + Math.pow((cMouseY - oldMouseY), 2))); adjustWind(mDist); tState = (transitionCounter / transitionLength); tState = (Math.pow(Math.abs(((tState - 0.5) * 2)), 0.6) * ((tState)>0.5) ? 1 : -1); tState = ((tState * 0.5) + 0.5); tState2 = (transitionCounter / transitionLength); tState2 = ((tState2)<=0.5) ? tState2 : (0.5 - (tState2 - 0.5)); tState2 = (tState2 * 2); tState2 = Math.pow(tState2, 5); i = 0; while (i < aParticles.length) { cPart = aParticles[i]; cPart.setScale((((cPart.targetScale - cPart.initScale) * tState) + cPart.initScale)); cPart.interpolateColor(tState); cX = (((cPart.targetPos.x - cPart.initPos.x) * tState) + cPart.initPos.x); cY = (((cPart.targetPos.y - cPart.initPos.y) * tState) + cPart.initPos.y); cZ = (((cPart.targetPos.z - cPart.initPos.z) * tState) + cPart.initPos.z); cX = (cX + (cPart.randomOutroBurst.x * tState2)); cY = (cY + (cPart.randomOutroBurst.y * tState2)); cZ = (cZ + (cPart.randomOutroBurst.z * tState2)); freq = 200; amp = 200; cX = (cX + ((Math.sin((cX / freq)) * tState2) * amp)); cY = (cY + ((Math.sin((cY / freq)) * tState2) * amp)); cZ = (cZ + ((Math.sin((cZ / freq)) * tState2) * amp)); cPart.setPosition(new Vector3D(cX, cY, cZ, 1)); cPart.drawRect(); i = (i + 1); }; break; case GAME: if (finishCounter == 0){ levelTimer++; oldTimeLeft = timeLeft; timeLeft--; if ((oldTimeLeft % 30) < (timeLeft % 30)){ mcHUD.mcTime.scaleX = (mcHUD.mcTime.scaleY = (mcHUD.mcTime.scaleX * timerPulseScale)); if (endGameFactor > 0){ tick = SoundMGR.instance.playSound("tick"); tTransform = tick.soundTransform; tTransform.volume = Math.sqrt(endGameFactor); if (!SoundMGR.instance.soundsMuted()){ tick.soundTransform = tTransform; }; }; }; updateDisplay(); if (timeLeft == 0){ onGameOver(); }; oldMouseX = cMouseX; oldMouseY = cMouseY; cMouseX = (((stage.mouseX - cMouseX) / 4) + cMouseX); cMouseY = (((stage.mouseY - cMouseY) / 4) + cMouseY); mDist = Math.sqrt((Math.pow((cMouseX - oldMouseX), 2) + Math.pow((cMouseY - oldMouseY), 2))); adjustWind(mDist); if ((((Math.abs((mX - correctRotX)) < 0.025)) && ((Math.abs((mY - correctRotY)) < 0.025)))){ finishCounter = 1; onLevelComplete(); }; } else { if (finishCounter == feedbackWaitTime){ mcHUD.mcFeedbackContainer.play(); }; if (finishCounter > feedbackWaitTime){ feedbackInitTime = (feedbackInitTime + feedbackTimeInc); feedbackTimeToAdd = (feedbackTimeToAdd - feedbackTimeInc); feedbackInitScore = (feedbackInitScore + feedbackScoreInc); feedbackScoreToAdd = (feedbackScoreToAdd - feedbackScoreInc); if (feedbackInitTime > timeLeft){ feedbackInitTime = timeLeft; }; if (feedbackTimeToAdd < 0){ feedbackTimeToAdd = 0; }; if (feedbackInitScore > score){ feedbackInitScore = score; }; if (feedbackScoreToAdd < 0){ feedbackScoreToAdd = 0; }; mcHUD.mcTime.tfTimePlus.text = ("+" + StringUtils.convertFramesToMSM(Math.floor(feedbackTimeToAdd))); mcHUD.mcScore.tfScorePlus.text = ("+" + Math.floor(feedbackScoreToAdd)); mcHUD.mcTime.tfTime.text = StringUtils.convertFramesToMSM(Math.ceil(feedbackInitTime)); mcHUD.mcScore.tfScore.text = ("Score: " + Math.ceil(feedbackInitScore)); mcHUD.mcTime.tfTimePlus.text = ""; mcHUD.mcScore.tfScorePlus.text = ""; timerTargetY = timerFeedbackY; timerTargetScale = timerFeedbackScale; scoreTargetX = scoreFeedbackX; scoreTargetY = scoreFeedbackY; scoreTargetScale = scoreFeedbackScale; }; finishCounter++; mX = correctRotX; mY = correctRotY; oldMouseX = cMouseX; oldMouseY = cMouseY; cMouseX = (((mX / (Math.PI * 2)) + 0.5) * 550); cMouseY = (((mY / (Math.PI * 2)) + 0.5) * 400); mDist = Math.sqrt((Math.pow((cMouseX - oldMouseX), 2) + Math.pow((cMouseY - oldMouseY), 2))); adjustWind(mDist); strength = (finishCounter / finishLength); strength = ((strength)<=0.5) ? strength : (0.5 - (strength - 0.5)); strength = (strength * 2); strength = Math.pow(strength, 1.1); index = 0; y = 0; while (y < 16) { x = 0; while (x < 16) { cPart = aParticles[index]; cStrength = Math.pow(((Math.sin(((finishCounter / 1.8) + (y / fxGlowFreq))) * 0.5) + 0.5), 1.5); cPart.glow(((cStrength * strength) * 0xFF)); index = (index + 1); x = (x + 1); }; y = (y + 1); }; if (finishCounter == finishLength){ finishCounter = 0; startTransition(); }; }; break; }; camParent.rotateXWS(mY); camParent.rotateYWS(mX); if (state != MENU){ mcHUD.mcTime.scaleX = (mcHUD.mcTime.scaleY = (mcHUD.mcTime.scaleX + ((timerTargetScale - mcHUD.mcTime.scaleX) * timerSpeed))); mcHUD.mcTime.y = (mcHUD.mcTime.y + ((timerTargetY - mcHUD.mcTime.y) * timerSpeed)); mcHUD.mcScore.scaleX = (mcHUD.mcScore.scaleY = (mcHUD.mcScore.scaleX + ((scoreTargetScale - mcHUD.mcScore.scaleX) * timerSpeed))); mcHUD.mcScore.x = (mcHUD.mcScore.x + ((scoreTargetX - mcHUD.mcScore.x) * timerSpeed)); mcHUD.mcScore.y = (mcHUD.mcScore.y + ((scoreTargetY - mcHUD.mcScore.y) * timerSpeed)); }; if (state == GAME){ blurFilter = new BlurFilter(8, 8, BitmapFilterQuality.LOW); } else { blurFilter = new BlurFilter(8, 8, BitmapFilterQuality.LOW); }; canvas.applyFilter(canvas, new Rectangle(0, 0, scrW, scrH), new Point(0, 0), blurFilter); if (state == GAME){ canvas.draw(parent["mcBG"]); } else { if (state == TRANSITION){ canvas.draw(parent["mcBG2"]); } else { canvas.draw(parent["mcMenuBG"]); }; }; canvas.draw(world); var _local3 = this.graphics; with (_local3) { clear(); beginBitmapFill(canvas); drawRect(0, 0, scrW, scrH); endFill(); }; } public function initImg(_arg1:BitmapData){ var _local2:int; var _local3:Number; var _local4:int; var _local5:int; var _local6:ImgParticle; var _local7:uint; var _local8:Number; shuffleParticleRotation(); _local2 = 0; _local3 = ImgParticle.pGridSize; _local4 = 0; while (_local4 < _arg1.height) { _local5 = 0; while (_local5 < _arg1.width) { _local6 = aParticles[_local2]; aParticles[_local2].initPos = _local6.getPosition(); _local6.setPosition(new Vector3D(((_local5 - (_arg1.width / 2)) * _local3), ((_local4 - (_arg1.height / 2)) * _local3), (((Math.random() - 0.5) * _arg1.width) * _local3), 1)); _local6.graphics.clear(); _local6.initScale = _local6.getScale(); adjustForPerspective(_local6); _local6.targetScale = _local6.getScale(); _local6.setScale(_local6.initScale); _local6.targetPos = _local6.getPosition(); particleParent.matrix.postMultiplyVectorAndStoreIn(_local6.targetPos, _local6.targetPos); _local6.setPosition(_local6.initPos); _local6.initColor = (_local6.currentColor = _local6.targetColor); _local6.initAlpha = (_local6.currentAlpha = _local6.targetAlpha); _local7 = _arg1.getPixel32(_local5, _local4); _local6.targetColor = _local7; _local6.targetAlpha = ((_local7 & 4278190080) >>> 24); _local8 = 100; _local6.randomOutroBurst.x = ((Math.random() - 0.5) * _local8); _local6.randomOutroBurst.y = ((Math.random() - 0.5) * _local8); _local6.randomOutroBurst.z = ((Math.random() - 0.5) * _local8); _local2++; _local5++; }; _local4++; }; particleParent.matrix.setToIdentity(); } protected function _shuffleArray(_arg1:Object, _arg2:Object):Number{ return ((Math.floor((Math.random() * 3)) - 1)); } public function initRandomImg(){ var cImg:BitmapData; cImg = currentImg; cImg = aImages[currentImageIndex]; currentImageIndex++; if (currentImageIndex == aImages.length){ currentImageIndex = 0; }; currentImg = cImg; initImg(cImg); mcHUD.mcThumb.scaleX = (mcHUD.mcThumb.scaleY = 2); cImgNum++; mcHUD.mcImgNumber.tfImgNumber.text = ("image " + cImgNum); var _local2 = mcHUD.mcThumb.graphics; with (_local2) { clear(); beginBitmapFill(currentImg); drawRect(0, 0, 16, 16); endFill(); }; assist(); } public function onGameOver(){ howTo.visible = false; Tracker.instance.send("GameOver", [String(cImgNum)]); mcHUD.btnSound.visible = false; mcHUD.btnExit.visible = false; beginMenuState(); ScoreMGR.instance.score = score; mcGameOver.gotoAndPlay("init"); SoundMGR.instance.stopAll(); SoundMGR.instance.playSound("gameOver"); mcGameOver.mcScore.tfScore.text = ("your score: " + score); mcGameOver.mcScore.tfImages.text = ("images completed: " + cImgNum); } public function onButtonPressed(_arg1:Event):void{ switch (_arg1.target.name){ case "btnSound": SoundMGR.instance.mute(!(SoundMGR.instance.soundsMuted())); Tracker.instance.send("Sounds", [(SoundMGR.instance.soundsMuted()) ? "off" : "on"]); setSoundBtn(); break; case "btnExit": howTo.visible = false; mcHUD.btnSound.visible = false; mcHUD.btnExit.visible = false; SoundMGR.instance.stopAll(); dispatchEvent(new Event(EXIT_GAME)); beginMenuState(); break; default: break; }; } private function adjustForPerspective(_arg1:ImgParticle){ var _local2:Vector3D; var _local3:Number; var _local4:Vector3D; var _local5:Vector3D; var _local6:Number; _local2 = cam.getPosition(); _local3 = cam.distScr; _local4 = _arg1.getPosition(); _local5 = _arg1.getPosition(); _local5.subtract(_local2); _local6 = (_local3 / _local5.z); _local4.x = (_local4.x / _local6); _local4.y = (_local4.y / _local6); _arg1.setPosition(_local4); _arg1.setScale((1 / _local6)); } private function shuffleParticleRotation(){ var _local1:Number; var _local2:Number; particleParent.matrix.setToIdentity(); _local1 = ((Math.random() - 0.5) * Math.PI); _local2 = ((Math.random() - 0.5) * Math.PI); if (cLevel < 3){ _local2 = (((Math.random() - 0.5) * Math.PI) / 2); }; particleParent.rotateXWS(_local2); particleParent.rotateYWS(_local1); correctRotX = _local1; correctRotY = _local2; } public function onLevelComplete(){ var _local1:Number; var _local2:Number; SoundMGR.instance.playSound("LevelComplete"); _local1 = (cLevel / 2); if (_local1 < 1){ _local1 = 1; }; _local1 = (1 / _local1); _local1 = Math.ceil((40 * Math.pow(_local1, 1.3))); if (_local1 < 1){ _local1 = 1; }; _local1 = (_local1 * 15); feedbackInitTime = timeLeft; feedbackTimeToAdd = _local1; feedbackTimeInc = (feedbackTimeToAdd / (finishLength - (10 + feedbackWaitTime))); feedbackInitScore = score; feedbackScoreToAdd = calcLevelScore(); feedbackScoreInc = (feedbackScoreToAdd / (finishLength - (10 + feedbackWaitTime))); timeLeft = (timeLeft + _local1); score = (score + calcLevelScore()); cLevel++; mcHUD.mcTime.tfTimePlus.text = ("+" + Math.floor(feedbackTimeToAdd)); mcHUD.mcScore.tfScorePlus.text = ("+" + Math.floor(feedbackScoreToAdd)); mcHUD.mcTime.tfTimePlus.text = ""; mcHUD.mcScore.tfScorePlus.text = ""; mcHUD.mcTutorialPointer.visible = false; mcHUD.mcTutorialHelpText.visible = false; mcHUD.mcFeedbackContainer.visible = true; _local2 = (levelTimer / levelPar); if (_local2 > 1){ _local2 = 1; }; _local2 = (1 - _local2); _local2 = Math.pow(_local2, 4); _local2 = Math.floor((_local2 * feedbackArray.length)); mcHUD.mcFeedbackContainer.mcFeedback.tfFeedback.text = feedbackArray[_local2]; levelTimer = 0; } public function onGameOverComplete(){ dispatchEvent(new Event(GAMEOVER)); } protected function setSoundBtn():void{ if (SoundMGR.instance == null){ mcHUD.btnSound.label = "sounds on"; } else { if (SoundMGR.instance.soundsMuted()){ mcHUD.btnSound.label = "sounds off"; } else { mcHUD.btnSound.label = "sounds on"; }; }; } public function startTransition(){ initRandomImg(); transitionCounter = 0; state = TRANSITION; } public function calcLevelScore():Number{ var _local1:Number; _local1 = (levelTimer / levelPar); if (_local1 > 1){ _local1 = 1; }; _local1 = (1 - _local1); _local1 = Math.pow(_local1, 3); _local1 = (1000 + (Math.floor((900 * _local1)) * 10)); return (_local1); } public function newGame(){ var _local1:int; var _local2:ImgParticle; howTo.visible = true; howTo.hide(); cImgNum = 0; currentImageIndex = 0; aImages.sort(_shuffleArray); mcHUD.visible = true; cMouseX = stage.mouseX; cMouseY = stage.mouseY; _local1 = 0; while (_local1 < aParticles.length) { _local2 = aParticles[_local1]; _local1++; }; cLevel = 1; initRandomImg(); state = TRANSITION; score = 0; timeLeft = Math.round(((1 * 30) * 30)); updateDisplay(); levelTimer = 0; transitionCounter = 0; mcHUD.mcTime.tfTimePlus.text = ""; mcHUD.mcScore.tfScorePlus.text = ""; SoundMGR.instance.stopAll(); SoundMGR.instance.playSound("Wind", true, "wind"); SoundMGR.instance.playMusic("Music"); mcHUD.btnSound.visible = true; mcHUD.btnExit.visible = true; mcHUD.btnSound.addEventListener(DefaultButton.BUTTON_PRESSED, onButtonPressed, false, 0, true); mcHUD.btnExit.addEventListener(DefaultButton.BUTTON_PRESSED, onButtonPressed, false, 0, true); setSoundBtn(); mcHUD.btnExit.label = "exit game"; finishCounter = 0; } public function updateDisplay(){ mcHUD.mcTime.tfTime.text = StringUtils.convertFramesToMSM(timeLeft); mcHUD.mcScore.tfScore.text = ("score: " + score); mcHUD.mcImgNumber.tfImgNumber.text = ("image " + cImgNum); } public function beginMenuState(){ var _local1:int; var _local2:ImgParticle; var _local3:Number; mcHUD.visible = false; _local1 = 0; while (_local1 < aParticles.length) { _local2 = aParticles[_local1]; _local2.initPos = _local2.getPosition(); _local2.initScale = _local2.getScale(); _local2.targetScale = 1; _local2.targetPos = new Vector3D((Math.random() - 0.5), (Math.random() - 0.5), (Math.random() - 0.5), 1); _local2.targetPos.normalize().multiply(((Math.random() * 250) + 50)); if ((_local1 % 2) == 0){ _local2.targetColor = 4288388059; } else { _local2.targetColor = 4285497796; }; _local2.initColor = _local2.currentColor; _local3 = 100; _local2.randomOutroBurst.x = ((Math.random() - 0.5) * _local3); _local2.randomOutroBurst.y = ((Math.random() - 0.5) * _local3); _local2.randomOutroBurst.z = ((Math.random() - 0.5) * _local3); _local2.drawRect(); _local1++; }; transitionCounter = 0; state = MENU; menuMX = (menuMY = 0); } } }//package com.bobblebrook.rotator
Section 19
//HowTo (com.bobblebrook.rotator.HowTo) package com.bobblebrook.rotator { import flash.events.*; import flash.display.*; import com.bobblebrook.*; public class HowTo extends MovieClip { public var mcHowTo:MovieClip; private var state:String; public var btnShow:DefaultButton; public function HowTo(_arg1:Boolean=true){ addFrameScript(18, frame19, 34, frame35); super(); x = 24; y = 365; btnShow = mcHowTo["btnShow"]; btnShow.label = "how to play"; btnShow.active = _arg1; if (_arg1){ btnShow.addEventListener(MouseEvent.MOUSE_UP, toggle, false, 0, true); }; } public function toggle(_arg1:Event):void{ if (state == "show"){ hide(); } else { show(); }; } function frame19(){ stop(); } public function hide():void{ gotoAndPlay("hide"); state = "hide"; } function frame35(){ stop(); } public function show():void{ gotoAndPlay("show"); state = "show"; } } }//package com.bobblebrook.rotator
Section 20
//ImgParticle (com.bobblebrook.rotator.ImgParticle) package com.bobblebrook.rotator { import com.bobblebrook.lisa.math.*; import flash.display.*; import com.bobblebrook.lisa.l3d.*; import flash.geom.*; public class ImgParticle extends Billboard { var targetPos:Vector3D; var initScale:Number; var initPos:Vector3D; var initAlpha:uint; var initColor:uint; var targetColor:uint; var currentColor:uint; var targetScale:Number; var currentAlpha:uint; var targetAlpha:uint; var randomOutroBurst:Vector3D; static const pSize:Number = 10; static const pSizeH:Number = 5; static const pGridSize:Number = 12; public function ImgParticle(){ currentColor = (targetColor = (initColor = uint(4278190080))); currentAlpha = (targetAlpha = (initAlpha = 0xFF)); randomOutroBurst = new Vector3D(0, 0, 0, 0); } public function drawRect(){ var _local2 = this.graphics; with (_local2) { clear(); beginFill(currentColor, (Number(currentAlpha) / 0xFF)); drawRect(-(pSizeH), -(pSizeH), pSize, pSize); endFill(); }; } public function glow(_arg1:uint){ var _local2:uint; var _local3:uint; var _local4:uint; var _local5:uint; _local2 = currentColor; _local3 = ((currentColor & 0xFF0000) >>> 16); _local4 = ((currentColor & 0xFF00) >>> 8); _local5 = (currentColor & 0xFF); _local3 = (_local3 + _arg1); _local4 = (_local4 + _arg1); _local5 = (_local5 + _arg1); _local3 = ((_local3)>0xFF) ? 0xFF : _local3; _local4 = ((_local4)>0xFF) ? 0xFF : _local4; _local5 = ((_local5)>0xFF) ? 0xFF : _local5; currentColor = (((_local3 << 16) | (_local4 << 8)) | _local5); drawRect(); currentColor = _local2; } public function interpolateColor(_arg1:Number){ var _local2:uint; var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:uint; _local2 = ((initColor & 0xFF0000) >>> 16); _local3 = ((initColor & 0xFF00) >>> 8); _local4 = (initColor & 0xFF); _local5 = ((targetColor & 0xFF0000) >>> 16); _local6 = ((targetColor & 0xFF00) >>> 8); _local7 = (targetColor & 0xFF); currentAlpha = (((targetAlpha - initAlpha) * _arg1) + initAlpha); currentColor = (((int((((_local5 - _local2) * _arg1) + _local2)) << 16) | (int((((_local6 - _local3) * _arg1) + _local3)) << 8)) | int((((_local7 - _local4) * _arg1) + _local4))); } } }//package com.bobblebrook.rotator
Section 21
//ProgressParticle (com.bobblebrook.rotator.ProgressParticle) package com.bobblebrook.rotator { import flash.display.*; public class ProgressParticle extends MovieClip { public function ProgressParticle(){ addFrameScript(25, frame26); super(); } function frame26(){ stop(); parent.removeChild(this); } } }//package com.bobblebrook.rotator
Section 22
//BaseGame (com.bobblebrook.BaseGame) package com.bobblebrook { import com.bobblebrook.lisa.server.*; import flash.events.*; import flash.display.*; public class BaseGame extends MovieClip { private var skipIntro:Boolean;// = false private var preloader:Preloader; private var intro:Intro; private var sitelock:Boolean;// = true public function BaseGame(){ var _local1:*; skipIntro = false; sitelock = true; addFrameScript(18, frame19, 30, frame31, 57, frame58, 77, frame78); super(); Tracker.instance.init("vantage", "http://www.bobblebrook.com/lisa/tracker.php"); Tracker.instance.turnOnPing(30); Tracker.instance.send("LdgStart"); Tracker.instance.debug = false; if (skipIntro){ showPreloader(); } else { intro = new Intro(); intro.scaleX = (intro.scaleY = 0.86); addChild(intro); intro.addEventListener(Intro.INTRO_LOADED, onIntroLoaded, false, 0, true); intro.addEventListener(Intro.INTRO_FINISHED, onIntroFinished, false, 0, true); }; _local1 = new Frame(); _local1.x = -5.5; _local1.y = -6.2; addChild(_local1); } private function showPreloader():void{ if (preloader != null){ return; }; preloader = new Preloader(); preloader.addEventListener(Preloader.LOADING_FINISHED, onLoadingFinished, false, 0, true); gotoAndPlay("preloader"); addChild(preloader); Tracker.instance.send("ScrStart", ["Preloader"]); } function frame78(){ stop(); } private function onIntroLoaded(_arg1:Event):void{ intro.removeEventListener(Intro.INTRO_LOADED, onIntroLoaded); intro.play(); Tracker.instance.send("ScrStart", ["Intro"]); } private function onIntroFinished(_arg1:Event):void{ intro.removeEventListener(Intro.INTRO_FINISHED, onIntroFinished); intro.destroy(); removeChild(intro); intro = null; showPreloader(); } function frame19(){ stop(); } private function startGame():void{ gotoAndPlay("game"); } function frame31(){ stop(); } function frame58(){ stop(); } private function onLoadingFinished(_arg1:Event):void{ preloader.removeEventListener(Preloader.LOADING_FINISHED, onLoadingFinished); preloader.destroy(); removeChild(preloader); preloader = null; if ((((((loaderInfo.url.indexOf("http://www.bobblebrook.com") == -1)) && ((loaderInfo.url.indexOf("http://72.47.235.141") == -1)))) && (sitelock))){ Tracker.instance.send("ScrStart", ["sitelock"]); gotoAndPlay("sitelock"); } else { startGame(); }; } } }//package com.bobblebrook
Section 23
//DefaultButton (com.bobblebrook.DefaultButton) package com.bobblebrook { import com.bobblebrook.lisa.server.*; import flash.events.*; import com.bobblebrook.lisa.*; import flash.display.*; public class DefaultButton extends MovieClip { public var mcLabel:MovieClip; private var $active:Boolean; private var $label:String; private var $state:String; private static var DOWN:String = "down"; private static var INACTIVE:String = "inactive"; private static var OUT:String = "out"; private static var OVER:String = "over"; public static var BUTTON_PRESSED:String = "buttonPressed"; private static var UP:String = "up"; public function DefaultButton(){ addFrameScript(14, frame15, 29, frame30, 44, frame45, 59, frame60); super(); state = OUT; initListeners(); active = true; } public function get active():Boolean{ return ($active); } public function set active(_arg1:Boolean):void{ $active = _arg1; if (!_arg1){ removeListeners(); state = INACTIVE; } else { initListeners(); state = OUT; }; } private function initListeners():void{ addEventListener(MouseEvent.MOUSE_UP, onMouseUp, false, 0, true); addEventListener(MouseEvent.ROLL_OVER, onRollOver, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, onRollOut, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown, false, 0, true); } public function set state(_arg1:String):void{ $state = _arg1; gotoAndPlay(_arg1); } public function get label():String{ return ($label); } private function onMouseUp(_arg1:Event):void{ Tracker.instance.send("Btn", [name]); dispatchEvent(new Event(BUTTON_PRESSED)); state = UP; } function frame15(){ stop(); } function frame30(){ stop(); } public function get state():String{ return ($state); } private function removeListeners():void{ removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); removeEventListener(MouseEvent.ROLL_OVER, onRollOver); removeEventListener(MouseEvent.ROLL_OUT, onRollOut); removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); } function frame45(){ stop(); } private function onRollOut(_arg1:Event):void{ state = OUT; } private function onMouseDown(_arg1:Event):void{ SoundMGR.instance.playSound("btnPress"); state = DOWN; } public function set label(_arg1:String):void{ $label = _arg1; mcLabel["tfLabel"].htmlText = _arg1; } function frame60(){ stop(); } private function onRollOver(_arg1:Event):void{ state = OVER; SoundMGR.instance.playSound("btnOver"); } } }//package com.bobblebrook
Section 24
//Intro (com.bobblebrook.Intro) package com.bobblebrook { import flash.events.*; import flash.display.*; public class Intro extends MovieClip { public static var INTRO_LOADED:String = "IntroLoaded"; public static var INTRO_FINISHED:String = "IntroFinished"; public function Intro(){ addFrameScript(89, frame90); super(); stop(); addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true); } public function destroy():void{ } function frame90(){ onLastFrameReached(); } public function start():void{ gotoAndPlay(1); } public function onEnterFrame(_arg1:Event):void{ if (framesLoaded == totalFrames){ removeEventListener(Event.ENTER_FRAME, onEnterFrame); dispatchEvent(new Event(INTRO_LOADED)); }; } public function onLastFrameReached():void{ stop(); dispatchEvent(new Event(INTRO_FINISHED)); } } }//package com.bobblebrook
Section 25
//Menu (com.bobblebrook.Menu) package com.bobblebrook { import com.bobblebrook.lisa.server.*; import flash.events.*; import com.bobblebrook.lisa.*; import flash.display.*; import flash.net.*; public class Menu extends MovieClip { public var btnSound:DefaultButton; public var btnStartGame:DefaultButton; public var btnBobblebrook:SimpleButton; public var btnShowHighscores:DefaultButton; public var btnShowCredits:DefaultButton; public static var TOGGLE_SOUND:String = "Sound"; public static var SHOW_HIGHSCORES:String = "ShowHighscores"; public static var SHOW_CREDITS:String = "ShowCredits"; public static var START_GAME:String = "StartGame"; public function Menu(){ trace("Menu added"); addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true); } public function init(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, init); btnStartGame.label = "start game"; btnShowHighscores.label = "show highscores"; btnShowCredits.label = "show credits"; setSoundBtn(); btnSound.addEventListener(DefaultButton.BUTTON_PRESSED, onButtonPressed, false, 0, true); btnStartGame.addEventListener(DefaultButton.BUTTON_PRESSED, onButtonPressed, false, 0, true); btnShowHighscores.addEventListener(DefaultButton.BUTTON_PRESSED, onButtonPressed, false, 0, true); btnShowCredits.addEventListener(DefaultButton.BUTTON_PRESSED, onButtonPressed, false, 0, true); btnBobblebrook.addEventListener(MouseEvent.MOUSE_UP, onLogoLink, false, 0, true); } private function onLogoLink(_arg1:Event):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.bobblebrook.com"); navigateToURL(_local2, "_blank"); } protected function setSoundBtn():void{ if (SoundMGR.instance == null){ btnSound.label = "sounds on"; } else { if (SoundMGR.instance.soundsMuted()){ btnSound.label = "sounds off"; } else { btnSound.label = "sounds on"; }; }; } public function onButtonPressed(_arg1:Event):void{ switch (_arg1.target.name){ case ("btn" + TOGGLE_SOUND): SoundMGR.instance.mute(!(SoundMGR.instance.soundsMuted())); Tracker.instance.send("Sounds", [(SoundMGR.instance.soundsMuted()) ? "off" : "on"]); setSoundBtn(); break; case ("btn" + START_GAME): dispatchEvent(new Event(START_GAME)); break; case ("btn" + SHOW_HIGHSCORES): dispatchEvent(new Event(SHOW_HIGHSCORES)); break; case ("btn" + SHOW_CREDITS): dispatchEvent(new Event(SHOW_CREDITS)); break; default: break; }; } } }//package com.bobblebrook
Section 26
//Preloader (com.bobblebrook.Preloader) package com.bobblebrook { import flash.events.*; import flash.display.*; import com.bobblebrook.rotator.*; import flash.text.*; public class Preloader extends MovieClip { private var percentage:Number; public var tfPercentage:TextField; private var particleContainer:MovieClip; public var progressbar:MovieClip; public static var LOADING_FINISHED:String = "loadingFinished"; public function Preloader(){ addFrameScript(0, frame1); super(); particleContainer = new MovieClip(); particleContainer.y = progressbar.y; addChild(particleContainer); addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true); } public function destroy():void{ } function frame1(){ stop(); } public function onEnterFrame(_arg1:Event):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:ProgressParticle; _local2 = percentage; percentage = Math.round(((loaderInfo.bytesLoaded / loaderInfo.bytesTotal) * 100)); progressbar.scaleX = (percentage / 100); _local3 = (percentage - _local2); particleContainer.x = (progressbar.x + progressbar.width); particleContainer.rotation = (particleContainer.rotation + 2); _local4 = 0; while (_local4 < _local3) { _local5 = new ProgressParticle(); _local5.rotation = (Math.random() * 360); particleContainer.addChild(_local5); _local4++; }; tfPercentage.text = (String(percentage) + "%"); if (loaderInfo.bytesLoaded == loaderInfo.bytesTotal){ onLoadingFinished(new Event("")); }; } public function onLoadingFinished(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, onEnterFrame); dispatchEvent(new Event(LOADING_FINISHED)); } } }//package com.bobblebrook
Section 27
//ScreenMGR (com.bobblebrook.ScreenMGR) package com.bobblebrook { import com.bobblebrook.lisa.server.*; import flash.events.*; import com.bobblebrook.lisa.*; import flash.display.*; import com.bobblebrook.rotator.*; import flash.filters.*; public class ScreenMGR extends MovieClip { public var howTo:HowTo; public var mcMenuBG:MovieClip; public var mcBG2:MovieClip; public var mcBG:MovieClip; public var menu:Menu; public var btnBack:DefaultButton; public var highscoreTable:HighscoreTable; public var fromGame:Boolean; public var mcOverlay:MovieClip; private var $state:String; public var game:Game; public static const STATE_GAME:String = "game"; public static const STATE_HIGHSCORES:String = "highscores"; public static const STATE_CREDITS:String = "credits"; public static const STATE_MENU:String = "menu"; public function ScreenMGR(){ addFrameScript(0, frame1, 19, frame20, 39, frame40, 59, frame60, 80, frame81, 100, frame101); super(); ScoreMGR.instance.gameName = "vantage"; ScoreMGR.instance.highscoreURL = "http://www.bobblebrook.com/lisa/highscoresAS3.php"; btnBack.addEventListener(DefaultButton.BUTTON_PRESSED, onBackToMenu, false, 0, true); btnBack.label = "back to menu"; state = STATE_MENU; } private function showMenu():void{ var glow:GlowFilter; var howToFilters:Array; if (menu != null){ menu.visible = true; btnBack.visible = false; return; }; menu = new Menu(); menu.addEventListener(Menu.SHOW_CREDITS, function (_arg1:Event){ state = STATE_CREDITS; }, false, 0, false); menu.addEventListener(Menu.SHOW_HIGHSCORES, function (_arg1:Event){ fromGame = false; state = STATE_HIGHSCORES; }, false, 0, false); menu.addEventListener(Menu.START_GAME, function (_arg1:Event){ state = STATE_GAME; }, false, 0, false); howTo = new HowTo(false); glow = new GlowFilter(11708131, 100, 10, 10, 3.73, 3); howToFilters = []; howToFilters.push(glow); howTo.filters = howToFilters; menu.addChild(howTo); addChild(menu); howTo.show(); btnBack.visible = false; } public function set state(_arg1:String):void{ $state = _arg1; switch (_arg1){ case STATE_MENU: gotoAndPlay(_arg1); showMenu(); Tracker.instance.send("ScrStart", ["Menu"]); break; case STATE_GAME: gotoAndPlay(_arg1); startGame(); hideMenu(); btnBack.visible = false; Tracker.instance.send("ScrStart", ["Game"]); break; case STATE_CREDITS: gotoAndPlay(_arg1); hideMenu(); Tracker.instance.send("ScrStart", ["Credits"]); break; case STATE_HIGHSCORES: gotoAndPlay(_arg1); hideMenu(); showHighscores(); Tracker.instance.send("ScrStart", ["Highscores"]); break; default: gotoAndPlay(_arg1); break; }; } function frame81(){ stop(); } private function onExitGame(_arg1:Event):void{ state = STATE_MENU; menu.init(null); } private function showHighscores():void{ if (highscoreTable != null){ return; }; highscoreTable = new HighscoreTable(); highscoreTable.init(["weekly", "allTime", "personal"], !(fromGame)); addChild(highscoreTable); } function frame1(){ mcOverlay.mouseEnabled = false; } private function startGame():void{ game.addEventListener(Game.GAMEOVER, onGameOver); game.addEventListener(Game.EXIT_GAME, onExitGame); game.newGame(); } function frame20(){ stop(); } public function onBackToMenu(_arg1:Event):void{ switch ($state){ case STATE_HIGHSCORES: removeChild(highscoreTable); highscoreTable.destroy(); highscoreTable = null; state = STATE_MENU; break; default: state = STATE_MENU; break; }; } public function get state():String{ return ($state); } function frame40(){ stop(); } function frame101(){ stop(); } private function hideMenu():void{ menu.visible = false; btnBack.visible = true; } private function onGameOver(_arg1:Event):void{ fromGame = true; state = STATE_HIGHSCORES; menu.init(null); } function frame60(){ stop(); } } }//package com.bobblebrook
Section 28
//btnHowTo_10 (Rotator_fla.btnHowTo_10) package Rotator_fla { import flash.display.*; public dynamic class btnHowTo_10 extends MovieClip { public var btnShow:InGameDefaultButton; } }//package Rotator_fla
Section 29
//Feedback_68 (Rotator_fla.Feedback_68) package Rotator_fla { import flash.display.*; public dynamic class Feedback_68 extends MovieClip { public var mcFeedback:MovieClip; public function Feedback_68(){ addFrameScript(0, frame1); } function frame1(){ stop(); this.visible = false; } } }//package Rotator_fla
Section 30
//FeedbackBlurb_69 (Rotator_fla.FeedbackBlurb_69) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class FeedbackBlurb_69 extends MovieClip { public var tfFeedback:TextField; } }//package Rotator_fla
Section 31
//GameOver_70 (Rotator_fla.GameOver_70) package Rotator_fla { import flash.display.*; import com.bobblebrook.rotator.*; public dynamic class GameOver_70 extends MovieClip { public var mcScore:MovieClip; public function GameOver_70(){ addFrameScript(0, frame1, 119, frame120); } function frame1(){ stop(); } function frame120(){ Game(parent).onGameOverComplete(); gotoAndStop(1); } } }//package Rotator_fla
Section 32
//GameOverScore_71 (Rotator_fla.GameOverScore_71) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class GameOverScore_71 extends MovieClip { public var tfScore:TextField; public var tfImages:TextField; } }//package Rotator_fla
Section 33
//Headline_25 (Rotator_fla.Headline_25) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class Headline_25 extends MovieClip { public var tfHeadline:TextField; } }//package Rotator_fla
Section 34
//HUD_61 (Rotator_fla.HUD_61) package Rotator_fla { import flash.display.*; public dynamic class HUD_61 extends MovieClip { public var btnSound:InGameDefaultButton; public var mcTutorialHelpText:MovieClip; public var mcTime:MovieClip; public var mcTutorialPointer:MovieClip; public var mcFeedbackContainer:MovieClip; public var btnExit:InGameDefaultButton; public var mcScore:MovieClip; public var mcThumb:MovieClip; public var mcImgNumber:MovieClip; } }//package Rotator_fla
Section 35
//label_left_5 (Rotator_fla.label_left_5) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class label_left_5 extends MovieClip { public var tfLabel:TextField; } }//package Rotator_fla
Section 36
//label_right_3 (Rotator_fla.label_right_3) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class label_right_3 extends MovieClip { public var tfLabel:TextField; } }//package Rotator_fla
Section 37
//Logo_top_42 (Rotator_fla.Logo_top_42) package Rotator_fla { import flash.display.*; public dynamic class Logo_top_42 extends MovieClip { public function Logo_top_42(){ addFrameScript(50, frame51); } function frame51(){ stop(); } } }//package Rotator_fla
Section 38
//mcImgNumber_66 (Rotator_fla.mcImgNumber_66) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class mcImgNumber_66 extends MovieClip { public var tfImgNumber:TextField; } }//package Rotator_fla
Section 39
//mcScore_65 (Rotator_fla.mcScore_65) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class mcScore_65 extends MovieClip { public var tfScorePlus:TextField; public var tfScore:TextField; } }//package Rotator_fla
Section 40
//mcTime_67 (Rotator_fla.mcTime_67) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class mcTime_67 extends MovieClip { public var tfTime:TextField; public var tfTimePlus:TextField; } }//package Rotator_fla
Section 41
//SwirlyBG_30 (Rotator_fla.SwirlyBG_30) package Rotator_fla { import flash.display.*; public dynamic class SwirlyBG_30 extends MovieClip { public function SwirlyBG_30(){ addFrameScript(51, frame52); } function frame52(){ stop(); } } }//package Rotator_fla
Section 42
//Text_26 (Rotator_fla.Text_26) package Rotator_fla { import flash.display.*; import flash.text.*; public dynamic class Text_26 extends MovieClip { public var tfText:TextField; } }//package Rotator_fla
Section 43
//Title_credits_77 (Rotator_fla.Title_credits_77) package Rotator_fla { import flash.display.*; public dynamic class Title_credits_77 extends MovieClip { public function Title_credits_77(){ addFrameScript(69, frame70); } function frame70(){ stop(); } } }//package Rotator_fla
Section 44
//Title_highscores_79 (Rotator_fla.Title_highscores_79) package Rotator_fla { import flash.display.*; public dynamic class Title_highscores_79 extends MovieClip { public function Title_highscores_79(){ addFrameScript(69, frame70); } function frame70(){ stop(); } } }//package Rotator_fla
Section 45
//Title_name_74 (Rotator_fla.Title_name_74) package Rotator_fla { import flash.display.*; public dynamic class Title_name_74 extends MovieClip { public function Title_name_74(){ addFrameScript(69, frame70); } function frame70(){ stop(); } } }//package Rotator_fla
Section 46
//btnOver (btnOver) package { import flash.media.*; public dynamic class btnOver extends Sound { } }//package
Section 47
//btnPress (btnPress) package { import flash.media.*; public dynamic class btnPress extends Sound { } }//package
Section 48
//Form (Form) package { import flash.display.*; import flash.text.*; public dynamic class Form extends MovieClip { public var tfName:TextField; public var tfEnterName:TextField; public var btn_enter:SimpleButton; public function Form(){ addFrameScript(0, frame1, 1, frame2, 14, frame15, 15, frame16, 29, frame30); } function frame1(){ stop(); } function frame16(){ visible = false; } function frame2(){ visible = true; } function frame15(){ stop(); } function frame30(){ stop(); } } }//package
Section 49
//Frame (Frame) package { import flash.display.*; public dynamic class Frame extends MovieClip { } }//package
Section 50
//gameOver (gameOver) package { import flash.media.*; public dynamic class gameOver extends Sound { } }//package
Section 51
//img1 (img1) package { import flash.display.*; public dynamic class img1 extends BitmapData { public function img1(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 52
//img10 (img10) package { import flash.display.*; public dynamic class img10 extends BitmapData { public function img10(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 53
//img11 (img11) package { import flash.display.*; public dynamic class img11 extends BitmapData { public function img11(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 54
//img12 (img12) package { import flash.display.*; public dynamic class img12 extends BitmapData { public function img12(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 55
//img13 (img13) package { import flash.display.*; public dynamic class img13 extends BitmapData { public function img13(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 56
//img14 (img14) package { import flash.display.*; public dynamic class img14 extends BitmapData { public function img14(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 57
//img15 (img15) package { import flash.display.*; public dynamic class img15 extends BitmapData { public function img15(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 58
//img16 (img16) package { import flash.display.*; public dynamic class img16 extends BitmapData { public function img16(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 59
//img17 (img17) package { import flash.display.*; public dynamic class img17 extends BitmapData { public function img17(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 60
//img18 (img18) package { import flash.display.*; public dynamic class img18 extends BitmapData { public function img18(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 61
//img19 (img19) package { import flash.display.*; public dynamic class img19 extends BitmapData { public function img19(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 62
//img2 (img2) package { import flash.display.*; public dynamic class img2 extends BitmapData { public function img2(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 63
//img20 (img20) package { import flash.display.*; public dynamic class img20 extends BitmapData { public function img20(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 64
//img21 (img21) package { import flash.display.*; public dynamic class img21 extends BitmapData { public function img21(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 65
//img22 (img22) package { import flash.display.*; public dynamic class img22 extends BitmapData { public function img22(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 66
//img23 (img23) package { import flash.display.*; public dynamic class img23 extends BitmapData { public function img23(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 67
//img24 (img24) package { import flash.display.*; public dynamic class img24 extends BitmapData { public function img24(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 68
//img25 (img25) package { import flash.display.*; public dynamic class img25 extends BitmapData { public function img25(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 69
//img26 (img26) package { import flash.display.*; public dynamic class img26 extends BitmapData { public function img26(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 70
//img27 (img27) package { import flash.display.*; public dynamic class img27 extends BitmapData { public function img27(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 71
//img28 (img28) package { import flash.display.*; public dynamic class img28 extends BitmapData { public function img28(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 72
//img29 (img29) package { import flash.display.*; public dynamic class img29 extends BitmapData { public function img29(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 73
//img3 (img3) package { import flash.display.*; public dynamic class img3 extends BitmapData { public function img3(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 74
//img30 (img30) package { import flash.display.*; public dynamic class img30 extends BitmapData { public function img30(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 75
//img31 (img31) package { import flash.display.*; public dynamic class img31 extends BitmapData { public function img31(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 76
//img32 (img32) package { import flash.display.*; public dynamic class img32 extends BitmapData { public function img32(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 77
//img33 (img33) package { import flash.display.*; public dynamic class img33 extends BitmapData { public function img33(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 78
//img34 (img34) package { import flash.display.*; public dynamic class img34 extends BitmapData { public function img34(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 79
//img35 (img35) package { import flash.display.*; public dynamic class img35 extends BitmapData { public function img35(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 80
//img36 (img36) package { import flash.display.*; public dynamic class img36 extends BitmapData { public function img36(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 81
//img37 (img37) package { import flash.display.*; public dynamic class img37 extends BitmapData { public function img37(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 82
//img38 (img38) package { import flash.display.*; public dynamic class img38 extends BitmapData { public function img38(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 83
//img39 (img39) package { import flash.display.*; public dynamic class img39 extends BitmapData { public function img39(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 84
//img4 (img4) package { import flash.display.*; public dynamic class img4 extends BitmapData { public function img4(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 85
//img40 (img40) package { import flash.display.*; public dynamic class img40 extends BitmapData { public function img40(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 86
//img41 (img41) package { import flash.display.*; public dynamic class img41 extends BitmapData { public function img41(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 87
//img42 (img42) package { import flash.display.*; public dynamic class img42 extends BitmapData { public function img42(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 88
//img43 (img43) package { import flash.display.*; public dynamic class img43 extends BitmapData { public function img43(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 89
//img44 (img44) package { import flash.display.*; public dynamic class img44 extends BitmapData { public function img44(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 90
//img45 (img45) package { import flash.display.*; public dynamic class img45 extends BitmapData { public function img45(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 91
//img46 (img46) package { import flash.display.*; public dynamic class img46 extends BitmapData { public function img46(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 92
//img47 (img47) package { import flash.display.*; public dynamic class img47 extends BitmapData { public function img47(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 93
//img48 (img48) package { import flash.display.*; public dynamic class img48 extends BitmapData { public function img48(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 94
//img49 (img49) package { import flash.display.*; public dynamic class img49 extends BitmapData { public function img49(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 95
//img5 (img5) package { import flash.display.*; public dynamic class img5 extends BitmapData { public function img5(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 96
//img50 (img50) package { import flash.display.*; public dynamic class img50 extends BitmapData { public function img50(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 97
//img51 (img51) package { import flash.display.*; public dynamic class img51 extends BitmapData { public function img51(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 98
//img52 (img52) package { import flash.display.*; public dynamic class img52 extends BitmapData { public function img52(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 99
//img53 (img53) package { import flash.display.*; public dynamic class img53 extends BitmapData { public function img53(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 100
//img54 (img54) package { import flash.display.*; public dynamic class img54 extends BitmapData { public function img54(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 101
//img55 (img55) package { import flash.display.*; public dynamic class img55 extends BitmapData { public function img55(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 102
//img56 (img56) package { import flash.display.*; public dynamic class img56 extends BitmapData { public function img56(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 103
//img57 (img57) package { import flash.display.*; public dynamic class img57 extends BitmapData { public function img57(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 104
//img58 (img58) package { import flash.display.*; public dynamic class img58 extends BitmapData { public function img58(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 105
//img59 (img59) package { import flash.display.*; public dynamic class img59 extends BitmapData { public function img59(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 106
//img6 (img6) package { import flash.display.*; public dynamic class img6 extends BitmapData { public function img6(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 107
//img60 (img60) package { import flash.display.*; public dynamic class img60 extends BitmapData { public function img60(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 108
//img61 (img61) package { import flash.display.*; public dynamic class img61 extends BitmapData { public function img61(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 109
//img62 (img62) package { import flash.display.*; public dynamic class img62 extends BitmapData { public function img62(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 110
//img63 (img63) package { import flash.display.*; public dynamic class img63 extends BitmapData { public function img63(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 111
//img64 (img64) package { import flash.display.*; public dynamic class img64 extends BitmapData { public function img64(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 112
//img65 (img65) package { import flash.display.*; public dynamic class img65 extends BitmapData { public function img65(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 113
//img66 (img66) package { import flash.display.*; public dynamic class img66 extends BitmapData { public function img66(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 114
//img67 (img67) package { import flash.display.*; public dynamic class img67 extends BitmapData { public function img67(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 115
//img68 (img68) package { import flash.display.*; public dynamic class img68 extends BitmapData { public function img68(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 116
//img69 (img69) package { import flash.display.*; public dynamic class img69 extends BitmapData { public function img69(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 117
//img7 (img7) package { import flash.display.*; public dynamic class img7 extends BitmapData { public function img7(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 118
//img70 (img70) package { import flash.display.*; public dynamic class img70 extends BitmapData { public function img70(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 119
//img71 (img71) package { import flash.display.*; public dynamic class img71 extends BitmapData { public function img71(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 120
//img72 (img72) package { import flash.display.*; public dynamic class img72 extends BitmapData { public function img72(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 121
//img73 (img73) package { import flash.display.*; public dynamic class img73 extends BitmapData { public function img73(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 122
//img74 (img74) package { import flash.display.*; public dynamic class img74 extends BitmapData { public function img74(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 123
//img75 (img75) package { import flash.display.*; public dynamic class img75 extends BitmapData { public function img75(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 124
//img76 (img76) package { import flash.display.*; public dynamic class img76 extends BitmapData { public function img76(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 125
//img77 (img77) package { import flash.display.*; public dynamic class img77 extends BitmapData { public function img77(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 126
//img78 (img78) package { import flash.display.*; public dynamic class img78 extends BitmapData { public function img78(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 127
//img79 (img79) package { import flash.display.*; public dynamic class img79 extends BitmapData { public function img79(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 128
//img8 (img8) package { import flash.display.*; public dynamic class img8 extends BitmapData { public function img8(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 129
//img80 (img80) package { import flash.display.*; public dynamic class img80 extends BitmapData { public function img80(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 130
//img81 (img81) package { import flash.display.*; public dynamic class img81 extends BitmapData { public function img81(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 131
//img82 (img82) package { import flash.display.*; public dynamic class img82 extends BitmapData { public function img82(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 132
//img83 (img83) package { import flash.display.*; public dynamic class img83 extends BitmapData { public function img83(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 133
//img84 (img84) package { import flash.display.*; public dynamic class img84 extends BitmapData { public function img84(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 134
//img85 (img85) package { import flash.display.*; public dynamic class img85 extends BitmapData { public function img85(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 135
//img86 (img86) package { import flash.display.*; public dynamic class img86 extends BitmapData { public function img86(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 136
//img87 (img87) package { import flash.display.*; public dynamic class img87 extends BitmapData { public function img87(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 137
//img88 (img88) package { import flash.display.*; public dynamic class img88 extends BitmapData { public function img88(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 138
//img89 (img89) package { import flash.display.*; public dynamic class img89 extends BitmapData { public function img89(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 139
//img9 (img9) package { import flash.display.*; public dynamic class img9 extends BitmapData { public function img9(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 140
//img90 (img90) package { import flash.display.*; public dynamic class img90 extends BitmapData { public function img90(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 141
//img91 (img91) package { import flash.display.*; public dynamic class img91 extends BitmapData { public function img91(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 142
//InGameDefaultButton (InGameDefaultButton) package { import com.bobblebrook.*; public dynamic class InGameDefaultButton extends DefaultButton { public function InGameDefaultButton(){ addFrameScript(14, frame15, 29, frame30, 44, frame45, 59, frame60, 74, frame75); } function frame75(){ stop(); } function frame15(){ stop(); } function frame30(){ stop(); } function frame45(){ stop(); } function frame60(){ stop(); } } }//package
Section 143
//LevelComplete (LevelComplete) package { import flash.media.*; public dynamic class LevelComplete extends Sound { } }//package
Section 144
//Music (Music) package { import flash.media.*; public dynamic class Music extends Sound { } }//package
Section 145
//tick (tick) package { import flash.media.*; public dynamic class tick extends Sound { } }//package
Section 146
//Wind (Wind) package { import flash.media.*; public dynamic class Wind extends Sound { } }//package

Library Items

Symbol 1 Bitmap {img91}
Symbol 2 MovieClip {com.bobblebrook.rotator.ImgParticle}
Symbol 3 GraphicUsed by:11 14
Symbol 4 FontUsed by:5 6
Symbol 5 TextUses:4Used by:11
Symbol 6 EditableTextUses:4Used by:11
Symbol 7 FontUsed by:8 78 85 89 92 95 96 106 112 119 120 122 126 127 130 135 139 141 144 148 151 152 279 283 284 286 293 297 301 305 309 311
Symbol 8 TextUses:7Used by:11
Symbol 9 GraphicUsed by:10 12 136
Symbol 10 MovieClipUses:9Used by:11
Symbol 11 MovieClip {com.bobblebrook.Preloader}Uses:3 5 6 8 10
Symbol 12 MovieClipUses:9Used by:13
Symbol 13 MovieClip {com.bobblebrook.rotator.ProgressParticle}Uses:12
Symbol 14 MovieClipUses:3Used by:73 76
Symbol 15 ShapeTweeningUsed by:62
Symbol 16 GraphicUsed by:32
Symbol 17 GraphicUsed by:18
Symbol 18 MovieClipUses:17Used by:32
Symbol 19 GraphicUsed by:20
Symbol 20 MovieClipUses:19Used by:32
Symbol 21 GraphicUsed by:22
Symbol 22 MovieClipUses:21Used by:32
Symbol 23 GraphicUsed by:24
Symbol 24 MovieClipUses:23Used by:32
Symbol 25 GraphicUsed by:26
Symbol 26 MovieClipUses:25Used by:32
Symbol 27 GraphicUsed by:28
Symbol 28 MovieClipUses:27Used by:32
Symbol 29 GraphicUsed by:32
Symbol 30 GraphicUsed by:31
Symbol 31 MovieClipUses:30Used by:32
Symbol 32 MovieClipUses:16 18 20 22 24 26 28 29 31Used by:62
Symbol 33 ShapeTweeningUsed by:62
Symbol 34 ShapeTweeningUsed by:62
Symbol 35 ShapeTweeningUsed by:62
Symbol 36 ShapeTweeningUsed by:62
Symbol 37 ShapeTweeningUsed by:62
Symbol 38 ShapeTweeningUsed by:62
Symbol 39 ShapeTweeningUsed by:62
Symbol 40 GraphicUsed by:62
Symbol 41 ShapeTweeningUsed by:62
Symbol 42 GraphicUsed by:46
Symbol 43 GraphicUsed by:44
Symbol 44 MovieClipUses:43Used by:46
Symbol 45 GraphicUsed by:46
Symbol 46 MovieClipUses:42 44 45Used by:62
Symbol 47 GraphicUsed by:62
Symbol 48 ShapeTweeningUsed by:62
Symbol 49 GraphicUsed by:62
Symbol 50 GraphicUsed by:62
Symbol 51 ShapeTweeningUsed by:62
Symbol 52 GraphicUsed by:62
Symbol 53 ShapeTweeningUsed by:62
Symbol 54 GraphicUsed by:55
Symbol 55 MovieClipUses:54Used by:62
Symbol 56 GraphicUsed by:62
Symbol 57 GraphicUsed by:62
Symbol 58 GraphicUsed by:62
Symbol 59 GraphicUsed by:62
Symbol 60 ShapeTweeningUsed by:62
Symbol 61 GraphicUsed by:62
Symbol 62 MovieClip {Rotator_fla.SwirlyBG_30}Uses:15 32 33 34 35 36 37 38 39 40 41 46 47 48 49 50 51 52 53 55 56 57 58 59 60 61Used by:76
Symbol 63 GraphicUsed by:64
Symbol 64 MovieClipUses:63Used by:65
Symbol 65 MovieClipUses:64Used by:73
Symbol 66 GraphicUsed by:67
Symbol 67 MovieClipUses:66Used by:68
Symbol 68 MovieClipUses:67Used by:73
Symbol 69 GraphicUsed by:73
Symbol 70 GraphicUsed by:71
Symbol 71 MovieClipUses:70Used by:72
Symbol 72 MovieClipUses:71Used by:73
Symbol 73 MovieClip {Rotator_fla.Logo_top_42}Uses:14 65 68 69 72Used by:76
Symbol 74 GraphicUsed by:75
Symbol 75 MovieClipUses:74Used by:76
Symbol 76 MovieClip {com.bobblebrook.Intro}Uses:14 62 73 75Used by:Timeline
Symbol 77 GraphicUsed by:86
Symbol 78 EditableTextUses:7Used by:86
Symbol 79 GraphicUsed by:82
Symbol 80 FontUsed by:81 85 89 92 95 96 106 113 114 132 139 141 268 269 271 272 274 276 277 299 309 311
Symbol 81 TextUses:80Used by:82
Symbol 82 MovieClipUses:79 81Used by:84
Symbol 83 GraphicUsed by:84
Symbol 84 ButtonUses:82 83Used by:86
Symbol 85 EditableTextUses:7 80Used by:86
Symbol 86 MovieClip {Form}Uses:77 78 84 85Used by:147 153
Symbol 87 GraphicUsed by:88
Symbol 88 MovieClip {Frame}Uses:87Used by:Timeline
Symbol 89 EditableTextUses:7 80Used by:90
Symbol 90 MovieClip {Rotator_fla.label_right_3}Uses:89Used by:91
Symbol 91 MovieClip {com.bobblebrook.DefaultButton}Uses:90Used by:255 310  Timeline
Symbol 92 EditableTextUses:7 80Used by:93
Symbol 93 MovieClip {Rotator_fla.label_left_5}Uses:92Used by:94
Symbol 94 MovieClip {InGameDefaultButton}Uses:93Used by:108 282  Timeline
Symbol 95 EditableTextUses:7 80Used by:97
Symbol 96 EditableTextUses:7 80Used by:97
Symbol 97 MovieClipUses:95 96Used by:153  Timeline
Symbol 98 Sound {gameOver}Used by:105
Symbol 99 Sound {tick}Used by:105
Symbol 100 Sound {btnPress}Used by:105
Symbol 101 Sound {btnOver}Used by:105
Symbol 102 Sound {Wind}Used by:105
Symbol 103 Sound {LevelComplete}Used by:105
Symbol 104 Sound {Music}Used by:105
Symbol 105 MovieClip {com.bobblebrook.lisa.SoundMGR}Uses:98 99 100 101 102 103 104Used by:310  Timeline
Symbol 106 TextUses:80 7Used by:107
Symbol 107 MovieClipUses:106Used by:111
Symbol 108 MovieClip {Rotator_fla.btnHowTo_10}Uses:94Used by:111
Symbol 109 GraphicUsed by:110
Symbol 110 MovieClipUses:109Used by:111
Symbol 111 MovieClip {com.bobblebrook.rotator.HowTo}Uses:107 108 110Used by:Timeline
Symbol 112 EditableTextUses:7Used by:115
Symbol 113 EditableTextUses:80Used by:115
Symbol 114 EditableTextUses:80Used by:115
Symbol 115 MovieClip {com.bobblebrook.lisa.HighscoreRow}Uses:112 113 114Used by:153
Symbol 116 FontUsed by:117 124 145
Symbol 117 TextUses:116Used by:118
Symbol 118 ButtonUses:117Used by:153
Symbol 119 TextUses:7Used by:123
Symbol 120 TextUses:7Used by:123
Symbol 121 GraphicUsed by:123
Symbol 122 TextUses:7Used by:123
Symbol 123 ButtonUses:119 120 121 122Used by:153
Symbol 124 TextUses:116Used by:125
Symbol 125 ButtonUses:124Used by:153
Symbol 126 TextUses:7Used by:129
Symbol 127 TextUses:7Used by:129
Symbol 128 GraphicUsed by:129
Symbol 129 ButtonUses:126 127 128Used by:153
Symbol 130 EditableTextUses:7Used by:153
Symbol 131 GraphicUsed by:134
Symbol 132 TextUses:80Used by:134
Symbol 133 GraphicUsed by:134 146
Symbol 134 ButtonUses:131 132 133Used by:153
Symbol 135 EditableTextUses:7Used by:153
Symbol 136 MovieClipUses:9Used by:147
Symbol 137 GraphicUsed by:138
Symbol 138 MovieClipUses:137Used by:147
Symbol 139 EditableTextUses:7 80Used by:140
Symbol 140 MovieClip {Rotator_fla.Headline_25}Uses:139Used by:147
Symbol 141 EditableTextUses:7 80Used by:142
Symbol 142 MovieClip {Rotator_fla.Text_26}Uses:141Used by:147
Symbol 143 GraphicUsed by:146
Symbol 144 TextUses:7Used by:146
Symbol 145 TextUses:116Used by:146
Symbol 146 ButtonUses:143 144 133 145Used by:147
Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox}Uses:136 138 140 142 86 146Used by:153
Symbol 148 TextUses:7Used by:153
Symbol 149 FontUsed by:150
Symbol 150 EditableTextUses:149Used by:153
Symbol 151 TextUses:7Used by:153
Symbol 152 TextUses:7Used by:153
Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable}Uses:115 97 118 123 125 129 130 134 135 86 147 148 150 151 152Used by:Timeline
Symbol 154 Bitmap {img1}Used by:Timeline
Symbol 155 Bitmap {img2}Used by:Timeline
Symbol 156 Bitmap {img3}Used by:Timeline
Symbol 157 Bitmap {img4}Used by:Timeline
Symbol 158 Bitmap {img5}Used by:Timeline
Symbol 159 Bitmap {img6}Used by:Timeline
Symbol 160 Bitmap {img7}Used by:Timeline
Symbol 161 Bitmap {img8}Used by:Timeline
Symbol 162 Bitmap {img9}Used by:Timeline
Symbol 163 Bitmap {img10}Used by:Timeline
Symbol 164 Bitmap {img11}Used by:Timeline
Symbol 165 Bitmap {img12}Used by:Timeline
Symbol 166 Bitmap {img13}Used by:Timeline
Symbol 167 Bitmap {img14}Used by:Timeline
Symbol 168 Bitmap {img15}Used by:Timeline
Symbol 169 Bitmap {img16}Used by:Timeline
Symbol 170 Bitmap {img17}Used by:Timeline
Symbol 171 Bitmap {img18}Used by:Timeline
Symbol 172 Bitmap {img19}Used by:Timeline
Symbol 173 Bitmap {img20}Used by:Timeline
Symbol 174 Bitmap {img21}Used by:Timeline
Symbol 175 Bitmap {img22}Used by:Timeline
Symbol 176 Bitmap {img23}Used by:Timeline
Symbol 177 Bitmap {img24}Used by:Timeline
Symbol 178 Bitmap {img25}Used by:Timeline
Symbol 179 Bitmap {img26}Used by:Timeline
Symbol 180 Bitmap {img27}Used by:Timeline
Symbol 181 Bitmap {img28}Used by:Timeline
Symbol 182 Bitmap {img29}Used by:Timeline
Symbol 183 Bitmap {img30}Used by:Timeline
Symbol 184 Bitmap {img31}Used by:Timeline
Symbol 185 Bitmap {img32}Used by:Timeline
Symbol 186 Bitmap {img33}Used by:Timeline
Symbol 187 Bitmap {img34}Used by:Timeline
Symbol 188 Bitmap {img35}Used by:Timeline
Symbol 189 Bitmap {img36}Used by:Timeline
Symbol 190 Bitmap {img37}Used by:Timeline
Symbol 191 Bitmap {img38}Used by:Timeline
Symbol 192 Bitmap {img39}Used by:Timeline
Symbol 193 Bitmap {img40}Used by:Timeline
Symbol 194 Bitmap {img41}Used by:Timeline
Symbol 195 Bitmap {img42}Used by:Timeline
Symbol 196 Bitmap {img43}Used by:Timeline
Symbol 197 Bitmap {img44}Used by:Timeline
Symbol 198 Bitmap {img45}Used by:Timeline
Symbol 199 Bitmap {img46}Used by:Timeline
Symbol 200 Bitmap {img47}Used by:Timeline
Symbol 201 Bitmap {img48}Used by:Timeline
Symbol 202 Bitmap {img49}Used by:Timeline
Symbol 203 Bitmap {img50}Used by:Timeline
Symbol 204 Bitmap {img51}Used by:Timeline
Symbol 205 Bitmap {img52}Used by:Timeline
Symbol 206 Bitmap {img53}Used by:Timeline
Symbol 207 Bitmap {img54}Used by:Timeline
Symbol 208 Bitmap {img55}Used by:Timeline
Symbol 209 Bitmap {img56}Used by:Timeline
Symbol 210 Bitmap {img57}Used by:Timeline
Symbol 211 Bitmap {img58}Used by:Timeline
Symbol 212 Bitmap {img59}Used by:Timeline
Symbol 213 Bitmap {img60}Used by:Timeline
Symbol 214 Bitmap {img61}Used by:Timeline
Symbol 215 Bitmap {img62}Used by:Timeline
Symbol 216 Bitmap {img63}Used by:Timeline
Symbol 217 Bitmap {img64}Used by:Timeline
Symbol 218 Bitmap {img65}Used by:Timeline
Symbol 219 Bitmap {img66}Used by:Timeline
Symbol 220 Bitmap {img67}Used by:Timeline
Symbol 221 Bitmap {img68}Used by:Timeline
Symbol 222 Bitmap {img69}Used by:Timeline
Symbol 223 Bitmap {img70}Used by:Timeline
Symbol 224 Bitmap {img71}Used by:Timeline
Symbol 225 Bitmap {img72}Used by:Timeline
Symbol 226 Bitmap {img73}Used by:Timeline
Symbol 227 Bitmap {img74}Used by:Timeline
Symbol 228 Bitmap {img75}Used by:Timeline
Symbol 229 Bitmap {img76}Used by:Timeline
Symbol 230 Bitmap {img77}Used by:Timeline
Symbol 231 Bitmap {img78}Used by:Timeline
Symbol 232 Bitmap {img79}Used by:Timeline
Symbol 233 Bitmap {img80}Used by:Timeline
Symbol 234 Bitmap {img81}Used by:Timeline
Symbol 235 Bitmap {img82}Used by:Timeline
Symbol 236 Bitmap {img83}Used by:Timeline
Symbol 237 Bitmap {img84}Used by:Timeline
Symbol 238 Bitmap {img85}Used by:Timeline
Symbol 239 Bitmap {img86}Used by:Timeline
Symbol 240 Bitmap {img87}Used by:Timeline
Symbol 241 Bitmap {img88}Used by:Timeline
Symbol 242 Bitmap {img89}Used by:Timeline
Symbol 243 Bitmap {img90}Used by:Timeline
Symbol 244 GraphicUsed by:245 298
Symbol 245 MovieClipUses:244Used by:249 298
Symbol 246 GraphicUsed by:249 298
Symbol 247 GraphicUsed by:248 298
Symbol 248 MovieClipUses:247Used by:249 298
Symbol 249 MovieClipUses:245 246 248Used by:254
Symbol 250 FontUsed by:251 252
Symbol 251 TextUses:250Used by:254
Symbol 252 TextUses:250Used by:254
Symbol 253 GraphicUsed by:254
Symbol 254 ButtonUses:249 251 252 253Used by:255
Symbol 255 MovieClip {com.bobblebrook.Menu}Uses:91 254Used by:Timeline
Symbol 256 GraphicUsed by:257
Symbol 257 MovieClipUses:256Used by:310
Symbol 258 GraphicUsed by:259
Symbol 259 MovieClipUses:258Used by:310
Symbol 260 GraphicUsed by:261
Symbol 261 MovieClipUses:260Used by:310
Symbol 262 GraphicUsed by:263
Symbol 263 MovieClipUses:262Used by:310
Symbol 264 MovieClipUsed by:282
Symbol 265 GraphicUsed by:267
Symbol 266 GraphicUsed by:267
Symbol 267 MovieClipUses:265 266Used by:282
Symbol 268 TextUses:80Used by:270
Symbol 269 TextUses:80Used by:270
Symbol 270 MovieClipUses:268 269Used by:282
Symbol 271 EditableTextUses:80Used by:273
Symbol 272 EditableTextUses:80Used by:273
Symbol 273 MovieClip {Rotator_fla.mcScore_65}Uses:271 272Used by:282
Symbol 274 EditableTextUses:80Used by:275
Symbol 275 MovieClip {Rotator_fla.mcImgNumber_66}Uses:274Used by:282
Symbol 276 EditableTextUses:80Used by:278
Symbol 277 EditableTextUses:80Used by:278
Symbol 278 MovieClip {Rotator_fla.mcTime_67}Uses:276 277Used by:282
Symbol 279 EditableTextUses:7Used by:280
Symbol 280 MovieClip {Rotator_fla.FeedbackBlurb_69}Uses:279Used by:281
Symbol 281 MovieClip {Rotator_fla.Feedback_68}Uses:280Used by:282
Symbol 282 MovieClip {Rotator_fla.HUD_61}Uses:264 267 270 273 275 278 281 94Used by:289
Symbol 283 EditableTextUses:7Used by:285
Symbol 284 EditableTextUses:7Used by:285
Symbol 285 MovieClip {Rotator_fla.GameOverScore_71}Uses:283 284Used by:288
Symbol 286 TextUses:7Used by:287
Symbol 287 MovieClipUses:286Used by:288
Symbol 288 MovieClip {Rotator_fla.GameOver_70}Uses:285 287Used by:289
Symbol 289 MovieClip {com.bobblebrook.rotator.Game}Uses:282 288Used by:310
Symbol 290 GraphicUsed by:291
Symbol 291 MovieClipUses:290Used by:310
Symbol 292 GraphicUsed by:294
Symbol 293 TextUses:7Used by:294
Symbol 294 MovieClipUses:292 293Used by:295
Symbol 295 MovieClip {Rotator_fla.Title_name_74}Uses:294Used by:310  Timeline
Symbol 296 GraphicUsed by:310
Symbol 297 TextUses:7Used by:310
Symbol 298 ButtonUses:245 246 248 244 247Used by:310
Symbol 299 TextUses:80Used by:310
Symbol 300 GraphicUsed by:302
Symbol 301 TextUses:7Used by:302
Symbol 302 MovieClipUses:300 301Used by:303
Symbol 303 MovieClip {Rotator_fla.Title_credits_77}Uses:302Used by:310
Symbol 304 GraphicUsed by:306
Symbol 305 TextUses:7Used by:306
Symbol 306 MovieClipUses:304 305Used by:307
Symbol 307 MovieClip {Rotator_fla.Title_highscores_79}Uses:306Used by:310
Symbol 308 GraphicUsed by:310
Symbol 309 EditableTextUses:7 80Used by:310
Symbol 310 MovieClip {com.bobblebrook.ScreenMGR}Uses:257 259 261 263 289 291 295 91 296 105 297 298 299 303 307 308 309Used by:Timeline
Symbol 311 EditableTextUses:7 80Used by:Timeline

Instance Names

"tfPercentage"Symbol 11 MovieClip {com.bobblebrook.Preloader} Frame 1Symbol 6 EditableText
"progressbar"Symbol 11 MovieClip {com.bobblebrook.Preloader} Frame 1Symbol 10 MovieClip
"tfName"Symbol 86 MovieClip {Form} Frame 1Symbol 78 EditableText
"btn_enter"Symbol 86 MovieClip {Form} Frame 1Symbol 84 Button
"tfEnterName"Symbol 86 MovieClip {Form} Frame 1Symbol 85 EditableText
"tfLabel"Symbol 90 MovieClip {Rotator_fla.label_right_3} Frame 1Symbol 89 EditableText
"mcLabel"Symbol 91 MovieClip {com.bobblebrook.DefaultButton} Frame 1Symbol 90 MovieClip {Rotator_fla.label_right_3}
"tfLabel"Symbol 93 MovieClip {Rotator_fla.label_left_5} Frame 1Symbol 92 EditableText
"mcLabel"Symbol 94 MovieClip {InGameDefaultButton} Frame 1Symbol 93 MovieClip {Rotator_fla.label_left_5}
"btnShow"Symbol 108 MovieClip {Rotator_fla.btnHowTo_10} Frame 1Symbol 94 MovieClip {InGameDefaultButton}
"mcHowTo"Symbol 111 MovieClip {com.bobblebrook.rotator.HowTo} Frame 1Symbol 108 MovieClip {Rotator_fla.btnHowTo_10}
"tfName"Symbol 115 MovieClip {com.bobblebrook.lisa.HighscoreRow} Frame 1Symbol 112 EditableText
"tfScore"Symbol 115 MovieClip {com.bobblebrook.lisa.HighscoreRow} Frame 1Symbol 113 EditableText
"tfRank"Symbol 115 MovieClip {com.bobblebrook.lisa.HighscoreRow} Frame 1Symbol 114 EditableText
"tfHeadline"Symbol 140 MovieClip {Rotator_fla.Headline_25} Frame 1Symbol 139 EditableText
"tfText"Symbol 142 MovieClip {Rotator_fla.Text_26} Frame 1Symbol 141 EditableText
"mcShade"Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox} Frame 1Symbol 136 MovieClip
"mcBG"Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox} Frame 1Symbol 138 MovieClip
"mcHeadline"Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox} Frame 1Symbol 140 MovieClip {Rotator_fla.Headline_25}
"mcText"Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox} Frame 1Symbol 142 MovieClip {Rotator_fla.Text_26}
"mcForm"Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox} Frame 1Symbol 86 MovieClip {Form}
"btnClose"Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox} Frame 1Symbol 146 Button
"btn_daily"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 118 Button
"btn_weekly"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 123 Button
"btn_monthly"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 125 Button
"btn_allTime"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 129 Button
"tfSystem"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 130 EditableText
"btn_retry"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 134 Button
"tfMessage"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 135 EditableText
"mcForm"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 86 MovieClip {Form}
"mcMessageBox"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 1Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox}
"tfSystem"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 14Symbol 150 EditableText
"btnStartGame"Symbol 255 MovieClip {com.bobblebrook.Menu} Frame 1Symbol 91 MovieClip {com.bobblebrook.DefaultButton}
"btnShowHighscores"Symbol 255 MovieClip {com.bobblebrook.Menu} Frame 1Symbol 91 MovieClip {com.bobblebrook.DefaultButton}
"btnShowCredits"Symbol 255 MovieClip {com.bobblebrook.Menu} Frame 1Symbol 91 MovieClip {com.bobblebrook.DefaultButton}
"btnSound"Symbol 255 MovieClip {com.bobblebrook.Menu} Frame 1Symbol 91 MovieClip {com.bobblebrook.DefaultButton}
"btnBobblebrook"Symbol 255 MovieClip {com.bobblebrook.Menu} Frame 1Symbol 254 Button
"tfScore"Symbol 273 MovieClip {Rotator_fla.mcScore_65} Frame 1Symbol 271 EditableText
"tfScorePlus"Symbol 273 MovieClip {Rotator_fla.mcScore_65} Frame 1Symbol 272 EditableText
"tfImgNumber"Symbol 275 MovieClip {Rotator_fla.mcImgNumber_66} Frame 1Symbol 274 EditableText
"tfTime"Symbol 278 MovieClip {Rotator_fla.mcTime_67} Frame 1Symbol 276 EditableText
"tfTimePlus"Symbol 278 MovieClip {Rotator_fla.mcTime_67} Frame 1Symbol 277 EditableText
"tfFeedback"Symbol 280 MovieClip {Rotator_fla.FeedbackBlurb_69} Frame 1Symbol 279 EditableText
"mcFeedback"Symbol 281 MovieClip {Rotator_fla.Feedback_68} Frame 1Symbol 280 MovieClip {Rotator_fla.FeedbackBlurb_69}
"mcThumb"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 264 MovieClip
"mcTutorialPointer"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 267 MovieClip
"mcTutorialHelpText"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 270 MovieClip
"mcScore"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 273 MovieClip {Rotator_fla.mcScore_65}
"mcImgNumber"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 275 MovieClip {Rotator_fla.mcImgNumber_66}
"mcTime"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 278 MovieClip {Rotator_fla.mcTime_67}
"mcFeedbackContainer"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 281 MovieClip {Rotator_fla.Feedback_68}
"btnSound"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 94 MovieClip {InGameDefaultButton}
"btnExit"Symbol 282 MovieClip {Rotator_fla.HUD_61} Frame 1Symbol 94 MovieClip {InGameDefaultButton}
"tfScore"Symbol 285 MovieClip {Rotator_fla.GameOverScore_71} Frame 1Symbol 283 EditableText
"tfImages"Symbol 285 MovieClip {Rotator_fla.GameOverScore_71} Frame 1Symbol 284 EditableText
"mcScore"Symbol 288 MovieClip {Rotator_fla.GameOver_70} Frame 1Symbol 285 MovieClip {Rotator_fla.GameOverScore_71}
"mcHUD"Symbol 289 MovieClip {com.bobblebrook.rotator.Game} Frame 1Symbol 282 MovieClip {Rotator_fla.HUD_61}
"mcGameOver"Symbol 289 MovieClip {com.bobblebrook.rotator.Game} Frame 1Symbol 288 MovieClip {Rotator_fla.GameOver_70}
"mcBG"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 1Symbol 257 MovieClip
"mcBG2"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 1Symbol 259 MovieClip
"mcMenuBG"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 1Symbol 261 MovieClip
"game"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 1Symbol 289 MovieClip {com.bobblebrook.rotator.Game}
"mcOverlay"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 1Symbol 291 MovieClip
"btnBack"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 1Symbol 91 MovieClip {com.bobblebrook.DefaultButton}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Protect (24)Timeline Frame 131 bytes "..$1$P0$TAcMnalxadlOEfPsBglkc0."

Labels

"intro"Frame 1
"preloader"Frame 20
"game"Frame 45
"sitelock"Frame 59
"show"Symbol 86 MovieClip {Form} Frame 2
"hide"Symbol 86 MovieClip {Form} Frame 16
"out"Symbol 91 MovieClip {com.bobblebrook.DefaultButton} Frame 1
"over"Symbol 91 MovieClip {com.bobblebrook.DefaultButton} Frame 16
"down"Symbol 91 MovieClip {com.bobblebrook.DefaultButton} Frame 31
"up"Symbol 91 MovieClip {com.bobblebrook.DefaultButton} Frame 46
"out"Symbol 94 MovieClip {InGameDefaultButton} Frame 1
"over"Symbol 94 MovieClip {InGameDefaultButton} Frame 16
"down"Symbol 94 MovieClip {InGameDefaultButton} Frame 31
"up"Symbol 94 MovieClip {InGameDefaultButton} Frame 46
"inactive"Symbol 94 MovieClip {InGameDefaultButton} Frame 61
"show"Symbol 111 MovieClip {com.bobblebrook.rotator.HowTo} Frame 1
"hide"Symbol 111 MovieClip {com.bobblebrook.rotator.HowTo} Frame 20
"lShow"Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox} Frame 5
"lHide"Symbol 147 MovieClip {com.bobblebrook.lisa.MessageBox} Frame 25
"loading"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 2
"daily"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 14
"weekly"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 26
"monthly"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 37
"allTime"Symbol 153 MovieClip {com.bobblebrook.lisa.HighscoreTable} Frame 48
"init"Symbol 288 MovieClip {Rotator_fla.GameOver_70} Frame 2
"menu"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 1
"credits"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 21
"game"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 41
"highscores"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 61
"sitelock"Symbol 310 MovieClip {com.bobblebrook.ScreenMGR} Frame 82




http://swfchan.com/9/41841/info.shtml
Created: 10/5 -2019 05:03:12 Last modified: 10/5 -2019 05:03:12 Server time: 04/05 -2024 00:58:00