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

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

Perfect Balance 3 - time to drop, stack and balance shapes again.swf

This is the info page for
Flash #90898

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


ActionScript [AS3]
Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var localPosition:b2Vec2; public var radius:Number; 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.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_radius:Number; public var m_localPosition:b2Vec2; public function b2CircleShape(_arg1:b2ShapeDef){ var _local2:b2CircleDef; m_localPosition = new b2Vec2(); super(_arg1); _local2 = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg1.R; _local4 = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_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))); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:b2Mat22; 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; _local6 = _arg1.R; _local7 = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); _local8 = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); _local9 = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); _local11 = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; _local12 = (_arg4.p2.x - _arg4.p1.x); _local13 = (_arg4.p2.y - _arg4.p1.y); _local14 = ((_local9 * _local12) + (_local10 * _local13)); _local15 = ((_local12 * _local12) + (_local13 * _local13)); _local16 = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; _local17 = -((_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); } 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 ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = _arg2.R; _local5 = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local6 = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; _local7 = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local8 = (_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)); } public function GetRadius():Number{ return (m_radius); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = (m_localPosition.x - _arg1.x); _local3 = (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; var _local4:Number; var _local5:Number; _local3 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_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)); } } }//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 b2FilterData(){ categoryBits = 1; maskBits = 0xFFFF; groupIndex = 0; super(); } public function Copy():b2FilterData{ var _local1:b2FilterData; _local1 = 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(){ mass = 0; center = new b2Vec2(0, 0); I = 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 vertexCount:int; public var vertices:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ var _local1:int; vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; _local1 = 0; 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_vertices:Array; public var m_normals:Array; private var s_supportVec:b2Vec2; public var m_obb:b2OBB; public var m_coreVertices:Array; public var m_centroid:b2Vec2; 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 _local2:b2PolygonDef; var _local3:int; var _local4:int; var _local5: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; _local2 = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; _local4 = _local3; _local5 = _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 TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:Number; _local4 = _arg1.R; _local5 = (_arg2.x - _arg1.position.x); _local6 = (_arg2.y - _arg1.position.y); _local7 = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); _local8 = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); _local9 = 0; 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 function GetCoreVertices():Array{ return (m_coreVertices); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ 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 _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:Number; var _local21:Number; _local6 = 0; _local7 = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; _local12 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local13 = ((_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; _local14 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local15 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local18 = -1; _local19 = 0; 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); } public function GetCentroid():b2Vec2{ return (m_centroid); } override public function ComputeMass(_arg1:b2MassData):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; 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; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (1 / 3); _local9 = 0; 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 Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local6:Number; var _local7:Number; var _local8:int; var _local9:Number; var _local10:int; var _local11:Number; _local5 = _arg1.R; _local6 = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); _local7 = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); _local8 = 0; _local4 = m_coreVertices[0]; _local9 = ((_local4.x * _local6) + (_local4.y * _local7)); _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 ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB; var _local5:b2AABB; _local4 = s_sweptAABB1; _local5 = 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 GetNormals():Array{ return (m_normals); } 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 UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local3:int; var _local4:Number; var _local5:Number; m_sweepRadius = 0; _local3 = 0; 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 ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local5 = 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(); _local6 = _local5; _local4 = m_obb.extents; _local7 = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); _local8 = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; _local9 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local10 = (_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)); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; 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(); _local4 = 0; _local5 = 0; _local6 = 0; _local7 = (1 / 3); _local8 = 0; 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 _local5:Array; var _local6:Number; 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; _local5 = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; _local6 = 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class 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_next:b2Shape; public var m_restitution:Number; public var m_userData; public var m_isSensor:Boolean; 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 TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } 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{ var _local3:b2AABB; var _local4:Boolean; if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); _local3 = s_resetAABB; ComputeAABB(_local3, _arg2); _local4 = _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{ var _local4:b2AABB; if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; _local4 = 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; var _local4:Boolean; _local3 = s_proxyAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } 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 isSensor:Boolean;// = false public var density:Number;// = 0 public var type:int; public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var friction:Number;// = 0.2 public function b2ShapeDef(){ type = b2Shape.e_unknownShape; userData = null; friction = 0.2; restitution = 0; density = 0; isSensor = false; 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; var _local2:Number; var _local3:Boolean; _local1 = (upperBound.x - lowerBound.x); _local2 = (upperBound.y - lowerBound.y); _local3 = (((_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 proxyId:uint; public var stabbingCount:uint; public var value:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = value; _local3 = proxyId; _local4 = 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_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_bounds:Array; 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 = 0xFFFF; public static const b2_invalid:uint = 0xFFFF; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local4:Number; 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++; }; _local4 = (_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 _local4:Array; var _local5:Array; var _local6:uint; var _local7:uint; var _local8:Array; var _local9:Array; var _local10:int; var _local11:int; var _local12:b2Proxy; _local4 = new Array(); _local5 = new Array(); ComputeBounds(_local4, _local5, _arg1); _local8 = [_local6]; _local9 = [_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); _local10 = 0; _local11 = 0; 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; _local2 = 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 _local8:uint; var _local9:uint; var _local10:b2Bound; var _local11:uint; var _local12:int; var _local13:int; var _local14:b2Proxy; _local8 = BinarySearch(_arg5, _arg6, _arg3); _local9 = BinarySearch(_arg5, _arg6, _arg4); _local11 = _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 _local3:int; var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; _local3 = 0; 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; var _local5:Number; var _local6:Number; var _local7:Number; _local4 = _arg3.lowerBound.x; _local5 = _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); _local6 = _arg3.upperBound.x; _local7 = _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 _local5:uint; var _local6:uint; var _local7:Array; var _local8:Array; var _local9:int; var _local10:int; 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; _local5 = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; _local6 = (2 * m_proxyCount); _local7 = new Array(); _local8 = new Array(); ComputeBounds(_local7, _local8, _arg1); _local9 = 0; 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++; _local10 = 0; 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 _local4:b2Proxy; var _local5:int; var _local6:int; var _local7:int; 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; _local4 = m_proxyPool[_arg1]; _local5 = (2 * m_proxyCount); _local6 = 0; 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++; }; _local7 = 0; 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 _local3:int; var _local4:Array; var _local5:b2Bound; _local3 = 0; 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 _local5:int; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; _local5 = 0; 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; _local2 = 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 _local12:uint; var _local13:b2Proxy; var _local14:b2BoundValues; var _local15:b2BoundValues; 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; }; _local12 = (2 * m_proxyCount); _local13 = m_proxyPool[_arg1]; _local14 = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); _local15 = 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 _local4:int; var _local5:int; var _local6:int; var _local7:b2Bound; _local4 = 0; _local5 = (_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 _local6:int; var _local7:Array; var _local8:Array; var _local9:int; var _local10:Array; var _local11:b2Mat22; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local6 = _arg1.m_vertexCount; _local7 = _arg1.m_vertices; _local8 = _arg1.m_normals; _local9 = _arg4.m_vertexCount; _local10 = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; _local13 = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); _local14 = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; _local15 = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); _local16 = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; 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; _local20 = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local21 = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; _local22 = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local23 = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); _local24 = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = _arg2.lowerBound; _local4 = _arg1.upperBound; _local5 = (_local3.x - _local4.x); _local6 = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; _local7 = (_local3.x - _local4.x); _local8 = (_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 _local7:int; var _local8:Array; var _local9:int; var _local10:Array; var _local11:Array; var _local12:b2Mat22; var _local13:b2Vec2; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:ClipVertex; var _local21:int; var _local22:int; var _local23:Number; _local7 = _arg2.m_vertexCount; _local8 = _arg2.m_normals; _local9 = _arg5.m_vertexCount; _local10 = _arg5.m_vertices; _local11 = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; _local14 = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); _local15 = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; _local16 = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; _local21 = _local17; _local22 = (((_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 _local7:int; var _local8:Array; var _local9:Number; var _local10:int; var _local11:Array; var _local12:Number; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local15:b2XForm; var _local16:b2XForm; var _local17:int; var _local18:uint; var _local19:Number; var _local20:Number; var _local21:Array; var _local22:int; var _local23:Array; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:b2Vec2; var _local28:b2Vec2; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Array; var _local33:Array; var _local34:int; var _local35:int; var _local36:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; _local7 = 0; _local8 = [_local7]; _local9 = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; _local10 = 0; _local11 = [_local10]; _local12 = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; _local15 = new b2XForm(); _local16 = new b2XForm(); _local19 = 0.98; _local20 = 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; }; _local21 = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); _local22 = _local13.m_vertexCount; _local23 = _local13.m_vertices; _local24 = _local23[_local17]; _local25 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; _local26 = b2Math.SubtractVV(_local37, _local25); _local27 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); _local28 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); _local29 = b2Math.b2Dot(_local28, _local25); _local30 = -(b2Math.b2Dot(_local27, _local25)); _local31 = b2Math.b2Dot(_local27, _local37); _local32 = [new ClipVertex(), new ClipVertex()]; _local33 = [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(); _local35 = 0; _local36 = 0; 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 _local6:int; var _local7:Array; var _local8:b2Vec2; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:int; var _local15:Number; var _local16:int; var _local17:Number; var _local18:int; var _local19:Number; var _local20:int; var _local21:Number; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; _local6 = _arg2.m_vertexCount; _local7 = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; _local10 = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); _local11 = (_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)))); _local12 = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); _local13 = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); _local14 = 0; _local15 = -(Number.MAX_VALUE); _local16 = 0; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; _local18 = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); _local19 = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; _local20 = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; _local21 = 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 _local10: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); _local10 = (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 _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:b2ManifoldPoint; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; _local8 = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local9 = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; _local10 = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local11 = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local12 = (_local10 - _local8); _local13 = (_local11 - _local9); _local14 = ((_local12 * _local12) + (_local13 * _local13)); _local15 = _arg2.m_radius; _local16 = _arg4.m_radius; _local17 = (_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; _local19 = _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)); _local20 = (0.5 * (_local8 + _local10)); _local21 = (0.5 * (_local9 + _local11)); _local22 = (_local20 - _arg3.position.x); _local23 = (_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 _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; var _local21:int; var _local22:Array; var _local23:Array; var _local24:int; var _local25:int; var _local26:int; var _local27:b2Vec2; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; _local13 = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); _local14 = (_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; _local15 = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local16 = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local18 = 0; _local19 = -(Number.MAX_VALUE); _local20 = _arg4.m_radius; _local21 = _arg2.m_vertexCount; _local22 = _arg2.m_vertices; _local23 = _arg2.m_normals; _local24 = 0; 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; }; _local25 = _local18; _local26 = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; _local27 = _local22[_local26]; _local28 = (_local27.x - _local11.x); _local29 = (_local27.y - _local11.y); _local30 = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local31 = ((_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; _local1 = new b2ContactID(); _local1.key = key; return (_local1); } public function get key():uint{ return (_key); } 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); } } }//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 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 friction:Number; 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 _local4:Number; var _local5:int; var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local4 = (100 * Number.MIN_VALUE); _local5 = 0; 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 _local8:Array; var _local9:Array; var _local10:Array; var _local11:int; var _local12:Number; var _local13:int; var _local14:int; 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; _local8 = s_p1s; _local9 = s_p2s; _local10 = s_points; _local11 = 0; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); _local12 = 0; _local13 = 20; _local14 = 0; 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 _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; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; _local9 = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local10 = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; _local11 = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local12 = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); _local16 = (_arg3.m_radius - b2Settings.b2_toiSlop); _local17 = (_arg5.m_radius - b2Settings.b2_toiSlop); _local18 = (_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 _local14:b2Vec2; 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 _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 _local39:Number; var _local40:Number; var _local41: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]; _local14 = _arg4[2]; _local15 = _local6.x; _local16 = _local6.y; _local17 = _local7.x; _local18 = _local7.y; _local19 = _local8.x; _local20 = _local8.y; _local21 = (_local17 - _local15); _local22 = (_local18 - _local16); _local23 = (_local19 - _local15); _local24 = (_local20 - _local16); _local25 = (_local19 - _local17); _local26 = (_local20 - _local18); _local27 = -(((_local15 * _local21) + (_local16 * _local22))); _local28 = ((_local17 * _local21) + (_local18 * _local22)); _local29 = -(((_local15 * _local23) + (_local16 * _local24))); _local30 = ((_local19 * _local23) + (_local20 * _local24)); _local31 = -(((_local17 * _local25) + (_local18 * _local26))); _local32 = ((_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); }; _local33 = ((_local21 * _local24) - (_local22 * _local23)); _local34 = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); _local36 = (_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); }; _local37 = (_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); }; _local38 = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); _local39 = (_local36 * _local38); _local40 = (_local37 * _local38); _local41 = ((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 _local9:b2Point; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local9 = 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))); _local10 = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); _local11 = (_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; var _local8:int; _local7 = _arg3.m_type; _local8 = _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 _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; _local12 = -(_local7.x); _local13 = -(_local7.y); _local14 = (_local6.x - _local7.x); _local15 = (_local6.y - _local7.y); _local16 = 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 points:Array; public var pointCount:int;// = 0 public var normal:b2Vec2; public function b2Manifold(){ var _local1:int; pointCount = 0; super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ var _local2:int; pointCount = _arg1.pointCount; _local2 = 0; 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; _local1 = 0; 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 { public class b2Pair { public var userData;// = null public var proxyId1:uint; 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 = 0xFFFF; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = 0xFFFF; public static var b2_tableCapacity:int = 4096; public function b2Pair(){ userData = null; super(); } 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_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_hashTable:Array; 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; _local5 = 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 _local3:uint; var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; _local3 = (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 _local3:int; var _local4:Array; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; _local3 = 0; _local4 = 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; _local4 = 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 _local4:uint; var _local5:uint; var _local6:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; _local4 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local5 = m_hashTable[_local4]; _local6 = null; 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; _local4 = 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 _local3:uint; var _local4:b2Pair; var _local5:uint; var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; _local5 = 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; _local3 = (((_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 lowerBounds:Array; public var upperBounds:Array; public var userData;// = null public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; userData = null; 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.*; 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 _local5:b2Vec2; 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; var _local18:Number; _local5 = _arg3.p1; _local6 = (_arg3.p2.x - _local5.x); _local7 = (_arg3.p2.y - _local5.y); _local8 = (p2.x - p1.x); _local9 = (p2.y - p1.y); _local10 = _local9; _local11 = -(_local8); _local12 = (100 * Number.MIN_VALUE); _local13 = -(((_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 _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:b2Vec2; var _local18:b2Vec2; var _local19:int; var _local20:int; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; _local7 = _arg1.m_sweepRadius; _local8 = _arg3.m_sweepRadius; _local9 = _arg2.t0; _local10 = (_arg2.c.x - _arg2.c0.x); _local11 = (_arg2.c.y - _arg2.c0.y); _local12 = (_arg4.c.x - _arg4.c0.x); _local13 = (_arg4.c.y - _arg4.c0.y); _local14 = (_arg2.a - _arg2.a0); _local15 = (_arg4.a - _arg4.a0); _local16 = 0; _local17 = s_p1; _local18 = s_p2; _local19 = 20; _local20 = 0; _local21 = 0; _local22 = 0; _local23 = 0; _local24 = 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 v:b2Vec2; public var id:b2ContactID; 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 set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function get incidentVertex():int{ return (_incidentVertex); } 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 Set(_arg1:Number):void{ var _local2:Number; var _local3:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } 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 _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = col1.x; _local3 = col2.x; _local4 = col1.y; _local5 = 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; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = col1.x; _local5 = col2.x; _local6 = col1.y; _local7 = col2.y; _local8 = ((_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; _local3 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = 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; _local3 = 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; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:*; _local3 = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22; _local2 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = 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; _local2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = 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; _local3 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = 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; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Mat22; _local3 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); _local4 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); _local5 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean; _local2 = (((_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; _local3 = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = 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; _local3 = 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; _local3 = 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 c:b2Vec2; public var a:Number; public var c0:b2Vec2; public var a0:Number; 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 _local3:b2Mat22; 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); }; _local3 = _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 x:Number; public var y:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } 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 SetZero():void{ x = 0; y = 0; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } 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 CrossVF(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = 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 function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function MulM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function Normalize():Number{ var _local1:Number; var _local2:Number; _local1 = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; _local2 = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function CrossFV(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } 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 R:b2Mat22; public var position:b2Vec2; 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 _g:uint;// = 0 private var _b:uint;// = 0 private var _r:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = 0; _g = 0; _b = 0; super(); _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 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 b(_arg1:Number):void{ _b = 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; public class b2CircleContact 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 b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:b2ManifoldPoint; _local5 = m_shape1.m_body; _local6 = 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); _local7 = 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); }; }; } 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; 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 GetShape1():b2Shape{ return (m_shape1); } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetNext():b2Contact{ return (m_next); } public function GetManifolds():Array{ return (null); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function Update(_arg1:b2ContactListener):void{ var _local2:int; var _local3:int; var _local4:b2Body; var _local5:b2Body; _local2 = m_manifoldCount; Evaluate(_arg1); _local3 = m_manifoldCount; _local4 = m_shape1.m_body; _local5 = 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 _local1:int; var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); _local1 = 0; 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{ var _local3:int; var _local4:int; var _local5:b2ContactRegister; var _local6:Function; if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; _local3 = _arg1.m_shape1.m_type; _local4 = _arg1.m_shape2.m_type; _local5 = s_registers[_local3][_local4]; _local6 = _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 _local4:int; var _local5:int; var _local6:b2ContactRegister; var _local7:Function; var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; _local4 = _arg1.m_type; _local5 = _arg2.m_type; _local6 = s_registers[_local4][_local5]; _local7 = _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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var normal:b2Vec2; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ var _local1:int; normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; 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 equalizedMass:Number; public var tangentMass: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 next:b2ContactEdge; public var other:b2Body; public var contact:b2Contact; public var prev: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.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; public class b2ContactResult { public var normal:b2Vec2; public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; 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 _local9:int; 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++; }; _local9 = 0; _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 _local5:int; 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; _local5 = 0; 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 _local2:Number; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; 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; _local2 = 0; _local5 = 0; 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 _local19:int; 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; _local19 = 0; 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 _local1:int; var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; _local1 = 0; 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 GetManifolds():Array{ return (null); } override public function Evaluate(_arg1:b2ContactListener):void{ } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact 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 b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; 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; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local6:b2Body; var _local7:b2Body; var _local8:Array; var _local9:b2ContactPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local6 = m_shape1.m_body; _local7 = 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); _local8 = [false, false]; _local9 = 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++; }; } 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; 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 GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:int; var _local9:Array; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local5 = m_shape1.m_body; _local6 = 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); _local9 = [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++; }; } 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_mass:Number; public var m_u:b2Vec2; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_localAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_bias:Number; public var m_gamma: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 GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; var _local2:b2Body; var _local3:b2Body; 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 (m_frequencyHz > 0){ return (true); }; _local2 = m_body1; _local3 = m_body2; _local1 = _local2.m_xf.R; _local4 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; _local7 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local8 = (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; _local9 = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); _local10 = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); _local11 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); _local12 = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local13 = (-(m_mass) * _local12); m_u.Set(_local9, _local10); _local14 = (_local13 * m_u.x); _local15 = (_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 InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; 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; 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); _local7 = (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); _local9 = (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); _local10 = 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(); }; _local11 = ((_local6 * m_u.y) - (_local7 * m_u.x)); _local12 = ((_local8 * m_u.y) - (_local9 * m_u.x)); _local13 = (((_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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body; var _local4:b2Body; 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:Number; _local3 = m_body1; _local4 = m_body2; _local2 = _local3.m_xf.R; _local5 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; _local8 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local9 = (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; _local10 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); _local11 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); _local12 = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); _local13 = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); _local14 = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); _local15 = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); _local16 = (_local15 * m_u.x); _local17 = (_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 length:Number; public var dampingRatio:Number; public var frequencyHz:Number; public var localAnchor2:b2Vec2; public var localAnchor1:b2Vec2; 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{ var _local5:Number; var _local6:Number; body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); _local5 = (_arg4.x - _arg3.x); _local6 = (_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_force:Number; public var m_mass:Number; public var m_prismatic1:b2PrismaticJoint; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_ground2:b2Body; public var m_constant:Number; public var m_revolute1:b2RevoluteJoint; public var m_revolute2:b2RevoluteJoint; 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_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local2:int; var _local3:int; 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); _local2 = _arg1.joint1.m_type; _local3 = _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 GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local1 = 0; _local2 = m_body1; _local3 = 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(); }; _local6 = (m_constant - (_local4 + (m_ratio * _local5))); _local7 = (-(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)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; 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 _local14:Number; var _local15:Number; _local2 = m_ground1; _local3 = m_ground2; _local4 = m_body1; _local5 = m_body2; _local14 = 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; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = m_body2.m_xf.R; _local2 = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); _local3 = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); _local4 = ((_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); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = m_body1; _local3 = m_body2; _local4 = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local5 = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); _local6 = (_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 joint2:b2Joint; public var joint1: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 angular2:Number; public var angular1: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 GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetType():int{ return (m_type); } public function GetBody2():b2Body{ return (m_body2); } public function GetNext():b2Joint{ return (m_next); } 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; _local3 = null; 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 collideConnected:Boolean; public var body1:b2Body; public var body2:b2Body; public var userData; public var type:int; 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 joint:b2Joint; public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; } }//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 { public var m_beta:Number; public var m_mass:b2Mat22; public var m_target:b2Vec2; public var m_impulse:b2Vec2; public var m_localAnchor:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K:b2Mat22; public var m_gamma:Number; public var m_C:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8: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); _local2 = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); _local4 = 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(); _local5 = m_body2.m_mass; _local6 = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); _local7 = (((2 * _local5) * _arg1.dampingRatio) * _local6); _local8 = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10: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); _local6 = ((_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); _local9 = (_arg1.dt * m_impulse.x); _local10 = (_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 GetReactionTorque():Number{ return (0); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; 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; _local2 = m_body2; _local3 = _local2.m_xf.R; _local6 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local7 = (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; _local8 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); _local9 = (_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)); _local10 = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); _local11 = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); _local12 = m_impulse.x; _local13 = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); _local14 = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local15 = (_arg1.dt * _local10); _local16 = (_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 frequencyHz:Number; public var dampingRatio:Number; public var maxForce:Number; public var target:b2Vec2; public var timeStep: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_refAngle:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_torque:Number; public var m_enableLimit:Boolean; public var m_motorForce:Number; public var m_force:Number; public var m_localYAxis1:b2Vec2; public var m_motorMass:Number; public var m_maxMotorForce:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_angularMass:Number; public var m_limitState:int; public var m_linearMass:Number; public var m_upperTranslation:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_linearJacobian:b2Jacobian; public var m_enableMotor:Boolean; 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 GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetJointTranslation():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:b2Vec2; var _local9:Number; _local1 = m_body1; _local2 = m_body2; _local4 = _local1.GetWorldPoint(m_localAnchor1); _local5 = _local2.GetWorldPoint(m_localAnchor2); _local6 = (_local5.x - _local4.x); _local7 = (_local5.y - _local4.y); _local8 = _local1.GetWorldVector(m_localXAxis1); _local9 = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.m_xf.R; _local2 = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); _local3 = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); _local4 = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); _local5 = (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 _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9: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 _local21:Number; 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; _local3 = m_body1; _local4 = m_body2; _local5 = _local3.m_invMass; _local6 = _local4.m_invMass; _local7 = _local3.m_invI; _local8 = _local4.m_invI; _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; _local21 = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); _local22 = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); _local23 = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local24 = (-(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)); _local25 = b2Math.b2Abs(_local23); _local26 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local27 = (-(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(); _local28 = 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 GetJointSpeed():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; 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:b2Vec2; var _local16:b2Vec2; var _local17:b2Vec2; var _local18:Number; var _local19:Number; var _local20:Number; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_xf.R; _local4 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; _local7 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local8 = (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; _local9 = (_local1.m_sweep.c.x + _local4); _local10 = (_local1.m_sweep.c.y + _local5); _local11 = (_local2.m_sweep.c.x + _local7); _local12 = (_local2.m_sweep.c.y + _local8); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = _local1.GetWorldVector(m_localXAxis1); _local16 = _local1.m_linearVelocity; _local17 = _local2.m_linearVelocity; _local18 = _local1.m_angularVelocity; _local19 = _local2.m_angularVelocity; _local20 = (((_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); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; 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: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; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (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; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (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; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; _local4 = _local2.m_xf.R; _local14 = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); _local15 = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); _local16 = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); _local17 = ((_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 SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; 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:Number; var _local18:Number; var _local19:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_invMass; _local5 = _local3.m_invMass; _local6 = _local2.m_invI; _local7 = _local3.m_invI; _local9 = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local10 = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); _local11 = (_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)); _local12 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local13 = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); _local14 = (_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)); }; } } }//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 localAxis1:b2Vec2; public var referenceAngle:Number; public var maxMotorForce:Number; public var motorSpeed:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; 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_ground:b2Body; public var m_maxLength2:Number; public var m_limitForce1:Number; public var m_maxLength1:Number; public var m_limitState1:int; public var m_limitState2:int; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_limitPositionImpulse1:Number; public var m_constant: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_positionImpulse:Number; public var m_limitMass2:Number; public var m_limitMass1:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_u2:b2Vec2; public var m_limitForce2:Number; 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; _local1 = 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; _local1 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; 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:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; _local1 = m_body1; _local2 = m_body2; _local4 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local5 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local6 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local7 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local23 = 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 _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; 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: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; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (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; _local10 = (_local2.m_sweep.c.x + _local5); _local11 = (_local2.m_sweep.c.y + _local6); _local12 = (_local3.m_sweep.c.x + _local8); _local13 = (_local3.m_sweep.c.y + _local9); _local14 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local15 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local16 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local17 = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); _local18 = m_u1.Length(); _local19 = 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(); }; _local20 = ((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; }; _local21 = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); _local22 = ((_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); } public function GetLength2():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body2.GetWorldPoint(m_localAnchor2); _local2 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; 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:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (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; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.GetWorldPoint(m_localAnchor1); _local2 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2; _local1 = 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 maxLength2:Number; public var length1:Number; public var length2:Number; public var maxLength1:Number; public var ratio:Number; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; 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{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); _local8 = (_arg5.x - _arg3.x); _local9 = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local10 = (_arg6.x - _arg4.x); _local11 = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; _local12 = (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_motorForce:Number; public var m_pivotMass:b2Mat22; 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_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_limitPositionImpulse:Number; public var m_maxMotorTorque:Number; public var m_referenceAngle:Number; public var m_lowerAngle:Number; public var m_upperAngle: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 GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } 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 _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:b2Mat22; 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; 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; _local3 = m_body1; _local4 = m_body2; _local5 = 0; _local6 = _local3.m_xf.R; _local7 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; _local10 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local11 = (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; _local12 = (_local3.m_sweep.c.x + _local7); _local13 = (_local3.m_sweep.c.y + _local8); _local14 = (_local4.m_sweep.c.x + _local10); _local15 = (_local4.m_sweep.c.y + _local11); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); _local18 = _local3.m_invMass; _local19 = _local4.m_invMass; _local20 = _local3.m_invI; _local21 = _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)); _local22 = tImpulse.x; _local23 = 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(); _local24 = 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 GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } 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)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; 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; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (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; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (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; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _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; } public function GetMotorTorque():Number{ return (m_motorForce); } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; 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:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (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; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (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; _local11 = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); _local12 = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); _local13 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); _local14 = (-(_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); _local15 = (_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)); }; } } }//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 referenceAngle:Number; public var upperAngle:Number; public var lowerAngle:Number; public var motorSpeed:Number; public var maxMotorTorque:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; 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.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_next:b2Body; 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_xf:b2XForm; 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_angularDamping:Number; public var m_invI:Number; public var m_linearVelocity:b2Vec2; public var m_sleepTime:Number; public var m_shapeCount:int; 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){ var _local3:b2Mat22; var _local4:b2Vec2; 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); _local3 = m_xf.R; _local4 = 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{ var _local1:b2Mat22; var _local2:b2Vec2; m_xf.R.Set(m_sweep.a); _local1 = m_xf.R; _local2 = 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; var _local2:Number; var _local3:Number; var _local4:b2MassData; var _local5:b2Mat22; var _local6:b2Vec2; var _local7:int; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; _local2 = 0; _local3 = 0; _local4 = 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); _local5 = m_xf.R; _local6 = 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; }; _local7 = 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 _local4:b2Mat22; var _local5:b2Vec2; var _local6:Boolean; 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); _local4 = m_xf.R; _local5 = 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); _local6 = false; _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 _local1:b2XForm; var _local2:b2Mat22; var _local3:b2Vec2; var _local4:b2Shape; var _local5:Boolean; _local1 = s_xf1; _local1.R.Set(m_sweep.a0); _local2 = _local1.R; _local3 = 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))); _local5 = true; _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 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 GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = 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 GetAngularVelocity():Number{ return (m_angularVelocity); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; 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); _local3 = m_xf.R; _local4 = 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; }; _local5 = 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; _local2 = 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{ var _local2:b2Shape; var _local3:b2Shape; var _local4:Boolean; if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); _local2 = m_shapeList; _local3 = null; _local4 = false; 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; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = 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 isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var angularDamping:Number; public var fixedRotation:Boolean; public var angle:Number; 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; var _local4:b2FilterData; var _local5:Boolean; _local3 = _arg1.GetFilterData(); _local4 = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; _local5 = ((!(((_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.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; 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 PairAdded(_arg1, _arg2){ var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2Contact; _local3 = (_arg1 as b2Shape); _local4 = (_arg2 as b2Shape); _local5 = _local3.m_body; _local6 = _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); }; _local7 = 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); } override public function PairRemoved(_arg1, _arg2, _arg3):void{ var _local4:b2Contact; if (_arg3 == null){ return; }; _local4 = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:int; var _local5:b2Body; var _local6:b2Body; 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; _local2 = _arg1.m_shape1; _local3 = _arg1.m_shape2; _local4 = _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; }; _local5 = _local2.m_body; _local6 = _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--; } public function Collide():void{ var _local1:b2Contact; var _local2:b2Body; var _local3:b2Body; _local1 = 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.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; 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_lineThickness:Number;// = 8 public var m_drawFlags:uint; public var m_sprite:Sprite; public var m_drawScale:Number;// = 1 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_drawScale = 1; m_lineThickness = 8; m_alpha = 1; m_fillAlpha = 1; m_xformScale = 1; super(); m_drawFlags = 0; } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); _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 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)); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(); 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(); } 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 GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); _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)); } } }//package Box2D.Dynamics
Section 71
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeJoint(_arg1:b2Joint):void{ } public function SayGoodbyeShape(_arg1:b2Shape):void{ } } }//package Box2D.Dynamics
Section 72
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_joints:Array; public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies: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 _local4:int; 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; }; _local4 = 0; 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 Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local8:Number; var _local9:b2ContactSolver; var _local10:b2Vec2; var _local11:UserData; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:int; var _local16:Boolean; var _local17:Boolean; var _local18:Boolean; var _local19:Number; var _local20:Number; var _local21:Number; _local8 = _arg2.Length(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local10 = new b2Vec2(_arg2.x, _arg2.y); _local11 = (_local6.GetUserData() as UserData); if (_local11._helium){ _local10.x = -(_arg2.x); _local10.y = -(_arg2.y); } else { if (_local11._directedGravity){ _local12 = _local6.GetAngle(); _local12 = (_local12 + (Math.PI * 1.5)); _local13 = -(Math.cos(_local12)); _local14 = -(Math.sin(_local12)); _local10.x = (_local13 * _local8); _local10.y = (_local14 * _local8); }; }; _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_local10.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_local10.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++; }; _local9 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local9.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local9.SolveVelocityConstraints(); _local15 = 0; while (_local15 < m_jointCount) { _local7 = m_joints[_local15]; _local7.SolveVelocityConstraints(_arg1); _local15++; }; _local5++; }; _local9.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) { _local16 = _local9.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local17 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local18 = _local7.SolvePositionConstraints(); _local17 = ((_local17) && (_local18)); _local5++; }; if (((_local16) && (_local17))){ break; }; m_positionIterationCount++; }; }; Report(_local9.m_constraints); if (_arg4){ _local19 = Number.MAX_VALUE; _local20 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local21 = (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; _local19 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local21)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local20)))){ _local6.m_sleepTime = 0; _local19 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local19 = b2Math.b2Min(_local19, _local6.m_sleepTime); }; }; _local5++; }; if (_local19 >= 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 AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:b2ContactSolver; var _local4:Number; var _local5:b2Body; var _local6:Boolean; _local3 = 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++; }; _local4 = 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.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import TestBed.*; 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){ var _local4:b2BodyDef; 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); _local4 = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2XForm; var _local5:b2XForm; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; _local2 = _arg1.m_body1; _local3 = _arg1.m_body2; _local4 = _local2.m_xf; _local5 = _local3.m_xf; _local6 = _local4.position; _local7 = _local5.position; _local8 = _arg1.GetAnchor1(); _local9 = _arg1.GetAnchor2(); _local10 = 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 _local1:uint; var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2XForm; var _local12:b2AABB; var _local13:b2AABB; var _local14:Array; var _local15:Boolean; var _local16:UserData; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); _local1 = m_debugDraw.GetFlags(); _local7 = new b2Vec2(); _local8 = new b2Vec2(); _local9 = new b2Vec2(); _local10 = new b2Color(0, 0, 0); _local12 = new b2AABB(); _local13 = new b2AABB(); _local14 = [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(); for (;_local4;(_local4 = _local4.m_next)) { if (_local3.m_userData != null){ _local16 = (_local3.m_userData as UserData); if (_local16._sprite == null){ if (_local16._iD == 26){ DrawShape(_local4, _local11, new b2Color((0 / 0xFF), (0 / 0xFF), (0 / 0xFF)), _local15); } else { if (_local16._iD == 56){ DrawShape(_local4, _local11, new b2Color((0 / 0xFF), (0xFF / 0xFF), (0xFF / 0xFF)), _local15); } else { DrawShape(_local4, _local11, new b2Color((0 / 0xFF), (0 / 0xFF), (0 / 0xFF)), _local15); }; }; } else { if ((((Test.sm_masterSpriteAlpha < 1)) && (_local16._flash))){ DrawShape(_local4, _local11, new b2Color((0xFF / 0xFF), (0xFF / 0xFF), (0xFF / 0xFF)), _local15); }; }; continue; } else { if (_local3.IsStatic()){ DrawShape(_local4, _local11, new b2Color((0 / 0xFF), (0 / 0xFF), (0 / 0xFF)), _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); }; }; }; }; _local3 = _local3.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local2:b2JointEdge; var _local3:b2Shape; var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; _local2 = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; _local3 = _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 _local5:b2Color; 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; _local5 = 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 _local3:b2Island; var _local4:b2Contact; var _local5:b2Joint; var _local6:int; var _local7:Array; var _local8:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; _local3 = 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; }; _local4 = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; _local5 = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; _local6 = m_bodyCount; _local7 = new Array(_local6); _local8 = 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; var _local5:int; var _local6:int; _local4 = new Array(_arg3); _local5 = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); _local6 = 0; 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 _local8:b2Island; var _local9:int; var _local10:Array; 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; _local8 = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); _local9 = m_bodyCount; _local10 = 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 Validate():void{ m_broadPhase.Validate(); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function GetBodyList():b2Body{ return (m_bodyList); } 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 _local2:b2Joint; var _local3:b2Body; var _local4:b2Shape; _local2 = 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 _local2:Boolean; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:b2Shape; _local2 = _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; }; _local3 = _arg1.m_body1; _local4 = _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{ var _local2:b2Body; if (m_lock == true){ return (null); }; _local2 = 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{ var _local3:b2TimeStep; m_lock = true; _local3 = 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
//MD5 (com.adobe.crypto.MD5) package com.adobe.crypto { import com.adobe.utils.*; public class MD5 { private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function createBlocks(_arg1:String):Array{ var _local2:Array; var _local3:int; var _local4:int; var _local5:int; _local2 = new Array(); _local3 = (_arg1.length * 8); _local4 = 0xFF; _local5 = 0; while (_local5 < _local3) { _local2[(_local5 >> 5)] = (_local2[(_local5 >> 5)] | ((_arg1.charCodeAt((_local5 / 8)) & _local4) << (_local5 % 32))); _local5 = (_local5 + 8); }; _local2[(_local3 >> 5)] = (_local2[(_local3 >> 5)] | (128 << (_local3 % 32))); _local2[((((_local3 + 64) >>> 9) << 4) + 14)] = _local3; return (_local2); } private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function f(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg2) | (~(_arg1) & _arg3))); } private static function g(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg3) | (_arg2 & ~(_arg3)))); } private static function h(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 ^ _arg2) ^ _arg3)); } private static function i(_arg1:int, _arg2:int, _arg3:int):int{ return ((_arg2 ^ (_arg1 | ~(_arg3)))); } private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{ var _local9:int; _local9 = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8); return ((IntUtil.rol(_local9, _arg7) + _arg3)); } private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hash(_arg1:String):String{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:Array; var _local11:int; var _local12:int; _local2 = 1732584193; _local3 = -271733879; _local4 = -1732584194; _local5 = 271733878; _local10 = createBlocks(_arg1); _local11 = _local10.length; _local12 = 0; while (_local12 < _local11) { _local6 = _local2; _local7 = _local3; _local8 = _local4; _local9 = _local5; _local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 0)], 7, -680876936); _local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 1)], 12, -389564586); _local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 2)], 17, 606105819); _local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 3)], 22, -1044525330); _local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 4)], 7, -176418897); _local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 5)], 12, 1200080426); _local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 6)], 17, -1473231341); _local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 7)], 22, -45705983); _local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 8)], 7, 1770035416); _local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 9)], 12, -1958414417); _local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 10)], 17, -42063); _local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 11)], 22, -1990404162); _local2 = ff(_local2, _local3, _local4, _local5, _local10[(_local12 + 12)], 7, 1804603682); _local5 = ff(_local5, _local2, _local3, _local4, _local10[(_local12 + 13)], 12, -40341101); _local4 = ff(_local4, _local5, _local2, _local3, _local10[(_local12 + 14)], 17, -1502002290); _local3 = ff(_local3, _local4, _local5, _local2, _local10[(_local12 + 15)], 22, 1236535329); _local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 1)], 5, -165796510); _local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 6)], 9, -1069501632); _local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 11)], 14, 643717713); _local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 0)], 20, -373897302); _local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 5)], 5, -701558691); _local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 10)], 9, 38016083); _local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 15)], 14, -660478335); _local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 4)], 20, -405537848); _local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 9)], 5, 568446438); _local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 14)], 9, -1019803690); _local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 3)], 14, -187363961); _local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 8)], 20, 1163531501); _local2 = gg(_local2, _local3, _local4, _local5, _local10[(_local12 + 13)], 5, -1444681467); _local5 = gg(_local5, _local2, _local3, _local4, _local10[(_local12 + 2)], 9, -51403784); _local4 = gg(_local4, _local5, _local2, _local3, _local10[(_local12 + 7)], 14, 1735328473); _local3 = gg(_local3, _local4, _local5, _local2, _local10[(_local12 + 12)], 20, -1926607734); _local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 5)], 4, -378558); _local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 8)], 11, -2022574463); _local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 11)], 16, 1839030562); _local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 14)], 23, -35309556); _local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 1)], 4, -1530992060); _local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 4)], 11, 1272893353); _local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 7)], 16, -155497632); _local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 10)], 23, -1094730640); _local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 13)], 4, 681279174); _local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 0)], 11, -358537222); _local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 3)], 16, -722521979); _local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 6)], 23, 76029189); _local2 = hh(_local2, _local3, _local4, _local5, _local10[(_local12 + 9)], 4, -640364487); _local5 = hh(_local5, _local2, _local3, _local4, _local10[(_local12 + 12)], 11, -421815835); _local4 = hh(_local4, _local5, _local2, _local3, _local10[(_local12 + 15)], 16, 530742520); _local3 = hh(_local3, _local4, _local5, _local2, _local10[(_local12 + 2)], 23, -995338651); _local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 0)], 6, -198630844); _local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 7)], 10, 1126891415); _local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 14)], 15, -1416354905); _local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 5)], 21, -57434055); _local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 12)], 6, 1700485571); _local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 3)], 10, -1894986606); _local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 10)], 15, -1051523); _local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 1)], 21, -2054922799); _local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 8)], 6, 1873313359); _local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 15)], 10, -30611744); _local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 6)], 15, -1560198380); _local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 13)], 21, 1309151649); _local2 = ii(_local2, _local3, _local4, _local5, _local10[(_local12 + 4)], 6, -145523070); _local5 = ii(_local5, _local2, _local3, _local4, _local10[(_local12 + 11)], 10, -1120210379); _local4 = ii(_local4, _local5, _local2, _local3, _local10[(_local12 + 2)], 15, 718787259); _local3 = ii(_local3, _local4, _local5, _local2, _local10[(_local12 + 9)], 21, -343485551); _local2 = (_local2 + _local6); _local3 = (_local3 + _local7); _local4 = (_local4 + _local8); _local5 = (_local5 + _local9); _local12 = (_local12 + 16); }; return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5))); } private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } } }//package com.adobe.crypto
Section 76
//IntUtil (com.adobe.utils.IntUtil) package com.adobe.utils { public class IntUtil { private static var hexChars:String = "0123456789abcdef"; public static function toHex(_arg1:int, _arg2:Boolean=false):String{ var _local3:String; var _local4:int; var _local5:int; _local3 = ""; if (_arg2){ _local4 = 0; while (_local4 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15)))); _local4++; }; } else { _local5 = 0; while (_local5 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15)))); _local5++; }; }; return (_local3); } public static function ror(_arg1:int, _arg2:int):uint{ var _local3:int; _local3 = (32 - _arg2); return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3)))); } public static function rol(_arg1:int, _arg2:int):int{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } } }//package com.adobe.utils
Section 77
//GCSWFConnection (gc.utils.GCSWFConnection) package gc.utils { import flash.events.*; import flash.net.*; public class GCSWFConnection extends EventDispatcher { protected var _host:Boolean; protected var _connected:Boolean; protected var _baseID:String; public var clientVersion:String; protected var _callbackObjects:Array; protected var _lc:LocalConnection; protected var _version:String; protected var _myID:String; protected var _client:Object; protected var _logName:String;// = "GC-API" protected var _close:Boolean; protected var _extID:String; protected var _queuedMessages:Array; public static const CONNECTED:String = "CONNECTED"; public function GCSWFConnection(_arg1:String, _arg2:Object, _arg3:String="unknown"){ var connectionID = _arg1; var client = _arg2; var version = _arg3; super(); _connected = false; _host = true; _queuedMessages = []; _close = false; _client = client; _version = version; _baseID = connectionID.split(":").join(""); _lc = new LocalConnection(); _lc.allowDomain("*"); _lc.allowInsecureDomain("*"); _lc.client = this; _lc.addEventListener(StatusEvent.STATUS, onStatus); try { _lc.connect((_baseID + "_HOST")); } catch(e:ArgumentError) { _host = false; }; _myID = (_baseID + (_host) ? "_HOST" : "_CLIENT"); _extID = (_baseID + (_host) ? "_CLIENT" : "_HOST"); if (!_host){ try { _lc.connect(_myID); } catch(e:ArgumentError) { trace((("[" + _logName) + "] [GCSWFConnection] ERROR! Failed to connect")); }; _lc.send(_extID, "GC_utils_GCSWFConnection_init", _version); trace((("[" + _logName) + "] [GCSWFConnection] Connected as client..")); } else { trace((("[" + _logName) + "] [GCSWFConnection] Connected as host..")); }; } protected function bridgeConnected():void{ var _local2:String; var _local3:Array; var _local4:Array; var _local1:int; while (_local1 < _queuedMessages.length) { _local2 = _queuedMessages[_local1].methodName; _local3 = _queuedMessages[_local1].methodArgs; _local4 = [_local2]; if (_local3){ _local4 = _local4.concat(_local3); }; send.apply(null, _local4); _local1++; }; _queuedMessages = []; if (_close){ close(); }; } public function GC_utils_GCSWFConnection_init(_arg1:String):void{ trace((("[" + _logName) + "] [GCSWFConnection] Reccieved Init")); if (_host){ _lc.send(_extID, "GC_utils_GCSWFConnection_init", _version); }; _connected = true; clientVersion = _arg1; bridgeConnected(); dispatchEvent(new Event(CONNECTED)); } public function send(_arg1:String, ... _args):void{ if (_connected){ _args.unshift(_arg1); _args.unshift("GC_utils_GCSWFConnection_receive"); _args.unshift(_extID); _lc.send.apply(_lc, _args); } else { _queuedMessages.push({methodName:_arg1, methodArgs:_args}); }; } public function get connected():Boolean{ return (_connected); } public function get id():String{ return (_baseID); } private function onStatus(_arg1:StatusEvent):void{ if (_arg1.level == "error"){ }; } public function GC_utils_GCSWFConnection_receive(_arg1:String, ... _args):void{ var methodName = _arg1; var args = _args; try { _client[methodName].apply(_client, args); } catch(e) { }; } public function close():void{ trace((("[" + _logName) + "] [GCSWFConnection] Connection Closing")); if (_queuedMessages.length != 0){ _close = true; return; }; try { _lc.close(); } catch(e) { }; _lc = null; _connected = false; } } }//package gc.utils
Section 78
//FpsCounter (General.FpsCounter) package General { import flash.display.*; import flash.text.*; import flash.system.*; import flash.utils.*; public class FpsCounter extends Sprite { private var oldT:uint; private var mfpsCount:int;// = 0 private var avgCount:int;// = 30 private var avgCount2:int;// = 30 private var textBox:TextField; private var mfpsCount2:int;// = 0 private var textBox3:TextField; private var textBox2:TextField; public function FpsCounter(){ mfpsCount = 0; mfpsCount2 = 0; avgCount = 30; avgCount2 = 30; super(); textBox = new TextField(); textBox.text = "..."; textBox.textColor = 11145540; textBox.selectable = false; textBox2 = new TextField(); textBox2.text = "..."; textBox2.width = 150; textBox2.textColor = 11145540; textBox2.selectable = false; textBox2.y = 15; textBox3 = new TextField(); textBox3.text = "..."; textBox3.textColor = 11145540; textBox3.selectable = false; textBox3.y = 30; oldT = getTimer(); addChild(textBox); addChild(textBox2); addChild(textBox3); } public function updateEnd():void{ } public function updatePhys(_arg1:uint):void{ var _local2:uint; var _local3:uint; _local2 = getTimer(); _local3 = (_local2 - _arg1); mfpsCount2 = (mfpsCount2 + _local3); if (avgCount2 < 1){ textBox2.text = String((((("Physics step: " + Math.round((mfpsCount2 / 30))) + " ms (") + Math.round((1000 / (mfpsCount2 / 30)))) + " fps)")); avgCount2 = 30; mfpsCount2 = 0; }; avgCount2--; } public function update():void{ var _local1:uint; var _local2:uint; _local1 = getTimer(); _local2 = (_local1 - oldT); mfpsCount = (mfpsCount + _local2); if (avgCount < 1){ textBox.text = String((Math.round((1000 / (mfpsCount / 30))) + " fps average")); avgCount = 30; mfpsCount = 0; }; avgCount--; oldT = getTimer(); textBox3.text = (Math.round((System.totalMemory / (0x0400 * 0x0400))) + " MB used"); } } }//package General
Section 79
//FRateLimiter (General.FRateLimiter) package General { import flash.utils.*; public class FRateLimiter { private static var newT:uint = oldT; private static var oldT:uint = getTimer(); public static function limitFrame(_arg1:uint):void{ var _local2:uint; _local2 = (1000 / _arg1); while (Math.abs((newT - oldT)) < _local2) { newT = getTimer(); }; oldT = getTimer(); } } }//package General
Section 80
//Input (General.Input) package General { import flash.display.*; import flash.events.*; public class Input extends Sprite { private static var keyArr:Array; public static var mousseX:Number = -10000; public static var mousseY:Number = -10000; public static var mouseReleased:Boolean = false; public static var mouseScreenY:Number = 0; public static var mouseScreenX:Number = 0; public static var mouseDragY:Number = 0; public static var mouseOver:Boolean = false; public static var mouseDragX:Number = 0; public static var mouse:Sprite = new Sprite(); public static var m_this:Input = null; public static var previousEventButtonDown:Boolean = false; public static var timeSinceLastKey:int = 0; public static var mousePressed:Boolean = false; public static var mouseOffsetX:Number = 0; public static var mouseOffsetY:Number = 0; public static var ascii:Array; public static var mouseDownX:Number = 0; public static var mouseDownY:Number = 0; public static var previousEventStageX:Number = 0; public static var previousEventStageY:Number = 0; private static var bufferSize:int; public static var m_stageMc:Sprite; public static var mouseDown:Boolean = false; public static var lastKey:int = 0; public static var mouseClicked:Boolean = false; private static var keyState:Array; private static var keyBuffer:Array; public function Input(_arg1:Sprite){ var _local2:int; super(); m_this = this; m_stageMc = _arg1; ascii = new Array(222); fillAscii(); initKeyState(); bufferSize = 5; keyBuffer = new Array(bufferSize); _local2 = 0; while (_local2 < bufferSize) { keyBuffer[_local2] = new Array(0, 0); _local2++; }; _arg1.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPress, false, 0, true); _arg1.stage.addEventListener(KeyboardEvent.KEY_UP, keyRelease, false, 0, true); _arg1.stage.addEventListener(MouseEvent.MOUSE_DOWN, mousePress, false, 0, true); _arg1.stage.addEventListener(MouseEvent.MOUSE_UP, mouseRelease, false, 0, true); _arg1.stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove, false, 0, true); _arg1.stage.addEventListener(Event.MOUSE_LEAVE, mouseLeave, false, 0, true); mouse.graphics.lineStyle(0.1, 0, 100); mouse.graphics.moveTo(0, 0); mouse.graphics.lineTo(0, 0.1); } public function mouseLeave(_arg1:Event):void{ mouseReleased = mouseDown; mouseDown = false; } public function mouseMove(_arg1:MouseEvent):void{ if (mouseDown != _arg1.buttonDown){ mouseDown = _arg1.buttonDown; mouseReleased = !(_arg1.buttonDown); mousePressed = _arg1.buttonDown; mouseDragX = 0; mouseDragY = 0; }; mouseScreenX = mouseX; mouseScreenY = mouseY; mousseX = (_arg1.stageX - m_stageMc.x); mousseY = (_arg1.stageY - m_stageMc.y); mouseOffsetX = (mousseX - mouse.x); mouseOffsetY = (mousseY - mouse.y); if (mouseDown){ mouseDragX = (mouseDragX + mouseOffsetX); mouseDragY = (mouseDragY + mouseOffsetY); }; mouse.x = mousseX; mouse.y = mousseY; previousEventButtonDown = _arg1.buttonDown; previousEventStageX = _arg1.stageX; previousEventStageY = _arg1.stageY; } public function keyPress(_arg1:KeyboardEvent):void{ keyState[_arg1.keyCode] = Math.max(keyState[_arg1.keyCode], 1); lastKey = _arg1.keyCode; } private function fillAscii():void{ ascii[65] = "A"; ascii[66] = "B"; ascii[67] = "C"; ascii[68] = "D"; ascii[69] = "E"; ascii[70] = "F"; ascii[71] = "G"; ascii[72] = "H"; ascii[73] = "I"; ascii[74] = "J"; ascii[75] = "K"; ascii[76] = "L"; ascii[77] = "M"; ascii[78] = "N"; ascii[79] = "O"; ascii[80] = "P"; ascii[81] = "Q"; ascii[82] = "R"; ascii[83] = "S"; ascii[84] = "T"; ascii[85] = "U"; ascii[86] = "V"; ascii[87] = "W"; ascii[88] = "X"; ascii[89] = "Y"; ascii[90] = "Z"; ascii[48] = "0"; ascii[49] = "1"; ascii[50] = "2"; ascii[51] = "3"; ascii[52] = "4"; ascii[53] = "5"; ascii[54] = "6"; ascii[55] = "7"; ascii[56] = "8"; ascii[57] = "9"; ascii[32] = "Spacebar"; ascii[17] = "Ctrl"; ascii[16] = "Shift"; ascii[192] = "~"; ascii[38] = "up"; ascii[40] = "down"; ascii[37] = "left"; ascii[39] = "right"; ascii[96] = "Numpad 0"; ascii[97] = "Numpad 1"; ascii[98] = "Numpad 2"; ascii[99] = "Numpad 3"; ascii[100] = "Numpad 4"; ascii[101] = "Numpad 5"; ascii[102] = "Numpad 6"; ascii[103] = "Numpad 7"; ascii[104] = "Numpad 8"; ascii[105] = "Numpad 9"; ascii[111] = "Numpad /"; ascii[106] = "Numpad *"; ascii[109] = "Numpad -"; ascii[107] = "Numpad +"; ascii[110] = "Numpad ."; ascii[45] = "Insert"; ascii[46] = "Delete"; ascii[33] = "Page Up"; ascii[34] = "Page Down"; ascii[35] = "End"; ascii[36] = "Home"; ascii[112] = "F1"; ascii[113] = "F2"; ascii[114] = "F3"; ascii[115] = "F4"; ascii[116] = "F5"; ascii[117] = "F6"; ascii[118] = "F7"; ascii[119] = "F8"; ascii[188] = ","; ascii[190] = "."; ascii[186] = ";"; ascii[222] = "'"; ascii[219] = "["; ascii[221] = "]"; ascii[189] = "-"; ascii[187] = "+"; ascii[220] = "\\"; ascii[191] = "/"; ascii[9] = "TAB"; ascii[8] = "Backspace"; ascii[27] = "ESC"; } public function resetMouse():void{ } public function keyRelease(_arg1:KeyboardEvent):void{ var _local2:int; keyState[_arg1.keyCode] = -1; _local2 = (bufferSize - 1); while (_local2 > 0) { keyBuffer[_local2] = keyBuffer[(_local2 - 1)]; _local2--; }; keyBuffer[0] = [_arg1.keyCode, 0]; } public function mousePress(_arg1:MouseEvent):void{ mousePressed = true; mouseDown = true; mouseDragX = 0; mouseDragY = 0; mouseDownX = mouse.x; mouseDownY = mouse.y; mouseClicked = true; } public function mouseMove2():void{ if (mouseDown != previousEventButtonDown){ mouseDown = previousEventButtonDown; mouseReleased = !(previousEventButtonDown); mousePressed = previousEventButtonDown; mouseDragX = 0; mouseDragY = 0; }; mouseScreenX = mouseX; mouseScreenY = mouseY; mousseX = (previousEventStageX - m_stageMc.x); mousseY = (previousEventStageY - m_stageMc.y); mouseOffsetX = (mousseX - mouse.x); mouseOffsetY = (mousseY - mouse.y); if (mouseDown){ mouseDragX = (mouseDragX + mouseOffsetX); mouseDragY = (mouseDragY + mouseOffsetY); }; mouse.x = mousseX; mouse.y = mousseY; } public static function getKeyHold(_arg1:int):int{ return (Math.max(0, keyState[_arg1])); } public static function isKeyPressed(_arg1:int):Boolean{ timeSinceLastKey = 0; return ((keyState[_arg1] == 1)); } public static function isKeyDown(_arg1:int):Boolean{ return ((keyState[_arg1] > 0)); } public static function getKeyString(_arg1:uint):String{ return (ascii[_arg1]); } public static function mouseRelease(_arg1:MouseEvent):void{ mouseDown = false; mouseReleased = true; mouseDragX = 0; mouseDragY = 0; } public static function isKeyReleased(_arg1:int):Boolean{ return ((keyState[_arg1] == -1)); } public static function isKeyInBuffer(_arg1:int, _arg2:int, _arg3:int):Boolean{ return ((((keyBuffer[_arg2][0] == _arg1)) && ((keyBuffer[_arg2][1] <= _arg3)))); } public static function mouseMoveTrigger():void{ m_this.mouseMove2(); } public static function update():void{ var _local1:int; var _local2:int; _local1 = 0; while (_local1 < keyArr.length) { if (keyState[keyArr[_local1]] != 0){ var _local3 = keyState; var _local4 = keyArr[_local1]; var _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; }; _local1++; }; _local2 = 0; while (_local2 < bufferSize) { _local3 = keyBuffer[_local2]; _local4 = 1; _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; _local2++; }; mouseReleased = false; mousePressed = false; mouseOver = false; } public static function initKeyState():void{ var _local1:int; keyState = new Array(222); keyArr = new Array(); _local1 = 0; while (_local1 < 222) { keyState[_local1] = new int(0); if (ascii[_local1] != undefined){ keyArr.push(_local1); }; _local1++; }; } } }//package General
Section 81
//MochiAd (mochi.as3.MochiAd) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.system.*; import flash.net.*; public class MochiAd { public static function getVersion():String{ return (MochiServices.getVersion()); } public static function showClickAwayAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_timeout:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var sendHostProgress:Boolean; var options = _arg1; DEFAULTS = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{ }, ad_finished:function ():void{ }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_timeout = options.ad_timeout; delete options.ad_timeout; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; sendHostProgress = false; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; _local3 = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.root == null){ _local3 = true; }; if (_local3){ delete this.onEnterFrame; }; }; doOnEnterFrame(chk); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _allowDomains(_arg1:String):String{ var _local2:String; _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType == "application"){ return (_local2); }; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (_arg1.origFrameRate != undefined){ _arg1.stage.frameRate = _arg1.origFrameRate; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad._containerLCName != undefined){ _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"}); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } public static function showInterLevelAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (_local2 > chk.ad_msec){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local3:Object; var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); }; return (_local3); } public static function _cleanup(_arg1:Object):void{ var idx:Number; var k:String; var lc:LocalConnection; var f:Function; var mc = _arg1; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ try { lc.client = null; lc.close(); } catch(e:Error) { }; }; setTimeout(f, 0); }; idx = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function load(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var depth:Number; var mc:MovieClip; var wh:Array; var lv:URLVariables; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!(clip is DisplayObject)){ trace("Warning: Object passed as container clip not a descendant of the DisplayObject type"); return (null); }; if (MovieClip(clip).stage == null){ trace("Warning: Container clip for ad is not attached to the stage"); return (null); }; if (!MochiAd._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, "_mochiad", depth); wh = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; } else { trace("[MochiAd] NOTE: Security Sandbox Violation errors below are normal"); }; lv = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; mc.lcName = name; lv.lc = name; lv.st = getTimer(); loader = new Loader(); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime())); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{ trace("[MochiAds] Blocked URL"); }); if (!options.skip){ loader.load(req); }; mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return (undefined); }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; if (typeof(_arg1[_local4[_local5]]) == "function"){ return (_arg1[_local4[_local5]].apply(_arg1, _arg3)); }; return (undefined); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip; _local4 = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local3:Object; var _local4:Number; var _local5:Number; var _local6:Array; _local3 = _arg2.getBounds(_arg2.root); _local4 = 0; _local5 = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.xMax - _local3.xMin); _local5 = (_local3.yMax - _local3.yMin); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function adShowing(_arg1:Object):void{ _arg1.origFrameRate = _arg1.stage.frameRate; _arg1.stage.frameRate = 30; } public static function getValue(_arg1:Object, _arg2:String):Object{ var _local3:Array; var _local4:Number; _local3 = _arg2.split("."); _local4 = 0; while (_local4 < (_local3.length - 1)) { if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){ return (undefined); }; _arg1 = _arg1[_local3[_local4]]; _local4++; }; return (_arg1[_local3[_local4]]); } public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{ var _local4:Object; var _local5:Object; switch (_arg3.id){ case "setValue": MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value); break; case "getValue": _local4 = MochiAd.getValue(_arg1, _arg3.objectName); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4); break; case "runMethod": _local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5); break; default: trace(("[mochiads rpc] unknown rpc id: " + _arg3.id)); }; } public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return; }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; _arg1[_local4[_local5]] = _arg3; } public static function showPreGameAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var bar:MovieClip; var bar_w:Number; var bar_color:Number; var bar_background:Number; var bar_outline:Number; var backing_mc:MovieClip; var backing:Object; var inside_mc:MovieClip; var inside:Object; var outline_mc:MovieClip; var outline:Object; var complete:Boolean; var unloaded:Boolean; var progress:Number; var f:Function; var sendHostProgress:Boolean; var fn:Function; var r:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }, ad_progress:function (_arg1:Number):void{ }, progress_override:function (_arg1:Object):Number{ return (NaN); }, bar_offset:0}; options = MochiAd._parseOptions(options, DEFAULTS); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){ options.ad_started(); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); return; }; clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; if (options.skip){ ad_timeout = 0; }; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ var fn:Function; MochiAd._cleanup(mc); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); bar = createEmptyMovieClip(chk, "_mochiad_bar", 4); if (options.no_progress_bar){ bar.visible = false; delete options.no_progress_bar; } else { bar.x = (10 + options.bar_offset); bar.y = (h - 20); }; bar_w = ((w - bar.x) - 10); bar_color = options.color; delete options.color; bar_background = options.background; delete options.background; bar_outline = options.outline; delete options.outline; backing_mc = createEmptyMovieClip(bar, "_outline", 1); backing = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo(bar_w, 0); backing.lineTo(bar_w, 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); inside_mc = createEmptyMovieClip(bar, "_inside", 2); inside = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo(bar_w, 0); inside.lineTo(bar_w, 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; outline_mc = createEmptyMovieClip(bar, "_outline", 3); outline = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo(bar_w, 0); outline.lineTo(bar_w, 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; progress = Math.min(1, options.progress_override(clip)); f = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; if (!isNaN(progress)){ complete = (progress == 1); } else { if (clip.loaderInfo.bytesLoaded == clip.loaderInfo.bytesTotal){ complete = true; } else { if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; } else { clip.loaderInfo.addEventListener(Event.COMPLETE, f); }; } else { clip.loaderInfo.addEventListener(Event.COMPLETE, f); }; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; mc.rpcTestFn = function (_arg1:String):Object{ trace(("[MOCHIAD rpcTestFn] " + _arg1)); return (_arg1); }; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; sendHostProgress = false; mc.sendHostLoadProgress = function (_arg1:String):void{ sendHostProgress = true; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Object; var _local3:Number; var _local4:Boolean; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Object; var _local11:Number; var _local12:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; _local1 = this.parent.parent.root; _local2 = this.parent._mochiad_ctr; _local3 = (getTimer() - this.started); _local4 = false; _local5 = _local1.loaderInfo.bytesTotal; _local6 = _local1.loaderInfo.bytesLoaded; _local7 = Math.min(1, options.progress_override(_local1)); if (_local7 == 1){ complete = true; }; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; _local8 = ((100 * _local6) / _local5); if (!isNaN(_local7)){ _local8 = (100 * _local7); }; _local9 = ((100 * _local3) / chk.ad_msec); _local10 = this._mochiad_bar._inside; _local11 = Math.min(100, Math.min(((_local8) || (0)), _local9)); _local11 = Math.max(this.last_pcnt, _local11); this.last_pcnt = _local11; _local10.scaleX = (_local11 * 0.01); options.ad_progress(_local11); if (sendHostProgress){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local8}); if (_local8 >= 100){ sendHostProgress = false; }; }; if (!chk.showing){ _local12 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local12 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if ((((_local3 > chk.ad_timeout)) && ((_local8 == 100)))){ options.ad_failed(); _local4 = true; }; }; }; if (_local3 > chk.ad_msec){ _local4 = true; }; if (((complete) && (_local4))){ if (unloaded){ MochiAd.unload(_local1); } else { if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); MochiAd.showPreGameAd(_arg1); } public static function showTimedAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); MochiAd.showInterLevelAd(_arg1); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var f:Function; var mc = _arg1; f = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package mochi.as3
Section 82
//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 NO_USER:String = "NoUser"; public static const PROPERTIES_SIZE:String = "PropertiesSize"; public static const IO_ERROR:String = "IOError"; public static const STORE_ITEMS:String = "StoreItems"; public static const USER_INFO:String = "UserInfo"; public static const LOGIN_SHOW:String = "LoginShow"; public static const PROFILE_HIDE:String = "ProfileHide"; public static const STORE_SHOW:String = "StoreShow"; public static const ITEM_NEW:String = "ItemNew"; 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_SHOWN:String = "LoginShown"; public static var _user_info:Object = null; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public static var _inventory:MochiInventory; public static function getUserInfo():void{ MochiServices.send("coins_getUserInfo"); } public static function requestLogin():void{ MochiServices.send("coins_requestLogin"); } 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 get loggedIn():Boolean{ return (!((_user_info == null))); } public static function triggerEvent(_arg1:String, _arg2:Object):void{ if (_arg1 == LOGGED_IN){ _inventory = new MochiInventory(); _user_info = _arg2; } else { if (_arg1 == LOGGED_OUT){ if (inventory){ _inventory.release(); _inventory = null; }; _user_info = null; }; }; _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function getStoreItems():void{ MochiServices.send("coins_getStoreItems"); } public static function showLoginWidget(_arg1:Object=null):void{ MochiServices.setContainer(); MochiServices.bringToTop(); MochiServices.send("coins_showLoginWidget", {options:_arg1}); } public static function get inventory():MochiInventory{ return (_inventory); } 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 getAPIURL():String{ if (!_user_info){ return (null); }; return (_user_info.api_url); } public static function hideLoginWidget():void{ MochiServices.send("coins_hideLoginWidget"); } public static function getAPIToken():String{ if (!_user_info){ return (null); }; return (_user_info.api_token); } 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 83
//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 set value(_arg1:Number):void{ setValue(_arg1); } public function reencode():void{ var _local1:uint; _local1 = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function toString():String{ var _local1:String; _local1 = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function get value():Number{ return (Number(this.toString())); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String; _local3 = _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 addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package mochi.as3
Section 84
//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 85
//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 _local3:Object; var _local4:Object; _local3 = {}; 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; _local1 = (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 arguments 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; _local1 = (new Date().time - levelStart); trigger("end_level", {time:_local1}); } } }//package mochi.as3
Section 86
//MochiInventory (mochi.as3.MochiInventory) package mochi.as3 { import flash.events.*; import flash.utils.*; public dynamic class MochiInventory extends Proxy { private var _timer:Timer; private var _names:Array; private var _consumableProperties:Object; private var _syncID:Number; private var _outstandingID:Number; private var _syncPending:Boolean; public static const READY:String = "InvReady"; public static const ERROR:String = "Error"; public static const IO_ERROR:String = "IoError"; private static const CONSUMER_KEY:String = "MochiConsumables"; public static const WRITTEN:String = "InvWritten"; public static const NOT_READY:String = "InvNotReady"; public static const VALUE_ERROR:String = "InvValueError"; private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher(); public function MochiInventory():void{ MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems); MochiCoins.addEventListener(MochiCoins.LOGGED_IN, loggedIn); MochiCoins.addEventListener(MochiCoins.LOGGED_OUT, loggedOut); _syncPending = false; _outstandingID = 0; _syncID = 0; _timer = new Timer(1000); _timer.addEventListener(TimerEvent.TIMER, sync); _timer.start(); if (MochiCoins.loggedIn){ loggedIn(); } else { loggedOut(); }; } private function newItems(_arg1:Object):void{ this[_arg1.id] = (this[_arg1.id] + _arg1.count); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (-1); }; if (_consumableProperties[_arg1]){ return (MochiDigits(_consumableProperties[_arg1]).value); }; return (undefined); } public function release():void{ MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems); MochiCoins.removeEventListener(MochiCoins.LOGGED_IN, loggedIn); MochiCoins.removeEventListener(MochiCoins.LOGGED_OUT, loggedOut); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{ if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return (false); }; if (_consumableProperties[_arg1] == undefined){ return (false); }; return (true); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{ return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:MochiDigits; if (_consumableProperties == null){ triggerEvent(ERROR, {type:NOT_READY}); return; }; if (!(_arg2 is Number)){ triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2}); return; }; if (_consumableProperties[_arg1]){ _local3 = MochiDigits(_consumableProperties[_arg1]); if (_local3.value == _arg2){ return; }; _local3.value = _arg2; } else { _names.push(_arg1); _consumableProperties[_arg1] = new MochiDigits(_arg2); }; _syncID++; } private function sync(_arg1:Event=null):void{ var _local2:Object; var _local3:String; if (((_syncPending) || ((_syncID == _outstandingID)))){ return; }; _outstandingID = _syncID; _local2 = {}; for (_local3 in _consumableProperties) { _local2[_local3] = MochiDigits(_consumableProperties[_local3]).value; }; MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag); _syncPending = true; } private function putConsumableBag(_arg1:MochiUserData):void{ _syncPending = false; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); _outstandingID = -1; }; triggerEvent(WRITTEN, {}); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{ return (_names[(_arg1 - 1)]); } private function loggedIn(_arg1:Object=null):void{ MochiUserData.get(CONSUMER_KEY, getConsumableBag); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ if (!_consumableProperties[_arg1]){ return (false); }; _names.splice(_names.indexOf(_arg1), 1); delete _consumableProperties[_arg1]; return (true); } private function getConsumableBag(_arg1:MochiUserData):void{ var _local2:String; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); return; }; _consumableProperties = {}; _names = new Array(); if (_arg1.data){ for (_local2 in _arg1.data) { _names.push(_local2); _consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]); }; }; triggerEvent(READY, {}); } private function loggedOut(_arg1:Object=null):void{ _consumableProperties = null; } public static function triggerEvent(_arg1:String, _arg2:Object):void{ _dispatcher.triggerEvent(_arg1, _arg2); } public static function removeEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.removeEventListener(_arg1, _arg2); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } } }//package mochi.as3
Section 87
//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 _local2:Object; var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; _local2 = {}; 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 88
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.system.*; import flash.geom.*; import flash.net.*; 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 cb:String; var cblst:Object; var method:*; var methodName:String; var obj:Object; var pkg = _arg1; cb = pkg.callbackID; cblst = _clip._callbacks[cb]; if (!cblst){ return; }; method = cblst.callbackMethod; methodName = ""; obj = 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 _local3:Array; var _local4:int; var _local5:Array; var _local6:Array; var _local7:MovieClip; var _local8:LocalConnection; var _local9:String; var _local10:ByteArray; var _local11:ByteArray; var _local12:uint; var _local13:uint; var _local14:Loader; _local3 = [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]; _local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; _local6 = [0, 64, 0, 0, 0]; _local7 = new MovieClip(); _local8 = new LocalConnection(); _local9 = ((("_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); _local10 = new ByteArray(); _local11 = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); _local12 = ((_local3.length + _local11.length) + 4); _local13 = (_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 vars:Object; var avm1Click:DisplayObject; var s:String; var i:Number; 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; vars = 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); s = "?"; i = 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{ var _local2:Rectangle; if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); _local2 = 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{ var _local3:Number; _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; }; }; }; _local3 = 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.4 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; var _local3:String; _local2 = _arg1.target; _local3 = _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 _local2:Object; var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; _local2 = {}; 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 mochiLCURL:String; var req:URLRequest; var complete:Function; var clip = _arg1; loader = new Loader(); mochiLCURL = (_servURL + _mochiLC); req = new URLRequest(mochiLCURL); complete = 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; var _local4:String; var _local5:URLRequest; var _local6:URLVariables; _local3 = ("_mochiservices_com_" + _arg1); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; _local4 = (_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); _local5 = new URLRequest(_local4); _local6 = 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 (clip.stage == null){ trace("MochiServices connect requires the containing clip be attached to the stage"); }; 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 mc:MovieClip; var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; mc = 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 89
//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 = {}; } 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; }; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return (_syncContainer[_arg1]); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:String; if (_syncContainer[_arg1] == _arg2){ return; }; _local3 = _arg1.toString(); _syncContainer[_local3] = _arg2; MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2}); } } }//package mochi.as3
Section 90
//MochiUserData (mochi.as3.MochiUserData) package mochi.as3 { import flash.events.*; import flash.utils.*; import flash.net.*; public class MochiUserData extends EventDispatcher { public var callback:Function;// = null public var error:Event;// = null public var key:String;// = null public var operation:String;// = null public var data;// = null public var _loader:URLLoader; public function MochiUserData(_arg1:String="", _arg2:Function=null){ key = null; data = null; error = null; operation = null; callback = null; super(); this.key = _arg1; this.callback = _arg2; } public function securityErrorHandler(_arg1:SecurityErrorEvent):void{ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString()))); } public function putEvent(_arg1):void{ request("put", serialize(_arg1)); } public function request(_arg1:String, _arg2:ByteArray):void{ var api_url:String; var api_token:String; var args:URLVariables; var req:URLRequest; var _operation = _arg1; var _data = _arg2; operation = _operation; api_url = MochiCoins.getAPIURL(); api_token = MochiCoins.getAPIToken(); if ((((api_url == null)) || ((api_token == null)))){ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in")); return; }; _loader = new URLLoader(); args = new URLVariables(); args.op = _operation; args.key = key; req = new URLRequest((((MochiCoins.getAPIURL() + "/") + "MochiUserData?") + args.toString())); req.method = URLRequestMethod.POST; req.contentType = "application/x-mochi-userdata"; req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)]; req.data = _data; _loader.dataFormat = URLLoaderDataFormat.BINARY; _loader.addEventListener(Event.COMPLETE, completeHandler); _loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); try { _loader.load(req); } catch(e:SecurityError) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString()))); }; } public function completeHandler(_arg1:Event):void{ var event = _arg1; try { if (_loader.data.length){ data = deserialize(_loader.data); } else { data = null; }; } catch(e:Error) { errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString()))); return; }; if (callback != null){ performCallback(); } else { dispatchEvent(event); }; close(); } public function performCallback():void{ try { callback(this); } catch(e:Error) { trace(("[MochiUserData] exception during callback: " + e)); }; } public function serialize(_arg1):ByteArray{ var _local2:ByteArray; _local2 = new ByteArray(); _local2.objectEncoding = ObjectEncoding.AMF3; _local2.writeObject(_arg1); _local2.compress(); return (_local2); } public function errorHandler(_arg1:IOErrorEvent):void{ data = null; error = _arg1; if (callback != null){ performCallback(); } else { dispatchEvent(_arg1); }; close(); } public function getEvent():void{ request("get", serialize(null)); } override public function toString():String{ return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]")); } public function close():void{ if (_loader){ _loader.removeEventListener(Event.COMPLETE, completeHandler); _loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler); _loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); _loader.close(); _loader = null; }; error = null; callback = null; } public function deserialize(_arg1:ByteArray){ _arg1.objectEncoding = ObjectEncoding.AMF3; _arg1.uncompress(); return (_arg1.readObject()); } public static function get(_arg1:String, _arg2:Function):void{ var _local3:MochiUserData; _local3 = new MochiUserData(_arg1, _arg2); _local3.getEvent(); } public static function put(_arg1:String, _arg2, _arg3:Function):void{ var _local4:MochiUserData; _local4 = new MochiUserData(_arg1, _arg3); _local4.putEvent(_arg2); } } }//package mochi.as3
Section 91
//AchievementConfig (MoFunZoneAPI.AchievementConfig) package MoFunZoneAPI { public class AchievementConfig { public var bringToTop:Boolean;// = true public var dialogScale:Number;// = 1 public var gameid:String;// = "" public var workspaceWidth:Number;// = 550 public var test:Boolean;// = true public var fadeout:Boolean;// = true public var workspaceHeight:Number;// = 400 public var autoPosition:String;// = "cc" public function AchievementConfig(){ test = true; gameid = ""; workspaceWidth = 550; workspaceHeight = 400; autoPosition = "cc"; bringToTop = true; fadeout = true; dialogScale = 1; super(); test = true; gameid = ""; workspaceWidth = 550; workspaceHeight = 400; autoPosition = "cc"; bringToTop = true; fadeout = true; dialogScale = 1; } } }//package MoFunZoneAPI
Section 92
//AchievementLoaderAS3 (MoFunZoneAPI.AchievementLoaderAS3) package MoFunZoneAPI { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.system.*; import flash.net.*; public class AchievementLoaderAS3 { private static var _achiconfig:AchievementConfig = null; private static var _intervalId:uint; private static var _achievement:MovieClip = null; private static var _readyFuntion:Function = null; public static function loadAchievement(_arg1:String, _arg2:Object, _arg3:AchievementConfig, _arg4=null){ var achievementload:Loader; var achievement_request:URLRequest; var ach_complete:Function; var status_loop:Function; var ach_ioerror:Function; var ach_http:Function; var ach_progress:Function; var ach_security:Function; var achievement_address = _arg1; var topleveltimeline = _arg2; var config = _arg3; var debug = _arg4; ach_complete = function (_arg1){ if (debug != null){ debug.text = "complete"; }; _achievement = topleveltimeline.addChild(_arg1.target.loader.content); _achievement.test = config.test; _achievement.gameid = config.gameid; _achievement.workspaceWidth = config.workspaceWidth; _achievement.workspaceHeight = config.workspaceHeight; _achievement.autoPosition = config.autoPosition; _achievement.bringToTop = config.bringToTop; _achievement.fadeout = config.fadeout; _achievement.dialogScale = config.dialogScale; if (debug != null){ debug.text = "config setup"; }; _achievement.play(); if (debug != null){ debug.text = "complete"; }; _intervalId = setInterval(status_loop, 1000); }; status_loop = function (){ if (_achievement.achistatus == "ok"){ trace("ready"); if (debug != null){ debug.text = "ready"; }; if (_readyFuntion != null){ _readyFuntion(); }; clearInterval(_intervalId); }; }; ach_ioerror = function (_arg1){ trace("Achievement SWF not found"); if (debug != null){ debug.text = "Achievement SWF not found"; }; }; ach_http = function (_arg1){ trace(("httpstatus: " + _arg1.status)); if (debug != null){ debug.text = ("httpstatus: " + _arg1.status); }; }; ach_progress = function (_arg1){ if (debug != null){ debug.text = (debug.text + ((("progressHandler: bytesLoaded=" + _arg1.bytesLoaded) + " bytesTotal=") + _arg1.bytesTotal)); }; }; ach_security = function (_arg1){ if (debug != null){ debug.text = _arg1; }; }; Security.allowDomain("*"); if (_achievement != null){ return; }; achievementload = new Loader(); achievement_request = new URLRequest(achievement_address); _achiconfig = config; achievementload.contentLoaderInfo.addEventListener(Event.COMPLETE, ach_complete); achievementload.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, ach_security); achievementload.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ach_ioerror); achievementload.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, ach_http); achievementload.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, ach_progress); try { achievementload.load(achievement_request); if (debug != null){ debug.text = "loading"; }; } catch(error) { if (debug != null){ debug.text = "loaderror"; }; }; } public static function readyCallBack(_arg1:Function){ _readyFuntion = _arg1; } public static function getAPI(){ return (_achievement); } } }//package MoFunZoneAPI
Section 93
//BitmapAsset (mx.core.BitmapAsset) package mx.core { import flash.display.*; public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject { mx_internal static const VERSION:String = "2.0.1.0"; public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } public function get measuredWidth():Number{ if (bitmapData){ return (bitmapData.width); }; return (0); } public function get measuredHeight():Number{ if (bitmapData){ return (bitmapData.height); }; return (0); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } } }//package mx.core
Section 94
//ButtonAsset (mx.core.ButtonAsset) package mx.core { public class ButtonAsset extends FlexSimpleButton implements IFlexAsset, IFlexDisplayObject { private var _measuredWidth:Number; private var _measuredHeight:Number; mx_internal static const VERSION:String = "2.0.1.0"; public function ButtonAsset(){ _measuredWidth = width; _measuredHeight = height; } public function get measuredWidth():Number{ return (_measuredWidth); } public function get measuredHeight():Number{ return (_measuredHeight); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } } }//package mx.core
Section 95
//ByteArrayAsset (mx.core.ByteArrayAsset) package mx.core { import flash.utils.*; public class ByteArrayAsset extends ByteArray implements IFlexAsset { mx_internal static const VERSION:String = "2.0.1.0"; } }//package mx.core
Section 96
//FlexBitmap (mx.core.FlexBitmap) package mx.core { import flash.display.*; import mx.utils.*; public class FlexBitmap extends Bitmap { mx_internal static const VERSION:String = "2.0.1.0"; public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){ var bitmapData = _arg1; var pixelSnapping = _arg2; var smoothing = _arg3; super(bitmapData, pixelSnapping, smoothing); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 97
//FlexMovieClip (mx.core.FlexMovieClip) package mx.core { import flash.display.*; import mx.utils.*; public class FlexMovieClip extends MovieClip { mx_internal static const VERSION:String = "2.0.1.0"; public function FlexMovieClip(){ super(); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 98
//FlexSimpleButton (mx.core.FlexSimpleButton) package mx.core { import flash.display.*; import mx.utils.*; public class FlexSimpleButton extends SimpleButton { mx_internal static const VERSION:String = "2.0.1.0"; public function FlexSimpleButton(){ super(); try { name = NameUtil.createUniqueName(this); } catch(e:Error) { }; } override public function toString():String{ return (NameUtil.displayObjectToString(this)); } } }//package mx.core
Section 99
//FontAsset (mx.core.FontAsset) package mx.core { import flash.text.*; public class FontAsset extends Font implements IFlexAsset { mx_internal static const VERSION:String = "2.0.1.0"; } }//package mx.core
Section 100
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 101
//IFlexDisplayObject (mx.core.IFlexDisplayObject) package mx.core { import flash.display.*; import flash.events.*; public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher { function get name():String; function set width(_arg1:Number):void; function get measuredHeight():Number; function set height(_arg1:Number):void; function get scaleY():Number; function move(_arg1:Number, _arg2:Number):void; function get scaleX():Number; function set mask(_arg1:DisplayObject):void; function set scaleX(_arg1:Number):void; function set name(_arg1:String):void; function set scaleY(_arg1:Number):void; function get visible():Boolean; function get measuredWidth():Number; function set visible(_arg1:Boolean):void; function get alpha():Number; function get height():Number; function get width():Number; function get parent():DisplayObjectContainer; function get mask():DisplayObject; function set x(_arg1:Number):void; function setActualSize(_arg1:Number, _arg2:Number):void; function set y(_arg1:Number):void; function get x():Number; function get y():Number; function set alpha(_arg1:Number):void; } }//package mx.core
Section 102
//IRepeaterClient (mx.core.IRepeaterClient) package mx.core { public interface IRepeaterClient { function set instanceIndices(_arg1:Array):void; function get isDocument():Boolean; function get repeaters():Array; function get instanceIndices():Array; function set repeaters(_arg1:Array):void; function initializeRepeaterArrays(_arg1:IRepeaterClient):void; function set repeaterIndices(_arg1:Array):void; function get repeaterIndices():Array; } }//package mx.core
Section 103
//MovieClipAsset (mx.core.MovieClipAsset) package mx.core { public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject { private var _measuredWidth:Number; private var _measuredHeight:Number; mx_internal static const VERSION:String = "2.0.1.0"; public function MovieClipAsset(){ _measuredWidth = width; _measuredHeight = height; } public function get measuredWidth():Number{ return (_measuredWidth); } public function get measuredHeight():Number{ return (_measuredHeight); } public function setActualSize(_arg1:Number, _arg2:Number):void{ width = _arg1; height = _arg2; } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } } }//package mx.core
Section 104
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset) package mx.core { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.system.*; public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject { private var requestedWidth:Number; private var loader:Loader;// = null private var requestedHeight:Number; private var initialized:Boolean;// = false protected var initialWidth:Number;// = 0 protected var initialHeight:Number;// = 0 mx_internal static const VERSION:String = "2.0.1.0"; public function MovieClipLoaderAsset(){ var _local1:LoaderContext; loader = null; initialized = false; initialWidth = 0; initialHeight = 0; super(); _local1 = new LoaderContext(); _local1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.loadBytes(movieClipData, _local1); addChild(loader); } private function completeHandler(_arg1:Event):void{ initialized = true; initialWidth = loader.width; initialHeight = loader.height; if (!isNaN(requestedWidth)){ loader.width = requestedWidth; }; if (!isNaN(requestedHeight)){ loader.height = requestedHeight; }; dispatchEvent(_arg1); } override public function get height():Number{ if (!initialized){ return (initialHeight); }; return (super.height); } override public function set height(_arg1:Number):void{ if (!initialized){ requestedHeight = _arg1; } else { loader.height = _arg1; }; } public function get movieClipData():ByteArray{ return (null); } override public function set width(_arg1:Number):void{ if (!initialized){ requestedWidth = _arg1; } else { loader.width = _arg1; }; } override public function get measuredWidth():Number{ return (initialWidth); } override public function get measuredHeight():Number{ return (initialHeight); } override public function get width():Number{ if (!initialized){ return (initialWidth); }; return (super.width); } } }//package mx.core
Section 105
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 106
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "2.0.1.0"; } }//package mx.core
Section 107
//NameUtil (mx.utils.NameUtil) package mx.utils { import flash.display.*; import flash.utils.*; import mx.core.*; public class NameUtil { mx_internal static const VERSION:String = "2.0.1.0"; private static var counter:int = 0; public static function displayObjectToString(_arg1:DisplayObject):String{ var _local2:String; var _local3:DisplayObject; var _local4:String; var _local5:Array; _local3 = _arg1; while (_local3 != null) { if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){ break; }; _local4 = _local3.name; if ((_local3 is IRepeaterClient)){ _local5 = IRepeaterClient(_local3).instanceIndices; if (_local5){ _local4 = (_local4 + (("[" + _local5.join("][")) + "]")); }; }; _local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2); _local3 = _local3.parent; }; return (_local2); } public static function createUniqueName(_arg1:Object):String{ var _local2:String; var _local3:int; var _local4:int; if (!_arg1){ return (null); }; _local2 = getQualifiedClassName(_arg1); _local3 = _local2.indexOf("::"); if (_local3 != -1){ _local2 = _local2.substr((_local3 + 2)); }; _local4 = _local2.charCodeAt((_local2.length - 1)); if ((((_local4 >= 48)) && ((_local4 <= 57)))){ _local2 = (_local2 + "_"); }; return ((_local2 + counter++)); } } }//package mx.utils
Section 108
//Test (TestBed.Test) package TestBed { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.geom.*; import flash.media.*; import General.*; import flash.ui.*; import flash.utils.*; public class Test { public var _classBrickH:Class; public var _classBrickI:Class; public var _loseLifePlayed:Boolean;// = false public var _classBrickL:Class; public var _timedOut:Boolean;// = false public var _classBrickO:Class; public var _classBrickJ:Class; public var _classRotatingCrossBlades:Class; public var _classBrickS:Class; public var _classBrickT:Class; public var _lives:int;// = 1 public var _classBrickZ:Class; public var _classSuperLong:Class; public var _classBrickWideCrossG:Class; public var _classBrickBlock:Class; private var _midBalanceGivesPoints:Boolean;// = false public var _allDoneShootStars:Boolean;// = false private var _diamondScale:Number;// = 1 private var _limitY320x480:Number;// = 0 private var _midBalanceTimer:int;// = 0 public var _classBrickOHelium:Class; public var _classBrickVeryLong:Class; public var _classBrickRocket:Class; public var _runningDiamonds:int;// = 0 public var _classSunHelium:Class; public var m_blockWidth:Number;// = 40 public var _selectionList:Array; public var m_finalPerfectBalance:Boolean;// = false public var _classBrickBlockGlass:Class; public var _classBrickAlien:Class; public var m_iterations:int;// = 15 public var _waitTimeMax:int;// = 540 private var _drawScaleAdder:Number;// = 0 public var _classBrickWacky1:Class; public var _classBrickWacky2:Class; public var _classBrickWacky4:Class; public var _selectionsAngle:Array; public var _allDropped:Boolean;// = false public var _running:Boolean;// = false public var _classBrickConnect:Class; public var _classBrickHoleBox:Class; public var _classBrickO1T:Class; private var _currentBlock:int;// = 0 public var _classBrickWacky4Mirror:Class; public var m_mouseBody:b2Body;// = null public var _classSun1T:Class; public var _classPyramid:Class; public var _classBrickBig:Class; public var m_angle:Number;// = 0 private var _limitY480x320:Number;// = 0 private var _flashOn:Boolean;// = false public var _classRotatingCrossBig:Class; public var _almostPerfectBalance:Boolean;// = false public var _addedDiamonds:int;// = 0 public var _classBrickHinge:Class; public var _classBrickWideCross:Class; public var _classBrickBlockG:Class; public var m_timeStep:Number;// = 0.00833333333333333 private var _getBodyAtMouseTouched:Boolean;// = false public var _classBrickJesus:Class; public var _classPyramidHelium:Class; public var _classBrickWacky1Mirror:Class; public var m_sprite:Sprite; public var _classBrickConnectMirror:Class; public var _waitTimeLeft:int;// = 0 public var _classBrickPacman:Class; public var _classBrickBlockStatic:Class; public var _classDiamond1:Class; public var _classDiamond2:Class; public var _stabile:Boolean;// = false public var _classTriangleRight:Class; public var _classDiamond3:Class; public var _selectionsN:int;// = 0 public var _selectionsX:Array; public var _classSun:Class; public var _classSaw2X:Class; public var _classBrickKiila:Class; public var _classPyramid1T:Class; public var _waiting:Boolean;// = false public var _classBrickOG:Class; public var _removed:int;// = 0 public var _selectionsY:Array; private var _shapeOffsetX:Number;// = 0 public var _classBrickPoleG:Class; private var _shapeOffsetY:Number;// = 0 private var _firstRun:Boolean;// = true public var m_bomb:b2Body; public var _classBrickBlock1T:Class; public var _classBrickPole:Class; private var _flashDown:Boolean;// = true private var _limitYStopMode:Number;// = 0 public var _classBrickHingeBig:Class; public var m_world:b2World; public var m_blockHeight:Number;// = 40 public var _chooseAShapeDone:Boolean;// = false public var _classTriangleLeft:Class; public var _classBrickOStatic:Class; private var _diamondsOffsetX:Number;// = 0 private var mousePVec:b2Vec2; public var _classSunStatic:Class; public var _classBrickCrossG:Class; public var _classBrickWhoaMirror:Class; public var _picks:int;// = 0 public var _classRotatingCrossBox:Class; public var _classSaw1:Class; public var _classPyramidMini:Class; public var _score:int;// = 0 public var _classSunG:Class; public var _classRotatingCrossNormal:Class; public var _classBrickHingeVeryBig:Class; private var _addDiamonds:Boolean;// = false private var _density:Number;// = 10 private var _sensorCheck:Boolean;// = true public var _radius:Number;// = 20 public var _classSunSmall:Class; public var _classBrickOGlass:Class; public var _classBrickSalmiack:Class; public var _classBrickCorner:Class; public var _classBrickHingeVeryBigStraight:Class; public var _classBrickWhoa:Class; public var _classRotatingCross:Class; public var _classBrickBlockHelium:Class; public var _classBrickCross:Class; public var _classBrickCornerLong:Class; public var _stabileCounter:int;// = 25 public var _classPyramidStatic:Class; private var _diamondID:int;// = 0 public var _classBrickIGlass:Class; public var m_mouseJoint:b2MouseJoint; private static const C_MRGN:Number = 0.2; private static const OUTLINE_WIDTH:int = 2; public static var m_physScale:Number = 20; public static var mouseYWorldPhys:Number; public static var _friction:Number = 0.8; public static var mouseYWorld:Number; public static var m_debugDraw:b2DebugDraw = null; public static var mouseXWorldPhys:Number; public static var sm_masterSpriteAlpha:Number = 1; public static var m_goalScale:Number = 1.5; public static var s_randomPointX:Number; public static var s_randomPointY:Number; public static var mouseXWorld:Number; public function Test(){ var _local1:b2AABB; var _local2:b2Vec2; var _local3:Boolean; var _local4:b2DebugDraw; _classSun = Test__classSun; _classSunSmall = Test__classSunSmall; _classSunG = Test__classSunG; _classBrickOG = Test__classBrickOG; _classBrickBlockG = Test__classBrickBlockG; _classBrickWideCrossG = Test__classBrickWideCrossG; _classBrickCrossG = Test__classBrickCrossG; _classBrickPoleG = Test__classBrickPoleG; _classDiamond1 = Test__classDiamond1; _classDiamond2 = Test__classDiamond2; _classDiamond3 = Test__classDiamond3; _classBrickConnect = Test__classBrickConnect; _classBrickConnectMirror = Test__classBrickConnectMirror; _classBrickWideCross = Test__classBrickWideCross; _classBrickRocket = Test__classBrickRocket; _classBrickPacman = Test__classBrickPacman; _classBrickH = Test__classBrickH; _classBrickHinge = Test__classBrickHinge; _classBrickHingeBig = Test__classBrickHingeBig; _classBrickHingeVeryBig = Test__classBrickHingeVeryBig; _classBrickHingeVeryBigStraight = Test__classBrickHingeVeryBigStraight; _classRotatingCrossBlades = Test__classRotatingCrossBlades; _classRotatingCrossBox = Test__classRotatingCrossBox; _classRotatingCrossNormal = Test__classRotatingCrossNormal; _classRotatingCross = Test__classRotatingCross; _classRotatingCrossBig = Test__classRotatingCrossBig; _classBrickI = Test__classBrickI; _classBrickT = Test__classBrickT; _classBrickO = Test__classBrickO; _classBrickS = Test__classBrickS; _classBrickZ = Test__classBrickZ; _classBrickL = Test__classBrickL; _classBrickJ = Test__classBrickJ; _classBrickBig = Test__classBrickBig; _classBrickCross = Test__classBrickCross; _classBrickVeryLong = Test__classBrickVeryLong; _classBrickAlien = Test__classBrickAlien; _classBrickWhoa = Test__classBrickWhoa; _classBrickWhoaMirror = Test__classBrickWhoaMirror; _classBrickBlock = Test__classBrickBlock; _classBrickCorner = Test__classBrickCorner; _classBrickCornerLong = Test__classBrickCornerLong; _classBrickJesus = Test__classBrickJesus; _classBrickWacky1 = Test__classBrickWacky1; _classBrickWacky1Mirror = Test__classBrickWacky1Mirror; _classBrickWacky2 = Test__classBrickWacky2; _classBrickWacky4 = Test__classBrickWacky4; _classBrickWacky4Mirror = Test__classBrickWacky4Mirror; _classBrickPole = Test__classBrickPole; _classSuperLong = Test__classSuperLong; _classTriangleLeft = Test__classTriangleLeft; _classTriangleRight = Test__classTriangleRight; _classPyramid = Test__classPyramid; _classPyramidMini = Test__classPyramidMini; _classBrickSalmiack = Test__classBrickSalmiack; _classBrickBlock1T = Test__classBrickBlock1T; _classSun1T = Test__classSun1T; _classBrickO1T = Test__classBrickO1T; _classPyramid1T = Test__classPyramid1T; _classBrickBlockHelium = Test__classBrickBlockHelium; _classSunHelium = Test__classSunHelium; _classBrickOHelium = Test__classBrickOHelium; _classPyramidHelium = Test__classPyramidHelium; _classBrickKiila = Test__classBrickKiila; _classBrickHoleBox = Test__classBrickHoleBox; _removed = 0; _score = 0; _lives = 1; m_blockWidth = 40; m_blockHeight = 40; _sensorCheck = true; _diamondScale = 1; _density = 10; _running = false; _timedOut = false; m_mouseBody = null; m_angle = 0; _waiting = false; _allDropped = false; _firstRun = true; _currentBlock = 0; _radius = 20; _drawScaleAdder = 0; _shapeOffsetX = 0; _shapeOffsetY = 0; _loseLifePlayed = false; m_finalPerfectBalance = false; _chooseAShapeDone = false; _allDoneShootStars = false; _diamondID = 0; _diamondsOffsetX = 0; _addDiamonds = false; _flashOn = false; _flashDown = true; _midBalanceGivesPoints = false; _midBalanceTimer = 0; _runningDiamonds = 0; _picks = 0; _waitTimeLeft = 0; _waitTimeMax = (60 * 9); _almostPerfectBalance = false; _addedDiamonds = 0; _stabileCounter = 25; _stabile = false; _selectionList = new Array(); _selectionsN = 0; _selectionsX = new Array(); _selectionsY = new Array(); _selectionsAngle = new Array(); _limitY320x480 = 0; _limitY480x320 = 0; _limitYStopMode = 0; m_iterations = 15; m_timeStep = (1 / 120); mousePVec = new b2Vec2(); _getBodyAtMouseTouched = false; super(); m_sprite = Main.m_sprite; _local1 = new b2AABB(); _local1.lowerBound.Set(-20000, -20000); _local1.upperBound.Set(20000, 20000); _local2 = new b2Vec2(0, 30); _local3 = true; m_world = new b2World(_local1, _local2, _local3); _local4 = new b2DebugDraw(); _local4.m_sprite = m_sprite; _local4.m_drawScale = 20; _local4.m_fillAlpha = 1; _local4.m_lineThickness = 1; _local4.m_drawFlags = (b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit); m_debugDraw = _local4; m_world.SetDebugDraw(_local4); m_world.SetContactListener(new ContactListener()); } public function AddShadowSprites():void{ var _local1:b2Body; _local1 = m_world.m_bodyList; while (_local1) { if (((!((_local1.m_userData == null))) && (!((_local1.m_userData._sprite == null))))){ CreateShadowSprite(_local1.m_userData); }; _local1 = _local1.m_next; }; } public function addPole(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-60 / _local5), (-10 / _local5)); _local8.vertices[1].Set((60 / _local5), (-10 / _local5)); _local8.vertices[2].Set((60 / _local5), (10 / _local5)); _local8.vertices[3].Set((-60 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 19; _local9 = new Bitmap(new _classBrickPole().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addCrossG(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set(((-5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((15 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local8.vertices[1].Set(((15 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((-15 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-15 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((-5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 69; _local6.m_userData._directedGravity = true; _local9 = new Bitmap(new _classBrickCrossG().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBoxG(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((20 / _local5), (20 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 67; _local6.m_userData._directedGravity = true; _local9 = new Bitmap(new _classBrickOG().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function CreateTextureForCircleBody(_arg1:b2Body, _arg2:Boolean, _arg3:Bitmap, _arg4:Boolean, _arg5:Boolean):void{ var _local6:b2Vec2; var _local7:UserData; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; _local6 = _arg1.GetPosition(); _local7 = _arg1.GetUserData(); _local8 = _local7._radius; _local9 = (((_local6.x * m_debugDraw.m_drawScale) + 300) - _local8); _local10 = (((_local6.y * m_debugDraw.m_drawScale) + 250) - _local8); _local11 = _arg1.GetAngle(); if (_arg5){ _local12 = (_arg3.width - _local8); _local13 = (_arg3.height - _local8); _local9 = (Math.random() * _local12); _local10 = (Math.random() * _local13); if (_local9 < 0){ _local9 = 0; }; if (_local10 < 0){ _local10 = 0; }; }; if (_arg2){ createSpriteCircleWithOutlines(_arg3, _local7, _local9, _local10); } else { createSpriteCircle(_arg3, _local7, _local9, _local10); }; if (_arg4){ CreateShadowSprite(_local7); }; } public function addSalmiack(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-20 / _local5), (-20 / _local5)); _local8.vertices[1].Set((60 / _local5), (-20 / _local5)); _local8.vertices[2].Set((20 / _local5), (20 / _local5)); _local8.vertices[3].Set((-60 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 64; _local9 = new Bitmap(new _classBrickSalmiack().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addCross(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set(((-5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((15 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local8.vertices[1].Set(((15 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((-15 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-15 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((-5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 8; _local9 = new Bitmap(new _classBrickCross().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addConnectMirror(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-50 / _local5), (0 / _local5)); _local8.vertices[1].Set((-30 / _local5), (0 / _local5)); _local8.vertices[2].Set((-30 / _local5), (20 / _local5)); _local8.vertices[3].Set((-50 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-50 / _local5), (-20 / _local5)); _local8.vertices[1].Set((10 / _local5), (-20 / _local5)); _local8.vertices[2].Set((10 / _local5), (0 / _local5)); _local8.vertices[3].Set((-50 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-10 / _local5), (0 / _local5)); _local8.vertices[1].Set((50 / _local5), (0 / _local5)); _local8.vertices[2].Set((50 / _local5), (20 / _local5)); _local8.vertices[3].Set((-10 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((30 / _local5), (-20 / _local5)); _local8.vertices[1].Set((50 / _local5), (-20 / _local5)); _local8.vertices[2].Set((50 / _local5), (0 / _local5)); _local8.vertices[3].Set((30 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 40; _local9 = new Bitmap(new _classBrickConnectMirror().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBoxGlass(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((20 / _local5), (20 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 72; _local6.m_userData._glass = true; _local6.m_userData._hitpoints = (20 * 20); _local9 = new Bitmap(new _classBrickOGlass().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addWideCrossG(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set(((-5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((50 / _local5), (((0 * 2) - 10) / _local5)); _local8.vertices[1].Set((50 / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[2].Set((-50 / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[3].Set((-50 / _local5), (((0 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((-5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 70; _local6.m_userData._directedGravity = true; _local9 = new Bitmap(new _classBrickWideCrossG().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function DestroyBodies():void{ var _local1:b2Body; _local1 = m_world.m_bodyList; while (_local1) { if (((!((_local1.m_userData == null))) && ((_local1.m_userData._iD >= 0)))){ DestroyBody(_local1); }; _local1 = _local1.m_next; }; } public function useEditorLevel(_arg1:String):void{ var items:Array; var i:int; var tX:Number; var tY:Number; var iPhone:int; var scaleIPhone:Number; var bb:b2Body; var iD:int; var radius:Number; var width:Number; var height:Number; var slippery:int; var angle:Number; var body:b2Body; var sensor:Boolean; var s = _arg1; trace(("Loading = " + s)); DestroyBodies(); _waiting = false; _stabile = false; _stabileCounter = 20; items = s.split(" "); if ((((items == null)) || ((items.length < 2)))){ return; }; i = 0; while (i < items.length) { if (items[i] == "<level>"){ break; }; trace(("item " + items[i])); i = (i + 1); }; trace(((i + " & ") + items.length)); if (i >= items.length){ i = -1; }; i = (i + 1); i = (i + 1); m_debugDraw.m_drawScale = Number(items[i]); i = (i + 1); _drawScaleAdder = Number(items[i]); trace("************************* LEVEL LOADED ************************"); i = (i + 1); iPhone = int(items[i]); calculateIPhoneDottedLineLimits(); trace(((" setOrientation(" + iPhone) + "); // 1 - 320x480, 0 - 480x320")); trace(" b2Body* body;"); trace(" b2Vec2 pos;"); scaleIPhone = ((10 / 8) * (m_debugDraw.m_drawScale / 20)); trace(((" setScaling(" + (m_debugDraw.m_drawScale / 20)) + ");")); try { while (i < items.length) { i = (i + 1); iD = int(items[i]); radius = 1; width = 30; height = 30; if (iD == 1000){ i = (i + 1); m_goalScale = Number(items[i]); } else { if (iD == 1001){ i = (i + 1); slippery = int(items[i]); if (slippery == 0){ Main._iceMode = false; } else { Main._iceMode = true; }; trace(((" setIceMode(" + Main._iceMode) + ");")); Main.iceModeExecute(); } else { if ((((iD < 26)) || ((iD >= 29)))){ if ((((((((((((((((((((iD == 20)) || ((iD == 34)))) || ((iD == 41)))) || ((iD == 44)))) || ((iD == 46)))) || ((iD == 50)))) || ((iD == 52)))) || ((iD == 56)))) || ((iD == 71)))) || ((iD == 75)))){ i = (i + 1); radius = Number(items[i]); }; i = (i + 1); tX = Number(items[i]); i = (i + 1); tY = Number(items[i]); i = (i + 1); angle = Number(items[i]); body = cloneBody(null, false, iD, radius, 0, 30, 30, tX, tY); body.SetXForm(new b2Vec2(tX, tY), angle); body.m_userData._startX = tX; body.m_userData._startY = tY; body.m_userData._startAngle = angle; sensor = isIPhoneSleeping(tY); radius = (radius * scaleIPhone); tX = (tX * scaleIPhone); tY = (tY * scaleIPhone); angle = (angle * -1); if ((((((iD == 4)) || ((iD == 5)))) || ((iD == 3)))){ angle = (angle + Math.PI); } else { if ((((iD == 13)) || ((iD == 29)))){ angle = (angle - (Math.PI * 0.5)); }; }; trace(((((((((((((" body = cloneBody(NULL, " + sensor) + ", ") + iD) + ", ") + radius) + ", ") + angle) + ", 1, 1, ") + tX) + ", ") + -(tY)) + ");")); trace(((((((" pos.x = " + tX) + "; pos.y = ") + -(tY)) + "; body->SetXForm(pos, ") + angle) + ");")); } else { if (iD == 27){ i = (i + 1); radius = Number(items[i]); i = (i + 1); tX = Number(items[i]); i = (i + 1); tY = Number(items[i]); body = cloneBody(null, false, iD, radius, 0); body.SetXForm(new b2Vec2(tX, tY), 0); body.m_userData._startX = tX; body.m_userData._startY = tY; body.m_userData._startAngle = angle; radius = (radius * scaleIPhone); tX = (tX * scaleIPhone); tY = (tY * scaleIPhone); trace(((((" body = cloneBody(NULL, false, " + iD) + ", ") + radius) + ", 0.0);")); trace(((((" pos.x = " + tX) + "; pos.y = ") + -(tY)) + "; body->SetXForm(pos, 0.0);")); } else { if (iD == 28){ i = (i + 1); tX = Number(items[i]); i = (i + 1); tY = Number(items[i]); i = (i + 1); width = Number(items[i]); i = (i + 1); height = Number(items[i]); i = (i + 1); angle = Number(items[i]); body = cloneBody(null, false, iD, 0, 0, width, height); body.SetXForm(new b2Vec2(tX, tY), angle); body.m_userData._startX = tX; body.m_userData._startY = tY; body.m_userData._startAngle = angle; radius = (radius * scaleIPhone); tX = (tX * scaleIPhone); tY = (tY * scaleIPhone); width = (width * scaleIPhone); height = (height * scaleIPhone); angle = (angle * -1); trace(((((((" body = cloneBody(NULL, false, " + iD) + ", 0.0, 0.0, ") + width) + ", ") + height) + ");")); trace(((((((" pos.x = " + tX) + "; pos.y = ") + -(tY)) + "; body->SetXForm(pos, ") + angle) + ");")); }; }; }; }; }; }; } catch(error:Error) { }; bb = m_world.m_bodyList; while (bb) { CreateSpriteForBody(bb); bb = bb.m_next; }; trace(" setScaling(1.0f);"); } public function addBall(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:int, _arg5:Number=1):b2Body{ return (addBallGeneral(_arg1, _arg2, _arg3, _arg4, _arg5, false)); } public function addCorner(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((10 / _local5), (-30 / _local5)); _local8.vertices[1].Set((30 / _local5), (-30 / _local5)); _local8.vertices[2].Set((30 / _local5), (30 / _local5)); _local8.vertices[3].Set((10 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-30 / _local5), (10 / _local5)); _local8.vertices[1].Set((10 / _local5), (10 / _local5)); _local8.vertices[2].Set((10 / _local5), (30 / _local5)); _local8.vertices[3].Set((-30 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 13; _local9 = new Bitmap(new _classBrickCorner().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } private function getParticlesInsideTriangle(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):int{ var _local4:Number; _local4 = (0.5 * Math.abs((((_arg1.x - _arg3.x) * (_arg2.y - _arg1.y)) - ((_arg1.x - _arg2.x) * (_arg3.y - _arg1.y))))); return ((_local4 * 128)); } public function CloneSprite(_arg1:b2Body):void{ var _local2:UserData; _local2 = _arg1.GetUserData(); if ((((_local2 == null)) || ((_local2._sprite == null)))){ return; }; _local2._sprite2 = new Bitmap(_local2._sprite.bitmapData.clone(), "auto", true); } public function addPyramidMini(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 3; _local8.vertices[2].Set((-10 / _local5), (10 / _local5)); _local8.vertices[1].Set((10 / _local5), (10 / _local5)); _local8.vertices[0].Set((0 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 25; _local9 = new Bitmap(new _classPyramidMini().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBlock(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((40 / _local5), (40 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 30; _local9 = new Bitmap(new _classBrickBlock().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addWacky4Mirror(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((10 / _local5), (-40 / _local5)); _local8.vertices[1].Set((30 / _local5), (-40 / _local5)); _local8.vertices[2].Set((30 / _local5), (40 / _local5)); _local8.vertices[3].Set((10 / _local5), (40 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-10 / _local5), (-40 / _local5)); _local8.vertices[1].Set((10 / _local5), (-40 / _local5)); _local8.vertices[2].Set((10 / _local5), (-20 / _local5)); _local8.vertices[3].Set((-10 / _local5), (-20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-30 / _local5), (-40 / _local5)); _local8.vertices[1].Set((-10 / _local5), (-40 / _local5)); _local8.vertices[2].Set((-10 / _local5), (0 / _local5)); _local8.vertices[3].Set((-30 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 32; _local9 = new Bitmap(new _classBrickWacky4Mirror().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBlockGlass(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((40 / _local5), (40 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 73; _local6.m_userData._glass = true; _local6.m_userData._hitpoints = (40 * 40); _local9 = new Bitmap(new _classBrickBlockGlass().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBoxStatic(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = 0; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((20 / _local5), (20 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 77; _local9 = new Bitmap(new _classBrickOStatic().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBallGeneral(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:int, _arg5:Number, _arg6:Boolean, _arg7:int=0):b2Body{ var _local8:Number; var _local9:b2BodyDef; var _local10:b2Body; var _local11:b2CircleDef; var _local12:UserData; _local8 = 20; _local9 = new b2BodyDef(); _local9.isSleeping = false; _local9.position.Set(_arg2, _arg3); if (_arg4 >= 0){ _local12 = new UserData(); _local12._iD = _arg4; _local12._radius = _arg1; _local12._circle = true; _local9.userData = _local12; }; _local10 = m_world.CreateBody(_local9); _local11 = new b2CircleDef(); _local11.isSensor = _arg6; _local11.radius = (_arg1 / _local8); _local11.friction = _friction; _local11.restitution = 0.1; if (_arg4 == 75){ _local11.density = 0; } else { _local11.density = _arg5; }; _local10.CreateShape(_local11); _local10.SetMassFromShapes(); return (_local10); } public function addVeryLong(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-60 / _local5), (-10 / _local5)); _local8.vertices[1].Set((60 / _local5), (-10 / _local5)); _local8.vertices[2].Set((60 / _local5), (10 / _local5)); _local8.vertices[3].Set((-60 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((40 / _local5), (-30 / _local5)); _local8.vertices[1].Set((60 / _local5), (-30 / _local5)); _local8.vertices[2].Set((60 / _local5), (-10 / _local5)); _local8.vertices[3].Set((40 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((40 / _local5), (10 / _local5)); _local8.vertices[1].Set((60 / _local5), (10 / _local5)); _local8.vertices[2].Set((60 / _local5), (30 / _local5)); _local8.vertices[3].Set((40 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 10; _local9 = new Bitmap(new _classBrickVeryLong().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addHingeVeryBigStraight(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; var _local10:b2RevoluteJointDef; var _local11:b2Vec2; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-100 / _local5), (-10 / _local5)); _local8.vertices[1].Set((100 / _local5), (-10 / _local5)); _local8.vertices[2].Set((100 / _local5), (10 / _local5)); _local8.vertices[3].Set((-100 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 65; _local9 = new Bitmap(new _classBrickHingeVeryBigStraight().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; if (!_arg2){ _local10 = new b2RevoluteJointDef(); _local11 = _local6.GetPosition(); _local10.Initialize(m_world.GetGroundBody(), _local6, _local11); _local10.enableMotor = false; _local6.m_userData._object = (m_world.CreateJoint(_local10) as b2RevoluteJoint); }; return (_local6); } public function DestroyBody(_arg1:b2Body):void{ if (((!((_arg1.m_userData == null))) && (!((_arg1.m_userData._sprite == null))))){ m_sprite.removeChild(_arg1.m_userData._sprite); _arg1.m_userData._sprite = null; }; if (((!((_arg1.m_userData == null))) && (!((_arg1.m_userData._sprite2 == null))))){ Main.m_this.removeChild(_arg1.m_userData._sprite2); _arg1.m_userData._sprite2 = null; }; if (((!((_arg1.m_userData == null))) && (!((_arg1.m_userData._spriteShadow == null))))){ m_sprite.removeChild(_arg1.m_userData._spriteShadow); _arg1.m_userData._spriteShadow = null; }; if (((!((_arg1.m_userData == null))) && (!((_arg1.m_userData._object == null))))){ m_world.DestroyJoint(_arg1.m_userData._object); }; m_world.DestroyBody(_arg1); } public function cloneBody(_arg1:b2Body, _arg2:Boolean, _arg3:int=-1, _arg4:Number=1, _arg5:Number=0, _arg6:Number=30, _arg7:Number=30, _arg8:Number=0, _arg9:Number=0):b2Body{ 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:int; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:UserData; _local10 = 0; _local18 = 1; _local19 = 1; _local20 = 1; _local21 = 1; _local22 = -1; if (_arg1 != null){ _local26 = _arg1.m_userData; _local13 = _arg1.GetPosition().x; _local14 = _arg1.GetPosition().y; _local11 = _arg1.GetAngle(); _local12 = _local26._radius; _local17 = _local26._iD; _local15 = _local26._width; _local16 = _local26._height; _local18 = _local26._scale; _local19 = _local26._width; _local20 = _local26._height; _local21 = _local26._alpha; _local22 = _local26._currentBlock; _local23 = _local26._startX; _local24 = _local26._startY; _local25 = _local26._startAngle; } else { _local13 = _arg8; _local14 = _arg9; _local11 = _arg5; _local12 = _arg4; _local17 = _arg3; _local15 = _arg6; _local16 = _arg7; _local19 = _local15; _local20 = _local16; _local23 = _local13; _local24 = _local14; _local25 = _arg5; }; if (((_sensorCheck) && (isIPhoneSleeping(_local14)))){ _arg2 = true; }; trace(("cloneBody() iD = " + _local17)); if (_local17 == 1){ _arg1 = addBox(_local10, _arg2, _local13, _local14); _local22 = 0; } else { if (_local17 == 2){ _arg1 = addLong(_local10, _arg2, _local13, _local14); _local22 = 1; } else { if (_local17 == 3){ _arg1 = addT(_local10, _arg2, _local13, _local14); _local22 = 2; } else { if (_local17 == 4){ _arg1 = addJ(_local10, _arg2, _local13, _local14); _local22 = 3; } else { if (_local17 == 5){ _arg1 = addL(_local10, _arg2, _local13, _local14); _local22 = 4; } else { if (_local17 == 6){ _arg1 = addS(_local10, _arg2, _local13, _local14); _local22 = 5; } else { if (_local17 == 7){ _arg1 = addZ(_local10, _arg2, _local13, _local14); _local22 = 6; } else { if (_local17 == 8){ _arg1 = addCross(_local10, _arg2, _local13, _local14); _local22 = 7; } else { if (_local17 == 9){ _arg1 = addBig(_local10, _arg2, _local13, _local14); _local22 = 8; } else { if (_local17 == 10){ _arg1 = addVeryLong(_local10, _arg2, _local13, _local14); _local22 = 9; } else { if (_local17 == 11){ _arg1 = addAlien(_local10, _arg2, _local13, _local14); _local22 = 10; } else { if (_local17 == 12){ _arg1 = addWhoa(_local10, _arg2, _local13, _local14); _local22 = 11; } else { if (_local17 == 13){ _arg1 = addCorner(_local10, _arg2, _local13, _local14); _local22 = 27; } else { if (_local17 == 14){ _arg1 = addJesus(_local10, _arg2, _local13, _local14); _local22 = 13; } else { if (_local17 == 15){ _arg1 = addWacky1(_local10, _arg2, _local13, _local14); _local22 = 23; } else { if (_local17 == 16){ _arg1 = addWacky2(_local10, _arg2, _local13, _local14); _local22 = 15; } else { if (_local17 == 17){ _arg1 = addWacky2(_local10, _arg2, _local13, _local14); _local22 = 15; } else { if (_local17 == 18){ _arg1 = addWacky4(_local10, _arg2, _local13, _local14); _local22 = 25; } else { if (_local17 == 19){ _arg1 = addPole(_local10, _arg2, _local13, _local14); _local22 = 17; } else { if (_local17 == 20){ _arg1 = addCircle(_local10, _arg2, _local13, _local14, _local12); _local22 = 18; } else { if (_local17 == 21){ _arg1 = addTriangleLeft(_local10, _arg2, _local13, _local14); _local22 = 36; } else { if (_local17 == 22){ _arg1 = addTriangleRight(_local10, _arg2, _local13, _local14); _local22 = 37; } else { if (_local17 == 23){ _arg1 = addPyramid(_local10, _arg2, _local13, _local14); _local22 = 19; } else { if (_local17 == 24){ _arg1 = addSuperLong(_local10, _arg2, _local13, _local14); _local22 = 20; } else { if (_local17 == 25){ _arg1 = addPyramidMini(_local10, _arg2, _local13, _local14); } else { if (_local17 == 26){ _arg1 = addTargetArea(_local10, true, _local13, _local14, _local12); } else { if (_local17 == 27){ _arg1 = addBGBall(_local12, _local13, _local14); _local22 = 21; } else { if (_local17 == 28){ _arg1 = addOrientedBGBox(_local15, _local16, _local13, _local14, _local10); _local22 = 22; } else { if (_local17 == 29){ _arg1 = addCornerLong(_local10, _arg2, _local13, _local14); _local22 = 14; } else { if (_local17 == 30){ _arg1 = addBlock(_local10, _arg2, _local13, _local14); _local22 = 16; } else { if (_local17 == 31){ _arg1 = addWacky1Mirror(_local10, _arg2, _local13, _local14); _local22 = 24; } else { if (_local17 == 32){ _arg1 = addWacky4Mirror(_local10, _arg2, _local13, _local14); _local22 = 26; } else { if (_local17 == 33){ _arg1 = addWhoaMirror(_local10, _arg2, _local13, _local14); _local22 = 12; } else { if (_local17 == 34){ _arg1 = addDiamond1(_local10, _arg2, _local13, _local14, _local12); _local22 = 28; } else { if (_local17 == 35){ _arg1 = addDiamond2(_local10, _arg2, _local13, _local14); _local22 = 29; } else { if (_local17 == 36){ _arg1 = addDiamond3(_local10, _arg2, _local13, _local14); _local22 = 30; } else { if (_local17 == 37){ _arg1 = addConnect(_local10, _arg2, _local13, _local14); _local22 = 31; } else { if (_local17 == 38){ _arg1 = addWideCross(_local10, _arg2, _local13, _local14); _local22 = 34; } else { if (_local17 == 39){ _arg1 = addRocket(_local10, _arg2, _local13, _local14); _local22 = 33; } else { if (_local17 == 40){ _arg1 = addConnectMirror(_local10, _arg2, _local13, _local14); _local22 = 32; } else { if (_local17 == 41){ _arg1 = addSaw1(_local10, _arg2, _local13, _local14, _local12); _local22 = 35; } else { if (_local17 == 42){ _arg1 = addPacman(_local10, _arg2, _local13, _local14); _local22 = 38; } else { if (_local17 == 43){ _arg1 = addH(_local10, _arg2, _local13, _local14); _local22 = 39; } else { if (_local17 == 44){ _arg1 = addSaw2(_local10, _arg2, _local13, _local14, _local12); _local22 = 40; } else { if (_local17 == 45){ _arg1 = addHinge(_local10, _arg2, _local13, _local14); _local22 = 41; } else { if (_local17 == 46){ _arg1 = addCircle1T(_local10, _arg2, _local13, _local14, _local12); _local22 = 42; } else { if (_local17 == 47){ _arg1 = addPyramid1T(_local10, _arg2, _local13, _local14); _local22 = 43; } else { if (_local17 == 48){ _arg1 = addBox1T(_local10, _arg2, _local13, _local14); _local22 = 44; } else { if (_local17 == 49){ _arg1 = addBlock1T(_local10, _arg2, _local13, _local14); _local22 = 45; } else { if (_local17 == 50){ _arg1 = addCog(_local10, _arg2, _local13, _local14, _local12); _local22 = 46; } else { if (_local17 == 51){ _arg1 = addRotatingCross(_local10, _arg2, _local13, _local14); _local22 = 47; } else { if (_local17 == 52){ _arg1 = addCircleHelium(_local10, _arg2, _local13, _local14, _local12); _local22 = 48; } else { if (_local17 == 53){ _arg1 = addPyramidHelium(_local10, _arg2, _local13, _local14); _local22 = 49; } else { if (_local17 == 54){ _arg1 = addBoxHelium(_local10, _arg2, _local13, _local14); _local22 = 50; } else { if (_local17 == 55){ _arg1 = addBlockHelium(_local10, _arg2, _local13, _local14); _local22 = 51; } else { if (_local17 == 56){ _arg1 = addGlueBall(_local12, _local13, _local14); _local22 = 52; } else { if (_local17 == 57){ _arg1 = addKiila(_local10, _arg2, _local13, _local14); _local22 = 53; } else { if (_local17 == 58){ _arg1 = addHingeBig(_local10, _arg2, _local13, _local14); _local22 = 54; } else { if (_local17 == 59){ _arg1 = addRotatingCrossBig(_local10, _arg2, _local13, _local14); _local22 = 55; } else { if (_local17 == 60){ _arg1 = addHingeVeryBig(_local10, _arg2, _local13, _local14); _local22 = 56; } else { if (_local17 == 61){ _arg1 = addHoleBox(_local10, _arg2, _local13, _local14); _local22 = 57; } else { if (_local17 == 62){ _arg1 = addRotatingCrossBlades(_local10, _arg2, _local13, _local14); _local22 = 58; } else { if (_local17 == 63){ _arg1 = addRotatingCrossBox(_local10, _arg2, _local13, _local14); _local22 = 59; } else { if (_local17 == 64){ _arg1 = addSalmiack(_local10, _arg2, _local13, _local14); _local22 = 60; } else { if (_local17 == 65){ _arg1 = addHingeVeryBigStraight(_local10, _arg2, _local13, _local14); _local22 = 61; } else { if (_local17 == 66){ _arg1 = addPoleG(_local10, _arg2, _local13, _local14); _local22 = 62; } else { if (_local17 == 67){ _arg1 = addBoxG(_local10, _arg2, _local13, _local14); _local22 = 63; } else { if (_local17 == 68){ _arg1 = addBlockG(_local10, _arg2, _local13, _local14); _local22 = 64; } else { if (_local17 == 69){ _arg1 = addCrossG(_local10, _arg2, _local13, _local14); _local22 = 65; } else { if (_local17 == 70){ _arg1 = addWideCrossG(_local10, _arg2, _local13, _local14); _local22 = 66; } else { if (_local17 == 71){ _arg1 = addCircleG(_local10, _arg2, _local13, _local14, _local12); _local22 = 67; } else { if (_local17 == 72){ _arg1 = addBoxGlass(_local10, _arg2, _local13, _local14); _local22 = 68; } else { if (_local17 == 73){ _arg1 = addBlockGlass(_local10, _arg2, _local13, _local14); _local22 = 69; } else { if (_local17 == 74){ _arg1 = addLongGlass(_local10, _arg2, _local13, _local14); _local22 = 70; } else { if (_local17 == 75){ _arg1 = addCircleStatic(_local10, _arg2, _local13, _local14, _local12); _local22 = 71; } else { if (_local17 == 76){ _arg1 = addPyramidStatic(_local10, _arg2, _local13, _local14); _local22 = 72; } else { if (_local17 == 77){ _arg1 = addBoxStatic(_local10, _arg2, _local13, _local14); _local22 = 73; } else { if (_local17 == 78){ _arg1 = addBlockStatic(_local10, _arg2, _local13, _local14); _local22 = 74; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; }; _arg1.SetXForm(new b2Vec2(_local13, _local14), _local11); _arg1.m_userData._width = _local19; _arg1.m_userData._height = _local20; _arg1.m_userData._alpha = _local21; _arg1.m_userData._currentBlock = _local22; _arg1.m_userData._startX = _local23; _arg1.m_userData._startY = _local24; _arg1.m_userData._startAngle = _local25; _arg1.m_userData._posX = _local13; _arg1.m_userData._posY = _local14; CreateShadowSprite(_arg1.m_userData); return (_arg1); } private function calculateIPhoneDottedLineLimits():void{ _limitY320x480 = (-((240 - 110)) / m_debugDraw.m_drawScale); _limitY480x320 = (-((160 - 110)) / m_debugDraw.m_drawScale); _limitYStopMode = ((250 - 45) / m_debugDraw.m_drawScale); } public function addWhoa(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-40 / _local5), (-10 / _local5)); _local8.vertices[1].Set((40 / _local5), (-10 / _local5)); _local8.vertices[2].Set((40 / _local5), (10 / _local5)); _local8.vertices[3].Set((-40 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((20 / _local5), (-30 / _local5)); _local8.vertices[1].Set((40 / _local5), (-30 / _local5)); _local8.vertices[2].Set((40 / _local5), (-10 / _local5)); _local8.vertices[3].Set((20 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-40 / _local5), (10 / _local5)); _local8.vertices[1].Set((-20 / _local5), (10 / _local5)); _local8.vertices[2].Set((-20 / _local5), (30 / _local5)); _local8.vertices[3].Set((-40 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 12; _local9 = new Bitmap(new _classBrickWhoa().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBig(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-40 / _local5), (-10 / _local5)); _local8.vertices[1].Set((40 / _local5), (-10 / _local5)); _local8.vertices[2].Set((40 / _local5), (30 / _local5)); _local8.vertices[3].Set((-40 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((0 / _local5), (-30 / _local5)); _local8.vertices[1].Set((20 / _local5), (-30 / _local5)); _local8.vertices[2].Set((20 / _local5), (-10 / _local5)); _local8.vertices[3].Set((0 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 9; _local9 = new Bitmap(new _classBrickBig().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addRotatingCross(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:UserData; var _local7:b2Body; var _local8:b2BodyDef; var _local9:b2PolygonDef; var _local10:b2RevoluteJointDef; var _local11:b2Body; var _local12:Bitmap; _local5 = 20; _local6 = new UserData(); _local6._iD = 51; _local8 = new b2BodyDef(); _local9 = new b2PolygonDef(); _local10 = new b2RevoluteJointDef(); _local11 = m_world.GetGroundBody(); _local8 = new b2BodyDef(); _local8.position.Set(_arg3, _arg4); _local8.angle = _arg1; _local7 = m_world.CreateBody(_local8); _local9.density = 20; _local9.friction = _friction; _local9.isSensor = _arg2; _local9.vertexCount = 4; _local9.vertices[0].Set(((-5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local9.vertices[1].Set(((5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local9.vertices[2].Set(((5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local9.vertices[3].Set(((-5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local7.CreateShape(_local9); _local9.vertices[0].Set(((15 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local9.vertices[1].Set(((15 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local9.vertices[2].Set(((-15 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local9.vertices[3].Set(((-15 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local7.CreateShape(_local9); _local9.vertices[0].Set(((-5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local9.vertices[1].Set(((5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local9.vertices[2].Set(((5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local9.vertices[3].Set(((-5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local7.CreateShape(_local9); _local7.m_userData = _local6; _local7.SetMassFromShapes(); _local12 = new Bitmap(new _classRotatingCross().bitmapData); _local12.x = -11405; _local12.y = 10; _local12.smoothing = true; m_sprite.addChild(_local12); _local7.m_userData._sprite = _local12; if (!_arg2){ _local10.Initialize(_local11, _local7, new b2Vec2(_arg3, _arg4)); _local10.motorSpeed = 0; _local10.enableMotor = false; _local6._object = (m_world.CreateJoint(_local10) as b2RevoluteJoint); }; return (_local7); } public function GetBodyAtMouseAny():b2Body{ var _local1:b2AABB; var _local2:int; var _local3:Array; var _local4:int; var _local5:b2Body; var _local6:int; var _local7:b2Shape; var _local8:Boolean; mousePVec.Set(mouseXWorldPhys, mouseYWorldPhys); _local1 = new b2AABB(); _local1.lowerBound.Set((mouseXWorldPhys - 0.001), (mouseYWorldPhys - 0.001)); _local1.upperBound.Set((mouseXWorldPhys + 0.001), (mouseYWorldPhys + 0.001)); _local2 = 10; _local3 = new Array(); _local4 = m_world.Query(_local1, _local3, _local2); _local5 = null; _getBodyAtMouseTouched = false; _local6 = 0; while (_local6 < _local4) { _local7 = (_local3[_local6] as b2Shape); _local8 = (_local3[_local6] as b2Shape).TestPoint(_local7.GetBody().GetXForm(), mousePVec); if (_local8){ _local5 = _local7.GetBody(); break; }; _local6++; }; return (_local5); } public function addAlien(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-50 / _local5), (-10 / _local5)); _local8.vertices[1].Set((50 / _local5), (-10 / _local5)); _local8.vertices[2].Set((50 / _local5), (10 / _local5)); _local8.vertices[3].Set((-50 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-10 / _local5), (-30 / _local5)); _local8.vertices[1].Set((10 / _local5), (-30 / _local5)); _local8.vertices[2].Set((10 / _local5), (-10 / _local5)); _local8.vertices[3].Set((-10 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-50 / _local5), (10 / _local5)); _local8.vertices[1].Set((-30 / _local5), (10 / _local5)); _local8.vertices[2].Set((-30 / _local5), (30 / _local5)); _local8.vertices[3].Set((-50 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((30 / _local5), (10 / _local5)); _local8.vertices[1].Set((50 / _local5), (10 / _local5)); _local8.vertices[2].Set((50 / _local5), (30 / _local5)); _local8.vertices[3].Set((30 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 11; _local9 = new Bitmap(new _classBrickAlien().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function CreateTextureForBody(_arg1:b2Body, _arg2:Boolean, _arg3:Bitmap, _arg4:Boolean, _arg5:Boolean):void{ var _local6:b2Vec2; var _local7:UserData; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; _local6 = _arg1.GetPosition(); _local7 = _arg1.GetUserData(); _local8 = (((_local6.x * m_debugDraw.m_drawScale) + 300) - _local7._width); _local9 = (((_local6.y * m_debugDraw.m_drawScale) + 250) - _local7._height); _local10 = _arg1.GetAngle(); if ((((((_local10 < -0.01)) || ((_local10 > 0.01)))) || (_arg5))){ _local11 = (_arg3.width - (_local7._width * 2)); _local12 = (_arg3.height - (_local7._height * 2)); _local8 = (Math.random() * _local11); _local9 = (Math.random() * _local12); if (_local8 < 0){ _local8 = 0; }; if (_local9 < 0){ _local9 = 0; }; }; if (_arg2){ createSpriteBoxWithOutlines(_arg3, _local7, _local8, _local9); } else { createSpriteBox(_arg3, _local7, _local8, _local9); }; if (_arg4){ CreateShadowSprite(_local7); }; } public function addCircleStatic(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; _local6 = addBallGeneral(_arg5, _arg3, _arg4, 75, _density, _arg2); setBallSprite(new Bitmap(new _classSunStatic().bitmapData), _local6.m_userData, _arg5); m_sprite.addChild(_local6.m_userData._sprite); return (_local6); } public function addWacky1Mirror(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-60 / _local5), (0 / _local5)); _local8.vertices[1].Set((-40 / _local5), (0 / _local5)); _local8.vertices[2].Set((-40 / _local5), (20 / _local5)); _local8.vertices[3].Set((-60 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-60 / _local5), (-20 / _local5)); _local8.vertices[1].Set((0 / _local5), (-20 / _local5)); _local8.vertices[2].Set((0 / _local5), (0 / _local5)); _local8.vertices[3].Set((-60 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-20 / _local5), (0 / _local5)); _local8.vertices[1].Set((60 / _local5), (0 / _local5)); _local8.vertices[2].Set((60 / _local5), (20 / _local5)); _local8.vertices[3].Set((-20 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((40 / _local5), (-20 / _local5)); _local8.vertices[1].Set((60 / _local5), (-20 / _local5)); _local8.vertices[2].Set((60 / _local5), (0 / _local5)); _local8.vertices[3].Set((40 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 31; _local9 = new Bitmap(new _classBrickWacky1Mirror().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addPyramidStatic(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = 0; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 3; _local8.vertices[2].Set((-40 / _local5), (40 / _local5)); _local8.vertices[1].Set((40 / _local5), (40 / _local5)); _local8.vertices[0].Set((0 / _local5), (-40 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 76; _local9 = new Bitmap(new _classPyramidStatic().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addLongGlass(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((40 / _local5), (10 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 74; _local6.m_userData._glass = true; _local6.m_userData._hitpoints = (40 * 10); _local9 = new Bitmap(new _classBrickIGlass().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addLong(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((40 / _local5), (10 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 2; _local9 = new Bitmap(new _classBrickI().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } private function updateShapeOffsets(_arg1:b2Body, _arg2:Number):void{ var _local3:UserData; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = _arg1.GetUserData(); _local4 = _local3._iD; _local5 = 0; _local6 = 0; if (_local4 == 4){ _local5 = 0; _local6 = -10; } else { if (_local4 == 5){ _local5 = 0; _local6 = -10; } else { if (_local4 == 13){ _local5 = -20; _local6 = -20; } else { if (_local4 == 14){ _local5 = -10; _local6 = 10; } else { if (_local4 == 15){ _local5 = 10; _local6 = 10; } else { if (_local4 == 18){ _local5 = 20; _local6 = 20; } else { if (_local4 == 21){ _local5 = -10; _local6 = -10; } else { if (_local4 == 22){ _local5 = 10; _local6 = -10; } else { if (_local4 == 29){ _local5 = -30; _local6 = -30; } else { if (_local4 == 31){ _local5 = 10; _local6 = 0; } else { if (_local4 == 32){ _local5 = -20; _local6 = 20; } else { if (_local4 == 42){ _local5 = 0; _local6 = -10; }; }; }; }; }; }; }; }; }; }; }; }; _local7 = ((_local5 * Math.cos(_arg2)) - (_local6 * Math.sin(_arg2))); _local8 = ((_local6 * Math.cos(_arg2)) + (_local5 * Math.sin(_arg2))); _shapeOffsetX = _local7; _shapeOffsetY = _local8; } public function addRocket(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-40 / _local5), (-30 / _local5)); _local8.vertices[1].Set((0 / _local5), (-30 / _local5)); _local8.vertices[2].Set((0 / _local5), (-10 / _local5)); _local8.vertices[3].Set((-40 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-20 / _local5), (-10 / _local5)); _local8.vertices[1].Set((40 / _local5), (-10 / _local5)); _local8.vertices[2].Set((40 / _local5), (10 / _local5)); _local8.vertices[3].Set((-20 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-40 / _local5), (10 / _local5)); _local8.vertices[1].Set((0 / _local5), (10 / _local5)); _local8.vertices[2].Set((0 / _local5), (30 / _local5)); _local8.vertices[3].Set((-40 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 39; _local9 = new Bitmap(new _classBrickRocket().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function updateShapeSprites(_arg1:b2Body, _arg2:UserData):Boolean{ var _local3:Boolean; var _local4:Bitmap; var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Bitmap; _local3 = false; if (_arg2._sprite != null){ _local4 = _arg2._sprite; _local4.rotation = 0; _local5 = _arg1.GetPosition(); _local6 = _arg1.GetAngle(); _local7 = (m_debugDraw.m_drawScale / 20); _local8 = (_local5.x * m_debugDraw.m_drawScale); _local9 = (_local5.y * m_debugDraw.m_drawScale); if (((!(_arg1.m_shapeList.IsSensor())) && ((((Math.abs((_arg2._posX - _local8)) > 0.05)) || ((Math.abs((_arg2._posY - _local9)) > 0.05)))))){ _local3 = true; }; _arg2._posX = _local8; _arg2._posY = _local9; if (_arg2._iD == 26){ _local7 = (_local7 * m_goalScale); }; _local4.scaleX = (_local7 * _arg2._scale); _local4.scaleY = (_local7 * _arg2._scale); rot(_local4, _local8, _local9, ((_local6 * 180) / Math.PI), (-(_local4.width) * 0.5), (-(_local4.height) * 0.5)); _local10 = _arg2._alpha; if (_arg2._flash){ _local10 = (_local10 * sm_masterSpriteAlpha); }; if (_arg1.m_shapeList.IsSensor()){ _local4.alpha = (0.8 * _local10); } else { _local4.alpha = _local10; }; if (_arg2._spriteShadow != null){ _local11 = _arg2._spriteShadow; _local11.scaleX = _local4.scaleX; _local11.scaleY = _local4.scaleY; _local11.x = (_local4.x - 4); _local11.y = (_local4.y + 4); _local11.rotation = _local4.rotation; _local11.alpha = (_local10 * 0.35); }; if (_arg2._sprite2 != null){ _local11 = _arg2._sprite2; _local11.x = (_local4.x + 300); _local11.y = (_local4.y + 250); _local11.scaleX = _local4.scaleX; _local11.scaleY = _local4.scaleY; _local11.rotation = _local4.rotation; }; }; return (_local3); } public function addCircle(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; _local6 = addBallGeneral(_arg5, _arg3, _arg4, 20, _density, _arg2); setBallSprite(new Bitmap(new _classSun().bitmapData), _local6.m_userData, _arg5); m_sprite.addChild(_local6.m_userData._sprite); return (_local6); } public function addRotatingCrossBig(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:UserData; var _local7:b2Body; var _local8:b2BodyDef; var _local9:b2PolygonDef; var _local10:b2RevoluteJointDef; var _local11:b2Body; var _local12:Bitmap; _local5 = 20; _local6 = new UserData(); _local6._iD = 59; _local8 = new b2BodyDef(); _local9 = new b2PolygonDef(); _local10 = new b2RevoluteJointDef(); _local11 = m_world.GetGroundBody(); _local8 = new b2BodyDef(); _local8.position.Set(_arg3, _arg4); _local8.angle = _arg1; _local7 = m_world.CreateBody(_local8); _local9.density = 20; _local9.friction = _friction; _local9.isSensor = _arg2; _local9.vertexCount = 4; _local9.vertices[0].Set((-10 / _local5), (-50 / _local5)); _local9.vertices[1].Set((10 / _local5), (-50 / _local5)); _local9.vertices[2].Set((10 / _local5), (-10 / _local5)); _local9.vertices[3].Set((-10 / _local5), (-10 / _local5)); _local7.CreateShape(_local9); _local9.vertices[0].Set((50 / _local5), (-10 / _local5)); _local9.vertices[1].Set((50 / _local5), (10 / _local5)); _local9.vertices[2].Set((-50 / _local5), (10 / _local5)); _local9.vertices[3].Set((-50 / _local5), (-10 / _local5)); _local7.CreateShape(_local9); _local9.vertices[0].Set((-10 / _local5), (10 / _local5)); _local9.vertices[1].Set((10 / _local5), (10 / _local5)); _local9.vertices[2].Set((10 / _local5), (50 / _local5)); _local9.vertices[3].Set((-10 / _local5), (50 / _local5)); _local7.CreateShape(_local9); _local7.m_userData = _local6; _local7.SetMassFromShapes(); _local12 = new Bitmap(new _classRotatingCrossBig().bitmapData); _local12.x = -11405; _local12.y = 10; _local12.smoothing = true; m_sprite.addChild(_local12); _local7.m_userData._sprite = _local12; if (!_arg2){ _local10.Initialize(_local11, _local7, new b2Vec2(_arg3, _arg4)); _local10.motorSpeed = 0; _local10.enableMotor = false; _local6._object = (m_world.CreateJoint(_local10) as b2RevoluteJoint); }; return (_local7); } public function addCircle1T(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; _local6 = addBallGeneral(_arg5, _arg3, _arg4, 46, (_density * 5), _arg2); setBallSprite(new Bitmap(new _classSun1T().bitmapData), _local6.m_userData, _arg5); m_sprite.addChild(_local6.m_userData._sprite); _local6.m_userData._1T = true; return (_local6); } public function addBlockHelium(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((40 / _local5), (40 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 55; _local6.m_userData._helium = true; _local9 = new Bitmap(new _classBrickBlockHelium().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addRotatingCrossBlades(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:UserData; var _local7:b2Body; var _local8:b2BodyDef; var _local9:b2PolygonDef; var _local10:b2RevoluteJointDef; var _local11:b2Body; var _local12:Bitmap; _local5 = 20; _local6 = new UserData(); _local6._iD = 62; _local8 = new b2BodyDef(); _local9 = new b2PolygonDef(); _local10 = new b2RevoluteJointDef(); _local11 = m_world.GetGroundBody(); _local8 = new b2BodyDef(); _local8.position.Set(_arg3, _arg4); _local8.angle = _arg1; _local7 = m_world.CreateBody(_local8); _local9.density = 20; _local9.friction = _friction; _local9.isSensor = _arg2; _local9.vertexCount = 4; _local9.vertices[0].Set((-10 / _local5), (-50 / _local5)); _local9.vertices[1].Set((10 / _local5), (-30 / _local5)); _local9.vertices[2].Set((10 / _local5), (-10 / _local5)); _local9.vertices[3].Set((-10 / _local5), (-10 / _local5)); _local7.CreateShape(_local9); _local9.vertices[0].Set((50 / _local5), (-10 / _local5)); _local9.vertices[1].Set((30 / _local5), (10 / _local5)); _local9.vertices[2].Set((-50 / _local5), (10 / _local5)); _local9.vertices[3].Set((-30 / _local5), (-10 / _local5)); _local7.CreateShape(_local9); _local9.vertices[0].Set((-10 / _local5), (10 / _local5)); _local9.vertices[1].Set((10 / _local5), (10 / _local5)); _local9.vertices[2].Set((10 / _local5), (50 / _local5)); _local9.vertices[3].Set((-10 / _local5), (30 / _local5)); _local7.CreateShape(_local9); _local7.m_userData = _local6; _local7.SetMassFromShapes(); _local12 = new Bitmap(new _classRotatingCrossBlades().bitmapData); _local12.x = -11405; _local12.y = 10; _local12.smoothing = true; m_sprite.addChild(_local12); _local7.m_userData._sprite = _local12; if (!_arg2){ _local10.Initialize(_local11, _local7, new b2Vec2(_arg3, _arg4)); _local10.motorSpeed = 0; _local10.enableMotor = false; _local6._object = (m_world.CreateJoint(_local10) as b2RevoluteJoint); }; return (_local7); } public function Update(_arg1:Boolean):void{ var _local2:Boolean; var _local3:Number; var _local4:uint; var _local5:Number; var _local6:int; var _local7:int; var _local8:b2Body; var _local9:Boolean; var _local10:b2Body; var _local11:Number; var _local12:b2Body; var _local13:UserData; var _local14:int; var _local15:Boolean; var _local16:b2Vec2; var _local17:Number; var _local18:b2Vec2; var _local19:Number; var _local20:Boolean; var _local21:b2Body; var _local22:Number; var _local23:Number; var _local24:UserData; if (!_arg1){ return; }; if (_firstRun){ _firstRun = false; _local8 = m_world.m_bodyList; while (_local8) { _local8.WakeUp(); _local8 = _local8.m_next; }; }; if (_flashOn){ if (_flashDown){ sm_masterSpriteAlpha = (sm_masterSpriteAlpha - 0.1); if (sm_masterSpriteAlpha <= 0){ sm_masterSpriteAlpha = 0; _flashDown = false; }; } else { sm_masterSpriteAlpha = (sm_masterSpriteAlpha + 0.1); if (sm_masterSpriteAlpha >= 1){ sm_masterSpriteAlpha = 1; }; }; } else { sm_masterSpriteAlpha = 1; }; _local2 = false; if (((Main.sm_editorMode) && (!(Main.sm_editorPlayMode)))){ _local2 = true; }; _local3 = (Math.PI * 0.25); if (Input.isKeyDown(16)){ _local3 = ((Math.PI * 0.25) * 0.5); }; if (((((Input.isKeyPressed(65)) || (((!(_local2)) && (Input.isKeyPressed(37)))))) || ((Main._mouseWheel > 0)))){ if (m_mouseBody != null){ m_angle = (m_angle - _local3); Main._playRotate = m_mouseBody.m_userData._iD; Main._mouseWheel = 0; }; }; if (((((Input.isKeyPressed(68)) || (((!(_local2)) && (Input.isKeyPressed(39)))))) || ((Main._mouseWheel < 0)))){ if (m_mouseBody != null){ m_angle = (m_angle + _local3); Main._playRotate = m_mouseBody.m_userData._iD; Main._mouseWheel = 0; }; }; if (Input.isKeyDown(90)){ if (m_mouseBody != null){ m_angle = (m_angle - 0.01); }; }; if (Input.isKeyDown(67)){ if (m_mouseBody != null){ m_angle = (m_angle + 0.01); }; }; while (m_angle < (-(Math.PI) * 2)) { m_angle = (m_angle + (Math.PI * 2)); }; while (m_angle > (Math.PI * 2)) { m_angle = (m_angle - (Math.PI * 2)); }; Main.m_sprite.x = (600 * 0.5); Main.m_sprite.y = (500 * 0.5); m_debugDraw.m_drawScale = (20 + _drawScaleAdder); UpdateMouseWorld(); if (m_mouseBody != null){ updateShapeOffsets(m_mouseBody, m_angle); m_mouseBody.SetXForm(new b2Vec2(((Input.mousseX + _shapeOffsetX) / m_debugDraw.m_drawScale), ((Input.mousseY + _shapeOffsetY) / m_debugDraw.m_drawScale)), m_angle); m_mouseBody.m_angularVelocity = 0; m_mouseBody.m_linearVelocity.x = 0; m_mouseBody.m_linearVelocity.y = 0; m_mouseBody.m_force.x = 0; m_mouseBody.m_force.y = 0; if (_local2){ _local13 = m_mouseBody.m_userData; _local13._startX = m_mouseBody.GetPosition().x; _local13._startY = m_mouseBody.GetPosition().y; _local13._startAngle = m_mouseBody.GetAngle(); }; }; if (((Main._mouseClicked) && (!((m_mouseBody == null))))){ _local9 = isCollidingTestGeometry(m_mouseBody); if (_local9){ Main._playBadPickup = true; }; if (((((m_mouseBody.IsStatic()) || (isIPhoneSleeping(m_mouseBody.GetPosition().y)))) || (!(_local9)))){ _local10 = cloneBody(m_mouseBody, false); if (isIPhoneSleeping(_local10.GetPosition().y)){ _local10.SetXForm(new b2Vec2(_local10.m_userData._startX, _local10.m_userData._startY), _local10.m_userData._startAngle); _local10.PutToSleep(); Main._playReturnShape = true; } else { if (!_local2){ _midBalanceGivesPoints = true; }; }; DestroyBody(m_mouseBody); CreateSpriteForBody(_local10); BringSpritesOnTop(); m_mouseBody = null; m_angle = 0; _stabileCounter = 20; Mouse.show(); }; Main._mouseClicked = false; }; if (((((Main._mouseClicked) && ((m_mouseBody == null)))) && ((_lives > 0)))){ if (_local2){ _local10 = GetBodyAtMouseAny(); } else { _local10 = GetBodyAtMouse(true); }; if (_local10 != null){ _diamondScale = _local10.m_userData._diamondScale; _local11 = _diamondScale; m_mouseBody = cloneBody(_local10, true); _diamondScale = _local11; m_mouseBody.SetXForm(_local10.GetPosition(), _local10.GetAngle()); CreateSpriteForBody(m_mouseBody); m_angle = m_mouseBody.GetAngle(); DestroyBody(_local10); BringSpritesOnTop(); if (Main.sm_autoHide){ Mouse.hide(); }; if (!_local2){ if (_picks == 0){ Main._timerOn = true; }; _picks++; }; if (_local2){ _local13 = m_mouseBody.m_userData; if (_local13._rectangle){ m_blockWidth = _local13._width; m_blockHeight = _local13._height; }; if (_local13._circle){ _radius = _local13._radius; }; if (Main.sm_editorBlockID != _local13._iD){ Main.sm_editorBlockID = _local13._iD; Main.m_this.redrawPlayfieldRight(); }; }; }; }; if (((((!((Main._bitmapAllDone == null))) && (!((m_mouseBody == null))))) && ((_lives <= 0)))){ DestroyBody(m_mouseBody); m_mouseBody = null; Mouse.show(); }; _local4 = getTimer(); m_world.Step(m_timeStep, m_iterations); Main.m_fpsCounter.updatePhys(_local4); _local5 = 0.993; _local6 = 0; _local7 = 0; _stabile = true; _local8 = m_world.m_bodyList; while (_local8 != null) { _local12 = _local8.m_next; if (_local8.m_userData != null){ _local13 = _local8.m_userData; if (_local2){ if (_local8.m_shapeList.IsSensor()){ _local8.PutToSleep(); } else { calculateIPhoneDottedLineLimits(); if (((!((m_mouseBody == _local8))) && (isIPhoneSleeping(_local8.GetPosition().y)))){ _local8.PutToSleep(); } else { _local8.WakeUp(); }; }; }; _local14 = _local13._iD; if (((((((((((((((((((((_local8.IsStatic()) || ((_local14 == 34)))) || ((_local14 == 35)))) || ((_local14 == 36)))) || ((_local14 == 41)))) || ((_local14 == 45)))) || ((_local14 == 58)))) || ((_local14 == 60)))) || ((_local14 == 50)))) || ((_local14 == 51)))) || ((_local14 == 59)))){ _local13._flash = false; }; if (_local13._diamond){ twinkleBody(_local8, 0, 7); } else { if (_local13._helium){ twinkleBody(_local8, 2, 1); } else { if (_local13._directedGravity){ twinkleBody(_local8, 2, 1); }; }; }; if (_local8.m_shapeList.IsSensor()){ _local8.PutToSleep(); } else { if (_local13._diamond){ _local6++; }; calculateIPhoneDottedLineLimits(); if (((!((m_mouseBody == _local8))) && (isIPhoneSleeping(_local8.GetPosition().y)))){ if (!_local8.IsSleeping()){ _local20 = isIPhoneSleeping(_local8.m_userData._startY); _sensorCheck = false; _local21 = cloneBody(_local8, _local20); _sensorCheck = true; DestroyBody(_local8); _local8 = _local21; _local13 = _local8.m_userData; BringSpritesOnTop(); _local8.SetXForm(new b2Vec2(_local8.m_userData._startX, _local8.m_userData._startY), _local8.m_userData._startAngle); if (_local20){ _local8.PutToSleep(); } else { _local8.WakeUp(); }; Main._playReturnShape = true; _midBalanceGivesPoints = false; }; } else { _local8.WakeUp(); }; }; _local15 = updateShapeSprites(_local8, _local13); _local14 = _local13._iD; if ((((((((((((((_local14 == 41)) || ((_local14 == 45)))) || ((_local14 == 58)))) || ((_local14 == 60)))) || ((_local14 == 50)))) || ((_local14 == 51)))) || ((_local14 == 59)))){ } else { _local16 = _local8.GetLinearVelocity(); if (_local16.Length() < 0.2){ _local16.x = (_local16.x * 0.95); _local16.y = (_local16.y * 0.95); } else { _local16.x = (_local16.x * _local5); _local16.y = (_local16.y * _local5); }; _local8.SetLinearVelocity(_local16); _local17 = _local8.GetAngularVelocity(); if (Math.abs(_local17) < 0.015){ _local8.SetAngularVelocity((_local17 * 0.95)); } else { _local8.SetAngularVelocity((_local17 * _local5)); }; if (((_local15) || ((Math.abs(_local8.GetAngularVelocity()) > 0.015)))){ _local13._stableTimer = 0; _stabile = false; } else { _local13._stableTimer++; }; if (((_local8.IsSleeping()) && (!(_local8.IsStatic())))){ _local7++; }; _local18 = _local8.GetPosition(); _local19 = (380 / m_physScale); if ((((((_local18.y > _local19)) || ((_local18.x < -(_local19))))) || ((_local18.x > _local19)))){ DestroyBody(_local8); if ((((_local14 < 100)) && (!(_local2)))){ Main._playLooseLife = true; _lives--; }; }; if (((_local13._glass) && ((_local13._damage > _local13._hitpoints)))){ DestroyBody(_local8); }; }; }; _local8 = _local12; }; if (_local2){ return; }; if (((_stabile) && ((_lives > 0)))){ _stabileCounter--; } else { _stabileCounter = 30; }; if (_local7 == 0){ _allDropped = true; } else { _allDropped = false; _waitTimeLeft = _waitTimeMax; }; if (((((_stabile) && (_midBalanceGivesPoints))) && ((_lives > 0)))){ _midBalanceTimer++; if (_midBalanceTimer >= 30){ if (_local7 == 0){ _waiting = true; }; if ((((_local7 == 0)) && ((_local6 == 9)))){ Main.m_this.plus200Points(); m_finalPerfectBalance = true; } else { Main._plus50Points = true; if (_local6 == 0){ Main._playMiddleBalance = true; }; }; _midBalanceGivesPoints = false; }; } else { _midBalanceTimer = 0; }; if (_stabileCounter <= 0){ if (_local6 != _runningDiamonds){ _runningDiamonds = _local6; if (_local6 == 9){ Main._playAllBonusBalls = true; } else { Main._playAddBonusBall = true; }; }; if (_waiting){ _addDiamonds = true; _flashOn = true; }; }; if (((_addDiamonds) && ((_addedDiamonds < 9)))){ _diamondScale = 1; _diamondsOffsetX = (_diamondsOffsetX - (1.9 * _diamondScale)); if (_diamondID == 0){ _diamondsOffsetX = (_diamondsOffsetX + (_diamondScale * 0.2)); }; _addedDiamonds++; _local22 = (9.1 + _diamondsOffsetX); _local23 = -7; if (_diamondID == 0){ _local10 = cloneBody(null, false, 34, 17, 0, 30, 30, _local22, _local23); } else { if (_diamondID == 1){ _local10 = cloneBody(null, false, 35, 17, 0, 30, 30, _local22, _local23); } else { _local10 = cloneBody(null, false, 36, 17, 0, 30, 30, _local22, _local23); }; }; _local10.SetXForm(new b2Vec2(_local22, _local23), 0); _local10.PutToSleep(); _diamondID++; if (_diamondID == 3){ _diamondID = 0; }; _local24 = _local10.m_userData; _local24._startX = _local22; _local24._startY = _local23; _local24._startAngle = 0; BringSpritesOnTop(); _local24._sprite.x = 10000; _local24._spriteShadow.x = 10000; _diamondScale = 1; }; } public function addSuperLong(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((120 / _local5), (10 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 24; _local9 = new Bitmap(new _classSuperLong().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } private function twinkleBody(_arg1:b2Body, _arg2:int, _arg3:int):void{ var _local4:UserData; var _local5:b2XForm; var _local6:b2Vec2; var _local7:int; var _local8:uint; var _local9:b2Shape; var _local10:int; _local4 = _arg1.GetUserData(); _local4._twinkleSkip--; if (_local4._twinkleSkip >= 0){ return; }; _local4._twinkleSkip = _arg3; _local5 = _arg1.GetXForm(); _local6 = _arg1.GetPosition(); _local7 = 0; _local8 = 4294967295; _local9 = _arg1.GetShapeList(); while (_local9 != null) { _local7++; _local9 = _local9.GetNext(); }; _local10 = (Math.random() * _local7); _local7 = 0; _local9 = _arg1.GetShapeList(); while (_local9 != null) { if (_local7 == _local10){ twinkleShape(_arg1, _local9, _local6, _local5, _local8, _arg2); return; }; _local7++; _local9 = _local9.GetNext(); }; } public function addOrientedBGBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):b2Body{ var _local6:Number; var _local7:b2PolygonDef; var _local8:b2BodyDef; var _local9:b2Body; _local6 = 20; _local7 = new b2PolygonDef(); _local7.friction = _friction; _local7.restitution = 0; _local8 = new b2BodyDef(); _local7.SetAsOrientedBox((_arg1 / _local6), (_arg2 / _local6), new b2Vec2(0, 0), _arg5); _local8.position.Set(_arg3, _arg4); _local9 = m_world.CreateBody(_local8); _local9.CreateShape(_local7); _local9.SetMassFromShapes(); _local9.m_userData = new UserData(); _local9.m_userData._iD = 28; _local9.m_userData._width = _arg1; _local9.m_userData._height = _arg2; _local9.m_userData._color = 0xFFFFFF; _local9.m_userData._rectangle = true; return (_local9); } public function getEditorLevel():String{ var _local1:String; var _local2:b2Body; var _local3:UserData; var _local4:int; var _local5:Number; _local1 = "<perfectBalance3> <level> "; _local1 = (_local1 + (((m_debugDraw.m_drawScale + " ") + _drawScaleAdder) + " ")); _local1 = (_local1 + "0 "); if (Main._iceMode){ _local1 = (_local1 + "1001 1 "); } else { _local1 = (_local1 + "1001 0 "); }; _local2 = m_world.m_bodyList; for (;_local2;(_local2 = _local2.m_next)) { if (_local2.m_userData != null){ _local3 = _local2.m_userData; _local4 = _local3._iD; if (_local3._iD == 26){ } else { if ((((_local4 < 26)) || ((_local4 >= 29)))){ _local1 = (_local1 + (_local4 + " ")); if ((((((((((((((((((((_local4 == 20)) || ((_local4 == 34)))) || ((_local4 == 41)))) || ((_local4 == 44)))) || ((_local4 == 46)))) || ((_local4 == 50)))) || ((_local4 == 52)))) || ((_local4 == 56)))) || ((_local4 == 71)))) || ((_local4 == 75)))){ _local1 = (_local1 + (_local3._radius + " ")); }; _local1 = (_local1 + (((((_local2.GetPosition().x + " ") + _local2.GetPosition().y) + " ") + _local2.GetAngle()) + " ")); } else { if (_local3._iD == 27){ _local1 = (_local1 + (_local3._iD + " ")); _local1 = (_local1 + (_local3._radius + " ")); trace(((("27 out " + _local2.GetPosition().x) + " ") + _local2.GetPosition().y)); _local1 = (_local1 + (((_local2.GetPosition().x + " ") + _local2.GetPosition().y) + " ")); } else { if (_local3._iD == 28){ _local1 = (_local1 + (_local3._iD + " ")); _local1 = (_local1 + (((_local2.GetPosition().x + " ") + _local2.GetPosition().y) + " ")); _local1 = (_local1 + (((_local2.m_userData._width + " ") + _local2.m_userData._height) + " ")); _local5 = _local2.GetAngle(); _local1 = (_local1 + (_local5 + " ")); trace(("out angle = " + _local5)); continue; }; }; }; }; }; }; _local1 = (_local1 + (("1000 " + m_goalScale) + " ")); return (_local1); } public function addConnect(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-50 / _local5), (-20 / _local5)); _local8.vertices[1].Set((-30 / _local5), (-20 / _local5)); _local8.vertices[2].Set((-30 / _local5), (0 / _local5)); _local8.vertices[3].Set((-50 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-50 / _local5), (0 / _local5)); _local8.vertices[1].Set((10 / _local5), (0 / _local5)); _local8.vertices[2].Set((10 / _local5), (20 / _local5)); _local8.vertices[3].Set((-50 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-10 / _local5), (-20 / _local5)); _local8.vertices[1].Set((50 / _local5), (-20 / _local5)); _local8.vertices[2].Set((50 / _local5), (0 / _local5)); _local8.vertices[3].Set((-10 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((30 / _local5), (0 / _local5)); _local8.vertices[1].Set((50 / _local5), (0 / _local5)); _local8.vertices[2].Set((50 / _local5), (20 / _local5)); _local8.vertices[3].Set((30 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 37; _local9 = new Bitmap(new _classBrickConnect().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addHoleBox(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-30 / _local5), (-30 / _local5)); _local8.vertices[1].Set((30 / _local5), (-30 / _local5)); _local8.vertices[2].Set((30 / _local5), (-10 / _local5)); _local8.vertices[3].Set((-30 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-30 / _local5), (-10 / _local5)); _local8.vertices[1].Set((10 / _local5), (-10 / _local5)); _local8.vertices[2].Set((10 / _local5), (10 / _local5)); _local8.vertices[3].Set((-30 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-30 / _local5), (10 / _local5)); _local8.vertices[1].Set((30 / _local5), (10 / _local5)); _local8.vertices[2].Set((30 / _local5), (30 / _local5)); _local8.vertices[3].Set((-30 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 61; _local9 = new Bitmap(new _classBrickHoleBox().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addWacky1(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-60 / _local5), (-20 / _local5)); _local8.vertices[1].Set((-40 / _local5), (-20 / _local5)); _local8.vertices[2].Set((-40 / _local5), (0 / _local5)); _local8.vertices[3].Set((-60 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-60 / _local5), (0 / _local5)); _local8.vertices[1].Set((0 / _local5), (0 / _local5)); _local8.vertices[2].Set((0 / _local5), (20 / _local5)); _local8.vertices[3].Set((-60 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-20 / _local5), (-20 / _local5)); _local8.vertices[1].Set((60 / _local5), (-20 / _local5)); _local8.vertices[2].Set((60 / _local5), (0 / _local5)); _local8.vertices[3].Set((-20 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((40 / _local5), (0 / _local5)); _local8.vertices[1].Set((60 / _local5), (0 / _local5)); _local8.vertices[2].Set((60 / _local5), (20 / _local5)); _local8.vertices[3].Set((40 / _local5), (20 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 15; _local9 = new Bitmap(new _classBrickWacky1().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addWacky2(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-40 / _local5), (-30 / _local5)); _local8.vertices[1].Set((0 / _local5), (-30 / _local5)); _local8.vertices[2].Set((0 / _local5), (-10 / _local5)); _local8.vertices[3].Set((-40 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-20 / _local5), (-10 / _local5)); _local8.vertices[1].Set((20 / _local5), (-10 / _local5)); _local8.vertices[2].Set((20 / _local5), (10 / _local5)); _local8.vertices[3].Set((-20 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-40 / _local5), (10 / _local5)); _local8.vertices[1].Set((0 / _local5), (10 / _local5)); _local8.vertices[2].Set((0 / _local5), (30 / _local5)); _local8.vertices[3].Set((-40 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((20 / _local5), (-30 / _local5)); _local8.vertices[1].Set((40 / _local5), (-30 / _local5)); _local8.vertices[2].Set((40 / _local5), (30 / _local5)); _local8.vertices[3].Set((20 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 16; _local9 = new Bitmap(new _classBrickWacky2().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addWacky4(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-30 / _local5), (-40 / _local5)); _local8.vertices[1].Set((-10 / _local5), (-40 / _local5)); _local8.vertices[2].Set((-10 / _local5), (40 / _local5)); _local8.vertices[3].Set((-30 / _local5), (40 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-10 / _local5), (-40 / _local5)); _local8.vertices[1].Set((10 / _local5), (-40 / _local5)); _local8.vertices[2].Set((10 / _local5), (-20 / _local5)); _local8.vertices[3].Set((-10 / _local5), (-20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((10 / _local5), (-40 / _local5)); _local8.vertices[1].Set((30 / _local5), (-40 / _local5)); _local8.vertices[2].Set((30 / _local5), (0 / _local5)); _local8.vertices[3].Set((10 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 18; _local9 = new Bitmap(new _classBrickWacky4().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addHinge(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; var _local10:b2RevoluteJointDef; var _local11:b2Vec2; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-60 / _local5), (-10 / _local5)); _local8.vertices[1].Set((60 / _local5), (-10 / _local5)); _local8.vertices[2].Set((60 / _local5), (10 / _local5)); _local8.vertices[3].Set((-60 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 45; _local9 = new Bitmap(new _classBrickHinge().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; if (!_arg2){ _local10 = new b2RevoluteJointDef(); _local11 = _local6.GetPosition(); _local10.Initialize(m_world.GetGroundBody(), _local6, _local11); _local10.enableMotor = false; _local6.m_userData._object = (m_world.CreateJoint(_local10) as b2RevoluteJoint); }; return (_local6); } public function addJesus(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-40 / _local5), (-20 / _local5)); _local8.vertices[1].Set((40 / _local5), (-20 / _local5)); _local8.vertices[2].Set((40 / _local5), (0 / _local5)); _local8.vertices[3].Set((-40 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((0 / _local5), (-40 / _local5)); _local8.vertices[1].Set((20 / _local5), (-40 / _local5)); _local8.vertices[2].Set((20 / _local5), (-20 / _local5)); _local8.vertices[3].Set((0 / _local5), (-20 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((0 / _local5), (0 / _local5)); _local8.vertices[1].Set((20 / _local5), (0 / _local5)); _local8.vertices[2].Set((20 / _local5), (40 / _local5)); _local8.vertices[3].Set((0 / _local5), (40 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 14; _local9 = new Bitmap(new _classBrickJesus().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function createSpriteCircleWithOutlines(_arg1:Bitmap, _arg2:UserData, _arg3:Number, _arg4:Number):void{ var _local5:int; var _local6:BitmapData; var _local7:BitmapData; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = (_arg2._radius * 2); _local6 = _arg1.bitmapData; _local7 = new BitmapData((_local5 + 2), (_local5 + 2), true, 0); _arg2._sprite = new Bitmap(_local7); _arg2._sprite.smoothing = true; _arg2._sprite.x = -11405; _arg2._sprite.y = 10; m_sprite.addChild(_arg2._sprite); _local8 = (_local5 * 0.5); _local9 = ((_local5 * 0.5) * _local8); _local10 = ((_local8 - OUTLINE_WIDTH) * (_local8 - OUTLINE_WIDTH)); _local11 = 0; while (_local11 < (_local5 + 2)) { _local12 = 0; while (_local12 < (_local5 + 2)) { _local13 = (_local11 - _local8); _local14 = (_local12 - _local8); _local15 = (((_local12 - _local8) * _local14) + (_local13 * _local13)); if (_local15 > _local9){ _local7.setPixel32(_local12, _local11, 0); } else { if (_local15 > _local10){ _local7.setPixel32(_local12, _local11, 4278190080); } else { _local7.setPixel32(_local12, _local11, _local6.getPixel32((((_arg3 - 1) + _local12) & 511), (((_arg4 - 1) + _local11) & 511))); }; }; _local12++; }; _local11++; }; } public function addDiamond1(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; _local6 = addBallGeneral((_arg5 * _diamondScale), _arg3, _arg4, 34, _density, _arg2); setBallSprite(new Bitmap(new _classDiamond1().bitmapData), _local6.m_userData, (_arg5 * _diamondScale)); m_sprite.addChild(_local6.m_userData._sprite); _local6.m_userData._radius = _arg5; _local6.m_userData._diamondScale = _diamondScale; _local6.m_userData._diamond = true; return (_local6); } public function addDiamond2(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox(((20 * _diamondScale) / _local5), ((20 * _diamondScale) / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 35; _local6.m_userData._diamond = true; _local9 = new Bitmap(new _classDiamond2().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; _local6.m_userData._scale = (_diamondScale * 1.05); _local6.m_userData._diamondScale = _diamondScale; return (_local6); } public function addCog(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=4):b2Body{ var _local6:Number; var _local7:UserData; var _local8:b2Body; var _local9:b2BodyDef; var _local10:b2PolygonDef; var _local11:Number; var _local12:Number; var _local13:b2RevoluteJointDef; var _local14:b2Body; var _local15:b2CircleDef; var _local16:int; _local6 = 20; _local7 = new UserData(); _local7._iD = 50; _local7._radius = _arg5; _arg5 = (_arg5 / _local6); _local9 = new b2BodyDef(); _local10 = new b2PolygonDef(); _local11 = (_arg5 * 1.2); _local12 = (_arg5 * 0.2); _local13 = new b2RevoluteJointDef(); _local14 = m_world.GetGroundBody(); _local9 = new b2BodyDef(); _local9.position.Set(_arg3, _arg4); _local9.angle = _arg1; _local8 = m_world.CreateBody(_local9); _local15 = new b2CircleDef(); _local15.radius = _arg5; _local15.density = 20; _local15.friction = _friction; _local15.isSensor = _arg2; _local8.CreateShape(_local15); _local8.m_userData = _local7; _local16 = 0; while (_local16 < 4) { _local10 = new b2PolygonDef(); _local10.SetAsOrientedBox(_local11, _local12, new b2Vec2(0, 0), ((Math.PI * _local16) / 4)); _local10.density = 1; _local10.friction = _friction; _local10.isSensor = _arg2; _local8.CreateShape(_local10); _local16++; }; _local8.SetMassFromShapes(); if (!_arg2){ _local13.Initialize(_local14, _local8, new b2Vec2(_arg3, _arg4)); _local13.motorSpeed = 0; _local13.enableMotor = false; _local7._object = (m_world.CreateJoint(_local13) as b2RevoluteJoint); }; return (_local8); } public function addBox1T(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = (_density * 5); _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((20 / _local5), (20 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 48; _local6.m_userData._1T = true; _local9 = new Bitmap(new _classBrickO1T().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function createSpriteBox(_arg1:Bitmap, _arg2:UserData, _arg3:Number, _arg4:Number):void{ var _local5:int; var _local6:int; var _local7:BitmapData; var _local8:BitmapData; var _local9:int; var _local10:int; _local5 = (_arg2._width * 2); _local6 = (_arg2._height * 2); _local7 = _arg1.bitmapData; _local8 = new BitmapData(_local5, _local6, false, 0); _local9 = 0; while (_local9 < _local6) { _local10 = 0; while (_local10 < _local5) { _local8.setPixel32(_local10, _local9, _local7.getPixel32(((_arg3 + _local10) & 511), ((_arg4 + _local9) & 511))); _local10++; }; _local9++; }; _arg2._sprite = new Bitmap(_local8); _arg2._sprite.smoothing = true; _arg2._sprite.x = -11405; _arg2._sprite.y = 10; m_sprite.addChild(_arg2._sprite); } private function isCollidingTestGeometry(_arg1:b2Body):Boolean{ var _local2:b2Shape; var _local3:Boolean; _local2 = getCollisionTestGeometry(_arg1); _local3 = isCollidingTest(_local2, _arg1.GetXForm(), _arg1); return (_local3); } private function isIPhoneSleeping(_arg1:Number):Boolean{ if (_arg1 < (-130 / m_debugDraw.m_drawScale)){ return (true); }; return (false); } public function createSpriteCircle(_arg1:Bitmap, _arg2:UserData, _arg3:Number, _arg4:Number):void{ var _local5:int; var _local6:BitmapData; var _local7:BitmapData; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:Number; var _local13:Number; var _local14:Number; _local5 = (_arg2._radius * 2); _local6 = _arg1.bitmapData; _local7 = new BitmapData((_local5 + 2), (_local5 + 2), true, 0); if (_arg3 < 1){ _arg3 = 1; }; if (_arg4 < 1){ _arg4 = 1; }; _arg2._sprite = new Bitmap(_local7); _arg2._sprite.smoothing = true; _arg2._sprite.x = -11405; _arg2._sprite.y = 10; m_sprite.addChild(_arg2._sprite); _local8 = (_local5 * 0.5); _local9 = ((_local5 * 0.5) * _local8); _local10 = 0; while (_local10 < (_local5 + 2)) { _local11 = 0; while (_local11 < (_local5 + 2)) { _local12 = (_local10 - _local8); _local13 = (_local11 - _local8); _local14 = (((_local11 - _local8) * _local13) + (_local12 * _local12)); if (_local14 > _local9){ _local7.setPixel32(_local11, _local10, 0); } else { _local7.setPixel32(_local11, _local10, _local6.getPixel32((((_arg3 - 1) + _local11) & 511), (((_arg4 - 1) + _local10) & 511))); }; _local11++; }; _local10++; }; } public function addTargetArea(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; _local6 = addBallGeneral(_arg5, _arg3, _arg4, 26, _density, true); return (_local6); } private function CreateShadowSprite(_arg1:UserData):void{ var _local2:BitmapData; var _local3:BitmapData; var _local4:int; var _local5:int; var _local6:int; var _local7:Bitmap; var _local8:int; var _local9:uint; if ((((((_arg1 == null)) || ((_arg1._sprite == null)))) || (!((_arg1._spriteShadow == null))))){ return; }; if ((((_arg1._iD == 27)) || ((_arg1._iD == 28)))){ return; }; _local2 = _arg1._sprite.bitmapData; _local3 = _local2.clone(); _local4 = _local2.width; _local5 = _local2.height; _local6 = 0; while (_local6 < _local5) { _local8 = 0; while (_local8 < _local4) { _local9 = _local2.getPixel32(_local8, _local6); _local9 = (_local9 & 4278190080); _local3.setPixel32(_local8, _local6, _local9); _local8++; }; _local6++; }; _local7 = new Bitmap(_local3); _arg1._spriteShadow = _local7; m_sprite.addChild(_local7); } public function addBGBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):b2Body{ return (addOrientedBGBox(_arg1, _arg2, _arg3, _arg4, 0)); } public function addDiamond3(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Number; var _local10:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local9 = ((40 * _diamondScale) * 0.5); _local8.vertexCount = 3; _local8.vertices[2].Set((-(_local9) / _local5), (_local9 / _local5)); _local8.vertices[1].Set((_local9 / _local5), (_local9 / _local5)); _local8.vertices[0].Set((0 / _local5), (-(_local9) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 36; _local6.m_userData._diamond = true; _local10 = new Bitmap(new _classDiamond3().bitmapData); _local10.x = -11405; _local10.y = 10; _local10.smoothing = true; m_sprite.addChild(_local10); _local6.m_userData._sprite = _local10; _local6.m_userData._scale = (_diamondScale * 1.05); _local6.m_userData._diamondScale = _diamondScale; return (_local6); } public function GetBodyAtMouse(_arg1:Boolean=false, _arg2:Boolean=true):b2Body{ var _local3:b2AABB; var _local4:int; var _local5:Array; var _local6:int; var _local7:b2Body; var _local8:int; var _local9:b2Shape; var _local10:Boolean; if ((((Main._mouseClickedX < (300 - 160))) || ((Main._mouseClickedX > (300 + 160))))){ return (null); }; mousePVec.Set(mouseXWorldPhys, mouseYWorldPhys); _local3 = new b2AABB(); _local3.lowerBound.Set((mouseXWorldPhys - 0.001), (mouseYWorldPhys - 0.001)); _local3.upperBound.Set((mouseXWorldPhys + 0.001), (mouseYWorldPhys + 0.001)); _local4 = 10; _local5 = new Array(); _local6 = m_world.Query(_local3, _local5, _local4); _local7 = null; _getBodyAtMouseTouched = false; _local8 = 0; while (_local8 < _local6) { if ((((_local5[_local8].GetBody().IsStatic() == false)) || (_arg1))){ _local9 = (_local5[_local8] as b2Shape); if (((!(_arg2)) && (_local9.IsSensor()))){ } else { _local10 = _local9.TestPoint(_local9.GetBody().GetXForm(), mousePVec); if (((_local10) && (!((m_mouseBody == _local9.GetBody()))))){ _getBodyAtMouseTouched = true; if (!_local9.GetBody().IsSleeping()){ Main._playBadPickup = true; } else { Main._playGrabShape = true; _local7 = _local9.GetBody(); break; }; }; }; }; _local8++; }; if (_local7 != null){ trace("GetBodyAtMouse != null!"); } else { trace("GetBodyAtMouse == null!"); }; return (_local7); } public function addBlockG(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((40 / _local5), (40 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 68; _local6.m_userData._directedGravity = true; _local9 = new Bitmap(new _classBrickBlockG().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBoxHelium(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((20 / _local5), (20 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 54; _local6.m_userData._helium = true; _local9 = new Bitmap(new _classBrickOHelium().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addKiila(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 6; _local8.vertices[0].Set((-50 / _local5), (-10 / _local5)); _local8.vertices[1].Set((50 / _local5), (-10 / _local5)); _local8.vertices[2].Set((60 / _local5), (0 / _local5)); _local8.vertices[3].Set((50 / _local5), (10 / _local5)); _local8.vertices[4].Set((-50 / _local5), (10 / _local5)); _local8.vertices[5].Set((-60 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 57; _local9 = new Bitmap(new _classBrickKiila().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } private function twinkleAddParticle(_arg1:b2Body, _arg2:Number, _arg3:Number, _arg4:uint, _arg5:int):void{ var _local6:b2Vec2; var _local7:Particle; var _local8:SpriteParticle; _arg2 = (_arg2 + 300); _arg3 = (_arg3 + 250); if (!canAddInGameParticle(_arg2, _arg3)){ return; }; if (_arg5 == 2){ _local6 = _arg1.GetLinearVelocity(); if (_local6.LengthSquared() > (0.15 * 0.15)){ _local7 = Main.m_particleManager.addParticle(Particle.PARTICLE_TYPE_TWINKLE, _arg2, _arg3, _arg4); if (_local7 != null){ _local7._speedX = (-(_local6.x) * 0.2); _local7._speedY = (-(_local6.y) * 0.2); _local7._life = (_local7._life + ((Math.random() * 20) + 20)); }; }; } else { if (_arg5 == 1){ _local8 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_SMOKE, _arg2, _arg3); if (_local8 != null){ _local8._life = (_local8._life + (Math.random() * 10)); }; } else { if (_arg5 == 0){ _local8 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, _arg2, _arg3); if (_local8 != null){ _local8._life = (_local8._life + (Math.random() * 10)); }; }; }; }; } public function addTriangleLeft(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 3; _local8.vertices[2].Set((-30 / _local5), (30 / _local5)); _local8.vertices[1].Set((30 / _local5), (30 / _local5)); _local8.vertices[0].Set((30 / _local5), (-30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 21; _local9 = new Bitmap(new _classTriangleLeft().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addPoleG(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-60 / _local5), (-10 / _local5)); _local8.vertices[1].Set((60 / _local5), (-10 / _local5)); _local8.vertices[2].Set((60 / _local5), (10 / _local5)); _local8.vertices[3].Set((-60 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 66; _local6.m_userData._directedGravity = true; _local9 = new Bitmap(new _classBrickPoleG().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addPyramid(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 3; _local8.vertices[2].Set((-40 / _local5), (40 / _local5)); _local8.vertices[1].Set((40 / _local5), (40 / _local5)); _local8.vertices[0].Set((0 / _local5), (-40 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 23; _local9 = new Bitmap(new _classPyramid().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBox(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((20 / _local5), (20 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 1; _local9 = new Bitmap(new _classBrickO().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addHingeVeryBig(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; var _local10:b2RevoluteJointDef; var _local11:b2Vec2; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-100 / _local5), (-10 / _local5)); _local8.vertices[1].Set((100 / _local5), (-10 / _local5)); _local8.vertices[2].Set((100 / _local5), (10 / _local5)); _local8.vertices[3].Set((-100 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-100 / _local5), (-30 / _local5)); _local8.vertices[1].Set((-80 / _local5), (-30 / _local5)); _local8.vertices[2].Set((-80 / _local5), (-10 / _local5)); _local8.vertices[3].Set((-100 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((80 / _local5), (10 / _local5)); _local8.vertices[1].Set((100 / _local5), (10 / _local5)); _local8.vertices[2].Set((100 / _local5), (30 / _local5)); _local8.vertices[3].Set((80 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 60; _local9 = new Bitmap(new _classBrickHingeVeryBig().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; if (!_arg2){ _local10 = new b2RevoluteJointDef(); _local11 = _local6.GetPosition(); _local10.Initialize(m_world.GetGroundBody(), _local6, _local11); _local10.enableMotor = false; _local6.m_userData._object = (m_world.CreateJoint(_local10) as b2RevoluteJoint); }; return (_local6); } public function addWhoaMirror(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-40 / _local5), (-10 / _local5)); _local8.vertices[1].Set((40 / _local5), (-10 / _local5)); _local8.vertices[2].Set((40 / _local5), (10 / _local5)); _local8.vertices[3].Set((-40 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((20 / _local5), (10 / _local5)); _local8.vertices[1].Set((40 / _local5), (10 / _local5)); _local8.vertices[2].Set((40 / _local5), (30 / _local5)); _local8.vertices[3].Set((20 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-40 / _local5), (-30 / _local5)); _local8.vertices[1].Set((-20 / _local5), (-30 / _local5)); _local8.vertices[2].Set((-20 / _local5), (-10 / _local5)); _local8.vertices[3].Set((-40 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 33; _local9 = new Bitmap(new _classBrickWhoaMirror().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addPacman(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((30 / _local5), (-30 / _local5)); _local8.vertices[1].Set((30 / _local5), (30 / _local5)); _local8.vertices[2].Set((0 / _local5), (30 / _local5)); _local8.vertices[3].Set((0 / _local5), (0 / _local5)); _local6.CreateShape(_local8); _local8.vertexCount = 4; _local8.vertices[0].Set((-30 / _local5), (-30 / _local5)); _local8.vertices[1].Set((0 / _local5), (0 / _local5)); _local8.vertices[2].Set((0 / _local5), (30 / _local5)); _local8.vertices[3].Set((-30 / _local5), (30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 42; _local9 = new Bitmap(new _classBrickPacman().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addWideCross(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set(((-5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), (((-10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), (((0 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((50 / _local5), (((0 * 2) - 10) / _local5)); _local8.vertices[1].Set((50 / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[2].Set((-50 / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[3].Set((-50 / _local5), (((0 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((-5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), (((10 * 2) - 10) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), (((20 * 2) - 10) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 38; _local9 = new Bitmap(new _classBrickWideCross().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addGlueBall(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:int=0xFFFF00):b2Body{ var _local5:Number; var _local6:b2BodyDef; var _local7:b2Body; var _local8:b2CircleDef; _local5 = 20; _local6 = new b2BodyDef(); _local6.isSleeping = true; _local6.position.Set(_arg2, _arg3); _local7 = m_world.CreateBody(_local6); _local8 = new b2CircleDef(); _local8.radius = (_arg1 / _local5); _local8.density = 0; _local8.friction = 1000; _local8.restitution = 0; _local7.CreateShape(_local8); _local7.SetMassFromShapes(); _local7.m_userData = new UserData(); _local7.m_userData._iD = 56; _local7.m_userData._radius = _arg1; _local7.m_userData._color = 0xFFFF00; _local7.m_userData._sticky = true; _local7.m_userData._circle = true; return (_local7); } public function addCircleHelium(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; _local6 = addBallGeneral(_arg5, _arg3, _arg4, 52, _density, _arg2); _local6.m_userData._helium = true; setBallSprite(new Bitmap(new _classSunHelium().bitmapData), _local6.m_userData, _arg5); m_sprite.addChild(_local6.m_userData._sprite); return (_local6); } public function addPyramidHelium(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 3; _local8.vertices[2].Set((-40 / _local5), (40 / _local5)); _local8.vertices[1].Set((40 / _local5), (40 / _local5)); _local8.vertices[0].Set((0 / _local5), (-40 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 53; _local6.m_userData._helium = true; _local9 = new Bitmap(new _classPyramidHelium().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } private function isCollidingTest(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Body):Boolean{ var _local4:b2Manifold; var _local5:Boolean; var _local6:Boolean; var _local7:b2Body; var _local8:b2Body; var _local9:b2Shape; var _local10:Boolean; var _local11:Boolean; _local4 = new b2Manifold(); while (_arg1 != null) { _local5 = (_arg1 is b2CircleShape); _local6 = (_arg1 is b2PolygonShape); _local7 = m_world.m_bodyList; while (_local7 != null) { _local8 = _local7.m_next; _local9 = _local7.GetShapeList(); if ((((((_local7 == _arg3)) || ((_local9 == null)))) || (_local9.IsSensor()))){ _local7 = _local8; } else { while (_local9 != null) { _local10 = (_local9 is b2CircleShape); _local11 = (_local9 is b2PolygonShape); if (((_local5) && (_local10))){ b2Collision.b2CollideCircles(_local4, (_arg1 as b2CircleShape), _arg2, (_local9 as b2CircleShape), _local7.GetXForm()); } else { if (((_local5) && (_local11))){ b2Collision.b2CollidePolygonAndCircle(_local4, (_local9 as b2PolygonShape), _local7.GetXForm(), (_arg1 as b2CircleShape), _arg2); } else { if (((_local6) && (_local10))){ b2Collision.b2CollidePolygonAndCircle(_local4, (_arg1 as b2PolygonShape), _arg2, (_local9 as b2CircleShape), _local7.GetXForm()); } else { if (((_local6) && (_local11))){ b2Collision.b2CollidePolygons(_local4, (_arg1 as b2PolygonShape), _arg2, (_local9 as b2PolygonShape), _local7.GetXForm()); }; }; }; }; if (_local4.pointCount > 0){ return (true); }; _local9 = _local9.GetNext(); }; _local7 = _local8; }; }; _arg1 = _arg1.GetNext(); }; return (false); } public function addRotatingCrossBox(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:UserData; var _local7:b2Body; var _local8:b2BodyDef; var _local9:b2PolygonDef; var _local10:b2RevoluteJointDef; var _local11:b2Body; var _local12:Bitmap; _local5 = 20; _local6 = new UserData(); _local6._iD = 63; _local8 = new b2BodyDef(); _local9 = new b2PolygonDef(); _local10 = new b2RevoluteJointDef(); _local11 = m_world.GetGroundBody(); _local8 = new b2BodyDef(); _local8.position.Set(_arg3, _arg4); _local8.angle = _arg1; _local7 = m_world.CreateBody(_local8); _local9.density = 20; _local9.friction = _friction; _local9.isSensor = _arg2; _local9.vertexCount = 8; _local9.vertices[0].Set((-10 / _local5), (-30 / _local5)); _local9.vertices[1].Set((10 / _local5), (-30 / _local5)); _local9.vertices[2].Set((30 / _local5), (-10 / _local5)); _local9.vertices[3].Set((30 / _local5), (10 / _local5)); _local9.vertices[4].Set((10 / _local5), (30 / _local5)); _local9.vertices[5].Set((-10 / _local5), (30 / _local5)); _local9.vertices[6].Set((-30 / _local5), (10 / _local5)); _local9.vertices[7].Set((-30 / _local5), (-10 / _local5)); _local7.CreateShape(_local9); _local7.m_userData = _local6; _local7.SetMassFromShapes(); _local12 = new Bitmap(new _classRotatingCrossBox().bitmapData); _local12.x = -11405; _local12.y = 10; _local12.smoothing = true; m_sprite.addChild(_local12); _local7.m_userData._sprite = _local12; if (!_arg2){ _local10.Initialize(_local11, _local7, new b2Vec2(_arg3, _arg4)); _local10.motorSpeed = 0; _local10.enableMotor = false; _local6._object = (m_world.CreateJoint(_local10) as b2RevoluteJoint); }; return (_local7); } public function addCircleG(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; _local6 = addBallGeneral(_arg5, _arg3, _arg4, 71, _density, _arg2); setBallSprite(new Bitmap(new _classSunG().bitmapData), _local6.m_userData, _arg5); m_sprite.addChild(_local6.m_userData._sprite); _local6.m_userData._directedGravity = true; return (_local6); } private function setBallSprite(_arg1:Bitmap, _arg2:UserData, _arg3:Number):void{ var _local4:Number; _arg2._sprite = _arg1; _local4 = (_arg2._sprite.width * 0.5); _arg2._sprite.scaleX = ((_arg3 / _local4) * 1.05); _arg2._sprite.scaleY = ((_arg3 / _local4) * 1.05); _arg2._scale = ((_arg3 / _local4) * 1.05); _arg2._sprite.smoothing = true; _arg2._radius = _arg3; } public function addSaw2(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; var _local7:b2RevoluteJointDef; var _local8:b2Vec2; _local6 = addBallGeneral(_arg5, _arg3, _arg4, 44, _density, _arg2); setBallSprite(new Bitmap(new _classSaw2X().bitmapData), _local6.m_userData, _arg5); m_sprite.addChild(_local6.m_userData._sprite); if (!_arg2){ _local7 = new b2RevoluteJointDef(); _local8 = _local6.GetPosition(); _local7.Initialize(m_world.GetGroundBody(), _local6, _local8); _local7.maxMotorTorque = (_arg5 * 20); _local7.enableMotor = !(_arg2); _local7.motorSpeed = (-(_arg5) * 2); _local6.m_userData._object = (m_world.CreateJoint(_local7) as b2RevoluteJoint); }; return (_local6); } public function addBlock1T(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = (_density * 5); _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((40 / _local5), (40 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 49; _local6.m_userData._1T = true; _local9 = new Bitmap(new _classBrickBlock1T().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addHingeBig(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; var _local10:b2RevoluteJointDef; var _local11:b2Vec2; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-80 / _local5), (-10 / _local5)); _local8.vertices[1].Set((80 / _local5), (-10 / _local5)); _local8.vertices[2].Set((80 / _local5), (10 / _local5)); _local8.vertices[3].Set((-80 / _local5), (10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 58; _local9 = new Bitmap(new _classBrickHingeBig().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; if (!_arg2){ _local10 = new b2RevoluteJointDef(); _local11 = _local6.GetPosition(); _local10.Initialize(m_world.GetGroundBody(), _local6, _local11); _local10.enableMotor = false; _local6.m_userData._object = (m_world.CreateJoint(_local10) as b2RevoluteJoint); }; return (_local6); } public function createSpriteBoxWithOutlines(_arg1:Bitmap, _arg2:UserData, _arg3:Number, _arg4:Number):void{ var _local5:BitmapData; createSpriteBox(_arg1, _arg2, _arg3, _arg4); _local5 = _arg2._sprite.bitmapData; _local5.fillRect(new Rectangle(0, 0, (_arg2._width * 2), OUTLINE_WIDTH), 0); _local5.fillRect(new Rectangle(0, ((_arg2._height * 2) - OUTLINE_WIDTH), (_arg2._width * 2), OUTLINE_WIDTH), 0); _local5.fillRect(new Rectangle(0, 0, OUTLINE_WIDTH, (_arg2._height * 2)), 0); _local5.fillRect(new Rectangle(((_arg2._width * 2) - OUTLINE_WIDTH), 0, OUTLINE_WIDTH, (_arg2._height * 2)), 0); } private function getCollisionTestGeometry(_arg1:b2Body):b2Shape{ var _local2:b2Shape; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Shape; var _local6:b2CircleShape; var _local7:b2CircleDef; var _local8:b2PolygonShape; var _local9:b2PolygonDef; var _local10:Number; var _local11:Number; var _local12:Array; var _local13:int; var _local14:Number; var _local15:Number; _local2 = _arg1.GetShapeList(); _local3 = null; _local4 = null; _local5 = null; while (_local2 != null) { _local5 = null; if ((_local2 is b2CircleShape)){ _local6 = (_local2 as b2CircleShape); _local7 = new b2CircleDef(); _local7.localPosition.x = _local6.GetLocalPosition().x; _local7.localPosition.y = _local6.GetLocalPosition().y; _local7.radius = (_local6.GetRadius() - C_MRGN); _local5 = new b2CircleShape(_local7); trace(((((("new b2CircleShape: localPositionX = " + _local7.localPosition.x) + " localPositionY = ") + _local7.localPosition.y) + " radius = ") + _local7.radius)); } else { if ((_local2 is b2PolygonShape)){ _local8 = (_local2 as b2PolygonShape); _local9 = new b2PolygonDef(); _local9.vertexCount = _local8.GetVertexCount(); _local10 = 0; _local11 = 0; _local12 = _local8.GetVertices(); _local13 = 0; while (_local13 < _local9.vertexCount) { _local10 = (_local10 + _local12[_local13].x); _local11 = (_local11 + _local12[_local13].y); _local13++; }; _local10 = (_local10 / _local9.vertexCount); _local11 = (_local11 / _local9.vertexCount); _local13 = 0; while (_local13 < _local9.vertexCount) { if (_local12[_local13].x < _local10){ _local14 = C_MRGN; } else { _local14 = -(C_MRGN); }; if (_local12[_local13].y < _local11){ _local15 = C_MRGN; } else { _local15 = -(C_MRGN); }; _local9.vertices[_local13] = new b2Vec2((_local12[_local13].x + _local14), (_local12[_local13].y + _local15)); _local13++; }; _local5 = new b2PolygonShape(_local9); }; }; if (_local3 == null){ _local3 = _local5; _local4 = _local5; } else { _local3.m_next = _local5; _local3 = _local5; }; _local2 = _local2.GetNext(); }; return (_local4); } public function addBGBall(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:int=0):b2Body{ var _local5:Number; var _local6:b2BodyDef; var _local7:b2Body; var _local8:b2CircleDef; _local5 = 20; _local6 = new b2BodyDef(); _local6.isSleeping = true; _local6.position.Set(_arg2, _arg3); _local7 = m_world.CreateBody(_local6); _local8 = new b2CircleDef(); _local8.radius = (_arg1 / _local5); _local8.density = 0; _local8.friction = _friction; _local8.restitution = 0.1; _local7.CreateShape(_local8); _local7.SetMassFromShapes(); _local7.m_userData = new UserData(); _local7.m_userData._iD = 27; _local7.m_userData._radius = _arg1; _local7.m_userData._color = 0xFFFFFF; _local7.m_userData._circle = true; return (_local7); } public function addH(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((-20 / _local5), (-30 / _local5)); _local8.vertices[1].Set((-20 / _local5), (30 / _local5)); _local8.vertices[2].Set((-40 / _local5), (30 / _local5)); _local8.vertices[3].Set((-40 / _local5), (-30 / _local5)); _local6.CreateShape(_local8); _local8.vertexCount = 4; _local8.vertices[0].Set((40 / _local5), (-30 / _local5)); _local8.vertices[1].Set((40 / _local5), (30 / _local5)); _local8.vertices[2].Set((20 / _local5), (30 / _local5)); _local8.vertices[3].Set((20 / _local5), (-30 / _local5)); _local6.CreateShape(_local8); _local8.vertexCount = 4; _local8.vertices[0].Set((20 / _local5), (-10 / _local5)); _local8.vertices[1].Set((20 / _local5), (10 / _local5)); _local8.vertices[2].Set((-20 / _local5), (10 / _local5)); _local8.vertices[3].Set((-20 / _local5), (-10 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 43; _local9 = new Bitmap(new _classBrickH().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addJ(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set(((5 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[1].Set(((15 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[2].Set(((15 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[3].Set(((5 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((15 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[1].Set(((15 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[2].Set(((-15 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[3].Set(((-15 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 4; _local9 = new Bitmap(new _classBrickJ().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } private function twinkleShape(_arg1:b2Body, _arg2:b2Shape, _arg3:b2Vec2, _arg4:b2XForm, _arg5:uint, _arg6:int):void{ var _local7:int; var _local8:int; var _local9:int; var _local10:b2CircleShape; var _local11:Number; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2PolygonShape; var _local18:int; var _local19:Array; var _local20:Array; var _local21:int; var _local22:int; _local7 = _arg2.GetType(); if (_local7 == b2Shape.e_circleShape){ _local10 = (_arg2 as b2CircleShape); _local11 = _local10.GetRadius(); _local12 = b2Math.b2MulX(_arg4, _local10.GetLocalPosition()); b2Math.b2MulX(_arg4, _local10.GetLocalPosition()).x = (_local12.x * m_debugDraw.m_drawScale); _local12.y = (_local12.y * m_debugDraw.m_drawScale); _local13 = ((Math.random() * _local11) * m_debugDraw.m_drawScale); _local14 = ((Math.random() * Math.PI) * 2); _local15 = (Math.cos(_local14) * _local13); _local16 = (Math.sin(_local14) * _local13); twinkleAddParticle(_arg1, (_local12.x + _local15), (_local12.y + _local16), _arg5, _arg6); } else { if (_local7 == b2Shape.e_polygonShape){ _local17 = (_arg2 as b2PolygonShape); _local18 = _local17.GetVertexCount(); _local19 = _local17.GetVertices(); _local20 = new Array(b2Settings.b2_maxPolygonVertices); _local8 = 0; while (_local8 < _local18) { _local20[_local8] = b2Math.b2MulX(_arg4, _local19[_local8]); _local8++; }; _local21 = (_local18 - 2); _local22 = int(((Math.random() * 0.99) * _local21)); getRandomPointInTriangle(_local20[0], _local20[(_local22 + 1)], _local20[(_local22 + 2)]); s_randomPointX = (s_randomPointX * m_debugDraw.m_drawScale); s_randomPointY = (s_randomPointY * m_debugDraw.m_drawScale); twinkleAddParticle(_arg1, s_randomPointX, s_randomPointY, _arg5, _arg6); }; }; } public function CreateSpriteForBody(_arg1:b2Body):void{ var _local2:UserData; _local2 = _arg1.GetUserData(); if (_local2 == null){ return; }; if (_local2._iD == 27){ CreateTextureForCircleBody(_arg1, true, Main._bitmapTextureA, false, false); } else { if (_local2._iD == 28){ CreateTextureForBody(_arg1, true, Main._bitmapTextureA, false, false); }; }; } public function addL(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[3].Set(((-5 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[2].Set(((-15 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[1].Set(((-15 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[0].Set(((-5 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((15 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[1].Set(((15 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[2].Set(((-15 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[3].Set(((-15 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 5; _local9 = new Bitmap(new _classBrickL().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addTriangleRight(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 3; _local8.vertices[2].Set((-30 / _local5), (30 / _local5)); _local8.vertices[1].Set((30 / _local5), (30 / _local5)); _local8.vertices[0].Set((-30 / _local5), (-30 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 22; _local9 = new Bitmap(new _classTriangleRight().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } private function isColliding(_arg1:b2Body):Boolean{ return (isCollidingTest(_arg1.GetShapeList(), _arg1.GetXForm(), _arg1)); } public function addSaw1(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000, _arg5:Number=10):b2Body{ var _local6:b2Body; var _local7:b2RevoluteJointDef; var _local8:b2Vec2; _local6 = addBallGeneral(_arg5, _arg3, _arg4, 41, _density, _arg2); setBallSprite(new Bitmap(new _classSaw1().bitmapData), _local6.m_userData, _arg5); m_sprite.addChild(_local6.m_userData._sprite); if (!_arg2){ _local7 = new b2RevoluteJointDef(); _local8 = _local6.GetPosition(); _local7.Initialize(m_world.GetGroundBody(), _local6, _local8); _local7.maxMotorTorque = (_arg5 * 20); _local7.enableMotor = !(_arg2); _local7.motorSpeed = (_arg5 * 2); _local6.m_userData._object = (m_world.CreateJoint(_local7) as b2RevoluteJoint); }; return (_local6); } public function addT(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set(((-5 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[2].Set(((5 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((15 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[1].Set(((15 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[2].Set(((-15 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[3].Set(((-15 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 3; _local9 = new Bitmap(new _classBrickT().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addS(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[3].Set(((5 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[2].Set(((-15 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[1].Set(((-15 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[0].Set(((5 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((15 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[1].Set(((15 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[2].Set(((-5 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[3].Set(((-5 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 6; _local9 = new Bitmap(new _classBrickS().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function UpdateMouseWorld():void{ mouseXWorldPhys = (Input.mousseX / m_debugDraw.m_drawScale); mouseYWorldPhys = (Input.mousseY / m_debugDraw.m_drawScale); mouseXWorld = Input.mousseX; mouseYWorld = Input.mousseY; } public function addZ(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[3].Set(((15 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[2].Set(((-5 * 2) / _local5), ((-10 * 2) / _local5)); _local8.vertices[1].Set(((-5 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[0].Set(((15 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set(((5 * 2) / _local5), ((0 * 2) / _local5)); _local8.vertices[1].Set(((5 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[2].Set(((-15 * 2) / _local5), ((10 * 2) / _local5)); _local8.vertices[3].Set(((-15 * 2) / _local5), ((0 * 2) / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 7; _local9 = new Bitmap(new _classBrickZ().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function BringSpritesOnTop():void{ var _local1:b2Body; _local1 = m_world.m_bodyList; while (_local1) { if (_local1.IsStatic()){ } else { if (((!((_local1.m_userData == null))) && (!((_local1.m_userData._sprite == null))))){ m_sprite.removeChild(_local1.m_userData._sprite); m_sprite.addChild(_local1.m_userData._sprite); }; }; _local1 = _local1.m_next; }; } public function addPyramid1T(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = (_density * 5); _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 3; _local8.vertices[2].Set((-40 / _local5), (40 / _local5)); _local8.vertices[1].Set((40 / _local5), (40 / _local5)); _local8.vertices[0].Set((0 / _local5), (-40 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 47; _local6.m_userData._1T = true; _local9 = new Bitmap(new _classPyramid1T().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addCornerLong(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local8.density = _density; _local8.friction = _friction; _local8.restitution = 0; _local8.isSensor = _arg2; _local8.vertexCount = 4; _local8.vertices[0].Set((20 / _local5), (-40 / _local5)); _local8.vertices[1].Set((40 / _local5), (-40 / _local5)); _local8.vertices[2].Set((40 / _local5), (40 / _local5)); _local8.vertices[3].Set((20 / _local5), (40 / _local5)); _local6.CreateShape(_local8); _local8.vertices[0].Set((-40 / _local5), (20 / _local5)); _local8.vertices[1].Set((20 / _local5), (20 / _local5)); _local8.vertices[2].Set((20 / _local5), (40 / _local5)); _local8.vertices[3].Set((-40 / _local5), (40 / _local5)); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 29; _local9 = new Bitmap(new _classBrickCornerLong().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public function addBlockStatic(_arg1:Number=0, _arg2:Boolean=true, _arg3:Number=-10000, _arg4:Number=-10000):b2Body{ var _local5:Number; var _local6:b2Body; var _local7:b2BodyDef; var _local8:b2PolygonDef; var _local9:Bitmap; _local5 = 20; _local7 = new b2BodyDef(); _local8 = new b2PolygonDef(); _local8.density = 0; _local8.friction = _friction; _local8.restitution = 0; _local8.SetAsBox((40 / _local5), (40 / _local5)); _local8.isSensor = _arg2; _local7.position.Set(_arg3, _arg4); _local7.angle = _arg1; _local6 = m_world.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.m_userData = new UserData(); _local6.m_userData._iD = 78; _local9 = new Bitmap(new _classBrickBlockStatic().bitmapData); _local9.x = -11405; _local9.y = 10; _local9.smoothing = true; m_sprite.addChild(_local9); _local6.m_userData._sprite = _local9; return (_local6); } public static function getRandomPointInTriangle(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):void{ var _local4:Number; var _local5:Number; var _local6:Number; _local4 = Math.random(); _local5 = Math.random(); if ((_local4 + _local5) > 1){ _local4 = (1 - _local4); _local5 = (1 - _local5); }; _local6 = ((1 - _local4) - _local5); s_randomPointX = (((_local4 * _arg1.x) + (_local5 * _arg2.x)) + (_local6 * _arg3.x)); s_randomPointY = (((_local4 * _arg1.y) + (_local5 * _arg2.y)) + (_local6 * _arg3.y)); } public static function rot(_arg1:Bitmap, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):void{ var _local7:Number; var _local8:Number; while (_arg4 > 360) { _arg4 = (_arg4 - 360); }; while (_arg4 < -360) { _arg4 = (_arg4 + 360); }; _local7 = Math.cos(((_arg4 * Math.PI) / 180)); _local8 = Math.sin(((_arg4 * Math.PI) / 180)); _arg1.rotation = _arg4; _arg1.x = ((_arg2 + (_arg5 * _local7)) - (_arg6 * _local8)); _arg1.y = ((_arg3 + (_arg6 * _local7)) + (_arg5 * _local8)); } public static function cloneBitmap(_arg1:Bitmap, _arg2:Number):Bitmap{ var _local3:BitmapData; var _local4:Matrix; _local3 = new BitmapData((_arg1.width * _arg2), (_arg1.height * _arg2), true, 0); _local4 = new Matrix(); _local4.scale(_arg2, _arg2); _local3.draw(_arg1, _local4, null, null, null, true); return (new Bitmap(_local3)); } public static function canAddInGameParticle(_arg1:Number, _arg2:Number):Boolean{ if ((((((((_arg1 < (300 - 160))) || ((_arg1 > (300 + 160))))) || ((_arg2 < 10)))) || ((_arg2 > 590)))){ return (false); }; return (true); } } }//package TestBed
Section 109
//Test__classBrickAlien (TestBed.Test__classBrickAlien) package TestBed { import mx.core.*; public class Test__classBrickAlien extends BitmapAsset { } }//package TestBed
Section 110
//Test__classBrickBig (TestBed.Test__classBrickBig) package TestBed { import mx.core.*; public class Test__classBrickBig extends BitmapAsset { } }//package TestBed
Section 111
//Test__classBrickBlock (TestBed.Test__classBrickBlock) package TestBed { import mx.core.*; public class Test__classBrickBlock extends BitmapAsset { } }//package TestBed
Section 112
//Test__classBrickBlock1T (TestBed.Test__classBrickBlock1T) package TestBed { import mx.core.*; public class Test__classBrickBlock1T extends BitmapAsset { } }//package TestBed
Section 113
//Test__classBrickBlockG (TestBed.Test__classBrickBlockG) package TestBed { import mx.core.*; public class Test__classBrickBlockG extends BitmapAsset { } }//package TestBed
Section 114
//Test__classBrickBlockHelium (TestBed.Test__classBrickBlockHelium) package TestBed { import mx.core.*; public class Test__classBrickBlockHelium extends BitmapAsset { } }//package TestBed
Section 115
//Test__classBrickConnect (TestBed.Test__classBrickConnect) package TestBed { import mx.core.*; public class Test__classBrickConnect extends BitmapAsset { } }//package TestBed
Section 116
//Test__classBrickConnectMirror (TestBed.Test__classBrickConnectMirror) package TestBed { import mx.core.*; public class Test__classBrickConnectMirror extends BitmapAsset { } }//package TestBed
Section 117
//Test__classBrickCorner (TestBed.Test__classBrickCorner) package TestBed { import mx.core.*; public class Test__classBrickCorner extends BitmapAsset { } }//package TestBed
Section 118
//Test__classBrickCornerLong (TestBed.Test__classBrickCornerLong) package TestBed { import mx.core.*; public class Test__classBrickCornerLong extends BitmapAsset { } }//package TestBed
Section 119
//Test__classBrickCross (TestBed.Test__classBrickCross) package TestBed { import mx.core.*; public class Test__classBrickCross extends BitmapAsset { } }//package TestBed
Section 120
//Test__classBrickCrossG (TestBed.Test__classBrickCrossG) package TestBed { import mx.core.*; public class Test__classBrickCrossG extends BitmapAsset { } }//package TestBed
Section 121
//Test__classBrickH (TestBed.Test__classBrickH) package TestBed { import mx.core.*; public class Test__classBrickH extends BitmapAsset { } }//package TestBed
Section 122
//Test__classBrickHinge (TestBed.Test__classBrickHinge) package TestBed { import mx.core.*; public class Test__classBrickHinge extends BitmapAsset { } }//package TestBed
Section 123
//Test__classBrickHingeBig (TestBed.Test__classBrickHingeBig) package TestBed { import mx.core.*; public class Test__classBrickHingeBig extends BitmapAsset { } }//package TestBed
Section 124
//Test__classBrickHingeVeryBig (TestBed.Test__classBrickHingeVeryBig) package TestBed { import mx.core.*; public class Test__classBrickHingeVeryBig extends BitmapAsset { } }//package TestBed
Section 125
//Test__classBrickHingeVeryBigStraight (TestBed.Test__classBrickHingeVeryBigStraight) package TestBed { import mx.core.*; public class Test__classBrickHingeVeryBigStraight extends BitmapAsset { } }//package TestBed
Section 126
//Test__classBrickHoleBox (TestBed.Test__classBrickHoleBox) package TestBed { import mx.core.*; public class Test__classBrickHoleBox extends BitmapAsset { } }//package TestBed
Section 127
//Test__classBrickI (TestBed.Test__classBrickI) package TestBed { import mx.core.*; public class Test__classBrickI extends BitmapAsset { } }//package TestBed
Section 128
//Test__classBrickJ (TestBed.Test__classBrickJ) package TestBed { import mx.core.*; public class Test__classBrickJ extends BitmapAsset { } }//package TestBed
Section 129
//Test__classBrickJesus (TestBed.Test__classBrickJesus) package TestBed { import mx.core.*; public class Test__classBrickJesus extends BitmapAsset { } }//package TestBed
Section 130
//Test__classBrickKiila (TestBed.Test__classBrickKiila) package TestBed { import mx.core.*; public class Test__classBrickKiila extends BitmapAsset { } }//package TestBed
Section 131
//Test__classBrickL (TestBed.Test__classBrickL) package TestBed { import mx.core.*; public class Test__classBrickL extends BitmapAsset { } }//package TestBed
Section 132
//Test__classBrickO (TestBed.Test__classBrickO) package TestBed { import mx.core.*; public class Test__classBrickO extends BitmapAsset { } }//package TestBed
Section 133
//Test__classBrickO1T (TestBed.Test__classBrickO1T) package TestBed { import mx.core.*; public class Test__classBrickO1T extends BitmapAsset { } }//package TestBed
Section 134
//Test__classBrickOG (TestBed.Test__classBrickOG) package TestBed { import mx.core.*; public class Test__classBrickOG extends BitmapAsset { } }//package TestBed
Section 135
//Test__classBrickOHelium (TestBed.Test__classBrickOHelium) package TestBed { import mx.core.*; public class Test__classBrickOHelium extends BitmapAsset { } }//package TestBed
Section 136
//Test__classBrickPacman (TestBed.Test__classBrickPacman) package TestBed { import mx.core.*; public class Test__classBrickPacman extends BitmapAsset { } }//package TestBed
Section 137
//Test__classBrickPole (TestBed.Test__classBrickPole) package TestBed { import mx.core.*; public class Test__classBrickPole extends BitmapAsset { } }//package TestBed
Section 138
//Test__classBrickPoleG (TestBed.Test__classBrickPoleG) package TestBed { import mx.core.*; public class Test__classBrickPoleG extends BitmapAsset { } }//package TestBed
Section 139
//Test__classBrickRocket (TestBed.Test__classBrickRocket) package TestBed { import mx.core.*; public class Test__classBrickRocket extends BitmapAsset { } }//package TestBed
Section 140
//Test__classBrickS (TestBed.Test__classBrickS) package TestBed { import mx.core.*; public class Test__classBrickS extends BitmapAsset { } }//package TestBed
Section 141
//Test__classBrickSalmiack (TestBed.Test__classBrickSalmiack) package TestBed { import mx.core.*; public class Test__classBrickSalmiack extends BitmapAsset { } }//package TestBed
Section 142
//Test__classBrickT (TestBed.Test__classBrickT) package TestBed { import mx.core.*; public class Test__classBrickT extends BitmapAsset { } }//package TestBed
Section 143
//Test__classBrickWacky1 (TestBed.Test__classBrickWacky1) package TestBed { import mx.core.*; public class Test__classBrickWacky1 extends BitmapAsset { } }//package TestBed
Section 144
//Test__classBrickWacky1Mirror (TestBed.Test__classBrickWacky1Mirror) package TestBed { import mx.core.*; public class Test__classBrickWacky1Mirror extends BitmapAsset { } }//package TestBed
Section 145
//Test__classBrickWacky2 (TestBed.Test__classBrickWacky2) package TestBed { import mx.core.*; public class Test__classBrickWacky2 extends BitmapAsset { } }//package TestBed
Section 146
//Test__classBrickWacky4 (TestBed.Test__classBrickWacky4) package TestBed { import mx.core.*; public class Test__classBrickWacky4 extends BitmapAsset { } }//package TestBed
Section 147
//Test__classBrickWacky4Mirror (TestBed.Test__classBrickWacky4Mirror) package TestBed { import mx.core.*; public class Test__classBrickWacky4Mirror extends BitmapAsset { } }//package TestBed
Section 148
//Test__classBrickVeryLong (TestBed.Test__classBrickVeryLong) package TestBed { import mx.core.*; public class Test__classBrickVeryLong extends BitmapAsset { } }//package TestBed
Section 149
//Test__classBrickWhoa (TestBed.Test__classBrickWhoa) package TestBed { import mx.core.*; public class Test__classBrickWhoa extends BitmapAsset { } }//package TestBed
Section 150
//Test__classBrickWhoaMirror (TestBed.Test__classBrickWhoaMirror) package TestBed { import mx.core.*; public class Test__classBrickWhoaMirror extends BitmapAsset { } }//package TestBed
Section 151
//Test__classBrickWideCross (TestBed.Test__classBrickWideCross) package TestBed { import mx.core.*; public class Test__classBrickWideCross extends BitmapAsset { } }//package TestBed
Section 152
//Test__classBrickWideCrossG (TestBed.Test__classBrickWideCrossG) package TestBed { import mx.core.*; public class Test__classBrickWideCrossG extends BitmapAsset { } }//package TestBed
Section 153
//Test__classBrickZ (TestBed.Test__classBrickZ) package TestBed { import mx.core.*; public class Test__classBrickZ extends BitmapAsset { } }//package TestBed
Section 154
//Test__classDiamond1 (TestBed.Test__classDiamond1) package TestBed { import mx.core.*; public class Test__classDiamond1 extends BitmapAsset { } }//package TestBed
Section 155
//Test__classDiamond2 (TestBed.Test__classDiamond2) package TestBed { import mx.core.*; public class Test__classDiamond2 extends BitmapAsset { } }//package TestBed
Section 156
//Test__classDiamond3 (TestBed.Test__classDiamond3) package TestBed { import mx.core.*; public class Test__classDiamond3 extends BitmapAsset { } }//package TestBed
Section 157
//Test__classPyramid (TestBed.Test__classPyramid) package TestBed { import mx.core.*; public class Test__classPyramid extends BitmapAsset { } }//package TestBed
Section 158
//Test__classPyramid1T (TestBed.Test__classPyramid1T) package TestBed { import mx.core.*; public class Test__classPyramid1T extends BitmapAsset { } }//package TestBed
Section 159
//Test__classPyramidHelium (TestBed.Test__classPyramidHelium) package TestBed { import mx.core.*; public class Test__classPyramidHelium extends BitmapAsset { } }//package TestBed
Section 160
//Test__classPyramidMini (TestBed.Test__classPyramidMini) package TestBed { import mx.core.*; public class Test__classPyramidMini extends BitmapAsset { } }//package TestBed
Section 161
//Test__classRotatingCross (TestBed.Test__classRotatingCross) package TestBed { import mx.core.*; public class Test__classRotatingCross extends BitmapAsset { } }//package TestBed
Section 162
//Test__classRotatingCrossBig (TestBed.Test__classRotatingCrossBig) package TestBed { import mx.core.*; public class Test__classRotatingCrossBig extends BitmapAsset { } }//package TestBed
Section 163
//Test__classRotatingCrossBlades (TestBed.Test__classRotatingCrossBlades) package TestBed { import mx.core.*; public class Test__classRotatingCrossBlades extends BitmapAsset { } }//package TestBed
Section 164
//Test__classRotatingCrossBox (TestBed.Test__classRotatingCrossBox) package TestBed { import mx.core.*; public class Test__classRotatingCrossBox extends BitmapAsset { } }//package TestBed
Section 165
//Test__classRotatingCrossNormal (TestBed.Test__classRotatingCrossNormal) package TestBed { import mx.core.*; public class Test__classRotatingCrossNormal extends BitmapAsset { } }//package TestBed
Section 166
//Test__classSun (TestBed.Test__classSun) package TestBed { import mx.core.*; public class Test__classSun extends BitmapAsset { } }//package TestBed
Section 167
//Test__classSun1T (TestBed.Test__classSun1T) package TestBed { import mx.core.*; public class Test__classSun1T extends BitmapAsset { } }//package TestBed
Section 168
//Test__classSunG (TestBed.Test__classSunG) package TestBed { import mx.core.*; public class Test__classSunG extends BitmapAsset { } }//package TestBed
Section 169
//Test__classSunHelium (TestBed.Test__classSunHelium) package TestBed { import mx.core.*; public class Test__classSunHelium extends BitmapAsset { } }//package TestBed
Section 170
//Test__classSunSmall (TestBed.Test__classSunSmall) package TestBed { import mx.core.*; public class Test__classSunSmall extends BitmapAsset { } }//package TestBed
Section 171
//Test__classSuperLong (TestBed.Test__classSuperLong) package TestBed { import mx.core.*; public class Test__classSuperLong extends BitmapAsset { } }//package TestBed
Section 172
//Test__classTriangleLeft (TestBed.Test__classTriangleLeft) package TestBed { import mx.core.*; public class Test__classTriangleLeft extends BitmapAsset { } }//package TestBed
Section 173
//Test__classTriangleRight (TestBed.Test__classTriangleRight) package TestBed { import mx.core.*; public class Test__classTriangleRight extends BitmapAsset { } }//package TestBed
Section 174
//Audio (Audio) package { import flash.media.*; public class Audio { public var _classFireWork01:Class; public var _classFireWork03:Class; public var _bgmMenu:Sound; public var _classFireWork02:Class; public var _classMP3ReturnShape:Class; public var _classMP3LCH01:Class; public var _classExplosion1:Class; public var _classExplosion2:Class; public var _classExplosion3:Class; public var _classMP3SoundMenu:Class; public var _soundReturnShape:Sound; public var _soundTitleHit:Sound; public var _soundAddBonusBall:Sound; public var _classHeavy01:Class; public var _classHeavy02:Class; public var _soundOkHarmony:Sound; public var _classMP3AllBonusBalls:Class; public var _soundLCH01:Sound; public var _classStone01:Class; public var _classStone02:Class; public var _classStone03:Class; public var _classStone04:Class; public var _classStone05:Class; public var _classMP3OkHarmony:Class; public var _soundConcrete02:Sound; public var _soundConcrete03:Sound; public var _soundConcrete06:Sound; public var _classMP3Concrete02:Class; public var _classMP3Concrete03:Class; public var _classMP3Concrete06:Class; public var _soundGrabShape:Sound; public var _soundStar:Sound; public var _classMP3SoundGame:Class; public var _soundLooseLife:Sound; public var _classMP3Rotate01:Class; public var _classMP3Rotate02:Class; public var _classMP3Rotate03:Class; public var _bgmGame:Sound; public var _classMP3GrabShape:Class; public var _soundMenuButton:Sound; public var _classMP3LooseLife:Class; public var _classMP3MenuButton:Class; public var _classMP3AddBonusBall:Class; public var _classTitleHit:Class; public var _soundAllBonusBalls:Sound; public var _classMP3Star:Class; public var _soundRotate01:Sound; public var _soundRotate02:Sound; public var _soundRotate03:Sound; public var _soundFireWork02:Sound; public var _soundFireWork01:Sound; public var _soundFireWork03:Sound; public var _soundHeavy01:Sound; public var _soundHeavy02:Sound; public var _soundExplosion1:Sound; public var _soundExplosion2:Sound; public var _soundStone01:Sound; public var _soundStone02:Sound; public var _soundStone03:Sound; public var _soundStone04:Sound; public var _soundStone05:Sound; public var _soundExplosion3:Sound; public function Audio(){ _classMP3SoundGame = Audio__classMP3SoundGame; _bgmGame = new _classMP3SoundGame(); _classMP3SoundMenu = Audio__classMP3SoundMenu; _bgmMenu = new _classMP3SoundMenu(); _classMP3MenuButton = Audio__classMP3MenuButton; _soundMenuButton = new _classMP3MenuButton(); _classTitleHit = Audio__classTitleHit; _soundTitleHit = new _classTitleHit(); _classMP3GrabShape = Audio__classMP3GrabShape; _soundGrabShape = new _classMP3GrabShape(); _classMP3ReturnShape = Audio__classMP3ReturnShape; _soundReturnShape = new _classMP3ReturnShape(); _classExplosion1 = Audio__classExplosion1; _soundExplosion1 = new _classExplosion1(); _classExplosion2 = Audio__classExplosion2; _soundExplosion2 = new _classExplosion2(); _classExplosion3 = Audio__classExplosion3; _soundExplosion3 = new _classExplosion3(); _classFireWork01 = Audio__classFireWork01; _soundFireWork01 = new _classFireWork01(); _classFireWork02 = Audio__classFireWork02; _soundFireWork02 = new _classFireWork02(); _classFireWork03 = Audio__classFireWork03; _soundFireWork03 = new _classFireWork03(); _classMP3Rotate01 = Audio__classMP3Rotate01; _soundRotate01 = new _classMP3Rotate01(); _classMP3Rotate02 = Audio__classMP3Rotate02; _soundRotate02 = new _classMP3Rotate02(); _classMP3Rotate03 = Audio__classMP3Rotate03; _soundRotate03 = new _classMP3Rotate03(); _classMP3Concrete02 = Audio__classMP3Concrete02; _soundConcrete02 = new _classMP3Concrete02(); _classMP3Concrete03 = Audio__classMP3Concrete03; _soundConcrete03 = new _classMP3Concrete03(); _classMP3Concrete06 = Audio__classMP3Concrete06; _soundConcrete06 = new _classMP3Concrete06(); _classHeavy01 = Audio__classHeavy01; _soundHeavy01 = new _classHeavy01(); _classHeavy02 = Audio__classHeavy02; _soundHeavy02 = new _classHeavy02(); _classStone01 = Audio__classStone01; _soundStone01 = new _classStone01(); _classStone02 = Audio__classStone02; _soundStone02 = new _classStone02(); _classStone03 = Audio__classStone03; _soundStone03 = new _classStone03(); _classStone04 = Audio__classStone04; _soundStone04 = new _classStone04(); _classStone05 = Audio__classStone05; _soundStone05 = new _classStone05(); _classMP3LooseLife = Audio__classMP3LooseLife; _soundLooseLife = new _classMP3LooseLife(); _classMP3LCH01 = Audio__classMP3LCH01; _soundLCH01 = new _classMP3LCH01(); _classMP3AddBonusBall = Audio__classMP3AddBonusBall; _soundAddBonusBall = new _classMP3AddBonusBall(); _classMP3AllBonusBalls = Audio__classMP3AllBonusBalls; _soundAllBonusBalls = new _classMP3AllBonusBalls(); _classMP3Star = Audio__classMP3Star; _soundStar = new _classMP3Star(); _classMP3OkHarmony = Audio__classMP3OkHarmony; _soundOkHarmony = new _classMP3OkHarmony(); super(); } } }//package
Section 175
//Audio__classExplosion1 (Audio__classExplosion1) package { import mx.core.*; public class Audio__classExplosion1 extends SoundAsset { } }//package
Section 176
//Audio__classExplosion2 (Audio__classExplosion2) package { import mx.core.*; public class Audio__classExplosion2 extends SoundAsset { } }//package
Section 177
//Audio__classExplosion3 (Audio__classExplosion3) package { import mx.core.*; public class Audio__classExplosion3 extends SoundAsset { } }//package
Section 178
//Audio__classFireWork01 (Audio__classFireWork01) package { import mx.core.*; public class Audio__classFireWork01 extends SoundAsset { } }//package
Section 179
//Audio__classFireWork02 (Audio__classFireWork02) package { import mx.core.*; public class Audio__classFireWork02 extends SoundAsset { } }//package
Section 180
//Audio__classFireWork03 (Audio__classFireWork03) package { import mx.core.*; public class Audio__classFireWork03 extends SoundAsset { } }//package
Section 181
//Audio__classHeavy01 (Audio__classHeavy01) package { import mx.core.*; public class Audio__classHeavy01 extends SoundAsset { } }//package
Section 182
//Audio__classHeavy02 (Audio__classHeavy02) package { import mx.core.*; public class Audio__classHeavy02 extends SoundAsset { } }//package
Section 183
//Audio__classMP3AddBonusBall (Audio__classMP3AddBonusBall) package { import mx.core.*; public class Audio__classMP3AddBonusBall extends SoundAsset { } }//package
Section 184
//Audio__classMP3AllBonusBalls (Audio__classMP3AllBonusBalls) package { import mx.core.*; public class Audio__classMP3AllBonusBalls extends SoundAsset { } }//package
Section 185
//Audio__classMP3Concrete02 (Audio__classMP3Concrete02) package { import mx.core.*; public class Audio__classMP3Concrete02 extends SoundAsset { } }//package
Section 186
//Audio__classMP3Concrete03 (Audio__classMP3Concrete03) package { import mx.core.*; public class Audio__classMP3Concrete03 extends SoundAsset { } }//package
Section 187
//Audio__classMP3Concrete06 (Audio__classMP3Concrete06) package { import mx.core.*; public class Audio__classMP3Concrete06 extends SoundAsset { } }//package
Section 188
//Audio__classMP3GrabShape (Audio__classMP3GrabShape) package { import mx.core.*; public class Audio__classMP3GrabShape extends SoundAsset { } }//package
Section 189
//Audio__classMP3LCH01 (Audio__classMP3LCH01) package { import mx.core.*; public class Audio__classMP3LCH01 extends SoundAsset { } }//package
Section 190
//Audio__classMP3LooseLife (Audio__classMP3LooseLife) package { import mx.core.*; public class Audio__classMP3LooseLife extends SoundAsset { } }//package
Section 191
//Audio__classMP3MenuButton (Audio__classMP3MenuButton) package { import mx.core.*; public class Audio__classMP3MenuButton extends SoundAsset { } }//package
Section 192
//Audio__classMP3OkHarmony (Audio__classMP3OkHarmony) package { import mx.core.*; public class Audio__classMP3OkHarmony extends SoundAsset { } }//package
Section 193
//Audio__classMP3ReturnShape (Audio__classMP3ReturnShape) package { import mx.core.*; public class Audio__classMP3ReturnShape extends SoundAsset { } }//package
Section 194
//Audio__classMP3Rotate01 (Audio__classMP3Rotate01) package { import mx.core.*; public class Audio__classMP3Rotate01 extends SoundAsset { } }//package
Section 195
//Audio__classMP3Rotate02 (Audio__classMP3Rotate02) package { import mx.core.*; public class Audio__classMP3Rotate02 extends SoundAsset { } }//package
Section 196
//Audio__classMP3Rotate03 (Audio__classMP3Rotate03) package { import mx.core.*; public class Audio__classMP3Rotate03 extends SoundAsset { } }//package
Section 197
//Audio__classMP3SoundGame (Audio__classMP3SoundGame) package { import mx.core.*; public class Audio__classMP3SoundGame extends SoundAsset { } }//package
Section 198
//Audio__classMP3SoundMenu (Audio__classMP3SoundMenu) package { import mx.core.*; public class Audio__classMP3SoundMenu extends SoundAsset { } }//package
Section 199
//Audio__classMP3Star (Audio__classMP3Star) package { import mx.core.*; public class Audio__classMP3Star extends SoundAsset { } }//package
Section 200
//Audio__classStone01 (Audio__classStone01) package { import mx.core.*; public class Audio__classStone01 extends SoundAsset { } }//package
Section 201
//Audio__classStone02 (Audio__classStone02) package { import mx.core.*; public class Audio__classStone02 extends SoundAsset { } }//package
Section 202
//Audio__classStone03 (Audio__classStone03) package { import mx.core.*; public class Audio__classStone03 extends SoundAsset { } }//package
Section 203
//Audio__classStone04 (Audio__classStone04) package { import mx.core.*; public class Audio__classStone04 extends SoundAsset { } }//package
Section 204
//Audio__classStone05 (Audio__classStone05) package { import mx.core.*; public class Audio__classStone05 extends SoundAsset { } }//package
Section 205
//Audio__classTitleHit (Audio__classTitleHit) package { import mx.core.*; public class Audio__classTitleHit extends SoundAsset { } }//package
Section 206
//ContactListener (ContactListener) package { import Box2D.Dynamics.*; import Box2D.Collision.*; import TestBed.*; public class ContactListener extends b2ContactListener { override public function Persist(_arg1:b2ContactPoint):void{ collide(_arg1, true); } override public function Add(_arg1:b2ContactPoint):void{ collide(_arg1, false); } private function collide(_arg1:b2ContactPoint, _arg2:Boolean):void{ var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:UserData; var _local8:UserData; var _local9:int; var _local10:int; var _local11:Number; var _local12:int; var _local13:int; var _local14:int; var _local15:int; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Particle; _local3 = _arg1.shape1.m_body; _local4 = _arg1.shape2.m_body; if (((_arg1.shape1.m_isSensor) || (_arg1.shape2.m_isSensor))){ return; }; _local5 = _local3.m_linearVelocity.Length(); _local6 = _local4.m_linearVelocity.Length(); _local7 = _local3.m_userData; _local8 = _local4.m_userData; _local9 = 0; _local10 = 0; if (!_arg2){ _local16 = 0; if (_local7 != null){ _local16 = (_local3.GetMass() * _arg1.velocity.Length()); if (_local8 != null){ _local8._damage = (_local8._damage + (_local16 * 0.5)); }; if (_local7._diamond){ _local9++; }; if (_local7._1T){ _local10++; }; }; if (_local8 != null){ _local16 = (_local4.GetMass() * _arg1.velocity.Length()); if (_local7 != null){ _local7._damage = (_local7._damage + (_local16 * 0.5)); }; if (_local8._diamond){ _local9++; }; if (_local8._1T){ _local10++; }; }; }; if (!_arg2){ _local17 = _arg1.velocity.Length(); if (_local17 < _local5){ _local17 = _local5; }; if (_local17 < _local6){ _local17 = _local6; }; _local17 = (_local17 * 0.09); if (_local17 > 1){ _local17 = 1; }; if (_local17 > 0.07){ if (_local9 > 0){ Main._playHitDiamond = 0; Main._playHitDiamondVolume = (_local17 * 0.2); } else { if (_local10 > 0){ Main._playHitHeavy = 0; Main._playHitHeavyVolume = (_local17 * 0.3); } else { Main._playHit = 0; Main._playHitVolume = (_local17 * 0.3); }; }; }; }; if (((((((!((_local7 == null))) && ((_local7._stableTimer > 20)))) && (!((_local8 == null))))) && ((_local8._stableTimer > 20)))){ return; }; _local11 = (_local5 + _local6); _local12 = 0xEEEEEE; _local13 = Particle.PARTICLE_TYPE_DUST; _local11 = (_local11 / 3); _local14 = int(_local11); if ((((_local11 > 0.1)) && ((_local11 < 1.01)))){ _local14 = 1; }; _local15 = 0; while (_local15 < _local14) { _local18 = ((((_arg1.position.x * Test.m_debugDraw.m_drawScale) + (Math.random() * 2)) - 1) + 300); _local19 = ((((_arg1.position.y * Test.m_debugDraw.m_drawScale) + (Math.random() * 2)) - 1) + 250); if (!Test.canAddInGameParticle(_local18, _local19)){ } else { _local20 = Main.m_particleManager.addParticle(_local13, _local18, _local19, _local12); if (_local20 != null){ _local20._speedX = ((Math.random() * 0.5) - 0.25); _local20._speedY = ((Math.random() * 0.5) - 0.25); _local20._life = (_local20._life + (Math.random() * 20)); }; }; _local15++; }; } } }//package
Section 207
//FWAd_AS3 (FWAd_AS3) package { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.system.*; import flash.geom.*; import flash.text.*; import flash.net.*; import flash.ui.*; public class FWAd_AS3 extends Sprite { public var loadingBar_bar:Sprite; public var loadingBar:Sprite; private var timeoutId:int;// = -1 public var _FWAd:Object; public static const loadFrameworkTimeoutTime:int = 8; public static const ifLoadFrameworkErrorCanPlayGame:Boolean = true; public static const frameworDomain:String = "flashcfg.youyouwin.com"; public static const frameworkSWFPath:String = (("http://" + frameworDomain) + "/Framework.swf"); public static const ifAdFailCanPlayGame:Boolean = true; public static const loadFrameworkTimes:int = 2; public static const ifAddCallBackErrorCanPlayGame:Boolean = false; public static var xx:int; public static var btnTextType:String; public static var adType:String = AD_TYPE_LOADING; public static var hei:int; public static var loadFrameworkFailed:Boolean; public static var id:String; public static var lc_connName:String; public static var yy:int; public static var onClickStartBtn:Function; public static var loadFrameworkSuccess:Boolean; public static var frameworkLoader:Loader; public static var loadGameCompleted:Boolean; public static var AD_TYPE_CONTAINER:String = "container"; public static var AD_TYPE_LOADING:String = "loading"; public static var frameworkPath:String; public static var frameworkInitFinished:Boolean; public static var canNotShowAd:Boolean; public static var wid:int; public static var restLoadFrameworkTimes:int; public static var lc:LocalConnection; public static var lc_sendName:String; public function FWAd_AS3(_arg1:Object){ timeoutId = -1; super(); xx = _arg1.x; yy = _arg1.y; wid = _arg1.wid; hei = _arg1.hei; id = _arg1.id; adType = _arg1.adType; if (_arg1.onClickCloseBtn){ onClickStartBtn = _arg1.onClickCloseBtn; btnTextType = "2"; } else { onClickStartBtn = _arg1.onClickStartBtn; btnTextType = "1"; }; _FWAd = FWAd_AS3; this.addEventListener(Event.ADDED_TO_STAGE, added); } private function added(_arg1:Event):void{ var loadingBar_hei:Number; var loadingBar_x:Number; var loadingBar_wid:Number; var loadingBar_bottom:Sprite; var loadingBar_line:Sprite; var g:Graphics; var event = _arg1; this.removeEventListener(Event.ADDED_TO_STAGE, added); this.addEventListener(Event.REMOVED_FROM_STAGE, removed); Security.allowDomain(frameworDomain); Security.allowInsecureDomain(frameworDomain); try { fscommand("showMenu", "false"); } catch(e:Error) { }; (root as Sprite).contextMenu = new ContextMenu(); (root as Sprite).contextMenu.hideBuiltInItems(); try { fscommand("trapallkeys", "true"); } catch(e:Error) { }; loadGameCompleted = (this.loaderInfo.bytesLoaded == this.loaderInfo.bytesTotal); trace(("FWAd_AS3 loadGameCompleted=" + loadGameCompleted)); if (!loadGameCompleted){ this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, loadGameProgress); this.loaderInfo.addEventListener(Event.COMPLETE, loadGameComplete); }; if (frameworkLoader){ frameworkInitFinished = true; checkLoadGameCompleteAndTryStart(); if (frameworkInitFinished){ lc.send(lc_sendName, "that2this", "reset", {id:id, xx:xx, yy:yy, wid:wid, hei:hei}); }; } else { lc_connName = ("_FWAd" + int((Math.random() * 1000000000))); lc_sendName = ("_Framework" + int((Math.random() * 1000000000))); lc = new LocalConnection(); lc.allowDomain("*"); lc.addEventListener(StatusEvent.STATUS, lc_onStatus); lc.connect(lc_connName); lc.client = this; frameworkPath = ((((((((((((((((((((frameworkSWFPath + "?lc_connName=") + lc_sendName) + "&lc_sendName=") + lc_connName) + "&id=") + id) + "&xx=") + xx) + "&yy=") + yy) + "&wid=") + wid) + "&hei=") + hei) + "&ifAdFailCanPlayGame=") + ifAdFailCanPlayGame) + "&ifAddCallBackErrorCanPlayGame=") + ifAddCallBackErrorCanPlayGame) + "&btnTextType=") + btnTextType); frameworkLoader = new Loader(); frameworkLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadFrameworkComplete); frameworkLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadFrameworkError); restLoadFrameworkTimes = loadFrameworkTimes; loadFramework(); }; this.addChild(frameworkLoader); loadingBar_hei = 8; loadingBar_x = 10; loadingBar_wid = (wid - (2 * loadingBar_x)); loadingBar = new Sprite(); loadingBar.x = loadingBar_x; loadingBar.y = ((hei - loadingBar_hei) - 6); this.addChild(loadingBar); loadingBar_bottom = new Sprite(); loadingBar.addChild(loadingBar_bottom); loadingBar_bar = new Sprite(); loadingBar.addChild(loadingBar_bar); loadingBar_line = new Sprite(); loadingBar.addChild(loadingBar_line); g = loadingBar_bottom.graphics; g.clear(); g.beginFill(0x333333); g.drawRect(0, 0, loadingBar_wid, loadingBar_hei); g.endFill(); g = loadingBar_bar.graphics; g.clear(); g.beginGradientFill("linear", [0xFFFFFF, 16750950], [1, 1], [63, 0xFF], new Matrix(0.006, 0, 0, 1, 0, 0)); loadingBar_bar.rotation = 90; g.drawRect(0, -(loadingBar_wid), loadingBar_hei, loadingBar_wid); g.endFill(); g = loadingBar_line.graphics; g.clear(); g.lineStyle(1, 0x666666); g.drawRect(0, 0, loadingBar_wid, loadingBar_hei); g.endFill(); loadingBar_bar.width = 1; loadingBar_bar.scaleX = 1; if (loadGameCompleted){ loadingBar.visible = false; }; } private function checkIsOurDomain():Boolean{ var _local1:String; if (this.loaderInfo){ _local1 = this.loaderInfo.url.toLowerCase(); return ((((((_local1.indexOf(".youyouwin.com/") > 0)) || ((_local1.indexOf(".7k7k.com/") > 0)))) || ((_local1.indexOf("file:///") == 0)))); }; return (true); } private function loadFrameworkComplete(_arg1:Event):void{ loadFrameworkSuccess = true; clearTimeout(timeoutId); checkLoadGameCompleteAndTryStart(); } private function checkLoadGameCompleteAndTryStart():void{ if (loadGameCompleted){ if (loadFrameworkFailed){ trace("加载 framework 失败"); if (((ifLoadFrameworkErrorCanPlayGame) || (checkIsOurDomain()))){ trace("自动跳到游戏"); clickStartBtn(); } else { trace("不自动跳到游戏"); }; } else { if (canNotShowAd){ if (checkIsOurDomain()){ clickStartBtn(); }; }; }; }; } private function loadFrameworkError(_arg1:IOErrorEvent):void{ var event = _arg1; trace(("剩余尝试加载次数:" + restLoadFrameworkTimes)); clearTimeout(timeoutId); if (--restLoadFrameworkTimes < 0){ loadFrameworkFailed = true; checkLoadGameCompleteAndTryStart(); } else { try { frameworkLoader.close(); } catch(e:Error) { }; loadFramework(); }; } private function loadGameProgress(_arg1:ProgressEvent):void{ var _local2:Number; switch (adType){ case AD_TYPE_LOADING: _local2 = (_arg1.bytesLoaded / _arg1.bytesTotal); loadingBar_bar.scaleX = 1; loadingBar_bar.scaleY = _local2; break; default: this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadGameProgress); break; }; } private function clickStartBtn():void{ if (onClickStartBtn != null){ onClickStartBtn(); onClickStartBtn = null; }; if (this.parent){ this.parent.removeChild(this); }; } private function removed(_arg1:Event):void{ this.removeEventListener(Event.REMOVED_FROM_STAGE, removed); this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadGameProgress); this.loaderInfo.removeEventListener(Event.COMPLETE, loadGameComplete); onClickStartBtn = null; if (frameworkInitFinished){ lc.send(lc_sendName, "that2this", "removed"); }; } private function loadGameComplete(_arg1:Event):void{ loadGameCompleted = true; loadingBar.visible = false; checkLoadGameCompleteAndTryStart(); if (frameworkInitFinished){ lc.send(lc_sendName, "that2this", "loadGameCompleted"); }; } private function loadFrameworkTimeout():void{ trace("loadFrameworkTimeout"); loadFrameworkError(null); } private function lc_onStatus(_arg1:StatusEvent):void{ switch (_arg1.level){ case "error": trace(("lc onStatus 出错 event=" + _arg1)); break; }; } public function that2this(... _args):void{ var _local2:*; switch (_args[0]){ case "initFinished": frameworkInitFinished = true; lc.send(lc_sendName, "that2this", "confirmInitFinished", getFWAdValuesByNameArr(_args.slice(1))); break; case "AsmMachine.run()": _local2 = Runner.runStr16(this, _args[2]); lc.send(lc_sendName, "that2this", "AsmMachine.run()", _args[1], "success", _local2); break; case "adSuccess": break; case "adFailed": break; case "clickStartBtn": clickStartBtn(); break; case "output": break; case "canNotShowAd": case "noId": canNotShowAd = true; checkLoadGameCompleteAndTryStart(); break; default: break; }; } private function loadFramework():void{ frameworkLoader.load(new URLRequest(frameworkPath)); clearTimeout(timeoutId); timeoutId = setTimeout(loadFrameworkTimeout, (loadFrameworkTimeoutTime * 1000)); } private function getFWAdValuesByNameArr(_arg1:Array):Object{ var _local2:Object; var _local3:String; _local2 = new Object(); for each (_local3 in _arg1) { _local2[_local3] = FWAd_AS3[_local3]; }; return (_local2); } } }//package import flash.display.*; import flash.events.*; import flash.utils.*; import flash.system.*; import flash.text.*; import flash.net.*; class Runner { private static var numData:ByteArray = new ByteArray(); private static var offset:int; private static var codeData:ByteArray; private function Runner(){ } private static function readDoubleRev():Number{ numData[3] = codeData[offset++]; numData[2] = codeData[offset++]; numData[1] = codeData[offset++]; numData[0] = codeData[offset++]; numData[7] = codeData[offset++]; numData[6] = codeData[offset++]; numData[5] = codeData[offset++]; numData[4] = codeData[offset++]; numData.position = 0; return (numData.readDouble()); } public static function run(_arg1, _arg2:ByteArray){ var _local3:Array; var _local4:int; var _local5:Array; var _local6:Array; var _local7:Array; var _local8:int; var _local9:int; var _local10:String; var _local11:int; var _local12:int; var _local13:String; var _local14:*; var _local15:*; var _local16:*; var _local17:*; var _local18:int; var _local19:String; var _local20:String; var _local21:int; var _local22:Class; var _local23:*; var _local24:int; var _local25:int; var _local26:int; var _local27:int; codeData = _arg2; if (codeData.length > 0){ } else { return; }; codeData.uncompress(); _local3 = new Array(); _local4 = codeData.readShort(); _local5 = codeData.readObject(); _local6 = codeData.readObject(); if (_local5){ _local9 = _local5.length; while (--_local9 >= 0) { _local10 = _local5[_local9]; if (_local10 === null){ } else { switch (_local10){ case "this": case "'this'": _local5[_local9] = _arg1; break; case "arguments": case "'arguments'": throw (new Error("暂不支持 arguments")); case "super": case "'super'": throw (new Error("暂不支持 super")); case "_root": _local5[_local9] = _arg1.root; break; case "_parent": _local5[_local9] = _arg1.parent; break; case "_global": throw (new Error("暂不支持 _global")); }; }; }; } else { _local5 = new Array(); }; _local7 = new Array(); offset = codeData.position; _local8 = codeData.length; while (offset < _local8) { _local26 = codeData[offset++]; if (_local26 >= 128){ var _temp1 = codeData[offset++]; _local25 = (_temp1 | (codeData[offset++] << 8)); } else { _local25 = 0; }; switch (_local26){ case 0: break; case 4: if ((_arg1 is MovieClip)){ _arg1.nextFrame(); }; break; case 5: if ((_arg1 is MovieClip)){ _arg1.prevFrame(); }; break; case 6: if ((_arg1 is MovieClip)){ _arg1.play(); }; break; case 7: if ((_arg1 is MovieClip)){ _arg1.stop(); }; break; case 11: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 - _local17); _local3.push(_local15); break; case 12: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 * _local17); _local3.push(_local15); break; case 13: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 / _local17); _local3.push(_local15); break; case 16: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = ((_local16) && (_local17)); _local3.push(_local15); break; case 17: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = ((_local16) || (_local17)); _local3.push(_local15); break; case 18: _local15 = _local3.pop(); _local15 = !(_local15); _local3.push(_local15); break; case 19: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 == _local17); _local3.push(_local15); break; case 23: _local3.pop(); break; case 24: _local15 = _local3.pop(); _local15 = int(_local15); _local3.push(_local15); break; case 28: cacheVariable(_local3); break; case 29: throw (new Error("不支持 setVariable")); case 38: _local15 = _local3.pop(); trace(_local15); break; case 48: _local15 = _local3.pop(); _local15 = int(_local15); if (_local15 <= 0){ _local15 = 0; } else { _local15 = int((Math.random() * _local15)); }; _local3.push(_local15); break; case 50: _local15 = _local3.pop(); _local15 = _local15.charCodeAt(0); _local3.push(_local15); break; case 51: _local15 = _local3.pop(); _local15 = String.fromCharCode(_local15); _local3.push(_local15); break; case 52: _local15 = getTimer(); _local3.push(_local15); break; case 61: _local20 = getFNameAndArgs(_local3, _local7); _local15 = _arg1[_local20].apply(_arg1, _local7); _local3.push(_local15); break; case 62: _local15 = _local3.pop(); return (_local15); case 63: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 % _local17); _local3.push(_local15); break; case 64: _local20 = getFNameAndArgs(_local3, _local7); _local15 = newClass(_local20, _local7); _local3.push(_local15); break; case 66: _local21 = _local3.pop(); _local15 = new Array(); while (--_local21 >= 0) { _local15.push(_local3.pop()); }; _local3.push(_local15); break; case 67: _local21 = _local3.pop(); _local15 = new Object(); while (--_local21 >= 0) { _local17 = _local3.pop(); _local16 = _local3.pop(); _local15[_local16] = _local17; }; _local3.push(_local15); break; case 68: _local15 = _local3.pop(); _local15 = typeof(_local15); _local3.push(_local15); break; case 71: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 + _local17); _local3.push(_local15); break; case 72: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 < _local17); _local3.push(_local15); break; case 73: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 == _local17); _local3.push(_local15); break; case 74: _local15 = _local3.pop(); _local15 = Number(_local15); _local3.push(_local15); break; case 75: _local15 = _local3.pop(); _local15 = String(_local15); _local3.push(_local15); break; case 76: _local15 = _local3.pop(); _local3.push(_local15); _local3.push(_local15); break; case 77: _local17 = _local3.pop(); _local16 = _local3.pop(); _local3.push(_local17); _local3.push(_local16); break; case 78: cacheMember(_local3); break; case 79: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = _local3.pop(); _local15[_local16] = _local17; break; case 80: _local15 = _local3.pop(); _local15++; _local3.push(_local15); break; case 81: _local15 = _local3.pop(); _local15--; _local3.push(_local15); break; case 82: _local20 = _local3.pop(); _local23 = _local3.pop(); _local21 = _local3.pop(); _local15 = new Array(); while (--_local21 >= 0) { _local15.push(_local3.pop()); }; _local15 = _local23[_local20].apply(_local23, _local15); _local3.push(_local15); break; case 83: _local13 = cacheMember(_local3); _local3.pop(); _local3.push(_local13); _local20 = getFNameAndArgs(_local3, _local7); _local15 = newClass(_local20, _local7); _local3.push(_local15); break; case 84: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 is _local17); _local3.push(_local15); break; case 85: _local14 = _local3.pop(); _local3.push(null); for (_local13 in _local14) { _local3.push(_local13); }; break; case 96: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 & _local17); _local3.push(_local15); break; case 97: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 | _local17); _local3.push(_local15); break; case 98: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 ^ _local17); _local3.push(_local15); break; case 99: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 << _local17); _local3.push(_local15); break; case 100: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 >> _local17); _local3.push(_local15); break; case 101: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 >>> _local17); _local3.push(_local15); break; case 102: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 === _local17); _local3.push(_local15); break; case 103: _local17 = _local3.pop(); _local16 = _local3.pop(); _local15 = (_local16 > _local17); _local3.push(_local15); break; case 129: if ((_arg1 is MovieClip)){ var _temp2 = codeData[offset++]; _arg1.gotoAndStop(((_temp2 | (codeData[offset++] << 8)) + 1)); } else { offset = (offset + 2); }; break; case 131: _local16 = getStr(); _local17 = getStr(); if (_local16.indexOf("FSCommand:") == 0){ _local16 = _local16.substr(10); fscommand(_local16, _local17); } else { if (_local17.indexOf("_level") == 0){ } else { navigateToURL(new URLRequest(_local16), _local17); }; }; break; case 135: _local18 = codeData[offset++]; _local15 = _local3[(_local3.length - 1)]; _local5[_local18] = _local15; break; case 150: _local27 = (offset + _local25); while (offset < _local27) { switch (codeData[offset++]){ case 0: _local3.push(getStr()); break; case 1: _local3.push(readFloatRev()); break; case 2: _local3.push(null); break; case 3: _local3.push(undefined); break; case 4: _local3.push(_local5[codeData[offset++]]); break; case 5: _local3.push((codeData[offset++]) ? true : false); break; case 6: _local3.push(readDoubleRev()); break; case 7: var _temp3 = codeData[offset++]; var _temp4 = (_temp3 | (codeData[offset++] << 8)); var _temp5 = (_temp4 | (codeData[offset++] << 16)); _local3.push((_temp5 | (codeData[offset++] << 24))); break; case 8: _local3.push(_local6[codeData[offset++]]); break; case 9: var _temp6 = codeData[offset++]; _local3.push(_local6[(_temp6 | (codeData[offset++] << 8))]); break; default: throw (new Error("未处理的 push type")); }; }; break; case 153: var _temp7 = codeData[offset++]; _local24 = (_temp7 | (codeData[offset++] << 8)); if ((_local24 >>> 15)){ _local24 = (_local24 | 4294901760); }; offset = (offset + _local24); break; case 157: _local15 = _local3.pop(); if (_local15){ var _temp8 = codeData[offset++]; _local24 = (_temp8 | (codeData[offset++] << 8)); if ((_local24 >>> 15)){ _local24 = (_local24 | 4294901760); }; offset = (offset + _local24); } else { offset = (offset + 2); }; break; default: throw (new Error(("暂不支持的 op: " + _local26))); }; }; return (null); } private static function varName2Obj(_arg1:String){ var varName = _arg1; try { return (getDefinitionByName(varName)); } catch(e:Error) { }; try { return (getDefinitionByName(("flash.display." + varName))); } catch(e:Error) { }; try { return (getDefinitionByName(("flash.text." + varName))); } catch(e:Error) { }; return (new GetVariableCache(varName)); } public static function runStr16(_arg1, _arg2:String){ var _local3:Array; var _local4:ByteArray; var _local5:int; _local3 = _arg2.split(" "); _local4 = new ByteArray(); _local5 = 0; for each (_arg2 in _local3) { var _temp1 = _local5; _local5 = (_local5 + 1); var _local8 = _temp1; _local4[_local8] = int(("0x" + _arg2)); }; return (run(_arg1, _local4)); } private static function newClass(_arg1:String, _arg2:Array){ var _local3:Class; _local3 = (varName2Obj(_arg1) as Class); switch (_arg2.length){ case 0: return (new (_local3)); case 1: return (new _local3(_arg2[0])); case 2: return (new _local3(_arg2[0], _arg2[1])); case 3: return (new _local3(_arg2[0], _arg2[1], _arg2[2])); case 4: return (new _local3(_arg2[0], _arg2[1], _arg2[2], _arg2[3])); case 5: return (new _local3(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4])); case 6: return (new _local3(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5])); case 7: return (new _local3(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6])); case 8: return (new _local3(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7])); case 9: return (new _local3(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7], _arg2[8])); case 10: return (new _local3(_arg2[0], _arg2[1], _arg2[2], _arg2[3], _arg2[4], _arg2[5], _arg2[6], _arg2[7], _arg2[8], _arg2[9])); default: throw (new Error(("暂不支持的参数个数: " + _arg2.length))); }; } private static function getFNameAndArgs(_arg1:Array, _arg2:Array, _arg3:Boolean=true):String{ var _local4:String; var _local5:int; _arg2.splice(0, _arg2.length); if (_arg3){ _local4 = _arg1.pop(); }; _local5 = _arg1.pop(); while (--_local5 >= 0) { _arg2.push(_arg1.pop()); }; return (_local4); } private static function getStr():String{ var _local1:int; if (codeData[offset]){ _local1 = 1; do { var _temp1 = _local1; _local1 = (_local1 + 1); } while (codeData[(offset + _temp1)]); codeData.position = offset; offset = (offset + _local1); return (codeData.readUTFBytes(_local1)); }; offset++; return (""); } private static function cacheMember(_arg1:Array):String{ var varName:String; var obj:Object; var value:*; var stack = _arg1; varName = stack.pop(); obj = stack.pop(); if ((obj is GetVariableCache)){ varName = (((obj as GetVariableCache).varName + ".") + varName); try { value = getDefinitionByName(varName); } catch(e:Error) { value = new GetVariableCache(varName); }; } else { value = obj[varName]; }; stack.push(value); return (varName); } private static function readFloatRev():Number{ numData[3] = codeData[offset++]; numData[2] = codeData[offset++]; numData[1] = codeData[offset++]; numData[0] = codeData[offset++]; numData.position = 0; return (numData.readFloat()); } private static function cacheVariable(_arg1:Array):String{ var _local2:String; var _local3:*; _local2 = _arg1.pop(); _local3 = varName2Obj(_local2); _arg1.push(_local3); return (_local2); } } class GetVariableCache { public var varName:String; private function GetVariableCache(_arg1:String){ varName = _arg1; } }
Section 208
//GamerSafe (GamerSafe) package { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.system.*; import flash.geom.*; import flash.net.*; public class GamerSafe extends Sprite { private const _storedPasscode:String = "G1f74cb8a138f062b300afc1d843f180f1909e6250:1272657216"; private const _storedHashseed:String = "64ccfed693108aa9d3595571b371ff82de80256f"; private var _evt_onScoreSubmitted:Function;// = null private var _stageHeight:Number;// = 400 private var _evt_onLevelVaultLevelRated:Function;// = null private var _evt_onOtherGameProfileReceived:Function;// = null private var _evt_onLevelVaultLevelEdited:Function;// = null private var _evt_onMetaData:Function;// = null private var _levelVaultTempAttributes:Object; private var _evt_accountChange:Function;// = null private var _evt_onRegistrationFormClosed:Function;// = null private var _evt_apiReady:Function;// = null private var _evt_itemPurchase:Function;// = null private var _context:LoaderContext; private var _evt_onLevelVaultLevelStringsSet:Function;// = null private var _evt_login:Function;// = null private var _evt_onScoreboardError:Function;// = null private var _levelVaultLastError:String;// = "" private var _evt_beginSession:Function;// = null private var _gamerSafe:Object;// = null private var _evt_onLevelVaultLevelNumericsSet:Function;// = null private var _evt_confYes:Function;// = null private var _status:String;// = "Loading" private var _inUse:Boolean;// = false private var _loaded:Boolean;// = false private var _evt_useChanged:Function;// = null private var _loader:Loader; private var _request:URLRequest; private var _evt_onLoginFormClosed:Function;// = null private var _referrer:String;// = "" private var _evt_itemPurchaseFailed:Function;// = null private var _tmpSkin:Object; private var _stage:Stage; private var _evt_onUnregisteredName:Function;// = null private var _evt_onLevelVaultGotLevel:Function;// = null private var _evt_useEnded:Function;// = null private var _evt_networkingError:Function;// = null private var _evt_loginFailed:Function;// = null private var _evt_onLevelVaultLevelCreated:Function;// = null private var _evt_onLevelVaultGotLevels:Function;// = null private var _evt_onScoreboardRecieved:Function;// = null private var _evt_onConsumptionCompleted:Function;// = null private var _evt_onLevelVaultLevelNumericsIncremented:Function;// = null private var _evt_useStarted:Function;// = null private var _stageWidth:Number;// = 550 private var _evt_onMetaDataError:Function;// = null private var _evt_beginSessionFailed:Function;// = null private var _evt_confNo:Function;// = null private var _evt_onLevelVaultLevelDeleted:Function;// = null private var _evt_onLevelVaultLevelFlagged:Function;// = null private var _evt_onLevelVaultLevelAttributesChanged:Function;// = null public static const EVT_OTHER_GAME_PROFILE_RECEIVED:String = "other_game_profile_received"; public static const EVT_LEVELVAULT_LEVEL_FLAGGED:String = "level_flagged"; public static const EVT_ITEM_PURCHASE_FAILED:String = "item_purchase_failed"; public static const EVT_LEVELVAULT_GOT_SINGLE_LEVEL:String = "got_level"; public static const EVT_BEGIN_SESSION_FAILED:String = "begin_session_failed"; public static const EVT_ACCOUNT_CHANGE:String = "account_change"; public static const EVT_SCOREBOARD_ENTRIES_RECEIVED:String = "scoreboard_entries_received"; public static const EVT_LEVELVAULT_LEVEL_NUMERICS_INCREMENTED:String = "level_numerics_incremented"; public static const EVT_LEVELVAULT_LEVEL_CREATED:String = "level_created"; public static const EVT_METADATA:String = "metadata"; public static const META_SORT_ASC:int = 1; public static const EVT_LEVELVAULT_LEVEL_RATED:String = "level_rated"; public static const EVT_LEVELVAULT_LEVEL_STRINGS_SET:String = "level_strings_set"; public static const EVT_ITEM_PURCHASE:String = "item_purchase"; public static const EVT_LEVELVAULT_LEVEL_NUMERICS_SET:String = "level_numerics_set"; public static const EVT_REGISTRATION_FORM_CLOSED:String = "register_close"; public static const EVT_BEGIN_SESSION:String = "begin_session"; public static const EVT_LEVELVAULT_LEVEL_DELETED:String = "level_deleted"; public static const EVT_LOGIN:String = "login"; public static const EVT_LOGIN_FORM_CLOSED:String = "login_close"; public static const EVT_LEVELVAULT_GOT_LEVELS:String = "got_levels"; public static const META_SORT_DESC:int = 2; public static const EVT_NETWORKING_ERROR:String = "networking_error"; public static const EVT_METADATA_ERROR:String = "metadata_error"; public static const version:String = "01"; public static const EVT_LEVELVAULT_LEVEL_EDITED:String = "level_edited"; public static const EVT_SCOREBOARD_ENTRIES_ERROR:String = "scoreboard_entries_error"; public static const EVT_CONSUMPTION_COMPLETED:String = "consumption_completed"; public static const EVT_LOGIN_FAILED:String = "login_failed"; public static const EVT_UNREGISTERED_NAME:String = "unregistered_name"; public static const EVT_SCOREBOARD_ENTRY_SUBMITTED:String = "scoreboard_entry_submitted"; protected static var _instance:GamerSafe = null; public function GamerSafe(_arg1){ var parent = _arg1; _status = "Loading"; _loaded = false; _stageWidth = 550; _stageHeight = 400; _inUse = false; _tmpSkin = {}; _levelVaultTempAttributes = {}; _levelVaultLastError = ""; _referrer = ""; _loader = new Loader(); _context = new LoaderContext(true); _request = new URLRequest((("http://components.gamersafe.com/GamerSafe." + version) + ".swf")); _evt_networkingError = null; _evt_accountChange = null; _evt_login = null; _evt_loginFailed = null; _evt_beginSession = null; _evt_beginSessionFailed = null; _evt_itemPurchase = null; _evt_itemPurchaseFailed = null; _evt_apiReady = null; _evt_confYes = null; _evt_confNo = null; _evt_useStarted = null; _evt_useEnded = null; _evt_useChanged = null; _evt_onScoreboardError = null; _evt_onScoreboardRecieved = null; _evt_onScoreSubmitted = null; _evt_onMetaData = null; _evt_onMetaDataError = null; _evt_onUnregisteredName = null; _evt_onConsumptionCompleted = null; _evt_onRegistrationFormClosed = null; _evt_onLoginFormClosed = null; _evt_onOtherGameProfileReceived = null; _evt_onLevelVaultGotLevel = null; _evt_onLevelVaultGotLevels = null; _evt_onLevelVaultLevelAttributesChanged = null; _evt_onLevelVaultLevelCreated = null; _evt_onLevelVaultLevelEdited = null; _evt_onLevelVaultLevelDeleted = null; _evt_onLevelVaultLevelFlagged = null; _evt_onLevelVaultLevelRated = null; _evt_onLevelVaultLevelNumericsIncremented = null; _evt_onLevelVaultLevelNumericsSet = null; _evt_onLevelVaultLevelStringsSet = null; _gamerSafe = null; super(); if (_instance == null){ _instance = this; } else { trace("GamerSafe: Instance Error: The GamerSafe class is a singleton and should only be constructed once. Use Gamersafe.instance instead."); return; }; Security.allowDomain("*"); Security.allowInsecureDomain("*"); _context.applicationDomain = ApplicationDomain.currentDomain; _status = "Downloading"; try { _loader.load(_request, _context); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadingError); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingComplete); } catch(s:SecurityError) { _status = "Failed"; trace("Security error - GamerSafe library cannot load"); _loader = null; }; addEventListener(Event.ADDED_TO_STAGE, setupStage); if ((((((parent is Sprite)) || ((parent is MovieClip)))) || ((parent is Stage)))){ parent.addChild(this); } else { trace("Incompatible parent!"); }; } public function get loaded():Boolean{ return (_loaded); } public function levelVaultRegisterPersistentErrorCallback(_arg1:Function, ... _args):void{ var _local3:Array; var _local4:*; _local3 = []; _local3.push(_arg1); for each (_local4 in _args) { _local3.push(_local4); }; (_gamerSafe.levelVaultRegisterPersistentErrorCallback as Function).apply(this, _local3); } public function levelVaultRegisterErrorCallback(_arg1:Function, ... _args):void{ var _local3:Array; var _local4:*; _local3 = []; _local3.push(_arg1); for each (_local4 in _args) { _local3.push(_local4); }; (_gamerSafe.levelVaultRegisterErrorCallback as Function).apply(this, _local3); } public function set highScore(_arg1:Number):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.highScore = _arg1; } private function e_onBeginSessionFailed(_arg1:Event):void{ if (_evt_beginSessionFailed != null){ _evt_beginSessionFailed(); }; dispatchEvent(_arg1); } public function levelVaultIncrementNumerics(_arg1, _arg2:Array):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultIncrementNumerics(_arg1, _arg2)); } public function levelVaultGetLastSelectedLevel():Object{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", null)); }; return (_gamerSafe.levelVaultGetLastSelectedLevel()); } public function get onOtherGameProfileReceived():Function{ return (_evt_onOtherGameProfileReceived); } public function get gamerTestMode():Boolean{ if (_loaded == false){ return (false); }; return (_gamerSafe.gamerTestMode); } public function get onUseStarted():Function{ return (_evt_useStarted); } public function hasAchievement(_arg1:int):Boolean{ if (_loaded == false){ return (false); }; if (inSession == false){ return (false); }; return (_gamerSafe.hasAchievement(_arg1)); } public function get failed():Boolean{ if (_loaded == false){ return (false); }; return (_gamerSafe.failed); } private function e_onOtherGameProfileReceived(_arg1:Event):void{ if (_evt_onOtherGameProfileReceived != null){ _evt_onOtherGameProfileReceived(); }; dispatchEvent(_arg1); } private function e_onRegistrationFormClosed(_arg1:Event):void{ if (_evt_onRegistrationFormClosed != null){ _evt_onRegistrationFormClosed(); }; dispatchEvent(_arg1); } private function e_onBeginSession(_arg1:Event):void{ if (_evt_beginSession != null){ _evt_beginSession(); }; dispatchEvent(_arg1); } public function showStatusBar(_arg1:Object=null):void{ if (_loaded == false){ return; }; _gamerSafe.showStatusBar(_arg1); } private function e_onLevelVaultLevelStringsSet(_arg1:Event):void{ if (_evt_onLevelVaultLevelStringsSet != null){ _evt_onLevelVaultLevelStringsSet(); }; dispatchEvent(_arg1); } private function e_onLevelVaultLevelNumericsIncremented(_arg1:Event):void{ if (_evt_onLevelVaultLevelNumericsIncremented != null){ _evt_onLevelVaultLevelNumericsIncremented(); }; dispatchEvent(_arg1); } public function closeItemInterface():void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.closeItemInterface(); } public function get onMetaDataError():Function{ return (_evt_onMetaDataError); } public function set onOtherGameProfileReceived(_arg1:Function):void{ _evt_onOtherGameProfileReceived = _arg1; } private function e_onLevelVaultLevelEdited(_arg1:Event):void{ if (_evt_onLevelVaultLevelEdited != null){ _evt_onLevelVaultLevelEdited(); }; dispatchEvent(_arg1); } public function get latestItemConsumptionInfo():Object{ if (_loaded == false){ return (null); }; return (_gamerSafe.getLatestItemConsumptionInfo()); } public function levelVaultFetchLevelByID(_arg1:int):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultFetchLevelByID(_arg1)); } private function e_onMetaDataError(_arg1:Event):void{ if (_evt_onMetaDataError != null){ _evt_onMetaDataError(); }; dispatchEvent(_arg1); } public function set onLevelVaultLevelEdited(_arg1:Function):void{ _evt_onLevelVaultLevelEdited = _arg1; } public function get onBeginSessionFailed():Function{ return (_evt_beginSessionFailed); } public function get levelVaultLastSelectedLevelsReceipt():int{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultLastSelectedLevelsReceipt); } private function get levelVaultEventObject():EventDispatcher{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", null)); }; return (_gamerSafe.levelVaultEventObject); } private function e_onUseEnded(_arg1):void{ if (_inUse == false){ return; }; _inUse = false; if (_evt_useChanged != null){ _evt_useChanged(); }; if (_evt_useEnded != null){ _evt_useEnded(); }; dispatchEvent(new Event("inUseEnded")); dispatchEvent(new Event("inUseChanged")); } public function set onScoreSubmitted(_arg1:Function):void{ _evt_onScoreSubmitted = _arg1; } public function set onUseStarted(_arg1:Function):void{ _evt_useStarted = _arg1; } public function get onUseEnded():Function{ return (_evt_useEnded); } public function set onMetaData(_arg1:Function):void{ _evt_onMetaData = _arg1; } public function get onAccountChange():Function{ return (_evt_accountChange); } private function e_onConfirmNo(_arg1:Event):void{ if (_evt_confNo != null){ _evt_confNo(); }; dispatchEvent(new Event("confirmedNo")); } public function get onLevelVaultLevelNumericsIncremented():Function{ return (_evt_onLevelVaultLevelNumericsIncremented); } public function get onItemPurchase():Function{ return (_evt_itemPurchase); } public function set onScoreboardRecieved(_arg1:Function):void{ _evt_onScoreboardRecieved = _arg1; } public function levelVaultSetExpiringStringAttribute(_arg1, _arg2:String, _arg3:String, _arg4:String):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (levelVaultSetExpiringStringAttributes(_arg1, [_arg2], [_arg3], [_arg4])); } public function bestowAchievement(_arg1:uint):Boolean{ if (_loaded == false){ return (false); }; _gamerSafe.bestowAchievement(_arg1); return (true); } public function get onLogin():Function{ return (_evt_login); } private function e_onAccountChange(_arg1:Event):void{ if (_evt_accountChange != null){ _evt_accountChange(); }; dispatchEvent(_arg1); } public function levelVaultGetLevelsByDateCreated(_arg1:String, _arg2:String, _arg3:Boolean=true, _arg4:uint=20, _arg5:uint=0):int{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLevelsByDateCreated(_arg1, _arg2, _arg3, _arg4, _arg5)); } public function hasItem(_arg1:int):Boolean{ if (_loaded == false){ return (false); }; if (inSession == false){ return (false); }; return (_gamerSafe.hasItem(_arg1)); } public function requestMetaDataByType(_arg1:int, _arg2:int=1000):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.requestMetaDataByType(_arg1, _arg2); } public function get levelVaultLastEditedLevelID():uint{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLastEditedLevelID()); } public function levelVaultSetStringAttributes(_arg1, _arg2:Array, _arg3:Array):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultSetStringAttributes(_arg1, _arg2, _arg3)); } public function get username():String{ if (_loaded == false){ return ("GamerSafe"); }; return (_gamerSafe.username); } public function levelVaultSetExpiringNumericAttribute(_arg1, _arg2:String, _arg3:Number, _arg4:String):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (levelVaultSetExpiringNumericAttributes(_arg1, [_arg2], [_arg3], [_arg4])); } public function set onMetaDataError(_arg1:Function):void{ _evt_onMetaDataError = _arg1; } private function e_onConfirmYes(_arg1:Event):void{ if (_evt_confYes != null){ _evt_confYes(); }; dispatchEvent(new Event("confirmedYes")); } public function get onLevelVaultLevelDeleted():Function{ return (_evt_onLevelVaultLevelDeleted); } public function levelVaultSetAttributes(_arg1, _arg2:Object):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultSetAttributes(_arg1, _arg2)); } public function set onUseEnded(_arg1:Function):void{ _evt_useEnded = _arg1; } public function set onUseChanged(_arg1:Function):void{ _evt_useChanged = _arg1; } private function e_onLevelVaultLevelAttributesChanged(_arg1:Event):void{ if (_evt_onLevelVaultLevelAttributesChanged != null){ _evt_onLevelVaultLevelAttributesChanged(); }; dispatchEvent(_arg1); } public function levelVaultGetLevelsByRating(_arg1:Number, _arg2:Number, _arg3:Boolean=true, _arg4:uint=20, _arg5:uint=0):int{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLevelsByRating(_arg1, _arg2, _arg3, _arg4, _arg5)); } public function requestOtherGameProfile(_arg1:String):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.requestOtherGameProfile(_arg1); } public function set onBeginSessionFailed(_arg1:Function):void{ _evt_beginSessionFailed = _arg1; } public function get onLevelVaultLevelStringsSet():Function{ return (_evt_onLevelVaultLevelStringsSet); } public function set onLevelVaultLevelRated(_arg1:Function):void{ _evt_onLevelVaultLevelRated = _arg1; } private function e_onUnregisteredName(_arg1:Event):void{ if (_evt_onUnregisteredName != null){ _evt_onUnregisteredName(); }; dispatchEvent(_arg1); } public function levelVaultRateLevel(_arg1, _arg2:uint):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultRateLevel(_arg1, _arg2)); } private function levelVaultCreateLevelFromObject(_arg1:Object):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultCreateLevelFromObject(_arg1)); } public function get onBeginSession():Function{ return (_evt_beginSession); } public function consumeItem(_arg1:int, _arg2:int):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.consumeItem(_arg1, _arg2); } public function get levelVaultReady():Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultReady); } public function levelVaultRegisterCallback(_arg1:Function, ... _args):void{ var _local3:Array; var _local4:*; _local3 = []; _local3.push(_arg1); for each (_local4 in _args) { _local3.push(_local4); }; (_gamerSafe.levelVaultRegisterCallback as Function).apply(this, _local3); } public function get signupUrl():String{ if (_loaded == false){ return (""); }; return (_gamerSafe.signupUrl); } public function get onLevelVaultLevelFlagged():Function{ return (_evt_onLevelVaultLevelFlagged); } public function get levelVaultShareCookie():String{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", null)); }; return (_gamerSafe.levelVaultShareCookie); } public function set onAccountChange(_arg1:Function):void{ _evt_accountChange = _arg1; } public function levelVaultFail(_arg1:String, _arg2=false){ trace("[ LevelVault Error:", _arg1, "]"); _levelVaultLastError = _arg1; return (_arg2); } public function set onApiReady(_arg1:Function):void{ _evt_apiReady = _arg1; } public function set onLevelVaultLevelNumericsIncremented(_arg1:Function):void{ _evt_onLevelVaultLevelNumericsIncremented = _arg1; } public function levelVaultGetLevelsByDateModified(_arg1:String, _arg2:String, _arg3:Boolean=true, _arg4:uint=20, _arg5:uint=0):int{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLevelsByDateModified(_arg1, _arg2, _arg3, _arg4, _arg5)); } public function set onItemPurchase(_arg1:Function):void{ _evt_itemPurchase = _arg1; } private function e_onLevelVaultGotLevel(_arg1:Event):void{ if (_evt_onLevelVaultGotLevel != null){ _evt_onLevelVaultGotLevel(); }; dispatchEvent(_arg1); } public function get onConsumptionCompleted():Function{ return (_evt_onConsumptionCompleted); } private function e_onLevelVaultLevelNumericsSet(_arg1:Event):void{ if (_evt_onLevelVaultLevelNumericsSet != null){ _evt_onLevelVaultLevelNumericsSet(); }; dispatchEvent(_arg1); } public function get levelVaultLastCreatedLevelID():uint{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLastCreatedLevelID()); } public function get wantsNewsletter():Boolean{ if (_loaded == false){ return (false); }; return (_gamerSafe.wantsNewsletter); } public function get onConfirmNo():Function{ return (_evt_confNo); } public function enable():void{ if (_status == "Disabled"){ _status = "Ready"; _loaded = true; }; } public function get paymentUrl():String{ if (_loaded == false){ return (""); }; return (_gamerSafe.paymentUrl); } public function logout():void{ if (_loaded == false){ return; }; _gamerSafe.logout(); } public function set partner(_arg1:String):void{ if (_loaded == false){ return; }; _gamerSafe.setPartner(_arg1); } public function get latestScoreboardEntries():Object{ if (_loaded == false){ return (null); }; return (_gamerSafe.getLatestScoreboardEntries()); } private function e_onScoreboardError(_arg1:Event):void{ if (_evt_onScoreboardError != null){ _evt_onScoreboardError(); }; dispatchEvent(_arg1); } public function set onItemPurchaseFailed(_arg1:Function):void{ _evt_itemPurchaseFailed = _arg1; } public function get onLoginFailed():Function{ return (_evt_loginFailed); } public function levelVaultGetLastSelectedLevels():Array{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", [])); }; return (_gamerSafe.levelVaultGetLastSelectedLevels()); } public function get latestItemPurchaseInfo():Object{ if (_loaded == false){ return (null); }; return (_gamerSafe.getLatestItemPurchaseInfo()); } public function set onLogin(_arg1:Function):void{ _evt_login = _arg1; } private function beginSession(_arg1:String, _arg2:String):Boolean{ if (_loaded == false){ return (false); }; _gamerSafe.beginSession(_arg1, _arg2, _referrer); return (true); } public function get onRegistrationFormClosed():Function{ return (_evt_onRegistrationFormClosed); } public function get inSession():Boolean{ if (_loaded == false){ return (false); }; return (_gamerSafe.inSession); } private function onLoadingError(_arg1:IOErrorEvent):void{ _loaded = false; _status = "Failed"; trace("Failed to load GamerSafe"); } public function setRegistrationDefaults(_arg1:Object):void{ if (_loaded == false){ return; }; _gamerSafe.setRegisterDefaults(_arg1); } public function levelVaultGetLevelRating(_arg1:Object=null):Number{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLevelRating(_arg1)); } public function get onLevelVaultGotLevel():Function{ return (_evt_onLevelVaultGotLevel); } public function get gamerXP():uint{ if (_loaded == false){ return (0); }; return (_gamerSafe.gamerXP); } public function levelVaultGetLevelsByNumericData(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=true, _arg5:uint=20, _arg6:uint=0):int{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLevelsByNumericData(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6)); } public function levelVaultIncrementNumeric(_arg1, _arg2:String):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultIncrementNumeric(_arg1, _arg2)); } public function get latestOtherGameProfile():Object{ if (_loaded == false){ return (null); }; return (_gamerSafe.getLatestOtherGameProfile()); } public function setMetaData(_arg1:int, _arg2:Number):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; if (!loggedIn){ return; }; _gamerSafe.setMetaData(_arg1, _arg2); } private function e_onUseStarted(_arg1):void{ if (_inUse == true){ return; }; _inUse = true; if (_evt_useChanged != null){ _evt_useChanged(); }; if (_evt_useStarted != null){ _evt_useStarted(); }; dispatchEvent(new Event("inUseStarted")); dispatchEvent(new Event("inUseChanged")); } public function set onLevelVaultLevelAttributesChanged(_arg1:Function):void{ _evt_onLevelVaultLevelAttributesChanged = _arg1; } private function levelVaultSetTempAttributes(_arg1:Event):void{ removeEventListener(_slot1.EVT_LEVELVAULT_LEVEL_CREATED, levelVaultSetTempAttributes); levelVaultSetAttributes(levelVaultLastCreatedLevelID, _levelVaultTempAttributes); _levelVaultTempAttributes = {}; } public function set onLevelVaultLevelDeleted(_arg1:Function):void{ _evt_onLevelVaultLevelDeleted = _arg1; } public function set onScoreboardError(_arg1:Function):void{ _evt_onScoreboardError = _arg1; } public function set autoLogin(_arg1:Boolean):void{ if (_loaded == false){ return; }; _gamerSafe.autoLogin = _arg1; } private function e_onScoreboardRecieved(_arg1:Event):void{ if (_evt_onScoreboardRecieved != null){ _evt_onScoreboardRecieved(); }; dispatchEvent(_arg1); } public function levelVaultCreateLevel(_arg1):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; if (loggedIn == false){ return (levelVaultFail("You must be logged in to create levels")); }; if ((_arg1 is ByteArray)){ return (levelVaultCreateLevelFromBytes(_arg1)); }; return (levelVaultCreateLevelFromObject(_arg1)); } public function flashBar():void{ if (_loaded == false){ return; }; _gamerSafe.flashBar(); } public function levelVaultFlagLevel(_arg1):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultFlagLevel(_arg1)); } public function set achievementPopupPosition(_arg1:Point):void{ if (_loaded == false){ return; }; _gamerSafe.achievementPopupPosition = _arg1; } public function showScoreSubmit(_arg1:Number, _arg2:String, _arg3:Boolean=false, _arg4:int=-1):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.showScoreSubmitPrompt(_arg1, _arg2, _arg4, _arg3); } private function levelVaultCreateLevelFromBytes(_arg1:ByteArray):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultCreateLevel(_arg1)); } public function hideInterface():void{ if (_loaded == false){ return; }; _gamerSafe.visible = false; } public function set onUnregisteredName(_arg1:Function):void{ _evt_onUnregisteredName = _arg1; } public function get highScore():Number{ if (_loaded == false){ return (0); }; if (inSession == false){ return (0); }; return (_gamerSafe.highScore); } public function get inUse():Boolean{ return (_inUse); } public function levelVaultEditLevel(_arg1, _arg2:ByteArray):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; if (loggedIn == false){ return (levelVaultFail("You must be logged in to edit levels")); }; return (_gamerSafe.levelVaultEditLevel(_arg1, _arg2)); } public function get account():Object{ if (_loaded == false){ return (null); }; return (_gamerSafe.account); } public function levelVaultSetNumericAttributes(_arg1, _arg2:Array, _arg3:Array):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultSetNumericAttributes(_arg1, _arg2, _arg3)); } public function set savedGame(_arg1:String):void{ if (_loaded == false){ return; }; _gamerSafe.savedGame = _arg1; } public function levelVaultGetLevelNumRatings(_arg1:Object=null):int{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLevelNumRatings(_arg1)); } public function get applicationDomain():ApplicationDomain{ return (_loader.contentLoaderInfo.applicationDomain); } public function set onLevelVaultLevelStringsSet(_arg1:Function):void{ _evt_onLevelVaultLevelStringsSet = _arg1; } public function get iconUrl():String{ if (_loaded == false){ return (""); }; return (_gamerSafe.iconUrl); } private function e_onNetworkingError(_arg1:Event):void{ if (_evt_networkingError != null){ _evt_networkingError(); }; dispatchEvent(_arg1); } public function showRegistrationForm():void{ if (_loaded == false){ return; }; _gamerSafe.showRegistrationForm(); } private function e_onLevelVaultLevelCreated(_arg1:Event):void{ if (_evt_onLevelVaultLevelCreated != null){ _evt_onLevelVaultLevelCreated(); }; dispatchEvent(_arg1); } public function get onScoreSubmitted():Function{ return (_evt_onScoreSubmitted); } public function get onMetaData():Function{ return (_evt_onMetaData); } public function get loggedIn():Boolean{ if (_loaded == false){ return (false); }; return (_gamerSafe.loggedIn); } public function set onBeginSession(_arg1:Function):void{ _evt_beginSession = _arg1; } public function get onScoreboardRecieved():Function{ return (_evt_onScoreboardRecieved); } public function set onLevelVaultLevelFlagged(_arg1:Function):void{ _evt_onLevelVaultLevelFlagged = _arg1; } private function e_onLoginFormClosed(_arg1:Event):void{ if (_evt_onLoginFormClosed != null){ _evt_onLoginFormClosed(); }; dispatchEvent(_arg1); } public function get onLevelVaultLevelEdited():Function{ return (_evt_onLevelVaultLevelEdited); } private function e_onMetaData(_arg1:Event):void{ if (_evt_onMetaData != null){ _evt_onMetaData(); }; dispatchEvent(_arg1); } private function e_onItemPurchaseFailed(_arg1:Event):void{ if (_evt_itemPurchaseFailed != null){ _evt_itemPurchaseFailed(); }; dispatchEvent(_arg1); } public function setStyle(_arg1:String, _arg2):void{ var _local3:Object; if (_loaded == false){ _tmpSkin[_arg1] = _arg2; return; }; _local3 = new Object(); _local3[_arg1] = _arg2; _gamerSafe.setSkin(_local3); } public function showScoreboard(_arg1:int=-1):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.showScoreboard(_arg1); } public function levelVaultSetStringAttribute(_arg1, _arg2:String, _arg3:String):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultSetStringAttribute(_arg1, _arg2, _arg3)); } public function showLogin(_arg1:Object=null):void{ if (_loaded == false){ return; }; _gamerSafe.showLogin(_arg1); } public function requestMetaDataByValue(_arg1:int, _arg2:Number, _arg3:Number, _arg4:int=-1, _arg5:int=1):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.requestMetaDataByValue(_arg1, _arg2, _arg3, _arg4, _arg5); } private function setupStage(_arg1:Event):void{ if (stage == null){ return; }; _stage = stage; _stage.addEventListener(Event.RESIZE, resizeStage); _stageWidth = stage.stageWidth; _stageHeight = stage.stageHeight; if (root != null){ _referrer = root.loaderInfo.loaderURL; }; if (loaded){ _gamerSafe.componentWidth = _stageWidth; _gamerSafe.componentHeight = _stageHeight; _stage.addChild((_gamerSafe as Sprite)); }; } public function get onUseChanged():Function{ return (_evt_useChanged); } public function saveToScoreboard(_arg1:Number, _arg2:String, _arg3:int=-1, _arg4:String=""):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.saveToScoreboard(_arg1, _arg2, _arg3, _arg4); } public function get onLevelVaultLevelRated():Function{ return (_evt_onLevelVaultLevelRated); } private function e_onConsumptionCompleted(_arg1:Event):void{ if (_evt_onConsumptionCompleted != null){ _evt_onConsumptionCompleted(); }; dispatchEvent(_arg1); } public function set onConfirmYes(_arg1:Function):void{ _evt_confYes = _arg1; } public function get FAQUrl():String{ if (_loaded == false){ return (""); }; return (_gamerSafe.FAQUrl); } public function bestowFreeItem(_arg1:int):Boolean{ if (_loaded == false){ return (false); }; _gamerSafe.bestowFreeItem(_arg1); return (true); } public function set onLevelVaultGotLevels(_arg1:Function):void{ _evt_onLevelVaultGotLevels = _arg1; } public function get countryCode():String{ if (_loaded == false){ return (""); }; if (inSession == false){ return (""); }; return (_gamerSafe.countryCode); } public function get onApiReady():Function{ return (_evt_apiReady); } public function levelVaultSetNumericAttribute(_arg1, _arg2:String, _arg3:Number):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultSetNumericAttribute(_arg1, _arg2, _arg3)); } public function levelVaultDeleteLevel(_arg1):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultDeleteLevel(_arg1)); } private function resizeStage(_arg1:Event):void{ if (loaded == false){ return; }; _stageWidth = _stage.stageWidth; _stageHeight = _stage.stageHeight; _gamerSafe.componentWidth = _stageWidth; _gamerSafe.componentHeight = _stageHeight; } private function onLoadingComplete(_arg1:Event):void{ var _local2:EventDispatcher; _status = "Ready"; _loaded = true; _gamerSafe = (_loader.content as Object); _gamerSafe.componentWidth = _stageWidth; _gamerSafe.componentHeight = _stageHeight; _gamerSafe.setSkin(_tmpSkin); _gamerSafe.addEventListener(EVT_NETWORKING_ERROR, e_onNetworkingError); _gamerSafe.addEventListener(EVT_ACCOUNT_CHANGE, e_onAccountChange); _gamerSafe.addEventListener(EVT_LOGIN, e_onLogin); _gamerSafe.addEventListener(EVT_LOGIN_FAILED, e_onLoginFailed); _gamerSafe.addEventListener(EVT_BEGIN_SESSION, e_onBeginSession); _gamerSafe.addEventListener(EVT_BEGIN_SESSION_FAILED, e_onBeginSessionFailed); _gamerSafe.addEventListener(EVT_ITEM_PURCHASE, e_onItemPurchase); _gamerSafe.addEventListener(EVT_ITEM_PURCHASE_FAILED, e_onItemPurchaseFailed); _gamerSafe.addEventListener("yes", e_onConfirmYes); _gamerSafe.addEventListener("no", e_onConfirmNo); _gamerSafe.addEventListener("dialog_begin", e_onUseStarted); _gamerSafe.addEventListener("dialog_end", e_onUseEnded); _gamerSafe.addEventListener(EVT_SCOREBOARD_ENTRIES_ERROR, e_onScoreboardError); _gamerSafe.addEventListener(EVT_SCOREBOARD_ENTRIES_RECEIVED, e_onScoreboardRecieved); _gamerSafe.addEventListener(EVT_SCOREBOARD_ENTRY_SUBMITTED, e_onScoreSubmitted); _gamerSafe.addEventListener(EVT_METADATA, e_onMetaData); _gamerSafe.addEventListener(EVT_METADATA_ERROR, e_onMetaDataError); _gamerSafe.addEventListener(EVT_UNREGISTERED_NAME, e_onUnregisteredName); _gamerSafe.addEventListener(EVT_CONSUMPTION_COMPLETED, e_onConsumptionCompleted); _gamerSafe.addEventListener(EVT_REGISTRATION_FORM_CLOSED, e_onRegistrationFormClosed); _gamerSafe.addEventListener(EVT_LOGIN_FORM_CLOSED, e_onLoginFormClosed); _gamerSafe.addEventListener(EVT_OTHER_GAME_PROFILE_RECEIVED, e_onOtherGameProfileReceived); _local2 = levelVaultEventObject; _local2.addEventListener(EVT_LEVELVAULT_GOT_LEVELS, e_onLevelVaultGotLevels); _local2.addEventListener(EVT_LEVELVAULT_GOT_SINGLE_LEVEL, e_onLevelVaultGotLevel); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_CREATED, e_onLevelVaultLevelCreated); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_DELETED, e_onLevelVaultLevelDeleted); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_EDITED, e_onLevelVaultLevelEdited); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_FLAGGED, e_onLevelVaultLevelFlagged); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_RATED, e_onLevelVaultLevelRated); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_NUMERICS_SET, e_onLevelVaultLevelNumericsSet); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_STRINGS_SET, e_onLevelVaultLevelStringsSet); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_NUMERICS_INCREMENTED, e_onLevelVaultLevelNumericsIncremented); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_NUMERICS_SET, e_onLevelVaultLevelAttributesChanged); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_STRINGS_SET, e_onLevelVaultLevelAttributesChanged); _local2.addEventListener(EVT_LEVELVAULT_LEVEL_NUMERICS_INCREMENTED, e_onLevelVaultLevelAttributesChanged); if (_stage != null){ _stage.addChild((_gamerSafe as Sprite)); }; if (root != null){ _referrer = root.loaderInfo.loaderURL; }; if (_storedPasscode != ""){ beginSession(_storedPasscode, _storedHashseed); }; showStatusBar(); e_onApiReady(new Event("apiReady")); } public function showAchievements(_arg1:Object=null):void{ if (_loaded == false){ return; }; _gamerSafe.showAchievements(_arg1); } public function requestMetaDataForAccount(_arg1:int=-1):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.requestMetaDataForAccount(_arg1); } public function showInterface():void{ if (_loaded == false){ return; }; _gamerSafe.visible = true; } private function get sprite():Sprite{ if (_loaded == false){ return (null); }; return (_gamerSafe.sprite); } public function levelVaultGetLevelData(_arg1:Object=null):ByteArray{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", null)); }; return (_gamerSafe.levelVaultGetLevelData(_arg1)); } private function e_onApiReady(_arg1:Event):void{ if (_evt_apiReady != null){ _evt_apiReady(); }; dispatchEvent(_arg1); } public function get onItemPurchaseFailed():Function{ return (_evt_itemPurchaseFailed); } public function set onConsumptionCompleted(_arg1:Function):void{ _evt_onConsumptionCompleted = _arg1; } private function e_onScoreSubmitted(_arg1:Event):void{ if (_evt_onScoreSubmitted != null){ _evt_onScoreSubmitted(); }; dispatchEvent(_arg1); } public function get onLevelVaultLevelAttributesChanged():Function{ return (_evt_onLevelVaultLevelAttributesChanged); } public function disable():void{ if (_status == "Ready"){ _status = "Disabled"; _loaded = false; }; } private function e_onLogin(_arg1:Event):void{ if (_evt_login != null){ _evt_login(); }; flashBar(); dispatchEvent(_arg1); } private function e_onLevelVaultGotLevels(_arg1:Event):void{ if (_evt_onLevelVaultGotLevels != null){ _evt_onLevelVaultGotLevels(); }; dispatchEvent(_arg1); } public function get autoLogin():Boolean{ if (_loaded == false){ return (false); }; return (_gamerSafe.autoLogin); } public function getItemById(_arg1:int):Object{ var _local2:Array; var _local3:Object; if (_loaded == false){ return (null); }; if (inSession == false){ return (null); }; _local2 = items; for each (_local3 in _local2) { if (_local3.id == _arg1){ return (_local3); }; }; return (null); } public function set wantsNewsletter(_arg1:Boolean):void{ if (_loaded == true){ _gamerSafe.wantsNewsletter = _arg1; }; } public function set onConfirmNo(_arg1:Function):void{ _evt_confNo = _arg1; } public function get onUnregisteredName():Function{ return (_evt_onUnregisteredName); } public function get unregisteredName():String{ if (_loaded == false){ return (""); }; return (_gamerSafe.unregisteredName); } public function get achievementPopupPosition():Point{ if (_loaded == false){ return (new Point(0, 0)); }; return (_gamerSafe.achievementPopupPosition); } public function levelVaultGetLevelID(_arg1:Object=null):uint{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", null)); }; return (_gamerSafe.levelVaultGetLevelID(_arg1)); } public function get savedGame():String{ if (_loaded == false){ return (""); }; if (_gamerSafe.savedGame == null){ return (""); }; return (_gamerSafe.savedGame); } public function showMessageBox(_arg1:String, _arg2:String, _arg3:Boolean=true):void{ if (_loaded == false){ return; }; _gamerSafe.messageBox(_arg1, _arg2, _arg3); } public function get onScoreboardError():Function{ return (_evt_onScoreboardError); } public function get achievements():Array{ if (_loaded == false){ return ([]); }; if (inSession == false){ return ([]); }; return (_gamerSafe.achievementList); } public function set onNetworkingError(_arg1:Function):void{ _evt_networkingError = _arg1; } public function get startingTime():Date{ if (_loaded == false){ return (null); }; if (inSession == false){ return (null); }; return (_gamerSafe.startingTime); } public function levelVaultSetExpiringStringAttributes(_arg1, _arg2:Array, _arg3:Array, _arg4:Array):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultSetExpiringStringAttributes(_arg1, _arg2, _arg3, _arg4)); } public function levelVaultGetLevelAsObject(_arg1:Object=null):Object{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", null)); }; return (_gamerSafe.levelVaultGetLevelAsObject(_arg1)); } public function get gamerGold():uint{ if (_loaded == false){ return (0); }; return (_gamerSafe.gamerGold); } private function e_onLoginFailed(_arg1:Event):void{ if (_evt_loginFailed != null){ _evt_loginFailed(); }; dispatchEvent(_arg1); } public function set onLoginFailed(_arg1:Function):void{ _evt_loginFailed = _arg1; } public function set onRegistrationFormClosed(_arg1:Function):void{ _evt_onRegistrationFormClosed = _arg1; } public function get onLevelVaultGotLevels():Function{ return (_evt_onLevelVaultGotLevels); } public function levelVaultCreateLevelWithAttributes(_arg1, _arg2:Object):Boolean{ if (levelVaultCreateLevel(_arg1)){ _levelVaultTempAttributes = _arg2; addEventListener(_slot1.EVT_LEVELVAULT_LEVEL_CREATED, levelVaultSetTempAttributes); return (true); }; return (levelVaultFail(_levelVaultLastError)); } public function get onConfirmYes():Function{ return (_evt_confYes); } public function set onLevelVaultLevelCreated(_arg1:Function):void{ _evt_onLevelVaultLevelCreated = _arg1; } public function login(_arg1:String, _arg2:String, _arg3:Boolean=false):void{ if (_loaded == false){ return; }; _gamerSafe.login(_arg1, _arg2, _arg3); } public function levelVaultGetLevelAttributes(_arg1:Object=null):Array{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", [])); }; return (_gamerSafe.levelVaultGetLevelAttributes(_arg1)); } public function levelVaultSetExpiringNumericAttributes(_arg1, _arg2:Array, _arg3:Array, _arg4:Array):Boolean{ if (_loaded == false){ return (levelVaultFail("API not yet loaded")); }; return (_gamerSafe.levelVaultSetExpiringNumericAttributes(_arg1, _arg2, _arg3, _arg4)); } public function set onLoginFormClosed(_arg1:Function):void{ _evt_onLoginFormClosed = _arg1; } private function e_onLevelVaultLevelDeleted(_arg1:Event):void{ if (_evt_onLevelVaultLevelDeleted != null){ _evt_onLevelVaultLevelDeleted(); }; dispatchEvent(_arg1); } public function tryAutoLogin():void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.tryAutoLogin(); } public function levelVaultGetLevelAsCustomObject(_arg1:Class, _arg2:Object=null){ if (_loaded == false){ return (levelVaultFail("API not yet loaded", null)); }; return (_gamerSafe.levelVaultGetLevelAsCustomObject(_arg1, _arg2)); } public function set onLevelVaultGotLevel(_arg1:Function):void{ _evt_onLevelVaultGotLevel = _arg1; } public function requestScoreboardEntries(_arg1:int=-1):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.requestScoreboardEntries(_arg1); } public function set onLevelVaultLevelNumericsSet(_arg1:Function):void{ _evt_onLevelVaultLevelNumericsSet = _arg1; } public function showShop(_arg1:Object=null):void{ if (_loaded == false){ return; }; _gamerSafe.showShop(_arg1); } public function get onNetworkingError():Function{ return (_evt_networkingError); } public function hideStatusBar():void{ if (_loaded == false){ return; }; _gamerSafe.hideStatusBar(); } public function get levelVaultLastError():String{ return (_levelVaultLastError); } private function e_onLevelVaultLevelRated(_arg1:Event):void{ if (_evt_onLevelVaultLevelStringsSet != null){ _evt_onLevelVaultLevelStringsSet(); }; dispatchEvent(_arg1); } public function levelVaultGetLevelsByStringData(_arg1:String, _arg2:String, _arg3:Boolean=true, _arg4:uint=20, _arg5:uint=0):int{ if (_loaded == false){ return (levelVaultFail("API not yet loaded", 0)); }; return (_gamerSafe.levelVaultGetLevelsByStringData(_arg1, _arg2, _arg3, _arg4, _arg5)); } public function closeScoreboard():void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.closeScoreboard(); } public function showPopup(_arg1:String, _arg2:Object=null):void{ if (_loaded == false){ return; }; _gamerSafe.showPopup(_arg1, _arg2); } public function get onLevelVaultLevelCreated():Function{ return (_evt_onLevelVaultLevelCreated); } public function get latestMetaDataResult():Array{ if (_loaded == false){ return ([]); }; return (_gamerSafe.metaData); } public function purchaseItem(_arg1:int, _arg2:int=0):Boolean{ if (_loaded == false){ return (false); }; return (_gamerSafe.purchaseItem(_arg1, _arg2)); } public function requestUnregisteredName():void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.requestUnregisteredUserName(); } public function get onLoginFormClosed():Function{ return (_evt_onLoginFormClosed); } public function getConsumptionsAvailable(_arg1:int):int{ if (_loaded == false){ return (0); }; if (inSession == false){ return (0); }; return (_gamerSafe.getConsumptionsAvailable(_arg1)); } private function e_onLevelVaultLevelFlagged(_arg1:Event):void{ if (_evt_onLevelVaultLevelFlagged != null){ _evt_onLevelVaultLevelFlagged(); }; dispatchEvent(_arg1); } public function get items():Array{ if (_loaded == false){ return ([]); }; if (inSession == false){ return ([]); }; return (_gamerSafe.itemList); } public function get gamerPoints():uint{ if (_loaded == false){ return (0); }; return (_gamerSafe.gamerPoints); } public function get onLevelVaultLevelNumericsSet():Function{ return (_evt_onLevelVaultLevelNumericsSet); } private function e_onItemPurchase(_arg1:Event):void{ if (_evt_itemPurchase != null){ _evt_itemPurchase(); }; dispatchEvent(_arg1); } public function purchaseItemInterface(_arg1:int, _arg2:int=0):void{ if (_loaded == false){ return; }; if (inSession == false){ return; }; _gamerSafe.purchaseItemInterface(_arg1, _arg2); } public function get status():String{ return (_status); } public function get isGamerGoldPurchaseDisabled():Boolean{ if (_loaded == false){ return (true); }; return (_gamerSafe.isGamerGoldPurchasingDisabled); } public function setShopCategoryVisible(_arg1:int, _arg2:Boolean):void{ if (_loaded == false){ return; }; _gamerSafe.setShopCategoryVisible(_arg1, _arg2); } public static function get api():GamerSafe{ if (_instance == null){ trace("GamerSafe: Instance Error: Attempted to get instance before initial construction."); return (null); }; return (_instance); } public static function get apiLoaded():Boolean{ return (!((_instance == null))); } } }//package
Section 209
//GamerSafeConstants (GamerSafeConstants) package { public class GamerSafeConstants { public static const SCOREBOARD_DIAMONDS:int = 158; public static const ACHIEVEMENTGROUP_ACHIEVEMENTS:int = 234; public static const SCOREBOARDGROUP_SCOREBOARDS:int = 205; public static const ITEMGROUP_ITEMS:int = 0x0100; public static const SCOREBOARD_POINTS:int = 159; } }//package
Section 210
//GamesChart (GamesChart) package { import flash.display.*; public class GamesChart { public static var onGCEvent:Function = null; private static var _errors:Object = {noInterface:"[GC-API] ERROR! Please call gc.setup() first. See: http://wiki.gameschart.com/index.php/Static_Functions", alreadyDefinedInterface:"[GC-API] ERROR! Can only call setup once! See: http://wiki.gameschart.com/index.php/Static_Functions", noContainerMC:"[GC-API] ERROR! You must supply a container to hold GamesChart! See: http://wiki.gameschart.com/index.php/Static_Functions#Setup", noGameIDHash:"[GC-API] ERROR! You must supply the game ID key associated with this game! http://wiki.gameschart.com/index.php/Static_Functions#Setup"}; private static var _interface:GCBrainInterface; public static var VERSION:String = "0.2.0"; public static function openCharts():void{ if (_interface == null){ trace(_errors.noInterface); return; }; _interface.sendNotification(GCNotificationTypes.SHOW_CHART_LISTS, {}); } public static function hideTab():void{ if (_interface == null){ trace(_errors.noInterface); return; }; _interface.sendNotification(GCNotificationTypes.HIDE_TAB, {}); } public static function showTab(_arg1:Number, _arg2:Number):void{ if (_interface == null){ trace(_errors.noInterface); return; }; _interface.sendNotification(GCNotificationTypes.SHOW_TAB, {xPos:_arg1, yPos:_arg2}); } public static function setup(_arg1:Stage, _arg2:String):void{ if (_interface == null){ if (_arg1 == null){ trace(_errors.noContainerMC); return; }; if ((((_arg2 == null)) || ((_arg2 == "")))){ trace(_errors.noGameIDHash); return; }; _interface = new GCBrainInterface(_arg1); _interface.begin(_arg2); } else { trace(_errors.alreadyDefinedInterface); }; } } }//package
Section 211
//GCBrainInterface (GCBrainInterface) package { import flash.display.*; import flash.events.*; import flash.system.*; import flash.net.*; import gc.utils.*; import flash.external.*; public class GCBrainInterface { private var _lcID:int; private var _container:Sprite; private var _notificationBuffer:Array; private var _conn:GCSWFConnection; private var _brainLoader:Loader; private var _brainLoaded:Boolean; private var _stage:Stage; public static var apiType:String = "AS3-API"; private static var BRAIN_URL:String = "http://gameschart.com/flash_client/getBrain.php"; public function GCBrainInterface(_arg1:Stage){ _stage = _arg1; _container = new Sprite(); _container.addEventListener(Event.ENTER_FRAME, onFrameEntered); _stage.addChild(_container); Security.allowDomain("*"); Security.allowInsecureDomain("*"); trace(("[GC-API] Games Chart v." + GamesChart.VERSION)); _lcID = (Math.random() * 10000); loadBrain(); startLC(); } public function begin(_arg1:String):void{ sendNotification(GCNotificationTypes.BEGIN_LOAD, {gameIDHash:_arg1, apiType:apiType, apiVersion:GamesChart.VERSION, swfURL:getURL()}); } public function onGCEvent(_arg1:String, _arg2:Object):void{ if (GamesChart.onGCEvent != null){ GamesChart.onGCEvent.apply(null, [_arg1, _arg2]); }; } private function getURL():String{ var pageURL:String; try { pageURL = String(ExternalInterface.call("window.location.href.toString")); if (pageURL == "null"){ return (_container.stage.loaderInfo.url); } else { return (pageURL); }; } catch(e:Error) { }; return (_container.stage.loaderInfo.url); } private function onFrameEntered(_arg1:Event):void{ if (!_stage.contains(_container)){ _stage.addChild(_container); } else { if (_stage.getChildIndex(_container) != (_stage.numChildren - 1)){ _stage.setChildIndex(_container, (_stage.numChildren - 1)); }; }; } private function onFinishedLoading(_arg1:Event):void{ _brainLoaded = true; trace("[GC-API] Brain Loaded!"); } public function sendNotification(_arg1:String, _arg2:Object, _arg3:String=""):void{ if (_conn.connected){ _conn.send("sendNotification", _arg1, _arg2, _arg3); } else { _notificationBuffer.push({name:_arg1, body:_arg2, type:_arg3}); }; } private function loadBrain():void{ _brainLoaded = false; _brainLoader = new Loader(); _brainLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onFinishedLoading); _brainLoader.load(new URLRequest(((BRAIN_URL + "?r=") + _lcID))); _container.addChild(_brainLoader); trace("[GC-API] Loading Brain.. "); } private function startLC():void{ _notificationBuffer = []; _conn = new GCSWFConnection(("_GamesChartLC" + _lcID), this, GamesChart.VERSION); _conn.addEventListener(GCSWFConnection.CONNECTED, onLCConnected); } private function onLCConnected(_arg1:Event):void{ var _local2:Object; trace("[GC-API] API Connected to Brain!"); while (_notificationBuffer.length > 0) { _local2 = _notificationBuffer.pop(); sendNotification(_local2.name, _local2.body, _local2.type); }; } } }//package
Section 212
//GCNotificationTypes (GCNotificationTypes) package { public class GCNotificationTypes { public static var LOAD_SKIN_AND_STYLE:String = "LOAD_SKIN_AND_STYLE"; public static var BEGIN_LOAD:String = "BEGIN_LOAD"; public static var STARTUP:String = "STARTUP"; public static var SHOW_CHART_LISTS:String = "SHOW_CHART_LISTS"; public static var SHOW_TAB:String = "SHOW_TAB"; public static var SKIN_AND_STYLE_LOADED:String = "SKIN_AND_STYLE_LOADED"; public static var LAUNCH_GAME:String = "LAUNCH_GAME"; public static var HIDE_TAB:String = "HIDE_TAB"; } }//package
Section 213
//Main (Main) package { import flash.display.*; import flash.text.*; import flash.events.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import TestBed.*; import mochi.as3.*; import flash.geom.*; import flash.media.*; import General.*; import com.adobe.crypto.*; import flash.filters.*; import MoFunZoneAPI.*; import flash.net.*; import flash.system.*; import flash.ui.*; import flash.utils.*; public dynamic class Main extends MovieClip { private const GRADE_S_LIMITS:Array; private var _autoSubmitDiamonds:int;// = 0 private var _editorBGImage:int;// = 0 public var _bitmapSubmitScreen:Bitmap;// = null public var _bitmapCursorHelper:Bitmap;// = null public var _classSealBack:Class; private var _grid:int;// = 0 private var _levelIOShare:Boolean;// = false private var sm_starsAdded:Array; private var _textFieldLPSGrandTotalBest:TextField;// = null private var _splashScreenMode:int;// = 0 public var _bitmapLevelSkip:Bitmap;// = null public var _classTheEnd:Class; public var _bitmapAchievements:Bitmap;// = null private var _plus50PointsTotal:int;// = 0 private var _plus50PointsTimer:int;// = 0 public var _classPerfectBalanceAllDone:Class; private var _levelDataTextField:TextField;// = null private var _levelIOCancel:Boolean;// = false private var _viewScoresScore:Array; private var _matrix:Array; public var _bitmapSealBack:Bitmap;// = null public var m_itemBought:Boolean;// = false private var _viewScoresName:Array; private var _textFieldLPSDiamondsBest:TextField;// = null public var _classButtonUnlocked:Class; private var _theEndParticles:int;// = 0 public var _classButtonUnlockedBig:Class; private var sm_lockedSubSpritesSpeedX:Array; private var sm_lockedSubSpritesSpeedY:Array; public var _bitmapLevelPackSelection:Bitmap;// = null public var _showHelp:Boolean;// = true public var _bitmapCreditsScreenBackground:Bitmap;// = null public var _class3DLogo:Class; public var m_currTest:Test;// = null private var sm_starsAddTimer:int;// = 60 private var _submitNameTextField:TextField;// = null public var _classWait:Class; private var _levelBackupStringClear:String;// = " <level> 20 0 0 1001 0 1000 1.5" public var _classRelax:Class; public var _instructionsGame:Boolean;// = true private var _infernoSound:int;// = 100 public var _classCreditsScreen:Class; public var _first:Boolean;// = true private var _audioBank:Audio;// = null public var _classSealFront:Class; public var _classSubmitScreen:Class; private var _plus200PointsTimer:int;// = 0 public var _classInstructionsGame:Class; private var sm_lockedSubSprites:Array; public var _bitmapMainMenuBG:Bitmap;// = null public var _classAlmostPerfectBalance:Class; public var _bitmapCreditsScreen:Bitmap;// = null private var _autoSubmitScore:int;// = 0 private var _stageQuality:int;// = 0 public var _classPerfectBalanceAllDoneEditor:Class; private var _oldScore:int;// = 0 private var sm_lockedSubSpritesN:int;// = 0 public var _bitmapButtonUnlocked:Bitmap;// = null public var _classTextureA:Class; public var m_settingsLoad:Boolean;// = false public var _bitmapButtonLocked:Bitmap;// = null private var _ttVertexCloud:TTVertexCloud;// = null public var _classMainMenuBG:Class; private var _helpCenterX:Number;// = 0 public var _bitmapMainMenuFG:Bitmap;// = null private var _helpCenterY:Number;// = 0 public var _bitmapGet20Screen:Bitmap;// = null public var _classPerfectBalanceEditor:Class; public var _bitmapTheEnd:Bitmap;// = null private var _rotate:Number;// = 0 private var _levelIOClear:Boolean;// = false public var _classLevelPackSelection:Class; public var _classLevelSkip:Class; private var _lastSubmitScore:int;// = -1 private var _bitmapAchievementItem:Bitmap;// = null public var _classBackground02:Class; public var _classBackground03:Class; public var _classBackground04:Class; public var _classBackground05:Class; public var _classBackground06:Class; public var _classBackground01:Class; public var _classMainMenuFG:Class; private var _splashScreenTimer:int;// = 0 public var m_settingsSave:Boolean;// = false public var _classPerfectBalance:Class; private var _playHitDelay:int;// = 5 private var _levelString:String;// = null private var _black:Sprite;// = null public var _classAlmostPerfectBalanceEditor:Class; public var _movieClipGamesFreeButton:SimpleButton;// = null public var _bitmapInstructions:Bitmap;// = null public var _firstRun:Boolean;// = true private var _levelIOUse:Boolean;// = false private var _playHitDiamondDelay:int;// = 5 public var _bitmapBackgroundFlash:Bitmap;// = null public var _classInstructionsShapes:Class; private var _splashRunning:Boolean;// = true private var _levelButtonCoordinates:Array; public var _classGet20Screen:Class; private var _textFieldLPSTotalScores:Array; public var _bitmapSealFront:Bitmap;// = null private var _submitMode:int;// = 1 private var _textFieldLPSTotalScoresBest:Array; private var m_editorHelpShown:Boolean;// = false private var _levelBackupString:String;// = " <level> 20 0 0 1001 0 1000 1.5" private var _submitScore:int;// = 0 private var _playHitHeavyDelay:int;// = 5 private var _rotateSeal:Number;// = 0 private var _achievementTimer:int;// = 0 private var _autoSubmitStars:Array; private var _bitmapVertexCloud:Bitmap;// = null private var m_oldTime:int; private var _scoreSent:Boolean;// = true public var _bitmapButtonUnlockedBig:Bitmap;// = null public var _classButtonLocked:Class; private static const ACHIEVEMENT_LEVEL_PACK_E:int = (1 << 4); private static const ACHIEVEMENT_LEVEL_PACK_A:int = (1 << 0); private static const ACHIEVEMENT_LEVEL_PACK_D:int = (1 << 3); private static const ACHIEVEMENT_LEVEL_PACK_B:int = (1 << 1); private static const ACHIEVEMENT_LEVEL_PACK_C:int = (1 << 2); private static const LEVEL_DATA_LUT:Array = [(120 + 1), (120 + 7), (140 + 2), (160 + 2), (140 + 13), (140 + 7), (160 + 13), (160 + 7), (120 + 8), (140 + 8), (140 + 1), (120 + 3), (140 + 3), (120 + 14), (160 + 3), (140 + 14), (160 + 1), (120 + 4), (160 + 14), (140 + 4), (160 + 8), (120 + 9), (160 + 4), (120 + 2), (120 + 5), (140 + 9), (160 + 9), (120 + 15), (120 + 10), (140 + 19), (140 + 15), (140 + 10), (160 + 10), (120 + 11), (160 + 19), (160 + 15), (140 + 11), (120 + 20), (140 + 5), (120 + 16), (140 + 20), (160 + 5), (160 + 11), (120 + 12), (140 + 16), (160 + 16), (120 + 17), (140 + 12), (120 + 6), (160 + 12), (140 + 6), (140 + 17), (160 + 20), (120 + 13), (160 + 17), (120 + 18), (140 + 18), (160 + 18), (160 + 6), (120 + 19)]; public static const PERFECT_BALANCE_CY:int = 55; public static const PERFECT_BALANCE_CX:int = 300; private static const LEVEL_DATA_STRINGS_NEW:Array = ["<level> 20 0 1 1001 0 21 -6 -8.447916666666666 1.5707963267948966 20 25.400000000000013 -5.55 -10.447916666666666 0 49 -1.85 -9.347916666666666 -4.71238898038469 67 1.5 -9.652083333333334 -3.141592653589793 21 4.5 -9.847916666666666 1.5707963267948966 19 4.75 -7.447916666666667 0 20 25.400000000000013 6.3 -10.397916666666667 0 28 -3.15 -2.45 40 60 -0.7853981633974483 28 -4.25 10.6 40 90 0.7853981633974483 1000 1.5 ", "<level> 20 0 1 1001 0 2 0.5011011044585225 5.704411096456735 -0.00008104264961280982 67 -6.05 -10.597916666666666 0 20 21.500000000000004 -4.25 -8.047916666666667 0 20 21.500000000000004 -1.2 -8.097916666666666 -1.5707963267948966 20 21.500000000000004 -2.8 -10.597916666666666 -0.008403463831503434 30 2.2 -9.347916666666666 0 67 6.45 -8.002083333333333 -3.141592653589793 67 6.45 -10.597916666666666 -6.283185307179586 28 0 7.2 30 20 0 28 0.05 3.2 30 40 0 28 0.05 -3.1499999999999986 30 67 0 2 -0.4859614946409077 0.7034642961777399 -3.1431790592815543 1000 1.5 ", "<level> 20 0 1 1001 0 67 5.65 -10.447916666666666 0 31 -0.15 -10.547916666666667 0 46 15.199999999999989 0.3 -7.897916666666667 0 28 -0.95 8.8 10 20 0.7853981633974483 24 2.7527345385328124 3.759638171870114 -0.7759090451552996 27 12.199999999999982 -1.95 8.4 28 8 0 10 50 0.7853981633974483 27 10.699999999999978 -6 -0.5 67 -5.9 -10.545833333333334 0 46 18.799999999999997 -2.6 -7.995833333333334 0 46 18.799999999999997 3.3 -7.995833333333334 0 1000 1.5 ", "<level> 20 0 1 1001 0 28 -3.95 1.45 171 10 0.7853981633974483 67 -1.5736226961683577 0.30430250091296646 0.7852475888372937 19 -2.4505696037889857 1.5420384045283653 0.785456970721155 71 26.600000000000016 1.6 -8.347916666666666 0 46 22.100000000000005 -3.8 -7.647916666666667 3.5145756754432664 43 5.75 -9.547916666666667 1.5707963267948966 46 28.70000000000002 -6.2 -10.295833333333334 0 46 28.10000000000002 -1.8 -10.245833333333335 0 27 10.699999999999978 6 -3.45 1000 1.5 ", "<level> 20 0 1 1001 0 38 4.85 -8.397916666666667 -3.141592653589793 67 2.098526860872528 -10.498526860872529 0.7853981633974483 67 -1.298526860872528 -10.498526860872529 -0.7853981633974483 67 -2.9520833331834453 -8.000000790275234 1.5711756589164034 67 -6.5 -8.002083333333333 -3.141592653589793 48 6.7 -10.647916666666667 1.5707963267948966 46 24.20000000000001 0.45 -8.147916666666667 -0.4713837474729289 48 -6.6 -10.497916666666667 0 28 8.55 2.5 80 180 0 28 -8.5 2.5500000000000007 80 180 0 1000 1.5 ", "<level> 20 0 1 1001 0 20 20 4.555575864796243 -3.9400027817297136 0.055550827275277444 30 4.500003920772273 -0.9450029372877033 0.000002797435682644901 28 4.55 2.05 20 20 0 28 -7.1 9.65 199 90 0.7853981633974483 11 6.1 -9.341666666666665 -1.5707963267948966 46 23.60000000000001 -5.8 -8.295833333333334 0 54 -2.95 -8.354166666666666 0 54 -0.1 -8.354166666666666 0 66 -3.45 -10.795833333333334 0 46 23.60000000000001 1.75 -10.545833333333334 0 46 23.60000000000001 3.25 -8.245833333333334 0 1000 1.5 ", "<level> 20 0 1 1001 0 20 25.400000000000013 -5.95 6.735000000000016 0 20 25.400000000000013 0.09999999999999995 1.7849999999999995 -8.16566601502932e-16 20 25.400000000000013 -6 -2.215 0 70 -6.397916666666667 -9.3 -1.5707963267948966 67 -3.6479166666666667 -7.85 -1.5707963267948966 19 4.35 -11.297916666666667 0 69 3.097916667334537 -9.00000166817022 -4.7115882585935545 23 0.35 -8.747916666666667 0.0005636804825731125 69 -1.9979166666666666 -10.35 -1.5707963267948966 21 5.65 -6.947916666666666 -2.356194490192345 67 -4.697916666666667 -10.85 4.71238898038469 28 -6 -0.45 10 10 0 28 0.05 3.55 10 10 0 28 6 -0.45 10 10 0 28 -6 8.5 10 10 0 28 6.05 8.55 10 10 0 20 25.400000000000013 6.15 -2.2154166666666666 0 20 25.400000000000013 5.930778581072622 6.785000000336204 -0.18953536195516799 1000 1.5 ", "<level> 20 0 1 1001 0 67 0.15 -8.497916666666667 0 20 20 3.8 -9.347916666666666 0 20 20 6.5 -10.497916666666667 -0.7853981633974483 66 1.8 -11.047916666666667 0 20 20 -4.55 -10.797916666666667 0 20 20 -6.8 -9.397916666666667 0.7853981633974483 13 -3.15 -9.847916666666666 -6.283185307179586 24 2.04020878731824 2.050130431153076 -1.5706652348366268 19 -4.5 -7.497916666666667 0 19 4.7 -7.547916666666667 -3.1412116210122747 28 2.05 8.55 10 10 0 28 -3 8.55 10 10 -1.5707963267948966 1000 1.5 ", "<level> 20 0 1 1001 0 28 0.05 -6.25 161 5 0 46 25.400000000000013 6.1 -8.597916666666666 0 46 25.400000000000013 3.15 -8.597916666666666 0 46 25.400000000000013 0.15 -8.597916666666666 0 54 -2.75 -8.602083333333333 0 69 -5.95 -8.647916666666667 0 24 0.1 -10.989583333333334 0 20 32.60000000000002 4.55 5.273125 0 20 32.60000000000002 -4.55 6.224177083333333 0 20 41.29999999999994 -2.5 -2.164166666666667 0 28 4.5 7.1 5 4 0 28 -4.5 8.05 5 4 0 28 -2.45 0.1 5 4 0 1000 1.5 ", "<level> 20 0 1 1001 0 46 16.999999999999993 4.6 -9.243750000000002 0 46 16.999999999999993 -4.65 -9.293750000000001 0 20 21.800000000000004 0.019762033236713928 2.2296954050883 0.013406447652922428 20 21.800000000000004 1.3330156717390116 3.965 0.0299052213089634 20 21.800000000000004 -1.2915127189686346 3.964983223001424 -0.03717065774446636 66 4.7 -7.491666666666667 0 20 21.800000000000004 0.1 -7.941666666666666 0 66 -4.55 -7.491666666666667 0 20 21.800000000000004 0.05 -10.591666666666665 0 67 -2.3 -10.641666666666667 0 67 2.4 -10.641666666666667 0 71 21.800000000000004 6.6416666666666675 -10.6 1.5707963267948966 71 21.800000000000004 -6.691666666666667 -10.65 -1.5707963267948966 28 0 5.55 55 10 0 1000 1.5 ", "<level> 20 0 1 1001 0 46 19.4 0.5 -7.997916666666667 0.49999674262063015 1 3.3 -8.047916666666667 0 54 4.4 -10.502083333333333 0 54 6.8 -10.552083333333334 1.5707963267948966 1 2.05 -10.547916666666667 0 46 13.699999999999983 -0.15 -10.547916666666667 -0.5345091632641872 46 24.20000000000001 6.05 -7.947916666666667 0.025805357751371324 66 -4.5 -7.547916666666667 0 66 -4.45 -9.247916666666667 0 66 -4.5 -10.997916666666667 0 28 0.5 9.05 10 40 0 1000 1.5 ", "<level> 20 0 1 1001 0 52 28.100000000000023 -5.9 -9.902083333333334 0.009594580253967935 52 28.100000000000023 3.15 -9.852083333333333 0 2 -1.3 -8.847916666666666 -3.141592653589793 67 -2.752083333333333 -10.65 1.5707963267948966 67 0.2520833333333333 -10.65 -1.5707963267948966 37 6.2 -9.347916666666666 -1.5707963267948966 24 -1.45 -7.497916666666667 0.000425513836651697 45 -4.95 2 -1.5712281821085756 45 5 3 1.5707963267948966 1000 1.5 ", "<level> 20 0 1 1001 0 67 2.5 -10.697916666666666 -6.283185307179586 67 -4.35 -8.002083333333333 3.141592653589793 68 -0.9500059407873076 -9.697916675136993 0.0028515817722895827 67 -6.7 -7.952083333333333 3.141592653589793 66 4.35 -7.397916666666667 0 52 35.599999999999994 6.05 -9.902083333333334 0.06596354269647285 67 -4.350010518274704 -10.69791669321902 0.005048793307169753 54 -6.7 -10.652083333333334 0.005257126571887407 28 0.55 9.35 20 67 0 1000 1.5 ", "<level> 20 0 1 1001 0 52 26.300000000000015 6.4 -10.452083333333333 -0.4895093462639313 52 26.300000000000015 3.35 -10.502083333333333 -4.800668679490189 52 26.300000000000015 -2.95 -10.452083333333333 -4.886756968535193 66 0.3 -7.447916666666667 0 67 5.05 -7.847916666666666 0 52 26.300000000000015 0.15 -10.454166666666666 -0.3142229265984015 23 -5.5 -8.947916666666666 0 24 -5.950341076605385 0.0020568363090106216 -1.5708509888921123 28 -8.45 10.5 100 90 0 28 -4.45 14.5 100 90 0 28 10 8.5 50 190 0 1000 1.5 ", "<level> 20 0 1 1001 0 27 26.300000000000015 0.8 -5.15 4 0.7349140573335551 -1.9099981077485748 3.141592762953642 4 0.7433663021818682 -0.9149981470493801 1.1895807983534411e-7 5 0.6911254838338418 1.080001625386307 3.14159280147048 5 0.6388883597306602 2.0750015160889657 1.1653602980926251e-7 4 0.6453060354856187 4.070001098301586 -3.1415926340978064 4 0.7022579906865686 5.065000954817015 2.1012018587621152e-8 5 0.6514774987916333 7.060000438706157 3.141592745152128 5 0.5996791985504155 8.055000267011778 4.852303819911306e-8 28 0.55 11.05 30 40 0 66 4.6 -7.439583333333333 0 66 -4.5 -7.491666666666667 0 67 0.15 -7.889583333333334 0 67 0.15 -10.441666666666666 0 54 -6.35 -10.354166666666666 0 54 6.45 -10.354166666666666 0 71 31.100000000000023 3.45 -9.995833333333335 0 71 31.100000000000023 -3.25 -9.945833333333333 0 1000 1.5 ", "<level> 20 0 1 1001 0 67 6.3 -9.743750000000002 0 66 3.1 -7.643750000000001 0 46 25.700000000000017 3.35 -9.789583333333333 0 46 25.700000000000017 0.4 -9.83958333333333 0 28 6.55 3.5 40 200 0 19 -4.45 -11.141666666666667 0 66 -4.5 -7.289583333333334 0 66 -4.5 -8.589583333333334 0 66 -4.5 -9.891666666666667 0 28 -6.45 3.5 40 200 0 1000 1.5 ", "<level> 20 0 1 1001 0 71 19.099999999999998 0.15 -8.052083333333334 -3.141592653589793 71 19.099999999999998 0.15 -10.597916666666666 0 28 0 9.55 10 10 0 45 5.05 0 -1.5707963267948966 45 -4.95 0 -1.5707963267948966 66 -4.5 -7.495833333333334 0 66 4.55 -7.495833333333334 0 66 -4.50000637596129 -8.895833338211682 0.0015302313068709728 19 4.55 -8.877083333333335 -3.141592653589793 48 2.95 -10.645833333333334 0 48 -3 -10.645833333333334 0 46 20.9 -5.95 -10.695833333333333 0 46 20.9 5.8 -10.695833333333333 0 1000 1.5 ", "<level> 20 0 1 1001 0 28 7.6 -0.95 20 20 -0.7853981633974483 27 9.79999999999999 -1.3 0.9 29 -2.432281091052134 -1.747629190136066 -4.586835653345551 27 9.79999999999999 -4.5 0.5 27 221.30000000000263 8.4 19.5 28 8.05 2.95 10 190 0 28 0 -6.25 160 6 0 67 -6.35 -10.495833333333335 0 67 -6.3 -7.904166666666667 -3.141592653589793 46 36.79999999999998 -2.3 -9.145833333333334 0 46 26.600000000000016 1.6 -9.195833333333333 0 46 18.799999999999997 4.6 -9.195833333333333 0 46 11.29999999999998 7 -9.245833333333335 0 1000 1.5 ", "<level> 20 0 1 1001 0 71 16.999999999999993 2.9 -10.747916666666667 0 71 16.999999999999993 0.6 -10.697916666666666 0 71 16.999999999999993 -1.55 -10.697916666666666 0 19 0.7 -9.097916666666666 0 20 16.699999999999992 -1.55 -7.547916666666667 0 20 16.699999999999992 0.6 -7.547916666666667 0 20 16.699999999999992 2.75 -7.597916666666666 0 71 19.7 -3.95 -10.297916666666667 0 67 -6.65 -10.347916666666666 0 40 -5.2 -7.7354166666666675 0 28 1.1 2.5 10 10 0 10 0.03793428381106758 4.00485725615672 -1.5707013916878159 28 -1 2.5 10 10 0 53 5.9 -9.254166666666665 0 1000 1.5 ", "<level> 20 0 1 1001 0 11 0.35 -9.347916666666666 -1.5707963267948966 67 3.4 -8.002083333333333 3.141592653589793 67 3.4 -10.747916666666667 0 20 19.4 6.15 -7.847916666666666 0 20 19.4 6.15 -10.697916666666666 0 20 24.50000000000001 -2.8 -8.147916666666667 -0.7853981633974483 71 28.10000000000002 -6 -8.402083333333334 -3.141592653589793 65 -0.05 1.55 0 66 -4.45 -11.147916666666667 0 28 0.05 9.05 10 10 0.7853981633974483 1000 1.5 "]; private static const LEVEL_DATA_LUT_NEW:Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; private static const ACHIEVEMENT_200_DIAMONDS:int = (1 << 10); private static const LEVEL_PACK_LIMITS:Array = [0, 40, 100, 200, 270]; public static const SCREEN_DX:int = 600; public static const SCREEN_DY:int = 500; private static const ACHIEVEMENT_ALL_LEVEL_PACKS_A:int = (1 << 7); private static const ACHIEVEMENT_ALL_LEVEL_PACKS_B:int = (1 << 6); private static const ACHIEVEMENT_ALL_LEVEL_PACKS_S:int = (1 << 8); public static const LEVEL_PACKS_MAX:int = 5; private static const ACHIEVEMENT_ALL_LEVEL_PACKS:int = (1 << 5); private static const STAR_ROWS_X:Array = [33, 142, 251, 360, 469]; private static const ACHIEVEMENT_300_DIAMONDS:int = (1 << 11); private static const LEVEL_PACK_LOCKED_X:Array = [29, 138, 247, 356, 465]; private static const LEVEL_DATA_STRINGS_EASY_NEW:Array = ["<level> 20 0 1 1001 0 1 -5.8 -9.347916666666666 0 30 5.25 -9.347916666666666 0 19 -0.7 -9.247916666666667 0 28 3 8.55 10 90 0 28 -2.95 9.05 10 60 0 1000 1.5 ", "<level> 20 0 1 1001 0 27 57.19999999999979 8.9 -2.25 27 57.19999999999979 -9.05 -2.3 28 5.7 9.2 10 90 -0.7853981633974483 28 -5.65 9.2 10 90 0.7853981633974483 29 4.800000000000001 -9.347916666666666 0 2 -5.15 -9.297916666666667 -1.5707963267948966 20 33.500000000000014 -0.2 -9.247916666666667 0 1000 1.5 ", "<level> 20 0 1 1001 0 9 5.7 -9.397916666666667 1.5707963267948966 20 23.90000000000001 -0.4 -10.147916666666667 0 1 -5.45 -9.447916666666666 0 19 -0.15 -7.797916666666667 -0.0034396937062245777 28 4.05 7.1 10 40 0 28 -4 7.1 10 40 0 28 4.05 -1.5 10 90 0 28 -4 -1.5 10 90 0 1000 1.5 ", "<level> 20 0 1 1001 0 63 -0.4 9.2 -0.7853981633974483 20 23.90000000000001 5.35 -9.289583333333333 0 20 23.90000000000001 1.7 -9.289583333333333 0 1 -5.7 -9.437499999999998 0 59 -4.7 2.25 0 4 -2.05 -9.595833333333333 -1.5707963267948966 65 2.05 1.15 0.7853981633974483 1000 1.5 ", "<level> 20 0 1 1001 0 30 -2.55 -9.39375 -0.014382403587050674 49 2.45 -9.39375 0 1 -1.0725727393143283 4.020507404766131 -0.013577527428575284 1 -3.0797760813432316 4.048740005505804 -0.01441027168113701 1 -1.0348292803714847 6.01700180252341 -0.011790418836619193 1 -3.036553826852981 6.0463873382327185 -0.01325426909714481 28 -2.95 9.55 20 30 0 58 0 7.5 -0.013909575035983468 28 -5 -4.7 78 36 0 1000 1.5 ", "<level> 20 0 1 1001 0 28 6.45 -4.3 118 45 0 27 10.399999999999975 5 7.05 27 10.399999999999975 2 7.05 60 0.8 3.45 0.3408425097874972 1 5.034954923301274 3.365823659593433 -1.2299538170053086 1 3.1541302764494694 2.698723193472742 0.340842509787579 1 1.273185268922906 2.031573355971321 0.34084880670429074 19 3.623473029625384 1.2789336254803259 0.3408446216073694 48 -5.15 -9.0375 0 48 -1.8 -9.0375 0 20 30.800000000000026 4.2 -9.2375 0 28 6.75 -2.05 118 36 0.3000000000000001 1000 1.5 ", "<level> 20 0 1 1001 0 66 -0.65 -10.85625 -3.141592653589793 69 1.95 -8.40625 -3.141592653589793 70 -2.35 -8.39375 0 67 -6.3062499999999995 -10.7 1.5707963267948966 71 24.50000000000001 -6.25 -8.19375 0 68 5.6 -9.19375 0 28 1.05 3.5 10 10 0 28 -1 3.5 10 10 0 1000 1.5 ", "<level> 20 0 1 1001 0 28 3.05 7.55 10 10 0 28 -0.5 4 30 10 0.7853981633974483 28 -3.95 0.5 10 10 0 70 0.09791666666666667 -9.35 1.5707963267948966 70 3.6479166666666667 -9.35 1.5707963267948966 67 6.35 -8.097916666666666 0 67 6.3 -10.597916666666666 0 20 21.800000000000004 -3.6 -9.347916666666666 0 20 21.800000000000004 -6.25 -10.547916666666667 0 20 21.800000000000004 -6.2 -7.947916666666667 0 1000 1.5 ", "<level> 20 0 1 1001 0 54 4.05 -9.602083333333333 0 67 -3.7 -9.647916666666667 0 20 20 1.6 -10.647916666666667 0.3038878128717479 20 20 -1.2 -10.647916666666667 0.005936942139164452 20 20 0.2 -8.297916666666667 0.22148690067104504 66 -4.4 -7.597916666666666 0 67 -6.3 -10.447916666666666 0 66 4.55 -7.597916666666666 0 67 6.55 -10.397916666666667 0 28 0.2 4.7 40 10 0.7853981633974483 1000 1.5 ", "<level> 20 0 1 1001 0 69 6.2 -8.352083333333333 3.141592653589793 71 27.200000000000017 3.6 -10.297916666666667 0 71 27.200000000000017 0.9 -8.454166666666666 3.141592653589793 20 18.199999999999996 -2 -7.947916666666667 -0.03899416818915279 71 27.200000000000017 -2.05 -10.347916666666666 0 49 -5.8 -9.347916666666666 -0.0021944399469501228 28 0.25 -5.75 170 16 0 28 0.5 5.55 50 50 0.7853981633974483 1000 1.5 ", "<level> 20 0 1 1001 0 52 29.300000000000022 -4.9 -10.052083333333334 0.04202239508570325 70 -0.6520833333333333 -9.35 1.5707963267948966 70 2.652083333333333 -9.4 -1.5707963267948966 47 5.7 -8.997916666666667 0 19 -4.85 -7.447916666666667 0 19 -3.4437156765653674 6.003202281895271 -4.708431268679731 19 3.5531735963076785 6.054153184083524 -1.5704540963142213 28 3.5 9.55 10 10 0 28 -3.5 9.5 10 10 0 1000 1.5 ", "20 0 1 1001 0 55 5.5 -9.297916666666667 -0.0021950199878478225 55 1.1 -9.297916666666667 0 53 -3.2 -9.297916666666667 3.141592653589793 23 -5.8 -9.297916666666667 0 28 -2.95 -2.75 10 76 0 28 3 -2.75 10 76 0 1000 1.5 "]; private static const LEVEL_PACK_STARS_NAME:Array = ["LevelPackAStars", "LevelPackBStars", "LevelPackCStars", "LevelPackDStars", "LevelPackEStars"]; private static const LOCKED_NX:int = 5; private static const LOCKED_NY:int = 10; private static const ACHIEVEMENT_100_DIAMONDS:int = (1 << 9); public static const LEVELS_PER_LEVEL_PACK:int = 12; private static const LEVEL_DATA_STRINGS:Array = ["20 0 1 1001 0 51 0 -0.4 0 3 0.65 -8.545833333333334 0 6 2.4 -10.245833333333335 0 7 4.95 -8.545833333333334 0 1 -5.35 -9.295833333333334 0 3 -2.1 -10.245833333333335 0 51 0 5.6 0 1000 1.5 ", "20 0 1 1001 0 2 5.65 -9.197916666666666 1.5707963267948966 2 2.6 -9.197916666666666 1.5707963267948966 2 4.15 -9.197916666666666 1.5707963267948966 2 7.2 -9.197916666666666 1.5707963267948966 2 1.0969265290360235 -9.19375 1.5731075090817774 51 0 0.55 0 51 2.95 4.55 0 51 -3 6.55 0 1 -6.1 -10.245833333333335 0 1 -4.8 -7.995833333333334 0 1 -3.6 -10.245833333333335 0 1 -2.25 -7.995833333333334 0 1 -1.05 -10.245833333333335 0 1000 1.5 ", "20 0 1 1001 0 20 20 5.25 -9.347916666666666 0 5 1.9 -9.447916666666666 0 2 -1.95 -9.297916666666667 0.7853981633974483 2 -4.7 -9.297916666666667 0.7853981633974483 28 0 9.55 10 70 0 63 0.05 2.55 -8.495332097365505e-14 28 0 -3.75 56 10 1.5707963267948966 1000 1.5 ", "20 0 1 1001 0 30 0 -9.297916666666667 0 30 4.45 -9.297916666666667 0 30 -4.4 -9.297916666666667 0 58 -4.45 2.55 0 58 4.5 5.55 0 1000 1.5 ", "20 0 1 1001 0 21 5.15 -9.347916666666666 0 21 1.85 -9.347916666666666 0 21 -1.5 -9.347916666666666 0 13 -5 -9.347916666666666 1.5707963267948966 63 0.05 1.55 -5.658741796656525e-14 28 0 9.55 10 70 0 1000 1.5 ", "20 0 1 1001 0 2 -0.15 -10.247916666666667 3.141592653589793 3 5.75 -9.297916666666667 1.5707963267948966 20 20 3.25 -10.347916666666666 -0.047360544152481185 19 0.85 -8.397916666666667 0 30 -4.9 -9.297916666666667 1.5707963267948966 51 0 2.5 -0.7960923408731819 28 6.75 9.2 120 10 0.7853981633974483 1000 1.5 ", "20 0 1 1001 0 48 5.4 -10.097916666666666 0 19 3.7 -7.847916666666666 0 2 1.8 -9.297916666666667 0 2 0.8 -10.747916666666667 0 20 20 -1.85 -8.397916666666667 0 20 20 -3.3 -10.447916666666666 0 20 20 -4.65 -8.397916666666667 0 20 20 -6.2 -10.397916666666667 0 58 -0.1 5.55 0 28 0.05 -3.25 20 65 0 1000 1.5 ", "20 0 1 1001 0 20 30.800000000000026 5.4 -9.247916666666667 -0.047360544152481185 3 1.85 -10.297916666666667 0 19 0 -7.897916666666667 0 5 -1.5 -10.297916666666667 6.283185307179586 9 -5.2 -9.397916666666667 1.5707963267948966 28 6.75 9.2 120 10 0.7853981633974483 58 0 2.5 -0.7960923408731819 1000 1.5 ", "20 0 1 1001 0 59 -3 3.55 0 58 4 1 1.5707963267948966 48 -5.15 -9.245833333333335 0 40 4.05 -9.345833333333333 0 39 -1.25 -9.245833333333335 0 1000 1.5 ", "20 0 1 1001 0 7 5.85 -9.447916666666666 -1.5707963267948966 16 -1.3 -9.447916666666666 0 20 29.900000000000023 2.9 -9.447916666666666 0 4 -5.65 -9.447916666666666 0 51 0 8.55 3.0308306725065348e-15 60 0 -0.45 0 1000 1.5 ", "<level> 20 0 1 1001 0 28 0 -3.35 10 64 0 45 0.1 4 0 66 4.1 -9.947916666666666 -6.283185307179586 19 4.2 -7.897916666666667 0 20 20 -5.5 -8.147916666666667 0.028114056000207714 47 -1.7 -9.197916666666666 0 21 -5.5 -9.647916666666667 3.9269908169872414 1000 1.5 ", "20 0 1 1001 0 9 -4.5 -9.297916666666667 0 20 25.400000000000013 -0.65 -9.347916666666666 0 52 25.400000000000013 2.3 -9.347916666666666 0 54 5.3 -9.297916666666667 0 60 0 0.55 0 28 0.05 -5.2 10 25 0 1000 1.5 ", "20 0 1 1001 0 5 -6.4 -9.197916666666666 1.5707963267948966 52 25.400000000000013 -3.6 -9.347916666666666 0.5559523936122809 48 3.95 -10.447916666666666 0 14 5.7 -8.847916666666666 1.5707963267948966 55 0.3 -9.397916666666667 0 28 5.900000000000002 8.749999999999996 10 210 -0.7853981633974483 1000 1.5 ", "20 0 1 1001 0 3 4.35 -10.247916666666667 -3.141592653589793 5 6.3 -10.197916666666666 4.71238898038469 4 2.3 -10.197916666666666 1.5707963267948966 9 -1 -10.197916666666666 6.283185307179586 52 20 -4.4 -9.597916666666666 0.09756714900713048 24 0.95 -7.797916666666667 0.0001655463294645911 52 20 -6.55 -8.197916666666666 -0.1423743444810801 52 20 -6.55 -10.597916666666666 0.06202299123275958 28 0.05 1.55 10 10 -1.5707963267948966 1000 1.5 ", "20 0 1 1001 0 52 20 0.75 -10.552083333333334 0 54 3.2 -10.502083333333333 1.5707963267948966 20 20 -1.55 -10.547916666666667 -0.46070600007879287 20 20 -3.9 -10.497916666666667 0.41378324862927274 20 20 -6.2 -10.497916666666667 -0.21892141947017604 2 6.95 -9.39375 1.5707963267948966 2 5.5 -9.39375 1.5707963267948966 48 1 -8.09375 0 54 3.55 -8.147916666666667 0 48 -6.5 -8.09375 0 48 -1.6 -8.09375 0.003383131135431984 48 -4.05 -8.09375 0 28 3 1.55 10 10 0 28 -3.95 1.55 10 10 0 1000 1.5 ", "20 0 1 1001 0 46 29.00000000000002 -6.2 -10.045833333333334 0.04643986623227917 52 22.40000000000001 -3.9 -8.045833333333334 -1.6180860707543387 52 22.40000000000001 -2.45 -10.245833333333335 -0.019204466355689 6 -0.75 -7.99375 2.356194490192345 7 2.95 -7.9437500000000005 3.9269908169872414 4 0.55 -10.495833333333335 3.141592653589793 5 3.4 -10.095833333333333 2.356194490192345 42 5.7 -9.345833333333333 -0.7853981633974483 28 0.05 9.05 30 80 0 38 -0.00019910080270725124 3.554934827138487 -0.00013037113336073573 1000 1.5 ", "20 0 1 1001 0 54 0.65 -10.047916666666667 1.5707963267948966 54 -2.75 -10.047916666666667 1.5707963267948966 53 5.1 -9.447916666666666 4.71238898038469 24 -1.35 -7.797916666666667 3.141592653589793 27 20 5.55 0 27 20 -5.5 0 1000 1.5 ", "20 0 1 1001 0 54 -5.5 -8.402083333333334 0 42 4.8 -9.197916666666666 6.283185307179586 48 1.4 -10.047916666666667 0.00001771342927323399 52 20 -3.5 -10.352083333333333 0 52 20 -1.15 -9.702083333333333 0 28 -3.5 10.05 20 140 0 58 2.65 -2.05 0 19 -0.8 -7.845833333333333 0.000001919544927750389 1000 1.5 ", "20 0 1 1001 0 27 11.59999999999998 0.6 6.55 60 -1.5 0.35 2.356194490192345 20 20 4.8 -8.291666666666668 0 66 -4.4 -10.945833333333333 0 66 3.85 -10.995833333333335 0 20 16.39999999999999 -0.05 -9.545833333333334 0 2 0.2 -7.795833333333333 -3.141592653589793 52 18.499999999999996 -4.7 -8.454166666666666 0 1000 1.5 ", "20 0 1 1001 0 5 4.2 -8.697916666666666 0 5 5.65 -9.847916666666666 3.141592653589793 67 1 -10.252083333333333 -3.141592653589793 67 -1.35 -10.254166666666666 -3.141592653589793 66 -3 -7.952083333333333 3.141592653589793 67 -3.75 -10.252083333333333 -3.141592653589793 67 -6.15 -10.252083333333333 -3.141592653589793 28 0.55 -3.5 60 220 -1.5707963267948966 1000 1.5 ", "20 0 1 1001 0 28 -4.45 -4 50 20 -1.5707963267948966 28 2.5 -2.5 80 20 1.5707963267948966 22 -5.4 -9.545833333333334 0 1 -3.8 -9.895833333333334 3.9269908169872414 1 -0.8 -9.895833333333334 0.7853981633974483 66 -0.5 -7.554166666666666 3.141592653589793 67 5.85 -8.154166666666667 3.141592653589793 67 4.45 -10.454166666666666 3.141592653589793 67 2.05 -9.504166666666665 -3.141592653589793 1000 1.5 ", "20 0 1 1001 0 20 20 -4 -9.697916666666666 -0.07691857336524455 20 20 -6.35 -8.847916666666666 -0.12390592556688838 20 20 -1.7 -8.947916666666666 3.12820481712691 67 5.55 -10.152083333333334 3.141592653589793 67 3.15 -9.052083333333334 -3.141592653589793 67 0.8 -8.102083333333333 3.141592653589793 24 0.44965892339461183 2.052056836309012 1.5707416646976808 28 0.5 10.55 50 20 1.5707963267948966 28 -5.45 -4 50 20 -1.5707963267948966 1000 1.5 ", "20 0 1 1001 0 20 20 -3.25 -9.247916666666667 -0.12390592556688838 20 20 -0.95 -9.247916666666667 -0.07691857336524455 20 20 -5.55 -9.247916666666667 3.12820481712691 67 5.45 -9.302083333333334 3.141592653589793 52 34.400000000000006 2.15 -9.302083333333334 -3.141592653589793 24 0 1.555000000000001 0 27 13.999999999999986 5.05 4.65 27 13.999999999999986 0 2.75 1000 1.5 ", "20 0 1 1001 0 67 4.35 -9.352083333333333 3.141592653589793 46 29.00000000000002 -3.95 -9.247916666666667 0.07289512742496167 39 0.55 -9.347916666666666 6.283185307179586 20 35.599999999999994 -2.0000000000012856 0.22499999999999892 0.00042810507491889045 28 -2 7.499999999999998 110 10 1.570796326794896 58 2.05 6.05 1.5707963267948966 1000 1.5 ", "20 0 1 1001 0 20 20 -2.15 -8.397916666666667 0 19 1.3920528474467742 2.552801007854915 0.0006209741781949321 20 20 1.8 -7.989583333333334 0 20 20 -0.35 -10.439583333333333 0 28 0.55 9.55 20 130 0 28 0.55 -2.25 20 85 0 28 -5.5 3.5 20 200 0 67 4.7 -9.314583333333335 3.141592653589793 20 20 -4.75 -9.637500000000001 0 1000 1.5 ", "20 0 1 1001 0 67 5.15 -9.552083333333334 3.141592653589793 67 1.8 -9.002083333333333 3.141592653589793 48 -5.2 -9.797916666666667 0 48 -1.9 -8.397916666666667 0 28 4.05 -3.5 10 20 0 28 -3.95 -3.5 10 20 0 28 0.05 -5.5 20 90 1.5707963267948966 28 0.05 8.55 10 110 3.141592653589793 22 0.07590232333998848 3.0549969513849464 2.3561886932696012 1000 1.5 ", "20 0 1 1001 0 54 -3.45 -10.702083333333333 -1.5707963267948966 4 2.1 -8.097916666666666 0 70 -1.65 -8.802083333333334 -3.141592653589793 70 1.85 -10.297916666666667 0 52 36.499999999999986 5.95 -8.602083333333333 -3.141592653589793 46 36.499999999999986 -6.2 -8.597916666666666 -0.3166249696188577 28 -0.4 3.75 40 10 -0.7853981633974483 1000 1.5 ", "20 0 1 1001 0 48 -1.5 -10.347916666666666 -1.5707963267948966 46 23.000000000000007 0.9 -10.347916666666666 0 46 23.000000000000007 3.5 -10.297916666666667 0 13 -4.6 -10.047916666666667 -1.5707963267948966 67 1.25 -7.947916666666667 0 28 -3.75 -3.8 30 10 0.3853981633974478 46 23.000000000000007 6.2 -10.285416666666666 0.18090392193046928 27 10.399999999999975 0 7.050000000000001 24 1.6099750902298775 4.587512647484667 -0.6395223499478451 27 10.399999999999975 6.05 2.55 27 10.399999999999975 6.05 4.55 67 6.45 -7.895833333333334 -6.283185307179586 67 3.8 -7.895833333333334 6.283185307179586 4 -6.55 -10.045833333333334 -4.71238898038469 19 -4.5 -7.495833333333334 0 1000 1.5 ", "20 0 1 1001 0 46 23.300000000000008 -5.85 -8.097916666666666 0 40 -5.1 -10.595833333333333 -3.141592653589793 52 28.40000000000002 5.95 -10.102083333333333 0 71 20 2.55 -9.997916666666667 0 71 20 -0.45 -9.997916666666667 0 66 0.55 -7.452083333333333 3.141592653589793 65 0.9 2.05 2.356194490192345 28 -7.55 0.8 10 146 0 1000 1.5 ", "20 0 1 1001 0 67 6.5 -9.997916666666667 0 29 5.549999999999999 -9.097916666666666 1.5707963267948966 71 26.900000000000016 -1.8 -8.797916666666667 0 52 32.300000000000026 1.65 -8.902083333333334 0 29 -5.5 -9.097916666666666 0 67 -6.5 -9.997916666666667 0 63 4.45 3.5 -2.644760297290284e-13 63 -4.35 3.5 -3.424301917670311e-13 1000 1.5 ", "20 0 1 1001 0 61 -1.05 -9.247916666666667 1.5707963267948966 10 -0.3685886145915176 5.8895410861743205 -5.381813606762017 27 10.099999999999977 -0.15 4.55 27 10.099999999999977 -0.85 6.9 69 2.1 -9.447916666666666 0 46 23.90000000000001 -3.95 -8.047916666666667 -0.015542610805416789 46 23.90000000000001 -4 -10.597916666666666 -0.1043468840833722 46 23.90000000000001 -6.5 -8.047916666666667 -0.035216515033081076 46 23.90000000000001 -6.55 -10.597916666666666 -0.023123328969250817 68 5.75 -9.402083333333334 3.141592653589793 1000 1.5 ", "20 0 1 1001 0 54 6.55 -8.347916666666666 -1.558436958840538 13 3.55 -8.797916666666667 0 52 28.10000000000002 2.1 -10.197916666666666 -0.7853981633974483 48 6.6 -10.847916666666666 -3.135506053363339 65 -0.75 8 -3.141592653589793 55 -1.55 -9.597916666666666 0 55 -5.7 -9.597916666666666 0 28 0.9 -5.15 10 30 0.1 1000 1.5 ", "20 0 1 1001 0 52 23.000000000000007 5.1 -8.247916666666667 0.41574741187280906 4 6.75 -9.197916666666666 -1.5707963267948966 13 3.75 -9.197916666666666 -3.141592653589793 42 -2.6 -8.697916666666666 -1.5707963267948966 47 0.55 -9.647916666666667 -3.141592653589793 19 -4.7 -11.197916666666666 -0.006906320840926808 52 35.599999999999994 -5.75 -8.647916666666667 0.36037946422506845 27 11.29999999999998 0.05 4.6 1000 1.5 ", "20 0 1 1001 0 55 2.3 -9.847916666666666 -3.141592653589793 54 -2.05 -8.047916666666667 0 54 -2.05 -10.747916666666667 0 54 -4.25 -10.747916666666667 0 54 -4.25 -8.047916666666667 0 19 2.35 -7.247916666666667 0 20 22.400000000000006 -6.65 -8.047916666666667 0 20 22.400000000000006 6.7 -8.197916666666666 1.5707963267948966 20 22.400000000000006 6.65 -10.697916666666666 0 20 22.400000000000006 -6.65 -10.647916666666667 0 28 -3.95 0.5 10 10 0 28 4.05 0.5 10 10 0 27 9.799999999999976 -4 -0.05 27 9.799999999999976 4.05 -0.05 1000 1.5 ", "20 0 1 1001 0 46 20 0.05 -7.895833333333334 -0.007014894273381378 48 0 -10.395833333333334 0 19 -4.2 -7.695833333333334 0 67 -5.9437500000000005 -10.05 4.71238898038469 70 6.395833333333334 -9.25 -4.71238898038469 70 2.9541666666666666 -9.25 4.71238898038469 51 0 -2.5 1.5707963267945744 51 -5 2.5 0 51 5 2.5 0 20 20 -3.05 -9.995833333333335 0 1000 1.5", "20 0 1 1001 0 52 31.400000000000027 -9.528053868502946 -0.1916469781826606 -1.8793013518470951 19 4.4 -8.497916666666667 -3.141592653589793 28 -3.6 -2.8 160 10 -0.09000000000000002 24 1.7 -10.88125 0 28 -3.2 8.9 120 10 0 21 -0.8499999999999999 -7.195833333333333 -2.356194490192345 1000 1.5 ", "20 0 1 1001 0 52 28.10000000000002 3.2 -10.147916666666667 0 52 28.10000000000002 0.85 -8.147916666666667 0 52 28.10000000000002 -1.35 -10.447916666666666 0 48 5.8 -8.197916666666666 -0.7853981633974483 21 6.15 -9.947916666666666 -1.5707963267948966 52 28.10000000000002 -3.2 -8.097916666666666 0 48 -6.1 -10.397916666666667 3.9269908169872414 21 -6.05 -8.397916666666667 -4.71238898038469 28 -3.95 8.55 10 10 3.141592653589793 28 4.05 8.55 10 10 0 24 1.982142992658551 2.260785433732526 -1.8252430375611042 24 -1.8916808164466565 2.2578045169155754 -4.475556619262756 28 -6.3 -5.15 1 1 0 28 -6.05 -4.4 1 1 0 27 9.499999999999975 6 2.45 27 9.499999999999975 -6 2.5 27 9.499999999999975 -6 -4.45 27 9.499999999999975 6 -4.5 1000 1.5 ", "20 0 1 1001 0 20 23.300000000000008 6.6 -7.897916666666667 0 20 23.300000000000008 6.55 -10.497916666666667 0 20 23.300000000000008 3.8 -10.547916666666667 0 54 1.1 -10.597916666666666 -1.5707963267948966 15 1.75 -7.945833333333335 0 53 -2.8 -9.647916666666667 -3.141592653589793 61 -6.25 -9.197916666666666 -1.5707963267948966 28 -2 9.55 10 30 0 28 7.25 -4.5 10 15 1.5707963267948966 20 28.10000000000002 -1.9 6.650000000000001 -2.7624605278669264e-16 65 -2.4 0 0.7853981633974483 1000 1.5 ", "20 0 1 1001 0 18 5.05 -9.197916666666666 -3.141592653589793 38 -0.2 -8.547916666666667 -3.141592653589793 31 0.85 -10.497916666666667 -3.141592653589793 52 37.699999999999974 -5.55 -9.197916666666666 -0.004133907788980908 28 0.1 1.8 40 40 -0.7853981633974483 1000 1.5 ", "20 0 1 1001 0 28 7.4 6.75 59 10 0.7853981633974483 28 -7.45 6.8 59 10 -0.7853981633974483 28 -5.5 3.05 40 10 1.5707963267948966 28 5.4 3.05 40 10 -1.5707963267948966 47 -6.05 -9.945833333333333 0 52 23.000000000000007 -3.7 -10.745833333333335 1.1875286395525304 52 23.000000000000007 -1.9 -8.945833333333333 4.705522239333727 52 23.000000000000007 0.1 -10.695833333333333 -1.0818693146333074 42 6.15 -8.745833333333334 0 42 2.9 -8.695833333333333 0 19 4.85 -11.045833333333334 -3.141592653589793 1000 1.5 ", "20 0 1 1001 0 1 1.4388684289007192 -3.0097577869467593 -0.003744068044710128 1 -6.472136363520235 -2.9801391794374212 -0.0037438827845622507 65 -2.5 -1.5 -0.003743945587369362 10 -4.6 -10.235416666666667 -3.141592653589793 21 -3.1 -9.135416666666666 0.7853981633974483 20 20 2.25 -8.035416666666668 0 20 20 2.1 -10.585416666666664 0 20 20 -0.05 -10.535416666666666 0 54 4.4 -10.49375 0 20 20 -0.05 -8.085416666666667 0 22 -5.7 -7.085416666666667 2.356194490192345 39 6.25 -9.235416666666667 -1.5707963267948966 58 1 5.5 0.7853981633974483 28 7.05 4.55 10 10 0 1000 1.5 ", "20 0 1 1001 0 69 4.9 -9.097916666666666 0 5 0.1 -9.097916666666666 -1.5707963267948966 52 26.300000000000015 -4.6 -9.197916666666666 -0.18838993747301291 28 0.45 2.85 30 10 -0.7853981633974483 1000 1.5 ", "20 0 1 1001 0 28 -7 2.5 10 10 0 20 26.300000000000015 6.45 -10.495833333333335 0.7853981633974483 20 24.20000000000001 -0.5 -10.545833333333334 0 20 24.20000000000001 -6.55 -10.545833333333334 -0.7853981633974483 70 3.3 -8.695833333333333 0 67 -5.75 -7.945833333333334 -6.283185307179586 3 -2.45 -8.745833333333334 1.5707963267948966 65 2.5 2.5 0 1000 1.5 ", "20 0 1 1001 0 52 18.199999999999996 -1.95 -8.552083333333334 0 52 29.00000000000002 -5.3 -8.452083333333333 4.71238898038469 55 2.35 -9.202083333333333 1.5707963267948966 19 -3.85 -10.64375 -6.283185307179586 48 6.1 -8.24375 0 28 2.55 9.55 20 50 -0.07 28 -2.8 -4.1 10 49 -0.07 1000 1.5 ", "20 0 1 1001 0 70 4.7 -8.39375 0 70 0.9 -9.69375 0 52 18.199999999999996 -1.9 -8.002083333333333 1.315981201579087 52 25.400000000000013 -3.25 -10.352083333333333 -0.003787196794072211 66 4.7 -11.093749999999998 0 52 19.1 -6.75 -9.652083333333334 -0.3884237162315903 52 18.199999999999996 -5 -7.902083333333334 0.0798173494186739 28 0 1.5 10 10 0.09 1000 1.5 ", "20 0 1 1001 0 46 28.40000000000002 -1.1 -8.043750000000001 -0.7900124626918091 70 -4.045833333333333 -9.247916666666669 -1.5707963267948966 67 -6.8 -7.74375 0 20 25.100000000000012 -6.7 -10.543750000000001 -0.8492423142354396 52 33.500000000000014 1.55 -10.152083333333334 -2.2115012497457123 2 5.65 -7.09375 0 55 5.65 -9.752083333333335 0 28 0.35 3.15 60 10 -0.7853981633974483 1000 1.5 ", "20 0 1 1001 0 67 1.2 -8.702083333333333 -3.141592653589793 67 -1.145833333333333 -8.747916666666667 -1.5707963267948966 67 -1.5 -10.793750000000001 0 67 1.5458333333333332 -10.747916666666669 1.5707963267948966 53 4.5 -9.152083333333334 3.9269908169872414 22 6.4 -10.293750000000001 3.141592653589793 20 20 6.9 -7.79375 0 66 0.25 -7.143750000000001 6.283185307179586 53 -4.5 -9.152083333333334 -3.9269908169872414 20 20 -6.9 -7.79375 0.7853981633974483 21 -6.4 -10.293750000000001 -3.141592653589793 28 7.5 -1.5 20 100 0 28 -7.4 -1.5 20 100 0 1000 1.5 ", "20 0 1 1001 0 20 26.900000000000016 -0.05 -9.147916666666667 0 71 25.100000000000012 -3.497916666666667 -8.15 -1.5707963267948966 67 3.1479166666666667 -10.6 1.5707963267948966 67 -3.45 -10.597916666666666 0 65 1.35 1.45 -0.7853981633974483 28 -9.05 -0.65 39 120 0.34000000000000014 20 21.500000000000004 -6.5 -9.895833333333334 0 20 26.900000000000016 6.4 -9.595833333333333 0 67 3.25 -8.204166666666666 3.141592653589793 1000 1.5 ", "20 0 1 1001 0 11 -1.05 -8.447916666666666 -3.141592653589793 71 20 2.35 -10.747916666666667 0 67 -1.1 -10.697916666666666 -6.283185307179586 5 6.75 -9.497916666666667 -1.5707963267948966 20 20 3.9 -8.997916666666667 -0.05409560943683624 20 20 5.45 -10.847916666666666 0.06830758083213317 66 4.9 -7.297916666666667 -6.283185307179586 28 0 2.55 10 10 0 66 -4.85 -7.195833333333334 0 68 -5.85 -9.845833333333333 0 1000 1.5 ", "20 0 0 1001 0 28 -0.1 10.15 90 44 0 52 26.300000000000015 -6.25 -10.404166666666667 -0.7853981633974483 52 20.9 -6.3 -7.804166666666666 0 31 4.85 -10.841666666666665 0 69 6.35 -8.254166666666666 -3.141592653589793 66 -1.95 -7.354166666666666 -3.141592653589793 52 23.300000000000008 3.25 -8.154166666666667 -2.356194490192345 67 -3.85 -9 -3.141592653589793 48 0.65 -8.991666666666667 0 67 -1.7 -10.604166666666666 -3.141592653589793 1000 1.5 ", "20 0 1 1001 0 66 3.9 -10.397916666666667 0 66 -4.45 -10.497916666666667 0 20 24.80000000000001 0.25 -8.197916666666666 -0.7853981633974483 7 3.55 -8.197916666666666 -6.283185307179586 20 20.6 6.45 -8.097916666666666 0 67 -2.85 -8.052083333333334 3.141592653589793 67 -6.5 -8.052083333333334 3.141592653589793 28 0.05 4.05 10 210 0 1000 1.5 ", "20 0 1 1001 0 46 22.40000000000001 -6.3 -10.543750000000001 0.01055035010524183 46 22.40000000000001 -6.3 -8.043750000000001 -0.0017895356667593574 62 3.95 -1.1 -2.356194490192345 29 -2.65 -9.293750000000001 -3.141592653589793 67 1.1 -10.452083333333333 3.141592653589793 67 3.6 -10.452083333333333 -3.141592653589793 64 0.2 -7.79375 -3.141592653589793 64 4.9 -7.79375 0 52 27.80000000000002 6.4 -10.402083333333334 -1.9488383546240673 27 24.80000000000001 -4.1 4.4 1000 1.5 ", "20 0 1 1001 0 71 29.300000000000022 -2.6 -8.497916666666667 0 71 29.300000000000022 -5.95 -8.447916666666666 0 28 9.15 7.799999999999999 40 100 -0.7853981633974483 28 -8.15 0.3 40 55 -0.7853981633974483 52 21.500000000000004 6.7 -10.7 1.5462868723682055 66 -4.7 -11.245833333333335 0 66 1.65 -11.245833333333335 0 19 2.35 -10.045833333333334 0.001831760560483289 13 1.4 -7.395833333333334 -2.356194490192345 46 26.600000000000016 5.7 -8.095833333333333 3.0608044561865966 1000 1.5 ", "20 0 1 1001 0 5 -5.4 -8.69375 -6.283185307179586 20 49.29999999999989 2.26451309817266 -1.5787448874887844 -0.7686638122926706 52 45.699999999999925 5.4 -9.352083333333331 -0.2329116796563212 27 10.900000000000004 1.4 1.3 27 10.900000000000004 5.05 -0.45 27 10.900000000000004 -5.95 9.55 20 21.400000000000027 -3.95 -10.441666666666666 0 20 23.20000000000003 -1.55 -8.441666666666666 0 20 25.000000000000036 1.05 -10.341666666666665 0 27 10.900000000000004 0.85 9.55 1000 1.5 ", "20 0 1 1001 0 52 25.700000000000014 6.55 -8.552083333333334 0 71 25.700000000000014 3.65 -8.547916666666667 0 12 0 -8.747916666666667 0 52 25.700000000000014 -6.55 -8.602083333333333 0 71 25.700000000000014 -3.7 -8.597916666666666 0 58 -2.9 -0.2 -0.7853981633974483 58 2.8 5.5 -0.7853981633974483 66 -4.15 -10.889583333333334 0 66 3.45 -10.839583333333335 0 1000 1.5 ", "20 0 1 1001 0 20 34.400000000000006 -6.05 -9.447916666666666 -0.7791092271408065 54 -2.4 -9.547916666666667 -0.7853981633974483 20 23.90000000000001 6.5 -9.697916666666666 -0.01599946420864636 54 3.3 -9.697916666666666 -3.9269908169872414 54 0.45 -10.697916666666666 1.570796326794897 58 0.4 3.2 -3.141592653589793 21 0.49999999999999994 -7.147916666666667 -2.356194490192345 28 0.2 -6.049999999999999 230 10 0 1000 1.5 ", "20 0 1 1001 0 7 6.45 -8.197916666666666 0 6 6.35 -10.597916666666666 0 46 44.899999999999906 2.6 -9.347916666666666 0 69 -1.9450450326719195 5.500149178250832 -1.5708864042692154 70 0.000012935000553081017 7.545818999705925 3.1434071298651065 69 2.0496063607729598 5.504529287068834 1.5717843088322372 69 -1.9481991211207152 2.4992904300398937 -1.5688472474750292 69 2.0493365441869256 2.509518031995917 1.5717989310586329 28 0.05 4.05 10 40 0 70 -0.0031001639749341533 0.5052326136274972 0.0028700803311648058 71 23.60000000000001 -6.3 -8.045833333333334 0 71 23.60000000000001 -6.3 -10.645833333333334 0 67 -3.45 -10.695833333333333 0 67 -3.45 -7.995833333333334 0 1 -0.85 -10.695833333333333 0 1 -0.8 -8.045833333333334 0 1000 1.5 ", "20 0 1 1001 0 67 -2.15 -8.097916666666666 6.283185307179586 7 -2.3 -10.597916666666666 3.9269908169872414 5 0.2 -9.947916666666666 4.71238898038469 52 20 -4.45 -9.252083333333333 0.0032324904685555756 20 20 -6.45 -10.447916666666666 -0.046399389089894334 20 20 -6.5 -8.097916666666666 0.6604680898983304 66 4.6 -9.352083333333333 -3.141592653589793 66 4.6 -8.104166666666666 -3.141592653589793 66 4.6 -10.602083333333333 3.141592653589793 28 -6.449999999999999 4 40 210 0 28 6.500000000000001 4 40 210 0 1000 1.5 ", "20 0 1 1001 0 11 -3.7 -8.197916666666666 3.141592653589793 46 27.200000000000017 1.7 -8.147916666666667 0.016414679617959706 11 1.8 -10.347916666666666 0.011398885837290791 46 30.500000000000025 6.2 -10.145833333333334 0.6820997437318196 5 5.65 -7.79375 -6.283185307179586 11 -5.35 -10.397916666666667 0 28 0.15 7.5 40 10 0 2 -1.6591835567022242 6.5042440850043866 -0.0006302819476031457 2 0.2730132630471942 5.507614529423526 0.0015963882167527512 2 -1.418654949459833 4.5096089060696976 0.0012975529504341045 2 0.39131183393701974 3.5167541422570827 0.0015780706834777791 2 -1.3809487552180362 2.5186326323836656 0.00028319314391054407 2 0.3642066129304803 1.5240219424746837 0.0005167546139761241 2 -1.3821813189391183 0.5264775498105685 0.0012601064540281716 2 0.42316919856495255 -0.4666826621265637 0.003464395374349126 1000 1.5 ", "20 0 1 1001 0 46 22.999999999999993 5 -9.297916666666667 0 46 22.999999999999993 2.6 -10.247916666666667 0 29 5.5 -8.997916666666667 0 29 -5.45 -8.997916666666667 -4.71238898038469 46 22.999999999999993 -4.7 -9.747916666666667 0 68 -0.9 -9.202083333333333 3.141592653589793 27 88.09999999999948 8.9 3.35 27 88.09999999999948 -8.900000000000002 3.4000000000000004 1000 1.5 "]; private static const LEVEL_DATA_LUT_EASY_NEW:Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; public static var _classMainMenuPerfectBalanceShadow:Class = Main__classMainMenuPerfectBalanceShadow; public static var _classLPSMedalB:Class = Main__classLPSMedalB; public static var _classLPSMedalD:Class = Main__classLPSMedalD; public static var _classLPSMedalC:Class = Main__classLPSMedalC; public static var _classLPSMedalE:Class = Main__classLPSMedalE; public static var _classLPSMedalA:Class = Main__classLPSMedalA; public static var _bitmapLetter:Bitmap = null; public static var _playBadPickup:Boolean = false; public static var _classHelp1:Class = Main__classHelp1; public static var _classHelp2:Class = Main__classHelp2; public static var _classHelp3:Class = Main__classHelp3; public static var _classHelp4:Class = Main__classHelp4; public static var _classHelp5:Class = Main__classHelp5; public static var _classHelp6:Class = Main__classHelp6; public static var _bonusTimer:int = -1000000; public static var _bitmapSkippedArrowToLeft:Bitmap = null; public static var sm_editorPlayMode:Boolean = false; public static var _classHelpDirectedGravity:Class = Main__classHelpDirectedGravity; public static var _bitmapEditorHelpDimensions:Bitmap = null; public static var _playHitHeavyVolume:Number = 0; public static var sm_levelPack:int = 0; public static var _nice:Boolean = false; private static var sm_grandTotalBest:int = 0; private static var sm_scoresTotalBest:Array = new Array(LEVEL_PACKS_MAX); public static var _classPlayfieldRight:Class = Main__classPlayfieldRight; public static var _bitmapMainMenuPerfectBalanceShadow:Bitmap = null; public static var _classPlayfieldTop:Class = Main__classPlayfieldTop; public static var _bitmapPlus50Points:Bitmap = null; public static var _textFieldLevelNumberForDataCopyBig:TextField = null; public static var _fontClass1:Class = Main__fontClass1; public static var _classResetProgress:Class = Main__classResetProgress; private static var sm_scoresBest:Array = new Array(100); public static var _classGrid1:Class = Main__classGrid1; public static var _classGrid2:Class = Main__classGrid2; public static var _classGrid3:Class = Main__classGrid3; public static var sm_levelSkips:int = 0; public static var _help6Done:Boolean = false; public static var _textFieldLevelNumber:TextField = null; public static var _playAllBonusBalls:Boolean = false; public static var _classSplashScreen:Class = Main__classSplashScreen; public static var _plus50Points:Boolean = false; public static var _classPlus200Points:Class = Main__classPlus200Points; public static var _bitmapWait:Bitmap = null; public static var _filterDropShadow:DropShadowFilter = new DropShadowFilter(4, (45 * 3), 0, 0.4, 6, 6); public static var _classButtonBGImage2:Class = Main__classButtonBGImage2; public static var _classButtonBGImage3:Class = Main__classButtonBGImage3; public static var _classButtonBGImage4:Class = Main__classButtonBGImage4; public static var _classButtonBGImage5:Class = Main__classButtonBGImage5; public static var _classButtonBGImage6:Class = Main__classButtonBGImage6; public static var _classButtonBGImage1:Class = Main__classButtonBGImage1; public static var _bitmapResetProgress:Bitmap = null; private static var sm_achievements:int = 0; public static var _classLevelIO:Class = Main__classLevelIO; private static var sm_grades:Array = new Array(LEVEL_PACKS_MAX); public static var _classQualityHigh:Class = Main__classQualityHigh; public static var _classGradeA:Class = Main__classGradeA; public static var _classGradeB:Class = Main__classGradeB; public static var _classGradeC:Class = Main__classGradeC; public static var _classGradeD:Class = Main__classGradeD; public static var _classGradeE:Class = Main__classGradeE; public static var _bitmapPlus200Points:Bitmap = null; public static var _help5Done:Boolean = false; private static var sm_levelPackLocked:Array = new Array(LEVEL_PACKS_MAX); public static var _classAudioOff:Class = Main__classAudioOff; public static var _classQualityMedium:Class = Main__classQualityMedium; public static var _failed:Boolean = false; public static var _textFieldBest:TextField = null; public static var _bitmapPlayfieldRight:Bitmap = null; public static var _mouseY:int; public static var _mouseX:int; public static var _bitmapLevelIO:Bitmap = null; public static var m_input:Input = null; public static var _iceMode:Boolean = false; public static var _classSkippedArrowToLeft:Class = Main__classSkippedArrowToLeft; public static var _textFieldTotal:TextField = null; public static var _paradiseMode:Boolean = true; public static var _mouseClicked:Boolean = false; public static var _classAudioOn:Class = Main__classAudioOn; private static var sm_scores:Array = new Array(100); public static var _help4Done:Boolean = false; public static var _playHitVolume:Number = 0; public static var _classCursorHelper:Class = Main__classCursorHelper; public static var _bitmapStar:Bitmap = null; public static var _titleBitmapAudioOff:Bitmap = null; private static var sm_sentMax:int = 0; public static var _classAutoHideOff:Class = Main__classAutoHideOff; private static var sm_diamondsTotalBest:int = 0; public static var _playGrabShape:Boolean = false; public static var _bitmapEditorKeys:Bitmap = null; private static var sm_diamonds:Array = new Array(100); private static var sm_diamondsBest:Array = new Array(100); public static var _bitmapButtonBGImage1:Bitmap = null; public static var _bitmapButtonBGImage2:Bitmap = null; public static var _bitmapButtonBGImage3:Bitmap = null; public static var _bitmapButtonBGImage4:Bitmap = null; public static var _bitmapButtonBGImage5:Bitmap = null; public static var _bitmapButtonBGImage6:Bitmap = null; public static var _textFieldDiamonds:TextField = null; public static var _classPlus50Points:Class = Main__classPlus50Points; public static var _classLetterA:Class = Main__classLetterA; public static var _classLetterB:Class = Main__classLetterB; public static var _classLetterC:Class = Main__classLetterC; public static var _bitmapChooseAShape:Bitmap = null; public static var _playHitHeavy:int = -1; public static var _bitmapGrade:Bitmap = null; public static var _classLetterE:Class = Main__classLetterE; public static var _classSkippedArrowToRight:Class = Main__classSkippedArrowToRight; public static var _helpHeliumDone:Boolean = false; public static var _help3Done:Boolean = false; public static var _titleBitmapQualityHigh:Bitmap = null; public static var _bitmapSkippedArrowToRight:Bitmap = null; public static var _playMiddleBalance:Boolean = false; public static var _classLetterD:Class = Main__classLetterD; public static var _playReturnShape:Boolean = false; public static var _bitmapClearLevel:Bitmap = null; private static var sm_skipped:Array = new Array(LEVEL_PACKS_MAX); public static var _titleBitmapQualityMedium:Bitmap = null; public static var _classPlayfieldBottom:Class = Main__classPlayfieldBottom; public static var _classEditorKeys:Class = Main__classEditorKeys; public static var _bitmapButtonGrid0:Bitmap = null; public static var _classStar:Class = Main__classStar; public static var _bitmapButtonGrid2:Bitmap = null; public static var _bitmapButtonGrid3:Bitmap = null; public static var m_spriteParticleManager:SpriteParticleManager = new SpriteParticleManager(); public static var _textFieldBonus:TextField = null; public static var _bitmapButtonGrid1:Bitmap = null; public static var m_particleManager:ParticleManager = new ParticleManager(); public static var _playHit:int = -1; public static var _bitmapAllDone:Bitmap = null; public static var _classClearLevel:Class = Main__classClearLevel; public static var _bitmapPlayfieldTop:Bitmap = null; public static var _textFieldLevelNumberForDataCopySmall:TextField = null; public static var _bitmapPlayfieldRightSource:Bitmap = null; public static var _classAutoHideOn:Class = Main__classAutoHideOn; public static var _bitmapHelp:Bitmap = null; public static var _help2Done:Boolean = false; public static var _classPerfectBalanceJapanese:Class = Main__classPerfectBalanceJapanese; public static var _playHitDiamond:int = -1; public static var _bitmapParticleLayer:Bitmap = new Bitmap(new BitmapData(SCREEN_DX, SCREEN_DY, true, 0), "auto", true); public static var _classMainMenuPerfectBalance:Class = Main__classMainMenuPerfectBalance; public static var _classPlayfieldRightEditorEdit:Class = Main__classPlayfieldRightEditorEdit; public static var _bitmapPerfectBalanceJapanese:Bitmap = null; public static var _playAddBonusBall:Boolean = false; public static var _textFieldLPSLevelSkips:TextField = null; public static var _classEditorHelpDimensions:Class = Main__classEditorHelpDimensions; public static var _bitmapMainMenuPerfectBalance:Bitmap = null; public static var _textFieldLPSTotalScore:TextField = null; public static var _mouseClickedX:int; public static var _mouseClickedY:int; public static var _plus200Points:Boolean = false; public static var _timerOn:Boolean = false; public static var m_sprite:Sprite = null; public static var _bitmapEditorHelpRadius:Bitmap = null; public static var _bitmapTextureA:Bitmap = null; public static var _playHitDiamondVolume:Number = 0; public static var m_currId:int = 0; public static var _textFieldLPSDiamonds:TextField = null; public static var _infernoMode:Boolean = true; public static var _titleBitmapAutoHideOff:Bitmap = null; public static var _classEditorHelpRadius:Class = Main__classEditorHelpRadius; public static var sm_editorBlockID:int = 1; public static var _bitmapSplashScreen:Bitmap = null; public static var _classQualityLow:Class = Main__classQualityLow; public static var m_this:Main = null; public static var _help1Done:Boolean = false; public static var _bitmapEditorHelp:Bitmap = null; public static var _helpDirectedGravityDone:Boolean = false; public static var _classHelpHelium:Class = Main__classHelpHelium; public static var _titleBitmapAudioOn:Bitmap = null; public static var _mouseWheel:int = 0; public static var _titleBitmapAutoHideOn:Bitmap = null; private static var sm_openLevels:Array = new Array(LEVEL_PACKS_MAX); public static var _classButtonGrid0:Class = Main__classButtonGrid0; public static var _classButtonGrid1:Class = Main__classButtonGrid1; public static var _classButtonGrid2:Class = Main__classButtonGrid2; public static var _classButtonGrid3:Class = Main__classButtonGrid3; public static var _textFieldLevelSkipsForCopy:TextField = null; public static var _playRotate:int = -1; public static var _classPlayfieldLeft:Class = Main__classPlayfieldLeft; public static var m_time:int; public static var _classEditorHelp:Class = Main__classEditorHelp; public static var _filterOutline:GlowFilter = new GlowFilter(0, 1, 5, 5, 10); public static var sm_editorMode:Boolean = false; public static var sm_levelPackUnlockTestTimer:int = 60; public static var _bitmapPlayfieldLeft:Bitmap = null; public static var _classLockedC:Class = Main__classLockedC; public static var _classLockedD:Class = Main__classLockedD; public static var _classLockedE:Class = Main__classLockedE; public static var _classLockedB:Class = Main__classLockedB; public static var _classChooseAShape:Class = Main__classChooseAShape; public static var sm_bitmapLevelPackLocked:Array = new Array(5); private static var _sfx:Boolean = true; public static var sm_autoHide:Boolean = false; public static var _titleBitmapQualityLow:Bitmap = null; public static var _bitmapPlayfieldBottom:Bitmap = null; public static var m_fpsCounter:FpsCounter = new FpsCounter(); public static var _playLooseLife:Boolean = false; public static var _classPlayfieldRightEditorPlay:Class = Main__classPlayfieldRightEditorPlay; public static var _bitmapGrid1:Bitmap = null; public static var _bitmapGrid2:Bitmap = null; public static var _bitmapGrid3:Bitmap = null; public function Main(){ var _local1:int; _audioBank = null; _classMainMenuBG = Main__classMainMenuBG; _bitmapMainMenuBG = null; _classMainMenuFG = Main__classMainMenuFG; _bitmapMainMenuFG = null; _classLevelPackSelection = Main__classLevelPackSelection; _bitmapLevelPackSelection = null; _classSubmitScreen = Main__classSubmitScreen; _bitmapSubmitScreen = null; _classGet20Screen = Main__classGet20Screen; _bitmapGet20Screen = null; _bitmapCursorHelper = null; _classRelax = Main__classRelax; _classPerfectBalance = Main__classPerfectBalance; _classPerfectBalanceAllDone = Main__classPerfectBalanceAllDone; _classAlmostPerfectBalance = Main__classAlmostPerfectBalance; _classPerfectBalanceEditor = Main__classPerfectBalanceEditor; _classPerfectBalanceAllDoneEditor = Main__classPerfectBalanceAllDoneEditor; _classAlmostPerfectBalanceEditor = Main__classAlmostPerfectBalanceEditor; _classWait = Main__classWait; _classButtonLocked = Main__classButtonLocked; _bitmapButtonLocked = null; _classButtonUnlocked = Main__classButtonUnlocked; _bitmapButtonUnlocked = null; _classButtonUnlockedBig = Main__classButtonUnlockedBig; _bitmapButtonUnlockedBig = null; _classSealBack = Main__classSealBack; _bitmapSealBack = null; _classSealFront = Main__classSealFront; _bitmapSealFront = null; _classLevelSkip = Main__classLevelSkip; _bitmapLevelSkip = null; _classBackground02 = Main__classBackground02; _classBackground01 = Main__classBackground01; _classBackground03 = Main__classBackground03; _classBackground04 = Main__classBackground04; _classBackground05 = Main__classBackground05; _classBackground06 = Main__classBackground06; _bitmapBackgroundFlash = null; _classTheEnd = Main__classTheEnd; _bitmapTheEnd = null; _class3DLogo = Main__class3DLogo; _classInstructionsGame = Main__classInstructionsGame; _classInstructionsShapes = Main__classInstructionsShapes; _bitmapInstructions = null; _instructionsGame = true; _bitmapAchievements = null; _classCreditsScreen = Main__classCreditsScreen; _bitmapCreditsScreen = null; _bitmapCreditsScreenBackground = null; _classTextureA = Main__classTextureA; _black = null; _textFieldLPSTotalScores = new Array(LEVEL_PACKS_MAX); _textFieldLPSTotalScoresBest = new Array(LEVEL_PACKS_MAX); _textFieldLPSDiamondsBest = null; _textFieldLPSGrandTotalBest = null; _levelButtonCoordinates = new Array((LEVELS_PER_LEVEL_PACK * 2)); _plus50PointsTimer = 0; _plus50PointsTotal = 0; _plus200PointsTimer = 0; m_itemBought = false; _showHelp = true; _firstRun = true; _first = true; _bitmapAchievementItem = null; _achievementTimer = 0; _movieClipGamesFreeButton = null; _grid = 0; _editorBGImage = 0; _bitmapVertexCloud = null; _ttVertexCloud = null; _rotate = 0; _matrix = new Array(16); _theEndParticles = 0; m_editorHelpShown = false; sm_lockedSubSpritesN = 0; sm_lockedSubSprites = new Array(((LOCKED_NX * LOCKED_NY) * LEVEL_PACKS_MAX)); sm_lockedSubSpritesSpeedX = new Array(((LOCKED_NX * LOCKED_NY) * LEVEL_PACKS_MAX)); sm_lockedSubSpritesSpeedY = new Array(((LOCKED_NX * LOCKED_NY) * LEVEL_PACKS_MAX)); _lastSubmitScore = -1; _submitMode = 1; _submitScore = 0; _submitNameTextField = null; _viewScoresName = new Array(20); _viewScoresScore = new Array(20); _helpCenterX = 0; _helpCenterY = 0; _levelBackupString = " <level> 20 0 0 1001 0 1000 1.5"; _levelBackupStringClear = " <level> 20 0 0 1001 0 1000 1.5"; _levelDataTextField = null; _levelIOClear = false; _levelIOUse = false; _levelIOCancel = false; _levelIOShare = false; _levelString = null; _splashRunning = true; _splashScreenMode = 0; _splashScreenTimer = 0; _stageQuality = 0; GRADE_S_LIMITS = [19000, 17000, 19000, 18000, 17000]; _autoSubmitScore = 0; _autoSubmitDiamonds = 0; _autoSubmitStars = [0, 0, 0, 0, 0]; _rotateSeal = 0; _playHitDelay = 5; _playHitDiamondDelay = 5; _playHitHeavyDelay = 5; _infernoSound = 100; _oldScore = 0; _scoreSent = true; m_settingsSave = false; m_settingsLoad = false; sm_starsAdded = new Array(LEVEL_PACKS_MAX); sm_starsAddTimer = 60; m_currTest = null; super(); _local1 = 0; while (_local1 < 100) { sm_diamondsBest[_local1] = 0; sm_scoresBest[_local1] = 0; _local1++; }; _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { sm_scoresTotalBest[_local1] = 0; sm_bitmapLevelPackLocked[_local1] = null; _local1++; }; sm_diamondsTotalBest = 0; sm_grandTotalBest = 0; resetGame(); } private function toggleSubmitScreen():void{ var _local1:TextFormat; if (_bitmapSubmitScreen == null){ _bitmapSubmitScreen = new Bitmap(new _classSubmitScreen().bitmapData); _bitmapSubmitScreen.smoothing = true; addChild(_bitmapSubmitScreen); _local1 = new TextFormat("Geometr231 Hv BT", 24, 0xFFFFFF, false, false, false); _local1.align = TextFormatAlign.LEFT; _submitNameTextField = new TextField(); _submitNameTextField.defaultTextFormat = _local1; _submitNameTextField.width = 260; _submitNameTextField.height = 34; _submitNameTextField.text = "Type your name here"; _submitNameTextField.x = 174; _submitNameTextField.y = 320; _submitNameTextField.embedFonts = true; _submitNameTextField.maxChars = 15; _submitNameTextField.multiline = false; _submitNameTextField.wordWrap = false; _submitNameTextField.background = true; _submitNameTextField.backgroundColor = 0; _submitNameTextField.mouseEnabled = true; _submitNameTextField.selectable = true; _submitNameTextField.doubleClickEnabled = true; _submitNameTextField.alwaysShowSelection = true; _submitNameTextField.type = TextFieldType.INPUT; _submitNameTextField.antiAliasType = AntiAliasType.ADVANCED; addChild(_submitNameTextField); } else { removeChild(_submitNameTextField); _submitNameTextField = null; removeChild(_bitmapSubmitScreen); _bitmapSubmitScreen = null; }; } private function playMiddleBalanceSound():void{ if (!_sfx){ return; }; _audioBank._soundAddBonusBall.play(0, 1, new SoundTransform(0.2)); } private function manageAudioOnOff():void{ if (_sfx){ _titleBitmapAudioOn.visible = true; _titleBitmapAudioOff.visible = false; } else { _titleBitmapAudioOn.visible = false; _titleBitmapAudioOff.visible = true; }; } public function runGameMenu():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:int; var _local6:int; var _local7:Number; var _local8:Number; var _local9:Boolean; var _local10:Boolean; var _local11:Boolean; runPlayfieldLeftParticles(); _local7 = Input.mouseScreenX; _local8 = Input.mouseScreenY; if (((!((_bitmapHelp == null))) && ((_bitmapHelp.alpha < 1)))){ _bitmapHelp.scaleX = (_bitmapHelp.scaleX + 0.02); _bitmapHelp.scaleY = (_bitmapHelp.scaleY + 0.02); _bitmapHelp.x = (_helpCenterX - (_bitmapHelp.width * 0.5)); _bitmapHelp.y = (_helpCenterY - (_bitmapHelp.height * 0.5)); _bitmapHelp.alpha = (_bitmapHelp.alpha - 0.05); if (_bitmapHelp.alpha <= 0){ removeChild(_bitmapHelp); _bitmapHelp = null; }; }; if (sm_levelPack == 0){ if ((((((m_currId == 0)) && (!(_help1Done)))) && ((_bitmapHelp == null)))){ _help1Done = true; _bitmapHelp = new Bitmap(new _classHelp1().bitmapData); _bitmapHelp.smoothing = true; _bitmapHelp.x = 120; _bitmapHelp.y = 120; addHelp(_bitmapHelp); }; if ((((((m_currId == 1)) && (!(_help2Done)))) && ((_bitmapHelp == null)))){ _help2Done = true; _bitmapHelp = new Bitmap(new _classHelp2().bitmapData); _bitmapHelp.smoothing = true; _bitmapHelp.x = 140; _bitmapHelp.y = 200; addHelp(_bitmapHelp); }; if ((((((m_currId == 2)) && (!(_help3Done)))) && ((_bitmapHelp == null)))){ _help3Done = true; _bitmapHelp = new Bitmap(new _classHelp3().bitmapData); _bitmapHelp.smoothing = true; _bitmapHelp.x = 188; _bitmapHelp.y = 342; addHelp(_bitmapHelp); }; if ((((((m_currId == 5)) && (!(_help4Done)))) && ((_bitmapHelp == null)))){ _help4Done = true; _bitmapHelp = new Bitmap(new _classHelp4().bitmapData); _bitmapHelp.smoothing = true; _bitmapHelp.x = 150; _bitmapHelp.y = 167; addHelp(_bitmapHelp); }; if ((((((m_currId == 3)) && (!(_help6Done)))) && ((_bitmapHelp == null)))){ _help6Done = true; _bitmapHelp = new Bitmap(new _classHelp6().bitmapData); _bitmapHelp.smoothing = true; _bitmapHelp.x = 160; _bitmapHelp.y = 130; addHelp(_bitmapHelp); }; if ((((((m_currId == 6)) && (!(_helpDirectedGravityDone)))) && ((_bitmapHelp == null)))){ _helpDirectedGravityDone = true; _bitmapHelp = new Bitmap(new _classHelpDirectedGravity().bitmapData); _bitmapHelp.smoothing = true; _bitmapHelp.x = (300 - (_bitmapHelp.width * 0.5)); _bitmapHelp.y = (250 - (_bitmapHelp.height * 0.5)); addHelp(_bitmapHelp); }; if ((((((m_currId == 4)) && (!(_help5Done)))) && ((_bitmapHelp == null)))){ _help5Done = true; _bitmapHelp = new Bitmap(new _classHelp5().bitmapData); _bitmapHelp.smoothing = true; _bitmapHelp.x = (300 - (_bitmapHelp.width * 0.5)); _bitmapHelp.y = (250 - (_bitmapHelp.height * 0.5)); addHelp(_bitmapHelp); }; if ((((((m_currId == 8)) && (!(_helpHeliumDone)))) && ((_bitmapHelp == null)))){ _helpHeliumDone = true; _bitmapHelp = new Bitmap(new _classHelpHelium().bitmapData); _bitmapHelp.smoothing = true; _bitmapHelp.x = (300 - (_bitmapHelp.width * 0.5)); _bitmapHelp.y = (180 - (_bitmapHelp.height * 0.5)); addHelp(_bitmapHelp); }; }; if ((((((((_bitmapHelp == null)) && (!(_timerOn)))) && (!(m_currTest._chooseAShapeDone)))) && (!(((sm_editorMode) && (!(sm_editorPlayMode))))))){ m_currTest._chooseAShapeDone = true; _bitmapChooseAShape = new Bitmap(new _classChooseAShape().bitmapData); _bitmapChooseAShape.smoothing = true; _bitmapChooseAShape.x = (300 - (_bitmapChooseAShape.width * 0.5)); _bitmapChooseAShape.y = 135; addHelp(_bitmapChooseAShape); }; if (_timerOn){ m_currTest._chooseAShapeDone = true; if (_bitmapChooseAShape != null){ _bitmapChooseAShape.alpha = (_bitmapChooseAShape.alpha - 0.1); if (_bitmapChooseAShape.alpha <= 0){ removeChild(_bitmapChooseAShape); _bitmapChooseAShape = null; }; }; }; _local9 = false; if (sm_editorMode){ if (runEditorButtons()){ return; }; }; manageGrids(); manageBGImages(); if (_mouseClicked){ if (((!((_bitmapHelp == null))) && ((_bitmapHelp.alpha > 0.999)))){ _bitmapHelp.alpha = (_bitmapHelp.alpha - 0.05); }; if (_bitmapLevelSkip != null){ _local10 = false; if ((((((((Input.mouseScreenX >= 212)) && ((Input.mouseScreenY >= 358)))) && ((Input.mouseScreenX <= 275)))) && ((Input.mouseScreenY <= 398)))){ buttonPressed(); sm_levelSkips--; sm_skipped[(((sm_levelPack * LEVELS_PER_LEVEL_PACK) + sm_openLevels[sm_levelPack]) - 1)] = true; explodeLevelLockIcon(sm_openLevels[sm_levelPack]); var _local12 = sm_openLevels; var _local13 = sm_levelPack; var _local14 = (_local12[_local13] + 1); _local12[_local13] = _local14; SettingsSave(); redrawPlayfieldRight(); playPerfectBalance(); _local10 = true; } else { if ((((((((Input.mouseScreenX >= 326)) && ((Input.mouseScreenY >= 358)))) && ((Input.mouseScreenX <= 393)))) && ((Input.mouseScreenY <= 398)))){ buttonPressed(); _local10 = true; }; }; if (_local10){ removeChild(_bitmapLevelSkip); _bitmapLevelSkip = null; }; return; }; if (((((((((!(sm_editorMode)) && ((Input.mouseScreenX >= (460 + 30))))) && ((Input.mouseScreenY >= 424)))) && ((Input.mouseScreenX <= (460 + 113))))) && ((Input.mouseScreenY <= 454)))){ buttonPressed(); _local9 = true; }; if (((!((_bitmapAllDone == null))) && ((m_currTest._lives <= 0)))){ _local1 = _bitmapAllDone.x; _local2 = _bitmapAllDone.y; if (((((((((!(MyPreloader._chinese)) && ((_local7 >= (_local1 + 82))))) && ((_local8 >= (_local2 + 32))))) && ((_local7 <= (_local1 + 150))))) && ((_local8 <= (_local2 + 56))))){ buttonPressed(); _local9 = true; }; if (((((((((MyPreloader._chinese) && ((_local7 >= (_local1 + 37))))) && ((_local8 >= (_local2 + 30))))) && ((_local7 <= (_local1 + 109))))) && ((_local8 <= (_local2 + 58))))){ buttonPressed(); _local9 = true; }; }; if (((((((((MyPreloader._moFunZone) && ((Input.mouseScreenX >= 0)))) && ((Input.mouseScreenY >= 455)))) && ((Input.mouseScreenX <= 140)))) && ((Input.mouseScreenY <= 500)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.MoFunZone.com/"), "_blank"); }; if ((((((((Input.mouseScreenX >= (460 + 30))) && ((Input.mouseScreenY >= 454)))) && ((Input.mouseScreenX <= (460 + 113))))) && ((Input.mouseScreenY <= 488)))){ buttonPressed(); exitPlaying(); }; if (((((((((!(sm_editorMode)) && ((Input.mouseScreenX >= 467)))) && ((Input.mouseScreenY >= 350)))) && ((Input.mouseScreenX <= (460 + 131))))) && ((Input.mouseScreenY <= 379)))){ if ((((sm_levelSkips <= 0)) || ((sm_openLevels[sm_levelPack] >= LEVELS_PER_LEVEL_PACK)))){ _playBadPickup = true; } else { buttonPressed(); _bitmapLevelSkip = new Bitmap(new _classLevelSkip().bitmapData); _bitmapLevelSkip.smoothing = true; addChild(_bitmapLevelSkip); }; }; if (isPointInsideBitmap(_titleBitmapAudioOn, Input.mouseScreenX, Input.mouseScreenY)){ _sfx = !(_sfx); if (_sfx){ if (((sm_editorMode) && (!(sm_editorPlayMode)))){ playBGMMenu(); } else { playBGMGame(); }; } else { SoundMixer.stopAll(); }; manageAudioOnOff(); SettingsSave(); }; if (isPointInsideBitmap(_titleBitmapAutoHideOn, Input.mouseScreenX, Input.mouseScreenY)){ buttonPressed(); sm_autoHide = !(sm_autoHide); Mouse.show(); manageAutoHideOnOff(); }; if (isPointInsideBitmap(_titleBitmapQualityHigh, Input.mouseScreenX, Input.mouseScreenY)){ buttonPressed(); if (_stageQuality == 0){ _stageQuality = 1; stage.quality = StageQuality.MEDIUM; } else { if (_stageQuality == 1){ _stageQuality = 2; stage.quality = StageQuality.LOW; } else { _stageQuality = 0; stage.quality = StageQuality.HIGH; }; }; manageQuality(); }; if (((((!((_bitmapAllDone == null))) && ((m_currTest._lives > 0)))) && (!(sm_editorMode)))){ _local1 = _bitmapAllDone.x; _local2 = _bitmapAllDone.y; _local11 = false; if (m_currTest._almostPerfectBalance){ if (((((((((MyPreloader._chinese) && ((_local7 >= (_local1 + 156))))) && ((_local8 >= (_local2 + 34))))) && ((_local7 <= (_local1 + 229))))) && ((_local8 <= (_local2 + 64))))){ _local11 = true; } else { if (((((((((!(MyPreloader._chinese)) && ((_local7 >= (_local1 + 109))))) && ((_local8 >= (_local2 + 38))))) && ((_local7 <= (_local1 + 168))))) && ((_local8 <= (_local2 + 58))))){ _local11 = true; }; }; }; if (!m_currTest._almostPerfectBalance){ if (!m_currTest.m_finalPerfectBalance){ if (((((((((!(MyPreloader._chinese)) && ((_local7 >= (_local1 + 55))))) && ((_local8 >= (_local2 + 34))))) && ((_local7 <= (_local1 + 115))))) && ((_local8 <= (_local2 + 58))))){ _local11 = true; }; if (((((((((MyPreloader._chinese) && ((_local7 >= (_local1 + 99))))) && ((_local8 >= (_local2 + 29))))) && ((_local7 <= (_local1 + 162))))) && ((_local8 <= (_local2 + 60))))){ _local11 = true; }; }; if (m_currTest.m_finalPerfectBalance){ if (((((((((!(MyPreloader._chinese)) && ((_local7 >= (_local1 + 76))))) && ((_local8 >= (_local2 + 35))))) && ((_local7 <= (_local1 + 132))))) && ((_local8 <= (_local2 + 58))))){ _local11 = true; }; if (((((((((MyPreloader._chinese) && ((_local7 >= (_local1 + 119))))) && ((_local8 >= (_local2 + 31))))) && ((_local7 <= (_local1 + 184))))) && ((_local8 <= (_local2 + 60))))){ _local11 = true; }; }; }; if (_local11){ buttonPressed(false); PlayLevelChangedSound(); if (m_currId < (sm_openLevels[sm_levelPack] - 1)){ if (m_currId >= (LEVELS_PER_LEVEL_PACK - 1)){ _bitmapTheEnd = new Bitmap(new _classTheEnd().bitmapData); _bitmapTheEnd.smoothing = true; _bitmapTheEnd.alpha = 0; _theEndParticles = 0; addChild(_bitmapTheEnd); playBGMMenu(); } else { m_currId++; recreateLevel(); redrawPlayfieldRight(); }; }; }; }; if (!sm_editorMode){ _local6 = 0; _local5 = 0; while (_local5 < LEVELS_PER_LEVEL_PACK) { var _temp1 = _local6; _local6 = (_local6 + 1); _local1 = _levelButtonCoordinates[_temp1]; var _temp2 = _local6; _local6 = (_local6 + 1); _local2 = _levelButtonCoordinates[_temp2]; _local3 = (_local1 - _local7); _local4 = (_local2 - _local8); if (((_local3 * _local3) + (_local4 * _local4)) < (18 * 18)){ if (_local5 < sm_openLevels[sm_levelPack]){ m_currId = _local5; recreateLevel(); redrawPlayfieldRight(); buttonPressed(false); PlayLevelChangedSound(); } else { _playBadPickup = true; }; break; }; _local5++; }; }; }; if (((Input.isKeyPressed("R".charCodeAt(0))) || (_local9))){ if (!((sm_editorMode) && (!(sm_editorPlayMode)))){ recreateLevel(); }; }; } private function runGamerSafe():void{ var _local1:Boolean; _local1 = doWeHaveGamerSafe(); if (_local1){ GamerSafe.api.showInterface(); }; if (((MyPreloader._gamerSafe) && ((MyPreloader._gamerSafeAPI == null)))){ MyPreloader._gamerSafeAPI = new GamerSafe(stage); }; } private function resetLevelScore():void{ var _local1:int; _local1 = (m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK)); _plus50Points = false; _plus50PointsTimer = 0; _plus50PointsTotal = 0; _plus200Points = false; _plus200PointsTimer = 0; sm_scores[_local1] = 0; sm_scoresBest[_local1] = 0; _textFieldBest.text = ("" + sm_scores[_local1]); sm_diamonds[_local1] = 0; sm_diamondsBest[_local1] = 0; _textFieldDiamonds.text = ("" + sm_diamonds[_local1]); } private function CalculateGrade(_arg1:int, _arg2:int):int{ var _local3:int; var _local4:int; _local3 = 0; _local4 = GRADE_S_LIMITS[_arg2]; if (_arg1 < (_local4 - 6000)){ _local3 = 1; } else { if (_arg1 < (_local4 - 4000)){ _local3 = 2; } else { if (_arg1 < (_local4 - 2000)){ _local3 = 3; } else { if (_arg1 < _local4){ _local3 = 4; } else { _local3 = 5; }; }; }; }; return (_local3); } private function setTextFilters(_arg1:TextField, _arg2:Boolean=true):void{ if (_arg2){ _arg1.filters = [_filterOutline, _filterDropShadow]; } else { _arg1.filters = [_filterOutline]; }; _arg1.cacheAsBitmap = true; } private function redrawInGameBG():void{ var _local1:BitmapData; var _local2:int; _local2 = sm_levelPack; if (sm_editorMode){ if (_editorBGImage == 0){ _local2 = 5; } else { _local2 = (_editorBGImage - 1); }; }; if (_local2 == 0){ _local1 = new _classBackground01().bitmapData; } else { if (_local2 == 1){ _local1 = new _classBackground02().bitmapData; } else { if (_local2 == 2){ _local1 = new _classBackground03().bitmapData; } else { if (_local2 == 3){ _local1 = new _classBackground04().bitmapData; } else { if (_local2 == 4){ _local1 = new _classBackground06().bitmapData; } else { _local1 = new _classBackground05().bitmapData; }; }; }; }; }; _bitmapBackgroundFlash.bitmapData.draw(_local1); } private function SettingsSave():void{ var _local1:SharedObject; trace("SettingsSave()..."); m_settingsSave = false; _local1 = SharedObject.getLocal("PerfectBalance3Settings"); _local1.data.header = "PB3S5"; _local1.data.scores = cloneArray(sm_scores); _local1.data.scoresBest = cloneArray(sm_scoresBest); _local1.data.scoresTotalBest = cloneArray(sm_scoresTotalBest); _local1.data.diamonds = cloneArray(sm_diamonds); _local1.data.diamondsBest = cloneArray(sm_diamondsBest); _local1.data.levelPackLocked = cloneArray(sm_levelPackLocked); _local1.data.starsAdded = cloneArray(sm_starsAdded); _local1.data.skipped = cloneArray(sm_skipped); _local1.data.diamondsTotalBest = sm_diamondsTotalBest; _local1.data.grandTotalBest = sm_grandTotalBest; _local1.data.version = "1.0.0"; _local1.data.openLevels = cloneArray(sm_openLevels); _local1.data.grades = cloneArray(sm_grades); _local1.data.levelSkips = sm_levelSkips; _local1.data.achievements = sm_achievements; _local1.data.sfx = _sfx; _local1.data.checksum = calculateSaveChecksum(sm_scores, sm_diamonds, sm_openLevels, sm_grades, sm_levelSkips, sm_achievements); _local1.flush(); trace("... success!"); } private function runTheEndLevelPackLetter():void{ var _local1:int; var _local2:SoundTransform; if (_bitmapLetter == null){ return; }; _bitmapLetter.scaleX = (_bitmapLetter.scaleX - 0.1); if (_bitmapLetter.scaleX < 1){ _bitmapLetter.scaleX = 1; if (_bitmapGrade == null){ _bitmapGrade = GetGradeBitmap(sm_levelPack); _bitmapGrade.scaleX = 3; _bitmapGrade.scaleY = 3; _bitmapGrade.alpha = 0; _local1 = sm_grades[sm_levelPack]; _theEndParticles = (200 + (_local1 * 200)); if (_local1 >= 5){ addTheEndExplosion(125, 247); addTheEndExplosion((SCREEN_DX - 125), 247); }; if (_sfx){ _local2 = new SoundTransform(0.2); _audioBank._soundTitleHit.play(0, 1, _local2); }; addChild(_bitmapGrade); }; }; _bitmapLetter.scaleY = _bitmapLetter.scaleX; _bitmapLetter.alpha = (_bitmapLetter.alpha + 0.1); if (_bitmapLetter.alpha > 1){ _bitmapLetter.alpha = 1; }; _bitmapLetter.x = (300 - (_bitmapLetter.width * 0.5)); _bitmapLetter.y = (191 - (_bitmapLetter.height * 0.5)); } private function startEditor():void{ sm_editorMode = true; buttonPressed(); sm_levelPack = (LEVEL_PACKS_MAX - 1); m_currId = LEVELS_PER_LEVEL_PACK; recreateLevel(); redrawPlayfieldRight(); redrawPlayfieldLeft(); startPlaying(); _bitmapEditorHelpDimensions = new Bitmap(new _classEditorHelpDimensions().bitmapData); _bitmapEditorHelpDimensions.smoothing = true; _bitmapEditorHelpDimensions.x = ((SCREEN_DX * 0.5) - (_bitmapEditorHelpDimensions.width * 0.5)); _bitmapEditorHelpDimensions.y = (SCREEN_DY - 50); _bitmapEditorHelpDimensions.visible = false; addChild(_bitmapEditorHelpDimensions); _bitmapEditorHelpRadius = new Bitmap(new _classEditorHelpRadius().bitmapData); _bitmapEditorHelpRadius.smoothing = true; _bitmapEditorHelpRadius.x = ((SCREEN_DX * 0.5) - (_bitmapEditorHelpRadius.width * 0.5)); _bitmapEditorHelpRadius.y = (SCREEN_DY - 50); _bitmapEditorHelpRadius.visible = false; addChild(_bitmapEditorHelpRadius); if (!m_editorHelpShown){ m_editorHelpShown = true; _bitmapEditorHelp = new Bitmap(new _classEditorHelp().bitmapData); _bitmapEditorHelp.smoothing = true; addChild(_bitmapEditorHelp); }; } public function playAddBonusBall():void{ var _local1:SoundTransform; if (!_sfx){ return; }; _local1 = new SoundTransform(0.4); _audioBank._soundAddBonusBall.play(0, 1, _local1); } private function playBGMMenu():void{ if (!_sfx){ return; }; SoundMixer.stopAll(); _audioBank._bgmMenu.play(0, int.MAX_VALUE, new SoundTransform(0.4)); } private function UpdateGrade():void{ var _local1:int; var _local2:int; _local1 = CalculateLevelPackScore(sm_levelPack); _local2 = CalculateGrade(_local1, sm_levelPack); sm_grades[sm_levelPack] = _local2; } private function explodeLevelLockIcon(_arg1:int):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:SpriteParticle; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; if ((_arg1 & 1) == 0){ _local2 = (44 - 1); } else { _local2 = (64 + 1); }; _local2 = (_local2 + (_bitmapPlayfieldRight.x + 14)); _local3 = (((_arg1 * 25) + 20) + 14); _local4 = 0; while (_local4 < 32) { _local5 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_HARDSQUARE, _local2, _local3); if (_local5 != null){ _local6 = ((Math.random() * Math.PI) * 2); _local7 = Math.sin(_local6); _local8 = Math.cos(_local6); _local9 = (0.5 + (Math.random() * 0.5)); _local5._speedX = (_local7 * _local9); _local5._speedY = (_local8 * _local9); _local5._life = (_local5._life + (Math.random() * 20)); }; _local4++; }; } private function runEditorButtons():Boolean{ var _local1:Number; var _local2:Number; var _local3:Boolean; var _local4:int; var _local5:Boolean; _local1 = _mouseClickedX; _local2 = _mouseClickedY; if (_bitmapEditorHelp != null){ if ((((_bitmapEditorHelp.alpha < 1)) || (_mouseClicked))){ _bitmapEditorHelp.alpha = (_bitmapEditorHelp.alpha - 0.05); if (_bitmapEditorHelp.alpha <= 0){ removeChild(_bitmapEditorHelp); _bitmapEditorHelp = null; }; }; }; _local3 = false; if (Input.isKeyPressed("G".charCodeAt(0))){ _local3 = true; }; if (((_mouseClicked) && (isPointInsideBitmap(_bitmapButtonGrid0, _local1, _local2)))){ buttonPressed(); _local3 = true; }; if (_local3){ _grid++; if (_grid == 4){ _grid = 0; }; }; if (((_mouseClicked) && (isPointInsideBitmap(_bitmapButtonBGImage1, _local1, _local2)))){ buttonPressed(); _local4 = CalculateOpenLevelPacks(); _editorBGImage++; if (_editorBGImage >= (_local4 + 1)){ _editorBGImage = 0; }; redrawInGameBG(); }; if (_bitmapClearLevel != null){ if (_mouseClicked){ _local5 = false; if ((((((((_local1 >= 212)) && ((_local2 >= 358)))) && ((_local1 <= 275)))) && ((_local2 <= 398)))){ _levelBackupString = _levelBackupStringClear; resetLevelScore(); recreateLevel(); redrawPlayfieldLeft(); _local5 = true; } else { if ((((((((_local1 >= 326)) && ((_local2 >= 358)))) && ((_local1 <= 393)))) && ((_local2 <= 398)))){ _local5 = true; }; }; if (_local5){ buttonPressed(); removeChild(_bitmapClearLevel); _bitmapClearLevel = null; }; _mouseClicked = false; }; return (true); }; if (_bitmapEditorKeys != null){ if (_mouseClicked){ if ((((((((_local1 >= 249)) && ((_local2 >= 348)))) && ((_local1 <= 354)))) && ((_local2 <= 396)))){ buttonPressed(); removeChild(_bitmapEditorKeys); _bitmapEditorKeys = null; }; _mouseClicked = false; }; return (true); }; if (sm_editorPlayMode){ return (runEditorButtonsPlayMode()); }; return (runEditorButtonsEditMode()); } private function buttonPressed(_arg1:Boolean=true):void{ Input.mousePressed = false; Input.mouseClicked = false; Input.mouseDown = false; _mouseClicked = false; if (_arg1){ playButtonSound(); }; } public function get20handleComplete(_arg1:Event):void{ var loader:URLLoader; var event = _arg1; if (_bitmapGet20Screen == null){ return; }; loader = URLLoader(event.target); try { _viewScoresName[0].text = loader.data.name1; _viewScoresScore[0].text = loader.data.score1; _viewScoresName[1].text = loader.data.name2; _viewScoresScore[1].text = loader.data.score2; _viewScoresName[2].text = loader.data.name3; _viewScoresScore[2].text = loader.data.score3; _viewScoresName[3].text = loader.data.name4; _viewScoresScore[3].text = loader.data.score4; _viewScoresName[4].text = loader.data.name5; _viewScoresScore[4].text = loader.data.score5; _viewScoresName[5].text = loader.data.name6; _viewScoresScore[5].text = loader.data.score6; _viewScoresName[6].text = loader.data.name7; _viewScoresScore[6].text = loader.data.score7; _viewScoresName[7].text = loader.data.name8; _viewScoresScore[7].text = loader.data.score8; _viewScoresName[8].text = loader.data.name9; _viewScoresScore[8].text = loader.data.score9; _viewScoresName[9].text = loader.data.name10; _viewScoresScore[9].text = loader.data.score10; _viewScoresName[10].text = loader.data.name11; _viewScoresScore[10].text = loader.data.score11; _viewScoresName[11].text = loader.data.name12; _viewScoresScore[11].text = loader.data.score12; _viewScoresName[12].text = loader.data.name13; _viewScoresScore[12].text = loader.data.score13; _viewScoresName[13].text = loader.data.name14; _viewScoresScore[13].text = loader.data.score14; _viewScoresName[14].text = loader.data.name15; _viewScoresScore[14].text = loader.data.score15; _viewScoresName[15].text = loader.data.name16; _viewScoresScore[15].text = loader.data.score16; _viewScoresName[16].text = loader.data.name17; _viewScoresScore[16].text = loader.data.score17; _viewScoresName[17].text = loader.data.name18; _viewScoresScore[17].text = loader.data.score18; _viewScoresName[18].text = loader.data.name19; _viewScoresScore[18].text = loader.data.score19; _viewScoresName[19].text = loader.data.name20; _viewScoresScore[19].text = loader.data.score20; } catch(e:Error) { }; } private function manageAutoHideOnOff():void{ if (sm_autoHide){ _titleBitmapAutoHideOn.visible = true; _titleBitmapAutoHideOff.visible = false; } else { _titleBitmapAutoHideOn.visible = false; _titleBitmapAutoHideOff.visible = true; }; } private function UpdateLevelBest():void{ var _local1:int; var _local2:int; _local1 = CalculateCurrentScore(); _local2 = (m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK)); if (sm_scores[_local2] < _local1){ sm_scores[_local2] = _local1; }; if (sm_scoresBest[_local2] < _local1){ sm_scoresBest[_local2] = _local1; }; _textFieldBest.text = ("" + sm_scores[_local2]); if (sm_diamonds[_local2] < m_currTest._runningDiamonds){ sm_diamonds[_local2] = m_currTest._runningDiamonds; }; if (sm_diamondsBest[_local2] < m_currTest._runningDiamonds){ sm_diamondsBest[_local2] = m_currTest._runningDiamonds; }; _textFieldDiamonds.text = ("" + sm_diamonds[_local2]); CalculateTotalScore(); } private function addTheEndExplosion(_arg1:int, _arg2:int):void{ var _local3:int; var _local4:SpriteParticle; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = 0; while (_local3 < 96) { _local4 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_HARDSQUARE, _arg1, _arg2); if (_local4 != null){ _local5 = ((Math.random() * Math.PI) * 2); _local6 = Math.sin(_local5); _local7 = Math.cos(_local5); _local8 = (0.5 + (Math.random() * 0.5)); _local4._speedX = (_local6 * _local8); _local4._speedY = (_local7 * _local8); _local4._life = (_local4._life + (Math.random() * 30)); }; _local3++; }; playFireWork(); } private function playSFX():void{ var _local1:SoundTransform; var _local2:Number; if (_playRotate >= 0){ if (_sfx){ _local1 = new SoundTransform(0.2); _audioBank._soundRotate01.play(0, 1, _local1); }; _playRotate = -1; }; if (_playMiddleBalance){ _playMiddleBalance = false; playMiddleBalanceSound(); }; if (_playAddBonusBall){ _playAddBonusBall = false; playAddBonusBall(); }; if (_playAllBonusBalls){ _playAllBonusBalls = false; playAllBonusBalls(); }; if (_playBadPickup){ if (_sfx){ _local1 = new SoundTransform(0.6); _audioBank._soundRotate01.play(0, 1, _local1); }; _playBadPickup = false; }; if (_playGrabShape){ if (_sfx){ _local1 = new SoundTransform(0.1); _audioBank._soundGrabShape.play(0, 1, _local1); }; _playGrabShape = false; }; if (_playReturnShape){ if (_sfx){ _local1 = new SoundTransform(0.1); _audioBank._soundReturnShape.play(0, 1, _local1); }; _playReturnShape = false; }; if (_playLooseLife){ if (_sfx){ _local1 = new SoundTransform(0.5); _audioBank._soundLooseLife.play(0, 1, _local1); }; _playLooseLife = false; if (!m_currTest._loseLifePlayed){ m_currTest._loseLifePlayed = true; _timerOn = false; if (_bitmapAllDone != null){ removeChild(_bitmapAllDone); _bitmapAllDone = null; }; if (_bitmapWait != null){ _bitmapWait.visible = false; }; _bitmapAllDone = new Bitmap(new _classRelax().bitmapData); _bitmapAllDone.smoothing = true; _bitmapAllDone.x = (300 - (_bitmapAllDone.width * 0.5)); _bitmapAllDone.y = (55 - (_bitmapAllDone.height * 0.5)); _bitmapAllDone.scaleX = 0.6; _bitmapAllDone.scaleY = 0.6; _bitmapAllDone.alpha = 0; _bitmapAllDone.smoothing = true; addChild(_bitmapAllDone); m_currTest._allDoneShootStars = false; }; }; if (_playHitDiamondDelay < 5){ _playHitDiamondDelay++; }; if (_playHitDiamond >= 0){ if (((_sfx) && ((_playHitDiamondDelay == 5)))){ _local1 = new SoundTransform(_playHitDiamondVolume); _local2 = Math.random(); if (_local2 < (1 / 3)){ _audioBank._soundConcrete02.play(0, 1, _local1); } else { if (_local2 < (3 / 3)){ _audioBank._soundConcrete03.play(0, 1, _local1); } else { _audioBank._soundConcrete06.play(0, 1, _local1); }; }; _playHitDiamondDelay = 0; }; _playHitDiamond = -1; }; if (_playHitDelay < 5){ _playHitDelay++; }; if (_playHit >= 0){ if (((_sfx) && ((_playHitDelay == 5)))){ _local1 = new SoundTransform(_playHitVolume); _local2 = Math.random(); if (_local2 < (1 / 5)){ _audioBank._soundStone01.play(0, 1, _local1); } else { if (_local2 < (2 / 5)){ _audioBank._soundStone02.play(0, 1, _local1); } else { if (_local2 < (3 / 5)){ _audioBank._soundStone03.play(0, 1, _local1); } else { if (_local2 < (4 / 5)){ _audioBank._soundStone04.play(0, 1, _local1); } else { _audioBank._soundStone05.play(0, 1, _local1); }; }; }; }; _playHitDelay = 0; }; _playHit = -1; }; if (_playHitHeavyDelay < 5){ _playHitHeavyDelay++; }; if (_playHitHeavy >= 0){ if (((_sfx) && ((_playHitHeavyDelay == 5)))){ _local1 = new SoundTransform(_playHitHeavyVolume); _local2 = Math.random(); if (_local2 < (1 / 2)){ _audioBank._soundHeavy01.play(0, 1, _local1); } else { _audioBank._soundHeavy02.play(0, 1, _local1); }; _playHitHeavyDelay = 0; }; _playHitHeavy = -1; }; } public function runLevelPackSelectionMenu():void{ var gamerSafe:Boolean; var packOffsetY:int; var remove:Boolean; var loadmode:int; var request:URLRequest; var loader:URLLoader; var totalScore:int; var o:Object; var boardID:String; var score:int; var totalDiamonds:int; var diamonds:int; runLockedSubSprites(); if (_bitmapSubmitScreen != null){ runSubmitScreen(); return; }; if (_bitmapGet20Screen != null){ runGet20Screen(); return; }; if (_bitmapResetProgress == null){ runLevelPackSelectionParticles(); }; if (sm_starsAddTimer > 0){ sm_starsAddTimer--; if (sm_starsAddTimer == 0){ starsAddTest(); }; }; if (sm_levelPackUnlockTestTimer > 0){ sm_levelPackUnlockTestTimer--; if (sm_levelPackUnlockTestTimer == 0){ levelPackUnlockTest(); }; }; gamerSafe = doWeHaveGamerSafe(); if (((gamerSafe) && (GamerSafe.api.inUse))){ return; }; if (Input.mouseClicked){ if (_bitmapResetProgress != null){ remove = false; if ((((((((Input.mouseScreenX >= 212)) && ((Input.mouseScreenY >= 358)))) && ((Input.mouseScreenX <= 275)))) && ((Input.mouseScreenY <= 398)))){ buttonPressed(); resetGame(); toggleLevelPackSelection(); toggleLevelPackSelection(); redrawPlayfieldLeft(); redrawPlayfieldRight(); remove = true; } else { if ((((((((Input.mouseScreenX >= 326)) && ((Input.mouseScreenY >= 358)))) && ((Input.mouseScreenX <= 393)))) && ((Input.mouseScreenY <= 398)))){ buttonPressed(); remove = true; }; }; if (remove){ removeChild(_bitmapResetProgress); _bitmapResetProgress = null; }; return; }; if ((((((((Input.mouseScreenX >= 245)) && ((Input.mouseScreenY >= 444)))) && ((Input.mouseScreenX <= 349)))) && ((Input.mouseScreenY <= 489)))){ buttonPressed(); toggleLevelPackSelection(); toggleMainMenu(); }; packOffsetY = 6; if (((((((((!(sm_levelPackLocked[0])) && ((Input.mouseScreenX >= 52)))) && ((Input.mouseScreenY >= (203 + packOffsetY))))) && ((Input.mouseScreenX <= 133)))) && ((Input.mouseScreenY <= (236 + packOffsetY))))){ startLevelPack(0); }; if (((((((((!(sm_levelPackLocked[1])) && ((Input.mouseScreenX >= 151)))) && ((Input.mouseScreenY >= (203 + packOffsetY))))) && ((Input.mouseScreenX <= 231)))) && ((Input.mouseScreenY <= (236 + packOffsetY))))){ startLevelPack(1); }; if (((((((((!(sm_levelPackLocked[2])) && ((Input.mouseScreenX >= 258)))) && ((Input.mouseScreenY >= (203 + packOffsetY))))) && ((Input.mouseScreenX <= 339)))) && ((Input.mouseScreenY <= (236 + packOffsetY))))){ startLevelPack(2); }; if (((((((((!(sm_levelPackLocked[3])) && ((Input.mouseScreenX >= 367)))) && ((Input.mouseScreenY >= (203 + packOffsetY))))) && ((Input.mouseScreenX <= 448)))) && ((Input.mouseScreenY <= (236 + packOffsetY))))){ startLevelPack(3); }; if (((((((((!(sm_levelPackLocked[4])) && ((Input.mouseScreenX >= 476)))) && ((Input.mouseScreenY >= (203 + packOffsetY))))) && ((Input.mouseScreenX <= 557)))) && ((Input.mouseScreenY <= (236 + packOffsetY))))){ startLevelPack(4); }; if ((((((((Input.mouseScreenX >= 43)) && ((Input.mouseScreenY >= 414)))) && ((Input.mouseScreenX <= 186)))) && ((Input.mouseScreenY <= 439)))){ buttonPressed(); _bitmapResetProgress = new Bitmap(new _classResetProgress().bitmapData); _bitmapResetProgress.smoothing = true; addChild(_bitmapResetProgress); }; if (((((((((MyPreloader._gamesFreeAPI) && ((Input.mouseScreenX >= 430)))) && ((Input.mouseScreenY >= 445)))) && ((Input.mouseScreenX <= 550)))) && ((Input.mouseScreenY <= 470)))){ buttonPressed(); toggleGet20Screen(); loadmode = 1; request = new URLRequest("http://hiscore.gamesfree.com/perfectbalance3_get.php"); loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.VARIABLES; request.data = ("m=" + loadmode); request.method = URLRequestMethod.POST; loader.addEventListener(Event.COMPLETE, get20handleComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.load(request); }; if (((((((((MyPreloader._submitButtonScore) && ((Input.mouseScreenX >= 453)))) && ((Input.mouseScreenY >= 413)))) && ((Input.mouseScreenX <= 530)))) && ((Input.mouseScreenY <= 440)))){ buttonPressed(); totalScore = CalculateTotalScore(); if (MyPreloader._mochi){ o = {n:[12, 12, 10, 1, 8, 6, 13, 11, 15, 10, 14, 4, 10, 8, 12, 8], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, ""); MochiScores.showLeaderboard({boardID:boardID, score:totalScore}); } else { if (MyPreloader._kongregate){ MyPreloader._kongregateAPI.stats.submit("TotalScore", totalScore); score = CalculateLevelPackScore(0); if (score > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackScoreA", score); }; score = CalculateLevelPackScore(1); if (score > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackScoreB", score); }; score = CalculateLevelPackScore(2); if (score > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackScoreC", score); }; score = CalculateLevelPackScore(3); if (score > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackScoreD", score); }; score = CalculateLevelPackScore(4); if (score > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackScoreE", score); }; } else { if (gamerSafe){ GamerSafe.api.showScoreSubmit(totalScore, "", false, GamerSafeConstants.SCOREBOARD_POINTS); } else { if (MyPreloader._gamesFreeAPI){ _submitMode = 1; _submitScore = totalScore; toggleSubmitScreen(); }; }; }; }; }; if (((((((((MyPreloader._submitButtonDiamonds) && ((Input.mouseScreenX >= 261)))) && ((Input.mouseScreenY >= 392)))) && ((Input.mouseScreenX <= 335)))) && ((Input.mouseScreenY <= 418)))){ buttonPressed(); totalDiamonds = CalculateTotalDiamonds(); if (MyPreloader._mochi){ o = {n:[5, 7, 13, 8, 11, 7, 7, 1, 8, 3, 1, 7, 12, 15, 6, 8], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, ""); MochiScores.showLeaderboard({boardID:boardID, score:totalDiamonds}); } else { if (MyPreloader._kongregate){ MyPreloader._kongregateAPI.stats.submit("TotalGems", totalDiamonds); diamonds = CalculateLevelPackDiamonds(0); if (diamonds > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackGemsA", diamonds); }; diamonds = CalculateLevelPackDiamonds(1); if (diamonds > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackGemsB", diamonds); }; diamonds = CalculateLevelPackDiamonds(2); if (diamonds > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackGemsC", diamonds); }; diamonds = CalculateLevelPackDiamonds(3); if (diamonds > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackGemsD", diamonds); }; diamonds = CalculateLevelPackDiamonds(4); if (diamonds > 0){ MyPreloader._kongregateAPI.stats.submit("LevelPackGemsE", diamonds); }; } else { if (gamerSafe){ GamerSafe.api.showScoreSubmit(totalDiamonds, "", false, GamerSafeConstants.SCOREBOARD_DIAMONDS); } else { if (MyPreloader._gamesFreeAPI){ _submitMode = 2; _submitScore = totalDiamonds; toggleSubmitScreen(); }; }; }; }; }; }; } private function toggleLevelPackSelection():void{ var _local1:int; var _local2:BitmapData; var _local3:BitmapData; var _local4:int; m_particleManager.reset(); m_spriteParticleManager.reset(); if (_bitmapLevelPackSelection != null){ removeChild(_bitmapLevelPackSelection); _bitmapLevelPackSelection = null; if (MyPreloader._moFunZone){ AchievementLoaderAS3.getAPI().hide_username(); }; _textFieldLPSDiamonds.visible = false; _textFieldLPSLevelSkips.visible = false; _textFieldLPSTotalScore.visible = false; _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { _textFieldLPSTotalScores[_local1].visible = false; _local1++; }; if (MyPreloader._localHighscores){ _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { _textFieldLPSTotalScoresBest[_local1].visible = false; _local1++; }; _textFieldLPSDiamondsBest.visible = false; _textFieldLPSGrandTotalBest.visible = false; }; _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { if (sm_bitmapLevelPackLocked[_local1] != null){ removeChild(sm_bitmapLevelPackLocked[_local1]); sm_bitmapLevelPackLocked[_local1] = null; }; _local1++; }; removeLockedSubSprites(); } else { _bitmapLevelPackSelection = new Bitmap(new _classLevelPackSelection().bitmapData); _bitmapLevelPackSelection.smoothing = true; addChild(_bitmapLevelPackSelection); if (MyPreloader._moFunZone){ AchievementLoaderAS3.getAPI().Dialogposition = "tr"; AchievementLoaderAS3.getAPI().show_username(); }; _local2 = _bitmapLevelPackSelection.bitmapData; _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { if (sm_openLevels[_local1] <= LEVELS_PER_LEVEL_PACK){ } else { if (_local1 == 0){ _local3 = new Bitmap(new _classLPSMedalA().bitmapData).bitmapData; _local4 = (50 - 2); } else { if (_local1 == 1){ _local3 = new Bitmap(new _classLPSMedalB().bitmapData).bitmapData; _local4 = ((50 + 111) - 2); } else { if (_local1 == 2){ _local3 = new Bitmap(new _classLPSMedalC().bitmapData).bitmapData; _local4 = ((50 + (111 * 2)) - 2); } else { if (_local1 == 3){ _local3 = new Bitmap(new _classLPSMedalD().bitmapData).bitmapData; _local4 = ((((50 + (111 * 2)) + 110) - 3) - 2); } else { if (_local1 == 4){ _local3 = new Bitmap(new _classLPSMedalE().bitmapData).bitmapData; _local4 = ((((50 + (111 * 2)) + (110 * 2)) - 3) - 2); }; }; }; }; }; _local2.copyPixels(_local3, new Rectangle(0, 0, 64, 64), new Point(_local4, (113 - 2))); }; _local1++; }; removeChild(_textFieldLPSLevelSkips); addChild(_textFieldLPSLevelSkips); _textFieldLPSLevelSkips.visible = true; removeChild(_textFieldLPSDiamonds); addChild(_textFieldLPSDiamonds); _textFieldLPSDiamonds.visible = true; removeChild(_textFieldLPSTotalScore); addChild(_textFieldLPSTotalScore); _textFieldLPSTotalScore.visible = true; _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { removeChild(_textFieldLPSTotalScores[_local1]); addChild(_textFieldLPSTotalScores[_local1]); _textFieldLPSTotalScores[_local1].visible = true; _local1++; }; if (MyPreloader._localHighscores){ _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { removeChild(_textFieldLPSTotalScoresBest[_local1]); addChild(_textFieldLPSTotalScoresBest[_local1]); _textFieldLPSTotalScoresBest[_local1].visible = true; _local1++; }; removeChild(_textFieldLPSDiamondsBest); addChild(_textFieldLPSDiamondsBest); _textFieldLPSDiamondsBest.visible = true; removeChild(_textFieldLPSGrandTotalBest); addChild(_textFieldLPSGrandTotalBest); _textFieldLPSGrandTotalBest.visible = true; }; addLockedLevelPackSprites(); sm_levelPackUnlockTestTimer = 60; starsDrawAll(); sm_starsAddTimer = 60; updateLevelPackSelection(); }; } public function onEnterFrame(_arg1:Event):void{ var _local2:Boolean; var _local3:Boolean; var _local4:int; var _local5:int; var _local6:Boolean; var _local7:Boolean; var _local8:Number; var _local9:BitmapData; var _local10:Bitmap; var _local11:int; var _local12:Number; var _local13:BitmapData; var _local14:Number; var _local15:Bitmap; if (((_splashRunning) && (MyPreloader._ttursasSplash))){ runSplashScreen(); return; }; removeChild(_bitmapParticleLayer); m_particleManager.liveParticles(0, _bitmapParticleLayer); m_spriteParticleManager.liveParticles(0, _bitmapParticleLayer); if (((_first) && (!((m_currTest == null))))){ playBGMMenu(); _first = false; }; if (((!((_black == null))) && ((_black.alpha > 0)))){ _black.alpha = (_black.alpha - 0.05); if (_black.alpha <= 0){ removeChild(_black); _black = null; }; }; m_sprite.graphics.clear(); _local2 = true; if (_bitmapMainMenuBG != null){ runTitleScreen(); } else { if (_bitmapInstructions != null){ runInstructionsMenu(); } else { if (_bitmapLevelPackSelection != null){ runLevelPackSelectionMenu(); } else { if (_bitmapTheEnd != null){ runTheEnd(); } else { if (_bitmapCreditsScreen != null){ runCreditsScreen(); } else { runGameMenu(); _local2 = false; }; }; }; }; }; if (((!((MyPreloader._loadedLevel == null))) && ((_black == null)))){ if (!sm_editorMode){ if (_bitmapMainMenuBG != null){ toggleMainMenu(); } else { if (_bitmapInstructions != null){ toggleInstructions(); } else { if (_bitmapLevelPackSelection != null){ toggleLevelPackSelection(); } else { if (_bitmapTheEnd != null){ closeTheEndScreen(); } else { if (_bitmapCreditsScreen != null){ toggleCreditsScreen(); }; }; }; }; }; startEditor(); if (sm_editorPlayMode){ playBGMGame(); }; }; if (sm_editorMode){ if (!sm_editorPlayMode){ switchToPlayMode(); }; _levelBackupString = MyPreloader._loadedLevel; MyPreloader._loadedLevel = null; resetLevelScore(); recreateLevel(); redrawPlayfieldLeft(); }; }; if (MyPreloader._gamerSafe){ runGamerSafe(); }; if (_bitmapLevelIO != null){ if (_levelIOClear){ _levelIOClear = false; _levelDataTextField.text = ""; } else { if (_levelIOUse){ _levelIOUse = false; _levelBackupString = _levelDataTextField.text; closeLevelIOWindow(); resetLevelScore(); recreateLevel(); redrawPlayfieldLeft(); } else { if (_levelIOCancel){ _levelIOCancel = false; closeLevelIOWindow(); } else { if (((_levelIOShare) && (!((_levelString == null))))){ _levelIOShare = false; closeLevelIOWindow(); if (MyPreloader._kongregate){ _local9 = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0); _local9.draw(this); _local10 = new Bitmap(_local9); _local10 = Test.cloneBitmap(_local10, 0.25); MyPreloader._kongregateAPI.sharedContent.save("Level", _levelString, kongregateShareFinished, _local10, null); }; _levelString = null; }; }; }; }; }; if (m_currTest == null){ recreateLevel(); }; if (_firstRun){ _firstRun = false; m_currTest.Update(true); m_oldTime = getTimer(); }; _local3 = true; if (((((((((((!((_bitmapMainMenuBG == null))) || (!((_bitmapInstructions == null))))) || (!((_bitmapLevelPackSelection == null))))) || (!((_bitmapCreditsScreen == null))))) || (!((_bitmapAchievements == null))))) || (!((_bitmapTheEnd == null))))){ _local3 = false; }; m_currTest.Update(_local3); m_sprite.visible = _local3; _local4 = getTimer(); _local5 = (_local4 - m_oldTime); m_oldTime = _local4; if (_bitmapMainMenuBG == null){ if (_timerOn){ _local11 = _bonusTimer; _bonusTimer = (_bonusTimer + (_local5 * 4)); if (((!((_local5 == 0))) && ((_bonusTimer == _local11)))){ }; if (_bonusTimer > 0){ _bonusTimer = 0; }; }; _textFieldBonus.text = ("" + CalculateCurrentScore()); }; Input.update(); if (_plus50Points){ _plus50Points = false; _plus50PointsTimer = 50; _plus50PointsTotal = (_plus50PointsTotal + 50); _bitmapPlus50Points.visible = true; if (!_timerOn){ UpdateLevelBest(); }; }; if (_plus50PointsTimer > 0){ _plus50PointsTimer--; } else { _bitmapPlus50Points.visible = false; }; if (_plus200Points){ _plus200Points = false; _plus200PointsTimer = 100; _plus50PointsTotal = (_plus50PointsTotal + 300); _bitmapPlus200Points.visible = true; if (MyPreloader._chinese){ bitmapShootsStars(_bitmapPlus200Points, 0, 20, 150, 20, 30, 45); } else { bitmapShootsStars(_bitmapPlus200Points, 0, 20, 150); }; UpdateLevelBest(); }; if (_plus200PointsTimer > 0){ _plus200PointsTimer--; } else { _bitmapPlus200Points.visible = false; }; if (((((m_currTest._allDropped) && ((_bitmapWait == null)))) && (_timerOn))){ _bitmapWait = new Bitmap(new _classWait().bitmapData); _bitmapWait.smoothing = true; _bitmapWait.x = (300 - (_bitmapWait.width * 0.5)); _bitmapWait.y = (55 - (_bitmapWait.height * 0.5)); addChild(_bitmapWait); } else { if (((!(m_currTest._allDropped)) && (!((_bitmapWait == null))))){ removeChild(_bitmapWait); _bitmapWait = null; }; }; if (((((m_currTest._allDropped) && (!((_bitmapWait == null))))) && ((_bitmapAllDone == null)))){ if (m_currTest._waitTimeLeft > 0){ m_currTest._waitTimeLeft--; } else { m_currTest._almostPerfectBalance = true; removeChild(_bitmapWait); _bitmapWait = null; if (sm_editorMode){ _bitmapAllDone = new Bitmap(new _classAlmostPerfectBalanceEditor().bitmapData); } else { _bitmapAllDone = new Bitmap(new _classAlmostPerfectBalance().bitmapData); }; _bitmapAllDone.smoothing = true; _bitmapAllDone.x = (300 - (_bitmapAllDone.width * 0.5)); _bitmapAllDone.y = (55 - (_bitmapAllDone.height * 0.5)); _bitmapAllDone.scaleX = 0.6; _bitmapAllDone.scaleY = 0.6; _bitmapAllDone.alpha = 0; _bitmapAllDone.smoothing = true; addChild(_bitmapAllDone); if (!sm_editorMode){ if (m_currId == (sm_openLevels[sm_levelPack] - 1)){ explodeLevelLockIcon(sm_openLevels[sm_levelPack]); var _local16 = sm_openLevels; var _local17 = sm_levelPack; var _local18 = (_local16[_local17] + 1); _local16[_local17] = _local18; }; if (sm_skipped[(m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK))]){ sm_skipped[(m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK))] = false; sm_levelSkips++; }; }; _timerOn = false; _playAddBonusBall = false; UpdateLevelBest(); CalculateTotalScore(); UpdateGrade(); redrawPlayfieldRight(); redrawPlayfieldLeft(); playPerfectBalance(); SettingsSave(); }; if (_bitmapWait != null){ _local12 = (Number(m_currTest._waitTimeLeft) / m_currTest._waitTimeMax); _local13 = _bitmapWait.bitmapData; _local13.fillRect(new Rectangle(33, 57, ((217 - 33) + 1), ((62 - 57) + 1)), 4278190080); _local13.fillRect(new Rectangle(33, 57, (((217 - 33) + 1) * _local12), ((62 - 57) + 1)), 4294967295); }; }; _local6 = false; if (((!((_bitmapWait == null))) && ((_bitmapAllDone == null)))){ _local6 = true; }; if (((m_currTest._almostPerfectBalance) && (!((_bitmapAllDone == null))))){ _local6 = true; }; if (((((m_currTest._waiting) && (m_currTest._stabile))) && (_local6))){ if (_bitmapWait != null){ _bitmapWait.visible = false; }; if (_bitmapAllDone != null){ removeChild(_bitmapAllDone); }; m_currTest._almostPerfectBalance = false; m_currTest._allDoneShootStars = true; if (sm_editorMode){ _bitmapAllDone = new Bitmap(new _classPerfectBalanceEditor().bitmapData); } else { _bitmapAllDone = new Bitmap(new _classPerfectBalance().bitmapData); }; _bitmapAllDone.smoothing = true; _bitmapAllDone.scaleX = 0.6; _bitmapAllDone.scaleY = 0.6; _bitmapAllDone.x = (PERFECT_BALANCE_CX - (_bitmapAllDone.width * 0.5)); _bitmapAllDone.y = (PERFECT_BALANCE_CY - (_bitmapAllDone.height * 0.5)); _bitmapAllDone.alpha = 0; _bitmapAllDone.smoothing = true; addChild(_bitmapAllDone); if (!sm_editorMode){ if (m_currId == (sm_openLevels[sm_levelPack] - 1)){ explodeLevelLockIcon(sm_openLevels[sm_levelPack]); _local16 = sm_openLevels; _local17 = sm_levelPack; _local18 = (_local16[_local17] + 1); _local16[_local17] = _local18; }; if (sm_skipped[(m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK))]){ sm_skipped[(m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK))] = false; sm_levelSkips++; }; }; _timerOn = false; _playAddBonusBall = false; UpdateLevelBest(); CalculateTotalScore(); UpdateGrade(); redrawPlayfieldLeft(); redrawPlayfieldRight(); playPerfectBalance(); SettingsSave(); }; if (_bitmapAllDone != null){ _bitmapAllDone.alpha = (_bitmapAllDone.alpha + 0.1); if (_bitmapAllDone.alpha > 1){ _bitmapAllDone.alpha = 1; }; _local14 = _bitmapAllDone.scaleX; _bitmapAllDone.scaleX = (_bitmapAllDone.scaleX + 0.04); if (_bitmapAllDone.scaleX > 1){ _bitmapAllDone.scaleX = 1; if (_local14 < 1){ if (m_currTest._allDoneShootStars){ if (MyPreloader._chinese){ bitmapShootsStars(_bitmapAllDone, 0, 50, 150, 20, 50, 70); } else { bitmapShootsStars(_bitmapAllDone, 0, 50, 150); }; }; }; }; _bitmapAllDone.scaleY = _bitmapAllDone.scaleX; _bitmapAllDone.x = (300 - (_bitmapAllDone.width * 0.5)); _bitmapAllDone.y = (55 - (_bitmapAllDone.height * 0.5)); }; _local7 = false; if (MyPreloader._ttursasSeal){ if (_bitmapMainMenuBG != null){ _bitmapSealBack.visible = true; _bitmapSealFront.visible = true; _bitmapSealFront.x = (5 + 8); _bitmapSealFront.y = ((500 - 105) - 10); _bitmapSealFront.scaleX = 1; _bitmapSealFront.scaleY = 1; _bitmapSealBack.scaleX = 1; _bitmapSealBack.scaleY = 1; _rotateSeal = (_rotateSeal + 0.01); _local15 = _bitmapSealBack; _local15.rotation = 0; Test.rot(_local15, ((5 + 50) + 8), ((500 - 55) - 10), ((_rotateSeal * 180) / Math.PI), (-(_local15.width) * 0.5), (-(_local15.height) * 0.5)); _local7 = true; }; }; if (!_local7){ _bitmapSealBack.visible = false; _bitmapSealFront.visible = false; }; playSFX(); _local8 = 1; if (m_currTest != null){ _local8 = (Test.m_debugDraw.m_drawScale / 20); }; m_fpsCounter.update(); FRateLimiter.limitFrame(60); addChild(_bitmapParticleLayer); if (m_settingsLoad){ SettingsLoad(); }; if (m_settingsSave){ SettingsSave(); }; if (_bitmapMainMenuFG != null){ removeChild(_bitmapMainMenuFG); addChild(_bitmapMainMenuFG); removeChild(_titleBitmapAudioOn); addChild(_titleBitmapAudioOn); removeChild(_titleBitmapAudioOff); addChild(_titleBitmapAudioOff); removeChild(_bitmapMainMenuPerfectBalanceShadow); addChild(_bitmapMainMenuPerfectBalanceShadow); removeChild(_bitmapMainMenuPerfectBalance); addChild(_bitmapMainMenuPerfectBalance); if (_bitmapPerfectBalanceJapanese != null){ removeChild(_bitmapPerfectBalanceJapanese); addChild(_bitmapPerfectBalanceJapanese); }; if (_movieClipGamesFreeButton != null){ removeChild(_movieClipGamesFreeButton); addChild(_movieClipGamesFreeButton); }; }; if (_bitmapCreditsScreen != null){ removeChild(_bitmapCreditsScreen); addChild(_bitmapCreditsScreen); }; if (!areWeInMenu()){ if (_bitmapAllDone != null){ removeChild(_bitmapAllDone); addChild(_bitmapAllDone); }; if (((!((_bitmapPlus200Points == null))) && (_bitmapPlus200Points.visible))){ removeChild(_bitmapPlus200Points); addChild(_bitmapPlus200Points); }; }; if (MyPreloader._ttursasSeal){ removeChild(_bitmapSealBack); addChild(_bitmapSealBack); removeChild(_bitmapSealFront); addChild(_bitmapSealFront); }; runMouseHelper(); Input.mouseClicked = false; _mouseClicked = false; } private function runSubmitScreen():void{ var _local1:int; var _local2:int; var _local3:URLVariables; var _local4:URLRequest; var _local5:URLLoader; if (!_mouseClicked){ return; }; _local1 = _mouseClickedX; _local2 = _mouseClickedY; if ((((((((_local1 >= 180)) && ((_local2 >= 383)))) && ((_local1 <= 266)))) && ((_local2 <= 419)))){ buttonPressed(); toggleSubmitScreen(); } else { if ((((((((_local1 >= 343)) && ((_local2 >= 383)))) && ((_local1 <= 428)))) && ((_local2 <= 419)))){ if (_lastSubmitScore != _submitScore){ _lastSubmitScore = _submitScore; _local3 = new URLVariables(); _local3.n = _submitNameTextField.text; _local3.s = _submitScore; _local3.k = MD5.hash(("" + (_submitScore + 1518))); _local3.m = _submitMode; trace(_local3); _local4 = new URLRequest("http://hiscore.gamesfree.com/perfectbalance3_submit.php"); _local4.method = "POST"; _local4.data = _local3; _local5 = new URLLoader(); _local5.load(_local4); }; buttonPressed(); toggleSubmitScreen(); }; }; _mouseClicked = false; Input.mouseClicked = false; Input.mouseDown = false; } public function runCreditsScreen():void{ var _local1:Number; var _local2:Number; runCreditsParticles(); removeChild(_bitmapVertexCloud); _ttVertexCloud.getIdentity(_matrix); _ttVertexCloud.translate(0, 0, 150, _matrix); _ttVertexCloud.rotateX((-(_rotate) * 0.02), _matrix); _ttVertexCloud.rotateY((-(_rotate) * 0.6), _matrix); _ttVertexCloud.rotateZ((-(_rotate) * 0.01), _matrix); _rotate = (_rotate + 0.01); _ttVertexCloud.perspectiveProjectionAngle(50, 350, ((120 / 180) * Math.PI), (SCREEN_DX / SCREEN_DY), _matrix); _ttVertexCloud.transform(_matrix); _ttVertexCloud.draw(_bitmapVertexCloud); addChild(_bitmapVertexCloud); if (!Input.mouseClicked){ return; }; _local1 = _mouseClickedX; _local2 = _mouseClickedY; if (isPointInside(_local1, _local2, 262, 450, 340, 483)){ toggleCreditsScreen(); toggleMainMenu(); buttonPressed(); }; } private function sendToMoFunZone(_arg1:int):void{ } private function switchToPlayMode():void{ sm_editorPlayMode = true; redrawPlayfieldLeft(); redrawPlayfieldRight(); _textFieldLevelNumber.text = "PLAY"; playBGMGame(); } public function plus200Points():void{ _plus200Points = true; if (_bitmapAllDone != null){ removeChild(_bitmapAllDone); _bitmapAllDone = null; }; if (sm_editorMode){ _bitmapAllDone = new Bitmap(new _classPerfectBalanceAllDoneEditor().bitmapData); } else { _bitmapAllDone = new Bitmap(new _classPerfectBalanceAllDone().bitmapData); }; _bitmapAllDone.smoothing = true; _bitmapAllDone.x = (PERFECT_BALANCE_CX - (_bitmapAllDone.width * 0.5)); _bitmapAllDone.y = (PERFECT_BALANCE_CY - (_bitmapAllDone.height * 0.5)); _bitmapAllDone.smoothing = true; addChild(_bitmapAllDone); } public function playStarAdded():void{ var _local1:SoundTransform; if (!_sfx){ return; }; _local1 = new SoundTransform(0.4); _audioBank._soundStar.play(0, 1, _local1); } private function addLockedLevelPackSprites():void{ var _local1:Bitmap; var _local2:int; _local2 = 0; while (_local2 < LEVEL_PACKS_MAX) { if (((sm_levelPackLocked[_local2]) && ((sm_bitmapLevelPackLocked[_local2] == null)))){ if (_local2 == 1){ _local1 = new Bitmap(new _classLockedB().bitmapData); } else { if (_local2 == 2){ _local1 = new Bitmap(new _classLockedC().bitmapData); } else { if (_local2 == 3){ _local1 = new Bitmap(new _classLockedD().bitmapData); } else { _local1 = new Bitmap(new _classLockedE().bitmapData); }; }; }; _local1.x = LEVEL_PACK_LOCKED_X[_local2]; _local1.y = 89; _local1.smoothing = true; sm_bitmapLevelPackLocked[_local2] = _local1; addChild(_local1); }; _local2++; }; } public function init(_arg1:Boolean, _arg2:Boolean, _arg3:Sprite):void{ var _local4:int; var _local5:TextFormat; var _local6:TextField; _nice = _arg1; _failed = _arg2; _black = _arg3; m_this = this; Font.registerFont(_fontClass1); SettingsLoad(); stage.focus = this; stage.quality = StageQuality.HIGH; _stageQuality = 0; addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true); addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelEvent); addEventListener(MouseEvent.MOUSE_DOWN, mousePress, false, 0, true); addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove, false, 0, true); m_fpsCounter.x = 7; m_fpsCounter.y = 5; _bitmapButtonLocked = new Bitmap(new _classButtonLocked().bitmapData); _bitmapButtonUnlocked = new Bitmap(new _classButtonUnlocked().bitmapData); _bitmapButtonUnlockedBig = new Bitmap(new _classButtonUnlockedBig().bitmapData); _titleBitmapAudioOn = new Bitmap(new _classAudioOn().bitmapData); _titleBitmapAudioOn.smoothing = true; _titleBitmapAudioOff = new Bitmap(new _classAudioOff().bitmapData); _titleBitmapAudioOff.smoothing = true; _titleBitmapAutoHideOn = new Bitmap(new _classAutoHideOn().bitmapData); _titleBitmapAutoHideOn.smoothing = true; _titleBitmapAutoHideOff = new Bitmap(new _classAutoHideOff().bitmapData); _titleBitmapAutoHideOff.smoothing = true; _bitmapButtonGrid0 = new Bitmap(new _classButtonGrid0().bitmapData); _bitmapButtonGrid0.smoothing = true; _bitmapButtonGrid1 = new Bitmap(new _classButtonGrid1().bitmapData); _bitmapButtonGrid1.smoothing = true; _bitmapButtonGrid2 = new Bitmap(new _classButtonGrid2().bitmapData); _bitmapButtonGrid2.smoothing = true; _bitmapButtonGrid3 = new Bitmap(new _classButtonGrid3().bitmapData); _bitmapButtonGrid3.smoothing = true; _bitmapButtonBGImage1 = new Bitmap(new _classButtonBGImage1().bitmapData); _bitmapButtonBGImage1.smoothing = true; _bitmapButtonBGImage2 = new Bitmap(new _classButtonBGImage2().bitmapData); _bitmapButtonBGImage2.smoothing = true; _bitmapButtonBGImage3 = new Bitmap(new _classButtonBGImage3().bitmapData); _bitmapButtonBGImage3.smoothing = true; _bitmapButtonBGImage4 = new Bitmap(new _classButtonBGImage4().bitmapData); _bitmapButtonBGImage4.smoothing = true; _bitmapButtonBGImage5 = new Bitmap(new _classButtonBGImage5().bitmapData); _bitmapButtonBGImage5.smoothing = true; _bitmapButtonBGImage6 = new Bitmap(new _classButtonBGImage6().bitmapData); _bitmapButtonBGImage6.smoothing = true; _titleBitmapQualityHigh = new Bitmap(new _classQualityHigh().bitmapData); _titleBitmapQualityHigh.smoothing = true; _titleBitmapQualityMedium = new Bitmap(new _classQualityMedium().bitmapData); _titleBitmapQualityMedium.smoothing = true; _titleBitmapQualityLow = new Bitmap(new _classQualityLow().bitmapData); _titleBitmapQualityLow.smoothing = true; _bitmapBackgroundFlash = new Bitmap(new _classBackground01().bitmapData); _bitmapBackgroundFlash.smoothing = true; _bitmapBackgroundFlash.x = 140; _bitmapBackgroundFlash.y = 10; _bitmapBackgroundFlash.visible = false; addChild(_bitmapBackgroundFlash); _bitmapGrid1 = new Bitmap(new _classGrid1().bitmapData); _bitmapGrid1.smoothing = true; _bitmapGrid1.x = 140; _bitmapGrid1.y = 10; _bitmapGrid1.visible = false; _bitmapGrid2 = new Bitmap(new _classGrid2().bitmapData); _bitmapGrid2.smoothing = true; _bitmapGrid2.x = 140; _bitmapGrid2.y = 10; _bitmapGrid2.visible = false; _bitmapGrid3 = new Bitmap(new _classGrid3().bitmapData); _bitmapGrid3.smoothing = true; _bitmapGrid3.x = 140; _bitmapGrid3.y = 10; _bitmapGrid3.visible = false; addChild(_bitmapGrid1); addChild(_bitmapGrid2); addChild(_bitmapGrid3); _local5 = new TextFormat("Geometr231 Hv BT", 36, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = (300 - 100); _local6.y = (144 - 20); _local6.width = 200; _local6.height = 40; _local6.alpha = 0.2; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _local6.cacheAsBitmap = true; addChild(_local6); _textFieldLevelNumber = _local6; _textFieldLevelNumber.visible = true; _local5 = new TextFormat("Geometr231 Hv BT", 42, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.width = 100; _local6.height = 60; _local6.alpha = 1; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _textFieldLevelSkipsForCopy = _local6; _textFieldLevelSkipsForCopy.visible = true; _local5 = new TextFormat("Geometr231 Hv BT", 36, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = 60; _local6.y = 370; _local6.width = 100; _local6.height = 60; _local6.alpha = 1; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; addChild(_local6); _textFieldLPSLevelSkips = _local6; _textFieldLPSLevelSkips.visible = false; _local5 = new TextFormat("Geometr231 Hv BT", 26, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = 282; _local6.y = 351; if (!MyPreloader._submitButtonDiamonds){ _local6.y = (_local6.y + 16); }; _local6.width = 100; _local6.height = 60; _local6.alpha = 1; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; addChild(_local6); _textFieldLPSDiamonds = _local6; _textFieldLPSDiamonds.visible = false; _local5 = new TextFormat("Geometr231 Hv BT", 30, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = 390; _local6.y = 374; if (MyPreloader._freeOnlineGames){ _local6.y = (_local6.y + 13); }; _local6.width = 200; _local6.height = 40; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.cacheAsBitmap = true; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; addChild(_local6); _textFieldLPSTotalScore = _local6; _textFieldLPSTotalScore.visible = false; _local4 = 0; while (_local4 < LEVEL_PACKS_MAX) { _local5 = new TextFormat("Geometr231 Hv BT", 20, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = ((_local4 * 110) + 31); _local6.y = (175 + 8); _local6.width = 100; _local6.height = 40; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.cacheAsBitmap = true; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _local6.visible = false; addChild(_local6); _textFieldLPSTotalScores[_local4] = _local6; _local4++; }; if (MyPreloader._localHighscores){ _local4 = 0; while (_local4 < LEVEL_PACKS_MAX) { _local5 = new TextFormat("Geometr231 Hv BT", 15, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = ((_local4 * 110) + 31); _local6.y = 294; _local6.width = 100; _local6.height = 40; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.cacheAsBitmap = true; _local6.text = "HI - 0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _local6.visible = false; addChild(_local6); _textFieldLPSTotalScoresBest[_local4] = _local6; _local4++; }; _local5 = new TextFormat("Geometr231 Hv BT", 15, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = (300 - 50); _local6.y = (406 - 10); _local6.width = 100; _local6.height = 40; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.cacheAsBitmap = true; _local6.text = "HI - 0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _local6.visible = false; addChild(_local6); _textFieldLPSDiamondsBest = _local6; _local5 = new TextFormat("Geometr231 Hv BT", 15, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = (487 - 47); _local6.y = 409; _local6.width = 100; _local6.height = 40; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.cacheAsBitmap = true; _local6.text = "HI - 0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _local6.visible = false; addChild(_local6); _textFieldLPSGrandTotalBest = _local6; }; _local5 = new TextFormat("Geometr231 Hv BT", 20, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.width = 100; _local6.height = 24; _local6.alpha = 0.5; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _textFieldLevelNumberForDataCopySmall = _local6; _textFieldLevelNumberForDataCopySmall.visible = true; _local5 = new TextFormat("Geometr231 Hv BT", 32, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.width = 100; _local6.height = 36; _local6.alpha = 1; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _textFieldLevelNumberForDataCopyBig = _local6; _textFieldLevelNumberForDataCopyBig.visible = true; m_sprite = new Sprite(); addChild(m_sprite); m_input = new Input(m_sprite); _bitmapPlayfieldTop = new Bitmap(new _classPlayfieldTop().bitmapData); _bitmapPlayfieldTop.smoothing = true; _bitmapPlayfieldTop.x = 0; _bitmapPlayfieldTop.y = 0; _bitmapPlayfieldTop.visible = false; addChild(_bitmapPlayfieldTop); _bitmapPlayfieldBottom = new Bitmap(new _classPlayfieldBottom().bitmapData); _bitmapPlayfieldBottom.smoothing = true; _bitmapPlayfieldBottom.x = 0; _bitmapPlayfieldBottom.y = 490; _bitmapPlayfieldBottom.visible = false; addChild(_bitmapPlayfieldBottom); _bitmapPlayfieldLeft = new Bitmap(new _classPlayfieldLeft().bitmapData); _bitmapPlayfieldLeft.smoothing = true; _bitmapPlayfieldLeft.x = 0; _bitmapPlayfieldLeft.y = 0; _bitmapPlayfieldLeft.visible = false; addChild(_bitmapPlayfieldLeft); _bitmapPlayfieldRightSource = new Bitmap(new _classPlayfieldRight().bitmapData); _bitmapPlayfieldRight = new Bitmap(new _classPlayfieldRight().bitmapData); _bitmapPlayfieldRight.smoothing = true; _bitmapPlayfieldRight.x = (600 - 140); _bitmapPlayfieldRight.y = 0; _bitmapPlayfieldRight.visible = false; addChild(_bitmapPlayfieldRight); _local5 = new TextFormat("Geometr231 Hv BT", 30, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = ((68 - 100) + 4); _local6.y = ((337 - 20) - 46); _local6.width = 200; _local6.height = 40; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = ""; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; addChild(_local6); _textFieldBonus = _local6; _textFieldBonus.visible = true; _local5 = new TextFormat("Geometr231 Hv BT", 30, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = ((68 - 100) + 4); _local6.y = ((277 - 20) - 46); _local6.width = 200; _local6.height = 40; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _local6.cacheAsBitmap = true; addChild(_local6); _textFieldBest = _local6; _textFieldBest.visible = true; _local5 = new TextFormat("Geometr231 Hv BT", 30, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = ((68 - 100) + 4); _local6.y = ((216 - 20) - 46); _local6.width = 200; _local6.height = 40; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; _local6.cacheAsBitmap = true; addChild(_local6); _textFieldTotal = _local6; _textFieldTotal.visible = true; _local5 = new TextFormat("Geometr231 Hv BT", 26, 0xFFFFFF, false, false, false); _local5.align = TextFormatAlign.CENTER; _local6 = new TextField(); _local6.defaultTextFormat = _local5; _local6.x = 82; _local6.y = (400 - 3); _local6.width = 40; _local6.height = 60; _local6.alpha = 1; _local6.embedFonts = true; _local6.mouseEnabled = false; _local6.text = "0"; setTextFilters(_local6); _local6.antiAliasType = AntiAliasType.ADVANCED; addChild(_local6); _textFieldDiamonds = _local6; _textFieldDiamonds.visible = false; CalculateTotalScore(); _audioBank = new Audio(); m_particleManager.initialize(); m_spriteParticleManager.initialize(); toggleMainMenu(); _bitmapStar = new Bitmap(new _classStar().bitmapData); _bitmapStar.smoothing = true; _bitmapSkippedArrowToLeft = new Bitmap(new _classSkippedArrowToLeft().bitmapData); _bitmapSkippedArrowToLeft.smoothing = true; _bitmapSkippedArrowToRight = new Bitmap(new _classSkippedArrowToRight().bitmapData); _bitmapSkippedArrowToRight.smoothing = true; _bitmapSealBack = new Bitmap(new _classSealBack().bitmapData); _bitmapSealBack.x = -10000; _bitmapSealBack.y = 0; _bitmapSealBack.smoothing = true; _bitmapSealBack.visible = true; addChild(_bitmapSealBack); _bitmapSealFront = new Bitmap(new _classSealFront().bitmapData); _bitmapSealFront.x = -10000; _bitmapSealFront.y = 0; _bitmapSealFront.smoothing = true; _bitmapSealFront.visible = true; addChild(_bitmapSealFront); if (!MyPreloader._ttursasSeal){ _bitmapSealBack.visible = false; _bitmapSealFront.visible = false; }; _bitmapPlus50Points = new Bitmap(new _classPlus50Points().bitmapData); _bitmapPlus50Points.x = (300 - (_bitmapPlus50Points.width * 0.5)); _bitmapPlus50Points.y = 420; _bitmapPlus50Points.smoothing = true; _bitmapPlus50Points.visible = false; addChild(_bitmapPlus50Points); _bitmapPlus200Points = new Bitmap(new _classPlus200Points().bitmapData); _bitmapPlus200Points.x = (300 - (_bitmapPlus200Points.width * 0.5)); _bitmapPlus200Points.y = 420; _bitmapPlus200Points.smoothing = true; _bitmapPlus200Points.visible = false; addChild(_bitmapPlus200Points); addChild(_bitmapParticleLayer); _bitmapTextureA = new Bitmap(new _classTextureA().bitmapData); _bitmapTextureA.smoothing = true; _bitmapCursorHelper = new Bitmap(new _classCursorHelper().bitmapData); _bitmapCursorHelper.smoothing = true; _bitmapCursorHelper.visible = true; _bitmapCursorHelper.alpha = 0; _bitmapCursorHelper.scaleX = 0.7; _bitmapCursorHelper.scaleY = 0.7; addChild(_bitmapCursorHelper); addChild(_black); SoundMixer.stopAll(); } public function runTheEnd():void{ if (_bitmapTheEnd.alpha < 1){ _bitmapTheEnd.alpha = (_bitmapTheEnd.alpha + 0.1); if (_bitmapTheEnd.alpha >= 1){ _bitmapTheEnd.alpha = 1; if (sm_levelPack == 0){ _bitmapLetter = new Bitmap(new _classLetterA().bitmapData); } else { if (sm_levelPack == 1){ _bitmapLetter = new Bitmap(new _classLetterB().bitmapData); } else { if (sm_levelPack == 2){ _bitmapLetter = new Bitmap(new _classLetterC().bitmapData); } else { if (sm_levelPack == 3){ _bitmapLetter = new Bitmap(new _classLetterD().bitmapData); } else { if (sm_levelPack == 4){ _bitmapLetter = new Bitmap(new _classLetterE().bitmapData); }; }; }; }; }; _bitmapLetter.scaleX = 3; _bitmapLetter.scaleY = 3; _bitmapLetter.alpha = 0; _bitmapLetter.smoothing = true; runTheEndLevelPackLetter(); addChild(_bitmapLetter); }; return; }; runTheEndLevelPackLetter(); runTheEndGrade(); runTheEndParticles(); if ((((_bitmapGrade == null)) || ((_bitmapGrade.scaleX > 1.01)))){ return; }; if (Input.mouseClicked){ if ((((((((Input.mouseScreenX >= 245)) && ((Input.mouseScreenY >= 444)))) && ((Input.mouseScreenX <= 349)))) && ((Input.mouseScreenY <= 489)))){ closeTheEndScreen(); toggleLevelPackSelection(); buttonPressed(); if (((MyPreloader._mindJolt) && (!((MyPreloader.MindJoltAPI == null))))){ if (sm_levelPack == 0){ MyPreloader.MindJoltAPI.service.submitScore(CalculateLevelPackScore(0), "LevelPackA"); } else { if (sm_levelPack == 1){ MyPreloader.MindJoltAPI.service.submitScore(CalculateLevelPackScore(1), "LevelPackB"); } else { if (sm_levelPack == 2){ MyPreloader.MindJoltAPI.service.submitScore(CalculateLevelPackScore(2), "LevelPackC"); } else { if (sm_levelPack == 3){ MyPreloader.MindJoltAPI.service.submitScore(CalculateLevelPackScore(3), "LevelPackD"); } else { if (sm_levelPack == 4){ MyPreloader.MindJoltAPI.service.submitScore(CalculateLevelPackScore(4), "LevelPackE"); }; }; }; }; }; }; }; }; } private function runTheEndParticles():void{ var _local1:int; var _local2:int; var _local3:Particle; var _local4:int; var _local5:SpriteParticle; if (_theEndParticles > 0){ _local4 = 0; while (_local4 < 2) { _theEndParticles--; _local1 = (20 * Math.random()); if ((_theEndParticles & 1) == 0){ _local1 = (_local1 + (115 - 10)); } else { _local1 = (_local1 + ((SCREEN_DX - 115) - 10)); }; _local5 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_BALL_YELLOW, _local1, SCREEN_DY); if (_local5 != null){ _local5._speedY = (-2 - (Math.random() * 1)); _local5._speedX = ((Math.random() - 0.5) * 0.8); }; _local4++; }; }; if (Math.random() < 0.85){ return; }; _local1 = (SCREEN_DX * Math.random()); _local2 = 0; _local3 = m_particleManager.addParticle(Particle.PARTICLE_TYPE_SILVER_RAIN, _local1, _local2, 4294967295); if (_local3 != null){ _local3._speedY = (2 + (Math.random() * 1)); }; } private function closeLevelIOWindow():void{ if (_bitmapLevelIO != null){ removeChild(_bitmapLevelIO); _bitmapLevelIO = null; }; removeChild(_levelDataTextField); _levelDataTextField = null; } private function runMouseHelper():void{ removeChild(_bitmapCursorHelper); addChild(_bitmapCursorHelper); if (((((((((!((sm_levelPack == 0))) || (!((m_currId == 1))))) || ((m_currTest == null)))) || ((m_currTest.m_mouseBody == null)))) || (areWeInMenu()))){ _bitmapCursorHelper.alpha = (_bitmapCursorHelper.alpha - 0.1); if (_bitmapCursorHelper.alpha < 0){ _bitmapCursorHelper.alpha = 0; }; return; }; _bitmapCursorHelper.alpha = (_bitmapCursorHelper.alpha + 0.1); if (_bitmapCursorHelper.alpha > 1){ _bitmapCursorHelper.alpha = 1; }; _bitmapCursorHelper.x = (_mouseX - (_bitmapCursorHelper.width * 0.5)); _bitmapCursorHelper.y = ((_mouseY - (_bitmapCursorHelper.height * 0.5)) + 10); } private function playButtonSound():void{ var _local1:SoundTransform; if (_sfx){ _local1 = new SoundTransform(0.3); _audioBank._soundMenuButton.play(0, 1, _local1); }; } private function starsAddTest():void{ var _local1:BitmapData; var _local2:BitmapData; var _local3:int; var _local4:int; var _local5:int; var _local6:Number; var _local7:int; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Particle; _local1 = _bitmapLevelPackSelection.bitmapData; _local2 = _bitmapStar.bitmapData; _local3 = 0; while (_local3 < LEVEL_PACKS_MAX) { _local4 = CalculateLevelPackScore(_local3); _local5 = CalculateGrade(_local4, _local3); if (sm_openLevels[_local3] < (LEVELS_PER_LEVEL_PACK + 1)){ _local5 = 0; }; if (_local5 > sm_starsAdded[_local3]){ _local6 = (STAR_ROWS_X[_local3] + (19 * sm_starsAdded[_local3])); _local1.draw(_local2, new Matrix(1, 0, 0, 1, _local6, 92), null, null, null, true); var _local13 = sm_starsAdded; var _local14 = _local3; var _local15 = (_local13[_local14] + 1); _local13[_local14] = _local15; sm_starsAddTimer = 60; SettingsSave(); playStarAdded(); _local7 = 0; while (_local7 < 32) { _local8 = ((Math.random() * Math.PI) * 2); _local9 = ((Math.random() * 0.5) + 0.5); _local10 = (Math.cos(_local8) * _local9); _local11 = (Math.sin(_local8) * _local9); _local12 = m_particleManager.addParticle(Particle.PARTICLE_TYPE_EXPLOSION, (_local6 + 10), (92 + 10), 4294696763); if (_local12 != null){ _local12._life = (_local12._life + (Math.random() * 20)); _local12._speedX = _local10; _local12._speedY = _local11; }; _local7++; }; }; _local3++; }; } private function exitPlaying():void{ _bitmapBackgroundFlash.visible = false; _bitmapPlayfieldLeft.visible = false; _bitmapPlayfieldRight.visible = false; _bitmapPlayfieldTop.visible = false; _bitmapPlayfieldBottom.visible = false; _textFieldBest.visible = false; _textFieldTotal.visible = false; _textFieldBonus.visible = false; _textFieldDiamonds.visible = false; removeChild(_titleBitmapAudioOn); removeChild(_titleBitmapAudioOff); removeChild(_titleBitmapAutoHideOn); removeChild(_titleBitmapAutoHideOff); removeChild(_titleBitmapQualityHigh); removeChild(_titleBitmapQualityMedium); removeChild(_titleBitmapQualityLow); if (sm_editorMode){ sm_editorMode = false; toggleMainMenu(); removeChild(_bitmapButtonGrid0); removeChild(_bitmapButtonGrid1); removeChild(_bitmapButtonGrid2); removeChild(_bitmapButtonGrid3); removeChild(_bitmapButtonBGImage1); removeChild(_bitmapButtonBGImage2); removeChild(_bitmapButtonBGImage3); removeChild(_bitmapButtonBGImage4); removeChild(_bitmapButtonBGImage5); removeChild(_bitmapButtonBGImage6); removeChild(_bitmapEditorHelpDimensions); _bitmapEditorHelpDimensions = null; removeChild(_bitmapEditorHelpRadius); _bitmapEditorHelpRadius = null; if (_bitmapEditorHelp != null){ removeChild(_bitmapEditorHelp); _bitmapEditorHelp = null; }; if (sm_editorPlayMode){ playBGMMenu(); }; } else { toggleLevelPackSelection(); playBGMMenu(); }; SettingsSave(); if (_bitmapAllDone != null){ removeChild(_bitmapAllDone); _bitmapAllDone = null; }; if (_bitmapChooseAShape != null){ removeChild(_bitmapChooseAShape); _bitmapChooseAShape = null; }; } public function redrawPlayfieldRight():void{ var _local1:BitmapData; var _local2:BitmapData; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:b2Body; var _local8:UserData; var _local9:Bitmap; var _local10:int; var _local11:Number; var _local12:Number; var _local13:Matrix; var _local14:int; var _local15:int; var _local16:Number; if (sm_editorMode){ if (sm_editorPlayMode){ _local1 = new _classPlayfieldRightEditorPlay().bitmapData; } else { _local1 = new _classPlayfieldRightEditorEdit().bitmapData; }; } else { _local1 = _bitmapPlayfieldRightSource.bitmapData; }; _local2 = _bitmapPlayfieldRight.bitmapData; _local2.copyPixels(_local1, new Rectangle(0, 0, 140, 500), new Point(0, 0)); if (sm_editorMode){ if (sm_editorPlayMode){ return; }; _local7 = m_currTest.cloneBody(null, false, sm_editorBlockID, 30, 0, 30, 30, 0, 0); _local8 = _local7.GetUserData(); m_currTest.CreateSpriteForBody(_local7); _local9 = _local7.m_userData._sprite; m_currTest.m_sprite.removeChild(_local9); _local8._sprite = null; _local10 = _local8._iD; m_currTest.DestroyBody(_local7); if (_local9 != null){ _local9.scaleX = 1; _local9.scaleY = 1; _local11 = (_local9.width * 0.5); _local12 = (_local9.height * 0.5); _local13 = new Matrix(); _local13.translate(-(_local11), -(_local12)); _local13.scale(0.75, 0.75); if ((((((((((((((((((((((((((((_local10 == 10)) || ((_local10 == 11)))) || ((_local10 == 12)))) || ((_local10 == 15)))) || ((_local10 == 19)))) || ((_local10 == 24)))) || ((_local10 == 31)))) || ((_local10 == 33)))) || ((_local10 == 37)))) || ((_local10 == 38)))) || ((_local10 == 40)))) || ((_local10 == 58)))) || ((_local10 == 60)))) || ((_local10 == 65)))){ _local13.rotate(((90 / 180) * Math.PI)); }; _local13.translate(70, 295); _local2.draw(_local9, _local13, null, null, null, true); }; return; }; _textFieldLevelSkipsForCopy.text = ("" + sm_levelSkips); _local2.draw(_textFieldLevelSkipsForCopy, new Matrix(1, 0, 0, 1, 23, 372), null, null, null, true); _local6 = 0; _local3 = 0; while (_local3 < LEVELS_PER_LEVEL_PACK) { if (_local3 == m_currId){ _local1 = _bitmapButtonUnlockedBig.bitmapData; } else { if (_local3 < sm_openLevels[sm_levelPack]){ _local1 = _bitmapButtonUnlocked.bitmapData; } else { _local1 = _bitmapButtonLocked.bitmapData; }; }; if ((_local3 & 1) == 0){ _local4 = (44 - 1); } else { _local4 = (64 + 1); }; _local5 = ((_local3 * 25) + 20); _local14 = 36; if (_local3 == m_currId){ _local4 = (_local4 - 4); _local5 = (_local5 - 4); _local14 = 44; }; var _temp1 = _local6; _local6 = (_local6 + 1); var _local17 = _temp1; _levelButtonCoordinates[_local17] = ((_local4 + (_local14 >> 1)) + _bitmapPlayfieldRight.x); var _temp2 = _local6; _local6 = (_local6 + 1); var _local18 = _temp2; _levelButtonCoordinates[_local18] = ((_local5 + (_local14 >> 1)) + _bitmapPlayfieldRight.y); _local2.copyPixels(_local1, new Rectangle(0, 0, _local14, _local14), new Point(_local4, _local5)); if (_local3 < sm_openLevels[sm_levelPack]){ if (_local3 == m_currId){ _textFieldLevelNumberForDataCopyBig.text = ("" + (_local3 + 1)); _local2.draw(_textFieldLevelNumberForDataCopyBig, new Matrix(1, 0, 0, 1, (((_local4 + 18) - 50) + 4), ((_local5 + 18) - 18)), null, null, null, true); } else { _textFieldLevelNumberForDataCopySmall.text = ("" + (_local3 + 1)); _local2.draw(_textFieldLevelNumberForDataCopySmall, new Matrix(1, 0, 0, 1, ((_local4 + 18) - 50), (((_local5 + 18) - 12) - 2)), null, null, null, true); }; }; _local3++; }; _local3 = 0; while (_local3 < LEVELS_PER_LEVEL_PACK) { _local15 = ((sm_levelPack * LEVELS_PER_LEVEL_PACK) + _local3); if (!sm_skipped[_local15]){ } else { _local16 = 0; if ((_local3 & 1) == 0){ _local1 = _bitmapSkippedArrowToLeft.bitmapData; _local16 = 20; } else { _local1 = _bitmapSkippedArrowToRight.bitmapData; _local16 = -79; }; _local2.draw(_local1, new Matrix(1, 0, 0, 1, ((_levelButtonCoordinates[((_local3 * 2) + 0)] + _local16) - _bitmapPlayfieldRight.x), ((_levelButtonCoordinates[((_local3 * 2) + 1)] - _bitmapPlayfieldRight.y) - 8)), null, null, null, true); }; _local3++; }; } public function runInstructionsMenu():void{ if (Input.mouseClicked){ if ((((((((Input.mouseScreenX >= 189)) && ((Input.mouseScreenY >= 444)))) && ((Input.mouseScreenX <= 291)))) && ((Input.mouseScreenY <= 489)))){ toggleInstructions(); toggleMainMenu(); buttonPressed(); }; if ((((((((Input.mouseScreenX >= 302)) && ((Input.mouseScreenY >= 444)))) && ((Input.mouseScreenX <= 406)))) && ((Input.mouseScreenY <= 489)))){ _instructionsGame = !(_instructionsGame); toggleInstructions(); toggleInstructions(); buttonPressed(); }; }; } private function startPlaying():void{ redrawInGameBG(); _bitmapBackgroundFlash.visible = true; _bitmapPlayfieldLeft.visible = true; _bitmapPlayfieldRight.visible = true; _bitmapPlayfieldTop.visible = true; _bitmapPlayfieldBottom.visible = true; redrawPlayfieldRight(); _textFieldBest.visible = true; _textFieldTotal.visible = true; _textFieldBonus.visible = true; _textFieldDiamonds.visible = true; _titleBitmapAudioOn.x = (55 - 2); _titleBitmapAudioOn.y = 15; _titleBitmapAudioOff.x = (55 - 2); _titleBitmapAudioOff.y = 15; if (MyPreloader._chinese){ if (sm_editorMode){ _titleBitmapAutoHideOn.x = 4; _titleBitmapAutoHideOn.y = ((53 - 5) + 8); _titleBitmapAutoHideOff.x = 4; _titleBitmapAutoHideOff.y = ((53 - 5) + 8); _titleBitmapQualityHigh.x = (70 + 2); _titleBitmapQualityHigh.y = ((53 - 5) + 8); _titleBitmapQualityMedium.x = (70 + 2); _titleBitmapQualityMedium.y = ((53 - 5) + 8); _titleBitmapQualityLow.x = (70 + 2); _titleBitmapQualityLow.y = ((53 - 5) + 8); } else { _titleBitmapAutoHideOn.x = (70 - 32); _titleBitmapAutoHideOn.y = ((53 - 5) + 8); _titleBitmapAutoHideOff.x = (70 - 32); _titleBitmapAutoHideOff.y = ((53 - 5) + 8); _titleBitmapQualityHigh.x = (70 - 32); _titleBitmapQualityHigh.y = 330; _titleBitmapQualityMedium.x = (70 - 32); _titleBitmapQualityMedium.y = 330; _titleBitmapQualityLow.x = (70 - 32); _titleBitmapQualityLow.y = 330; }; } else { _titleBitmapAutoHideOn.x = (18 - 2); _titleBitmapAutoHideOn.y = (53 - 5); _titleBitmapAutoHideOff.x = (18 - 2); _titleBitmapAutoHideOff.y = (53 - 5); _titleBitmapQualityHigh.x = (78 - 2); _titleBitmapQualityHigh.y = (53 - 5); _titleBitmapQualityMedium.x = (78 - 2); _titleBitmapQualityMedium.y = (53 - 5); _titleBitmapQualityLow.x = (78 - 2); _titleBitmapQualityLow.y = (53 - 5); }; if (sm_editorMode){ if (MyPreloader._chinese){ _bitmapButtonGrid0.x = 4; _bitmapButtonGrid0.y = 330; _bitmapButtonGrid1.x = 4; _bitmapButtonGrid1.y = 330; _bitmapButtonGrid2.x = 4; _bitmapButtonGrid2.y = 330; _bitmapButtonGrid3.x = 4; _bitmapButtonGrid3.y = 330; _bitmapButtonBGImage1.x = 72; _bitmapButtonBGImage1.y = 330; _bitmapButtonBGImage2.x = 72; _bitmapButtonBGImage2.y = 330; _bitmapButtonBGImage3.x = 72; _bitmapButtonBGImage3.y = 330; _bitmapButtonBGImage4.x = 72; _bitmapButtonBGImage4.y = 330; _bitmapButtonBGImage5.x = 72; _bitmapButtonBGImage5.y = 330; _bitmapButtonBGImage6.x = 72; _bitmapButtonBGImage6.y = 330; } else { _bitmapButtonGrid0.x = (((78 + 18) * 0.5) - 2); _bitmapButtonGrid0.y = 85; _bitmapButtonGrid1.x = (((78 + 18) * 0.5) - 2); _bitmapButtonGrid1.y = 85; _bitmapButtonGrid2.x = (((78 + 18) * 0.5) - 2); _bitmapButtonGrid2.y = 85; _bitmapButtonGrid3.x = (((78 + 18) * 0.5) - 2); _bitmapButtonGrid3.y = 85; _bitmapButtonBGImage1.x = 45; _bitmapButtonBGImage1.y = 335; _bitmapButtonBGImage2.x = 45; _bitmapButtonBGImage2.y = 335; _bitmapButtonBGImage3.x = 45; _bitmapButtonBGImage3.y = 335; _bitmapButtonBGImage4.x = 45; _bitmapButtonBGImage4.y = 335; _bitmapButtonBGImage5.x = 45; _bitmapButtonBGImage5.y = 335; _bitmapButtonBGImage6.x = 45; _bitmapButtonBGImage6.y = 335; }; addChild(_bitmapButtonGrid0); addChild(_bitmapButtonGrid1); addChild(_bitmapButtonGrid2); addChild(_bitmapButtonGrid3); addChild(_bitmapButtonBGImage1); addChild(_bitmapButtonBGImage2); addChild(_bitmapButtonBGImage3); addChild(_bitmapButtonBGImage4); addChild(_bitmapButtonBGImage5); addChild(_bitmapButtonBGImage6); }; addChild(_titleBitmapAudioOn); addChild(_titleBitmapAudioOff); addChild(_titleBitmapAutoHideOn); addChild(_titleBitmapAutoHideOff); addChild(_titleBitmapQualityHigh); addChild(_titleBitmapQualityMedium); addChild(_titleBitmapQualityLow); manageAudioOnOff(); manageAutoHideOnOff(); manageQuality(); manageBGImages(); } public function runTitleScreen():void{ var _local1:int; runTitleLogo(); runTitleParticles(); if (Input.mouseClicked){ if ((((((((Input.mouseScreenX >= 244)) && ((Input.mouseScreenY >= 196)))) && ((Input.mouseScreenX <= 349)))) && ((Input.mouseScreenY <= 245)))){ buttonPressed(); toggleMainMenu(); toggleLevelPackSelection(); }; if ((((((((Input.mouseScreenX >= 238)) && ((Input.mouseScreenY >= 287)))) && ((Input.mouseScreenX <= 360)))) && ((Input.mouseScreenY <= 328)))){ buttonPressed(); toggleMainMenu(); startEditor(); if (sm_editorPlayMode){ playBGMGame(); }; }; if ((((((((Input.mouseScreenX >= 204)) && ((Input.mouseScreenY >= 329)))) && ((Input.mouseScreenX <= 394)))) && ((Input.mouseScreenY <= 368)))){ buttonPressed(); toggleMainMenu(); toggleInstructions(); }; if (((((((((!(MyPreloader._freeOnlineGames)) && ((Input.mouseScreenX >= 240)))) && ((Input.mouseScreenY >= (400 - 30))))) && ((Input.mouseScreenX <= 360)))) && ((Input.mouseScreenY <= (437 - 30))))){ buttonPressed(); toggleMainMenu(); toggleCreditsScreen(); }; if (((((((((MyPreloader._andkon) && ((Input.mouseScreenX >= 195)))) && ((Input.mouseScreenY >= 410)))) && ((Input.mouseScreenX <= 403)))) && ((Input.mouseScreenY <= 447)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.andkon.com/arcade/"), "_blank"); }; if (((((((((MyPreloader._moFunZone) && ((Input.mouseScreenX >= 176)))) && ((Input.mouseScreenY >= 406)))) && ((Input.mouseScreenX <= 419)))) && ((Input.mouseScreenY <= 444)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.MoFunZone.com/"), "_blank"); }; if (isPointInsideBitmap(_titleBitmapAudioOn, Input.mouseScreenX, Input.mouseScreenY)){ _sfx = !(_sfx); if (_sfx){ playBGMMenu(); } else { SoundMixer.stopAll(); }; manageAudioOnOff(); SettingsSave(); }; if (MyPreloader._ttursasSeal){ if ((((((((Input.mouseScreenX >= 0)) && ((Input.mouseScreenY >= 400)))) && ((Input.mouseScreenX <= 100)))) && ((Input.mouseScreenY <= 500)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.ttursas.com")); }; }; if (((((((((MyPreloader._legitGames) && ((Input.mouseScreenX >= 11)))) && ((Input.mouseScreenY >= 414)))) && ((Input.mouseScreenX <= 155)))) && ((Input.mouseScreenY <= 476)))){ buttonPressed(); navigateToURL(new URLRequest("http://legitgames.com/index.php?pageid=PerfectBalance2")); }; if (((((((((MyPreloader._armorGames) && ((Input.mouseScreenX >= 0)))) && ((Input.mouseScreenY >= 430)))) && ((Input.mouseScreenX <= 190)))) && ((Input.mouseScreenY <= 500)))){ buttonPressed(); navigateToURL(new URLRequest("http://armorgames.com")); }; if (((((((((MyPreloader._andkon) && ((Input.mouseScreenX >= 11)))) && ((Input.mouseScreenY >= 397)))) && ((Input.mouseScreenX <= 103)))) && ((Input.mouseScreenY <= 487)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.andkon.com/arcade/")); }; if (((((((((MyPreloader._freeOnlineGames) && ((Input.mouseScreenX >= 14)))) && ((Input.mouseScreenY >= 404)))) && ((Input.mouseScreenX <= 144)))) && ((Input.mouseScreenY <= 474)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.freeonlinegames.com")); }; if (((((((((MyPreloader._moFunZone) && ((Input.mouseScreenX >= 10)))) && ((Input.mouseScreenY >= 432)))) && ((Input.mouseScreenX <= 211)))) && ((Input.mouseScreenY <= 487)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.MoFunZone.com/"), "_blank"); }; if (MyPreloader._titleScreenAds){ if ((((((((Input.mouseScreenX >= 38)) && ((Input.mouseScreenY >= 250)))) && ((Input.mouseScreenX <= (38 + 34))))) && ((Input.mouseScreenY <= (250 + 34))))){ buttonPressed(); navigateToURL(new URLRequest("http://www.facebook.com/pages/Perfect-Balance/90125810497"), "_blank"); }; if ((((((((Input.mouseScreenX >= 38)) && ((Input.mouseScreenY >= 291)))) && ((Input.mouseScreenX <= (38 + 34))))) && ((Input.mouseScreenY <= (291 + 34))))){ buttonPressed(); navigateToURL(new URLRequest("http://www.twitter.com/ttursas"), "_blank"); }; }; }; } private function startLevelPack(_arg1:int):void{ buttonPressed(false); sm_levelPack = _arg1; m_currId = 0; recreateLevel(); redrawPlayfieldRight(); redrawPlayfieldLeft(); toggleLevelPackSelection(); playBGMGame(); startPlaying(); } private function levelPackUnlockTest():void{ var _local1:int; var _local2:int; var _local3:Bitmap; _local1 = CalculateTotalDiamonds(); _local2 = 0; while (_local2 < LEVEL_PACKS_MAX) { if (((sm_levelPackLocked[_local2]) && ((_local1 >= LEVEL_PACK_LIMITS[_local2])))){ sm_levelPackLocked[_local2] = false; _local3 = sm_bitmapLevelPackLocked[_local2]; if (_local3 != null){ sm_bitmapLevelPackLocked[_local2] = null; removeChild(_local3); createLockedSubSprites(_local3); playExplosion(); }; SettingsSave(); }; _local2++; }; } private function isPointInsideCircle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Boolean{ var _local6:Number; var _local7:Number; var _local8:Number; _local6 = (_arg1 - _arg3); _local7 = (_arg2 - _arg4); _local8 = ((_local6 * _local6) + (_local7 * _local7)); if (_local8 < (_arg5 * _arg5)){ return (true); }; return (false); } private function CalculateTotalScoreBest():int{ var _local1:int; var _local2:int; _local1 = 0; _local2 = 0; while (_local2 < (LEVEL_PACKS_MAX * LEVELS_PER_LEVEL_PACK)) { _local1 = (_local1 + sm_scoresBest[_local2]); _local2++; }; return (_local1); } private function toggleGet20Screen():void{ var _local1:int; var _local2:TextFormat; var _local3:TextField; var _local4:int; var _local5:int; if (_bitmapGet20Screen == null){ _bitmapGet20Screen = new Bitmap(new _classGet20Screen().bitmapData); _bitmapGet20Screen.smoothing = true; addChild(_bitmapGet20Screen); _local1 = 0; while (_local1 < 20) { _local4 = 200; _local5 = (64 + (_local1 * 18)); _local2 = new TextFormat("Geometr231 Hv BT", 16, 0xFFFFFF, false, false, false); _local2.align = TextFormatAlign.LEFT; _local3 = new TextField(); _local3.defaultTextFormat = _local2; _local3.x = _local4; _local3.y = _local5; _local3.width = 75; _local3.height = 20; _local3.embedFonts = true; _local3.mouseEnabled = false; _local3.text = "..."; setTextFilters(_local3, false); _local3.antiAliasType = AntiAliasType.ADVANCED; _local3.cacheAsBitmap = true; addChild(_local3); _viewScoresScore[_local1] = _local3; _local2 = new TextFormat("Geometr231 Hv BT", 16, 0xFFFFFF, false, false, false); _local2.align = TextFormatAlign.LEFT; _local3 = new TextField(); _local3.defaultTextFormat = _local2; _local3.x = (_local4 + 80); _local3.y = _local5; _local3.width = 250; _local3.height = 20; _local3.embedFonts = true; _local3.mouseEnabled = false; _local3.text = "???"; setTextFilters(_local3, false); _local3.antiAliasType = AntiAliasType.ADVANCED; _local3.cacheAsBitmap = true; addChild(_local3); _viewScoresName[_local1] = _local3; _local1++; }; _movieClipGamesFreeButton = MyPreloader.GetGamesFreeButton(); addChild(_movieClipGamesFreeButton); _movieClipGamesFreeButton.x = 124; _movieClipGamesFreeButton.y = 430; _movieClipGamesFreeButton.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownGamesFree); } else { _local1 = 0; while (_local1 < 20) { removeChild(_viewScoresScore[_local1]); _viewScoresScore[_local1] = null; removeChild(_viewScoresName[_local1]); _viewScoresName[_local1] = null; _local1++; }; removeChild(_movieClipGamesFreeButton); _movieClipGamesFreeButton = null; removeChild(_bitmapGet20Screen); _bitmapGet20Screen = null; }; } private function CalculateTotalScore():int{ var _local1:int; var _local2:int; _local1 = 0; _local2 = 0; while (_local2 < (LEVEL_PACKS_MAX * LEVELS_PER_LEVEL_PACK)) { _local1 = (_local1 + sm_scores[_local2]); _local2++; }; if (sm_editorMode){ _textFieldTotal.text = _textFieldBest.text; } else { _textFieldTotal.text = ("" + CalculateLevelPackScore(sm_levelPack)); }; return (_local1); } public function doWeHaveGamerSafe():Boolean{ if (((((MyPreloader._gamerSafe) && (!((MyPreloader._gamerSafeAPI == null))))) && (GamerSafe.api.loaded))){ return (true); }; return (false); } public function playFireWork():void{ var _local1:SoundTransform; var _local2:Number; if (!_sfx){ return; }; _local1 = new SoundTransform((0.1 + (Math.random() * 0.1))); _local2 = Math.random(); if (_local2 < (1 / 3)){ _audioBank._soundFireWork01.play(0, 1, _local1); } else { if (_local2 < (2 / 3)){ _audioBank._soundFireWork02.play(0, 1, _local1); } else { _audioBank._soundFireWork03.play(0, 1, _local1); }; }; } public function onIOError(_arg1:IOErrorEvent):void{ trace("Error loading URL."); } private function CalculateLevelPackScore(_arg1:int):int{ var _local2:int; var _local3:int; _local2 = 0; _local3 = 0; while (_local3 < LEVELS_PER_LEVEL_PACK) { _local2 = (_local2 + sm_scores[((_arg1 * LEVELS_PER_LEVEL_PACK) + _local3)]); _local3++; }; return (_local2); } private function closeTheEndScreen():void{ if (_bitmapTheEnd != null){ removeChild(_bitmapTheEnd); _bitmapTheEnd = null; }; if (_bitmapLetter != null){ removeChild(_bitmapLetter); _bitmapLetter = null; }; if (_bitmapGrade != null){ removeChild(_bitmapGrade); _bitmapGrade = null; }; m_particleManager.reset(); } private function CalculateLevelPackDiamonds(_arg1:int):int{ var _local2:int; var _local3:int; _local2 = 0; _local3 = 0; while (_local3 < LEVELS_PER_LEVEL_PACK) { _local2 = (_local2 + sm_diamonds[((_arg1 * LEVELS_PER_LEVEL_PACK) + _local3)]); if (sm_diamonds[((_arg1 * LEVELS_PER_LEVEL_PACK) + _local3)] >= 10){ _local2 = 0; }; _local3++; }; return (_local2); } private function runTitleLogo():void{ var _local1:Boolean; var _local2:Number; var _local3:Number; var _local4:SoundTransform; _local1 = false; if (_bitmapMainMenuPerfectBalance.scaleX > 1){ _local1 = true; }; _bitmapMainMenuPerfectBalance.scaleX = (_bitmapMainMenuPerfectBalance.scaleX - 0.05); if (_bitmapMainMenuPerfectBalance.scaleX < 1){ _bitmapMainMenuPerfectBalance.scaleX = 1; if (_local1){ bitmapShootsStars(_bitmapMainMenuPerfectBalance, 25, 15, 0, 32); if (_sfx){ _local4 = new SoundTransform(0.4); _audioBank._soundTitleHit.play(0, 1, _local4); }; _bitmapPerfectBalanceJapanese = new Bitmap(new _classPerfectBalanceJapanese().bitmapData); _bitmapPerfectBalanceJapanese.smoothing = true; _bitmapPerfectBalanceJapanese.x = 80; _bitmapPerfectBalanceJapanese.y = 70; _bitmapPerfectBalanceJapanese.alpha = 0; addChild(_bitmapPerfectBalanceJapanese); }; }; _bitmapMainMenuPerfectBalance.scaleY = _bitmapMainMenuPerfectBalance.scaleX; _bitmapMainMenuPerfectBalanceShadow.scaleX = _bitmapMainMenuPerfectBalance.scaleX; _bitmapMainMenuPerfectBalanceShadow.scaleY = _bitmapMainMenuPerfectBalance.scaleY; _bitmapMainMenuPerfectBalance.alpha = (_bitmapMainMenuPerfectBalance.alpha + 0.02); if (_bitmapMainMenuPerfectBalance.alpha > 1){ _bitmapMainMenuPerfectBalance.alpha = 1; }; _bitmapMainMenuPerfectBalanceShadow.alpha = _bitmapMainMenuPerfectBalance.alpha; if (_bitmapPerfectBalanceJapanese != null){ _bitmapPerfectBalanceJapanese.alpha = (_bitmapPerfectBalanceJapanese.alpha + 0.02); if (_bitmapPerfectBalanceJapanese.alpha > 1){ _bitmapPerfectBalanceJapanese.alpha = 1; }; }; _local2 = (SCREEN_DX * 0.5); _local3 = 50; centerBitmap(_local2, _local3, _bitmapMainMenuPerfectBalance); centerBitmap(_local2, _local3, _bitmapMainMenuPerfectBalanceShadow); } private function resetGame():void{ var _local1:int; _local1 = 0; while (_local1 < 100) { sm_scores[_local1] = 0; sm_diamonds[_local1] = 0; sm_skipped[_local1] = false; _local1++; }; _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { sm_openLevels[_local1] = 1; sm_grades[_local1] = 0; sm_levelPackLocked[_local1] = true; sm_starsAdded[_local1] = 0; _local1++; }; sm_levelPackLocked[0] = false; sm_levelSkips = 5; sm_achievements = 0; _editorBGImage = 0; } public function onMouseDownGamesFree(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamesfree.com"), "_blank"); } private function isPointInsideBitmap(_arg1:Bitmap, _arg2:Number, _arg3:Number):Boolean{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; if (_arg1 == null){ return (false); }; _local4 = _arg1.x; _local5 = _arg1.y; _local6 = (_local4 + _arg1.width); _local7 = (_local5 + _arg1.height); if ((((((((_arg2 >= _local4)) && ((_arg3 >= _local5)))) && ((_arg2 <= _local6)))) && ((_arg3 <= _local7)))){ return (true); }; return (false); } private function runGet20Screen():void{ var _local1:int; var _local2:int; if (!_mouseClicked){ return; }; _local1 = _mouseClickedX; _local2 = _mouseClickedY; if ((((((((_local1 >= 413)) && ((_local2 >= 428)))) && ((_local1 <= 496)))) && ((_local2 <= 464)))){ buttonPressed(); toggleGet20Screen(); }; } private function isPointInside(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Boolean{ if ((((((((_arg1 >= _arg3)) && ((_arg2 >= _arg4)))) && ((_arg1 <= _arg5)))) && ((_arg2 <= _arg6)))){ return (true); }; return (false); } private function runPlayfieldLeftParticles():void{ var _local1:Number; var _local2:SpriteParticle; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; if (Math.random() > 0.2){ return; }; _local1 = Math.random(); _local2 = null; if (_local1 < 0.33){ Test.getRandomPointInTriangle(new b2Vec2(28, 425), new b2Vec2(48, 425), new b2Vec2(38, 406)); _local2 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, (Test.s_randomPointX - 1.5), (Test.s_randomPointY - 1.5)); if (_local2 != null){ _local2._life = (_local2._life + (Math.random() * 10)); }; } else { if (_local1 < 0.66){ _local3 = ((Math.random() * Math.PI) * 2); _local4 = (Math.random() * 9.5); _local5 = (Math.sin(_local3) * _local4); _local6 = (Math.cos(_local3) * _local4); _local2 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, ((57 + _local5) - 1.5), ((416 + _local6) - 1.5)); if (_local2 != null){ _local2._life = (_local2._life + (Math.random() * 10)); }; } else { _local5 = (Math.random() * 20); _local6 = (Math.random() * 20); _local2 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, ((68 + _local5) - 1.5), ((406 + _local6) - 1.5)); if (_local2 != null){ _local2._life = (_local2._life + (Math.random() * 10)); }; }; }; } private function toggleMainMenu():void{ var _local1:int; if (_bitmapMainMenuBG != null){ removeChild(_bitmapMainMenuBG); _bitmapMainMenuBG = null; removeChild(_bitmapMainMenuFG); _bitmapMainMenuFG = null; removeChild(_titleBitmapAudioOn); removeChild(_titleBitmapAudioOff); removeChild(_bitmapMainMenuPerfectBalance); _bitmapMainMenuPerfectBalance = null; removeChild(_bitmapMainMenuPerfectBalanceShadow); _bitmapMainMenuPerfectBalanceShadow = null; if (_bitmapPerfectBalanceJapanese != null){ removeChild(_bitmapPerfectBalanceJapanese); _bitmapPerfectBalanceJapanese = null; }; if (_movieClipGamesFreeButton != null){ removeChild(_movieClipGamesFreeButton); _movieClipGamesFreeButton = null; }; m_spriteParticleManager.reset(); } else { _bitmapMainMenuBG = new Bitmap(new _classMainMenuBG().bitmapData); _bitmapMainMenuBG.smoothing = true; addChild(_bitmapMainMenuBG); _bitmapMainMenuFG = new Bitmap(new _classMainMenuFG().bitmapData); _bitmapMainMenuFG.smoothing = true; addChild(_bitmapMainMenuFG); _bitmapMainMenuPerfectBalanceShadow = new Bitmap(new _classMainMenuPerfectBalanceShadow().bitmapData); _bitmapMainMenuPerfectBalanceShadow.smoothing = true; _bitmapMainMenuPerfectBalanceShadow.alpha = 0; _bitmapMainMenuPerfectBalanceShadow.scaleX = 5; _bitmapMainMenuPerfectBalanceShadow.scaleY = 5; addChild(_bitmapMainMenuPerfectBalanceShadow); _bitmapMainMenuPerfectBalance = new Bitmap(new _classMainMenuPerfectBalance().bitmapData); _bitmapMainMenuPerfectBalance.smoothing = true; _bitmapMainMenuPerfectBalance.alpha = 0; _bitmapMainMenuPerfectBalance.scaleX = 5; _bitmapMainMenuPerfectBalance.scaleY = 5; addChild(_bitmapMainMenuPerfectBalance); _titleBitmapAudioOn.x = ((SCREEN_DX * 0.5) - 16); _titleBitmapAudioOn.y = 130; _titleBitmapAudioOff.x = ((SCREEN_DX * 0.5) - 16); _titleBitmapAudioOff.y = 130; addChild(_titleBitmapAudioOn); addChild(_titleBitmapAudioOff); _local1 = 0; while (_local1 < 200) { runTitleParticles(); m_spriteParticleManager.liveParticles(0, _bitmapParticleLayer, false); _local1++; }; runTitleParticles(); m_spriteParticleManager.liveParticles(0, _bitmapParticleLayer, true); if (MyPreloader._gamesFree){ _movieClipGamesFreeButton = MyPreloader.GetGamesFreeButton(); addChild(_movieClipGamesFreeButton); _movieClipGamesFreeButton.x = 420; _movieClipGamesFreeButton.y = 386; _movieClipGamesFreeButton.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownGamesFree); }; manageAudioOnOff(); }; } private function starsDrawAll():void{ var _local1:BitmapData; var _local2:BitmapData; var _local3:int; var _local4:int; _local1 = _bitmapLevelPackSelection.bitmapData; _local2 = _bitmapStar.bitmapData; _local3 = 0; while (_local3 < LEVEL_PACKS_MAX) { _local4 = 0; while (_local4 < sm_starsAdded[_local3]) { _local1.draw(_local2, new Matrix(1, 0, 0, 1, (STAR_ROWS_X[_local3] + (19 * _local4)), 92), null, null, null, true); _local4++; }; _local3++; }; } private function CalculateLevelPackScoreBest(_arg1:int):int{ var _local2:int; var _local3:int; _local2 = 0; _local3 = 0; while (_local3 < LEVELS_PER_LEVEL_PACK) { _local2 = (_local2 + sm_scoresBest[((_arg1 * LEVELS_PER_LEVEL_PACK) + _local3)]); _local3++; }; return (_local2); } public function playExplosion():void{ var _local1:SoundTransform; var _local2:Number; if (!_sfx){ return; }; _local1 = new SoundTransform((0.1 + (Math.random() * 0.1))); _local2 = Math.random(); if (_local2 < (1 / 3)){ _audioBank._soundExplosion1.play(0, 1, _local1); } else { if (_local2 < (2 / 3)){ _audioBank._soundExplosion2.play(0, 1, _local1); } else { _audioBank._soundExplosion3.play(0, 1, _local1); }; }; } private function sendToKongregate(_arg1:int):void{ } public function playPerfectBalance():void{ var _local1:SoundTransform; if (!_sfx){ return; }; _local1 = new SoundTransform(0.5); _audioBank._soundOkHarmony.play(0, 1, _local1); } private function runEditorButtonsEditMode():Boolean{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Boolean; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Boolean; var _local9:b2Body; var _local10:UserData; var _local11:Object; var _local12:TextFormat; _bitmapEditorHelpDimensions.visible = false; _bitmapEditorHelpRadius.visible = false; if ((((((((((sm_editorBlockID == 20)) || ((sm_editorBlockID == 27)))) || ((sm_editorBlockID == 46)))) || ((sm_editorBlockID == 52)))) || ((sm_editorBlockID == 71)))){ _bitmapEditorHelpRadius.visible = true; } else { if (sm_editorBlockID == 28){ _bitmapEditorHelpDimensions.visible = true; }; }; _local1 = _mouseClickedX; _local2 = _mouseClickedY; _local3 = (SCREEN_DX - 140); if (_bitmapLevelIO != null){ return (true); }; if (((_mouseClicked) && (isPointInside(_local1, _local2, (24 + _local3), 58, (117 + _local3), 96)))){ _levelBackupString = m_currTest.getEditorLevel(); buttonPressed(); switchToPlayMode(); return (true); }; _local9 = null; _local4 = false; _local5 = m_currTest.m_blockHeight; _local6 = m_currTest.m_blockWidth; _local7 = m_currTest._radius; if (((Input.isKeyPressed("E".charCodeAt(0))) || (((_mouseClicked) && (isPointInside(_local1, _local2, (110 + _local3), (182 - 15), (130 + _local3), (212 - 15))))))){ sm_editorBlockID++; if (sm_editorBlockID == 17){ sm_editorBlockID = 18; } else { if (sm_editorBlockID == 25){ sm_editorBlockID = 27; } else { if (sm_editorBlockID == 34){ sm_editorBlockID = 37; } else { if (sm_editorBlockID == 41){ sm_editorBlockID = 42; } else { if (sm_editorBlockID == 44){ sm_editorBlockID = 45; } else { if (sm_editorBlockID == 50){ sm_editorBlockID = 51; } else { if (sm_editorBlockID == 56){ sm_editorBlockID = 57; } else { if (sm_editorBlockID == 72){ sm_editorBlockID = 1; }; }; }; }; }; }; }; }; buttonPressed(); redrawPlayfieldRight(); if (m_currTest.m_mouseBody == null){ return (true); }; _local4 = true; }; if (((Input.isKeyPressed("Q".charCodeAt(0))) || (((_mouseClicked) && (isPointInside(_local1, _local2, (10 + _local3), (182 - 15), (30 + _local3), (212 - 15))))))){ sm_editorBlockID--; if (sm_editorBlockID == 17){ sm_editorBlockID = 16; } else { if (sm_editorBlockID == 26){ sm_editorBlockID = 24; } else { if (sm_editorBlockID == 36){ sm_editorBlockID = 33; } else { if (sm_editorBlockID == 41){ sm_editorBlockID = 40; } else { if (sm_editorBlockID == 44){ sm_editorBlockID = 43; } else { if (sm_editorBlockID == 50){ sm_editorBlockID = 49; } else { if (sm_editorBlockID == 56){ sm_editorBlockID = 55; } else { if (sm_editorBlockID == 0){ sm_editorBlockID = 71; }; }; }; }; }; }; }; }; buttonPressed(); redrawPlayfieldRight(); if (m_currTest.m_mouseBody == null){ return (true); }; _local4 = true; }; if (Input.isKeyPressed("1".charCodeAt(0))){ sm_editorBlockID = 27; redrawPlayfieldRight(); if (m_currTest.m_mouseBody == null){ return (true); }; _local4 = true; }; if (Input.isKeyDown("W".charCodeAt(0))){ _local7 = (_local7 + 0.3); _local4 = true; } else { if (Input.isKeyDown("S".charCodeAt(0))){ _local7 = (_local7 - 0.3); if (_local7 < 1){ _local7 = 1; }; _local4 = true; }; }; if (Input.isKeyDown(16)){ if (Input.isKeyPressed(37)){ _local6 = (_local6 - 10); if (_local6 < 10){ _local6 = 10; }; _local4 = true; }; if (Input.isKeyPressed(39)){ _local6 = (_local6 + 10); _local4 = true; }; if (Input.isKeyPressed(38)){ _local5 = (_local5 + 10); _local7 = (_local7 + 0.3); _local4 = true; }; if (Input.isKeyPressed(40)){ _local5 = (_local5 - 10); _local7 = (_local7 - 0.3); if (_local7 < 1){ _local7 = 1; }; _local4 = true; if (_local5 < 10){ _local5 = 10; }; _local4 = true; }; } else { if (Input.isKeyDown(37)){ --_local6; if (_local6 < 1){ _local6 = 1; }; _local4 = true; }; if (Input.isKeyDown(39)){ _local6 = (_local6 + 1); _local4 = true; }; if (Input.isKeyDown(38)){ _local5 = (_local5 + 1); _local7 = (_local7 + 0.3); _local4 = true; }; if (Input.isKeyDown(40)){ --_local5; if (_local5 < 1){ _local5 = 1; }; _local7 = (_local7 - 0.3); if (_local7 < 1){ _local7 = 1; }; _local4 = true; }; }; if (((_mouseClicked) && (((isPointInside(_local1, _local2, (41 + _local3), (189 - 15), (103 + _local3), (203 - 15))) || (isPointInsideCircle(_local1, _local2, (70 + _local3), 295, 50)))))){ _local4 = true; }; if (_local4){ if (_local7 > 200){ _local7 = 200; }; if (_local5 > 200){ _local5 = 200; }; if (_local6 > 200){ _local6 = 200; }; trace(((((("radius = " + _local7) + " blockWidth = ") + _local6) + " blockHeight = ") + _local5)); _local8 = false; if (m_currTest.m_mouseBody != null){ _local8 = true; _local10 = m_currTest.m_mouseBody.m_userData; if (_local10._circle){ m_currTest._radius = _local7; }; if (_local10._rectangle){ m_currTest.m_blockHeight = _local5; m_currTest.m_blockWidth = _local6; }; m_currTest.DestroyBody(m_currTest.m_mouseBody); m_currTest.m_mouseBody = null; }; _local9 = m_currTest.cloneBody(null, true, sm_editorBlockID, _local7, 0, _local6, _local5, 0, 0); m_currTest.CreateSpriteForBody(_local9); m_currTest.CloneSprite(_local9); addChild(_local9.m_userData._sprite2); m_currTest.m_mouseBody = _local9; m_currTest.BringSpritesOnTop(); buttonPressed(false); }; if (((Input.isKeyPressed(46)) || (Input.isKeyPressed(8)))){ if (m_currTest.m_mouseBody != null){ m_currTest.DestroyBody(m_currTest.m_mouseBody); m_currTest.m_mouseBody = null; } else { _local9 = m_currTest.GetBodyAtMouseAny(); if (_local9 != null){ m_currTest.DestroyBody(_local9); }; }; }; if (!_mouseClicked){ return (false); }; if (isPointInside(_local1, _local2, (39 + _local3), 424, (109 + _local3), 450)){ buttonPressed(); _bitmapClearLevel = new Bitmap(new _classClearLevel().bitmapData); _bitmapClearLevel.smoothing = true; addChild(_bitmapClearLevel); return (true); }; if (isPointInside(_local1, _local2, (20 + _local3), 392, (123 + _local3), 417)){ buttonPressed(); _bitmapEditorKeys = new Bitmap(new _classEditorKeys().bitmapData); _bitmapEditorKeys.smoothing = true; addChild(_bitmapEditorKeys); return (true); }; if (doWeHaveGamerSafe()){ if (isPointInside(_local1, _local2, (_local3 + 35), 34, (_local3 + 90), 57)){ buttonPressed(); _local11 = GamerSafe.api.levelVaultFetchLevelByID(GamerSafe.api.levelVaultLastCreatedLevelID); trace(("level Object = " + _local11)); return (true); }; if (isPointInside(_local1, _local2, (_local3 + 59), 34, (_local3 + 90), 84)){ buttonPressed(); GamerSafe.api.levelVaultCreateLevelWithAttributes(m_currTest.getEditorLevel(), {plays:0, wins:0, losses:0, creator:"ttursas"}); return (true); }; } else { if (isPointInside(_local1, _local2, (_local3 + 13), 121, (_local3 + 130), 142)){ buttonPressed(); _bitmapLevelIO = new Bitmap(new _classLevelIO().bitmapData); _bitmapLevelIO.smoothing = true; addChild(_bitmapLevelIO); _bitmapLevelIO.x = ((SCREEN_DX * 0.5) - (_bitmapLevelIO.width * 0.5)); _bitmapLevelIO.y = ((SCREEN_DY * 0.5) - (_bitmapLevelIO.height * 0.5)); _local12 = new TextFormat("Arial", 12, 0xFFFFFF, false, false, false); _local12.align = TextFormatAlign.LEFT; _levelDataTextField = new TextField(); _levelDataTextField.defaultTextFormat = _local12; _levelDataTextField.width = 375; _levelDataTextField.height = 150; _levelDataTextField.text = m_currTest.getEditorLevel(); _levelDataTextField.x = (((_bitmapLevelIO.x + (_bitmapLevelIO.width * 0.5)) - (_levelDataTextField.width * 0.5)) + 5); _levelDataTextField.y = (((_bitmapLevelIO.y + (_bitmapLevelIO.height * 0.5)) - (_levelDataTextField.height * 0.5)) + 38); if (MyPreloader._kongregate){ _levelDataTextField.height = (_levelDataTextField.height - 20); _levelDataTextField.y = (_levelDataTextField.y + 30); } else { if (MyPreloader._chinese){ _levelDataTextField.height = (_levelDataTextField.height - 60); _levelDataTextField.y = (_levelDataTextField.y + 65); }; }; _levelDataTextField.maxChars = 30000; _levelDataTextField.multiline = true; _levelDataTextField.wordWrap = true; _levelDataTextField.background = true; _levelDataTextField.backgroundColor = 0; _levelDataTextField.mouseEnabled = true; _levelDataTextField.selectable = true; _levelDataTextField.doubleClickEnabled = true; _levelDataTextField.alwaysShowSelection = true; _levelDataTextField.type = TextFieldType.INPUT; _levelDataTextField.antiAliasType = AntiAliasType.ADVANCED; addChild(_levelDataTextField); return (true); }; }; return (false); } public function mousePress(_arg1:MouseEvent):void{ _mouseClickedX = mouseX; _mouseClickedY = mouseY; _mouseClicked = true; if (MyPreloader._walkthrough){ if (((((((((!((_bitmapMainMenuBG == null))) && ((mouseX >= 195)))) && ((mouseY >= 410)))) && ((mouseX <= 403)))) && ((mouseY <= 447)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.gamesfree.com/game/perfect_balance_3_walkthrough.html"), "_blank"); }; if (!areWeInMenu()){ if ((((((((mouseX >= 6)) && ((mouseY >= 455)))) && ((mouseX <= 133)))) && ((mouseY <= 487)))){ buttonPressed(); navigateToURL(new URLRequest("http://www.gamesfree.com/game/perfect_balance_3_walkthrough.html"), "_blank"); }; }; }; if (((!((_levelDataTextField == null))) && (!((_bitmapLevelIO == null))))){ if ((((((((mouseX >= 216)) && ((mouseY >= 382)))) && ((mouseX <= 301)))) && ((mouseY <= 420)))){ _levelIOClear = true; _mouseClicked = false; buttonPressed(); } else { if ((((((((mouseX >= 309)) && ((mouseY >= 382)))) && ((mouseX <= 398)))) && ((mouseY <= 420)))){ System.setClipboard(_levelDataTextField.text); _levelDataTextField.setSelection(0, (_levelDataTextField.text.length - 1)); _mouseClicked = false; buttonPressed(); } else { if ((((((((mouseX >= 408)) && ((mouseY >= 382)))) && ((mouseX <= 493)))) && ((mouseY <= 420)))){ _levelIOUse = true; _mouseClicked = false; buttonPressed(); } else { if ((((((((mouseX >= 117)) && ((mouseY >= 382)))) && ((mouseX <= 206)))) && ((mouseY <= 420)))){ _levelIOCancel = true; _mouseClicked = false; buttonPressed(); } else { if (((((((((MyPreloader._kongregate) && ((mouseX >= 412)))) && ((mouseY >= 197)))) && ((mouseX <= 496)))) && ((mouseY <= 233)))){ _levelIOShare = true; _levelString = _levelDataTextField.text; buttonPressed(); }; }; }; }; }; }; } public function onMouseWheelEvent(_arg1:MouseEvent):void{ _mouseWheel = _arg1.delta; } private function runTitleParticles():void{ var _local1:int; var _local2:int; var _local3:SpriteParticle; if (Math.random() > 0.9){ _local1 = (SCREEN_DX * Math.random()); _local2 = (SCREEN_DY * Math.random()); _local3 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, _local1, _local2); if (_local3 != null){ _local3._life = (_local3._life + (Math.random() * 10)); }; }; if (Math.random() < 0.1){ _local3 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_BUBBLE, (Math.random() * SCREEN_DX), (SCREEN_DY - 1)); if (_local3 != null){ _local3._speedY = (-0.5 - (Math.random() * 1.5)); _local3._rotationSpeed = ((Math.random() * 0.1) - 0.05); }; }; } private function runEditorButtonsPlayMode():Boolean{ var _local1:Number; var _local2:Number; var _local3:Number; _bitmapEditorHelpDimensions.visible = false; _bitmapEditorHelpRadius.visible = false; if (!_mouseClicked){ return (false); }; _local1 = _mouseClickedX; _local2 = _mouseClickedY; _local3 = (SCREEN_DX - 140); if (isPointInside(_local1, _local2, (24 + _local3), 58, (117 + _local3), 96)){ buttonPressed(); sm_editorPlayMode = false; recreateLevel(); redrawPlayfieldLeft(); redrawPlayfieldRight(); _textFieldLevelNumber.text = "EDIT"; playBGMMenu(); return (true); }; if (isPointInside(_local1, _local2, (39 + _local3), 424, (109 + _local3), 450)){ buttonPressed(); recreateLevel(); return (true); }; return (false); } private function toggleCreditsScreen():void{ if (_bitmapCreditsScreen != null){ removeChild(_bitmapCreditsScreen); _bitmapCreditsScreen = null; removeChild(_bitmapCreditsScreenBackground); _bitmapCreditsScreenBackground = null; removeChild(_bitmapVertexCloud); _bitmapVertexCloud = null; _ttVertexCloud = null; _rotate = 0; } else { _bitmapVertexCloud = new Bitmap(new BitmapData(SCREEN_DX, SCREEN_DY, true, 0), "auto", true); addChild(_bitmapVertexCloud); _ttVertexCloud = new TTVertexCloud(); _ttVertexCloud.importVerticesFromBitmap(new Bitmap(new _class3DLogo().bitmapData)); _bitmapCreditsScreenBackground = new Bitmap(new _classMainMenuBG().bitmapData); _bitmapCreditsScreenBackground.smoothing = true; addChild(_bitmapCreditsScreenBackground); _bitmapCreditsScreen = new Bitmap(new _classCreditsScreen().bitmapData); _bitmapCreditsScreen.smoothing = true; addChild(_bitmapCreditsScreen); }; } private function isPointInsideDelta(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Boolean{ var _local7:Number; var _local8:Number; _local7 = (_arg3 + _arg5); _local8 = (_arg4 + _arg6); if ((((((((_arg1 >= _arg3)) && ((_arg2 >= _arg4)))) && ((_arg1 <= _local7)))) && ((_arg2 <= _local8)))){ return (true); }; return (false); } private function redrawPlayfieldLeft():void{ var _local1:int; _local1 = (m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK)); _textFieldBest.text = ("" + sm_scores[_local1]); if (sm_editorMode){ _textFieldTotal.text = _textFieldBest.text; } else { _textFieldTotal.text = ("" + CalculateLevelPackScore(sm_levelPack)); }; _textFieldDiamonds.text = ("" + sm_diamonds[_local1]); } private function GetGradeBitmap(_arg1:int):Bitmap{ var _local2:int; var _local3:Bitmap; UpdateGrade(); _local2 = sm_grades[_arg1]; _local3 = null; if (_local2 == 1){ _local3 = new Bitmap(new _classGradeE().bitmapData); } else { if (_local2 == 2){ _local3 = new Bitmap(new _classGradeD().bitmapData); } else { if (_local2 == 3){ _local3 = new Bitmap(new _classGradeC().bitmapData); } else { if (_local2 == 4){ _local3 = new Bitmap(new _classGradeB().bitmapData); } else { if (_local2 == 5){ _local3 = new Bitmap(new _classGradeA().bitmapData); }; }; }; }; }; return (_local3); } private function CalculateTotalDiamondsBest():int{ var _local1:int; var _local2:int; _local1 = 0; _local2 = 0; while (_local2 < (LEVEL_PACKS_MAX * LEVELS_PER_LEVEL_PACK)) { _local1 = (_local1 + sm_diamondsBest[_local2]); if (sm_diamondsBest[_local2] >= 10){ _local1 = 0; }; _local2++; }; return (_local1); } public function onMouseMove(_arg1:MouseEvent):void{ _mouseX = mouseX; _mouseY = mouseY; } private function updateLevelPackSelection():void{ var _local1:int; var _local2:int; _textFieldLPSLevelSkips.text = ("" + sm_levelSkips); _textFieldLPSTotalScore.text = ("" + CalculateTotalScore()); _textFieldLPSDiamonds.text = ("" + CalculateTotalDiamonds()); _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { _textFieldLPSTotalScores[_local1].text = ("" + CalculateLevelPackScore(_local1)); _local1++; }; if (MyPreloader._localHighscores){ _local2 = CalculateTotalDiamonds(); if (_local2 > sm_diamondsTotalBest){ sm_diamondsTotalBest = _local2; }; _textFieldLPSDiamondsBest.text = ("HI - " + sm_diamondsTotalBest); _local2 = CalculateTotalScore(); if (_local2 > sm_grandTotalBest){ sm_grandTotalBest = _local2; }; _textFieldLPSGrandTotalBest.text = ("HI - " + sm_grandTotalBest); _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { _local2 = CalculateLevelPackScore(_local1); if (_local2 > sm_scoresTotalBest[_local1]){ sm_scoresTotalBest[_local1] = _local2; }; _textFieldLPSTotalScoresBest[_local1].text = ("HI - " + sm_scoresTotalBest[_local1]); _local1++; }; }; } private function playBGMGame():void{ if (!_sfx){ return; }; SoundMixer.stopAll(); _audioBank._bgmGame.play(0, int.MAX_VALUE, new SoundTransform(0.4)); } private function areWeInMenu():Boolean{ if ((((((((((((_bitmapMainMenuBG == null)) && ((_bitmapInstructions == null)))) && ((_bitmapLevelPackSelection == null)))) && ((_bitmapAchievements == null)))) && ((_bitmapTheEnd == null)))) && ((_bitmapCreditsScreen == null)))){ return (false); }; return (true); } private function CalculateCurrentScore():int{ var _local1:int; _local1 = int((-(_bonusTimer) / 1000)); _local1 = (_local1 + _plus50PointsTotal); if (_local1 < 1){ _local1 = 1; }; return (_local1); } private function toggleInstructions():void{ if (_bitmapInstructions != null){ removeChild(_bitmapInstructions); _bitmapInstructions = null; } else { if (_instructionsGame){ _bitmapInstructions = new Bitmap(new _classInstructionsGame().bitmapData); } else { _bitmapInstructions = new Bitmap(new _classInstructionsShapes().bitmapData); }; _bitmapInstructions.smoothing = true; addChild(_bitmapInstructions); }; } private function CalculateOpenLevelPacks():int{ var _local1:int; _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { if (sm_levelPackLocked[_local1]){ return (_local1); }; _local1++; }; return (_local1); } public function playAllBonusBalls():void{ var _local1:SoundTransform; if (!_sfx){ return; }; _local1 = new SoundTransform(0.4); _audioBank._soundAllBonusBalls.play(0, 1, _local1); } private function autoSubmitStatistics():void{ var _local1:int; var _local2:Boolean; var _local3:int; var _local4:Boolean; var _local5:int; var _local6:int; _local1 = CalculateTotalScore(); _local2 = false; if (_local1 > _autoSubmitScore){ _autoSubmitScore = _local1; _local2 = true; }; _local3 = CalculateTotalDiamonds(); _local4 = false; if (_local3 > _autoSubmitDiamonds){ _autoSubmitDiamonds = _local3; _local4 = true; }; if (MyPreloader._kongregate){ if (_local2){ MyPreloader._kongregateAPI.stats.submit("TotalScore", _local1); }; if (_local4){ MyPreloader._kongregateAPI.stats.submit("TotalDiamonds", _local3); }; _local5 = 0; while (_local5 < LEVEL_PACKS_MAX) { _local6 = GetLevelPackStars(_local5); if ((((_local6 >= 0)) && (!((_local6 == _autoSubmitStars[_local5]))))){ _autoSubmitStars[_local5] = _local6; MyPreloader._kongregateAPI.stats.submit(LEVEL_PACK_STARS_NAME[_local5], _local6); }; _local5++; }; }; } private function removeLockedSubSprites():void{ var _local1:int; _local1 = 0; while (_local1 < sm_lockedSubSpritesN) { if (sm_lockedSubSprites[_local1] != null){ removeChild(sm_lockedSubSprites[_local1]); sm_lockedSubSprites[_local1] = null; }; _local1++; }; sm_lockedSubSpritesN = 0; } private function runLockedSubSprites():void{ var _local1:int; _local1 = 0; while (_local1 < sm_lockedSubSpritesN) { sm_lockedSubSprites[_local1].x = (sm_lockedSubSprites[_local1].x + sm_lockedSubSpritesSpeedX[_local1]); sm_lockedSubSprites[_local1].y = (sm_lockedSubSprites[_local1].y + sm_lockedSubSpritesSpeedY[_local1]); sm_lockedSubSpritesSpeedY[_local1] = (sm_lockedSubSpritesSpeedY[_local1] + 0.05); if (sm_lockedSubSprites[_local1].y > SCREEN_DY){ removeChild(sm_lockedSubSprites[_local1]); sm_lockedSubSprites[_local1] = sm_lockedSubSprites[(sm_lockedSubSpritesN - 1)]; sm_lockedSubSpritesSpeedX[_local1] = sm_lockedSubSpritesSpeedX[(sm_lockedSubSpritesN - 1)]; sm_lockedSubSpritesSpeedY[_local1] = sm_lockedSubSpritesSpeedY[(sm_lockedSubSpritesN - 1)]; sm_lockedSubSpritesN--; _local1--; }; _local1++; }; } public function kongregateShareFinished(_arg1:Object):void{ if (_arg1.success){ trace(((("Content saved, id:" + _arg1.id) + ", name:") + _arg1.name)); }; } private function CalculateTotalDiamonds():int{ var _local1:int; var _local2:int; _local1 = 0; _local2 = 0; while (_local2 < (LEVEL_PACKS_MAX * LEVELS_PER_LEVEL_PACK)) { _local1 = (_local1 + sm_diamonds[_local2]); if (sm_diamonds[_local2] >= 10){ _local1 = 0; }; _local2++; }; return (_local1); } private function PlayLevelChangedSound():void{ if (!_sfx){ return; }; _audioBank._soundLCH01.play(0, 1, new SoundTransform(0.2)); } private function calculateSaveChecksum(_arg1:Array, _arg2:Array, _arg3:Array, _arg4:Array, _arg5:int, _arg6:int):int{ var _local7:int; var _local8:int; _local8 = 0; _local7 = 0; while (_local7 < (LEVEL_PACKS_MAX * LEVELS_PER_LEVEL_PACK)) { if ((_local7 & 1) == 0){ _local8 = (_local8 + (_arg1[_local7] * 3)); } else { _local8 = (_local8 ^ _arg1[_local7]); }; _local8 = (_local8 - _arg2[_local7]); _local7++; }; _local7 = 0; while (_local7 < LEVEL_PACKS_MAX) { _local8 = (_local8 ^ _arg3[_local7]); _local8 = (_local8 + _arg4[_local7]); _local7++; }; _local8 = (_local8 + _arg5); _local8 = (_local8 - _arg6); return ((_local8 & 0xFFFF)); } private function GetLevelPackStars(_arg1:int):int{ var _local2:int; var _local3:int; _local2 = CalculateLevelPackScore(_arg1); _local3 = CalculateGrade(_local2, _arg1); if (sm_openLevels[_arg1] < (LEVELS_PER_LEVEL_PACK + 1)){ _local3 = -1; }; return (_local3); } private function manageBGImages():void{ _bitmapButtonBGImage1.visible = false; _bitmapButtonBGImage2.visible = false; _bitmapButtonBGImage3.visible = false; _bitmapButtonBGImage4.visible = false; _bitmapButtonBGImage5.visible = false; _bitmapButtonBGImage6.visible = false; if (!sm_editorMode){ return; }; if (_editorBGImage == 0){ _bitmapButtonBGImage1.visible = true; } else { if (_editorBGImage == 1){ _bitmapButtonBGImage2.visible = true; } else { if (_editorBGImage == 2){ _bitmapButtonBGImage3.visible = true; } else { if (_editorBGImage == 3){ _bitmapButtonBGImage4.visible = true; } else { if (_editorBGImage == 4){ _bitmapButtonBGImage5.visible = true; } else { if (_editorBGImage == 5){ _bitmapButtonBGImage6.visible = true; }; }; }; }; }; }; } private function runLevelPackSelectionParticles():void{ var _local1:int; var _local2:Number; var _local3:SpriteParticle; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local1 = 0; while (_local1 < LEVEL_PACKS_MAX) { if (sm_levelPackLocked[_local1]){ if (Math.random() < 0.2){ _local5 = ((Math.random() * Math.PI) * 2); _local6 = (Math.random() * 12.5); _local7 = (Math.sin(_local5) * _local6); _local8 = (Math.cos(_local5) * _local6); if (_local1 == 1){ _local7 = (_local7 + 6); }; _local3 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, (((STAR_ROWS_X[_local1] + 13) + _local7) - 1.5), ((201 + _local8) - 1.5)); if (_local3 != null){ _local3._life = (_local3._life + (Math.random() * 10)); }; }; }; _local1++; }; if (Math.random() > 0.2){ return; }; _local2 = Math.random(); _local3 = null; _local4 = 0; if (!MyPreloader._submitButtonDiamonds){ _local4 = 16; }; if (_local2 < 0.33){ Test.getRandomPointInTriangle(new b2Vec2(243, 378), new b2Vec2(263, 378), new b2Vec2(253, 359)); _local3 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, (Test.s_randomPointX - 1.5), ((Test.s_randomPointY - 1.5) + _local4)); if (_local3 != null){ _local3._life = (_local3._life + (Math.random() * 10)); }; } else { if (_local2 < 0.66){ _local5 = ((Math.random() * Math.PI) * 2); _local6 = (Math.random() * 9.5); _local7 = (Math.sin(_local5) * _local6); _local8 = (Math.cos(_local5) * _local6); _local3 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, ((273 + _local7) - 1.5), (((369 + _local8) - 1.5) + _local4)); if (_local3 != null){ _local3._life = (_local3._life + (Math.random() * 10)); }; } else { _local7 = (Math.random() * 20); _local8 = (Math.random() * 20); _local3 = Main.m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, ((286 + _local7) - 1.5), (((359 + _local8) - 1.5) + _local4)); if (_local3 != null){ _local3._life = (_local3._life + (Math.random() * 10)); }; }; }; } private function manageGrids():void{ _bitmapButtonGrid0.visible = false; _bitmapButtonGrid1.visible = false; _bitmapButtonGrid2.visible = false; _bitmapButtonGrid3.visible = false; _bitmapGrid1.visible = false; _bitmapGrid2.visible = false; _bitmapGrid3.visible = false; if (!sm_editorMode){ return; }; if (_grid == 0){ _bitmapButtonGrid0.visible = true; } else { if (_grid == 1){ _bitmapGrid1.visible = true; _bitmapButtonGrid1.visible = true; } else { if (_grid == 2){ _bitmapGrid2.visible = true; _bitmapButtonGrid2.visible = true; } else { _bitmapGrid3.visible = true; _bitmapButtonGrid3.visible = true; }; }; }; } private function addHelp(_arg1:Bitmap):void{ _helpCenterX = (_arg1.x + (_arg1.width * 0.5)); _helpCenterY = (_arg1.y + (_arg1.height * 0.5)); addChild(_arg1); } private function createLockedSubSprites(_arg1:Bitmap):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:Bitmap; var _local9:int; _local2 = (_arg1.width / LOCKED_NX); _local3 = (_arg1.height / LOCKED_NY); _local4 = 0; while (_local4 < LOCKED_NY) { _local5 = _local3; if (_local4 == (LOCKED_NY - 1)){ _local5 = (_arg1.height - (_local4 * _local3)); }; _local6 = 0; while (_local6 < LOCKED_NX) { _local7 = _local2; if (_local6 == (LOCKED_NX - 1)){ _local7 = (_arg1.width - (_local6 * _local2)); }; _local8 = new Bitmap(new BitmapData(_local7, _local5, true, 4278190080), "auto", true); _local8.smoothing = true; _local8.bitmapData.copyPixels(_arg1.bitmapData, new Rectangle((_local6 * _local2), (_local4 * _local3), _local7, _local5), new Point(0, 0)); _local8.x = (_arg1.x + (_local6 * _local2)); _local8.y = (_arg1.y + (_local4 * _local3)); addChild(_local8); _local9 = sm_lockedSubSpritesN++; sm_lockedSubSprites[_local9] = _local8; sm_lockedSubSpritesSpeedX[_local9] = ((Math.random() * 2) - 1); sm_lockedSubSpritesSpeedY[_local9] = ((Math.random() * 2) - 1); _local6++; }; _local4++; }; } private function runTheEndGrade():void{ var _local1:Boolean; var _local2:SoundTransform; if (_bitmapGrade == null){ return; }; _local1 = true; if (_bitmapGrade.scaleX <= 1.01){ _local1 = false; }; _bitmapGrade.scaleX = (_bitmapGrade.scaleX - 0.1); if (_bitmapGrade.scaleX < 1){ _bitmapGrade.scaleX = 1; if (_local1){ if (_sfx){ _local2 = new SoundTransform(0.2); _audioBank._soundTitleHit.play(0, 1, _local2); }; }; }; _bitmapGrade.scaleY = _bitmapGrade.scaleX; _bitmapGrade.alpha = (_bitmapGrade.alpha + 0.1); if (_bitmapGrade.alpha > 1){ _bitmapGrade.alpha = 1; }; _bitmapGrade.x = (302 - (_bitmapGrade.width * 0.5)); _bitmapGrade.y = (306 - (_bitmapGrade.height * 0.5)); } private function SettingsLoad():void{ var _local1:SharedObject; var _local2:int; trace("SettingsLoad()..."); m_settingsLoad = false; _local1 = SharedObject.getLocal("PerfectBalance3Settings"); if ((((_local1 == null)) || (!((_local1.data.header == "PB3S5"))))){ return; }; _local2 = calculateSaveChecksum(_local1.data.scores, _local1.data.diamonds, _local1.data.openLevels, _local1.data.grades, _local1.data.levelSkips, _local1.data.achievements); trace(((("checksum = " + _local2) + " sO.data.checksum = ") + _local1.data.checksum)); sm_scores = cloneArray(_local1.data.scores); sm_diamonds = cloneArray(_local1.data.diamonds); sm_openLevels = cloneArray(_local1.data.openLevels); sm_grades = cloneArray(_local1.data.grades); sm_levelSkips = _local1.data.levelSkips; sm_diamondsTotalBest = _local1.data.diamondsTotalBest; sm_grandTotalBest = _local1.data.grandTotalBest; sm_levelPackLocked = cloneArray(_local1.data.levelPackLocked); sm_starsAdded = cloneArray(_local1.data.starsAdded); sm_skipped = cloneArray(_local1.data.skipped); sm_diamondsBest = cloneArray(_local1.data.diamondsBest); sm_scoresBest = cloneArray(_local1.data.scoresBest); sm_scoresTotalBest = cloneArray(_local1.data.scoresTotalBest); sm_achievements = _local1.data.achievements; _sfx = _local1.data.sfx; if (_local2 != _local1.data.checksum){ if (MyPreloader._kongregate){ MyPreloader._kongregateAPI.stats.submit("SaveFileChecksumMismatch", 1); }; }; trace("... success!"); } private function recreateLevel():void{ var _local1:int; if (m_currTest != null){ m_currTest.DestroyBodies(); }; m_currTest = new Test(); _local1 = ((sm_levelPack * LEVELS_PER_LEVEL_PACK) + m_currId); if ((((sm_levelPack == 0)) || ((sm_levelPack > 4)))){ _local1 = m_currId; }; trace(((("Loading level (index) " + _local1) + " sm_levelPack ") + sm_levelPack)); if (sm_editorMode){ trace("Loading EDITOR level"); m_currTest.useEditorLevel(_levelBackupString); } else { if (sm_levelPack == 0){ m_currTest.useEditorLevel(LEVEL_DATA_STRINGS_EASY_NEW[(LEVEL_DATA_LUT_EASY_NEW[_local1] - 1)]); } else { if (sm_levelPack == 1){ _local1 = (_local1 + (LEVELS_PER_LEVEL_PACK * 2)); trace(((("m_currId = " + m_currId) + " LEVEL_DATA_LUT[index] = ") + ((LEVEL_DATA_LUT[_local1] - 120) - 1))); m_currTest.useEditorLevel(LEVEL_DATA_STRINGS[((LEVEL_DATA_LUT[_local1] - 120) - 1)]); } else { if (sm_levelPack == 2){ _local1 = (_local1 - LEVELS_PER_LEVEL_PACK); trace(((("m_currId = " + m_currId) + " LEVEL_DATA_LUT[index] = ") + ((LEVEL_DATA_LUT[_local1] - 120) - 1))); m_currTest.useEditorLevel(LEVEL_DATA_STRINGS[((LEVEL_DATA_LUT[_local1] - 120) - 1)]); } else { if (sm_levelPack == 3){ _local1 = (_local1 + LEVELS_PER_LEVEL_PACK); trace(((("m_currId = " + m_currId) + " LEVEL_DATA_LUT[index] = ") + ((LEVEL_DATA_LUT[_local1] - 120) - 1))); m_currTest.useEditorLevel(LEVEL_DATA_STRINGS[((LEVEL_DATA_LUT[_local1] - 120) - 1)]); } else { if (sm_levelPack == 4){ _local1 = (_local1 - (LEVELS_PER_LEVEL_PACK * 2)); trace(((("m_currId = " + m_currId) + " LEVEL_DATA_LUT[index] = ") + ((LEVEL_DATA_LUT[_local1] - 120) - 1))); m_currTest.useEditorLevel(LEVEL_DATA_STRINGS[((LEVEL_DATA_LUT[_local1] - 120) - 1)]); }; }; }; }; }; }; m_currTest.AddShadowSprites(); m_currTest.BringSpritesOnTop(); m_currTest.Update(true); _playReturnShape = false; _plus50Points = false; _plus50PointsTimer = 0; _plus50PointsTotal = 0; _plus200Points = false; _plus200PointsTimer = 0; _scoreSent = false; m_particleManager.reset(); m_sprite.y = 0; m_time = (30 * 1000); if (_bitmapAllDone != null){ removeChild(_bitmapAllDone); _bitmapAllDone = null; }; if (_bitmapWait != null){ removeChild(_bitmapWait); _bitmapWait = null; }; if (_bitmapChooseAShape != null){ removeChild(_bitmapChooseAShape); _bitmapChooseAShape = null; }; _textFieldBest.text = ("" + sm_scores[(m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK))]); _bonusTimer = (-1000 * 1000); _timerOn = false; if (sm_editorMode){ if (sm_editorPlayMode){ _textFieldLevelNumber.text = "PLAY"; } else { _textFieldLevelNumber.text = "EDIT"; }; } else { _textFieldLevelNumber.text = ((m_currId + 1) + ""); }; _textFieldDiamonds.text = ("" + sm_diamonds[(m_currId + (sm_levelPack * LEVELS_PER_LEVEL_PACK))]); autoSubmitStatistics(); Mouse.show(); } private function manageQuality():void{ _titleBitmapQualityHigh.visible = false; _titleBitmapQualityMedium.visible = false; _titleBitmapQualityLow.visible = false; if (_stageQuality == 2){ _titleBitmapQualityLow.visible = true; } else { if (_stageQuality == 1){ _titleBitmapQualityMedium.visible = true; } else { _titleBitmapQualityHigh.visible = true; }; }; } private function runSplashScreen():void{ if (_splashScreenMode == 0){ _bitmapSplashScreen = new Bitmap(new _classSplashScreen().bitmapData); _bitmapSplashScreen.smoothing = true; _bitmapSplashScreen.alpha = 0; _bitmapSplashScreen.x = ((SCREEN_DX * 0.5) - (_bitmapSplashScreen.width * 0.5)); _bitmapSplashScreen.y = ((SCREEN_DY * 0.5) - (_bitmapSplashScreen.height * 0.5)); addChild(_bitmapSplashScreen); _splashScreenMode++; } else { if (_splashScreenMode == 1){ _splashScreenTimer++; _bitmapSplashScreen.alpha = (_bitmapSplashScreen.alpha + 0.05); if (_bitmapSplashScreen.alpha > 1){ _bitmapSplashScreen.alpha = 1; }; if (_splashScreenTimer >= 200){ _splashScreenMode++; }; } else { if (_splashScreenMode == 2){ _bitmapSplashScreen.alpha = (_bitmapSplashScreen.alpha - 0.05); if (_bitmapSplashScreen.alpha <= 0){ _bitmapSplashScreen.alpha = 0; _splashScreenMode++; }; } else { if (_splashScreenMode == 3){ removeChild(_bitmapSplashScreen); _bitmapSplashScreen = null; _splashRunning = false; }; }; }; }; } private function bitmapShootsStars(_arg1:Bitmap, _arg2:int=25, _arg3:int=15, _arg4:int=0, _arg5:int=20, _arg6:int=30, _arg7:int=30):void{ var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:SpriteParticle; _local8 = _arg1.x; _local9 = (_arg1.x + _arg1.width); _local10 = (_arg1.y + _arg2); _local11 = ((_arg1.height - (_arg2 * 2)) - _arg3); _arg5 = (_arg5 + ((Math.random() * _arg5) * 0.5)); _local12 = 0; while (_local12 < _arg5) { _local13 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_BUBBLE, (_local8 + _arg6), (_local10 + (Math.random() * _local11))); if (_local13 != null){ _local13._speedX = ((-0.5 - (Math.random() * 1.5)) * 2); _local13._life = (_local13._life + ((Math.random() * 10) - _arg4)); }; _local13 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_BUBBLE, (_local9 - _arg7), (_local10 + (Math.random() * _local11))); if (_local13 != null){ _local13._speedX = ((0.5 + (Math.random() * 1.5)) * 2); _local13._life = (_local13._life + ((Math.random() * 10) - _arg4)); }; _local12++; }; } private function runCreditsParticles():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:SpriteParticle; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; if (Math.random() > 0.99){ _local1 = (SCREEN_DX * Math.random()); _local2 = (SCREEN_DY * Math.random()); _local3 = 0; while (_local3 < 64) { _local4 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_SOFTBALL, _local1, _local2); if (_local4 != null){ _local5 = ((Math.random() * Math.PI) * 2); _local6 = Math.sin(_local5); _local7 = Math.cos(_local5); _local8 = (0.5 + (Math.random() * 0.5)); _local4._speedX = (_local6 * _local8); _local4._speedY = (_local7 * _local8); _local4._life = (_local4._life + (Math.random() * 30)); }; _local3++; }; playFireWork(); }; } public static function iceModeExecute():void{ if (_iceMode){ Test._friction = 0.2; } else { Test._friction = 0.9; }; } public static function centerBitmap(_arg1:Number, _arg2:Number, _arg3:Bitmap):void{ _arg3.x = (_arg1 - (_arg3.width * 0.5)); _arg3.y = (_arg2 - (_arg3.height * 0.5)); } public static function cloneArray(_arg1:Array):Array{ var _local2:int; var _local3:Array; var _local4:int; _local2 = _arg1.length; _local3 = new Array(_local2); _local4 = 0; while (_local4 < _local2) { _local3[_local4] = _arg1[_local4]; _local4++; }; return (_local3); } } }//package
Section 214
//Main__class3DLogo (Main__class3DLogo) package { import mx.core.*; public class Main__class3DLogo extends BitmapAsset { } }//package
Section 215
//Main__classAlmostPerfectBalance (Main__classAlmostPerfectBalance) package { import mx.core.*; public class Main__classAlmostPerfectBalance extends BitmapAsset { } }//package
Section 216
//Main__classAlmostPerfectBalanceEditor (Main__classAlmostPerfectBalanceEditor) package { import mx.core.*; public class Main__classAlmostPerfectBalanceEditor extends BitmapAsset { } }//package
Section 217
//Main__classAudioOff (Main__classAudioOff) package { import mx.core.*; public class Main__classAudioOff extends BitmapAsset { } }//package
Section 218
//Main__classAudioOn (Main__classAudioOn) package { import mx.core.*; public class Main__classAudioOn extends BitmapAsset { } }//package
Section 219
//Main__classAutoHideOff (Main__classAutoHideOff) package { import mx.core.*; public class Main__classAutoHideOff extends BitmapAsset { } }//package
Section 220
//Main__classAutoHideOn (Main__classAutoHideOn) package { import mx.core.*; public class Main__classAutoHideOn extends BitmapAsset { } }//package
Section 221
//Main__classBackground01 (Main__classBackground01) package { import mx.core.*; public class Main__classBackground01 extends BitmapAsset { } }//package
Section 222
//Main__classBackground02 (Main__classBackground02) package { import mx.core.*; public class Main__classBackground02 extends BitmapAsset { } }//package
Section 223
//Main__classBackground03 (Main__classBackground03) package { import mx.core.*; public class Main__classBackground03 extends BitmapAsset { } }//package
Section 224
//Main__classBackground04 (Main__classBackground04) package { import mx.core.*; public class Main__classBackground04 extends BitmapAsset { } }//package
Section 225
//Main__classBackground05 (Main__classBackground05) package { import mx.core.*; public class Main__classBackground05 extends BitmapAsset { } }//package
Section 226
//Main__classBackground06 (Main__classBackground06) package { import mx.core.*; public class Main__classBackground06 extends BitmapAsset { } }//package
Section 227
//Main__classButtonBGImage1 (Main__classButtonBGImage1) package { import mx.core.*; public class Main__classButtonBGImage1 extends BitmapAsset { } }//package
Section 228
//Main__classButtonBGImage2 (Main__classButtonBGImage2) package { import mx.core.*; public class Main__classButtonBGImage2 extends BitmapAsset { } }//package
Section 229
//Main__classButtonBGImage3 (Main__classButtonBGImage3) package { import mx.core.*; public class Main__classButtonBGImage3 extends BitmapAsset { } }//package
Section 230
//Main__classButtonBGImage4 (Main__classButtonBGImage4) package { import mx.core.*; public class Main__classButtonBGImage4 extends BitmapAsset { } }//package
Section 231
//Main__classButtonBGImage5 (Main__classButtonBGImage5) package { import mx.core.*; public class Main__classButtonBGImage5 extends BitmapAsset { } }//package
Section 232
//Main__classButtonBGImage6 (Main__classButtonBGImage6) package { import mx.core.*; public class Main__classButtonBGImage6 extends BitmapAsset { } }//package
Section 233
//Main__classButtonGrid0 (Main__classButtonGrid0) package { import mx.core.*; public class Main__classButtonGrid0 extends BitmapAsset { } }//package
Section 234
//Main__classButtonGrid1 (Main__classButtonGrid1) package { import mx.core.*; public class Main__classButtonGrid1 extends BitmapAsset { } }//package
Section 235
//Main__classButtonGrid2 (Main__classButtonGrid2) package { import mx.core.*; public class Main__classButtonGrid2 extends BitmapAsset { } }//package
Section 236
//Main__classButtonGrid3 (Main__classButtonGrid3) package { import mx.core.*; public class Main__classButtonGrid3 extends BitmapAsset { } }//package
Section 237
//Main__classButtonLocked (Main__classButtonLocked) package { import mx.core.*; public class Main__classButtonLocked extends BitmapAsset { } }//package
Section 238
//Main__classButtonUnlocked (Main__classButtonUnlocked) package { import mx.core.*; public class Main__classButtonUnlocked extends BitmapAsset { } }//package
Section 239
//Main__classButtonUnlockedBig (Main__classButtonUnlockedBig) package { import mx.core.*; public class Main__classButtonUnlockedBig extends BitmapAsset { } }//package
Section 240
//Main__classChooseAShape (Main__classChooseAShape) package { import mx.core.*; public class Main__classChooseAShape extends BitmapAsset { } }//package
Section 241
//Main__classClearLevel (Main__classClearLevel) package { import mx.core.*; public class Main__classClearLevel extends BitmapAsset { } }//package
Section 242
//Main__classCreditsScreen (Main__classCreditsScreen) package { import mx.core.*; public class Main__classCreditsScreen extends BitmapAsset { } }//package
Section 243
//Main__classCursorHelper (Main__classCursorHelper) package { import mx.core.*; public class Main__classCursorHelper extends BitmapAsset { } }//package
Section 244
//Main__classEditorHelp (Main__classEditorHelp) package { import mx.core.*; public class Main__classEditorHelp extends BitmapAsset { } }//package
Section 245
//Main__classEditorHelpDimensions (Main__classEditorHelpDimensions) package { import mx.core.*; public class Main__classEditorHelpDimensions extends BitmapAsset { } }//package
Section 246
//Main__classEditorHelpRadius (Main__classEditorHelpRadius) package { import mx.core.*; public class Main__classEditorHelpRadius extends BitmapAsset { } }//package
Section 247
//Main__classEditorKeys (Main__classEditorKeys) package { import mx.core.*; public class Main__classEditorKeys extends BitmapAsset { } }//package
Section 248
//Main__classGet20Screen (Main__classGet20Screen) package { import mx.core.*; public class Main__classGet20Screen extends BitmapAsset { } }//package
Section 249
//Main__classGradeA (Main__classGradeA) package { import mx.core.*; public class Main__classGradeA extends BitmapAsset { } }//package
Section 250
//Main__classGradeB (Main__classGradeB) package { import mx.core.*; public class Main__classGradeB extends BitmapAsset { } }//package
Section 251
//Main__classGradeC (Main__classGradeC) package { import mx.core.*; public class Main__classGradeC extends BitmapAsset { } }//package
Section 252
//Main__classGradeD (Main__classGradeD) package { import mx.core.*; public class Main__classGradeD extends BitmapAsset { } }//package
Section 253
//Main__classGradeE (Main__classGradeE) package { import mx.core.*; public class Main__classGradeE extends BitmapAsset { } }//package
Section 254
//Main__classGrid1 (Main__classGrid1) package { import mx.core.*; public class Main__classGrid1 extends BitmapAsset { } }//package
Section 255
//Main__classGrid2 (Main__classGrid2) package { import mx.core.*; public class Main__classGrid2 extends BitmapAsset { } }//package
Section 256
//Main__classGrid3 (Main__classGrid3) package { import mx.core.*; public class Main__classGrid3 extends BitmapAsset { } }//package
Section 257
//Main__classHelp1 (Main__classHelp1) package { import mx.core.*; public class Main__classHelp1 extends BitmapAsset { } }//package
Section 258
//Main__classHelp2 (Main__classHelp2) package { import mx.core.*; public class Main__classHelp2 extends BitmapAsset { } }//package
Section 259
//Main__classHelp3 (Main__classHelp3) package { import mx.core.*; public class Main__classHelp3 extends BitmapAsset { } }//package
Section 260
//Main__classHelp4 (Main__classHelp4) package { import mx.core.*; public class Main__classHelp4 extends BitmapAsset { } }//package
Section 261
//Main__classHelp5 (Main__classHelp5) package { import mx.core.*; public class Main__classHelp5 extends BitmapAsset { } }//package
Section 262
//Main__classHelp6 (Main__classHelp6) package { import mx.core.*; public class Main__classHelp6 extends BitmapAsset { } }//package
Section 263
//Main__classHelpDirectedGravity (Main__classHelpDirectedGravity) package { import mx.core.*; public class Main__classHelpDirectedGravity extends BitmapAsset { } }//package
Section 264
//Main__classHelpHelium (Main__classHelpHelium) package { import mx.core.*; public class Main__classHelpHelium extends BitmapAsset { } }//package
Section 265
//Main__classInstructionsGame (Main__classInstructionsGame) package { import mx.core.*; public class Main__classInstructionsGame extends BitmapAsset { } }//package
Section 266
//Main__classInstructionsShapes (Main__classInstructionsShapes) package { import mx.core.*; public class Main__classInstructionsShapes extends BitmapAsset { } }//package
Section 267
//Main__classLetterA (Main__classLetterA) package { import mx.core.*; public class Main__classLetterA extends BitmapAsset { } }//package
Section 268
//Main__classLetterB (Main__classLetterB) package { import mx.core.*; public class Main__classLetterB extends BitmapAsset { } }//package
Section 269
//Main__classLetterC (Main__classLetterC) package { import mx.core.*; public class Main__classLetterC extends BitmapAsset { } }//package
Section 270
//Main__classLetterD (Main__classLetterD) package { import mx.core.*; public class Main__classLetterD extends BitmapAsset { } }//package
Section 271
//Main__classLetterE (Main__classLetterE) package { import mx.core.*; public class Main__classLetterE extends BitmapAsset { } }//package
Section 272
//Main__classLevelIO (Main__classLevelIO) package { import mx.core.*; public class Main__classLevelIO extends BitmapAsset { } }//package
Section 273
//Main__classLevelPackSelection (Main__classLevelPackSelection) package { import mx.core.*; public class Main__classLevelPackSelection extends BitmapAsset { } }//package
Section 274
//Main__classLevelSkip (Main__classLevelSkip) package { import mx.core.*; public class Main__classLevelSkip extends BitmapAsset { } }//package
Section 275
//Main__classLockedB (Main__classLockedB) package { import mx.core.*; public class Main__classLockedB extends BitmapAsset { } }//package
Section 276
//Main__classLockedC (Main__classLockedC) package { import mx.core.*; public class Main__classLockedC extends BitmapAsset { } }//package
Section 277
//Main__classLockedD (Main__classLockedD) package { import mx.core.*; public class Main__classLockedD extends BitmapAsset { } }//package
Section 278
//Main__classLockedE (Main__classLockedE) package { import mx.core.*; public class Main__classLockedE extends BitmapAsset { } }//package
Section 279
//Main__classLPSMedalA (Main__classLPSMedalA) package { import mx.core.*; public class Main__classLPSMedalA extends BitmapAsset { } }//package
Section 280
//Main__classLPSMedalB (Main__classLPSMedalB) package { import mx.core.*; public class Main__classLPSMedalB extends BitmapAsset { } }//package
Section 281
//Main__classLPSMedalC (Main__classLPSMedalC) package { import mx.core.*; public class Main__classLPSMedalC extends BitmapAsset { } }//package
Section 282
//Main__classLPSMedalD (Main__classLPSMedalD) package { import mx.core.*; public class Main__classLPSMedalD extends BitmapAsset { } }//package
Section 283
//Main__classLPSMedalE (Main__classLPSMedalE) package { import mx.core.*; public class Main__classLPSMedalE extends BitmapAsset { } }//package
Section 284
//Main__classMainMenuBG (Main__classMainMenuBG) package { import mx.core.*; public class Main__classMainMenuBG extends BitmapAsset { } }//package
Section 285
//Main__classMainMenuFG (Main__classMainMenuFG) package { import mx.core.*; public class Main__classMainMenuFG extends BitmapAsset { } }//package
Section 286
//Main__classMainMenuPerfectBalance (Main__classMainMenuPerfectBalance) package { import mx.core.*; public class Main__classMainMenuPerfectBalance extends BitmapAsset { } }//package
Section 287
//Main__classMainMenuPerfectBalanceShadow (Main__classMainMenuPerfectBalanceShadow) package { import mx.core.*; public class Main__classMainMenuPerfectBalanceShadow extends BitmapAsset { } }//package
Section 288
//Main__classPerfectBalance (Main__classPerfectBalance) package { import mx.core.*; public class Main__classPerfectBalance extends BitmapAsset { } }//package
Section 289
//Main__classPerfectBalanceAllDone (Main__classPerfectBalanceAllDone) package { import mx.core.*; public class Main__classPerfectBalanceAllDone extends BitmapAsset { } }//package
Section 290
//Main__classPerfectBalanceAllDoneEditor (Main__classPerfectBalanceAllDoneEditor) package { import mx.core.*; public class Main__classPerfectBalanceAllDoneEditor extends BitmapAsset { } }//package
Section 291
//Main__classPerfectBalanceEditor (Main__classPerfectBalanceEditor) package { import mx.core.*; public class Main__classPerfectBalanceEditor extends BitmapAsset { } }//package
Section 292
//Main__classPerfectBalanceJapanese (Main__classPerfectBalanceJapanese) package { import mx.core.*; public class Main__classPerfectBalanceJapanese extends BitmapAsset { } }//package
Section 293
//Main__classPlayfieldBottom (Main__classPlayfieldBottom) package { import mx.core.*; public class Main__classPlayfieldBottom extends BitmapAsset { } }//package
Section 294
//Main__classPlayfieldLeft (Main__classPlayfieldLeft) package { import mx.core.*; public class Main__classPlayfieldLeft extends BitmapAsset { } }//package
Section 295
//Main__classPlayfieldRight (Main__classPlayfieldRight) package { import mx.core.*; public class Main__classPlayfieldRight extends BitmapAsset { } }//package
Section 296
//Main__classPlayfieldRightEditorEdit (Main__classPlayfieldRightEditorEdit) package { import mx.core.*; public class Main__classPlayfieldRightEditorEdit extends BitmapAsset { } }//package
Section 297
//Main__classPlayfieldRightEditorPlay (Main__classPlayfieldRightEditorPlay) package { import mx.core.*; public class Main__classPlayfieldRightEditorPlay extends BitmapAsset { } }//package
Section 298
//Main__classPlayfieldTop (Main__classPlayfieldTop) package { import mx.core.*; public class Main__classPlayfieldTop extends BitmapAsset { } }//package
Section 299
//Main__classPlus200Points (Main__classPlus200Points) package { import mx.core.*; public class Main__classPlus200Points extends BitmapAsset { } }//package
Section 300
//Main__classPlus50Points (Main__classPlus50Points) package { import mx.core.*; public class Main__classPlus50Points extends BitmapAsset { } }//package
Section 301
//Main__classQualityHigh (Main__classQualityHigh) package { import mx.core.*; public class Main__classQualityHigh extends BitmapAsset { } }//package
Section 302
//Main__classQualityLow (Main__classQualityLow) package { import mx.core.*; public class Main__classQualityLow extends BitmapAsset { } }//package
Section 303
//Main__classQualityMedium (Main__classQualityMedium) package { import mx.core.*; public class Main__classQualityMedium extends BitmapAsset { } }//package
Section 304
//Main__classRelax (Main__classRelax) package { import mx.core.*; public class Main__classRelax extends BitmapAsset { } }//package
Section 305
//Main__classResetProgress (Main__classResetProgress) package { import mx.core.*; public class Main__classResetProgress extends BitmapAsset { } }//package
Section 306
//Main__classSealBack (Main__classSealBack) package { import mx.core.*; public class Main__classSealBack extends BitmapAsset { } }//package
Section 307
//Main__classSealFront (Main__classSealFront) package { import mx.core.*; public class Main__classSealFront extends BitmapAsset { } }//package
Section 308
//Main__classSkippedArrowToLeft (Main__classSkippedArrowToLeft) package { import mx.core.*; public class Main__classSkippedArrowToLeft extends BitmapAsset { } }//package
Section 309
//Main__classSkippedArrowToRight (Main__classSkippedArrowToRight) package { import mx.core.*; public class Main__classSkippedArrowToRight extends BitmapAsset { } }//package
Section 310
//Main__classSplashScreen (Main__classSplashScreen) package { import mx.core.*; public class Main__classSplashScreen extends BitmapAsset { } }//package
Section 311
//Main__classStar (Main__classStar) package { import mx.core.*; public class Main__classStar extends BitmapAsset { } }//package
Section 312
//Main__classSubmitScreen (Main__classSubmitScreen) package { import mx.core.*; public class Main__classSubmitScreen extends BitmapAsset { } }//package
Section 313
//Main__classTextureA (Main__classTextureA) package { import mx.core.*; public class Main__classTextureA extends BitmapAsset { } }//package
Section 314
//Main__classTheEnd (Main__classTheEnd) package { import mx.core.*; public class Main__classTheEnd extends BitmapAsset { } }//package
Section 315
//Main__classWait (Main__classWait) package { import mx.core.*; public class Main__classWait extends BitmapAsset { } }//package
Section 316
//Main__fontClass1 (Main__fontClass1) package { import mx.core.*; public class Main__fontClass1 extends FontAsset { } }//package
Section 317
//MochiBot (MochiBot) package { import flash.display.*; import flash.system.*; import flash.net.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ var _local3:MochiBot; var _local4:String; var _local5:URLVariables; var _local6:String; var _local7:URLRequest; var _local8:Loader; if (Security.sandboxType == "localWithFile"){ return (null); }; _local3 = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); _local4 = "http://core.mochibot.com/my/core.swf"; _local5 = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; _local6 = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; _local7 = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; _local8 = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 318
//MyPreloader (MyPreloader) package { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.system.*; import MoFunZoneAPI.*; import mochi.as3.*; import flash.text.*; import flash.media.*; import flash.net.*; import flash.filters.*; import flash.ui.*; public dynamic class MyPreloader extends MovieClip { private var _textFieldPercent:TextField;// = null private var _initDone:Boolean;// = false private var _fgnState:int;// = 0 private var _canPass0Timer:int;// = 0 private var _nice:Boolean;// = false private var _barOX:int;// = 5 private var _barOY:int;// = 8 private var _timer:int;// = 0 private var _spriteLoadingScreenStartButton:Sprite;// = null private var _sDDot:String;// = ":" private var _canProceed:Boolean;// = false private var _foregroundSprite:Sprite;// = null private var _phase:int;// = 0 private var _sDot:String;// = "." private var _bitmapLoadingScreenStartButton:Bitmap;// = null private var _sA:String;// = "a" private var _sC:String;// = "c" private var _sD:String;// = "d" private var _sE:String;// = "e" private var _sF:String;// = "f" private var _sG:String;// = "g" private var _sH:String;// = "h" private var _andkonLogoTransparent:MovieClip;// = null private var _loadingBar:Sprite;// = null private var _sK:String;// = "k" private var _sM:String;// = "m" private var _sN:String;// = "n" private var _sO:String;// = "o" private var _sP:String;// = "p" private var _sR:String;// = "r" private var _sS:String;// = "s" private var _sT:String;// = "t" private var _sU:String;// = "u" private var _sZ:String;// = "z" private var _spriteMouseClick:Sprite;// = null private var _sW:String;// = "w" private var _sI:String;// = "i" private var _sL:String;// = "l" private var _black:Sprite;// = null private var _sponsorMovieClip:MovieClip;// = null private var _sX:String;// = "x" private var _bitmapLoadingScreen:Bitmap;// = null private var _black2:Sprite;// = null private var _failed:Boolean;// = false private var _once:Boolean;// = false private var _moFunZoneMovieClip:MovieClip;// = null private var _allDone:Boolean;// = false private var _classMP3SoundGame:Class; private var _bitmapAndkon400x400:Bitmap;// = null private var _bgmGame:Sound; private var _bgmSoundChannel:SoundChannel;// = null public var _adBox:Sprite;// = null private var _canPass0:Boolean;// = false private var _frames:int;// = 0 private var _explosions:int;// = 0 private var _sSlash:String;// = "/" private var _bitmapConnectingSinglesLogo:Bitmap;// = null private var _backgroundSprite:Sprite;// = null public static const _ttursasSeal:Boolean = false; public static const _submitButtonDiamonds:Boolean = false; public static const _maxGames:Boolean = false; public static const _walkthrough:Boolean = true; public static const _legitGames:Boolean = false; public static const _freeGamesNews:Boolean = false; public static const _ttursasSplash:Boolean = false; public static const _gamesChart:Boolean = false; public static const _flashGameLicense:Boolean = false; public static const SCREEN_DX:int = 600; public static const SCREEN_DY:int = 500; public static const _moFunZone:Boolean = false; public static const _titleScreenAds:Boolean = false; public static const _gamesFree:Boolean = true; private static const _debug:Boolean = false; public static const FOG_GAME_NAME:String = "PerfectBalance3"; public static const ORIGINAL_FPS:int = 60; public static const _armorGames:Boolean = false; public static const _mindJolt:Boolean = false; public static const _ttursas:Boolean = false; public static const _andkon:Boolean = false; public static const _kongregate:Boolean = false; public static const _chinese:Boolean = false; public static const _walkthroughButton:Boolean = false; public static const _youYouWin:Boolean = false; public static const _mochi:Boolean = false; public static const _submitButtonScore:Boolean = true; public static const _localHighscores:Boolean = false; public static const _cpmStar:Boolean = true; public static const _connectingSingles:Boolean = false; public static const _freeOnlineGames:Boolean = false; public static const _gamesFreeAPI:Boolean = true; public static const _mochiAds:Boolean = false; public static const _gamerSafe:Boolean = false; public static const _gpsStudios:Boolean = false; private static var _error:Boolean = false; public static var _loaded:Boolean = false; public static var _gamerSafeHidden:Boolean = false; public static var _kongregateAPI = null; public static var _classAndkon400x400:Class; public static var _classSponsorMovie:Class = MyPreloader__classSponsorMovie; public static var _gamerSafeAPI:GamerSafe = null; public static var _mochiads_game_id:String = "9addb8efc1dc1119"; public static var _classFGNLogo:Class; public static var _outlineFilter:GlowFilter = new GlowFilter(0, 1, 3, 3, 1000, 1); public static var m_spriteParticleManager:SpriteParticleManager = new SpriteParticleManager(); public static var MindJoltAPI:Object = null; public static var _fontClass1:Class = MyPreloader__fontClass1; public static var gameID:int = 360; private static var _passThrough:Boolean = false; public static var _loadedLevel:String = null; public static var _bitmapParticleLayer:Bitmap = new Bitmap(new BitmapData(SCREEN_DX, SCREEN_DY, true, 0), "auto", true); public static var _classGamesFreeButton:Class = MyPreloader__classGamesFreeButton; public static var _classLoadingScreen:Class = MyPreloader__classLoadingScreen; public static var _classAndkonLogoTransparent:Class; public static var _classLoadingScreenStartButton:Class = MyPreloader__classLoadingScreenStartButton; public static var _classThisCopyIsSiteLocked:Class = MyPreloader__classThisCopyIsSiteLocked; public static var _bitmapFGNLogo:Bitmap = null; public static var _movieClipGamesFreeButton:SimpleButton = null; public function MyPreloader(){ _classMP3SoundGame = MyPreloader__classMP3SoundGame; _bgmGame = new _classMP3SoundGame(); _bgmSoundChannel = null; _bitmapLoadingScreen = null; _black = null; _black2 = null; _backgroundSprite = null; _foregroundSprite = null; _loadingBar = null; _bitmapConnectingSinglesLogo = null; _bitmapLoadingScreenStartButton = null; _spriteLoadingScreenStartButton = null; _spriteMouseClick = null; _adBox = null; _sponsorMovieClip = null; _bitmapAndkon400x400 = null; _andkonLogoTransparent = null; _moFunZoneMovieClip = null; _sDot = "."; _sDDot = ":"; _sSlash = "/"; _sA = "a"; _sC = "c"; _sD = "d"; _sE = "e"; _sF = "f"; _sG = "g"; _sH = "h"; _sI = "i"; _sK = "k"; _sL = "l"; _sM = "m"; _sN = "n"; _sO = "o"; _sP = "p"; _sR = "r"; _sS = "s"; _sT = "t"; _sU = "u"; _sW = "w"; _sX = "x"; _sZ = "z"; _initDone = false; _canProceed = false; _textFieldPercent = null; _once = false; _allDone = false; _phase = 0; _frames = 0; _canPass0 = false; _timer = 0; _canPass0Timer = 0; _nice = false; _failed = false; _explosions = 0; _barOX = 5; _barOY = 8; _fgnState = 0; super(); Font.registerFont(_fontClass1); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function runFGNLogo(_arg1:int):void{ var _local2:int; _local2 = 0; if (_fgnState == 0){ _bitmapFGNLogo.alpha = (_bitmapFGNLogo.alpha + 0.03); if (_bitmapFGNLogo.alpha > 1){ _bitmapFGNLogo.alpha = 1; _local2++; }; _bitmapFGNLogo.y = (_bitmapFGNLogo.y - 4); if (_bitmapFGNLogo.y < ((SCREEN_DY * 0.5) - (_bitmapFGNLogo.height * 0.5))){ _bitmapFGNLogo.y = ((SCREEN_DY * 0.5) - (_bitmapFGNLogo.height * 0.5)); _local2++; }; if (_local2 == 2){ _fgnState = 1; }; } else { if (_fgnState == 1){ if (_arg1 >= (4 * 60)){ _fgnState = 2; }; } else { if (_fgnState == 2){ if (_bitmapFGNLogo.y >= (SCREEN_DY - (4 * 30))){ _bitmapFGNLogo.alpha = (_bitmapFGNLogo.alpha - 0.03); if (_bitmapFGNLogo.alpha < 0){ _bitmapFGNLogo.alpha = 0; }; }; _bitmapFGNLogo.y = (_bitmapFGNLogo.y + 4); }; }; }; } private function secError(_arg1:Event):void{ _error = true; } public function highscores(_arg1:int=0):void{ navigateToURL(new URLRequest(((("http://www.gpstudios.com/highscores.php?id=" + gameID) + "&level=") + _arg1)), "_blank"); } public function gpstudios():void{ navigateToURL(new URLRequest("http://www.gpstudios.com"), "_blank"); } public function downloadGame():void{ navigateToURL(new URLRequest("http://www.gpstudios.com/downloads/brick-yard-2.rar"), "_blank"); } public function onEnterFrame(_arg1:Event):void{ var _local2:Number; var _local3:Boolean; var _local4:int; var _local5:Boolean; var _local6:int; var _local7:SpriteParticle; var _local8:int; var _local9:SoundTransform; var _local10:Bitmap; var _local11:int; var _local12:Sprite; var _local13:int; var _local14:int; var _local15:int; _local2 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal); if (!_initDone){ _initDone = true; initialize(); }; _local3 = false; if (root.loaderInfo.bytesLoaded >= root.loaderInfo.bytesTotal){ _local3 = true; }; if (((!((_bitmapParticleLayer == null))) && (!(_cpmStar)))){ if (Math.random() > 0.9){ _local6 = (415 + (Math.random() * 20)); _local7 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_BUBBLE, -19, _local6); if (_local7 != null){ _local7._speedX = (3 + Math.random()); _local7._rotationSpeed = ((Math.random() * 0.1) - 0.05); }; }; if (Math.random() > 0.3){ _local8 = (SCREEN_DX * Math.random()); _local6 = (130 + (Math.random() * (380 - 130))); _local7 = m_spriteParticleManager.addParticle(SpriteParticle.PARTICLE_TYPE_TWINKLE, _local8, _local6); if (_local7 != null){ _local7._life = (_local7._life - (Math.random() * 10)); }; }; if (((_local3) && ((_explosions < 1)))){ _explosions++; }; m_spriteParticleManager.liveParticles(0, _bitmapParticleLayer, true, true); }; _local4 = (30 * 15); if (((((((((((((((((((_maxGames) || (_flashGameLicense))) || (_debug))) || (_kongregate))) || (_armorGames))) || (_andkon))) || (_moFunZone))) || (_ttursas))) || (_passThrough))) || (_gamesFree))){ _local4 = (30 * 6); }; if (_local3){ _canPass0Timer++; }; if (_canPass0Timer > _local4){ _canPass0 = true; }; _local5 = true; if (_youYouWin){ _local5 = _canProceed; }; if (_phase == 0){ if ((((((((framesLoaded == totalFrames)) && (_local3))) && (_canPass0))) && (_local5))){ if (_passThrough){ _phase = 1; } else { _timer++; if (_timer >= (30 * 2)){ _spriteLoadingScreenStartButton.visible = true; _bitmapLoadingScreenStartButton.visible = true; _phase = 10; }; }; }; } else { if (_phase == 1){ if (_black == null){ _black = new Sprite(); _black.graphics.clear(); _black.graphics.lineStyle(); if (_maxGames){ _black.graphics.beginFill(0xFFFFFF); } else { _black.graphics.beginFill(0); }; _black.graphics.drawRect(0, 0, SCREEN_DX, SCREEN_DY); _black.graphics.endFill(); _black.x = 0; _black.y = 0; _black.alpha = 0; _black.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); addChild(_black); }; _black.alpha = (_black.alpha + 0.05); if (_black.alpha >= 1){ _black.alpha = 1; _phase = 2; }; if (_bgmSoundChannel != null){ _local9 = _bgmSoundChannel.soundTransform; _bgmSoundChannel.soundTransform.volume = (_local9.volume - 0.06); if (_local9.volume < 0.01){ _local9.volume = 0; }; _bgmSoundChannel.soundTransform = _local9; if (_local9.volume < 0.01){ _bgmSoundChannel.stop(); _bgmSoundChannel = null; SoundMixer.stopAll(); _bgmGame = null; }; }; } else { if (_phase == 2){ if (_adBox != null){ removeChild(_adBox); _adBox = null; }; _backgroundSprite.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); if (_bitmapLoadingScreen != null){ removeChild(_bitmapLoadingScreen); _bitmapLoadingScreen = null; }; if (_loadingBar != null){ removeChild(_loadingBar); _loadingBar = null; }; if (_spriteMouseClick != null){ removeChild(_spriteMouseClick); _spriteMouseClick = null; }; if (_bitmapLoadingScreenStartButton != null){ removeChild(_bitmapLoadingScreenStartButton); _bitmapLoadingScreenStartButton = null; }; if (_spriteLoadingScreenStartButton != null){ removeChild(_spriteLoadingScreenStartButton); _spriteLoadingScreenStartButton = null; }; if (_bitmapParticleLayer != null){ removeChild(_bitmapParticleLayer); _bitmapParticleLayer = null; }; m_spriteParticleManager = null; stage.frameRate = ORIGINAL_FPS; if (_gpsStudios){ _sponsorMovieClip = (new _classSponsorMovie() as MovieClip); addChild(_sponsorMovieClip); _sponsorMovieClip.x = 0; _sponsorMovieClip.y = 0; _sponsorMovieClip.play(); } else { if (_gamesFree){ _sponsorMovieClip = (new _classSponsorMovie() as MovieClip); addChild(_sponsorMovieClip); _sponsorMovieClip.buttonMode = true; _sponsorMovieClip.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownGamesFree); _sponsorMovieClip.x = -30; _sponsorMovieClip.y = 10; _sponsorMovieClip.play(); stage.frameRate = 15; } else { if (_maxGames){ _sponsorMovieClip = (new _classSponsorMovie() as MovieClip); addChild(_sponsorMovieClip); _sponsorMovieClip.x = 25; _sponsorMovieClip.y = 200; _sponsorMovieClip.play(); } else { if (_freeGamesNews){ _bitmapFGNLogo = new Bitmap(new _classFGNLogo().bitmapData); _bitmapFGNLogo.smoothing = true; _bitmapFGNLogo.x = ((SCREEN_DX * 0.5) - (_bitmapFGNLogo.width * 0.5)); _bitmapFGNLogo.y = SCREEN_DY; _bitmapFGNLogo.alpha = 0; addChild(_bitmapFGNLogo); } else { if (_armorGames){ _sponsorMovieClip = (new _classSponsorMovie() as MovieClip); _sponsorMovieClip.x = 25; _sponsorMovieClip.y = 50; _sponsorMovieClip.play(); addChild(_sponsorMovieClip); } else { if (_moFunZone){ _moFunZoneMovieClip = (new _classSponsorMovie() as MovieClip); addChild(_moFunZoneMovieClip); _moFunZoneMovieClip.x = 25; _moFunZoneMovieClip.y = 50; _moFunZoneMovieClip.play(); } else { if (_andkon){ _local10 = new Bitmap(new _classAndkon400x400().bitmapData); _local10.smoothing = true; _local10.alpha = 0; addChild(_local10); _local10.x = ((SCREEN_DX * 0.5) - (_local10.width * 0.5)); _local10.y = ((SCREEN_DY * 0.5) - (_local10.height * 0.5)); _bitmapAndkon400x400 = _local10; _foregroundSprite = new Sprite(); _foregroundSprite.graphics.clear(); _foregroundSprite.graphics.lineStyle(); _foregroundSprite.graphics.beginFill(0); _foregroundSprite.graphics.drawRect(0, 0, SCREEN_DX, SCREEN_DY); _foregroundSprite.graphics.endFill(); _foregroundSprite.x = 0; _foregroundSprite.y = 0; _foregroundSprite.alpha = 0; _foregroundSprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); addChild(_foregroundSprite); }; }; }; }; }; }; }; _phase = 3; } else { if (_phase == 3){ if (_bitmapAndkon400x400 != null){ _bitmapAndkon400x400.alpha = (_bitmapAndkon400x400.alpha + 0.05); if (_bitmapAndkon400x400.alpha > 1){ _bitmapAndkon400x400.alpha = 1; }; }; _frames++; _local11 = 0; if (_gpsStudios){ _local11 = 218; } else { if (_maxGames){ _local11 = 186; } else { if (_gamesFree){ _local11 = 120; } else { if (_bitmapAndkon400x400 != null){ _local11 = 150; } else { if (_armorGames){ _local11 = 260; } else { if (_moFunZoneMovieClip != null){ _local11 = 350; } else { if (_freeGamesNews){ _local11 = (7 * 60); runFGNLogo(_frames); } else { _phase = 4; }; }; }; }; }; }; }; if (_frames == _local11){ stage.frameRate = ORIGINAL_FPS; if (((_maxGames) || (_gamesFree))){ _sponsorMovieClip.enabled = false; _sponsorMovieClip.stop(); _sponsorMovieClip.soundTransform = new SoundTransform(0, 0); removeChild(_sponsorMovieClip); _sponsorMovieClip = null; _phase = 4; } else { if (_freeGamesNews){ removeChild(_bitmapFGNLogo); _bitmapFGNLogo = null; _phase = 4; } else { _phase = 4; if ((((_local11 > 0)) && (!(_andkon)))){ _phase = 44; if (_black2 == null){ _black2 = new Sprite(); _black2.graphics.clear(); _black2.graphics.lineStyle(); _black2.graphics.beginFill(0); _black2.graphics.drawRect(0, 0, SCREEN_DX, SCREEN_DY); _black2.graphics.endFill(); _black2.x = 0; _black2.y = 0; _black2.alpha = 0; addChild(_black2); }; }; }; }; }; } else { if (_phase == 44){ _black2.alpha = (_black2.alpha + 0.05); if (_black2.alpha >= 1){ _black2.alpha = 1; _phase = 4; if (_sponsorMovieClip != null){ _sponsorMovieClip.enabled = false; _sponsorMovieClip.stop(); removeChild(_sponsorMovieClip); _sponsorMovieClip = null; }; if (_black2 != null){ removeChild(_black2); _black2 = null; }; }; } else { if (_phase == 4){ if (_bitmapAndkon400x400 != null){ _bitmapAndkon400x400.alpha = (_bitmapAndkon400x400.alpha - 0.05); if (_bitmapAndkon400x400.alpha <= 0){ _bitmapAndkon400x400.alpha = 0; _phase = 5; _allDone = true; if (_andkonLogoTransparent != null){ removeChild(_andkonLogoTransparent); _andkonLogoTransparent = null; }; if (_bitmapAndkon400x400 != null){ removeChild(_bitmapAndkon400x400); _bitmapAndkon400x400 = null; }; }; } else { _allDone = true; }; } else { if (_phase == 10){ } else { if (_phase == -1){ }; }; }; }; }; }; }; }; if (_allDone){ removeEventListener(Event.ENTER_FRAME, onEnterFrame); nextFrame(); if (_bitmapConnectingSinglesLogo != null){ removeChild(_bitmapConnectingSinglesLogo); _bitmapConnectingSinglesLogo = null; }; if (_foregroundSprite != null){ removeChild(_foregroundSprite); _foregroundSprite = null; }; if (_textFieldPercent != null){ removeChild(_textFieldPercent); _textFieldPercent = null; }; if (_moFunZoneMovieClip != null){ _moFunZoneMovieClip.enabled = false; _moFunZoneMovieClip.stop(); removeChild(_moFunZoneMovieClip); _moFunZoneMovieClip = null; }; init(); } else { if (_loadingBar != null){ _local12 = _loadingBar; _local13 = ((329 + _barOX) - 45); _local14 = (61 + _barOY); if (_textFieldPercent != null){ _local15 = int((_local2 * 100)); _textFieldPercent.text = (_local15 + "%"); }; _local12.graphics.clear(); _local12.graphics.beginFill(0x222222); _local12.graphics.drawRect((_local13 - 2), (_local14 - 2), (140 + 4), (10 + 4)); _local12.graphics.endFill(); _local12.graphics.beginFill(0xDDDDDD); _local12.graphics.drawRect(_local13, _local14, (140 * _local2), 10); _local12.graphics.endFill(); }; }; if (((((((!(_armorGames)) && (!(_andkon)))) && (!(_moFunZone)))) && (!(_gamesFree)))){ if (_black != null){ removeChild(_black); addChild(_black); }; if (_bitmapFGNLogo != null){ removeChild(_bitmapFGNLogo); addChild(_bitmapFGNLogo); }; }; } public function ad_finished():void{ _loaded = true; _nice = true; _canPass0 = true; } private function init():void{ var _local1:Class; var _local2:Object; _local1 = Class(getDefinitionByName("Main")); if (_local1){ _local2 = new (_local1); addChild((_local2 as DisplayObject)); removeChild(_black); _local2.init(_nice, _failed, _black); _black = null; }; } public function onLoadLevel(_arg1:Object):void{ var _local2:Number; var _local3:String; var _local4:String; var _local5:String; var _local6:String; _local2 = _arg1.id; _local3 = _arg1.name; _local4 = _arg1.permalink; _local5 = _arg1.content; _local6 = _arg1.label; trace(((((("onLoadLevel " + _local2) + " [") + _local6) + "] loaded: ") + _local5)); _loadedLevel = _local5; } public function tips():void{ navigateToURL(new URLRequest("http://www.gpstudios.com/brick_yard_2_tips.php"), "_blank"); } public function fwAd_onClickStartBtn():void{ _canProceed = true; } private function dispatchHandler(_arg1:Event):void{ if (_arg1.type == Event.COMPLETE){ _canPass0 = true; _loaded = true; }; trace(("CPMStar Event: " + _arg1.type)); dispatchEvent(_arg1); } public function loadFinished(_arg1:Event):void{ MindJoltAPI = _arg1.currentTarget.content; MindJoltAPI.service.connect(); trace("[MindJoltAPI] service manually loaded"); } private function addGamesFreeButton(_arg1:int, _arg2:int):void{ _movieClipGamesFreeButton = GetGamesFreeButton(); addChild(_movieClipGamesFreeButton); _movieClipGamesFreeButton.x = _arg1; _movieClipGamesFreeButton.y = _arg2; _movieClipGamesFreeButton.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownGamesFree); } private function kongregateInit():void{ var _local1:Object; var _local2:String; var _local3:URLRequest; var _local4:Loader; _local1 = LoaderInfo(root.loaderInfo).parameters; _local2 = ((_local1.api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf")); trace(("API path: " + _local2)); Security.allowDomain("*.kongregate.com"); _local3 = new URLRequest(_local2); _local4 = new Loader(); _local4.contentLoaderInfo.addEventListener(Event.COMPLETE, kongregateLoadComplete); _local4.load(_local3); this.addChild(_local4); } private function initialize():void{ var url:String; var urlStart:Number; var urlEnd:Number; var domain:String; var LastDot:Number; var domEnd:Number; var oY:Number; var b:Bitmap; var s:Sprite; var textFormat:TextFormat; var text:TextField; var bSL:Bitmap; var variables:URLVariables; var request:URLRequest; var loader:URLLoader; var newMenu:ContextMenu; var ctm1:ContextMenuItem; var ctm2:ContextMenuItem; var ctm3:ContextMenuItem; var ctm4:ContextMenuItem; var CPMStarContentSpotID:String; var cpmstarViewSWFUrl:String; var cpmstarLoader:Loader; var config:AchievementConfig; var adValues:Object; stage.focus = this; stop(); stage.scaleMode = StageScaleMode.SHOW_ALL; stage.quality = StageQuality.HIGH; url = stage.loaderInfo.url; urlStart = (url.indexOf("://") + 3); urlEnd = url.indexOf("/", urlStart); domain = url.substring(urlStart, urlEnd); LastDot = (domain.lastIndexOf(".") - 1); domEnd = (domain.lastIndexOf(".", LastDot) + 1); domain = domain.substring(domEnd, domain.length); if (((_kongregate) || (!((_kongregateAPI == null))))){ }; if (_gamesFree){ }; if (_connectingSingles){ if (domain != ((((((((((((((((((((_sC + _sO) + _sN) + _sN) + _sE) + _sC) + _sT) + _sI) + _sN) + _sG) + _sS) + _sI) + _sN) + _sG) + _sL) + _sE) + _sS) + _sDot) + _sC) + _sO) + _sM)){ _phase = -1; }; }; if (_maxGames){ if (domain != (((((((((((_sM + _sA) + _sX) + _sG) + _sA) + _sM) + _sE) + _sS) + _sDot) + _sC) + _sO) + _sM)){ _phase = -1; }; }; if (_flashGameLicense){ if (domain != (((((((((((((((((((_sF + _sL) + _sA) + _sS) + _sH) + _sG) + _sA) + _sM) + _sE) + _sL) + _sI) + _sC) + _sE) + _sN) + _sS) + _sE) + _sDot) + _sC) + _sO) + _sM)){ _phase = -1; }; }; if (((_freeGamesNews) && (!(_kongregate)))){ if (domain != (((((((((((((((((_sF + _sR) + _sE) + _sE) + _sG) + _sA) + _sM) + _sE) + _sS) + _sN) + _sE) + _sW) + _sS) + _sDot) + _sI) + _sN) + _sF) + _sO)){ _phase = -1; }; }; if (_andkon){ if (domain != (((((((((_sA + _sN) + _sD) + _sK) + _sO) + _sN) + _sDot) + _sC) + _sO) + _sM)){ _phase = -1; }; }; if (_ttursas){ if (domain != ((((((((((_sT + _sT) + _sU) + _sR) + _sS) + _sA) + _sS) + _sDot) + _sC) + _sO) + _sM)){ _phase = -1; }; }; if (_freeOnlineGames){ if (domain != ((((((((((((((((((_sF + _sR) + _sE) + _sE) + _sO) + _sN) + _sL) + _sI) + _sN) + _sE) + _sG) + _sA) + _sM) + _sE) + _sS) + _sDot) + _sC) + _sO) + _sM)){ _phase = -1; }; }; if (_armorGames){ if (domain != (((((((((((((_sA + _sR) + _sM) + _sO) + _sR) + _sG) + _sA) + _sM) + _sE) + _sS) + _sDot) + _sC) + _sO) + _sM)){ _phase = -1; }; }; if (_phase < 0){ bSL = new Bitmap(new _classThisCopyIsSiteLocked().bitmapData); bSL.smoothing = true; addChild(bSL); addGamesFreeButton(215, 445); return; }; if (((_gamesFree) && (!((loaderInfo.url.substring(0, 4) == "file"))))){ Security.allowDomain("*"); Security.loadPolicyFile("http://track.g-bot.net/crossdomain.xml"); variables = new URLVariables(); variables.id = "perfectbalance3"; variables.ui = loaderInfo.url; request = new URLRequest("http://track.g-bot.net/track.php"); request.method = "POST"; request.data = variables; loader = new URLLoader(); loader.load(request); }; if (_gpsStudios){ newMenu = new ContextMenu(); newMenu.hideBuiltInItems(); ctm1 = new ContextMenuItem("Play More Games at GPStudios"); ctm1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function ():void{ gpstudios(); }); ctm2 = new ContextMenuItem("Check Out The Tips Page"); ctm2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function ():void{ tips(); }); ctm3 = new ContextMenuItem("Check Out The Highscores"); ctm3.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function ():void{ highscores(); }); ctm4 = new ContextMenuItem("Add This Game To Your Site!"); ctm4.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, function ():void{ downloadGame(); }); newMenu.customItems.push(ctm1, ctm2, ctm3, ctm4); contextMenu = newMenu; }; _backgroundSprite = new Sprite(); _backgroundSprite.graphics.clear(); _backgroundSprite.graphics.lineStyle(); _backgroundSprite.graphics.beginFill(0); _backgroundSprite.graphics.drawRect(0, 0, SCREEN_DX, SCREEN_DY); _backgroundSprite.graphics.endFill(); _backgroundSprite.x = 0; _backgroundSprite.y = 0; _backgroundSprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); addChild(_backgroundSprite); oY = 0; if (_connectingSingles){ oY = -120; }; b = new Bitmap(new _classLoadingScreen().bitmapData); b.smoothing = true; addChild(b); _bitmapLoadingScreen = b; _loadingBar = new Sprite(); addChild(_loadingBar); s = new Sprite(); s.graphics.clear(); s.graphics.lineStyle(); s.graphics.beginFill(0); s.graphics.drawRect(0, 0, b.width, b.height); s.graphics.endFill(); s.x = b.x; s.y = b.y; s.alpha = 0; s.visible = true; s.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); addChild(s); _spriteMouseClick = s; m_spriteParticleManager.initialize(); addChild(_bitmapParticleLayer); if (_cpmStar){ _adBox = new Sprite(); _adBox.graphics.clear(); _adBox.graphics.lineStyle(); _adBox.graphics.beginFill(0); _adBox.graphics.drawRect(0, 0, 300, 260); _adBox.graphics.endFill(); _adBox.x = (((SCREEN_DX * 0.5) - 150) + 3); _adBox.y = (((SCREEN_DY * 0.5) - 120) + 3); CPMStarContentSpotID = "2452Q64F61612"; _adBox.mouseChildren = true; this.mouseChildren = true; Security.allowDomain("server.cpmstar.com"); cpmstarViewSWFUrl = "http://server.cpmstar.com/adviewas3.swf"; cpmstarLoader = new Loader(); cpmstarLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler); cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler); cpmstarLoader.load(new URLRequest(((cpmstarViewSWFUrl + "?contentspotid=") + CPMStarContentSpotID))); cpmstarLoader.mouseChildren = true; _adBox.addChild(cpmstarLoader); addChild(_adBox); }; b = new Bitmap(new _classLoadingScreenStartButton().bitmapData); b.smoothing = true; b.x = ((SCREEN_DX * 0.5) - (b.width * 0.5)); b.y = 445; b.visible = false; _bitmapLoadingScreenStartButton = b; s = new Sprite(); s.graphics.clear(); s.graphics.lineStyle(); s.graphics.beginFill(0); s.graphics.drawRect(0, 0, b.width, b.height); s.graphics.endFill(); s.x = b.x; s.y = b.y; s.alpha = 0; s.visible = false; s.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); addChild(s); _spriteLoadingScreenStartButton = s; if (_maxGames){ b.y = (b.y - 80); s.y = (s.y - 80); }; addChild(b); if (_andkon){ _andkonLogoTransparent = (new _classAndkonLogoTransparent() as MovieClip); addChild(_andkonLogoTransparent); _andkonLogoTransparent.x = 190; _andkonLogoTransparent.y = 160; _andkonLogoTransparent.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); }; if (((((((((((((((_connectingSingles) || (_passThrough))) || (_maxGames))) || (_flashGameLicense))) || (_cpmStar))) || (_armorGames))) || (_andkon))) || (_moFunZone))){ _loaded = true; _nice = true; }; if (_kongregate){ kongregateInit(); _passThrough = true; }; if (_gpsStudios){ Security.allowDomain("www.gpstudios.com"); Security.loadPolicyFile("http://www.gpstudios.com/crossdomain.xml"); }; if (_gamesChart){ GamesChart.setup(stage, "80d6364b9fe35bc82f1fb0620a4ad884"); GamesChart.hideTab(); }; textFormat = new TextFormat("Geometric 231", 14, 0xFFFFFF, false, false, false); textFormat.align = TextFormatAlign.RIGHT; text = new TextField(); text.defaultTextFormat = textFormat; text.x = (408 + _barOX); text.y = (55 + _barOY); text.width = 60; text.height = 30; text.embedFonts = true; text.mouseEnabled = false; text.text = "0%"; text.filters = [_outlineFilter]; text.antiAliasType = AntiAliasType.ADVANCED; addChild(text); _textFieldPercent = text; if (_mochi){ MochiServices.connect(_mochiads_game_id, this); if (_mochiAds){ MochiAd.showPreGameAd({clip:root, id:_mochiads_game_id, res:"600x500", background:1919759, color:7579235, outline:0, no_bg:false, ad_failed:ad_failed, ad_finished:ad_finished}); }; }; if (_youYouWin){ MochiBot.track(this, "c9a7fe8a"); } else { if (((((!(_armorGames)) && (!(_moFunZone)))) && (!(_gamesFree)))){ MochiBot.track(this, "8473d8d2"); }; }; if (_moFunZone){ config = new AchievementConfig(); config.gameid = "perfect_balance_3"; config.workspaceWidth = SCREEN_DX; config.workspaceHeight = SCREEN_DY; config.test = false; config.autoPosition = "cc"; config.bringToTop = true; config.fadeout = true; config.dialogScale = 1; AchievementLoaderAS3.readyCallBack(waitForReadyMoFunZone); Security.allowDomain("*.mofunzone.com"); AchievementLoaderAS3.loadAchievement("http://www.mofunzone.com/api/AchievementAS3.swf", this, config); }; if (_gamesFreeAPI){ Security.allowDomain("*"); Security.loadPolicyFile("http://hiscore.gamesfree.com/crossdomain.xml"); }; if (_youYouWin){ _loaded = true; _nice = true; adValues = {x:0, y:0, wid:600, hei:500, id:"ttursas-perfectbalance3-1", adType:"loading", onClickStartBtn:fwAd_onClickStartBtn}; this.addChild(new FWAd_AS3(adValues)); }; SoundMixer.stopAll(); _bgmSoundChannel = _bgmGame.play(0, int.MAX_VALUE, new SoundTransform(0.1)); } private function waitForReadyMoFunZone():void{ } private function kongregateLoadComplete(_arg1:Event):void{ _kongregateAPI = _arg1.target.content; if (_kongregateAPI != null){ _kongregateAPI.sharedContent.addLoadListener("Level", onLoadLevel); _kongregateAPI.services.connect(); trace(("\n" + _kongregateAPI.services)); trace(("\n" + _kongregateAPI.user)); trace(("\n" + _kongregateAPI.scores)); trace(("\n" + _kongregateAPI.stats)); }; _loaded = true; _nice = true; _canPass0 = true; } private function onMouseDown(_arg1:MouseEvent):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; trace(((("mouseX = " + mouseX) + " mouseY = ") + mouseY)); if (((_armorGames) && ((_phase <= 1)))){ if ((((((((mouseX >= 60)) && ((mouseY >= 180)))) && ((mouseX <= 542)))) && ((mouseY <= 316)))){ navigateToURL(new URLRequest("http://www.armorgames.com"), "_blank"); return; }; }; if (((_moFunZone) && ((_phase <= 1)))){ if ((((((((mouseX >= 171)) && ((mouseX <= 427)))) && ((mouseY >= 136)))) && ((mouseY <= 352)))){ navigateToURL(new URLRequest("http://www.MoFunZone.com/"), "_blank"); return; }; }; if (((_andkon) && ((_phase == 3)))){ navigateToURL(new URLRequest("http://www.andkon.com/arcade/"), "_blank"); return; }; if (((((!((_bitmapLoadingScreenStartButton == null))) && (_bitmapLoadingScreenStartButton.visible))) && ((_phase == 10)))){ _local2 = _bitmapLoadingScreenStartButton.x; _local3 = _bitmapLoadingScreenStartButton.y; _local4 = (_local2 + _bitmapLoadingScreenStartButton.width); _local5 = (_local3 + _bitmapLoadingScreenStartButton.height); if ((((((((mouseX >= _local2)) && ((mouseX <= _local4)))) && ((mouseY >= _local3)))) && ((mouseY <= _local5)))){ _phase = 1; return; }; }; if (_bitmapFGNLogo != null){ _local2 = _bitmapFGNLogo.x; _local3 = _bitmapFGNLogo.y; _local4 = (_local2 + _bitmapFGNLogo.width); _local5 = (_local3 + _bitmapFGNLogo.height); if ((((((((mouseX >= _local2)) && ((mouseX <= _local4)))) && ((mouseY >= _local3)))) && ((mouseY <= _local5)))){ navigateToURL(new URLRequest("http://www.freegamesnews.com"), "_blank"); return; }; }; if (_once){ return; }; if (((_maxGames) && ((((_phase == 0)) || ((_phase == 10)))))){ if ((((((((mouseX >= 22)) && ((mouseY >= 218)))) && ((mouseX <= 533)))) && ((mouseY <= 316)))){ navigateToURL(new URLRequest("http://www.maxgames.com"), "_blank"); _once = true; }; }; if (_phase > 0){ return; }; trace("bitmap tests..."); if (_andkonLogoTransparent != null){ _local2 = _andkonLogoTransparent.x; _local3 = _andkonLogoTransparent.y; _local4 = (_local2 + 210); _local5 = (_local3 + 220); if ((((((((mouseX >= _local2)) && ((mouseX <= _local4)))) && ((mouseY >= _local3)))) && ((mouseY <= _local5)))){ navigateToURL(new URLRequest("http://www.andkon.com/arcade/"), "_blank"); }; }; } public function ad_failed():void{ _loaded = true; _nice = true; _canPass0 = true; } private function secOK(_arg1:Event):void{ _nice = true; _loaded = true; } public static function GetGamesFreeButton():SimpleButton{ var _local1:SimpleButton; var _local2:GlowFilter; var _local3:DropShadowFilter; _local1 = (new _classGamesFreeButton() as SimpleButton); _local2 = new GlowFilter(0, 1, 7, 7); _local3 = new DropShadowFilter(4, 45, 0, 0.4, 6, 6); _local1.filters = [_local2, _local3]; return (_local1); } public static function onMouseDownGamesFree(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamesfree.com"), "_blank"); } } }//package
Section 319
//MyPreloader__classGamesFreeButton (MyPreloader__classGamesFreeButton) package { import mx.core.*; public class MyPreloader__classGamesFreeButton extends ButtonAsset { } }//package
Section 320
//MyPreloader__classLoadingScreen (MyPreloader__classLoadingScreen) package { import mx.core.*; public class MyPreloader__classLoadingScreen extends BitmapAsset { } }//package
Section 321
//MyPreloader__classLoadingScreenStartButton (MyPreloader__classLoadingScreenStartButton) package { import mx.core.*; public class MyPreloader__classLoadingScreenStartButton extends BitmapAsset { } }//package
Section 322
//MyPreloader__classMP3SoundGame (MyPreloader__classMP3SoundGame) package { import mx.core.*; public class MyPreloader__classMP3SoundGame extends SoundAsset { } }//package
Section 323
//MyPreloader__classSponsorMovie (MyPreloader__classSponsorMovie) package { import flash.utils.*; import mx.core.*; public class MyPreloader__classSponsorMovie extends MovieClipLoaderAsset { public var dataClass:Class; private static var bytes:ByteArray = null; public function MyPreloader__classSponsorMovie(){ dataClass = MyPreloader__classSponsorMovie_dataClass; super(); initialWidth = (12320 / 20); initialHeight = (10141 / 20); } override public function get movieClipData():ByteArray{ if (bytes == null){ bytes = ByteArray(new dataClass()); }; return (bytes); } } }//package
Section 324
//MyPreloader__classSponsorMovie_dataClass (MyPreloader__classSponsorMovie_dataClass) package { import mx.core.*; public class MyPreloader__classSponsorMovie_dataClass extends ByteArrayAsset { } }//package
Section 325
//MyPreloader__classThisCopyIsSiteLocked (MyPreloader__classThisCopyIsSiteLocked) package { import mx.core.*; public class MyPreloader__classThisCopyIsSiteLocked extends BitmapAsset { } }//package
Section 326
//MyPreloader__fontClass1 (MyPreloader__fontClass1) package { import mx.core.*; public class MyPreloader__fontClass1 extends FontAsset { } }//package
Section 327
//Particle (Particle) package { import flash.geom.*; public class Particle { public var _x:Number; public var _data:int;// = 0 public var _alive:Boolean; public var _speedX:Number; public var _speedY:Number; public var _baseColor:uint;// = 0 public var _baseAlpha:uint;// = 0 public var _type:int; public var _iD:int; public var _life:Number; public var _alpha:Number;// = 1 public var _size:Number; public var _color:uint;// = 0 public var _rectangle:Rectangle;// = null public var _y:Number; public static const PARTICLE_TYPE_EXPLOSION:int = 1; public static const PARTICLE_TYPE_SPARKLE:int = 4; public static const PARTICLE_LIFE_TIMES:Array = [20, 20, 10, 75, 15, 30, 300]; public static const GRAVITY:Array = [0.04, 0, 0, 0, 0, 0, 0]; public static const PARTICLE_TYPE_TWINKLE:int = 2; public static const PARTICLE_TYPE_SHOOTING_STAR:int = 3; public static const PARTICLE_TYPE_WIND:int = 5; public static const BASE_ALPHA:Array = [0.9, 1, 1, 1, 1, 0.3, 1]; public static const PARTICLE_TYPE_SILVER_RAIN:int = 6; public static const PARTICLE_TYPE_DUST:int = 0; public function Particle(_arg1:int){ _rectangle = null; _alpha = 1; _data = 0; _baseAlpha = 0; _color = 0; _baseColor = 0; super(); _iD = _arg1; _x = 0; _y = 0; _speedX = 0; _speedY = 0; _life = 0; _alive = false; } public function live(_arg1:Number):void{ var _local2:int; var _local3:uint; var _local4:Number; var _local5:Number; _local3 = _baseAlpha; if (_life < 20){ _local3 = uint(((_local3 * _life) / 20)); }; _local4 = (_x + _speedX); _local5 = (_y + _speedY); _speedY = (_speedY + GRAVITY[_type]); if (_type == PARTICLE_TYPE_SILVER_RAIN){ if (_data < 20){ _local3 = ((0xFF * _data) / 20); } else { if (_data < 60){ _local3 = 0xFF; } else { if (_data < 80){ _local3 = ((0xFF * (80 - _data)) / 20); } else { _local3 = 0; }; }; }; _data++; if (_data == 80){ _data = 0; }; }; _x = _local4; _y = _local5; _rectangle.x = (_local4 - _size); _rectangle.y = ((_local5 + _arg1) - _size); _color = (_baseColor | (_local3 << 24)); } public function resetGraphics():void{ if (_type == PARTICLE_TYPE_EXPLOSION){ _size = 3; } else { _size = 2; }; _rectangle = new Rectangle(0, 0, _size, _size); _size = (_size * 0.5); } public function rebirth():void{ _alive = true; _life = PARTICLE_LIFE_TIMES[_type]; _baseAlpha = uint((BASE_ALPHA[_type] * 0xFF)); } } }//package
Section 328
//ParticleManager (ParticleManager) package { import flash.display.*; import flash.geom.*; public class ParticleManager { public var _particlesDeadIndex:int;// = 0 private var _particlesAliveIndices:Array;// = null private var _particles:Array;// = null private var _particlesDeadIndices:Array;// = null public var _particlesAlive:int;// = 0 public static var particlesMax:int = (0x1000 + 0x1000); public function ParticleManager(){ var _local1:int; _particles = null; _particlesAliveIndices = null; _particlesDeadIndices = null; _particlesAlive = 0; _particlesDeadIndex = 0; super(); _particles = new Array(particlesMax); _particlesAliveIndices = new Array(particlesMax); _particlesDeadIndices = new Array(particlesMax); _local1 = 0; while (_local1 < particlesMax) { _particles[_local1] = new Particle(_local1); _local1++; }; } private function resetParticle(_arg1:Particle, _arg2:int, _arg3:Number, _arg4:Number, _arg5:uint):void{ _arg1._type = _arg2; _arg1._baseColor = (_arg5 & 0xFFFFFF); _arg1._color = _arg1._baseColor; _arg1.resetGraphics(); _arg1._x = _arg3; _arg1._y = _arg4; _arg1._speedX = 0; _arg1._speedY = 0; _arg1.rebirth(); } public function addParticle(_arg1:int, _arg2:Number, _arg3:Number, _arg4:uint):Particle{ var _local5:int; var _local6:int; var _local7:int; var _local8:Particle; _local7 = _particlesDeadIndices[_particlesDeadIndex]; if (_local7 >= 0){ _local8 = _particles[_particlesDeadIndex]; resetParticle(_local8, _arg1, _arg2, _arg3, _arg4); _particlesAliveIndices[_particlesAlive] = _particlesDeadIndex; _particlesAlive++; _particlesDeadIndices[_particlesDeadIndex] = -1; _particlesDeadIndex = _local7; return (_local8); }; _local5 = -1; _local6 = (0x0400 * 0x0400); _local7 = 0; while (_local7 < particlesMax) { _local8 = _particles[_local7]; if (_local8._type == 1){ } else { if (_local8._life < _local6){ _local6 = _local8._life; _local5 = _local7; }; }; _local7++; }; if (_local5 < 0){ return (null); }; _local8 = _particles[_local5]; resetParticle(_local8, _arg1, _arg2, _arg3, _arg4); return (_local8); } public function reset():void{ var _local1:int; _local1 = 0; while (_local1 < particlesMax) { _particles[_local1]._alive = false; _particlesAliveIndices[_local1] = -1; _particlesDeadIndices[_local1] = (_local1 + 1); _local1++; }; _particlesDeadIndices[(particlesMax - 1)] = -1; _particlesDeadIndex = 0; _particlesAlive = 0; } public function initialize():void{ var _local1:int; _local1 = 0; while (_local1 < particlesMax) { _particlesAliveIndices[_local1] = -1; _particlesDeadIndices[_local1] = (_local1 + 1); _local1++; }; _particlesDeadIndices[(particlesMax - 1)] = -1; _particlesDeadIndex = 0; _particlesAlive = 0; } public function liveParticles(_arg1:Number, _arg2:Bitmap):void{ var _local3:BitmapData; var _local4:Particle; var _local5:int; var _local6:int; _local3 = _arg2.bitmapData; _local3.fillRect(new Rectangle(0, 0, _local3.width, _local3.height), 0); _local5 = 0; while (_local5 < _particlesAlive) { _local6 = _particlesAliveIndices[_local5]; _local4 = _particles[_local6]; if (!_local4._alive){ } else { _local4.live(_arg1); _local4._life = (_local4._life - 1); if (_local4._life <= 0){ _local4._alive = false; _particlesAliveIndices[_local5] = _particlesAliveIndices[(_particlesAlive - 1)]; _particlesAlive--; _particlesDeadIndices[_local6] = _particlesDeadIndex; _particlesDeadIndex = _local6; _local5--; } else { _local3.fillRect(_local4._rectangle, _local4._color); }; }; _local5++; }; } public function destroy():void{ } } }//package
Section 329
//SpriteParticle (SpriteParticle) package { public class SpriteParticle { public var _y:Number; public var _alive:Boolean; public var _speedX:Number; public var _speedY:Number; public var _type:int; public var _iD:int; public var _life:Number; public var _rotation:Number; public var _alpha:Number;// = 1 public var _size:Number; public var _rotationSpeed:Number; public var _x:Number; public static const PARTICLE_TYPE_SMOKE:int = 3; public static const PARTICLE_TYPE_BALL_YELLOW:int = 5; public static const PARTICLE_TYPE_HARDSQUARE:int = 2; public static const PARTICLE_TYPE_SOFTBALL:int = 1; public static const PARTICLE_TYPE_TWINKLE:int = 4; public static const PARTICLE_TYPE_BUBBLE:int = 0; public static const PARTICLE_LIFE_TIMES:Array = [200, 100, 80, 40, 20, 100]; public function SpriteParticle(_arg1:int){ _alpha = 1; super(); _iD = _arg1; _x = 0; _y = 0; _speedX = 0; _speedY = 0; _life = 0; _rotation = 0; _rotationSpeed = 0; _alive = false; } public function live(_arg1:Number):void{ var _local2:int; var _local3:Number; var _local4:Number; if (_life < 20){ _alpha = (_life / 20); } else { _alpha = 1; }; if ((((((((_alpha < 0)) || ((_x < -20)))) || ((_y > 520)))) || ((_x > 620)))){ _alpha = 0; _life = 0; }; _local3 = (_x + _speedX); _local4 = (_y + _speedY); _rotation = (_rotation + _rotationSpeed); _x = _local3; _y = _local4; } public function resetGraphics():void{ if (_type == PARTICLE_TYPE_BUBBLE){ _size = 1; } else { _size = 1; }; } public function rebirth():void{ _alive = true; _life = PARTICLE_LIFE_TIMES[_type]; _alpha = 0.5; _rotation = 0; _rotationSpeed = 0; } } }//package
Section 330
//SpriteParticleManager (SpriteParticleManager) package { import flash.display.*; import flash.geom.*; public class SpriteParticleManager { public var _particlesDeadIndex:int;// = 0 private var _particlesAliveIndices:Array;// = null private var _particles:Array;// = null private var _particlesDeadIndices:Array;// = null public var _particlesAlive:int;// = 0 public static var _bitmaps:Array = new Array(8); public static var _classParticleHardSquare:Class = SpriteParticleManager__classParticleHardSquare; public static var _classParticleSoftBall:Class = SpriteParticleManager__classParticleSoftBall; public static var _classParticleStar:Class = SpriteParticleManager__classParticleStar; public static var _classParticleBallYellow:Class = SpriteParticleManager__classParticleBallYellow; public static var _classParticleSmoke:Class = SpriteParticleManager__classParticleSmoke; public static var _bitmapDatas:Array = new Array(8); public static var _classParticleTwinkle:Class = SpriteParticleManager__classParticleTwinkle; public static var particlesMax:int = (0x0100 + 128); public function SpriteParticleManager(){ var _local1:int; var _local2:int; _particles = null; _particlesAliveIndices = null; _particlesDeadIndices = null; _particlesAlive = 0; _particlesDeadIndex = 0; super(); _particles = new Array(particlesMax); _particlesAliveIndices = new Array(particlesMax); _particlesDeadIndices = new Array(particlesMax); _local1 = 0; while (_local1 < particlesMax) { _particles[_local1] = new SpriteParticle(_local1); _local1++; }; _local1 = 0; var _temp1 = _local1; _local1 = (_local1 + 1); var _local3 = _temp1; _bitmaps[_local3] = new Bitmap(new _classParticleStar().bitmapData); var _temp2 = _local1; _local1 = (_local1 + 1); var _local4 = _temp2; _bitmaps[_local4] = new Bitmap(new _classParticleSoftBall().bitmapData); var _temp3 = _local1; _local1 = (_local1 + 1); var _local5 = _temp3; _bitmaps[_local5] = new Bitmap(new _classParticleHardSquare().bitmapData); var _temp4 = _local1; _local1 = (_local1 + 1); var _local6 = _temp4; _bitmaps[_local6] = new Bitmap(new _classParticleSmoke().bitmapData); var _temp5 = _local1; _local1 = (_local1 + 1); var _local7 = _temp5; _bitmaps[_local7] = new Bitmap(new _classParticleTwinkle().bitmapData); var _temp6 = _local1; _local1 = (_local1 + 1); var _local8 = _temp6; _bitmaps[_local8] = new Bitmap(new _classParticleBallYellow().bitmapData); _local2 = 0; while (_local2 < _local1) { _bitmapDatas[_local2] = _bitmaps[_local2].bitmapData; _local2++; }; } private function resetParticle(_arg1:SpriteParticle, _arg2:int, _arg3:Number, _arg4:Number):void{ _arg1._type = _arg2; _arg1.resetGraphics(); _arg1._x = _arg3; _arg1._y = _arg4; _arg1._speedX = 0; _arg1._speedY = 0; _arg1.rebirth(); } public function addParticle(_arg1:int, _arg2:Number, _arg3:Number):SpriteParticle{ var _local4:int; var _local5:int; var _local6:int; var _local7:SpriteParticle; if ((((((_arg2 < -20)) || ((_arg3 > 520)))) || ((_arg2 > 620)))){ return (null); }; _local6 = _particlesDeadIndices[_particlesDeadIndex]; if (_local6 >= 0){ _local7 = _particles[_particlesDeadIndex]; resetParticle(_local7, _arg1, _arg2, _arg3); _particlesAliveIndices[_particlesAlive] = _particlesDeadIndex; _particlesAlive++; _particlesDeadIndices[_particlesDeadIndex] = -1; _particlesDeadIndex = _local6; return (_local7); }; _local4 = -1; _local5 = (0x0400 * 0x0400); _local6 = 0; while (_local6 < particlesMax) { _local7 = _particles[_local6]; if (_local7._type == 1){ } else { if (_local7._life < _local5){ _local5 = _local7._life; _local4 = _local6; }; }; _local6++; }; if (_local4 < 0){ return (null); }; _local7 = _particles[_local4]; resetParticle(_local7, _arg1, _arg2, _arg3); return (_local7); } public function reset():void{ var _local1:int; _local1 = 0; while (_local1 < particlesMax) { _particles[_local1]._alive = false; _particlesAliveIndices[_local1] = -1; _particlesDeadIndices[_local1] = (_local1 + 1); _local1++; }; _particlesDeadIndices[(particlesMax - 1)] = -1; _particlesDeadIndex = 0; _particlesAlive = 0; } public function initialize():void{ var _local1:int; _local1 = 0; while (_local1 < particlesMax) { _particlesAliveIndices[_local1] = -1; _particlesDeadIndices[_local1] = (_local1 + 1); _local1++; }; _particlesDeadIndices[(particlesMax - 1)] = -1; _particlesDeadIndex = 0; _particlesAlive = 0; } public function liveParticles(_arg1:Number, _arg2:Bitmap, _arg3:Boolean=true, _arg4:Boolean=false):void{ var _local5:BitmapData; var _local6:SpriteParticle; var _local7:ColorTransform; var _local8:Matrix; var _local9:int; var _local10:int; _local5 = _arg2.bitmapData; if (_arg4){ _local5.fillRect(new Rectangle(0, 0, _local5.width, _local5.height), 0); }; _local7 = new ColorTransform(); _local8 = new Matrix(1, 0, 0, 1); if (_arg3){ _local9 = 0; while (_local9 < _particlesAlive) { _local10 = _particlesAliveIndices[_local9]; _local6 = _particles[_local10]; if (!_local6._alive){ } else { _local6.live(_arg1); _local6._life = (_local6._life - 1); if (_local6._life <= 0){ _local6._alive = false; _particlesAliveIndices[_local9] = _particlesAliveIndices[(_particlesAlive - 1)]; _particlesAlive--; _particlesDeadIndices[_local10] = _particlesDeadIndex; _particlesDeadIndex = _local10; _local9--; } else { _local7.alphaMultiplier = _local6._alpha; _local8.identity(); _local8.rotate(_local6._rotation); _local8.translate(_local6._x, _local6._y); _local5.draw(_bitmapDatas[_local6._type], _local8, _local7, BlendMode.ADD, null, true); }; }; _local9++; }; } else { _local9 = 0; while (_local9 < _particlesAlive) { _local10 = _particlesAliveIndices[_local9]; _local6 = _particles[_local10]; if (!_local6._alive){ } else { _local6.live(_arg1); _local6._life = (_local6._life - 1); if (_local6._life <= 0){ _local6._alive = false; _particlesAliveIndices[_local9] = _particlesAliveIndices[(_particlesAlive - 1)]; _particlesAlive--; _particlesDeadIndices[_local10] = _particlesDeadIndex; _particlesDeadIndex = _local10; _local9--; }; }; _local9++; }; }; } public function destroy():void{ } } }//package
Section 331
//SpriteParticleManager__classParticleBallYellow (SpriteParticleManager__classParticleBallYellow) package { import mx.core.*; public class SpriteParticleManager__classParticleBallYellow extends BitmapAsset { } }//package
Section 332
//SpriteParticleManager__classParticleHardSquare (SpriteParticleManager__classParticleHardSquare) package { import mx.core.*; public class SpriteParticleManager__classParticleHardSquare extends BitmapAsset { } }//package
Section 333
//SpriteParticleManager__classParticleSmoke (SpriteParticleManager__classParticleSmoke) package { import mx.core.*; public class SpriteParticleManager__classParticleSmoke extends BitmapAsset { } }//package
Section 334
//SpriteParticleManager__classParticleSoftBall (SpriteParticleManager__classParticleSoftBall) package { import mx.core.*; public class SpriteParticleManager__classParticleSoftBall extends BitmapAsset { } }//package
Section 335
//SpriteParticleManager__classParticleStar (SpriteParticleManager__classParticleStar) package { import mx.core.*; public class SpriteParticleManager__classParticleStar extends BitmapAsset { } }//package
Section 336
//SpriteParticleManager__classParticleTwinkle (SpriteParticleManager__classParticleTwinkle) package { import mx.core.*; public class SpriteParticleManager__classParticleTwinkle extends BitmapAsset { } }//package
Section 337
//TTVertexCloud (TTVertexCloud) package { import flash.display.*; import flash.geom.*; public class TTVertexCloud { public var m_verticesTransformed:Array;// = null private var m_tmpMatrix2nd:Array; public var m_vertexColors:Array;// = null public var m_verticesN:int;// = 0 private var m_tmpMatrix:Array; public var m_verticesOriginal:Array;// = null public function TTVertexCloud(){ m_verticesN = 0; m_verticesOriginal = null; m_vertexColors = null; m_verticesTransformed = null; m_tmpMatrix = new Array((4 * 4)); m_tmpMatrix2nd = new Array((4 * 4)); super(); } public function draw(_arg1:Bitmap):void{ var _local2:BitmapData; var _local3:int; var _local4:int; var _local5:int; var _local6:TTVertexContainer; _local2 = _arg1.bitmapData; _local2.fillRect(new Rectangle(0, 0, _local2.width, _local2.height), 0); _local3 = ((_local2.width >> 1) - 2.5); _local4 = ((_local2.height >> 1) - 2.5); _local5 = 0; while (_local5 < m_verticesN) { _local6 = m_verticesTransformed[_local5]; _local2.fillRect(new Rectangle((_local6.pX + _local3), (_local6.pY + _local4), 5, 5), _local6.color); _local5++; }; } public function translate(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Array):void{ getIdentity(m_tmpMatrix); m_tmpMatrix[12] = _arg1; m_tmpMatrix[13] = _arg2; m_tmpMatrix[14] = _arg3; multiply(m_tmpMatrix, _arg4); } public function importVerticesFromBitmap(_arg1:Bitmap):void{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:BitmapData; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:int; var _local14:uint; _local2 = (_arg1.width * _arg1.height); m_verticesOriginal = new Array((_local2 * 3)); m_vertexColors = new Array(_local2); m_verticesTransformed = new Array(0); _local3 = 0; _local4 = _arg1.width; _local5 = _arg1.height; _local6 = _arg1.bitmapData; _local7 = 0; _local12 = 0; while (_local12 < _local5) { _local13 = 0; while (_local13 < _local4) { _local14 = _local6.getPixel32(_local13, _local12); if ((_local14 >> 24) != 0){ _local8 = ((_local14 >> 16) & 0xFF); _local9 = ((_local14 >> 8) & 0xFF); _local10 = (_local14 & 0xFF); _local11 = (((0.3 * _local8) + (0.59 * _local9)) + (0.11 * _local10)); if (_local11 > 0xFF){ _local11 = 0xFF; }; if (_local11 >= 0){ m_vertexColors[_local3] = _local14; var _temp1 = _local7; _local7 = (_local7 + 1); var _local15 = _temp1; m_verticesOriginal[_local15] = ((_local13 * 1.5) - (_local4 * 0.5)); var _temp2 = _local7; _local7 = (_local7 + 1); var _local16 = _temp2; m_verticesOriginal[_local16] = ((_local12 * 1.5) - (_local5 * 0.5)); var _temp3 = _local7; _local7 = (_local7 + 1); var _local17 = _temp3; m_verticesOriginal[_local17] = ((128 - _local11) * 0.02); m_verticesTransformed.push(new TTVertexContainer()); _local3++; }; }; _local13++; }; _local12++; }; m_verticesN = _local3; } public function rotateX(_arg1:Number, _arg2:Array):void{ var _local3:Number; var _local4:Number; zeroTMPMatrix(); _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); m_tmpMatrix[0] = 1; m_tmpMatrix[5] = _local3; m_tmpMatrix[6] = _local4; m_tmpMatrix[9] = -(_local4); m_tmpMatrix[10] = _local3; m_tmpMatrix[15] = 1; multiply(m_tmpMatrix, _arg2); } public function rotateY(_arg1:Number, _arg2:Array):void{ var _local3:Number; var _local4:Number; zeroTMPMatrix(); _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); m_tmpMatrix[0] = _local3; m_tmpMatrix[2] = -(_local4); m_tmpMatrix[5] = 1; m_tmpMatrix[8] = _local4; m_tmpMatrix[10] = _local3; m_tmpMatrix[15] = 1; multiply(m_tmpMatrix, _arg2); } public function rotateZ(_arg1:Number, _arg2:Array):void{ var _local3:Number; var _local4:Number; zeroTMPMatrix(); _local3 = Math.cos(_arg1); _local4 = Math.sin(_arg1); m_tmpMatrix[0] = _local3; m_tmpMatrix[1] = _local4; m_tmpMatrix[4] = -(_local4); m_tmpMatrix[5] = _local3; m_tmpMatrix[10] = 1; m_tmpMatrix[15] = 1; multiply(m_tmpMatrix, _arg2); } private function multiply(_arg1:Array, _arg2:Array):void{ var _local3:int; var _local4:int; var _local5:int; var _local6:int; _local3 = 0; while (_local3 < 16) { m_tmpMatrix2nd[_local3] = _arg2[_local3]; _local3++; }; _local4 = 0; while (_local4 < 4) { _local5 = (_local4 << 2); _local6 = 0; while (_local6 < 4) { _arg2[((_local4 * 4) + _local6)] = ((((_arg1[((4 * 0) + _local6)] * m_tmpMatrix2nd[(_local5 + 0)]) + (_arg1[((4 * 1) + _local6)] * m_tmpMatrix2nd[(_local5 + 1)])) + (_arg1[((4 * 2) + _local6)] * m_tmpMatrix2nd[(_local5 + 2)])) + (_arg1[((4 * 3) + _local6)] * m_tmpMatrix2nd[(_local5 + 3)])); _local6++; }; _local4++; }; } public function perspectiveProjectionAngle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Array):void{ var _local6:Number; zeroTMPMatrix(); _local6 = Math.tan((_arg3 * 0.5)); m_tmpMatrix[0] = (_local6 / _arg4); m_tmpMatrix[5] = _local6; m_tmpMatrix[10] = (_arg2 / (_arg2 - _arg1)); m_tmpMatrix[11] = 1; m_tmpMatrix[14] = ((-(_arg2) * _arg1) / (_arg2 - _arg1)); multiply(m_tmpMatrix, _arg5); } public function perspectiveProjection(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Array):void{ zeroTMPMatrix(); m_tmpMatrix[0] = ((2 * _arg1) / _arg3); m_tmpMatrix[5] = ((2 * _arg1) / _arg4); m_tmpMatrix[10] = (_arg2 / (_arg2 - _arg1)); m_tmpMatrix[11] = 1; m_tmpMatrix[14] = ((-(_arg2) * _arg1) / (_arg2 - _arg1)); multiply(m_tmpMatrix, _arg5); } public function transform(_arg1:Array):void{ var _local2: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:int; var _local15:int; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:TTVertexContainer; _local2 = _arg1[0]; _local3 = _arg1[1]; _local4 = _arg1[2]; _local5 = _arg1[4]; _local6 = _arg1[5]; _local7 = _arg1[6]; _local8 = _arg1[8]; _local9 = _arg1[9]; _local10 = _arg1[10]; _local11 = _arg1[12]; _local12 = _arg1[13]; _local13 = _arg1[14]; _local14 = 0; _local15 = 0; while (_local15 < m_verticesN) { var _temp1 = _local14; _local14 = (_local14 + 1); _local16 = m_verticesOriginal[_temp1]; var _temp2 = _local14; _local14 = (_local14 + 1); _local17 = m_verticesOriginal[_temp2]; var _temp3 = _local14; _local14 = (_local14 + 1); _local18 = m_verticesOriginal[_temp3]; _local19 = m_verticesTransformed[_local15]; _local19.pX = ((((_local16 * _local2) + (_local17 * _local5)) + (_local18 * _local8)) + _local11); _local19.pY = ((((_local16 * _local3) + (_local17 * _local6)) + (_local18 * _local9)) + _local12); _local19.pZ = ((((_local16 * _local4) + (_local17 * _local7)) + (_local18 * _local10)) + _local13); _local19.color = m_vertexColors[_local15]; _local15++; }; m_verticesTransformed.sortOn("pZ", (Array.DESCENDING | Array.NUMERIC)); } private function zeroTMPMatrix():void{ var _local1:int; _local1 = 0; while (_local1 < 16) { m_tmpMatrix[_local1] = 0; _local1++; }; } public function getIdentity(_arg1:Array):void{ var _local2:int; _local2 = 0; while (_local2 < 16) { _arg1[_local2] = 0; _local2++; }; _arg1[0] = 1; _arg1[5] = 1; _arg1[10] = 1; _arg1[15] = 1; } } }//package
Section 338
//TTVertexContainer (TTVertexContainer) package { public class TTVertexContainer { public var color:uint; public var pX:Number; public var pY:Number; public var pZ:Number; } }//package
Section 339
//UserData (UserData) package { import flash.display.*; public class UserData { public var _sticky:Boolean;// = false public var _stableTimer:int;// = 10000 public var _damage:Number;// = 0 public var _iD:int;// = -1 public var _spriteShadow:Bitmap;// = null public var _directedGravity:Boolean;// = false public var _twinkleSkip:int; public var _diamond:Boolean;// = false public var _startAngle:Number;// = 0 public var _radius:Number;// = 1 public var _diamondScale:Number;// = 1 public var _hitpoints:Number;// = 0 public var _height:Number;// = 30 public var _width:Number;// = 30 public var _scale:Number;// = 1 public var _sprite2:Bitmap;// = null public var _startX:Number;// = 0 public var _startY:Number;// = 0 public var _object:Object;// = null public var _alpha:Number;// = 1 public var _posX:Number;// = 0 public var _posY:Number;// = 0 public var _1T:Boolean;// = false public var _sprite:Bitmap;// = null public var _circle:Boolean;// = false public var _rectangle:Boolean;// = false public var _flash:Boolean;// = true public var _currentBlock:int;// = -1 public var _helium:Boolean;// = false public var _color:int;// = 0 public var _glass:Boolean;// = false public function UserData(){ _iD = -1; _sprite = null; _sprite2 = null; _spriteShadow = null; _color = 0; _radius = 1; _scale = 1; _width = 30; _height = 30; _alpha = 1; _currentBlock = -1; _object = null; _helium = false; _sticky = false; _startX = 0; _startY = 0; _startAngle = 0; _posX = 0; _posY = 0; _flash = true; _directedGravity = false; _glass = false; _damage = 0; _1T = false; _hitpoints = 0; _diamondScale = 1; _twinkleSkip = int((Math.random() * 6)); _stableTimer = 10000; _circle = false; _rectangle = false; _diamond = false; super(); } } }//package

Library Items

Symbol 1 Sound {MyPreloader__classMP3SoundGame} [MyPreloader__classMP3SoundGame]
Symbol 2 GraphicUsed by:26
Symbol 3 GraphicUsed by:4
Symbol 4 MovieClipUses:3Used by:20 26
Symbol 5 GraphicUsed by:26
Symbol 6 GraphicUsed by:7
Symbol 7 MovieClipUses:6Used by:20 26
Symbol 8 GraphicUsed by:26
Symbol 9 GraphicUsed by:10
Symbol 10 MovieClipUses:9Used by:20 26
Symbol 11 GraphicUsed by:26
Symbol 12 GraphicUsed by:13
Symbol 13 MovieClipUses:12Used by:20 26
Symbol 14 GraphicUsed by:20
Symbol 15 GraphicUsed by:20
Symbol 16 GraphicUsed by:20
Symbol 17 GraphicUsed by:20
Symbol 18 GraphicUsed by:20
Symbol 19 GraphicUsed by:20
Symbol 20 MovieClipUses:14 15 16 4 17 7 18 10 19 13Used by:26
Symbol 21 GraphicUsed by:26
Symbol 22 GraphicUsed by:26
Symbol 23 GraphicUsed by:26
Symbol 24 GraphicUsed by:26
Symbol 25 GraphicUsed by:26
Symbol 26 Button {MyPreloader__classGamesFreeButton} [gamesfree_pre_button 48]Uses:2 4 5 7 8 10 11 13 20 21 22 23 24 25
Symbol 27 MovieClip {MyPreloader__classSponsorMovie}
Symbol 28 Bitmap {SpriteParticleManager__classParticleHardSquare}
Symbol 29 Bitmap {MyPreloader__classLoadingScreenStartButton}
Symbol 30 Bitmap {Main__classStar}
Symbol 31 Bitmap {SpriteParticleManager__classParticleSoftBall}
Symbol 32 Bitmap {SpriteParticleManager__classParticleSmoke}
Symbol 33 Bitmap {SpriteParticleManager__classParticleBallYellow}
Symbol 34 Bitmap {MyPreloader__classLoadingScreen}
Symbol 35 Bitmap {SpriteParticleManager__classParticleTwinkle}
Symbol 36 Bitmap {MyPreloader__classThisCopyIsSiteLocked}
Symbol 37 Font {MyPreloader__fontClass1}
Symbol 38 BinaryData {MyPreloader__classSponsorMovie_dataClass}
Symbol 39 Sound {Audio__classHeavy02} [heavy02]
Symbol 40 Sound {Audio__classHeavy01} [heavy01]
Symbol 41 Sound {Audio__classTitleHit} [titleHit]
Symbol 42 Sound {Audio__classStone03} [kolina3]
Symbol 43 Sound {Audio__classStone04} [kolina4]
Symbol 44 Sound {Audio__classMP3OkHarmony} [Audio__classMP3OkHarmony]
Symbol 45 Sound {Audio__classStone01} [kolina1]
Symbol 46 Sound {Audio__classMP3Concrete06} [pling06]
Symbol 47 Sound {Audio__classStone02} [kolina2]
Symbol 48 Sound {Audio__classMP3Concrete03} [pling04]
Symbol 49 Sound {Audio__classStone05} [kolina5]
Symbol 50 Sound {Audio__classMP3Concrete02} [pling02]
Symbol 51 Sound {Audio__classExplosion1} [explosion1]
Symbol 52 Sound {Audio__classExplosion2} [explosion2]
Symbol 53 Sound {Audio__classMP3AddBonusBall} [Audio__classMP3AddBonusBall]
Symbol 54 Sound {Audio__classMP3MenuButton} [button5]
Symbol 55 Sound {Audio__classMP3Star} [Audio__classMP3Star]
Symbol 56 Sound {Audio__classFireWork01} [fireWork01]
Symbol 57 Sound {Audio__classFireWork02} [poks01]
Symbol 58 Sound {Audio__classMP3LCH01} [Audio__classMP3LCH01]
Symbol 59 Sound {Audio__classFireWork03} [poks02]
Symbol 60 Sound {Audio__classExplosion3} [explosion3]
Symbol 61 Sound {Audio__classMP3Rotate03} [Audio__classMP3Rotate03]
Symbol 62 Sound {Audio__classMP3AllBonusBalls} [Audio__classMP3AllBonusBalls]
Symbol 63 Sound {Audio__classMP3ReturnShape} [return_shape]
Symbol 64 Sound {Audio__classMP3Rotate02} [Audio__classMP3Rotate02]
Symbol 65 Sound {Audio__classMP3Rotate01} [Audio__classMP3Rotate01]
Symbol 66 Sound {Audio__classMP3SoundGame} [Audio__classMP3SoundGame]
Symbol 67 Sound {Audio__classMP3LooseLife} [failGlass]
Symbol 68 Sound {Audio__classMP3SoundMenu} [Audio__classMP3SoundMenu]
Symbol 69 Sound {Audio__classMP3GrabShape} [grab_shape]
Symbol 70 Bitmap {TestBed.Test__classSuperLong}
Symbol 71 Bitmap {Main__classSkippedArrowToLeft}
Symbol 72 Bitmap {Main__classAutoHideOff}
Symbol 73 Bitmap {TestBed.Test__classSunG}
Symbol 74 Bitmap {TestBed.Test__classBrickWhoaMirror}
Symbol 75 Bitmap {Main__classCreditsScreen}
Symbol 76 Bitmap {TestBed.Test__classBrickVeryLong}
Symbol 77 Bitmap {TestBed.Test__classBrickCross}
Symbol 78 Bitmap {TestBed.Test__classBrickWacky1Mirror}
Symbol 79 Bitmap {Main__classLevelSkip}
Symbol 80 Bitmap {TestBed.Test__classBrickConnectMirror}
Symbol 81 Bitmap {TestBed.Test__classRotatingCrossBig}
Symbol 82 Bitmap {Main__classButtonUnlockedBig}
Symbol 83 Bitmap {TestBed.Test__classBrickZ}
Symbol 84 Bitmap {TestBed.Test__classBrickO1T}
Symbol 85 Bitmap {TestBed.Test__classBrickBlockHelium}
Symbol 86 Bitmap {Main__classPlayfieldRight}
Symbol 87 Bitmap {Main__classPlayfieldRightEditorEdit}
Symbol 88 Bitmap {Main__classEditorHelp}
Symbol 89 Bitmap {Main__classPlayfieldLeft}
Symbol 90 Bitmap {Main__classTextureA}
Symbol 91 Bitmap {TestBed.Test__classBrickI}
Symbol 92 Bitmap {TestBed.Test__classBrickH}
Symbol 93 Bitmap {Main__classButtonUnlocked}
Symbol 94 Bitmap {Main__classAlmostPerfectBalanceEditor}
Symbol 95 Bitmap {TestBed.Test__classSun1T}
Symbol 96 Bitmap {TestBed.Test__classBrickRocket}
Symbol 97 Bitmap {Main__classQualityHigh}
Symbol 98 Bitmap {TestBed.Test__classBrickT}
Symbol 99 Bitmap {TestBed.Test__classBrickWideCrossG}
Symbol 100 Bitmap {Main__classQualityMedium}
Symbol 101 Bitmap {Main__classAudioOff}
Symbol 102 Bitmap {TestBed.Test__classBrickS}
Symbol 103 Bitmap {TestBed.Test__classBrickO}
Symbol 104 Bitmap {TestBed.Test__classBrickHingeVeryBigStraight}
Symbol 105 Bitmap {TestBed.Test__classBrickL}
Symbol 106 Bitmap {TestBed.Test__classBrickJ}
Symbol 107 Bitmap {TestBed.Test__classBrickPoleG}
Symbol 108 Bitmap {Main__classWait}
Symbol 109 Bitmap {TestBed.Test__classBrickOG}
Symbol 110 Bitmap {Main__classPlayfieldBottom}
Symbol 111 Bitmap {Main__classHelp5}
Symbol 112 Bitmap {Main__classHelp4}
Symbol 113 Bitmap {Main__classLPSMedalE}
Symbol 114 Bitmap {Main__classLPSMedalD}
Symbol 115 Bitmap {Main__classHelp6}
Symbol 116 Bitmap {Main__classLPSMedalC}
Symbol 117 Bitmap {Main__classHelp1}
Symbol 118 Bitmap {Main__classLPSMedalB}
Symbol 119 Bitmap {Main__classLPSMedalA}
Symbol 120 Bitmap {TestBed.Test__classPyramidMini}
Symbol 121 Bitmap {Main__classHelp3}
Symbol 122 Bitmap {Main__classHelp2}
Symbol 123 Bitmap {Main__classClearLevel}
Symbol 124 Bitmap {Main__classPerfectBalanceEditor}
Symbol 125 Bitmap {Main__classSkippedArrowToRight}
Symbol 126 Bitmap {Main__classLetterA}
Symbol 127 Bitmap {Main__classLetterB}
Symbol 128 Bitmap {Main__classAutoHideOn}
Symbol 129 Bitmap {Main__classLetterC}
Symbol 130 Bitmap {TestBed.Test__classBrickPole}
Symbol 131 Bitmap {Main__classLetterD}
Symbol 132 Bitmap {Main__classMainMenuPerfectBalanceShadow}
Symbol 133 Bitmap {Main__classSealFront}
Symbol 134 Bitmap {Main__classPerfectBalanceJapanese}
Symbol 135 Bitmap {Main__classResetProgress}
Symbol 136 Bitmap {TestBed.Test__classBrickCornerLong}
Symbol 137 Bitmap {Main__classPlayfieldRightEditorPlay}
Symbol 138 Bitmap {Main__classBackground04}
Symbol 139 Bitmap {TestBed.Test__classTriangleLeft}
Symbol 140 Bitmap {Main__classBackground03}
Symbol 141 Bitmap {Main__classSealBack}
Symbol 142 Bitmap {Main__classBackground06}
Symbol 143 Bitmap {Main__classBackground05}
Symbol 144 Bitmap {Main__classLevelPackSelection}
Symbol 145 Bitmap {Main__classSplashScreen}
Symbol 146 Bitmap {TestBed.Test__classBrickHingeBig}
Symbol 147 Bitmap {Main__classBackground01}
Symbol 148 Bitmap {Main__classBackground02}
Symbol 149 Bitmap {TestBed.Test__classBrickBlock}
Symbol 150 Bitmap {Main__classPerfectBalance}
Symbol 151 Bitmap {Main__classGradeE}
Symbol 152 Bitmap {Main__classGradeD}
Symbol 153 Bitmap {TestBed.Test__classBrickWacky4Mirror}
Symbol 154 Bitmap {Main__classGradeC}
Symbol 155 Bitmap {Main__classGradeB}
Symbol 156 Bitmap {Main__classGradeA}
Symbol 157 Bitmap {Main__classButtonLocked}
Symbol 158 Bitmap {TestBed.Test__classBrickOHelium}
Symbol 159 Bitmap {TestBed.Test__classPyramid}
Symbol 160 Bitmap {Main__classPerfectBalanceAllDoneEditor}
Symbol 161 Bitmap {TestBed.Test__classDiamond3}
Symbol 162 Bitmap {TestBed.Test__classDiamond2}
Symbol 163 Bitmap {TestBed.Test__classDiamond1}
Symbol 164 Bitmap {Main__classAudioOn}
Symbol 165 Bitmap {Main__classLetterE}
Symbol 166 Bitmap {TestBed.Test__classPyramid1T}
Symbol 167 Bitmap {TestBed.Test__classTriangleRight}
Symbol 168 Bitmap {TestBed.Test__classBrickBlock1T}
Symbol 169 Bitmap {TestBed.Test__classBrickConnect}
Symbol 170 Bitmap {Main__classQualityLow}
Symbol 171 Bitmap {Main__classMainMenuPerfectBalance}
Symbol 172 Bitmap {Main__classTheEnd}
Symbol 173 Bitmap {TestBed.Test__classBrickCrossG}
Symbol 174 Bitmap {TestBed.Test__classBrickWhoa}
Symbol 175 Bitmap {Main__classHelpHelium}
Symbol 176 Bitmap {TestBed.Test__classRotatingCross}
Symbol 177 Bitmap {Main__classInstructionsShapes}
Symbol 178 Bitmap {Main__classPlus50Points}
Symbol 179 Font {Main__fontClass1}
Symbol 180 Bitmap {Main__classInstructionsGame}
Symbol 181 Bitmap {TestBed.Test__classBrickWideCross}
Symbol 182 Bitmap {TestBed.Test__classBrickWacky2}
Symbol 183 Bitmap {TestBed.Test__classBrickWacky1}
Symbol 184 Bitmap {TestBed.Test__classBrickWacky4}
Symbol 185 Bitmap {TestBed.Test__classBrickBig}
Symbol 186 Bitmap {TestBed.Test__classRotatingCrossBlades}
Symbol 187 Bitmap {TestBed.Test__classSunHelium}
Symbol 188 Bitmap {Main__classButtonGrid1}
Symbol 189 Bitmap {TestBed.Test__classBrickJesus}
Symbol 190 Bitmap {Main__classButtonGrid2}
Symbol 191 Bitmap {Main__classButtonGrid0}
Symbol 192 Bitmap {Main__classPlayfieldTop}
Symbol 193 Bitmap {Main__classButtonGrid3}
Symbol 194 Bitmap {Main__classPlus200Points}
Symbol 195 Bitmap {Main__classLockedC}
Symbol 196 Bitmap {Main__classLockedD}
Symbol 197 Bitmap {Main__classLockedB}
Symbol 198 Bitmap {Main__classLockedE}
Symbol 199 Bitmap {TestBed.Test__classRotatingCrossBox}
Symbol 200 Bitmap {TestBed.Test__classBrickPacman}
Symbol 201 Bitmap {TestBed.Test__classPyramidHelium}
Symbol 202 Bitmap {TestBed.Test__classSun}
Symbol 203 Bitmap {Main__classEditorHelpRadius}
Symbol 204 Bitmap {TestBed.Test__classBrickHinge}
Symbol 205 Bitmap {Main__classSubmitScreen}
Symbol 206 Bitmap {Main__classRelax}
Symbol 207 Bitmap {TestBed.Test__classBrickKiila}
Symbol 208 Bitmap {TestBed.Test__classBrickHoleBox}
Symbol 209 Bitmap {Main__classMainMenuBG}
Symbol 210 Bitmap {Main__classMainMenuFG}
Symbol 211 Bitmap {Main__classEditorHelpDimensions}
Symbol 212 Bitmap {Main__class3DLogo}
Symbol 213 Bitmap {TestBed.Test__classBrickBlockG}
Symbol 214 Bitmap {TestBed.Test__classBrickHingeVeryBig}
Symbol 215 Bitmap {TestBed.Test__classBrickSalmiack}
Symbol 216 Bitmap {Main__classEditorKeys}
Symbol 217 Bitmap {Main__classGet20Screen}
Symbol 218 Bitmap {TestBed.Test__classSunSmall}
Symbol 219 Bitmap {Main__classGrid1}
Symbol 220 Bitmap {Main__classGrid2}
Symbol 221 Bitmap {Main__classGrid3}
Symbol 222 Bitmap {Main__classHelpDirectedGravity}
Symbol 223 Bitmap {TestBed.Test__classBrickCorner}
Symbol 224 Bitmap {Main__classButtonBGImage6}
Symbol 225 Bitmap {Main__classButtonBGImage5}
Symbol 226 Bitmap {Main__classLevelIO}
Symbol 227 Bitmap {Main__classPerfectBalanceAllDone}
Symbol 228 Bitmap {Main__classAlmostPerfectBalance}
Symbol 229 Bitmap {Main__classChooseAShape}
Symbol 230 Bitmap {Main__classCursorHelper}
Symbol 231 Bitmap {TestBed.Test__classBrickAlien}
Symbol 232 Bitmap {Main__classButtonBGImage3}
Symbol 233 Bitmap {Main__classButtonBGImage4}
Symbol 234 Bitmap {Main__classButtonBGImage1}
Symbol 235 Bitmap {Main__classButtonBGImage2}

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1459 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 1 as "MyPreloader__classMP3SoundGame"
ExportAssets (56)Timeline Frame 1Symbol 26 as "gamesfree_pre_button 48"
ExportAssets (56)Timeline Frame 2Symbol 39 as "heavy02"
ExportAssets (56)Timeline Frame 2Symbol 40 as "heavy01"
ExportAssets (56)Timeline Frame 2Symbol 41 as "titleHit"
ExportAssets (56)Timeline Frame 2Symbol 42 as "kolina3"
ExportAssets (56)Timeline Frame 2Symbol 43 as "kolina4"
ExportAssets (56)Timeline Frame 2Symbol 44 as "Audio__classMP3OkHarmony"
ExportAssets (56)Timeline Frame 2Symbol 45 as "kolina1"
ExportAssets (56)Timeline Frame 2Symbol 46 as "pling06"
ExportAssets (56)Timeline Frame 2Symbol 47 as "kolina2"
ExportAssets (56)Timeline Frame 2Symbol 48 as "pling04"
ExportAssets (56)Timeline Frame 2Symbol 49 as "kolina5"
ExportAssets (56)Timeline Frame 2Symbol 50 as "pling02"
ExportAssets (56)Timeline Frame 2Symbol 51 as "explosion1"
ExportAssets (56)Timeline Frame 2Symbol 52 as "explosion2"
ExportAssets (56)Timeline Frame 2Symbol 53 as "Audio__classMP3AddBonusBall"
ExportAssets (56)Timeline Frame 2Symbol 54 as "button5"
ExportAssets (56)Timeline Frame 2Symbol 55 as "Audio__classMP3Star"
ExportAssets (56)Timeline Frame 2Symbol 56 as "fireWork01"
ExportAssets (56)Timeline Frame 2Symbol 57 as "poks01"
ExportAssets (56)Timeline Frame 2Symbol 58 as "Audio__classMP3LCH01"
ExportAssets (56)Timeline Frame 2Symbol 59 as "poks02"
ExportAssets (56)Timeline Frame 2Symbol 60 as "explosion3"
ExportAssets (56)Timeline Frame 2Symbol 61 as "Audio__classMP3Rotate03"
ExportAssets (56)Timeline Frame 2Symbol 62 as "Audio__classMP3AllBonusBalls"
ExportAssets (56)Timeline Frame 2Symbol 63 as "return_shape"
ExportAssets (56)Timeline Frame 2Symbol 64 as "Audio__classMP3Rotate02"
ExportAssets (56)Timeline Frame 2Symbol 65 as "Audio__classMP3Rotate01"
ExportAssets (56)Timeline Frame 2Symbol 66 as "Audio__classMP3SoundGame"
ExportAssets (56)Timeline Frame 2Symbol 67 as "failGlass"
ExportAssets (56)Timeline Frame 2Symbol 68 as "Audio__classMP3SoundMenu"
ExportAssets (56)Timeline Frame 2Symbol 69 as "grab_shape"
SerialNumber (41)Timeline Frame 1

Labels

"MyPreloader"Frame 1
"Main"Frame 2




http://swfchan.com/19/90898/info.shtml
Created: 28/3 -2019 04:44:26 Last modified: 28/3 -2019 04:44:26 Server time: 13/05 -2024 17:43:53