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