Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
public class b2CircleDef extends b2ShapeDef {
public var radius:Number;
public var localPosition:b2Vec2;
public function b2CircleDef(){
localPosition = new b2Vec2(0, 0);
super();
type = b2Shape.e_circleShape;
radius = 1;
}
}
}//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2CircleShape extends b2Shape {
public var m_localPosition:b2Vec2;
public var m_radius:Number;
public function b2CircleShape(_arg1:b2ShapeDef){
m_localPosition = new b2Vec2();
super(_arg1);
var _local2:b2CircleDef = (_arg1 as b2CircleDef);
m_type = e_circleShape;
m_localPosition.SetV(_local2.localPosition);
m_radius = _local2.radius;
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
var _local10:Number;
var _local6:b2Mat22 = _arg1.R;
var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y)));
var _local8:Number = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y)));
var _local9:Number = (_arg4.p1.x - _local7);
_local10 = (_arg4.p1.y - _local8);
var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius));
if (_local11 < 0){
return (false);
};
var _local12:Number = (_arg4.p2.x - _arg4.p1.x);
var _local13:Number = (_arg4.p2.y - _arg4.p1.y);
var _local14:Number = ((_local9 * _local12) + (_local10 * _local13));
var _local15:Number = ((_local12 * _local12) + (_local13 * _local13));
var _local16:Number = ((_local14 * _local14) - (_local15 * _local11));
if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){
return (false);
};
var _local17:Number = -((_local14 + Math.sqrt(_local16)));
if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){
_local17 = (_local17 / _local15);
_arg2[0] = _local17;
_arg3.x = (_local9 + (_local17 * _local12));
_arg3.y = (_local10 + (_local17 * _local13));
_arg3.Normalize();
return (true);
};
return (false);
}
public function GetLocalPosition():b2Vec2{
return (m_localPosition);
}
public function GetRadius():Number{
return (m_radius);
}
override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
var _local4:b2Mat22;
_local4 = _arg2.R;
var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y)));
var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y)));
_local4 = _arg3.R;
var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y)));
var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y)));
_arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius));
_arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius));
}
override public function ComputeMass(_arg1:b2MassData):void{
_arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius);
_arg1.center.SetV(m_localPosition);
_arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y))));
}
override public function UpdateSweepRadius(_arg1:b2Vec2):void{
var _local2:Number = (m_localPosition.x - _arg1.x);
var _local3:Number = (m_localPosition.y - _arg1.y);
_local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop);
}
override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
var _local3:b2Mat22 = _arg2.R;
var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y)));
var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y)));
_arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius));
_arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius));
}
override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
var _local3:b2Mat22 = _arg1.R;
var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y)));
var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y)));
_local4 = (_arg2.x - _local4);
_local5 = (_arg2.y - _local5);
return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius)));
}
}
}//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData)
package Box2D.Collision.Shapes {
public class b2FilterData {
public var maskBits:uint;// = 0xFFFF
public var groupIndex:int;// = 0
public var categoryBits:uint;// = 1
public function Copy():b2FilterData{
var _local1:b2FilterData = new b2FilterData();
_local1.categoryBits = categoryBits;
_local1.maskBits = maskBits;
_local1.groupIndex = groupIndex;
return (_local1);
}
}
}//package Box2D.Collision.Shapes
Section 4
//b2MassData (Box2D.Collision.Shapes.b2MassData)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
public class b2MassData {
public var mass:Number;// = 0
public var center:b2Vec2;
public var I:Number;// = 0
public function b2MassData(){
center = new b2Vec2(0, 0);
super();
}
}
}//package Box2D.Collision.Shapes
Section 5
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2PolygonDef extends b2ShapeDef {
public var vertices:Array;
public var vertexCount:int;
private static var s_mat:b2Mat22 = new b2Mat22();
public function b2PolygonDef(){
vertices = new Array(b2Settings.b2_maxPolygonVertices);
super();
type = b2Shape.e_polygonShape;
vertexCount = 0;
var _local1:int;
while (_local1 < b2Settings.b2_maxPolygonVertices) {
vertices[_local1] = new b2Vec2();
_local1++;
};
}
public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{
var _local5:b2Vec2;
var _local6:b2Mat22;
var _local7:int;
vertexCount = 4;
vertices[0].Set(-(_arg1), -(_arg2));
vertices[1].Set(_arg1, -(_arg2));
vertices[2].Set(_arg1, _arg2);
vertices[3].Set(-(_arg1), _arg2);
if (_arg3){
_local5 = _arg3;
_local6 = s_mat;
_local6.Set(_arg4);
_local7 = 0;
while (_local7 < vertexCount) {
_arg3 = vertices[_local7];
_arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y)));
_arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y)));
_arg3.x = _arg1;
_local7++;
};
};
}
public function SetAsBox(_arg1:Number, _arg2:Number):void{
vertexCount = 4;
vertices[0].Set(-(_arg1), -(_arg2));
vertices[1].Set(_arg1, -(_arg2));
vertices[2].Set(_arg1, _arg2);
vertices[3].Set(-(_arg1), _arg2);
}
}
}//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PolygonShape extends b2Shape {
public var m_coreVertices:Array;
public var m_vertices:Array;
private var s_supportVec:b2Vec2;
public var m_centroid:b2Vec2;
public var m_normals:Array;
public var m_obb:b2OBB;
public var m_vertexCount:int;
private static var s_computeMat:b2Mat22 = new b2Mat22();
private static var s_sweptAABB1:b2AABB = new b2AABB();
private static var s_sweptAABB2:b2AABB = new b2AABB();
public function b2PolygonShape(_arg1:b2ShapeDef){
var _local3:int;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
s_supportVec = new b2Vec2();
m_obb = new b2OBB();
m_vertices = new Array(b2Settings.b2_maxPolygonVertices);
m_normals = new Array(b2Settings.b2_maxPolygonVertices);
m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices);
super(_arg1);
m_type = e_polygonShape;
var _local2:b2PolygonDef = (_arg1 as b2PolygonDef);
m_vertexCount = _local2.vertexCount;
var _local4:int = _local3;
var _local5:int = _local3;
_local3 = 0;
while (_local3 < m_vertexCount) {
m_vertices[_local3] = _local2.vertices[_local3].Copy();
_local3++;
};
_local3 = 0;
while (_local3 < m_vertexCount) {
_local4 = _local3;
_local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0;
_local6 = (m_vertices[_local5].x - m_vertices[_local4].x);
_local7 = (m_vertices[_local5].y - m_vertices[_local4].y);
_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8));
_local3++;
};
m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount);
ComputeOBB(m_obb, m_vertices, m_vertexCount);
_local3 = 0;
while (_local3 < m_vertexCount) {
_local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1);
_local5 = _local3;
_local9 = m_normals[_local4].x;
_local10 = m_normals[_local4].y;
_local11 = m_normals[_local5].x;
_local12 = m_normals[_local5].y;
_local13 = (m_vertices[_local3].x - m_centroid.x);
_local14 = (m_vertices[_local3].y - m_centroid.y);
_local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop);
_local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop);
_local17 = (1 / ((_local9 * _local12) - (_local10 * _local11)));
m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y));
_local3++;
};
}
override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
var _local4:b2AABB = s_sweptAABB1;
var _local5:b2AABB = s_sweptAABB2;
ComputeAABB(_local4, _arg2);
ComputeAABB(_local5, _arg3);
_arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y);
_arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y);
}
public function GetVertices():Array{
return (m_vertices);
}
public function GetCoreVertices():Array{
return (m_coreVertices);
}
public function GetCentroid():b2Vec2{
return (m_centroid);
}
public function GetOBB():b2OBB{
return (m_obb);
}
public function GetFirstVertex(_arg1:b2XForm):b2Vec2{
return (b2Math.b2MulX(_arg1, m_coreVertices[0]));
}
public function Centroid(_arg1:b2XForm):b2Vec2{
return (b2Math.b2MulX(_arg1, m_centroid));
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
var _local8:Number;
var _local9:Number;
var _local10:b2Mat22;
var _local11:b2Vec2;
var _local20:Number;
var _local21:Number;
var _local6:Number = 0;
var _local7:Number = _arg5;
_local8 = (_arg4.p1.x - _arg1.position.x);
_local9 = (_arg4.p1.y - _arg1.position.y);
_local10 = _arg1.R;
var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y));
var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y));
_local8 = (_arg4.p2.x - _arg1.position.x);
_local9 = (_arg4.p2.y - _arg1.position.y);
_local10 = _arg1.R;
var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y));
var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y));
var _local16:Number = (_local14 - _local12);
var _local17:Number = (_local15 - _local13);
var _local18 = -1;
var _local19:int;
while (_local19 < m_vertexCount) {
_local11 = m_vertices[_local19];
_local8 = (_local11.x - _local12);
_local9 = (_local11.y - _local13);
_local11 = m_normals[_local19];
_local20 = ((_local11.x * _local8) + (_local11.y * _local9));
_local21 = ((_local11.x * _local16) + (_local11.y * _local17));
if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){
_local6 = (_local20 / _local21);
_local18 = _local19;
} else {
if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){
_local7 = (_local20 / _local21);
};
};
if (_local7 < _local6){
return (false);
};
_local19++;
};
if (_local18 >= 0){
_arg2[0] = _local6;
_local10 = _arg1.R;
_local11 = m_normals[_local18];
_arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
return (true);
};
return (false);
}
override public function ComputeMass(_arg1:b2MassData):void{
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local2:Number = 0;
var _local3:Number = 0;
var _local4:Number = 0;
var _local5:Number = 0;
var _local6:Number = 0;
var _local7:Number = 0;
var _local8:Number = (1 / 3);
var _local9:int;
while (_local9 < m_vertexCount) {
_local10 = m_vertices[_local9];
_local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0];
_local12 = (_local10.x - _local6);
_local13 = (_local10.y - _local7);
_local14 = (_local11.x - _local6);
_local15 = (_local11.y - _local7);
_local16 = ((_local12 * _local15) - (_local13 * _local14));
_local17 = (0.5 * _local16);
_local4 = (_local4 + _local17);
_local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x)));
_local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y)));
_local18 = _local6;
_local19 = _local7;
_local20 = _local12;
_local21 = _local13;
_local22 = _local14;
_local23 = _local15;
_local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18));
_local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19));
_local5 = (_local5 + (_local16 * (_local24 + _local25)));
_local9++;
};
_arg1.mass = (m_density * _local4);
_local2 = (_local2 * (1 / _local4));
_local3 = (_local3 * (1 / _local4));
_arg1.center.Set(_local2, _local3);
_arg1.I = (m_density * _local5);
}
public function GetNormals():Array{
return (m_normals);
}
public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
var _local4:b2Vec2;
var _local5:b2Mat22;
var _local11:Number;
_local5 = _arg1.R;
var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y));
var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y));
var _local8:int;
_local4 = m_coreVertices[0];
var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7));
var _local10 = 1;
while (_local10 < m_vertexCount) {
_local4 = m_coreVertices[_local10];
_local11 = ((_local4.x * _local6) + (_local4.y * _local7));
if (_local11 > _local9){
_local8 = _local10;
_local9 = _local11;
};
_local10++;
};
_local5 = _arg1.R;
_local4 = m_coreVertices[_local8];
s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y)));
s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y)));
return (s_supportVec);
}
public function GetVertexCount():int{
return (m_vertexCount);
}
override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
var _local3:b2Mat22;
var _local4:b2Vec2;
var _local5:b2Mat22 = s_computeMat;
_local3 = _arg2.R;
_local4 = m_obb.R.col1;
_local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
_local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
_local4 = m_obb.R.col2;
_local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
_local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
_local5.Abs();
var _local6:b2Mat22 = _local5;
_local4 = m_obb.extents;
var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y));
var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y));
_local3 = _arg2.R;
_local4 = m_obb.center;
var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)));
var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)));
_arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8));
_arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8));
}
override public function UpdateSweepRadius(_arg1:b2Vec2):void{
var _local2:b2Vec2;
var _local4:Number;
var _local5:Number;
m_sweepRadius = 0;
var _local3:int;
while (_local3 < m_vertexCount) {
_local2 = m_coreVertices[_local3];
_local4 = (_local2.x - _arg1.x);
_local5 = (_local2.y - _arg1.y);
_local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
if (_local4 > m_sweepRadius){
m_sweepRadius = _local4;
};
_local3++;
};
}
override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
var _local3:b2Vec2;
var _local10:Number;
var _local4:b2Mat22 = _arg1.R;
var _local5:Number = (_arg2.x - _arg1.position.x);
var _local6:Number = (_arg2.y - _arg1.position.y);
var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y));
var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y));
var _local9:int;
while (_local9 < m_vertexCount) {
_local3 = m_vertices[_local9];
_local5 = (_local7 - _local3.x);
_local6 = (_local8 - _local3.y);
_local3 = m_normals[_local9];
_local10 = ((_local3.x * _local5) + (_local3.y * _local6));
if (_local10 > 0){
return (false);
};
_local9++;
};
return (true);
}
public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{
var _local3:b2Vec2;
var _local7:Number;
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
_local3 = new b2Vec2();
var _local4:Number = 0;
var _local5:Number = 0;
var _local6:Number = 0;
_local7 = (1 / 3);
var _local8:int;
while (_local8 < _arg2) {
_local9 = _arg1[_local8];
_local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0];
_local11 = (_local9.x - _local5);
_local12 = (_local9.y - _local6);
_local13 = (_local10.x - _local5);
_local14 = (_local10.y - _local6);
_local15 = ((_local11 * _local14) - (_local12 * _local13));
_local16 = (0.5 * _local15);
_local4 = (_local4 + _local16);
_local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x)));
_local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y)));
_local8++;
};
_local3.x = (_local3.x * (1 / _local4));
_local3.y = (_local3.y * (1 / _local4));
return (_local3);
}
public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{
var _local4:int;
var _local7:b2Vec2;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:int;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:b2Mat22;
var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1));
_local4 = 0;
while (_local4 < _arg3) {
_local5[_local4] = _arg2[_local4];
_local4++;
};
_local5[_arg3] = _local5[0];
var _local6:Number = Number.MAX_VALUE;
_local4 = 1;
while (_local4 <= _arg3) {
_local7 = _local5[int((_local4 - 1))];
_local8 = (_local5[_local4].x - _local7.x);
_local9 = (_local5[_local4].y - _local7.y);
_local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
_local8 = (_local8 / _local10);
_local9 = (_local9 / _local10);
_local11 = -(_local9);
_local12 = _local8;
_local13 = Number.MAX_VALUE;
_local14 = Number.MAX_VALUE;
_local15 = -(Number.MAX_VALUE);
_local16 = -(Number.MAX_VALUE);
_local17 = 0;
while (_local17 < _arg3) {
_local19 = (_local5[_local17].x - _local7.x);
_local20 = (_local5[_local17].y - _local7.y);
_local21 = ((_local8 * _local19) + (_local9 * _local20));
_local22 = ((_local11 * _local19) + (_local12 * _local20));
if (_local21 < _local13){
_local13 = _local21;
};
if (_local22 < _local14){
_local14 = _local22;
};
if (_local21 > _local15){
_local15 = _local21;
};
if (_local22 > _local16){
_local16 = _local22;
};
_local17++;
};
_local18 = ((_local15 - _local13) * (_local16 - _local14));
if (_local18 < (0.95 * _local6)){
_local6 = _local18;
_arg1.R.col1.x = _local8;
_arg1.R.col1.y = _local9;
_arg1.R.col2.x = _local11;
_arg1.R.col2.y = _local12;
_local23 = (0.5 * (_local13 + _local15));
_local24 = (0.5 * (_local14 + _local16));
_local25 = _arg1.R;
_arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24)));
_arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24)));
_arg1.extents.x = (0.5 * (_local15 - _local13));
_arg1.extents.y = (0.5 * (_local16 - _local14));
};
_local4++;
};
}
}
}//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2Shape {
public var m_next:b2Shape;
public var m_type:int;
public var m_sweepRadius:Number;
public var m_density:Number;
public var m_filter:b2FilterData;
public var m_friction:Number;
public var m_isSensor:Boolean;
public var m_restitution:Number;
public var m_userData;
public var m_proxyId:uint;
public var m_body:b2Body;
public static const e_polygonShape:int = 1;
public static const e_unknownShape:int = -1;
public static const e_circleShape:int = 0;
public static const e_shapeTypeCount:int = 2;
private static var s_resetAABB:b2AABB = new b2AABB();
private static var s_syncAABB:b2AABB = new b2AABB();
private static var s_proxyAABB:b2AABB = new b2AABB();
public function b2Shape(_arg1:b2ShapeDef){
m_userData = _arg1.userData;
m_friction = _arg1.friction;
m_restitution = _arg1.restitution;
m_density = _arg1.density;
m_body = null;
m_sweepRadius = 0;
m_next = null;
m_proxyId = b2Pair.b2_nullProxy;
m_filter = _arg1.filter.Copy();
m_isSensor = _arg1.isSensor;
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetSweepRadius():Number{
return (m_sweepRadius);
}
public function GetNext():b2Shape{
return (m_next);
}
public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
}
public function GetType():int{
return (m_type);
}
public function GetRestitution():Number{
return (m_restitution);
}
public function GetFriction():Number{
return (m_friction);
}
public function GetFilterData():b2FilterData{
return (m_filter.Copy());
}
public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
return (false);
}
public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{
if (m_proxyId == b2Pair.b2_nullProxy){
return;
};
_arg1.DestroyProxy(m_proxyId);
var _local3:b2AABB = s_resetAABB;
ComputeAABB(_local3, _arg2);
var _local4:Boolean = _arg1.InRange(_local3);
if (_local4){
m_proxyId = _arg1.CreateProxy(_local3, this);
} else {
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function SetFilterData(_arg1:b2FilterData):void{
m_filter = _arg1.Copy();
}
public function GetUserData(){
return (m_userData);
}
public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{
if (m_proxyId == b2Pair.b2_nullProxy){
return (false);
};
var _local4:b2AABB = s_syncAABB;
ComputeSweptAABB(_local4, _arg2, _arg3);
if (_arg1.InRange(_local4)){
_arg1.MoveProxy(m_proxyId, _local4);
return (true);
};
return (false);
}
public function ComputeMass(_arg1:b2MassData):void{
}
public function IsSensor():Boolean{
return (m_isSensor);
}
public function DestroyProxy(_arg1:b2BroadPhase):void{
if (m_proxyId != b2Pair.b2_nullProxy){
_arg1.DestroyProxy(m_proxyId);
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function UpdateSweepRadius(_arg1:b2Vec2):void{
}
public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
}
public function GetBody():b2Body{
return (m_body);
}
public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{
var _local3:b2AABB = s_proxyAABB;
ComputeAABB(_local3, _arg2);
var _local4:Boolean = _arg1.InRange(_local3);
if (_local4){
m_proxyId = _arg1.CreateProxy(_local3, this);
} else {
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
return (false);
}
public static function Destroy(_arg1:b2Shape, _arg2):void{
}
public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{
switch (_arg1.type){
case e_circleShape:
return (new b2CircleShape(_arg1));
case e_polygonShape:
return (new b2PolygonShape(_arg1));
default:
return (null);
};
}
}
}//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef)
package Box2D.Collision.Shapes {
public class b2ShapeDef {
public var friction:Number;// = 0.2
public var isSensor:Boolean;// = false
public var density:Number;// = 0
public var restitution:Number;// = 0
public var userData;// = null
public var filter:b2FilterData;
public var type:int;
public function b2ShapeDef(){
type = b2Shape.e_unknownShape;
filter = new b2FilterData();
super();
}
}
}//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2AABB {
public var upperBound:b2Vec2;
public var lowerBound:b2Vec2;
public function b2AABB(){
lowerBound = new b2Vec2();
upperBound = new b2Vec2();
super();
}
public function IsValid():Boolean{
var _local1:Number = (upperBound.x - lowerBound.x);
var _local2:Number = (upperBound.y - lowerBound.y);
var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0)));
_local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid()));
return (_local3);
}
}
}//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound)
package Box2D.Collision {
public class b2Bound {
public var value:uint;
public var proxyId:uint;
public var stabbingCount:uint;
public function Swap(_arg1:b2Bound):void{
var _local2:uint = value;
var _local3:uint = proxyId;
var _local4:uint = stabbingCount;
value = _arg1.value;
proxyId = _arg1.proxyId;
stabbingCount = _arg1.stabbingCount;
_arg1.value = _local2;
_arg1.proxyId = _local3;
_arg1.stabbingCount = _local4;
}
public function IsLower():Boolean{
return (((value & 1) == 0));
}
public function IsUpper():Boolean{
return (((value & 1) == 1));
}
}
}//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues)
package Box2D.Collision {
public class b2BoundValues {
public var lowerValues:Array;
public var upperValues:Array;
public function b2BoundValues(){
lowerValues = [0, 0];
upperValues = [0, 0];
super();
}
}
}//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2BroadPhase {
public var m_bounds:Array;
public var m_quantizationFactor:b2Vec2;
public var m_worldAABB:b2AABB;
public var m_freeProxy:uint;
public var m_proxyCount:int;
public var m_proxyPool:Array;
public var m_queryResultCount:int;
public var m_pairManager:b2PairManager;
public var m_timeStamp:uint;
public var m_queryResults:Array;
public static const b2_nullEdge:uint = b2Settings.USHRT_MAX;
public static const b2_invalid:uint = b2Settings.USHRT_MAX;
public static var s_validate:Boolean = false;
public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){
var _local3:int;
var _local5:Number;
var _local6:b2Proxy;
var _local7:int;
m_pairManager = new b2PairManager();
m_proxyPool = new Array(b2Settings.b2_maxPairs);
m_bounds = new Array((2 * b2Settings.b2_maxProxies));
m_queryResults = new Array(b2Settings.b2_maxProxies);
m_quantizationFactor = new b2Vec2();
super();
m_pairManager.Initialize(this, _arg2);
m_worldAABB = _arg1;
m_proxyCount = 0;
_local3 = 0;
while (_local3 < b2Settings.b2_maxProxies) {
m_queryResults[_local3] = 0;
_local3++;
};
m_bounds = new Array(2);
_local3 = 0;
while (_local3 < 2) {
m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies));
_local7 = 0;
while (_local7 < (2 * b2Settings.b2_maxProxies)) {
m_bounds[_local3][_local7] = new b2Bound();
_local7++;
};
_local3++;
};
var _local4:Number = (_arg1.upperBound.x - _arg1.lowerBound.x);
_local5 = (_arg1.upperBound.y - _arg1.lowerBound.y);
m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4);
m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5);
_local3 = 0;
while (_local3 < (b2Settings.b2_maxProxies - 1)) {
_local6 = new b2Proxy();
m_proxyPool[_local3] = _local6;
_local6.SetNext((_local3 + 1));
_local6.timeStamp = 0;
_local6.overlapCount = b2_invalid;
_local6.userData = null;
_local3++;
};
_local6 = new b2Proxy();
m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6;
_local6.SetNext(b2Pair.b2_nullProxy);
_local6.timeStamp = 0;
_local6.overlapCount = b2_invalid;
_local6.userData = null;
m_freeProxy = 0;
m_timeStamp = 1;
m_queryResultCount = 0;
}
public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{
var _local6:uint;
var _local7:uint;
var _local12:b2Proxy;
var _local4:Array = new Array();
var _local5:Array = new Array();
ComputeBounds(_local4, _local5, _arg1);
var _local8:Array = [_local6];
var _local9:Array = [_local7];
Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0);
Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1);
var _local10:int;
var _local11:int;
while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) {
_local12 = m_proxyPool[m_queryResults[_local11]];
_arg2[_local11] = _local12.userData;
_local11++;
_local10++;
};
m_queryResultCount = 0;
IncrementTimeStamp();
return (_local10);
}
public function Commit():void{
m_pairManager.Commit();
}
public function GetProxy(_arg1:int):b2Proxy{
var _local2:b2Proxy = m_proxyPool[_arg1];
if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){
return (null);
};
return (_local2);
}
private function IncrementTimeStamp():void{
var _local1:uint;
if (m_timeStamp == b2Settings.USHRT_MAX){
_local1 = 0;
while (_local1 < b2Settings.b2_maxProxies) {
(m_proxyPool[_local1] as b2Proxy).timeStamp = 0;
_local1++;
};
m_timeStamp = 1;
} else {
m_timeStamp++;
};
}
private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{
var _local10:b2Bound;
var _local12:int;
var _local13:int;
var _local14:b2Proxy;
var _local8:uint = BinarySearch(_arg5, _arg6, _arg3);
var _local9:uint = BinarySearch(_arg5, _arg6, _arg4);
var _local11:uint = _local8;
while (_local11 < _local9) {
_local10 = _arg5[_local11];
if (_local10.IsLower()){
IncrementOverlapCount(_local10.proxyId);
};
_local11++;
};
if (_local8 > 0){
_local12 = (_local8 - 1);
_local10 = _arg5[_local12];
_local13 = _local10.stabbingCount;
while (_local13) {
_local10 = _arg5[_local12];
if (_local10.IsLower()){
_local14 = m_proxyPool[_local10.proxyId];
if (_local8 <= _local14.upperBounds[_arg7]){
IncrementOverlapCount(_local10.proxyId);
_local13--;
};
};
_local12--;
};
};
_arg1[0] = _local8;
_arg2[0] = _local9;
}
private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{
var _local4:Array;
var _local5:b2Bound;
var _local6:b2Bound;
var _local3:int;
while (_local3 < 2) {
_local4 = m_bounds[_local3];
_local5 = _local4[_arg1.lowerBounds[_local3]];
_local6 = _local4[_arg2.upperBounds[_local3]];
if (_local5.value > _local6.value){
return (false);
};
_local5 = _local4[_arg1.upperBounds[_local3]];
_local6 = _local4[_arg2.lowerBounds[_local3]];
if (_local5.value < _local6.value){
return (false);
};
_local3++;
};
return (true);
}
private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{
var _local4:Number = _arg3.lowerBound.x;
var _local5:Number = _arg3.lowerBound.y;
_local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x);
_local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y);
_local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x);
_local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y);
var _local6:Number = _arg3.upperBound.x;
var _local7:Number = _arg3.upperBound.y;
_local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x);
_local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y);
_local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x);
_local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y);
_arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1));
_arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1);
_arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1));
_arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1);
}
public function CreateProxy(_arg1:b2AABB, _arg2):uint{
var _local3:uint;
var _local4:b2Proxy;
var _local11:Array;
var _local12:uint;
var _local13:uint;
var _local14:Array;
var _local15:Array;
var _local16:Array;
var _local17:int;
var _local18:int;
var _local19:b2Bound;
var _local20:b2Bound;
var _local21:b2Bound;
var _local22:int;
var _local23:b2Proxy;
var _local5:uint = m_freeProxy;
_local4 = m_proxyPool[_local5];
m_freeProxy = _local4.GetNext();
_local4.overlapCount = 0;
_local4.userData = _arg2;
var _local6:uint = (2 * m_proxyCount);
var _local7:Array = new Array();
var _local8:Array = new Array();
ComputeBounds(_local7, _local8, _arg1);
var _local9:int;
while (_local9 < 2) {
_local11 = m_bounds[_local9];
_local14 = [_local12];
_local15 = [_local13];
Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9);
_local12 = _local14[0];
_local13 = _local15[0];
_local16 = new Array();
_local18 = (_local6 - _local13);
_local17 = 0;
while (_local17 < _local18) {
_local16[_local17] = new b2Bound();
_local19 = _local16[_local17];
_local20 = _local11[int((_local13 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local18 = _local16.length;
_local22 = (_local13 + 2);
_local17 = 0;
while (_local17 < _local18) {
_local20 = _local16[_local17];
_local19 = _local11[int((_local22 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local16 = new Array();
_local18 = (_local13 - _local12);
_local17 = 0;
while (_local17 < _local18) {
_local16[_local17] = new b2Bound();
_local19 = _local16[_local17];
_local20 = _local11[int((_local12 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local18 = _local16.length;
_local22 = (_local12 + 1);
_local17 = 0;
while (_local17 < _local18) {
_local20 = _local16[_local17];
_local19 = _local11[int((_local22 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local13++;
_local19 = _local11[_local12];
_local20 = _local11[_local13];
_local19.value = _local7[_local9];
_local19.proxyId = _local5;
_local20.value = _local8[_local9];
_local20.proxyId = _local5;
_local21 = _local11[int((_local12 - 1))];
_local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount;
_local21 = _local11[int((_local13 - 1))];
_local20.stabbingCount = _local21.stabbingCount;
_local3 = _local12;
while (_local3 < _local13) {
_local21 = _local11[_local3];
_local21.stabbingCount++;
_local3++;
};
_local3 = _local12;
while (_local3 < (_local6 + 2)) {
_local19 = _local11[_local3];
_local23 = m_proxyPool[_local19.proxyId];
if (_local19.IsLower()){
_local23.lowerBounds[_local9] = _local3;
} else {
_local23.upperBounds[_local9] = _local3;
};
_local3++;
};
_local9++;
};
m_proxyCount++;
var _local10:int;
while (_local10 < m_queryResultCount) {
m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]);
_local10++;
};
m_pairManager.Commit();
m_queryResultCount = 0;
IncrementTimeStamp();
return (_local5);
}
public function DestroyProxy(_arg1:uint):void{
var _local2:b2Bound;
var _local3:b2Bound;
var _local8:Array;
var _local9:uint;
var _local10:uint;
var _local11:uint;
var _local12:uint;
var _local13:Array;
var _local14:int;
var _local15:int;
var _local16:int;
var _local17:uint;
var _local18:int;
var _local19:b2Proxy;
var _local4:b2Proxy = m_proxyPool[_arg1];
var _local5:int = (2 * m_proxyCount);
var _local6:int;
while (_local6 < 2) {
_local8 = m_bounds[_local6];
_local9 = _local4.lowerBounds[_local6];
_local10 = _local4.upperBounds[_local6];
_local2 = _local8[_local9];
_local11 = _local2.value;
_local3 = _local8[_local10];
_local12 = _local3.value;
_local13 = new Array();
_local15 = ((_local10 - _local9) - 1);
_local14 = 0;
while (_local14 < _local15) {
_local13[_local14] = new b2Bound();
_local2 = _local13[_local14];
_local3 = _local8[int(((_local9 + 1) + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = _local13.length;
_local16 = _local9;
_local14 = 0;
while (_local14 < _local15) {
_local3 = _local13[_local14];
_local2 = _local8[int((_local16 + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local13 = new Array();
_local15 = ((_local5 - _local10) - 1);
_local14 = 0;
while (_local14 < _local15) {
_local13[_local14] = new b2Bound();
_local2 = _local13[_local14];
_local3 = _local8[int(((_local10 + 1) + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = _local13.length;
_local16 = (_local10 - 1);
_local14 = 0;
while (_local14 < _local15) {
_local3 = _local13[_local14];
_local2 = _local8[int((_local16 + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = (_local5 - 2);
_local17 = _local9;
while (_local17 < _local15) {
_local2 = _local8[_local17];
_local19 = m_proxyPool[_local2.proxyId];
if (_local2.IsLower()){
_local19.lowerBounds[_local6] = _local17;
} else {
_local19.upperBounds[_local6] = _local17;
};
_local17++;
};
_local15 = (_local10 - 1);
_local18 = _local9;
while (_local18 < _local15) {
_local2 = _local8[_local18];
_local2.stabbingCount--;
_local18++;
};
Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6);
_local6++;
};
var _local7:int;
while (_local7 < m_queryResultCount) {
m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]);
_local7++;
};
m_pairManager.Commit();
m_queryResultCount = 0;
IncrementTimeStamp();
_local4.userData = null;
_local4.overlapCount = b2_invalid;
_local4.lowerBounds[0] = b2_invalid;
_local4.lowerBounds[1] = b2_invalid;
_local4.upperBounds[0] = b2_invalid;
_local4.upperBounds[1] = b2_invalid;
_local4.SetNext(m_freeProxy);
m_freeProxy = _arg1;
m_proxyCount--;
}
public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{
var _local4:Array;
var _local5:b2Bound;
var _local3:int;
while (_local3 < 2) {
_local4 = m_bounds[_local3];
_local5 = _local4[_arg2.upperBounds[_local3]];
if (_arg1.lowerValues[_local3] > _local5.value){
return (false);
};
_local5 = _local4[_arg2.lowerBounds[_local3]];
if (_arg1.upperValues[_local3] < _local5.value){
return (false);
};
_local3++;
};
return (true);
}
public function Validate():void{
var _local1:b2Pair;
var _local2:b2Proxy;
var _local3:b2Proxy;
var _local4:Boolean;
var _local6:b2Bound;
var _local7:uint;
var _local8:uint;
var _local9:uint;
var _local10:b2Bound;
var _local5:int;
while (_local5 < 2) {
_local6 = m_bounds[_local5];
_local7 = (2 * m_proxyCount);
_local8 = 0;
_local9 = 0;
while (_local9 < _local7) {
_local10 = _local6[_local9];
if (_local10.IsLower() == true){
_local8++;
} else {
_local8--;
};
_local9++;
};
_local5++;
};
}
private function IncrementOverlapCount(_arg1:uint):void{
var _local2:b2Proxy = m_proxyPool[_arg1];
if (_local2.timeStamp < m_timeStamp){
_local2.timeStamp = m_timeStamp;
_local2.overlapCount = 1;
} else {
_local2.overlapCount = 2;
m_queryResults[m_queryResultCount] = _arg1;
m_queryResultCount++;
};
}
public function InRange(_arg1:b2AABB):Boolean{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = _arg1.lowerBound.x;
_local3 = _arg1.lowerBound.y;
_local2 = (_local2 - m_worldAABB.upperBound.x);
_local3 = (_local3 - m_worldAABB.upperBound.y);
_local4 = m_worldAABB.lowerBound.x;
_local5 = m_worldAABB.lowerBound.y;
_local4 = (_local4 - _arg1.upperBound.x);
_local5 = (_local5 - _arg1.upperBound.y);
_local2 = b2Math.b2Max(_local2, _local4);
_local3 = b2Math.b2Max(_local3, _local5);
return ((b2Math.b2Max(_local2, _local3) < 0));
}
public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{
var _local3:Array;
var _local4:int;
var _local5:uint;
var _local6:uint;
var _local7:b2Bound;
var _local8:b2Bound;
var _local9:b2Bound;
var _local10:uint;
var _local11:b2Proxy;
var _local16:Array;
var _local17:uint;
var _local18:uint;
var _local19:uint;
var _local20:uint;
var _local21:int;
var _local22:int;
var _local23:uint;
var _local24:b2Proxy;
if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){
return;
};
if (_arg2.IsValid() == false){
return;
};
var _local12:uint = (2 * m_proxyCount);
var _local13:b2Proxy = m_proxyPool[_arg1];
var _local14:b2BoundValues = new b2BoundValues();
ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2);
var _local15:b2BoundValues = new b2BoundValues();
_local5 = 0;
while (_local5 < 2) {
_local7 = m_bounds[_local5][_local13.lowerBounds[_local5]];
_local15.lowerValues[_local5] = _local7.value;
_local7 = m_bounds[_local5][_local13.upperBounds[_local5]];
_local15.upperValues[_local5] = _local7.value;
_local5++;
};
_local5 = 0;
while (_local5 < 2) {
_local16 = m_bounds[_local5];
_local17 = _local13.lowerBounds[_local5];
_local18 = _local13.upperBounds[_local5];
_local19 = _local14.lowerValues[_local5];
_local20 = _local14.upperValues[_local5];
_local7 = _local16[_local17];
_local21 = (_local19 - _local7.value);
_local7.value = _local19;
_local7 = _local16[_local18];
_local22 = (_local20 - _local7.value);
_local7.value = _local20;
if (_local21 < 0){
_local6 = _local17;
while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) {
_local7 = _local16[_local6];
_local8 = _local16[int((_local6 - 1))];
_local23 = _local8.proxyId;
_local24 = m_proxyPool[_local8.proxyId];
_local8.stabbingCount++;
if (_local8.IsUpper() == true){
if (TestOverlap(_local14, _local24)){
m_pairManager.AddBufferedPair(_arg1, _local23);
};
_local3 = _local24.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount++;
} else {
_local3 = _local24.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount--;
};
_local3 = _local13.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.Swap(_local8);
_local6--;
};
};
if (_local22 > 0){
_local6 = _local18;
while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) {
_local7 = _local16[_local6];
_local9 = _local16[int((_local6 + 1))];
_local10 = _local9.proxyId;
_local11 = m_proxyPool[_local10];
_local9.stabbingCount++;
if (_local9.IsLower() == true){
if (TestOverlap(_local14, _local11)){
m_pairManager.AddBufferedPair(_arg1, _local10);
};
_local3 = _local11.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount++;
} else {
_local3 = _local11.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount--;
};
_local3 = _local13.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.Swap(_local9);
_local6++;
};
};
if (_local21 > 0){
_local6 = _local17;
while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) {
_local7 = _local16[_local6];
_local9 = _local16[int((_local6 + 1))];
_local10 = _local9.proxyId;
_local11 = m_proxyPool[_local10];
_local9.stabbingCount--;
if (_local9.IsUpper()){
if (TestOverlap(_local15, _local11)){
m_pairManager.RemoveBufferedPair(_arg1, _local10);
};
_local3 = _local11.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount--;
} else {
_local3 = _local11.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount++;
};
_local3 = _local13.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.Swap(_local9);
_local6++;
};
};
if (_local22 < 0){
_local6 = _local18;
while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) {
_local7 = _local16[_local6];
_local8 = _local16[int((_local6 - 1))];
_local23 = _local8.proxyId;
_local24 = m_proxyPool[_local23];
_local8.stabbingCount--;
if (_local8.IsLower() == true){
if (TestOverlap(_local15, _local24)){
m_pairManager.RemoveBufferedPair(_arg1, _local23);
};
_local3 = _local24.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount--;
} else {
_local3 = _local24.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount++;
};
_local3 = _local13.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.Swap(_local8);
_local6--;
};
};
_local5++;
};
}
public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{
var _local6:int;
var _local7:b2Bound;
var _local4:int;
var _local5:int = (_arg2 - 1);
while (_local4 <= _local5) {
_local6 = ((_local4 + _local5) / 2);
_local7 = _arg1[_local6];
if (_local7.value > _arg3){
_local5 = (_local6 - 1);
} else {
if (_local7.value < _arg3){
_local4 = (_local6 + 1);
} else {
return (uint(_local6));
};
};
};
return (uint(_local4));
}
}
}//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair)
package Box2D.Collision {
public class b2BufferedPair {
public var proxyId1:uint;
public var proxyId2:uint;
}
}//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Collision {
public static const b2_nullFeature:uint = 0xFF;
private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2();
public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{
var _local11:b2Mat22;
var _local12:b2Vec2;
var _local25:Number;
var _local6:int = _arg1.m_vertexCount;
var _local7:Array = _arg1.m_vertices;
var _local8:Array = _arg1.m_normals;
var _local9:int = _arg4.m_vertexCount;
var _local10:Array = _arg4.m_vertices;
_local11 = _arg2.R;
_local12 = _local8[_arg3];
var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y));
var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y));
_local11 = _arg5.R;
var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14));
var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14));
var _local17:int;
var _local18:Number = Number.MAX_VALUE;
var _local19:int;
while (_local19 < _local9) {
_local12 = _local10[_local19];
_local25 = ((_local12.x * _local15) + (_local12.y * _local16));
if (_local25 < _local18){
_local18 = _local25;
_local17 = _local19;
};
_local19++;
};
_local12 = _local7[_arg3];
_local11 = _arg2.R;
var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)));
var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)));
_local12 = _local10[_local17];
_local11 = _arg5.R;
var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)));
var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)));
_local22 = (_local22 - _local20);
_local23 = (_local23 - _local21);
var _local24:Number = ((_local22 * _local13) + (_local23 * _local14));
return (_local24);
}
public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{
var _local3:b2Vec2 = _arg2.lowerBound;
var _local4:b2Vec2 = _arg1.upperBound;
var _local5:Number = (_local3.x - _local4.x);
var _local6:Number = (_local3.y - _local4.y);
_local3 = _arg1.lowerBound;
_local4 = _arg2.upperBound;
var _local7:Number = (_local3.x - _local4.x);
var _local8:Number = (_local3.y - _local4.y);
if ((((_local5 > 0)) || ((_local6 > 0)))){
return (false);
};
if ((((_local7 > 0)) || ((_local8 > 0)))){
return (false);
};
return (true);
}
public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{
var _local12:b2Mat22;
var _local13:b2Vec2;
var _local20:ClipVertex;
var _local23:Number;
var _local7:int = _arg2.m_vertexCount;
var _local8:Array = _arg2.m_normals;
var _local9:int = _arg5.m_vertexCount;
var _local10:Array = _arg5.m_vertices;
var _local11:Array = _arg5.m_normals;
_local12 = _arg3.R;
_local13 = _local8[_arg4];
var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y));
var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y));
_local12 = _arg6.R;
var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15));
_local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15));
_local14 = _local16;
var _local17:int;
var _local18:Number = Number.MAX_VALUE;
var _local19:int;
while (_local19 < _local9) {
_local13 = _local11[_local19];
_local23 = ((_local14 * _local13.x) + (_local15 * _local13.y));
if (_local23 < _local18){
_local18 = _local23;
_local17 = _local19;
};
_local19++;
};
var _local21:int = _local17;
var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0;
_local20 = _arg1[0];
_local13 = _local10[_local21];
_local12 = _arg6.R;
_local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)));
_local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)));
_local20.id.features.referenceEdge = _arg4;
_local20.id.features.incidentEdge = _local21;
_local20.id.features.incidentVertex = 0;
_local20 = _arg1[1];
_local13 = _local10[_local22];
_local12 = _arg6.R;
_local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)));
_local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)));
_local20.id.features.referenceEdge = _arg4;
_local20.id.features.incidentEdge = _local22;
_local20.id.features.incidentVertex = 1;
}
public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{
var _local6:ClipVertex;
var _local13:b2PolygonShape;
var _local14:b2PolygonShape;
var _local17:int;
var _local18:uint;
var _local34:int;
var _local37:b2Vec2;
var _local38:Number;
var _local39:b2ManifoldPoint;
_arg1.pointCount = 0;
var _local7:int;
var _local8:Array = [_local7];
var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5);
_local7 = _local8[0];
if (_local9 > 0){
return;
};
var _local10:int;
var _local11:Array = [_local10];
var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3);
_local10 = _local11[0];
if (_local12 > 0){
return;
};
var _local15:b2XForm = new b2XForm();
var _local16:b2XForm = new b2XForm();
var _local19:Number = 0.98;
var _local20:Number = 0.001;
if (_local12 > ((_local19 * _local9) + _local20)){
_local13 = _arg4;
_local14 = _arg2;
_local15.Set(_arg5);
_local16.Set(_arg3);
_local17 = _local10;
_local18 = 1;
} else {
_local13 = _arg2;
_local14 = _arg4;
_local15.Set(_arg3);
_local16.Set(_arg5);
_local17 = _local7;
_local18 = 0;
};
var _local21:Array = [new ClipVertex(), new ClipVertex()];
FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16);
var _local22:int = _local13.m_vertexCount;
var _local23:Array = _local13.m_vertices;
var _local24:b2Vec2 = _local23[_local17];
var _local25:b2Vec2 = _local24.Copy();
if ((_local17 + 1) < _local22){
_local24 = _local23[int((_local17 + 1))];
_local37 = _local24.Copy();
} else {
_local24 = _local23[0];
_local37 = _local24.Copy();
};
var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25);
var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25));
_local27.Normalize();
var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1);
_local25 = b2Math.b2MulX(_local15, _local25);
_local37 = b2Math.b2MulX(_local15, _local37);
var _local29:Number = b2Math.b2Dot(_local28, _local25);
var _local30:Number = -(b2Math.b2Dot(_local27, _local25));
var _local31:Number = b2Math.b2Dot(_local27, _local37);
var _local32:Array = [new ClipVertex(), new ClipVertex()];
var _local33:Array = [new ClipVertex(), new ClipVertex()];
_local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30);
if (_local34 < 2){
return;
};
_local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31);
if (_local34 < 2){
return;
};
_arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy();
var _local35:int;
var _local36:int;
while (_local36 < b2Settings.b2_maxManifoldPoints) {
_local6 = _local33[_local36];
_local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29);
if (_local38 <= 0){
_local39 = _arg1.points[_local35];
_local39.separation = _local38;
_local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v);
_local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v);
_local39.id.key = _local6.id._key;
_local39.id.features.flip = _local18;
_local35++;
};
_local36++;
};
_arg1.pointCount = _local35;
}
public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{
var _local8:b2Vec2;
var _local9:b2Mat22;
var _local22:int;
var _local23:Number;
var _local24:int;
var _local25:Number;
var _local6:int = _arg2.m_vertexCount;
var _local7:Array = _arg2.m_normals;
_local9 = _arg5.R;
_local8 = _arg4.m_centroid;
var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)));
var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)));
_local9 = _arg3.R;
_local8 = _arg2.m_centroid;
_local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))));
_local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))));
var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y));
var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y));
var _local14:int;
var _local15:Number = -(Number.MAX_VALUE);
var _local16:int;
while (_local16 < _local6) {
_local8 = _local7[_local16];
_local25 = ((_local8.x * _local12) + (_local8.y * _local13));
if (_local25 > _local15){
_local15 = _local25;
_local14 = _local16;
};
_local16++;
};
var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5);
if (_local17 > 0){
return (_local17);
};
var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1);
var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5);
if (_local19 > 0){
return (_local19);
};
var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0;
var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5);
if (_local21 > 0){
return (_local21);
};
if ((((_local19 > _local17)) && ((_local19 > _local21)))){
_local24 = -1;
_local22 = _local18;
_local23 = _local19;
} else {
if (_local21 > _local17){
_local24 = 1;
_local22 = _local20;
_local23 = _local21;
} else {
_arg1[0] = _local14;
return (_local17);
};
};
while (true) {
if (_local24 == -1){
_local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1);
} else {
_local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0;
};
_local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5);
if (_local17 > 0){
return (_local17);
};
if (_local17 > _local23){
_local22 = _local14;
_local23 = _local17;
} else {
break;
};
};
_arg1[0] = _local22;
return (_local23);
}
public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{
var _local5:ClipVertex;
var _local6:int;
var _local7:b2Vec2;
var _local8:b2Vec2;
var _local9:Number;
var _local11:Number;
var _local12:b2Vec2;
var _local13:ClipVertex;
_local6 = 0;
_local5 = _arg2[0];
_local7 = _local5.v;
_local5 = _arg2[1];
_local8 = _local5.v;
_local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4);
var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4);
if (_local9 <= 0){
var _temp1 = _local6;
_local6 = (_local6 + 1);
var _local14 = _temp1;
_arg1[_local14] = _arg2[0];
};
if (_local10 <= 0){
var _temp2 = _local6;
_local6 = (_local6 + 1);
_local14 = _temp2;
_arg1[_local14] = _arg2[1];
};
if ((_local9 * _local10) < 0){
_local11 = (_local9 / (_local9 - _local10));
_local5 = _arg1[_local6];
_local12 = _local5.v;
_local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x)));
_local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y)));
_local5 = _arg1[_local6];
if (_local9 > 0){
_local13 = _arg2[0];
_local5.id = _local13.id;
} else {
_local13 = _arg2[1];
_local5.id = _local13.id;
};
_local6++;
};
return (_local6);
}
public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
var _local6:b2Mat22;
var _local7:b2Vec2;
var _local18:Number;
var _local24:Number;
var _local25:Number;
_arg1.pointCount = 0;
_local6 = _arg3.R;
_local7 = _arg2.m_localPosition;
var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)));
var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)));
_local6 = _arg5.R;
_local7 = _arg4.m_localPosition;
var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)));
var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)));
var _local12:Number = (_local10 - _local8);
var _local13:Number = (_local11 - _local9);
var _local14:Number = ((_local12 * _local12) + (_local13 * _local13));
var _local15:Number = _arg2.m_radius;
var _local16:Number = _arg4.m_radius;
var _local17:Number = (_local15 + _local16);
if (_local14 > (_local17 * _local17)){
return;
};
if (_local14 < Number.MIN_VALUE){
_local18 = -(_local17);
_arg1.normal.Set(0, 1);
} else {
_local24 = Math.sqrt(_local14);
_local18 = (_local24 - _local17);
_local25 = (1 / _local24);
_arg1.normal.x = (_local25 * _local12);
_arg1.normal.y = (_local25 * _local13);
};
_arg1.pointCount = 1;
var _local19:b2ManifoldPoint = _arg1.points[0];
_local19.id.key = 0;
_local19.separation = _local18;
_local8 = (_local8 + (_local15 * _arg1.normal.x));
_local9 = (_local9 + (_local15 * _arg1.normal.y));
_local10 = (_local10 - (_local16 * _arg1.normal.x));
_local11 = (_local11 - (_local16 * _arg1.normal.y));
var _local20:Number = (0.5 * (_local8 + _local10));
var _local21:Number = (0.5 * (_local9 + _local11));
var _local22:Number = (_local20 - _arg3.position.x);
var _local23:Number = (_local21 - _arg3.position.y);
_local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y));
_local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y));
_local22 = (_local20 - _arg5.position.x);
_local23 = (_local21 - _arg5.position.y);
_local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y));
_local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y));
}
public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
var _local6:b2ManifoldPoint;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:b2Vec2;
var _local12:b2Mat22;
var _local17:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
_arg1.pointCount = 0;
_local12 = _arg5.R;
_local11 = _arg4.m_localPosition;
var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)));
var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)));
_local7 = (_local13 - _arg3.position.x);
_local8 = (_local14 - _arg3.position.y);
_local12 = _arg3.R;
var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
var _local18:int;
var _local19:Number = -(Number.MAX_VALUE);
var _local20:Number = _arg4.m_radius;
var _local21:int = _arg2.m_vertexCount;
var _local22:Array = _arg2.m_vertices;
var _local23:Array = _arg2.m_normals;
var _local24:int;
while (_local24 < _local21) {
_local11 = _local22[_local24];
_local7 = (_local15 - _local11.x);
_local8 = (_local16 - _local11.y);
_local11 = _local23[_local24];
_local34 = ((_local11.x * _local7) + (_local11.y * _local8));
if (_local34 > _local20){
return;
};
if (_local34 > _local19){
_local19 = _local34;
_local18 = _local24;
};
_local24++;
};
if (_local19 < Number.MIN_VALUE){
_arg1.pointCount = 1;
_local11 = _local23[_local18];
_local12 = _arg3.R;
_arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y));
_arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y));
_local6 = _arg1.points[0];
_local6.id.features.incidentEdge = _local18;
_local6.id.features.incidentVertex = b2_nullFeature;
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
_local9 = (_local13 - (_local20 * _arg1.normal.x));
_local10 = (_local14 - (_local20 * _arg1.normal.y));
_local7 = (_local9 - _arg3.position.x);
_local8 = (_local10 - _arg3.position.y);
_local12 = _arg3.R;
_local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local7 = (_local9 - _arg5.position.x);
_local8 = (_local10 - _arg5.position.y);
_local12 = _arg5.R;
_local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local6.separation = (_local19 - _local20);
return;
};
var _local25:int = _local18;
var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0;
_local11 = _local22[_local25];
var _local27:b2Vec2 = _local22[_local26];
var _local28:Number = (_local27.x - _local11.x);
var _local29:Number = (_local27.y - _local11.y);
var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29)));
_local28 = (_local28 / _local30);
_local29 = (_local29 / _local30);
_local7 = (_local15 - _local11.x);
_local8 = (_local16 - _local11.y);
var _local31:Number = ((_local7 * _local28) + (_local8 * _local29));
_local6 = _arg1.points[0];
if (_local31 <= 0){
_local32 = _local11.x;
_local33 = _local11.y;
_local6.id.features.incidentEdge = b2_nullFeature;
_local6.id.features.incidentVertex = _local25;
} else {
if (_local31 >= _local30){
_local32 = _local27.x;
_local33 = _local27.y;
_local6.id.features.incidentEdge = b2_nullFeature;
_local6.id.features.incidentVertex = _local26;
} else {
_local32 = ((_local28 * _local31) + _local11.x);
_local33 = ((_local29 * _local31) + _local11.y);
_local6.id.features.incidentEdge = _local18;
_local6.id.features.incidentVertex = 0;
};
};
_local7 = (_local15 - _local32);
_local8 = (_local16 - _local33);
_local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local7 = (_local7 / _local17);
_local8 = (_local8 / _local17);
if (_local17 > _local20){
return;
};
_arg1.pointCount = 1;
_local12 = _arg3.R;
_arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8));
_arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8));
_local9 = (_local13 - (_local20 * _arg1.normal.x));
_local10 = (_local14 - (_local20 * _arg1.normal.y));
_local7 = (_local9 - _arg3.position.x);
_local8 = (_local10 - _arg3.position.y);
_local12 = _arg3.R;
_local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local7 = (_local9 - _arg5.position.x);
_local8 = (_local10 - _arg5.position.y);
_local12 = _arg5.R;
_local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local6.separation = (_local17 - _local20);
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
}
}
}//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID)
package Box2D.Collision {
public class b2ContactID {
public var _key:uint;
public var features:Features;
public function b2ContactID(){
features = new Features();
super();
features._m_id = this;
}
public function Set(_arg1:b2ContactID):void{
key = _arg1._key;
}
public function Copy():b2ContactID{
var _local1:b2ContactID = new b2ContactID();
_local1.key = key;
return (_local1);
}
public function set key(_arg1:uint):void{
_key = _arg1;
features._referenceEdge = (_key & 0xFF);
features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF);
features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF);
features._flip = (((_key & 4278190080) >> 24) & 0xFF);
}
public function get key():uint{
return (_key);
}
}
}//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2ContactPoint {
public var friction:Number;
public var separation:Number;
public var normal:b2Vec2;
public var position:b2Vec2;
public var restitution:Number;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var id:b2ContactID;
public var velocity:b2Vec2;
public function b2ContactPoint(){
position = new b2Vec2();
velocity = new b2Vec2();
normal = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Distance {
private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
private static var gPoint:b2Point = new b2Point();
public static var g_GJK_Iterations:int = 0;
public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{
var _local6:b2Vec2;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local4:Number = (100 * Number.MIN_VALUE);
var _local5:int;
while (_local5 < _arg3) {
_local6 = _arg2[_local5];
_local7 = Math.abs((_arg1.x - _local6.x));
_local8 = Math.abs((_arg1.y - _local6.y));
_local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x));
_local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y));
if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){
return (true);
};
_local5++;
};
return (false);
}
public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{
var _local7:b2Vec2;
var _local15:Number;
var _local16:Number;
var _local17:b2Vec2;
var _local18:b2Vec2;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:int;
var _local8:Array = s_p1s;
var _local9:Array = s_p2s;
var _local10:Array = s_points;
var _local11:int;
_arg1.SetV(_arg3.GetFirstVertex(_arg4));
_arg2.SetV(_arg5.GetFirstVertex(_arg6));
var _local12:Number = 0;
var _local13 = 20;
var _local14:int;
while (_local14 < _local13) {
_local15 = (_arg2.x - _arg1.x);
_local16 = (_arg2.y - _arg1.y);
_local17 = _arg3.Support(_arg4, _local15, _local16);
_local18 = _arg5.Support(_arg6, -(_local15), -(_local16));
_local12 = ((_local15 * _local15) + (_local16 * _local16));
_local19 = (_local18.x - _local17.x);
_local20 = (_local18.y - _local17.y);
_local21 = ((_local15 * _local19) + (_local16 * _local20));
if ((_local12 - ((_local15 * _local19) + (_local16 * _local20))) <= (0.01 * _local12)){
if (_local11 == 0){
_arg1.SetV(_local17);
_arg2.SetV(_local18);
};
g_GJK_Iterations = _local14;
return (Math.sqrt(_local12));
};
switch (_local11){
case 0:
_local7 = _local8[0];
_local7.SetV(_local17);
_local7 = _local9[0];
_local7.SetV(_local18);
_local7 = _local10[0];
_local7.x = _local19;
_local7.y = _local20;
_arg1.SetV(_local8[0]);
_arg2.SetV(_local9[0]);
_local11++;
break;
case 1:
_local7 = _local8[1];
_local7.SetV(_local17);
_local7 = _local9[1];
_local7.SetV(_local18);
_local7 = _local10[1];
_local7.x = _local19;
_local7.y = _local20;
_local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10);
break;
case 2:
_local7 = _local8[2];
_local7.SetV(_local17);
_local7 = _local9[2];
_local7.SetV(_local18);
_local7 = _local10[2];
_local7.x = _local19;
_local7.y = _local20;
_local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10);
break;
};
if (_local11 == 3){
g_GJK_Iterations = _local14;
return (0);
};
_local22 = -(Number.MAX_VALUE);
_local23 = 0;
while (_local23 < _local11) {
_local7 = _local10[_local23];
_local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y)));
_local23++;
};
if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){
g_GJK_Iterations = _local14;
_local15 = (_arg2.x - _arg1.x);
_local16 = (_arg2.y - _arg1.y);
_local12 = ((_local15 * _local15) + (_local16 * _local16));
return (Math.sqrt(_local12));
};
_local14++;
};
g_GJK_Iterations = _local13;
return (Math.sqrt(_local12));
}
public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
var _local7:b2Mat22;
var _local8:b2Vec2;
var _local19:Number;
var _local20:Number;
_local7 = _arg4.R;
_local8 = _arg3.m_localPosition;
var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
_local7 = _arg6.R;
_local8 = _arg5.m_localPosition;
var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
var _local13:Number = (_local11 - _local9);
var _local14:Number = (_local12 - _local10);
var _local15:Number = ((_local13 * _local13) + (_local14 * _local14));
var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop);
var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
var _local18:Number = (_local16 + _local17);
if (_local15 > (_local18 * _local18)){
_local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14)));
_local13 = (_local13 / _local19);
_local14 = (_local14 / _local19);
_local20 = (_local19 - _local18);
_arg1.x = (_local9 + (_local16 * _local13));
_arg1.y = (_local10 + (_local16 * _local14));
_arg2.x = (_local11 - (_local17 * _local13));
_arg2.y = (_local12 - (_local17 * _local14));
return (_local20);
};
if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){
_local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14)));
_local13 = (_local13 / _local19);
_local14 = (_local14 / _local19);
_arg1.x = (_local9 + (_local16 * _local13));
_arg1.y = (_local10 + (_local16 * _local14));
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
return (0);
};
_arg1.x = _local9;
_arg1.y = _local10;
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
return (0);
}
public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{
var _local6:b2Vec2;
var _local7:b2Vec2;
var _local8:b2Vec2;
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local12:b2Vec2;
var _local13:b2Vec2;
var _local35:Number;
_local6 = _arg5[0];
_local7 = _arg5[1];
_local8 = _arg5[2];
_local9 = _arg3[0];
_local10 = _arg3[1];
_local11 = _arg3[2];
_local12 = _arg4[0];
_local13 = _arg4[1];
var _local14:b2Vec2 = _arg4[2];
var _local15:Number = _local6.x;
var _local16:Number = _local6.y;
var _local17:Number = _local7.x;
var _local18:Number = _local7.y;
var _local19:Number = _local8.x;
var _local20:Number = _local8.y;
var _local21:Number = (_local17 - _local15);
var _local22:Number = (_local18 - _local16);
var _local23:Number = (_local19 - _local15);
var _local24:Number = (_local20 - _local16);
var _local25:Number = (_local19 - _local17);
var _local26:Number = (_local20 - _local18);
var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22)));
var _local28:Number = ((_local17 * _local21) + (_local18 * _local22));
var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24)));
var _local30:Number = ((_local19 * _local23) + (_local20 * _local24));
var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26)));
var _local32:Number = ((_local19 * _local25) + (_local20 * _local26));
if ((((_local30 <= 0)) && ((_local32 <= 0)))){
_arg1.SetV(_local11);
_arg2.SetV(_local14);
_local9.SetV(_local11);
_local12.SetV(_local14);
_local6.SetV(_local8);
return (1);
};
var _local33:Number = ((_local21 * _local24) - (_local22 * _local23));
var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17)));
var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19)));
if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){
_local35 = (_local31 / (_local31 + _local32));
_arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x)));
_arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y)));
_arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x)));
_arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y)));
_local9.SetV(_local11);
_local12.SetV(_local14);
_local6.SetV(_local8);
return (2);
};
var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15)));
if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){
_local35 = (_local29 / (_local29 + _local30));
_arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x)));
_arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y)));
_arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x)));
_arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y)));
_local10.SetV(_local11);
_local13.SetV(_local14);
_local7.SetV(_local8);
return (2);
};
var _local38:Number = ((_local36 + _local37) + _local34);
_local38 = (1 / _local38);
var _local39:Number = (_local36 * _local38);
var _local40:Number = (_local37 * _local38);
var _local41:Number = ((1 - _local39) - _local40);
_arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x));
_arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y));
_arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x));
_arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y));
return (3);
}
public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
var _local7:b2Mat22;
var _local8:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local9:b2Point = gPoint;
_local8 = _arg5.m_localPosition;
_local7 = _arg6.R;
_local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
_local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity);
var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
if (_local10 > _local11){
_local10 = (_local10 - _local11);
_local12 = (_arg2.x - _arg1.x);
_local13 = (_arg2.y - _arg1.y);
_local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13)));
_local12 = (_local12 / _local14);
_local13 = (_local13 / _local14);
_arg2.x = (_arg2.x - (_local11 * _local12));
_arg2.y = (_arg2.y - (_local11 * _local13));
} else {
_local10 = 0;
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
};
return (_local10);
}
public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{
var _local7:int = _arg3.m_type;
var _local8:int = _arg5.m_type;
if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){
return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6));
};
if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){
return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6));
};
if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){
return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4));
};
if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){
return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6));
};
return (0);
}
public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local17:Number;
var _local6:b2Vec2 = _arg5[0];
var _local7:b2Vec2 = _arg5[1];
var _local8:b2Vec2 = _arg3[0];
_local9 = _arg3[1];
_local10 = _arg4[0];
_local11 = _arg4[1];
var _local12:Number = -(_local7.x);
var _local13:Number = -(_local7.y);
var _local14:Number = (_local6.x - _local7.x);
var _local15:Number = (_local6.y - _local7.y);
var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15)));
_local14 = (_local14 / _local16);
_local15 = (_local15 / _local16);
_local17 = ((_local12 * _local14) + (_local13 * _local15));
if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){
_arg1.SetV(_local9);
_arg2.SetV(_local11);
_local8.SetV(_local9);
_local10.SetV(_local11);
_local6.SetV(_local7);
return (1);
};
_local17 = (_local17 / _local16);
_arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x)));
_arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y)));
_arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x)));
_arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y)));
return (2);
}
}
}//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2Manifold {
public var pointCount:int;// = 0
public var normal:b2Vec2;
public var points:Array;
public function b2Manifold(){
points = new Array(b2Settings.b2_maxManifoldPoints);
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
points[_local1] = new b2ManifoldPoint();
_local1++;
};
normal = new b2Vec2();
}
public function Set(_arg1:b2Manifold):void{
pointCount = _arg1.pointCount;
var _local2:int;
while (_local2 < b2Settings.b2_maxManifoldPoints) {
(points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]);
_local2++;
};
normal.SetV(_arg1.normal);
}
public function Reset():void{
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
(points[_local1] as b2ManifoldPoint).Reset();
_local1++;
};
normal.SetZero();
pointCount = 0;
}
}
}//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2ManifoldPoint {
public var separation:Number;
public var localPoint2:b2Vec2;
public var normalImpulse:Number;
public var tangentImpulse:Number;
public var localPoint1:b2Vec2;
public var id:b2ContactID;
public function b2ManifoldPoint(){
localPoint1 = new b2Vec2();
localPoint2 = new b2Vec2();
id = new b2ContactID();
super();
}
public function Set(_arg1:b2ManifoldPoint):void{
localPoint1.SetV(_arg1.localPoint1);
localPoint2.SetV(_arg1.localPoint2);
separation = _arg1.separation;
normalImpulse = _arg1.normalImpulse;
tangentImpulse = _arg1.tangentImpulse;
id.key = _arg1.id.key;
}
public function Reset():void{
localPoint1.SetZero();
localPoint2.SetZero();
separation = 0;
normalImpulse = 0;
tangentImpulse = 0;
id.key = 0;
}
}
}//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2OBB {
public var R:b2Mat22;
public var center:b2Vec2;
public var extents:b2Vec2;
public function b2OBB(){
R = new b2Mat22();
center = new b2Vec2();
extents = new b2Vec2();
super();
}
}
}//package Box2D.Collision
Section 21
//b2Pair (Box2D.Collision.b2Pair)
package Box2D.Collision {
import Box2D.Common.*;
public class b2Pair {
public var proxyId1:uint;
public var userData;// = null
public var proxyId2:uint;
public var status:uint;
public var next:uint;
public static var e_pairFinal:uint = 4;
public static var b2_tableMask:int = (b2_tableCapacity - 1);
public static var e_pairRemoved:uint = 2;
public static var b2_nullPair:uint = b2Settings.USHRT_MAX;
public static var e_pairBuffered:uint = 1;
public static var b2_nullProxy:uint = b2Settings.USHRT_MAX;
public static var b2_tableCapacity:int = b2Settings.b2_maxPairs;
public function SetBuffered():void{
status = (status | e_pairBuffered);
}
public function IsBuffered():Boolean{
return (((status & e_pairBuffered) == e_pairBuffered));
}
public function IsFinal():Boolean{
return (((status & e_pairFinal) == e_pairFinal));
}
public function ClearRemoved():void{
status = (status & ~(e_pairRemoved));
}
public function SetFinal():void{
status = (status | e_pairFinal);
}
public function IsRemoved():Boolean{
return (((status & e_pairRemoved) == e_pairRemoved));
}
public function ClearBuffered():void{
status = (status & ~(e_pairBuffered));
}
public function SetRemoved():void{
status = (status | e_pairRemoved);
}
}
}//package Box2D.Collision
Section 22
//b2PairCallback (Box2D.Collision.b2PairCallback)
package Box2D.Collision {
public class b2PairCallback {
public function PairRemoved(_arg1, _arg2, _arg3):void{
}
public function PairAdded(_arg1, _arg2){
return (null);
}
}
}//package Box2D.Collision
Section 23
//b2PairManager (Box2D.Collision.b2PairManager)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2PairManager {
public var m_pairCount:int;
public var m_pairBuffer:Array;
public var m_hashTable:Array;
public var m_callback:b2PairCallback;
public var m_pairs:Array;
public var m_pairBufferCount:int;
public var m_broadPhase:b2BroadPhase;
public var m_freePair:uint;
public function b2PairManager(){
var _local1:uint;
super();
m_hashTable = new Array(b2Pair.b2_tableCapacity);
_local1 = 0;
while (_local1 < b2Pair.b2_tableCapacity) {
m_hashTable[_local1] = b2Pair.b2_nullPair;
_local1++;
};
m_pairs = new Array(b2Settings.b2_maxPairs);
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairs[_local1] = new b2Pair();
_local1++;
};
m_pairBuffer = new Array(b2Settings.b2_maxPairs);
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairBuffer[_local1] = new b2BufferedPair();
_local1++;
};
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy;
m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy;
m_pairs[_local1].userData = null;
m_pairs[_local1].status = 0;
m_pairs[_local1].next = (_local1 + 1);
_local1++;
};
m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair;
m_pairCount = 0;
m_pairBufferCount = 0;
}
private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{
var _local4:b2Pair;
var _local5:uint = m_hashTable[_arg3];
_local4 = m_pairs[_local5];
while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) {
_local5 = _local4.next;
_local4 = m_pairs[_local5];
};
if (_local5 == b2Pair.b2_nullPair){
return (null);
};
return (_local4);
}
private function Find(_arg1:uint, _arg2:uint):b2Pair{
var _local4:uint;
if (_arg1 > _arg2){
_local4 = _arg1;
_arg1 = _arg2;
_arg2 = _local4;
};
var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
return (FindHash(_arg1, _arg2, _local3));
}
private function ValidateBuffer():void{
}
public function Commit():void{
var _local1:b2BufferedPair;
var _local2:int;
var _local5:b2Pair;
var _local6:b2Proxy;
var _local7:b2Proxy;
var _local3:int;
var _local4:Array = m_broadPhase.m_proxyPool;
_local2 = 0;
while (_local2 < m_pairBufferCount) {
_local1 = m_pairBuffer[_local2];
_local5 = Find(_local1.proxyId1, _local1.proxyId2);
_local5.ClearBuffered();
_local6 = _local4[_local5.proxyId1];
_local7 = _local4[_local5.proxyId2];
if (_local5.IsRemoved()){
if (_local5.IsFinal() == true){
m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData);
};
_local1 = m_pairBuffer[_local3];
_local1.proxyId1 = _local5.proxyId1;
_local1.proxyId2 = _local5.proxyId2;
_local3++;
} else {
if (_local5.IsFinal() == false){
_local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData);
_local5.SetFinal();
};
};
_local2++;
};
_local2 = 0;
while (_local2 < _local3) {
_local1 = m_pairBuffer[_local2];
RemovePair(_local1.proxyId1, _local1.proxyId2);
_local2++;
};
m_pairBufferCount = 0;
if (b2BroadPhase.s_validate){
ValidateTable();
};
}
public function RemoveBufferedPair(_arg1:int, _arg2:int):void{
var _local3:b2BufferedPair;
var _local4:b2Pair = Find(_arg1, _arg2);
if (_local4 == null){
return;
};
if (_local4.IsBuffered() == false){
_local4.SetBuffered();
_local3 = m_pairBuffer[m_pairBufferCount];
_local3.proxyId1 = _local4.proxyId1;
_local3.proxyId2 = _local4.proxyId2;
m_pairBufferCount++;
};
_local4.SetRemoved();
if (b2BroadPhase.s_validate){
ValidateBuffer();
};
}
private function RemovePair(_arg1:uint, _arg2:uint){
var _local3:b2Pair;
var _local7:uint;
var _local8:uint;
var _local9:*;
if (_arg1 > _arg2){
_local7 = _arg1;
_arg1 = _arg2;
_arg2 = _local7;
};
var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
var _local5:uint = m_hashTable[_local4];
var _local6:b2Pair;
while (_local5 != b2Pair.b2_nullPair) {
if (Equals(m_pairs[_local5], _arg1, _arg2)){
_local8 = _local5;
_local3 = m_pairs[_local5];
if (_local6){
_local6.next = _local3.next;
} else {
m_hashTable[_local4] = _local3.next;
};
_local3 = m_pairs[_local8];
_local9 = _local3.userData;
_local3.next = m_freePair;
_local3.proxyId1 = b2Pair.b2_nullProxy;
_local3.proxyId2 = b2Pair.b2_nullProxy;
_local3.userData = null;
_local3.status = 0;
m_freePair = _local8;
m_pairCount--;
return (_local9);
} else {
_local6 = m_pairs[_local5];
_local5 = _local6.next;
};
};
return (null);
}
public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{
m_broadPhase = _arg1;
m_callback = _arg2;
}
public function AddBufferedPair(_arg1:int, _arg2:int):void{
var _local3:b2BufferedPair;
var _local4:b2Pair = AddPair(_arg1, _arg2);
if (_local4.IsBuffered() == false){
_local4.SetBuffered();
_local3 = m_pairBuffer[m_pairBufferCount];
_local3.proxyId1 = _local4.proxyId1;
_local3.proxyId2 = _local4.proxyId2;
m_pairBufferCount++;
};
_local4.ClearRemoved();
if (b2BroadPhase.s_validate){
ValidateBuffer();
};
}
private function AddPair(_arg1:uint, _arg2:uint):b2Pair{
var _local6:uint;
if (_arg1 > _arg2){
_local6 = _arg1;
_arg1 = _arg2;
_arg2 = _local6;
};
var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
var _local4 = FindHash(_arg1, _arg2, _local3);
if (_local4 != null){
return (_local4);
};
var _local5:uint = m_freePair;
_local4 = m_pairs[_local5];
m_freePair = _local4.next;
_local4.proxyId1 = _arg1;
_local4.proxyId2 = _arg2;
_local4.status = 0;
_local4.userData = null;
_local4.next = m_hashTable[_local3];
m_hashTable[_local3] = _local5;
m_pairCount++;
return (_local4);
}
private function ValidateTable():void{
}
public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{
return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2))));
}
public static function Hash(_arg1:uint, _arg2:uint):uint{
var _local3:uint = (((_arg2 << 16) & 4294901760) | _arg1);
_local3 = (~(_local3) + ((_local3 << 15) & 4294934528));
_local3 = (_local3 ^ ((_local3 >> 12) & 1048575));
_local3 = (_local3 + ((_local3 << 2) & 4294967292));
_local3 = (_local3 ^ ((_local3 >> 4) & 268435455));
_local3 = (_local3 * 2057);
_local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF));
return (_local3);
}
public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{
return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3))));
}
}
}//package Box2D.Collision
Section 24
//b2Point (Box2D.Collision.b2Point)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2Point {
public var p:b2Vec2;
public function b2Point(){
p = new b2Vec2();
super();
}
public function GetFirstVertex(_arg1:b2XForm):b2Vec2{
return (p);
}
public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
return (p);
}
}
}//package Box2D.Collision
Section 25
//b2Proxy (Box2D.Collision.b2Proxy)
package Box2D.Collision {
public class b2Proxy {
public var overlapCount:uint;
public var userData;// = null
public var lowerBounds:Array;
public var upperBounds:Array;
public var timeStamp:uint;
public function b2Proxy(){
lowerBounds = [uint(0), uint(0)];
upperBounds = [uint(0), uint(0)];
super();
}
public function GetNext():uint{
return (lowerBounds[0]);
}
public function IsValid():Boolean{
return (!((overlapCount == b2BroadPhase.b2_invalid)));
}
public function SetNext(_arg1:uint):void{
lowerBounds[0] = (_arg1 & 0xFFFF);
}
}
}//package Box2D.Collision
Section 26
//b2Segment (Box2D.Collision.b2Segment)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2Segment {
public var p1:b2Vec2;
public var p2:b2Vec2;
public function b2Segment(){
p1 = new b2Vec2();
p2 = new b2Vec2();
super();
}
public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local5:b2Vec2 = _arg3.p1;
var _local6:Number = (_arg3.p2.x - _local5.x);
var _local7:Number = (_arg3.p2.y - _local5.y);
var _local8:Number = (p2.x - p1.x);
var _local9:Number = (p2.y - p1.y);
var _local10:Number = _local9;
var _local11:Number = -(_local8);
var _local12:Number = (100 * Number.MIN_VALUE);
var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11)));
if (_local13 > _local12){
_local14 = (_local5.x - p1.x);
_local15 = (_local5.y - p1.y);
_local16 = ((_local14 * _local10) + (_local15 * _local11));
if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){
_local17 = ((-(_local7) * _local15) + (_local7 * _local14));
if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){
_local16 = (_local16 / _local13);
_local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
_local10 = (_local10 / _local18);
_local11 = (_local11 / _local18);
_arg1[0] = _local16;
_arg2.Set(_local10, _local11);
return (true);
};
};
};
return (false);
}
}
}//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2TimeOfImpact {
public static var s_xf1:b2XForm = new b2XForm();
public static var s_xf2:b2XForm = new b2XForm();
public static var s_p1:b2Vec2 = new b2Vec2();
public static var s_p2:b2Vec2 = new b2Vec2();
public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{
var _local5:Number;
var _local6:Number;
var _local25:Number;
var _local26:b2XForm;
var _local27:b2XForm;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local7:Number = _arg1.m_sweepRadius;
var _local8:Number = _arg3.m_sweepRadius;
var _local9:Number = _arg2.t0;
var _local10:Number = (_arg2.c.x - _arg2.c0.x);
var _local11:Number = (_arg2.c.y - _arg2.c0.y);
var _local12:Number = (_arg4.c.x - _arg4.c0.x);
var _local13:Number = (_arg4.c.y - _arg4.c0.y);
var _local14:Number = (_arg2.a - _arg2.a0);
var _local15:Number = (_arg4.a - _arg4.a0);
var _local16:Number = 0;
var _local17:b2Vec2 = s_p1;
var _local18:b2Vec2 = s_p2;
var _local19 = 20;
var _local20:int;
var _local21:Number = 0;
var _local22:Number = 0;
var _local23:Number = 0;
var _local24:Number = 0;
while (true) {
_local25 = (((1 - _local16) * _local9) + _local16);
_local26 = s_xf1;
_local27 = s_xf2;
_arg2.GetXForm(_local26, _local25);
_arg4.GetXForm(_local27, _local25);
_local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27);
if (_local20 == 0){
if (_local23 > (2 * b2Settings.b2_toiSlop)){
_local24 = (1.5 * b2Settings.b2_toiSlop);
} else {
_local5 = (0.05 * b2Settings.b2_toiSlop);
_local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop));
_local24 = ((_local5 > _local6)) ? _local5 : _local6;
};
};
if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){
break;
};
_local21 = (_local18.x - _local17.x);
_local22 = (_local18.y - _local17.y);
_local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22)));
_local21 = (_local21 / _local28);
_local22 = (_local22 / _local28);
_local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8));
if (_local29 == 0){
_local16 = 1;
break;
};
_local30 = ((_local23 - _local24) / _local29);
_local31 = (_local16 + _local30);
if ((((_local31 < 0)) || ((1 < _local31)))){
_local16 = 1;
break;
};
if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){
break;
};
_local16 = _local31;
_local20++;
};
return (_local16);
}
}
}//package Box2D.Collision
Section 28
//ClipVertex (Box2D.Collision.ClipVertex)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class ClipVertex {
public var id:b2ContactID;
public var v:b2Vec2;
public function ClipVertex(){
v = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Collision
Section 29
//Features (Box2D.Collision.Features)
package Box2D.Collision {
public class Features {
public var _referenceEdge:int;
public var _incidentEdge:int;
public var _flip:int;
public var _incidentVertex:int;
public var _m_id:b2ContactID;
public function get referenceEdge():int{
return (_referenceEdge);
}
public function set incidentVertex(_arg1:int):void{
_incidentVertex = _arg1;
_m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000));
}
public function get flip():int{
return (_flip);
}
public function get incidentEdge():int{
return (_incidentEdge);
}
public function set referenceEdge(_arg1:int):void{
_referenceEdge = _arg1;
_m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF));
}
public function get incidentVertex():int{
return (_incidentVertex);
}
public function set flip(_arg1:int):void{
_flip = _arg1;
_m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080));
}
public function set incidentEdge(_arg1:int):void{
_incidentEdge = _arg1;
_m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00));
}
}
}//package Box2D.Collision
Section 30
//b2Mat22 (Box2D.Common.Math.b2Mat22)
package Box2D.Common.Math {
public class b2Mat22 {
public var col1:b2Vec2;
public var col2:b2Vec2;
public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){
var _local4:Number;
var _local5:Number;
col1 = new b2Vec2();
col2 = new b2Vec2();
super();
if (((!((_arg2 == null))) && (!((_arg3 == null))))){
col1.SetV(_arg2);
col2.SetV(_arg3);
} else {
_local4 = Math.cos(_arg1);
_local5 = Math.sin(_arg1);
col1.x = _local4;
col2.x = -(_local5);
col1.y = _local5;
col2.y = _local4;
};
}
public function SetIdentity():void{
col1.x = 1;
col2.x = 0;
col1.y = 0;
col2.y = 1;
}
public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{
col1.SetV(_arg1);
col2.SetV(_arg2);
}
public function Set(_arg1:Number):void{
var _local2:Number;
_local2 = Math.cos(_arg1);
var _local3:Number = Math.sin(_arg1);
col1.x = _local2;
col2.x = -(_local3);
col1.y = _local3;
col2.y = _local2;
}
public function SetZero():void{
col1.x = 0;
col2.x = 0;
col1.y = 0;
col2.y = 0;
}
public function SetM(_arg1:b2Mat22):void{
col1.SetV(_arg1.col1);
col2.SetV(_arg1.col2);
}
public function AddM(_arg1:b2Mat22):void{
col1.x = (col1.x + _arg1.col1.x);
col1.y = (col1.y + _arg1.col1.y);
col2.x = (col2.x + _arg1.col2.x);
col2.y = (col2.y + _arg1.col2.y);
}
public function Abs():void{
col1.Abs();
col2.Abs();
}
public function Copy():b2Mat22{
return (new b2Mat22(0, col1, col2));
}
public function Invert(_arg1:b2Mat22):b2Mat22{
var _local2:Number;
var _local4:Number;
var _local6:Number;
_local2 = col1.x;
var _local3:Number = col2.x;
_local4 = col1.y;
var _local5:Number = col2.y;
_local6 = ((_local2 * _local5) - (_local3 * _local4));
_local6 = (1 / _local6);
_arg1.col1.x = (_local6 * _local5);
_arg1.col2.x = (-(_local6) * _local3);
_arg1.col1.y = (-(_local6) * _local4);
_arg1.col2.y = (_local6 * _local2);
return (_arg1);
}
public function GetAngle():Number{
return (Math.atan2(col1.y, col1.x));
}
public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{
var _local4:Number = col1.x;
var _local5:Number = col2.x;
var _local6:Number = col1.y;
var _local7:Number = col2.y;
var _local8:Number = ((_local4 * _local7) - (_local5 * _local6));
_local8 = (1 / _local8);
_arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3)));
_arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2)));
return (_arg1);
}
}
}//package Box2D.Common.Math
Section 31
//b2Math (Box2D.Common.Math.b2Math)
package Box2D.Common.Math {
public class b2Math {
public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1));
public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity);
public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0);
public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x));
return (_local3);
}
public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y));
return (_local3);
}
public static function b2IsValid(_arg1:Number):Boolean{
return (isFinite(_arg1));
}
public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y));
return (_local3);
}
public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2;
_local3 = b2MulMV(_arg1.R, _arg2);
_local3.x = (_local3.x + _arg1.position.x);
_local3.y = (_local3.y + _arg1.position.y);
return (_local3);
}
public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{
var _local3:Number = (_arg1.x - _arg2.x);
var _local4:Number = (_arg1.y - _arg2.y);
return (((_local3 * _local3) + (_local4 * _local4)));
}
public static function b2Swap(_arg1:Array, _arg2:Array):void{
var _local3:* = _arg1[0];
_arg1[0] = _arg2[0];
_arg2[0] = _local3;
}
public static function b2AbsM(_arg1:b2Mat22):b2Mat22{
var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2));
return (_local2);
}
public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y));
return (_local3);
}
public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2;
var _local4:Number;
_local3 = SubtractVV(_arg2, _arg1.position);
_local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y));
_local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y));
_local3.x = _local4;
return (_local3);
}
public static function b2Abs(_arg1:Number):Number{
return (((_arg1 > 0)) ? _arg1 : -(_arg1));
}
public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return (b2Max(_arg2, b2Min(_arg1, _arg3)));
}
public static function b2AbsV(_arg1:b2Vec2):b2Vec2{
var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y));
return (_local2);
}
public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y));
return (_local3);
}
public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{
return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x)));
}
public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{
return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
}
public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x));
return (_local3);
}
public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2));
return (_local3);
}
public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{
var _local3:Number = (_arg1.x - _arg2.x);
var _local4:Number = (_arg1.y - _arg2.y);
return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4))));
}
public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1));
var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2));
var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4);
return (_local5);
}
public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y));
return (_local3);
}
public static function b2IsPowerOfTwo(_arg1:uint):Boolean{
var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0)));
return (_local2);
}
public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{
return (b2MaxV(_arg2, b2MinV(_arg1, _arg3)));
}
public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{
var _local3:Number = Math.random();
_local3 = (((_arg2 - _arg1) * _local3) + _arg1);
return (_local3);
}
public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2));
return (_local3);
}
public static function b2Min(_arg1:Number, _arg2:Number):Number{
return (((_arg1 < _arg2)) ? _arg1 : _arg2);
}
public static function b2Random():Number{
return (((Math.random() * 2) - 1));
}
public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2));
return (_local3);
}
public static function b2NextPowerOfTwo(_arg1:uint):uint{
_arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647));
_arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823));
_arg1 = (_arg1 | ((_arg1 >> 4) & 268435455));
_arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF));
_arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF));
return ((_arg1 + 1));
}
public static function b2Max(_arg1:Number, _arg2:Number):Number{
return (((_arg1 > _arg2)) ? _arg1 : _arg2);
}
public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y)));
return (_local3);
}
}
}//package Box2D.Common.Math
Section 32
//b2Sweep (Box2D.Common.Math.b2Sweep)
package Box2D.Common.Math {
public class b2Sweep {
public var localCenter:b2Vec2;
public var a:Number;
public var c:b2Vec2;
public var a0:Number;
public var c0:b2Vec2;
public var t0:Number;
public function b2Sweep(){
localCenter = new b2Vec2();
c0 = new b2Vec2();
c = new b2Vec2();
super();
}
public function Advance(_arg1:Number):void{
var _local2:Number;
if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){
_local2 = ((_arg1 - t0) / (1 - t0));
c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x));
c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y));
a0 = (((1 - _local2) * a0) + (_local2 * a));
t0 = _arg1;
};
}
public function GetXForm(_arg1:b2XForm, _arg2:Number):void{
var _local4:Number;
var _local5:Number;
if ((1 - t0) > Number.MIN_VALUE){
_local4 = ((_arg2 - t0) / (1 - t0));
_arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x));
_arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y));
_local5 = (((1 - _local4) * a0) + (_local4 * a));
_arg1.R.Set(_local5);
} else {
_arg1.position.SetV(c);
_arg1.R.Set(a);
};
var _local3:b2Mat22 = _arg1.R;
_arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y)));
_arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y)));
}
}
}//package Box2D.Common.Math
Section 33
//b2Vec2 (Box2D.Common.Math.b2Vec2)
package Box2D.Common.Math {
public class b2Vec2 {
public var y:Number;
public var x:Number;
public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{
x = _arg1;
y = _arg2;
}
public function Add(_arg1:b2Vec2):void{
x = (x + _arg1.x);
y = (y + _arg1.y);
}
public function Set(_arg1:Number=0, _arg2:Number=0):void{
x = _arg1;
y = _arg2;
}
public function Multiply(_arg1:Number):void{
x = (x * _arg1);
y = (y * _arg1);
}
public function Length():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function LengthSquared():Number{
return (((x * x) + (y * y)));
}
public function MulM(_arg1:b2Mat22):void{
var _local2:Number = x;
x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y));
y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y));
}
public function SetZero():void{
x = 0;
y = 0;
}
public function MinV(_arg1:b2Vec2):void{
x = ((x < _arg1.x)) ? x : _arg1.x;
y = ((y < _arg1.y)) ? y : _arg1.y;
}
public function Normalize():Number{
var _local1:Number = Math.sqrt(((x * x) + (y * y)));
if (_local1 < Number.MIN_VALUE){
return (0);
};
var _local2:Number = (1 / _local1);
x = (x * _local2);
y = (y * _local2);
return (_local1);
}
public function CrossVF(_arg1:Number):void{
var _local2:Number = x;
x = (_arg1 * y);
y = (-(_arg1) * _local2);
}
public function MaxV(_arg1:b2Vec2):void{
x = ((x > _arg1.x)) ? x : _arg1.x;
y = ((y > _arg1.y)) ? y : _arg1.y;
}
public function SetV(_arg1:b2Vec2):void{
x = _arg1.x;
y = _arg1.y;
}
public function Negative():b2Vec2{
return (new b2Vec2(-(x), -(y)));
}
public function CrossFV(_arg1:Number):void{
var _local2:Number = x;
x = (-(_arg1) * y);
y = (_arg1 * _local2);
}
public function Abs():void{
if (x < 0){
x = -(x);
};
if (y < 0){
y = -(y);
};
}
public function Subtract(_arg1:b2Vec2):void{
x = (x - _arg1.x);
y = (y - _arg1.y);
}
public function Copy():b2Vec2{
return (new b2Vec2(x, y));
}
public function MulTM(_arg1:b2Mat22):void{
var _local2:Number = b2Math.b2Dot(this, _arg1.col1);
y = b2Math.b2Dot(this, _arg1.col2);
x = _local2;
}
public function IsValid():Boolean{
return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y))));
}
public static function Make(_arg1:Number, _arg2:Number):b2Vec2{
return (new b2Vec2(_arg1, _arg2));
}
}
}//package Box2D.Common.Math
Section 34
//b2XForm (Box2D.Common.Math.b2XForm)
package Box2D.Common.Math {
public class b2XForm {
public var position:b2Vec2;
public var R:b2Mat22;
public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{
position = new b2Vec2();
R = new b2Mat22();
super();
if (_arg1){
position.SetV(_arg1);
R.SetM(_arg2);
};
}
public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{
position.SetV(_arg1);
R.SetM(_arg2);
}
public function Set(_arg1:b2XForm):void{
position.SetV(_arg1.position);
R.SetM(_arg1.R);
}
public function SetIdentity():void{
position.SetZero();
R.SetIdentity();
}
}
}//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color)
package Box2D.Common {
import Box2D.Common.Math.*;
public class b2Color {
private var _r:uint;// = 0
private var _g:uint;// = 0
private var _b:uint;// = 0
public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
_g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1)));
_b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1)));
}
public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
_g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1)));
_b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1)));
}
public function set b(_arg1:Number):void{
_b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
public function get color():uint{
return (((_r | (_g << 8)) | (_b << 16)));
}
public function set r(_arg1:Number):void{
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
public function set g(_arg1:Number):void{
_g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
}
}//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings)
package Box2D.Common {
import Box2D.Common.Math.*;
public class b2Settings {
public static const b2_angularSleepTolerance:Number = 0.0111111111111111;
public static const b2_linearSleepTolerance:Number = 0.01;
public static const b2_angularSlop:Number = 0.0349065850398866;
public static const b2_linearSlop:Number = 0.005;
public static const b2_pi:Number = 3.14159265358979;
public static const b2_maxProxies:int = 0x0200;
public static const b2_maxAngularVelocitySquared:Number = 62500;
public static const b2_maxPolygonVertices:int = 8;
public static const b2_velocityThreshold:Number = 1;
public static const b2_contactBaumgarte:Number = 0.2;
public static const b2_maxPairs:int = 4096;
public static const b2_maxTOIContactsPerIsland:int = 32;
public static const b2_timeToSleep:Number = 0.5;
public static const b2_maxManifoldPoints:int = 2;
public static const b2_maxAngularVelocity:Number = 250;
public static const b2_maxAngularCorrection:Number = 0.139626340159546;
public static const USHRT_MAX:int = 0xFFFF;
public static const b2_maxLinearVelocity:Number = 200;
public static const b2_maxLinearCorrection:Number = 0.2;
public static const b2_toiSlop:Number = 0.04;
public static const b2_maxLinearVelocitySquared:Number = 40000;
public static function b2Assert(_arg1:Boolean):void{
var _local2:b2Vec2;
if (!_arg1){
_local2.x++;
};
}
}
}//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2CircleContact extends b2Contact {
private var m_manifolds:Array;
public var m_manifold:b2Manifold;
private var m0:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
var _local3:b2ManifoldPoint = m_manifold.points[0];
_local3.normalImpulse = 0;
_local3.tangentImpulse = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2ManifoldPoint;
var _local8:b2ManifoldPoint;
var _local5:b2Body = m_shape1.m_body;
var _local6:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf);
var _local7:b2ContactPoint = s_evalCP;
_local7.shape1 = m_shape1;
_local7.shape2 = m_shape2;
_local7.friction = m_friction;
_local7.restitution = m_restitution;
if (m_manifold.pointCount > 0){
m_manifoldCount = 1;
_local8 = m_manifold.points[0];
if (m0.pointCount == 0){
_local8.normalImpulse = 0;
_local8.tangentImpulse = 0;
if (_arg1){
_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local8.separation;
_local7.id.key = _local8.id._key;
_arg1.Add(_local7);
};
} else {
_local4 = m0.points[0];
_local8.normalImpulse = _local4.normalImpulse;
_local8.tangentImpulse = _local4.tangentImpulse;
if (_arg1){
_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local8.separation;
_local7.id.key = _local8.id._key;
_arg1.Persist(_local7);
};
};
} else {
m_manifoldCount = 0;
if ((((m0.pointCount > 0)) && (_arg1))){
_local4 = m0.points[0];
_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m0.normal);
_local7.separation = _local4.separation;
_local7.id.key = _local4.id._key;
_arg1.Remove(_local7);
};
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2CircleContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Contact {
public var m_shape1:b2Shape;
public var m_shape2:b2Shape;
public var m_prev:b2Contact;
public var m_toi:Number;
public var m_next:b2Contact;
public var m_friction:Number;
public var m_manifoldCount:int;
public var m_node1:b2ContactEdge;
public var m_node2:b2ContactEdge;
public var m_restitution:Number;
public var m_flags:uint;
public static var e_toiFlag:uint = 8;
public static var e_nonSolidFlag:uint = 1;
public static var e_slowFlag:uint = 2;
public static var e_islandFlag:uint = 4;
public static var s_registers:Array;
public static var s_initialized:Boolean = false;
public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){
m_node1 = new b2ContactEdge();
m_node2 = new b2ContactEdge();
super();
m_flags = 0;
if (((!(_arg1)) || (!(_arg2)))){
m_shape1 = null;
m_shape2 = null;
return;
};
if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){
m_flags = (m_flags | e_nonSolidFlag);
};
m_shape1 = _arg1;
m_shape2 = _arg2;
m_manifoldCount = 0;
m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction));
m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution);
m_prev = null;
m_next = null;
m_node1.contact = null;
m_node1.prev = null;
m_node1.next = null;
m_node1.other = null;
m_node2.contact = null;
m_node2.prev = null;
m_node2.next = null;
m_node2.other = null;
}
public function IsSolid():Boolean{
return (((m_flags & e_nonSolidFlag) == 0));
}
public function GetShape1():b2Shape{
return (m_shape1);
}
public function GetShape2():b2Shape{
return (m_shape2);
}
public function GetNext():b2Contact{
return (m_next);
}
public function GetManifoldCount():int{
return (m_manifoldCount);
}
public function GetManifolds():Array{
return (null);
}
public function Update(_arg1:b2ContactListener):void{
var _local2:int = m_manifoldCount;
Evaluate(_arg1);
var _local3:int = m_manifoldCount;
var _local4:b2Body = m_shape1.m_body;
var _local5:b2Body = m_shape2.m_body;
if ((((_local3 == 0)) && ((_local2 > 0)))){
_local4.WakeUp();
_local5.WakeUp();
};
if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){
m_flags = (m_flags & ~(e_slowFlag));
} else {
m_flags = (m_flags | e_slowFlag);
};
}
public function Evaluate(_arg1:b2ContactListener):void{
}
public static function InitializeRegisters():void{
var _local2:int;
s_registers = new Array(b2Shape.e_shapeTypeCount);
var _local1:int;
while (_local1 < b2Shape.e_shapeTypeCount) {
s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount);
_local2 = 0;
while (_local2 < b2Shape.e_shapeTypeCount) {
s_registers[_local1][_local2] = new b2ContactRegister();
_local2++;
};
_local1++;
};
AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape);
AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape);
AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
if (_arg1.m_manifoldCount > 0){
_arg1.m_shape1.m_body.WakeUp();
_arg1.m_shape2.m_body.WakeUp();
};
var _local3:int = _arg1.m_shape1.m_type;
var _local4:int = _arg1.m_shape2.m_type;
var _local5:b2ContactRegister = s_registers[_local3][_local4];
var _local6:Function = _local5.destroyFcn;
_local6(_arg1, _arg2);
}
public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{
s_registers[_arg3][_arg4].createFcn = _arg1;
s_registers[_arg3][_arg4].destroyFcn = _arg2;
s_registers[_arg3][_arg4].primary = true;
if (_arg3 != _arg4){
s_registers[_arg4][_arg3].createFcn = _arg1;
s_registers[_arg4][_arg3].destroyFcn = _arg2;
s_registers[_arg4][_arg3].primary = false;
};
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
var _local8:b2Contact;
var _local9:int;
var _local10:b2Manifold;
if (s_initialized == false){
InitializeRegisters();
s_initialized = true;
};
var _local4:int = _arg1.m_type;
var _local5:int = _arg2.m_type;
var _local6:b2ContactRegister = s_registers[_local4][_local5];
var _local7:Function = _local6.createFcn;
if (_local7 != null){
if (_local6.primary){
return (_local7(_arg1, _arg2, _arg3));
};
_local8 = _local7(_arg2, _arg1, _arg3);
_local9 = 0;
while (_local9 < _local8.m_manifoldCount) {
_local10 = _local8.GetManifolds()[_local9];
_local8.GetManifolds()[_local9].normal = _local10.normal.Negative();
_local9++;
};
return (_local8);
//unresolved jump
};
return (null);
}
}
}//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2ContactConstraint {
public var points:Array;
public var normal:b2Vec2;
public var restitution:Number;
public var body1:b2Body;
public var manifold:b2Manifold;
public var body2:b2Body;
public var friction:Number;
public var pointCount:int;
public function b2ContactConstraint(){
normal = new b2Vec2();
super();
points = new Array(b2Settings.b2_maxManifoldPoints);
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
points[_local1] = new b2ContactConstraintPoint();
_local1++;
};
}
}
}//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
public class b2ContactConstraintPoint {
public var r2:b2Vec2;
public var separation:Number;
public var positionImpulse:Number;
public var normalImpulse:Number;
public var tangentMass:Number;
public var equalizedMass:Number;
public var tangentImpulse:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var normalMass:Number;
public var velocityBias:Number;
public var r1:b2Vec2;
public function b2ContactConstraintPoint(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
r1 = new b2Vec2();
r2 = new b2Vec2();
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge)
package Box2D.Dynamics.Contacts {
import Box2D.Dynamics.*;
public class b2ContactEdge {
public var other:b2Body;
public var prev:b2ContactEdge;
public var contact:b2Contact;
public var next:b2ContactEdge;
}
}//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister)
package Box2D.Dynamics.Contacts {
public class b2ContactRegister {
public var primary:Boolean;
public var createFcn:Function;
public var destroyFcn:Function;
}
}//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2ContactResult {
public var position:b2Vec2;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var normalImpulse:Number;
public var normal:b2Vec2;
public var tangentImpulse:Number;
public var id:b2ContactID;
public function b2ContactResult(){
position = new b2Vec2();
normal = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2ContactSolver {
public var m_constraintCount:int;
public var m_constraints:Array;
public var m_allocator;
public var m_step:b2TimeStep;
public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){
var _local5:b2Contact;
var _local6:int;
var _local7:b2Vec2;
var _local8:b2Mat22;
var _local10:b2Body;
var _local11:b2Body;
var _local12:int;
var _local13:Array;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:int;
var _local23:b2Manifold;
var _local24:Number;
var _local25:Number;
var _local26:b2ContactConstraint;
var _local27:uint;
var _local28:b2ManifoldPoint;
var _local29:b2ContactConstraintPoint;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
var _local43:Number;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:Number;
m_step = new b2TimeStep();
m_constraints = new Array();
super();
m_step.dt = _arg1.dt;
m_step.inv_dt = _arg1.inv_dt;
m_step.maxIterations = _arg1.maxIterations;
m_allocator = _arg4;
m_constraintCount = 0;
_local6 = 0;
while (_local6 < _arg3) {
_local5 = _arg2[_local6];
m_constraintCount = (m_constraintCount + _local5.m_manifoldCount);
_local6++;
};
_local6 = 0;
while (_local6 < m_constraintCount) {
m_constraints[_local6] = new b2ContactConstraint();
_local6++;
};
var _local9:int;
_local6 = 0;
while (_local6 < _arg3) {
_local5 = _arg2[_local6];
_local10 = _local5.m_shape1.m_body;
_local11 = _local5.m_shape2.m_body;
_local12 = _local5.m_manifoldCount;
_local13 = _local5.GetManifolds();
_local14 = _local5.m_friction;
_local15 = _local5.m_restitution;
_local16 = _local10.m_linearVelocity.x;
_local17 = _local10.m_linearVelocity.y;
_local18 = _local11.m_linearVelocity.x;
_local19 = _local11.m_linearVelocity.y;
_local20 = _local10.m_angularVelocity;
_local21 = _local11.m_angularVelocity;
_local22 = 0;
while (_local22 < _local12) {
_local23 = _local13[_local22];
_local24 = _local23.normal.x;
_local25 = _local23.normal.y;
_local26 = m_constraints[_local9];
_local26.body1 = _local10;
_local26.body2 = _local11;
_local26.manifold = _local23;
_local26.normal.x = _local24;
_local26.normal.y = _local25;
_local26.pointCount = _local23.pointCount;
_local26.friction = _local14;
_local26.restitution = _local15;
_local27 = 0;
while (_local27 < _local26.pointCount) {
_local28 = _local23.points[_local27];
_local29 = _local26.points[_local27];
_local29.normalImpulse = _local28.normalImpulse;
_local29.tangentImpulse = _local28.tangentImpulse;
_local29.separation = _local28.separation;
_local29.positionImpulse = 0;
_local29.localAnchor1.SetV(_local28.localPoint1);
_local29.localAnchor2.SetV(_local28.localPoint2);
_local8 = _local10.m_xf.R;
_local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x);
_local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y);
_local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33));
_local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33));
_local32 = _local30;
_local29.r1.Set(_local32, _local33);
_local8 = _local11.m_xf.R;
_local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x);
_local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y);
_local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35));
_local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35));
_local34 = _local30;
_local29.r2.Set(_local34, _local35);
_local36 = ((_local32 * _local32) + (_local33 * _local33));
_local37 = ((_local34 * _local34) + (_local35 * _local35));
_local38 = ((_local32 * _local24) + (_local33 * _local25));
_local39 = ((_local34 * _local24) + (_local35 * _local25));
_local40 = (_local10.m_invMass + _local11.m_invMass);
_local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39)))));
_local29.normalMass = (1 / _local40);
_local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass));
_local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39)))));
_local29.equalizedMass = (1 / _local41);
_local42 = _local25;
_local43 = -(_local24);
_local44 = ((_local32 * _local42) + (_local33 * _local43));
_local45 = ((_local34 * _local42) + (_local35 * _local43));
_local46 = (_local10.m_invMass + _local11.m_invMass);
_local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45)))));
_local29.tangentMass = (1 / _local46);
_local29.velocityBias = 0;
if (_local29.separation > 0){
_local29.velocityBias = (-60 * _local29.separation);
};
_local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33));
_local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32));
_local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31));
if (_local47 < -(b2Settings.b2_velocityThreshold)){
_local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47));
};
_local27++;
};
_local9++;
_local22++;
};
_local6++;
};
}
public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2Mat22;
var _local6:b2ContactConstraint;
var _local7:b2Body;
var _local8:b2Body;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:int;
var _local19:int;
var _local20:b2ContactConstraintPoint;
var _local21:Number;
var _local22:Number;
var _local23:b2ContactConstraintPoint;
var _local5:int;
while (_local5 < m_constraintCount) {
_local6 = m_constraints[_local5];
_local7 = _local6.body1;
_local8 = _local6.body2;
_local9 = _local7.m_invMass;
_local10 = _local7.m_invI;
_local11 = _local8.m_invMass;
_local12 = _local8.m_invI;
_local13 = _local6.normal.x;
_local14 = _local6.normal.y;
_local15 = _local14;
_local16 = -(_local13);
if (_arg1.warmStarting){
_local19 = _local6.pointCount;
_local18 = 0;
while (_local18 < _local19) {
_local20 = _local6.points[_local18];
_local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio);
_local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio);
_local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15));
_local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16));
_local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21))));
_local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21));
_local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22));
_local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21))));
_local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21));
_local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22));
_local18++;
};
} else {
_local19 = _local6.pointCount;
_local18 = 0;
while (_local18 < _local19) {
_local23 = _local6.points[_local18];
_local23.normalImpulse = 0;
_local23.tangentImpulse = 0;
_local18++;
};
};
_local5++;
};
}
public function SolvePositionConstraints(_arg1:Number):Boolean{
var _local3:b2Mat22;
var _local4:b2Vec2;
var _local6:b2ContactConstraint;
var _local7:b2Body;
var _local8:b2Body;
var _local9:b2Vec2;
var _local10:Number;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:int;
var _local20:int;
var _local21:b2ContactConstraintPoint;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local2:Number = 0;
var _local5:int;
while (_local5 < m_constraintCount) {
_local6 = m_constraints[_local5];
_local7 = _local6.body1;
_local8 = _local6.body2;
_local9 = _local7.m_sweep.c;
_local10 = _local7.m_sweep.a;
_local11 = _local8.m_sweep.c;
_local12 = _local8.m_sweep.a;
_local13 = (_local7.m_mass * _local7.m_invMass);
_local14 = (_local7.m_mass * _local7.m_invI);
_local15 = (_local8.m_mass * _local8.m_invMass);
_local16 = (_local8.m_mass * _local8.m_invI);
_local17 = _local6.normal.x;
_local18 = _local6.normal.y;
_local19 = _local6.pointCount;
_local20 = 0;
while (_local20 < _local19) {
_local21 = _local6.points[_local20];
_local3 = _local7.m_xf.R;
_local4 = _local7.m_sweep.localCenter;
_local22 = (_local21.localAnchor1.x - _local4.x);
_local23 = (_local21.localAnchor1.y - _local4.y);
_local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23));
_local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23));
_local22 = _local26;
_local3 = _local8.m_xf.R;
_local4 = _local8.m_sweep.localCenter;
_local24 = (_local21.localAnchor2.x - _local4.x);
_local25 = (_local21.localAnchor2.y - _local4.y);
_local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25));
_local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25));
_local24 = _local26;
_local27 = (_local9.x + _local22);
_local28 = (_local9.y + _local23);
_local29 = (_local11.x + _local24);
_local30 = (_local11.y + _local25);
_local31 = (_local29 - _local27);
_local32 = (_local30 - _local28);
_local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation);
_local2 = b2Math.b2Min(_local2, _local33);
_local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0));
_local35 = (-(_local21.equalizedMass) * _local34);
_local36 = _local21.positionImpulse;
_local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0);
_local35 = (_local21.positionImpulse - _local36);
_local37 = (_local35 * _local17);
_local38 = (_local35 * _local18);
_local9.x = (_local9.x - (_local13 * _local37));
_local9.y = (_local9.y - (_local13 * _local38));
_local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37))));
_local7.m_sweep.a = _local10;
_local7.SynchronizeTransform();
_local11.x = (_local11.x + (_local15 * _local37));
_local11.y = (_local11.y + (_local15 * _local38));
_local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37))));
_local8.m_sweep.a = _local12;
_local8.SynchronizeTransform();
_local20++;
};
_local5++;
};
return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop)));
}
public function SolveVelocityConstraints():void{
var _local1:int;
var _local2:b2ContactConstraintPoint;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:b2Mat22;
var _local18:b2Vec2;
var _local20:b2ContactConstraint;
var _local21:b2Body;
var _local22:b2Body;
var _local23:Number;
var _local24:Number;
var _local25:b2Vec2;
var _local26:b2Vec2;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:int;
var _local38:Number;
var _local19:int;
while (_local19 < m_constraintCount) {
_local20 = m_constraints[_local19];
_local21 = _local20.body1;
_local22 = _local20.body2;
_local23 = _local21.m_angularVelocity;
_local24 = _local22.m_angularVelocity;
_local25 = _local21.m_linearVelocity;
_local26 = _local22.m_linearVelocity;
_local27 = _local21.m_invMass;
_local28 = _local21.m_invI;
_local29 = _local22.m_invMass;
_local30 = _local22.m_invI;
_local31 = _local20.normal.x;
_local32 = _local20.normal.y;
_local33 = _local32;
_local34 = -(_local31);
_local35 = _local20.friction;
_local37 = _local20.pointCount;
_local1 = 0;
while (_local1 < _local37) {
_local2 = _local20.points[_local1];
_local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y));
_local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x));
_local9 = ((_local7 * _local31) + (_local8 * _local32));
_local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias));
_local10 = ((_local7 * _local33) + (_local8 * _local34));
_local12 = (_local2.tangentMass * -(_local10));
_local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0);
_local11 = (_local13 - _local2.normalImpulse);
_local38 = (_local35 * _local2.normalImpulse);
_local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38);
_local12 = (_local14 - _local2.tangentImpulse);
_local15 = ((_local11 * _local31) + (_local12 * _local33));
_local16 = ((_local11 * _local32) + (_local12 * _local34));
_local25.x = (_local25.x - (_local27 * _local15));
_local25.y = (_local25.y - (_local27 * _local16));
_local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15))));
_local26.x = (_local26.x + (_local29 * _local15));
_local26.y = (_local26.y + (_local29 * _local16));
_local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15))));
_local2.normalImpulse = _local13;
_local2.tangentImpulse = _local14;
_local1++;
};
_local21.m_angularVelocity = _local23;
_local22.m_angularVelocity = _local24;
_local19++;
};
}
public function FinalizeVelocityConstraints():void{
var _local2:b2ContactConstraint;
var _local3:b2Manifold;
var _local4:int;
var _local5:b2ManifoldPoint;
var _local6:b2ContactConstraintPoint;
var _local1:int;
while (_local1 < m_constraintCount) {
_local2 = m_constraints[_local1];
_local3 = _local2.manifold;
_local4 = 0;
while (_local4 < _local2.pointCount) {
_local5 = _local3.points[_local4];
_local6 = _local2.points[_local4];
_local5.normalImpulse = _local6.normalImpulse;
_local5.tangentImpulse = _local6.tangentImpulse;
_local4++;
};
_local1++;
};
}
}
}//package Box2D.Dynamics.Contacts
Section 45
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact)
package Box2D.Dynamics.Contacts {
import Box2D.Dynamics.*;
public class b2NullContact extends b2Contact {
override public function Evaluate(_arg1:b2ContactListener):void{
}
override public function GetManifolds():Array{
return (null);
}
}
}//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolyAndCircleContact extends b2Contact {
private var m_manifolds:Array;
public var m_manifold:b2Manifold;
private var m0:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape));
b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape));
m_manifold.pointCount = 0;
var _local3:b2ManifoldPoint = m_manifold.points[0];
_local3.normalImpulse = 0;
_local3.tangentImpulse = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:int;
var _local3:b2Vec2;
var _local4:b2Vec2;
var _local5:b2ManifoldPoint;
var _local10:b2ManifoldPoint;
var _local11:Boolean;
var _local12:uint;
var _local13:int;
var _local6:b2Body = m_shape1.m_body;
var _local7:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf);
var _local8:Array = [false, false];
var _local9:b2ContactPoint = s_evalCP;
_local9.shape1 = m_shape1;
_local9.shape2 = m_shape2;
_local9.friction = m_friction;
_local9.restitution = m_restitution;
if (m_manifold.pointCount > 0){
_local2 = 0;
while (_local2 < m_manifold.pointCount) {
_local10 = m_manifold.points[_local2];
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = false;
_local12 = _local10.id._key;
_local13 = 0;
while (_local13 < m0.pointCount) {
if (_local8[_local13] == true){
} else {
_local5 = m0.points[_local13];
if (_local5.id._key == _local12){
_local8[_local13] = true;
_local10.normalImpulse = _local5.normalImpulse;
_local10.tangentImpulse = _local5.tangentImpulse;
_local11 = true;
if (_arg1 != null){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Persist(_local9);
};
break;
};
};
_local13++;
};
if ((((_local11 == false)) && (!((_arg1 == null))))){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Add(_local9);
};
_local2++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (_arg1 == null){
return;
};
_local2 = 0;
while (_local2 < m0.pointCount) {
if (_local8[_local2]){
} else {
_local5 = m0.points[_local2];
_local9.position = _local6.GetWorldPoint(_local5.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m0.normal);
_local9.separation = _local5.separation;
_local9.id.key = _local5.id._key;
_arg1.Remove(_local9);
};
_local2++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2PolyAndCircleContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolygonContact extends b2Contact {
private var m_manifolds:Array;
private var m0:b2Manifold;
public var m_manifold:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{
m0 = new b2Manifold();
m_manifolds = [new b2Manifold()];
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2ManifoldPoint;
var _local7:b2ContactPoint;
var _local8:int;
var _local10:b2ManifoldPoint;
var _local11:Boolean;
var _local12:uint;
var _local13:int;
var _local5:b2Body = m_shape1.m_body;
var _local6:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf);
var _local9:Array = [false, false];
_local7 = s_evalCP;
_local7.shape1 = m_shape1;
_local7.shape2 = m_shape2;
_local7.friction = m_friction;
_local7.restitution = m_restitution;
if (m_manifold.pointCount > 0){
_local8 = 0;
while (_local8 < m_manifold.pointCount) {
_local10 = m_manifold.points[_local8];
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = false;
_local12 = _local10.id._key;
_local13 = 0;
while (_local13 < m0.pointCount) {
if (_local9[_local13] == true){
} else {
_local4 = m0.points[_local13];
if (_local4.id._key == _local12){
_local9[_local13] = true;
_local10.normalImpulse = _local4.normalImpulse;
_local10.tangentImpulse = _local4.tangentImpulse;
_local11 = true;
if (_arg1 != null){
_local7.position = _local5.GetWorldPoint(_local10.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local10.separation;
_local7.id.key = _local12;
_arg1.Persist(_local7);
};
break;
};
};
_local13++;
};
if ((((_local11 == false)) && (!((_arg1 == null))))){
_local7.position = _local5.GetWorldPoint(_local10.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local10.separation;
_local7.id.key = _local12;
_arg1.Add(_local7);
};
_local8++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (_arg1 == null){
return;
};
_local8 = 0;
while (_local8 < m0.pointCount) {
if (_local9[_local8]){
} else {
_local4 = m0.points[_local8];
_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m0.normal);
_local7.separation = _local4.separation;
_local7.id.key = _local4.id._key;
_arg1.Remove(_local7);
};
_local8++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2PolygonContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 48
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2DistanceJoint extends b2Joint {
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_bias:Number;
public var m_gamma:Number;
public var m_u:b2Vec2;
public var m_mass:Number;
public var m_impulse:Number;
public var m_dampingRatio:Number;
public var m_frequencyHz:Number;
public var m_length:Number;
public function b2DistanceJoint(_arg1:b2DistanceJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_u = new b2Vec2();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_length = _arg1.length;
m_frequencyHz = _arg1.frequencyHz;
m_dampingRatio = _arg1.dampingRatio;
m_impulse = 0;
m_gamma = 0;
m_bias = 0;
m_inv_dt = 0;
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Mat22;
var _local3:Number;
var _local4:b2Body;
var _local5:b2Body;
var _local6:Number;
var _local8:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
m_inv_dt = _arg1.inv_dt;
_local4 = m_body1;
_local5 = m_body2;
_local2 = _local4.m_xf.R;
_local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local4.m_sweep.localCenter.y);
_local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7));
_local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7));
_local6 = _local3;
_local2 = _local5.m_xf.R;
_local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y);
_local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9));
_local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9));
_local8 = _local3;
m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6);
m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7);
var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y)));
if (_local10 > b2Settings.b2_linearSlop){
m_u.Multiply((1 / _local10));
} else {
m_u.SetZero();
};
var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x));
var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x));
var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12));
m_mass = (1 / _local13);
if (m_frequencyHz > 0){
_local14 = (_local10 - m_length);
_local15 = ((2 * Math.PI) * m_frequencyHz);
_local16 = (((2 * m_mass) * m_dampingRatio) * _local15);
_local17 = ((m_mass * _local15) * _local15);
m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17))));
m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma);
m_mass = (1 / (_local13 + m_gamma));
};
if (_arg1.warmStarting){
m_impulse = (m_impulse * _arg1.dtRatio);
_local18 = (m_impulse * m_u.x);
_local19 = (m_impulse * m_u.y);
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19));
_local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18))));
_local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18));
_local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19));
_local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18))));
} else {
m_impulse = 0;
};
}
override public function GetReactionTorque():Number{
return (0);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = new b2Vec2();
_local1.SetV(m_u);
_local1.Multiply((m_inv_dt * m_impulse));
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local1:b2Mat22;
if (m_frequencyHz > 0){
return (true);
};
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local1 = _local2.m_xf.R;
var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5));
_local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5));
_local4 = _local6;
_local1 = _local3.m_xf.R;
var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8));
_local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8));
_local7 = _local6;
var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4);
var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5);
var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10)));
_local9 = (_local9 / _local11);
_local10 = (_local10 / _local11);
var _local12:Number = (_local11 - m_length);
_local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
var _local13:Number = (-(m_mass) * _local12);
m_u.Set(_local9, _local10);
var _local14:Number = (_local13 * m_u.x);
var _local15:Number = (_local13 * m_u.y);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14))));
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15));
_local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14))));
_local2.SynchronizeTransform();
_local3.SynchronizeTransform();
return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop));
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Mat22;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
_local2 = _local3.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6));
_local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6));
_local5 = _local7;
_local2 = _local4.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9));
_local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9));
_local8 = _local7;
var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6));
var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5));
var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9));
var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8));
var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11)));
var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse)));
m_impulse = (m_impulse + _local15);
var _local16:Number = (_local15 * m_u.x);
var _local17:Number = (_local15 * m_u.y);
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16))));
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17));
_local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
}
}
}//package Box2D.Dynamics.Joints
Section 49
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2DistanceJointDef extends b2JointDef {
public var localAnchor1:b2Vec2;
public var length:Number;
public var dampingRatio:Number;
public var localAnchor2:b2Vec2;
public var frequencyHz:Number;
public function b2DistanceJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_distanceJoint;
length = 1;
frequencyHz = 0;
dampingRatio = 0;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1.SetV(body1.GetLocalPoint(_arg3));
localAnchor2.SetV(body2.GetLocalPoint(_arg4));
var _local5:Number = (_arg4.x - _arg3.x);
var _local6:Number = (_arg4.y - _arg3.y);
length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
frequencyHz = 0;
dampingRatio = 0;
}
}
}//package Box2D.Dynamics.Joints
Section 50
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2GearJoint extends b2Joint {
public var m_ground2:b2Body;
public var m_groundAnchor1:b2Vec2;
public var m_groundAnchor2:b2Vec2;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_ratio:Number;
public var m_revolute2:b2RevoluteJoint;
public var m_force:Number;
public var m_mass:Number;
public var m_prismatic2:b2PrismaticJoint;
public var m_ground1:b2Body;
public var m_revolute1:b2RevoluteJoint;
public var m_prismatic1:b2PrismaticJoint;
public var m_constant:Number;
public var m_J:b2Jacobian;
public function b2GearJoint(_arg1:b2GearJointDef){
var _local4:Number;
var _local5:Number;
m_groundAnchor1 = new b2Vec2();
m_groundAnchor2 = new b2Vec2();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_J = new b2Jacobian();
super(_arg1);
var _local2:int = _arg1.joint1.m_type;
var _local3:int = _arg1.joint2.m_type;
m_revolute1 = null;
m_prismatic1 = null;
m_revolute2 = null;
m_prismatic2 = null;
m_ground1 = _arg1.joint1.m_body1;
m_body1 = _arg1.joint1.m_body2;
if (_local2 == b2Joint.e_revoluteJoint){
m_revolute1 = (_arg1.joint1 as b2RevoluteJoint);
m_groundAnchor1.SetV(m_revolute1.m_localAnchor1);
m_localAnchor1.SetV(m_revolute1.m_localAnchor2);
_local4 = m_revolute1.GetJointAngle();
} else {
m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint);
m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1);
m_localAnchor1.SetV(m_prismatic1.m_localAnchor2);
_local4 = m_prismatic1.GetJointTranslation();
};
m_ground2 = _arg1.joint2.m_body1;
m_body2 = _arg1.joint2.m_body2;
if (_local3 == b2Joint.e_revoluteJoint){
m_revolute2 = (_arg1.joint2 as b2RevoluteJoint);
m_groundAnchor2.SetV(m_revolute2.m_localAnchor1);
m_localAnchor2.SetV(m_revolute2.m_localAnchor2);
_local5 = m_revolute2.GetJointAngle();
} else {
m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint);
m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1);
m_localAnchor2.SetV(m_prismatic2.m_localAnchor2);
_local5 = m_prismatic2.GetJointTranslation();
};
m_ratio = _arg1.ratio;
m_constant = (_local4 + (m_ratio * _local5));
m_force = 0;
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:b2Mat22;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local15:Number;
var _local2:b2Body = m_ground1;
var _local3:b2Body = m_ground2;
var _local4:b2Body = m_body1;
var _local5:b2Body = m_body2;
var _local14:Number = 0;
m_J.SetZero();
if (m_revolute1){
m_J.angular1 = -1;
_local14 = (_local14 + _local4.m_invI);
} else {
_local10 = _local2.m_xf.R;
_local11 = m_prismatic1.m_localXAxis1;
_local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
_local10 = _local4.m_xf.R;
_local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y);
_local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9));
_local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9));
_local8 = _local13;
_local12 = ((_local8 * _local7) - (_local9 * _local6));
m_J.linear1.Set(-(_local6), -(_local7));
m_J.angular1 = -(_local12);
_local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12)));
};
if (m_revolute2){
m_J.angular2 = -(m_ratio);
_local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI));
} else {
_local10 = _local3.m_xf.R;
_local11 = m_prismatic2.m_localXAxis1;
_local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
_local10 = _local5.m_xf.R;
_local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x);
_local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y);
_local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9));
_local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9));
_local8 = _local13;
_local12 = ((_local8 * _local7) - (_local9 * _local6));
m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7));
m_J.angular2 = (-(m_ratio) * _local12);
_local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12))));
};
m_mass = (1 / _local14);
if (_arg1.warmStarting){
_local15 = (_arg1.dt * m_force);
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y));
_local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1));
_local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x));
_local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y));
_local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2));
} else {
m_force = 0;
};
}
override public function GetReactionTorque():Number{
var _local1:b2Mat22 = m_body2.m_xf.R;
var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x);
var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y);
var _local4:Number = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3));
_local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3));
_local2 = _local4;
_local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x))));
return (_local4);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y));
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local4:Number;
var _local5:Number;
var _local1:Number = 0;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
if (m_revolute1){
_local4 = m_revolute1.GetJointAngle();
} else {
_local4 = m_prismatic1.GetJointTranslation();
};
if (m_revolute2){
_local5 = m_revolute2.GetJointAngle();
} else {
_local5 = m_prismatic2.GetJointTranslation();
};
var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5)));
var _local7:Number = (-(m_mass) * _local6);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y));
_local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1));
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2));
_local2.SynchronizeTransform();
_local3.SynchronizeTransform();
return ((_local1 < b2Settings.b2_linearSlop));
}
public function GetRatio():Number{
return (m_ratio);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4);
m_force = (m_force + _local5);
var _local6:Number = (_arg1.dt * _local5);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2));
}
}
}//package Box2D.Dynamics.Joints
Section 51
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef)
package Box2D.Dynamics.Joints {
public class b2GearJointDef extends b2JointDef {
public var joint1:b2Joint;
public var joint2:b2Joint;
public var ratio:Number;
public function b2GearJointDef(){
type = b2Joint.e_gearJoint;
joint1 = null;
joint2 = null;
ratio = 1;
}
}
}//package Box2D.Dynamics.Joints
Section 52
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
public class b2Jacobian {
public var linear1:b2Vec2;
public var linear2:b2Vec2;
public var angular1:Number;
public var angular2:Number;
public function b2Jacobian(){
linear1 = new b2Vec2();
linear2 = new b2Vec2();
super();
}
public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{
linear1.SetV(_arg1);
angular1 = _arg2;
linear2.SetV(_arg3);
angular2 = _arg4;
}
public function SetZero():void{
linear1.SetZero();
angular1 = 0;
linear2.SetZero();
angular2 = 0;
}
public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{
return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4)));
}
}
}//package Box2D.Dynamics.Joints
Section 53
//b2Joint (Box2D.Dynamics.Joints.b2Joint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2Joint {
public var m_islandFlag:Boolean;
public var m_body1:b2Body;
public var m_prev:b2Joint;
public var m_next:b2Joint;
public var m_type:int;
public var m_collideConnected:Boolean;
public var m_node1:b2JointEdge;
public var m_node2:b2JointEdge;
public var m_inv_dt:Number;
public var m_userData;
public var m_body2:b2Body;
public static const e_unknownJoint:int = 0;
public static const e_inactiveLimit:int = 0;
public static const e_atUpperLimit:int = 2;
public static const e_atLowerLimit:int = 1;
public static const e_gearJoint:int = 6;
public static const e_revoluteJoint:int = 1;
public static const e_equalLimits:int = 3;
public static const e_distanceJoint:int = 3;
public static const e_pulleyJoint:int = 4;
public static const e_prismaticJoint:int = 2;
public static const e_mouseJoint:int = 5;
public function b2Joint(_arg1:b2JointDef){
m_node1 = new b2JointEdge();
m_node2 = new b2JointEdge();
super();
m_type = _arg1.type;
m_prev = null;
m_next = null;
m_body1 = _arg1.body1;
m_body2 = _arg1.body2;
m_collideConnected = _arg1.collideConnected;
m_islandFlag = false;
m_userData = _arg1.userData;
}
public function GetBody2():b2Body{
return (m_body2);
}
public function GetAnchor1():b2Vec2{
return (null);
}
public function GetAnchor2():b2Vec2{
return (null);
}
public function GetNext():b2Joint{
return (m_next);
}
public function GetType():int{
return (m_type);
}
public function InitVelocityConstraints(_arg1:b2TimeStep):void{
}
public function GetReactionTorque():Number{
return (0);
}
public function GetUserData(){
return (m_userData);
}
public function GetReactionForce():b2Vec2{
return (null);
}
public function SolvePositionConstraints():Boolean{
return (false);
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetBody1():b2Body{
return (m_body1);
}
public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
}
public function InitPositionConstraints():void{
}
public static function Destroy(_arg1:b2Joint, _arg2):void{
}
public static function Create(_arg1:b2JointDef, _arg2):b2Joint{
var _local3:b2Joint;
switch (_arg1.type){
case e_distanceJoint:
_local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef));
break;
case e_mouseJoint:
_local3 = new b2MouseJoint((_arg1 as b2MouseJointDef));
break;
case e_prismaticJoint:
_local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef));
break;
case e_revoluteJoint:
_local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef));
break;
case e_pulleyJoint:
_local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef));
break;
case e_gearJoint:
_local3 = new b2GearJoint((_arg1 as b2GearJointDef));
break;
default:
break;
};
return (_local3);
}
}
}//package Box2D.Dynamics.Joints
Section 54
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef)
package Box2D.Dynamics.Joints {
import Box2D.Dynamics.*;
public class b2JointDef {
public var body2:b2Body;
public var type:int;
public var userData;
public var collideConnected:Boolean;
public var body1:b2Body;
public function b2JointDef(){
type = b2Joint.e_unknownJoint;
userData = null;
body1 = null;
body2 = null;
collideConnected = false;
}
}
}//package Box2D.Dynamics.Joints
Section 55
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge)
package Box2D.Dynamics.Joints {
import Box2D.Dynamics.*;
public class b2JointEdge {
public var other:b2Body;
public var next:b2JointEdge;
public var prev:b2JointEdge;
public var joint:b2Joint;
}
}//package Box2D.Dynamics.Joints
Section 56
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2MouseJoint extends b2Joint {
private var K1:b2Mat22;
private var K:b2Mat22;
public var m_beta:Number;
public var m_mass:b2Mat22;
private var K2:b2Mat22;
public var m_target:b2Vec2;
public var m_gamma:Number;
public var m_impulse:b2Vec2;
public var m_C:b2Vec2;
public var m_localAnchor:b2Vec2;
public var m_maxForce:Number;
public function b2MouseJoint(_arg1:b2MouseJointDef){
var _local3:Number;
K = new b2Mat22();
K1 = new b2Mat22();
K2 = new b2Mat22();
m_localAnchor = new b2Vec2();
m_target = new b2Vec2();
m_impulse = new b2Vec2();
m_mass = new b2Mat22();
m_C = new b2Vec2();
super(_arg1);
m_target.SetV(_arg1.target);
var _local2:Number = (m_target.x - m_body2.m_xf.position.x);
_local3 = (m_target.y - m_body2.m_xf.position.y);
var _local4:b2Mat22 = m_body2.m_xf.R;
m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y));
m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y));
m_maxForce = _arg1.maxForce;
m_impulse.SetZero();
var _local5:Number = m_body2.m_mass;
var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz);
var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6);
var _local8:Number = ((_arg1.timeStep * _local5) * (_local6 * _local6));
m_gamma = (1 / (_local7 + _local8));
m_beta = (_local8 / (_local7 + _local8));
}
public function SetTarget(_arg1:b2Vec2):void{
if (m_body2.IsSleeping()){
m_body2.WakeUp();
};
m_target = _arg1;
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Mat22;
var _local4:Number;
var _local5:Number;
var _local7:Number;
var _local8:Number;
_local2 = m_body2;
_local3 = _local2.m_xf.R;
_local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x);
_local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y);
var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5));
_local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5));
_local4 = _local6;
_local7 = _local2.m_invMass;
_local8 = _local2.m_invI;
K1.col1.x = _local7;
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = _local7;
K2.col1.x = ((_local8 * _local5) * _local5);
K2.col2.x = ((-(_local8) * _local4) * _local5);
K2.col1.y = ((-(_local8) * _local4) * _local5);
K2.col2.y = ((_local8 * _local4) * _local4);
K.SetM(K1);
K.AddM(K2);
K.col1.x = (K.col1.x + m_gamma);
K.col2.y = (K.col2.y + m_gamma);
K.Invert(m_mass);
m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x);
m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y);
_local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98);
var _local9:Number = (_arg1.dt * m_impulse.x);
var _local10:Number = (_arg1.dt * m_impulse.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9))));
}
override public function GetAnchor1():b2Vec2{
return (m_target);
}
override public function GetReactionTorque():Number{
return (0);
}
override public function GetReactionForce():b2Vec2{
return (m_impulse);
}
override public function SolvePositionConstraints():Boolean{
return (true);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local3:b2Mat22;
var _local4:Number;
var _local5:Number;
var _local2:b2Body = m_body2;
_local3 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y);
_local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7));
_local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7));
_local6 = _local4;
var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7));
var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6));
_local3 = m_mass;
_local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x));
_local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y));
var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)));
var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)));
var _local12:Number = m_impulse.x;
var _local13:Number = m_impulse.y;
m_impulse.x = (m_impulse.x + _local10);
m_impulse.y = (m_impulse.y + _local11);
var _local14:Number = m_impulse.Length();
if (_local14 > m_maxForce){
m_impulse.Multiply((m_maxForce / _local14));
};
_local10 = (m_impulse.x - _local12);
_local11 = (m_impulse.y - _local13);
var _local15:Number = (_arg1.dt * _local10);
var _local16:Number = (_arg1.dt * _local11);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15))));
}
}
}//package Box2D.Dynamics.Joints
Section 57
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
public class b2MouseJointDef extends b2JointDef {
public var timeStep:Number;
public var target:b2Vec2;
public var maxForce:Number;
public var dampingRatio:Number;
public var frequencyHz:Number;
public function b2MouseJointDef(){
target = new b2Vec2();
super();
type = b2Joint.e_mouseJoint;
maxForce = 0;
frequencyHz = 5;
dampingRatio = 0.7;
timeStep = (1 / 60);
}
}
}//package Box2D.Dynamics.Joints
Section 58
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PrismaticJoint extends b2Joint {
public var m_limitForce:Number;
public var m_lowerTranslation:Number;
public var m_localXAxis1:b2Vec2;
public var m_refAngle:Number;
public var m_torque:Number;
public var m_motorForce:Number;
public var m_enableLimit:Boolean;
public var m_angularMass:Number;
public var m_maxMotorForce:Number;
public var m_localYAxis1:b2Vec2;
public var m_force:Number;
public var m_motorMass:Number;
public var m_upperTranslation:Number;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_limitState:int;
public var m_linearMass:Number;
public var m_motorJacobian:b2Jacobian;
public var m_limitPositionImpulse:Number;
public var m_motorSpeed:Number;
public var m_enableMotor:Boolean;
public var m_linearJacobian:b2Jacobian;
public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_localXAxis1 = new b2Vec2();
m_localYAxis1 = new b2Vec2();
m_linearJacobian = new b2Jacobian();
m_motorJacobian = new b2Jacobian();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_localXAxis1.SetV(_arg1.localAxis1);
m_localYAxis1.x = -(m_localXAxis1.y);
m_localYAxis1.y = m_localXAxis1.x;
m_refAngle = _arg1.referenceAngle;
m_linearJacobian.SetZero();
m_linearMass = 0;
m_force = 0;
m_angularMass = 0;
m_torque = 0;
m_motorJacobian.SetZero();
m_motorMass = 0;
m_motorForce = 0;
m_limitForce = 0;
m_limitPositionImpulse = 0;
m_lowerTranslation = _arg1.lowerTranslation;
m_upperTranslation = _arg1.upperTranslation;
m_maxMotorForce = _arg1.maxMotorForce;
m_motorSpeed = _arg1.motorSpeed;
m_enableLimit = _arg1.enableLimit;
m_enableMotor = _arg1.enableMotor;
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local8:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
var _local4:Number = _local2.m_invMass;
var _local5:Number = _local3.m_invMass;
var _local6:Number = _local2.m_invI;
var _local7:Number = _local3.m_invI;
var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9);
m_force = (m_force + _local10);
var _local11:Number = (_arg1.dt * _local10);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2));
var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity);
var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12);
m_torque = (m_torque + _local13);
var _local14:Number = (_arg1.dt * _local13);
_local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14));
if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
_local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed);
_local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15);
_local17 = m_motorForce;
m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce);
_local16 = (m_motorForce - _local17);
_local11 = (_arg1.dt * _local16);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2));
};
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
_local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18);
if (m_limitState == e_equalLimits){
m_limitForce = (m_limitForce + _local19);
} else {
if (m_limitState == e_atLowerLimit){
_local8 = m_limitForce;
m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0);
_local19 = (m_limitForce - _local8);
} else {
if (m_limitState == e_atUpperLimit){
_local8 = m_limitForce;
m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0);
_local19 = (m_limitForce - _local8);
};
};
};
_local11 = (_arg1.dt * _local19);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2));
};
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
public function GetUpperLimit():Number{
return (m_upperTranslation);
}
public function GetLowerLimit():Number{
return (m_lowerTranslation);
}
public function EnableMotor(_arg1:Boolean):void{
m_enableMotor = _arg1;
}
public function GetJointTranslation():Number{
var _local3:b2Mat22;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1);
var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2);
var _local6:Number = (_local5.x - _local4.x);
var _local7:Number = (_local5.y - _local4.y);
var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1);
var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7));
return (_local9);
}
public function GetMotorSpeed():Number{
return (m_motorSpeed);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Mat22 = m_body1.m_xf.R;
var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y)));
var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y)));
var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y)));
var _local5:Number = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y)));
return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5))));
}
override public function SolvePositionConstraints():Boolean{
var _local1:Number;
var _local2:Number;
var _local9:b2Mat22;
var _local10:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
var _local5:Number = _local3.m_invMass;
var _local6:Number = _local4.m_invMass;
var _local7:Number = _local3.m_invI;
var _local8:Number = _local4.m_invI;
_local9 = _local3.m_xf.R;
var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local12:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12));
_local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12));
_local11 = _local10;
_local9 = _local4.m_xf.R;
var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local14:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14));
_local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14));
_local13 = _local10;
var _local15:Number = (_local3.m_sweep.c.x + _local11);
var _local16:Number = (_local3.m_sweep.c.y + _local12);
var _local17:Number = (_local4.m_sweep.c.x + _local13);
var _local18:Number = (_local4.m_sweep.c.y + _local14);
var _local19:Number = (_local17 - _local15);
var _local20:Number = (_local18 - _local16);
_local9 = _local3.m_xf.R;
var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y));
var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y));
var _local23:Number = ((_local21 * _local19) + (_local22 * _local20));
_local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
var _local24:Number = (-(m_linearMass) * _local23);
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y));
_local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2));
var _local25:Number = b2Math.b2Abs(_local23);
var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle);
_local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
var _local27:Number = (-(m_angularMass) * _local26);
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
var _local28:Number = b2Math.b2Abs(_local26);
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local9 = _local3.m_xf.R;
_local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
_local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12));
_local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12));
_local11 = _local10;
_local9 = _local4.m_xf.R;
_local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
_local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14));
_local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14));
_local13 = _local10;
_local15 = (_local3.m_sweep.c.x + _local11);
_local16 = (_local3.m_sweep.c.y + _local12);
_local17 = (_local4.m_sweep.c.x + _local13);
_local18 = (_local4.m_sweep.c.y + _local14);
_local19 = (_local17 - _local15);
_local20 = (_local18 - _local16);
_local9 = _local3.m_xf.R;
_local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y));
_local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y));
_local31 = ((_local29 * _local19) + (_local30 * _local20));
_local32 = 0;
if (m_limitState == e_equalLimits){
_local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
_local32 = (-(m_motorMass) * _local1);
_local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26));
} else {
if (m_limitState == e_atLowerLimit){
_local1 = (_local31 - m_lowerTranslation);
_local25 = b2Math.b2Max(_local25, -(_local1));
_local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local32 = (-(m_motorMass) * _local1);
_local2 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0);
_local32 = (m_limitPositionImpulse - _local2);
} else {
if (m_limitState == e_atUpperLimit){
_local1 = (_local31 - m_upperTranslation);
_local25 = b2Math.b2Max(_local25, _local1);
_local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection);
_local32 = (-(m_motorMass) * _local1);
_local2 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0);
_local32 = (m_limitPositionImpulse - _local2);
};
};
};
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y));
_local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
};
return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop))));
}
public function SetMotorSpeed(_arg1:Number):void{
m_motorSpeed = _arg1;
}
public function GetJointSpeed():Number{
var _local3:b2Mat22;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
_local3 = _local1.m_xf.R;
var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5));
_local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5));
_local4 = _local6;
_local3 = _local2.m_xf.R;
var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8));
_local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8));
_local7 = _local6;
var _local9:Number = (_local1.m_sweep.c.x + _local4);
var _local10:Number = (_local1.m_sweep.c.y + _local5);
var _local11:Number = (_local2.m_sweep.c.x + _local7);
var _local12:Number = (_local2.m_sweep.c.y + _local8);
var _local13:Number = (_local11 - _local9);
var _local14:Number = (_local12 - _local10);
var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1);
var _local16:b2Vec2 = _local1.m_linearVelocity;
var _local17:b2Vec2 = _local2.m_linearVelocity;
var _local18:Number = _local1.m_angularVelocity;
var _local19:Number = _local2.m_angularVelocity;
var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4)))));
return (_local20);
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local5:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local10:Number = _local2.m_invMass;
var _local11:Number = _local3.m_invMass;
var _local12:Number = _local2.m_invI;
var _local13:Number = _local3.m_invI;
_local4 = _local2.m_xf.R;
var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y));
var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y));
var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x);
var _local17:Number = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y);
m_linearJacobian.linear1.x = -(_local14);
m_linearJacobian.linear1.y = -(_local15);
m_linearJacobian.linear2.x = _local14;
m_linearJacobian.linear2.y = _local15;
m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14)));
m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14));
m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2));
m_linearMass = (1 / m_linearMass);
m_angularMass = (_local12 + _local13);
if (m_angularMass > Number.MIN_VALUE){
m_angularMass = (1 / m_angularMass);
};
if (((m_enableLimit) || (m_enableMotor))){
_local4 = _local2.m_xf.R;
_local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y));
_local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y));
m_motorJacobian.linear1.x = -(_local18);
m_motorJacobian.linear1.y = -(_local19);
m_motorJacobian.linear2.x = _local18;
m_motorJacobian.linear2.y = _local19;
m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18)));
m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18));
m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2));
m_motorMass = (1 / m_motorMass);
if (m_enableLimit){
_local20 = (_local16 - _local6);
_local21 = (_local17 - _local7);
_local22 = ((_local18 * _local20) + (_local19 * _local21));
if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){
m_limitState = e_equalLimits;
} else {
if (_local22 <= m_lowerTranslation){
if (m_limitState != e_atLowerLimit){
m_limitForce = 0;
};
m_limitState = e_atLowerLimit;
} else {
if (_local22 >= m_upperTranslation){
if (m_limitState != e_atUpperLimit){
m_limitForce = 0;
};
m_limitState = e_atUpperLimit;
} else {
m_limitState = e_inactiveLimit;
m_limitForce = 0;
};
};
};
};
};
if (m_enableMotor == false){
m_motorForce = 0;
};
if (m_enableLimit == false){
m_limitForce = 0;
};
if (_arg1.warmStarting){
_local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x)));
_local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y)));
_local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x)));
_local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y)));
_local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1)));
_local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2)));
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28));
} else {
m_force = 0;
m_torque = 0;
m_limitForce = 0;
m_motorForce = 0;
};
m_limitPositionImpulse = 0;
}
public function GetMotorForce():Number{
return (m_motorForce);
}
public function EnableLimit(_arg1:Boolean):void{
m_enableLimit = _arg1;
}
public function SetMaxMotorForce(_arg1:Number):void{
m_maxMotorForce = _arg1;
}
override public function GetReactionTorque():Number{
return (m_torque);
}
public function IsLimitEnabled():Boolean{
return (m_enableLimit);
}
public function IsMotorEnabled():Boolean{
return (m_enableMotor);
}
public function SetLimits(_arg1:Number, _arg2:Number):void{
m_lowerTranslation = _arg1;
m_upperTranslation = _arg2;
}
}
}//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PrismaticJointDef extends b2JointDef {
public var motorSpeed:Number;
public var localAxis1:b2Vec2;
public var referenceAngle:Number;
public var upperTranslation:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var enableLimit:Boolean;
public var enableMotor:Boolean;
public var maxMotorForce:Number;
public var lowerTranslation:Number;
public function b2PrismaticJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
localAxis1 = new b2Vec2();
super();
type = b2Joint.e_prismaticJoint;
localAxis1.Set(1, 0);
referenceAngle = 0;
enableLimit = false;
lowerTranslation = 0;
upperTranslation = 0;
enableMotor = false;
maxMotorForce = 0;
motorSpeed = 0;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1 = body1.GetLocalPoint(_arg3);
localAnchor2 = body2.GetLocalPoint(_arg3);
localAxis1 = body1.GetLocalVector(_arg4);
referenceAngle = (body2.GetAngle() - body1.GetAngle());
}
}
}//package Box2D.Dynamics.Joints
Section 60
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PulleyJoint extends b2Joint {
public var m_limitState1:int;
public var m_limitState2:int;
public var m_ground:b2Body;
public var m_maxLength2:Number;
public var m_maxLength1:Number;
public var m_limitPositionImpulse1:Number;
public var m_limitPositionImpulse2:Number;
public var m_force:Number;
public var m_constant:Number;
public var m_positionImpulse:Number;
public var m_state:int;
public var m_ratio:Number;
public var m_groundAnchor1:b2Vec2;
public var m_groundAnchor2:b2Vec2;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_limitMass1:Number;
public var m_limitMass2:Number;
public var m_pulleyMass:Number;
public var m_u1:b2Vec2;
public var m_limitForce1:Number;
public var m_limitForce2:Number;
public var m_u2:b2Vec2;
public static const b2_minPulleyLength:Number = 2;
public function b2PulleyJoint(_arg1:b2PulleyJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_groundAnchor1 = new b2Vec2();
m_groundAnchor2 = new b2Vec2();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_u1 = new b2Vec2();
m_u2 = new b2Vec2();
super(_arg1);
m_ground = m_body1.m_world.m_groundBody;
m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x);
m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y);
m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x);
m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_ratio = _arg1.ratio;
m_constant = (_arg1.length1 + (m_ratio * _arg1.length2));
m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength)));
m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio));
m_force = 0;
m_limitForce1 = 0;
m_limitForce2 = 0;
}
public function GetGroundAnchor2():b2Vec2{
var _local1:b2Vec2 = m_ground.m_xf.position.Copy();
_local1.Add(m_groundAnchor2);
return (_local1);
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = m_u2.Copy();
_local1.Multiply(m_force);
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local3:b2Mat22;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
var _local23:Number = 0;
if (m_state == e_atUpperLimit){
_local3 = _local1.m_xf.R;
_local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9));
_local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9));
_local8 = _local22;
_local3 = _local2.m_xf.R;
_local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
_local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11));
_local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11));
_local10 = _local22;
_local12 = (_local1.m_sweep.c.x + _local8);
_local13 = (_local1.m_sweep.c.y + _local9);
_local14 = (_local2.m_sweep.c.x + _local10);
_local15 = (_local2.m_sweep.c.y + _local11);
m_u1.Set((_local12 - _local4), (_local13 - _local5));
m_u2.Set((_local14 - _local6), (_local15 - _local7));
_local16 = m_u1.Length();
_local17 = m_u2.Length();
if (_local16 > b2Settings.b2_linearSlop){
m_u1.Multiply((1 / _local16));
} else {
m_u1.SetZero();
};
if (_local17 > b2Settings.b2_linearSlop){
m_u2.Multiply((1 / _local17));
} else {
m_u2.SetZero();
};
_local18 = ((m_constant - _local16) - (m_ratio * _local17));
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_pulleyMass) * _local18);
_local20 = m_positionImpulse;
m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19));
_local19 = (m_positionImpulse - _local20);
_local12 = (-(_local19) * m_u1.x);
_local13 = (-(_local19) * m_u1.y);
_local14 = ((-(m_ratio) * _local19) * m_u2.x);
_local15 = ((-(m_ratio) * _local19) * m_u2.y);
_local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12));
_local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13));
_local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12))));
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14))));
_local1.SynchronizeTransform();
_local2.SynchronizeTransform();
};
if (m_limitState1 == e_atUpperLimit){
_local3 = _local1.m_xf.R;
_local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9));
_local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9));
_local8 = _local22;
_local12 = (_local1.m_sweep.c.x + _local8);
_local13 = (_local1.m_sweep.c.y + _local9);
m_u1.Set((_local12 - _local4), (_local13 - _local5));
_local16 = m_u1.Length();
if (_local16 > b2Settings.b2_linearSlop){
m_u1.x = (m_u1.x * (1 / _local16));
m_u1.y = (m_u1.y * (1 / _local16));
} else {
m_u1.SetZero();
};
_local18 = (m_maxLength1 - _local16);
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_limitMass1) * _local18);
_local21 = m_limitPositionImpulse1;
m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19));
_local19 = (m_limitPositionImpulse1 - _local21);
_local12 = (-(_local19) * m_u1.x);
_local13 = (-(_local19) * m_u1.y);
_local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12));
_local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13));
_local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12))));
_local1.SynchronizeTransform();
};
if (m_limitState2 == e_atUpperLimit){
_local3 = _local2.m_xf.R;
_local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
_local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11));
_local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11));
_local10 = _local22;
_local14 = (_local2.m_sweep.c.x + _local10);
_local15 = (_local2.m_sweep.c.y + _local11);
m_u2.Set((_local14 - _local6), (_local15 - _local7));
_local17 = m_u2.Length();
if (_local17 > b2Settings.b2_linearSlop){
m_u2.x = (m_u2.x * (1 / _local17));
m_u2.y = (m_u2.y * (1 / _local17));
} else {
m_u2.SetZero();
};
_local18 = (m_maxLength2 - _local17);
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_limitMass2) * _local18);
_local21 = m_limitPositionImpulse2;
m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19));
_local19 = (m_limitPositionImpulse2 - _local21);
_local14 = (-(_local19) * m_u2.x);
_local15 = (-(_local19) * m_u2.y);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14))));
_local2.SynchronizeTransform();
};
return ((_local23 < b2Settings.b2_linearSlop));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6));
_local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6));
_local5 = _local7;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local7;
var _local10:Number = (_local2.m_sweep.c.x + _local5);
var _local11:Number = (_local2.m_sweep.c.y + _local6);
var _local12:Number = (_local3.m_sweep.c.x + _local8);
var _local13:Number = (_local3.m_sweep.c.y + _local9);
var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
m_u1.Set((_local10 - _local14), (_local11 - _local15));
m_u2.Set((_local12 - _local16), (_local13 - _local17));
var _local18:Number = m_u1.Length();
var _local19:Number = m_u2.Length();
if (_local18 > b2Settings.b2_linearSlop){
m_u1.Multiply((1 / _local18));
} else {
m_u1.SetZero();
};
if (_local19 > b2Settings.b2_linearSlop){
m_u2.Multiply((1 / _local19));
} else {
m_u2.SetZero();
};
var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19));
if (_local20 > 0){
m_state = e_inactiveLimit;
m_force = 0;
} else {
m_state = e_atUpperLimit;
m_positionImpulse = 0;
};
if (_local18 < m_maxLength1){
m_limitState1 = e_inactiveLimit;
m_limitForce1 = 0;
} else {
m_limitState1 = e_atUpperLimit;
m_limitPositionImpulse1 = 0;
};
if (_local19 < m_maxLength2){
m_limitState2 = e_inactiveLimit;
m_limitForce2 = 0;
} else {
m_limitState2 = e_atUpperLimit;
m_limitPositionImpulse2 = 0;
};
var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x));
var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x));
m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21));
m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22));
m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2));
m_limitMass1 = (1 / m_limitMass1);
m_limitMass2 = (1 / m_limitMass2);
m_pulleyMass = (1 / m_pulleyMass);
if (_arg1.warmStarting){
_local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x);
_local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y);
_local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x);
_local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25))));
} else {
m_force = 0;
m_limitForce1 = 0;
m_limitForce2 = 0;
};
}
override public function GetReactionTorque():Number{
return (0);
}
public function GetRatio():Number{
return (m_ratio);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6));
_local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6));
_local5 = _local7;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local7;
if (m_state == e_atUpperLimit){
_local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6));
_local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5));
_local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9));
_local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8));
_local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13))));
_local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18);
_local20 = m_force;
m_force = b2Math.b2Max(0, (m_force + _local19));
_local19 = (m_force - _local20);
_local14 = ((-(_arg1.dt) * _local19) * m_u1.x);
_local15 = ((-(_arg1.dt) * _local19) * m_u1.y);
_local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x);
_local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
};
if (m_limitState1 == e_atUpperLimit){
_local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6));
_local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5));
_local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11)));
_local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18);
_local20 = m_limitForce1;
m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19));
_local19 = (m_limitForce1 - _local20);
_local14 = ((-(_arg1.dt) * _local19) * m_u1.x);
_local15 = ((-(_arg1.dt) * _local19) * m_u1.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14))));
};
if (m_limitState2 == e_atUpperLimit){
_local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9));
_local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8));
_local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13)));
_local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18);
_local20 = m_limitForce2;
m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19));
_local19 = (m_limitForce2 - _local20);
_local16 = ((-(_arg1.dt) * _local19) * m_u2.x);
_local17 = ((-(_arg1.dt) * _local19) * m_u2.y);
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
};
}
public function GetLength1():Number{
var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1);
var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local4:Number = (_local1.x - _local2);
var _local5:Number = (_local1.y - _local3);
return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))));
}
public function GetLength2():Number{
var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2);
var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
var _local4:Number = (_local1.x - _local2);
var _local5:Number = (_local1.y - _local3);
return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))));
}
public function GetGroundAnchor1():b2Vec2{
var _local1:b2Vec2 = m_ground.m_xf.position.Copy();
_local1.Add(m_groundAnchor1);
return (_local1);
}
}
}//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PulleyJointDef extends b2JointDef {
public var maxLength1:Number;
public var maxLength2:Number;
public var length1:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var groundAnchor1:b2Vec2;
public var groundAnchor2:b2Vec2;
public var ratio:Number;
public var length2:Number;
public function b2PulleyJointDef(){
groundAnchor1 = new b2Vec2();
groundAnchor2 = new b2Vec2();
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_pulleyJoint;
groundAnchor1.Set(-1, 1);
groundAnchor2.Set(1, 1);
localAnchor1.Set(-1, 0);
localAnchor2.Set(1, 0);
length1 = 0;
maxLength1 = 0;
length2 = 0;
maxLength2 = 0;
ratio = 1;
collideConnected = true;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{
body1 = _arg1;
body2 = _arg2;
groundAnchor1.SetV(_arg3);
groundAnchor2.SetV(_arg4);
localAnchor1 = body1.GetLocalPoint(_arg5);
localAnchor2 = body2.GetLocalPoint(_arg6);
var _local8:Number = (_arg5.x - _arg3.x);
var _local9:Number = (_arg5.y - _arg3.y);
length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
var _local10:Number = (_arg6.x - _arg4.x);
var _local11:Number = (_arg6.y - _arg4.y);
length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
ratio = _arg7;
var _local12:Number = (length1 + (ratio * length2));
maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength));
maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio);
}
}
}//package Box2D.Dynamics.Joints
Section 62
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2RevoluteJoint extends b2Joint {
public var m_limitForce:Number;
public var m_pivotMass:b2Mat22;
public var m_motorForce:Number;
public var m_enableLimit:Boolean;
public var m_limitState:int;
public var m_motorMass:Number;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
private var K1:b2Mat22;
private var K2:b2Mat22;
private var K3:b2Mat22;
private var K:b2Mat22;
public var m_pivotForce:b2Vec2;
public var m_enableMotor:Boolean;
public var m_referenceAngle:Number;
public var m_limitPositionImpulse:Number;
public var m_motorSpeed:Number;
public var m_upperAngle:Number;
public var m_lowerAngle:Number;
public var m_maxMotorTorque:Number;
public static var tImpulse:b2Vec2 = new b2Vec2();
public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){
K = new b2Mat22();
K1 = new b2Mat22();
K2 = new b2Mat22();
K3 = new b2Mat22();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_pivotForce = new b2Vec2();
m_pivotMass = new b2Mat22();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_referenceAngle = _arg1.referenceAngle;
m_pivotForce.Set(0, 0);
m_motorForce = 0;
m_limitForce = 0;
m_limitPositionImpulse = 0;
m_lowerAngle = _arg1.lowerAngle;
m_upperAngle = _arg1.upperAngle;
m_maxMotorTorque = _arg1.maxMotorTorque;
m_motorSpeed = _arg1.motorSpeed;
m_enableLimit = _arg1.enableLimit;
m_enableMotor = _arg1.enableMotor;
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local5:Number;
var _local10:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7));
var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6));
var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12)));
var _local14:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12)));
m_pivotForce.x = (m_pivotForce.x + _local13);
m_pivotForce.y = (m_pivotForce.y + _local14);
var _local15:Number = (_arg1.dt * _local13);
_local16 = (_arg1.dt * _local14);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16));
_local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15))));
if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
_local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed);
_local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17);
_local19 = m_motorForce;
m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque);
_local18 = (m_motorForce - _local19);
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18));
};
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity);
_local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20);
if (m_limitState == e_equalLimits){
m_limitForce = (m_limitForce + _local21);
} else {
if (m_limitState == e_atLowerLimit){
_local10 = m_limitForce;
m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0);
_local21 = (m_limitForce - _local10);
} else {
if (m_limitState == e_atUpperLimit){
_local10 = m_limitForce;
m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0);
_local21 = (m_limitForce - _local10);
};
};
};
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21));
};
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
public function GetUpperLimit():Number{
return (m_upperAngle);
}
public function GetLowerLimit():Number{
return (m_lowerAngle);
}
public function EnableMotor(_arg1:Boolean):void{
m_enableMotor = _arg1;
}
public function GetMotorSpeed():Number{
return (m_motorSpeed);
}
override public function GetReactionForce():b2Vec2{
return (m_pivotForce);
}
override public function SolvePositionConstraints():Boolean{
var _local1:Number;
var _local2:Number;
var _local6:b2Mat22;
var _local25:Number;
var _local26:Number;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
var _local5:Number = 0;
_local6 = _local3.m_xf.R;
var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8));
_local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8));
_local7 = _local9;
_local6 = _local4.m_xf.R;
var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local11:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11));
_local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11));
_local10 = _local9;
var _local12:Number = (_local3.m_sweep.c.x + _local7);
var _local13:Number = (_local3.m_sweep.c.y + _local8);
var _local14:Number = (_local4.m_sweep.c.x + _local10);
var _local15:Number = (_local4.m_sweep.c.y + _local11);
var _local16:Number = (_local14 - _local12);
var _local17:Number = (_local15 - _local13);
_local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17)));
var _local18:Number = _local3.m_invMass;
var _local19:Number = _local4.m_invMass;
var _local20:Number = _local3.m_invI;
var _local21:Number = _local4.m_invI;
K1.col1.x = (_local18 + _local19);
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = (_local18 + _local19);
K2.col1.x = ((_local20 * _local8) * _local8);
K2.col2.x = ((-(_local20) * _local7) * _local8);
K2.col1.y = ((-(_local20) * _local7) * _local8);
K2.col2.y = ((_local20 * _local7) * _local7);
K3.col1.x = ((_local21 * _local11) * _local11);
K3.col2.x = ((-(_local21) * _local10) * _local11);
K3.col1.y = ((-(_local21) * _local10) * _local11);
K3.col2.y = ((_local21 * _local10) * _local10);
K.SetM(K1);
K.AddM(K2);
K.AddM(K3);
K.Solve(tImpulse, -(_local16), -(_local17));
var _local22:Number = tImpulse.x;
var _local23:Number = tImpulse.y;
_local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23));
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22))));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22))));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
var _local24:Number = 0;
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle);
_local26 = 0;
if (m_limitState == e_equalLimits){
_local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
_local26 = (-(m_motorMass) * _local2);
_local24 = b2Math.b2Abs(_local2);
} else {
if (m_limitState == e_atLowerLimit){
_local2 = (_local25 - m_lowerAngle);
_local24 = b2Math.b2Max(0, -(_local2));
_local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0);
_local26 = (-(m_motorMass) * _local2);
_local1 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0);
_local26 = (m_limitPositionImpulse - _local1);
} else {
if (m_limitState == e_atUpperLimit){
_local2 = (_local25 - m_upperAngle);
_local24 = b2Math.b2Max(0, _local2);
_local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection);
_local26 = (-(m_motorMass) * _local2);
_local1 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0);
_local26 = (m_limitPositionImpulse - _local1);
};
};
};
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
};
return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop))));
}
public function SetMotorSpeed(_arg1:Number):void{
m_motorSpeed = _arg1;
}
public function GetJointSpeed():Number{
return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity));
}
public function SetMaxMotorTorque(_arg1:Number):void{
m_maxMotorTorque = _arg1;
}
public function GetJointAngle():Number{
return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle));
}
public function GetMotorTorque():Number{
return (m_motorForce);
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Body;
var _local4:b2Mat22;
var _local5:Number;
var _local7:Number;
var _local14:Number;
_local2 = m_body1;
_local3 = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
_local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local10:Number = _local2.m_invMass;
var _local11:Number = _local3.m_invMass;
var _local12:Number = _local2.m_invI;
var _local13:Number = _local3.m_invI;
K1.col1.x = (_local10 + _local11);
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = (_local10 + _local11);
K2.col1.x = ((_local12 * _local7) * _local7);
K2.col2.x = ((-(_local12) * _local6) * _local7);
K2.col1.y = ((-(_local12) * _local6) * _local7);
K2.col2.y = ((_local12 * _local6) * _local6);
K3.col1.x = ((_local13 * _local9) * _local9);
K3.col2.x = ((-(_local13) * _local8) * _local9);
K3.col1.y = ((-(_local13) * _local8) * _local9);
K3.col2.y = ((_local13 * _local8) * _local8);
K.SetM(K1);
K.AddM(K2);
K.AddM(K3);
K.Invert(m_pivotMass);
m_motorMass = (1 / (_local12 + _local13));
if (m_enableMotor == false){
m_motorForce = 0;
};
if (m_enableLimit){
_local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle);
if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){
m_limitState = e_equalLimits;
} else {
if (_local14 <= m_lowerAngle){
if (m_limitState != e_atLowerLimit){
m_limitForce = 0;
};
m_limitState = e_atLowerLimit;
} else {
if (_local14 >= m_upperAngle){
if (m_limitState != e_atUpperLimit){
m_limitForce = 0;
};
m_limitState = e_atUpperLimit;
} else {
m_limitState = e_inactiveLimit;
m_limitForce = 0;
};
};
};
} else {
m_limitForce = 0;
};
if (_arg1.warmStarting){
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
} else {
m_pivotForce.SetZero();
m_motorForce = 0;
m_limitForce = 0;
};
m_limitPositionImpulse = 0;
}
public function EnableLimit(_arg1:Boolean):void{
m_enableLimit = _arg1;
}
override public function GetReactionTorque():Number{
return (m_limitForce);
}
public function IsLimitEnabled():Boolean{
return (m_enableLimit);
}
public function IsMotorEnabled():Boolean{
return (m_enableMotor);
}
public function SetLimits(_arg1:Number, _arg2:Number):void{
m_lowerAngle = _arg1;
m_upperAngle = _arg2;
}
}
}//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2RevoluteJointDef extends b2JointDef {
public var upperAngle:Number;
public var enableMotor:Boolean;
public var referenceAngle:Number;
public var motorSpeed:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var enableLimit:Boolean;
public var lowerAngle:Number;
public var maxMotorTorque:Number;
public function b2RevoluteJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_revoluteJoint;
localAnchor1.Set(0, 0);
localAnchor2.Set(0, 0);
referenceAngle = 0;
lowerAngle = 0;
upperAngle = 0;
maxMotorTorque = 0;
motorSpeed = 0;
enableLimit = false;
enableMotor = false;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1 = body1.GetLocalPoint(_arg3);
localAnchor2 = body2.GetLocalPoint(_arg3);
referenceAngle = (body2.GetAngle() - body1.GetAngle());
}
}
}//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import Box2D.Dynamics.Contacts.*;
public class b2Body {
public var m_next:b2Body;
public var m_xf:b2XForm;
public var m_contactList:b2ContactEdge;
public var m_angularVelocity:Number;
public var m_shapeList:b2Shape;
public var m_force:b2Vec2;
public var m_mass:Number;
public var m_sweep:b2Sweep;
public var m_torque:Number;
public var m_userData;
public var m_flags:uint;
public var m_world:b2World;
public var m_prev:b2Body;
public var m_invMass:Number;
public var m_type:int;
public var m_linearDamping:Number;
public var m_shapeCount:int;
public var m_angularDamping:Number;
public var m_invI:Number;
public var m_linearVelocity:b2Vec2;
public var m_sleepTime:Number;
public var m_jointList:b2JointEdge;
public var m_I:Number;
public static var e_fixedRotationFlag:uint = 64;
public static var e_frozenFlag:uint = 2;
public static var e_maxTypes:uint = 3;
public static var e_sleepFlag:uint = 8;
private static var s_massData:b2MassData = new b2MassData();
public static var e_bulletFlag:uint = 32;
public static var e_staticType:uint = 1;
public static var e_islandFlag:uint = 4;
public static var e_allowSleepFlag:uint = 16;
private static var s_xf1:b2XForm = new b2XForm();
public static var e_dynamicType:uint = 2;
public function b2Body(_arg1:b2BodyDef, _arg2:b2World){
m_xf = new b2XForm();
m_sweep = new b2Sweep();
m_linearVelocity = new b2Vec2();
m_force = new b2Vec2();
super();
m_flags = 0;
if (_arg1.isBullet){
m_flags = (m_flags | e_bulletFlag);
};
if (_arg1.fixedRotation){
m_flags = (m_flags | e_fixedRotationFlag);
};
if (_arg1.allowSleep){
m_flags = (m_flags | e_allowSleepFlag);
};
if (_arg1.isSleeping){
m_flags = (m_flags | e_sleepFlag);
};
m_world = _arg2;
m_xf.position.SetV(_arg1.position);
m_xf.R.Set(_arg1.angle);
m_sweep.localCenter.SetV(_arg1.massData.center);
m_sweep.t0 = 1;
m_sweep.a0 = (m_sweep.a = _arg1.angle);
var _local3:b2Mat22 = m_xf.R;
var _local4:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
m_jointList = null;
m_contactList = null;
m_prev = null;
m_next = null;
m_linearDamping = _arg1.linearDamping;
m_angularDamping = _arg1.angularDamping;
m_force.Set(0, 0);
m_torque = 0;
m_linearVelocity.SetZero();
m_angularVelocity = 0;
m_sleepTime = 0;
m_invMass = 0;
m_I = 0;
m_invI = 0;
m_mass = _arg1.massData.mass;
if (m_mass > 0){
m_invMass = (1 / m_mass);
};
if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
m_I = _arg1.massData.I;
};
if (m_I > 0){
m_invI = (1 / m_I);
};
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
m_userData = _arg1.userData;
m_shapeList = null;
m_shapeCount = 0;
}
public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{
return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x)))));
}
public function SetLinearVelocity(_arg1:b2Vec2):void{
m_linearVelocity.SetV(_arg1);
}
public function WakeUp():void{
m_flags = (m_flags & ~(e_sleepFlag));
m_sleepTime = 0;
}
public function GetLocalCenter():b2Vec2{
return (m_sweep.localCenter);
}
public function ApplyTorque(_arg1:Number):void{
if (IsSleeping()){
WakeUp();
};
m_torque = (m_torque + _arg1);
}
public function IsFrozen():Boolean{
return (((m_flags & e_frozenFlag) == e_frozenFlag));
}
public function IsDynamic():Boolean{
return ((m_type == e_dynamicType));
}
public function GetLinearVelocity():b2Vec2{
return (m_linearVelocity);
}
public function SynchronizeTransform():void{
m_xf.R.Set(m_sweep.a);
var _local1:b2Mat22 = m_xf.R;
var _local2:b2Vec2 = m_sweep.localCenter;
m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y)));
m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y)));
}
public function GetInertia():Number{
return (m_I);
}
public function IsSleeping():Boolean{
return (((m_flags & e_sleepFlag) == e_sleepFlag));
}
public function SetMassFromShapes():void{
var _local1:b2Shape;
if (m_world.m_lock == true){
return;
};
m_mass = 0;
m_invMass = 0;
m_I = 0;
m_invI = 0;
var _local2:Number = 0;
var _local3:Number = 0;
var _local4:b2MassData = s_massData;
_local1 = m_shapeList;
while (_local1) {
_local1.ComputeMass(_local4);
m_mass = (m_mass + _local4.mass);
_local2 = (_local2 + (_local4.mass * _local4.center.x));
_local3 = (_local3 + (_local4.mass * _local4.center.y));
m_I = (m_I + _local4.I);
_local1 = _local1.m_next;
};
if (m_mass > 0){
m_invMass = (1 / m_mass);
_local2 = (_local2 * m_invMass);
_local3 = (_local3 * m_invMass);
};
if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){
m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3))));
m_invI = (1 / m_I);
} else {
m_I = 0;
m_invI = 0;
};
m_sweep.localCenter.Set(_local2, _local3);
var _local5:b2Mat22 = m_xf.R;
var _local6:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y));
m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
_local1 = m_shapeList;
while (_local1) {
_local1.UpdateSweepRadius(m_sweep.localCenter);
_local1 = _local1.m_next;
};
var _local7:int = m_type;
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
if (_local7 != m_type){
_local1 = m_shapeList;
while (_local1) {
_local1.RefilterProxy(m_world.m_broadPhase, m_xf);
_local1 = _local1.m_next;
};
};
}
public function PutToSleep():void{
m_flags = (m_flags | e_sleepFlag);
m_sleepTime = 0;
m_linearVelocity.SetZero();
m_angularVelocity = 0;
m_force.SetZero();
m_torque = 0;
}
public function GetJointList():b2JointEdge{
return (m_jointList);
}
public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{
var _local3:b2Shape;
var _local7:Boolean;
if (m_world.m_lock == true){
return (true);
};
if (IsFrozen()){
return (false);
};
m_xf.R.Set(_arg2);
m_xf.position.SetV(_arg1);
var _local4:b2Mat22 = m_xf.R;
var _local5:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y));
m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
m_sweep.a0 = (m_sweep.a = _arg2);
var _local6:Boolean;
_local3 = m_shapeList;
while (_local3) {
_local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf);
if (_local7 == false){
_local6 = true;
break;
};
_local3 = _local3.m_next;
};
if (_local6 == true){
m_flags = (m_flags | e_frozenFlag);
m_linearVelocity.SetZero();
m_angularVelocity = 0;
_local3 = m_shapeList;
while (_local3) {
_local3.DestroyProxy(m_world.m_broadPhase);
_local3 = _local3.m_next;
};
return (false);
};
m_world.m_broadPhase.Commit();
return (true);
}
public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulXT(m_xf, _arg1));
}
public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{
if (IsSleeping()){
WakeUp();
};
m_force.x = (m_force.x + _arg1.x);
m_force.y = (m_force.y + _arg1.y);
m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)));
}
public function SynchronizeShapes():Boolean{
var _local4:b2Shape;
var _local1:b2XForm = s_xf1;
_local1.R.Set(m_sweep.a0);
var _local2:b2Mat22 = _local1.R;
var _local3:b2Vec2 = m_sweep.localCenter;
_local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y)));
_local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y)));
var _local5:Boolean;
_local4 = m_shapeList;
while (_local4) {
_local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf);
if (_local5 == false){
break;
};
_local4 = _local4.m_next;
};
if (_local5 == false){
m_flags = (m_flags | e_frozenFlag);
m_linearVelocity.SetZero();
m_angularVelocity = 0;
_local4 = m_shapeList;
while (_local4) {
_local4.DestroyProxy(m_world.m_broadPhase);
_local4 = _local4.m_next;
};
return (false);
};
return (true);
}
public function GetAngle():Number{
return (m_sweep.a);
}
public function GetXForm():b2XForm{
return (m_xf);
}
public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{
var _local2:b2Mat22 = m_xf.R;
var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y)));
_local3.x = (_local3.x + m_xf.position.x);
_local3.y = (_local3.y + m_xf.position.y);
return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x)))));
}
public function GetNext():b2Body{
return (m_next);
}
public function GetMass():Number{
return (m_mass);
}
public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{
if (IsSleeping()){
WakeUp();
};
m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x));
m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y));
m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))));
}
public function GetAngularVelocity():Number{
return (m_angularVelocity);
}
public function SetAngularVelocity(_arg1:Number):void{
m_angularVelocity = _arg1;
}
public function SetMass(_arg1:b2MassData):void{
var _local2:b2Shape;
if (m_world.m_lock == true){
return;
};
m_invMass = 0;
m_I = 0;
m_invI = 0;
m_mass = _arg1.mass;
if (m_mass > 0){
m_invMass = (1 / m_mass);
};
if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
m_I = _arg1.I;
};
if (m_I > 0){
m_invI = (1 / m_I);
};
m_sweep.localCenter.SetV(_arg1.center);
var _local3:b2Mat22 = m_xf.R;
var _local4:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
_local2 = m_shapeList;
while (_local2) {
_local2.UpdateSweepRadius(m_sweep.localCenter);
_local2 = _local2.m_next;
};
var _local5:int = m_type;
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
if (_local5 != m_type){
_local2 = m_shapeList;
while (_local2) {
_local2.RefilterProxy(m_world.m_broadPhase, m_xf);
_local2 = _local2.m_next;
};
};
}
public function IsStatic():Boolean{
return ((m_type == e_staticType));
}
public function GetWorldVector(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulMV(m_xf.R, _arg1));
}
public function GetShapeList():b2Shape{
return (m_shapeList);
}
public function Advance(_arg1:Number):void{
m_sweep.Advance(_arg1);
m_sweep.c.SetV(m_sweep.c0);
m_sweep.a = m_sweep.a0;
SynchronizeTransform();
}
public function SetBullet(_arg1:Boolean):void{
if (_arg1){
m_flags = (m_flags | e_bulletFlag);
} else {
m_flags = (m_flags & ~(e_bulletFlag));
};
}
public function CreateShape(_arg1:b2ShapeDef):b2Shape{
var _local2:b2Shape;
if (m_world.m_lock == true){
return (null);
};
_local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator);
_local2.m_next = m_shapeList;
m_shapeList = _local2;
m_shapeCount++;
_local2.m_body = this;
_local2.CreateProxy(m_world.m_broadPhase, m_xf);
_local2.UpdateSweepRadius(m_sweep.localCenter);
return (_local2);
}
public function IsConnected(_arg1:b2Body):Boolean{
var _local2:b2JointEdge = m_jointList;
while (_local2) {
if (_local2.other == _arg1){
return ((_local2.joint.m_collideConnected == false));
};
_local2 = _local2.next;
};
return (false);
}
public function DestroyShape(_arg1:b2Shape):void{
if (m_world.m_lock == true){
return;
};
_arg1.DestroyProxy(m_world.m_broadPhase);
var _local2:b2Shape = m_shapeList;
var _local3:b2Shape;
var _local4:Boolean;
while (_local2 != null) {
if (_local2 == _arg1){
if (_local3){
_local3.m_next = _arg1.m_next;
} else {
m_shapeList = _arg1.m_next;
};
_local4 = true;
break;
};
_local3 = _local2;
_local2 = _local2.m_next;
};
_arg1.m_body = null;
_arg1.m_next = null;
m_shapeCount--;
b2Shape.Destroy(_arg1, m_world.m_blockAllocator);
}
public function GetUserData(){
return (m_userData);
}
public function IsBullet():Boolean{
return (((m_flags & e_bulletFlag) == e_bulletFlag));
}
public function GetWorldCenter():b2Vec2{
return (m_sweep.c);
}
public function AllowSleeping(_arg1:Boolean):void{
if (_arg1){
m_flags = (m_flags | e_allowSleepFlag);
} else {
m_flags = (m_flags & ~(e_allowSleepFlag));
WakeUp();
};
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetLocalVector(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulTMV(m_xf.R, _arg1));
}
public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{
var _local2:b2Mat22 = m_xf.R;
var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y)));
_local3.x = (_local3.x + m_xf.position.x);
_local3.y = (_local3.y + m_xf.position.y);
return (_local3);
}
public function GetWorld():b2World{
return (m_world);
}
public function GetPosition():b2Vec2{
return (m_xf.position);
}
}
}//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2BodyDef {
public var angularDamping:Number;
public var angle:Number;
public var isSleeping:Boolean;
public var position:b2Vec2;
public var isBullet:Boolean;
public var allowSleep:Boolean;
public var userData;
public var fixedRotation:Boolean;
public var linearDamping:Number;
public var massData:b2MassData;
public function b2BodyDef(){
massData = new b2MassData();
position = new b2Vec2();
super();
massData.center.SetZero();
massData.mass = 0;
massData.I = 0;
userData = null;
position.Set(0, 0);
angle = 0;
linearDamping = 0;
angularDamping = 0;
allowSleep = true;
isSleeping = false;
fixedRotation = false;
isBullet = false;
}
}
}//package Box2D.Dynamics
Section 66
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener)
package Box2D.Dynamics {
public class b2BoundaryListener {
public function Violation(_arg1:b2Body):void{
}
}
}//package Box2D.Dynamics
Section 67
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter)
package Box2D.Dynamics {
import Box2D.Collision.Shapes.*;
public class b2ContactFilter {
public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter);
;
public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{
var _local3:b2FilterData = _arg1.GetFilterData();
var _local4:b2FilterData = _arg2.GetFilterData();
if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){
return ((_local3.groupIndex > 0));
};
var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0))));
return (_local5);
}
}
}//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Dynamics.Contacts.*;
public class b2ContactListener {
public function Add(_arg1:b2ContactPoint):void{
}
public function Remove(_arg1:b2ContactPoint):void{
}
public function Persist(_arg1:b2ContactPoint):void{
}
public function Result(_arg1:b2ContactResult):void{
}
}
}//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2ContactManager extends b2PairCallback {
public var m_world:b2World;
public var m_destroyImmediate:Boolean;
public var m_nullContact:b2NullContact;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2ContactManager(){
m_nullContact = new b2NullContact();
super();
m_world = null;
m_destroyImmediate = false;
}
override public function PairRemoved(_arg1, _arg2, _arg3):void{
if (_arg3 == null){
return;
};
var _local4:b2Contact = (_arg3 as b2Contact);
if (_local4 == m_nullContact){
return;
};
Destroy(_local4);
}
public function Destroy(_arg1:b2Contact):void{
var _local7:b2Body;
var _local8:b2Body;
var _local9:Array;
var _local10:b2ContactPoint;
var _local11:int;
var _local12:b2Manifold;
var _local13:int;
var _local14:b2ManifoldPoint;
var _local15:b2Vec2;
var _local16:b2Vec2;
var _local2:b2Shape = _arg1.m_shape1;
var _local3:b2Shape = _arg1.m_shape2;
var _local4:int = _arg1.m_manifoldCount;
if ((((_local4 > 0)) && (m_world.m_contactListener))){
_local7 = _local2.m_body;
_local8 = _local3.m_body;
_local9 = _arg1.GetManifolds();
_local10 = s_evalCP;
_local10.shape1 = _arg1.m_shape1;
_local10.shape2 = _arg1.m_shape1;
_local10.friction = _arg1.m_friction;
_local10.restitution = _arg1.m_restitution;
_local11 = 0;
while (_local11 < _local4) {
_local12 = _local9[_local11];
_local10.normal.SetV(_local12.normal);
_local13 = 0;
while (_local13 < _local12.pointCount) {
_local14 = _local12.points[_local13];
_local10.position = _local7.GetWorldPoint(_local14.localPoint1);
_local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1);
_local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2);
_local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y));
_local10.separation = _local14.separation;
_local10.id.key = _local14.id._key;
m_world.m_contactListener.Remove(_local10);
_local13++;
};
_local11++;
};
};
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_world.m_contactList){
m_world.m_contactList = _arg1.m_next;
};
var _local5:b2Body = _local2.m_body;
var _local6:b2Body = _local3.m_body;
if (_arg1.m_node1.prev){
_arg1.m_node1.prev.next = _arg1.m_node1.next;
};
if (_arg1.m_node1.next){
_arg1.m_node1.next.prev = _arg1.m_node1.prev;
};
if (_arg1.m_node1 == _local5.m_contactList){
_local5.m_contactList = _arg1.m_node1.next;
};
if (_arg1.m_node2.prev){
_arg1.m_node2.prev.next = _arg1.m_node2.next;
};
if (_arg1.m_node2.next){
_arg1.m_node2.next.prev = _arg1.m_node2.prev;
};
if (_arg1.m_node2 == _local6.m_contactList){
_local6.m_contactList = _arg1.m_node2.next;
};
b2Contact.Destroy(_arg1, m_world.m_blockAllocator);
m_world.m_contactCount--;
}
override public function PairAdded(_arg1, _arg2){
var _local3:b2Shape = (_arg1 as b2Shape);
var _local4:b2Shape = (_arg2 as b2Shape);
var _local5:b2Body = _local3.m_body;
var _local6:b2Body = _local4.m_body;
if (((_local5.IsStatic()) && (_local6.IsStatic()))){
return (m_nullContact);
};
if (_local3.m_body == _local4.m_body){
return (m_nullContact);
};
if (_local6.IsConnected(_local5)){
return (m_nullContact);
};
if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){
return (m_nullContact);
};
var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator);
if (_local7 == null){
return (m_nullContact);
};
_local3 = _local7.m_shape1;
_local4 = _local7.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
_local7.m_prev = null;
_local7.m_next = m_world.m_contactList;
if (m_world.m_contactList != null){
m_world.m_contactList.m_prev = _local7;
};
m_world.m_contactList = _local7;
_local7.m_node1.contact = _local7;
_local7.m_node1.other = _local6;
_local7.m_node1.prev = null;
_local7.m_node1.next = _local5.m_contactList;
if (_local5.m_contactList != null){
_local5.m_contactList.prev = _local7.m_node1;
};
_local5.m_contactList = _local7.m_node1;
_local7.m_node2.contact = _local7;
_local7.m_node2.other = _local5;
_local7.m_node2.prev = null;
_local7.m_node2.next = _local6.m_contactList;
if (_local6.m_contactList != null){
_local6.m_contactList.prev = _local7.m_node2;
};
_local6.m_contactList = _local7.m_node2;
m_world.m_contactCount++;
return (_local7);
}
public function Collide():void{
var _local2:b2Body;
var _local3:b2Body;
var _local1:b2Contact = m_world.m_contactList;
while (_local1) {
_local2 = _local1.m_shape1.m_body;
_local3 = _local1.m_shape2.m_body;
if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){
} else {
_local1.Update(m_world.m_contactListener);
};
_local1 = _local1.m_next;
};
}
}
}//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw)
package Box2D.Dynamics {
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2DebugDraw {
public var m_xformScale:Number;// = 1
public var m_fillAlpha:Number;// = 1
public var m_alpha:Number;// = 1
public var m_drawFlags:uint;
public var m_lineThickness:Number;// = 1
public var m_drawScale:Number;// = 1
public var m_sprite:Sprite;
public static var e_coreShapeBit:uint = 4;
public static var e_shapeBit:uint = 1;
public static var e_centerOfMassBit:uint = 64;
public static var e_aabbBit:uint = 8;
public static var e_obbBit:uint = 16;
public static var e_pairBit:uint = 32;
public static var e_jointBit:uint = 2;
public function b2DebugDraw(){
m_drawFlags = 0;
}
public function ClearFlags(_arg1:uint):void{
m_drawFlags = (m_drawFlags & ~(_arg1));
}
public function SetFlags(_arg1:uint):void{
m_drawFlags = _arg1;
}
public function AppendFlags(_arg1:uint):void{
m_drawFlags = (m_drawFlags | _arg1);
}
public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale));
}
public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha);
var _local4 = 1;
while (_local4 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
_local4++;
};
m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
m_sprite.graphics.endFill();
}
public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale));
}
public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
var _local4 = 1;
while (_local4 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
_local4++;
};
m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
}
public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha);
m_sprite.graphics.moveTo(0, 0);
m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha);
m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale));
m_sprite.graphics.endFill();
m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale));
}
public function GetFlags():uint{
return (m_drawFlags);
}
public function DrawXForm(_arg1:b2XForm):void{
m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha);
m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale));
m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha);
m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale));
}
}
}//package Box2D.Dynamics
Section 71
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener)
package Box2D.Dynamics {
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
public class b2DestructionListener {
public function SayGoodbyeShape(_arg1:b2Shape):void{
}
public function SayGoodbyeJoint(_arg1:b2Joint):void{
}
}
}//package Box2D.Dynamics
Section 72
//b2Island (Box2D.Dynamics.b2Island)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2Island {
public var m_listener:b2ContactListener;
public var m_positionIterationCount:int;
public var m_bodyCapacity:int;
public var m_bodies:Array;
public var m_joints:Array;
public var m_jointCapacity:int;
public var m_contactCount:int;
public var m_contacts:Array;
public var m_contactCapacity:int;
public var m_jointCount:int;
public var m_allocator;
public var m_bodyCount:int;
private static var s_reportCR:b2ContactResult = new b2ContactResult();
public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){
var _local6:int;
super();
m_bodyCapacity = _arg1;
m_contactCapacity = _arg2;
m_jointCapacity = _arg3;
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
m_allocator = _arg4;
m_listener = _arg5;
m_bodies = new Array(_arg1);
_local6 = 0;
while (_local6 < _arg1) {
m_bodies[_local6] = null;
_local6++;
};
m_contacts = new Array(_arg2);
_local6 = 0;
while (_local6 < _arg2) {
m_contacts[_local6] = null;
_local6++;
};
m_joints = new Array(_arg3);
_local6 = 0;
while (_local6 < _arg3) {
m_joints[_local6] = null;
_local6++;
};
m_positionIterationCount = 0;
}
public function AddBody(_arg1:b2Body):void{
var _local2 = m_bodyCount++;
m_bodies[_local2] = _arg1;
}
public function AddJoint(_arg1:b2Joint):void{
var _local2 = m_jointCount++;
m_joints[_local2] = _arg1;
}
public function Report(_arg1:Array):void{
var _local2:b2Mat22;
var _local3:b2Vec2;
var _local5:b2Contact;
var _local6:b2ContactConstraint;
var _local7:b2ContactResult;
var _local8:b2Body;
var _local9:int;
var _local10:Array;
var _local11:int;
var _local12:b2Manifold;
var _local13:int;
var _local14:b2ManifoldPoint;
var _local15:b2ContactConstraintPoint;
if (m_listener == null){
return;
};
var _local4:int;
while (_local4 < m_contactCount) {
_local5 = m_contacts[_local4];
_local6 = _arg1[_local4];
_local7 = s_reportCR;
_local7.shape1 = _local5.m_shape1;
_local7.shape2 = _local5.m_shape2;
_local8 = _local7.shape1.m_body;
_local9 = _local5.m_manifoldCount;
_local10 = _local5.GetManifolds();
_local11 = 0;
while (_local11 < _local9) {
_local12 = _local10[_local11];
_local7.normal.SetV(_local12.normal);
_local13 = 0;
while (_local13 < _local12.pointCount) {
_local14 = _local12.points[_local13];
_local15 = _local6.points[_local13];
_local7.position = _local8.GetWorldPoint(_local14.localPoint1);
_local7.normalImpulse = _local15.normalImpulse;
_local7.tangentImpulse = _local15.tangentImpulse;
_local7.id.key = _local14.id.key;
m_listener.Result(_local7);
_local13++;
};
_local11++;
};
_local4++;
};
}
public function AddContact(_arg1:b2Contact):void{
var _local2 = m_contactCount++;
m_contacts[_local2] = _arg1;
}
public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{
var _local5:int;
var _local6:b2Body;
var _local7:b2Joint;
var _local9:int;
var _local10:Boolean;
var _local11:Boolean;
var _local12:Boolean;
var _local13:Number;
var _local14:Number;
var _local15:Number;
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.IsStatic()){
} else {
_local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x))));
_local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y))));
_local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque));
_local6.m_force.SetZero();
_local6.m_torque = 0;
_local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1));
_local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1));
if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){
_local6.m_linearVelocity.Normalize();
_local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity);
_local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity);
};
if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){
if (_local6.m_angularVelocity < 0){
_local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity);
} else {
_local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity;
};
};
};
_local5++;
};
var _local8:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator);
_local8.InitVelocityConstraints(_arg1);
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local7.InitVelocityConstraints(_arg1);
_local5++;
};
_local5 = 0;
while (_local5 < _arg1.maxIterations) {
_local8.SolveVelocityConstraints();
_local9 = 0;
while (_local9 < m_jointCount) {
_local7 = m_joints[_local9];
_local7.SolveVelocityConstraints(_arg1);
_local9++;
};
_local5++;
};
_local8.FinalizeVelocityConstraints();
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.IsStatic()){
} else {
_local6.m_sweep.c0.SetV(_local6.m_sweep.c);
_local6.m_sweep.a0 = _local6.m_sweep.a;
_local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x));
_local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y));
_local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity));
_local6.SynchronizeTransform();
};
_local5++;
};
if (_arg3){
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local7.InitPositionConstraints();
_local5++;
};
m_positionIterationCount = 0;
while (m_positionIterationCount < _arg1.maxIterations) {
_local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte);
_local11 = true;
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local12 = _local7.SolvePositionConstraints();
_local11 = ((_local11) && (_local12));
_local5++;
};
if (((_local10) && (_local11))){
break;
};
m_positionIterationCount++;
};
};
Report(_local8.m_constraints);
if (_arg4){
_local13 = Number.MAX_VALUE;
_local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance);
_local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance);
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.m_invMass == 0){
} else {
if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){
_local6.m_sleepTime = 0;
_local13 = 0;
};
if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){
_local6.m_sleepTime = 0;
_local13 = 0;
} else {
_local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt);
_local13 = b2Math.b2Min(_local13, _local6.m_sleepTime);
};
};
_local5++;
};
if (_local13 >= b2Settings.b2_timeToSleep){
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag);
_local6.m_linearVelocity.SetZero();
_local6.m_angularVelocity = 0;
_local5++;
};
};
};
}
public function Clear():void{
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
}
public function SolveTOI(_arg1:b2TimeStep):void{
var _local2:int;
var _local5:b2Body;
var _local6:Boolean;
var _local3:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator);
_local2 = 0;
while (_local2 < _arg1.maxIterations) {
_local3.SolveVelocityConstraints();
_local2++;
};
_local2 = 0;
while (_local2 < m_bodyCount) {
_local5 = m_bodies[_local2];
if (_local5.IsStatic()){
} else {
_local5.m_sweep.c0.SetV(_local5.m_sweep.c);
_local5.m_sweep.a0 = _local5.m_sweep.a;
_local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x));
_local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y));
_local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity));
_local5.SynchronizeTransform();
};
_local2++;
};
var _local4:Number = 0.75;
_local2 = 0;
while (_local2 < _arg1.maxIterations) {
_local6 = _local3.SolvePositionConstraints(_local4);
if (_local6){
break;
};
_local2++;
};
Report(_local3.m_constraints);
}
}
}//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep)
package Box2D.Dynamics {
public class b2TimeStep {
public var warmStarting:Boolean;
public var positionCorrection:Boolean;
public var dt:Number;
public var maxIterations:int;
public var dtRatio:Number;
public var inv_dt:Number;
}
}//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2World {
public var m_inv_dt0:Number;
public var m_boundaryListener:b2BoundaryListener;
public var m_contactList:b2Contact;
public var m_blockAllocator;
public var m_contactListener:b2ContactListener;
public var m_allowSleep:Boolean;
public var m_broadPhase:b2BroadPhase;
public var m_destructionListener:b2DestructionListener;
public var m_jointCount:int;
public var m_bodyCount:int;
public var m_lock:Boolean;
public var m_positionIterationCount:int;
public var m_groundBody:b2Body;
public var m_contactCount:int;
public var m_debugDraw:b2DebugDraw;
public var m_contactFilter:b2ContactFilter;
public var m_bodyList:b2Body;
public var m_stackAllocator;
public var m_jointList:b2Joint;
public var m_gravity:b2Vec2;
public var m_contactManager:b2ContactManager;
private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8);
public static var m_continuousPhysics:Boolean;
public static var m_warmStarting:Boolean;
private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6);
public static var m_positionCorrection:Boolean;
private static var s_xf:b2XForm = new b2XForm();
public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){
m_contactManager = new b2ContactManager();
super();
m_destructionListener = null;
m_boundaryListener = null;
m_contactFilter = b2ContactFilter.b2_defaultFilter;
m_contactListener = null;
m_debugDraw = null;
m_bodyList = null;
m_contactList = null;
m_jointList = null;
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
m_positionCorrection = true;
m_warmStarting = true;
m_continuousPhysics = true;
m_allowSleep = _arg3;
m_gravity = _arg2;
m_lock = false;
m_inv_dt0 = 0;
m_contactManager.m_world = this;
m_broadPhase = new b2BroadPhase(_arg1, m_contactManager);
var _local4:b2BodyDef = new b2BodyDef();
m_groundBody = CreateBody(_local4);
}
public function DrawJoint(_arg1:b2Joint):void{
var _local11:b2PulleyJoint;
var _local12:b2Vec2;
var _local13:b2Vec2;
var _local2:b2Body = _arg1.m_body1;
var _local3:b2Body = _arg1.m_body2;
var _local4:b2XForm = _local2.m_xf;
var _local5:b2XForm = _local3.m_xf;
var _local6:b2Vec2 = _local4.position;
var _local7:b2Vec2 = _local5.position;
var _local8:b2Vec2 = _arg1.GetAnchor1();
var _local9:b2Vec2 = _arg1.GetAnchor2();
var _local10:b2Color = s_jointColor;
switch (_arg1.m_type){
case b2Joint.e_distanceJoint:
m_debugDraw.DrawSegment(_local8, _local9, _local10);
break;
case b2Joint.e_pulleyJoint:
_local11 = (_arg1 as b2PulleyJoint);
_local12 = _local11.GetGroundAnchor1();
_local13 = _local11.GetGroundAnchor2();
m_debugDraw.DrawSegment(_local12, _local8, _local10);
m_debugDraw.DrawSegment(_local13, _local9, _local10);
m_debugDraw.DrawSegment(_local12, _local13, _local10);
break;
case b2Joint.e_mouseJoint:
m_debugDraw.DrawSegment(_local8, _local9, _local10);
break;
default:
if (_local2 != m_groundBody){
m_debugDraw.DrawSegment(_local6, _local8, _local10);
};
m_debugDraw.DrawSegment(_local8, _local9, _local10);
if (_local3 != m_groundBody){
m_debugDraw.DrawSegment(_local7, _local9, _local10);
};
};
}
public function Refilter(_arg1:b2Shape):void{
_arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf);
}
public function SetDebugDraw(_arg1:b2DebugDraw):void{
m_debugDraw = _arg1;
}
public function SetContinuousPhysics(_arg1:Boolean):void{
m_continuousPhysics = _arg1;
}
public function GetProxyCount():int{
return (m_broadPhase.m_proxyCount);
}
public function DrawDebugData():void{
var _local2:int;
var _local3:b2Body;
var _local4:b2Shape;
var _local5:b2Joint;
var _local6:b2BroadPhase;
var _local11:b2XForm;
var _local15:Boolean;
var _local16:uint;
var _local17:b2Pair;
var _local18:b2Proxy;
var _local19:b2Proxy;
var _local20:b2Vec2;
var _local21:b2Vec2;
var _local22:b2Proxy;
var _local23:b2PolygonShape;
var _local24:b2OBB;
var _local25:b2Vec2;
var _local26:b2Mat22;
var _local27:b2Vec2;
var _local28:Number;
if (m_debugDraw == null){
return;
};
m_debugDraw.m_sprite.graphics.clear();
var _local1:uint = m_debugDraw.GetFlags();
var _local7:b2Vec2 = new b2Vec2();
var _local8:b2Vec2 = new b2Vec2();
var _local9:b2Vec2 = new b2Vec2();
var _local10:b2Color = new b2Color(0, 0, 0);
var _local12:b2AABB = new b2AABB();
var _local13:b2AABB = new b2AABB();
var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()];
if ((_local1 & b2DebugDraw.e_shapeBit)){
_local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit);
_local3 = m_bodyList;
while (_local3) {
_local11 = _local3.m_xf;
_local4 = _local3.GetShapeList();
while (_local4) {
if (_local3.IsStatic()){
DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15);
} else {
if (_local3.IsSleeping()){
DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15);
} else {
DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15);
};
};
_local4 = _local4.m_next;
};
_local3 = _local3.m_next;
};
};
if ((_local1 & b2DebugDraw.e_jointBit)){
_local5 = m_jointList;
while (_local5) {
DrawJoint(_local5);
_local5 = _local5.m_next;
};
};
if ((_local1 & b2DebugDraw.e_pairBit)){
_local6 = m_broadPhase;
_local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y));
_local10.Set(0.9, 0.9, 0.3);
_local2 = 0;
while (_local2 < b2Pair.b2_tableCapacity) {
_local16 = _local6.m_pairManager.m_hashTable[_local2];
while (_local16 != b2Pair.b2_nullPair) {
_local17 = _local6.m_pairManager.m_pairs[_local16];
_local18 = _local6.m_proxyPool[_local17.proxyId1];
_local19 = _local6.m_proxyPool[_local17.proxyId2];
_local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value));
_local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value));
_local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value));
_local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value));
_local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value));
_local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value));
_local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value));
_local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value));
_local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x));
_local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y));
_local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x));
_local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y));
m_debugDraw.DrawSegment(_local8, _local9, _local10);
_local16 = _local17.next;
};
_local2++;
};
};
if ((_local1 & b2DebugDraw.e_aabbBit)){
_local6 = m_broadPhase;
_local20 = _local6.m_worldAABB.lowerBound;
_local21 = _local6.m_worldAABB.upperBound;
_local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y));
_local10.Set(0.9, 0.3, 0.9);
_local2 = 0;
while (_local2 < b2Settings.b2_maxProxies) {
_local22 = _local6.m_proxyPool[_local2];
if (_local22.IsValid() == false){
} else {
_local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value));
_local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value));
_local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value));
_local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value));
_local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y);
_local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y);
_local14[2].Set(_local12.upperBound.x, _local12.upperBound.y);
_local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y);
m_debugDraw.DrawPolygon(_local14, 4, _local10);
};
_local2++;
};
_local14[0].Set(_local20.x, _local20.y);
_local14[1].Set(_local21.x, _local20.y);
_local14[2].Set(_local21.x, _local21.y);
_local14[3].Set(_local20.x, _local21.y);
m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9));
};
if ((_local1 & b2DebugDraw.e_obbBit)){
_local10.Set(0.5, 0.3, 0.5);
_local3 = m_bodyList;
while (_local3) {
_local11 = _local3.m_xf;
_local4 = _local3.GetShapeList();
while (_local4) {
if (_local4.m_type != b2Shape.e_polygonShape){
} else {
_local23 = (_local4 as b2PolygonShape);
_local24 = _local23.GetOBB();
_local25 = _local24.extents;
_local14[0].Set(-(_local25.x), -(_local25.y));
_local14[1].Set(_local25.x, -(_local25.y));
_local14[2].Set(_local25.x, _local25.y);
_local14[3].Set(-(_local25.x), _local25.y);
_local2 = 0;
while (_local2 < 4) {
_local26 = _local24.R;
_local27 = _local14[_local2];
_local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y)));
_local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y)));
_local14[_local2].x = _local28;
_local26 = _local11.R;
_local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y)));
_local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y)));
_local14[_local2].x = _local28;
_local2++;
};
m_debugDraw.DrawPolygon(_local14, 4, _local10);
};
_local4 = _local4.m_next;
};
_local3 = _local3.m_next;
};
};
if ((_local1 & b2DebugDraw.e_centerOfMassBit)){
_local3 = m_bodyList;
while (_local3) {
_local11 = s_xf;
_local11.R = _local3.m_xf.R;
_local11.position = _local3.GetWorldCenter();
m_debugDraw.DrawXForm(_local11);
_local3 = _local3.m_next;
};
};
}
public function DestroyBody(_arg1:b2Body):void{
var _local4:b2JointEdge;
var _local5:b2Shape;
if (m_lock == true){
return;
};
var _local2:b2JointEdge = _arg1.m_jointList;
while (_local2) {
_local4 = _local2;
_local2 = _local2.next;
if (m_destructionListener){
m_destructionListener.SayGoodbyeJoint(_local4.joint);
};
DestroyJoint(_local4.joint);
};
var _local3:b2Shape = _arg1.m_shapeList;
while (_local3) {
_local5 = _local3;
_local3 = _local3.m_next;
if (m_destructionListener){
m_destructionListener.SayGoodbyeShape(_local5);
};
_local5.DestroyProxy(m_broadPhase);
b2Shape.Destroy(_local5, m_blockAllocator);
};
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_bodyList){
m_bodyList = _arg1.m_next;
};
m_bodyCount--;
}
public function SetContactFilter(_arg1:b2ContactFilter):void{
m_contactFilter = _arg1;
}
public function GetGroundBody():b2Body{
return (m_groundBody);
}
public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{
var _local6:b2CircleShape;
var _local7:b2Vec2;
var _local8:Number;
var _local9:b2Vec2;
var _local10:int;
var _local11:b2PolygonShape;
var _local12:int;
var _local13:Array;
var _local14:Array;
var _local15:Array;
var _local5:b2Color = s_coreColor;
switch (_arg1.m_type){
case b2Shape.e_circleShape:
_local6 = (_arg1 as b2CircleShape);
_local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition);
_local8 = _local6.m_radius;
_local9 = _arg2.R.col1;
m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3);
if (_arg4){
m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5);
};
break;
case b2Shape.e_polygonShape:
_local11 = (_arg1 as b2PolygonShape);
_local12 = _local11.GetVertexCount();
_local13 = _local11.GetVertices();
_local14 = new Array(b2Settings.b2_maxPolygonVertices);
_local10 = 0;
while (_local10 < _local12) {
_local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]);
_local10++;
};
m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3);
if (_arg4){
_local15 = _local11.GetCoreVertices();
_local10 = 0;
while (_local10 < _local12) {
_local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]);
_local10++;
};
m_debugDraw.DrawPolygon(_local14, _local12, _local5);
};
break;
};
}
public function GetContactCount():int{
return (m_contactCount);
}
public function Solve(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local9:int;
var _local10:int;
var _local11:b2Body;
var _local12:b2ContactEdge;
var _local13:b2JointEdge;
var _local14:Boolean;
m_positionIterationCount = 0;
var _local3:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener);
_local2 = m_bodyList;
while (_local2) {
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
_local2 = _local2.m_next;
};
var _local4:b2Contact = m_contactList;
while (_local4) {
_local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag));
_local4 = _local4.m_next;
};
var _local5:b2Joint = m_jointList;
while (_local5) {
_local5.m_islandFlag = false;
_local5 = _local5.m_next;
};
var _local6:int = m_bodyCount;
var _local7:Array = new Array(_local6);
var _local8:b2Body = m_bodyList;
while (_local8) {
if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){
} else {
if (_local8.IsStatic()){
} else {
_local3.Clear();
_local9 = 0;
var _temp1 = _local9;
_local9 = (_local9 + 1);
var _local15 = _temp1;
_local7[_local15] = _local8;
_local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag);
while (_local9 > 0) {
--_local9;
_local2 = _local7[_local9];
_local3.AddBody(_local2);
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag));
if (_local2.IsStatic()){
} else {
_local12 = _local2.m_contactList;
while (_local12) {
if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){
} else {
if (_local12.contact.m_manifoldCount == 0){
} else {
_local3.AddContact(_local12.contact);
_local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag);
_local11 = _local12.other;
if ((_local11.m_flags & b2Body.e_islandFlag)){
} else {
var _temp2 = _local9;
_local9 = (_local9 + 1);
var _local16 = _temp2;
_local7[_local16] = _local11;
_local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag);
};
};
};
_local12 = _local12.next;
};
_local13 = _local2.m_jointList;
while (_local13) {
if (_local13.joint.m_islandFlag == true){
} else {
_local3.AddJoint(_local13.joint);
_local13.joint.m_islandFlag = true;
_local11 = _local13.other;
if ((_local11.m_flags & b2Body.e_islandFlag)){
} else {
var _temp3 = _local9;
_local9 = (_local9 + 1);
_local16 = _temp3;
_local7[_local16] = _local11;
_local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag);
};
};
_local13 = _local13.next;
};
};
};
_local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep);
if (_local3.m_positionIterationCount > m_positionIterationCount){
m_positionIterationCount = _local3.m_positionIterationCount;
};
_local10 = 0;
while (_local10 < _local3.m_bodyCount) {
_local2 = _local3.m_bodies[_local10];
if (_local2.IsStatic()){
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
};
_local10++;
};
};
};
_local8 = _local8.m_next;
};
_local2 = m_bodyList;
while (_local2) {
if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
} else {
if (_local2.IsStatic()){
} else {
_local14 = _local2.SynchronizeShapes();
if ((((_local14 == false)) && (!((m_boundaryListener == null))))){
m_boundaryListener.Violation(_local2);
};
};
};
_local2 = _local2.m_next;
};
m_broadPhase.Commit();
}
public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{
var _local4:Array = new Array(_arg3);
var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3);
var _local6:int;
while (_local6 < _local5) {
_arg2[_local6] = _local4[_local6];
_local6++;
};
return (_local5);
}
public function SetGravity(_arg1:b2Vec2):void{
m_gravity = _arg1;
}
public function SolveTOI(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Shape;
var _local4:b2Shape;
var _local5:b2Body;
var _local6:b2Body;
var _local7:b2ContactEdge;
var _local11:b2Contact;
var _local12:b2Contact;
var _local13:Number;
var _local14:b2Body;
var _local15:int;
var _local16:b2TimeStep;
var _local17:int;
var _local18:Number;
var _local19:Number;
var _local20:b2Body;
var _local21:Boolean;
var _local8:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener);
var _local9:int = m_bodyCount;
var _local10:Array = new Array(_local9);
_local2 = m_bodyList;
while (_local2) {
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
_local2.m_sweep.t0 = 0;
_local2 = _local2.m_next;
};
_local11 = m_contactList;
while (_local11) {
_local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
_local11 = _local11.m_next;
};
while (true) {
_local12 = null;
_local13 = 1;
_local11 = m_contactList;
for (;_local11;(_local11 = _local11.m_next)) {
if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){
} else {
_local18 = 1;
if ((_local11.m_flags & b2Contact.e_toiFlag)){
_local18 = _local11.m_toi;
} else {
_local3 = _local11.m_shape1;
_local4 = _local11.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){
continue;
};
_local19 = _local5.m_sweep.t0;
if (_local5.m_sweep.t0 < _local6.m_sweep.t0){
_local19 = _local6.m_sweep.t0;
_local5.m_sweep.Advance(_local19);
} else {
if (_local6.m_sweep.t0 < _local5.m_sweep.t0){
_local19 = _local5.m_sweep.t0;
_local6.m_sweep.Advance(_local19);
};
};
_local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep);
if ((((_local18 > 0)) && ((_local18 < 1)))){
_local18 = (((1 - _local18) * _local19) + _local18);
if (_local18 > 1){
_local18 = 1;
};
};
_local11.m_toi = _local18;
_local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag);
};
if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){
_local12 = _local11;
_local13 = _local18;
};
};
};
if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){
break;
};
_local3 = _local12.m_shape1;
_local4 = _local12.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
_local5.Advance(_local13);
_local6.Advance(_local13);
_local12.Update(m_contactListener);
_local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag));
if (_local12.m_manifoldCount == 0){
} else {
_local14 = _local5;
if (_local14.IsStatic()){
_local14 = _local6;
};
_local8.Clear();
_local15 = 0;
var _temp1 = _local15;
_local15 = (_local15 + 1);
var _local22 = _temp1;
_local10[_local22] = _local14;
_local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag);
while (_local15 > 0) {
--_local15;
_local2 = _local10[_local15];
_local8.AddBody(_local2);
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag));
if (_local2.IsStatic()){
} else {
_local7 = _local2.m_contactList;
while (_local7) {
if (_local8.m_contactCount == _local8.m_contactCapacity){
} else {
if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){
} else {
if (_local7.contact.m_manifoldCount == 0){
} else {
_local8.AddContact(_local7.contact);
_local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag);
_local20 = _local7.other;
if ((_local20.m_flags & b2Body.e_islandFlag)){
} else {
if (_local20.IsStatic() == false){
_local20.Advance(_local13);
_local20.WakeUp();
};
var _temp2 = _local15;
_local15 = (_local15 + 1);
var _local23 = _temp2;
_local10[_local23] = _local20;
_local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag);
};
};
};
};
_local7 = _local7.next;
};
};
};
_local16 = new b2TimeStep();
_local16.dt = ((1 - _local13) * _arg1.dt);
_local16.inv_dt = (1 / _local16.dt);
_local16.maxIterations = _arg1.maxIterations;
_local8.SolveTOI(_local16);
_local17 = 0;
while (_local17 < _local8.m_bodyCount) {
_local2 = _local8.m_bodies[_local17];
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
} else {
if (_local2.IsStatic()){
} else {
_local21 = _local2.SynchronizeShapes();
if ((((_local21 == false)) && (!((m_boundaryListener == null))))){
m_boundaryListener.Violation(_local2);
};
_local7 = _local2.m_contactList;
while (_local7) {
_local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag));
_local7 = _local7.next;
};
};
};
_local17++;
};
_local17 = 0;
while (_local17 < _local8.m_contactCount) {
_local11 = _local8.m_contacts[_local17];
_local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
_local17++;
};
m_broadPhase.Commit();
};
};
}
public function GetJointList():b2Joint{
return (m_jointList);
}
public function GetBodyList():b2Body{
return (m_bodyList);
}
public function GetPairCount():int{
return (m_broadPhase.m_pairManager.m_pairCount);
}
public function Validate():void{
m_broadPhase.Validate();
}
public function SetWarmStarting(_arg1:Boolean):void{
m_warmStarting = _arg1;
}
public function SetPositionCorrection(_arg1:Boolean):void{
m_positionCorrection = _arg1;
}
public function CreateJoint(_arg1:b2JointDef):b2Joint{
var _local3:b2Body;
var _local4:b2Shape;
var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator);
_local2.m_prev = null;
_local2.m_next = m_jointList;
if (m_jointList){
m_jointList.m_prev = _local2;
};
m_jointList = _local2;
m_jointCount++;
_local2.m_node1.joint = _local2;
_local2.m_node1.other = _local2.m_body2;
_local2.m_node1.prev = null;
_local2.m_node1.next = _local2.m_body1.m_jointList;
if (_local2.m_body1.m_jointList){
_local2.m_body1.m_jointList.prev = _local2.m_node1;
};
_local2.m_body1.m_jointList = _local2.m_node1;
_local2.m_node2.joint = _local2;
_local2.m_node2.other = _local2.m_body1;
_local2.m_node2.prev = null;
_local2.m_node2.next = _local2.m_body2.m_jointList;
if (_local2.m_body2.m_jointList){
_local2.m_body2.m_jointList.prev = _local2.m_node2;
};
_local2.m_body2.m_jointList = _local2.m_node2;
if (_arg1.collideConnected == false){
_local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2;
_local4 = _local3.m_shapeList;
while (_local4) {
_local4.RefilterProxy(m_broadPhase, _local3.m_xf);
_local4 = _local4.m_next;
};
};
return (_local2);
}
public function DestroyJoint(_arg1:b2Joint):void{
var _local5:b2Body;
var _local6:b2Shape;
var _local2:Boolean = _arg1.m_collideConnected;
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_jointList){
m_jointList = _arg1.m_next;
};
var _local3:b2Body = _arg1.m_body1;
var _local4:b2Body = _arg1.m_body2;
_local3.WakeUp();
_local4.WakeUp();
if (_arg1.m_node1.prev){
_arg1.m_node1.prev.next = _arg1.m_node1.next;
};
if (_arg1.m_node1.next){
_arg1.m_node1.next.prev = _arg1.m_node1.prev;
};
if (_arg1.m_node1 == _local3.m_jointList){
_local3.m_jointList = _arg1.m_node1.next;
};
_arg1.m_node1.prev = null;
_arg1.m_node1.next = null;
if (_arg1.m_node2.prev){
_arg1.m_node2.prev.next = _arg1.m_node2.next;
};
if (_arg1.m_node2.next){
_arg1.m_node2.next.prev = _arg1.m_node2.prev;
};
if (_arg1.m_node2 == _local4.m_jointList){
_local4.m_jointList = _arg1.m_node2.next;
};
_arg1.m_node2.prev = null;
_arg1.m_node2.next = null;
b2Joint.Destroy(_arg1, m_blockAllocator);
m_jointCount--;
if (_local2 == false){
_local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4;
_local6 = _local5.m_shapeList;
while (_local6) {
_local6.RefilterProxy(m_broadPhase, _local5.m_xf);
_local6 = _local6.m_next;
};
};
}
public function SetContactListener(_arg1:b2ContactListener):void{
m_contactListener = _arg1;
}
public function CreateBody(_arg1:b2BodyDef):b2Body{
if (m_lock == true){
return (null);
};
var _local2:b2Body = new b2Body(_arg1, this);
_local2.m_prev = null;
_local2.m_next = m_bodyList;
if (m_bodyList){
m_bodyList.m_prev = _local2;
};
m_bodyList = _local2;
m_bodyCount++;
return (_local2);
}
public function SetBoundaryListener(_arg1:b2BoundaryListener):void{
m_boundaryListener = _arg1;
}
public function SetDestructionListener(_arg1:b2DestructionListener):void{
m_destructionListener = _arg1;
}
public function Step(_arg1:Number, _arg2:int):void{
m_lock = true;
var _local3:b2TimeStep = new b2TimeStep();
_local3.dt = _arg1;
_local3.maxIterations = _arg2;
if (_arg1 > 0){
_local3.inv_dt = (1 / _arg1);
} else {
_local3.inv_dt = 0;
};
_local3.dtRatio = (m_inv_dt0 * _arg1);
_local3.positionCorrection = m_positionCorrection;
_local3.warmStarting = m_warmStarting;
m_contactManager.Collide();
if (_local3.dt > 0){
Solve(_local3);
};
if (((m_continuousPhysics) && ((_local3.dt > 0)))){
SolveTOI(_local3);
};
DrawDebugData();
m_inv_dt0 = _local3.inv_dt;
m_lock = false;
}
public function GetBodyCount():int{
return (m_bodyCount);
}
public function GetJointCount():int{
return (m_jointCount);
}
}
}//package Box2D.Dynamics
Section 75
//CampaignInfo (com.google.analytics.campaign.CampaignInfo)
package com.google.analytics.campaign {
import com.google.analytics.utils.*;
public class CampaignInfo {
private var _new:Boolean;
private var _empty:Boolean;
public function CampaignInfo(_arg1:Boolean=true, _arg2:Boolean=false){
_empty = _arg1;
_new = _arg2;
}
public function isEmpty():Boolean{
return (_empty);
}
public function toURLString():String{
var _local1:Variables;
_local1 = toVariables();
return (_local1.toString());
}
public function toVariables():Variables{
var _local1:Variables;
_local1 = new Variables();
_local1.URIencode = true;
if (((!(isEmpty())) && (isNew()))){
_local1.utmcn = utmcn;
};
if (((!(isEmpty())) && (!(isNew())))){
_local1.utmcr = utmcr;
};
return (_local1);
}
public function isNew():Boolean{
return (_new);
}
public function get utmcn():String{
return ("1");
}
public function get utmcr():String{
return ("1");
}
}
}//package com.google.analytics.campaign
Section 76
//CampaignKey (com.google.analytics.campaign.CampaignKey)
package com.google.analytics.campaign {
public class CampaignKey {
public var UCMD:String;// = "utm_medium"
public var UCID:String;// = "utm_id"
public var UCTR:String;// = "utm_term"
public var UCSR:String;// = "utm_source"
public var UCNO:String;// = "utm_nooverride"
public var UCCN:String;// = "utm_campaign"
public var UGCLID:String;// = "gclid"
public var UCCT:String;// = "utm_content"
public function CampaignKey(){
UCCN = "utm_campaign";
UCCT = "utm_content";
UCID = "utm_id";
UCMD = "utm_medium";
UCNO = "utm_nooverride";
UCSR = "utm_source";
UCTR = "utm_term";
UGCLID = "gclid";
super();
}
}
}//package com.google.analytics.campaign
Section 77
//CampaignManager (com.google.analytics.campaign.CampaignManager)
package com.google.analytics.campaign {
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
public class CampaignManager {
private var _config:Configuration;
private var _domainHash:Number;
private var _debug:DebugConfiguration;
private var _timeStamp:Number;
private var _referrer:String;
private var _buffer:Buffer;
public static const trackingDelimiter:String = "|";
public function CampaignManager(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Number, _arg5:String, _arg6:Number){
_config = _arg1;
_debug = _arg2;
_buffer = _arg3;
_domainHash = _arg4;
_referrer = _arg5;
_timeStamp = _arg6;
}
public function hasNoOverride(_arg1:String):Boolean{
var _local2:CampaignKey;
var _local3:Variables;
var _local4:String;
_local2 = _config.campaignKey;
if (_arg1 == ""){
return (false);
};
_local3 = new Variables(_arg1);
_local4 = "";
if (_local3.hasOwnProperty(_local2.UCNO)){
_local4 = _local3[_local2.UCNO];
switch (_local4){
case "1":
return (true);
case "":
case "0":
default:
return (false);
};
};
return (false);
}
public function getCampaignInformation(_arg1:String, _arg2:Boolean):CampaignInfo{
var _local3:CampaignInfo;
var _local4:CampaignTracker;
var _local5:Boolean;
var _local6:Boolean;
var _local7:int;
var _local8:CampaignTracker;
var _local9:int;
_local3 = new CampaignInfo();
_local5 = false;
_local6 = false;
_local7 = 0;
if (((_config.allowLinker) && (_buffer.isGenuine()))){
if (!_buffer.hasUTMZ()){
return (_local3);
};
};
_local4 = getTrackerFromSearchString(_arg1);
if (isValid(_local4)){
_local6 = hasNoOverride(_arg1);
if (((_local6) && (!(_buffer.hasUTMZ())))){
return (_local3);
};
};
if (!isValid(_local4)){
_local4 = getOrganicCampaign();
if (((!(_buffer.hasUTMZ())) && (isIgnoredKeyword(_local4)))){
return (_local3);
};
};
if (((!(isValid(_local4))) && (_arg2))){
_local4 = getReferrerCampaign();
if (((!(_buffer.hasUTMZ())) && (isIgnoredReferral(_local4)))){
return (_local3);
};
};
if (!isValid(_local4)){
if (((!(_buffer.hasUTMZ())) && (_arg2))){
_local4 = getDirectCampaign();
};
};
if (!isValid(_local4)){
return (_local3);
};
if (((_buffer.hasUTMZ()) && (!(_buffer.utmz.isEmpty())))){
_local8 = new CampaignTracker();
_local8.fromTrackerString(_buffer.utmz.campaignTracking);
_local5 = (_local8.toTrackerString() == _local4.toTrackerString());
_local7 = _buffer.utmz.responseCount;
};
if (((!(_local5)) || (_arg2))){
_local9 = _buffer.utma.sessionCount;
_local7++;
if (_local9 == 0){
_local9 = 1;
};
_buffer.utmz.domainHash = _domainHash;
_buffer.utmz.campaignCreation = _timeStamp;
_buffer.utmz.campaignSessions = _local9;
_buffer.utmz.responseCount = _local7;
_buffer.utmz.campaignTracking = _local4.toTrackerString();
_debug.info(_buffer.utmz.toString(), VisualDebugMode.geek);
_local3 = new CampaignInfo(false, true);
} else {
_local3 = new CampaignInfo(false, false);
};
return (_local3);
}
public function isValid(_arg1:CampaignTracker):Boolean{
if (((_arg1) && (_arg1.isValid()))){
return (true);
};
return (false);
}
public function getTrackerFromSearchString(_arg1:String):CampaignTracker{
var _local2:CampaignTracker;
var _local3:CampaignTracker;
var _local4:CampaignKey;
var _local5:Variables;
_local2 = getOrganicCampaign();
_local3 = new CampaignTracker();
_local4 = _config.campaignKey;
if (_arg1 == ""){
return (_local3);
};
_local5 = new Variables(_arg1);
if (_local5.hasOwnProperty(_local4.UCID)){
_local3.id = _local5[_local4.UCID];
};
if (_local5.hasOwnProperty(_local4.UCSR)){
_local3.source = _local5[_local4.UCSR];
};
if (_local5.hasOwnProperty(_local4.UGCLID)){
_local3.clickId = _local5[_local4.UGCLID];
};
if (_local5.hasOwnProperty(_local4.UCCN)){
_local3.name = _local5[_local4.UCCN];
} else {
_local3.name = "(not set)";
};
if (_local5.hasOwnProperty(_local4.UCMD)){
_local3.medium = _local5[_local4.UCMD];
} else {
_local3.medium = "(not set)";
};
if (_local5.hasOwnProperty(_local4.UCTR)){
_local3.term = _local5[_local4.UCTR];
} else {
if (((_local2) && (!((_local2.term == ""))))){
_local3.term = _local2.term;
};
};
if (_local5.hasOwnProperty(_local4.UCCT)){
_local3.content = _local5[_local4.UCCT];
};
return (_local3);
}
public function getOrganicCampaign():CampaignTracker{
var _local1:CampaignTracker;
var _local2:URL;
var _local3:String;
var _local4:Array;
var _local5:OrganicReferrer;
var _local6:String;
if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
return (_local1);
};
_local2 = new URL(_referrer);
_local3 = "";
if (_local2.hostName != ""){
if (_local2.hostName.indexOf(".") > -1){
_local4 = _local2.hostName.split(".");
switch (_local4.length){
case 2:
_local3 = _local4[0];
break;
case 3:
_local3 = _local4[1];
break;
};
};
};
if (_config.organic.match(_local3)){
_local5 = _config.organic.getReferrerByName(_local3);
_local6 = _config.organic.getKeywordValue(_local5, _local2.search);
_local1 = new CampaignTracker();
_local1.source = _local5.engine;
_local1.name = "(organic)";
_local1.medium = "organic";
_local1.term = _local6;
};
return (_local1);
}
public function isIgnoredReferral(_arg1:CampaignTracker):Boolean{
if (((_arg1) && ((_arg1.medium == "referral")))){
return (_config.organic.isIgnoredReferral(_arg1.source));
};
return (false);
}
public function getDirectCampaign():CampaignTracker{
var _local1:CampaignTracker;
_local1 = new CampaignTracker();
_local1.source = "(direct)";
_local1.name = "(direct)";
_local1.medium = "(none)";
return (_local1);
}
public function isIgnoredKeyword(_arg1:CampaignTracker):Boolean{
if (((_arg1) && ((_arg1.medium == "organic")))){
return (_config.organic.isIgnoredKeyword(_arg1.term));
};
return (false);
}
public function getReferrerCampaign():CampaignTracker{
var _local1:CampaignTracker;
var _local2:URL;
var _local3:String;
var _local4:String;
if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
return (_local1);
};
_local2 = new URL(_referrer);
_local3 = _local2.hostName;
_local4 = _local2.path;
if (_local3.indexOf("www.") == 0){
_local3 = _local3.substr(4);
};
_local1 = new CampaignTracker();
_local1.source = _local3;
_local1.name = "(referral)";
_local1.medium = "referral";
_local1.content = _local4;
return (_local1);
}
public static function isInvalidReferrer(_arg1:String):Boolean{
var _local2:URL;
if ((((((_arg1 == "")) || ((_arg1 == "-")))) || ((_arg1 == "0")))){
return (true);
};
if (_arg1.indexOf("://") > -1){
_local2 = new URL(_arg1);
if ((((_local2.protocol == Protocols.file)) || ((_local2.protocol == Protocols.none)))){
return (true);
};
};
return (false);
}
public static function isFromGoogleCSE(_arg1:String, _arg2:Configuration):Boolean{
var _local3:URL;
_local3 = new URL(_arg1);
if (_local3.hostName.indexOf(_arg2.google) > -1){
if (_local3.search.indexOf((_arg2.googleSearchParam + "=")) > -1){
if (_local3.path == ("/" + _arg2.googleCsePath)){
return (true);
};
};
};
return (false);
}
}
}//package com.google.analytics.campaign
Section 78
//CampaignTracker (com.google.analytics.campaign.CampaignTracker)
package com.google.analytics.campaign {
import com.google.analytics.utils.*;
public class CampaignTracker {
public var content:String;
public var id:String;
public var clickId:String;
public var name:String;
public var term:String;
public var medium:String;
public var source:String;
public function CampaignTracker(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:String="", _arg5:String="", _arg6:String="", _arg7:String=""){
this.id = _arg1;
this.source = _arg2;
this.clickId = _arg3;
this.name = _arg4;
this.medium = _arg5;
this.term = _arg6;
this.content = _arg7;
}
public function toTrackerString():String{
var _local1:Array;
_local1 = [];
_addIfNotEmpty(_local1, "utmcsr=", source);
_addIfNotEmpty(_local1, "utmccn=", name);
_addIfNotEmpty(_local1, "utmcmd=", medium);
_addIfNotEmpty(_local1, "utmctr=", term);
_addIfNotEmpty(_local1, "utmcct=", content);
_addIfNotEmpty(_local1, "utmcid=", id);
_addIfNotEmpty(_local1, "utmgclid=", clickId);
return (_local1.join(CampaignManager.trackingDelimiter));
}
public function isValid():Boolean{
if (((((!((id == ""))) || (!((source == ""))))) || (!((clickId == ""))))){
return (true);
};
return (false);
}
private function _addIfNotEmpty(_arg1:Array, _arg2:String, _arg3:String):void{
if (_arg3 != ""){
_arg3 = _arg3.split("+").join("%20");
_arg3 = _arg3.split(" ").join("%20");
_arg1.push((_arg2 + _arg3));
};
}
public function fromTrackerString(_arg1:String):void{
var _local2:String;
var _local3:Variables;
_local2 = _arg1.split(CampaignManager.trackingDelimiter).join("&");
_local3 = new Variables(_local2);
if (_local3.hasOwnProperty("utmcid")){
this.id = _local3["utmcid"];
};
if (_local3.hasOwnProperty("utmcsr")){
this.source = _local3["utmcsr"];
};
if (_local3.hasOwnProperty("utmccn")){
this.name = _local3["utmccn"];
};
if (_local3.hasOwnProperty("utmcmd")){
this.medium = _local3["utmcmd"];
};
if (_local3.hasOwnProperty("utmctr")){
this.term = _local3["utmctr"];
};
if (_local3.hasOwnProperty("utmcct")){
this.content = _local3["utmcct"];
};
if (_local3.hasOwnProperty("utmgclid")){
this.clickId = _local3["utmgclid"];
};
}
}
}//package com.google.analytics.campaign
Section 79
//FlashTracker (com.google.analytics.components.FlashTracker)
package com.google.analytics.components {
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
import flash.events.*;
import flash.display.*;
import com.google.analytics.external.*;
import com.google.analytics.*;
import flash.utils.*;
import com.google.analytics.events.*;
public class FlashTracker extends Sprite implements AnalyticsTracker {
private var _adSense:AdSenseGlobals;
private var _env:Environment;
protected var _height:Number;// = 18
private var _idleTimer:IdleTimer;
private var _config:Configuration;
private var _mode:String;// = "AS3"
private var _dom:HTMLDOM;
private var _ready:Boolean;// = false
protected var _width:Number;// = 18
private var _account:String;// = ""
protected var _componentInspectorSetting:Boolean;
private var _visualDebug:Boolean;// = false
public var boundingBox_mc:DisplayObject;
private var _debug:DebugConfiguration;
private var _buffer:Buffer;
private var _display:DisplayObject;
protected var livePreviewHeight:Number;
private var _jsproxy:JavascriptProxy;
protected var isLivePreview:Boolean;
protected var preview:MovieClip;
private var _gifRequest:GIFRequest;
protected var livePreviewWidth:Number;
private var _tracker:GoogleAnalyticsAPI;
public static var version:Version = API.version;
public function FlashTracker(){
_ready = false;
_account = "";
_mode = TrackerMode.AS3;
_visualDebug = false;
_width = 18;
_height = 18;
super();
_tracker = new TrackerCache();
isLivePreview = _checkLivePreview();
_componentInspectorSetting = false;
if (boundingBox_mc){
boundingBox_mc.visible = false;
removeChild(boundingBox_mc);
boundingBox_mc = null;
};
if (isLivePreview){
_createLivePreview();
};
addEventListener(Event.ENTER_FRAME, _factory);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4));
}
public function trackTrans():void{
_tracker.trackTrans();
}
private function _createLivePreview():void{
var _local1:Graphics;
var _local2:Class;
preview = new MovieClip();
_local1 = preview.graphics;
_local1.beginFill(0xFFFFFF);
_local1.moveTo(0, 0);
_local1.lineTo(0, _width);
_local1.lineTo(_width, _height);
_local1.lineTo(_height, 0);
_local1.lineTo(0, 0);
_local1.endFill();
_local2 = (getDefinitionByName("com.google.analytics.components::Icon") as Class);
preview.icon_mc = new (_local2);
preview.icon_mc.name = "icon_mc";
preview.addChild(preview.icon_mc);
addChild(preview);
}
public function trackPageview(_arg1:String=""):void{
_tracker.trackPageview(_arg1);
}
public function get account():String{
return (_account);
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_tracker.linkByPost(_arg1, _arg2);
}
public function getDetectTitle():Boolean{
return (_tracker.getDetectTitle());
}
public function setCampNameKey(_arg1:String):void{
_tracker.setCampNameKey(_arg1);
}
public function resetSession():void{
_tracker.resetSession();
}
public function set account(_arg1:String):void{
_account = _arg1;
}
public function get debug():DebugConfiguration{
if (!_debug){
_createDebugAndConfig();
};
return (_debug);
}
public function createEventTracker(_arg1:String):EventTracker{
return (_tracker.createEventTracker(_arg1));
}
public function set config(_arg1:Configuration):void{
_config = _arg1;
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8));
}
public function setLocalServerMode():void{
_tracker.setLocalServerMode();
}
public function getLocalGifPath():String{
return (_tracker.getLocalGifPath());
}
public function clearIgnoredRef():void{
_tracker.clearIgnoredRef();
}
public function isReady():Boolean{
return (_ready);
}
public function set debug(_arg1:DebugConfiguration):void{
_debug = _arg1;
}
public function getVersion():String{
return (_tracker.getVersion());
}
public function setLocalRemoteServerMode():void{
_tracker.setLocalRemoteServerMode();
}
public function setCampNOKey(_arg1:String):void{
_tracker.setCampNOKey(_arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
_tracker.addIgnoredOrganic(_arg1);
}
public function setCookiePath(_arg1:String):void{
_tracker.setCookiePath(_arg1);
}
public function setCampTermKey(_arg1:String):void{
_tracker.setCampTermKey(_arg1);
}
private function _trackerFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account));
_adSense = new AdSenseGlobals(debug);
_dom = new HTMLDOM(debug);
_dom.cacheProperties();
_env = new Environment("", "", "", debug, _dom);
_buffer = new Buffer(config, debug, false);
_gifRequest = new GIFRequest(config, debug, _buffer, _env);
_idleTimer = new IdleTimer(config, debug, _display, _buffer);
_env.url = _display.stage.loaderInfo.url;
return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense));
}
public function setCampaignTrack(_arg1:Boolean):void{
_tracker.setCampaignTrack(_arg1);
}
public function getServiceMode():ServerOperationMode{
return (_tracker.getServiceMode());
}
public function set componentInspectorSetting(_arg1:Boolean):void{
_componentInspectorSetting = _arg1;
}
public function setSessionTimeout(_arg1:int):void{
_tracker.setSessionTimeout(_arg1);
}
public function setRemoteServerMode():void{
_tracker.setRemoteServerMode();
}
public function get visualDebug():Boolean{
return (_visualDebug);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_tracker.addOrganic(_arg1, _arg2);
}
public function setCookieTimeout(_arg1:int):void{
_tracker.setCookieTimeout(_arg1);
}
public function getClientInfo():Boolean{
return (_tracker.getClientInfo());
}
public function setAllowLinker(_arg1:Boolean):void{
_tracker.setAllowLinker(_arg1);
}
public function setClientInfo(_arg1:Boolean):void{
_tracker.setClientInfo(_arg1);
}
private function _bridgeFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account));
return (new Bridge(account, _debug, _jsproxy));
}
public function get config():Configuration{
if (!_config){
_createDebugAndConfig();
};
return (_config);
}
public function set mode(_arg1:String):void{
_mode = _arg1;
}
public function setDetectFlash(_arg1:Boolean):void{
_tracker.setDetectFlash(_arg1);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
public function setVar(_arg1:String):void{
_tracker.setVar(_arg1);
}
public function clearIgnoredOrganic():void{
_tracker.clearIgnoredOrganic();
}
public function setDomainName(_arg1:String):void{
_tracker.setDomainName(_arg1);
}
private function _checkLivePreview():Boolean{
if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){
return (true);
};
return (false);
}
public function setCampSourceKey(_arg1:String):void{
_tracker.setCampSourceKey(_arg1);
}
public function setCampContentKey(_arg1:String):void{
_tracker.setCampContentKey(_arg1);
}
public function setSize(_arg1:Number, _arg2:Number):void{
}
public function setAllowAnchor(_arg1:Boolean):void{
_tracker.setAllowAnchor(_arg1);
}
public function setLocalGifPath(_arg1:String):void{
_tracker.setLocalGifPath(_arg1);
}
public function get mode():String{
return (_mode);
}
public function setSampleRate(_arg1:Number):void{
_tracker.setSampleRate(_arg1);
}
public function setAllowHash(_arg1:Boolean):void{
_tracker.setAllowHash(_arg1);
}
public function setDetectTitle(_arg1:Boolean):void{
_tracker.setDetectTitle(_arg1);
}
public function cookiePathCopy(_arg1:String):void{
_tracker.cookiePathCopy(_arg1);
}
private function _factory(_arg1:Event):void{
var _local2:GoogleAnalyticsAPI;
var _local3:TrackerCache;
removeEventListener(Event.ENTER_FRAME, _factory);
if (isLivePreview){
return;
};
_display = this;
_createDebugAndConfig();
if (visualDebug){
debug.layout = new Layout(debug, _display);
debug.active = visualDebug;
};
_jsproxy = new JavascriptProxy(debug);
_local3 = (_tracker as TrackerCache);
switch (mode){
case TrackerMode.BRIDGE:
_local2 = _bridgeFactory();
break;
case TrackerMode.AS3:
default:
_local2 = _trackerFactory();
};
if (!_local3.isEmpty()){
_local3.tracker = _local2;
_local3.flush();
};
_tracker = _local2;
_ready = true;
dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this));
}
public function getDetectFlash():Boolean{
return (_tracker.getDetectFlash());
}
public function clearOrganic():void{
_tracker.clearOrganic();
}
private function _createDebugAndConfig():void{
if (!_debug){
this.debug = new DebugConfiguration();
};
if (!_config){
this.config = new Configuration(debug);
};
}
public function addIgnoredRef(_arg1:String):void{
_tracker.addIgnoredRef(_arg1);
}
public function set visualDebug(_arg1:Boolean):void{
_visualDebug = _arg1;
}
public function setCampMediumKey(_arg1:String):void{
_tracker.setCampMediumKey(_arg1);
}
public function getAccount():String{
return (_tracker.getAccount());
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_tracker.link(_arg1, _arg2);
}
}
var _local1:* = ServerOperationMode;
return (_local1);
}//package com.google.analytics.components
Section 80
//Icon (com.google.analytics.components.Icon)
package com.google.analytics.components {
import flash.display.*;
public dynamic class Icon extends MovieClip {
}
}//package com.google.analytics.components
Section 81
//BrowserInfo (com.google.analytics.core.BrowserInfo)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.utils.*;
public class BrowserInfo {
private var _config:Configuration;
private var _info:Environment;
public function BrowserInfo(_arg1:Configuration, _arg2:Environment){
_config = _arg1;
_info = _arg2;
}
public function get utmul():String{
return (_info.language.toLowerCase());
}
public function get utmje():String{
return ("0");
}
public function toURLString():String{
var _local1:Variables;
_local1 = toVariables();
return (_local1.toString());
}
public function get utmsr():String{
return (((_info.screenWidth + "x") + _info.screenHeight));
}
public function get utmcs():String{
return (_info.languageEncoding);
}
public function get utmfl():String{
var _local1:Version;
if (_config.detectFlash){
_local1 = _info.flashVersion;
return (((((_local1.major + ".") + _local1.minor) + " r") + _local1.build));
};
return ("-");
}
public function toVariables():Variables{
var _local1:Variables;
_local1 = new Variables();
_local1.URIencode = true;
_local1.utmcs = utmcs;
_local1.utmsr = utmsr;
_local1.utmsc = utmsc;
_local1.utmul = utmul;
_local1.utmje = utmje;
_local1.utmfl = utmfl;
return (_local1);
}
public function get utmsc():String{
return ((_info.screenColorDepth + "-bit"));
}
}
}//package com.google.analytics.core
Section 82
//Buffer (com.google.analytics.core.Buffer)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.net.*;
import flash.events.*;
import com.google.analytics.data.*;
public dynamic class Buffer {
private var _SO:SharedObject;
private var _OBJ:Object;
private var _utma:UTMA;
private var _utmb:UTMB;
private var _utmc:UTMC;
private var _debug:DebugConfiguration;
private var _utmk:UTMK;
private var _config:Configuration;
private var _utmv:UTMV;
private var _utmz:UTMZ;
private var _volatile:Boolean;
public function Buffer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Boolean=false, _arg4:Object=null){
var _local5:Boolean;
var _local6:String;
super();
_config = _arg1;
_debug = _arg2;
UTMB.defaultTimespan = _config.sessionTimeout;
UTMZ.defaultTimespan = _config.conversionTimeout;
if (!_arg3){
_SO = SharedObject.getLocal(_config.cookieName, _config.cookiePath);
_local5 = false;
if (_SO.data.utma){
if (!hasUTMA()){
_createUMTA();
};
_utma.fromSharedObject(_SO.data.utma);
if (_debug.verbose){
_debug.info(("found: " + _utma.toString(true)), VisualDebugMode.geek);
};
if (_utma.isExpired()){
if (_debug.verbose){
_debug.warning("UTMA has expired", VisualDebugMode.advanced);
};
_clearUTMA();
_local5 = true;
};
};
if (_SO.data.utmb){
if (!hasUTMB()){
_createUMTB();
};
_utmb.fromSharedObject(_SO.data.utmb);
if (_debug.verbose){
_debug.info(("found: " + _utmb.toString(true)), VisualDebugMode.geek);
};
if (_utmb.isExpired()){
if (_debug.verbose){
_debug.warning("UTMB has expired", VisualDebugMode.advanced);
};
_clearUTMB();
_local5 = true;
};
};
if (_SO.data.utmc){
delete _SO.data.utmc;
_local5 = true;
};
if (_SO.data.utmk){
if (!hasUTMK()){
_createUMTK();
};
_utmk.fromSharedObject(_SO.data.utmk);
if (_debug.verbose){
_debug.info(("found: " + _utmk.toString()), VisualDebugMode.geek);
};
};
if (_SO.data.utmv){
if (!hasUTMV()){
_createUMTV();
};
_utmv.fromSharedObject(_SO.data.utmv);
if (_debug.verbose){
_debug.info(("found: " + _utmv.toString(true)), VisualDebugMode.geek);
};
if (_utmv.isExpired()){
if (_debug.verbose){
_debug.warning("UTMV has expired", VisualDebugMode.advanced);
};
_clearUTMV();
_local5 = true;
};
};
if (_SO.data.utmz){
if (!hasUTMZ()){
_createUMTZ();
};
_utmz.fromSharedObject(_SO.data.utmz);
if (_debug.verbose){
_debug.info(("found: " + _utmz.toString(true)), VisualDebugMode.geek);
};
if (_utmz.isExpired()){
if (_debug.verbose){
_debug.warning("UTMZ has expired", VisualDebugMode.advanced);
};
_clearUTMZ();
_local5 = true;
};
};
if (_local5){
save();
};
} else {
_OBJ = new Object();
if (_arg4){
for (_local6 in _arg4) {
_OBJ[_local6] = _arg4[_local6];
};
};
};
_volatile = _arg3;
}
public function save():void{
var flushStatus:String;
if (!isVolatile()){
flushStatus = null;
try {
flushStatus = _SO.flush();
} catch(e:Error) {
_debug.warning("Error...Could not write SharedObject to disk");
};
switch (flushStatus){
case SharedObjectFlushStatus.PENDING:
_debug.info("Requesting permission to save object...");
_SO.addEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus);
break;
case SharedObjectFlushStatus.FLUSHED:
_debug.info("Value flushed to disk.");
break;
};
};
}
public function get utmv():UTMV{
if (!hasUTMV()){
_createUMTV();
};
return (_utmv);
}
public function clearCookies():void{
utma.reset();
utmb.reset();
utmc.reset();
utmz.reset();
utmv.reset();
utmk.reset();
}
public function get utmz():UTMZ{
if (!hasUTMZ()){
_createUMTZ();
};
return (_utmz);
}
public function hasUTMA():Boolean{
if (_utma){
return (true);
};
return (false);
}
public function hasUTMB():Boolean{
if (_utmb){
return (true);
};
return (false);
}
public function isGenuine():Boolean{
if (!hasUTMK()){
return (true);
};
return ((utmk.hash == generateCookiesHash()));
}
public function resetCurrentSession():void{
_clearUTMB();
_clearUTMC();
save();
}
public function hasUTMC():Boolean{
if (_utmc){
return (true);
};
return (false);
}
public function hasUTMK():Boolean{
if (_utmk){
return (true);
};
return (false);
}
public function generateCookiesHash():Number{
var _local1:String;
_local1 = "";
_local1 = (_local1 + utma.valueOf());
_local1 = (_local1 + utmb.valueOf());
_local1 = (_local1 + utmc.valueOf());
_local1 = (_local1 + utmz.valueOf());
_local1 = (_local1 + utmv.valueOf());
return (Utils.generateHash(_local1));
}
private function _createUMTA():void{
_utma = new UTMA();
_utma.proxy = this;
}
private function _createUMTB():void{
_utmb = new UTMB();
_utmb.proxy = this;
}
private function _createUMTC():void{
_utmc = new UTMC();
}
public function hasUTMV():Boolean{
if (_utmv){
return (true);
};
return (false);
}
private function _createUMTK():void{
_utmk = new UTMK();
_utmk.proxy = this;
}
public function hasUTMZ():Boolean{
if (_utmz){
return (true);
};
return (false);
}
private function _createUMTV():void{
_utmv = new UTMV();
_utmv.proxy = this;
}
private function _createUMTZ():void{
_utmz = new UTMZ();
_utmz.proxy = this;
}
public function updateUTMA(_arg1:Number):void{
if (_debug.verbose){
_debug.info((("updateUTMA( " + _arg1) + " )"), VisualDebugMode.advanced);
};
if (!utma.isEmpty()){
if (isNaN(utma.sessionCount)){
utma.sessionCount = 1;
} else {
utma.sessionCount = (utma.sessionCount + 1);
};
utma.lastTime = utma.currentTime;
utma.currentTime = _arg1;
};
}
private function _onFlushStatus(_arg1:NetStatusEvent):void{
_debug.info("User closed permission dialog...");
switch (_arg1.info.code){
case "SharedObject.Flush.Success":
_debug.info("User granted permission -- value saved.");
break;
case "SharedObject.Flush.Failed":
_debug.info("User denied permission -- value not saved.");
break;
};
_SO.removeEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus);
}
private function _clearUTMA():void{
_utma = null;
if (!isVolatile()){
_SO.data.utma = null;
delete _SO.data.utma;
};
}
private function _clearUTMC():void{
_utmc = null;
}
private function _clearUTMB():void{
_utmb = null;
if (!isVolatile()){
_SO.data.utmb = null;
delete _SO.data.utmb;
};
}
public function update(_arg1:String, _arg2):void{
if (isVolatile()){
_OBJ[_arg1] = _arg2;
} else {
_SO.data[_arg1] = _arg2;
};
}
private function _clearUTMZ():void{
_utmz = null;
if (!isVolatile()){
_SO.data.utmz = null;
delete _SO.data.utmz;
};
}
private function _clearUTMV():void{
_utmv = null;
if (!isVolatile()){
_SO.data.utmv = null;
delete _SO.data.utmv;
};
}
public function isVolatile():Boolean{
return (_volatile);
}
public function get utma():UTMA{
if (!hasUTMA()){
_createUMTA();
};
return (_utma);
}
public function get utmb():UTMB{
if (!hasUTMB()){
_createUMTB();
};
return (_utmb);
}
public function get utmc():UTMC{
if (!hasUTMC()){
_createUMTC();
};
return (_utmc);
}
public function get utmk():UTMK{
if (!hasUTMK()){
_createUMTK();
};
return (_utmk);
}
}
}//package com.google.analytics.core
Section 83
//DocumentInfo (com.google.analytics.core.DocumentInfo)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.utils.*;
import com.google.analytics.external.*;
public class DocumentInfo {
private var _config:Configuration;
private var _utmr:String;
private var _adSense:AdSenseGlobals;
private var _info:Environment;
private var _pageURL:String;
public function DocumentInfo(_arg1:Configuration, _arg2:Environment, _arg3:String, _arg4:String=null, _arg5:AdSenseGlobals=null){
_config = _arg1;
_info = _arg2;
_utmr = _arg3;
_pageURL = _arg4;
_adSense = _arg5;
}
public function get utmr():String{
if (!_utmr){
return ("-");
};
return (_utmr);
}
public function toURLString():String{
var _local1:Variables;
_local1 = toVariables();
return (_local1.toString());
}
private function _renderPageURL(_arg1:String=""):String{
var _local2:String;
var _local3:String;
_local2 = _info.locationPath;
_local3 = _info.locationSearch;
if (((!(_arg1)) || ((_arg1 == "")))){
_arg1 = (_local2 + unescape(_local3));
};
return (_arg1);
}
public function get utmp():String{
return (_renderPageURL(_pageURL));
}
private function _generateHitId():Number{
var _local1:Number;
if (((_adSense.hid) && (!((_adSense.hid == ""))))){
_local1 = Number(_adSense.hid);
} else {
_local1 = Math.round((Math.random() * 2147483647));
_adSense.hid = String(_local1);
};
return (_local1);
}
public function get utmhid():String{
return (String(_generateHitId()));
}
public function toVariables():Variables{
var _local1:Variables;
_local1 = new Variables();
_local1.URIencode = true;
if (((_config.detectTitle) && (!((utmdt == ""))))){
_local1.utmdt = utmdt;
};
_local1.utmhid = utmhid;
_local1.utmr = utmr;
_local1.utmp = utmp;
return (_local1);
}
public function get utmdt():String{
return (_info.documentTitle);
}
}
}//package com.google.analytics.core
Section 84
//Domain (com.google.analytics.core.Domain)
package com.google.analytics.core {
import com.google.analytics.debug.*;
public class Domain {
private var _mode:DomainNameMode;
private var _name:String;
private var _debug:DebugConfiguration;
public function Domain(_arg1:DomainNameMode=null, _arg2:String="", _arg3:DebugConfiguration=null){
_debug = _arg3;
if (_arg1 == null){
_arg1 = DomainNameMode.auto;
};
_mode = _arg1;
if (_arg1 == DomainNameMode.custom){
this.name = _arg2;
} else {
_name = _arg2;
};
}
public function get mode():DomainNameMode{
return (_mode);
}
public function set mode(_arg1:DomainNameMode):void{
_mode = _arg1;
if (_mode == DomainNameMode.none){
_name = "";
};
}
public function get name():String{
return (_name);
}
public function set name(_arg1:String):void{
if (((!((_arg1.charAt(0) == "."))) && (_debug))){
_debug.warning(("missing leading period \".\", cookie will only be accessible on " + _arg1), VisualDebugMode.geek);
};
_name = _arg1;
}
}
}//package com.google.analytics.core
Section 85
//DomainNameMode (com.google.analytics.core.DomainNameMode)
package com.google.analytics.core {
public class DomainNameMode {
private var _value:int;
private var _name:String;
public static const custom:DomainNameMode = new DomainNameMode(2, "custom");
;
public static const none:DomainNameMode = new DomainNameMode(0, "none");
;
public static const auto:DomainNameMode = new DomainNameMode(1, "auto");
;
public function DomainNameMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.core
Section 86
//EventInfo (com.google.analytics.core.EventInfo)
package com.google.analytics.core {
import com.google.analytics.utils.*;
import com.google.analytics.data.*;
public class EventInfo {
private var _isEventHit:Boolean;
private var _ext10:X10;
private var _x10:X10;
public function EventInfo(_arg1:Boolean, _arg2:X10, _arg3:X10=null){
_isEventHit = _arg1;
_x10 = _arg2;
_ext10 = _arg3;
}
public function toURLString():String{
var _local1:Variables;
_local1 = toVariables();
return (_local1.toString());
}
public function get utmt():String{
return ("event");
}
public function get utme():String{
return (_x10.renderMergedUrlString(_ext10));
}
public function toVariables():Variables{
var _local1:Variables;
_local1 = new Variables();
_local1.URIencode = true;
if (_isEventHit){
_local1.utmt = utmt;
};
_local1.utme = utme;
return (_local1);
}
}
}//package com.google.analytics.core
Section 87
//EventTracker (com.google.analytics.core.EventTracker)
package com.google.analytics.core {
import com.google.analytics.v4.*;
public class EventTracker {
private var _parent:GoogleAnalyticsAPI;
public var name:String;
public function EventTracker(_arg1:String, _arg2:GoogleAnalyticsAPI){
this.name = _arg1;
_parent = _arg2;
}
public function trackEvent(_arg1:String, _arg2:String=null, _arg3:Number=NaN):Boolean{
return (_parent.trackEvent(name, _arg1, _arg2, _arg3));
}
}
}//package com.google.analytics.core
Section 88
//ga_internal (com.google.analytics.core.ga_internal)
package com.google.analytics.core {
public namespace ga_internal;
}//package com.google.analytics.core
Section 89
//GIFRequest (com.google.analytics.core.GIFRequest)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.net.*;
import com.google.analytics.utils.*;
import flash.events.*;
import flash.display.*;
import flash.system.*;
public class GIFRequest {
private var _info:Environment;
private var _count:int;
private var _utmac:String;
private var _alertcount:int;
private var _debug:DebugConfiguration;
private var _lastRequest:URLRequest;
private var _buffer:Buffer;
private var _config:Configuration;
private var _requests:Array;
public function GIFRequest(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Environment){
_config = _arg1;
_debug = _arg2;
_buffer = _arg3;
_info = _arg4;
_count = 0;
_alertcount = 0;
_requests = [];
}
public function get utmn():String{
return ((Utils.generate32bitRandom() as String));
}
public function onIOError(_arg1:IOErrorEvent):void{
var _local2:String;
var _local3:String;
var _local4:String;
_local2 = _lastRequest.url;
_local3 = String((_requests.length - 1));
_local4 = (("Gif Request #" + _local3) + " failed");
if (_debug.GIFRequests){
if (!_debug.verbose){
if (_local2.indexOf("?") > -1){
_local2 = _local2.split("?")[0];
};
_local2 = _shortenURL(_local2);
};
if (int(_debug.mode) > int(VisualDebugMode.basic)){
_local4 = (_local4 + ((" \"" + _local2) + "\" does not exists or is unreachable"));
};
_debug.failure(_local4);
} else {
_debug.warning(_local4);
};
_removeListeners(_arg1.target);
}
public function send(_arg1:String, _arg2:Variables=null, _arg3:Boolean=false, _arg4:Boolean=false):void{
var _local5:String;
var _local6:URLRequest;
var _local7:URLRequest;
_utmac = _arg1;
if (!_arg2){
_arg2 = new Variables();
};
_arg2.URIencode = false;
_arg2.pre = ["utmwv", "utmn", "utmhn", "utmt", "utme", "utmcs", "utmsr", "utmsc", "utmul", "utmje", "utmfl", "utmdt", "utmhid", "utmr", "utmp"];
_arg2.post = ["utmcc"];
if (_debug.verbose){
_debug.info(((("tracking: " + _buffer.utmb.trackCount) + "/") + _config.trackingLimitPerSession), VisualDebugMode.geek);
};
if ((((_buffer.utmb.trackCount < _config.trackingLimitPerSession)) || (_arg3))){
if (_arg4){
updateToken();
};
if (((((_arg3) || (!(_arg4)))) || ((_buffer.utmb.token >= 1)))){
if (((!(_arg3)) && (_arg4))){
_buffer.utmb.token = (_buffer.utmb.token - 1);
};
_buffer.utmb.trackCount = (_buffer.utmb.trackCount + 1);
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
};
_arg2.utmwv = utmwv;
_arg2.utmn = Utils.generate32bitRandom();
if (_info.domainName != ""){
_arg2.utmhn = _info.domainName;
};
if (_config.sampleRate < 1){
_arg2.utmsp = (_config.sampleRate * 100);
};
if ((((_config.serverMode == ServerOperationMode.local)) || ((_config.serverMode == ServerOperationMode.both)))){
_local5 = _info.locationSWFPath;
if (_local5.lastIndexOf("/") > 0){
_local5 = _local5.substring(0, _local5.lastIndexOf("/"));
};
_local6 = new URLRequest();
if (_config.localGIFpath.indexOf("http") == 0){
_local6.url = _config.localGIFpath;
} else {
_local6.url = (_local5 + _config.localGIFpath);
};
_local6.url = (_local6.url + ("?" + _arg2.toString()));
if (((_debug.active) && (_debug.GIFRequests))){
_debugSend(_local6);
} else {
sendRequest(_local6);
};
};
if ((((_config.serverMode == ServerOperationMode.remote)) || ((_config.serverMode == ServerOperationMode.both)))){
_local7 = new URLRequest();
if (_info.protocol == Protocols.HTTPS){
_local7.url = _config.secureRemoteGIFpath;
} else {
if (_info.protocol == Protocols.HTTP){
_local7.url = _config.remoteGIFpath;
} else {
_local7.url = _config.remoteGIFpath;
};
};
_arg2.utmac = utmac;
_arg2.utmcc = encodeURIComponent(utmcc);
_local7.url = (_local7.url + ("?" + _arg2.toString()));
if (((_debug.active) && (_debug.GIFRequests))){
_debugSend(_local7);
} else {
sendRequest(_local7);
};
};
};
};
}
public function onSecurityError(_arg1:SecurityErrorEvent):void{
if (_debug.GIFRequests){
_debug.failure(_arg1.text);
};
}
public function get utmsp():String{
return (((_config.sampleRate * 100) as String));
}
public function get utmcc():String{
var _local1:Array;
_local1 = [];
if (_buffer.hasUTMA()){
_local1.push((_buffer.utma.toURLString() + ";"));
};
if (_buffer.hasUTMZ()){
_local1.push((_buffer.utmz.toURLString() + ";"));
};
if (_buffer.hasUTMV()){
_local1.push((_buffer.utmv.toURLString() + ";"));
};
return (_local1.join("+"));
}
public function get utmac():String{
return (_utmac);
}
public function get utmwv():String{
return (_config.version);
}
public function sendRequest(_arg1:URLRequest):void{
var loader:Loader;
var context:LoaderContext;
var request = _arg1;
loader = new Loader();
loader.name = String(_count++);
context = new LoaderContext(false);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
_lastRequest = request;
_requests[loader.name] = new RequestObject(request);
try {
loader.load(request, context);
} catch(e:Error) {
_debug.failure("\"Loader.load()\" could not instanciate Gif Request");
};
}
private function _removeListeners(_arg1:Object):void{
_arg1.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
_arg1.removeEventListener(Event.COMPLETE, onComplete);
}
public function updateToken():void{
var _local1:Number;
var _local2:Number;
_local1 = new Date().getTime();
_local2 = ((_local1 - _buffer.utmb.lastTime) * (_config.tokenRate / 1000));
if (_debug.verbose){
_debug.info(("tokenDelta: " + _local2), VisualDebugMode.geek);
};
if (_local2 >= 1){
_buffer.utmb.token = Math.min(Math.floor((_buffer.utmb.token + _local2)), _config.bucketCapacity);
_buffer.utmb.lastTime = _local1;
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
};
};
}
private function _shortenURL(_arg1:String):String{
var _local2:Array;
if (_arg1.length > 60){
_local2 = _arg1.split("/");
while (_arg1.length > 60) {
_local2.shift();
_arg1 = ("../" + _local2.join("/"));
};
};
return (_arg1);
}
public function get utmhn():String{
return (_info.domainName);
}
private function _debugSend(_arg1:URLRequest):void{
var _local2:String;
var _local3:String;
_local2 = "";
switch (_debug.mode){
case VisualDebugMode.geek:
_local2 = ((("Gif Request #" + _alertcount) + ":\n") + _arg1.url);
break;
case VisualDebugMode.advanced:
_local3 = _arg1.url;
if (_local3.indexOf("?") > -1){
_local3 = _local3.split("?")[0];
};
_local3 = _shortenURL(_local3);
_local2 = (((("Send Gif Request #" + _alertcount) + ":\n") + _local3) + " ?");
break;
case VisualDebugMode.basic:
default:
_local2 = (((("Send " + _config.serverMode.toString()) + " Gif Request #") + _alertcount) + " ?");
};
_debug.alertGifRequest(_local2, _arg1, this);
_alertcount++;
}
public function onComplete(_arg1:Event):void{
var _local2:String;
var _local3:String;
var _local4:String;
_local2 = _arg1.target.loader.name;
_requests[_local2].complete();
_local3 = (("Gif Request #" + _local2) + " sent");
_local4 = _requests[_local2].request.url;
if (_debug.GIFRequests){
if (!_debug.verbose){
if (_local4.indexOf("?") > -1){
_local4 = _local4.split("?")[0];
};
_local4 = _shortenURL(_local4);
};
if (int(_debug.mode) > int(VisualDebugMode.basic)){
_local3 = (_local3 + ((" to \"" + _local4) + "\""));
};
_debug.success(_local3);
} else {
_debug.info(_local3);
};
_removeListeners(_arg1.target);
}
}
}//package com.google.analytics.core
Section 90
//IdleTimer (com.google.analytics.core.IdleTimer)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class IdleTimer {
private var _loop:Timer;
private var _stage:Stage;
private var _lastMove:int;
private var _debug:DebugConfiguration;
private var _session:Timer;
private var _inactivity:Number;
private var _buffer:Buffer;
public function IdleTimer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:DisplayObject, _arg4:Buffer){
var _local5:Number;
var _local6:Number;
var _local7:Number;
super();
_local5 = _arg1.idleLoop;
_local6 = _arg1.idleTimeout;
_local7 = _arg1.sessionTimeout;
_loop = new Timer((_local5 * 1000));
_session = new Timer((_local7 * 1000), 1);
_debug = _arg2;
_stage = _arg3.stage;
_buffer = _arg4;
_lastMove = getTimer();
_inactivity = (_local6 * 1000);
_loop.addEventListener(TimerEvent.TIMER, checkForIdle);
_session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession);
_stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
_debug.info(((((("delay: " + _local5) + "sec , inactivity: ") + _local6) + "sec, sessionTimeout: ") + _local7), VisualDebugMode.geek);
_loop.start();
}
private function onMouseMove(_arg1:MouseEvent):void{
_lastMove = getTimer();
if (_session.running){
_debug.info("session timer reset", VisualDebugMode.geek);
_session.reset();
};
}
public function endSession(_arg1:TimerEvent):void{
_session.removeEventListener(TimerEvent.TIMER_COMPLETE, endSession);
_debug.info("session timer end session", VisualDebugMode.geek);
_session.reset();
_buffer.resetCurrentSession();
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
_debug.info(_buffer.utmc.toString(), VisualDebugMode.geek);
_session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession);
}
public function checkForIdle(_arg1:TimerEvent):void{
var _local2:int;
_local2 = getTimer();
if ((_local2 - _lastMove) >= _inactivity){
if (!_session.running){
_debug.info("session timer start", VisualDebugMode.geek);
_session.start();
};
};
}
}
}//package com.google.analytics.core
Section 91
//Organic (com.google.analytics.core.Organic)
package com.google.analytics.core {
import com.google.analytics.utils.*;
public class Organic {
private var _sourcesCache:Array;
private var _sourcesEngine:Array;
private var _ignoredKeywords:Array;
private var _ignoredReferralsCache:Object;
private var _ignoredReferrals:Array;
private var _ignoredKeywordsCache:Object;
private var _sources:Array;
public static var throwErrors:Boolean = false;
public function Organic(){
_sources = [];
_sourcesCache = [];
_sourcesEngine = [];
_ignoredReferrals = [];
_ignoredReferralsCache = {};
_ignoredKeywords = [];
_ignoredKeywordsCache = {};
}
public function getKeywordValue(_arg1:OrganicReferrer, _arg2:String):String{
var _local3:String;
_local3 = _arg1.keyword;
return (getKeywordValueFromPath(_local3, _arg2));
}
public function isIgnoredKeyword(_arg1:String):Boolean{
if (_ignoredKeywordsCache.hasOwnProperty(_arg1)){
return (true);
};
return (false);
}
public function isIgnoredReferral(_arg1:String):Boolean{
if (_ignoredReferralsCache.hasOwnProperty(_arg1)){
return (true);
};
return (false);
}
public function clear():void{
clearEngines();
clearIgnoredReferrals();
clearIgnoredKeywords();
}
public function get ignoredKeywordsCount():int{
return (_ignoredKeywords.length);
}
public function match(_arg1:String):Boolean{
if (_arg1 == ""){
return (false);
};
_arg1 = _arg1.toLowerCase();
if (_sourcesEngine[_arg1] != undefined){
return (true);
};
return (false);
}
public function get count():int{
return (_sources.length);
}
public function addSource(_arg1:String, _arg2:String):void{
var _local3:OrganicReferrer;
_local3 = new OrganicReferrer(_arg1, _arg2);
if (_sourcesCache[_local3.toString()] == undefined){
_sources.push(_local3);
_sourcesCache[_local3.toString()] = (_sources.length - 1);
if (_sourcesEngine[_local3.engine] == undefined){
_sourcesEngine[_local3.engine] = [(_sources.length - 1)];
} else {
_sourcesEngine[_local3.engine].push((_sources.length - 1));
};
} else {
if (throwErrors){
throw (new Error((_local3.toString() + " already exists, we don't add it.")));
};
};
}
public function clearIgnoredKeywords():void{
_ignoredKeywords = [];
_ignoredKeywordsCache = {};
}
public function clearEngines():void{
_sources = [];
_sourcesCache = [];
_sourcesEngine = [];
}
public function get ignoredReferralsCount():int{
return (_ignoredReferrals.length);
}
public function addIgnoredReferral(_arg1:String):void{
if (_ignoredReferralsCache[_arg1] == undefined){
_ignoredReferrals.push(_arg1);
_ignoredReferralsCache[_arg1] = (_ignoredReferrals.length - 1);
} else {
if (throwErrors){
throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it.")));
};
};
}
public function clearIgnoredReferrals():void{
_ignoredReferrals = [];
_ignoredReferralsCache = {};
}
public function getReferrerByName(_arg1:String):OrganicReferrer{
var _local2:int;
if (match(_arg1)){
_local2 = _sourcesEngine[_arg1][0];
return (_sources[_local2]);
};
return (null);
}
public function addIgnoredKeyword(_arg1:String):void{
if (_ignoredKeywordsCache[_arg1] == undefined){
_ignoredKeywords.push(_arg1);
_ignoredKeywordsCache[_arg1] = (_ignoredKeywords.length - 1);
} else {
if (throwErrors){
throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it.")));
};
};
}
public function get sources():Array{
return (_sources);
}
public static function getKeywordValueFromPath(_arg1:String, _arg2:String):String{
var _local3:String;
var _local4:Variables;
if (_arg2.indexOf((_arg1 + "=")) > -1){
if (_arg2.charAt(0) == "?"){
_arg2 = _arg2.substr(1);
};
_arg2 = _arg2.split("+").join("%20");
_local4 = new Variables(_arg2);
_local3 = _local4[_arg1];
};
return (_local3);
}
}
}//package com.google.analytics.core
Section 92
//OrganicReferrer (com.google.analytics.core.OrganicReferrer)
package com.google.analytics.core {
public class OrganicReferrer {
private var _engine:String;
private var _keyword:String;
public function OrganicReferrer(_arg1:String, _arg2:String){
this.engine = _arg1;
this.keyword = _arg2;
}
public function set engine(_arg1:String):void{
_engine = _arg1.toLowerCase();
}
public function get keyword():String{
return (_keyword);
}
public function toString():String{
return (((engine + "?") + keyword));
}
public function get engine():String{
return (_engine);
}
public function set keyword(_arg1:String):void{
_keyword = _arg1.toLowerCase();
}
}
}//package com.google.analytics.core
Section 93
//RequestObject (com.google.analytics.core.RequestObject)
package com.google.analytics.core {
import flash.net.*;
import flash.utils.*;
public class RequestObject {
public var start:int;
public var request:URLRequest;
public var end:int;
public function RequestObject(_arg1:URLRequest){
start = getTimer();
this.request = _arg1;
}
public function toString():String{
var _local1:Array;
_local1 = [];
_local1.push((("duration: " + duration) + "ms"));
_local1.push(("url: " + request.url));
return ((("{ " + _local1.join(", ")) + " }"));
}
public function get duration():int{
if (!hasCompleted()){
return (0);
};
return ((end - start));
}
public function hasCompleted():Boolean{
return ((end > 0));
}
public function complete():void{
end = getTimer();
}
}
}//package com.google.analytics.core
Section 94
//ServerOperationMode (com.google.analytics.core.ServerOperationMode)
package com.google.analytics.core {
public class ServerOperationMode {
private var _value:int;
private var _name:String;
public static const both:ServerOperationMode = new ServerOperationMode(2, "both");
;
public static const remote:ServerOperationMode = new ServerOperationMode(1, "remote");
;
public static const local:ServerOperationMode = new ServerOperationMode(0, "local");
;
public function ServerOperationMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.core
Section 95
//TrackerCache (com.google.analytics.core.TrackerCache)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import flash.errors.*;
public class TrackerCache implements GoogleAnalyticsAPI {
public var tracker:GoogleAnalyticsAPI;
private var _ar:Array;
public static var CACHE_THROW_ERROR:Boolean;
public function TrackerCache(_arg1:GoogleAnalyticsAPI=null){
this.tracker = _arg1;
_ar = [];
}
public function size():uint{
return (_ar.length);
}
public function flush():void{
var _local1:Object;
var _local2:String;
var _local3:Array;
var _local4:int;
var _local5:int;
if (tracker == null){
return;
};
if (size() > 0){
_local4 = _ar.length;
while (_local5 < _local4) {
_local1 = _ar.shift();
_local2 = (_local1.name as String);
_local3 = (_local1.args as Array);
if (((!((_local2 == null))) && ((_local2 in tracker)))){
(tracker[_local2] as Function).apply(tracker, _local3);
};
_local5++;
};
};
}
public function enqueue(_arg1:String, ... _args):Boolean{
if (_arg1 == null){
return (false);
};
_ar.push({name:_arg1, args:_args});
return (true);
}
public function link(_arg1:String, _arg2:Boolean=false):void{
enqueue("link", _arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
enqueue("addOrganic", _arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
enqueue("setAllowLinker", _arg1);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
enqueue("trackEvent", _arg1, _arg2, _arg3, _arg4);
return (true);
}
public function trackTrans():void{
enqueue("trackTrans");
}
public function trackPageview(_arg1:String=""):void{
enqueue("trackPageview", _arg1);
}
public function setClientInfo(_arg1:Boolean):void{
enqueue("setClientInfo", _arg1);
}
public function getClientInfo():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getClientInfo' method for the moment."));
};
return (false);
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
enqueue("linkByPost", _arg1, _arg2);
}
public function setCookieTimeout(_arg1:int):void{
enqueue("setCookieTimeout", _arg1);
}
public function isEmpty():Boolean{
return ((_ar.length == 0));
}
public function resetSession():void{
enqueue("resetSession");
}
public function setDetectFlash(_arg1:Boolean):void{
enqueue("setDetectFlash", _arg1);
}
public function clear():void{
_ar = [];
}
public function getDetectTitle():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectTitle' method for the moment."));
};
return (false);
}
public function setCampNameKey(_arg1:String):void{
enqueue("setCampNameKey", _arg1);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
enqueue("addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
public function createEventTracker(_arg1:String):EventTracker{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'createEventTracker' method for the moment."));
};
return (null);
}
public function setVar(_arg1:String):void{
enqueue("setVar", _arg1);
}
public function clearIgnoredOrganic():void{
enqueue("clearIgnoredOrganic");
}
public function setDomainName(_arg1:String):void{
enqueue("setDomainName", _arg1);
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'addTrans' method for the moment."));
};
return (null);
}
public function setCampSourceKey(_arg1:String):void{
enqueue("setCampSourceKey", _arg1);
}
public function setCampContentKey(_arg1:String):void{
enqueue("setCampContentKey", _arg1);
}
public function clearIgnoredRef():void{
enqueue("clearIgnoredRef");
}
public function setLocalServerMode():void{
enqueue("setLocalServerMode");
}
public function getLocalGifPath():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getLocalGifPath' method for the moment."));
};
return ("");
}
public function setAllowAnchor(_arg1:Boolean):void{
enqueue("setAllowAnchor", _arg1);
}
public function setLocalGifPath(_arg1:String):void{
enqueue("setLocalGifPath", _arg1);
}
public function getVersion():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getVersion' method for the moment."));
};
return ("");
}
public function setCookiePath(_arg1:String):void{
enqueue("setCookiePath", _arg1);
}
public function setSampleRate(_arg1:Number):void{
enqueue("setSampleRate", _arg1);
}
public function setAllowHash(_arg1:Boolean):void{
enqueue("setAllowHash", _arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
enqueue("addIgnoredOrganic", _arg1);
}
public function setCampNOKey(_arg1:String):void{
enqueue("setCampNOKey", _arg1);
}
public function getServiceMode():ServerOperationMode{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getServiceMode' method for the moment."));
};
return (null);
}
public function setLocalRemoteServerMode():void{
enqueue("setLocalRemoteServerMode");
}
public function cookiePathCopy(_arg1:String):void{
enqueue("cookiePathCopy", _arg1);
}
public function setDetectTitle(_arg1:Boolean):void{
enqueue("setDetectTitle", _arg1);
}
public function getDetectFlash():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectFlash' method for the moment."));
};
return (false);
}
public function setCampaignTrack(_arg1:Boolean):void{
enqueue("setCampaignTrack", _arg1);
}
public function clearOrganic():void{
enqueue("clearOrganic");
}
public function setCampTermKey(_arg1:String):void{
enqueue("setCampTermKey", _arg1);
}
public function addIgnoredRef(_arg1:String):void{
enqueue("addIgnoredRef", _arg1);
}
public function setCampMediumKey(_arg1:String):void{
enqueue("setCampMediumKey", _arg1);
}
public function setSessionTimeout(_arg1:int):void{
enqueue("setSessionTimeout", _arg1);
}
public function setRemoteServerMode():void{
enqueue("setRemoteServerMode");
}
public function element(){
return (_ar[0]);
}
public function getAccount():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getAccount' method for the moment."));
};
return ("");
}
}
}//package com.google.analytics.core
Section 96
//TrackerMode (com.google.analytics.core.TrackerMode)
package com.google.analytics.core {
public class TrackerMode {
public static const BRIDGE:String = "Bridge";
public static const AS3:String = "AS3";
}
}//package com.google.analytics.core
Section 97
//Utils (com.google.analytics.core.Utils)
package com.google.analytics.core {
public class Utils {
public static function trim(_arg1:String, _arg2:Boolean=false):String{
var _local3:Array;
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:int;
if (_arg1 == ""){
return ("");
};
_local3 = [" ", "\n", "\r", "\t"];
_local4 = _arg1;
if (_arg2){
_local5 = 0;
while ((((_local5 < _local3.length)) && ((_local4.indexOf(_local3[_local5]) > -1)))) {
_local4 = _local4.split(_local3[_local5]).join("");
_local5++;
};
} else {
_local6 = 0;
while ((((_local6 < _local4.length)) && ((_local3.indexOf(_local4.charAt(_local6)) > -1)))) {
_local6++;
};
_local4 = _local4.substr(_local6);
_local7 = (_local4.length - 1);
while ((((_local7 >= 0)) && ((_local3.indexOf(_local4.charAt(_local7)) > -1)))) {
_local7--;
};
_local4 = _local4.substring(0, (_local7 + 1));
};
return (_local4);
}
public static function generateHash(_arg1:String):int{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
_local2 = 1;
_local3 = 0;
if (((!((_arg1 == null))) && (!((_arg1 == ""))))){
_local2 = 0;
_local4 = (_arg1.length - 1);
while (_local4 >= 0) {
_local5 = _arg1.charCodeAt(_local4);
_local2 = ((((_local2 << 6) & 268435455) + _local5) + (_local5 << 14));
_local3 = (_local2 & 266338304);
if (_local3 != 0){
_local2 = (_local2 ^ (_local3 >> 21));
};
_local4--;
};
};
return (_local2);
}
public static function generate32bitRandom():int{
return (Math.round((Math.random() * 2147483647)));
}
public static function validateAccount(_arg1:String):Boolean{
var _local2:RegExp;
_local2 = /^UA-[0-9]*-[0-9]*$/;
return (_local2.test(_arg1));
}
}
}//package com.google.analytics.core
Section 98
//Cookie (com.google.analytics.data.Cookie)
package com.google.analytics.data {
public interface Cookie {
function toURLString():String;
function toSharedObject():Object;
function set creation(_arg1:Date):void;
function fromSharedObject(_arg1:Object):void;
function get expiration():Date;
function isExpired():Boolean;
function set expiration(_arg1:Date):void;
function get creation():Date;
}
}//package com.google.analytics.data
Section 99
//UTMA (com.google.analytics.data.UTMA)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMA extends UTMCookie {
private var _domainHash:Number;
private var _firstTime:Number;
private var _currentTime:Number;
private var _sessionId:Number;
private var _lastTime:Number;
private var _sessionCount:Number;
public function UTMA(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:Number=NaN){
super("utma", "__utma", ["domainHash", "sessionId", "firstTime", "lastTime", "currentTime", "sessionCount"], (Timespan.twoyears * 1000));
this.domainHash = _arg1;
this.sessionId = _arg2;
this.firstTime = _arg3;
this.lastTime = _arg4;
this.currentTime = _arg5;
this.sessionCount = _arg6;
}
public function get lastTime():Number{
return (_lastTime);
}
public function set lastTime(_arg1:Number):void{
_lastTime = _arg1;
update();
}
public function get sessionCount():Number{
return (_sessionCount);
}
public function get firstTime():Number{
return (_firstTime);
}
public function set sessionId(_arg1:Number):void{
_sessionId = _arg1;
update();
}
public function set sessionCount(_arg1:Number):void{
_sessionCount = _arg1;
update();
}
public function set firstTime(_arg1:Number):void{
_firstTime = _arg1;
update();
}
public function set currentTime(_arg1:Number):void{
_currentTime = _arg1;
update();
}
public function get sessionId():Number{
return (_sessionId);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function get currentTime():Number{
return (_currentTime);
}
public function get domainHash():Number{
return (_domainHash);
}
}
}//package com.google.analytics.data
Section 100
//UTMB (com.google.analytics.data.UTMB)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMB extends UTMCookie {
private var _lastTime:Number;
private var _domainHash:Number;
private var _trackCount:Number;
private var _token:Number;
public static var defaultTimespan:Number = Timespan.thirtyminutes;
public function UTMB(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN){
super("utmb", "__utmb", ["domainHash", "trackCount", "token", "lastTime"], (defaultTimespan * 1000));
this.domainHash = _arg1;
this.trackCount = _arg2;
this.token = _arg3;
this.lastTime = _arg4;
}
public function get token():Number{
return (_token);
}
public function set trackCount(_arg1:Number):void{
_trackCount = _arg1;
update();
}
public function set lastTime(_arg1:Number):void{
_lastTime = _arg1;
update();
}
public function get lastTime():Number{
return (_lastTime);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
public function set token(_arg1:Number):void{
_token = _arg1;
update();
}
public function get trackCount():Number{
return (_trackCount);
}
}
}//package com.google.analytics.data
Section 101
//UTMC (com.google.analytics.data.UTMC)
package com.google.analytics.data {
public class UTMC extends UTMCookie {
private var _domainHash:Number;
public function UTMC(_arg1:Number=NaN){
super("utmc", "__utmc", ["domainHash"]);
this.domainHash = _arg1;
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
}
}//package com.google.analytics.data
Section 102
//UTMCookie (com.google.analytics.data.UTMCookie)
package com.google.analytics.data {
import com.google.analytics.core.*;
public class UTMCookie implements Cookie {
protected var inURL:String;
protected var name:String;
private var _creation:Date;
private var _expiration:Date;
public var proxy:Buffer;
private var _timespan:Number;
protected var fields:Array;
public function UTMCookie(_arg1:String, _arg2:String, _arg3:Array, _arg4:Number=0){
this.name = _arg1;
this.inURL = _arg2;
this.fields = _arg3;
_timestamp(_arg4);
}
public function isEmpty():Boolean{
var _local1:int;
var _local2:String;
var _local3:int;
_local1 = 0;
_local3 = 0;
while (_local3 < fields.length) {
_local2 = fields[_local3];
if ((((this[_local2] is Number)) && (isNaN(this[_local2])))){
_local1++;
} else {
if ((((this[_local2] is String)) && ((this[_local2] == "")))){
_local1++;
};
};
_local3++;
};
if (_local1 == fields.length){
return (true);
};
return (false);
}
protected function update():void{
resetTimestamp();
if (proxy){
proxy.update(name, toSharedObject());
};
}
public function fromSharedObject(_arg1:Object):void{
var _local2:String;
var _local3:int;
var _local4:int;
_local3 = fields.length;
_local4 = 0;
while (_local4 < _local3) {
_local2 = fields[_local4];
if (_arg1[_local2]){
this[_local2] = _arg1[_local2];
};
_local4++;
};
if (_arg1.creation){
this.creation = _arg1.creation;
};
if (_arg1.expiration){
this.expiration = _arg1.expiration;
};
}
private function _timestamp(_arg1:Number):void{
creation = new Date();
_timespan = _arg1;
if (_arg1 > 0){
expiration = new Date((creation.valueOf() + _arg1));
};
}
public function isExpired():Boolean{
var _local1:Date;
var _local2:Number;
_local1 = new Date();
_local2 = (expiration.valueOf() - _local1.valueOf());
if (_local2 <= 0){
return (true);
};
return (false);
}
public function set expiration(_arg1:Date):void{
_expiration = _arg1;
}
public function get creation():Date{
return (_creation);
}
public function reset():void{
var _local1:String;
var _local2:int;
_local2 = 0;
while (_local2 < fields.length) {
_local1 = fields[_local2];
if ((this[_local1] is Number)){
this[_local1] = NaN;
} else {
if ((this[_local1] is String)){
this[_local1] = "";
};
};
_local2++;
};
resetTimestamp();
update();
}
public function valueOf():String{
var _local1:Array;
var _local2:String;
var _local3:*;
var _local4:int;
_local1 = [];
_local4 = 0;
while (_local4 < fields.length) {
_local2 = fields[_local4];
_local3 = this[_local2];
if ((_local3 is String)){
if (_local3 == ""){
_local3 = "-";
_local1.push(_local3);
} else {
_local1.push(_local3);
};
} else {
if ((_local3 is Number)){
if (_local3 == 0){
_local1.push(_local3);
} else {
if (isNaN(_local3)){
_local3 = "-";
_local1.push(_local3);
} else {
_local1.push(_local3);
};
};
};
};
_local4++;
};
return (("" + _local1.join(".")));
}
public function resetTimestamp(_arg1:Number=NaN):void{
if (!isNaN(_arg1)){
_timespan = _arg1;
};
_creation = null;
_expiration = null;
_timestamp(_timespan);
}
public function get expiration():Date{
if (_expiration){
return (_expiration);
};
return (new Date((new Date().valueOf() + 1000)));
}
public function toURLString():String{
return (((inURL + "=") + valueOf()));
}
public function toSharedObject():Object{
var _local1:Object;
var _local2:String;
var _local3:*;
var _local4:int;
_local1 = {};
_local4 = 0;
for (;_local4 < fields.length;_local4++) {
_local2 = fields[_local4];
_local3 = this[_local2];
if ((_local3 is String)){
_local1[_local2] = _local3;
} else {
if (_local3 == 0){
_local1[_local2] = _local3;
} else {
if (isNaN(_local3)){
continue;
} else {
_local1[_local2] = _local3;
};
};
};
};
_local1.creation = creation;
_local1.expiration = expiration;
return (_local1);
}
public function toString(_arg1:Boolean=false):String{
var _local2:Array;
var _local3:String;
var _local4:*;
var _local5:int;
var _local6:int;
var _local7:String;
_local2 = [];
_local5 = fields.length;
_local6 = 0;
for (;_local6 < _local5;_local6++) {
_local3 = fields[_local6];
_local4 = this[_local3];
if ((_local4 is String)){
_local2.push((((_local3 + ": \"") + _local4) + "\""));
} else {
if (_local4 == 0){
_local2.push(((_local3 + ": ") + _local4));
} else {
if (isNaN(_local4)){
continue;
} else {
_local2.push(((_local3 + ": ") + _local4));
};
};
};
};
_local7 = (((name.toUpperCase() + " {") + _local2.join(", ")) + "}");
if (_arg1){
_local7 = (_local7 + (((" creation:" + creation) + ", expiration:") + expiration));
};
return (_local7);
}
public function set creation(_arg1:Date):void{
_creation = _arg1;
}
}
}//package com.google.analytics.data
Section 103
//UTMK (com.google.analytics.data.UTMK)
package com.google.analytics.data {
public class UTMK extends UTMCookie {
private var _hash:Number;
public function UTMK(_arg1:Number=NaN){
super("utmk", "__utmk", ["hash"]);
this.hash = _arg1;
}
public function get hash():Number{
return (_hash);
}
public function set hash(_arg1:Number):void{
_hash = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 104
//UTMV (com.google.analytics.data.UTMV)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMV extends UTMCookie {
private var _domainHash:Number;
private var _value:String;
public function UTMV(_arg1:Number=NaN, _arg2:String=""){
super("utmv", "__utmv", ["domainHash", "value"], (Timespan.twoyears * 1000));
this.domainHash = _arg1;
this.value = _arg2;
}
public function get value():String{
return (_value);
}
public function set value(_arg1:String):void{
_value = _arg1;
update();
}
override public function toURLString():String{
return (((inURL + "=") + encodeURI(valueOf())));
}
public function get domainHash():Number{
return (_domainHash);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 105
//UTMZ (com.google.analytics.data.UTMZ)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMZ extends UTMCookie {
private var _domainHash:Number;
private var _campaignSessions:Number;
private var _campaignTracking:String;
private var _responseCount:Number;
private var _campaignCreation:Number;
public static var defaultTimespan:Number = Timespan.sixmonths;
public function UTMZ(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:String=""){
super("utmz", "__utmz", ["domainHash", "campaignCreation", "campaignSessions", "responseCount", "campaignTracking"], (defaultTimespan * 1000));
this.domainHash = _arg1;
this.campaignCreation = _arg2;
this.campaignSessions = _arg3;
this.responseCount = _arg4;
this.campaignTracking = _arg5;
}
public function get campaignCreation():Number{
return (_campaignCreation);
}
public function set campaignSessions(_arg1:Number):void{
_campaignSessions = _arg1;
update();
}
public function set responseCount(_arg1:Number):void{
_responseCount = _arg1;
update();
}
public function set campaignCreation(_arg1:Number):void{
_campaignCreation = _arg1;
update();
}
public function get campaignSessions():Number{
return (_campaignSessions);
}
public function get responseCount():Number{
return (_responseCount);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function get campaignTracking():String{
return (_campaignTracking);
}
public function set campaignTracking(_arg1:String):void{
_campaignTracking = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
}
}//package com.google.analytics.data
Section 106
//X10 (com.google.analytics.data.X10)
package com.google.analytics.data {
public class X10 {
private var _delimEnd:String;// = ")"
private var _delimSet:String;// = "*"
private var _escapeChar:String;// = "'"
private var _delimBegin:String;// = "("
private var _delimNumValue:String;// = "!"
private var _key:String;// = "k"
private var _set:Array;
private var _projectData:Object;
private var _hasData:int;
private var _escapeCharMap:Object;
private var _minimum:int;
private var _value:String;// = "v"
public function X10(){
_key = "k";
_value = "v";
_set = [_key, _value];
_delimBegin = "(";
_delimEnd = ")";
_delimSet = "*";
_delimNumValue = "!";
_escapeChar = "'";
super();
_projectData = {};
_escapeCharMap = {};
_escapeCharMap[_escapeChar] = "'0";
_escapeCharMap[_delimEnd] = "'1";
_escapeCharMap[_delimSet] = "'2";
_escapeCharMap[_delimNumValue] = "'3";
_minimum = 1;
}
private function _clearInternal(_arg1:Number, _arg2:String):void{
var _local3:Boolean;
var _local4:int;
var _local5:int;
if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){
_projectData[_arg1][_arg2] = undefined;
_local3 = true;
_local5 = _set.length;
_local4 = 0;
while (_local4 < _local5) {
if (_projectData[_arg1][_set[_local4]] != undefined){
_local3 = false;
break;
};
_local4++;
};
if (_local3){
_projectData[_arg1] = undefined;
_hasData = (_hasData - 1);
};
};
}
public function hasData():Boolean{
return ((_hasData > 0));
}
private function _setInternal(_arg1:Number, _arg2:String, _arg3:Number, _arg4:String):void{
if (!hasProject(_arg1)){
_projectData[_arg1] = {};
};
if (_projectData[_arg1][_arg2] == undefined){
_projectData[_arg1][_arg2] = [];
};
_projectData[_arg1][_arg2][_arg3] = _arg4;
_hasData = (_hasData + 1);
}
public function hasProject(_arg1:Number):Boolean{
return (_projectData[_arg1]);
}
public function clearKey(_arg1:Number):void{
_clearInternal(_arg1, _key);
}
private function _renderDataType(_arg1:Array):String{
var _local2:Array;
var _local3:String;
var _local4:int;
_local2 = [];
_local4 = 0;
while (_local4 < _arg1.length) {
if (_arg1[_local4] != undefined){
_local3 = "";
if (((!((_local4 == _minimum))) && ((_arg1[(_local4 - 1)] == undefined)))){
_local3 = (_local3 + _local4.toString());
_local3 = (_local3 + _delimNumValue);
};
_local3 = (_local3 + _escapeExtensibleValue(_arg1[_local4]));
_local2.push(_local3);
};
_local4++;
};
return (((_delimBegin + _local2.join(_delimSet)) + _delimEnd));
}
public function getKey(_arg1:Number, _arg2:Number):String{
return ((_getInternal(_arg1, _key, _arg2) as String));
}
public function clearValue(_arg1:Number):void{
_clearInternal(_arg1, _value);
}
public function renderMergedUrlString(_arg1:X10=null):String{
var _local2:Array;
var _local3:String;
if (!_arg1){
return (renderUrlString());
};
_local2 = [_arg1.renderUrlString()];
for (_local3 in _projectData) {
if (((hasProject(Number(_local3))) && (!(_arg1.hasProject(Number(_local3)))))){
_local2.push((_local3 + _renderProject(_projectData[_local3])));
};
};
return (_local2.join(""));
}
public function setValue(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
if (((((!((Math.round(_arg3) == _arg3))) || (isNaN(_arg3)))) || ((_arg3 == Infinity)))){
return (false);
};
_setInternal(_arg1, _value, _arg2, _arg3.toString());
return (true);
}
public function renderUrlString():String{
var _local1:Array;
var _local2:String;
_local1 = [];
for (_local2 in _projectData) {
if (hasProject(Number(_local2))){
_local1.push((_local2 + _renderProject(_projectData[_local2])));
};
};
return (_local1.join(""));
}
private function _getInternal(_arg1:Number, _arg2:String, _arg3:Number):Object{
if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){
return (_projectData[_arg1][_arg2][_arg3]);
};
return (undefined);
}
public function setKey(_arg1:Number, _arg2:Number, _arg3:String):Boolean{
_setInternal(_arg1, _key, _arg2, _arg3);
return (true);
}
public function getValue(_arg1:Number, _arg2:Number){
var _local3:*;
_local3 = _getInternal(_arg1, _value, _arg2);
if (_local3 == null){
return (null);
};
return (Number(_local3));
}
private function _renderProject(_arg1:Object):String{
var _local2:String;
var _local3:Boolean;
var _local4:int;
var _local5:Array;
var _local6:int;
_local2 = "";
_local3 = false;
_local6 = _set.length;
_local4 = 0;
while (_local4 < _local6) {
_local5 = _arg1[_set[_local4]];
if (_local5){
if (_local3){
_local2 = (_local2 + _set[_local4]);
};
_local2 = (_local2 + _renderDataType(_local5));
_local3 = false;
} else {
_local3 = true;
};
_local4++;
};
return (_local2);
}
private function _escapeExtensibleValue(_arg1:String):String{
var _local2:String;
var _local3:int;
var _local4:String;
var _local5:String;
_local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
_local4 = _arg1.charAt(_local3);
_local5 = _escapeCharMap[_local4];
if (_local5){
_local2 = (_local2 + _local5);
} else {
_local2 = (_local2 + _local4);
};
_local3++;
};
return (_local2);
}
}
}//package com.google.analytics.data
Section 107
//_Style (com.google.analytics.debug._Style)
package com.google.analytics.debug {
import flash.net.*;
import flash.text.*;
public class _Style {
public var borderColor:uint;
public var backgroundColor:uint;
private var _sheet:StyleSheet;
public var roundedCorner:uint;
public var alertColor:uint;
public var infoColor:uint;
public var successColor:uint;
private var _loader:URLLoader;
public var failureColor:uint;
private var _defaultSheet:String;
public var warningColor:uint;
public function _Style(){
_sheet = new StyleSheet();
_loader = new URLLoader();
_init();
}
private function _parseSheet(_arg1:String):void{
_sheet.parseCSS(_arg1);
}
public function get sheet():StyleSheet{
return (_sheet);
}
private function _init():void{
_defaultSheet = "";
_defaultSheet = (_defaultSheet + "a{text-decoration: underline;}\n");
_defaultSheet = (_defaultSheet + ".uiLabel{color: #000000;font-family: Arial;font-size: 12;margin-left: 2;margin-right: 2;}\n");
_defaultSheet = (_defaultSheet + ".uiWarning{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlert{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiInfo{color: #000000;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiSuccess{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiFailure{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlertAction{color: #ffffff;text-align: center;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlertTitle{color: #ffffff;font-family: Arial;font-size: 16;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + "\n");
roundedCorner = 6;
backgroundColor = 0xCCCCCC;
borderColor = 0x555555;
infoColor = 16777113;
alertColor = 0xFFCC00;
warningColor = 0xCC0000;
successColor = 0xFF00;
failureColor = 0xFF0000;
_parseSheet(_defaultSheet);
}
}
}//package com.google.analytics.debug
Section 108
//Alert (com.google.analytics.debug.Alert)
package com.google.analytics.debug {
import flash.events.*;
public class Alert extends Label {
public var actionOnNextLine:Boolean;// = true
public var autoClose:Boolean;// = true
private var _actions:Array;
public function Alert(_arg1:String, _arg2:Array, _arg3:String="uiAlert", _arg4:uint=0, _arg5:Align=null, _arg6:Boolean=false, _arg7:Boolean=true){
var _local8:int;
autoClose = true;
actionOnNextLine = true;
if (_arg4 == 0){
_arg4 = Style.alertColor;
};
if (_arg5 == null){
_arg5 = Align.center;
};
super(_arg1, _arg3, _arg4, _arg5, _arg6);
this.selectable = true;
super.mouseChildren = true;
this.buttonMode = true;
this.mouseEnabled = true;
this.useHandCursor = true;
this.actionOnNextLine = _arg7;
_actions = [];
_local8 = 0;
while (_local8 < _arg2.length) {
_arg2[_local8].container = this;
_actions.push(_arg2[_local8]);
_local8++;
};
}
protected function getAction(_arg1:String):AlertAction{
var _local2:int;
_local2 = 0;
while (_local2 < _actions.length) {
if (_arg1 == _actions[_local2].activator){
return (_actions[_local2]);
};
_local2++;
};
return (null);
}
override protected function layout():void{
super.layout();
_defineActions();
}
protected function spaces(_arg1:int):String{
var _local2:String;
var _local3:String;
var _local4:int;
_local2 = "";
_local3 = " ";
_local4 = 0;
while (_local4 < (_arg1 + 1)) {
_local2 = (_local2 + _local3);
_local4++;
};
return (_local2);
}
override public function onLink(_arg1:TextEvent):void{
var _local2:AlertAction;
if (isValidAction(_arg1.text)){
_local2 = getAction(_arg1.text);
if (_local2){
_local2.execute();
};
};
if (autoClose){
close();
};
}
protected function isValidAction(_arg1:String):Boolean{
var _local2:int;
_local2 = 0;
while (_local2 < _actions.length) {
if (_arg1 == _actions[_local2].activator){
return (true);
};
_local2++;
};
return (false);
}
private function _defineActions():void{
var _local1:String;
var _local2:Array;
var _local3:AlertAction;
var _local4:int;
_local1 = "";
if (actionOnNextLine){
_local1 = (_local1 + "\n");
} else {
_local1 = (_local1 + " |");
};
_local1 = (_local1 + " ");
_local2 = [];
_local4 = 0;
while (_local4 < _actions.length) {
_local3 = _actions[_local4];
_local2.push((((("<a href=\"event:" + _local3.activator) + "\">") + _local3.name) + "</a>"));
_local4++;
};
_local1 = (_local1 + _local2.join(" | "));
appendText(_local1, "uiAlertAction");
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 109
//AlertAction (com.google.analytics.debug.AlertAction)
package com.google.analytics.debug {
public class AlertAction {
public var container:Alert;
private var _callback;
public var name:String;
public var activator:String;
public function AlertAction(_arg1:String, _arg2:String, _arg3){
this.name = _arg1;
this.activator = _arg2;
_callback = _arg3;
}
public function execute():void{
if (_callback){
if ((_callback is Function)){
(_callback as Function)();
} else {
if ((_callback is String)){
var _local1 = container;
_local1[_callback]();
};
};
};
}
}
}//package com.google.analytics.debug
Section 110
//Align (com.google.analytics.debug.Align)
package com.google.analytics.debug {
public class Align {
private var _value:int;
private var _name:String;
public static const bottomRight:Align = new Align(18, "bottomRight");
;
public static const right:Align = new Align(16, "right");
;
public static const left:Align = new Align(32, "left");
;
public static const topRight:Align = new Align(17, "topRight");
;
public static const bottom:Align = new Align(2, "bottom");
;
public static const bottomLeft:Align = new Align(34, "bottomLeft");
;
public static const topLeft:Align = new Align(33, "topLeft");
;
public static const center:Align = new Align(0x0100, "center");
;
public static const none:Align = new Align(0, "none");
;
public static const top:Align = new Align(1, "top");
;
public function Align(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.debug
Section 111
//Background (com.google.analytics.debug.Background)
package com.google.analytics.debug {
import flash.display.*;
public class Background {
public static function drawRounded(_arg1, _arg2:Graphics, _arg3:uint=0, _arg4:uint=0):void{
var _local5:uint;
var _local6:uint;
var _local7:uint;
_local7 = Style.roundedCorner;
if ((((_arg3 > 0)) && ((_arg4 > 0)))){
_local5 = _arg3;
_local6 = _arg4;
} else {
_local5 = _arg1.width;
_local6 = _arg1.height;
};
if (((_arg1.stickToEdge) && (!((_arg1.alignement == Align.none))))){
switch (_arg1.alignement){
case Align.top:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, _local7);
break;
case Align.topLeft:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, 0, _local7);
break;
case Align.topRight:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, 0);
break;
case Align.bottom:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, _local7, 0, 0);
break;
case Align.bottomLeft:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, 0);
break;
case Align.bottomRight:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, 0, 0);
break;
case Align.left:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, _local7);
break;
case Align.right:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, _local7, 0);
break;
case Align.center:
_arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7);
break;
};
} else {
_arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7);
};
}
}
}//package com.google.analytics.debug
Section 112
//Debug (com.google.analytics.debug.Debug)
package com.google.analytics.debug {
import flash.events.*;
import flash.ui.*;
public class Debug extends Label {
private var _lines:Array;
private var _preferredForcedWidth:uint;// = 540
public var maxLines:uint;// = 16
private var _linediff:int;// = 0
public static var count:uint = 0;
public function Debug(_arg1:uint=0, _arg2:Align=null, _arg3:Boolean=false){
_linediff = 0;
_preferredForcedWidth = 540;
maxLines = 16;
if (_arg2 == null){
_arg2 = Align.bottom;
};
super("", "uiLabel", _arg1, _arg2, _arg3);
this.name = ("Debug" + count++);
_lines = [];
selectable = true;
addEventListener(KeyboardEvent.KEY_DOWN, onKey);
}
public function close():void{
dispose();
}
public function writeBold(_arg1:String):void{
write(_arg1, true);
}
override protected function dispose():void{
removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
super.dispose();
}
override public function get forcedWidth():uint{
if (this.parent){
if (UISprite(this.parent).forcedWidth > _preferredForcedWidth){
return (_preferredForcedWidth);
};
return (UISprite(this.parent).forcedWidth);
} else {
};
return (!NULL!);
}
private function onKey(_arg1:KeyboardEvent=null):void{
var _local2:Array;
switch (_arg1.keyCode){
case Keyboard.DOWN:
_local2 = _getLinesToDisplay(1);
break;
case Keyboard.UP:
_local2 = _getLinesToDisplay(-1);
break;
default:
_local2 = null;
};
if (_local2 == null){
return;
};
text = _local2.join("\n");
}
public function write(_arg1:String, _arg2:Boolean=false):void{
var _local3:Array;
var _local4:String;
var _local5:String;
var _local6:int;
var _local7:Array;
if (_arg1.indexOf("") > -1){
_local3 = _arg1.split("\n");
} else {
_local3 = [_arg1];
};
_local4 = "";
_local5 = "";
if (_arg2){
_local4 = "<b>";
_local5 = "</b>";
};
_local6 = 0;
while (_local6 < _local3.length) {
_lines.push(((_local4 + _local3[_local6]) + _local5));
_local6++;
};
_local7 = _getLinesToDisplay();
text = _local7.join("\n");
}
private function _getLinesToDisplay(_arg1:int=0):Array{
var _local2:Array;
var _local3:uint;
var _local4:uint;
if ((_lines.length - 1) > maxLines){
if ((_linediff <= 0)){
_linediff = (_linediff + _arg1);
} else {
if ((((_linediff > 0)) && ((_arg1 < 0)))){
_linediff = (_linediff + _arg1);
};
};
_local3 = ((_lines.length - maxLines) + _linediff);
_local4 = (_local3 + maxLines);
_local2 = _lines.slice(_local3, _local4);
} else {
_local2 = _lines;
};
return (_local2);
}
}
}//package com.google.analytics.debug
Section 113
//DebugConfiguration (com.google.analytics.debug.DebugConfiguration)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
public class DebugConfiguration {
public var showHideKey:Number;
private var _mode:VisualDebugMode;
private var _verbose:Boolean;// = false
public var destroyKey:Number;
public var GIFRequests:Boolean;// = false
public var infoTimeout:Number;// = 1000
public var showInfos:Boolean;// = true
public var minimizedOnStart:Boolean;// = false
private var _active:Boolean;// = false
public var traceOutput:Boolean;// = false
public var layout:ILayout;
public var warningTimeout:Number;// = 1500
public var javascript:Boolean;// = false
public var showWarnings:Boolean;// = true
private var _visualInitialized:Boolean;// = false
public function DebugConfiguration(){
_active = false;
_verbose = false;
_visualInitialized = false;
_mode = VisualDebugMode.basic;
traceOutput = false;
javascript = false;
GIFRequests = false;
showInfos = true;
infoTimeout = 1000;
showWarnings = true;
warningTimeout = 1500;
minimizedOnStart = false;
showHideKey = Keyboard.SPACE;
destroyKey = Keyboard.BACKSPACE;
super();
}
public function get verbose():Boolean{
return (_verbose);
}
public function set verbose(_arg1:Boolean):void{
_verbose = _arg1;
}
public function set mode(_arg1):void{
if ((_arg1 is String)){
switch (_arg1){
case "geek":
_arg1 = VisualDebugMode.geek;
break;
case "advanced":
_arg1 = VisualDebugMode.advanced;
break;
case "basic":
default:
_arg1 = VisualDebugMode.basic;
};
};
_mode = _arg1;
}
public function success(_arg1:String):void{
if (layout){
layout.createSuccessAlert(_arg1);
};
if (traceOutput){
trace((("[+] " + _arg1) + " !!"));
};
}
public function get active():Boolean{
return (_active);
}
private function _initializeVisual():void{
if (layout){
layout.init();
_visualInitialized = true;
};
}
private function _destroyVisual():void{
if (((layout) && (_visualInitialized))){
layout.destroy();
};
}
public function warning(_arg1:String, _arg2:VisualDebugMode=null):void{
if (_filter(_arg2)){
return;
};
if (((layout) && (showWarnings))){
layout.createWarning(_arg1);
};
if (traceOutput){
trace((("## " + _arg1) + " ##"));
};
}
private function _filter(_arg1:VisualDebugMode=null):Boolean{
return (((_arg1) && ((int(_arg1) >= int(this.mode)))));
}
public function failure(_arg1:String):void{
if (layout){
layout.createFailureAlert(_arg1);
};
if (traceOutput){
trace((("[-] " + _arg1) + " !!"));
};
}
public function get mode(){
return (_mode);
}
public function set active(_arg1:Boolean):void{
_active = _arg1;
if (_active){
_initializeVisual();
} else {
_destroyVisual();
};
}
protected function trace(_arg1:String):void{
var _local2:Array;
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:Array;
var _local8:int;
_local2 = [];
_local3 = "";
_local4 = "";
if (this.mode == VisualDebugMode.geek){
_local3 = (getTimer() + " - ");
_local4 = (new Array(_local3.length).join(" ") + " ");
};
if (_arg1.indexOf("\n") > -1){
_local7 = _arg1.split("\n");
_local8 = 0;
while (_local8 < _local7.length) {
if (_local7[_local8] == ""){
} else {
if (_local8 == 0){
_local2.push((_local3 + _local7[_local8]));
} else {
_local2.push((_local4 + _local7[_local8]));
};
};
_local8++;
};
} else {
_local2.push((_local3 + _arg1));
};
_local5 = _local2.length;
_local6 = 0;
while (_local6 < _local5) {
trace(_local2[_local6]);
_local6++;
};
}
public function alert(_arg1:String):void{
if (layout){
layout.createAlert(_arg1);
};
if (traceOutput){
trace((("!! " + _arg1) + " !!"));
};
}
public function info(_arg1:String, _arg2:VisualDebugMode=null):void{
if (_filter(_arg2)){
return;
};
if (((layout) && (showInfos))){
layout.createInfo(_arg1);
};
if (traceOutput){
trace(_arg1);
};
}
public function alertGifRequest(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{
if (layout){
layout.createGIFRequestAlert(_arg1, _arg2, _arg3);
};
if (traceOutput){
trace(((">> " + _arg1) + " <<"));
};
}
}
}//package com.google.analytics.debug
Section 114
//FailureAlert (com.google.analytics.debug.FailureAlert)
package com.google.analytics.debug {
public class FailureAlert extends Alert {
public function FailureAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){
var _local4:Align;
var _local5:Boolean;
var _local6:Boolean;
_local4 = Align.bottomLeft;
_local5 = true;
_local6 = false;
if (_arg1.verbose){
_arg2 = ((("<u><span class=\"uiAlertTitle\">Failure</span>" + spaces(18)) + "</u>\n\n") + _arg2);
_local4 = Align.center;
_local5 = false;
_local6 = true;
};
super(_arg2, _arg3, "uiFailure", Style.failureColor, _local4, _local5, _local6);
}
}
}//package com.google.analytics.debug
Section 115
//GIFRequestAlert (com.google.analytics.debug.GIFRequestAlert)
package com.google.analytics.debug {
public class GIFRequestAlert extends Alert {
public function GIFRequestAlert(_arg1:String, _arg2:Array){
super(_arg1, _arg2);
}
}
}//package com.google.analytics.debug
Section 116
//ILayout (com.google.analytics.debug.ILayout)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.net.*;
import flash.display.*;
public interface ILayout {
function createWarning(_arg1:String):void;
function addToStage(_arg1:DisplayObject):void;
function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void;
function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void;
function createInfo(_arg1:String):void;
function createFailureAlert(_arg1:String):void;
function addToPanel(_arg1:String, _arg2:DisplayObject):void;
function init():void;
function createSuccessAlert(_arg1:String):void;
function createVisualDebug():void;
function createAlert(_arg1:String):void;
function destroy():void;
function bringToFront(_arg1:DisplayObject):void;
function isAvailable():Boolean;
}
}//package com.google.analytics.debug
Section 117
//Info (com.google.analytics.debug.Info)
package com.google.analytics.debug {
import flash.events.*;
import flash.utils.*;
public class Info extends Label {
private var _timer:Timer;
public function Info(_arg1:String="", _arg2:uint=3000){
super(_arg1, "uiInfo", Style.infoColor, Align.top, true);
if (_arg2 > 0){
_timer = new Timer(_arg2, 1);
_timer.start();
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true);
};
}
public function onComplete(_arg1:TimerEvent):void{
close();
}
override public function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "hide":
close();
break;
};
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 118
//Label (com.google.analytics.debug.Label)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class Label extends UISprite {
private var _text:String;
private var _textField:TextField;
private var _color:uint;
protected var selectable:Boolean;
public var stickToEdge:Boolean;
private var _background:Shape;
private var _tag:String;
public static var count:uint = 0;
public function Label(_arg1:String="", _arg2:String="uiLabel", _arg3:uint=0, _arg4:Align=null, _arg5:Boolean=false){
this.name = ("Label" + count++);
selectable = false;
_background = new Shape();
_textField = new TextField();
_text = _arg1;
_tag = _arg2;
if (_arg4 == null){
_arg4 = Align.none;
};
this.alignement = _arg4;
this.stickToEdge = _arg5;
if (_arg3 == 0){
_arg3 = Style.backgroundColor;
};
_color = _arg3;
_textField.addEventListener(TextEvent.LINK, onLink);
}
override protected function dispose():void{
_textField.removeEventListener(TextEvent.LINK, onLink);
super.dispose();
}
private function _draw():void{
var _local1:Graphics;
var _local2:uint;
var _local3:uint;
_local1 = _background.graphics;
_local1.clear();
_local1.beginFill(_color);
_local2 = _textField.width;
_local3 = _textField.height;
if (forcedWidth > 0){
_local2 = forcedWidth;
};
Background.drawRounded(this, _local1, _local2, _local3);
_local1.endFill();
}
override protected function layout():void{
_textField.type = TextFieldType.DYNAMIC;
_textField.autoSize = TextFieldAutoSize.LEFT;
_textField.background = false;
_textField.selectable = selectable;
_textField.multiline = true;
_textField.styleSheet = Style.sheet;
this.text = _text;
addChild(_background);
addChild(_textField);
}
public function get text():String{
return (_textField.text);
}
public function set tag(_arg1:String):void{
_tag = _arg1;
text = "";
}
public function set text(_arg1:String):void{
if (_arg1 == ""){
_arg1 = _text;
};
_textField.htmlText = (((("<span class=\"" + tag) + "\">") + _arg1) + "</span>");
_text = _arg1;
_draw();
resize();
}
public function appendText(_arg1:String, _arg2:String=""):void{
if (_arg1 == ""){
return;
};
if (_arg2 == ""){
_arg2 = tag;
};
_textField.htmlText = (_textField.htmlText + (((("<span class=\"" + _arg2) + "\">") + _arg1) + "</span>"));
_text = (_text + _arg1);
_draw();
resize();
}
public function onLink(_arg1:TextEvent):void{
}
public function get tag():String{
return (_tag);
}
}
}//package com.google.analytics.debug
Section 119
//Layout (com.google.analytics.debug.Layout)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.net.*;
import flash.events.*;
import flash.display.*;
import com.google.analytics.*;
public class Layout implements ILayout {
private var _display:DisplayObject;
private var _infoQueue:Array;
private var _maxCharPerLine:int;// = 85
private var _hasInfo:Boolean;
private var _warningQueue:Array;
private var _hasDebug:Boolean;
private var _hasWarning:Boolean;
private var _mainPanel:Panel;
private var _GRAlertQueue:Array;
private var _debug:DebugConfiguration;
public var visualDebug:Debug;
private var _hasGRAlert:Boolean;
public function Layout(_arg1:DebugConfiguration, _arg2:DisplayObject){
_maxCharPerLine = 85;
super();
_display = _arg2;
_debug = _arg1;
_hasWarning = false;
_hasInfo = false;
_hasDebug = false;
_hasGRAlert = false;
_warningQueue = [];
_infoQueue = [];
_GRAlertQueue = [];
}
private function onKey(_arg1:KeyboardEvent=null):void{
switch (_arg1.keyCode){
case _debug.showHideKey:
_mainPanel.visible = !(_mainPanel.visible);
break;
case _debug.destroyKey:
destroy();
break;
};
}
public function bringToFront(_arg1:DisplayObject):void{
_display.stage.setChildIndex(_arg1, (_display.stage.numChildren - 1));
}
public function createFailureAlert(_arg1:String):void{
var _local2:AlertAction;
var _local3:Alert;
if (_debug.verbose){
_arg1 = _filterMaxChars(_arg1);
_local2 = new AlertAction("Close", "close", "close");
} else {
_local2 = new AlertAction("X", "close", "close");
};
_local3 = new FailureAlert(_debug, _arg1, [_local2]);
addToPanel("analytics", _local3);
if (_hasDebug){
if (_debug.verbose){
_arg1 = _arg1.split("\n").join("");
_arg1 = _filterMaxChars(_arg1, 66);
};
visualDebug.writeBold(_arg1);
};
}
public function init():void{
var _local1:int;
var _local2:uint;
var _local3:uint;
var _local4:Panel;
_local1 = 10;
_local2 = (_display.stage.stageWidth - (_local1 * 2));
_local3 = (_display.stage.stageHeight - (_local1 * 2));
_local4 = new Panel("analytics", _local2, _local3);
_local4.alignement = Align.top;
_local4.stickToEdge = false;
_local4.title = ("Google Analytics v" + GATracker.version);
_mainPanel = _local4;
addToStage(_local4);
bringToFront(_local4);
if (_debug.minimizedOnStart){
_mainPanel.onToggle();
};
createVisualDebug();
_display.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey, false, 0, true);
}
public function addToPanel(_arg1:String, _arg2:DisplayObject):void{
var _local3:DisplayObject;
var _local4:Panel;
_local3 = _display.stage.getChildByName(_arg1);
if (_local3){
_local4 = (_local3 as Panel);
_local4.addData(_arg2);
} else {
trace((("panel \"" + _arg1) + "\" not found"));
};
}
private function _clearInfo(_arg1:Event):void{
_hasInfo = false;
if (_infoQueue.length > 0){
createInfo(_infoQueue.shift());
};
}
private function _filterMaxChars(_arg1:String, _arg2:int=0):String{
var _local3:String;
var _local4:Array;
var _local5:Array;
var _local6:String;
var _local7:int;
_local3 = "\n";
_local4 = [];
_local5 = _arg1.split(_local3);
if (_arg2 == 0){
_arg2 = _maxCharPerLine;
};
_local7 = 0;
while (_local7 < _local5.length) {
_local6 = _local5[_local7];
while (_local6.length > _arg2) {
_local4.push(_local6.substr(0, _arg2));
_local6 = _local6.substring(_arg2);
};
_local4.push(_local6);
_local7++;
};
return (_local4.join(_local3));
}
public function createWarning(_arg1:String):void{
var _local2:Warning;
if (((_hasWarning) || (!(isAvailable())))){
_warningQueue.push(_arg1);
return;
};
_arg1 = _filterMaxChars(_arg1);
_hasWarning = true;
_local2 = new Warning(_arg1, _debug.warningTimeout);
addToPanel("analytics", _local2);
_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearWarning, false, 0, true);
if (_hasDebug){
visualDebug.writeBold(_arg1);
};
}
private function _clearGRAlert(_arg1:Event):void{
_hasGRAlert = false;
if (_GRAlertQueue.length > 0){
createGIFRequestAlert.apply(this, _GRAlertQueue.shift());
};
}
public function createSuccessAlert(_arg1:String):void{
var _local2:AlertAction;
var _local3:Alert;
if (_debug.verbose){
_arg1 = _filterMaxChars(_arg1);
_local2 = new AlertAction("Close", "close", "close");
} else {
_local2 = new AlertAction("X", "close", "close");
};
_local3 = new SuccessAlert(_debug, _arg1, [_local2]);
addToPanel("analytics", _local3);
if (_hasDebug){
if (_debug.verbose){
_arg1 = _arg1.split("\n").join("");
_arg1 = _filterMaxChars(_arg1, 66);
};
visualDebug.writeBold(_arg1);
};
}
public function isAvailable():Boolean{
return (!((_display.stage == null)));
}
public function createAlert(_arg1:String):void{
var _local2:Alert;
_arg1 = _filterMaxChars(_arg1);
_local2 = new Alert(_arg1, [new AlertAction("Close", "close", "close")]);
addToPanel("analytics", _local2);
if (_hasDebug){
visualDebug.writeBold(_arg1);
};
}
public function createInfo(_arg1:String):void{
var _local2:Info;
if (((_hasInfo) || (!(isAvailable())))){
_infoQueue.push(_arg1);
return;
};
_arg1 = _filterMaxChars(_arg1);
_hasInfo = true;
_local2 = new Info(_arg1, _debug.infoTimeout);
addToPanel("analytics", _local2);
_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearInfo, false, 0, true);
if (_hasDebug){
visualDebug.write(_arg1);
};
}
public function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{
var f:Function;
var gra:GIFRequestAlert;
var message = _arg1;
var request = _arg2;
var ref = _arg3;
if (_hasGRAlert){
_GRAlertQueue.push([message, request, ref]);
return;
};
_hasGRAlert = true;
f = function ():void{
ref.sendRequest(request);
};
message = _filterMaxChars(message);
gra = new GIFRequestAlert(message, [new AlertAction("OK", "ok", f), new AlertAction("Cancel", "cancel", "close")]);
addToPanel("analytics", gra);
gra.addEventListener(Event.REMOVED_FROM_STAGE, _clearGRAlert, false, 0, true);
if (_hasDebug){
if (_debug.verbose){
message = message.split("\n").join("");
message = _filterMaxChars(message, 66);
};
visualDebug.write(message);
};
}
public function createVisualDebug():void{
if (!visualDebug){
visualDebug = new Debug();
visualDebug.alignement = Align.bottom;
visualDebug.stickToEdge = true;
addToPanel("analytics", visualDebug);
_hasDebug = true;
};
}
public function addToStage(_arg1:DisplayObject):void{
_display.stage.addChild(_arg1);
}
private function _clearWarning(_arg1:Event):void{
_hasWarning = false;
if (_warningQueue.length > 0){
createWarning(_warningQueue.shift());
};
}
public function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void{
var _local4:Panel;
_local4 = new Panel(_arg1, _arg2, _arg3);
_local4.alignement = Align.center;
_local4.stickToEdge = false;
addToStage(_local4);
bringToFront(_local4);
}
public function destroy():void{
_mainPanel.close();
_debug.layout = null;
}
}
}//package com.google.analytics.debug
Section 120
//Margin (com.google.analytics.debug.Margin)
package com.google.analytics.debug {
public class Margin {
public var bottom:int;
public var top:int;
public var right:int;
public var left:int;
public function Margin(_arg1:int=0, _arg2:int=0, _arg3:int=0, _arg4:int=0){
this.top = _arg1;
this.bottom = _arg2;
this.left = _arg3;
this.right = _arg4;
}
}
}//package com.google.analytics.debug
Section 121
//Panel (com.google.analytics.debug.Panel)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
public class Panel extends UISprite {
protected var baseAlpha:Number;
private var _border:Shape;
private var _name:String;
private var _title:Label;
private var _data:UISprite;
private var _backgroundColor:uint;
private var _colapsed:Boolean;
private var _stickToEdge:Boolean;
private var _background:Shape;
private var _savedW:uint;
private var _mask:Sprite;
private var _savedH:uint;
private var _borderColor:uint;
public function Panel(_arg1:String, _arg2:uint, _arg3:uint, _arg4:uint=0, _arg5:uint=0, _arg6:Number=0.3, _arg7:Align=null, _arg8:Boolean=false){
_name = _arg1;
this.name = _arg1;
this.mouseEnabled = false;
_colapsed = false;
forcedWidth = _arg2;
forcedHeight = _arg3;
this.baseAlpha = _arg6;
_background = new Shape();
_data = new UISprite();
_data.forcedWidth = _arg2;
_data.forcedHeight = _arg3;
_data.mouseEnabled = false;
_title = new Label(_arg1, "uiLabel", 0xFFFFFF, Align.topLeft, _arg8);
_title.buttonMode = true;
_title.margin.top = 0.6;
_title.margin.left = 0.6;
_title.addEventListener(MouseEvent.CLICK, onToggle);
_title.mouseChildren = false;
_border = new Shape();
_mask = new Sprite();
_mask.useHandCursor = false;
_mask.mouseEnabled = false;
_mask.mouseChildren = false;
if (_arg7 == null){
_arg7 = Align.none;
};
this.alignement = _arg7;
this.stickToEdge = _arg8;
if (_arg4 == 0){
_arg4 = Style.backgroundColor;
};
_backgroundColor = _arg4;
if (_arg5 == 0){
_arg5 = Style.borderColor;
};
_borderColor = _arg5;
}
public function set stickToEdge(_arg1:Boolean):void{
_stickToEdge = _arg1;
_title.stickToEdge = _arg1;
}
public function onToggle(_arg1:MouseEvent=null):void{
if (_colapsed){
_data.visible = true;
} else {
_data.visible = false;
};
_colapsed = !(_colapsed);
_update();
resize();
}
override protected function dispose():void{
_title.removeEventListener(MouseEvent.CLICK, onToggle);
super.dispose();
}
private function _draw():void{
var _local1:uint;
var _local2:uint;
var _local3:Graphics;
var _local4:Graphics;
var _local5:Graphics;
var _local6:Graphics;
if (((_savedW) && (_savedH))){
forcedWidth = _savedW;
forcedHeight = _savedH;
};
if (!_colapsed){
_local1 = forcedWidth;
_local2 = forcedHeight;
} else {
_local1 = _title.width;
_local2 = _title.height;
_savedW = forcedWidth;
_savedH = forcedHeight;
forcedWidth = _local1;
forcedHeight = _local2;
};
_local3 = _background.graphics;
_local3.clear();
_local3.beginFill(_backgroundColor);
Background.drawRounded(this, _local3, _local1, _local2);
_local3.endFill();
_local4 = _data.graphics;
_local4.clear();
_local4.beginFill(_backgroundColor, 0);
Background.drawRounded(this, _local4, _local1, _local2);
_local4.endFill();
_local5 = _border.graphics;
_local5.clear();
_local5.lineStyle(0.1, _borderColor);
Background.drawRounded(this, _local5, _local1, _local2);
_local5.endFill();
_local6 = _mask.graphics;
_local6.clear();
_local6.beginFill(_backgroundColor);
Background.drawRounded(this, _local6, (_local1 + 1), (_local2 + 1));
_local6.endFill();
}
override protected function layout():void{
_update();
addChild(_background);
addChild(_data);
addChild(_title);
addChild(_border);
addChild(_mask);
mask = _mask;
}
public function get title():String{
return (_title.text);
}
public function get stickToEdge():Boolean{
return (_stickToEdge);
}
public function set title(_arg1:String):void{
_title.text = _arg1;
}
private function _update():void{
_draw();
if (baseAlpha < 1){
_background.alpha = baseAlpha;
_border.alpha = baseAlpha;
};
}
public function addData(_arg1:DisplayObject):void{
_data.addChild(_arg1);
}
public function close():void{
dispose();
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 122
//Style (com.google.analytics.debug.Style)
package com.google.analytics.debug {
public const Style:_Style = new _Style();
}//package com.google.analytics.debug
Section 123
//SuccessAlert (com.google.analytics.debug.SuccessAlert)
package com.google.analytics.debug {
public class SuccessAlert extends Alert {
public function SuccessAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){
var _local4:Align;
var _local5:Boolean;
var _local6:Boolean;
_local4 = Align.bottomLeft;
_local5 = true;
_local6 = false;
if (_arg1.verbose){
_arg2 = ((("<u><span class=\"uiAlertTitle\">Success</span>" + spaces(18)) + "</u>\n\n") + _arg2);
_local4 = Align.center;
_local5 = false;
_local6 = true;
};
super(_arg2, _arg3, "uiSuccess", Style.successColor, _local4, _local5, _local6);
}
}
}//package com.google.analytics.debug
Section 124
//UISprite (com.google.analytics.debug.UISprite)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
public class UISprite extends Sprite {
private var _forcedHeight:uint;
protected var listenResize:Boolean;
public var alignement:Align;
private var _forcedWidth:uint;
public var margin:Margin;
protected var alignTarget:DisplayObject;
public function UISprite(_arg1:DisplayObject=null){
listenResize = false;
alignement = Align.none;
this.alignTarget = _arg1;
margin = new Margin();
addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
addEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage);
}
protected function dispose():void{
var _local1:DisplayObject;
var _local2:int;
_local2 = 0;
while (_local2 < numChildren) {
_local1 = getChildAt(_local2);
if (_local1){
removeChild(_local1);
};
_local2++;
};
}
protected function layout():void{
}
public function get forcedHeight():uint{
if (_forcedHeight){
return (_forcedHeight);
};
return (height);
}
public function alignTo(_arg1:Align, _arg2:DisplayObject=null):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:UISprite;
if (_arg2 == null){
if ((parent is Stage)){
_arg2 = this.stage;
} else {
_arg2 = parent;
};
};
if (_arg2 == this.stage){
if (this.stage == null){
return;
};
_local3 = this.stage.stageHeight;
_local4 = this.stage.stageWidth;
_local5 = 0;
_local6 = 0;
} else {
_local7 = (_arg2 as UISprite);
if (_local7.forcedHeight){
_local3 = _local7.forcedHeight;
} else {
_local3 = _local7.height;
};
if (_local7.forcedWidth){
_local4 = _local7.forcedWidth;
} else {
_local4 = _local7.width;
};
_local5 = 0;
_local6 = 0;
};
switch (_arg1){
case Align.top:
x = ((_local4 / 2) - (forcedWidth / 2));
y = (_local6 + margin.top);
break;
case Align.bottom:
x = ((_local4 / 2) - (forcedWidth / 2));
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
case Align.left:
x = (_local5 + margin.left);
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.right:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.center:
x = ((_local4 / 2) - (forcedWidth / 2));
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.topLeft:
x = (_local5 + margin.left);
y = (_local6 + margin.top);
break;
case Align.topRight:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = (_local6 + margin.top);
break;
case Align.bottomLeft:
x = (_local5 + margin.left);
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
case Align.bottomRight:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
};
if (((!(listenResize)) && (!((_arg1 == Align.none))))){
_arg2.addEventListener(Event.RESIZE, onResize, false, 0, true);
listenResize = true;
};
this.alignement = _arg1;
this.alignTarget = _arg2;
}
public function get forcedWidth():uint{
if (_forcedWidth){
return (_forcedWidth);
};
return (width);
}
protected function onResize(_arg1:Event):void{
resize();
}
private function _onRemovedFromStage(_arg1:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
removeEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage);
dispose();
}
public function resize():void{
if (alignement != Align.none){
alignTo(alignement, alignTarget);
};
}
private function _onAddedToStage(_arg1:Event):void{
layout();
resize();
}
public function set forcedHeight(_arg1:uint):void{
_forcedHeight = _arg1;
}
public function set forcedWidth(_arg1:uint):void{
_forcedWidth = _arg1;
}
}
}//package com.google.analytics.debug
Section 125
//Warning (com.google.analytics.debug.Warning)
package com.google.analytics.debug {
import flash.events.*;
import flash.utils.*;
public class Warning extends Label {
private var _timer:Timer;
public function Warning(_arg1:String="", _arg2:uint=3000){
super(_arg1, "uiWarning", Style.warningColor, Align.top, false);
margin.top = 32;
if (_arg2 > 0){
_timer = new Timer(_arg2, 1);
_timer.start();
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true);
};
}
public function onComplete(_arg1:TimerEvent):void{
close();
}
override public function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "hide":
close();
break;
};
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 126
//VisualDebugMode (com.google.analytics.debug.VisualDebugMode)
package com.google.analytics.debug {
public class VisualDebugMode {
private var _value:int;
private var _name:String;
public static const advanced:VisualDebugMode = new VisualDebugMode(1, "advanced");
;
public static const geek:VisualDebugMode = new VisualDebugMode(2, "geek");
;
public static const basic:VisualDebugMode = new VisualDebugMode(0, "basic");
;
public function VisualDebugMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.debug
Section 127
//AnalyticsEvent (com.google.analytics.events.AnalyticsEvent)
package com.google.analytics.events {
import flash.events.*;
import com.google.analytics.*;
public class AnalyticsEvent extends Event {
public var tracker:AnalyticsTracker;
public static const READY:String = "ready";
public function AnalyticsEvent(_arg1:String, _arg2:AnalyticsTracker, _arg3:Boolean=false, _arg4:Boolean=false){
super(_arg1, _arg3, _arg4);
this.tracker = _arg2;
}
override public function clone():Event{
return (new AnalyticsEvent(type, tracker, bubbles, cancelable));
}
}
}//package com.google.analytics.events
Section 128
//AdSenseGlobals (com.google.analytics.external.AdSenseGlobals)
package com.google.analytics.external {
import com.google.analytics.debug.*;
public class AdSenseGlobals extends JavascriptProxy {
private var _gaGlobalVerified:Boolean;// = false
public static var gaGlobal_js:XML = <script>
<![CDATA[
function()
{
try
{
gaGlobal
}
catch(e)
{
gaGlobal = {} ;
}
}
]]>
</script>
;
public function AdSenseGlobals(_arg1:DebugConfiguration){
_gaGlobalVerified = false;
super(_arg1);
}
public function set vid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.vid", _arg1);
}
public function get hid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.hid"));
}
public function get dh():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.dh"));
}
public function get gaGlobal():Object{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal"));
}
public function set hid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.hid", _arg1);
}
public function get sid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.sid"));
}
private function _verify():void{
if (!_gaGlobalVerified){
executeBlock(gaGlobal_js);
_gaGlobalVerified = true;
};
}
public function get vid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.vid"));
}
public function set sid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.sid", _arg1);
}
}
}//package com.google.analytics.external
Section 129
//HTMLDOM (com.google.analytics.external.HTMLDOM)
package com.google.analytics.external {
import com.google.analytics.debug.*;
public class HTMLDOM extends JavascriptProxy {
private var _referrer:String;
private var _protocol:String;
private var _host:String;
private var _location:String;
private var _pathname:String;
private var _title:String;
private var _characterSet:String;
private var _search:String;
private var _language:String;
private var _colorDepth:String;
public static var cache_properties_js:XML = <script>
<![CDATA[
function()
{
var obj = {};
obj.host = document.location.host;
obj.language = navigator.language ? navigator.language : navigator.browserLanguage;
obj.characterSet = document.characterSet ? document.characterSet : document.charset;
obj.colorDepth = window.screen.colorDepth;
obj.location = document.location.toString();
obj.pathname = document.location.pathname;
obj.protocol = document.location.protocol;
obj.search = document.location.search;
obj.referrer = document.referrer;
obj.title = document.title;
return obj;
}
]]>
</script>
;
public function HTMLDOM(_arg1:DebugConfiguration){
super(_arg1);
}
public function get search():String{
if (_search){
return (_search);
};
if (!isAvailable()){
return (null);
};
_search = getProperty("document.location.search");
return (_search);
}
public function get location():String{
if (_location){
return (_location);
};
if (!isAvailable()){
return (null);
};
_location = getPropertyString("document.location");
return (_location);
}
public function get pathname():String{
if (_pathname){
return (_pathname);
};
if (!isAvailable()){
return (null);
};
_pathname = getProperty("document.location.pathname");
return (_pathname);
}
public function get referrer():String{
if (_referrer){
return (_referrer);
};
if (!isAvailable()){
return (null);
};
_referrer = getProperty("document.referrer");
return (_referrer);
}
public function get protocol():String{
if (_protocol){
return (_protocol);
};
if (!isAvailable()){
return (null);
};
_protocol = getProperty("document.location.protocol");
return (_protocol);
}
public function cacheProperties():void{
var _local1:Object;
if (!isAvailable()){
return;
};
_local1 = call(cache_properties_js);
if (_local1){
_host = _local1.host;
_language = _local1.language;
_characterSet = _local1.characterSet;
_colorDepth = _local1.colorDepth;
_location = _local1.location;
_pathname = _local1.pathname;
_protocol = _local1.protocol;
_search = _local1.search;
_referrer = _local1.referrer;
_title = _local1.title;
};
}
public function get colorDepth():String{
if (_colorDepth){
return (_colorDepth);
};
if (!isAvailable()){
return (null);
};
_colorDepth = getProperty("window.screen.colorDepth");
return (_colorDepth);
}
public function get title():String{
if (_title){
return (_title);
};
if (!isAvailable()){
return (null);
};
_title = getProperty("document.title");
return (_title);
}
public function get host():String{
if (_host){
return (_host);
};
if (!isAvailable()){
return (null);
};
_host = getProperty("document.location.host");
return (_host);
}
public function get characterSet():String{
var _local1:String;
if (_characterSet){
return (_characterSet);
};
if (!isAvailable()){
return (null);
};
_local1 = getProperty("document.characterSet");
if (_local1 == null){
_local1 = getProperty("document.charset");
};
_characterSet = _local1;
return (_characterSet);
}
public function get language():String{
var _local1:String;
if (_language){
return (_language);
};
if (!isAvailable()){
return (null);
};
_local1 = getProperty("navigator.language");
if (_local1 == null){
_local1 = getProperty("navigator.browserLanguage");
};
_language = _local1;
return (_language);
}
}
}//package com.google.analytics.external
Section 130
//JavascriptProxy (com.google.analytics.external.JavascriptProxy)
package com.google.analytics.external {
import com.google.analytics.debug.*;
import flash.system.*;
import flash.external.*;
public class JavascriptProxy {
private var _notAvailableWarning:Boolean;// = true
private var _debug:DebugConfiguration;
public static var setProperty_js:XML = <script>
<![CDATA[
function( path , value )
{
var paths;
var prop;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
prop = paths.pop() ;
}
else
{
paths = [];
prop = path;
}
var target = window ;
var len = paths.length ;
for( var i = 0 ; i < len ; i++ )
{
target = target[ paths[i] ] ;
}
target[ prop ] = value ;
}
]]>
</script>
;
public static var hasProperty_js:XML = <script>
<![CDATA[
function( path )
{
var paths;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
}
else
{
paths = [path];
}
var target = window ;
var len = paths.length ;
for( var i = 0 ; i < len ; i++ )
{
target = target[ paths[i] ] ;
}
if( target )
{
return true;
}
else
{
return false;
}
}
]]>
</script>
;
public static var setPropertyRef_js:XML = <script>
<![CDATA[
function( path , target )
{
var paths;
var prop;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
prop = paths.pop() ;
}
else
{
paths = [];
prop = path;
}
alert( "paths:"+paths.length+", prop:"+prop );
var targets;
var name;
if( target.indexOf(".") > 0 )
{
targets = target.split(".");
name = targets.pop();
}
else
{
targets = [];
name = target;
}
alert( "targets:"+targets.length+", name:"+name );
var root = window;
var len = paths.length;
for( var i = 0 ; i < len ; i++ )
{
root = root[ paths[i] ] ;
}
var ref = window;
var depth = targets.length;
for( var j = 0 ; j < depth ; j++ )
{
ref = ref[ targets[j] ] ;
}
root[ prop ] = ref[name] ;
}
]]>
</script>
;
public function JavascriptProxy(_arg1:DebugConfiguration){
_notAvailableWarning = true;
super();
_debug = _arg1;
}
public function getProperty(_arg1:String){
return (call((_arg1 + ".valueOf")));
}
public function hasProperty(_arg1:String):Boolean{
return (call(hasProperty_js, _arg1));
}
public function setProperty(_arg1:String, _arg2):void{
call(setProperty_js, _arg1, _arg2);
}
public function executeBlock(_arg1:String):void{
var data = _arg1;
if (isAvailable()){
try {
ExternalInterface.call(data);
} catch(e:SecurityError) {
if (_debug.javascript){
_debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
};
} catch(e:Error) {
if (_debug.javascript){
_debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message));
};
};
};
}
public function getPropertyString(_arg1:String):String{
return (call((_arg1 + ".toString")));
}
public function setPropertyByReference(_arg1:String, _arg2:String):void{
call(setPropertyRef_js, _arg1, _arg2);
}
public function call(_arg1:String, ... _args){
var output:String;
var functionName = _arg1;
var args = _args;
if (isAvailable()){
try {
if (((_debug.javascript) && (_debug.verbose))){
output = "";
output = ("Flash->JS: " + functionName);
output = (output + "( ");
if (args.length > 0){
output = (output + args.join(","));
};
output = (output + " )");
_debug.info(output);
};
args.unshift(functionName);
return (ExternalInterface.call.apply(ExternalInterface, args));
} catch(e:SecurityError) {
if (_debug.javascript){
_debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
};
} catch(e:Error) {
if (_debug.javascript){
_debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message));
};
};
};
return (null);
}
public function isAvailable():Boolean{
var _local1:Boolean;
_local1 = ExternalInterface.available;
if (((_local1) && ((Capabilities.playerType == "External")))){
_local1 = false;
};
if (((((!(_local1)) && (_debug.javascript))) && (_notAvailableWarning))){
_debug.warning("ExternalInterface is not available.");
_notAvailableWarning = false;
};
return (_local1);
}
}
}//package com.google.analytics.external
Section 131
//Environment (com.google.analytics.utils.Environment)
package com.google.analytics.utils {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.external.*;
import flash.system.*;
public class Environment {
private var _dom:HTMLDOM;
private var _appName:String;
private var _debug:DebugConfiguration;
private var _appVersion:Version;
private var _url:String;
private var _protocol:Protocols;
private var _userAgent:UserAgent;
public function Environment(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:DebugConfiguration=null, _arg5:HTMLDOM=null){
var _local6:Version;
super();
if (_arg2 == ""){
if (isAIR()){
_arg2 = "AIR";
} else {
_arg2 = "Flash";
};
};
if (_arg3 == ""){
_local6 = flashVersion;
} else {
_local6 = Version.fromString(_arg3);
};
_url = _arg1;
_appName = _arg2;
_appVersion = _local6;
_debug = _arg4;
_dom = _arg5;
}
public function isAIR():Boolean{
return ((((playerType == "Desktop")) && ((Security.sandboxType.toString() == "application"))));
}
public function get playerType():String{
return (Capabilities.playerType);
}
public function get locationSearch():String{
var _local1:String;
_local1 = _dom.search;
if (_local1){
return (_local1);
};
return ("");
}
public function get protocol():Protocols{
if (!_protocol){
_findProtocol();
};
return (_protocol);
}
public function get flashVersion():Version{
var _local1:Version;
_local1 = Version.fromString(Capabilities.version.split(" ")[1], ",");
return (_local1);
}
public function get screenWidth():Number{
return (Capabilities.screenResolutionX);
}
public function get languageEncoding():String{
var _local1:String;
if (System.useCodePage){
_local1 = _dom.characterSet;
if (_local1){
return (_local1);
};
return ("-");
};
return ("UTF-8");
}
public function get appName():String{
return (_appName);
}
public function get screenColorDepth():String{
var _local1:String;
var _local2:String;
switch (Capabilities.screenColor){
case "bw":
_local1 = "1";
break;
case "gray":
_local1 = "2";
break;
case "color":
default:
_local1 = "24";
};
_local2 = _dom.colorDepth;
if (_local2){
_local1 = _local2;
};
return (_local1);
}
private function _findProtocol():void{
var _local1:Protocols;
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:String;
_local1 = Protocols.none;
if (_url != ""){
_local4 = _url.toLowerCase();
_local5 = _local4.substr(0, 5);
switch (_local5){
case "file:":
_local1 = Protocols.file;
break;
case "http:":
_local1 = Protocols.HTTP;
break;
case "https":
if (_local4.charAt(5) == ":"){
_local1 = Protocols.HTTPS;
};
break;
default:
_protocol = Protocols.none;
};
};
_local2 = _dom.protocol;
_local3 = (_local1.toString() + ":").toLowerCase();
if (((((_local2) && (!((_local2 == _local3))))) && (_debug))){
_debug.warning(((("Protocol mismatch: SWF=" + _local3) + ", DOM=") + _local2));
};
_protocol = _local1;
}
public function get locationSWFPath():String{
return (_url);
}
public function get platform():String{
var _local1:String;
_local1 = Capabilities.manufacturer;
return (_local1.split("Adobe ")[1]);
}
public function get operatingSystem():String{
return (Capabilities.os);
}
public function set appName(_arg1:String):void{
_appName = _arg1;
userAgent.applicationProduct = _arg1;
}
public function get userAgent():UserAgent{
if (!_userAgent){
_userAgent = new UserAgent(this, appName, appVersion.toString(4));
};
return (_userAgent);
}
ga_internal function set url(_arg1:String):void{
_url = _arg1;
}
public function get referrer():String{
var _local1:String;
_local1 = _dom.referrer;
if (_local1){
return (_local1);
};
if (protocol == Protocols.file){
return ("localhost");
};
return ("");
}
public function isInHTML():Boolean{
return ((Capabilities.playerType == "PlugIn"));
}
public function get language():String{
var _local1:String;
var _local2:String;
_local1 = _dom.language;
_local2 = Capabilities.language;
if (_local1){
if ((((_local1.length > _local2.length)) && ((_local1.substr(0, _local2.length) == _local2)))){
_local2 = _local1;
};
};
return (_local2);
}
public function get domainName():String{
var _local1:String;
var _local2:String;
var _local3:int;
if ((((protocol == Protocols.HTTP)) || ((protocol == Protocols.HTTPS)))){
_local1 = _url.toLowerCase();
if (protocol == Protocols.HTTP){
_local2 = _local1.split("http://").join("");
} else {
if (protocol == Protocols.HTTPS){
_local2 = _local1.split("https://").join("");
};
};
_local3 = _local2.indexOf("/");
if (_local3 > -1){
_local2 = _local2.substring(0, _local3);
};
return (_local2);
};
if (protocol == Protocols.file){
return ("localhost");
};
return ("");
}
public function set userAgent(_arg1:UserAgent):void{
_userAgent = _arg1;
}
public function set appVersion(_arg1:Version):void{
_appVersion = _arg1;
userAgent.applicationVersion = _arg1.toString(4);
}
public function get screenHeight():Number{
return (Capabilities.screenResolutionY);
}
public function get locationPath():String{
var _local1:String;
_local1 = _dom.pathname;
if (_local1){
return (_local1);
};
return ("");
}
public function get documentTitle():String{
var _local1:String;
_local1 = _dom.title;
if (_local1){
return (_local1);
};
return ("");
}
public function get appVersion():Version{
return (_appVersion);
}
}
}//package com.google.analytics.utils
Section 132
//Protocols (com.google.analytics.utils.Protocols)
package com.google.analytics.utils {
public class Protocols {
private var _value:int;
private var _name:String;
public static const none:Protocols = new Protocols(0, "none");
;
public static const HTTPS:Protocols = new Protocols(3, "HTTPS");
;
public static const file:Protocols = new Protocols(1, "file");
;
public static const HTTP:Protocols = new Protocols(2, "HTTP");
;
public function Protocols(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.utils
Section 133
//Timespan (com.google.analytics.utils.Timespan)
package com.google.analytics.utils {
public class Timespan {
public static var sixmonths:Number = 15768000;
public static var twoyears:Number = 63072000;
public static var thirtyminutes:Number = 1800;
}
}//package com.google.analytics.utils
Section 134
//URL (com.google.analytics.utils.URL)
package com.google.analytics.utils {
public class URL {
private var _url:String;
public function URL(_arg1:String=""){
_url = _arg1.toLowerCase();
}
public function get domain():String{
var _local1:Array;
if (((!((hostName == ""))) && ((hostName.indexOf(".") > -1)))){
_local1 = hostName.split(".");
switch (_local1.length){
case 2:
return (hostName);
case 3:
if (_local1[1] == "co"){
return (hostName);
};
_local1.shift();
return (_local1.join("."));
case 4:
_local1.shift();
return (_local1.join("."));
};
};
return ("");
}
public function get path():String{
var _local1:String;
_local1 = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf(hostName) == 0){
_local1 = _local1.substr(hostName.length);
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[0];
};
if (_local1.charAt(0) != "/"){
_local1 = ("/" + _local1);
};
return (_local1);
}
public function get search():String{
var _local1:String;
_local1 = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf(hostName) == 0){
_local1 = _local1.substr(hostName.length);
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[1];
} else {
_local1 = "";
};
return (_local1);
}
public function get subDomain():String{
if (((!((domain == ""))) && (!((domain == hostName))))){
return (hostName.split(("." + domain)).join(""));
};
return ("");
}
public function get protocol():Protocols{
var _local1:String;
_local1 = _url.split("://")[0];
switch (_local1){
case "file":
return (Protocols.file);
case "http":
return (Protocols.HTTP);
case "https":
return (Protocols.HTTPS);
default:
return (Protocols.none);
};
}
public function get hostName():String{
var _local1:String;
_local1 = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf("/") > -1){
_local1 = _local1.split("/")[0];
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[0];
};
if ((((protocol == Protocols.file)) || ((protocol == Protocols.none)))){
return ("");
};
return (_local1);
}
}
}//package com.google.analytics.utils
Section 135
//UserAgent (com.google.analytics.utils.UserAgent)
package com.google.analytics.utils {
import com.google.analytics.core.*;
import flash.system.*;
public class UserAgent {
private var _version:Version;
private var _localInfo:Environment;
private var _applicationProduct:String;
public static var minimal:Boolean = false;
public function UserAgent(_arg1:Environment, _arg2:String="", _arg3:String=""){
_localInfo = _arg1;
applicationProduct = _arg2;
_version = Version.fromString(_arg3);
}
public function get tamarinProductToken():String{
if (UserAgent.minimal){
return ("");
};
if (System.vmVersion){
return (("Tamarin/" + Utils.trim(System.vmVersion, true)));
};
return ("");
}
public function set applicationProduct(_arg1:String):void{
_applicationProduct = _arg1;
}
public function get applicationVersion():String{
return (_version.toString(2));
}
public function get applicationProductToken():String{
var _local1:String;
_local1 = applicationProduct;
if (applicationVersion != ""){
_local1 = (_local1 + ("/" + applicationVersion));
};
return (_local1);
}
public function get vendorProductToken():String{
var _local1:String;
_local1 = "";
if (_localInfo.isAIR()){
_local1 = (_local1 + "AIR");
} else {
_local1 = (_local1 + "FlashPlayer");
};
_local1 = (_local1 + "/");
_local1 = (_local1 + _version.toString(3));
return (_local1);
}
public function toString():String{
var _local1:String;
_local1 = "";
_local1 = (_local1 + applicationProductToken);
if (applicationComment != ""){
_local1 = (_local1 + (" " + applicationComment));
};
if (tamarinProductToken != ""){
_local1 = (_local1 + (" " + tamarinProductToken));
};
if (vendorProductToken != ""){
_local1 = (_local1 + (" " + vendorProductToken));
};
return (_local1);
}
public function get applicationComment():String{
var _local1:Array;
_local1 = [];
_local1.push(_localInfo.platform);
_local1.push(_localInfo.playerType);
if (!UserAgent.minimal){
_local1.push(_localInfo.operatingSystem);
_local1.push(_localInfo.language);
};
if (Capabilities.isDebugger){
_local1.push("DEBUG");
};
if (_local1.length > 0){
return ((("(" + _local1.join("; ")) + ")"));
};
return ("");
}
public function set applicationVersion(_arg1:String):void{
_version = Version.fromString(_arg1);
}
public function get applicationProduct():String{
return (_applicationProduct);
}
}
}//package com.google.analytics.utils
Section 136
//Variables (com.google.analytics.utils.Variables)
package com.google.analytics.utils {
import flash.net.*;
public dynamic class Variables {
public var post:Array;
public var URIencode:Boolean;
public var pre:Array;
public var sort:Boolean;// = true
public function Variables(_arg1:String=null, _arg2:Array=null, _arg3:Array=null){
pre = [];
post = [];
sort = true;
super();
if (_arg1){
decode(_arg1);
};
if (_arg2){
this.pre = _arg2;
};
if (_arg3){
this.post = _arg3;
};
}
private function _join(_arg1:Variables):void{
var _local2:String;
if (!_arg1){
return;
};
for (_local2 in _arg1) {
this[_local2] = _arg1[_local2];
};
}
public function join(... _args):void{
var _local2:int;
var _local3:int;
_local2 = _args.length;
_local3 = 0;
while (_local3 < _local2) {
if (!(_args[_local3] is Variables)){
} else {
_join(_args[_local3]);
};
_local3++;
};
}
public function toString():String{
var _local1:Array;
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:String;
var _local8:String;
_local1 = [];
for (_local3 in this) {
_local2 = this[_local3];
if (URIencode){
_local2 = encodeURI(_local2);
};
_local1.push(((_local3 + "=") + _local2));
};
if (sort){
_local1.sort();
};
if (pre.length > 0){
pre.reverse();
_local5 = 0;
while (_local5 < pre.length) {
_local7 = pre[_local5];
_local6 = 0;
while (_local6 < _local1.length) {
_local4 = _local1[_local6];
if (_local4.indexOf(_local7) == 0){
_local1.unshift(_local1.splice(_local6, 1)[0]);
};
_local6++;
};
_local5++;
};
pre.reverse();
};
if (post.length > 0){
_local5 = 0;
while (_local5 < post.length) {
_local8 = post[_local5];
_local6 = 0;
while (_local6 < _local1.length) {
_local4 = _local1[_local6];
if (_local4.indexOf(_local8) == 0){
_local1.push(_local1.splice(_local6, 1)[0]);
};
_local6++;
};
_local5++;
};
};
return (_local1.join("&"));
}
public function decode(_arg1:String):void{
var _local2:Array;
var _local3:String;
var _local4:String;
var _local5:String;
var _local6:Array;
var _local7:int;
if (_arg1 == ""){
return;
};
if (_arg1.indexOf("&") > -1){
_local2 = _arg1.split("&");
} else {
_local2 = [_arg1];
};
_local7 = 0;
while (_local7 < _local2.length) {
_local3 = _local2[_local7];
if (_local3.indexOf("=") > -1){
_local6 = _local3.split("=");
_local4 = _local6[0];
_local5 = decodeURI(_local6[1]);
this[_local4] = _local5;
};
_local7++;
};
}
public function toURLVariables():URLVariables{
var _local1:URLVariables;
var _local2:String;
_local1 = new URLVariables();
for (_local2 in this) {
_local1[_local2] = this[_local2];
};
return (_local1);
}
}
}//package com.google.analytics.utils
Section 137
//Version (com.google.analytics.utils.Version)
package com.google.analytics.utils {
public class Version {
private var _maxBuild:uint;// = 0xFF
private var _maxMinor:uint;// = 15
private var _maxMajor:uint;// = 15
private var _revision:uint;
private var _separator:String;// = "."
private var _maxRevision:uint;// = 0xFFFF
private var _build:uint;
private var _minor:uint;
private var _major:uint;
public function Version(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0){
var _local5:Version;
_maxMajor = 15;
_maxMinor = 15;
_maxBuild = 0xFF;
_maxRevision = 0xFFFF;
_separator = ".";
super();
if ((((((((_arg1 > _maxMajor)) && ((_arg2 == 0)))) && ((_arg3 == 0)))) && ((_arg4 == 0)))){
_local5 = Version.fromNumber(_arg1);
_arg1 = _local5.major;
_arg2 = _local5.minor;
_arg3 = _local5.build;
_arg4 = _local5.revision;
};
this.major = _arg1;
this.minor = _arg2;
this.build = _arg3;
this.revision = _arg4;
}
public function toString(_arg1:int=0):String{
var _local2:Array;
if ((((_arg1 <= 0)) || ((_arg1 > 4)))){
_arg1 = getFields();
};
switch (_arg1){
case 1:
_local2 = [major];
break;
case 2:
_local2 = [major, minor];
break;
case 3:
_local2 = [major, minor, build];
break;
case 4:
default:
_local2 = [major, minor, build, revision];
};
return (_local2.join(_separator));
}
public function get revision():uint{
return (_revision);
}
public function set build(_arg1:uint):void{
_build = Math.min(_arg1, _maxBuild);
}
public function set minor(_arg1:uint):void{
_minor = Math.min(_arg1, _maxMinor);
}
public function get build():uint{
return (_build);
}
public function set major(_arg1:uint):void{
_major = Math.min(_arg1, _maxMajor);
}
public function get minor():uint{
return (_minor);
}
public function valueOf():uint{
return (((((major << 28) | (minor << 24)) | (build << 16)) | revision));
}
public function get major():uint{
return (_major);
}
public function set revision(_arg1:uint):void{
_revision = Math.min(_arg1, _maxRevision);
}
private function getFields():int{
var _local1:int;
_local1 = 4;
if (revision == 0){
_local1--;
};
if ((((_local1 == 3)) && ((build == 0)))){
_local1--;
};
if ((((_local1 == 2)) && ((minor == 0)))){
_local1--;
};
return (_local1);
}
public function equals(_arg1):Boolean{
if (!(_arg1 is Version)){
return (false);
};
if ((((((((_arg1.major == major)) && ((_arg1.minor == minor)))) && ((_arg1.build == build)))) && ((_arg1.revision == revision)))){
return (true);
};
return (false);
}
public static function fromString(_arg1:String="", _arg2:String="."):Version{
var _local3:Version;
var _local4:Array;
_local3 = new (Version);
if ((((_arg1 == "")) || ((_arg1 == null)))){
return (_local3);
};
if (_arg1.indexOf(_arg2) > -1){
_local4 = _arg1.split(_arg2);
_local3.major = parseInt(_local4[0]);
_local3.minor = parseInt(_local4[1]);
_local3.build = parseInt(_local4[2]);
_local3.revision = parseInt(_local4[3]);
} else {
_local3.major = parseInt(_arg1);
};
return (_local3);
}
public static function fromNumber(_arg1:Number=0):Version{
var _local2:Version;
_local2 = new (Version);
if (((((((((((isNaN(_arg1)) || ((_arg1 == 0)))) || ((_arg1 < 0)))) || ((_arg1 == Number.MAX_VALUE)))) || ((_arg1 == Number.POSITIVE_INFINITY)))) || ((_arg1 == Number.NEGATIVE_INFINITY)))){
return (_local2);
};
_local2.major = (_arg1 >>> 28);
_local2.minor = ((_arg1 & 251658240) >>> 24);
_local2.build = ((_arg1 & 0xFF0000) >>> 16);
_local2.revision = (_arg1 & 0xFFFF);
return (_local2);
}
}
}//package com.google.analytics.utils
Section 138
//Bridge (com.google.analytics.v4.Bridge)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.external.*;
public class Bridge implements GoogleAnalyticsAPI {
private var _debug:DebugConfiguration;
private var _proxy:JavascriptProxy;
private var _jsContainer:String;// = "_GATracker"
private var _hasGATracker:Boolean;// = false
private var _account:String;
private static var _linkTrackingObject_js:XML = <script>
<![CDATA[
function( container , target )
{
var targets ;
var name ;
if( target.indexOf(".") > 0 )
{
targets = target.split(".");
name = targets.pop();
}
else
{
targets = [];
name = target;
}
var ref = window;
var depth = targets.length;
for( var j = 0 ; j < depth ; j++ )
{
ref = ref[ targets[j] ] ;
}
window[container][target] = ref[name] ;
}
]]>
</script>
;
private static var _createTrackingObject_js:XML = <script>
<![CDATA[
function( acct )
{
_GATracker[acct] = _gat._getTracker(acct);
}
]]>
</script>
;
private static var _injectTrackingObject_js:XML = <script>
<![CDATA[
function()
{
try
{
_GATracker
}
catch(e)
{
_GATracker = {};
}
}
]]>
</script>
;
private static var _checkGAJS_js:XML = <script>
<![CDATA[
function()
{
if( _gat && _gat._getTracker )
{
return true;
}
return false;
}
]]>
</script>
;
private static var _checkValidTrackingObject_js:XML = <script>
<![CDATA[
function(acct)
{
if( _GATracker[acct] && (_GATracker[acct]._getAccount) )
{
return true ;
}
else
{
return false;
}
}
]]>
</script>
;
public function Bridge(_arg1:String, _arg2:DebugConfiguration, _arg3:JavascriptProxy){
var _local4:String;
var _local5:String;
var _local6:String;
_hasGATracker = false;
_jsContainer = "_GATracker";
super();
_account = _arg1;
_debug = _arg2;
_proxy = _arg3;
if (!_checkGAJS()){
_local4 = "";
_local4 = (_local4 + "ga.js not found, be sure to check if\n");
_local4 = (_local4 + "<script src=\"http://www.google-analytics.com/ga.js\"></script>\n");
_local4 = (_local4 + "is included in the HTML.");
_debug.warning(_local4);
throw (new Error(_local4));
};
if (!_hasGATracker){
if (((_debug.javascript) && (_debug.verbose))){
_local5 = "";
_local5 = (_local5 + "The Google Analytics tracking code was not found on the container page\n");
_local5 = (_local5 + "we create it");
_debug.info(_local5, VisualDebugMode.advanced);
};
_injectTrackingObject();
};
if (Utils.validateAccount(_arg1)){
_createTrackingObject(_arg1);
} else {
if (_checkTrackingObject(_arg1)){
_linkTrackingObject(_arg1);
} else {
_local6 = "";
_local6 = (_local6 + (("JS Object \"" + _arg1) + "\" doesn't exist in DOM\n"));
_local6 = (_local6 + "Bridge object not created.");
_debug.warning(_local6);
throw (new Error(_local6));
};
};
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_debug.info((((("link( " + _arg1) + ", ") + _arg2) + " )"));
_call("_link", _arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )"));
_call("_addOrganic", _arg1);
}
public function setAllowLinker(_arg1:Boolean):void{
_debug.info((("setAllowLinker( " + _arg1) + " )"));
_call("_setAllowLinker", _arg1);
}
private function _linkTrackingObject(_arg1:String):void{
_proxy.call(_linkTrackingObject_js, _jsContainer, _arg1);
}
public function setClientInfo(_arg1:Boolean):void{
_debug.info((("setClientInfo( " + _arg1) + " )"));
_call("_setClientInfo", _arg1);
}
public function trackTrans():void{
_debug.info("trackTrans()");
_call("_trackTrans");
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
var _local5:int;
_local5 = 2;
if (((_arg3) && (!((_arg3 == ""))))){
_local5 = 3;
};
if ((((_local5 == 3)) && (!(isNaN(_arg4))))){
_local5 = 4;
};
switch (_local5){
case 4:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2, _arg3, _arg4));
case 3:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2, _arg3));
case 2:
default:
_debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2));
};
}
public function trackPageview(_arg1:String=""):void{
_debug.info((("trackPageview( " + _arg1) + " )"));
_call("_trackPageview", _arg1);
}
public function setCookieTimeout(_arg1:int):void{
_debug.info((("setCookieTimeout( " + _arg1) + " )"));
_call("_setCookieTimeout", _arg1);
}
private function _checkValidTrackingObject(_arg1:String):Boolean{
return (_proxy.call(_checkValidTrackingObject_js, _arg1));
}
private function _checkGAJS():Boolean{
return (_proxy.call(_checkGAJS_js));
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_debug.warning((((("linkByPost( " + _arg1) + ", ") + _arg2) + " ) not implemented"));
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_call("_getClientInfo"));
}
private function _call(_arg1:String, ... _args){
_args.unshift(((((("window." + _jsContainer) + "[\"") + _account) + "\"].") + _arg1));
return (_proxy.call.apply(_proxy, _args));
}
public function hasGAJS():Boolean{
return (_checkGAJS());
}
private function _checkTrackingObject(_arg1:String):Boolean{
var _local2:Boolean;
var _local3:Boolean;
_local2 = _proxy.hasProperty(_arg1);
_local3 = _proxy.hasProperty((_arg1 + "._getAccount"));
return (((_local2) && (_local3)));
}
public function resetSession():void{
_debug.warning("resetSession() not implemented");
}
public function getDetectTitle():Boolean{
_debug.info("getDetectTitle()");
return (_call("_getDetectTitle"));
}
public function setDetectFlash(_arg1:Boolean):void{
_debug.info((("setDetectFlash( " + _arg1) + " )"));
_call("_setDetectFlash", _arg1);
}
public function setCampNameKey(_arg1:String):void{
_debug.info((("setCampNameKey( " + _arg1) + " )"));
_call("_setCampNameKey", _arg1);
}
public function createEventTracker(_arg1:String):EventTracker{
_debug.info((("createEventTracker( " + _arg1) + " )"));
return (new EventTracker(_arg1, this));
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_debug.info((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " )"));
_call("_addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
public function clearIgnoredOrganic():void{
_debug.info("clearIgnoredOrganic()");
_call("_clearIgnoreOrganic");
}
public function setVar(_arg1:String):void{
_debug.info((("setVar( " + _arg1) + " )"));
_call("_setVar", _arg1);
}
public function setDomainName(_arg1:String):void{
_debug.info((("setDomainName( " + _arg1) + " )"));
_call("_setDomainName", _arg1);
}
public function hasTrackingAccount(_arg1:String):Boolean{
if (Utils.validateAccount(_arg1)){
return (_checkValidTrackingObject(_arg1));
};
return (_checkTrackingObject(_arg1));
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
_debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " )"));
_call("_addTrans", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
return (null);
}
public function setCampSourceKey(_arg1:String):void{
_debug.info((("setCampSourceKey( " + _arg1) + " )"));
_call("_setCampSourceKey", _arg1);
}
public function setCampContentKey(_arg1:String):void{
_debug.info((("setCampContentKey( " + _arg1) + " )"));
_call("_setCampContentKey", _arg1);
}
public function clearIgnoredRef():void{
_debug.info("clearIgnoredRef()");
_call("_clearIgnoreRef");
}
public function setLocalServerMode():void{
_debug.info("setLocalServerMode()");
_call("_setLocalServerMode");
}
public function getLocalGifPath():String{
_debug.info("getLocalGifPath()");
return (_call("_getLocalGifPath"));
}
public function setAllowAnchor(_arg1:Boolean):void{
_debug.info((("setAllowAnchor( " + _arg1) + " )"));
_call("_setAllowAnchor", _arg1);
}
public function setLocalGifPath(_arg1:String):void{
_debug.info((("setLocalGifPath( " + _arg1) + " )"));
_call("_setLocalGifPath", _arg1);
}
public function getVersion():String{
_debug.info("getVersion()");
return (_call("_getVersion"));
}
private function _injectTrackingObject():void{
_proxy.executeBlock(_injectTrackingObject_js);
_hasGATracker = true;
}
public function setCookiePath(_arg1:String):void{
_debug.info((("setCookiePath( " + _arg1) + " )"));
_call("_setCookiePath", _arg1);
}
public function setSampleRate(_arg1:Number):void{
_debug.info((("setSampleRate( " + _arg1) + " )"));
_call("_setSampleRate", _arg1);
}
public function setAllowHash(_arg1:Boolean):void{
_debug.info((("setAllowHash( " + _arg1) + " )"));
_call("_setAllowHash", _arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
_debug.info((("addIgnoredOrganic( " + _arg1) + " )"));
_call("_addIgnoredOrganic", _arg1);
}
public function setCampNOKey(_arg1:String):void{
_debug.info((("setCampNOKey( " + _arg1) + " )"));
_call("_setCampNOKey", _arg1);
}
public function cookiePathCopy(_arg1:String):void{
_debug.info((("cookiePathCopy( " + _arg1) + " )"));
_call("_cookiePathCopy", _arg1);
}
public function setLocalRemoteServerMode():void{
_debug.info("setLocalRemoteServerMode()");
_call("_setLocalRemoteServerMode");
}
public function getServiceMode():ServerOperationMode{
_debug.info("getServiceMode()");
return (_call("_getServiceMode"));
}
public function setDetectTitle(_arg1:Boolean):void{
_debug.info((("setDetectTitle( " + _arg1) + " )"));
_call("_setDetectTitle", _arg1);
}
public function setCampTermKey(_arg1:String):void{
_debug.info((("setCampTermKey( " + _arg1) + " )"));
_call("_setCampTermKey", _arg1);
}
private function _createTrackingObject(_arg1:String):void{
_proxy.call(_createTrackingObject_js, _arg1);
}
public function getDetectFlash():Boolean{
_debug.info("getDetectFlash()");
return (_call("_getDetectFlash"));
}
public function setCampaignTrack(_arg1:Boolean):void{
_debug.info((("setCampaignTrack( " + _arg1) + " )"));
_call("_setCampaignTrack", _arg1);
}
public function clearOrganic():void{
_debug.info("clearOrganic()");
_call("_clearOrganic");
}
public function addIgnoredRef(_arg1:String):void{
_debug.info((("addIgnoredRef( " + _arg1) + " )"));
_call("_addIgnoredRef", _arg1);
}
public function setCampMediumKey(_arg1:String):void{
_debug.info((("setCampMediumKey( " + _arg1) + " )"));
_call("_setCampMediumKey", _arg1);
}
public function setSessionTimeout(_arg1:int):void{
_debug.info((("setSessionTimeout( " + _arg1) + " )"));
_call("_setSessionTimeout", _arg1);
}
public function setRemoteServerMode():void{
_debug.info("setRemoteServerMode()");
_call("_setRemoteServerMode");
}
public function getAccount():String{
_debug.info("getAccount()");
return (_call("_getAccount"));
}
}
}//package com.google.analytics.v4
Section 139
//Configuration (com.google.analytics.v4.Configuration)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
import com.google.analytics.campaign.*;
public class Configuration {
public var serverMode:ServerOperationMode;
public var detectFlash:Boolean;// = true
public var allowLocalTracking:Boolean;// = true
public var secureRemoteGIFpath:String;// = "https://ssl.google-analytics.com/__utm.gif"
public var hasSiteOverlay:Boolean;// = false
private var _version:String;// = "4.3as"
public var allowDomainHash:Boolean;// = true
public var detectClientInfo:Boolean;// = true
public var idleLoop:Number;// = 30
public var isTrackOutboundSubdomains:Boolean;// = false
public var cookiePath:String;// = "/"
public var transactionFieldDelim:String;// = "|"
private var _organic:Organic;
private var _cookieName:String;// = "analytics"
public var campaignKey:CampaignKey;
public var google:String;// = "google"
public var googleCsePath:String;// = "cse"
public var bucketCapacity:Number;// = 10
private var _sampleRate:Number;// = 1
public var remoteGIFpath:String;// = "http://www.google-analytics.com/__utm.gif"
public var googleSearchParam:String;// = "q"
public var allowLinker:Boolean;// = false
public var maxOutboundLinkExamined:Number;// = 1000
private var _debug:DebugConfiguration;
private var _trackingLimitPerSession:int;// = 500
private var _domain:Domain;
public var allowAnchor:Boolean;// = false
public var tokenCliff:int;// = 10
public var sessionTimeout:Number;
public var idleTimeout:Number;// = 60
public var campaignTracking:Boolean;// = true
public var domainName:String;// = ""
public var detectTitle:Boolean;// = true
public var tokenRate:Number;// = 0.2
public var conversionTimeout:Number;
public var localGIFpath:String;// = "/__utm.gif"
public function Configuration(_arg1:DebugConfiguration=null){
_version = "4.3as";
_sampleRate = 1;
_trackingLimitPerSession = 500;
_organic = new Organic();
googleCsePath = "cse";
googleSearchParam = "q";
google = "google";
_cookieName = "analytics";
allowDomainHash = true;
allowAnchor = false;
allowLinker = false;
hasSiteOverlay = false;
tokenRate = 0.2;
conversionTimeout = Timespan.sixmonths;
sessionTimeout = Timespan.thirtyminutes;
idleLoop = 30;
idleTimeout = 60;
maxOutboundLinkExamined = 1000;
tokenCliff = 10;
bucketCapacity = 10;
detectClientInfo = true;
detectFlash = true;
detectTitle = true;
campaignKey = new CampaignKey();
campaignTracking = true;
isTrackOutboundSubdomains = false;
serverMode = ServerOperationMode.remote;
localGIFpath = "/__utm.gif";
remoteGIFpath = "http://www.google-analytics.com/__utm.gif";
secureRemoteGIFpath = "https://ssl.google-analytics.com/__utm.gif";
cookiePath = "/";
transactionFieldDelim = "|";
domainName = "";
allowLocalTracking = true;
super();
_debug = _arg1;
_domain = new Domain(DomainNameMode.auto, "", _debug);
serverMode = ServerOperationMode.remote;
_initOrganicSources();
}
public function get organic():Organic{
return (_organic);
}
public function get trackingLimitPerSession():int{
return (_trackingLimitPerSession);
}
private function _initOrganicSources():void{
addOrganicSource(google, googleSearchParam);
addOrganicSource("yahoo", "p");
addOrganicSource("msn", "q");
addOrganicSource("aol", "query");
addOrganicSource("aol", "encquery");
addOrganicSource("lycos", "query");
addOrganicSource("ask", "q");
addOrganicSource("altavista", "q");
addOrganicSource("netscape", "query");
addOrganicSource("cnn", "query");
addOrganicSource("looksmart", "qt");
addOrganicSource("about", "terms");
addOrganicSource("mamma", "query");
addOrganicSource("alltheweb", "q");
addOrganicSource("gigablast", "q");
addOrganicSource("voila", "rdata");
addOrganicSource("virgilio", "qs");
addOrganicSource("live", "q");
addOrganicSource("baidu", "wd");
addOrganicSource("alice", "qs");
addOrganicSource("yandex", "text");
addOrganicSource("najdi", "q");
addOrganicSource("aol", "q");
addOrganicSource("club-internet", "q");
addOrganicSource("mama", "query");
addOrganicSource("seznam", "q");
addOrganicSource("search", "q");
addOrganicSource("wp", "szukaj");
addOrganicSource("onet", "qt");
addOrganicSource("netsprint", "q");
addOrganicSource("google.interia", "q");
addOrganicSource("szukacz", "q");
addOrganicSource("yam", "k");
addOrganicSource("pchome", "q");
addOrganicSource("kvasir", "searchExpr");
addOrganicSource("sesam", "q");
addOrganicSource("ozu", "q");
addOrganicSource("terra", "query");
addOrganicSource("nostrum", "query");
addOrganicSource("mynet", "q");
addOrganicSource("ekolay", "q");
addOrganicSource("search.ilse", "search_for");
}
public function get sampleRate():Number{
return (_sampleRate);
}
public function get cookieName():String{
return (_cookieName);
}
public function addOrganicSource(_arg1:String, _arg2:String):void{
var engine = _arg1;
var keyword = _arg2;
try {
_organic.addSource(engine, keyword);
} catch(e:Error) {
if (((_debug) && (_debug.active))){
_debug.warning(e.message);
};
};
}
public function get domain():Domain{
return (_domain);
}
public function set sampleRate(_arg1:Number):void{
if (_arg1 <= 0){
_arg1 = 0.1;
};
if (_arg1 > 1){
_arg1 = 1;
};
_arg1 = Number(_arg1.toFixed(2));
_sampleRate = _arg1;
}
public function get version():String{
return (_version);
}
}
}//package com.google.analytics.v4
Section 140
//GoogleAnalyticsAPI (com.google.analytics.v4.GoogleAnalyticsAPI)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
public interface GoogleAnalyticsAPI {
function getServiceMode():ServerOperationMode;
function setLocalRemoteServerMode():void;
function setCampSourceKey(_arg1:String):void;
function setCampContentKey(_arg1:String):void;
function addOrganic(_arg1:String, _arg2:String):void;
function setDetectFlash(_arg1:Boolean):void;
function resetSession():void;
function setCampTermKey(_arg1:String):void;
function setCampNameKey(_arg1:String):void;
function addIgnoredOrganic(_arg1:String):void;
function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void;
function setAllowLinker(_arg1:Boolean):void;
function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object;
function getDetectFlash():Boolean;
function setCampaignTrack(_arg1:Boolean):void;
function createEventTracker(_arg1:String):EventTracker;
function setCookieTimeout(_arg1:int):void;
function setAllowAnchor(_arg1:Boolean):void;
function trackTrans():void;
function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean;
function trackPageview(_arg1:String=""):void;
function setLocalGifPath(_arg1:String):void;
function getVersion():String;
function getLocalGifPath():String;
function setVar(_arg1:String):void;
function clearIgnoredOrganic():void;
function setCampMediumKey(_arg1:String):void;
function addIgnoredRef(_arg1:String):void;
function setClientInfo(_arg1:Boolean):void;
function setCookiePath(_arg1:String):void;
function setSampleRate(_arg1:Number):void;
function setSessionTimeout(_arg1:int):void;
function setRemoteServerMode():void;
function clearIgnoredRef():void;
function linkByPost(_arg1:Object, _arg2:Boolean=false):void;
function setLocalServerMode():void;
function setDetectTitle(_arg1:Boolean):void;
function setAllowHash(_arg1:Boolean):void;
function clearOrganic():void;
function getAccount():String;
function setDomainName(_arg1:String):void;
function link(_arg1:String, _arg2:Boolean=false):void;
function setCampNOKey(_arg1:String):void;
function getClientInfo():Boolean;
function cookiePathCopy(_arg1:String):void;
function getDetectTitle():Boolean;
}
}//package com.google.analytics.v4
Section 141
//Tracker (com.google.analytics.v4.Tracker)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
import com.google.analytics.data.*;
import com.google.analytics.external.*;
import com.google.analytics.campaign.*;
public class Tracker implements GoogleAnalyticsAPI {
private const EVENT_TRACKER_LABEL_KEY_NUM:int = 3;
private const EVENT_TRACKER_VALUE_VALUE_NUM:int = 1;
private const EVENT_TRACKER_PROJECT_ID:int = 5;
private const EVENT_TRACKER_OBJECT_NAME_KEY_NUM:int = 1;
private const EVENT_TRACKER_TYPE_KEY_NUM:int = 2;
private var _adSense:AdSenseGlobals;
private var _eventTracker:X10;
private var _noSessionInformation:Boolean;// = false
private var _browserInfo:BrowserInfo;
private var _debug:DebugConfiguration;
private var _isNewVisitor:Boolean;// = false
private var _buffer:Buffer;
private var _config:Configuration;
private var _x10Module:X10;
private var _campaign:CampaignManager;
private var _formatedReferrer:String;
private var _timeStamp:Number;
private var _info:Environment;
private var _domainHash:Number;
private var _campaignInfo:CampaignInfo;
private var _gifRequest:GIFRequest;
private var _hasInitData:Boolean;// = false
private var _account:String;
public function Tracker(_arg1:String, _arg2:Configuration, _arg3:DebugConfiguration, _arg4:Environment, _arg5:Buffer, _arg6:GIFRequest, _arg7:AdSenseGlobals){
var _local8:String;
_hasInitData = false;
_isNewVisitor = false;
_noSessionInformation = false;
super();
_account = _arg1;
_config = _arg2;
_debug = _arg3;
_info = _arg4;
_buffer = _arg5;
_gifRequest = _arg6;
_adSense = _arg7;
if (!Utils.validateAccount(_arg1)){
_local8 = (("Account \"" + _arg1) + "\" is not valid.");
_debug.warning(_local8);
throw (new Error(_local8));
};
_initData();
}
private function _doTracking():Boolean{
if (((((!((_info.protocol == Protocols.file))) && (!((_info.protocol == Protocols.none))))) && (_isNotGoogleSearch()))){
return (true);
};
if (_config.allowLocalTracking){
return (true);
};
return (false);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )"));
_config.organic.addSource(_arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
_config.allowLinker = _arg1;
_debug.info((("setAllowLinker( " + _config.allowLinker) + " )"));
}
public function trackPageview(_arg1:String=""):void{
_debug.info((("trackPageview( " + _arg1) + " )"));
if (_doTracking()){
_initData();
_trackMetrics(_arg1);
_noSessionInformation = false;
} else {
_debug.warning((("trackPageview( " + _arg1) + " ) failed"));
};
}
public function setCookieTimeout(_arg1:int):void{
_config.conversionTimeout = _arg1;
_debug.info((("setCookieTimeout( " + _config.conversionTimeout) + " )"));
}
public function trackTrans():void{
_debug.warning("trackTrans() not implemented");
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
var _local5:Boolean;
var _local6:int;
_local5 = true;
_local6 = 2;
if (((!((_arg1 == ""))) && (!((_arg2 == ""))))){
_eventTracker.clearKey(EVENT_TRACKER_PROJECT_ID);
_eventTracker.clearValue(EVENT_TRACKER_PROJECT_ID);
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_OBJECT_NAME_KEY_NUM, _arg1);
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_TYPE_KEY_NUM, _arg2);
if (((_arg3) && (!((_arg3 == ""))))){
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_LABEL_KEY_NUM, _arg3);
_local6 = 3;
if (!isNaN(_arg4)){
_local5 = _eventTracker.setValue(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_VALUE_VALUE_NUM, _arg4);
_local6 = 4;
};
};
if (_local5){
_debug.info(((("valid event tracking call\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek);
_sendXEvent(_eventTracker);
};
} else {
_debug.warning(((("event tracking call is not valid, failed!\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek);
_local5 = false;
};
switch (_local6){
case 4:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )"));
break;
case 3:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )"));
break;
case 2:
default:
_debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )"));
};
return (_local5);
}
public function setClientInfo(_arg1:Boolean):void{
_config.detectClientInfo = _arg1;
_debug.info((("setClientInfo( " + _config.detectClientInfo) + " )"));
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_debug.warning((("linkByPost( " + [_arg1, _arg2].join(", ")) + " ) not implemented"));
}
private function _initData():void{
var _local1:String;
var _local2:String;
if (!_hasInitData){
_updateDomainName();
_domainHash = _getDomainHash();
_timeStamp = Math.round((new Date().getTime() / 1000));
if (_debug.verbose){
_local1 = "";
_local1 = (_local1 + "_initData 0");
_local1 = (_local1 + ("\ndomain name: " + _config.domainName));
_local1 = (_local1 + ("\ndomain hash: " + _domainHash));
_local1 = (_local1 + (((("\ntimestamp: " + _timeStamp) + " (") + new Date((_timeStamp * 1000))) + ")"));
_debug.info(_local1, VisualDebugMode.geek);
};
};
if (_doTracking()){
_handleCookie();
};
if (!_hasInitData){
if (_doTracking()){
_formatedReferrer = _formatReferrer();
_browserInfo = new BrowserInfo(_config, _info);
_debug.info(("browserInfo: " + _browserInfo.toURLString()), VisualDebugMode.advanced);
if (_config.campaignTracking){
_campaign = new CampaignManager(_config, _debug, _buffer, _domainHash, _formatedReferrer, _timeStamp);
_campaignInfo = _campaign.getCampaignInformation(_info.locationSearch, _noSessionInformation);
_debug.info(("campaignInfo: " + _campaignInfo.toURLString()), VisualDebugMode.advanced);
};
};
_x10Module = new X10();
_eventTracker = new X10();
_hasInitData = true;
};
if (_config.hasSiteOverlay){
_debug.warning("Site Overlay is not supported");
};
if (_debug.verbose){
_local2 = "";
_local2 = (_local2 + "_initData (misc)");
_local2 = (_local2 + ("\nflash version: " + _info.flashVersion.toString(4)));
_local2 = (_local2 + ("\nprotocol: " + _info.protocol));
_local2 = (_local2 + (("\ndefault domain name (auto): \"" + _info.domainName) + "\""));
_local2 = (_local2 + ("\nlanguage: " + _info.language));
_local2 = (_local2 + ("\ndomain hash: " + _getDomainHash()));
_local2 = (_local2 + ("\nuser-agent: " + _info.userAgent));
_debug.info(_local2, VisualDebugMode.geek);
};
}
public function getDetectTitle():Boolean{
_debug.info("getDetectTitle()");
return (_config.detectTitle);
}
public function resetSession():void{
_debug.info("resetSession()");
_buffer.resetCurrentSession();
}
private function _sendXEvent(_arg1:X10=null):void{
var _local2:Variables;
var _local3:EventInfo;
var _local4:Variables;
var _local5:Variables;
_initData();
if (_takeSample()){
_local2 = new Variables();
_local2.URIencode = true;
_local3 = new EventInfo(true, _x10Module, _arg1);
_local4 = _local3.toVariables();
_local5 = _renderMetricsSearchVariables();
_local2.join(_local4, _local5);
_gifRequest.send(_account, _local2, false, true);
};
}
public function setDetectFlash(_arg1:Boolean):void{
_config.detectFlash = _arg1;
_debug.info((("setDetectFlash( " + _config.detectFlash) + " )"));
}
public function setCampNameKey(_arg1:String):void{
var _local2:String;
_config.campaignKey.UCCN = _arg1;
_local2 = (("setCampNameKey( " + _config.campaignKey.UCCN) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCCN]"));
} else {
_debug.info(_local2);
};
}
private function _formatReferrer():String{
var _local1:String;
var _local2:String;
var _local3:URL;
var _local4:URL;
_local1 = _info.referrer;
if ((((_local1 == "")) || ((_local1 == "localhost")))){
_local1 = "-";
} else {
_local2 = _info.domainName;
_local3 = new URL(_local1);
_local4 = new URL(("http://" + _local2));
if (_local3.hostName == _local2){
return ("-");
};
if (_local4.domain == _local3.domain){
if (_local4.subDomain != _local3.subDomain){
_local1 = "0";
};
};
if ((((_local1.charAt(0) == "[")) && (_local1.charAt((_local1.length - 1))))){
_local1 = "-";
};
};
_debug.info(("formated referrer: " + _local1), VisualDebugMode.advanced);
return (_local1);
}
private function _visitCode():Number{
if (_debug.verbose){
_debug.info(("visitCode: " + _buffer.utma.sessionId), VisualDebugMode.geek);
};
return (_buffer.utma.sessionId);
}
public function createEventTracker(_arg1:String):EventTracker{
_debug.info((("createEventTracker( " + _arg1) + " )"));
return (new EventTracker(_arg1, this));
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_debug.warning((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " ) not implemented"));
}
public function clearIgnoredOrganic():void{
_debug.info("clearIgnoredOrganic()");
_config.organic.clearIgnoredKeywords();
}
public function setVar(_arg1:String):void{
var _local2:Variables;
if (((!((_arg1 == ""))) && (_isNotGoogleSearch()))){
_initData();
_buffer.utmv.domainHash = _domainHash;
_buffer.utmv.value = _arg1;
if (_debug.verbose){
_debug.info(_buffer.utmv.toString(), VisualDebugMode.geek);
};
_debug.info((("setVar( " + _arg1) + " )"));
if (_takeSample()){
_local2 = new Variables();
_local2.utmt = "var";
_gifRequest.send(_account, _local2);
};
} else {
_debug.warning((("setVar \"" + _arg1) + "\" is ignored"));
};
}
public function setDomainName(_arg1:String):void{
if (_arg1 == "auto"){
_config.domain.mode = DomainNameMode.auto;
} else {
if (_arg1 == "none"){
_config.domain.mode = DomainNameMode.none;
} else {
_config.domain.mode = DomainNameMode.custom;
_config.domain.name = _arg1;
};
};
_updateDomainName();
_debug.info((("setDomainName( " + _config.domainName) + " )"));
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_config.detectClientInfo);
}
private function _updateDomainName():void{
var _local1:String;
if (_config.domain.mode == DomainNameMode.auto){
_local1 = _info.domainName;
if (_local1.substring(0, 4) == "www."){
_local1 = _local1.substring(4);
};
_config.domain.name = _local1;
};
_config.domainName = _config.domain.name.toLowerCase();
_debug.info(("domain name: " + _config.domainName), VisualDebugMode.advanced);
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
_debug.warning((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " ) not implemented"));
return (null);
}
public function setCampContentKey(_arg1:String):void{
var _local2:String;
_config.campaignKey.UCCT = _arg1;
_local2 = (("setCampContentKey( " + _config.campaignKey.UCCT) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCCT]"));
} else {
_debug.info(_local2);
};
}
private function _handleCookie():void{
var _local1:String;
var _local2:String;
var _local3:Array;
var _local4:String;
if (_config.allowLinker){
};
if (((_buffer.hasUTMA()) && (!(_buffer.utma.isEmpty())))){
if (((!(_buffer.hasUTMB())) || (!(_buffer.hasUTMC())))){
_buffer.updateUTMA(_timeStamp);
_noSessionInformation = true;
};
if (_debug.verbose){
_debug.info(("from cookie " + _buffer.utma.toString()), VisualDebugMode.geek);
};
} else {
_debug.info("create a new utma", VisualDebugMode.advanced);
_buffer.utma.domainHash = _domainHash;
_buffer.utma.sessionId = _getUniqueSessionId();
_buffer.utma.firstTime = _timeStamp;
_buffer.utma.lastTime = _timeStamp;
_buffer.utma.currentTime = _timeStamp;
_buffer.utma.sessionCount = 1;
if (_debug.verbose){
_debug.info(_buffer.utma.toString(), VisualDebugMode.geek);
};
_noSessionInformation = true;
_isNewVisitor = true;
};
if (((_adSense.gaGlobal) && ((_adSense.dh == String(_domainHash))))){
if (_adSense.sid){
_buffer.utma.currentTime = Number(_adSense.sid);
if (_debug.verbose){
_local1 = "";
_local1 = (_local1 + "AdSense sid found\n");
_local1 = (_local1 + (((("Override currentTime(" + _buffer.utma.currentTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")"));
_debug.info(_local1, VisualDebugMode.geek);
};
};
if (_isNewVisitor){
if (_adSense.sid){
_buffer.utma.lastTime = Number(_adSense.sid);
if (_debug.verbose){
_local2 = "";
_local2 = (_local2 + "AdSense sid found (new visitor)\n");
_local2 = (_local2 + (((("Override lastTime(" + _buffer.utma.lastTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")"));
_debug.info(_local2, VisualDebugMode.geek);
};
};
if (_adSense.vid){
_local3 = _adSense.vid.split(".");
_buffer.utma.sessionId = Number(_local3[0]);
_buffer.utma.firstTime = Number(_local3[1]);
if (_debug.verbose){
_local4 = "";
_local4 = (_local4 + "AdSense vid found (new visitor)\n");
_local4 = (_local4 + (((("Override sessionId(" + _buffer.utma.sessionId) + ") from AdSense vid(") + Number(_local3[0])) + ")\n"));
_local4 = (_local4 + (((("Override firstTime(" + _buffer.utma.firstTime) + ") from AdSense vid(") + Number(_local3[1])) + ")"));
_debug.info(_local4, VisualDebugMode.geek);
};
};
if (_debug.verbose){
_debug.info(("AdSense modified : " + _buffer.utma.toString()), VisualDebugMode.geek);
};
};
};
_buffer.utmb.domainHash = _domainHash;
if (isNaN(_buffer.utmb.trackCount)){
_buffer.utmb.trackCount = 0;
};
if (isNaN(_buffer.utmb.token)){
_buffer.utmb.token = _config.tokenCliff;
};
if (isNaN(_buffer.utmb.lastTime)){
_buffer.utmb.lastTime = _buffer.utma.currentTime;
};
_buffer.utmc.domainHash = _domainHash;
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.advanced);
_debug.info(_buffer.utmc.toString(), VisualDebugMode.advanced);
};
}
public function setLocalServerMode():void{
_config.serverMode = ServerOperationMode.local;
_debug.info("setLocalServerMode()");
}
private function _renderMetricsSearchVariables(_arg1:String=""):Variables{
var _local2:Variables;
var _local3:DocumentInfo;
var _local4:Variables;
var _local5:Variables;
_local2 = new Variables();
_local2.URIencode = true;
_local3 = new DocumentInfo(_config, _info, _formatedReferrer, _arg1, _adSense);
_debug.info(("docInfo: " + _local3.toURLString()), VisualDebugMode.geek);
if (_config.campaignTracking){
_local4 = _campaignInfo.toVariables();
};
_local5 = _browserInfo.toVariables();
_local2.join(_local3.toVariables(), _local5, _local4);
return (_local2);
}
public function clearIgnoredRef():void{
_debug.info("clearIgnoredRef()");
_config.organic.clearIgnoredReferrals();
}
public function setCampSourceKey(_arg1:String):void{
var _local2:String;
_config.campaignKey.UCSR = _arg1;
_local2 = (("setCampSourceKey( " + _config.campaignKey.UCSR) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCSR]"));
} else {
_debug.info(_local2);
};
}
public function getLocalGifPath():String{
_debug.info("getLocalGifPath()");
return (_config.localGIFpath);
}
public function setLocalGifPath(_arg1:String):void{
_config.localGIFpath = _arg1;
_debug.info((("setLocalGifPath( " + _config.localGIFpath) + " )"));
}
public function getVersion():String{
_debug.info("getVersion()");
return (_config.version);
}
public function setAllowAnchor(_arg1:Boolean):void{
_config.allowAnchor = _arg1;
_debug.info((("setAllowAnchor( " + _config.allowAnchor) + " )"));
}
private function _isNotGoogleSearch():Boolean{
var _local1:String;
var _local2:Boolean;
var _local3:Boolean;
var _local4:Boolean;
var _local5:Boolean;
_local1 = _config.domainName;
_local2 = (_local1.indexOf("www.google.") < 0);
_local3 = (_local1.indexOf(".google.") < 0);
_local4 = (_local1.indexOf("google.") < 0);
_local5 = (_local1.indexOf("google.org") > -1);
return (((((((((_local2) || (_local3))) || (_local4))) || (!((_config.cookiePath == "/"))))) || (_local5)));
}
public function setSampleRate(_arg1:Number):void{
if (_arg1 < 0){
_debug.warning("sample rate can not be negative, ignoring value.");
} else {
_config.sampleRate = _arg1;
};
_debug.info((("setSampleRate( " + _config.sampleRate) + " )"));
}
private function _takeSample():Boolean{
if (_debug.verbose){
_debug.info((((("takeSample: (" + (_visitCode() % 10000)) + ") < (") + (_config.sampleRate * 10000)) + ")"), VisualDebugMode.geek);
};
return (((_visitCode() % 10000) < (_config.sampleRate * 10000)));
}
public function setCookiePath(_arg1:String):void{
_config.cookiePath = _arg1;
_debug.info((("setCookiePath( " + _config.cookiePath) + " )"));
}
public function setAllowHash(_arg1:Boolean):void{
_config.allowDomainHash = _arg1;
_debug.info((("setAllowHash( " + _config.allowDomainHash) + " )"));
}
private function _generateUserDataHash():Number{
var _local1:String;
_local1 = "";
_local1 = (_local1 + _info.appName);
_local1 = (_local1 + _info.appVersion);
_local1 = (_local1 + _info.language);
_local1 = (_local1 + _info.platform);
_local1 = (_local1 + _info.userAgent.toString());
_local1 = (_local1 + (((_info.screenWidth + "x") + _info.screenHeight) + _info.screenColorDepth));
_local1 = (_local1 + _info.referrer);
return (Utils.generateHash(_local1));
}
public function addIgnoredOrganic(_arg1:String):void{
_debug.info((("addIgnoredOrganic( " + _arg1) + " )"));
_config.organic.addIgnoredKeyword(_arg1);
}
public function setLocalRemoteServerMode():void{
_config.serverMode = ServerOperationMode.both;
_debug.info("setLocalRemoteServerMode()");
}
public function cookiePathCopy(_arg1:String):void{
_debug.warning((("cookiePathCopy( " + _arg1) + " ) not implemented"));
}
public function setDetectTitle(_arg1:Boolean):void{
_config.detectTitle = _arg1;
_debug.info((("setDetectTitle( " + _config.detectTitle) + " )"));
}
public function setCampTermKey(_arg1:String):void{
var _local2:String;
_config.campaignKey.UCTR = _arg1;
_local2 = (("setCampTermKey( " + _config.campaignKey.UCTR) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCTR]"));
} else {
_debug.info(_local2);
};
}
public function getServiceMode():ServerOperationMode{
_debug.info("getServiceMode()");
return (_config.serverMode);
}
public function setCampNOKey(_arg1:String):void{
var _local2:String;
_config.campaignKey.UCNO = _arg1;
_local2 = (("setCampNOKey( " + _config.campaignKey.UCNO) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCNO]"));
} else {
_debug.info(_local2);
};
}
private function _trackMetrics(_arg1:String=""):void{
var _local2:Variables;
var _local3:Variables;
var _local4:Variables;
var _local5:EventInfo;
if (_takeSample()){
_local2 = new Variables();
_local2.URIencode = true;
if (((_x10Module) && (_x10Module.hasData()))){
_local5 = new EventInfo(false, _x10Module);
_local3 = _local5.toVariables();
};
_local4 = _renderMetricsSearchVariables(_arg1);
_local2.join(_local3, _local4);
_gifRequest.send(_account, _local2);
};
}
public function setCampaignTrack(_arg1:Boolean):void{
_config.campaignTracking = _arg1;
_debug.info((("setCampaignTrack( " + _config.campaignTracking) + " )"));
}
public function addIgnoredRef(_arg1:String):void{
_debug.info((("addIgnoredRef( " + _arg1) + " )"));
_config.organic.addIgnoredReferral(_arg1);
}
public function clearOrganic():void{
_debug.info("clearOrganic()");
_config.organic.clearEngines();
}
public function getDetectFlash():Boolean{
_debug.info("getDetectFlash()");
return (_config.detectFlash);
}
public function setCampMediumKey(_arg1:String):void{
var _local2:String;
_config.campaignKey.UCMD = _arg1;
_local2 = (("setCampMediumKey( " + _config.campaignKey.UCMD) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCMD]"));
} else {
_debug.info(_local2);
};
}
private function _getUniqueSessionId():Number{
var _local1:Number;
_local1 = ((Utils.generate32bitRandom() ^ _generateUserDataHash()) * 2147483647);
_debug.info(("Session ID: " + _local1), VisualDebugMode.geek);
return (_local1);
}
private function _getDomainHash():Number{
if (((((!(_config.domainName)) || ((_config.domainName == "")))) || ((_config.domain.mode == DomainNameMode.none)))){
_config.domainName = "";
return (1);
};
_updateDomainName();
if (_config.allowDomainHash){
return (Utils.generateHash(_config.domainName));
};
return (1);
}
public function setSessionTimeout(_arg1:int):void{
_config.sessionTimeout = _arg1;
_debug.info((("setSessionTimeout( " + _config.sessionTimeout) + " )"));
}
public function getAccount():String{
_debug.info("getAccount()");
return (_account);
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_debug.warning((("link( " + [_arg1, _arg2].join(", ")) + " ) not implemented"));
}
public function setRemoteServerMode():void{
_config.serverMode = ServerOperationMode.remote;
_debug.info("setRemoteServerMode()");
}
}
}//package com.google.analytics.v4
Section 142
//AnalyticsTracker (com.google.analytics.AnalyticsTracker)
package com.google.analytics {
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.events.*;
public interface AnalyticsTracker extends GoogleAnalyticsAPI, IEventDispatcher {
function set config(_arg1:Configuration):void;
function isReady():Boolean;
function get mode():String;
function set debug(_arg1:DebugConfiguration):void;
function get account():String;
function set mode(_arg1:String):void;
function get config():Configuration;
function get debug():DebugConfiguration;
function set account(_arg1:String):void;
function get visualDebug():Boolean;
function set visualDebug(_arg1:Boolean):void;
}
}//package com.google.analytics
Section 143
//API (com.google.analytics.API)
package com.google.analytics {
import com.google.analytics.utils.*;
public class API {
public static var version:Version = new Version();
version.major = 1;
version.minor = 0;
version.build = 1;
version.revision = "$Rev: 234 $ ".split(" ")[1];
}
}//package com.google.analytics
Section 144
//GATracker (com.google.analytics.GATracker)
package com.google.analytics {
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
import flash.events.*;
import flash.display.*;
import com.google.analytics.external.*;
import com.google.analytics.events.*;
public class GATracker implements AnalyticsTracker {
private var _adSense:AdSenseGlobals;
private var _env:Environment;
private var _visualDebug:Boolean;
private var _idleTimer:IdleTimer;
private var _debug:DebugConfiguration;
private var _buffer:Buffer;
private var _config:Configuration;
private var _mode:String;
private var _display:DisplayObject;
private var _jsproxy:JavascriptProxy;
private var _dom:HTMLDOM;
private var _eventDispatcher:EventDispatcher;
private var _ready:Boolean;// = false
private var _gifRequest:GIFRequest;
private var _account:String;
private var _tracker:GoogleAnalyticsAPI;
public static var version:Version = API.version;
public static var autobuild:Boolean = true;
public function GATracker(_arg1:DisplayObject, _arg2:String, _arg3:String="AS3", _arg4:Boolean=false, _arg5:Configuration=null, _arg6:DebugConfiguration=null){
_ready = false;
super();
_display = _arg1;
_eventDispatcher = new EventDispatcher(this);
_tracker = new TrackerCache();
this.account = _arg2;
this.mode = _arg3;
this.visualDebug = _arg4;
if (!_arg6){
this.debug = new DebugConfiguration();
};
if (!_arg5){
this.config = new Configuration(_arg6);
};
if (autobuild){
_factory();
};
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_tracker.link(_arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_tracker.addOrganic(_arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
_tracker.setAllowLinker(_arg1);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4));
}
public function setCookieTimeout(_arg1:int):void{
_tracker.setCookieTimeout(_arg1);
}
public function trackTrans():void{
_tracker.trackTrans();
}
public function trackPageview(_arg1:String=""):void{
_tracker.trackPageview(_arg1);
}
public function getClientInfo():Boolean{
return (_tracker.getClientInfo());
}
public function setClientInfo(_arg1:Boolean):void{
_tracker.setClientInfo(_arg1);
}
public function get account():String{
return (_account);
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_tracker.linkByPost(_arg1, _arg2);
}
public function getDetectTitle():Boolean{
return (_tracker.getDetectTitle());
}
public function dispatchEvent(_arg1:Event):Boolean{
return (_eventDispatcher.dispatchEvent(_arg1));
}
public function get config():Configuration{
return (_config);
}
public function set mode(_arg1:String):void{
_mode = _arg1;
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
public function setDetectFlash(_arg1:Boolean):void{
_tracker.setDetectFlash(_arg1);
}
public function resetSession():void{
_tracker.resetSession();
}
public function setCampNameKey(_arg1:String):void{
_tracker.setCampNameKey(_arg1);
}
public function get debug():DebugConfiguration{
return (_debug);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
private function _bridgeFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account));
return (new Bridge(account, _debug, _jsproxy));
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function clearIgnoredOrganic():void{
_tracker.clearIgnoredOrganic();
}
public function set account(_arg1:String):void{
_account = _arg1;
}
public function setVar(_arg1:String):void{
_tracker.setVar(_arg1);
}
public function build():void{
if (!isReady()){
_factory();
};
}
public function setDomainName(_arg1:String):void{
_tracker.setDomainName(_arg1);
}
public function createEventTracker(_arg1:String):EventTracker{
return (_tracker.createEventTracker(_arg1));
}
public function set config(_arg1:Configuration):void{
_config = _arg1;
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8));
}
public function setCampSourceKey(_arg1:String):void{
_tracker.setCampSourceKey(_arg1);
}
public function setCampContentKey(_arg1:String):void{
_tracker.setCampContentKey(_arg1);
}
public function willTrigger(_arg1:String):Boolean{
return (_eventDispatcher.willTrigger(_arg1));
}
public function setLocalServerMode():void{
_tracker.setLocalServerMode();
}
public function isReady():Boolean{
return (_ready);
}
public function getLocalGifPath():String{
return (_tracker.getLocalGifPath());
}
public function setAllowAnchor(_arg1:Boolean):void{
_tracker.setAllowAnchor(_arg1);
}
public function clearIgnoredRef():void{
_tracker.clearIgnoredRef();
}
public function get mode():String{
return (_mode);
}
public function set debug(_arg1:DebugConfiguration):void{
_debug = _arg1;
}
public function setLocalGifPath(_arg1:String):void{
_tracker.setLocalGifPath(_arg1);
}
public function getVersion():String{
return (_tracker.getVersion());
}
public function setSampleRate(_arg1:Number):void{
_tracker.setSampleRate(_arg1);
}
public function setCookiePath(_arg1:String):void{
_tracker.setCookiePath(_arg1);
}
public function setAllowHash(_arg1:Boolean):void{
_tracker.setAllowHash(_arg1);
}
public function setCampNOKey(_arg1:String):void{
_tracker.setCampNOKey(_arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
_tracker.addIgnoredOrganic(_arg1);
}
public function setLocalRemoteServerMode():void{
_tracker.setLocalRemoteServerMode();
}
public function cookiePathCopy(_arg1:String):void{
_tracker.cookiePathCopy(_arg1);
}
private function _factory():void{
var _local1:GoogleAnalyticsAPI;
var _local2:TrackerCache;
_jsproxy = new JavascriptProxy(debug);
if (visualDebug){
debug.layout = new Layout(debug, _display);
debug.active = visualDebug;
};
_local2 = (_tracker as TrackerCache);
switch (mode){
case TrackerMode.BRIDGE:
_local1 = _bridgeFactory();
break;
case TrackerMode.AS3:
default:
_local1 = _trackerFactory();
};
if (!_local2.isEmpty()){
_local2.tracker = _local1;
_local2.flush();
};
_tracker = _local1;
_ready = true;
dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this));
}
public function setCampTermKey(_arg1:String):void{
_tracker.setCampTermKey(_arg1);
}
private function _trackerFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account));
_adSense = new AdSenseGlobals(debug);
_dom = new HTMLDOM(debug);
_dom.cacheProperties();
_env = new Environment("", "", "", debug, _dom);
_buffer = new Buffer(config, debug, false);
_gifRequest = new GIFRequest(config, debug, _buffer, _env);
_idleTimer = new IdleTimer(config, debug, _display, _buffer);
_env.url = _display.stage.loaderInfo.url;
return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense));
}
public function setDetectTitle(_arg1:Boolean):void{
_tracker.setDetectTitle(_arg1);
}
public function getServiceMode():ServerOperationMode{
return (_tracker.getServiceMode());
}
public function clearOrganic():void{
_tracker.clearOrganic();
}
public function setCampaignTrack(_arg1:Boolean):void{
_tracker.setCampaignTrack(_arg1);
}
public function addIgnoredRef(_arg1:String):void{
_tracker.addIgnoredRef(_arg1);
}
public function set visualDebug(_arg1:Boolean):void{
_visualDebug = _arg1;
}
public function setCampMediumKey(_arg1:String):void{
_tracker.setCampMediumKey(_arg1);
}
public function setSessionTimeout(_arg1:int):void{
_tracker.setSessionTimeout(_arg1);
}
public function getDetectFlash():Boolean{
return (_tracker.getDetectFlash());
}
public function get visualDebug():Boolean{
return (_visualDebug);
}
public function getAccount():String{
return (_tracker.getAccount());
}
public function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public function setRemoteServerMode():void{
_tracker.setRemoteServerMode();
}
}
var _local1:* = ServerOperationMode;
return (_local1);
}//package com.google.analytics
Section 145
//DrawSine (com.midasplayer.extras.DrawSine)
package com.midasplayer.extras {
import flash.display.*;
public class DrawSine extends MovieClip {
private var target_mc:MovieClip;
private var step_x:Number;
private var my_height:Number;
private var stroke_color:Number;// = 0
private var draw_fill:Boolean;// = false
private var stroke_weight:Number;// = 1
private var fill_alpha:Number;
private var fill_height:Number;
private var draw_array;
private var steps:Number;
private var fill_color:Number;// = 0xFF0000
private var my_width:Number;
public function DrawSine(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number){
draw_array = new Array();
super();
target_mc = _arg1;
my_width = _arg2;
my_height = _arg3;
steps = _arg4;
step_x = (_arg2 / steps);
var _local5:* = 0;
while (_local5 < steps) {
draw_array.push({x:(step_x * _local5), y:0});
_local5++;
};
}
public function set_fill(_arg1:Boolean, _arg2:Number, _arg3:Number):void{
draw_fill = _arg1;
fill_color = (stroke_color = _arg2);
fill_alpha = _arg3;
}
public function set_stroke(_arg1:Number, _arg2:Number):void{
stroke_weight = _arg1;
stroke_color = _arg2;
}
public function draw_waves(_arg1:Array):void{
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local2:* = draw_array.length;
var _local3:* = _arg1.length;
var _local4:* = 0;
while (_local4 < _local3) {
_local6 = (((_arg1[_local4].cycles * Math.PI) * 2) / steps);
_local7 = 0;
while (_local7 < _local2) {
if (_local4 == 0){
draw_array[_local7].y = (Math.sin((_arg1[_local4].phase + (_local6 * _local7))) * _arg1[_local4].radius);
} else {
draw_array[_local7].y = (draw_array[_local7].y + (Math.sin((_arg1[_local4].phase + (_local6 * _local7))) * _arg1[_local4].radius));
};
_local7++;
};
_local4++;
};
target_mc.graphics.clear();
if (stroke_weight > 0){
target_mc.graphics.lineStyle(stroke_weight, stroke_color);
};
if (draw_fill){
target_mc.graphics.beginFill(fill_color, fill_alpha);
};
target_mc.graphics.moveTo(draw_array[0].x, draw_array[0].y);
var _local5:* = 1;
while (_local5 < _local2) {
_local8 = draw_array[_local5].x;
_local9 = draw_array[_local5].y;
target_mc.graphics.lineTo(_local8, _local9);
_local5++;
};
if (draw_fill){
target_mc.graphics.lineTo(_local8, (my_height / 2));
target_mc.graphics.lineTo(0, (my_height / 2));
target_mc.graphics.lineTo(0, draw_array[0].y);
target_mc.graphics.endFill();
};
}
}
}//package com.midasplayer.extras
Section 146
//md5 (com.midasplayer.extras.md5)
package com.midasplayer.extras {
public class md5 {
public static const HEX_FORMAT_LOWERCASE:uint = 0;
public static const HEX_FORMAT_UPPERCASE:uint = 1;
public static const BASE64_PAD_CHARACTER_DEFAULT_COMPLIANCE:String = "";
public static const BASE64_PAD_CHARACTER_RFC_COMPLIANCE:String = "=";
public static var hexcase:uint = 0;
public static var b64pad:String = "";
public static function md5_gg(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_cmn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
return (safe_add(bit_rol(safe_add(safe_add(_arg2, _arg1), safe_add(_arg4, _arg6)), _arg5), _arg3));
}
public static function binl_md5(_arg1:Array, _arg2:Number):Array{
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 % 32)));
_arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2;
var _local3:Number = 1732584193;
var _local4:Number = -271733879;
var _local5:Number = -1732584194;
var _local6:Number = 271733878;
var _local7:Number = 0;
while (_local7 < _arg1.length) {
_local8 = _local3;
_local9 = _local4;
_local10 = _local5;
_local11 = _local6;
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 7, -680876936);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 1)], 12, -389564586);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 17, 606105819);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 3)], 22, -1044525330);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 7, -176418897);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 5)], 12, 1200080426);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 17, -1473231341);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 7)], 22, -45705983);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 7, 1770035416);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 9)], 12, -1958414417);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 17, -42063);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 11)], 22, -1990404162);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 7, 1804603682);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 13)], 12, -40341101);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 17, -1502002290);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 15)], 22, 1236535329);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 5, -165796510);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 6)], 9, -1069501632);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 14, 643717713);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 0)], 20, -373897302);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 5, -701558691);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 10)], 9, 38016083);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 14, -660478335);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 4)], 20, -405537848);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 5, 568446438);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 14)], 9, -1019803690);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 14, -187363961);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 8)], 20, 1163531501);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 5, -1444681467);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 2)], 9, -51403784);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 14, 1735328473);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 12)], 20, -1926607734);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 4, -378558);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 8)], 11, -2022574463);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 16, 1839030562);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 14)], 23, -35309556);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 4, -1530992060);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 4)], 11, 1272893353);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 16, -155497632);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 10)], 23, -1094730640);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 4, 681279174);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 0)], 11, -358537222);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 16, -722521979);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 6)], 23, 76029189);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 4, -640364487);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 12)], 11, -421815835);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 16, 530742520);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 2)], 23, -995338651);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 6, -198630844);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 7)], 10, 1126891415);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 15, -1416354905);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 5)], 21, -57434055);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 6, 1700485571);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 3)], 10, -1894986606);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 15, -1051523);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 1)], 21, -2054922799);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 6, 1873313359);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 15)], 10, -30611744);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 15, -1560198380);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 13)], 21, 1309151649);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 6, -145523070);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 11)], 10, -1120210379);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 15, 718787259);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 9)], 21, -343485551);
_local3 = safe_add(_local3, _local8);
_local4 = safe_add(_local4, _local9);
_local5 = safe_add(_local5, _local10);
_local6 = safe_add(_local6, _local11);
_local7 = (_local7 + 16);
};
return ([_local3, _local4, _local5, _local6]);
}
public static function str2rstr_utf16le(_arg1:String):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode((_arg1.charCodeAt(_local3) & 0xFF), ((_arg1.charCodeAt(_local3) >>> 8) & 0xFF)));
_local3++;
};
return (_local2);
}
public static function hex_hmac_md5(_arg1:String, _arg2:String):String{
return (rstr2hex(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2))));
}
public static function binl2rstr(_arg1:Array):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < (_arg1.length * 32)) {
_local2 = (_local2 + String.fromCharCode(((_arg1[(_local3 >> 5)] >>> (_local3 % 32)) & 0xFF)));
_local3 = (_local3 + 8);
};
return (_local2);
}
public static function md5_ff(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_ii(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function rstr2binl(_arg1:String):Array{
var _local2:Number = 0;
var _local3:Array = new Array((_arg1.length >> 2));
_local2 = 0;
while (_local2 < _local3.length) {
_local3[_local2] = 0;
_local2++;
};
_local2 = 0;
while (_local2 < (_arg1.length * 8)) {
_local3[(_local2 >> 5)] = (_local3[(_local2 >> 5)] | ((_arg1.charCodeAt((_local2 / 8)) & 0xFF) << (_local2 % 32)));
_local2 = (_local2 + 8);
};
return (_local3);
}
public static function md5_vm_test():Boolean{
return ((hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"));
}
public static function b64_md5(_arg1:String):String{
return (rstr2b64(rstr_md5(str2rstr_utf8(_arg1))));
}
public static function any_hmac_md5(_arg1:String, _arg2:String, _arg3:String):String{
return (rstr2any(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2)), _arg3));
}
public static function hex_md5(_arg1:String):String{
return (rstr2hex(rstr_md5(str2rstr_utf8(_arg1))));
}
public static function bit_rol(_arg1:Number, _arg2:Number):Number{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
public static function encrypt(_arg1:String):String{
return (hex_md5(_arg1));
}
public static function md5_hh(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function rstr2hex(_arg1:String):String{
var _local4:Number;
var _local2:String = (hexcase) ? "0123456789ABCDEF" : "0123456789abcdef";
var _local3 = "";
var _local5:Number = 0;
while (_local5 < _arg1.length) {
_local4 = _arg1.charCodeAt(_local5);
_local3 = (_local3 + (_local2.charAt(((_local4 >>> 4) & 15)) + _local2.charAt((_local4 & 15))));
_local5++;
};
return (_local3);
}
public static function any_md5(_arg1:String, _arg2:String):String{
return (rstr2any(rstr_md5(str2rstr_utf8(_arg1)), _arg2));
}
public static function b64_hmac_md5(_arg1:String, _arg2:String):String{
return (rstr2b64(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2))));
}
public static function rstr2b64(_arg1:String):String{
var _local6:Number;
var _local7:Number;
var _local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var _local3 = "";
var _local4:Number = _arg1.length;
var _local5:Number = 0;
while (_local5 < _local4) {
_local6 = (((_arg1.charCodeAt(_local5) << 16) | (((_local5 + 1) < _local4)) ? (_arg1.charCodeAt((_local5 + 1)) << 8) : 0) | (((_local5 + 2) < _local4)) ? _arg1.charCodeAt((_local5 + 2)) : 0);
_local7 = 0;
while (_local7 < 4) {
if (((_local5 * 8) + (_local7 * 6)) > (_arg1.length * 8)){
_local3 = (_local3 + b64pad);
} else {
_local3 = (_local3 + _local2.charAt(((_local6 >>> (6 * (3 - _local7))) & 63)));
};
_local7++;
};
_local5 = (_local5 + 3);
};
return (_local3);
}
public static function safe_add(_arg1:Number, _arg2:Number):Number{
var _local3:Number = ((_arg1 & 0xFFFF) + (_arg2 & 0xFFFF));
var _local4:Number = (((_arg1 >> 16) + (_arg2 >> 16)) + (_local3 >> 16));
return (((_local4 << 16) | (_local3 & 0xFFFF)));
}
public static function str2rstr_utf8(_arg1:String):String{
var _local4:Number;
var _local5:Number;
var _local2 = "";
var _local3:Number = -1;
while (++_local3 < _arg1.length) {
_local4 = _arg1.charCodeAt(_local3);
_local5 = (((_local3 + 1) < _arg1.length)) ? _arg1.charCodeAt((_local3 + 1)) : 0;
if ((((((((0xD800 <= _local4)) && ((_local4 <= 56319)))) && ((0xDC00 <= _local5)))) && ((_local5 <= 57343)))){
_local4 = ((65536 + ((_local4 & 1023) << 10)) + (_local5 & 1023));
_local3++;
};
if (_local4 <= 127){
_local2 = (_local2 + String.fromCharCode(_local4));
} else {
if (_local4 <= 2047){
_local2 = (_local2 + String.fromCharCode((192 | ((_local4 >>> 6) & 31)), (128 | (_local4 & 63))));
} else {
if (_local4 <= 0xFFFF){
_local2 = (_local2 + String.fromCharCode((224 | ((_local4 >>> 12) & 15)), (128 | ((_local4 >>> 6) & 63)), (128 | (_local4 & 63))));
} else {
if (_local4 <= 2097151){
_local2 = (_local2 + String.fromCharCode((240 | ((_local4 >>> 18) & 7)), (128 | ((_local4 >>> 12) & 63)), (128 | ((_local4 >>> 6) & 63)), (128 | (_local4 & 63))));
};
};
};
};
};
return (_local2);
}
public static function rstr_hmac_md5(_arg1:String, _arg2:String):String{
var _local3:Array = rstr2binl(_arg1);
if (_local3.length > 16){
_local3 = binl_md5(_local3, (_arg1.length * 8));
};
var _local4:Array = new Array(16);
var _local5:Array = new Array(16);
var _local6:Number = 0;
while (_local6 < 16) {
_local4[_local6] = (_local3[_local6] ^ 909522486);
_local5[_local6] = (_local3[_local6] ^ 1549556828);
_local6++;
};
var _local7:Array = binl_md5(_local4.concat(rstr2binl(_arg2)), (0x0200 + (_arg2.length * 8)));
return (binl2rstr(binl_md5(_local5.concat(_local7), (0x0200 + 128))));
}
public static function str2rstr_utf16be(_arg1:String):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(((_arg1.charCodeAt(_local3) >>> 8) & 0xFF), (_arg1.charCodeAt(_local3) & 0xFF)));
_local3++;
};
return (_local2);
}
public static function rstr2any(_arg1:String, _arg2:String):String{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Array;
var _local3:Number = _arg2.length;
var _local4:Array = [];
var _local9:Array = ((_arg1.length / 2) as Array);
_local5 = 0;
while (_local5 < _local9.length) {
_local9[_local5] = ((_arg1.charCodeAt((_local5 * 2)) << 8) | _arg1.charCodeAt(((_local5 * 2) + 1)));
_local5++;
};
while (_local9.length > 0) {
_local8 = [];
_local7 = 0;
_local5 = 0;
while (_local5 < _local9.length) {
_local7 = ((_local7 << 16) + _local9[_local5]);
_local6 = Math.floor((_local7 / _local3));
_local7 = (_local7 - (_local6 * _local3));
if ((((_local8.length > 0)) || ((_local6 > 0)))){
_local8[_local8.length] = _local6;
};
_local5++;
};
_local4[_local4.length] = _local7;
_local9 = _local8;
};
var _local10 = "";
_local5 = (_local4.length - 1);
while (_local5 >= 0) {
_local10 = (_local10 + _arg2.charAt(_local4[_local5]));
_local5--;
};
return (_local10);
}
public static function rstr_md5(_arg1:String):String{
return (binl2rstr(binl_md5(rstr2binl(_arg1), (_arg1.length * 8))));
}
}
}//package com.midasplayer.extras
Section 147
//MochiBot (com.midasplayer.extras.MochiBot)
package com.midasplayer.extras {
import flash.net.*;
import flash.display.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
if (Security.sandboxType == "localWithFile"){
return (null);
};
var _local3:MochiBot = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var _local4 = "http://core.mochibot.com/my/core.swf";
var _local5:URLVariables = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
var _local6:String = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
var _local7:URLRequest = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
var _local8:Loader = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package com.midasplayer.extras
Section 148
//SimpleParticle (com.midasplayer.extras.SimpleParticle)
package com.midasplayer.extras {
import flash.display.*;
public dynamic class SimpleParticle extends Shape {
private var _color:Number;// = 0
private var _size:Number;// = 1
private var _type:String;// = "rect"
public static var RECT:String = "rect";
public static var CIRCLE:String = "circle";
public function get size():Number{
return (_size);
}
public function set size(_arg1:Number){
_size = _arg1;
draw();
}
public function get color():Number{
return (_color);
}
public function set color(_arg1:Number){
_color = _arg1;
draw();
}
public function get type():String{
return (_type);
}
private function draw(){
clear();
graphics.beginFill(_color, 1);
switch (type){
case RECT:
graphics.drawRect((-(size) / 2), (-(size) / 2), size, size);
break;
case CIRCLE:
graphics.drawCircle((-(size) / 2), (-(size) / 2), size);
break;
};
graphics.endFill();
}
public function clear(){
graphics.clear();
}
public function set type(_arg1:String){
_type = _arg1;
draw();
}
}
}//package com.midasplayer.extras
Section 149
//SineWave (com.midasplayer.extras.SineWave)
package com.midasplayer.extras {
public class SineWave {
private var my_cycles:Number;
private var my_radius:Number;
private var my_phase:Number;
private var my_inc:Number;
public function SineWave(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
my_phase = _arg1;
my_cycles = _arg2;
my_radius = _arg3;
my_inc = _arg4;
}
public function set radius(_arg1:Number):void{
my_radius = _arg1;
}
public function get cycles():Number{
return (my_cycles);
}
public function get radius():Number{
return (my_radius);
}
public function set cycles(_arg1:Number):void{
my_cycles = _arg1;
}
public function get phase():Number{
return (my_phase);
}
public function set inc(_arg1:Number):void{
my_inc = _arg1;
}
public function set phase(_arg1:Number):void{
my_phase = _arg1;
}
public function get inc():Number{
return (my_inc);
}
}
}//package com.midasplayer.extras
Section 150
//Water1 (com.midasplayer.extras.Water1)
package com.midasplayer.extras {
import flash.display.*;
public class Water1 extends MovieClip {
private var m_lines:Array;
public function Water1(){
m_lines = new Array();
super();
}
public function decrThickness(_arg1:Boolean):Boolean{
var _local2:int;
var _local3:Boolean;
var _local4:int;
var _local5:Boolean;
if (_arg1){
_local2 = 0;
while (_local2 < m_lines.length) {
_local3 = false;
if (m_lines[_local2].decrThickness()){
_local3 = true;
} else {
return (false);
};
_local2++;
};
return (_local3);
//unresolved jump
};
_local4 = 0;
while (_local4 < m_lines.length) {
_local5 = false;
if (m_lines[_local4].incrThickness()){
_local5 = true;
} else {
return (false);
};
_local4++;
};
return (_local5);
}
public function init(_arg1:Number, _arg2:Number){
var _local3:WaterLine;
var _local5:int;
var _local4:uint = 0xFF0000;
if (this.name == "RED"){
_local4 = 0xFF0000;
_local5 = 1;
};
if (this.name == "GREEN"){
_local4 = 0xFF00;
_local5 = 1;
};
if (this.name == "BLUE"){
_local4 = 2782939;
_local5 = 1;
};
var _local6:* = 0;
while (_local6 < _local5) {
_local3 = new WaterLine();
_local3.addParams(_local4, _arg1, _arg2);
_local3.x = (_local6 * 1.5);
addChild(_local3);
m_lines.push(_local3);
_local6++;
};
}
}
}//package com.midasplayer.extras
Section 151
//WaterLine (com.midasplayer.extras.WaterLine)
package com.midasplayer.extras {
import flash.events.*;
import flash.display.*;
public class WaterLine extends MovieClip {
private var _height:Number;// = 400
private var _line:Shape;
private var _particlesQuantity:Number;// = 20
private var _color:uint;
private var _bubbles:Array;
private var _step:Number;
private var _particles:Array;
private var _lineSize:Number;
public function WaterLine(){
trace("WaterLine()");
}
public function incrThickness():Boolean{
_lineSize = (_lineSize + 0.5);
if (_lineSize >= 5){
return (true);
};
return (false);
}
public function get randomDirection():Number{
return (((Math.round((Math.random() * 1)) * 2) - 1));
}
public function addParams(_arg1:uint, _arg2:Number, _arg3:Number):void{
_color = _arg1;
_height = _arg2;
_lineSize = _arg3;
init();
}
private function createBubbles():void{
var _local2:SimpleParticle;
var _local4:Number;
var _local5:Number;
var _local6:*;
var _local1:Array = [_color, _color];
var _local3:* = 0;
while (_local3 < 5) {
_local2 = new SimpleParticle();
_local2.type = SimpleParticle.CIRCLE;
_local2.size = 0.8;
_local2.color = _local1[Math.round((Math.random() * (_local1.length - 1)))];
_local2.alpha = 1;
addChild(_local2);
_bubbles.push(_local2);
_local3++;
};
for (_local6 in _bubbles) {
_local2 = _bubbles[_local6];
if (!_local2.isOut){
_local2.y = (_local2.y + ((Math.random() * 5) + 10));
_local4 = Math.floor((_local2.y / this._step));
_local2.x = (_local2.x + (((_particles[_local4].x + ((Math.random() * 1) * randomDirection)) - _local2.x) * 0.8));
_local5 = Math.sqrt((Math.pow((mouseX - _local2.x), 2) + Math.pow((mouseY - _local2.y), 2)));
if ((((_local5 < 4)) && (!(_local2.isOut)))){
};
} else {
_local2.y = (_local2.y + _local2.speedY);
_local2.speedY = (_local2.speedY + 3);
_local2.x = (_local2.x + _local2.speedX);
_local2.alpha = (_local2.alpha - 0.005);
};
if ((((_local2.y > _height)) || ((_local2.alpha < 0)))){
_bubbles.splice(_local6, 1);
_local2.parent.removeChild(_local2);
_local2 = null;
};
};
}
private function createLine():void{
var _local1:SimpleParticle;
var _local2:* = 0;
while (_local2 < _particlesQuantity) {
_local1 = new SimpleParticle();
_local1.elasticX = 0;
_local1.yIni = (_local1.y = (_step * _local2));
addChild(_local1);
_particles.push(_local1);
_local2++;
};
}
private function init(){
_line = new Shape();
_line.alpha = 0.8;
addChild(_line);
_bubbles = [];
_particles = [];
_step = (_height / (_particlesQuantity - 1));
createLine();
addEventListener(Event.ENTER_FRAME, animate);
}
private function animate(_arg1:Event):void{
var _local2:SimpleParticle;
var _local3:SimpleParticle;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local9:Number;
var _local8:Number = 10;
var _local10:Number = 3;
_line.graphics.clear();
_line.graphics.moveTo(_particles[0].x, _particles[0].y);
_line.graphics.lineStyle(_lineSize, _color, 1);
var _local11:* = 0;
while (_local11 < _particles.length) {
_local3 = _particles[_local11];
if (_local11 == 0){
_local3.x = (_local3.x + ((((Math.random() * _local10) * randomDirection) - _local3.x) * 0.9));
};
_local2 = ((_local11)>0) ? _particles[(_local11 - 1)] : _local3;
_local7 = Math.sqrt((Math.pow((mouseX - 0), 2) + Math.pow((mouseY - _local3.yIni), 2)));
if (_local7 < _local8){
} else {
_local5 = _local2.x;
_local3.elasticX = ((_local3.elasticX * 0.4) + ((_local5 - _local3.x) * 0.4));
_local3.x = (_local3.x + _local3.elasticX);
};
if (_local11 > 0){
_line.graphics.curveTo(_local2.x, _local2.y, ((_local2.x + _local3.x) / 2), ((_local2.y + _local3.y) / 2));
};
_local11++;
};
}
private function spreadBubble(_arg1:SimpleParticle):void{
_arg1.isOut = true;
parent.parent.addChild(_arg1);
_arg1.size = 1.2;
_arg1.alpha = 0.35;
_arg1.x = (parent.x + _arg1.x);
_arg1.y = (parent.y + _arg1.y);
_arg1.speedY = (-5 - (Math.random() * 10));
_arg1.speedX = (((Math.random() * 15) + 1) * randomDirection);
}
public function decrThickness():Boolean{
_lineSize--;
if (_lineSize <= 0){
return (true);
};
return (false);
}
}
}//package com.midasplayer.extras
Section 152
//WaveEngine (com.midasplayer.extras.WaveEngine)
package com.midasplayer.extras {
import flash.events.*;
import flash.display.*;
public class WaveEngine extends MovieClip {
private var m_wave:DrawSine;
private var m_fillColor:uint;
private var m_num_waves:int;// = 3
private var m_waveHolder:MovieClip;
private var m_sinArr:Array;
private var m_rootRef:MovieClip;
public function WaveEngine(_arg1:MovieClip, _arg2:int, _arg3:int, _arg4:uint, _arg5:uint, _arg6:MovieClip){
m_waveHolder = new MovieClip();
m_sinArr = new Array();
super();
m_rootRef = _arg1;
m_waveHolder = _arg6;
m_wave = new DrawSine(m_waveHolder, _arg2, _arg3, 100);
var _local7:* = 0;
while (_local7 < m_num_waves) {
m_sinArr.push(new SineWave(((Math.random() * Math.PI) * 1.5), (Math.random() * 1.5), ((Math.random() * 1.5) + 1), (Math.random() - 0.5)));
_local7++;
};
m_wave.set_stroke(3, _arg5);
m_wave.set_fill(true, _arg4, 100);
m_fillColor = _arg4;
}
public function startWave():void{
m_rootRef.addEventListener(Event.ENTER_FRAME, update);
}
public function getWave():MovieClip{
return (m_waveHolder);
}
private function update(_arg1:Event):void{
var _local2:*;
for (_local2 in m_sinArr) {
m_sinArr[_local2].phase = (m_sinArr[_local2].phase + m_sinArr[_local2].inc);
};
m_wave.set_fill(true, m_fillColor, 1);
m_wave.draw_waves(m_sinArr);
}
public function stopWave():void{
m_rootRef.removeEventListener(Event.ENTER_FRAME, update);
}
public function colorUpdate(_arg1:uint):void{
var _local2:String = ("0x" + _arg1.toString(16));
m_fillColor = uint(_local2);
}
}
}//package com.midasplayer.extras
Section 153
//KingAPI (com.midasplayer.KingAPI)
package com.midasplayer {
import flash.net.*;
import flash.events.*;
import com.midasplayer.extras.*;
import flash.external.*;
public class KingAPI {
public static const LINK_TYPE_RIGHT_CLICK:String = "rightclick";
public static const USER_TYPE_SUBSCRIPTION:int = 3;
public static const LINK_TYPE_HIGHSCORES:String = "highscores";
public static const LINK_TYPE_SIGN:String = "sign";
public static const INITIALIZED_EVENT:String = "initialized";
public static const LINK_TYPE_OTHER_GAMES:String = "other_games";
public static const USER_TYPE_REGISTERED:int = 1;
private static const SAK:String = "ggfd7sday923mdsfd8csfds34";
private static const loadHomeParametersURL:String = "http://www.king.com/servlet/FreeGameServlet?action=load";
public static const LINK_TYPE_LOADER_MOVIE:String = "loader_movie";
private static const bounceURL:String = "http://www.mygame.com/king/bounce.jsp";
public static const LINK_TYPE_PROTECT:String = "protect";
public static const LINK_TYPE_ADD_GAME:String = "add_game";
public static const USER_TYPE_GOLD:int = 2;
public static const USER_TYPE_UNREGISTERED:int = 0;
public static const HOST_BANNED_EVENT:String = "hostBanned";
private static const SK:String = "vf78hxcsjak77cxzhjkwad87s";
private static const loadCountURL:String = "http://www.mygame.com/king/loadcount.jsp";
public static const LINK_TYPE_LOADER_PROGRESS:String = "loader_progress";
private static var check:String = null;
public static var gameName:String;
public static var banned:Boolean = false;
protected static var dispatcher:EventDispatcher;
public static var isHome:Boolean = false;
private static var sessionID:String;
private static var iscore:int = 123;
public static var fromURL:String;
private static var SSK:String = "ng43ui54hy35tdsnd6f54rews";
private static function loadUrlErrorHandler(_arg1:Event):void{
trace(("Unable to load url: " + _arg1));
}
public static function resetScore():void{
iscore = 123;
check = null;
}
public static function openOfflineProtectionLink():void{
openKingPage(LINK_TYPE_PROTECT);
}
public static function init(_arg1:String, _arg2:String):void{
var so:SharedObject;
var rnd1:Number;
var rnd2:Number;
var name = _arg1;
var from = _arg2;
gameName = name;
fromURL = from;
var loadCounter:URLLoader = new URLLoader();
var reqvars:URLVariables = new URLVariables();
reqvars.game = gameName;
reqvars.from = fromURL;
try {
so = SharedObject.getLocal("sessionId");
if (so.data.sessionID == null){
rnd1 = Math.abs(Math.floor((Math.random() * 4294967295)));
rnd2 = Math.abs(Math.floor((Math.random() * 4294967295)));
so.data.sessionID = (rnd1.toString(16) + rnd2.toString(16));
so.flush();
};
sessionID = so.data.sessionID;
} catch(e:Error) {
sessionID = "error";
};
reqvars.session = sessionID;
var request:URLRequest = new URLRequest(((loadCountURL + "?") + reqvars.toString()));
loadCounter.addEventListener(Event.COMPLETE, loadCountHandler);
loadCounter.addEventListener(IOErrorEvent.IO_ERROR, loadUrlErrorHandler);
loadCounter.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loadUrlErrorHandler);
try {
loadCounter.load(request);
} catch(error:Error) {
trace(("Unable to load loadcount url: " + loadCountURL));
trace(error.message);
};
}
private static function loadHomeParametersHandler(_arg1:Event):void{
var _local2:URLLoader = URLLoader(_arg1.target);
trace(("loadCounter.data" + _local2.data));
}
public static function submitInternalScore():void{
checkScore();
var _local1:int = ((iscore - 123) / 2);
submitScore(_local1);
}
public static function openOtherGamesLink():void{
openKingPage(LINK_TYPE_OTHER_GAMES);
}
public static function openKingPage(_arg1:String, _arg2:String=null):void{
var _local3:URLVariables = new URLVariables();
_local3.game = gameName;
_local3.from = fromURL;
_local3.type = _arg1;
_local3.session = sessionID;
if (_arg2 != null){
_local3.redirect = _arg2;
};
var _local4 = "_blank";
if (isHome){
_local4 = "_top";
};
navigateToURL(new URLRequest(((bounceURL + "?") + _local3.toString())), _local4);
}
private static function loadCountHandler(_arg1:Event):void{
var vars:URLVariables;
var event = _arg1;
var loadCounter:URLLoader = URLLoader(event.target);
trace(("loadCounter.data :" + loadCounter.data));
try {
vars = new URLVariables(loadCounter.data);
if (vars.h == "true"){
isHome = true;
};
if (vars.b == "true"){
banned = true;
dispatcher.dispatchEvent(new Event(HOST_BANNED_EVENT));
} else {
dispatcher.dispatchEvent(new Event(INITIALIZED_EVENT));
};
trace((("::" + vars.h) + "::"));
trace((("::" + vars.b) + "::"));
} catch(e:Error) {
trace(("Error reading data from loadcount url: " + e));
dispatcher.dispatchEvent(new Event(INITIALIZED_EVENT));
};
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
if (dispatcher == null){
dispatcher = new EventDispatcher();
};
dispatcher.addEventListener(_arg1, _arg2);
}
public static function openLoaderMovieLink():void{
openKingPage(LINK_TYPE_LOADER_MOVIE);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
if (dispatcher == null){
return;
};
dispatcher.removeEventListener(_arg1, _arg2);
}
public static function submitScore(_arg1:int):void{
var score = _arg1;
var hash:String = md5.encrypt(((((score + ":") + gameName) + ":") + SSK));
try {
if (isHome){
ExternalInterface.call("submitScore", score, hash);
} else {
openKingPage(LINK_TYPE_HIGHSCORES, ((((("game/" + gameName) + "/submit/") + score) + ":") + hash));
};
} catch(e:Error) {
trace(e);
};
}
public static function submitLevel(_arg1:int):void{
var level = _arg1;
var hash:String = md5.encrypt(((((level + ":") + gameName) + ":") + SSK));
try {
if (isHome){
ExternalInterface.call("submitLevel", level, hash);
};
} catch(e:Error) {
trace(e);
};
}
public static function openHighscoresLink():void{
openKingPage(LINK_TYPE_HIGHSCORES, (("game/" + gameName) + "/highscores"));
}
public static function openSignLink():void{
if (!isHome){
openKingPage(LINK_TYPE_SIGN);
};
}
public static function openRightClickLink():void{
openKingPage(LINK_TYPE_RIGHT_CLICK);
}
private static function checkScore():void{
if (check != null){
if (check != md5.encrypt(((((iscore + ":") + gameName) + ":") + SK))){
SSK = "ng41ui54hy35tdsnd6f54rews";
};
};
}
public static function addScore(_arg1:int):int{
checkScore();
var _local2:int = ((iscore - 123) / 2);
_local2 = (_local2 + _arg1);
iscore = ((_local2 * 2) + 123);
check = md5.encrypt(((((iscore + ":") + gameName) + ":") + SK));
return (_local2);
}
public static function openLoaderProgressLink():void{
openKingPage(LINK_TYPE_LOADER_PROGRESS);
}
public static function openAddToWebsiteLink():void{
openKingPage(LINK_TYPE_ADD_GAME, "website_content.jsp");
}
public static function submitAchievement(_arg1:String):void{
var achievement = _arg1;
var hash:String = md5.encrypt(((((achievement + ":") + gameName) + ":") + SAK));
try {
if (isHome){
ExternalInterface.call("submitAchievement", achievement, hash);
};
} catch(e:Error) {
trace(e);
};
}
}
}//package com.midasplayer
Section 154
//MainLoader (com.midasplayer.MainLoader)
package com.midasplayer {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.media.*;
import com.midasplayer.extras.*;
import fl.transitions.*;
import fl.transitions.easing.*;
import com.google.analytics.components.*;
public dynamic class MainLoader extends MovieClip {
private var STAGE_WIDTH:Number;// = 700
private var m_waveEngineCrown:WaveEngine;
private var m_streamBlue:Boolean;// = false
private var m_clsRed:Water1;
private var m_ferryGreen:MovieClip;
private var m_overBtn:Boolean;// = false
private var m_tween:Tween;
private var m_startColor:ColorTransform;
public var tracker:FlashTracker;
private var m_dist:Number;
private var m_ferryBlue:MovieClip;
private var m_yellowDest:Number;
private var m_logoHolder:Sprite;
private var m_prevPerc:Number;// = -1
private var m_tweenBounceLogo:Tween;
private var m_bg:Sprite;
private var m_streamHeight:Number;
private var m_step:Number;
private var m_logoFill:Boolean;// = true
private var m_isLoaded:Boolean;// = false
private var m_waveHolderLogo:MovieClip;
private var m_maskRown:MovieClip;
private var m_sun:Sprite;
private var m_mask:MovieClip;
private var m_rootRef:MovieClip;
private var m_crownFill:Boolean;// = false
private var m_clsGreen:Water1;
private var m_GREEN:MovieClip;
private var m_loaderContent:Array;
private var m_bounce:Boolean;// = false
private var m_colorOff:Boolean;// = false
private var m_RED:MovieClip;
private var m_streamGreen:Boolean;// = true
private var MOCHI:String;// = ""
private var m_otherGames:Sprite;
private var m_streamRed:Boolean;// = false
private var STAGE_HEIGHT:Number;// = 525
private var m_ferryRed:MovieClip;
private var m_pressBtn:Boolean;// = false
private var GAME_NAME:String;// = "rise-of-pirates"
private var m_count;// = 0
private var m_play:Sprite;
private var m_sampleLoadPerc:Number;// = -1
private var m_gameFrameRate:int;
private var m_clsBlue:Water1;
private var m_endColor:ColorTransform;
private var m_waveHolderCrown:MovieClip;
private var m_BLUE:MovieClip;
private var m_greenDest:Number;
private var m_waveEngineLogo:WaveEngine;
public function MainLoader(){
m_loaderContent = new Array();
m_waveHolderLogo = new MovieClip();
m_waveHolderCrown = new MovieClip();
m_mask = new MovieClip();
m_maskRown = new MovieClip();
m_RED = new WaterHolderR();
m_GREEN = new WaterHolderG();
m_BLUE = new WaterHolderB();
m_ferryGreen = new ferryGreen();
m_ferryRed = new ferryRed();
m_ferryBlue = new ferryBlue();
super();
addFrameScript(0, frame1);
trace("MainLoader()");
stop();
m_rootRef = this;
m_bg = new Sprite();
m_bg.graphics.beginFill(0x333333, 1);
m_bg.graphics.drawRect(0, 0, STAGE_WIDTH, STAGE_HEIGHT);
m_bg.addEventListener(MouseEvent.CLICK, openKingPage);
m_rootRef.addChild(m_bg);
m_loaderContent.push(m_bg);
KingAPI.addEventListener(KingAPI.INITIALIZED_EVENT, onKingApiInit);
KingAPI.addEventListener(KingAPI.HOST_BANNED_EVENT, onKingApiInit);
KingAPI.init(GAME_NAME, root.loaderInfo.url);
__setProp_tracker_Scene1_Layer28_0();
}
private function playLoaderMovie():void{
var _local1:MovieClip = new mcFerryLine();
m_rootRef.addChild(m_ferryGreen);
m_rootRef.addChild(m_ferryRed);
m_rootRef.addChild(m_ferryBlue);
m_ferryGreen.x = ((STAGE_WIDTH / 2) - 2);
m_ferryRed.x = ((m_ferryGreen.x - (m_ferryGreen.width / 2)) + 15);
m_ferryBlue.x = ((m_ferryGreen.x + (m_ferryGreen.width / 2)) - 17);
m_ferryBlue.y = (m_ferryGreen.y = (m_ferryRed.y = (m_bg.y + 15)));
m_loaderContent.push(m_ferryGreen);
m_loaderContent.push(m_ferryRed);
m_loaderContent.push(m_ferryBlue);
_local1.x = (STAGE_WIDTH / 2);
_local1.y = ((m_ferryGreen.y + m_ferryGreen.height) - 9);
m_streamHeight = ((STAGE_HEIGHT / 2) - 40);
m_clsRed = m_RED.RED;
m_clsRed.init(m_streamHeight, 1);
m_clsGreen = m_GREEN.GREEN;
m_clsGreen.init(m_streamHeight, 1);
m_clsBlue = m_BLUE.BLUE;
m_clsBlue.init(m_streamHeight, 1);
m_RED.alpha = (m_GREEN.alpha = (m_BLUE.alpha = 0));
m_rootRef.addChild(m_RED);
m_rootRef.addChild(m_GREEN);
m_rootRef.addChild(m_BLUE);
m_loaderContent.push(m_RED);
m_loaderContent.push(m_GREEN);
m_loaderContent.push(m_BLUE);
m_RED.x = ((STAGE_WIDTH / 2) - 22);
m_GREEN.x = ((STAGE_WIDTH / 2) - 4);
m_BLUE.x = ((STAGE_WIDTH / 2) + 16);
m_RED.y = (m_GREEN.y = (m_BLUE.y = _local1.y));
m_waveEngineLogo = new WaveEngine(m_rootRef, 205.8, 120, 0xFF00, 0xFF00, m_waveHolderLogo);
m_waveHolderLogo = m_waveEngineLogo.getWave();
m_rootRef.addChild(m_waveHolderLogo);
m_loaderContent.push(m_waveHolderLogo);
m_waveEngineCrown = new WaveEngine(m_rootRef, 67.5, 100, 0xFFAA00, 0xFFAA00, m_waveHolderCrown);
m_waveHolderCrown = m_waveEngineCrown.getWave();
m_rootRef.addChild(m_waveHolderCrown);
m_loaderContent.push(m_waveHolderCrown);
m_logoHolder = new mcLogoHolder();
m_logoHolder.x = (STAGE_WIDTH / 2);
m_logoHolder.y = ((STAGE_HEIGHT / 2) - 2);
m_logoHolder.mouseEnabled = false;
m_rootRef.addChild(m_logoHolder);
m_loaderContent.push(m_logoHolder);
m_mask = new mcLogoMask();
m_mask.x = m_logoHolder.x;
m_mask.y = m_logoHolder.y;
m_rootRef.addChild(m_mask);
m_loaderContent.push(m_mask);
m_maskRown = new mcCrownMask();
m_maskRown.x = m_logoHolder.x;
m_maskRown.y = m_logoHolder.y;
m_rootRef.addChild(m_maskRown);
m_loaderContent.push(m_maskRown);
m_waveHolderLogo.mask = m_mask;
m_waveHolderLogo.x = ((STAGE_WIDTH / 2) - (m_mask.width / 2));
m_waveHolderLogo.y = (((STAGE_HEIGHT / 2) + (m_mask.height / 2)) + 15);
m_waveHolderCrown.mask = m_maskRown;
m_waveHolderCrown.x = (m_logoHolder.x - (m_maskRown.width / 2));
m_waveHolderCrown.y = (m_logoHolder.y + 4);
m_waveEngineLogo.startWave();
m_waveEngineCrown.startWave();
m_greenDest = ((m_waveHolderLogo.y - (120 / 2)) - 10);
m_yellowDest = (m_waveHolderCrown.y - (100 / 2));
m_dist = (m_waveHolderCrown.y - m_yellowDest);
m_startColor = new ColorTransform();
m_startColor.color = 0xFF00;
m_endColor = new ColorTransform();
m_endColor.color = 35886;
m_play = new mcPlay();
m_play.x = (STAGE_WIDTH / 2);
m_play.y = ((m_logoHolder.y + m_logoHolder.height) - 5);
m_play.buttonMode = true;
m_play.alpha = 0;
m_play.visible = false;
m_play.addEventListener(MouseEvent.MOUSE_UP, onPlayReleased);
m_play.addEventListener(MouseEvent.MOUSE_OVER, onBtnOver);
m_play.addEventListener(MouseEvent.MOUSE_OUT, onBtnOut);
m_rootRef.addChild(m_play);
m_loaderContent.push(m_play);
m_otherGames = new mcOtherGames();
m_otherGames.x = (STAGE_WIDTH / 2);
m_otherGames.y = ((m_play.y + m_play.height) + 15);
m_otherGames.buttonMode = true;
m_otherGames.alpha = 0;
m_otherGames.visible = false;
m_otherGames.addEventListener(MouseEvent.MOUSE_UP, onOtherReleased);
m_otherGames.addEventListener(MouseEvent.MOUSE_OVER, onBtnOver);
m_otherGames.addEventListener(MouseEvent.MOUSE_OUT, onBtnOut);
m_rootRef.addChild(m_otherGames);
m_loaderContent.push(m_otherGames);
m_rootRef.addEventListener(Event.ENTER_FRAME, update);
}
private function onLoaderMovieFinished():void{
trace("onGameLoaded()");
m_tween.removeEventListener(TweenEvent.MOTION_CHANGE, tweenTransformCrown);
m_rootRef.removeEventListener(Event.ENTER_FRAME, update);
}
private function onPlayReleased(_arg1:MouseEvent):void{
cleanUp();
gotoGame();
}
private function openKingPage(_arg1:Event):void{
trace(("openKingPage() " + _arg1));
KingAPI.openLoaderMovieLink();
}
private function onBtnOut(_arg1:MouseEvent):void{
_arg1.target.removeEventListener(MouseEvent.MOUSE_DOWN, onBtnPress);
if (m_pressBtn){
_arg1.target.x = (_arg1.target.x - 1);
_arg1.target.y = (_arg1.target.y - 2);
m_pressBtn = false;
};
}
private function onBtnPress(_arg1:MouseEvent):void{
m_pressBtn = true;
_arg1.target.x = (_arg1.target.x + 1);
_arg1.target.y = (_arg1.target.y + 2);
}
private function onKingApiInit(_arg1:Event):void{
trace(("onKingApiInit() :" + _arg1.type));
if (MOCHI != ""){
MochiBot.track(this, MOCHI);
};
m_gameFrameRate = root.stage.frameRate;
root.stage.frameRate = 30;
if (KingAPI.banned){
showBannedScreen();
return;
};
if (KingAPI.isHome){
gotoGame();
} else {
playLoaderMovie();
};
}
function frame1(){
stop();
stage.showDefaultContextMenu = false;
stage.scaleMode = "exactFit";
}
private function onBtnOver(_arg1:MouseEvent):void{
_arg1.target.addEventListener(MouseEvent.MOUSE_DOWN, onBtnPress);
}
private function tweenTransformLogo(_arg1:TweenEvent):void{
m_waveEngineLogo.colorUpdate(interpolateColor(m_startColor, m_endColor, m_tween.position).color);
}
private function cleanUp():void{
m_otherGames.removeEventListener(MouseEvent.MOUSE_UP, onOtherReleased);
m_otherGames.removeEventListener(MouseEvent.MOUSE_DOWN, onBtnPress);
m_otherGames.removeEventListener(MouseEvent.MOUSE_OVER, onBtnOver);
m_otherGames.removeEventListener(MouseEvent.MOUSE_OUT, onBtnOut);
m_play.removeEventListener(MouseEvent.MOUSE_UP, onPlayReleased);
m_play.removeEventListener(MouseEvent.MOUSE_DOWN, onBtnPress);
m_play.removeEventListener(MouseEvent.MOUSE_OVER, onBtnOver);
m_play.removeEventListener(MouseEvent.MOUSE_OUT, onBtnOut);
var _local1:int;
while (_local1 < m_loaderContent.length) {
m_rootRef.removeChild(m_loaderContent[_local1]);
m_loaderContent[_local1] = null;
_local1++;
};
}
private function showBannedScreen():void{
var _local1:Sprite = new mcBannedSign();
_local1.buttonMode = true;
_local1.addEventListener(MouseEvent.CLICK, openKingPage);
m_rootRef.addChild(_local1);
}
function __setProp_tracker_Scene1_Layer28_0(){
try {
tracker["componentInspectorSetting"] = true;
} catch(e:Error) {
};
tracker.account = "UA-11466289-1";
tracker.mode = "AS3";
tracker.visualDebug = false;
try {
tracker["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
private function update(_arg1:Event):void{
var _local2:int;
var _local3:int;
var _local4:MovieClip;
var _local5:Sound;
var _local6:Sound;
if ((((stage.loaderInfo.bytesLoaded == stage.loaderInfo.bytesTotal)) && (!(m_isLoaded)))){
m_isLoaded = true;
trace("LOADED COMPLETWE");
};
m_count++;
if (m_streamGreen){
if (m_count == 1){
m_GREEN.height = (m_GREEN.height - m_GREEN.height);
m_GREEN.alpha = 1;
m_ferryGreen.gotoAndStop("on");
};
m_GREEN.height = (m_GREEN.height + 20);
if (m_GREEN.height >= m_streamHeight){
m_GREEN.height = m_streamHeight;
if (m_clsGreen.decrThickness(false)){
m_streamGreen = false;
m_streamBlue = true;
m_count = 0;
};
};
};
if (m_streamBlue){
if (m_count >= 40){
if (m_count == 40){
m_BLUE.height = (m_BLUE.height - m_BLUE.height);
m_BLUE.alpha = 1;
m_ferryBlue.gotoAndStop("on");
m_tween = new Tween(m_waveHolderLogo, "", None.easeNone, 0, 1, 2, true);
m_tween.addEventListener(TweenEvent.MOTION_CHANGE, tweenTransformLogo);
};
m_BLUE.height = (m_BLUE.height + 20);
if (m_BLUE.height >= m_streamHeight){
m_BLUE.height = m_streamHeight;
if (m_clsBlue.decrThickness(false)){
m_streamBlue = false;
};
};
};
};
if (m_logoFill){
if (m_waveHolderLogo.y > m_greenDest){
m_waveHolderLogo.y = (m_waveHolderLogo.y - 0.3);
} else {
m_waveHolderLogo.y = m_greenDest;
if (!m_streamBlue){
m_colorOff = true;
m_waveEngineLogo.stopWave();
};
};
};
if (m_colorOff){
if (m_logoFill){
if (m_clsBlue.decrThickness(true)){
if (m_BLUE.rotation != 180){
m_BLUE.rotation = 180;
m_BLUE.y = (STAGE_HEIGHT / 2);
m_ferryBlue.gotoAndStop("off");
};
m_BLUE.scaleY = (m_BLUE.scaleY - 0.1);
if (m_BLUE.scaleY < 0){
m_BLUE.alpha = 0;
m_colorOff = false;
m_logoFill = false;
m_count = 0;
m_crownFill = true;
m_streamRed = true;
m_startColor = new ColorTransform();
m_startColor.color = 0xFF00;
m_endColor = new ColorTransform();
m_endColor.color = 0xFFAA00;
m_tween.removeEventListener(TweenEvent.MOTION_CHANGE, tweenTransformLogo);
m_tween = new Tween(m_waveHolderCrown, "", None.easeNone, 0, 1, 2, true);
m_tween.addEventListener(TweenEvent.MOTION_CHANGE, tweenTransformCrown);
};
};
};
if (m_crownFill){
if (((m_clsRed.decrThickness(true)) && (m_clsGreen.decrThickness(true)))){
if (m_GREEN.rotation != 180){
m_GREEN.rotation = 180;
m_RED.rotation = 180;
m_GREEN.y = (STAGE_HEIGHT / 2);
m_RED.y = (STAGE_HEIGHT / 2);
m_ferryGreen.gotoAndStop("off");
m_ferryRed.gotoAndStop("off");
};
m_GREEN.scaleY = (m_GREEN.scaleY - 0.1);
m_RED.scaleY = (m_RED.scaleY - 0.1);
if ((((m_GREEN.scaleY < 0)) && ((m_RED.scaleY < 0)))){
m_GREEN.alpha = 0;
m_RED.alpha = 0;
m_colorOff = false;
m_crownFill = false;
m_bounce = true;
m_count = 0;
};
};
};
};
if (m_crownFill){
if (m_sampleLoadPerc == -1){
m_sampleLoadPerc = (100 - (100 * (stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal)));
m_step = (m_dist / 100);
};
_local2 = (100 - (100 * (stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal)));
_local2 = ((100 * (m_sampleLoadPerc - _local2)) / m_sampleLoadPerc);
if (m_waveHolderCrown.y > m_yellowDest){
if ((m_waveHolderCrown.y - m_step) < m_yellowDest){
m_waveHolderCrown.y = m_yellowDest;
} else {
if (m_isLoaded){
m_waveHolderCrown.y = (m_waveHolderCrown.y - 0.5);
} else {
trace(m_prevPerc, _local2);
if (m_prevPerc != _local2){
_local3 = (_local2 - m_prevPerc);
m_waveHolderCrown.y = (m_waveHolderCrown.y - m_step);
m_prevPerc = _local2;
};
};
};
} else {
m_colorOff = true;
m_waveEngineCrown.stopWave();
};
};
if (m_streamRed){
if (m_count >= 20){
if (m_count == 20){
m_RED.height = (m_RED.height - m_RED.height);
m_RED.alpha = 1;
m_ferryRed.gotoAndStop("on");
};
m_RED.height = (m_RED.height + 20);
if (m_RED.height >= m_streamHeight){
m_RED.height = m_streamHeight;
if (m_clsRed.decrThickness(false)){
m_streamRed = false;
};
};
};
};
if (m_bounce){
if (m_count == 1){
_local4 = new mcWaterRing();
_local4.x = (STAGE_WIDTH / 2);
_local4.y = ((STAGE_HEIGHT / 2) + 30);
m_rootRef.addChild(_local4);
m_loaderContent.push(_local4);
};
if (m_count == 2){
_local5 = new sfxBounce();
_local5.play();
};
if (m_count < 3){
m_logoHolder.y = (m_logoHolder.y + 1);
m_waveHolderCrown.y = (m_waveHolderCrown.y + 1);
m_waveHolderLogo.y = (m_waveHolderLogo.y + 1);
m_maskRown.y = (m_maskRown.y + 1);
m_mask.y = (m_mask.y + 1);
};
if ((((m_count > 2)) && ((m_count < 4)))){
m_logoHolder.y = (m_logoHolder.y - 1);
m_waveHolderCrown.y = (m_waveHolderCrown.y - 1);
m_waveHolderLogo.y = (m_waveHolderLogo.y - 1);
m_maskRown.y = (m_maskRown.y - 1);
m_mask.y = (m_mask.y - 1);
};
if (m_count == 4){
_local6 = new sfxBell();
_local6.play();
};
if (m_count == 30){
m_play.visible = true;
m_otherGames.visible = true;
};
if (m_count > 30){
m_play.alpha = (m_play.alpha + 0.05);
if (m_count > 40){
m_otherGames.alpha = (m_otherGames.alpha + 0.05);
};
if ((((m_play.alpha >= 1)) && ((m_otherGames.alpha >= 1)))){
m_bounce = false;
onLoaderMovieFinished();
};
};
};
}
private function onOtherReleased(_arg1:MouseEvent):void{
cleanUp();
}
private function interpolateColor(_arg1:ColorTransform, _arg2:ColorTransform, _arg3:Number):ColorTransform{
var _local4:ColorTransform = new ColorTransform();
_local4.redMultiplier = (_arg1.redMultiplier + ((_arg2.redMultiplier - _arg1.redMultiplier) * _arg3));
_local4.greenMultiplier = (_arg1.greenMultiplier + ((_arg2.greenMultiplier - _arg1.greenMultiplier) * _arg3));
_local4.blueMultiplier = (_arg1.blueMultiplier + ((_arg2.blueMultiplier - _arg1.blueMultiplier) * _arg3));
_local4.alphaMultiplier = (_arg1.alphaMultiplier + ((_arg2.alphaMultiplier - _arg1.alphaMultiplier) * _arg3));
_local4.redOffset = (_arg1.redOffset + ((_arg2.redOffset - _arg1.redOffset) * _arg3));
_local4.greenOffset = (_arg1.greenOffset + ((_arg2.greenOffset - _arg1.greenOffset) * _arg3));
_local4.blueOffset = (_arg1.blueOffset + ((_arg2.blueOffset - _arg1.blueOffset) * _arg3));
_local4.alphaOffset = (_arg1.alphaOffset + ((_arg2.alphaOffset - _arg1.alphaOffset) * _arg3));
return (_local4);
}
private function gotoGame():void{
root.stage.frameRate = m_gameFrameRate;
m_rootRef.gotoAndStop(2);
}
private function tweenTransformCrown(_arg1:TweenEvent):void{
m_waveEngineCrown.colorUpdate(interpolateColor(m_startColor, m_endColor, m_tween.position).color);
}
}
}//package com.midasplayer
Section 155
//BaseButton (fl.controls.BaseButton)
package fl.controls {
import flash.events.*;
import flash.display.*;
import fl.core.*;
import fl.events.*;
import flash.utils.*;
public class BaseButton extends UIComponent {
protected var pressTimer:Timer;
protected var _autoRepeat:Boolean;// = false
protected var _selected:Boolean;// = false
protected var background:DisplayObject;
private var unlockedMouseState:String;
protected var mouseState:String;
private var _mouseStateLocked:Boolean;// = false
private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35};
public function BaseButton(){
buttonMode = true;
mouseChildren = false;
useHandCursor = false;
setupMouseEvents();
setMouseState("up");
pressTimer = new Timer(1, 0);
pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true);
}
override public function get enabled():Boolean{
return (super.enabled);
}
protected function startPress():void{
if (_autoRepeat){
pressTimer.delay = Number(getStyleValue("repeatDelay"));
pressTimer.start();
};
dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true));
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawBackground();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
super.draw();
}
protected function drawLayout():void{
background.width = width;
background.height = height;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
mouseEnabled = _arg1;
}
public function set autoRepeat(_arg1:Boolean):void{
_autoRepeat = _arg1;
}
protected function mouseEventHandler(_arg1:MouseEvent):void{
if (_arg1.type == MouseEvent.MOUSE_DOWN){
setMouseState("down");
startPress();
} else {
if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){
setMouseState("over");
endPress();
} else {
if (_arg1.type == MouseEvent.ROLL_OUT){
setMouseState("up");
endPress();
};
};
};
}
protected function drawBackground():void{
var _local1:String = (enabled) ? mouseState : "disabled";
if (selected){
_local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1));
};
_local1 = (_local1 + "Skin");
var _local2:DisplayObject = background;
background = getDisplayObjectInstance(getStyleValue(_local1));
addChildAt(background, 0);
if (((!((_local2 == null))) && (!((_local2 == background))))){
removeChild(_local2);
};
}
public function get selected():Boolean{
return (_selected);
}
protected function setupMouseEvents():void{
addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true);
}
protected function endPress():void{
pressTimer.reset();
}
public function set mouseStateLocked(_arg1:Boolean):void{
_mouseStateLocked = _arg1;
if (_arg1 == false){
setMouseState(unlockedMouseState);
} else {
unlockedMouseState = mouseState;
};
}
public function get autoRepeat():Boolean{
return (_autoRepeat);
}
public function set selected(_arg1:Boolean):void{
if (_selected == _arg1){
return;
};
_selected = _arg1;
invalidate(InvalidationType.STATE);
}
protected function buttonDown(_arg1:TimerEvent):void{
if (!_autoRepeat){
endPress();
return;
};
if (pressTimer.currentCount == 1){
pressTimer.delay = Number(getStyleValue("repeatInterval"));
};
dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true));
}
public function setMouseState(_arg1:String):void{
if (_mouseStateLocked){
unlockedMouseState = _arg1;
return;
};
if (mouseState == _arg1){
return;
};
mouseState = _arg1;
invalidate(InvalidationType.STATE);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 156
//Button (fl.controls.Button)
package fl.controls {
import flash.display.*;
import fl.core.*;
import fl.managers.*;
public class Button extends LabelButton implements IFocusManagerComponent {
protected var _emphasized:Boolean;// = false
protected var emphasizedBorder:DisplayObject;
private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2};
public static var createAccessibilityImplementation:Function;
public function set emphasized(_arg1:Boolean):void{
_emphasized = _arg1;
invalidate(InvalidationType.STYLES);
}
override protected function initializeAccessibility():void{
if (Button.createAccessibilityImplementation != null){
Button.createAccessibilityImplementation(this);
};
}
protected function drawEmphasized():void{
var _local2:Number;
if (emphasizedBorder != null){
removeChild(emphasizedBorder);
};
emphasizedBorder = null;
if (!_emphasized){
return;
};
var _local1:Object = getStyleValue("emphasizedSkin");
if (_local1 != null){
emphasizedBorder = getDisplayObjectInstance(_local1);
};
if (emphasizedBorder != null){
addChildAt(emphasizedBorder, 0);
_local2 = Number(getStyleValue("emphasizedPadding"));
emphasizedBorder.x = (emphasizedBorder.y = -(_local2));
emphasizedBorder.width = (width + (_local2 * 2));
emphasizedBorder.height = (height + (_local2 * 2));
};
}
public function get emphasized():Boolean{
return (_emphasized);
}
override protected function draw():void{
if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){
drawEmphasized();
};
super.draw();
if (emphasizedBorder != null){
setChildIndex(emphasizedBorder, (numChildren - 1));
};
}
override public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
var _local3:*;
super.drawFocus(_arg1);
if (_arg1){
_local2 = Number(getStyleValue("emphasizedPadding"));
if ((((_local2 < 0)) || (!(_emphasized)))){
_local2 = 0;
};
_local3 = getStyleValue("focusRectPadding");
_local3 = ((_local3)==null) ? 2 : _local3;
_local3 = (_local3 + _local2);
uiFocusRect.x = -(_local3);
uiFocusRect.y = -(_local3);
uiFocusRect.width = (width + (_local3 * 2));
uiFocusRect.height = (height + (_local3 * 2));
};
}
public static function getStyleDefinition():Object{
return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles));
}
}
}//package fl.controls
Section 157
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement)
package fl.controls {
public class ButtonLabelPlacement {
public static const TOP:String = "top";
public static const LEFT:String = "left";
public static const BOTTOM:String = "bottom";
public static const RIGHT:String = "right";
}
}//package fl.controls
Section 158
//LabelButton (fl.controls.LabelButton)
package fl.controls {
import flash.events.*;
import flash.display.*;
import fl.core.*;
import flash.text.*;
import fl.managers.*;
import fl.events.*;
import flash.ui.*;
public class LabelButton extends BaseButton implements IFocusManagerComponent {
protected var _toggle:Boolean;// = false
public var textField:TextField;
protected var mode:String;// = "center"
protected var _labelPlacement:String;// = "right"
protected var oldMouseState:String;
protected var _label:String;// = "Label"
protected var icon:DisplayObject;
private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false};
public static var createAccessibilityImplementation:Function;
override protected function draw():void{
if (textField.text != _label){
label = _label;
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawBackground();
drawIcon();
drawTextFormat();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
};
validate();
}
override protected function drawLayout():void{
var _local7:Number;
var _local8:Number;
var _local1:Number = Number(getStyleValue("textPadding"));
var _local2:String = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement;
textField.height = (textField.textHeight + 4);
var _local3:Number = (textField.textWidth + 4);
var _local4:Number = (textField.textHeight + 4);
var _local5:Number = ((icon)==null) ? 0 : (icon.width + _local1);
var _local6:Number = ((icon)==null) ? 0 : (icon.height + _local1);
textField.visible = (label.length > 0);
if (icon != null){
icon.x = Math.round(((width - icon.width) / 2));
icon.y = Math.round(((height - icon.height) / 2));
};
if (textField.visible == false){
textField.width = 0;
textField.height = 0;
} else {
if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){
_local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1))));
if ((height - 2) > _local4){
_local8 = _local4;
} else {
_local8 = (height - 2);
};
_local3 = _local7;
textField.width = _local3;
_local4 = _local8;
textField.height = _local4;
textField.x = Math.round(((width - _local3) / 2));
textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0));
if (icon != null){
icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1));
};
} else {
_local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1))));
_local3 = _local7;
textField.width = _local3;
textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0));
textField.y = Math.round(((height - textField.height) / 2));
if (icon != null){
icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1));
};
};
};
super.drawLayout();
}
protected function toggleSelected(_arg1:MouseEvent):void{
selected = !(selected);
dispatchEvent(new Event(Event.CHANGE, true));
}
override protected function keyUpHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
if (_arg1.keyCode == Keyboard.SPACE){
setMouseState(oldMouseState);
oldMouseState = null;
endPress();
dispatchEvent(new MouseEvent(MouseEvent.CLICK));
};
}
public function get labelPlacement():String{
return (_labelPlacement);
}
public function get toggle():Boolean{
return (_toggle);
}
protected function setEmbedFont(){
var _local1:Object = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
}
override public function get selected():Boolean{
return ((_toggle) ? _selected : false);
}
override protected function configUI():void{
super.configUI();
textField = new TextField();
textField.type = TextFieldType.DYNAMIC;
textField.selectable = false;
addChild(textField);
}
override protected function initializeAccessibility():void{
if (LabelButton.createAccessibilityImplementation != null){
LabelButton.createAccessibilityImplementation(this);
};
}
public function set labelPlacement(_arg1:String):void{
_labelPlacement = _arg1;
invalidate(InvalidationType.SIZE);
}
protected function drawIcon():void{
var _local1:DisplayObject = icon;
var _local2:String = (enabled) ? mouseState : "disabled";
if (selected){
_local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1));
};
_local2 = (_local2 + "Icon");
var _local3:Object = getStyleValue(_local2);
if (_local3 == null){
_local3 = getStyleValue("icon");
};
if (_local3 != null){
icon = getDisplayObjectInstance(_local3);
};
if (icon != null){
addChildAt(icon, 1);
};
if (((!((_local1 == null))) && (!((_local1 == icon))))){
removeChild(_local1);
};
}
public function set label(_arg1:String):void{
_label = _arg1;
if (textField.text != _label){
textField.text = _label;
dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE));
};
invalidate(InvalidationType.SIZE);
invalidate(InvalidationType.STYLES);
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
if (_arg1.keyCode == Keyboard.SPACE){
if (oldMouseState == null){
oldMouseState = mouseState;
};
setMouseState("down");
startPress();
};
}
public function set toggle(_arg1:Boolean):void{
if (((!(_arg1)) && (super.selected))){
selected = false;
};
_toggle = _arg1;
if (_toggle){
addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true);
} else {
removeEventListener(MouseEvent.CLICK, toggleSelected);
};
invalidate(InvalidationType.STATE);
}
override public function set selected(_arg1:Boolean):void{
_selected = _arg1;
if (_toggle){
invalidate(InvalidationType.STATE);
};
}
protected function drawTextFormat():void{
var _local1:Object = UIComponent.getStyleDefinition();
var _local2:TextFormat = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat);
textField.setTextFormat(_local2);
var _local3:TextFormat = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat);
if (_local3 != null){
textField.setTextFormat(_local3);
} else {
_local3 = _local2;
};
textField.defaultTextFormat = _local3;
setEmbedFont();
}
public function get label():String{
return (_label);
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition()));
}
}
}//package fl.controls
Section 159
//NumericStepper (fl.controls.NumericStepper)
package fl.controls {
import flash.events.*;
import flash.display.*;
import fl.core.*;
import fl.managers.*;
import fl.events.*;
import flash.ui.*;
public class NumericStepper extends UIComponent implements IFocusManagerComponent {
protected var downArrow:BaseButton;
protected var upArrow:BaseButton;
protected var _stepSize:Number;// = 1
protected var _minimum:Number;// = 0
protected var inputField:TextInput;
protected var _maximum:Number;// = 10
protected var _value:Number;// = 1
protected var _precision:Number;
protected static const DOWN_ARROW_STYLES:Object = {disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
protected static const TEXT_INPUT_STYLES:Object = {upSkin:"upSkin", disabledSkin:"disabledSkin", textPadding:"textPadding", textFormat:"textFormat", disabledTextFormat:"disabledTextFormat", embedFonts:"embedFonts"};
protected static const UP_ARROW_STYLES:Object = {disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
private static var defaultStyles:Object = {downArrowDisabledSkin:"NumericStepperDownArrow_disabledSkin", downArrowDownSkin:"NumericStepperDownArrow_downSkin", downArrowOverSkin:"NumericStepperDownArrow_overSkin", downArrowUpSkin:"NumericStepperDownArrow_upSkin", upArrowDisabledSkin:"NumericStepperUpArrow_disabledSkin", upArrowDownSkin:"NumericStepperUpArrow_downSkin", upArrowOverSkin:"NumericStepperUpArrow_overSkin", upArrowUpSkin:"NumericStepperUpArrow_upSkin", upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRect:null, focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35, embedFonts:false};
public function NumericStepper(){
setStyles();
stepSize = _stepSize;
}
override public function set enabled(_arg1:Boolean):void{
if (_arg1 == enabled){
return;
};
super.enabled = _arg1;
upArrow.enabled = (downArrow.enabled = (inputField.enabled = _arg1));
}
public function get imeMode():String{
return (inputField.imeMode);
}
public function set imeMode(_arg1:String):void{
inputField.imeMode = _arg1;
}
protected function passEvent(_arg1:Event):void{
dispatchEvent(_arg1);
}
protected function inStep(_arg1:Number):Boolean{
return ((((_arg1 - _minimum) % _stepSize) == 0));
}
override protected function focusOutHandler(_arg1:FocusEvent):void{
if (_arg1.eventPhase == 3){
setValue(Number(inputField.text));
};
super.focusOutHandler(_arg1);
}
override public function setFocus():void{
if (stage){
stage.focus = inputField.textField;
};
}
public function set minimum(_arg1:Number):void{
_minimum = _arg1;
if (_value < _minimum){
setValue(_minimum, false);
};
}
protected function inRange(_arg1:Number):Boolean{
return ((((_arg1 >= _minimum)) && ((_arg1 <= _maximum))));
}
public function get minimum():Number{
return (_minimum);
}
public function get maximum():Number{
return (_maximum);
}
protected function setValue(_arg1:Number, _arg2:Boolean=true):void{
if (_arg1 == _value){
return;
};
var _local3:Number = _value;
_value = getValidValue(_arg1);
inputField.text = _value.toString();
if (_arg2){
dispatchEvent(new Event(Event.CHANGE, true));
};
}
protected function drawLayout():void{
var _local1:Number;
_local1 = (width - upArrow.width);
var _local2:Number = (height / 2);
inputField.setSize(_local1, height);
upArrow.height = _local2;
downArrow.height = Math.floor(_local2);
downArrow.move(_local1, _local2);
upArrow.move(_local1, 0);
downArrow.drawNow();
upArrow.drawNow();
inputField.drawNow();
}
override protected function isOurFocus(_arg1:DisplayObject):Boolean{
return ((((_arg1 == inputField)) || (super.isOurFocus(_arg1))));
}
public function get previousValue():Number{
var _local1:Number = (_value - _stepSize);
return ((inRange(_local1)) ? _local1 : _value);
}
public function get nextValue():Number{
var _local1:Number = (_value + _stepSize);
return ((inRange(_local1)) ? _local1 : _value);
}
public function set maximum(_arg1:Number):void{
_maximum = _arg1;
if (_value > _maximum){
setValue(_maximum, false);
};
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
setStyles();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
validate();
}
protected function getPrecision():Number{
var _local1:String = _stepSize.toString();
if (_local1.indexOf(".") == -1){
return (0);
};
return (_local1.split(".").pop().length);
}
protected function getValidValue(_arg1:Number):Number{
if (isNaN(_arg1)){
return (_value);
};
var _local2:Number = Number((_stepSize * Math.round((_arg1 / _stepSize))).toFixed(_precision));
if (_local2 > maximum){
return (maximum);
};
if (_local2 < minimum){
return (minimum);
};
return (_local2);
}
public function get textField():TextInput{
return (inputField);
}
override protected function configUI():void{
super.configUI();
upArrow = new BaseButton();
copyStylesToChild(upArrow, UP_ARROW_STYLES);
upArrow.autoRepeat = true;
upArrow.setSize(21, 12);
upArrow.focusEnabled = false;
addChild(upArrow);
downArrow = new BaseButton();
copyStylesToChild(downArrow, DOWN_ARROW_STYLES);
downArrow.autoRepeat = true;
downArrow.setSize(21, 12);
downArrow.focusEnabled = false;
addChild(downArrow);
inputField = new TextInput();
copyStylesToChild(inputField, TEXT_INPUT_STYLES);
inputField.restrict = "0-9\\-\\.\\,";
inputField.text = _value.toString();
inputField.setSize(21, 24);
inputField.focusTarget = (this as IFocusManagerComponent);
inputField.focusEnabled = false;
inputField.addEventListener(FocusEvent.FOCUS_IN, passEvent);
inputField.addEventListener(FocusEvent.FOCUS_OUT, passEvent);
addChild(inputField);
inputField.addEventListener(Event.CHANGE, onTextChange, false, 0, true);
upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, stepperPressHandler, false, 0, true);
downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, stepperPressHandler, false, 0, true);
}
public function set stepSize(_arg1:Number):void{
_stepSize = _arg1;
_precision = getPrecision();
setValue(_value);
}
public function set value(_arg1:Number):void{
setValue(_arg1, false);
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
_arg1.stopImmediatePropagation();
var _local2:Number = Number(inputField.text);
switch (_arg1.keyCode){
case Keyboard.END:
setValue(maximum);
break;
case Keyboard.HOME:
setValue(minimum);
break;
case Keyboard.UP:
setValue(nextValue);
break;
case Keyboard.DOWN:
setValue(previousValue);
break;
case Keyboard.ENTER:
setValue(_local2);
break;
};
}
protected function setStyles():void{
copyStylesToChild(downArrow, DOWN_ARROW_STYLES);
copyStylesToChild(upArrow, UP_ARROW_STYLES);
copyStylesToChild(inputField, TEXT_INPUT_STYLES);
}
public function get stepSize():Number{
return (_stepSize);
}
public function get value():Number{
return (_value);
}
protected function stepperPressHandler(_arg1:ComponentEvent):void{
setValue(Number(inputField.text), false);
switch (_arg1.currentTarget){
case upArrow:
setValue(nextValue);
break;
case downArrow:
setValue(previousValue);
};
inputField.setFocus();
inputField.textField.setSelection(0, 0);
}
override public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
super.drawFocus(_arg1);
if (_arg1){
_local2 = Number(getStyleValue("focusRectPadding"));
uiFocusRect.width = (width + (_local2 * 2));
uiFocusRect.height = (height + (_local2 * 2));
};
}
protected function onTextChange(_arg1:Event):void{
_arg1.stopImmediatePropagation();
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 160
//ScrollBar (fl.controls.ScrollBar)
package fl.controls {
import flash.events.*;
import fl.core.*;
import fl.events.*;
public class ScrollBar extends UIComponent {
private var _direction:String;// = "vertical"
private var _minScrollPosition:Number;// = 0
private var _pageSize:Number;// = 10
private var _maxScrollPosition:Number;// = 0
protected var downArrow:BaseButton;
private var _lineScrollSize:Number;// = 1
protected var upArrow:BaseButton;
private var _scrollPosition:Number;// = 0
private var thumbScrollOffset:Number;
protected var track:BaseButton;
protected var thumb:LabelButton;
protected var inDrag:Boolean;// = false
private var _pageScrollSize:Number;// = 0
protected static const THUMB_STYLES:Object = {disabledSkin:"thumbDisabledSkin", downSkin:"thumbDownSkin", overSkin:"thumbOverSkin", upSkin:"thumbUpSkin", icon:"thumbIcon", textPadding:0};
public static const WIDTH:Number = 15;
protected static const DOWN_ARROW_STYLES:Object = {disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
protected static const UP_ARROW_STYLES:Object = {disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
protected static const TRACK_STYLES:Object = {disabledSkin:"trackDisabledSkin", downSkin:"trackDownSkin", overSkin:"trackOverSkin", upSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
private static var defaultStyles:Object = {downArrowDisabledSkin:"ScrollArrowDown_disabledSkin", downArrowDownSkin:"ScrollArrowDown_downSkin", downArrowOverSkin:"ScrollArrowDown_overSkin", downArrowUpSkin:"ScrollArrowDown_upSkin", thumbDisabledSkin:"ScrollThumb_upSkin", thumbDownSkin:"ScrollThumb_downSkin", thumbOverSkin:"ScrollThumb_overSkin", thumbUpSkin:"ScrollThumb_upSkin", trackDisabledSkin:"ScrollTrack_skin", trackDownSkin:"ScrollTrack_skin", trackOverSkin:"ScrollTrack_skin", trackUpSkin:"ScrollTrack_skin", upArrowDisabledSkin:"ScrollArrowUp_disabledSkin", upArrowDownSkin:"ScrollArrowUp_downSkin", upArrowOverSkin:"ScrollArrowUp_overSkin", upArrowUpSkin:"ScrollArrowUp_upSkin", thumbIcon:"ScrollBar_thumbIcon", repeatDelay:500, repeatInterval:35};
public function ScrollBar(){
setStyles();
focusEnabled = false;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
downArrow.enabled = (track.enabled = (thumb.enabled = (upArrow.enabled = ((enabled) && ((_maxScrollPosition > _minScrollPosition))))));
updateThumb();
}
override public function setSize(_arg1:Number, _arg2:Number):void{
if (_direction == ScrollBarDirection.HORIZONTAL){
super.setSize(_arg2, _arg1);
} else {
super.setSize(_arg1, _arg2);
};
}
public function set lineScrollSize(_arg1:Number):void{
if (_arg1 > 0){
_lineScrollSize = _arg1;
};
}
public function get minScrollPosition():Number{
return (_minScrollPosition);
}
protected function updateThumb():void{
var _local1:Number = ((_maxScrollPosition - _minScrollPosition) + _pageSize);
if ((((((track.height <= 12)) || ((_maxScrollPosition <= _minScrollPosition)))) || ((((_local1 == 0)) || (isNaN(_local1)))))){
thumb.height = 12;
thumb.visible = false;
} else {
thumb.height = Math.max(13, ((_pageSize / _local1) * track.height));
thumb.y = (track.y + ((track.height - thumb.height) * ((_scrollPosition - _minScrollPosition) / (_maxScrollPosition - _minScrollPosition))));
thumb.visible = enabled;
};
}
public function set minScrollPosition(_arg1:Number):void{
setScrollProperties(_pageSize, _arg1, _maxScrollPosition);
}
public function get lineScrollSize():Number{
return (_lineScrollSize);
}
public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{
var _local3:Number = scrollPosition;
_scrollPosition = Math.max(_minScrollPosition, Math.min(_maxScrollPosition, _arg1));
if (_local3 == _scrollPosition){
return;
};
if (_arg2){
dispatchEvent(new ScrollEvent(_direction, (scrollPosition - _local3), scrollPosition));
};
updateThumb();
}
public function get maxScrollPosition():Number{
return (_maxScrollPosition);
}
public function get scrollPosition():Number{
return (_scrollPosition);
}
override public function get height():Number{
return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.width : super.height);
}
public function get pageSize():Number{
return (_pageSize);
}
public function set maxScrollPosition(_arg1:Number):void{
setScrollProperties(_pageSize, _minScrollPosition, _arg1);
}
protected function thumbReleaseHandler(_arg1:MouseEvent):void{
inDrag = false;
mouseChildren = true;
thumb.mouseStateLocked = false;
stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler);
}
public function set pageScrollSize(_arg1:Number):void{
if (_arg1 >= 0){
_pageScrollSize = _arg1;
};
}
public function set scrollPosition(_arg1:Number):void{
setScrollPosition(_arg1, true);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
var _local1:Number;
if (isInvalid(InvalidationType.SIZE)){
_local1 = super.height;
downArrow.move(0, Math.max(upArrow.height, (_local1 - downArrow.height)));
track.setSize(WIDTH, Math.max(0, (_local1 - (downArrow.height + upArrow.height))));
updateThumb();
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
setStyles();
};
downArrow.drawNow();
upArrow.drawNow();
track.drawNow();
thumb.drawNow();
validate();
}
override public function get width():Number{
return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.height : super.width);
}
override protected function configUI():void{
super.configUI();
track = new BaseButton();
track.move(0, 14);
track.useHandCursor = false;
track.autoRepeat = true;
track.focusEnabled = false;
addChild(track);
thumb = new LabelButton();
thumb.label = "";
thumb.setSize(WIDTH, 15);
thumb.move(0, 15);
thumb.focusEnabled = false;
addChild(thumb);
downArrow = new BaseButton();
downArrow.setSize(WIDTH, 14);
downArrow.autoRepeat = true;
downArrow.focusEnabled = false;
addChild(downArrow);
upArrow = new BaseButton();
upArrow.setSize(WIDTH, 14);
upArrow.move(0, 0);
upArrow.autoRepeat = true;
upArrow.focusEnabled = false;
addChild(upArrow);
upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
track.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, false, 0, true);
enabled = false;
}
public function set pageSize(_arg1:Number):void{
if (_arg1 > 0){
_pageSize = _arg1;
};
}
public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{
this.pageSize = _arg1;
_minScrollPosition = _arg2;
_maxScrollPosition = _arg3;
if (_arg4 >= 0){
_pageScrollSize = _arg4;
};
enabled = (_maxScrollPosition > _minScrollPosition);
setScrollPosition(_scrollPosition, false);
updateThumb();
}
public function get pageScrollSize():Number{
return (((_pageScrollSize)==0) ? _pageSize : _pageScrollSize);
}
protected function handleThumbDrag(_arg1:MouseEvent):void{
var _local2:Number = Math.max(0, Math.min((track.height - thumb.height), ((mouseY - track.y) - thumbScrollOffset)));
setScrollPosition((((_local2 / (track.height - thumb.height)) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition));
}
protected function setStyles():void{
copyStylesToChild(downArrow, DOWN_ARROW_STYLES);
copyStylesToChild(thumb, THUMB_STYLES);
copyStylesToChild(track, TRACK_STYLES);
copyStylesToChild(upArrow, UP_ARROW_STYLES);
}
protected function scrollPressHandler(_arg1:ComponentEvent):void{
var _local2:Number;
var _local3:Number;
_arg1.stopImmediatePropagation();
if (_arg1.currentTarget == upArrow){
setScrollPosition((_scrollPosition - _lineScrollSize));
} else {
if (_arg1.currentTarget == downArrow){
setScrollPosition((_scrollPosition + _lineScrollSize));
} else {
_local2 = (((track.mouseY / track.height) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition);
_local3 = ((pageScrollSize)==0) ? pageSize : pageScrollSize;
if (_scrollPosition < _local2){
setScrollPosition(Math.min(_local2, (_scrollPosition + _local3)));
} else {
if (_scrollPosition > _local2){
setScrollPosition(Math.max(_local2, (_scrollPosition - _local3)));
};
};
};
};
}
protected function thumbPressHandler(_arg1:MouseEvent):void{
inDrag = true;
thumbScrollOffset = (mouseY - thumb.y);
thumb.mouseStateLocked = true;
mouseChildren = false;
stage.addEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, false, 0, true);
}
public function set direction(_arg1:String):void{
if (_direction == _arg1){
return;
};
_direction = _arg1;
if (isLivePreview){
return;
};
setScaleY(1);
var _local2 = (_direction == ScrollBarDirection.HORIZONTAL);
if (((_local2) && (componentInspectorSetting))){
if (rotation == 90){
return;
};
setScaleX(-1);
rotation = -90;
};
if (!componentInspectorSetting){
if (((_local2) && ((rotation == 0)))){
rotation = -90;
setScaleX(-1);
} else {
if (((!(_local2)) && ((rotation == -90)))){
rotation = 0;
setScaleX(1);
};
};
};
invalidate(InvalidationType.SIZE);
}
public function get direction():String{
return (_direction);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 161
//ScrollBarDirection (fl.controls.ScrollBarDirection)
package fl.controls {
public class ScrollBarDirection {
public static const HORIZONTAL:String = "horizontal";
public static const VERTICAL:String = "vertical";
}
}//package fl.controls
Section 162
//TextInput (fl.controls.TextInput)
package fl.controls {
import flash.events.*;
import flash.display.*;
import fl.core.*;
import flash.text.*;
import fl.managers.*;
import fl.events.*;
import flash.ui.*;
public class TextInput extends UIComponent implements IFocusManagerComponent {
protected var _html:Boolean;// = false
protected var background:DisplayObject;
protected var _savedHTML:String;
protected var _editable:Boolean;// = true
public var textField:TextField;
private static var defaultStyles:Object = {upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:0, embedFonts:false};
public static var createAccessibilityImplementation:Function;
public function set alwaysShowSelection(_arg1:Boolean):void{
textField.alwaysShowSelection = _arg1;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
updateTextFieldType();
}
public function get imeMode():String{
return (_imeMode);
}
protected function handleChange(_arg1:Event):void{
_arg1.stopPropagation();
dispatchEvent(new Event(Event.CHANGE, true));
}
public function set imeMode(_arg1:String):void{
_imeMode = _arg1;
}
protected function setEmbedFont(){
var _local1:Object = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
}
protected function drawLayout():void{
var _local1:Number = Number(getStyleValue("textPadding"));
if (background != null){
background.width = width;
background.height = height;
};
textField.width = (width - (2 * _local1));
textField.height = (height - (2 * _local1));
textField.x = (textField.y = _local1);
}
public function set condenseWhite(_arg1:Boolean):void{
textField.condenseWhite = _arg1;
}
public function get textWidth():Number{
return (textField.textWidth);
}
override protected function focusOutHandler(_arg1:FocusEvent):void{
super.focusOutHandler(_arg1);
if (editable){
setIMEMode(false);
};
}
override public function setFocus():void{
stage.focus = textField;
}
public function set displayAsPassword(_arg1:Boolean):void{
textField.displayAsPassword = _arg1;
}
protected function drawBackground():void{
var _local1:DisplayObject = background;
var _local2:String = (enabled) ? "upSkin" : "disabledSkin";
background = getDisplayObjectInstance(getStyleValue(_local2));
if (background == null){
return;
};
addChildAt(background, 0);
if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){
removeChild(_local1);
};
}
public function get text():String{
return (textField.text);
}
public function set maxChars(_arg1:int):void{
textField.maxChars = _arg1;
}
public function set horizontalScrollPosition(_arg1:int):void{
textField.scrollH = _arg1;
}
override protected function isOurFocus(_arg1:DisplayObject):Boolean{
return ((((_arg1 == textField)) || (super.isOurFocus(_arg1))));
}
public function get textHeight():Number{
return (textField.textHeight);
}
public function get restrict():String{
return (textField.restrict);
}
public function get alwaysShowSelection():Boolean{
return (textField.alwaysShowSelection);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
var _local1:Object;
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawTextFormat();
drawBackground();
_local1 = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
super.draw();
}
public function set editable(_arg1:Boolean):void{
_editable = _arg1;
updateTextFieldType();
}
public function setSelection(_arg1:int, _arg2:int):void{
textField.setSelection(_arg1, _arg2);
}
public function get condenseWhite():Boolean{
return (textField.condenseWhite);
}
public function get displayAsPassword():Boolean{
return (textField.displayAsPassword);
}
public function get selectionBeginIndex():int{
return (textField.selectionBeginIndex);
}
override protected function configUI():void{
super.configUI();
tabChildren = true;
textField = new TextField();
addChild(textField);
updateTextFieldType();
textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true);
textField.addEventListener(Event.CHANGE, handleChange, false, 0, true);
textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true);
}
public function get maxChars():int{
return (textField.maxChars);
}
public function set text(_arg1:String):void{
textField.text = _arg1;
_html = false;
invalidate(InvalidationType.DATA);
invalidate(InvalidationType.STYLES);
}
protected function updateTextFieldType():void{
textField.type = (((enabled) && (editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC;
textField.selectable = enabled;
}
protected function handleKeyDown(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.ENTER){
dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true));
};
}
public function get horizontalScrollPosition():int{
return (textField.scrollH);
}
public function get selectionEndIndex():int{
return (textField.selectionEndIndex);
}
public function get editable():Boolean{
return (_editable);
}
public function get maxHorizontalScrollPosition():int{
return (textField.maxScrollH);
}
public function appendText(_arg1:String):void{
textField.appendText(_arg1);
}
protected function drawTextFormat():void{
var _local1:Object = UIComponent.getStyleDefinition();
var _local2:TextFormat = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat);
textField.setTextFormat(_local2);
var _local3:TextFormat = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat);
if (_local3 != null){
textField.setTextFormat(_local3);
} else {
_local3 = _local2;
};
textField.defaultTextFormat = _local3;
setEmbedFont();
if (_html){
textField.htmlText = _savedHTML;
};
}
public function get length():int{
return (textField.length);
}
public function set htmlText(_arg1:String):void{
if (_arg1 == ""){
text = "";
return;
};
_html = true;
_savedHTML = _arg1;
textField.htmlText = _arg1;
invalidate(InvalidationType.DATA);
invalidate(InvalidationType.STYLES);
}
protected function handleTextInput(_arg1:TextEvent):void{
_arg1.stopPropagation();
dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text));
}
public function set restrict(_arg1:String):void{
if (((componentInspectorSetting) && ((_arg1 == "")))){
_arg1 = null;
};
textField.restrict = _arg1;
}
public function getLineMetrics(_arg1:int):TextLineMetrics{
return (textField.getLineMetrics(_arg1));
}
override public function drawFocus(_arg1:Boolean):void{
if (focusTarget != null){
focusTarget.drawFocus(_arg1);
return;
};
super.drawFocus(_arg1);
}
override protected function focusInHandler(_arg1:FocusEvent):void{
if (_arg1.target == this){
stage.focus = textField;
};
var _local2:IFocusManager = focusManager;
if (((editable) && (_local2))){
_local2.showFocusIndicator = true;
if (((textField.selectable) && ((textField.selectionBeginIndex == textField.selectionBeginIndex)))){
setSelection(0, textField.length);
};
};
super.focusInHandler(_arg1);
if (editable){
setIMEMode(true);
};
}
public function get htmlText():String{
return (textField.htmlText);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 163
//UIScrollBar (fl.controls.UIScrollBar)
package fl.controls {
import flash.events.*;
import fl.core.*;
import flash.text.*;
import fl.events.*;
public class UIScrollBar extends ScrollBar {
protected var inEdit:Boolean;// = false
protected var inScroll:Boolean;// = false
protected var _scrollTarget:TextField;
private static var defaultStyles:Object = {};
protected function updateScrollTargetProperties():void{
var _local1:Boolean;
var _local2:Number;
if (_scrollTarget == null){
setScrollProperties(pageSize, minScrollPosition, maxScrollPosition, pageScrollSize);
scrollPosition = 0;
} else {
_local1 = (direction == ScrollBarDirection.HORIZONTAL);
_local2 = (_local1) ? _scrollTarget.width : 10;
setScrollProperties(_local2, (_local1) ? 0 : 1, (_local1) ? _scrollTarget.maxScrollH : _scrollTarget.maxScrollV, pageScrollSize);
scrollPosition = (_local1) ? _scrollTarget.scrollH : _scrollTarget.scrollV;
};
}
override public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{
var _local5:Number = _arg3;
var _local6:Number = ((_arg2)<0) ? 0 : _arg2;
if (_scrollTarget != null){
if (direction == ScrollBarDirection.HORIZONTAL){
_local5 = ((_arg3)>_scrollTarget.maxScrollH) ? _scrollTarget.maxScrollH : _local5;
} else {
_local5 = ((_arg3)>_scrollTarget.maxScrollV) ? _scrollTarget.maxScrollV : _local5;
};
};
super.setScrollProperties(_arg1, _local6, _local5, _arg4);
}
protected function handleTargetScroll(_arg1:Event):void{
if (inDrag){
return;
};
if (!enabled){
return;
};
inEdit = true;
updateScrollTargetProperties();
scrollPosition = ((direction)==ScrollBarDirection.HORIZONTAL) ? _scrollTarget.scrollH : _scrollTarget.scrollV;
inEdit = false;
}
override public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{
super.setScrollPosition(_arg1, _arg2);
if (!_scrollTarget){
inScroll = false;
return;
};
updateTargetScroll();
}
public function get scrollTargetName():String{
return (_scrollTarget.name);
}
override protected function draw():void{
if (isInvalid(InvalidationType.DATA)){
updateScrollTargetProperties();
};
super.draw();
}
override public function set direction(_arg1:String):void{
if (isLivePreview){
return;
};
super.direction = _arg1;
updateScrollTargetProperties();
}
protected function updateTargetScroll(_arg1:ScrollEvent=null):void{
if (inEdit){
return;
};
if (direction == ScrollBarDirection.HORIZONTAL){
_scrollTarget.scrollH = scrollPosition;
} else {
_scrollTarget.scrollV = scrollPosition;
};
}
override public function set minScrollPosition(_arg1:Number):void{
super.minScrollPosition = ((_arg1)<0) ? 0 : _arg1;
}
override public function set maxScrollPosition(_arg1:Number):void{
var _local2:Number = _arg1;
if (_scrollTarget != null){
if (direction == ScrollBarDirection.HORIZONTAL){
_local2 = ((_local2)>_scrollTarget.maxScrollH) ? _scrollTarget.maxScrollH : _local2;
} else {
_local2 = ((_local2)>_scrollTarget.maxScrollV) ? _scrollTarget.maxScrollV : _local2;
};
};
super.maxScrollPosition = _local2;
}
protected function handleTargetChange(_arg1:Event):void{
inEdit = true;
setScrollPosition(((direction)==ScrollBarDirection.HORIZONTAL) ? _scrollTarget.scrollH : _scrollTarget.scrollV, true);
updateScrollTargetProperties();
inEdit = false;
}
public function update():void{
inEdit = true;
updateScrollTargetProperties();
inEdit = false;
}
public function set scrollTargetName(_arg1:String):void{
var target = _arg1;
try {
scrollTarget = (parent.getChildByName(target) as TextField);
} catch(error:Error) {
throw (new Error("ScrollTarget not found, or is not a TextField"));
};
}
public function set scrollTarget(_arg1:TextField):void{
if (_scrollTarget != null){
_scrollTarget.removeEventListener(Event.CHANGE, handleTargetChange, false);
_scrollTarget.removeEventListener(TextEvent.TEXT_INPUT, handleTargetChange, false);
_scrollTarget.removeEventListener(Event.SCROLL, handleTargetScroll, false);
removeEventListener(ScrollEvent.SCROLL, updateTargetScroll, false);
};
_scrollTarget = _arg1;
if (_scrollTarget != null){
_scrollTarget.addEventListener(Event.CHANGE, handleTargetChange, false, 0, true);
_scrollTarget.addEventListener(TextEvent.TEXT_INPUT, handleTargetChange, false, 0, true);
_scrollTarget.addEventListener(Event.SCROLL, handleTargetScroll, false, 0, true);
addEventListener(ScrollEvent.SCROLL, updateTargetScroll, false, 0, true);
};
invalidate(InvalidationType.DATA);
}
public function get scrollTarget():TextField{
return (_scrollTarget);
}
override public function get direction():String{
return (super.direction);
}
public static function getStyleDefinition():Object{
return (UIComponent.mergeStyles(defaultStyles, ScrollBar.getStyleDefinition()));
}
}
}//package fl.controls
Section 164
//ComponentShim (fl.core.ComponentShim)
package fl.core {
import flash.display.*;
public dynamic class ComponentShim extends MovieClip {
}
}//package fl.core
Section 165
//InvalidationType (fl.core.InvalidationType)
package fl.core {
public class InvalidationType {
public static const SIZE:String = "size";
public static const ALL:String = "all";
public static const DATA:String = "data";
public static const SCROLL:String = "scroll";
public static const STATE:String = "state";
public static const STYLES:String = "styles";
public static const SELECTED:String = "selected";
public static const RENDERER_STYLES:String = "rendererStyles";
}
}//package fl.core
Section 166
//UIComponent (fl.core.UIComponent)
package fl.core {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import fl.managers.*;
import fl.events.*;
import flash.utils.*;
import flash.system.*;
public class UIComponent extends Sprite {
protected var _x:Number;
protected var _enabled:Boolean;// = true
protected var callLaterMethods:Dictionary;
private var _mouseFocusEnabled:Boolean;// = true
private var tempText:TextField;
private var _focusEnabled:Boolean;// = true
protected var startHeight:Number;
protected var _height:Number;
protected var invalidateFlag:Boolean;// = false
protected var _oldIMEMode:String;// = null
protected var _inspector:Boolean;// = false
protected var startWidth:Number;
public var focusTarget:IFocusManagerComponent;
protected var errorCaught:Boolean;// = false
protected var invalidHash:Object;
protected var sharedStyles:Object;
protected var uiFocusRect:DisplayObject;
protected var isLivePreview:Boolean;// = false
protected var _imeMode:String;// = null
protected var _width:Number;
protected var instanceStyles:Object;
public var version:String;// = "3.0.0.16"
protected var isFocused:Boolean;// = false
protected var _y:Number;
public static var inCallLaterPhase:Boolean = false;
private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)};
public static var createAccessibilityImplementation:Function;
private static var focusManagers:Dictionary = new Dictionary(false);
public function UIComponent(){
instanceStyles = {};
sharedStyles = {};
invalidHash = {};
callLaterMethods = new Dictionary();
StyleManager.registerInstance(this);
configUI();
invalidate(InvalidationType.ALL);
tabEnabled = (this is IFocusManagerComponent);
focusRect = false;
if (tabEnabled){
addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
};
initializeFocusManager();
addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true);
}
public function getStyle(_arg1:String):Object{
return (instanceStyles[_arg1]);
}
protected function checkLivePreview():Boolean{
var className:String;
if (parent == null){
return (false);
};
try {
className = getQualifiedClassName(parent);
} catch(e:Error) {
};
return ((className == "fl.livepreview::LivePreviewParent"));
}
private function callLaterDispatcher(_arg1:Event):void{
var _local3:Object;
if (_arg1.type == Event.ADDED_TO_STAGE){
removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher);
stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true);
stage.invalidate();
return;
};
_arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher);
if (stage == null){
addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true);
return;
};
inCallLaterPhase = true;
var _local2:Dictionary = callLaterMethods;
for (_local3 in _local2) {
_local3();
delete _local2[_local3];
};
inCallLaterPhase = false;
}
protected function validate():void{
invalidHash = {};
}
protected function focusOutHandler(_arg1:FocusEvent):void{
if (isOurFocus((_arg1.target as DisplayObject))){
drawFocus(false);
isFocused = false;
};
}
public function set mouseFocusEnabled(_arg1:Boolean):void{
_mouseFocusEnabled = _arg1;
}
public function getFocus():InteractiveObject{
if (stage){
return (stage.focus);
};
return (null);
}
override public function get height():Number{
return (_height);
}
private function addedHandler(_arg1:Event):void{
removeEventListener("addedToStage", addedHandler);
initializeFocusManager();
}
protected function getStyleValue(_arg1:String):Object{
return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]);
}
public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{
invalidHash[_arg1] = true;
if (_arg2){
this.callLater(draw);
};
}
protected function isOurFocus(_arg1:DisplayObject):Boolean{
return ((_arg1 == this));
}
public function get enabled():Boolean{
return (_enabled);
}
protected function getScaleX():Number{
return (super.scaleX);
}
protected function getScaleY():Number{
return (super.scaleY);
}
public function get focusEnabled():Boolean{
return (_focusEnabled);
}
protected function afterComponentParameters():void{
}
override public function get scaleY():Number{
return ((height / startHeight));
}
protected function setIMEMode(_arg1:Boolean){
var enabled = _arg1;
if (_imeMode != null){
if (enabled){
IME.enabled = true;
_oldIMEMode = IME.conversionMode;
try {
if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){
IME.conversionMode = _imeMode;
};
errorCaught = false;
} catch(e:Error) {
errorCaught = true;
throw (new Error(("IME mode not supported: " + _imeMode)));
};
} else {
if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){
IME.conversionMode = _oldIMEMode;
};
IME.enabled = false;
};
};
}
protected function draw():void{
if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
};
validate();
}
override public function set height(_arg1:Number):void{
if (_height == _arg1){
return;
};
setSize(width, _arg1);
}
protected function configUI():void{
isLivePreview = checkLivePreview();
var _local1:Number = rotation;
rotation = 0;
var _local2:Number = super.width;
var _local3:Number = super.height;
var _local4 = 1;
super.scaleY = _local4;
super.scaleX = _local4;
setSize(_local2, _local3);
move(super.x, super.y);
rotation = _local1;
startWidth = _local2;
startHeight = _local3;
if (numChildren > 0){
removeChildAt(0);
};
}
protected function setScaleY(_arg1:Number):void{
super.scaleY = _arg1;
}
override public function get scaleX():Number{
return ((width / startWidth));
}
protected function setScaleX(_arg1:Number):void{
super.scaleX = _arg1;
}
private function initializeFocusManager():void{
if (stage == null){
addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true);
} else {
createFocusManager();
};
}
protected function keyDownHandler(_arg1:KeyboardEvent):void{
}
public function set focusManager(_arg1:IFocusManager):void{
UIComponent.focusManagers[this] = _arg1;
}
public function clearStyle(_arg1:String):void{
setStyle(_arg1, null);
}
protected function isInvalid(_arg1:String, ... _args):Boolean{
if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){
return (true);
};
while (_args.length > 0) {
if (invalidHash[_args.pop()]){
return (true);
};
};
return (false);
}
public function setStyle(_arg1:String, _arg2:Object):void{
if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
instanceStyles[_arg1] = _arg2;
invalidate(InvalidationType.STYLES);
}
override public function get visible():Boolean{
return (super.visible);
}
protected function focusInHandler(_arg1:FocusEvent):void{
var _local2:IFocusManager;
if (isOurFocus((_arg1.target as DisplayObject))){
_local2 = focusManager;
if (((_local2) && (_local2.showFocusIndicator))){
drawFocus(true);
isFocused = true;
};
};
}
public function get componentInspectorSetting():Boolean{
return (_inspector);
}
override public function get x():Number{
return ((isNaN(_x)) ? super.x : _x);
}
override public function get y():Number{
return ((isNaN(_y)) ? super.y : _y);
}
public function set enabled(_arg1:Boolean):void{
if (_arg1 == _enabled){
return;
};
_enabled = _arg1;
invalidate(InvalidationType.STATE);
}
public function setSize(_arg1:Number, _arg2:Number):void{
_width = _arg1;
_height = _arg2;
invalidate(InvalidationType.SIZE);
dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false));
}
protected function keyUpHandler(_arg1:KeyboardEvent):void{
}
public function setSharedStyle(_arg1:String, _arg2:Object):void{
if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
sharedStyles[_arg1] = _arg2;
if (instanceStyles[_arg1] == null){
invalidate(InvalidationType.STYLES);
};
}
public function set focusEnabled(_arg1:Boolean):void{
_focusEnabled = _arg1;
}
override public function set width(_arg1:Number):void{
if (_width == _arg1){
return;
};
setSize(_arg1, height);
}
public function setFocus():void{
if (stage){
stage.focus = this;
};
}
override public function set scaleX(_arg1:Number):void{
setSize((startWidth * _arg1), height);
}
public function get mouseFocusEnabled():Boolean{
return (_mouseFocusEnabled);
}
override public function set scaleY(_arg1:Number):void{
setSize(width, (startHeight * _arg1));
}
protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{
var skin = _arg1;
var classDef:Object;
if ((skin is Class)){
return ((new (skin) as DisplayObject));
};
if ((skin is DisplayObject)){
(skin as DisplayObject).x = 0;
(skin as DisplayObject).y = 0;
return ((skin as DisplayObject));
};
try {
classDef = getDefinitionByName(skin.toString());
} catch(e:Error) {
try {
classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object);
} catch(e:Error) {
};
};
if (classDef == null){
return (null);
};
return ((new (classDef) as DisplayObject));
}
protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{
var _local3:String;
for (_local3 in _arg2) {
_arg1.setStyle(_local3, getStyleValue(_arg2[_local3]));
};
}
protected function initializeAccessibility():void{
if (UIComponent.createAccessibilityImplementation != null){
UIComponent.createAccessibilityImplementation(this);
};
}
public function get focusManager():IFocusManager{
var _local1:DisplayObject = this;
while (_local1) {
if (UIComponent.focusManagers[_local1] != null){
return (IFocusManager(UIComponent.focusManagers[_local1]));
};
_local1 = _local1.parent;
};
return (null);
}
override public function get width():Number{
return (_width);
}
protected function beforeComponentParameters():void{
}
protected function callLater(_arg1:Function):void{
if (inCallLaterPhase){
return;
};
callLaterMethods[_arg1] = true;
if (stage != null){
stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true);
stage.invalidate();
} else {
addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true);
};
}
public function move(_arg1:Number, _arg2:Number):void{
_x = _arg1;
_y = _arg2;
super.x = Math.round(_arg1);
super.y = Math.round(_arg2);
dispatchEvent(new ComponentEvent(ComponentEvent.MOVE));
}
public function validateNow():void{
invalidate(InvalidationType.ALL, false);
draw();
}
override public function set visible(_arg1:Boolean):void{
if (super.visible == _arg1){
return;
};
super.visible = _arg1;
var _local2:String = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE;
dispatchEvent(new ComponentEvent(_local2, true));
}
protected function createFocusManager():void{
if (focusManagers[stage] == null){
focusManagers[stage] = new FocusManager(stage);
};
}
protected function hookAccessibility(_arg1:Event):void{
removeEventListener(Event.ENTER_FRAME, hookAccessibility);
initializeAccessibility();
}
public function set componentInspectorSetting(_arg1:Boolean):void{
_inspector = _arg1;
if (_inspector){
beforeComponentParameters();
} else {
afterComponentParameters();
};
}
override public function set y(_arg1:Number):void{
move(_x, _arg1);
}
public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
isFocused = _arg1;
if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){
removeChild(uiFocusRect);
uiFocusRect = null;
};
if (_arg1){
uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite);
if (uiFocusRect == null){
return;
};
_local2 = Number(getStyleValue("focusRectPadding"));
uiFocusRect.x = -(_local2);
uiFocusRect.y = -(_local2);
uiFocusRect.width = (width + (_local2 * 2));
uiFocusRect.height = (height + (_local2 * 2));
addChildAt(uiFocusRect, 0);
};
}
override public function set x(_arg1:Number):void{
move(_arg1, _y);
}
public function drawNow():void{
draw();
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
public static function mergeStyles(... _args):Object{
var _local5:Object;
var _local6:String;
var _local2:Object = {};
var _local3:uint = _args.length;
var _local4:uint;
while (_local4 < _local3) {
_local5 = _args[_local4];
for (_local6 in _local5) {
if (_local2[_local6] != null){
} else {
_local2[_local6] = _args[_local4][_local6];
};
};
_local4++;
};
return (_local2);
}
}
}//package fl.core
Section 167
//ComponentEvent (fl.events.ComponentEvent)
package fl.events {
import flash.events.*;
public class ComponentEvent extends Event {
public static const HIDE:String = "hide";
public static const BUTTON_DOWN:String = "buttonDown";
public static const MOVE:String = "move";
public static const RESIZE:String = "resize";
public static const ENTER:String = "enter";
public static const LABEL_CHANGE:String = "labelChange";
public static const SHOW:String = "show";
public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("ComponentEvent", "type", "bubbles", "cancelable"));
}
override public function clone():Event{
return (new ComponentEvent(type, bubbles, cancelable));
}
}
}//package fl.events
Section 168
//ScrollEvent (fl.events.ScrollEvent)
package fl.events {
import flash.events.*;
public class ScrollEvent extends Event {
private var _direction:String;
private var _position:Number;
private var _delta:Number;
public static const SCROLL:String = "scroll";
public function ScrollEvent(_arg1:String, _arg2:Number, _arg3:Number){
super(ScrollEvent.SCROLL, false, false);
_direction = _arg1;
_delta = _arg2;
_position = _arg3;
}
public function get position():Number{
return (_position);
}
public function get direction():String{
return (_direction);
}
public function get delta():Number{
return (_delta);
}
override public function toString():String{
return (formatToString("ScrollEvent", "type", "bubbles", "cancelable", "direction", "delta", "position"));
}
override public function clone():Event{
return (new ScrollEvent(_direction, _delta, _position));
}
}
}//package fl.events
Section 169
//FocusManager (fl.managers.FocusManager)
package fl.managers {
import flash.events.*;
import flash.display.*;
import fl.controls.*;
import fl.core.*;
import flash.text.*;
import flash.utils.*;
import flash.ui.*;
public class FocusManager implements IFocusManager {
private var focusableObjects:Dictionary;
private var _showFocusIndicator:Boolean;// = true
private var defButton:Button;
private var focusableCandidates:Array;
private var _form:DisplayObjectContainer;
private var _defaultButtonEnabled:Boolean;// = true
private var activated:Boolean;// = false
private var _defaultButton:Button;
private var calculateCandidates:Boolean;// = true
private var lastFocus:InteractiveObject;
private var lastAction:String;
public function FocusManager(_arg1:DisplayObjectContainer){
focusableObjects = new Dictionary(true);
if (_arg1 != null){
_form = _arg1;
addFocusables(DisplayObject(_arg1));
_arg1.addEventListener(Event.ADDED, addedHandler);
_arg1.addEventListener(Event.REMOVED, removedHandler);
activate();
};
}
public function get showFocusIndicator():Boolean{
return (_showFocusIndicator);
}
private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{
var _local7:DisplayObject;
var _local8:IFocusManagerGroup;
var _local9:int;
var _local10:DisplayObject;
var _local11:IFocusManagerGroup;
var _local5:int = focusableCandidates.length;
var _local6:int = _arg1;
while (true) {
if (_arg2){
_arg1--;
} else {
_arg1++;
};
if (_arg3){
if (((_arg2) && ((_arg1 < 0)))){
break;
};
if (((!(_arg2)) && ((_arg1 == _local5)))){
break;
};
} else {
_arg1 = ((_arg1 + _local5) % _local5);
if (_local6 == _arg1){
break;
};
};
if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){
_local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1]));
if ((_local7 is IFocusManagerGroup)){
_local8 = IFocusManagerGroup(_local7);
_local9 = 0;
while (_local9 < focusableCandidates.length) {
_local10 = focusableCandidates[_local9];
if ((_local10 is IFocusManagerGroup)){
_local11 = IFocusManagerGroup(_local10);
if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){
_arg1 = _local9;
break;
};
};
_local9++;
};
};
return (_arg1);
};
};
return (_arg1);
}
private function mouseFocusChangeHandler(_arg1:FocusEvent):void{
if ((_arg1.relatedObject is TextField)){
return;
};
_arg1.preventDefault();
}
public function set form(_arg1:DisplayObjectContainer):void{
_form = _arg1;
}
private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{
var focusable:IFocusManagerComponent;
var io:InteractiveObject;
var doc:DisplayObjectContainer;
var i:int;
var child:DisplayObject;
var o = _arg1;
var skipTopLevel = _arg2;
if (!skipTopLevel){
if ((o is IFocusManagerComponent)){
focusable = IFocusManagerComponent(o);
if (focusable.focusEnabled){
if (((focusable.tabEnabled) && (isTabVisible(o)))){
focusableObjects[o] = true;
calculateCandidates = true;
};
o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
};
} else {
if ((o is InteractiveObject)){
io = (o as InteractiveObject);
if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){
focusableObjects[io] = true;
calculateCandidates = true;
};
io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
};
};
};
if ((o is DisplayObjectContainer)){
doc = DisplayObjectContainer(o);
o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler);
if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){
i = 0;
while (i < doc.numChildren) {
try {
child = doc.getChildAt(i);
if (child != null){
addFocusables(doc.getChildAt(i));
};
} catch(error:SecurityError) {
};
i = (i + 1);
};
};
};
}
private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{
return (_arg1.getChildIndex(_arg2));
}
public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{
var _local2:InteractiveObject = _arg1;
while (_arg1) {
if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){
return (_arg1);
};
_arg1 = _arg1.parent;
};
return (_local2);
}
private function focusOutHandler(_arg1:FocusEvent):void{
var _local2:InteractiveObject = (_arg1.target as InteractiveObject);
}
private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{
var _local3:IFocusManagerGroup;
if (!isEnabledAndVisible(_arg1)){
return (false);
};
if ((_arg1 is IFocusManagerGroup)){
_local3 = IFocusManagerGroup(_arg1);
if (_arg2 == _local3.groupName){
return (false);
};
};
return (true);
}
private function setFocusToNextObject(_arg1:FocusEvent):void{
if (!hasFocusableObjects()){
return;
};
var _local2:InteractiveObject = getNextFocusManagerComponent(_arg1.shiftKey);
if (_local2){
setFocus(_local2);
};
}
private function sortFocusableObjectsTabIndex():void{
var _local1:Object;
var _local2:InteractiveObject;
focusableCandidates = [];
for (_local1 in focusableObjects) {
_local2 = InteractiveObject(_local1);
if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){
focusableCandidates.push(_local2);
};
};
focusableCandidates.sort(sortByTabIndex);
}
private function removeFocusables(_arg1:DisplayObject):void{
var _local2:Object;
var _local3:DisplayObject;
if ((_arg1 is DisplayObjectContainer)){
_arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler);
_arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
for (_local2 in focusableObjects) {
_local3 = DisplayObject(_local2);
if (DisplayObjectContainer(_arg1).contains(_local3)){
if (_local3 == lastFocus){
lastFocus = null;
};
_local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
delete focusableObjects[_local2];
calculateCandidates = true;
};
};
};
}
private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{
while (_arg1 != InteractiveObject(form)) {
if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){
return (_arg1);
};
_arg1 = _arg1.parent;
if (_arg1 == null){
break;
};
};
return (null);
}
public function sendDefaultButtonEvent():void{
defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
private function addedHandler(_arg1:Event):void{
var _local2:DisplayObject = DisplayObject(_arg1.target);
if (_local2.stage){
addFocusables(DisplayObject(_arg1.target));
};
}
private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{
var _local3:TextField;
var _local4:SimpleButton;
var _local2:DisplayObjectContainer = DisplayObject(form).parent;
while (_arg1 != _local2) {
if ((_arg1 is UIComponent)){
if (!UIComponent(_arg1).enabled){
return (false);
};
} else {
if ((_arg1 is TextField)){
_local3 = TextField(_arg1);
if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){
return (false);
};
} else {
if ((_arg1 is SimpleButton)){
_local4 = SimpleButton(_arg1);
if (!_local4.enabled){
return (false);
};
};
};
};
if (!_arg1.visible){
return (false);
};
_arg1 = _arg1.parent;
};
return (true);
}
private function tabChildrenChangeHandler(_arg1:Event):void{
if (_arg1.target != _arg1.currentTarget){
return;
};
calculateCandidates = true;
var _local2:DisplayObjectContainer = DisplayObjectContainer(_arg1.target);
if (_local2.tabChildren){
addFocusables(_local2, true);
} else {
removeFocusables(_local2);
};
}
private function deactivateHandler(_arg1:Event):void{
var _local2:InteractiveObject = InteractiveObject(_arg1.target);
}
public function setFocus(_arg1:InteractiveObject):void{
if ((_arg1 is IFocusManagerComponent)){
IFocusManagerComponent(_arg1).setFocus();
} else {
form.stage.focus = _arg1;
};
}
public function getFocus():InteractiveObject{
var _local1:InteractiveObject = form.stage.focus;
return (findFocusManagerComponent(_local1));
}
private function hasFocusableObjects():Boolean{
var _local1:Object;
for (_local1 in focusableObjects) {
return (true);
};
return (false);
}
private function tabIndexChangeHandler(_arg1:Event):void{
calculateCandidates = true;
}
public function set defaultButton(_arg1:Button):void{
var _local2:Button = (_arg1) ? Button(_arg1) : null;
if (_local2 != _defaultButton){
if (_defaultButton){
_defaultButton.emphasized = false;
};
if (defButton){
defButton.emphasized = false;
};
_defaultButton = _local2;
defButton = _local2;
if (_local2){
_local2.emphasized = true;
};
};
}
private function sortFocusableObjects():void{
var _local1:Object;
var _local2:InteractiveObject;
focusableCandidates = [];
for (_local1 in focusableObjects) {
_local2 = InteractiveObject(_local1);
if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){
sortFocusableObjectsTabIndex();
return;
};
focusableCandidates.push(_local2);
};
focusableCandidates.sort(sortByDepth);
}
private function keyFocusChangeHandler(_arg1:FocusEvent):void{
showFocusIndicator = true;
if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){
setFocusToNextObject(_arg1);
_arg1.preventDefault();
};
}
private function getIndexOfFocusedObject(_arg1:DisplayObject):int{
var _local2:int = focusableCandidates.length;
var _local3:int;
_local3 = 0;
while (_local3 < _local2) {
if (focusableCandidates[_local3] == _arg1){
return (_local3);
};
_local3++;
};
return (-1);
}
public function hideFocus():void{
}
private function removedHandler(_arg1:Event):void{
var _local2:int;
var _local4:InteractiveObject;
var _local3:DisplayObject = DisplayObject(_arg1.target);
if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){
if (_local3 == lastFocus){
IFocusManagerComponent(lastFocus).drawFocus(false);
lastFocus = null;
};
_local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
delete focusableObjects[_local3];
calculateCandidates = true;
} else {
if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){
_local4 = (_local3 as InteractiveObject);
if (_local4){
if (_local4 == lastFocus){
lastFocus = null;
};
delete focusableObjects[_local4];
calculateCandidates = true;
};
_local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
};
};
removeFocusables(_local3);
}
private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{
var _local5:int;
var _local6:String;
var _local7:String;
var _local3 = "";
var _local4 = "";
var _local8 = "0000";
var _local9:DisplayObject = DisplayObject(_arg1);
var _local10:DisplayObject = DisplayObject(_arg2);
while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) {
_local5 = getChildIndex(_local9.parent, _local9);
_local6 = _local5.toString(16);
if (_local6.length < 4){
_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
};
_local3 = (_local7 + _local3);
_local9 = _local9.parent;
};
while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) {
_local5 = getChildIndex(_local10.parent, _local10);
_local6 = _local5.toString(16);
if (_local6.length < 4){
_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
};
_local4 = (_local7 + _local4);
_local10 = _local10.parent;
};
return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0);
}
public function get defaultButton():Button{
return (_defaultButton);
}
private function activateHandler(_arg1:Event):void{
var _local2:InteractiveObject = InteractiveObject(_arg1.target);
if (lastFocus){
if ((lastFocus is IFocusManagerComponent)){
IFocusManagerComponent(lastFocus).setFocus();
} else {
form.stage.focus = lastFocus;
};
};
lastAction = "ACTIVATE";
}
public function showFocus():void{
}
public function set defaultButtonEnabled(_arg1:Boolean):void{
_defaultButtonEnabled = _arg1;
}
public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{
var _local8:IFocusManagerGroup;
if (!hasFocusableObjects()){
return (null);
};
if (calculateCandidates){
sortFocusableObjects();
calculateCandidates = false;
};
var _local2:DisplayObject = form.stage.focus;
_local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2)));
var _local3 = "";
if ((_local2 is IFocusManagerGroup)){
_local8 = IFocusManagerGroup(_local2);
_local3 = _local8.groupName;
};
var _local4:int = getIndexOfFocusedObject(_local2);
var _local5:Boolean;
var _local6:int = _local4;
if (_local4 == -1){
if (_arg1){
_local4 = focusableCandidates.length;
};
_local5 = true;
};
var _local7:int = getIndexOfNextObject(_local4, _arg1, _local5, _local3);
return (findFocusManagerComponent(focusableCandidates[_local7]));
}
private function mouseDownHandler(_arg1:MouseEvent):void{
if (_arg1.isDefaultPrevented()){
return;
};
var _local2:InteractiveObject = getTopLevelFocusTarget(InteractiveObject(_arg1.target));
if (!_local2){
return;
};
showFocusIndicator = false;
if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){
setFocus(_local2);
};
lastAction = "MOUSEDOWN";
}
private function isTabVisible(_arg1:DisplayObject):Boolean{
var _local2:DisplayObjectContainer = _arg1.parent;
while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) {
if (!_local2.tabChildren){
return (false);
};
_local2 = _local2.parent;
};
return (true);
}
public function get nextTabIndex():int{
return (0);
}
private function keyDownHandler(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.TAB){
lastAction = "KEY";
if (calculateCandidates){
sortFocusableObjects();
calculateCandidates = false;
};
};
if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){
sendDefaultButtonEvent();
};
}
private function focusInHandler(_arg1:FocusEvent):void{
var _local3:Button;
var _local2:InteractiveObject = InteractiveObject(_arg1.target);
if (form.contains(_local2)){
lastFocus = findFocusManagerComponent(InteractiveObject(_local2));
if ((lastFocus is Button)){
_local3 = Button(lastFocus);
if (defButton){
defButton.emphasized = false;
defButton = _local3;
_local3.emphasized = true;
};
} else {
if (((defButton) && (!((defButton == _defaultButton))))){
defButton.emphasized = false;
defButton = _defaultButton;
_defaultButton.emphasized = true;
};
};
};
}
private function tabEnabledChangeHandler(_arg1:Event):void{
calculateCandidates = true;
var _local2:InteractiveObject = InteractiveObject(_arg1.target);
var _local3 = (focusableObjects[_local2] == true);
if (_local2.tabEnabled){
if (((!(_local3)) && (isTabVisible(_local2)))){
if (!(_local2 is IFocusManagerComponent)){
_local2.focusRect = false;
};
focusableObjects[_local2] = true;
};
} else {
if (_local3){
delete focusableObjects[_local2];
};
};
}
public function set showFocusIndicator(_arg1:Boolean):void{
_showFocusIndicator = _arg1;
}
public function get form():DisplayObjectContainer{
return (_form);
}
private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{
return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2));
}
public function get defaultButtonEnabled():Boolean{
return (_defaultButtonEnabled);
}
public function activate():void{
if (activated){
return;
};
form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true);
form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true);
form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true);
form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true);
form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
activated = true;
if (lastFocus){
setFocus(lastFocus);
};
}
public function deactivate():void{
form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
form.stage.removeEventListener(Event.ACTIVATE, activateHandler);
form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler);
form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
activated = false;
}
}
}//package fl.managers
Section 170
//IFocusManager (fl.managers.IFocusManager)
package fl.managers {
import flash.display.*;
import fl.controls.*;
public interface IFocusManager {
function getFocus():InteractiveObject;
function deactivate():void;
function set defaultButton(_arg1:Button):void;
function set showFocusIndicator(_arg1:Boolean):void;
function get defaultButtonEnabled():Boolean;
function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject;
function get nextTabIndex():int;
function get defaultButton():Button;
function get showFocusIndicator():Boolean;
function hideFocus():void;
function activate():void;
function showFocus():void;
function set defaultButtonEnabled(_arg1:Boolean):void;
function setFocus(_arg1:InteractiveObject):void;
function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject;
}
}//package fl.managers
Section 171
//IFocusManagerComponent (fl.managers.IFocusManagerComponent)
package fl.managers {
public interface IFocusManagerComponent {
function set focusEnabled(_arg1:Boolean):void;
function drawFocus(_arg1:Boolean):void;
function setFocus():void;
function get focusEnabled():Boolean;
function get tabEnabled():Boolean;
function get tabIndex():int;
function get mouseFocusEnabled():Boolean;
}
}//package fl.managers
Section 172
//IFocusManagerGroup (fl.managers.IFocusManagerGroup)
package fl.managers {
public interface IFocusManagerGroup {
function get groupName():String;
function get selected():Boolean;
function set groupName(_arg1:String):void;
function set selected(_arg1:Boolean):void;
}
}//package fl.managers
Section 173
//StyleManager (fl.managers.StyleManager)
package fl.managers {
import fl.core.*;
import flash.text.*;
import flash.utils.*;
public class StyleManager {
private var classToInstancesDict:Dictionary;
private var globalStyles:Object;
private var styleToClassesHash:Object;
private var classToStylesDict:Dictionary;
private var classToDefaultStylesDict:Dictionary;
private static var _instance:StyleManager;
public function StyleManager(){
styleToClassesHash = {};
classToInstancesDict = new Dictionary(true);
classToStylesDict = new Dictionary(true);
classToDefaultStylesDict = new Dictionary(true);
globalStyles = UIComponent.getStyleDefinition();
}
public static function clearComponentStyle(_arg1:Object, _arg2:String):void{
var _local3:Class = getClassDef(_arg1);
var _local4:Object = getInstance().classToStylesDict[_local3];
if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){
delete _local4[_arg2];
invalidateComponentStyle(_local3, _arg2);
};
}
private static function getClassDef(_arg1:Object):Class{
var component = _arg1;
if ((component is Class)){
return ((component as Class));
};
try {
return ((getDefinitionByName(getQualifiedClassName(component)) as Class));
} catch(e:Error) {
if ((component is UIComponent)){
try {
return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class));
} catch(e:Error) {
};
};
};
return (null);
}
public static function clearStyle(_arg1:String):void{
setStyle(_arg1, null);
}
public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{
var _local4:Class = getClassDef(_arg1);
var _local5:Object = getInstance().classToStylesDict[_local4];
if (_local5 == null){
_local5 = (getInstance().classToStylesDict[_local4] = {});
};
if (_local5 == _arg3){
return;
};
_local5[_arg2] = _arg3;
invalidateComponentStyle(_local4, _arg2);
}
private static function setSharedStyles(_arg1:UIComponent):void{
var _local5:String;
var _local2:StyleManager = getInstance();
var _local3:Class = getClassDef(_arg1);
var _local4:Object = _local2.classToDefaultStylesDict[_local3];
for (_local5 in _local4) {
_arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5));
};
}
public static function getComponentStyle(_arg1:Object, _arg2:String):Object{
var _local3:Class = getClassDef(_arg1);
var _local4:Object = getInstance().classToStylesDict[_local3];
return (((_local4)==null) ? null : _local4[_arg2]);
}
private static function getInstance(){
if (_instance == null){
_instance = new (StyleManager);
};
return (_instance);
}
private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{
var _local4:Object;
var _local5:UIComponent;
var _local3:Dictionary = getInstance().classToInstancesDict[_arg1];
if (_local3 == null){
return;
};
for (_local4 in _local3) {
_local5 = (_local4 as UIComponent);
if (_local5 == null){
} else {
_local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2));
};
};
}
private static function invalidateStyle(_arg1:String):void{
var _local3:Object;
var _local2:Dictionary = getInstance().styleToClassesHash[_arg1];
if (_local2 == null){
return;
};
for (_local3 in _local2) {
invalidateComponentStyle(Class(_local3), _arg1);
};
}
public static function registerInstance(_arg1:UIComponent):void{
var target:Class;
var defaultStyles:Object;
var styleToClasses:Object;
var n:String;
var instance = _arg1;
var inst:StyleManager = getInstance();
var classDef:Class = getClassDef(instance);
if (classDef == null){
return;
};
if (inst.classToInstancesDict[classDef] == null){
inst.classToInstancesDict[classDef] = new Dictionary(true);
target = classDef;
while (defaultStyles == null) {
if (target["getStyleDefinition"] != null){
defaultStyles = target["getStyleDefinition"]();
break;
};
try {
target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class);
} catch(err:Error) {
try {
target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class);
} catch(e:Error) {
defaultStyles = UIComponent.getStyleDefinition();
break;
};
};
};
styleToClasses = inst.styleToClassesHash;
for (n in defaultStyles) {
if (styleToClasses[n] == null){
styleToClasses[n] = new Dictionary(true);
};
styleToClasses[n][classDef] = true;
};
inst.classToDefaultStylesDict[classDef] = defaultStyles;
if (inst.classToStylesDict[classDef] == null){
inst.classToStylesDict[classDef] = {};
};
};
inst.classToInstancesDict[classDef][instance] = true;
setSharedStyles(instance);
}
public static function getStyle(_arg1:String):Object{
return (getInstance().globalStyles[_arg1]);
}
private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{
var _local3:Class = getClassDef(_arg1);
var _local4:StyleManager = getInstance();
var _local5:Object = _local4.classToStylesDict[_local3][_arg2];
if (_local5 != null){
return (_local5);
};
_local5 = _local4.globalStyles[_arg2];
if (_local5 != null){
return (_local5);
};
return (_local4.classToDefaultStylesDict[_local3][_arg2]);
}
public static function setStyle(_arg1:String, _arg2:Object):void{
var _local3:Object = getInstance().globalStyles;
if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
_local3[_arg1] = _arg2;
invalidateStyle(_arg1);
}
}
}//package fl.managers
Section 174
//None (fl.transitions.easing.None)
package fl.transitions.easing {
public class None {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
}
}//package fl.transitions.easing
Section 175
//Tween (fl.transitions.Tween)
package fl.transitions {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class Tween extends EventDispatcher {
private var _position:Number;// = NAN
public var prevTime:Number;// = NAN
public var prevPos:Number;// = NAN
public var isPlaying:Boolean;// = false
private var _fps:Number;// = NAN
private var _time:Number;// = NAN
public var begin:Number;// = NAN
private var _finish:Number;// = NAN
public var change:Number;// = NAN
public var looping:Boolean;// = false
private var _intervalID:uint;// = 0
public var func:Function;
private var _timer:Timer;// = null
private var _startTime:Number;// = NAN
public var prop:String;// = ""
private var _duration:Number;// = NAN
public var obj:Object;// = null
public var useSeconds:Boolean;// = false
protected static var _mc:MovieClip = new MovieClip();
public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){
this.func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
};
super();
if (!arguments.length){
return;
};
this.obj = _arg1;
this.prop = _arg2;
this.begin = _arg4;
this.position = _arg4;
this.duration = _arg6;
this.useSeconds = _arg7;
if ((_arg3 is Function)){
this.func = _arg3;
};
this.finish = _arg5;
this._timer = new Timer(100);
this.start();
}
public function continueTo(_arg1:Number, _arg2:Number):void{
this.begin = this.position;
this.finish = _arg1;
if (!isNaN(_arg2)){
this.duration = _arg2;
};
this.start();
}
protected function startEnterFrame():void{
var _local1:Number;
if (isNaN(this._fps)){
_mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true);
} else {
_local1 = (1000 / this._fps);
this._timer.delay = _local1;
this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true);
this._timer.start();
};
this.isPlaying = true;
}
public function stop():void{
this.stopEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position));
}
private function fixTime():void{
if (this.useSeconds){
this._startTime = (getTimer() - (this._time * 1000));
};
}
public function set FPS(_arg1:Number):void{
var _local2:Boolean = this.isPlaying;
this.stopEnterFrame();
this._fps = _arg1;
if (_local2){
this.startEnterFrame();
};
}
public function get finish():Number{
return ((this.begin + this.change));
}
public function get duration():Number{
return (this._duration);
}
protected function stopEnterFrame():void{
if (isNaN(this._fps)){
_mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame);
} else {
this._timer.stop();
};
this.isPlaying = false;
}
public function set time(_arg1:Number):void{
this.prevTime = this._time;
if (_arg1 > this.duration){
if (this.looping){
this.rewind((_arg1 - this._duration));
this.update();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position));
} else {
if (this.useSeconds){
this._time = this._duration;
this.update();
};
this.stop();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position));
};
} else {
if (_arg1 < 0){
this.rewind();
this.update();
} else {
this._time = _arg1;
this.update();
};
};
}
public function getPosition(_arg1:Number=NaN):Number{
if (isNaN(_arg1)){
_arg1 = this._time;
};
return (this.func(_arg1, this.begin, this.change, this._duration));
}
public function set finish(_arg1:Number):void{
this.change = (_arg1 - this.begin);
}
public function set duration(_arg1:Number):void{
this._duration = ((_arg1)<=0) ? Infinity : _arg1;
}
public function get position():Number{
return (this.getPosition(this._time));
}
public function setPosition(_arg1:Number):void{
this.prevPos = this._position;
if (this.prop.length){
this.obj[this.prop] = (this._position = _arg1);
};
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position));
}
public function resume():void{
this.fixTime();
this.startEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position));
}
public function fforward():void{
this.time = this._duration;
this.fixTime();
}
protected function onEnterFrame(_arg1:Event):void{
this.nextFrame();
}
public function yoyo():void{
this.continueTo(this.begin, this.time);
}
public function nextFrame():void{
if (this.useSeconds){
this.time = ((getTimer() - this._startTime) / 1000);
} else {
this.time = (this._time + 1);
};
}
protected function timerHandler(_arg1:TimerEvent):void{
this.nextFrame();
_arg1.updateAfterEvent();
}
public function get FPS():Number{
return (this._fps);
}
public function rewind(_arg1:Number=0):void{
this._time = _arg1;
this.fixTime();
this.update();
}
public function set position(_arg1:Number):void{
this.setPosition(_arg1);
}
public function get time():Number{
return (this._time);
}
private function update():void{
this.setPosition(this.getPosition(this._time));
}
public function start():void{
this.rewind();
this.startEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position));
}
public function prevFrame():void{
if (!this.useSeconds){
this.time = (this._time - 1);
};
}
}
}//package fl.transitions
Section 176
//TweenEvent (fl.transitions.TweenEvent)
package fl.transitions {
import flash.events.*;
public class TweenEvent extends Event {
public var position:Number;// = NAN
public var time:Number;// = NAN
public static const MOTION_START:String = "motionStart";
public static const MOTION_STOP:String = "motionStop";
public static const MOTION_LOOP:String = "motionLoop";
public static const MOTION_CHANGE:String = "motionChange";
public static const MOTION_FINISH:String = "motionFinish";
public static const MOTION_RESUME:String = "motionResume";
public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){
super(_arg1, _arg4, _arg5);
this.time = _arg2;
this.position = _arg3;
}
override public function clone():Event{
return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable));
}
}
}//package fl.transitions
Section 177
//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {
public class MochiCoins {
public static const STORE_HIDE:String = "StoreHide";
public static const LOGGED_IN:String = "LoggedIn";
public static const STORE_ITEMS:String = "StoreItems";
public static const NO_USER:String = "NoUser";
public static const PROPERTIES_SIZE:String = "PropertiesSize";
public static const ITEM_NEW:String = "ItemNew";
public static const USER_INFO:String = "UserInfo";
public static const IO_ERROR:String = "IOError";
public static const ITEM_OWNED:String = "ItemOwned";
public static const PROPERTIES_SAVED:String = "PropertySaved";
public static const WIDGET_LOADED:String = "WidgetLoaded";
public static const ERROR:String = "Error";
public static const LOGGED_OUT:String = "LoggedOut";
public static const PROFILE_SHOW:String = "ProfileShow";
public static const LOGIN_HIDE:String = "LoginHide";
public static const LOGIN_SHOW:String = "LoginShow";
public static const STORE_SHOW:String = "StoreShow";
public static const PROFILE_HIDE:String = "ProfileHide";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
public static function showItem(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showItem call must pass an Object with an item key");
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showItem", {options:_arg1}, null, null);
}
public static function saveUserProperties(_arg1:Object):void{
MochiServices.send("coins_saveUserProperties", _arg1);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function showLoginWidget(_arg1:Object=null):void{
MochiServices.setContainer();
MochiServices.bringToTop();
MochiServices.send("coins_showLoginWidget", {options:_arg1});
}
public static function getStoreItems():void{
MochiServices.send("coins_getStoreItems");
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function showStore(_arg1:Object=null):void{
MochiServices.bringToTop();
MochiServices.send("coins_showStore", {options:_arg1}, null, null);
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function getUserInfo():void{
MochiServices.send("coins_getUserInfo");
}
public static function hideLoginWidget():void{
MochiServices.send("coins_hideLoginWidget");
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function showVideo(_arg1:Object=null):void{
if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
trace("ERROR: showVideo call must pass an Object with an item key");
return;
};
MochiServices.bringToTop();
MochiServices.send("coins_showVideo", {options:_arg1}, null, null);
}
}
}//package mochi.as3
Section 178
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Sibling:MochiDigits;
private var Fragment:Number;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function reencode():void{
var _local1:uint = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function toString():String{
var _local1:String = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String = _arg1.toString();
var _temp1 = _arg2;
_arg2 = (_arg2 + 1);
Fragment = (_local3.charCodeAt(_temp1) ^ Encoder);
if (_arg2 < _local3.length){
Sibling = new MochiDigits(_arg1, _arg2);
} else {
Sibling = null;
};
reencode();
}
public function get value():Number{
return (Number(this.toString()));
}
public function addValue(_arg1:Number):void{
value = (value + _arg1);
}
}
}//package mochi.as3
Section 179
//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {
public class MochiEventDispatcher {
private var eventTable:Object;
public function MochiEventDispatcher():void{
eventTable = {};
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
return;
};
for (_local3 in eventTable[_arg1]) {
var _local6 = eventTable[_arg1];
_local6[_local3](_arg2);
};
}
public function removeEventListener(_arg1:String, _arg2:Function):void{
var _local3:Object;
if (eventTable[_arg1] == undefined){
eventTable[_arg1] = [];
return;
};
for (_local3 in eventTable[_arg1]) {
if (eventTable[_arg1][_local3] != _arg2){
} else {
eventTable[_arg1].splice(Number(_local3), 1);
};
};
}
public function addEventListener(_arg1:String, _arg2:Function):void{
removeEventListener(_arg1, _arg2);
eventTable[_arg1].push(_arg2);
}
}
}//package mochi.as3
Section 180
//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
import flash.display.*;
public class MochiEvents {
public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
public static const FORMAT_LONG:String = "LongForm";
public static const ALIGN_BOTTOM:String = "ALIGN_B";
public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
public static const FORMAT_SHORT:String = "ShortForm";
public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
public static const ALIGN_TOP:String = "ALIGN_T";
public static const ALIGN_LEFT:String = "ALIGN_L";
public static const ALIGN_RIGHT:String = "ALIGN_R";
public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
public static const ALIGN_CENTER:String = "ALIGN_C";
private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
private static var gameStart:Number;
private static var levelStart:Number;
public static function addEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.addEventListener(_arg1, _arg2);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
_dispatcher.removeEventListener(_arg1, _arg2);
}
public static function startSession(_arg1:String):void{
MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
}
public static function triggerEvent(_arg1:String, _arg2:Object):void{
_dispatcher.triggerEvent(_arg1, _arg2);
}
public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{
var _local4:Object;
var _local3:Object = {};
for (_local4 in _arg2) {
_local3[_local4] = _arg2[_local4];
};
_local3.clip = _arg1;
MochiServices.send("events_setNotifications", _local3, null, null);
}
public static function endGame():void{
var _local1:Number = (new Date().time - gameStart);
trigger("end_game", {time:_local1});
}
public static function startGame():void{
gameStart = new Date().time;
trigger("start_game");
}
public static function trigger(_arg1:String, _arg2:Object=null):void{
if (_arg2 == null){
_arg2 = {};
} else {
if (_arg2["kind"] != undefined){
trace("WARNING: optional arguements package contains key 'id', it will be overwritten");
_arg2["kind"] = _arg1;
};
};
MochiServices.send("events_triggerEvent", {eventObject:_arg2}, null, null);
}
public static function getVersion():String{
return (MochiServices.getVersion());
}
public static function startLevel():void{
levelStart = new Date().time;
trigger("start_level");
}
public static function endLevel():void{
var _local1:Number = (new Date().time - levelStart);
trigger("end_level", {time:_local1});
}
}
}//package mochi.as3
Section 181
//MochiScores (mochi.as3.MochiScores)
package mochi.as3 {
import flash.display.*;
import flash.text.*;
public class MochiScores {
private static var boardID:String;
public static var onErrorHandler:Object;
public static var onCloseHandler:Object;
public static function showLeaderboard(_arg1:Object=null):void{
var n:Number;
var options = _arg1;
if (options != null){
delete options.clip;
MochiServices.setContainer();
MochiServices.bringToTop();
if (options.name != null){
if ((options.name is TextField)){
if (options.name.text.length > 0){
options.name = options.name.text;
};
};
};
if (options.score != null){
if ((options.score is TextField)){
if (options.score.text.length > 0){
options.score = options.score.text;
};
} else {
if ((options.score is MochiDigits)){
options.score = options.score.value;
};
};
n = Number(options.score);
if (isNaN(n)){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + options.score) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(n) != n){
trace((("WARNING: Submitted score '" + options.score) + "' will be truncated"));
};
options.score = n;
};
};
};
if (options.onDisplay != null){
options.onDisplay();
} else {
if (MochiServices.clip != null){
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
};
} else {
options = {};
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.stop();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onDisplay.");
};
};
if (options.onClose != null){
onCloseHandler = options.onClose;
} else {
onCloseHandler = function ():void{
if ((MochiServices.clip is MovieClip)){
MochiServices.clip.play();
} else {
trace("Warning: Container is not a MovieClip, cannot call default onClose.");
};
};
};
if (options.onError != null){
onErrorHandler = options.onError;
} else {
onErrorHandler = null;
};
if (options.boardID == null){
if (MochiScores.boardID != null){
options.boardID = MochiScores.boardID;
};
};
MochiServices.warnID(options.boardID, true);
trace("[MochiScores] NOTE: Security Sandbox Violation errors below are normal");
MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose);
}
public static function closeLeaderboard():void{
MochiServices.send("scores_closeLeaderboard");
}
public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2);
}
public static function requestList(_arg1:Object, _arg2:Object=null):void{
MochiServices.send("scores_requestList", null, _arg1, _arg2);
}
public static function scoresArrayToObjects(_arg1:Object):Object{
var _local3:Number;
var _local4:Number;
var _local5:Object;
var _local6:Object;
var _local7:String;
var _local8:String;
var _local2:Object = {};
for (_local7 in _arg1) {
if (typeof(_arg1[_local7]) == "object"){
if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){
_local2[_local7] = [];
_local5 = _arg1[_local7];
_local4 = 0;
while (_local4 < _local5.rows.length) {
_local6 = {};
_local3 = 0;
while (_local3 < _local5.cols.length) {
_local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3];
_local3++;
};
_local2[_local7].push(_local6);
_local4++;
};
} else {
_local2[_local7] = {};
for (_local8 in _arg1[_local7]) {
_local2[_local7][_local8] = _arg1[_local7][_local8];
};
};
} else {
_local2[_local7] = _arg1[_local7];
};
};
return (_local2);
}
public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{
_arg1 = Number(_arg1);
if (isNaN(_arg1)){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is 'Not a Number'"));
} else {
if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){
trace((("ERROR: Submitted score '" + String(_arg1)) + "' will be rejected, score is an infinite"));
} else {
if (Math.floor(_arg1) != _arg1){
trace((("WARNING: Submitted score '" + String(_arg1)) + "' will be truncated"));
};
_arg1 = Number(_arg1);
};
};
MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4);
}
public static function onClose(_arg1:Object=null):void{
if (((((_arg1) && ((_arg1.error == true)))) && (onErrorHandler))){
if (_arg1.errorCode == null){
_arg1.errorCode = "IOError";
};
onErrorHandler(_arg1.errorCode);
MochiServices.doClose();
return;
};
onCloseHandler();
MochiServices.doClose();
}
public static function setBoardID(_arg1:String):void{
MochiServices.warnID(_arg1, true);
MochiScores.boardID = _arg1;
MochiServices.send("scores_setBoardID", {boardID:_arg1});
}
}
}//package mochi.as3
Section 182
//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
import flash.system.*;
public class MochiServices {
private static var _container:Object;
private static var _connected:Boolean = false;
private static var _swfVersion:String;
private static var _preserved:Object;
public static var netupAttempted:Boolean = false;
private static var _sendChannel:LocalConnection;
public static var servicesSync:MochiSync = new MochiSync();
private static var _clip:MovieClip;
private static var _id:String;
private static var _services:String = "services.swf";
private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
public static var widget:Boolean = false;
private static var _timer:Timer;
private static var _sendChannelName:String;
private static var _loader:Loader;
private static var _connecting:Boolean = false;
private static var _mochiLocalConnection:MovieClip;
private static var _listenChannelName:String = "__ms_";
public static var onError:Object;
public static var netup:Boolean = true;
private static var _mochiLC:String = "MochiLC.swf";
public static function isNetworkAvailable():Boolean{
return (!((Security.sandboxType == "localWithFile")));
}
public static function get connected():Boolean{
return (_connected);
}
private static function onReceive(_arg1:Object):void{
var methodName:String;
var pkg = _arg1;
var cb:String = pkg.callbackID;
var cblst:Object = _clip._callbacks[cb];
if (!cblst){
return;
};
var method:* = cblst.callbackMethod;
methodName = "";
var obj:Object = cblst.callbackObject;
if (((obj) && ((typeof(method) == "string")))){
methodName = method;
if (obj[method] != null){
method = obj[method];
} else {
trace((("Error: Method " + method) + " does not exist."));
};
};
if (method != undefined){
try {
method.apply(obj, pkg.args);
} catch(error:Error) {
trace(((("Error invoking callback method '" + methodName) + "': ") + error.toString()));
};
} else {
if (obj != null){
try {
obj(pkg.args);
} catch(error:Error) {
trace(("Error invoking method on object: " + error.toString()));
};
};
};
delete _clip._callbacks[cb];
}
public static function get childClip():Object{
return (_clip);
}
public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
if (_connected){
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
} else {
if ((((_clip == null)) || (!(_connecting)))){
trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1));
handleError(_arg2, _arg3, _arg4);
flush(true);
return;
};
_clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID});
};
if (_clip != null){
if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){
_clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
_clip._nextcallbackID++;
};
};
}
private static function init(_arg1:String, _arg2:Object):void{
_id = _arg1;
if (_arg2 != null){
_container = _arg2;
loadCommunicator(_arg1, _container);
};
}
private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
var _local4:int;
var _local14:Loader;
var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23];
var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
var _local6:Array = [0, 64, 0, 0, 0];
var _local7:MovieClip = new MovieClip();
var _local8:LocalConnection = new LocalConnection();
var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
_local8 = new LocalConnection();
_local7.lc = _local8;
_local7.click = _arg2;
_local8.client = _local7;
_local8.connect(_local9);
var _local10:ByteArray = new ByteArray();
var _local11:ByteArray = new ByteArray();
_local11.endian = Endian.LITTLE_ENDIAN;
_local11.writeShort(1);
_local11.writeUTFBytes(((_arg1 + " ") + _local9));
_local11.writeByte(0);
var _local12:uint = ((_local3.length + _local11.length) + 4);
var _local13:uint = (_local12 + 35);
_local10.endian = Endian.LITTLE_ENDIAN;
_local10.writeUTFBytes("FWS");
_local10.writeByte(8);
_local10.writeUnsignedInt(_local13);
for each (_local4 in _local5) {
_local10.writeByte(_local4);
};
_local10.writeUnsignedInt(_local12);
_local10.writeByte(136);
_local10.writeShort(_local11.length);
_local10.writeBytes(_local11);
for each (_local4 in _local3) {
_local10.writeByte(_local4);
};
for each (_local4 in _local6) {
_local10.writeByte(_local4);
};
_local14 = new Loader();
_local14.loadBytes(_local10);
_local7.addChild(_local14);
return (_local7);
}
public static function stayOnTop():void{
_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
if (_clip != null){
_clip.visible = true;
};
}
public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{
var avm1Click:DisplayObject;
var x:String;
var req:URLRequest;
var loader:Loader;
var setURL:Function;
var err:Function;
var complete:Function;
var url = _arg1;
var burl = _arg2;
var btn = _arg3;
var onClick = _arg4;
var vars:Object = new Object();
vars["mav"] = getVersion();
vars["swfv"] = "9";
vars["swfurl"] = btn.loaderInfo.loaderURL;
vars["fv"] = Capabilities.version;
vars["os"] = Capabilities.os;
vars["lang"] = Capabilities.language;
vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
var s = "?";
var i:Number = 0;
for (x in vars) {
if (i != 0){
s = (s + "&");
};
i = (i + 1);
s = (((s + x) + "=") + escape(vars[x]));
};
req = new URLRequest("http://x.mochiads.com/linkping.swf");
loader = new Loader();
setURL = function (_arg1:String):void{
if (avm1Click){
btn.removeChild(avm1Click);
};
avm1Click = clickMovie(_arg1, onClick);
var _local2:Rectangle = btn.getBounds(btn);
btn.addChild(avm1Click);
avm1Click.x = _local2.x;
avm1Click.y = _local2.y;
avm1Click.scaleX = (0.01 * _local2.width);
avm1Click.scaleY = (0.01 * _local2.height);
};
err = function (_arg1:Object):void{
netup = false;
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
setURL(burl);
};
complete = function (_arg1:Object):void{
_arg1.target.removeEventListener(_arg1.type, arguments.callee);
};
if (netup){
setURL((url + s));
} else {
setURL(burl);
};
if (!((netupAttempted) || (_connected))){
netupAttempted = true;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.load(req);
};
}
public static function warnID(_arg1:String, _arg2:Boolean):void{
_arg1 = _arg1.toLowerCase();
if (_arg1.length != 16){
trace((("WARNING: " + (_arg2) ? "board" : "game") + " ID is not the appropriate length"));
return;
} else {
if (_arg1 == "1e113c7239048b3f"){
if (_arg2){
trace("WARNING: Using testing board ID");
} else {
trace("WARNING: Using testing board ID as game ID");
};
return;
} else {
if (_arg1 == "84993a1de4031cd8"){
if (_arg2){
trace("WARNING: Using testing game ID as board ID");
} else {
trace("WARNING: Using testing game ID");
};
return;
};
};
};
var _local3:Number = 0;
while (_local3 < _arg1.length) {
switch (_arg1.charAt(_local3)){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
case "a":
case "b":
case "c":
case "d":
case "e":
case "f":
break;
default:
trace(("WARNING: Board ID contains illegal characters: " + _arg1));
return;
};
_local3++;
};
}
public static function disconnect():void{
if (((_connected) || (_connecting))){
if (_clip != null){
if (_clip.parent != null){
if ((_clip.parent is Sprite)){
Sprite(_clip.parent).removeChild(_clip);
_clip = null;
};
};
};
_connecting = (_connected = false);
flush(true);
try {
_mochiLocalConnection.close();
} catch(error:Error) {
};
};
if (_timer != null){
try {
_timer.stop();
} catch(error:Error) {
};
};
}
public static function allowDomains(_arg1:String):String{
var _local2:String;
if (Security.sandboxType != "application"){
Security.allowDomain("*");
Security.allowInsecureDomain("*");
};
if (_arg1.indexOf("http://") != -1){
_local2 = _arg1.split("/")[2].split(":")[0];
if (Security.sandboxType != "application"){
Security.allowDomain(_local2);
Security.allowInsecureDomain(_local2);
};
};
return (_local2);
}
public static function getVersion():String{
return ("3.3 as3");
}
public static function doClose():void{
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
}
private static function flush(_arg1:Boolean):void{
var _local2:Object;
var _local3:Object;
if (((_clip) && (_clip._queue))){
while (_clip._queue.length > 0) {
_local2 = _clip._queue.shift();
_local3 = null;
if (_local2 != null){
if (_local2.callbackID != null){
_local3 = _clip._callbacks[_local2.callbackID];
};
delete _clip._callbacks[_local2.callbackID];
if (((_arg1) && (!((_local3 == null))))){
handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
};
};
};
};
}
public static function get id():String{
return (_id);
}
private static function onEvent(_arg1:Object):void{
var _local2:String = _arg1.target;
var _local3:String = _arg1.event;
switch (_local2){
case "events":
MochiEvents.triggerEvent(_arg1.event, _arg1.args);
break;
case "coins":
MochiCoins.triggerEvent(_arg1.event, _arg1.args);
break;
case "sync":
servicesSync.triggerEvent(_arg1.event, _arg1.args);
break;
};
}
private static function urlOptions(_arg1:Object):Object{
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:Array;
var _local2:Object = {};
if (_arg1.stage){
_local3 = _arg1.stage.loaderInfo.parameters.mochiad_options;
} else {
_local3 = _arg1.loaderInfo.parameters.mochiad_options;
};
if (_local3){
_local4 = _local3.split("&");
_local5 = 0;
while (_local5 < _local4.length) {
_local6 = _local4[_local5].split("=");
_local2[unescape(_local6[0])] = unescape(_local6[1]);
_local5++;
};
};
return (_local2);
}
public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
if (_arg1 != null){
if ((_arg1 is Sprite)){
_container = _arg1;
};
};
if (_arg2){
if ((_container is Sprite)){
Sprite(_container).addChild(_clip);
};
};
}
private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
var args = _arg1;
var callbackObject = _arg2;
var callbackMethod = _arg3;
if (args != null){
if (args.onError != null){
args.onError.apply(null, ["NotConnected"]);
};
if (((!((args.options == null))) && (!((args.options.onError == null))))){
args.options.onError.apply(null, ["NotConnected"]);
};
};
if (callbackMethod != null){
args = {};
args.error = true;
args.errorCode = "NotConnected";
if (((!((callbackObject == null))) && ((callbackMethod is String)))){
try {
var _local5 = callbackObject;
_local5[callbackMethod](args);
} catch(error:Error) {
};
} else {
if (callbackMethod != null){
try {
callbackMethod.apply(args);
} catch(error:Error) {
};
};
};
};
}
private static function loadError(_arg1:Object):void{
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load.");
MochiServices.disconnect();
MochiServices.onError("IOError");
}
private static function initComChannels():void{
if (!_connected){
trace("[SERVICES_API] connected!");
_connecting = false;
_connected = true;
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, clip:_container, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
_clip.onReceive = onReceive;
_clip.onEvent = onEvent;
_clip.onError = function ():void{
MochiServices.onError("IOError");
};
while (_clip._queue.length > 0) {
_mochiLocalConnection.send(_sendChannelName, "onReceive", _clip._queue.shift());
};
};
}
private static function loadLCBridge(_arg1:Object):void{
var loader:Loader;
var clip = _arg1;
loader = new Loader();
var mochiLCURL:String = (_servURL + _mochiLC);
var req:URLRequest = new URLRequest(mochiLCURL);
var complete:Function = function (_arg1:Object):void{
_mochiLocalConnection = MovieClip(loader.content);
listen();
};
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
loader.load(req);
clip.addChild(loader);
}
private static function listen():void{
_mochiLocalConnection.connect(_listenChannelName);
_clip.handshake = function (_arg1:Object):void{
MochiServices.comChannelName = _arg1.newChannel;
};
trace("Waiting for MochiAds services to connect...");
}
public static function get clip():Object{
return (_container);
}
public static function set comChannelName(_arg1:String):void{
if (_arg1 != null){
if (_arg1.length > 3){
_sendChannelName = (_arg1 + "_fromgame");
initComChannels();
};
};
}
private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
var _local3:String = ("_mochiservices_com_" + _arg1);
if (_clip != null){
return (_clip);
};
if (!MochiServices.isNetworkAvailable()){
return (null);
};
if (urlOptions(_arg2).servURL){
_servURL = urlOptions(_arg2).servURL;
};
var _local4:String = (_servURL + _services);
if (urlOptions(_arg2).servicesURL){
_local4 = urlOptions(_arg2).servicesURL;
};
_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
MochiServices.allowDomains(_local4);
_clip = createEmptyMovieClip(_arg2, _local3, 10336, false);
loadLCBridge(_clip);
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
var _local5:URLRequest = new URLRequest(_local4);
var _local6:URLVariables = new URLVariables();
_local6.listenLC = _listenChannelName;
_local6.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options;
_local6.api_version = getVersion();
if (widget){
_local6.widget = true;
};
_local5.data = _local6;
_loader.load(_local5);
_clip.addChild(_loader);
_clip._mochiservices_com = _loader;
_sendChannel = new LocalConnection();
_clip._queue = [];
_clip._nextcallbackID = 0;
_clip._callbacks = {};
_timer = new Timer(10000, 1);
_timer.addEventListener(TimerEvent.TIMER, connectWait);
_timer.start();
return (_clip);
}
public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
var id = _arg1;
var clip = _arg2;
var onError = _arg3;
warnID(id, false);
if ((clip is DisplayObject)){
if (((!(_connected)) && ((_clip == null)))){
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
};
} else {
trace("Error, MochiServices requires a Sprite, Movieclip or instance of the stage.");
};
if (onError != null){
MochiServices.onError = onError;
} else {
if (MochiServices.onError == null){
MochiServices.onError = function (_arg1:String):void{
trace(_arg1);
};
};
};
}
public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{
var parent = _arg1;
var name = _arg2;
var depth = _arg3;
var doAdd = _arg4;
var mc:MovieClip = new MovieClip();
if (doAdd){
if (((false) && (depth))){
parent.addChildAt(mc, depth);
} else {
parent.addChild(mc);
};
};
try {
parent[name] = mc;
} catch(e:Error) {
throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic."));
};
mc["_name"] = name;
return (mc);
}
public static function bringToTop(_arg1:Event=null):void{
var e = _arg1;
if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){
try {
if (MochiServices.clip.numChildren > 1){
MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
};
} catch(errorObject:Error) {
trace("Warning: Depth sort error.");
_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
};
};
}
public static function connectWait(_arg1:TimerEvent):void{
if (!_connected){
_clip._mochiad_ctr_failed = true;
trace("MochiServices could not load. (timeout)");
MochiServices.disconnect();
MochiServices.onError("IOError");
};
}
}
}//package mochi.as3
Section 183
//MochiSync (mochi.as3.MochiSync)
package mochi.as3 {
import flash.utils.*;
public dynamic class MochiSync extends Proxy {
private var _syncContainer:Object;
public static var SYNC_PROPERTY:String = "UpdateProperty";
public static var SYNC_REQUEST:String = "SyncRequest";
public function MochiSync():void{
_syncContainer = {};
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
if (_syncContainer[_arg1] == _arg2){
return;
};
var _local3:String = _arg1.toString();
_syncContainer[_local3] = _arg2;
MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2});
}
override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
return (_syncContainer[_arg1]);
}
public function triggerEvent(_arg1:String, _arg2:Object):void{
switch (_arg1){
case SYNC_REQUEST:
MochiServices.send("sync_syncronize", _syncContainer);
break;
case SYNC_PROPERTY:
_syncContainer[_arg2.name] = _arg2.value;
break;
};
}
}
}//package mochi.as3
Section 184
//Explosion (silin.bitmap.Explosion)
package silin.bitmap {
import flash.display.*;
public class Explosion {
private const RANDOMIZE:Number = 1;
private var _eachFrameCount:int;// = 100
private var _currArr:Array;
private var _totalArr:Array;
public function Explosion(_arg1:ExplosionBitmap, _arg2:Number, _arg3:Number, _arg4:String, _arg5:Boolean){
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Particle;
_currArr = [];
_totalArr = [];
super();
_eachFrameCount = _arg1.perFrameCount;
var _local6:Number = _arg1.initVelocity;
var _local7:Number = _arg1.initRadius;
var _local8:int;
while (_local8 < _arg1.totalCount) {
_local9 = ((Math.random() * Math.PI) * (_arg5) ? -1 : 2);
_local10 = (Math.random() * _local6);
_local11 = Math.random();
if (_arg4 == ExplosionBitmap.SMOKE){
_local11 = Math.sqrt(_local11);
};
_local12 = (_local11 * _local7);
_local13 = new Particle();
_local13.sx = (_arg2 + (_local12 * Math.cos(_local9)));
_local13.sy = (_arg3 + (_local12 * Math.sin(_local9)));
_local13.vx = ((_local10 * Math.cos(_local9)) + (_arg1.wind * Math.random()));
_local13.vy = (_local10 * Math.sin(_local9));
_local13.vx = (_local13.vx + (RANDOMIZE * (1 - (2 * Math.random()))));
_local13.vy = (_local13.vy + (RANDOMIZE * (1 - (2 * Math.random()))));
_local13.energyDamp = _arg1.energyDamp;
_local13.chaoticMove = _arg1.chaoticMove;
_local13.moveDamp = _arg1.dampMove;
if (_arg4 == ExplosionBitmap.SMOKE){
_local13.sy = (_local13.sy + ((((0.5 + Math.random()) * _local12) * (1 - Math.abs(Math.cos(_local9)))) / 2));
_local13.energy = (_local13.energy - (Math.random() / 2));
};
_totalArr.push(_local13);
_local8++;
};
}
public function clear():void{
_currArr = [];
_totalArr = [];
}
public function render(_arg1:BitmapData):void{
var _local3:Particle;
if (_totalArr.length >= _eachFrameCount){
_currArr = _currArr.concat(_totalArr.splice(-(_eachFrameCount)));
};
var _local2:int;
while (_local2 < _currArr.length) {
_local3 = _currArr[_local2];
_local3.render();
if (_local3.energy < 0.05){
_currArr.splice(_local2, 1);
};
_arg1.setPixel(_local3.sx, _local3.sy, int((_local3.energy * 0xFF)));
_local2++;
};
}
public function get done():Boolean{
return ((_currArr.length == 0));
}
public function weak():void{
var _local1:int;
_local1 = 0;
while (_local1 < _currArr.length) {
Particle(_currArr[_local1]).energyDamp = 0.925;
_local1++;
};
_totalArr = [];
}
}
}//package silin.bitmap
Section 185
//ExplosionBitmap (silin.bitmap.ExplosionBitmap)
package silin.bitmap {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import silin.color.*;
import flash.filters.*;
public class ExplosionBitmap extends Bitmap {
public var initRadius:int;// = 20
private var _blur:BlurFilter;
public var energyDamp:Number;// = 0.97
public var chaoticMove:Number;// = 0.3
public var initVelocity:Number;// = 2
private var _colors:Array;
public var dampMove:Number;// = 0.99
private var _smokeColor:int;// = 16382179
public var wind:Number;// = 0
private var _type:String;
private var _explosions:Array;
private var _buffer:BitmapData;
private var _fireColors:Array;
public var totalCount:int;// = 2000
public var perFrameCount:int;// = 200
private static const SMOKE_CHAOTIC_MOVE:Number = 0.2;
private static const EXPLOSION_DAMP_MOVE:Number = 0.98;
private static const EXPLOSION_TOTAL_COUNT:int = 2000;
private static const SMOKE_FRAME_COUNT:int = 50;
public static const SMOKE:String = "smoke";
private static const SMOKE_ALPHA:Number = 0.85;
private static const EXPLOSION_INIT_RADIUS:int = 16;
private static const SMOKE_VELOCITY:Number = 0.5;
private static const EXPLOSION_CHAOTIC_MOVE:Number = 0.3;
private static const SMOKE_DAMP_MOVE:Number = 0.97;
private static const SMOKE_TOTAL_COUNT:int = 2000;
private static const EXPLOSION_VELOCITY:Number = 1;
private static const SMOKE_DAMP_ENERGY:Number = 0.995;
private static const SMOKE_ALPHA_DEVIATION:Number = 0.25;
private static const EXPLOSION_BLUR:int = 2;
private static const EXPLOSION_FRAME_COUNT:int = 200;
public static const EXPLOSION:String = "explosion";
private static const SMOKE_INIT_RADIUS:int = 90;
private static const SMOKE_BLUR:int = 8;
private static const EXPLOSION_DAMP_ENERGY:Number = 0.96;
public function ExplosionBitmap(_arg1:int=300, _arg2:int=300, _arg3:String="explosion"){
_fireColors = [0, 0, 4206640, 0x602000, 0xFF4000, 0xFFFF00, 0xFFFFFF];
_blur = new BlurFilter();
_colors = [];
_explosions = [];
_buffer = new BitmapData(_arg1, _arg2, false, 0);
super(new BitmapData(_arg1, _arg2, true, 0));
this.type = _arg3;
}
public function get type():String{
return (_type);
}
public function get smokeColor():int{
return (_smokeColor);
}
public function clear():void{
var _local2:Explosion;
var _local1:int;
while (_local1 < _explosions.length) {
_local2 = _explosions[_local1];
_local2.clear();
_local1++;
};
_buffer.fillRect(_buffer.rect, 0);
bitmapData.fillRect(bitmapData.rect, 0);
}
public function get fireColors():Array{
return (_fireColors);
}
public function set fireColors(_arg1:Array):void{
_fireColors = _arg1;
if (type == EXPLOSION){
_colors = ColorUtilis.getGradientArray(_fireColors, [0, 0, 1, 1, 1, 1, 1], [0, 34, 68, 74, 85, 136, 0xFF]);
};
}
public function set smokeColor(_arg1:int):void{
_smokeColor = _arg1;
if (type == SMOKE){
_colors = ColorUtilis.getGradientArray([_smokeColor, smokeColor, smokeColor, smokeColor, smokeColor], [0, (SMOKE_ALPHA - (SMOKE_ALPHA_DEVIATION / 2)), (SMOKE_ALPHA + (SMOKE_ALPHA_DEVIATION / 2)), SMOKE_ALPHA, 1], [0, 64, 192, 220, 0xFF]);
};
}
public function addExplosion(_arg1:int, _arg2:int, _arg3:Boolean=false):void{
_explosions.push(new Explosion(this, _arg1, _arg2, type, _arg3));
if (!hasEventListener(Event.ENTER_FRAME)){
addEventListener(Event.ENTER_FRAME, render);
};
}
public function fastEnd():void{
var _local2:Explosion;
var _local1:int;
while (_local1 < _explosions.length) {
_local2 = _explosions[_local1];
_local2.weak();
_local1++;
};
}
private function render(_arg1:Event):void{
var _local3:Explosion;
var _local4:Rectangle;
var _local5:Point;
var _local2:int;
while (_local2 < _explosions.length) {
_local3 = _explosions[_local2];
_local3.render(_buffer);
if (_local3.done){
_explosions.splice(_local2, 1);
};
_local2++;
};
if (_explosions.length == 0){
removeEventListener(Event.ENTER_FRAME, render);
dispatchEvent(new Event(Event.COMPLETE));
_buffer.fillRect(_buffer.rect, 0);
bitmapData.fillRect(bitmapData.rect, 0);
} else {
_local4 = _buffer.getColorBoundsRect(0xFFFFFF, 0, false);
_local5 = new Point(_local4.x, _local4.y);
_buffer.applyFilter(_buffer, _local4, _local5, _blur);
bitmapData.copyPixels(_buffer, _local4, _local5);
bitmapData.paletteMap(bitmapData, _local4, _local5, [], [], _colors, []);
};
}
public function set type(_arg1:String):void{
_type = _arg1;
switch (type){
case EXPLOSION:
_colors = ColorUtilis.getGradientArray(_fireColors, [0, 0, 1, 1, 1, 1, 1], [0, 34, 68, 74, 85, 136, 0xFF]);
_blur.blurX = EXPLOSION_BLUR;
_blur.blurY = EXPLOSION_BLUR;
initRadius = EXPLOSION_INIT_RADIUS;
initVelocity = EXPLOSION_VELOCITY;
totalCount = EXPLOSION_TOTAL_COUNT;
perFrameCount = EXPLOSION_FRAME_COUNT;
energyDamp = EXPLOSION_DAMP_ENERGY;
dampMove = EXPLOSION_DAMP_MOVE;
chaoticMove = EXPLOSION_CHAOTIC_MOVE;
break;
case SMOKE:
_colors = ColorUtilis.getGradientArray([_smokeColor, smokeColor, smokeColor, smokeColor, smokeColor], [0, (SMOKE_ALPHA - (SMOKE_ALPHA_DEVIATION / 2)), (SMOKE_ALPHA + (SMOKE_ALPHA_DEVIATION / 2)), SMOKE_ALPHA, 1], [0, 64, 192, 220, 0xFF]);
_blur.blurX = SMOKE_BLUR;
_blur.blurY = SMOKE_BLUR;
initRadius = SMOKE_INIT_RADIUS;
initVelocity = SMOKE_VELOCITY;
totalCount = SMOKE_TOTAL_COUNT;
perFrameCount = SMOKE_FRAME_COUNT;
energyDamp = SMOKE_DAMP_ENERGY;
dampMove = SMOKE_DAMP_MOVE;
chaoticMove = SMOKE_CHAOTIC_MOVE;
break;
};
}
public static function getExplosion(_arg1:String="explosion", _arg2:Boolean=false):ExplosionBitmap{
var _local3:ExplosionBitmap = new (ExplosionBitmap);
_local3.type = _arg1;
_local3.addExplosion((_local3.width / 2), (_local3.height / 2), _arg2);
return (_local3);
}
}
}//package silin.bitmap
Section 186
//Particle (silin.bitmap.Particle)
package silin.bitmap {
public class Particle {
public var vx:Number;
public var vy:Number;
public var sx:Number;
public var sy:Number;
public var energy:Number;// = 1
public var energyDamp:Number;
public var moveDamp:Number;
public var chaoticMove:Number;
public function render():void{
vx = (vx + (chaoticMove * ((2 * Math.random()) - 1)));
vy = (vy + (chaoticMove * ((2 * Math.random()) - 1)));
energy = (energy * energyDamp);
sx = (sx + vx);
sy = (sy + vy);
vx = (vx * moveDamp);
vy = (vy * moveDamp);
}
}
}//package silin.bitmap
Section 187
//ColorUtilis (silin.color.ColorUtilis)
package silin.color {
import flash.display.*;
import flash.geom.*;
public class ColorUtilis {
public function ColorUtilis(){
trace("ColorUtilis is a static class and should not be instantiated.");
}
public static function getGradientArray(_arg1:Array, _arg2:Array=null, _arg3:Array=null):Array{
var _local4:int;
if (_arg1.length < 2){
throw (new Error("invalid colors array"));
};
if (!_arg2){
_arg2 = [];
_local4 = 0;
while (_local4 < _arg1.length) {
_arg2.push(1);
_local4++;
};
};
if (!_arg3){
_arg3 = [];
_local4 = 0;
while (_local4 < _arg1.length) {
_arg3.push(((0xFF * _local4) / (_arg1.length - 1)));
_local4++;
};
};
var _local5:Array = [];
var _local6:Shape = new Shape();
var _local7:Graphics = _local6.graphics;
var _local8:Matrix = new Matrix();
var _local9:BitmapData = new BitmapData(0x0100, 1, true, 0);
_local8.createGradientBox(0x0100, 0x0100, 0, 0, 0);
_local7.clear();
_local7.beginGradientFill("linear", _arg1, _arg2, _arg3, _local8);
_local7.drawRect(0, 0, 0x0100, 0x0100);
_local7.endFill();
_local9.draw(_local6);
_local4 = 0;
while (_local4 < 0x0100) {
_local5.push(_local9.getPixel32(_local4, 0));
_local4++;
};
_local9.dispose();
return (_local5);
}
public static function roundColor(_arg1:int, _arg2:int):int{
var _local3 = ((_arg1 >> 16) & 0xFF);
var _local4 = ((_arg1 >> 8) & 0xFF);
var _local5 = (_arg1 & 0xFF);
var _local6:Function = Math.floor;
_local3 = (_arg2 * _local6((_local3 / _arg2)));
_local4 = (_arg2 * _local6((_local4 / _arg2)));
_local5 = (_arg2 * _local6((_local5 / _arg2)));
return ((((_local3 << 16) | (_local4 << 8)) | _local5));
}
}
}//package silin.color
Section 188
//Abborduer (Abborduer)
package {
import flash.media.*;
public dynamic class Abborduer extends Sound {
}
}//package
Section 189
//Avatar (Avatar)
package {
import flash.display.*;
public dynamic class Avatar extends MovieClip {
public function Avatar(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 190
//BoomSound (BoomSound)
package {
import flash.media.*;
public dynamic class BoomSound extends Sound {
}
}//package
Section 191
//BurstSplash (BurstSplash)
package {
import flash.events.*;
import flash.display.*;
import silin.bitmap.*;
public class BurstSplash extends Sprite {
private var exlpBitmap:ExplosionBitmap;
public function BurstSplash(){
exlpBitmap = new ExplosionBitmap(100, 100, ExplosionBitmap.EXPLOSION);
addChild(exlpBitmap);
exlpBitmap.x = -50;
exlpBitmap.y = -50;
exlpBitmap.clear();
exlpBitmap.totalCount = 2000;
exlpBitmap.perFrameCount = 200;
exlpBitmap.initRadius = 3;
exlpBitmap.initVelocity = 1;
exlpBitmap.energyDamp = 0.838;
exlpBitmap.wind = 0;
exlpBitmap.smokeColor = 13421823;
exlpBitmap.addExplosion(50, 50, true);
exlpBitmap.addEventListener(Event.COMPLETE, explCompleteHandler, false, 0, true);
}
private function explCompleteHandler(_arg1:Event):void{
parent.removeChild(this);
}
}
}//package
Section 192
//BuyCannonDialog (BuyCannonDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class BuyCannonDialog extends MovieClip {
public var no_button:MapButton;
public var city_text:TextField;
public var index:int;// = -1
public var yes_button:MapButton;
public function BuyCannonDialog(){
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
no_button.addEventListener(MouseEvent.CLICK, OnNo, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
SoundManager.PlayOnce("Buy");
dispatchEvent(new BuyCannonEvent(index, "BuyCannonEvent"));
}
public function OnNo(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
dispatchEvent(new BuyCannonEvent(-1, "BuyCannonEvent"));
}
}
}//package
Section 193
//BuyCannonEvent (BuyCannonEvent)
package {
import flash.events.*;
public class BuyCannonEvent extends Event {
public var index:int;// = -1
public function BuyCannonEvent(_arg1, _arg2:String, _arg3:Boolean=true, _arg4:Boolean=false){
super("BuyCannonEvent", _arg3, _arg4);
index = _arg1;
}
}
}//package
Section 194
//BuyMarketDialog (BuyMarketDialog)
package {
import flash.events.*;
import flash.display.*;
import fl.controls.*;
import flash.text.*;
import flash.filters.*;
public class BuyMarketDialog extends MovieClip {
public var city_text:TextField;
private var mat:Array;
public var number:int;// = -1
public var yes_button:MapButton;
public var quantity:NumericStepper;
public var no_button:MapButton;
public var index:int;// = -1
var filter:ColorMatrixFilter;
public var cost_text:TextField;
public function BuyMarketDialog(){
mat = [0.33, 0, 0, 0, 0, 0, 0.33, 0, 0, 0, 0, 0, 0.33, 0, 0, 0, 0, 0, 1, 0];
filter = new ColorMatrixFilter(mat);
super();
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
no_button.addEventListener(MouseEvent.CLICK, OnNo, false, 0, true);
addEventListener(Event.ADDED_TO_STAGE, OnChange, false, 0, true);
quantity.minimum = 1;
quantity.maximum = 1000;
quantity.stepSize = 1;
quantity.addEventListener(Event.CHANGE, OnChange, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
SoundManager.PlayOnce("Buy");
dispatchEvent(new BuyMarketEvent(index, quantity.value, "BuyMarketEvent"));
}
public function OnNo(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
dispatchEvent(new BuyMarketEvent(-1, number, "BuyMarketEvent"));
}
public function OnChange(_arg1:Event){
if (index == -1){
return;
};
var _local2:int = Game.settingsxml.Market.Item[index].@cost;
var _local3:int = (_local2 * quantity.value);
cost_text.text = _local3.toString();
if (_local3 > Game.player.gold){
yes_button.filters = [filter];
yes_button.mouseEnabled = false;
yes_button.buttonMode = false;
} else {
yes_button.filters = [];
yes_button.mouseEnabled = true;
yes_button.buttonMode = true;
};
}
}
}//package
Section 195
//BuyMarketEvent (BuyMarketEvent)
package {
import flash.events.*;
public class BuyMarketEvent extends Event {
public var index:int;// = -1
public var quantity:int;// = -1
public function BuyMarketEvent(_arg1, _arg2, _arg3:String, _arg4:Boolean=true, _arg5:Boolean=false){
super("BuyMarketEvent", _arg4, _arg5);
index = _arg1;
quantity = _arg2;
}
}
}//package
Section 196
//BuyShipDialog (BuyShipDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class BuyShipDialog extends MovieClip {
public var no_button:MapButton;
public var city_text:TextField;
public var index:int;// = -1
public var yes_button:MapButton;
public function BuyShipDialog(){
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
no_button.addEventListener(MouseEvent.CLICK, OnNo, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
SoundManager.PlayOnce("Buy");
dispatchEvent(new BuyShipEvent(index, "BuyShipEvent"));
}
public function OnNo(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
dispatchEvent(new BuyShipEvent(-1, "BuyShipEvent"));
}
}
}//package
Section 197
//BuyShipEvent (BuyShipEvent)
package {
import flash.events.*;
public class BuyShipEvent extends Event {
public var index:int;// = -1
public function BuyShipEvent(_arg1, _arg2:String, _arg3:Boolean=true, _arg4:Boolean=false){
super("BuyShipEvent", _arg3, _arg4);
index = _arg1;
}
}
}//package
Section 198
//BuySound (BuySound)
package {
import flash.media.*;
public dynamic class BuySound extends Sound {
}
}//package
Section 199
//CannonIcon (CannonIcon)
package {
import flash.display.*;
public dynamic class CannonIcon extends MovieClip {
}
}//package
Section 200
//CannonShop (CannonShop)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import mochi.as3.*;
import flash.xml.*;
public class CannonShop extends MovieClip {
public var item3:CannonStoreItem;
public var item4:CannonStoreItem;
public var item5:CannonStoreItem;
public var page1_button:ShopButton;
private var page:int;// = 1
private var dlg:BuyCannonDialog;
public var dialog_name:TextField;
private var e;
public var page2_button:ShopButton;
public var item1:CannonStoreItem;
public var item2:CannonStoreItem;
public static var cannonshop:CannonShop = null;
public function CannonShop(){
dlg = new BuyCannonDialog();
super();
cannonshop = this;
try {
addEventListener("BuyCannonEvent", OnBuy, false, 0, true);
page1_button.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SetPage(1);
SoundManager.PlayOnce("Click");
});
page2_button.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SetPage(2);
SoundManager.PlayOnce("Click");
});
e = 0;
while (e < 5) {
this[("item" + (e + 1).toString())].cost_text.mouseEnabled = false;
this[("item" + (e + 1).toString())].damage_text.mouseEnabled = false;
e++;
};
SetPage(1);
} catch(e:Error) {
};
}
public function OnBuy(_arg1:BuyCannonEvent){
removeChild(dlg);
if (_arg1.index != -1){
if (Game.player.gold >= Game.settingsxml.Cannons.Cannon[_arg1.index].@cost){
Game.player.gold = (Game.player.gold - Game.settingsxml.Cannons.Cannon[_arg1.index].@cost);
Game.player.cannon = _arg1.index;
Game.player.update();
SetPage(1);
(parent as City).UpdateDialog();
if (_arg1.index == 9){
Game.player.bestcannon = true;
GlobalData.bestcannon = true;
};
};
};
}
public function Update(_arg1:int){
SelectCannon(_arg1);
SetPage(2);
}
public function SetPage(_arg1:int){
page = _arg1;
if (page == 1){
e = 0;
while (e < 5) {
this[("item" + (e + 1).toString())].cannon_icon.scaleX = Game.settingsxml.Cannons.Cannon[e].@size;
this[("item" + (e + 1).toString())].cannon_icon.scaleY = Game.settingsxml.Cannons.Cannon[e].@size;
this[("item" + (e + 1).toString())].cost_text.text = ("Cost: " + Game.settingsxml.Cannons.Cannon[e].@cost);
this[("item" + (e + 1).toString())].damage_text.text = ("Damage: +" + Game.settingsxml.Cannons.Cannon[e].@damage);
this[("item" + (e + 1).toString())].index = e;
if ((((int(Game.settingsxml.Cannons.Cannon[e].@cost) > Game.player.gold)) || ((e < Game.player.cannon)))){
this[("item" + (e + 1).toString())].SetState(1);
this[("item" + (e + 1).toString())].mouseEnabled = false;
} else {
this[("item" + (e + 1).toString())].SetState(0);
this[("item" + (e + 1).toString())].mouseEnabled = true;
};
if (e == Game.player.cannon){
this[("item" + (e + 1).toString())].cost_text.text = "This is your cannon";
this[("item" + (e + 1).toString())].SetState(1);
this[("item" + (e + 1).toString())].mouseEnabled = false;
};
e++;
};
} else {
if (page == 2){
e = 5;
while (e < Game.settingsxml.Cannons.Cannon.length()) {
this[("item" + (e - 4).toString())].cannon_icon.scaleX = Game.settingsxml.Cannons.Cannon[e].@size;
this[("item" + (e - 4).toString())].cannon_icon.scaleY = Game.settingsxml.Cannons.Cannon[e].@size;
this[("item" + (e - 4).toString())].cost_text.text = ("Cost: " + Game.settingsxml.Cannons.Cannon[e].@cost);
this[("item" + (e - 4).toString())].damage_text.text = ("Damage: +" + Game.settingsxml.Cannons.Cannon[e].@damage);
this[("item" + (e - 4).toString())].index = e;
if (Game.settingsxml.Cannons.Cannon[e].@cost == "Mochi coins"){
this[("item" + (e - 4).toString())].SetState(0);
this[("item" + (e - 4).toString())].mouseEnabled = true;
if ((((e == 7)) && ((GlobalData.cannonowned8 == true)))){
this[("item" + (e - 4).toString())].cost_text.text = "Owned";
};
if ((((e == 8)) && ((GlobalData.cannonowned9 == true)))){
this[("item" + (e - 4).toString())].cost_text.text = "Owned";
};
if ((((e == 9)) && ((GlobalData.cannonowned10 == true)))){
this[("item" + (e - 4).toString())].cost_text.text = "Owned";
};
} else {
if ((((int(Game.settingsxml.Cannons.Cannon[e].@cost) > Game.player.gold)) || ((e < Game.player.cannon)))){
this[("item" + (e - 4).toString())].SetState(1);
this[("item" + (e - 4).toString())].mouseEnabled = false;
} else {
this[("item" + (e - 4).toString())].SetState(0);
this[("item" + (e - 4).toString())].mouseEnabled = true;
};
};
if (e == Game.player.cannon){
this[("item" + (e - 4).toString())].cost_text.text = "This is your cannon";
this[("item" + (e - 4).toString())].SetState(1);
this[("item" + (e - 4).toString())].mouseEnabled = false;
};
e++;
};
};
};
}
public function ShowBuyCannonDialog(_arg1:int){
if (_arg1 <= 6){
dlg.index = _arg1;
addChild(dlg);
} else {
if (_arg1 == 7){
if (GlobalData.cannonowned8 == true){
SelectCannon(_arg1);
} else {
MochiCoins.showStore({tags:["cannons"]});
};
};
if (_arg1 == 8){
if (GlobalData.cannonowned9 == true){
SelectCannon(_arg1);
} else {
MochiCoins.showStore({tags:["cannons"]});
};
};
if (_arg1 == 9){
if (GlobalData.cannonowned10 == true){
SelectCannon(_arg1);
} else {
MochiCoins.showStore({tags:["cannons"]});
};
};
};
}
public function SelectCannon(_arg1:int){
Game.player.cannon = _arg1;
Game.player.update();
SetPage(1);
(parent as City).UpdateDialog();
if (_arg1 == 9){
Game.player.bestcannon = true;
GlobalData.bestcannon = true;
};
}
}
}//package
Section 201
//CannonStoreItem (CannonStoreItem)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class CannonStoreItem extends MovieClip {
public const OFF_BUTTON:int = 1;
public const ON_BUTTON:int = 0;
private var buttonstate:int;// = 0
public var index:int;// = -1
public var cannon_icon:CannonIcon;
public var damage_text:TextField;
public var cost_text:TextField;
public function CannonStoreItem(){
addFrameScript(0, frame1);
addEventListener(MouseEvent.MOUSE_OVER, OnOver, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, OnOut, false, 0, true);
addEventListener(MouseEvent.CLICK, OnClick, false, 0, true);
buttonMode = true;
}
public function OnOver(_arg1:MouseEvent){
if (buttonstate == ON_BUTTON){
gotoAndStop("over");
} else {
gotoAndStop("off");
};
}
public function OnOut(_arg1:MouseEvent){
if (buttonstate == ON_BUTTON){
gotoAndStop("on");
} else {
gotoAndStop("off");
};
}
public function OnClick(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
(parent as CannonShop).ShowBuyCannonDialog(index);
}
public function SetState(_arg1:int){
if (buttonstate != _arg1){
buttonstate = _arg1;
if (buttonstate == OFF_BUTTON){
gotoAndStop("off");
} else {
gotoAndStop("on");
};
};
}
function frame1(){
stop();
}
}
}//package
Section 202
//CannonsTutorial (CannonsTutorial)
package {
import flash.events.*;
import flash.display.*;
public class CannonsTutorial extends MovieClip {
public var continuebutton:ShopButton;
public function CannonsTutorial(){
addFrameScript(0, frame1);
continuebutton.addEventListener(MouseEvent.CLICK, OnContinue, false, 0, true);
}
function frame1(){
stop();
}
public function OnContinue(_arg1:MouseEvent){
if (this.currentFrame != 1){
gotoAndStop((this.currentFrame + 1));
} else {
parent.removeChild(this);
Game.player.showcannonstutorial = false;
};
}
}
}//package
Section 203
//Channel (Channel)
package {
import flash.events.*;
import flash.media.*;
import flash.utils.*;
public class Channel {
private var channel:SoundChannel;// = null
private var timer:Timer;// = null
private var sound:Sound;// = null
private var volume:Number;// = 1
public function Channel(_arg1:Sound){
if (_arg1){
sound = _arg1;
};
}
public function FadeIn(){
if (channel == null){
volume = 0;
PlayLoop();
};
if (timer){
timer.removeEventListener("timer", infade);
timer.removeEventListener("timer", outfade);
timer = null;
};
timer = new Timer(60, 30);
timer.addEventListener("timer", infade);
timer.start();
}
public function infade(_arg1:TimerEvent){
volume = (volume + (1 / 30));
if ((((volume >= 1)) || ((((volume < 1)) && ((volume > 0.95)))))){
volume = 1;
};
var _local2:* = new SoundTransform(volume, 0);
if (channel){
channel.soundTransform = _local2;
};
}
public function StopLoop(){
if (timer){
timer.removeEventListener("timer", infade);
timer.removeEventListener("timer", outfade);
timer = null;
};
channel.stop();
}
public function outfade(_arg1:TimerEvent){
volume = (volume - (1 / 30));
if ((((volume <= 0)) || ((((volume > 0)) && ((volume < 0.05)))))){
volume = 0;
};
var _local2:* = new SoundTransform(volume, 0);
if (channel){
channel.soundTransform = _local2;
};
}
public function FadeOut(){
if (channel == null){
return;
};
if (timer){
timer.removeEventListener("timer", infade);
timer.removeEventListener("timer", outfade);
timer = null;
};
timer = new Timer(60, 30);
timer.addEventListener("timer", outfade);
timer.start();
}
public function PlayLoop(_arg1:SoundTransform=null){
if (sound){
channel = null;
if (timer){
timer.removeEventListener("timer", infade);
timer.removeEventListener("timer", outfade);
timer = null;
};
if (!_arg1){
channel = sound.play(0, int.MAX_VALUE, new SoundTransform(volume));
} else {
channel = sound.play(0, int.MAX_VALUE, _arg1);
};
};
}
}
}//package
Section 204
//CharacterSetupDialog (CharacterSetupDialog)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import fl.controls.*;
import flash.text.*;
import flash.filters.*;
public class CharacterSetupDialog extends FadeSlider {
public var avatar3:Avatar;
public var bonus_text:TextField;
public var avatar_text:TextField;
public var king:MovieClip;
private var mat:Array;
private var e;
public var ok_button:DialogButton;
public var avatar1:Avatar;
public var avatar2:Avatar;
public var textscroll:UIScrollBar;
private var select:Boolean;// = false
var filter:ColorMatrixFilter;
public function CharacterSetupDialog(){
mat = [0.33, 0, 0, 0, 0, 0, 0.33, 0, 0, 0, 0, 0, 0.33, 0, 0, 0, 0, 0, 1, 0];
filter = new ColorMatrixFilter(mat);
super();
SetOut();
PlayFadeIn();
avatar_text.htmlText = "<b>Click</b> on the your character's portrait to select him.";
avatar1.buttonMode = true;
avatar2.buttonMode = true;
avatar3.buttonMode = true;
avatar_text.multiline = true;
ok_button.filters = [filter];
ok_button.buttonMode = false;
ok_button.mouseEnabled = false;
with ({}) {
with ({}) {
!ERROR!.OnClick = function (_arg1:MouseEvent){
if (Game.player.avatar == 1){
Game.player.authority = (Game.player.authority + 1);
} else {
if (Game.player.avatar == 2){
Game.player.bombardier = (Game.player.bombardier + 1);
} else {
Game.player.trader = (Game.player.trader + 1);
};
};
Game.game.SetState(Game.game.LEVELMAP);
ok_button.removeEventListener(MouseEvent.CLICK, OnClick);
SoundManager.PlayOnce("Click");
};
};
ok_button.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
if (Game.player.avatar == 1){
Game.player.authority = (Game.player.authority + 1);
} else {
if (Game.player.avatar == 2){
Game.player.bombardier = (Game.player.bombardier + 1);
} else {
Game.player.trader = (Game.player.trader + 1);
};
};
Game.game.SetState(Game.game.LEVELMAP);
ok_button.removeEventListener(MouseEvent.CLICK, OnClick);
SoundManager.PlayOnce("Click");
});
avatar1.addEventListener(MouseEvent.CLICK, OnAvatar1);
avatar2.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
avatar_text.htmlText = "<b>Henry Morgan</b> had always been somewhat impish from his childhood up, and this little devil showed himself in all his glory later, by the time he became twenty. It took Morgan only several years to feel the whips of slavery on his own back, knock together his own band of cutthroats and receive his own ship – of course having robbed countless number of people along the way. Morgan was a vivid collector of precious adornments and some say that in his collection he had the rarest charmed items including even the mysterious “Soul Void Amulet”.<br></br><br></br><b>After falling</b> under the auspices of the Queen, Morgan began ravaging the Spanish colonies tirelessly and managed to show some impressive results indeed. Several years of such an extraordinary activity led to Morgan’s name being known everywhere and by everyone. Having returned to Liverpool, where he was intending to improve his health in the local taverns, Morgan never predicted that everything would turn out in such a strange way...";
bonus_text.text = "BONUS: +1 BOMBARDIER PERK";
ok_button.filters = [];
ok_button.buttonMode = true;
ok_button.mouseEnabled = true;
Game.player.avatar = 2;
SoundManager.PlayOnce("Click");
textscroll.scrollTarget = avatar_text;
textscroll.update();
});
if (Game.player.completed == true){
avatar3.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
avatar_text.htmlText = "<b>Edward Titch</b> really gave people the creeps with his appearance. His beard covered his entire face and his temper really suited his fearsome exterior. Courage and valour of this man made other captains treat him with the greatest respect. When he was twenty-five the fearless Titch finally got his own vessel under his command. After several years at sea he managed to capture a huge French ship which also immediately became his property. He named her “Queen Anna’s Revenge.”<br></br><br></br><b>Today</b>, staying at anchor in the Liverpool harbour, Titch had a meeting with a governor, who asked him to deliver “a little something” to the Wakesbury port. Despite the very generous payment Titch wasn’t happy with this request. And he was right.";
bonus_text.text = "BONUS: +1 TRADER PERK";
ok_button.filters = [];
ok_button.buttonMode = true;
ok_button.mouseEnabled = true;
Game.player.avatar = 3;
SoundManager.PlayOnce("Click");
textscroll.scrollTarget = avatar_text;
textscroll.update();
});
} else {
avatar3.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
avatar_text.htmlText = "This secret character can be selected after finishing whole game.";
bonus_text.text = "BONUS: UNKNOWN";
ok_button.filters = [filter];
ok_button.buttonMode = false;
ok_button.mouseEnabled = false;
Game.player.avatar = 3;
SoundManager.PlayOnce("Click");
textscroll.scrollTarget = avatar_text;
textscroll.update();
});
};
avatar2.gotoAndStop(2);
avatar3.gotoAndStop(4);
king.buttonMode = true;
king.addEventListener(MouseEvent.CLICK, function (_arg1:Event){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Frise-of-pirates%3Fref%3Drise-of-pirates_logo");
navigateToURL(_local2);
});
__setProp_textscroll_CharacterSetupDialog_Layer1_0();
}
public function OnAvatar1(_arg1:MouseEvent){
avatar_text.htmlText = "<b>Franklin Ford</b> was born in England in a preacher’s family. He began his brilliant marine career as an ordinary shipboy on a small merchant vessel and it was there that he gained the most of his captain skills. After mere ten years, around 1670, he was commanding his own ship that he had inherited from its previous captain. He had also acquired a strange amulet, the purpose of which was an absolute mystery for him, but he always had it with him ever since.<br></br><br></br><b>During</b> a privateer raid organized with the blessing of the Queen, Ford managed to save his crew leading his ship out of the enemy’s trap. The other five accompanying ships were sent to the bottom of the sea. Ford became famous for his cruelty and good luck.";
bonus_text.text = "BONUS: +1 AUTHORITY PERK";
ok_button.filters = [];
ok_button.buttonMode = true;
ok_button.mouseEnabled = true;
Game.player.avatar = 1;
SoundManager.PlayOnce("Click");
textscroll.scrollTarget = avatar_text;
textscroll.update();
}
function __setProp_textscroll_CharacterSetupDialog_Layer1_0(){
try {
textscroll["componentInspectorSetting"] = true;
} catch(e:Error) {
};
textscroll.direction = "vertical";
textscroll.scrollTargetName = "avatar_text";
textscroll.visible = true;
try {
textscroll["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package
Section 205
//Chest (Chest)
package {
import flash.display.*;
public class Chest extends MovieClip {
public var gold;// = 0
public var livecounter:Number;// = 0
public var alphacounter:Number;// = 0
public function Update(_arg1:Number){
if (livecounter <= 30){
livecounter = (livecounter + _arg1);
} else {
if (alphacounter <= 10){
alphacounter = (alphacounter + _arg1);
if ((1 - (alphacounter / 10)) >= 0){
this.alpha = (1 - (alphacounter / 10));
};
} else {
this.alpha = 0;
};
};
}
}
}//package
Section 206
//ChestIcon (ChestIcon)
package {
import flash.display.*;
public dynamic class ChestIcon extends MovieClip {
}
}//package
Section 207
//ChestSound (ChestSound)
package {
import flash.media.*;
public dynamic class ChestSound extends Sound {
}
}//package
Section 208
//City (City)
package {
import flash.events.*;
import flash.text.*;
public class City extends FadeSlider {
public var back_button:DialogButton;
public var reload_text:TextField;
public var market_button:ShopButton;
public var tavern:Tavern;
public var market_shop:MarketShop;
public var shipyard_button:ShopButton;
public var speed_text:TextField;
public var gold_text:TextField;
public var armor_text:TextField;
private var from:String;
public var cannons_text:TextField;
public var tavern_button:ShopButton;
public var steering_text:TextField;
public var current_ship:ShipIcon;
public var team_text:TextField;
private var sold:Boolean;// = false
private var e;
private var miniquest:Boolean;// = false
public var range_text:TextField;
public var shipyard:Shipyard;
private var earned:int;// = 0
public var cannons_button:ShopButton;
public var damage_text:TextField;
public var cannons_shop:CannonShop;
public static var city:City = null;
public function City(){
var index:int;
var dlg:*;
var cityindex:int;
var tocity:String;
var reward:int;
from = new String();
super();
city = this;
SetOut();
PlayFadeIn();
shipyard_button.addEventListener(MouseEvent.CLICK, OnShipyard, false, 0, true);
cannons_button.addEventListener(MouseEvent.CLICK, OnCannons, false, 0, true);
market_button.addEventListener(MouseEvent.CLICK, OnMarket, false, 0, true);
tavern_button.addEventListener(MouseEvent.CLICK, OnTavern, false, 0, true);
back_button.addEventListener(MouseEvent.CLICK, OnBack, false, 0, true);
shipyard.visible = false;
shipyard.mouseEnabled = false;
cannons_shop.visible = false;
cannons_shop.mouseEnabled = false;
market_shop.visible = false;
market_shop.mouseEnabled = false;
tavern.visible = false;
tavern.mouseEnabled = false;
try {
if (Game.player.goods["cityname"] != undefined){
if (Game.player.goods["cityname"] != Game.player.cityname){
index = 0;
while (index < 10) {
if (Game.player.goods[index] != undefined){
if ((Game.settingsxml.Market.Item[index].@sell * Game.player.goods[index]) >= 0){
Game.player.gold = (Game.player.gold + (Game.settingsxml.Market.Item[index].@sell * Game.player.goods[index]));
earned = (earned + (Game.settingsxml.Market.Item[index].@sell * Game.player.goods[index]));
};
sold = true;
};
index = (index + 1);
};
from = Game.player.goods["cityname"];
Game.player.goods["cityname"] = null;
if (sold == true){
dlg = new ProfitDialog();
dlg.city_text.text = (((("You've sold many goods from " + from) + " and earned ") + earned.toString()) + " gold!");
addChild(dlg);
};
UpdateDialog();
};
};
trace(("cityname=" + Game.player.cityname));
trace(("miniquest=" + Game.player.miniquest[Game.player.cityname]));
if (Game.player.miniquest[Game.player.cityname] != undefined){
if (Game.player.miniquest[Game.player.cityname] != null){
miniquest = true;
if (reward >= 0){
Game.player.gold = (Game.player.gold + Game.player.miniquest[Game.player.cityname].reward);
};
UpdateDialog();
dlg = new ProfitDialog();
dlg.city_text.text = (("You've delivered package and earned " + Game.player.miniquest[Game.player.cityname].reward) + " gold!");
addChild(dlg);
Game.player.miniquest[Game.player.cityname] = null;
} else {
if (Math.random() < 0.3){
dlg = new MiniquestDialog();
cityindex = int((Math.random() * 11));
while ((((LevelMap.levelmap.map.Item[cityindex].@city == "none")) || ((LevelMap.levelmap.map.Item[cityindex].@city == Game.player.cityname)))) {
cityindex = int((Math.random() * 11));
};
tocity = LevelMap.levelmap.map.Item[cityindex].@city;
reward = int((Math.random() * 1400));
dlg.city_text.text = (((("Unknown sailor said to you: \"Please, take this package and deliver it to the " + tocity) + " city\". You can take ") + reward.toString()) + " gold for this.");
dlg.cityname = tocity;
dlg.reward = reward;
addChild(dlg);
};
};
} else {
if (Math.random() < 0.3){
dlg = new MiniquestDialog();
cityindex = int((Math.random() * 11));
while ((((LevelMap.levelmap.map.Item[cityindex].@city == "none")) || ((LevelMap.levelmap.map.Item[cityindex].@city == Game.player.cityname)))) {
cityindex = int((Math.random() * 11));
};
tocity = LevelMap.levelmap.map.Item[cityindex].@city;
reward = int((Math.random() * 1400));
dlg.city_text.text = (((("Unknown sailor said to you: \"Please, take this package and deliver it to the " + tocity) + " city\". You can take ") + reward.toString()) + " gold for this.");
dlg.cityname = tocity;
dlg.reward = reward;
addChild(dlg);
};
};
UpdateDialog();
} catch(e:Error) {
};
}
public function OnTavern(_arg1:Event){
tavern.UpdateDialog();
shipyard.visible = false;
shipyard.mouseEnabled = false;
cannons_shop.visible = false;
cannons_shop.mouseEnabled = false;
market_shop.visible = false;
market_shop.mouseEnabled = false;
tavern.visible = true;
tavern.mouseEnabled = true;
SoundManager.PlayOnce("Click");
}
public function OnBack(_arg1:Event){
GlobalData.player = Game.player;
GlobalData.Flush();
back_button.removeEventListener(MouseEvent.CLICK, OnBack);
Game.game.SetState(Game.game.LEVELMAP);
SoundManager.PlayOnce("Click");
}
public function UpdateDialog(){
Game.player.update();
gold_text.text = Game.player.gold.toString();
current_ship.gotoAndStop(Game.player.ship);
speed_text.text = Game.player.speed.toString();
steering_text.text = Game.player.steering.toString();
armor_text.text = Game.player.armor.toString();
team_text.text = Game.player.team.toString();
damage_text.text = Game.player.damage.toString();
reload_text.text = (Game.player.reload.toString() + "sec.");
range_text.text = Game.player.range.toString();
cannons_text.text = Game.player.cannons.toString();
shipyard.SetPage(1);
cannons_shop.SetPage(1);
market_shop.SetPage(1);
tavern.UpdateDialog();
}
public function OnCannons(_arg1:Event){
shipyard.visible = false;
shipyard.mouseEnabled = false;
cannons_shop.visible = true;
cannons_shop.mouseEnabled = true;
market_shop.visible = false;
market_shop.mouseEnabled = false;
tavern.visible = false;
tavern.mouseEnabled = false;
SoundManager.PlayOnce("Click");
if (Game.player.showcannonstutorial == true){
addChild(new CannonsTutorial());
};
cannons_shop.SetPage(1);
}
public function OnShipyard(_arg1:Event){
shipyard.visible = true;
shipyard.mouseEnabled = true;
cannons_shop.visible = false;
cannons_shop.mouseEnabled = false;
market_shop.visible = false;
market_shop.mouseEnabled = false;
tavern.visible = false;
tavern.mouseEnabled = false;
SoundManager.PlayOnce("Click");
if (Game.player.showshipyardtutorial == true){
addChild(new ShipyardTutorial());
};
shipyard.SetPage(1);
}
public function OnMarket(_arg1:Event){
shipyard.visible = false;
shipyard.mouseEnabled = false;
cannons_shop.visible = false;
cannons_shop.mouseEnabled = false;
market_shop.visible = true;
market_shop.mouseEnabled = true;
tavern.visible = false;
tavern.mouseEnabled = false;
SoundManager.PlayOnce("Click");
if (Game.player.showmarkettutorial == true){
addChild(new MarketTutorial());
};
market_shop.SetPage(1);
}
}
}//package
Section 209
//CityDialog (CityDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class CityDialog extends MovieClip {
public var no_button:MapButton;
public var city_text:TextField;
public var yes_button:MapButton;
public function CityDialog(){
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
no_button.addEventListener(MouseEvent.CLICK, OnNo, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
if (parent){
SoundManager.PlayOnce("Click");
yes_button.removeEventListener(MouseEvent.CLICK, OnYes);
Game.game.SetState(Game.game.CITY);
};
}
public function OnNo(_arg1:MouseEvent){
if (parent){
SoundManager.PlayOnce("Click");
no_button.removeEventListener(MouseEvent.CLICK, OnNo);
parent.removeChild(this);
};
}
}
}//package
Section 210
//CityTheme (CityTheme)
package {
import flash.media.*;
public dynamic class CityTheme extends Sound {
}
}//package
Section 211
//ClickSound (ClickSound)
package {
import flash.media.*;
public dynamic class ClickSound extends Sound {
}
}//package
Section 212
//Cloud (Cloud)
package {
import flash.display.*;
public dynamic class Cloud extends MovieClip {
}
}//package
Section 213
//Common (Common)
package {
import flash.geom.*;
public class Common {
public static function Intersect(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point):Boolean{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Boolean;
var _local10:Boolean;
var _local11:Number;
var _local12:Number;
if (_arg1.x == _arg2.x){
if ((((_arg1.x < _arg3.x)) || ((_arg1.x > _arg4.x)))){
return (false);
};
if (_arg1.y != _arg2.y){
_local5 = ((_arg3.y - _arg1.y) / (_arg2.y - _arg1.y));
_local6 = ((_arg4.y - _arg1.y) / (_arg2.y - _arg1.y));
if ((((_local5 >= 0)) && ((_local5 <= 1)))){
return (true);
};
if ((((_local6 >= 0)) && ((_local6 <= 1)))){
return (true);
};
if ((((_local5 <= 0)) && ((_local6 >= 1)))){
return (true);
};
if ((((_local6 <= 0)) && ((_local5 >= 1)))){
return (true);
};
return (false);
} else {
return (false);
};
//unresolved jump
};
if (_arg1.y == _arg2.y){
if ((((_arg1.y < _arg3.y)) || ((_arg1.y > _arg4.y)))){
return (false);
};
if (_arg1.x != _arg2.x){
_local7 = ((_arg3.x - _arg1.x) / (_arg2.x - _arg1.x));
_local8 = ((_arg4.x - _arg1.x) / (_arg2.x - _arg1.x));
if ((((_local7 >= 0)) && ((_local7 <= 1)))){
return (true);
};
if ((((_local8 >= 0)) && ((_local8 <= 1)))){
return (true);
};
if ((((_local7 <= 0)) && ((_local8 >= 1)))){
return (true);
};
if ((((_local8 <= 0)) && ((_local7 >= 1)))){
return (true);
};
return (false);
} else {
return (false);
};
//unresolved jump
};
_local7 = ((_arg3.x - _arg1.x) / (_arg2.x - _arg1.x));
_local8 = ((_arg4.x - _arg1.x) / (_arg2.x - _arg1.x));
_local5 = ((_arg3.y - _arg1.y) / (_arg2.y - _arg1.y));
_local6 = ((_arg4.y - _arg1.y) / (_arg2.y - _arg1.y));
_local9 = false;
_local10 = false;
_local11 = 0;
_local12 = 0;
if ((((_local7 >= 0)) && ((_local7 <= 1)))){
_local12 = (_arg1.y + (_local7 * (_arg2.y - _arg1.y)));
if ((((_local12 >= _arg3.y)) && ((_local12 <= _arg4.y)))){
return (true);
};
} else {
if ((((_local8 >= 0)) && ((_local8 <= 1)))){
_local12 = (_arg1.y + (_local8 * (_arg2.y - _arg1.y)));
if ((((_local12 >= _arg3.y)) && ((_local12 <= _arg4.y)))){
return (true);
};
};
};
if ((((0 <= _local5)) && ((_local5 <= 1)))){
_local11 = (_arg1.x + (_local5 * (_arg2.x - _arg1.x)));
if ((((_local11 >= _arg3.x)) && ((_local11 <= _arg4.x)))){
return (true);
};
} else {
if ((((0 <= _local6)) && ((_local6 <= 1)))){
_local11 = (_arg1.x + (_local6 * (_arg2.x - _arg1.x)));
if ((((_local11 >= _arg3.x)) && ((_local11 <= _arg4.x)))){
return (true);
};
};
};
return (false);
}
}
}//package
Section 214
//CompanionDialog (CompanionDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class CompanionDialog extends MovieClip {
public var no_button:MapButton;
public var city_text:TextField;
public var yes_button:MapButton;
public function CompanionDialog(){
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
no_button.addEventListener(MouseEvent.CLICK, OnNo, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
}
public function OnNo(_arg1:MouseEvent){
}
}
}//package
Section 215
//CompanionShip (CompanionShip)
package {
import Box2D.Common.Math.*;
import Box2D.Common.*;
import flash.geom.*;
public class CompanionShip extends Ship {
public const PASSIVE:int = 6;
public const FORWARDBRAKE:int = 1;
public const RIGHTBRAKE:int = 5;
public const LEFTACCEL:int = 2;
public const ROAM:int = 2;
public const FLOW:int = 1;
public const FORWARDACCEL:int = 0;
public const RIGHTACCEL:int = 4;
public const LEFTBRAKE:int = 3;
public var speedx:Number;// = 0
public var speedy:Number;// = 0
private var steerbehaviour:int;// = 0
public var forwardtrace:WaterForwardTrace;
private var infobar:Stripe;
private var targetpoint:Point;
public var currentenemy:EnemyShip;// = null
public var boarding:Number;// = 0.5
private var maxteam:int;// = 0
public var backtrace:WaterBackTrace;
public var boardingcounter:Number;// = 0
private var hbcounter:Number;// = 3
private var shipstate:int;// = 0
private var shotstate:int;// = 0
private var enemytype:int;// = 0
private var targetangle:Number;// = 0
private var e;
public var dead:Boolean;// = false
public function CompanionShip(){
infobar = new Stripe();
forwardtrace = new WaterForwardTrace();
backtrace = new WaterBackTrace();
targetpoint = new Point();
super();
addChild(forwardtrace);
forwardtrace.y = (forwardtrace.y + 5);
addChild(backtrace);
backtrace.y = (backtrace.y + 5);
addChild(shipclip);
addChild(infobar);
infobar.y = (this.y - 18);
}
override public function Damage(_arg1:Number){
trace("damage companion");
hp = (hp - _arg1);
if (hp <= 0){
dead = true;
SoundManager.PlayOnce("Boom");
(parent as LevelHolder).RemoveCompanion(this);
return;
};
infobar.alpha = 1;
hbcounter = 3;
}
public function PowerBreak(_arg1:Number){
if (speed >= 7){
speed = (speed - (_arg1 * slow));
} else {
speed = 7;
};
}
public function DamageTeam(){
}
public function Init(_arg1:Object){
bboxwidth = Game.settingsxml.Common.@bboxwidth;
bboxheight = Game.settingsxml.Common.@bboxheight;
maxspeed = _arg1.speed;
speed = maxspeed;
shotdamage = _arg1.damage;
steerspeed = _arg1.steering;
shotspeed = 60;
shotrange = _arg1.range;
reload = _arg1.reload;
maxcores = _arg1.cannons;
cores = maxcores;
maxhp = _arg1.armor;
hp = maxhp;
team = _arg1.team;
maxteam = team;
infobar.alpha = 1;
enemytype = _arg1.type;
targetangle = (Math.random() * 360);
var _local2:Number = Math.cos(((targetangle * Math.PI) / 180));
var _local3:Number = Math.sin(((targetangle * Math.PI) / 180));
var _local4:Number = ((xdir * _local2) - (ydir * _local3));
var _local5:Number = ((xdir * _local3) + (ydir * _local2));
targetpoint.x = ((_local4 * shotrange) / 1.5);
targetpoint.y = ((_local5 * shotrange) / 1.5);
infobar.hp_text.text = int(hp).toString();
infobar.team_text.text = int(team).toString();
SelectEnemy();
}
public function SelectEnemy(){
var _local4:*;
var _local1:LevelHolder = (parent as LevelHolder);
if (_local1 == null){
return;
};
if (_local1.enemies.length == 0){
currentenemy = null;
return;
};
currentenemy = null;
var _local2:Number = 0;
var _local3:Number = 0;
for each (_local4 in _local1.enemies) {
_local3 = (Math.pow((_local4.x - this.x), 2) + Math.pow((_local4.y - this.y), 2));
if ((((_local2 == 0)) || ((_local2 >= _local3)))){
_local2 = _local3;
currentenemy = _local4;
};
};
}
override public function Fire(_arg1:Number){
var _local3:Object;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local2:Boolean;
SelectEnemy();
if (currentenemy == null){
return;
};
_local3 = {x:currentenemy.x, y:currentenemy.y};
if ((((((cores > 0)) && ((cannonreloadcounter >= cannonreload)))) && (!((currentenemy is PlayerShip))))){
cannonreloadcounter = 0;
_local4 = Math.cos(((angle * Math.PI) / 180));
_local5 = Math.sin(((angle * Math.PI) / 180));
_local6 = ((xdir * _local4) - (ydir * _local5));
_local7 = ((xdir * _local5) + (ydir * _local4));
_local8 = ((Math.random() * 60) - 30);
_local9 = (((xdir * _local4) - (_local8 * _local5)) + this.x);
_local10 = (((xdir * _local5) + (_local8 * _local4)) + this.y);
_local11 = (_local6 * 10);
_local12 = (_local7 * 10);
_local13 = (_local3.x - this.x);
_local14 = (_local3.y - this.y);
_local15 = ((_local13 * _local12) - (_local14 * _local11));
if (_local15 <= 0){
_local2 = false;
} else {
_local2 = true;
};
if (_local2){
if ((dir + 8) <= 32){
(parent as LevelHolder).AddShot(_local9, _local10, (dir + 8));
} else {
(parent as LevelHolder).AddShot(_local9, _local10, ((dir + 8) - 32));
};
(parent as LevelHolder).AddCore(this, _local9, _local10, (angle - 90), shotspeed, shotdamage, shotrange);
} else {
if ((dir - 8) > 0){
(parent as LevelHolder).AddShot(_local9, _local10, (dir - 8));
} else {
(parent as LevelHolder).AddShot(_local9, _local10, ((dir - 8) + 32));
};
(parent as LevelHolder).AddCore(this, _local9, _local10, (angle + 90), shotspeed, shotdamage, shotrange);
};
SoundManager.PlayOnce("Shot");
cores--;
};
}
override public function SteerLeft(_arg1:Number){
body.SetAngularVelocity((-0.02 * steerspeed));
UpdateBodySpeed();
}
override public function Break(_arg1:Number){
if (speed >= 0){
speed = (speed - ((_arg1 * slow) / 2));
} else {
speed = 0;
};
}
public function UpdateBodySpeed(){
var _local1:Number = Math.cos(((angle * Math.PI) / 180));
var _local2:Number = Math.sin(((angle * Math.PI) / 180));
var _local3:Number = ((xdir * _local1) - (ydir * _local2));
var _local4:Number = ((xdir * _local2) + (ydir * _local1));
speedx = (speed * _local3);
speedy = (speed * _local4);
forwardtrace.rotation = angle;
backtrace.rotation = angle;
}
override public function Update(_arg1:Number){
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Object;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:*;
var _local18:Point;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Boolean;
var _local23:Point;
var _local24:Number;
var _local25:*;
var _local26:*;
var _local27:Number;
var _local28:Number;
this.rotation = angle;
angle = this.rotation;
if (angle >= 0){
angle = (angle - 360);
};
var _local2:* = 0;
while (_local2 < 32) {
_local3 = (-11.25 * _local2);
_local4 = (_local3 + 5.625);
_local5 = (_local3 - 5.625);
if ((((angle >= _local5)) && ((angle < _local4)))){
if ((((Math.abs((angle - _local5)) >= 2)) && ((Math.abs((angle - _local4)) >= 2)))){
shipclip.gotoAndStop(((((enemytype - 1) * 32) + _local2) + 1));
dir = (_local2 + 1);
};
};
_local2++;
};
this.rotation = 0;
hbcounter = (hbcounter - _arg1);
if (hbcounter >= 0){
if (hbcounter >= 2){
infobar.alpha = 1;
} else {
infobar.alpha = 1;
};
} else {
hbcounter = -1;
};
if (cores < maxcores){
reloadcounter = (reloadcounter + _arg1);
if (reloadcounter >= reload){
reloadcounter = 0;
cores++;
};
} else {
reloadcounter = 0;
};
cannonreloadcounter = (cannonreloadcounter + _arg1);
if (shipstate == FLOW){
angle = 0;
SetState(ROAM);
return;
};
if (shipstate == ROAM){
_local6 = {x:0, y:0};
SelectEnemy();
if (currentenemy == null){
_local6 = (parent as LevelHolder).GetPlayerCoords();
} else {
_local6 = {x:currentenemy.x, y:currentenemy.y};
};
_local7 = Math.sqrt((Math.pow((_local6.x - this.x), 2) + Math.pow((_local6.y - this.y), 2)));
_local8 = Math.cos(((angle * Math.PI) / 180));
_local9 = Math.sin(((angle * Math.PI) / 180));
_local10 = ((xdir * _local8) - (ydir * _local9));
_local11 = ((xdir * _local9) + (ydir * _local8));
_local12 = ((_local10 * speed) * _arg1);
_local13 = ((_local11 * speed) * _arg1);
if (_local7 <= shotrange){
_local14 = (((_local6.x - this.x) * _local12) + ((_local6.y - this.y) * _local13));
_local15 = ((Math.pow((_local6.x - this.x), 2) + Math.pow((_local6.y - this.y), 2)) * ((_local12 * _local12) + (_local13 * _local13)));
_local16 = Math.acos((_local14 / Math.sqrt(_local15)));
if ((((((_local16 >= (-0.75 * Math.PI))) && ((_local16 <= (-0.25 * Math.PI))))) || ((((_local16 <= (0.75 * Math.PI))) && ((_local16 >= (0.25 * Math.PI))))))){
Fire(_arg1);
};
};
this.x = (this.x + _local12);
this.y = (this.y + _local13);
if (parent){
_local17 = (parent as LevelHolder).GetNearestRock(this.x, this.y);
if (_local17.radius <= 85){
_local18 = new Point(_local17.rock.x, _local17.rock.y);
_local19 = (_local18.x - this.x);
_local20 = (_local18.y - this.y);
_local21 = ((_local19 * _local13) - (_local20 * _local12));
_local23 = new Point();
if (_local21 >= 0){
_local23.x = _local20;
_local23.y = -(_local19);
} else {
_local23.x = -(_local20);
_local23.y = _local19;
};
_local24 = Math.sqrt(((_local23.x * _local23.x) + (_local23.y * _local23.y)));
_local23.x = ((_local23.x / _local24) * _local17.radius);
_local23.y = ((_local23.y / _local24) * _local17.radius);
_local18.x = (_local18.x + _local23.x);
_local18.y = (_local18.y + _local23.y);
_local19 = (_local18.x - this.x);
_local20 = (_local18.y - this.y);
_local21 = ((_local19 * _local13) - (_local20 * _local12));
if (_local21 >= 0){
SteerRight(_arg1);
} else {
SteerLeft(_arg1);
};
} else {
_local25 = (_local6.x + targetpoint.x);
_local26 = (_local6.y + targetpoint.y);
_local27 = (_local12 * 10);
_local28 = (_local13 * 10);
_local19 = (_local25 - this.x);
_local20 = (_local26 - this.y);
_local21 = ((_local19 * _local28) - (_local20 * _local27));
if (_local21 <= 0){
SteerRight(_arg1);
} else {
SteerLeft(_arg1);
};
};
};
};
angle = (body.GetAngle() * (180 / Math.PI));
UpdateBodySpeed();
body.WakeUp();
body.SetLinearVelocity(new b2Vec2(speedx, speedy));
}
public function SetState(_arg1:int){
if (shipstate == 0){
shipstate = _arg1;
} else {
if ((((shipstate == FLOW)) && ((_arg1 == ROAM)))){
shipstate = _arg1;
};
};
}
override public function SteerRight(_arg1:Number){
body.SetAngularVelocity((0.02 * steerspeed));
UpdateBodySpeed();
}
override public function Accelerate(_arg1:Number){
if ((((speed >= 0)) && ((speed <= maxspeed)))){
speed = (speed + (_arg1 * accel));
} else {
speed = maxspeed;
};
}
}
}//package
Section 216
//Core (Core)
package {
import flash.display.*;
public class Core extends MovieClip {
var cosa:Number;// = 0
private var ty:Number;// = 0
private var speed:Number;// = 0
var sina:Number;// = 0
private var tx:Number;// = 0
public var damage:Number;// = 0
public var tthis:Ship;// = null
private var angle:Number;// = 0
private var currentrange:Number;// = 0
private var range:Number;// = 0
public function SetParameters(_arg1, _arg2, _arg3, _arg4, _arg5){
angle = _arg2;
speed = _arg3;
damage = _arg4;
range = _arg5;
tthis = _arg1;
cosa = Math.cos((((angle - 90) * Math.PI) / 180));
sina = Math.sin((((angle - 90) * Math.PI) / 180));
this.cacheAsBitmap = true;
this.mouseEnabled = false;
}
public function Update(_arg1:Number){
var _local2:Number;
_local2 = ((cosa * speed) * _arg1);
var _local3:Number = ((sina * speed) * _arg1);
this.x = (this.x + _local2);
this.y = (this.y + _local3);
currentrange = (currentrange + Math.sqrt(((_local2 * _local2) + (_local3 * _local3))));
if (currentrange >= range){
(parent as LevelHolder).AddSplash(this.x, this.y);
(parent as LevelHolder).RemoveCore(this);
};
}
}
}//package
Section 217
//Credits (Credits)
package {
import flash.events.*;
import flash.display.*;
public class Credits extends FadeSlider {
public var scoreclip:MovieClip;
public var backtomenubutton:ShopButton;
public function Credits(){
SetOut();
PlayFadeIn();
backtomenubutton.addEventListener(MouseEvent.CLICK, OnBackToMenu, false, 0, true);
}
public function OnBackToMenu(_arg1:MouseEvent){
backtomenubutton.removeEventListener(MouseEvent.CLICK, OnBackToMenu);
Game.game.SetState(Game.game.MAINMENU);
}
}
}//package
Section 218
//CreditsButton (CreditsButton)
package {
import flash.display.*;
public dynamic class CreditsButton extends SimpleButton {
}
}//package
Section 219
//DejaVu (DejaVu)
package {
import flash.text.*;
public dynamic class DejaVu extends Font {
}
}//package
Section 220
//DialogButton (DialogButton)
package {
import flash.display.*;
public dynamic class DialogButton extends SimpleButton {
}
}//package
Section 221
//EnemyShip (EnemyShip)
package {
import Box2D.Common.Math.*;
import Box2D.Common.*;
import flash.geom.*;
public class EnemyShip extends Ship {
public const PASSIVE:int = 6;
public const FORWARDBRAKE:int = 1;
public const RIGHTBRAKE:int = 5;
public const LEFTACCEL:int = 2;
public const ROAM:int = 2;
public const FLOW:int = 1;
public const FORWARDACCEL:int = 0;
public const RIGHTACCEL:int = 4;
public const LEFTBRAKE:int = 3;
public var speedx:Number;// = 0
public var speedy:Number;// = 0
private var steerbehaviour:int;// = 0
public var forwardtrace:WaterForwardTrace;
private var infobar:Stripe;
private var targetpoint:Point;
public var boarding:Number;// = 0.5
private var maxteam:int;// = 0
public var backtrace:WaterBackTrace;
public var boardingcounter:Number;// = 0
private var hbcounter:Number;// = 3
private var shipstate:int;// = 0
private var shotstate:int;// = 0
private var enemytype:int;// = 0
private var targetangle:Number;// = 0
private var e;
public var dead:Boolean;// = false
public function EnemyShip(){
infobar = new Stripe();
forwardtrace = new WaterForwardTrace();
backtrace = new WaterBackTrace();
targetpoint = new Point();
super();
addChild(forwardtrace);
forwardtrace.y = (forwardtrace.y + 5);
addChild(backtrace);
backtrace.y = (backtrace.y + 5);
addChild(shipclip);
addChild(infobar);
infobar.y = (this.y - 18);
this.mouseEnabled = false;
this.mouseChildren = false;
}
override public function Damage(_arg1:Number){
if (Game.player.bombardier != 4){
hp = (hp - (_arg1 + (0.4 * Game.player.bombardier)));
} else {
hp = (hp - _arg1);
};
infobar.hp_text.text = int(hp).toString();
if (hp <= 0){
dead = true;
SoundManager.PlayOnce("Boom");
(parent as LevelHolder).AddChest((this.x + (Math.random() * 40)), (this.y + (Math.random() * 40)), int((maxhp * Math.random())));
(parent as LevelHolder).RemoveShip(this);
return;
};
infobar.alpha = 1;
hbcounter = 3;
}
public function PowerBreak(_arg1:Number){
if (speed >= 7){
speed = (speed - (_arg1 * slow));
} else {
speed = 7;
};
}
public function DamageTeam(){
team = (team - 1);
infobar.team_text.text = int(team).toString();
if (team <= 0){
dead = true;
(parent as LevelHolder).AddChest((this.x + (Math.random() * 40)), (this.y + (Math.random() * 40)), int((maxhp * Math.random())));
(parent as LevelHolder).RemoveShip(this);
return;
};
infobar.alpha = 1;
hbcounter = 3;
}
public function Init(_arg1:Object){
bboxwidth = Game.settingsxml.Common.@bboxwidth;
bboxheight = Game.settingsxml.Common.@bboxheight;
maxspeed = _arg1.speed;
speed = maxspeed;
shotdamage = _arg1.damage;
steerspeed = _arg1.steering;
shotspeed = 45;
shotrange = _arg1.range;
reload = _arg1.reload;
maxcores = _arg1.cannons;
cores = maxcores;
maxhp = _arg1.armor;
hp = maxhp;
team = _arg1.team;
maxteam = team;
infobar.alpha = 1;
enemytype = _arg1.type;
UpdateTargetPoint();
infobar.hp_text.text = int(hp).toString();
infobar.team_text.text = int(team).toString();
}
public function UpdateTargetPoint(){
targetangle = (Math.random() * 360);
var _local1:Number = Math.cos(((targetangle * Math.PI) / 180));
var _local2:Number = Math.sin(((targetangle * Math.PI) / 180));
var _local3:Number = ((xdir * _local1) - (ydir * _local2));
var _local4:Number = ((xdir * _local2) + (ydir * _local1));
targetpoint.x = (_local3 * shotrange);
targetpoint.y = (_local4 * shotrange);
}
override public function SteerLeft(_arg1:Number){
body.SetAngularVelocity((-0.02 * steerspeed));
UpdateBodySpeed();
}
override public function Fire(_arg1:Number){
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
if (((((parent as LevelHolder).boarding == true)) && (((parent as LevelHolder).boardingship == this)))){
return;
};
var _local2:Boolean;
var _local3:Object = (parent as LevelHolder).GetPlayerCoords();
if ((((cores > 0)) && ((cannonreloadcounter >= cannonreload)))){
cannonreloadcounter = 0;
_local4 = Math.cos(((angle * Math.PI) / 180));
_local5 = Math.sin(((angle * Math.PI) / 180));
_local6 = ((xdir * _local4) - (ydir * _local5));
_local7 = ((xdir * _local5) + (ydir * _local4));
_local8 = ((Math.random() * 60) - 30);
_local9 = (((xdir * _local4) - (_local8 * _local5)) + this.x);
_local10 = (((xdir * _local5) + (_local8 * _local4)) + this.y);
_local11 = (_local6 * 10);
_local12 = (_local7 * 10);
_local13 = (_local3.x - this.x);
_local14 = (_local3.y - this.y);
_local15 = ((_local13 * _local12) - (_local14 * _local11));
if (_local15 <= 0){
_local2 = false;
} else {
_local2 = true;
};
if (_local2){
if ((dir + 8) <= 32){
(parent as LevelHolder).AddShot(_local9, _local10, (dir + 8));
} else {
(parent as LevelHolder).AddShot(_local9, _local10, ((dir + 8) - 32));
};
(parent as LevelHolder).AddCore(this, _local9, _local10, (angle - 90), shotspeed, shotdamage, shotrange);
} else {
if ((dir - 8) > 0){
(parent as LevelHolder).AddShot(_local9, _local10, (dir - 8));
} else {
(parent as LevelHolder).AddShot(_local9, _local10, ((dir - 8) + 32));
};
(parent as LevelHolder).AddCore(this, _local9, _local10, (angle + 90), shotspeed, shotdamage, shotrange);
};
SoundManager.PlayOnce("Shot");
cores--;
};
}
override public function Break(_arg1:Number){
if (speed >= 0){
speed = (speed - ((_arg1 * slow) / 2));
} else {
speed = 0;
};
}
public function UpdateBodySpeed(){
var _local1:Number = Math.cos(((angle * Math.PI) / 180));
var _local2:Number = Math.sin(((angle * Math.PI) / 180));
var _local3:Number = ((xdir * _local1) - (ydir * _local2));
var _local4:Number = ((xdir * _local2) + (ydir * _local1));
speedx = (speed * _local3);
speedy = (speed * _local4);
forwardtrace.rotation = angle;
backtrace.rotation = angle;
}
override public function Update(_arg1:Number){
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Object;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:*;
var _local18:Point;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Boolean;
var _local23:Point;
var _local24:Number;
var _local25:*;
var _local26:*;
var _local27:Number;
var _local28:Number;
this.rotation = angle;
angle = this.rotation;
if (angle >= 0){
angle = (angle - 360);
};
var _local2:* = 0;
while (_local2 < 32) {
_local3 = (-11.25 * _local2);
_local4 = (_local3 + 5.625);
_local5 = (_local3 - 5.625);
if ((((angle >= _local5)) && ((angle < _local4)))){
if ((((Math.abs((angle - _local5)) >= 2)) && ((Math.abs((angle - _local4)) >= 2)))){
shipclip.gotoAndStop(((((enemytype - 1) * 32) + _local2) + 1));
dir = (_local2 + 1);
};
};
_local2++;
};
this.rotation = 0;
hbcounter = (hbcounter - _arg1);
if (hbcounter >= 0){
if (hbcounter >= 2){
infobar.alpha = 1;
} else {
infobar.alpha = 1;
};
} else {
hbcounter = -1;
};
if (cores < maxcores){
reloadcounter = (reloadcounter + _arg1);
if (reloadcounter >= reload){
reloadcounter = 0;
cores++;
};
} else {
reloadcounter = 0;
};
cannonreloadcounter = (cannonreloadcounter + _arg1);
if (shipstate == FLOW){
angle = 0;
SetState(ROAM);
return;
};
if (shipstate == ROAM){
_local6 = (parent as LevelHolder).GetPlayerCoords();
_local7 = Math.sqrt((Math.pow((_local6.x - this.x), 2) + Math.pow((_local6.y - this.y), 2)));
_local8 = Math.cos(((angle * Math.PI) / 180));
_local9 = Math.sin(((angle * Math.PI) / 180));
_local10 = ((xdir * _local8) - (ydir * _local9));
_local11 = ((xdir * _local9) + (ydir * _local8));
_local12 = ((_local10 * speed) * _arg1);
_local13 = ((_local11 * speed) * _arg1);
if (_local7 <= shotrange){
_local14 = (((_local6.x - this.x) * _local12) + ((_local6.y - this.y) * _local13));
_local15 = ((Math.pow((_local6.x - this.x), 2) + Math.pow((_local6.y - this.y), 2)) * ((_local12 * _local12) + (_local13 * _local13)));
_local16 = Math.acos((_local14 / Math.sqrt(_local15)));
if ((((((_local16 >= (-0.75 * Math.PI))) && ((_local16 <= (-0.25 * Math.PI))))) || ((((_local16 <= (0.75 * Math.PI))) && ((_local16 >= (0.25 * Math.PI))))))){
Fire(_arg1);
};
};
if (_local7 <= (shotrange / 2.3)){
if ((parent as LevelHolder).boarding == false){
(parent as LevelHolder).boarding = true;
(parent as LevelHolder).boardingship = this;
};
if (((((parent as LevelHolder).boarding == true)) && (((parent as LevelHolder).boardingship == this)))){
boardingcounter = (boardingcounter + _arg1);
PowerBreak(_arg1);
if (boardingcounter >= boarding){
boardingcounter = 0;
(parent as LevelHolder).DamageTeam();
DamageTeam();
if (team == 0){
hp = 0;
};
};
};
};
this.x = (this.x + _local12);
this.y = (this.y + _local13);
if (parent){
_local17 = (parent as LevelHolder).GetNearestRock(this.x, this.y);
if (_local17.radius <= 85){
_local18 = new Point(_local17.rock.x, _local17.rock.y);
_local19 = (_local18.x - this.x);
_local20 = (_local18.y - this.y);
_local21 = ((_local19 * _local13) - (_local20 * _local12));
_local23 = new Point();
if (_local21 >= 0){
_local23.x = _local20;
_local23.y = -(_local19);
} else {
_local23.x = -(_local20);
_local23.y = _local19;
};
_local24 = Math.sqrt(((_local23.x * _local23.x) + (_local23.y * _local23.y)));
_local23.x = ((_local23.x / _local24) * _local17.radius);
_local23.y = ((_local23.y / _local24) * _local17.radius);
_local18.x = (_local18.x + _local23.x);
_local18.y = (_local18.y + _local23.y);
_local19 = (_local18.x - this.x);
_local20 = (_local18.y - this.y);
_local21 = ((_local19 * _local13) - (_local20 * _local12));
if (_local21 >= 0){
SteerRight(_arg1);
} else {
SteerLeft(_arg1);
};
} else {
_local25 = ((parent as LevelHolder).player.x + targetpoint.x);
_local26 = ((parent as LevelHolder).player.y + targetpoint.y);
while ((((((((_local25 < 0)) || ((_local25 > 2000)))) || ((_local26 < 0)))) || ((_local26 > 2000)))) {
UpdateTargetPoint();
_local25 = ((parent as LevelHolder).player.x + targetpoint.x);
_local26 = ((parent as LevelHolder).player.y + targetpoint.y);
};
_local27 = (_local12 * 10);
_local28 = (_local13 * 10);
_local19 = (_local25 - this.x);
_local20 = (_local26 - this.y);
_local21 = ((_local19 * _local28) - (_local20 * _local27));
if (_local21 <= 0){
SteerRight(_arg1);
} else {
SteerLeft(_arg1);
};
};
};
};
angle = (body.GetAngle() * (180 / Math.PI));
UpdateBodySpeed();
body.WakeUp();
body.SetLinearVelocity(new b2Vec2(speedx, speedy));
}
public function SetState(_arg1:int){
if (shipstate == 0){
shipstate = _arg1;
} else {
if ((((shipstate == FLOW)) && ((_arg1 == ROAM)))){
shipstate = _arg1;
};
};
}
override public function SteerRight(_arg1:Number){
body.SetAngularVelocity((0.02 * steerspeed));
UpdateBodySpeed();
}
override public function Accelerate(_arg1:Number){
if ((((speed >= 0)) && ((speed <= maxspeed)))){
speed = (speed + (_arg1 * accel));
} else {
speed = maxspeed;
};
}
}
}//package
Section 222
//ExpLine (ExpLine)
package {
import flash.display.*;
public dynamic class ExpLine extends MovieClip {
}
}//package
Section 223
//ExpSymbol (ExpSymbol)
package {
import flash.display.*;
public dynamic class ExpSymbol extends MovieClip {
}
}//package
Section 224
//FadeSlider (FadeSlider)
package {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class FadeSlider extends MovieClip {
const IN:uint = 1;
const OUT:uint = 2;
const IDLE:uint = 0;
var fadecounter:Number;// = 0
public var fadestate:uint;// = 0
var time:Number;// = 0.7
var oldcounter:Number;// = 0
public var keys:Array;
var counter:Number;// = 0
public function FadeSlider(){
keys = [];
super();
}
public function Update(_arg1:Event){
var _local2:Number = 0;
if ((((counter == 0)) && ((oldcounter == 0)))){
counter = getTimer();
};
oldcounter = counter;
counter = getTimer();
_local2 = (counter - oldcounter);
if (_local2 >= 0){
_local2 = (_local2 / 1000);
fadecounter = (fadecounter + _local2);
if (fadestate == IN){
if (fadecounter >= time){
y = 0;
fadestate = IDLE;
Game.game.RemoveUnder();
} else {
y = (-(height) + ((Number(height) * fadecounter) / time));
};
} else {
if (fadestate == OUT){
if (fadecounter >= time){
y = -(height);
fadestate = IDLE;
} else {
y = ((-(height) * fadecounter) / time);
};
};
};
};
}
public function SetOut(){
fadestate = IDLE;
y = -(height);
counter = 0;
oldcounter = 0;
fadecounter = 0;
}
public function SetIn(){
fadestate = IDLE;
y = 0;
counter = 0;
oldcounter = 0;
fadecounter = 0;
}
public function PlayFadeIn(){
fadestate = IN;
y = -(height);
counter = 0;
oldcounter = 0;
}
public function PlayFadeOut(){
fadestate = OUT;
y = 0;
counter = 0;
oldcounter = 0;
}
}
}//package
Section 225
//ferryBlue (ferryBlue)
package {
import flash.display.*;
public dynamic class ferryBlue extends MovieClip {
public function ferryBlue(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 226
//ferryGreen (ferryGreen)
package {
import flash.display.*;
public dynamic class ferryGreen extends MovieClip {
public function ferryGreen(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 227
//ferryRed (ferryRed)
package {
import flash.display.*;
public dynamic class ferryRed extends MovieClip {
public function ferryRed(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 228
//focusRectSkin (focusRectSkin)
package {
import flash.display.*;
public dynamic class focusRectSkin extends MovieClip {
}
}//package
Section 229
//Game (Game)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import mochi.as3.*;
import com.midasplayer.*;
import flash.xml.*;
public dynamic class Game extends MovieClip {
public const CREDITS:uint = 13;
public const HIGHSCORES:uint = 8;
public const GAMEOVER:uint = 5;
public const TROPHIES:uint = 4;
public const GAMEWIN:uint = 7;
public const LEVELMAP:uint = 2;
public const GAMEPLAY:uint = 3;
public const LEVELWIN:uint = 6;
public const CITY:uint = 11;
public const CHARACTERSETUP:uint = 12;
public const MAINMENU:uint = 1;
public const SURVIVAL:uint = 10;
var states:Array;
private var xmlLoader:URLLoader;// = null
private var xmlURL:URLRequest;// = null
public var settings;
public var soundmute:SoundMute;
var gamestate:uint;// = 0
public static var player:Object = new Object();
public static var game:Game = null;
public static var settingsxml:XML = new XML();
public function Game(){
settings = <Gameplay>
<Common bboxwidth="50" bboxheight="50" levelwidth="2000" levelheight="2000" startgold="100"/>
<Ships>
<Ship id="1" cost="1000" speed="30" steering="36" range="250" damage="12" reload="1.6" armor="200" team="15" cannons="10" shipname="Queen Mary"/>
<Ship id="2" cost="2500" speed="32" steering="38" range="275" damage="16" reload="1.5" armor="210" team="18" cannons="12" shipname="Lydia"/>
<Ship id="3" cost="3500" speed="34" steering="40" range="310" damage="25" reload="1.4" armor="220" team="21" cannons="14" shipname="Sophia"/>
<Ship id="4" cost="5000" speed="36" steering="42" range="345" damage="33" reload="1.3" armor="230" team="24" cannons="16" shipname="Thunderchild"/>
<Ship id="5" cost="7000" speed="40" steering="45" range="355" damage="46" reload="1.2" armor="250" team="28" cannons="19" shipname="Bon-Acquis"/>
<Ship id="6" cost="10000" speed="44" steering="48" range="400" damage="52" reload="1.0" armor="270" team="32" cannons="22" shipname="Caroline"/>
<Ship id="7" cost="Mochi coins" speed="48" steering="51" range="440" damage="60" reload="0.8" armor="290" team="36" cannons="25" shipname="Santa Leocadia"/>
<Ship id="8" cost="Mochi coins" speed="54" steering="55" range="460" damage="69" reload="0.7" armor="320" team="40" cannons="30" shipname="Southampton"/>
<Ship id="9" cost="Mochi coins" speed="68" steering="57" range="475" damage="75" reload="0.6" armor="350" team="44" cannons="35" shipname="Unicorn"/>
<Ship id="10" cost="Mochi coins" speed="65" steering="65" range="490" damage="82" reload="0.5" armor="400" team="60" cannons="50" shipname="King Joseph"/>
</Ships>
<Cannons>
<Cannon size="0.6" cost="100" damage="7"/>
<Cannon size="0.65" cost="200" damage="9"/>
<Cannon size="0.7" cost="300" damage="11"/>
<Cannon size="0.75" cost="400" damage="14"/>
<Cannon size="0.8" cost="500" damage="19"/>
<Cannon size="0.9" cost="600" damage="23"/>
<Cannon size="1.0" cost="700" damage="28"/>
<Cannon size="1.05" cost="Mochi coins" damage="32"/>
<Cannon size="1.1" cost="Mochi coins" damage="39"/>
<Cannon size="1.15" cost="Mochi coins" damage="45"/>
</Cannons>
<Market>
<Item cost="50" sell="55"/>
<Item cost="75" sell="85"/>
<Item cost="90" sell="105"/>
<Item cost="115" sell="135"/>
<Item cost="230" sell="255"/>
<Item cost="360" sell="390"/>
<Item cost="405" sell="440"/>
<Item cost="485" sell="525"/>
<Item cost="510" sell="555"/>
<Item cost="680" sell="720"/>
</Market>
<Experience>
<Level level="0" exp="0"/>
<Level level="1" exp="2400"/>
<Level level="2" exp="3600"/>
<Level level="3" exp="6800"/>
<Level level="4" exp="9000"/>
<Level level="5" exp="14200"/>
<Level level="6" exp="20400"/>
<Level level="7" exp="27600"/>
<Level level="8" exp="35800"/>
</Experience>
<Levels>
<Level level="1" waves="1" ships="1"/>
<Level level="2" waves="1" ships="2"/>
<Level level="3" waves="1" ships="3"/>
<Level level="4" waves="1" ships="3"/>
<Level level="5" waves="1" ships="4"/>
<Level level="6" waves="1" ships="5"/>
<Level level="7" waves="1" ships="5"/>
<Level level="8" waves="1" ships="6"/>
</Levels>
<Tavern>
<Rum cost="500" random="0.5"/>
<Goods cost="1000" random="0.5" profit="30"/>
<Companion cost="Mochi coins"/>
</Tavern>
<Upgrades>
<Damage>
<Level level="1" gold="500"/>
<Level level="2" gold="1200"/>
<Level level="3" gold="2800"/>
<Level level="4" gold="3800"/>
<Level level="5" gold="4900"/>
</Damage>
<Cannons>
<Level level="1" gold="500"/>
<Level level="2" gold="1200"/>
<Level level="3" gold="2800"/>
<Level level="4" gold="3800"/>
<Level level="5" gold="4900"/>
</Cannons>
<Team>
<Level level="1" gold="500"/>
<Level level="2" gold="1200"/>
<Level level="3" gold="2800"/>
<Level level="4" gold="3800"/>
<Level level="5" gold="4900"/>
</Team>
<Reload>
<Level level="1" gold="500"/>
<Level level="2" gold="1200"/>
<Level level="3" gold="2800"/>
<Level level="4" gold="3800"/>
<Level level="5" gold="4900"/>
</Reload>
<Speed>
<Level level="1" gold="500"/>
<Level level="2" gold="1200"/>
<Level level="3" gold="2800"/>
<Level level="4" gold="3800"/>
<Level level="5" gold="4900"/>
</Speed>
<Armor>
<Level level="1" gold="500"/>
<Level level="2" gold="1200"/>
<Level level="3" gold="2800"/>
<Level level="4" gold="3800"/>
<Level level="5" gold="4900"/>
</Armor>
<Steering>
<Level level="1" gold="500"/>
<Level level="2" gold="1200"/>
<Level level="3" gold="2800"/>
<Level level="4" gold="3800"/>
<Level level="5" gold="4900"/>
</Steering>
</Upgrades>
</Gameplay>
;
states = new Array();
super();
new SoundManager();
game = this;
settingsxml = settings;
addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
SetState(MAINMENU);
stage.stageFocusRect = false;
}
private function xmlLoaded(_arg1:Event){
trace("External xml");
settingsxml = XML(_arg1.target.data);
addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
SetState(MAINMENU);
}
public function OnLoadGame(_arg1:Event){
var e = _arg1;
GlobalData.Load();
GlobalData.Flush();
player = GlobalData.player;
player.showtutorial = false;
player.update = function (){
player.steering = (int(settingsxml.Ships.Ship[(player.ship - 1)].@steering) + int((player.steering_upg * 5)));
player.speed = (int(settingsxml.Ships.Ship[(player.ship - 1)].@speed) + int((player.speed_upg * 5)));
player.armor = (int(settingsxml.Ships.Ship[(player.ship - 1)].@armor) + int((player.armor_upg * 10)));
player.team = (int(settingsxml.Ships.Ship[(player.ship - 1)].@team) + int((player.team_upg * 10)));
if (player.cannon == -1){
player.damage = (int(settingsxml.Ships.Ship[(player.ship - 1)].@damage) + int(player.damage_upg));
} else {
player.damage = ((int(settingsxml.Ships.Ship[(player.ship - 1)].@damage) + int(player.damage_upg)) + int(settingsxml.Cannons.Cannon[player.cannon].@damage));
};
player.reload = (int(settingsxml.Ships.Ship[(player.ship - 1)].@reload) - Number((player.reload_upg * 0.1)));
player.range = int(settingsxml.Ships.Ship[(player.ship - 1)].@range);
player.cannons = (int(settingsxml.Ships.Ship[(player.ship - 1)].@cannons) + int((player.cannons_upg * 5)));
};
player.update();
SetState(LEVELMAP);
SoundManager.PlayOnce("Click");
}
public function OnSurvival(_arg1:Event){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Fsponsored-games%3Fref%3Drise-of-pirates");
navigateToURL(_local2);
}
public function OnNewGame(_arg1:Event){
var e = _arg1;
GlobalData.Clear();
GlobalData.Flush();
player = GlobalData.player;
player.showtutorial = true;
player.showmaptutorial = true;
player.update = function (){
player.steering = (int(settingsxml.Ships.Ship[(player.ship - 1)].@steering) + int((player.steering_upg * 5)));
player.speed = (int(settingsxml.Ships.Ship[(player.ship - 1)].@speed) + int((player.speed_upg * 5)));
player.armor = (int(settingsxml.Ships.Ship[(player.ship - 1)].@armor) + int((player.armor_upg * 10)));
player.team = (int(settingsxml.Ships.Ship[(player.ship - 1)].@team) + int((player.team_upg * 10)));
if (player.cannon == -1){
player.damage = (int(settingsxml.Ships.Ship[(player.ship - 1)].@damage) + int(player.damage_upg));
} else {
player.damage = ((int(settingsxml.Ships.Ship[(player.ship - 1)].@damage) + int(player.damage_upg)) + int(settingsxml.Cannons.Cannon[player.cannon].@damage));
};
player.reload = (Number(settingsxml.Ships.Ship[(player.ship - 1)].@reload) - Number((player.reload_upg * 0.1)));
player.range = int(settingsxml.Ships.Ship[(player.ship - 1)].@range);
player.cannons = (int(settingsxml.Ships.Ship[(player.ship - 1)].@cannons) + int((player.cannons_upg * 5)));
};
player.update();
SetState(CHARACTERSETUP);
SoundManager.PlayOnce("Click");
}
public function OnHighscores(_arg1:Event){
KingAPI.openHighscoresLink();
MovieClip(root).tracker.trackPageview("/publicMC.html");
}
public function Update(_arg1:Event){
var _local2:FadeSlider;
for each (_local2 in states) {
_local2.Update(_arg1);
};
}
public function OnCredits(_arg1:Event){
SetState(CREDITS);
SoundManager.PlayOnce("Click");
}
public function RemoveUnder(){
}
public function OnTrophies(_arg1:Event){
SetState(TROPHIES);
}
public function SetState(_arg1:uint){
var _local2:*;
var _local3:MainMenu;
var _local4:LevelMap;
var _local5:Trophies;
var _local6:Level;
var _local7:LevelSurvival;
var _local8:Highscores;
var _local9:GameOverDialog;
var _local10:LevelWinDialog;
var _local11:GameWinDialog;
var _local12:City;
var _local13:Credits;
var _local14:CharacterSetupDialog;
for each (_local2 in states) {
_local2.mouseEnabled = false;
_local2.mouseChildren = false;
};
if (_arg1 == MAINMENU){
SoundManager.FadeIn("MenuMusic", "MenuMusic");
SoundManager.FadeOut("GameOver");
SoundManager.FadeOut("Intro");
SoundManager.FadeOut("Ingame");
SoundManager.FadeOut("LevelWin");
SoundManager.FadeOut("GameWin");
_local3 = new MainMenu();
_local3.newgame.addEventListener(MouseEvent.CLICK, OnNewGame, false, 0, true);
_local3.loadgame.addEventListener(MouseEvent.CLICK, OnLoadGame, false, 0, true);
_local3.highscores.addEventListener(MouseEvent.CLICK, OnHighscores, false, 0, true);
_local3.trophies.addEventListener(MouseEvent.CLICK, OnTrophies, false, 0, true);
_local3.survival.addEventListener(MouseEvent.CLICK, OnSurvival, false, 0, true);
_local3.credits.addEventListener(MouseEvent.CLICK, OnCredits, false, 0, true);
addChild(_local3);
addChild(soundmute);
states.push(_local3);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == LEVELMAP){
SoundManager.FadeOut("LevelWin");
SoundManager.FadeOut("MenuMusic");
SoundManager.FadeOut("City");
SoundManager.FadeIn("MapTheme", "MapTheme");
_local4 = new LevelMap();
addChild(_local4);
addChild(soundmute);
states.push(_local4);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == TROPHIES){
SoundManager.FadeOut("MenuMusic");
SoundManager.FadeIn("Intro", "Intro");
_local5 = new Trophies();
addChild(_local5);
addChild(soundmute);
states.push(_local5);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == GAMEPLAY){
SoundManager.FadeOut("MapTheme");
SoundManager.FadeOut("GameOver");
SoundManager.FadeOut("MenuMusic");
SoundManager.FadeIn("Ingame", "Ingame1");
_local6 = new Level();
addChild(_local6);
addChild(soundmute);
states.push(_local6);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == SURVIVAL){
SoundManager.FadeOut("MapTheme");
SoundManager.FadeOut("GameOver");
SoundManager.FadeOut("MenuMusic");
SoundManager.FadeIn("Ingame", "Ingame1");
_local7 = new LevelSurvival();
addChild(_local7);
addChild(soundmute);
states.push(_local7);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == HIGHSCORES){
_local8 = new Highscores();
addChild(_local8);
states.push(_local8);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == GAMEOVER){
SoundManager.FadeOut("Ingame");
SoundManager.FadeOut("Abborduer");
SoundManager.PlayOnce("GameOver");
_local9 = new GameOverDialog();
addChild(_local9);
addChild(soundmute);
Game.player = GlobalData.player;
states.push(_local9);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == LEVELWIN){
SoundManager.FadeOut("Ingame");
SoundManager.FadeOut("Abborduer");
SoundManager.PlayOnce("LevelWin");
_local10 = new LevelWinDialog();
addChild(_local10);
addChild(soundmute);
states.push(_local10);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == GAMEWIN){
SoundManager.FadeOut("LevelWin");
SoundManager.FadeIn("GameWin", "GameWin");
_local11 = new GameWinDialog();
addChild(_local11);
addChild(soundmute);
states.push(_local11);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == CITY){
SoundManager.FadeOut("MapTheme");
SoundManager.FadeIn("City", "City");
_local12 = new City();
addChild(_local12);
addChild(soundmute);
states.push(_local12);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == CREDITS){
_local13 = new Credits();
addChild(_local13);
states.push(_local13);
if (states.length > 2){
removeChild(states.shift());
};
};
if (_arg1 == CHARACTERSETUP){
_local14 = new CharacterSetupDialog();
addChild(_local14);
addChild(soundmute);
states.push(_local14);
if (states.length > 2){
removeChild(states.shift());
};
};
gamestate = _arg1;
}
}
}//package
Section 230
//GameOver (GameOver)
package {
import flash.media.*;
public dynamic class GameOver extends Sound {
}
}//package
Section 231
//GameOverDialog (GameOverDialog)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.text.*;
import mochi.as3.*;
import com.midasplayer.*;
public class GameOverDialog extends FadeSlider {
public var restartbutton:ShopButton;
public var king:MovieClip;
public var levelscoretext:TextField;
public var walkthrough:ShopButton;
public function GameOverDialog(){
super();
try {
SetOut();
PlayFadeIn();
restartbutton.addEventListener(MouseEvent.CLICK, OnRestart, false, 0, true);
restartbutton.tabEnabled = false;
levelscoretext.text = GlobalData.player.scores.toString();
king.buttonMode = true;
king.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Frise-of-pirates%3Fref%3Drise-of-pirates_logo");
navigateToURL(_local2);
});
walkthrough.buttonMode = true;
walkthrough.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
KingAPI.openKingPage("solutions", "/game/rise-of-pirates");
MovieClip(root).tracker.trackPageview("/publicMC.html");
});
} catch(e:Error) {
};
}
public function OnRestart(_arg1:MouseEvent){
restartbutton.removeEventListener(MouseEvent.CLICK, OnRestart);
if (LevelSurvival.level != null){
Game.game.SetState(Game.game.MAINMENU);
} else {
Game.game.SetState(Game.game.GAMEPLAY);
};
SoundManager.PlayOnce("Click");
}
}
}//package
Section 232
//GameWin (GameWin)
package {
import flash.media.*;
public dynamic class GameWin extends Sound {
}
}//package
Section 233
//GameWinDialog (GameWinDialog)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
public class GameWinDialog extends FadeSlider {
public var backbutton:ShopButton;
public var king:MovieClip;
public function GameWinDialog(){
super();
SetOut();
PlayFadeIn();
backbutton.addEventListener(MouseEvent.CLICK, OnBack, false, 0, true);
backbutton.tabEnabled = false;
king.buttonMode = true;
king.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Frise-of-pirates%3Fref%3Drise-of-pirates_logo");
navigateToURL(_local2);
});
}
public function OnBack(_arg1:MouseEvent){
backbutton.removeEventListener(MouseEvent.CLICK, OnBack);
Game.game.SetState(Game.game.MAINMENU);
SoundManager.PlayOnce("Click");
}
}
}//package
Section 234
//Garamond (Garamond)
package {
import flash.text.*;
public dynamic class Garamond extends Font {
}
}//package
Section 235
//GaramondBold (GaramondBold)
package {
import flash.text.*;
public dynamic class GaramondBold extends Font {
}
}//package
Section 236
//GaramondBoldEmbed (GaramondBoldEmbed)
package {
import flash.display.*;
public dynamic class GaramondBoldEmbed extends MovieClip {
}
}//package
Section 237
//GaramondEmbed (GaramondEmbed)
package {
import flash.display.*;
public dynamic class GaramondEmbed extends MovieClip {
}
}//package
Section 238
//GlobalData (GlobalData)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import mochi.as3.*;
import flash.system.*;
public class GlobalData extends MovieClip {
public static var shipsdestroyed:int = 0;
public static var shipowned10:Boolean = false;
public static var completed:Boolean = false;
public static var cannonowned8:Boolean = false;
public static var mclogged:Boolean = false;
private static var GD:GlobalData = null;
public static var bestship:Boolean = false;
public static var player = new Object();
private static var so = null;
public static var bestcannon:Boolean = false;
public static var shipowned7:Boolean = false;
public static var shipowned8:Boolean = false;
public static var shipowned9:Boolean = false;
public static var cannonowned9:Boolean = false;
public static var cannonowned10:Boolean = false;
private static var valid:Boolean = true;
public function GlobalData(){
super();
MochiServices.connect("42694d793aebc0d5", root, handleError);
MochiCoins.addEventListener(MochiCoins.LOGGED_IN, loggedIn);
MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, registerItem);
MochiCoins.addEventListener(MochiCoins.ITEM_NEW, boughtItem);
GD = this;
try {
so = SharedObject.getLocal("stefans_riseofpirates");
so.flush(0x0400);
if (so.data.player != undefined){
if (so.data.player.completed != undefined){
completed = so.data.player.completed;
trace(("completed = " + completed));
};
if (so.data.player.shipsdestroyed != undefined){
shipsdestroyed = so.data.player.shipsdestroyed;
trace(("shipsdestroyed = " + shipsdestroyed));
};
if (so.data.player.bestship != undefined){
bestship = so.data.player.bestship;
trace(("bestship = " + bestship));
};
if (so.data.player.bestcannon != undefined){
bestcannon = so.data.player.bestcannon;
trace(("bestcannon = " + bestcannon));
};
};
} catch(e:Error) {
trace(e);
Security.showSettings(SecurityPanel.LOCAL_STORAGE);
so.addEventListener(NetStatusEvent.NET_STATUS, onStatus);
};
}
public function handleError(_arg1:Object){
if (_arg1 == "IOError"){
MochiServices.connect("42694d793aebc0d5", root, handleError);
};
trace("-----------------------------------------------------------------------");
trace(("Connection error" + _arg1));
trace("-----------------------------------------------------------------------");
}
public function boughtItem(_arg1:Object):void{
trace("-----------------------------------------------------------------------");
trace(((("Player just bought " + _arg1.count) + " of ") + _arg1.id));
trace("-----------------------------------------------------------------------");
if (_arg1.id == "1b942a98deedd5c9"){
GlobalData.shipowned7 = true;
Shipyard.shipyard.Update(6);
};
if (_arg1.id == "5ca6a47e37353dfa"){
GlobalData.shipowned8 = true;
Shipyard.shipyard.Update(7);
};
if (_arg1.id == "9b374f49f21df32b"){
GlobalData.shipowned9 = true;
Shipyard.shipyard.Update(8);
};
if (_arg1.id == "abfc07b7335d6c39"){
GlobalData.shipowned10 = true;
Shipyard.shipyard.Update(9);
};
if (_arg1.id == "75106b59c5e3605f"){
GlobalData.cannonowned8 = true;
CannonShop.cannonshop.Update(7);
};
if (_arg1.id == "fcea3f16efe5aa09"){
GlobalData.cannonowned9 = true;
CannonShop.cannonshop.Update(8);
};
if (_arg1.id == "5689a8032464713e"){
GlobalData.cannonowned10 = true;
CannonShop.cannonshop.Update(9);
};
if (_arg1.id == "e838919d71e001ab"){
GlobalData.player.companion = (GlobalData.player.companion + _arg1.count);
Tavern.tavern.Update();
};
Flush();
}
public function registerItem(_arg1:Object):void{
trace("-----------------------------------------------------------------------");
trace(((("Player owns " + _arg1.count) + " of ") + _arg1.id));
trace("-----------------------------------------------------------------------");
if (_arg1.id == "1b942a98deedd5c9"){
GlobalData.shipowned7 = true;
};
if (_arg1.id == "5ca6a47e37353dfa"){
GlobalData.shipowned8 = true;
};
if (_arg1.id == "9b374f49f21df32b"){
GlobalData.shipowned9 = true;
};
if (_arg1.id == "abfc07b7335d6c39"){
GlobalData.shipowned10 = true;
};
if (_arg1.id == "75106b59c5e3605f"){
GlobalData.cannonowned8 = true;
};
if (_arg1.id == "fcea3f16efe5aa09"){
GlobalData.cannonowned9 = true;
};
if (_arg1.id == "5689a8032464713e"){
GlobalData.cannonowned10 = true;
};
}
public function loggedIn(_arg1:Object):void{
trace("-----------------------------------------------------------------------");
trace(("Hello " + _arg1.name));
trace("-----------------------------------------------------------------------");
GlobalData.mclogged = true;
MochiCoins.showLoginWidget();
}
public static function Load(){
if (!GD){
return;
};
if (((!(so)) || (!(valid)))){
return;
};
if (so.data.player != null){
player = so.data.player;
player.completed = completed;
player.shipsdestroyed = shipsdestroyed;
player.bestship = bestship;
player.bestcannon = bestcannon;
if (player.gold < 0){
player.gold = 0;
};
Game.player = player;
} else {
Clear();
Game.player = player;
};
}
public static function onStatus(_arg1:NetStatusEvent){
if (!GD){
trace("!GD");
return;
};
if (_arg1.info.code == "SharedObject.Flush.Failed"){
trace("Failed");
valid = false;
} else {
if (_arg1.info.code == "SharedObject.Flush.Success"){
trace("Success");
valid = true;
};
};
}
public static function Flush(){
var res:String;
if (((((!(GD)) || (!(so)))) || (!(valid)))){
return;
};
try {
trace(("shipsdestroyed = " + shipsdestroyed));
trace(("player.shipsdestroyed = " + player.shipsdestroyed));
player.completed = completed;
player.shipsdestroyed = shipsdestroyed;
player.bestship = bestship;
player.bestcannon = bestcannon;
so.data.player = player;
res = so.flush(0x0400);
if (res == SharedObjectFlushStatus.PENDING){
so.addEventListener(NetStatusEvent.NET_STATUS, onStatus);
};
if (res == SharedObjectFlushStatus.FLUSHED){
valid = true;
};
} catch(e:Error) {
trace(e);
Security.showSettings(SecurityPanel.LOCAL_STORAGE);
};
}
public static function Clear(){
if (!GD){
return;
};
player = new Object();
player.showtutorial = true;
player.showperktutorial = true;
player.showupgradetutorial = true;
player.showshipyardtutorial = true;
player.showcannonstutorial = true;
player.showmarkettutorial = true;
player.showtaverntutorial = true;
player.scores = int(0);
player.gold = int(Game.settingsxml.Common.@startgold);
player.goods = new Array();
player.miniquest = new Array();
player.cityname = new String();
player.questbattle = false;
player.companion = int(0);
player.ship = int(1);
player.cannon = int(-1);
player.level = int(0);
player.exp = int(1);
player.steering = int(Game.settingsxml.Ships.Ship[0].@steering);
player.speed = int(Game.settingsxml.Ships.Ship[0].@speed);
player.armor = int(Game.settingsxml.Ships.Ship[0].@armor);
player.team = int(Game.settingsxml.Ships.Ship[0].@team);
player.damage = int(Game.settingsxml.Ships.Ship[0].@damage);
player.reload = Number(Game.settingsxml.Ships.Ship[0].@reload);
player.range = int(Game.settingsxml.Ships.Ship[0].@range);
player.cannons = int(Game.settingsxml.Ships.Ship[0].@cannons);
player.avatar = 1;
player.levelmapcoords = new Point(328, 357);
player.questnumber = 1;
player.authority = int(0);
player.bombardier = int(0);
player.trader = int(0);
player.completed = completed;
player.shipsdestroyed = shipsdestroyed;
player.bestship = bestship;
player.bestcannon = bestcannon;
player.damage_upg = int(0);
player.cannons_upg = int(0);
player.team_upg = int(0);
player.reload_upg = int(0);
player.speed_upg = int(0);
player.armor_upg = int(0);
player.steering_upg = int(0);
if (((so) && (valid))){
so.clear();
Flush();
};
}
}
}//package
Section 239
//GoodsDialog (GoodsDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class GoodsDialog extends MovieClip {
public var no_button:MapButton;
public var city_text:TextField;
public var yes_button:MapButton;
public function GoodsDialog(){
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
no_button.addEventListener(MouseEvent.CLICK, OnNo, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
var _local2:MessageDialog;
SoundManager.PlayOnce("Buy");
if (parent){
_local2 = new MessageDialog();
if (Math.random() <= Number(Game.settingsxml.Tavern.Goods.@random)){
Game.player.gold = (Game.player.gold - Game.settingsxml.Tavern.Goods.@cost);
City(parent.parent).UpdateDialog();
if (Game.player.goods[0] == undefined){
Game.player.goods[0] = int(Game.settingsxml.Tavern.Goods.@profit);
} else {
Game.player.goods[0] = (Game.player.goods[0] + int(Game.settingsxml.Tavern.Goods.@profit));
};
Game.player.goods["cityname"] = Game.player.cityname;
trace(Game.player.goods[0]);
trace(Game.player.goods["cityname"]);
_local2.message_text.text = "These goods only looks cheap, we've got a great profit!";
} else {
Game.player.gold = (Game.player.gold - Game.settingsxml.Tavern.Goods.@cost);
City(parent.parent).UpdateDialog();
_local2.message_text.text = "You lost your gold. All you've got is dirty looking crap.";
};
parent.addChild(_local2);
Tavern(parent).DisableGoods();
parent.removeChild(this);
};
}
public function OnNo(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 240
//Highscores (Highscores)
package {
import flash.events.*;
import flash.display.*;
import mochi.as3.*;
public class Highscores extends FadeSlider {
public var scoreclip:MovieClip;
public var backtomenubutton:ShopButton;
public function Highscores(){
super();
SetOut();
PlayFadeIn();
backtomenubutton.addEventListener(MouseEvent.CLICK, OnBackToMenu, false, 0, true);
try {
MochiScores.showLeaderboard({res:"700x436", boardID:"9638925fbea3a85d", clip:this, onClose:function (){
}});
} catch(e:Error) {
};
}
public function OnBackToMenu(_arg1:MouseEvent=null){
MochiScores.closeLeaderboard();
Game.game.SetState(Game.game.MAINMENU);
SoundManager.PlayOnce("Click");
}
}
}//package
Section 241
//HostButton (HostButton)
package {
import flash.display.*;
public dynamic class HostButton extends MovieClip {
}
}//package
Section 242
//HPMeter (HPMeter)
package {
import flash.display.*;
public dynamic class HPMeter extends MovieClip {
}
}//package
Section 243
//Ingame1 (Ingame1)
package {
import flash.media.*;
public dynamic class Ingame1 extends Sound {
}
}//package
Section 244
//Interface (Interface)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class Interface extends MovieClip {
public var ship_hp_text:TextField;
public var reload_text:TextField;
public var ship_icon:ShipIcon;
public var avatar_icon:Avatar;
public var text1:TextField;
public var speed_text:TextField;
var player_hp:Number;// = 100
public var text4:TextField;
public var gold_text:TextField;
public var text3:TextField;
public var text2:TextField;
public var ship_cores_text:TextField;
public var armor_text:TextField;
public var cannons_text:TextField;
public var button1:InterfaceButton;
public var button2:InterfaceButton;
public var button3:InterfaceButton;
public var button4:InterfaceButton;
var wavetime:Number;// = 1
public var team_text:TextField;
public var steering_text:TextField;
var maxarmor:uint;// = 1
var player_cores:Number;// = 50
public var ship_hp:HPMeter;
public var range_text:TextField;
public var ship_cores:TeamMeter;
var player_team:Number;// = 50
public var damage_text:TextField;
public function Interface(){
ship_hp_text.mouseEnabled = false;
ship_cores_text.mouseEnabled = false;
text1.mouseEnabled = false;
text2.mouseEnabled = false;
text3.mouseEnabled = false;
text4.mouseEnabled = false;
button1.buttonMode = true;
button2.buttonMode = true;
button3.buttonMode = true;
button4.buttonMode = true;
button1.tabEnabled = false;
button2.tabEnabled = false;
button3.tabEnabled = false;
button4.tabEnabled = false;
}
public function SetMaxCores(_arg1:int){
player_cores = _arg1;
team_text.text = ((("Cores:" + player_cores.toString()) + "/") + player_cores.toString());
}
public function SetCores(_arg1:int){
team_text.text = ((("Cores:" + _arg1.toString()) + "/") + player_cores.toString());
}
public function SetShip(_arg1:int){
ship_icon.gotoAndStop(_arg1);
}
public function SetMaxTeam(_arg1:Number){
ship_cores.scaleY = 1;
ship_cores_text.text = _arg1.toString();
player_team = _arg1;
}
public function SetMaxHP(_arg1:Number){
ship_hp.scaleY = 1;
ship_hp_text.text = _arg1.toString();
player_hp = _arg1;
}
public function SetTeam(_arg1:Number){
ship_cores.scaleY = (_arg1 / player_team);
ship_cores_text.text = _arg1.toString();
}
public function SetHP(_arg1:Number){
ship_hp.scaleY = (_arg1 / player_hp);
ship_hp_text.text = int(_arg1).toString();
}
}
}//package
Section 245
//InterfaceButton (InterfaceButton)
package {
import flash.display.*;
public dynamic class InterfaceButton extends SimpleButton {
}
}//package
Section 246
//Intro (Intro)
package {
import flash.media.*;
public dynamic class Intro extends Sound {
}
}//package
Section 247
//Level (Level)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.text.*;
import fl.transitions.*;
import flash.utils.*;
import fl.transitions.easing.*;
import flash.filters.*;
import flash.xml.*;
public class Level extends FadeSlider {
const GAMEWIN:uint = 5;
const GAMEOVER:uint = 3;
const LEVELWIN:uint = 4;
const PAUSE:uint = 2;
const NORMAL:uint = 1;
var shipnumber:int;// = 0
var watertilesholderoffset:Number;// = 110
public var king:MovieClip;
var waves:Array;
var levelheight:Number;// = 0
var perkdlg:PerkDialog;// = null
public var levelholder:LevelHolder;
var delta:Number;// = 0
public var levelscoretext:TextField;
var leveloffsetx:Number;// = 0
var levelwidth:Number;// = 0
var timer:Number;// = 0
var leveloffsety:Number;// = 0
public var gui:Interface;
public var escapedlg:TriedToEscape;
var wateroffsetdirection:int;// = 1
var tutorial:Tutorial;// = null
public var gamestate:uint;// = 2
var player:PlayerShip;
var triedtoescape:Boolean;// = false
public var pauseddialog:PausedWidget;
var watertilesholder:WaterTilesHolder;
var oldtimer:Number;// = 0
public static var level:Level = null;
public function Level(){
var gm:Game;
var e:*;
var i:*;
var rockamount:*;
watertilesholder = new WaterTilesHolder();
levelholder = new LevelHolder();
waves = new Array();
super();
try {
level = this;
LevelSurvival.level = null;
SetOut();
gm = Game.game;
player = new PlayerShip();
levelwidth = Game.settingsxml.Common.@levelwidth;
levelheight = Game.settingsxml.Common.@levelheight;
addChild(watertilesholder);
addChild(levelholder);
levelholder.x = (-((levelwidth - 700)) / 2);
levelholder.y = -((levelheight - 450));
levelholder.SetPlayer(player);
gui.damage_text.text = ("Damage: " + Game.player.damage.toString());
gui.reload_text.text = ("Reload: " + Game.player.reload.toString());
gui.range_text.text = ("Range: " + Game.player.range.toString());
gui.cannons_text.text = ("Cannons: " + Game.player.cannons.toString());
gui.steering_text.text = ("Steering: " + Game.player.steering.toString());
gui.speed_text.text = ("Speed: " + Game.player.speed.toString());
gui.armor_text.text = ("Armor: " + Game.player.armor.toString());
gui.team_text.text = ("Team: " + Game.player.team.toString());
gui.avatar_icon.gotoAndStop(Game.player.avatar);
gui.ship_icon.gotoAndStop(Game.player.ship);
Game.player.update();
gui.SetMaxHP(Game.player.armor);
gui.SetMaxCores(Game.player.cannons);
gui.SetMaxTeam(Game.player.team);
gui.text1.text = "Escape!";
gui.text2.text = "Character";
gui.text3.text = "Pause";
gui.text4.text = "Main menu";
gui.button1.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
var _local2:int;
SoundManager.PlayOnce("Click");
if (!triedtoescape){
triedtoescape = true;
if ((((GlobalData.player.questnumber == 1)) || ((Game.player.questbattle == true)))){
return;
};
_local2 = int((Math.random() * 3));
if (_local2 == 0){
GlobalData.player = Game.player;
GlobalData.Flush();
if ((((GlobalData.player.questnumber == 1)) || ((Game.player.questbattle == true)))){
trace(("Quest = " + Game.player.questnumber));
Game.player.questnumber++;
} else {
trace("Not a quest battle!");
};
if (GlobalData.player.questnumber == 9){
Game.game.SetState(Game.game.GAMEWIN);
Game.player.completed = true;
GlobalData.completed = true;
} else {
Game.game.SetState(Game.game.LEVELMAP);
};
} else {
trace("failed");
Pause();
trace(("escapedlg = " + escapedlg));
addChild(escapedlg);
escapedlg.escapetxt.text = "You failed to escape!";
escapedlg.visible = true;
};
} else {
trace("already");
Pause();
addChild(escapedlg);
escapedlg.escapetxt.text = "You already tried to escape,\n and failed your try!";
escapedlg.visible = true;
};
});
gui.button3.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
Pause();
});
gui.button4.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
Pause();
Game.game.SetState(Game.game.MAINMENU);
});
gui.button2.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
Pause();
perkdlg = new PerkDialog();
perkdlg.UpdatePerks();
addChild(perkdlg);
});
pauseddialog.visible = false;
escapedlg.visible = false;
levelscoretext.text = "0";
UpdateGold();
PlayFadeIn();
rockamount = 40;
e = 0;
while (e < rockamount) {
levelholder.AddRock(int((Math.random() * 2)));
e = (e + 1);
};
Reorder();
if (Game.player.showtutorial == true){
Game.player.showtutorial = false;
SetGameState(PAUSE);
tutorial = new Tutorial();
addChild(tutorial);
} else {
SetGameState(NORMAL);
};
levelholder.StartLevel();
king.buttonMode = true;
king.addEventListener(MouseEvent.CLICK, function (_arg1:Event){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Frise-of-pirates%3Fref%3Drise-of-pirates_logo");
navigateToURL(_local2);
});
} catch(e:Error) {
};
}
public function HighlightCharacterButton(_arg1:Boolean=false){
if (_arg1 == false){
gui.button2.filters = [];
} else {
gui.button2.filters = [new GlowFilter(0xFF0000, 1, 5, 5, 2, 2, true, false)];
};
}
public function SetGameState(_arg1:uint){
if (stage){
stage.focus = this;
};
if ((((gamestate == NORMAL)) && ((_arg1 == GAMEOVER)))){
gamestate = PAUSE;
Game.game.SetState(Game.game.GAMEOVER);
};
if ((((gamestate == NORMAL)) && ((_arg1 == LEVELWIN)))){
gamestate = PAUSE;
Game.game.SetState(Game.game.LEVELWIN);
};
gamestate = _arg1;
}
public function GetNearestEnemy(_arg1:Number, _arg2:Number):EnemyShip{
return (levelholder.GetNearestEnemy(_arg1, _arg2));
}
private function Reorder(){
addChild(gui);
addChild(pauseddialog);
addChild(levelscoretext);
if (stage != null){
};
addChild(king);
}
public function Pause(){
if (gamestate == NORMAL){
SetGameState(PAUSE);
pauseddialog.visible = true;
} else {
if (gamestate == PAUSE){
SetGameState(NORMAL);
pauseddialog.visible = false;
escapedlg.visible = false;
};
};
}
override public function Update(_arg1:Event){
var _local2:*;
var _local3:Number;
var _local4:Point;
var _local5:Point;
if (fadestate != IDLE){
super.Update(_arg1);
};
if (gamestate == PAUSE){
timer = getTimer();
return;
};
if (gamestate == NORMAL){
if ((((timer == 0)) && ((oldtimer == 0)))){
timer = getTimer();
};
oldtimer = timer;
timer = getTimer();
delta = (timer - oldtimer);
_local3 = 1;
if (delta >= 0){
delta = (delta / 1000);
_local4 = player.GetMoveVector();
levelholder.Update(delta);
watertilesholderoffset = (watertilesholderoffset - (delta * 14));
if (watertilesholderoffset <= 0){
watertilesholderoffset = (watertilesholderoffset + 110);
};
watertilesholder.Update(watertilesholderoffset);
gui.SetTeam(player.team);
_local5 = levelholder.localToGlobal(levelholder.GetPlayerPosition());
if ((((_local5.y <= 180)) && ((_local4.y <= 0)))){
levelholder.y = (levelholder.y - _local4.y);
if (levelholder.y >= 0){
levelholder.y = 0;
};
};
if ((((_local5.y >= 300)) && ((_local4.y >= 0)))){
levelholder.y = (levelholder.y - _local4.y);
if (levelholder.y <= -1550){
levelholder.y = -1550;
};
};
if ((((_local5.x <= 250)) && ((_local4.x <= 0)))){
levelholder.x = (levelholder.x - _local4.x);
if (levelholder.x >= 0){
levelholder.x = 0;
};
};
if ((((_local5.x >= 450)) && ((_local4.x >= 0)))){
levelholder.x = (levelholder.x - _local4.x);
if (levelholder.x <= -1300){
levelholder.x = -1300;
};
};
Reorder();
};
};
}
public function UpdateGold(){
gui.gold_text.text = Game.player.gold.toString();
}
}
}//package
Section 248
//LevelHolder (LevelHolder)
package {
import flash.events.*;
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import flash.geom.*;
import Box2D.Dynamics.Contacts.*;
import flash.filters.*;
import flash.ui.*;
public class LevelHolder extends MovieClip {
public const ROAM:int = 2;
public const FLOW:int = 1;
var companion:CompanionShip;// = null
public var enemies:Array;
public var boarding:Boolean;// = false
var overlay:Sprite;
public var boardingsound:Boolean;// = false
var e;
var i;
public var boardingship:EnemyShip;// = null
var delay:Number;// = 0
var chests:Array;
var world:b2World;// = null
var waves:int;// = -1
var startplayerlevel:int;// = 0
var octopusses:Array;
public var rocks:Array;
var cores:Array;
var keyBinds:Object;
var ships:int;// = -1
var clouds:Array;
public var player:PlayerShip;// = null
var currentships:int;// = -1
var trashes:Array;
var rockplaces:Array;
var worldAABB:b2AABB;
var keys:Array;
var rectarray:Array;
var counter:Number;// = 0
var explosions:Array;
public function LevelHolder(){
var _local3:WaterWave;
var _local4:Octopus;
var _local5:Cloud;
enemies = new Array();
cores = new Array();
rocks = new Array();
trashes = new Array();
chests = new Array();
clouds = new Array();
explosions = new Array();
octopusses = new Array();
rectarray = new Array();
rockplaces = new Array();
overlay = new Sprite();
keys = [];
keyBinds = {OnSteerLeft:Keyboard.LEFT, OnAccelerate:Keyboard.UP, OnSteerRight:Keyboard.RIGHT, OnBreak:Keyboard.DOWN, OnSteerLeftD:65, OnAccelerateD:87, OnSteerRightD:68, OnBreakD:83};
worldAABB = new b2AABB();
super();
this.buttonMode = true;
worldAABB.lowerBound.Set(-500, -500);
worldAABB.upperBound.Set(2500, 2500);
var _local1:b2Vec2 = new b2Vec2(0, 0);
var _local2:Boolean;
world = new b2World(worldAABB, _local1, _local2);
startplayerlevel = Game.player.level;
this.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
this.addEventListener(KeyboardEvent.KEY_UP, KeyUp);
this.addEventListener(MouseEvent.MOUSE_DOWN, down);
this.addEventListener(MouseEvent.MOUSE_MOVE, move2, false, 0, true);
this.addEventListener(Event.ADDED_TO_STAGE, OnAddedToStage);
e = 0;
while (e < 40) {
_local3 = new WaterWave();
_local3.gotoAndPlay(int((Math.random() * 100)));
_local3.x = int((Math.random() * 2000));
_local3.y = int((Math.random() * 2000));
_local3.cacheAsBitmap = true;
addChild(_local3);
e++;
};
e = 0;
while (e < int((Math.random() * 6))) {
_local4 = new Octopus();
_local4.gotoAndPlay(int((Math.random() * 100)));
_local4.x = int((Math.random() * 2000));
_local4.y = int((Math.random() * 2000));
addChild(_local4);
octopusses.push(_local4);
e++;
};
e = 0;
while (e < 40) {
_local5 = new Cloud();
_local5.x = int((Math.random() * 2000));
_local5.y = int((Math.random() * 2000));
_local5.alpha = 0.6;
_local5.cacheAsBitmap = true;
addChild(_local5);
clouds.push(_local5);
e++;
};
}
public function RemoveShip(_arg1:Ship){
var _local4:*;
var _local5:Number;
var _local6:Number;
if ((_arg1 is EnemyShip)){
_local4 = new Trash();
_local4.x = _arg1.x;
_local4.y = _arg1.y;
addChild(_local4);
trashes.push(_local4);
};
world.DestroyBody(_arg1.body);
Game.player.shipsdestroyed++;
GlobalData.shipsdestroyed++;
var _local2:Number = (_arg1.maxhp * 2);
Game.player.exp = (Game.player.exp + _local2);
e = 0;
while (e < 8) {
_local5 = Game.settingsxml.Experience.Level[e].@exp;
_local6 = Game.settingsxml.Experience.Level[(e + 1)].@exp;
if ((((Game.player.exp >= _local5)) && ((Game.player.exp <= _local6)))){
if (((!((e == Game.player.level))) && (!((e == startplayerlevel))))){
Level.level.HighlightCharacterButton(true);
};
Game.player.level = e;
};
e++;
};
var _local3:* = enemies.indexOf(_arg1);
if (_local3 != -1){
enemies.splice(_local3, 1);
removeChild(_arg1);
};
currentships--;
if (currentships == 0){
currentships = ships;
AddWave();
};
}
private function OnBreakD(_arg1:Number){
player.Break(_arg1);
player.targetpoint.x = -1;
}
public function AddChest(_arg1:Number, _arg2:Number, _arg3:Number){
var _local4:Chest = new Chest();
_local4.x = _arg1;
_local4.y = _arg2;
_local4.gold = ((_arg3 + (_arg3 * 0.2)) * (Game.player.level + 1));
addChild(_local4);
chests.push(_local4);
}
public function GetPlayerPosition():Point{
return (new Point(player.x, player.y));
}
private function TestRockPlace(_arg1:Rectangle):Boolean{
var _local2:Rectangle;
for each (e in rockplaces) {
if (_arg1.intersects(e)){
return (true);
};
};
_local2 = new Rectangle((player.x - 74), (player.y - 74), 150, 150);
if (_local2.intersects(_arg1)){
return (true);
};
return (false);
}
public function AddWave(){
var _local1:Object;
var _local2:Number;
var _local3:Chest;
if ((((waves == 0)) && ((((((Game.player.questnumber == 5)) || ((Game.player.questnumber == 7)))) || ((Game.player.questnumber == 8)))))){
_local1 = new Object();
_local2 = (0.9 + (((Math.random() * 2) - 1) * 0.2));
_local1.type = int(((Math.random() * 9) + 1));
_local1.speed = (Game.player.speed * _local2);
_local1.steering = (Game.player.steering * _local2);
_local1.range = 200;
_local1.damage = (Game.player.damage * _local2);
_local1.reload = (Game.player.reload * _local2);
_local1.cannons = (Game.player.cannons * _local2);
_local1.armor = ((Game.player.armor * _local2) * 4);
_local1.team = (Game.player.team * _local2);
_local1.boss = true;
AddShip(_local1);
currentships = 1;
waves--;
} else {
if (waves > 0){
e = 0;
while (e < ships) {
_local1 = new Object();
_local2 = (0.6 + (((Math.random() * 2) - 1) * 0.3));
_local1.type = int(((Math.random() * 9) + 1));
_local1.speed = (Game.player.speed * _local2);
_local1.steering = (Game.player.steering * _local2);
_local1.range = 200;
_local1.damage = (Game.player.damage * _local2);
_local1.reload = (Game.player.reload * _local2);
_local1.cannons = (Game.player.cannons * _local2);
_local1.armor = (Game.player.armor * _local2);
_local1.team = (Game.player.team * _local2);
_local1.boss = false;
AddShip(_local1);
e++;
};
waves--;
} else {
if (waves <= 0){
for each (_local3 in chests) {
RemoveChest(_local3);
};
Level.level.SetGameState(Level.level.LEVELWIN);
return;
};
};
};
}
public function AddShot(_arg1:Number, _arg2:Number, _arg3:int){
var _local4:* = new Smoke();
var _local5:int = (((_arg3 - 1) * 36) + 1);
_local4.x = _arg1;
_local4.y = _arg2;
_local4.cacheAsBitmap = true;
addChild(_local4);
_local4.gotoAndPlay(_local5);
}
public function GetNearestEnemy(_arg1:Number, _arg2:Number):EnemyShip{
var _local5:Number;
var _local3:Number = -1;
var _local4:EnemyShip;
for each (e in enemies) {
_local5 = Math.sqrt((Math.pow((e.x - _arg1), 2) + Math.pow((e.y - _arg2), 2)));
if (_local3 == -1){
_local3 = _local5;
_local4 = e;
} else {
if (_local3 > _local5){
_local3 = _local5;
_local4 = e;
};
};
};
return (_local4);
}
private function OnSteerRight(_arg1:Number){
player.SteerRight(_arg1);
player.targetpoint.x = -1;
}
private function OnSteerLeftD(_arg1:Number){
player.SteerLeft(_arg1);
player.targetpoint.x = -1;
}
private function OnSteerLeft(_arg1:Number){
player.SteerLeft(_arg1);
player.targetpoint.x = -1;
}
private function KeyUp(_arg1:KeyboardEvent){
delete keys[_arg1.keyCode];
}
private function OnBreak(_arg1:Number){
player.Break(_arg1);
player.targetpoint.x = -1;
}
private function OnAccelerate(_arg1:Number){
player.Accelerate(_arg1);
player.targetpoint.x = -1;
}
public function AddSplash(_arg1:Number, _arg2:Number){
var _local3:* = new WaterSplash();
_local3.x = _arg1;
_local3.y = _arg2;
addChild(_local3);
}
private function OnSteerRightD(_arg1:Number){
player.SteerRight(_arg1);
player.targetpoint.x = -1;
}
public function AddShip(_arg1:Object){
var _local2:EnemyShip = new EnemyShip();
_local2.name = ("enemy" + int((Math.random() * 10)));
addChild(_local2);
_local2.Init(_arg1);
var _local3:Number = (player.x + (Math.random() * 350));
var _local4:Number = 0;
if (player.y >= 1000){
_local4 = ((player.y - (Math.random() * 200)) - 375);
} else {
_local4 = ((player.y + (Math.random() * 200)) + 375);
};
_local2.x = _local3;
_local2.y = _local4;
if (_arg1.boss == true){
_local2.filters = [new GlowFilter(0, 1, 5, 5, 2, 2, true, false)];
} else {
_local2.filters = [new GlowFilter(0xFF0000, 0.4, 5, 5, 2, 2, true, false)];
};
_local2.bodydef = new b2BodyDef();
_local2.bodydef.position.Set(_local2.x, _local2.y);
_local2.bodydef.linearDamping = 0.8;
_local2.bodydef.angularDamping = 1.5;
var _local5:b2PolygonDef = new b2PolygonDef();
_local5.vertexCount = 4;
_local5.vertices[0].Set(-13.5, 0);
_local5.vertices[1].Set(0, -26);
_local5.vertices[2].Set(13.5, 0);
_local5.vertices[3].Set(0, 26);
_local5.density = 1;
_local5.friction = 0.5;
_local5.restitution = 0.2;
_local2.bodydef.userData = _local2;
_local2.body = world.CreateBody(_local2.bodydef);
_local2.body.CreateShape(_local5);
_local2.body.SetMassFromShapes();
enemies.push(_local2);
_local2.SetState(ROAM);
}
public function StartLevel(){
var _local1:int = Game.player.level;
waves = Game.settingsxml.Levels.Level[_local1].@waves;
ships = Game.settingsxml.Levels.Level[_local1].@ships;
currentships = ships;
AddWave();
if (Game.player.companion > 0){
AddCompanionShips();
};
}
public function RemoveCore(_arg1:Core){
var _local2:* = cores.indexOf(_arg1);
if (_local2 != -1){
cores.splice(_local2, 1);
removeChild(_arg1);
};
}
private function move2(_arg1:MouseEvent):void{
if (player.beginDrag == true){
player.dragPoint = this.globalToLocal(new Point(_arg1.stageX, _arg1.stageY));
};
}
public function AddRock(_arg1:int){
var _local2:*;
var _local3:Number = (Math.random() * 1850);
var _local4:Number = (Math.random() * 1700);
var _local5:Rectangle = new Rectangle(_local3, _local4, 150, 100);
while (TestRockPlace(_local5) != false) {
_local3 = (Math.random() * 1850);
_local4 = (Math.random() * 1900);
_local5 = new Rectangle(_local3, _local4, 150, 100);
};
rockplaces.push(_local5);
if (_arg1 == 1){
_local2 = new Rock1();
} else {
_local2 = new Rock2();
};
_local2.x = _local3;
_local2.y = _local4;
var _local6:b2BodyDef = new b2BodyDef();
_local6.position.Set(_local2.x, _local2.y);
var _local7:b2PolygonDef = new b2PolygonDef();
_local7.vertexCount = 8;
_local7.vertices[0].Set(24.45, -29.95);
_local7.vertices[1].Set(59.9, -8.3);
_local7.vertices[2].Set(60, 22.35);
_local7.vertices[3].Set(24.6, 43.95);
_local7.vertices[4].Set(-25.45, 44);
_local7.vertices[5].Set(-60.95, 22.4);
_local7.vertices[6].Set(-61, -8.2);
_local7.vertices[7].Set(-25.65, -29.9);
_local7.density = 0;
_local7.friction = 0.3;
_local7.restitution = 0.6;
_local6.userData = _local2;
var _local8:b2Body = world.CreateBody(_local6);
_local8.CreateShape(_local7);
_local8.SetMassFromShapes();
rocks.push(_local2);
addChild(_local2);
}
private function KeyDown(_arg1:KeyboardEvent){
keys[_arg1.keyCode] = true;
}
public function DamageTeam(){
player.DamageTeam();
}
private function OnAccelerateD(_arg1:Number){
player.Accelerate(_arg1);
player.targetpoint.x = -1;
}
public function AddExplosion(_arg1){
explosions.push(_arg1);
addChild(_arg1);
}
private function up(_arg1:MouseEvent):void{
removeEventListener(MouseEvent.MOUSE_MOVE, move);
var _local2:Point = this.globalToLocal(new Point(_arg1.stageX, _arg1.stageY));
var _local3:Number = Math.sqrt((Math.pow((_local2.x - player.x), 2) + Math.pow((_local2.y - player.y), 2)));
if (_local3 >= 50){
player.targetpoint = _local2;
};
player.beginDrag = false;
}
private function down(_arg1:MouseEvent):void{
addEventListener(MouseEvent.MOUSE_MOVE, move);
addEventListener(MouseEvent.MOUSE_UP, up);
player.beginDrag = false;
}
public function GetPlayerCoords():Object{
return ({x:player.x, y:player.y});
}
public function EnemyIntersects(_arg1:EnemyShip, _arg2:Point):Boolean{
for each (e in rectarray) {
if (e.ship != _arg1){
if (Common.Intersect(new Point((_arg1.x + (_arg2.x * 40)), (_arg1.y + (_arg2.y * 40))), new Point((_arg1.x + (_arg2.x * 150)), (_arg1.y + (_arg2.y * 150))), e.lup, e.rdown) == true){
return (true);
};
};
};
return (false);
}
public function RemoveChest(_arg1:Chest){
var _local2:Number = _arg1.gold;
if (int((_local2 + ((0.1 * _local2) * Game.player.trader))) >= 0){
Game.player.gold = (Game.player.gold + int((_local2 + ((0.1 * _local2) * Game.player.trader))));
Game.player.scores = (Game.player.scores + (int((_local2 + ((0.1 * _local2) * Game.player.trader))) * int((1000 + (100 * Math.random())))));
};
if ((parent is Level)){
(parent as Level).UpdateGold();
};
if ((parent is LevelSurvival)){
(parent as LevelSurvival).UpdateGold();
};
var _local3:* = chests.indexOf(_arg1);
if (_local3 != -1){
chests.splice(_local3, 1);
removeChild(_arg1);
};
SoundManager.PlayOnce("Chest");
}
public function AddCore(_arg1:Ship, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number){
var _local8:Core = new Core();
_local8.x = _arg2;
_local8.y = _arg3;
_local8.SetParameters(_arg1, _arg4, _arg5, _arg6, _arg7);
addChild(_local8);
cores.push(_local8);
}
public function SetPlayer(_arg1:PlayerShip){
player = _arg1;
addChild(player);
player.mouseEnabled = false;
player.mouseChildren = false;
player.bodydef = new b2BodyDef();
player.bodydef.position.Set(1000, 1900);
player.bodydef.linearDamping = 0.8;
player.bodydef.angularDamping = 1.7;
var _local2:b2PolygonDef = new b2PolygonDef();
_local2.vertexCount = 4;
_local2.vertices[0].Set(-13.5, 0);
_local2.vertices[1].Set(0, -26);
_local2.vertices[2].Set(13.5, 0);
_local2.vertices[3].Set(0, 26);
_local2.density = 1;
_local2.friction = 0.5;
_local2.restitution = 0.2;
player.bodydef.userData = player;
player.body = world.CreateBody(player.bodydef);
player.body.CreateShape(_local2);
player.body.SetMassFromShapes();
player.x = 1000;
player.y = 1900;
}
public function RemoveCompanion(_arg1:CompanionShip){
var _local2:* = new Trash();
_local2.x = _arg1.x;
_local2.y = _arg1.y;
addChild(_local2);
trashes.push(_local2);
world.DestroyBody(_arg1.body);
removeChild(_arg1);
companion = null;
Game.player.companion = (Game.player.companion - 1);
}
private function OnAddedToStage(_arg1:Event){
}
public function GetNearestRock(_arg1:Number, _arg2:Number):Object{
var _local6:Number;
var _local3:Object = new Object();
var _local4:Number = -1;
var _local5:* = new Object();
for each (e in rocks) {
_local6 = Math.sqrt((Math.pow((e.x - _arg1), 2) + Math.pow((e.y - _arg2), 2)));
if (_local4 == -1){
_local4 = _local6;
_local5 = e;
} else {
if (_local4 > _local6){
_local4 = _local6;
_local5 = e;
};
};
};
_local3.rock = _local5;
_local3.radius = _local4;
return (_local3);
}
private function move(_arg1:MouseEvent):void{
removeEventListener(MouseEvent.MOUSE_UP, up);
removeEventListener(MouseEvent.MOUSE_MOVE, move);
addEventListener(MouseEvent.MOUSE_UP, up2);
player.beginDrag = true;
player.dragPoint = this.globalToLocal(new Point(_arg1.stageX, _arg1.stageY));
}
private function OnFire(_arg1:Number){
player.Fire(_arg1);
}
public function RemoveExplosion(_arg1){
var _local2:* = explosions.indexOf(_arg1);
if (_local2 != -1){
explosions.splice(_local2, 1);
removeChild(_arg1);
};
}
public function Reorder(){
i = 0;
while (i < rocks.length) {
addChild(rocks[i]);
i++;
};
i = 0;
while (i < cores.length) {
addChild(cores[i]);
i++;
};
i = 0;
while (i < chests.length) {
addChild(chests[i]);
i++;
};
i = 0;
while (i < octopusses.length) {
addChild(octopusses[i]);
i++;
};
var _local1:Array = enemies.concat();
_local1.push(player);
if (companion != null){
_local1.push(companion);
};
_local1.sortOn("y", Array.NUMERIC);
i = 0;
while (i < _local1.length) {
addChild(_local1[i]);
i++;
};
i = 0;
while (i < explosions.length) {
addChild(explosions[i]);
i++;
};
for each (i in clouds) {
addChild(i);
};
}
public function Update(_arg1:Number){
var _local2:*;
var _local3:Trash;
var _local4:Chest;
var _local6:Core;
var _local7:Octopus;
var _local8:int;
var _local9:BurstSplash;
var _local10:*;
var _local11:Number;
var _local12:Boolean;
var _local13:*;
player.Update(_arg1);
if ((parent as Level).gamestate == 1){
if (stage.focus != this){
stage.focus = this;
};
};
for (_local2 in keyBinds) {
if (keys[(keyBinds[_local2] as int)] != undefined){
var _local16 = this;
_local16[_local2](_arg1);
};
};
player.body.WakeUp();
player.body.SetLinearVelocity(new b2Vec2(player.speedx, player.speedy));
for each (_local3 in trashes) {
_local3.Update(_arg1);
if (_local3.alpha <= 0){
_local8 = trashes.indexOf(_local3);
if (_local8 != -1){
trashes.splice(_local8, 1);
};
};
};
for each (_local4 in chests) {
if ((((Math.abs((player.x - _local4.x)) <= 40)) && ((Math.abs((player.y - _local4.y)) <= 40)))){
RemoveChest(_local4);
};
_local4.Update(_arg1);
if (_local4.alpha <= 0){
_local8 = chests.indexOf(_local4);
if (_local8 != -1){
chests.splice(_local8, 1);
};
};
};
addChild(player);
addChild(overlay);
boarding = false;
for each (e in enemies) {
(e as EnemyShip).Update(_arg1);
};
if (companion != null){
companion.Update(_arg1);
};
world.Step((1 / 30), 10);
var _local5:b2Body = world.m_bodyList;
while (_local5) {
if ((_local5.m_userData is Sprite)){
_local5.m_userData.x = _local5.GetPosition().x;
_local5.m_userData.y = _local5.GetPosition().y;
if (_local5.m_userData.angle != undefined){
_local5.m_userData.angle = (_local5.GetAngle() * (180 / Math.PI));
};
};
_local5 = _local5.m_next;
};
if ((((boarding == true)) && ((boardingsound == false)))){
SoundManager.FadeIn("Abborduer", "Abborduer");
boardingsound = true;
} else {
if ((((boarding == false)) && ((boardingsound == true)))){
SoundManager.FadeOut("Abborduer");
boardingsound = false;
};
};
for each (_local6 in cores) {
_local6.Update(_arg1);
for each (i in rectarray) {
if ((i.ship is Ship)){
if (_local6.tthis != i.ship){
if ((((_local6.x >= i.lup.x)) && ((_local6.x <= i.rdown.x)))){
if ((((_local6.y >= i.lup.y)) && ((_local6.y <= i.rdown.y)))){
i.ship.Damage(_local6.damage);
_local9 = new BurstSplash();
_local9.x = (_local6.x - i.ship.x);
_local9.y = (_local6.y - i.ship.y);
i.ship.addChild(_local9);
RemoveCore(_local6);
};
};
};
};
};
};
for each (_local7 in octopusses) {
if (_local7.currentFrame >= 150){
_local7.x = (Math.random() * 2000);
_local7.y = (Math.random() * 2000);
_local12 = true;
while (_local12 == true) {
_local12 = false;
for each (_local13 in rocks) {
_local11 = Math.sqrt((Math.pow((_local7.x - _local13.x), 2) + Math.pow((_local7.y - _local13.y), 2)));
if (_local11 <= 180){
(_local12 == true);
};
};
if (_local12 == true){
trace("relocate");
_local7.x = (Math.random() * 2000);
_local7.y = (Math.random() * 2000);
};
};
};
for each (_local10 in enemies) {
_local11 = Math.sqrt((Math.pow((_local7.x - _local10.x), 2) + Math.pow((_local7.y - _local10.y), 2)));
if (_local11 <= 30){
_local10.Damage(0.2);
};
};
_local11 = Math.sqrt((Math.pow((_local7.x - player.x), 2) + Math.pow((_local7.y - player.y), 2)));
if (_local11 <= 30){
player.Damage(0.4);
};
};
if (player.x <= 30){
player.x = 30;
};
if (player.x >= 1970){
player.x = 1970;
};
if (player.y <= 30){
player.y = 30;
};
if (player.y >= 1970){
player.y = 1970;
};
for each (e in clouds) {
e.y = (e.y + (20 * _arg1));
if (e.y >= 2300){
e.x = int((Math.random() * 2000));
e.y = int((Math.random() * 2000));
};
};
Reorder();
UpdateRectArray();
}
protected function UpdateRectArray(){
rectarray = new Array();
var _local1:Point = new Point((player.x - (player.bboxwidth / 2)), (player.y - (player.bboxheight / 2)));
var _local2:Point = new Point((player.x + (player.bboxwidth / 2)), (player.y + (player.bboxheight / 2)));
rectarray.push({lup:_local1, rdown:_local2, ship:player});
if (companion){
_local1 = new Point((companion.x - (player.bboxwidth / 2)), (companion.y - (player.bboxheight / 2)));
_local2 = new Point((companion.x + (player.bboxwidth / 2)), (companion.y + (player.bboxheight / 2)));
rectarray.push({lup:_local1, rdown:_local2, ship:companion});
};
for each (e in enemies) {
_local1 = new Point((e.x - (e.bboxwidth / 2)), (e.y - (e.bboxheight / 2)));
_local2 = new Point((e.x + (e.bboxwidth / 2)), (e.y + (e.bboxheight / 2)));
rectarray.push({lup:_local1, rdown:_local2, ship:e});
};
for each (e in rocks) {
_local1 = new Point((e.x - (e.width / 2)), (e.y - (e.height / 2)));
_local2 = new Point((e.x + (e.width / 2)), (e.y + (e.height / 2)));
rectarray.push({lup:_local1, rdown:_local2, ship:e});
};
}
public function AddCompanionShips(){
var _local1:Object = new Object();
var _local2:Number = (0.9 + (((Math.random() * 2) - 1) * 0.2));
_local1.type = int(((Math.random() * 9) + 1));
_local1.speed = (Game.player.speed * 1.1);
_local1.steering = (Game.player.steering * _local2);
_local1.range = 250;
_local1.damage = (Game.player.damage * _local2);
_local1.reload = (Game.player.reload * _local2);
_local1.cannons = (Game.player.cannons * _local2);
_local1.armor = (Game.player.armor * _local2);
_local1.team = (Game.player.team * _local2);
_local1.boss = true;
var _local3:CompanionShip = new CompanionShip();
addChild(_local3);
_local3.Init(_local1);
var _local4:Number = ((Math.random() * 2) * Math.PI);
var _local5:Number = ((Math.cos(_local4) * 275) + player.x);
var _local6:Number = ((Math.sin(_local4) * 275) + player.y);
_local3.x = _local5;
_local3.y = _local6;
_local3.filters = [new GlowFilter(0xFF00, 0.2, 5, 5, 2, 2, true, false)];
_local3.bodydef = new b2BodyDef();
_local3.bodydef.position.Set(_local3.x, _local3.y);
_local3.bodydef.linearDamping = 0.8;
_local3.bodydef.angularDamping = 1.5;
var _local7:b2PolygonDef = new b2PolygonDef();
_local7.vertexCount = 4;
_local7.vertices[0].Set(-13.5, 0);
_local7.vertices[1].Set(0, -26);
_local7.vertices[2].Set(13.5, 0);
_local7.vertices[3].Set(0, 26);
_local7.density = 1;
_local7.friction = 0.5;
_local7.restitution = 0.2;
_local3.bodydef.userData = _local3;
_local3.body = world.CreateBody(_local3.bodydef);
_local3.body.CreateShape(_local7);
_local3.body.SetMassFromShapes();
companion = _local3;
_local3.SetState(ROAM);
}
private function up2(_arg1:MouseEvent):void{
removeEventListener(MouseEvent.MOUSE_UP, up2);
player.beginDrag = false;
}
}
}//package
Section 249
//LevelHolderSurvival (LevelHolderSurvival)
package {
import flash.events.*;
import flash.display.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import flash.geom.*;
import Box2D.Dynamics.Contacts.*;
public class LevelHolderSurvival extends LevelHolder {
public function LevelHolderSurvival(){
var _local3:WaterWave;
var _local4:Octopus;
var _local5:Cloud;
super();
this.buttonMode = true;
worldAABB.lowerBound.Set(-500, -500);
worldAABB.upperBound.Set(2500, 2500);
var _local1:b2Vec2 = new b2Vec2(0, 0);
var _local2:Boolean;
world = new b2World(worldAABB, _local1, _local2);
startplayerlevel = Game.player.level;
this.addEventListener(MouseEvent.MOUSE_DOWN, down);
this.addEventListener(MouseEvent.MOUSE_MOVE, move2, false, 0, true);
e = 0;
while (e < 40) {
_local3 = new WaterWave();
_local3.gotoAndPlay(int((Math.random() * 100)));
_local3.x = int((Math.random() * 2000));
_local3.y = int((Math.random() * 2000));
_local3.cacheAsBitmap = true;
addChild(_local3);
e++;
};
e = 0;
while (e < int((Math.random() * 6))) {
_local4 = new Octopus();
_local4.gotoAndPlay(int((Math.random() * 100)));
_local4.x = int((Math.random() * 2000));
_local4.y = int((Math.random() * 2000));
addChild(_local4);
octopusses.push(_local4);
e++;
};
e = 0;
while (e < 40) {
_local5 = new Cloud();
_local5.x = int((Math.random() * 2000));
_local5.y = int((Math.random() * 2000));
_local5.alpha = 0.6;
_local5.cacheAsBitmap = true;
addChild(_local5);
clouds.push(_local5);
e++;
};
}
private function OnBreak(_arg1:Number){
player.Break(_arg1);
player.targetpoint.x = -1;
}
private function KeyDown(_arg1:KeyboardEvent){
keys[_arg1.keyCode] = true;
}
private function down(_arg1:MouseEvent):void{
addEventListener(MouseEvent.MOUSE_MOVE, move);
addEventListener(MouseEvent.MOUSE_UP, up);
player.beginDrag = false;
}
private function OnBreakD(_arg1:Number){
player.Break(_arg1);
player.targetpoint.x = -1;
}
private function move2(_arg1:MouseEvent):void{
if (player.beginDrag == true){
player.dragPoint = this.globalToLocal(new Point(_arg1.stageX, _arg1.stageY));
};
}
private function OnSteerRightD(_arg1:Number){
player.SteerRight(_arg1);
player.targetpoint.x = -1;
}
private function OnSteerRight(_arg1:Number){
player.SteerRight(_arg1);
player.targetpoint.x = -1;
}
private function OnSteerLeftD(_arg1:Number){
player.SteerLeft(_arg1);
player.targetpoint.x = -1;
}
private function OnAccelerateD(_arg1:Number){
player.Accelerate(_arg1);
player.targetpoint.x = -1;
}
override public function Update(_arg1:Number){
var _local2:*;
var _local3:Trash;
var _local4:Chest;
var _local6:Core;
var _local7:Octopus;
var _local8:int;
var _local9:BurstSplash;
var _local10:*;
var _local11:Number;
var _local12:Boolean;
var _local13:*;
player.Update(_arg1);
if ((parent as LevelSurvival).gamestate == 1){
if (stage.focus != this){
stage.focus = this;
};
};
for (_local2 in keyBinds) {
if (keys[(keyBinds[_local2] as int)] != undefined){
var _local16 = this;
_local16[_local2](_arg1);
};
};
player.body.WakeUp();
player.body.SetLinearVelocity(new b2Vec2(player.speedx, player.speedy));
for each (_local3 in trashes) {
_local3.Update(_arg1);
if (_local3.alpha <= 0){
_local8 = trashes.indexOf(_local3);
if (_local8 != -1){
trashes.splice(_local8, 1);
};
};
};
for each (_local4 in chests) {
if ((((Math.abs((player.x - _local4.x)) <= 40)) && ((Math.abs((player.y - _local4.y)) <= 40)))){
RemoveChest(_local4);
};
_local4.Update(_arg1);
if (_local4.alpha <= 0){
_local8 = chests.indexOf(_local4);
if (_local8 != -1){
chests.splice(_local8, 1);
};
};
};
addChild(player);
addChild(overlay);
boarding = false;
for each (e in enemies) {
(e as EnemyShip).Update(_arg1);
};
if (companion != null){
companion.Update(_arg1);
};
world.Step((1 / 30), 10);
var _local5:b2Body = world.m_bodyList;
while (_local5) {
if ((_local5.m_userData is Sprite)){
_local5.m_userData.x = _local5.GetPosition().x;
_local5.m_userData.y = _local5.GetPosition().y;
if (_local5.m_userData.angle != undefined){
_local5.m_userData.angle = (_local5.GetAngle() * (180 / Math.PI));
};
};
_local5 = _local5.m_next;
};
if ((((boarding == true)) && ((boardingsound == false)))){
SoundManager.FadeIn("Abborduer", "Abborduer");
boardingsound = true;
} else {
if ((((boarding == false)) && ((boardingsound == true)))){
SoundManager.FadeOut("Abborduer");
boardingsound = false;
};
};
for each (_local6 in cores) {
_local6.Update(_arg1);
for each (i in rectarray) {
if ((i.ship is Ship)){
if (_local6.tthis != i.ship){
if ((((_local6.x >= i.lup.x)) && ((_local6.x <= i.rdown.x)))){
if ((((_local6.y >= i.lup.y)) && ((_local6.y <= i.rdown.y)))){
i.ship.Damage(_local6.damage);
_local9 = new BurstSplash();
_local9.x = (_local6.x - i.ship.x);
_local9.y = (_local6.y - i.ship.y);
i.ship.addChild(_local9);
RemoveCore(_local6);
};
};
};
};
};
};
for each (_local7 in octopusses) {
if (_local7.currentFrame >= 150){
_local7.x = (Math.random() * 2000);
_local7.y = (Math.random() * 2000);
_local12 = true;
while (_local12 == true) {
_local12 = false;
for each (_local13 in rocks) {
_local11 = Math.sqrt((Math.pow((_local7.x - _local13.x), 2) + Math.pow((_local7.y - _local13.y), 2)));
if (_local11 <= 180){
(_local12 == true);
};
};
if (_local12 == true){
trace("relocate");
_local7.x = (Math.random() * 2000);
_local7.y = (Math.random() * 2000);
};
};
};
for each (_local10 in enemies) {
_local11 = Math.sqrt((Math.pow((_local7.x - _local10.x), 2) + Math.pow((_local7.y - _local10.y), 2)));
if (_local11 <= 30){
_local10.Damage(0.2);
};
};
_local11 = Math.sqrt((Math.pow((_local7.x - player.x), 2) + Math.pow((_local7.y - player.y), 2)));
if (_local11 <= 30){
player.Damage(0.4);
};
};
if (player.x <= 30){
player.x = 30;
};
if (player.x >= 1970){
player.x = 1970;
};
if (player.y <= 30){
player.y = 30;
};
if (player.y >= 1970){
player.y = 1970;
};
for each (e in clouds) {
e.y = (e.y + (20 * _arg1));
if (e.y >= 2300){
e.x = int((Math.random() * 2000));
e.y = int((Math.random() * 2000));
};
};
Reorder();
UpdateRectArray();
}
private function move(_arg1:MouseEvent):void{
removeEventListener(MouseEvent.MOUSE_UP, up);
removeEventListener(MouseEvent.MOUSE_MOVE, move);
addEventListener(MouseEvent.MOUSE_UP, up2);
player.beginDrag = true;
player.dragPoint = this.globalToLocal(new Point(_arg1.stageX, _arg1.stageY));
}
override public function AddWave(){
var _local1:*;
var _local2:*;
e = 0;
while (e < ships) {
_local1 = new Object();
_local2 = (0.6 + (((Math.random() * 2) - 1) * 0.3));
_local1.type = int(((Math.random() * 9) + 1));
_local1.speed = (Game.player.speed * _local2);
_local1.steering = (Game.player.steering * _local2);
_local1.range = 200;
_local1.damage = (Game.player.damage * _local2);
_local1.reload = (Game.player.reload * _local2);
_local1.cannons = (Game.player.cannons * _local2);
_local1.armor = (Game.player.armor * _local2);
_local1.team = (Game.player.team * _local2);
_local1.boss = false;
AddShip(_local1);
e++;
};
if (Math.random() < 0.3){
ships++;
};
}
private function OnFire(_arg1:Number){
player.Fire(_arg1);
}
override public function StartLevel(){
var _local1:int = Game.player.level;
waves = Game.settingsxml.Levels.Level[_local1].@waves;
ships = Game.settingsxml.Levels.Level[_local1].@ships;
currentships = ships;
AddWave();
}
private function up2(_arg1:MouseEvent):void{
removeEventListener(MouseEvent.MOUSE_UP, up2);
trace("Отпустил");
player.beginDrag = false;
}
private function OnSteerLeft(_arg1:Number){
player.SteerLeft(_arg1);
player.targetpoint.x = -1;
}
private function KeyUp(_arg1:KeyboardEvent){
delete keys[_arg1.keyCode];
}
private function up(_arg1:MouseEvent):void{
removeEventListener(MouseEvent.MOUSE_MOVE, move);
var _local2:Point = this.globalToLocal(new Point(_arg1.stageX, _arg1.stageY));
var _local3:Number = Math.sqrt((Math.pow((_local2.x - player.x), 2) + Math.pow((_local2.y - player.y), 2)));
if (_local3 >= 50){
player.targetpoint = _local2;
};
player.beginDrag = false;
}
private function OnAccelerate(_arg1:Number){
player.Accelerate(_arg1);
player.targetpoint.x = -1;
}
}
}//package
Section 250
//LevelMap (LevelMap)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
public class LevelMap extends FadeSlider {
public var tgtspeed:Number;// = 1
public var nearcity:Boolean;// = false
public var tgtlen:Number;// = 0
public var king:MovieClip;
public var pirateslen:Number;// = 0
public var tgtstep:Number;// = 0
public var perkdlg:PerkDialog;// = null
public var tgtx:Number;// = 0
public var marker:MovieClip;
public var gui:Interface;
public var ship:MapShip;
public var tgty:Number;// = 0
public var nearquest:Boolean;// = false
public var upgradedlg:UpgradeDialog;// = null
public var cities:Array;
public var piratesoffset:Number;// = 0
public var update:Boolean;// = true
public var maptutorial:MapTutorial;
public var startx:Number;// = 0
public var starty:Number;// = 0
public var asked:Boolean;// = false
public var map:XML;
public var dlg;
private var e;
public var startnearcity:Boolean;// = false
public var pauseddialog:PausedWidget;
public var levelmask:LevelMask;
public var tgtcounter:Number;// = 0
public static var levelmap:LevelMap;
public function LevelMap(){
var len:*;
map = <Map>
<Item city="none" x="111" y="312" quest="1" txt="As you walk back to your ship, two men stop you and forcefully inform you that you've got problems. Then they give you some strange note and quite literally vanish in the air.
"Give me my property back or your brother is gonna be cut into pieces and fed to the English sharks",
You have a gut feeling that there is no bluff. You must reach the place as soon as possible."/>
<Item city="Hatesberry" x="111" y="312" quest="2" txt=""You've got problems. My master wants to get something that belongs to you", he points at the amulet hanging on your neck.
The conversation started off not as well as it could have and during this long monologue you felt a strong desire to cut your opponent into pieces at least three times. On the other hand – it was the way you always felt about people. You also noticed the henchman's saber. You know who forged it. And now you know for sure where you have to go – to Saint-Ramy.
It is most fortunate that you managed to understand that not a state supported this man. It only meant that the pirates held your brother as a hostage. And that was not positive news.
What's worse, you will not be let in this tavern again. The keeper never had any tender affections for the heavily scarred pirates or particularly for those who caused the scarring themselves.
Now all you have to do is reach the "master" before the news from the tavern do."/>
<Item city="Saint-Remy" x="568" y="160" quest="3" txt=""Hello Jerome!"
The house was shaking with the rattle of various household stuff and the doors being shut and barricaded.
"Have you forgotten how to greet your old pals, my old mate?"
A note of disappointment flickered in your voice.
Ten minutes later, with the corresponding cries and screams, your teammates dragged him out from the tumbledown shack.
"Well, which arm goes first? Or should I start with the head?"
Your words proved to be very convincing. Of course you were not going to kill him (at least now right now), but your striking irony scared the blacksmith half to death.
"It seems that the news about Hatesbury has already made its way to the "master's" ears, hasn't it? Otherwise you wouldn't be fussing so much. And that is a problem, you understand me, right? And since we are good friends, today I will be a vegetarian. While you will be more talkative. Do we have a deal?"
Insane nodding of your opponent's head served as a sign of his approval of your perspicacious and motivating speech.
Jerome didn't have many orders for making weapons. His products were popular in inner circles of wealthy people due to their highest quality and exorbitant prices. That is why the clients' names were not hard to remember. After a quick inspection of his desk he said that the order was made by Redcliff Frost. His appearance was also confirmed.
You also found out that this amulet allowed its possessor to summon the sea devil but in order to do this he had to have "power". Too pity that you didn't believe in such nonsense – otherwise you'd try it some evening.
But the main news was the information about the ship.
"He arrived on a frigate. What was her name… The Tragg, that's it! Wait a minute…"
Jerome disappeared into his shack.
"Found it! Find a man in Mernfield whose name is Murphy McBride. He used to be an architect working at the local shipyard. I think he'll be able to help you. You can always say that you're from me.""/>
<Item city="Mernfield" x="420" y="103" quest="4" txt="Mernfield is a splendid town. It's the only place in the region where the power belongs to a council made up of tavern-keepers. No wonder since out of seventeen buildings eight are taverns. Plus of course there is a brothel, also rum storages bigger than city hall, and a tradition to hold a monthly championship for the strongest tavern-keeper. In other words – to smash people's faces in.
But the most amazing thing about Mernfield is that it hates black flags. This town gives birth to the best pirate busters and they swallow hatred with their mothers' milk.
After the meeting with McBride it became clear that the words would be of no help. This bald little man no higher than 5 feet tall was extremely taciturn and used only two words – "yes" and "no".
But your natural teacher's talent did not perish in vain.
As soon as you demonstrated your blade he became much more talkative and learned not only new words but how to use them willingly as well! This world is full of wonders indeed.
He also said that in two days the Tragg would be in the harbour.
You decide to wait for the vessel and later in the tavern get one of the sailors talking about her destination.
Voila, here is a new point on your map – a tiny isle called De Santini. You realize that have missed the smell of burnt powder. But its OK as soon you are going to have a lot of fun."/>
<Item city="De-santini" x="386" y="318" quest="5" txt=""Bloody hell, he said that it was several ships going there, not several dozens!""/>
<Item city="none" x="514" y="110" quest="6" txt="Sailing past the fresh wreckage of your destroyed enemies' ships you see a floundering pirate. He seems to be a really bad swimmer, and you decide to "help" him. You throw him a rope which he immediately grasps, and you promise to spare him if he provides the information about his "master's" whereabouts. Or you can cut off his limbs and drag his bleeding body behind the ship watching the feeding sharks, its up to him to decide.
The pirate didn't have to be asked twice, and you found out that the "master's" ship was called The Uninvited and that she was going to "Hintch". A pirate bay. Not "Tortuga" of course, but it seemed that there would be enough shooting there anyway."/>
<Item city="Hintch" x="554" y="286" quest="7" txt=""They have tracked us down! Chaaaaarge!""/>
<Item city="none" x="150" y="104" quest="8" txt="After hearing the watchman's desperate cry you learn two news.
The good one if that you've come to the right place and that puny pirate didn't let you down. The Uninvited is anchored here along with the other pirate ships.
The bad one is that they are BIG ships and there are a… no, not simply "a lot" of them. There are a $%#$%#$%#%$# LOT of them!"/>
<Item city="Port Metz" x="384" y="179" quest="0" txt=""/>
<Item city="Winterport" x="313" y="96" quest="0" txt=""/>
<Item city="Liverpool" x="123" y="165" quest="0" txt=""/>
<Item city="Harrington" x="219" y="275" quest="0" txt=""/>
</Map>
;
cities = new Array();
super();
try {
levelmap = this;
SetOut();
piratesoffset = (Math.random() * 120);
ship.mouseEnabled = false;
levelmask.mouseEnabled = false;
levelmask.visible = false;
if (((!((Game.player.levelmapcoords.x == 0))) && (!((Game.player.levelmapcoords.y == 0))))){
ship.x = Game.player.levelmapcoords.x;
ship.y = Game.player.levelmapcoords.y;
};
tgtx = ship.x;
tgty = ship.y;
for each (e in map.Item) {
cities.push({x:e.@x, y:e.@y, city:e.@city, quest:e.@quest, txt:e.@txt});
if (e.@quest == Game.player.questnumber){
trace(Game.player.questnumber);
marker.x = e.@x;
marker.y = e.@y;
};
};
for each (e in cities) {
len = Math.sqrt((Math.pow((e.x - ship.x), 2) + Math.pow((e.y - ship.y), 2)));
if (len <= 20){
startnearcity = true;
};
};
addEventListener(MouseEvent.CLICK, OnClick);
addEventListener(Event.ENTER_FRAME, OnUpdate);
UpdateGUI();
gui.avatar_icon.gotoAndStop(Game.player.avatar);
gui.ship_icon.gotoAndStop(Game.player.ship);
gui.text1.text = "Upgrade";
gui.text2.text = "Character";
gui.text3.text = "Pause";
gui.text4.text = "Main menu";
pauseddialog.visible = false;
this.addEventListener(Event.REMOVED_FROM_STAGE, OnRemoved);
gui.button1.addEventListener(MouseEvent.CLICK, OnUpgradeDlg);
gui.button4.addEventListener(MouseEvent.CLICK, OnMainMenu);
gui.button2.addEventListener(MouseEvent.CLICK, OnUpdateDlg);
gui.button3.addEventListener(MouseEvent.CLICK, OnPauseDlg);
if (Game.player.showmaptutorial == false){
maptutorial.visible = false;
} else {
maptutorial.visible = true;
};
king.buttonMode = true;
king.addEventListener(MouseEvent.CLICK, OnKing);
PlayFadeIn();
} catch(e:Error) {
};
}
function OnUpgradeDlg(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
update = false;
upgradedlg = new UpgradeDialog();
addChild(upgradedlg);
}
public function ShowFirstQuest(){
dlg = new StorylineDialog();
dlg.textbox.multiline = true;
dlg.seaquest = true;
dlg.textbox.htmlText = map.Item[0].@txt;
dlg.avatar.gotoAndStop(Game.player.questnumber);
addChild(dlg);
}
function OnUpdateDlg(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
update = false;
perkdlg = new PerkDialog();
perkdlg.UpdatePerks();
addChild(perkdlg);
}
public function UpdateGUI(){
Game.player.update();
gui.damage_text.text = ("Damage: " + Game.player.damage.toString());
gui.reload_text.text = ("Reload: " + Game.player.reload.toString());
gui.range_text.text = ("Range: " + Game.player.range.toString());
gui.cannons_text.text = ("Cannons: " + Game.player.cannons.toString());
gui.steering_text.text = ("Steering: " + Game.player.steering.toString());
gui.speed_text.text = ("Speed: " + Game.player.speed.toString());
gui.armor_text.text = ("Armor: " + Game.player.armor.toString());
gui.team_text.text = ("Team: " + Game.player.team.toString());
gui.gold_text.text = Game.player.gold.toString();
gui.SetMaxHP(Game.player.armor);
gui.SetMaxCores(Game.player.cannons);
gui.SetMaxTeam(Game.player.team);
}
function OnPauseDlg(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
update = !(update);
pauseddialog.visible = !(update);
}
function OnKing(_arg1:Event){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Frise-of-pirates%3Fref%3Drise-of-pirates_logo");
navigateToURL(_local2);
}
public function OnUpdate(_arg1:Event){
var _local4:*;
var _local5:*;
var _local6:*;
if (update == false){
return;
};
if (tgtcounter <= 1){
tgtcounter = (tgtcounter + tgtstep);
_local4 = (startx + (tgtcounter * (tgtx - startx)));
_local5 = (starty + (tgtcounter * (tgty - starty)));
if (levelmask.hitTestPoint(_local4, _local5, true) == true){
ship.x = _local4;
ship.y = _local5;
} else {
tgtcounter = 1;
tgtx = _local4;
tgty = _local5;
};
} else {
if (tgtcounter > 1){
ship.x = tgtx;
ship.y = tgty;
};
};
if (tgtcounter <= 1){
pirateslen = (pirateslen + Math.sqrt((Math.pow((Game.player.levelmapcoords.x - ship.x), 2) + Math.pow((Game.player.levelmapcoords.y - ship.y), 2))));
};
Game.player.levelmapcoords.x = ship.x;
Game.player.levelmapcoords.y = ship.y;
nearcity = false;
nearquest = false;
Game.player.questbattle = false;
var _local2 = "Hatesberry";
var _local3 = "text";
for each (e in cities) {
_local6 = Math.sqrt((Math.pow((e.x - ship.x), 2) + Math.pow((e.y - ship.y), 2)));
if (_local6 <= 20){
if (((!((e.quest == 0))) && ((e.quest == Game.player.questnumber)))){
Game.player.questbattle = true;
nearquest = true;
};
nearcity = true;
_local2 = e.city;
_local3 = e.txt;
};
};
if ((((((nearcity == true)) && ((asked == false)))) && ((startnearcity == false)))){
asked = true;
tgtcounter = 1;
tgtx = ship.x;
tgty = ship.y;
if ((((nearquest == false)) && (!((_local2 == "none"))))){
Game.player.cityname = _local2;
dlg = new CityDialog();
dlg.city_text.text = (("Do you want to enter " + _local2) + "'s shipyard?");
addChild(dlg);
} else {
if (nearquest == true){
dlg = new StorylineDialog();
dlg.textbox.multiline = true;
Game.player.questbattle = true;
if ((((((((Game.player.questnumber == 5)) || ((Game.player.questnumber == 6)))) || ((Game.player.questnumber == 7)))) || ((Game.player.questnumber == 8)))){
dlg.seaquest = true;
} else {
dlg.seaquest = false;
Game.player.cityname = _local2;
};
dlg.textbox.htmlText = _local3;
dlg.avatar.gotoAndStop(Game.player.questnumber);
addChild(dlg);
};
};
} else {
if ((((nearcity == true)) && ((asked == true)))){
return;
};
if (nearcity == false){
asked = false;
startnearcity = false;
if (pirateslen >= (60 + (piratesoffset * 0.9))){
pirateslen = 0;
piratesoffset = (Math.random() * 30);
removeEventListener(Event.ENTER_FRAME, OnUpdate);
Game.player.questbattle = false;
Game.game.SetState(Game.game.GAMEPLAY);
return;
};
};
};
}
function OnMainMenu(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
update = false;
Game.game.SetState(Game.game.MAINMENU);
}
public function OnRemoved(_arg1:Event){
removeEventListener(MouseEvent.CLICK, OnClick);
removeEventListener(Event.ENTER_FRAME, OnUpdate);
removeEventListener(Event.REMOVED_FROM_STAGE, OnRemoved);
gui.button1.removeEventListener(MouseEvent.CLICK, OnUpgradeDlg);
gui.button4.removeEventListener(MouseEvent.CLICK, OnMainMenu);
gui.button2.removeEventListener(MouseEvent.CLICK, OnUpdateDlg);
gui.button3.addEventListener(MouseEvent.CLICK, OnPauseDlg);
king.addEventListener(MouseEvent.CLICK, OnKing);
}
public function OnClick(_arg1:MouseEvent){
if (_arg1.currentTarget != _arg1.target){
return;
};
if (levelmask.hitTestPoint(_arg1.stageX, _arg1.stageY, true) == true){
tgtx = _arg1.stageX;
tgty = _arg1.stageY;
startx = ship.x;
starty = ship.y;
tgtlen = Math.sqrt((Math.pow((tgtx - ship.x), 2) + Math.pow((tgty - ship.y), 2)));
tgtcounter = 0;
tgtstep = (tgtspeed / tgtlen);
};
}
}
}//package
Section 251
//LevelMask (LevelMask)
package {
import flash.display.*;
public dynamic class LevelMask extends MovieClip {
}
}//package
Section 252
//LevelSurvival (LevelSurvival)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.text.*;
import fl.transitions.*;
import flash.utils.*;
import fl.transitions.easing.*;
import flash.filters.*;
import flash.xml.*;
public class LevelSurvival extends FadeSlider {
const GAMEWIN:uint = 5;
const GAMEOVER:uint = 3;
const LEVELWIN:uint = 4;
const PAUSE:uint = 2;
const NORMAL:uint = 1;
var shipnumber:int;// = 0
var watertilesholderoffset:Number;// = 110
public var king:MovieClip;
var waves:Array;
var levelheight:Number;// = 0
var perkdlg:PerkDialog;// = null
public var levelholder:LevelHolderSurvival;
var delta:Number;// = 0
public var levelscoretext:TextField;
var leveloffsetx:Number;// = 0
var levelwidth:Number;// = 0
var timer:Number;// = 0
var leveloffsety:Number;// = 0
public var gui:Interface;
public var escapedlg:TriedToEscape;
var wateroffsetdirection:int;// = 1
var tutorial:Tutorial;// = null
var gamestate:uint;// = 2
var player:PlayerShip;
var triedtoescape:Boolean;// = false
public var pauseddialog:PausedWidget;
var watertilesholder:WaterTilesHolder;
var oldtimer:Number;// = 0
public static var level:LevelSurvival = null;
public function LevelSurvival(){
var gm:Game;
var e:*;
var i:*;
var rockamount:*;
watertilesholder = new WaterTilesHolder();
levelholder = new LevelHolderSurvival();
waves = new Array();
super();
try {
level = this;
Level.level = null;
SetOut();
gm = Game.game;
player = new PlayerShip();
levelwidth = Game.settingsxml.Common.@levelwidth;
levelheight = Game.settingsxml.Common.@levelheight;
addChild(watertilesholder);
addChild(levelholder);
levelholder.x = (-((levelwidth - 700)) / 2);
levelholder.y = -((levelheight - 450));
levelholder.SetPlayer(player);
gui.damage_text.text = ("Damage: " + Game.player.damage.toString());
gui.reload_text.text = ("Reload: " + Game.player.reload.toString());
gui.range_text.text = ("Range: " + Game.player.range.toString());
gui.cannons_text.text = ("Cannons: " + Game.player.cannons.toString());
gui.steering_text.text = ("Steering: " + Game.player.steering.toString());
gui.speed_text.text = ("Speed: " + Game.player.speed.toString());
gui.armor_text.text = ("Armor: " + Game.player.armor.toString());
gui.team_text.text = ("Team: " + Game.player.team.toString());
gui.avatar_icon.gotoAndStop(Game.player.avatar);
gui.ship_icon.gotoAndStop(Game.player.ship);
Game.player.update();
gui.SetMaxHP(Game.player.armor);
gui.SetMaxCores(Game.player.cannons);
gui.SetMaxTeam(Game.player.team);
gui.text1.text = "Upgrade";
gui.text2.text = "Character";
gui.text3.text = "Pause";
gui.text4.text = "Main menu";
with ({}) {
with ({}) {
!ERROR!.OnUpgradeDlg = function (_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
Pause();
var _local2:* = new UpgradeDialog();
addChild(_local2);
};
};
gui.button1.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
Pause();
var _local2:* = new UpgradeDialog();
addChild(_local2);
});
gui.button2.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
Pause();
perkdlg = new PerkDialog();
perkdlg.UpdatePerks();
addChild(perkdlg);
});
gui.button3.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
Pause();
});
gui.button4.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
Pause();
Game.game.SetState(Game.game.MAINMENU);
});
pauseddialog.visible = false;
escapedlg.visible = false;
levelscoretext.text = "0";
UpdateGold();
PlayFadeIn();
rockamount = 40;
e = 0;
while (e < rockamount) {
levelholder.AddRock(int((Math.random() * 2)));
e = (e + 1);
};
Reorder();
if (Game.player.showtutorial == true){
Game.player.showtutorial = false;
SetGameState(PAUSE);
tutorial = new Tutorial();
addChild(tutorial);
} else {
SetGameState(NORMAL);
};
levelholder.StartLevel();
king.buttonMode = true;
king.addEventListener(MouseEvent.CLICK, function (_arg1:Event){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Frise-of-pirates%3Fref%3Drise-of-pirates_logo");
navigateToURL(_local2);
});
} catch(e:Error) {
trace(e.message);
trace(e.getStackTrace());
};
}
public function HighlightCharacterButton(_arg1:Boolean=false){
if (_arg1 == false){
gui.button2.filters = [];
} else {
gui.button2.filters = [new GlowFilter(0xFF0000, 1, 5, 5, 2, 2, true, false)];
};
}
public function SetGameState(_arg1:uint){
if (stage){
stage.focus = this;
};
if ((((gamestate == NORMAL)) && ((_arg1 == GAMEOVER)))){
gamestate = PAUSE;
Game.game.SetState(Game.game.GAMEOVER);
};
gamestate = _arg1;
}
public function GetNearestEnemy(_arg1:Number, _arg2:Number):EnemyShip{
return (levelholder.GetNearestEnemy(_arg1, _arg2));
}
private function Reorder(){
addChild(gui);
addChild(pauseddialog);
addChild(levelscoretext);
if (stage != null){
};
addChild(king);
}
public function Pause(){
if (gamestate == NORMAL){
SetGameState(PAUSE);
pauseddialog.visible = true;
} else {
if (gamestate == PAUSE){
SetGameState(NORMAL);
pauseddialog.visible = false;
escapedlg.visible = false;
};
};
}
override public function Update(_arg1:Event){
var _local2:*;
var _local3:Number;
var _local4:Point;
var _local5:Point;
if (fadestate != IDLE){
super.Update(_arg1);
};
if (gamestate == PAUSE){
timer = getTimer();
return;
};
if (gamestate == NORMAL){
if ((((timer == 0)) && ((oldtimer == 0)))){
timer = getTimer();
};
oldtimer = timer;
timer = getTimer();
delta = (timer - oldtimer);
_local3 = 1;
if (delta >= 0){
delta = (delta / 1000);
_local4 = player.GetMoveVector();
levelholder.Update(delta);
watertilesholderoffset = (watertilesholderoffset - (delta * 14));
if (watertilesholderoffset <= 0){
watertilesholderoffset = (watertilesholderoffset + 110);
};
watertilesholder.Update(watertilesholderoffset);
gui.SetTeam(player.team);
_local5 = levelholder.localToGlobal(levelholder.GetPlayerPosition());
if ((((_local5.y <= 180)) && ((_local4.y <= 0)))){
levelholder.y = (levelholder.y - _local4.y);
if (levelholder.y >= 0){
levelholder.y = 0;
};
};
if ((((_local5.y >= 300)) && ((_local4.y >= 0)))){
levelholder.y = (levelholder.y - _local4.y);
if (levelholder.y <= -1550){
levelholder.y = -1550;
};
};
if ((((_local5.x <= 250)) && ((_local4.x <= 0)))){
levelholder.x = (levelholder.x - _local4.x);
if (levelholder.x >= 0){
levelholder.x = 0;
};
};
if ((((_local5.x >= 450)) && ((_local4.x >= 0)))){
levelholder.x = (levelholder.x - _local4.x);
if (levelholder.x <= -1300){
levelholder.x = -1300;
};
};
Reorder();
};
};
}
public function UpdateGold(){
gui.gold_text.text = Game.player.gold.toString();
}
}
}//package
Section 253
//LevelWin (LevelWin)
package {
import flash.media.*;
public dynamic class LevelWin extends Sound {
}
}//package
Section 254
//LevelWinDialog (LevelWinDialog)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.text.*;
import mochi.as3.*;
import com.midasplayer.*;
public class LevelWinDialog extends FadeSlider {
public var submitbutton:ShopButton;
var totalscore:Number;// = 0
public var king:MovieClip;
public var backbutton:ShopButton;
public var levelscoretext:TextField;
public function LevelWinDialog(){
super();
try {
SetOut();
PlayFadeIn();
backbutton.addEventListener(MouseEvent.CLICK, OnBack, false, 0, true);
backbutton.tabEnabled = false;
submitbutton.addEventListener(MouseEvent.CLICK, OnSubmit, false, 0, true);
levelscoretext.text = GlobalData.player.scores.toString();
king.buttonMode = true;
king.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Frise-of-pirates%3Fref%3Drise-of-pirates_logo");
navigateToURL(_local2);
});
} catch(e:Error) {
};
}
public function OnBack(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
if ((((((((((Game.player.questnumber == 1)) || ((Game.player.questnumber == 5)))) || ((Game.player.questnumber == 6)))) || ((Game.player.questnumber == 7)))) || ((Game.player.questnumber == 8)))){
if ((((Game.player.questnumber == 1)) || ((Game.player.questbattle == true)))){
trace(("Quest = " + Game.player.questnumber));
Game.player.questnumber++;
} else {
trace("Not a quest battle!");
};
};
backbutton.removeEventListener(MouseEvent.CLICK, OnBack);
if (GlobalData.player.questnumber == 9){
Game.game.SetState(Game.game.GAMEWIN);
Game.player.completed = true;
GlobalData.completed = true;
} else {
Game.game.SetState(Game.game.LEVELMAP);
};
GlobalData.player = Game.player;
GlobalData.Flush();
}
public function OnSubmit(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
KingAPI.submitScore(Game.player.scores);
KingAPI.openHighscoresLink();
MovieClip(root).tracker.trackPageview("/publicMC.html");
}
}
}//package
Section 255
//MainMenu (MainMenu)
package {
import flash.net.*;
import flash.events.*;
import flash.display.*;
import mochi.as3.*;
public class MainMenu extends FadeSlider {
public var credits:CreditsButton;
public var highscores:SimpleButton;
public var trophies:TrophiesButton;
public var newgame:SimpleButton;
public var advert:MoreGamesButton;
public var king:MovieClip;
public var loadgame:SimpleButton;
public var hostgame:HostButton;
public var survival:SurvivalButton;
public function MainMenu(){
super();
SetOut();
PlayFadeIn();
advert.buttonMode = true;
advert.addEventListener(MouseEvent.CLICK, function (_arg1:Event){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Fsponsored-games%3Fref%3Drise-of-pirates");
navigateToURL(_local2);
});
hostgame.buttonMode = true;
hostgame.addEventListener(MouseEvent.CLICK, function (_arg1:Event){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fwebsite_content.jsp%3Fref%3Drise-of-pirates");
navigateToURL(_local2);
});
king.buttonMode = true;
king.addEventListener(MouseEvent.CLICK, function (_arg1:Event){
var _local2:URLRequest = new URLRequest("http://www.king.com/servlet/SelectServlet?partner=midas_viral&target=%2Fgame%2Frise-of-pirates%3Fref%3Drise-of-pirates_logo");
navigateToURL(_local2);
});
MochiCoins.showLoginWidget({x:10, y:460});
MochiServices.send("scores_closeLeaderboard");
}
}
}//package
Section 256
//MapButton (MapButton)
package {
import flash.display.*;
public dynamic class MapButton extends SimpleButton {
}
}//package
Section 257
//MapShip (MapShip)
package {
import flash.display.*;
public dynamic class MapShip extends MovieClip {
}
}//package
Section 258
//MapTheme (MapTheme)
package {
import flash.media.*;
public dynamic class MapTheme extends Sound {
}
}//package
Section 259
//MapTutorial (MapTutorial)
package {
import flash.events.*;
import flash.display.*;
public class MapTutorial extends MovieClip {
public var continuebutton:ShopButton;
public function MapTutorial(){
addFrameScript(0, frame1);
continuebutton.addEventListener(MouseEvent.CLICK, OnContinue, false, 0, true);
}
function frame1(){
stop();
}
public function OnContinue(_arg1:MouseEvent){
if (this.currentFrame == 1){
gotoAndStop(2);
} else {
(parent as LevelMap).ShowFirstQuest();
Game.player.showmaptutorial = false;
parent.removeChild(this);
};
}
}
}//package
Section 260
//MarketIcon (MarketIcon)
package {
import flash.display.*;
public dynamic class MarketIcon extends MovieClip {
public function MarketIcon(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 261
//MarketShop (MarketShop)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.xml.*;
public class MarketShop extends MovieClip {
public var item3:MarketStoreItem;
public var item4:MarketStoreItem;
public var item5:MarketStoreItem;
public var page1_button:ShopButton;
private var page:int;// = 1
private var dlg:BuyMarketDialog;
public var dialog_name:TextField;
private var e;
public var page2_button:ShopButton;
public var item1:MarketStoreItem;
public var item2:MarketStoreItem;
public function MarketShop(){
dlg = new BuyMarketDialog();
super();
try {
addEventListener("BuyMarketEvent", OnBuy, false, 0, true);
page1_button.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SetPage(1);
SoundManager.PlayOnce("Click");
});
page2_button.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SetPage(2);
SoundManager.PlayOnce("Click");
});
e = 0;
while (e < 5) {
this[("item" + (e + 1).toString())].cost_text.mouseEnabled = false;
this[("item" + (e + 1).toString())].sell_text.mouseEnabled = false;
this[("item" + (e + 1).toString())].market_icon.gotoAndStop((e + 1));
e++;
};
SetPage(1);
} catch(e:Error) {
};
}
public function OnBuy(_arg1:BuyMarketEvent){
removeChild(dlg);
if (_arg1.index != -1){
if (Game.player.gold >= (Game.settingsxml.Market.Item[_arg1.index].@cost * _arg1.quantity)){
Game.player.gold = (Game.player.gold - (Game.settingsxml.Market.Item[_arg1.index].@cost * _arg1.quantity));
if (Game.player.goods[_arg1.index] == undefined){
Game.player.goods[_arg1.index] = _arg1.quantity;
} else {
Game.player.goods[_arg1.index] = (Game.player.goods[_arg1.index] + _arg1.quantity);
};
Game.player.goods["cityname"] = Game.player.cityname;
trace(Game.player.goods[_arg1.index]);
trace(Game.player.goods["cityname"]);
Game.player.update();
SetPage(1);
(parent as City).UpdateDialog();
};
};
}
public function ShowBuyMarketDialog(_arg1:int){
dlg.index = _arg1;
addChild(dlg);
}
public function SetPage(_arg1:int){
page = _arg1;
if (page == 1){
e = 0;
while (e < 5) {
this[("item" + (e + 1).toString())].cost_text.text = ("Cost: " + Game.settingsxml.Market.Item[e].@cost);
this[("item" + (e + 1).toString())].sell_text.text = ("Sell value: " + Game.settingsxml.Market.Item[e].@sell);
this[("item" + (e + 1).toString())].market_icon.gotoAndStop((e + 1));
this[("item" + (e + 1).toString())].index = e;
e++;
};
} else {
if (page == 2){
e = 5;
while (e < Game.settingsxml.Ships.Ship.length()) {
this[("item" + (e - 4).toString())].cost_text.text = ("Cost: " + Game.settingsxml.Market.Item[e].@cost);
this[("item" + (e - 4).toString())].sell_text.text = ("Sell value: " + Game.settingsxml.Market.Item[e].@sell);
this[("item" + (e - 4).toString())].market_icon.gotoAndStop((e + 1));
this[("item" + (e - 4).toString())].index = e;
e++;
};
};
};
}
}
}//package
Section 262
//MarketStoreItem (MarketStoreItem)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class MarketStoreItem extends MovieClip {
public const OFF_BUTTON:int = 1;
public const ON_BUTTON:int = 0;
private var buttonstate:int;// = 0
public var index:int;// = -1
public var sell_text:TextField;
public var market_icon:MarketIcon;
public var cost_text:TextField;
public function MarketStoreItem(){
addFrameScript(0, frame1);
addEventListener(MouseEvent.MOUSE_OVER, OnOver, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, OnOut, false, 0, true);
addEventListener(MouseEvent.CLICK, OnClick, false, 0, true);
buttonMode = true;
}
public function OnOver(_arg1:MouseEvent){
if (buttonstate == ON_BUTTON){
gotoAndStop("over");
} else {
gotoAndStop("off");
};
}
public function OnClick(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
(parent as MarketShop).ShowBuyMarketDialog(index);
}
public function SetState(_arg1:int){
if (buttonstate != _arg1){
buttonstate = _arg1;
if (buttonstate == OFF_BUTTON){
gotoAndStop("off");
} else {
gotoAndStop("on");
};
};
}
function frame1(){
stop();
}
public function OnOut(_arg1:MouseEvent){
if (buttonstate == ON_BUTTON){
gotoAndStop("on");
} else {
gotoAndStop("off");
};
}
}
}//package
Section 263
//MarketTutorial (MarketTutorial)
package {
import flash.events.*;
import flash.display.*;
public class MarketTutorial extends MovieClip {
public var continuebutton:ShopButton;
public function MarketTutorial(){
addFrameScript(0, frame1);
continuebutton.addEventListener(MouseEvent.CLICK, OnContinue, false, 0, true);
}
function frame1(){
stop();
}
public function OnContinue(_arg1:MouseEvent){
if (this.currentFrame != 1){
gotoAndStop((this.currentFrame + 1));
} else {
parent.removeChild(this);
Game.player.showmarkettutorial = false;
};
}
}
}//package
Section 264
//mcBannedSign (mcBannedSign)
package {
import flash.display.*;
public dynamic class mcBannedSign extends MovieClip {
public var bg:MovieClip;
}
}//package
Section 265
//mcCrownMask (mcCrownMask)
package {
import flash.display.*;
public dynamic class mcCrownMask extends MovieClip {
}
}//package
Section 266
//mcFerryLine (mcFerryLine)
package {
import flash.display.*;
public dynamic class mcFerryLine extends MovieClip {
}
}//package
Section 267
//mcLogoHolder (mcLogoHolder)
package {
import flash.display.*;
public dynamic class mcLogoHolder extends MovieClip {
}
}//package
Section 268
//mcLogoMask (mcLogoMask)
package {
import flash.display.*;
public dynamic class mcLogoMask extends MovieClip {
}
}//package
Section 269
//mcOtherGames (mcOtherGames)
package {
import flash.display.*;
public dynamic class mcOtherGames extends MovieClip {
}
}//package
Section 270
//mcPlay (mcPlay)
package {
import flash.display.*;
public dynamic class mcPlay extends MovieClip {
}
}//package
Section 271
//mcWaterRing (mcWaterRing)
package {
import flash.display.*;
public dynamic class mcWaterRing extends MovieClip {
public function mcWaterRing(){
addFrameScript(39, frame40);
}
function frame40(){
stop();
}
}
}//package
Section 272
//MenuMusic (MenuMusic)
package {
import flash.media.*;
public dynamic class MenuMusic extends Sound {
}
}//package
Section 273
//MessageDialog (MessageDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class MessageDialog extends MovieClip {
public var yes_button:MapButton;
public var message_text:TextField;
public function MessageDialog(){
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
parent.removeChild(this);
}
}
}//package
Section 274
//MiniquestDialog (MiniquestDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class MiniquestDialog extends MovieClip {
public var city_text:TextField;
public var yes_button:MapButton;
public var reward:int;// = 0
public var no_button:MapButton;
public var cityname:String;
public function MiniquestDialog(){
cityname = new String();
super();
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
no_button.addEventListener(MouseEvent.CLICK, OnNo, false, 0, true);
}
public function OnNo(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
if (parent){
parent.removeChild(this);
};
}
public function OnYes(_arg1:MouseEvent){
SoundManager.PlayOnce("Buy");
Game.player.miniquest[cityname] = {reward:reward};
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 275
//MoreGamesButton (MoreGamesButton)
package {
import flash.display.*;
public dynamic class MoreGamesButton extends SimpleButton {
}
}//package
Section 276
//NearestEnemy (NearestEnemy)
package {
import flash.display.*;
public dynamic class NearestEnemy extends MovieClip {
}
}//package
Section 277
//NumericStepperDownArrow_disabledSkin (NumericStepperDownArrow_disabledSkin)
package {
import flash.display.*;
public dynamic class NumericStepperDownArrow_disabledSkin extends MovieClip {
}
}//package
Section 278
//NumericStepperDownArrow_downSkin (NumericStepperDownArrow_downSkin)
package {
import flash.display.*;
public dynamic class NumericStepperDownArrow_downSkin extends MovieClip {
}
}//package
Section 279
//NumericStepperDownArrow_overSkin (NumericStepperDownArrow_overSkin)
package {
import flash.display.*;
public dynamic class NumericStepperDownArrow_overSkin extends MovieClip {
}
}//package
Section 280
//NumericStepperDownArrow_upSkin (NumericStepperDownArrow_upSkin)
package {
import flash.display.*;
public dynamic class NumericStepperDownArrow_upSkin extends MovieClip {
}
}//package
Section 281
//NumericStepperUpArrow_disabledSkin (NumericStepperUpArrow_disabledSkin)
package {
import flash.display.*;
public dynamic class NumericStepperUpArrow_disabledSkin extends MovieClip {
}
}//package
Section 282
//NumericStepperUpArrow_downSkin (NumericStepperUpArrow_downSkin)
package {
import flash.display.*;
public dynamic class NumericStepperUpArrow_downSkin extends MovieClip {
}
}//package
Section 283
//NumericStepperUpArrow_overSkin (NumericStepperUpArrow_overSkin)
package {
import flash.display.*;
public dynamic class NumericStepperUpArrow_overSkin extends MovieClip {
}
}//package
Section 284
//NumericStepperUpArrow_upSkin (NumericStepperUpArrow_upSkin)
package {
import flash.display.*;
public dynamic class NumericStepperUpArrow_upSkin extends MovieClip {
}
}//package
Section 285
//Octopus (Octopus)
package {
import flash.display.*;
public dynamic class Octopus extends MovieClip {
}
}//package
Section 286
//PausedWidget (PausedWidget)
package {
import flash.display.*;
public dynamic class PausedWidget extends MovieClip {
}
}//package
Section 287
//PerkDialog (PerkDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.filters.*;
public class PerkDialog extends MovieClip {
public var avatar1:Avatar;
public var bombardier1:PerkIcon;
public var bombardier2:PerkIcon;
public var bombardier3:PerkIcon;
public var exp_text:TextField;
public var bombardier5:PerkIcon;
public var bombardier4:PerkIcon;
var exp:Number;
public var ship_name_text:TextField;
public var authority2:PerkIcon;
public var authority3:PerkIcon;
public var authority4:PerkIcon;
public var authority5:PerkIcon;
public var authority1:PerkIcon;
public var exp_line:ExpLine;
public var trader1:PerkIcon;
public var trader2:PerkIcon;
public var trader3:PerkIcon;
public var trader4:PerkIcon;
public var trader5:PerkIcon;
private var e;
var points:int;// = 0
public var ok_button:DialogButton;
public var point_text:TextField;
public var progress_text:TextField;
public function PerkDialog(){
exp = Game.player.exp;
super();
avatar1.gotoAndStop(Game.player.avatar);
UpdatePerks();
ok_button.addEventListener(MouseEvent.CLICK, OnOk, false, 0, true);
if (Game.player.showperktutorial == true){
addChild(new PerkTutorial());
};
}
public function OnAuthority(_arg1:MouseEvent){
trace("auth");
e = 1;
while (e < 6) {
this[("authority" + e.toString())].buttonMode = false;
this[("bombardier" + e.toString())].buttonMode = false;
this[("trader" + e.toString())].buttonMode = false;
this[("authority" + e.toString())].removeEventListener(MouseEvent.CLICK, OnAuthority);
this[("bombardier" + e.toString())].removeEventListener(MouseEvent.CLICK, OnBombardier);
this[("trader" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTrader);
e++;
};
Game.player.authority = (Game.player.authority + 1);
UpdatePerks();
SoundManager.PlayOnce("Buy");
}
public function OnOverAuthority(_arg1:MouseEvent){
trace(_arg1.currentTarget);
PerkIcon(_arg1.currentTarget).filters = [new GlowFilter(0xFFFFFF, 1, 5, 5, 2, 2, true, false)];
addChild(PerkIcon(_arg1.currentTarget));
(_arg1.currentTarget as PerkIcon).tooltip.y = -20;
(_arg1.currentTarget as PerkIcon).tooltip.tooltip.text = "Crew strength +10%";
}
public function OnOverBombardier(_arg1:MouseEvent){
trace(_arg1.currentTarget);
PerkIcon(_arg1.currentTarget).filters = [new GlowFilter(0xFFFFFF, 1, 5, 5, 2, 2, true, false)];
addChild(PerkIcon(_arg1.currentTarget));
(_arg1.currentTarget as PerkIcon).tooltip.y = -20;
(_arg1.currentTarget as PerkIcon).tooltip.tooltip.text = "Damage +10%";
}
public function OnBombardier(_arg1:MouseEvent){
trace("bomb");
e = 1;
while (e < 6) {
this[("authority" + e.toString())].buttonMode = false;
this[("bombardier" + e.toString())].buttonMode = false;
this[("trader" + e.toString())].buttonMode = false;
this[("authority" + e.toString())].removeEventListener(MouseEvent.CLICK, OnAuthority);
this[("bombardier" + e.toString())].removeEventListener(MouseEvent.CLICK, OnBombardier);
this[("trader" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTrader);
e++;
};
Game.player.bombardier = (Game.player.bombardier + 1);
UpdatePerks();
SoundManager.PlayOnce("Buy");
}
public function OnOutAuthority(_arg1:MouseEvent){
trace(_arg1.currentTarget);
PerkIcon(_arg1.currentTarget).tooltip.y = -30000;
PerkIcon(_arg1.currentTarget).filters = [];
}
public function OnOk(_arg1:MouseEvent){
ok_button.removeEventListener(MouseEvent.CLICK, OnOk);
if ((parent is Level)){
(parent as Level).Pause();
parent.removeChild(this);
} else {
if ((parent is LevelSurvival)){
(parent as LevelSurvival).Pause();
parent.removeChild(this);
} else {
if ((parent is LevelMap)){
(parent as LevelMap).update = true;
parent.removeChild(this);
};
};
};
if (Level.level != null){
Level.level.HighlightCharacterButton(false);
};
SoundManager.PlayOnce("Click");
}
public function OnOutTrader(_arg1:MouseEvent){
trace(_arg1.currentTarget);
PerkIcon(_arg1.currentTarget).tooltip.y = -30000;
PerkIcon(_arg1.currentTarget).filters = [];
}
public function UpdatePerks(){
var _local1:Number;
var _local2:Number;
if (Game.player.level < 8){
points = (Game.player.level - (((Game.player.authority + Game.player.bombardier) + Game.player.trader) - 1));
_local1 = Game.settingsxml.Experience.Level[Game.player.level].@exp;
_local2 = Game.settingsxml.Experience.Level[(Game.player.level + 1)].@exp;
exp_line.scaleX = (1 - ((exp - _local1) / (_local2 - _local1)));
trace(exp_line.scaleX);
} else {
points = 0;
exp_line.scaleX = 1;
};
e = 1;
while (e < 6) {
if (e <= Game.player.authority){
this[("authority" + e.toString())].gotoAndStop(((e * 2) - 1));
} else {
this[("authority" + e.toString())].gotoAndStop((e * 2));
};
if (Game.player.authority != 5){
if (points > 0){
this[("authority" + (Game.player.authority + 1).toString())].addEventListener(MouseEvent.CLICK, OnAuthority, false, 0, true);
this[("authority" + (Game.player.authority + 1).toString())].addEventListener(MouseEvent.MOUSE_OVER, OnOverAuthority, false, 0, true);
this[("authority" + (Game.player.authority + 1).toString())].addEventListener(MouseEvent.MOUSE_OUT, OnOutAuthority, false, 0, true);
this[("authority" + (Game.player.authority + 1).toString())].buttonMode = true;
};
};
if (e <= Game.player.bombardier){
this[("bombardier" + e.toString())].gotoAndStop((((e * 2) - 1) + 10));
} else {
this[("bombardier" + e.toString())].gotoAndStop(((e * 2) + 10));
};
if (Game.player.bombardier != 5){
if (points > 0){
this[("bombardier" + (Game.player.bombardier + 1).toString())].addEventListener(MouseEvent.CLICK, OnBombardier, false, 0, true);
this[("bombardier" + (Game.player.bombardier + 1).toString())].addEventListener(MouseEvent.MOUSE_OVER, OnOverBombardier, false, 0, true);
this[("bombardier" + (Game.player.bombardier + 1).toString())].addEventListener(MouseEvent.MOUSE_OUT, OnOutBombardier, false, 0, true);
this[("bombardier" + (Game.player.bombardier + 1).toString())].buttonMode = true;
};
};
if (e <= Game.player.trader){
this[("trader" + e.toString())].gotoAndStop((((e * 2) - 1) + 20));
} else {
this[("trader" + e.toString())].gotoAndStop(((e * 2) + 20));
};
if (Game.player.trader != 5){
if (points > 0){
this[("trader" + (Game.player.trader + 1).toString())].addEventListener(MouseEvent.CLICK, OnTrader, false, 0, true);
this[("trader" + (Game.player.trader + 1).toString())].addEventListener(MouseEvent.MOUSE_OVER, OnOverTrader, false, 0, true);
this[("trader" + (Game.player.trader + 1).toString())].addEventListener(MouseEvent.MOUSE_OUT, OnOutTrader, false, 0, true);
this[("trader" + (Game.player.trader + 1).toString())].buttonMode = true;
};
};
e++;
};
exp_text.text = int(Game.player.exp).toString();
point_text.text = points.toString();
ship_name_text.text = Game.settingsxml.Ships.Ship[Game.player.level].@shipname;
progress_text.text = (((Number((Game.player.questnumber - 1)) / 8) * 100).toString() + "%");
}
public function OnOverTrader(_arg1:MouseEvent){
trace(_arg1.currentTarget);
PerkIcon(_arg1.currentTarget).filters = [new GlowFilter(0xFFFFFF, 1, 5, 5, 2, 2, true, false)];
addChild(PerkIcon(_arg1.currentTarget));
(_arg1.currentTarget as PerkIcon).tooltip.y = -20;
(_arg1.currentTarget as PerkIcon).tooltip.tooltip.text = "Gold +10%";
}
public function OnTrader(_arg1:MouseEvent){
trace("trade");
e = 1;
while (e < 6) {
this[("authority" + e.toString())].buttonMode = false;
this[("bombardier" + e.toString())].buttonMode = false;
this[("trader" + e.toString())].buttonMode = false;
this[("authority" + e.toString())].removeEventListener(MouseEvent.CLICK, OnAuthority);
this[("bombardier" + e.toString())].removeEventListener(MouseEvent.CLICK, OnBombardier);
this[("trader" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTrader);
e++;
};
Game.player.trader = (Game.player.trader + 1);
UpdatePerks();
SoundManager.PlayOnce("Buy");
}
public function OnOutBombardier(_arg1:MouseEvent){
trace(_arg1.currentTarget);
PerkIcon(_arg1.currentTarget).tooltip.y = -30000;
PerkIcon(_arg1.currentTarget).filters = [];
}
}
}//package
Section 288
//PerkIcon (PerkIcon)
package {
import flash.display.*;
public dynamic class PerkIcon extends MovieClip {
public var tooltip:TooltipSymbol;
public function PerkIcon(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 289
//PerkTutorial (PerkTutorial)
package {
import flash.events.*;
import flash.display.*;
public class PerkTutorial extends MovieClip {
public var icon:PerkIcon;
public var tooltip:TooltipSymbol;
public var continuebutton:ShopButton;
public function PerkTutorial(){
addFrameScript(0, frame1);
continuebutton.addEventListener(MouseEvent.CLICK, OnContinue, false, 0, true);
icon.gotoAndStop(1);
}
function frame1(){
stop();
}
public function OnContinue(_arg1:MouseEvent){
if (this.currentFrame != 2){
gotoAndStop((this.currentFrame + 1));
} else {
parent.removeChild(this);
Game.player.showperktutorial = false;
};
}
}
}//package
Section 290
//PlayerShip (PlayerShip)
package {
import Box2D.Common.Math.*;
import Box2D.Common.*;
import flash.geom.*;
import flash.filters.*;
public class PlayerShip extends Ship {
public var dragPoint:Point;
public var backtrace:WaterBackTrace;
public var arrow:ShotArrow;
public var speedx:Number;// = 0
public var speedy:Number;// = 0
var hittimecounter:Number;// = 0
public var targetpoint:Point;
private var mat:Array;
public var teamctr:Number;// = 0
private var e;
public var forwardtrace:WaterForwardTrace;
public var nearestenemy:NearestEnemy;
private var infobar:Stripe;
public var arrowlength:Number;// = 0
public var arrowangle:Number;// = 0
var filter:ColorMatrixFilter;
public var beginDrag:Boolean;// = false
public function PlayerShip(){
mat = [1, 0, 0, 0, 0, 0, 0.33, 0, 0, 0, 0, 0, 0.33, 0, 0, 0, 0, 0, 1, 0];
filter = new ColorMatrixFilter(mat);
forwardtrace = new WaterForwardTrace();
backtrace = new WaterBackTrace();
infobar = new Stripe();
nearestenemy = new NearestEnemy();
targetpoint = new Point(-1, -1);
dragPoint = new Point();
arrow = new ShotArrow();
super();
try {
arrow.filters = [filter];
Game.player.update();
bboxwidth = Game.settingsxml.Common.@bboxwidth;
bboxheight = Game.settingsxml.Common.@bboxheight;
maxspeed = Game.player.speed;
steerspeed = Game.player.steering;
shotspeed = 45;
shotdamage = Game.player.damage;
shotrange = Game.player.range;
reload = Game.player.reload;
maxcores = Game.player.cannons;
cores = maxcores;
maxhp = Game.player.armor;
hp = maxhp;
team = Game.player.team;
teamctr = team;
addChild(nearestenemy);
addChild(forwardtrace);
forwardtrace.y = (forwardtrace.y + 5);
addChild(backtrace);
backtrace.y = (backtrace.y + 5);
addChild(arrow);
addChild(shipclip);
addChild(infobar);
infobar.y = (infobar.y - 18);
name = "playership";
mouseChildren = false;
arrow.mouseEnabled = false;
arrow.visible = false;
} catch(e:Error) {
};
}
override public function Accelerate(_arg1:Number){
if ((parent as LevelHolder).boarding == true){
return;
};
if ((((speed >= 0)) && ((speed <= maxspeed)))){
speed = (speed + (_arg1 * accel));
} else {
if (speed > maxspeed){
speed = maxspeed;
} else {
speed = 0;
};
};
UpdateBodySpeed();
}
public function DamageTeam(){
if (Game.player.authority != 4){
teamctr = (teamctr - (0.6 - (0.1 * Game.player.authority)));
} else {
teamctr = (teamctr - 0.1);
};
team = int(teamctr);
}
override public function Damage(_arg1:Number){
hp = (hp - _arg1);
if (hp <= 0){
(hp == 0);
};
if ((parent is LevelHolderSurvival)){
LevelSurvival.level.gui.SetHP(hp);
trace("Level Survival damage");
} else {
if ((parent is LevelHolder)){
Level.level.gui.SetHP(hp);
trace("Level damage");
};
};
if ((((hp <= 0)) || ((team <= 0)))){
if ((parent is LevelHolderSurvival)){
LevelSurvival.level.SetGameState(LevelSurvival.level.GAMEOVER);
SoundManager.PlayOnce("Boom");
} else {
if ((parent is LevelHolder)){
Level.level.SetGameState(Level.level.GAMEOVER);
SoundManager.PlayOnce("Boom");
};
};
return;
};
}
private function AngleDiff(_arg1:Number, _arg2:Number):Number{
var _local3:Number = _arg1;
while (_local3 < 0) {
_local3 = (_local3 + 360);
};
var _local4:Number = _arg2;
while (_local4 < 0) {
_local4 = (_local4 + 360);
};
return (Math.abs((_local4 - _local3)));
}
public function PowerBreak(_arg1:Number){
if (speed >= 7){
speed = (speed - (_arg1 * slow));
} else {
speed = 7;
};
UpdateBodySpeed();
}
public function UpdateBodySpeed(){
var _local1:Number = Math.cos(((angle * Math.PI) / 180));
var _local2:Number = Math.sin(((angle * Math.PI) / 180));
var _local3:Number = ((xdir * _local1) - (ydir * _local2));
var _local4:Number = ((xdir * _local2) + (ydir * _local1));
speedx = (speed * _local3);
speedy = (speed * _local4);
forwardtrace.rotation = angle;
backtrace.rotation = angle;
}
override public function Break(_arg1:Number){
if (speed >= 0){
speed = (speed - (_arg1 * slow));
} else {
speed = 0;
};
UpdateBodySpeed();
}
override public function Update(_arg1:Number){
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:*;
var _local19:*;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
if ((((targetpoint.x == -1)) && ((targetpoint.y == -1)))){
targetpoint.x = this.x;
targetpoint.y = (this.y - 120);
};
infobar.hp_text.text = int(hp).toString();
infobar.team_text.text = int(team).toString();
var _local2:Number = Math.cos(((angle * Math.PI) / 180));
var _local3:Number = Math.sin(((angle * Math.PI) / 180));
var _local4:Number = ((xdir * _local2) - (ydir * _local3));
var _local5:Number = ((xdir * _local3) + (ydir * _local2));
var _local6:Number = ((_local4 * speed) * _arg1);
var _local7:Number = ((_local5 * speed) * _arg1);
speeddir.x = _local6;
speeddir.y = _local7;
forwardtrace.alpha = (Math.abs(speed) / Math.abs(maxspeed));
backtrace.alpha = (Math.abs(speed) / Math.abs(maxspeed));
var _local8:EnemyShip = (parent as LevelHolder).GetNearestEnemy(this.x, this.y);
if (_local8 != null){
_local10 = (_local8.x - this.x);
_local11 = (_local8.y - this.y);
_local12 = Math.atan2(_local11, _local10);
nearestenemy.visible = true;
nearestenemy.rotation = (Number(((_local12 * 180) / Math.PI)) + 90);
} else {
nearestenemy.visible = false;
};
this.rotation = angle;
angle = this.rotation;
if (angle >= 0){
angle = (angle - 360);
};
var _local9:* = 0;
while (_local9 < 32) {
_local13 = (-11.25 * _local9);
_local14 = (_local13 + 5.625);
_local15 = (_local13 - 5.625);
if ((((angle >= _local15)) && ((angle < _local14)))){
if ((((Math.abs((angle - _local15)) >= 2)) && ((Math.abs((angle - _local14)) >= 2)))){
shipclip.gotoAndStop(((((Game.player.ship - 1) * 32) + _local9) + 1));
dir = (_local9 + 1);
};
};
_local9++;
};
this.rotation = 0;
if (parent){
if ((parent as LevelHolder).boarding == true){
PowerBreak(_arg1);
};
if (cores < maxcores){
reloadcounter = (reloadcounter + _arg1);
if (reloadcounter >= reload){
reloadcounter = 0;
cores++;
Level.level.gui.SetCores(cores);
};
} else {
reloadcounter = 0;
};
cannonreloadcounter = (cannonreloadcounter + _arg1);
if (beginDrag == true){
_local16 = Math.sqrt((Math.pow((dragPoint.x - this.x), 2) + Math.pow((dragPoint.y - this.y), 2)));
_local12 = Math.atan2((dragPoint.y - this.y), (dragPoint.x - this.x));
_local12 = (((_local12 * 180) / Math.PI) + 90);
arrowangle = _local12;
arrow.rotation = 0;
arrow.width = _local16;
arrow.rotation = (arrowangle - 90);
if (_local16 <= shotrange){
arrow.visible = true;
if (AngleDiff(arrowangle, (angle + 90)) <= 27){
FireDrag(dragPoint, _arg1);
arrow.filters = [];
} else {
if (AngleDiff(arrowangle, (angle - 90)) <= 27){
FireDrag(dragPoint, _arg1);
arrow.filters = [];
} else {
arrow.filters = [filter];
};
};
} else {
arrow.filters = [filter];
};
} else {
arrow.visible = false;
};
};
if (targetpoint.x != -1){
_local17 = Math.sqrt((Math.pow((targetpoint.x - this.x), 2) + Math.pow((targetpoint.y - this.y), 2)));
if (_local17 > 60){
Accelerate(_arg1);
};
if (_local17 < 40){
Break(_arg1);
};
_local18 = targetpoint.x;
_local19 = targetpoint.y;
_local20 = (_local6 * 10);
_local21 = (_local7 * 10);
_local22 = (_local18 - this.x);
_local23 = (_local19 - this.y);
_local24 = ((_local22 * _local21) - (_local23 * _local20));
if (speed >= 5){
if (_local24 < 0){
SteerRight(_arg1);
} else {
SteerLeft(_arg1);
};
};
};
angle = (body.GetAngle() * (180 / Math.PI));
UpdateBodySpeed();
}
override public function SteerRight(_arg1:Number){
forwardtrace.rotation = angle;
backtrace.rotation = angle;
body.SetAngularVelocity((0.02 * steerspeed));
UpdateBodySpeed();
}
public function SetSpeed(_arg1:Number){
speed = 0;
}
public function FireDrag(_arg1:Point, _arg2:Number){
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Boolean;
var _local16:Number;
if ((parent as LevelHolder).boarding == true){
return;
};
if ((((cores > 0)) && ((cannonreloadcounter >= cannonreload)))){
cannonreloadcounter = 0;
_local3 = Math.sqrt((Math.pow((_arg1.x - this.x), 2) + Math.pow((_arg1.y - this.y), 2)));
if (_local3 >= shotrange){
arrow.visible = false;
return;
};
_local4 = Math.cos(((angle * Math.PI) / 180));
_local5 = Math.sin(((angle * Math.PI) / 180));
_local6 = ((xdir * _local4) - (ydir * _local5));
_local7 = ((xdir * _local5) + (ydir * _local4));
_local8 = ((Math.random() * 60) - 30);
_local9 = (((xdir * _local4) - (_local8 * _local5)) + this.x);
_local10 = (((xdir * _local5) + (_local8 * _local4)) + this.y);
_local11 = (_local6 * 10);
_local12 = (_local7 * 10);
_local13 = (_arg1.x - this.x);
_local14 = (_arg1.y - this.y);
_local15 = false;
_local16 = ((_local13 * _local12) - (_local14 * _local11));
if (_local16 <= 0){
_local15 = false;
} else {
_local15 = true;
};
if (_local15){
if ((dir + 8) <= 32){
(parent as LevelHolder).AddShot(_local9, _local10, (dir + 8));
} else {
(parent as LevelHolder).AddShot(_local9, _local10, ((dir + 8) - 32));
};
(parent as LevelHolder).AddCore(this, _local9, _local10, arrowangle, shotspeed, shotdamage, _local3);
} else {
if ((dir - 8) > 0){
(parent as LevelHolder).AddShot(_local9, _local10, (dir - 8));
} else {
(parent as LevelHolder).AddShot(_local9, _local10, ((dir - 8) + 32));
};
(parent as LevelHolder).AddCore(this, _local9, _local10, arrowangle, shotspeed, shotdamage, _local3);
};
cores--;
SoundManager.PlayOnce("Shot");
if (Level.level != null){
Level.level.gui.SetCores(cores);
};
if (LevelSurvival.level != null){
LevelSurvival.level.gui.SetCores(cores);
};
};
}
override public function SteerLeft(_arg1:Number){
forwardtrace.rotation = angle;
backtrace.rotation = angle;
body.SetAngularVelocity((-0.02 * steerspeed));
UpdateBodySpeed();
}
}
}//package
Section 291
//ProfitDialog (ProfitDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class ProfitDialog extends MovieClip {
public var city_text:TextField;
public var yes_button:MapButton;
public function ProfitDialog(){
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
if (parent){
(parent as City).UpdateDialog();
parent.removeChild(this);
};
}
}
}//package
Section 292
//Rock1 (Rock1)
package {
import flash.display.*;
public dynamic class Rock1 extends MovieClip {
}
}//package
Section 293
//Rock2 (Rock2)
package {
import flash.display.*;
public dynamic class Rock2 extends MovieClip {
}
}//package
Section 294
//RumDialog (RumDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class RumDialog extends MovieClip {
public var no_button:MapButton;
public var city_text:TextField;
public var yes_button:MapButton;
public function RumDialog(){
yes_button.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
no_button.addEventListener(MouseEvent.CLICK, OnNo, false, 0, true);
}
public function OnYes(_arg1:MouseEvent){
var _local2:MessageDialog;
SoundManager.PlayOnce("Buy");
if (parent){
_local2 = new MessageDialog();
if (Math.random() <= Number(Game.settingsxml.Tavern.Rum.@random)){
Game.player.gold = (Game.player.gold - Game.settingsxml.Tavern.Rum.@cost);
City(parent.parent).UpdateDialog();
Game.player.authbonus = true;
_local2.message_text.text = "You've got some authority bonus.";
} else {
Game.player.gold = (Game.player.gold - Game.settingsxml.Tavern.Rum.@cost);
City(parent.parent).UpdateDialog();
Game.player.authbonus = false;
_local2.message_text.text = "Your money lost. All you've got is only headache.";
};
parent.addChild(_local2);
Tavern(parent).DisableRum();
parent.removeChild(this);
};
}
public function OnNo(_arg1:MouseEvent){
SoundManager.PlayOnce("Click");
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 295
//ScrollArrowDown_disabledSkin (ScrollArrowDown_disabledSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_disabledSkin extends MovieClip {
}
}//package
Section 296
//ScrollArrowDown_downSkin (ScrollArrowDown_downSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_downSkin extends MovieClip {
}
}//package
Section 297
//ScrollArrowDown_overSkin (ScrollArrowDown_overSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_overSkin extends MovieClip {
}
}//package
Section 298
//ScrollArrowDown_upSkin (ScrollArrowDown_upSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_upSkin extends MovieClip {
}
}//package
Section 299
//ScrollArrowUp_disabledSkin (ScrollArrowUp_disabledSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_disabledSkin extends MovieClip {
}
}//package
Section 300
//ScrollArrowUp_downSkin (ScrollArrowUp_downSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_downSkin extends MovieClip {
}
}//package
Section 301
//ScrollArrowUp_overSkin (ScrollArrowUp_overSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_overSkin extends MovieClip {
}
}//package
Section 302
//ScrollArrowUp_upSkin (ScrollArrowUp_upSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_upSkin extends MovieClip {
}
}//package
Section 303
//ScrollBar_thumbIcon (ScrollBar_thumbIcon)
package {
import flash.display.*;
public dynamic class ScrollBar_thumbIcon extends MovieClip {
}
}//package
Section 304
//ScrollThumb_downSkin (ScrollThumb_downSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_downSkin extends MovieClip {
}
}//package
Section 305
//ScrollThumb_overSkin (ScrollThumb_overSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_overSkin extends MovieClip {
}
}//package
Section 306
//ScrollThumb_upSkin (ScrollThumb_upSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_upSkin extends MovieClip {
}
}//package
Section 307
//ScrollTrack_skin (ScrollTrack_skin)
package {
import flash.display.*;
public dynamic class ScrollTrack_skin extends MovieClip {
}
}//package
Section 308
//sfxBell (sfxBell)
package {
import flash.media.*;
public dynamic class sfxBell extends Sound {
}
}//package
Section 309
//sfxBounce (sfxBounce)
package {
import flash.media.*;
public dynamic class sfxBounce extends Sound {
}
}//package
Section 310
//Ship (Ship)
package {
import flash.display.*;
import Box2D.Dynamics.*;
import flash.geom.*;
public class Ship extends MovieClip {
public var slow:Number;// = 12
public var shotrange:Number;// = 150
public var hp:Number;// = 100
public var shipclip:ShipClip;
public var shotspeed:Number;// = 60
public var dir:int;// = 1
public var xdir:Number;// = 0
public var steerspeed:Number;// = 36
public var bboxheight:Number;// = 0
public var reload:Number;// = 0.5
public var cannons:Number;// = 3
public var body:b2Body;// = null
public var bodydef:b2BodyDef;// = null
public var cores:int;// = 60
public var bboxwidth:Number;// = 0
public var reloadcounter:Number;// = 0
public var speed:Number;// = 0
public var angle:Number;// = 0
public var cannonreload:Number;// = 0.25
public var maxcores:int;// = 60
public var team:Number;// = 50
public var bboxarray:Array;
public var maxspeed:Number;// = 30
private var e;
public var cannonreloadcounter:Number;// = 0
public var shotdamage:Number;// = 5
public var maxhp:Number;// = 100
public var speeddir:Point;
public var accel:Number;// = 16
public var ydir:Number;// = -1
public function Ship(){
shipclip = new ShipClip();
speeddir = new Point(0, 0);
bboxarray = new Array();
super();
bboxwidth = 50;
bboxheight = 50;
addChild(shipclip);
}
public function Damage(_arg1:Number){
}
public function GetMoveVector():Point{
return (speeddir);
}
public function GetAngle():Number{
return (angle);
}
public function SteerLeft(_arg1:Number){
angle = (angle - (_arg1 * steerspeed));
}
public function SteerRight(_arg1:Number){
angle = (angle + (_arg1 * steerspeed));
}
public function Break(_arg1:Number){
if (Math.abs(speed) >= 0){
speed = (speed - (_arg1 * slow));
} else {
speed = 0;
};
}
public function Update(_arg1:Number){
var _local10:Number;
var _local11:Number;
var _local2:Number = Math.cos(((angle * Math.PI) / 180));
var _local3:Number = Math.sin(((angle * Math.PI) / 180));
var _local4:Number = ((xdir * _local2) - (ydir * _local3));
var _local5:Number = ((xdir * _local3) + (ydir * _local2));
var _local6:Number = ((_local4 * speed) * _arg1);
var _local7:Number = ((_local5 * speed) * _arg1);
this.rotation = angle;
var _local8 = 1;
var _local9:int;
while (_local9 <= 32) {
_local10 = (-2.8125 - ((2.8125 * 4) * _local9));
_local11 = (-2.8125 - ((2.8125 * 4) * (_local9 + 1)));
if ((((((this.rotation < 0)) && ((this.rotation <= _local10)))) && ((this.rotation > _local11)))){
_local8 = _local9;
shipclip.gotoAndStop(_local8);
};
if ((((((this.rotation >= 0)) && ((this.rotation >= -(_local10))))) && ((this.rotation < -(_local11))))){
_local8 = (32 - _local9);
shipclip.gotoAndStop(_local8);
};
_local9++;
};
this.rotation = 0;
this.x = (this.x + _local6);
this.y = (this.y + _local7);
speeddir.x = _local6;
speeddir.y = _local7;
}
public function Fire(_arg1:Number){
}
public function Accelerate(_arg1:Number){
if (Math.abs(speed) <= 10){
speed = (speed + (_arg1 * accel));
} else {
speed = 10;
};
}
}
}//package
Section 311
//ShipClip (ShipClip)
package {
import flash.display.*;
public dynamic class ShipClip extends MovieClip {
public function ShipClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 312
//ShipIcon (ShipIcon)
package {
import flash.display.*;
public dynamic class ShipIcon extends MovieClip {
public function ShipIcon(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 313
//ShipStoreItem (ShipStoreItem)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class ShipStoreItem extends MovieClip {
public const ON_BUTTON:int = 0;
public const OFF_BUTTON:int = 1;
public var index:int;// = -1
public var ship_icon:ShipIcon;
private var buttonstate:int;// = 0
public var name_text:TextField;
public var speed_text:TextField;
public var cost_text:TextField;
public var armor_text:TextField;
public var steering_text:TextField;
public function ShipStoreItem(){
addFrameScript(0, frame1);
addEventListener(MouseEvent.MOUSE_OVER, OnOver, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, OnOut, false, 0, true);
addEventListener(MouseEvent.CLICK, OnClick, false, 0, true);
buttonMode = true;
}
public function OnClick(_arg1:MouseEvent){
(parent as Shipyard).ShowBuyShipDialog(index);
SoundManager.PlayOnce("Click");
}
public function OnOut(_arg1:MouseEvent){
if (buttonstate == ON_BUTTON){
gotoAndStop("on");
} else {
gotoAndStop("off");
};
}
public function SetState(_arg1:int){
if (buttonstate != _arg1){
buttonstate = _arg1;
if (buttonstate == OFF_BUTTON){
gotoAndStop("off");
} else {
gotoAndStop("on");
};
};
}
public function OnOver(_arg1:MouseEvent){
if (buttonstate == ON_BUTTON){
gotoAndStop("over");
} else {
gotoAndStop("off");
};
}
function frame1(){
stop();
}
}
}//package
Section 314
//Shipyard (Shipyard)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import mochi.as3.*;
import flash.xml.*;
public class Shipyard extends MovieClip {
public var item3:ShipStoreItem;
public var item4:ShipStoreItem;
public var item5:ShipStoreItem;
public var page1_button:ShopButton;
private var page:int;// = 1
private var dlg:BuyShipDialog;
public var dialog_name:TextField;
private var e;
public var page2_button:ShopButton;
public var item1:ShipStoreItem;
public var item2:ShipStoreItem;
public static var shipyard:Shipyard = null;
public function Shipyard(){
dlg = new BuyShipDialog();
super();
shipyard = this;
try {
addEventListener("BuyShipEvent", OnBuy, false, 0, true);
page1_button.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SetPage(1);
SoundManager.PlayOnce("Click");
});
page2_button.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent){
SetPage(2);
SoundManager.PlayOnce("Click");
});
e = 0;
while (e < 5) {
this[("item" + (e + 1).toString())].cost_text.mouseEnabled = false;
this[("item" + (e + 1).toString())].speed_text.mouseEnabled = false;
this[("item" + (e + 1).toString())].steering_text.mouseEnabled = false;
this[("item" + (e + 1).toString())].armor_text.mouseEnabled = false;
e++;
};
SetPage(1);
} catch(e:Error) {
};
}
public function OnBuy(_arg1:BuyShipEvent){
removeChild(dlg);
if (_arg1.index != -1){
if (Game.player.gold >= Game.settingsxml.Ships.Ship[_arg1.index].@cost){
Game.player.gold = (Game.player.gold - Game.settingsxml.Ships.Ship[_arg1.index].@cost);
Game.player.ship = (_arg1.index + 1);
Game.player.speed = Game.settingsxml.Ships.Ship[_arg1.index].@speed;
Game.player.steering = Game.settingsxml.Ships.Ship[_arg1.index].@steering;
Game.player.armor = Game.settingsxml.Ships.Ship[_arg1.index].@armor;
Game.player.team = Game.settingsxml.Ships.Ship[_arg1.index].@team;
Game.player.damage = Game.settingsxml.Ships.Ship[_arg1.index].@damage;
Game.player.reload = Game.settingsxml.Ships.Ship[_arg1.index].@reload;
Game.player.range = Game.settingsxml.Ships.Ship[_arg1.index].@range;
Game.player.cannons = Game.settingsxml.Ships.Ship[_arg1.index].@cannons;
Game.player.damage_upg = int(0);
Game.player.cannons_upg = int(0);
Game.player.team_upg = int(0);
Game.player.reload_upg = int(0);
Game.player.speed_upg = int(0);
Game.player.armor_upg = int(0);
Game.player.steering_upg = int(0);
Game.player.cannondamage = int(0);
Game.player.update();
SetPage(1);
(parent as City).UpdateDialog();
if (_arg1.index == 9){
Game.player.bestship = true;
GlobalData.bestship = true;
};
};
};
}
public function Update(_arg1:int){
SelectShip(_arg1);
SetPage(2);
}
public function ShowBuyShipDialog(_arg1:int){
if (_arg1 <= 5){
dlg.index = _arg1;
addChild(dlg);
} else {
if (_arg1 == 6){
if (GlobalData.shipowned7 == true){
SelectShip(_arg1);
} else {
MochiCoins.showStore({tags:["ships"]});
};
};
if (_arg1 == 7){
if (GlobalData.shipowned8 == true){
SelectShip(_arg1);
} else {
MochiCoins.showStore({tags:["ships"]});
};
};
if (_arg1 == 8){
if (GlobalData.shipowned9 == true){
SelectShip(_arg1);
} else {
MochiCoins.showStore({tags:["ships"]});
};
};
if (_arg1 == 9){
if (GlobalData.shipowned10 == true){
SelectShip(_arg1);
} else {
MochiCoins.showStore({tags:["ships"]});
};
};
};
}
public function SetPage(_arg1:int){
page = _arg1;
if (page == 1){
e = 0;
while (e < 5) {
this[("item" + (e + 1).toString())].ship_icon.gotoAndStop(Game.settingsxml.Ships.Ship[e].@id);
this[("item" + (e + 1).toString())].name_text.text = Game.settingsxml.Ships.Ship[e].@shipname.toString();
this[("item" + (e + 1).toString())].cost_text.text = ("Cost: " + Game.settingsxml.Ships.Ship[e].@cost);
this[("item" + (e + 1).toString())].speed_text.text = ("Speed: " + Game.settingsxml.Ships.Ship[e].@speed);
this[("item" + (e + 1).toString())].armor_text.text = ("Armor: " + Game.settingsxml.Ships.Ship[e].@armor);
this[("item" + (e + 1).toString())].steering_text.text = ("Steering: " + Game.settingsxml.Ships.Ship[e].@steering);
this[("item" + (e + 1).toString())].index = e;
if (int(Game.settingsxml.Ships.Ship[e].@cost) > Game.player.gold){
this[("item" + (e + 1).toString())].SetState(1);
this[("item" + (e + 1).toString())].mouseEnabled = false;
} else {
this[("item" + (e + 1).toString())].SetState(0);
this[("item" + (e + 1).toString())].mouseEnabled = true;
};
if (Game.settingsxml.Ships.Ship[e].@id == Game.player.ship){
this[("item" + (e + 1).toString())].cost_text.text = "This is your ship";
this[("item" + (e + 1).toString())].SetState(1);
this[("item" + (e + 1).toString())].mouseEnabled = false;
};
e++;
};
} else {
if (page == 2){
e = 5;
while (e < Game.settingsxml.Ships.Ship.length()) {
this[("item" + (e - 4).toString())].ship_icon.gotoAndStop(Game.settingsxml.Ships.Ship[e].@id);
this[("item" + (e - 4).toString())].name_text.text = Game.settingsxml.Ships.Ship[e].@shipname.toString();
this[("item" + (e - 4).toString())].cost_text.text = ("Cost: " + Game.settingsxml.Ships.Ship[e].@cost);
this[("item" + (e - 4).toString())].speed_text.text = ("Speed: " + Game.settingsxml.Ships.Ship[e].@speed);
this[("item" + (e - 4).toString())].armor_text.text = ("Armor: " + Game.settingsxml.Ships.Ship[e].@armor);
this[("item" + (e - 4).toString())].steering_text.text = ("Steering: " + Game.settingsxml.Ships.Ship[e].@steering);
this[("item" + (e - 4).toString())].index = e;
if (Game.settingsxml.Ships.Ship[e].@cost == "Mochi coins"){
this[("item" + (e - 4).toString())].SetState(0);
this[("item" + (e - 4).toString())].mouseEnabled = true;
if ((((e == 6)) && ((GlobalData.shipowned7 == true)))){
this[("item" + (e - 4).toString())].cost_text.text = "Owned";
};
if ((((e == 7)) && ((GlobalData.shipowned8 == true)))){
this[("item" + (e - 4).toString())].cost_text.text = "Owned";
};
if ((((e == 8)) && ((GlobalData.shipowned9 == true)))){
this[("item" + (e - 4).toString())].cost_text.text = "Owned";
};
if ((((e == 9)) && ((GlobalData.shipowned10 == true)))){
this[("item" + (e - 4).toString())].cost_text.text = "Owned";
};
} else {
if (int(Game.settingsxml.Ships.Ship[e].@cost) > Game.player.gold){
this[("item" + (e - 4).toString())].SetState(1);
this[("item" + (e - 4).toString())].mouseEnabled = false;
} else {
this[("item" + (e - 4).toString())].SetState(0);
this[("item" + (e - 4).toString())].mouseEnabled = true;
};
};
if (Game.settingsxml.Ships.Ship[e].@id == Game.player.ship){
this[("item" + (e - 4).toString())].cost_text.text = "This is your ship";
this[("item" + (e - 4).toString())].SetState(1);
this[("item" + (e - 4).toString())].mouseEnabled = false;
};
e++;
};
};
};
}
public function SelectShip(_arg1:int){
Game.player.ship = (_arg1 + 1);
Game.player.speed = Game.settingsxml.Ships.Ship[_arg1].@speed;
Game.player.steering = Game.settingsxml.Ships.Ship[_arg1].@steering;
Game.player.armor = Game.settingsxml.Ships.Ship[_arg1].@armor;
Game.player.team = Game.settingsxml.Ships.Ship[_arg1].@team;
Game.player.damage = Game.settingsxml.Ships.Ship[_arg1].@damage;
Game.player.reload = Game.settingsxml.Ships.Ship[_arg1].@reload;
Game.player.range = Game.settingsxml.Ships.Ship[_arg1].@range;
Game.player.cannons = Game.settingsxml.Ships.Ship[_arg1].@cannons;
Game.player.update();
SetPage(2);
(parent as City).UpdateDialog();
if (_arg1 == 9){
Game.player.bestship = true;
GlobalData.bestship = true;
};
}
}
}//package
Section 315
//ShipyardTutorial (ShipyardTutorial)
package {
import flash.events.*;
import flash.display.*;
public class ShipyardTutorial extends MovieClip {
public var continuebutton:ShopButton;
public function ShipyardTutorial(){
addFrameScript(0, frame1);
continuebutton.addEventListener(MouseEvent.CLICK, OnContinue, false, 0, true);
}
function frame1(){
stop();
}
public function OnContinue(_arg1:MouseEvent){
if (this.currentFrame != 1){
gotoAndStop((this.currentFrame + 1));
} else {
parent.removeChild(this);
Game.player.showshipyardtutorial = false;
};
}
}
}//package
Section 316
//ShopButton (ShopButton)
package {
import flash.display.*;
public dynamic class ShopButton extends SimpleButton {
}
}//package
Section 317
//ShotArrow (ShotArrow)
package {
import flash.display.*;
public dynamic class ShotArrow extends MovieClip {
}
}//package
Section 318
//ShotSound (ShotSound)
package {
import flash.media.*;
public dynamic class ShotSound extends Sound {
}
}//package
Section 319
//Smoke (Smoke)
package {
import flash.display.*;
public dynamic class Smoke extends MovieClip {
public function Smoke(){
addFrameScript(35, frame36, 71, frame72, 107, frame108, 143, frame144, 179, frame180, 215, frame216, 251, frame252, 287, frame288, 323, frame324, 359, frame360, 395, frame396, 431, frame432, 467, frame468, 503, frame504, 539, frame540, 575, frame576, 611, frame612, 647, frame648, 683, frame684, 719, frame720, 755, frame756, 791, frame792, 827, frame828, 863, frame864, 899, frame900, 935, frame936, 971, frame972, 1007, frame1008, 1044, frame1045, 1079, frame1080, 1115, frame1116, 1151, frame1152);
}
function frame252(){
if (parent){
parent.removeChild(this);
};
}
function frame396(){
if (parent){
parent.removeChild(this);
};
}
function frame1080(){
if (parent){
parent.removeChild(this);
};
}
function frame432(){
if (parent){
parent.removeChild(this);
};
}
function frame576(){
if (parent){
parent.removeChild(this);
};
}
function frame72(){
if (parent){
parent.removeChild(this);
};
}
function frame216(){
if (parent){
parent.removeChild(this);
};
}
function frame756(){
if (parent){
parent.removeChild(this);
};
}
function frame1045(){
if (parent){
parent.removeChild(this);
};
}
function frame972(){
if (parent){
parent.removeChild(this);
};
}
function frame936(){
if (parent){
parent.removeChild(this);
};
}
function frame36(){
if (parent){
parent.removeChild(this);
};
}
function frame612(){
if (parent){
parent.removeChild(this);
};
}
function frame792(){
if (parent){
parent.removeChild(this);
};
}
function frame1008(){
if (parent){
parent.removeChild(this);
};
}
function frame180(){
if (parent){
parent.removeChild(this);
};
}
function frame360(){
if (parent){
parent.removeChild(this);
};
}
function frame144(){
if (parent){
parent.removeChild(this);
};
}
function frame288(){
if (parent){
parent.removeChild(this);
};
}
function frame324(){
if (parent){
parent.removeChild(this);
};
}
function frame864(){
if (parent){
parent.removeChild(this);
};
}
function frame1152(){
if (parent){
parent.removeChild(this);
};
}
function frame540(){
if (parent){
parent.removeChild(this);
};
}
function frame108(){
if (parent){
parent.removeChild(this);
};
}
function frame648(){
if (parent){
parent.removeChild(this);
};
}
function frame720(){
if (parent){
parent.removeChild(this);
};
}
function frame468(){
if (parent){
parent.removeChild(this);
};
}
function frame828(){
if (parent){
parent.removeChild(this);
};
}
function frame1116(){
if (parent){
parent.removeChild(this);
};
}
function frame900(){
if (parent){
parent.removeChild(this);
};
}
function frame684(){
if (parent){
parent.removeChild(this);
};
}
function frame504(){
if (parent){
parent.removeChild(this);
};
}
}
}//package
Section 320
//SoundManager (SoundManager)
package {
import flash.display.*;
import flash.media.*;
import flash.system.*;
public class SoundManager extends MovieClip {
private static var sounds:Array = new Array();
private static var soundvolume:Number = 1;
private static var canplaysound:Boolean = false;
private static var channels:Array = new Array();
private static var SM:SoundManager;
public function SoundManager(){
addFrameScript(0, frame1);
SM = this;
if (((Capabilities.hasAudio) && (Capabilities.hasMP3))){
canplaysound = true;
};
sounds["Shot"] = new ShotSound();
sounds["Boom"] = new BoomSound();
sounds["Chest"] = new ChestSound();
sounds["Click"] = new ClickSound();
sounds["Buy"] = new BuySound();
sounds["MenuMusic"] = new MenuMusic();
sounds["MapTheme"] = new MapTheme();
sounds["LevelWin"] = new LevelWin();
sounds["Intro"] = new Intro();
sounds["Ingame1"] = new Ingame1();
sounds["City"] = new CityTheme();
sounds["GameOver"] = new GameOver();
sounds["GameWin"] = new GameWin();
sounds["Abborduer"] = new Abborduer();
}
function frame1(){
stop();
}
public static function FadeIn(_arg1:String, _arg2:String){
if (((((!(SM)) || ((soundvolume == 0)))) || (!(canplaysound)))){
return;
};
if (((!((channels[_arg1] == undefined))) && (!((channels[_arg1] == null))))){
channels[_arg1].FadeIn();
} else {
if (sounds[_arg2]){
channels[_arg1] = new Channel(sounds[_arg2]);
channels[_arg1].FadeIn();
};
};
}
public static function StopLoop(_arg1:String){
if (((((!(SM)) || ((soundvolume == 0)))) || (!(canplaysound)))){
return;
};
if (((!((channels[_arg1] == undefined))) && (!((channels[_arg1] == null))))){
channels[_arg1].StopLoop();
};
}
public static function StopSound(_arg1:String){
if (((((!(SM)) || ((soundvolume == 0)))) || (!(canplaysound)))){
return;
};
if (sounds[_arg1]){
sounds[_arg1].stop();
};
}
public static function PlayOnce(_arg1:String){
if (((((!(SM)) || ((soundvolume == 0)))) || (!(canplaysound)))){
return;
};
var _local2:SoundTransform = new SoundTransform();
_local2.volume = Number((soundvolume * 0.3));
_local2.pan = 0;
if (sounds[_arg1]){
sounds[_arg1].play(0, 0, _local2);
};
}
public static function PlayLoop(_arg1:String, _arg2:String){
if (((((!(SM)) || ((soundvolume == 0)))) || (!(canplaysound)))){
return;
};
var _local3:SoundTransform = new SoundTransform();
_local3.volume = Number((soundvolume * 0.5));
_local3.pan = 0;
if (channels[_arg1] != undefined){
if (channels[_arg1] != null){
return;
};
};
if (sounds[_arg2]){
channels[_arg1] = new Channel(sounds[_arg2]);
channels[_arg1].PlayLoop(_local3);
};
}
public static function FadeOut(_arg1:String){
if (((((!(SM)) || ((soundvolume == 0)))) || (!(canplaysound)))){
return;
};
if (((!((channels[_arg1] == undefined))) && (!((channels[_arg1] == null))))){
channels[_arg1].FadeOut();
};
}
public static function SetVolume(_arg1:int){
soundvolume = _arg1;
}
}
}//package
Section 321
//SoundMute (SoundMute)
package {
import flash.events.*;
import flash.display.*;
import flash.media.*;
public class SoundMute extends MovieClip {
var mute:Boolean;// = false
public function SoundMute(){
addFrameScript(0, frame1);
gotoAndStop("sound");
addEventListener(MouseEvent.CLICK, Switch, false, 0, true);
}
public function Switch(_arg1:MouseEvent){
if (mute == false){
gotoAndStop("mute");
mute = true;
SoundMixer.soundTransform = new SoundTransform(0);
} else {
gotoAndStop("sound");
mute = false;
SoundMixer.soundTransform = new SoundTransform(1);
};
}
function frame1(){
stop();
}
}
}//package
Section 322
//StorylineDialog (StorylineDialog)
package {
import flash.events.*;
import flash.display.*;
import fl.controls.*;
import flash.text.*;
public class StorylineDialog extends MovieClip {
public var __id0_:UIScrollBar;
public var proceed:ShopButton;
public var avatar:StorylinePortrait;
public var seaquest:Boolean;// = true
public var textbox:TextField;
public function StorylineDialog(){
proceed.addEventListener(MouseEvent.CLICK, OnYes, false, 0, true);
__setProp___id0__StorylineDialog_Layer1_0();
}
function __setProp___id0__StorylineDialog_Layer1_0(){
try {
__id0_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id0_.direction = "vertical";
__id0_.scrollTargetName = "textbox";
__id0_.visible = true;
try {
__id0_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
public function OnYes(_arg1:MouseEvent){
proceed.removeEventListener(MouseEvent.CLICK, OnYes);
if (parent){
if (seaquest == false){
Game.game.SetState(Game.game.CITY);
Game.player.questnumber++;
} else {
Game.game.SetState(Game.game.GAMEPLAY);
parent.removeChild(this);
};
};
}
}
}//package
Section 323
//StorylinePortrait (StorylinePortrait)
package {
import flash.display.*;
public dynamic class StorylinePortrait extends MovieClip {
public function StorylinePortrait(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 324
//Stripe (Stripe)
package {
import flash.display.*;
import flash.text.*;
public dynamic class Stripe extends MovieClip {
public var hp_text:TextField;
public var team_text:TextField;
}
}//package
Section 325
//SurvivalButton (SurvivalButton)
package {
import flash.display.*;
public dynamic class SurvivalButton extends SimpleButton {
}
}//package
Section 326
//Tavern (Tavern)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import mochi.as3.*;
import flash.filters.*;
import flash.xml.*;
public class Tavern extends MovieClip {
public var item3:TavernItem;
public var dialog_name:TextField;
private var e;
private var mat:Array;
var filter:ColorMatrixFilter;
public var item1:TavernItem;
public var item2:TavernItem;
public static var tavern:Tavern = null;
public function Tavern(){
mat = [0.33, 0, 0, 0, 0, 0, 0.33, 0, 0, 0, 0, 0, 0.33, 0, 0, 0, 0, 0, 1, 0];
filter = new ColorMatrixFilter(mat);
super();
tavern = this;
UpdateDialog();
}
public function Update(){
this["item3"].cost_text.text = (("Mochi Coins: now has " + GlobalData.player.companion) + " ships");
}
public function OnGoods(_arg1:MouseEvent){
var _local2:GoodsDialog = new GoodsDialog();
addChild(_local2);
}
public function DisableRum(){
this["item1"].ok_button.removeEventListener(MouseEvent.CLICK, OnRum);
this["item1"].ok_button.buttonMode = false;
this["item1"].ok_button.mouseEnabled = false;
this["item1"].ok_button.filters = [filter];
}
public function OnRum(_arg1:MouseEvent){
var _local2:RumDialog = new RumDialog();
addChild(_local2);
}
public function DisableGoods(){
this["item2"].ok_button.removeEventListener(MouseEvent.CLICK, OnGoods);
this["item2"].ok_button.buttonMode = false;
this["item2"].ok_button.mouseEnabled = false;
this["item2"].ok_button.filters = [filter];
}
public function UpdateDialog(){
this["item1"].ok_button.removeEventListener(MouseEvent.CLICK, OnRum);
this["item2"].ok_button.removeEventListener(MouseEvent.CLICK, OnGoods);
this["item3"].ok_button.removeEventListener(MouseEvent.CLICK, OnCompanion);
this["item1"].ok_button.buttonMode = false;
this["item2"].ok_button.buttonMode = false;
this["item3"].ok_button.buttonMode = false;
this["item1"].cost_text.mouseEnabled = false;
this["item1"].cost_text.text = ("Cost: " + Game.settingsxml.Tavern.Rum.@cost);
if (Game.settingsxml.Tavern.Rum.@cost <= Game.player.gold){
this["item1"].ok_button.addEventListener(MouseEvent.CLICK, OnRum, false, 0, true);
this["item1"].ok_button.buttonMode = true;
} else {
this["item1"].ok_button.buttonMode = false;
this["item1"].ok_button.mouseEnabled = false;
this["item1"].ok_button.filters = [filter];
};
this["item2"].cost_text.mouseEnabled = false;
this["item2"].cost_text.text = ("Cost: " + Game.settingsxml.Tavern.Goods.@cost);
if (Game.settingsxml.Tavern.Goods.@cost <= Game.player.gold){
this["item2"].ok_button.addEventListener(MouseEvent.CLICK, OnGoods, false, 0, true);
this["item2"].ok_button.buttonMode = true;
} else {
this["item2"].ok_button.buttonMode = false;
this["item2"].ok_button.mouseEnabled = false;
this["item2"].ok_button.filters = [filter];
};
this["item3"].cost_text.mouseEnabled = false;
this["item3"].cost_text.text = (("Mochi Coins: now has " + GlobalData.player.companion) + " ships");
this["item3"].ok_button.addEventListener(MouseEvent.CLICK, OnCompanion, false, 0, true);
this["item3"].ok_button.buttonMode = true;
}
public function OnCompanion(_arg1:MouseEvent){
MochiCoins.showStore({tags:["companion"]});
}
public function DisableCompanion(){
this["item3"].ok_button.removeEventListener(MouseEvent.CLICK, OnCompanion);
this["item3"].ok_button.buttonMode = false;
this["item3"].ok_button.mouseEnabled = false;
this["item3"].ok_button.filters = [filter];
}
}
}//package
Section 327
//TavernItem (TavernItem)
package {
import flash.display.*;
import flash.text.*;
public dynamic class TavernItem extends MovieClip {
public var ok_button:ShopButton;
public var cost_text:TextField;
public function TavernItem(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 328
//TeamMeter (TeamMeter)
package {
import flash.display.*;
public dynamic class TeamMeter extends MovieClip {
}
}//package
Section 329
//TextInput_disabledSkin (TextInput_disabledSkin)
package {
import flash.display.*;
public dynamic class TextInput_disabledSkin extends MovieClip {
}
}//package
Section 330
//TextInput_upSkin (TextInput_upSkin)
package {
import flash.display.*;
public dynamic class TextInput_upSkin extends MovieClip {
}
}//package
Section 331
//TooltipSymbol (TooltipSymbol)
package {
import flash.display.*;
import flash.text.*;
public dynamic class TooltipSymbol extends MovieClip {
public var tooltip:TextField;
}
}//package
Section 332
//Trash (Trash)
package {
import flash.events.*;
import flash.display.*;
import silin.bitmap.*;
public class Trash extends MovieClip {
public var livecounter:Number;// = 0
private var exlpBitmap:ExplosionBitmap;
public var alphacounter:Number;// = 0
public function Trash(){
exlpBitmap = new ExplosionBitmap(300, 300, ExplosionBitmap.EXPLOSION);
addChild(exlpBitmap);
exlpBitmap.x = -150;
exlpBitmap.y = -150;
exlpBitmap.clear();
exlpBitmap.totalCount = 1000;
exlpBitmap.perFrameCount = 34;
exlpBitmap.initRadius = 62;
exlpBitmap.initVelocity = 1;
exlpBitmap.energyDamp = 0.95;
exlpBitmap.wind = 0;
exlpBitmap.addExplosion(150, 150, true);
exlpBitmap.addEventListener(Event.COMPLETE, explCompleteHandler, false, 0, true);
}
private function explCompleteHandler(_arg1:Event):void{
removeChild(exlpBitmap);
}
public function Update(_arg1:Number){
if (livecounter <= 1){
livecounter = (livecounter + _arg1);
} else {
if (alphacounter <= 5){
alphacounter = (alphacounter + _arg1);
if ((1 - (alphacounter / 5)) >= 0){
this.alpha = (1 - (alphacounter / 5));
};
} else {
this.alpha = 0;
};
};
}
}
}//package
Section 333
//TriedToEscape (TriedToEscape)
package {
import flash.display.*;
import flash.text.*;
public dynamic class TriedToEscape extends MovieClip {
public var escapetxt:TextField;
}
}//package
Section 334
//Trophies (Trophies)
package {
import flash.events.*;
import flash.filters.*;
public class Trophies extends FadeSlider {
public var icon2:TrophyIcon2;
var redfilter:GlowFilter;
var greyfilter:ColorMatrixFilter;// = null
public var icon1:TrophyIcon1;
public var backbutton:ShopButton;
public var icon3:TrophyIcon3;
var bluefilter:GlowFilter;
public function Trophies(){
redfilter = new GlowFilter(0xFF0000, 1, 10, 10, 1.34, 2, true, false);
bluefilter = new GlowFilter(0xFF, 1, 10, 10, 1.34, 2, true, false);
super();
SetOut();
PlayFadeIn();
var _local1:Array = [0, 0, 0, 0, 63.5, 0, 0, 0, 0, 63.5, 0, 0, 0, 0, 63.5, 0, 0, 0, 1, 0];
greyfilter = new ColorMatrixFilter(_local1);
backbutton.addEventListener(MouseEvent.CLICK, OnBackToMenu, false, 0, true);
icon1.filters = [greyfilter];
icon2.filters = [greyfilter];
icon3.filters = [greyfilter];
if (Game.player.shipsdestroyed >= 100){
icon1.filters = [redfilter];
};
if (Game.player.completed == true){
icon2.filters = [bluefilter];
};
if ((((Game.player.bestship == true)) && ((Game.player.bestcannon == true)))){
icon3.filters = [];
};
}
public function OnBackToMenu(_arg1:MouseEvent){
backbutton.removeEventListener(MouseEvent.CLICK, OnBackToMenu);
Game.game.SetState(Game.game.MAINMENU);
}
}
}//package
Section 335
//TrophiesButton (TrophiesButton)
package {
import flash.display.*;
public dynamic class TrophiesButton extends SimpleButton {
}
}//package
Section 336
//TrophyIcon1 (TrophyIcon1)
package {
import flash.display.*;
public dynamic class TrophyIcon1 extends MovieClip {
}
}//package
Section 337
//TrophyIcon2 (TrophyIcon2)
package {
import flash.display.*;
public dynamic class TrophyIcon2 extends MovieClip {
}
}//package
Section 338
//TrophyIcon3 (TrophyIcon3)
package {
import flash.display.*;
public dynamic class TrophyIcon3 extends MovieClip {
}
}//package
Section 339
//Tutorial (Tutorial)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class Tutorial extends MovieClip {
public var ship_hp_text:TextField;
public var continuebutton:ShopButton;
public var ship_cores_text:TextField;
public function Tutorial(){
addFrameScript(0, frame1);
continuebutton.addEventListener(MouseEvent.CLICK, OnContinue, false, 0, true);
}
function frame1(){
stop();
}
public function OnContinue(_arg1:MouseEvent){
if (this.currentFrame != 7){
gotoAndStop((this.currentFrame + 1));
} else {
Level.level.SetGameState(Level.level.NORMAL);
Level.level.removeChild(this);
Game.player.showtutorial = false;
};
}
}
}//package
Section 340
//TutorialHP (TutorialHP)
package {
import flash.display.*;
public dynamic class TutorialHP extends MovieClip {
}
}//package
Section 341
//UpgradeDialog (UpgradeDialog)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class UpgradeDialog extends MovieClip {
public var reload4:UpgradeSymbol;
public var damage_text:TextField;
public var damage3:UpgradeSymbol;
public var reload_text:TextField;
public var damage1:UpgradeSymbol;
public var damage2:UpgradeSymbol;
public var speed_text:TextField;
public var ship_icon:ShipIcon;
public var gold_text:TextField;
public var armor_text:TextField;
public var damage5:UpgradeSymbol;
public var cannons_text:TextField;
public var reload2:UpgradeSymbol;
public var steering_text:TextField;
public var reload3:UpgradeSymbol;
public var reload5:UpgradeSymbol;
public var damage4:UpgradeSymbol;
public var speed2:UpgradeSymbol;
public var speed3:UpgradeSymbol;
public var speed4:UpgradeSymbol;
public var speed5:UpgradeSymbol;
public var team_text:TextField;
public var reload1:UpgradeSymbol;
public var speed1:UpgradeSymbol;
public var armor1:UpgradeSymbol;
public var armor2:UpgradeSymbol;
public var armor3:UpgradeSymbol;
public var armor4:UpgradeSymbol;
public var armor5:UpgradeSymbol;
public var cannons1:UpgradeSymbol;
public var cannons2:UpgradeSymbol;
public var cannons3:UpgradeSymbol;
public var cannons4:UpgradeSymbol;
public var cannons5:UpgradeSymbol;
public var steering1:UpgradeSymbol;
public var steering2:UpgradeSymbol;
public var steering3:UpgradeSymbol;
public var steering4:UpgradeSymbol;
private var e;
public var steering5:UpgradeSymbol;
public var team1:UpgradeSymbol;
public var team2:UpgradeSymbol;
public var team4:UpgradeSymbol;
public var ok_button:DialogButton;
public var team3:UpgradeSymbol;
public var team5:UpgradeSymbol;
public function UpgradeDialog(){
super();
try {
UpdateUpgrades();
ok_button.addEventListener(MouseEvent.CLICK, OnOk, false, 0, true);
ship_icon.gotoAndStop(Game.player.ship);
gold_text.text = Game.player.gold;
if (Game.player.showupgradetutorial == true){
addChild(new UpgradeTutorial());
};
} catch(e:Error) {
};
}
public function OnArmorClick(_arg1:MouseEvent){
trace("armor");
e = 1;
while (e < 6) {
this[("damage" + e.toString())].buttonMode = false;
this[("cannons" + e.toString())].buttonMode = false;
this[("team" + e.toString())].buttonMode = false;
this[("reload" + e.toString())].buttonMode = false;
this[("speed" + e.toString())].buttonMode = false;
this[("armor" + e.toString())].buttonMode = false;
this[("steering" + e.toString())].buttonMode = false;
this[("damage" + e.toString())].removeEventListener(MouseEvent.CLICK, OnDamageClick);
this[("cannons" + e.toString())].removeEventListener(MouseEvent.CLICK, OnCannonsClick);
this[("team" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTeamClick);
this[("reload" + e.toString())].removeEventListener(MouseEvent.CLICK, OnReloadClick);
this[("speed" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSpeedClick);
this[("armor" + e.toString())].removeEventListener(MouseEvent.CLICK, OnArmorClick);
this[("steering" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSteeringClick);
e++;
};
if (Game.player.gold >= Game.settingsxml..Armor.Level[Game.player.armor_upg].@gold){
Game.player.gold = (Game.player.gold - Game.settingsxml..Armor.Level[Game.player.armor_upg].@gold);
Game.player.armor_upg = (Game.player.armor_upg + 1);
UpdateUpgrades();
SoundManager.PlayOnce("Buy");
};
}
public function OnTeamClick(_arg1:MouseEvent){
trace("team");
e = 1;
while (e < 6) {
this[("damage" + e.toString())].buttonMode = false;
this[("cannons" + e.toString())].buttonMode = false;
this[("team" + e.toString())].buttonMode = false;
this[("reload" + e.toString())].buttonMode = false;
this[("speed" + e.toString())].buttonMode = false;
this[("armor" + e.toString())].buttonMode = false;
this[("steering" + e.toString())].buttonMode = false;
this[("damage" + e.toString())].removeEventListener(MouseEvent.CLICK, OnDamageClick);
this[("cannons" + e.toString())].removeEventListener(MouseEvent.CLICK, OnCannonsClick);
this[("team" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTeamClick);
this[("reload" + e.toString())].removeEventListener(MouseEvent.CLICK, OnReloadClick);
this[("speed" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSpeedClick);
this[("armor" + e.toString())].removeEventListener(MouseEvent.CLICK, OnArmorClick);
this[("steering" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSteeringClick);
e++;
};
if (Game.player.gold >= Game.settingsxml..Team.Level[Game.player.team_upg].@gold){
Game.player.gold = (Game.player.gold - Game.settingsxml..Team.Level[Game.player.team_upg].@gold);
Game.player.team_upg = (Game.player.team_upg + 1);
UpdateUpgrades();
SoundManager.PlayOnce("Buy");
};
}
public function OnOk(_arg1:MouseEvent){
ok_button.removeEventListener(MouseEvent.CLICK, OnOk);
if ((parent is LevelMap)){
SoundManager.PlayOnce("Click");
(parent as LevelMap).update = true;
(parent as LevelMap).UpdateGUI();
parent.removeChild(this);
} else {
SoundManager.PlayOnce("Click");
(parent as LevelSurvival).Pause();
parent.removeChild(this);
};
}
public function OnSteeringClick(_arg1:MouseEvent){
trace("steering");
e = 1;
while (e < 6) {
this[("damage" + e.toString())].buttonMode = false;
this[("cannons" + e.toString())].buttonMode = false;
this[("team" + e.toString())].buttonMode = false;
this[("reload" + e.toString())].buttonMode = false;
this[("speed" + e.toString())].buttonMode = false;
this[("armor" + e.toString())].buttonMode = false;
this[("steering" + e.toString())].buttonMode = false;
this[("damage" + e.toString())].removeEventListener(MouseEvent.CLICK, OnDamageClick);
this[("cannons" + e.toString())].removeEventListener(MouseEvent.CLICK, OnCannonsClick);
this[("team" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTeamClick);
this[("reload" + e.toString())].removeEventListener(MouseEvent.CLICK, OnReloadClick);
this[("speed" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSpeedClick);
this[("armor" + e.toString())].removeEventListener(MouseEvent.CLICK, OnArmorClick);
this[("steering" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSteeringClick);
e++;
};
if (Game.player.gold >= Game.settingsxml..Steering.Level[Game.player.steering_upg].@gold){
Game.player.gold = (Game.player.gold - Game.settingsxml..Steering.Level[Game.player.steering_upg].@gold);
Game.player.steering_upg = (Game.player.steering_upg + 1);
UpdateUpgrades();
SoundManager.PlayOnce("Buy");
};
}
public function OnReloadClick(_arg1:MouseEvent){
trace("reload");
e = 1;
while (e < 6) {
this[("damage" + e.toString())].buttonMode = false;
this[("cannons" + e.toString())].buttonMode = false;
this[("team" + e.toString())].buttonMode = false;
this[("reload" + e.toString())].buttonMode = false;
this[("speed" + e.toString())].buttonMode = false;
this[("armor" + e.toString())].buttonMode = false;
this[("steering" + e.toString())].buttonMode = false;
this[("damage" + e.toString())].removeEventListener(MouseEvent.CLICK, OnDamageClick);
this[("cannons" + e.toString())].removeEventListener(MouseEvent.CLICK, OnCannonsClick);
this[("team" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTeamClick);
this[("reload" + e.toString())].removeEventListener(MouseEvent.CLICK, OnReloadClick);
this[("speed" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSpeedClick);
this[("armor" + e.toString())].removeEventListener(MouseEvent.CLICK, OnArmorClick);
this[("steering" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSteeringClick);
e++;
};
if (Game.player.gold >= Game.settingsxml..Reload.Level[Game.player.reload_upg].@gold){
Game.player.gold = (Game.player.gold - Game.settingsxml..Reload.Level[Game.player.reload_upg].@gold);
Game.player.reload_upg = (Game.player.reload_upg + 1);
UpdateUpgrades();
SoundManager.PlayOnce("Buy");
};
}
public function OnCannonsClick(_arg1:MouseEvent){
trace("cannons");
e = 1;
while (e < 6) {
this[("damage" + e.toString())].buttonMode = false;
this[("cannons" + e.toString())].buttonMode = false;
this[("team" + e.toString())].buttonMode = false;
this[("reload" + e.toString())].buttonMode = false;
this[("speed" + e.toString())].buttonMode = false;
this[("armor" + e.toString())].buttonMode = false;
this[("steering" + e.toString())].buttonMode = false;
this[("damage" + e.toString())].removeEventListener(MouseEvent.CLICK, OnDamageClick);
this[("cannons" + e.toString())].removeEventListener(MouseEvent.CLICK, OnCannonsClick);
this[("team" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTeamClick);
this[("reload" + e.toString())].removeEventListener(MouseEvent.CLICK, OnReloadClick);
this[("speed" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSpeedClick);
this[("armor" + e.toString())].removeEventListener(MouseEvent.CLICK, OnArmorClick);
this[("steering" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSteeringClick);
e++;
};
if (Game.player.gold >= Game.settingsxml..Cannons.Level[Game.player.cannons_upg].@gold){
Game.player.gold = (Game.player.gold - Game.settingsxml..Cannons.Level[Game.player.cannons_upg].@gold);
Game.player.cannons_upg = (Game.player.cannons_upg + 1);
UpdateUpgrades();
SoundManager.PlayOnce("Buy");
};
}
public function UpdateUpgrades(){
Game.player.update();
gold_text.text = Game.player.gold;
speed_text.text = Game.player.speed;
steering_text.text = Game.player.steering;
armor_text.text = Game.player.armor;
team_text.text = Game.player.team;
damage_text.text = Game.player.damage;
reload_text.text = (Game.player.reload.toString() + "sec.");
cannons_text.text = Game.player.cannons;
e = 1;
while (e < 6) {
if (e <= Game.player.damage_upg){
this[("damage" + e.toString())].gotoAndStop(2);
} else {
this[("damage" + e.toString())].gotoAndStop(1);
};
if (e <= Game.player.cannons_upg){
this[("cannons" + e.toString())].gotoAndStop(2);
} else {
this[("cannons" + e.toString())].gotoAndStop(1);
};
if (e <= Game.player.team_upg){
this[("team" + e.toString())].gotoAndStop(2);
} else {
this[("team" + e.toString())].gotoAndStop(1);
};
if (e <= Game.player.reload_upg){
this[("reload" + e.toString())].gotoAndStop(2);
} else {
this[("reload" + e.toString())].gotoAndStop(1);
};
if (e <= Game.player.speed_upg){
this[("speed" + e.toString())].gotoAndStop(2);
} else {
this[("speed" + e.toString())].gotoAndStop(1);
};
if (e <= Game.player.armor_upg){
this[("armor" + e.toString())].gotoAndStop(2);
} else {
this[("armor" + e.toString())].gotoAndStop(1);
};
if (e <= Game.player.steering_upg){
this[("steering" + e.toString())].gotoAndStop(2);
} else {
this[("steering" + e.toString())].gotoAndStop(1);
};
e++;
};
if (Game.player.damage_upg != 5){
if (Game.settingsxml..Damage.Level[Game.player.damage_upg].@gold <= Game.player.gold){
this[("damage" + (Game.player.damage_upg + 1).toString())].gotoAndStop(4);
this[("damage" + (Game.player.damage_upg + 1).toString())].addEventListener(MouseEvent.CLICK, OnDamageClick, false, 0, true);
this[("damage" + (Game.player.damage_upg + 1).toString())].buttonMode = true;
};
};
if (Game.player.cannons_upg != 5){
if (Game.settingsxml..Cannons.Level[Game.player.cannons_upg].@gold <= Game.player.gold){
this[("cannons" + (Game.player.cannons_upg + 1).toString())].gotoAndStop(4);
this[("cannons" + (Game.player.cannons_upg + 1).toString())].addEventListener(MouseEvent.CLICK, OnCannonsClick, false, 0, true);
this[("cannons" + (Game.player.cannons_upg + 1).toString())].buttonMode = true;
};
};
if (Game.player.team_upg != 5){
if (Game.settingsxml..Team.Level[Game.player.team_upg].@gold <= Game.player.gold){
this[("team" + (Game.player.team_upg + 1).toString())].gotoAndStop(4);
this[("team" + (Game.player.team_upg + 1).toString())].addEventListener(MouseEvent.CLICK, OnTeamClick, false, 0, true);
this[("team" + (Game.player.team_upg + 1).toString())].buttonMode = true;
};
};
if (Game.player.reload_upg != 5){
if (Game.settingsxml..Reload.Level[Game.player.reload_upg].@gold <= Game.player.gold){
this[("reload" + (Game.player.reload_upg + 1).toString())].gotoAndStop(4);
this[("reload" + (Game.player.reload_upg + 1).toString())].addEventListener(MouseEvent.CLICK, OnReloadClick, false, 0, true);
this[("reload" + (Game.player.reload_upg + 1).toString())].buttonMode = true;
};
};
if (Game.player.speed_upg != 5){
if (Game.settingsxml..Speed.Level[Game.player.speed_upg].@gold <= Game.player.gold){
this[("speed" + (Game.player.speed_upg + 1).toString())].gotoAndStop(4);
this[("speed" + (Game.player.speed_upg + 1).toString())].addEventListener(MouseEvent.CLICK, OnSpeedClick, false, 0, true);
this[("speed" + (Game.player.speed_upg + 1).toString())].buttonMode = true;
};
};
if (Game.player.armor_upg != 5){
if (Game.settingsxml..Armor.Level[Game.player.armor_upg].@gold <= Game.player.gold){
this[("armor" + (Game.player.armor_upg + 1).toString())].gotoAndStop(4);
this[("armor" + (Game.player.armor_upg + 1).toString())].addEventListener(MouseEvent.CLICK, OnArmorClick, false, 0, true);
this[("armor" + (Game.player.armor_upg + 1).toString())].buttonMode = true;
};
};
if (Game.player.steering_upg != 5){
if (Game.settingsxml..Steering.Level[Game.player.steering_upg].@gold <= Game.player.gold){
this[("steering" + (Game.player.steering_upg + 1).toString())].gotoAndStop(4);
this[("steering" + (Game.player.steering_upg + 1).toString())].addEventListener(MouseEvent.CLICK, OnSteeringClick, false, 0, true);
this[("steering" + (Game.player.steering_upg + 1).toString())].buttonMode = true;
};
};
}
public function OnDamageClick(_arg1:MouseEvent){
trace("damage");
e = 1;
while (e < 6) {
this[("damage" + e.toString())].buttonMode = false;
this[("cannons" + e.toString())].buttonMode = false;
this[("team" + e.toString())].buttonMode = false;
this[("reload" + e.toString())].buttonMode = false;
this[("speed" + e.toString())].buttonMode = false;
this[("armor" + e.toString())].buttonMode = false;
this[("steering" + e.toString())].buttonMode = false;
this[("damage" + e.toString())].removeEventListener(MouseEvent.CLICK, OnDamageClick);
this[("cannons" + e.toString())].removeEventListener(MouseEvent.CLICK, OnCannonsClick);
this[("team" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTeamClick);
this[("reload" + e.toString())].removeEventListener(MouseEvent.CLICK, OnReloadClick);
this[("speed" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSpeedClick);
this[("armor" + e.toString())].removeEventListener(MouseEvent.CLICK, OnArmorClick);
this[("steering" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSteeringClick);
e++;
};
if (Game.settingsxml..Damage.Level[Game.player.damage_upg].@gold <= Game.player.gold){
Game.player.gold = (Game.player.gold - Game.settingsxml..Damage.Level[Game.player.damage_upg].@gold);
Game.player.damage_upg = (Game.player.damage_upg + 1);
UpdateUpgrades();
SoundManager.PlayOnce("Buy");
};
}
public function OnSpeedClick(_arg1:MouseEvent){
trace("speed");
e = 1;
while (e < 6) {
this[("damage" + e.toString())].buttonMode = false;
this[("cannons" + e.toString())].buttonMode = false;
this[("team" + e.toString())].buttonMode = false;
this[("reload" + e.toString())].buttonMode = false;
this[("speed" + e.toString())].buttonMode = false;
this[("armor" + e.toString())].buttonMode = false;
this[("steering" + e.toString())].buttonMode = false;
this[("damage" + e.toString())].removeEventListener(MouseEvent.CLICK, OnDamageClick);
this[("cannons" + e.toString())].removeEventListener(MouseEvent.CLICK, OnCannonsClick);
this[("team" + e.toString())].removeEventListener(MouseEvent.CLICK, OnTeamClick);
this[("reload" + e.toString())].removeEventListener(MouseEvent.CLICK, OnReloadClick);
this[("speed" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSpeedClick);
this[("armor" + e.toString())].removeEventListener(MouseEvent.CLICK, OnArmorClick);
this[("steering" + e.toString())].removeEventListener(MouseEvent.CLICK, OnSteeringClick);
e++;
};
if (Game.player.gold >= Game.settingsxml..Speed.Level[Game.player.speed_upg].@gold){
Game.player.gold = (Game.player.gold - Game.settingsxml..Speed.Level[Game.player.speed_upg].@gold);
Game.player.speed_upg = (Game.player.speed_upg + 1);
UpdateUpgrades();
SoundManager.PlayOnce("Buy");
};
}
}
}//package
Section 342
//UpgradeSymbol (UpgradeSymbol)
package {
import flash.display.*;
public dynamic class UpgradeSymbol extends MovieClip {
public function UpgradeSymbol(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 343
//UpgradeTutorial (UpgradeTutorial)
package {
import flash.events.*;
import flash.display.*;
public class UpgradeTutorial extends MovieClip {
public var continuebutton:ShopButton;
public function UpgradeTutorial(){
addFrameScript(0, frame1);
continuebutton.addEventListener(MouseEvent.CLICK, OnContinue, false, 0, true);
}
function frame1(){
stop();
}
public function OnContinue(_arg1:MouseEvent){
if (this.currentFrame != 1){
gotoAndStop((this.currentFrame + 1));
} else {
parent.removeChild(this);
Game.player.showupgradetutorial = false;
};
}
}
}//package
Section 344
//Water (Water)
package {
import flash.display.*;
public dynamic class Water extends MovieClip {
public function Water(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 345
//WaterBackTrace (WaterBackTrace)
package {
import flash.display.*;
public dynamic class WaterBackTrace extends MovieClip {
}
}//package
Section 346
//WaterForwardTrace (WaterForwardTrace)
package {
import flash.display.*;
public dynamic class WaterForwardTrace extends MovieClip {
}
}//package
Section 347
//WaterHolderB (WaterHolderB)
package {
import flash.display.*;
import com.midasplayer.extras.*;
public dynamic class WaterHolderB extends MovieClip {
public var BLUE:Water1;
}
}//package
Section 348
//WaterHolderG (WaterHolderG)
package {
import flash.display.*;
import com.midasplayer.extras.*;
public dynamic class WaterHolderG extends MovieClip {
public var GREEN:Water1;
}
}//package
Section 349
//WaterHolderR (WaterHolderR)
package {
import flash.display.*;
import com.midasplayer.extras.*;
public dynamic class WaterHolderR extends MovieClip {
public var RED:Water1;
}
}//package
Section 350
//WaterSplash (WaterSplash)
package {
import flash.events.*;
import flash.display.*;
import silin.bitmap.*;
public class WaterSplash extends Sprite {
private var exlpBitmap:ExplosionBitmap;
public function WaterSplash(){
exlpBitmap = new ExplosionBitmap(100, 100, ExplosionBitmap.SMOKE);
addChild(exlpBitmap);
exlpBitmap.x = -50;
exlpBitmap.y = -50;
exlpBitmap.clear();
exlpBitmap.totalCount = 100;
exlpBitmap.perFrameCount = 60;
exlpBitmap.initRadius = 3;
exlpBitmap.initVelocity = 3;
exlpBitmap.energyDamp = 0.8;
exlpBitmap.wind = 4;
exlpBitmap.smokeColor = 13421823;
exlpBitmap.addExplosion(50, 50, true);
exlpBitmap.addEventListener(Event.COMPLETE, explCompleteHandler, false, 0, true);
}
private function explCompleteHandler(_arg1:Event):void{
parent.removeChild(this);
}
}
}//package
Section 351
//WaterTilesHolder (WaterTilesHolder)
package {
import flash.display.*;
import flash.geom.*;
public class WaterTilesHolder extends Sprite {
private var mat:Matrix;
private var waterdata:BitmapData;
private var presentdata:BitmapData;
private var presentbitmap:Bitmap;
private var tile:Water;
private var copyto:Point;
private var clearrect:Rectangle;
private var sourcerect:Rectangle;
public function WaterTilesHolder(){
var _local2:int;
waterdata = new BitmapData(700, 550, false, 4294967295);
presentdata = new BitmapData(700, 400, false, 4294967295);
tile = new Water();
mat = new Matrix();
sourcerect = new Rectangle();
clearrect = new Rectangle();
copyto = new Point();
super();
tile.gotoAndStop((int((Math.random() * 3)) + 1));
presentbitmap = new Bitmap(presentdata, PixelSnapping.ALWAYS, true);
addChild(presentbitmap);
presentbitmap.y = 28;
waterdata.lock();
var _local1:int;
while (_local1 < 7) {
_local2 = 0;
while (_local2 < 5) {
mat.tx = (110 * _local1);
mat.ty = (110 * _local2);
waterdata.draw(tile, mat);
_local2++;
};
_local1++;
};
waterdata.unlock();
presentdata.lock();
sourcerect.x = 0;
sourcerect.y = 110;
sourcerect.width = 700;
sourcerect.height = 400;
copyto.x = 0;
copyto.y = 0;
presentdata.copyPixels(waterdata, sourcerect, copyto);
presentdata.unlock();
}
public function Update(_arg1:Number){
presentdata.lock();
sourcerect.x = 0;
sourcerect.y = _arg1;
sourcerect.width = 700;
sourcerect.height = 400;
copyto.x = 0;
copyto.y = 0;
presentdata.copyPixels(waterdata, sourcerect, copyto);
presentdata.unlock();
}
}
}//package
Section 352
//WaterWave (WaterWave)
package {
import flash.display.*;
public dynamic class WaterWave extends MovieClip {
public function WaterWave(){
addFrameScript(103, frame104);
}
function frame104(){
x = int((Math.random() * 2000));
y = int((Math.random() * 2000));
}
}
}//package