Section 1
//Pen (ascb.drawing.Pen)
package ascb.drawing {
import flash.display.*;
import flash.geom.*;
public class Pen {
private var _bLineStyleSet:Boolean;
private var _gTarget:Graphics;
public function Pen(gTarget:Graphics){
super();
_gTarget = gTarget;
}
public function curveTo(nCtrlX:Number, nCtrlY:Number, nAnchorX:Number, nAnchorY:Number):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.curveTo(nCtrlX, nCtrlY, nAnchorX, nAnchorY);
}
public function drawCurve(nX:Number, nY:Number, nCtrlX:Number, nCtrlY:Number, nAnchorX:Number, nAnchorY:Number):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.moveTo(nX, nY);
_gTarget.curveTo(nCtrlX, nCtrlY, nAnchorX, nAnchorY);
}
public function beginFill(nRGB:Number, nAlpha:Number=1):void{
_gTarget.beginFill(nRGB, nAlpha);
}
public function lineGradientStyle(sType:String, aColors:Array, aAlphas:Array, aRatios:Array, mtxTransform:Matrix=null, sMethod:String="pad", sInterpolation:String="rgb", nFocalPoint:Number=0):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.lineGradientStyle(sType, aColors, aAlphas, aRatios, mtxTransform, sMethod, sInterpolation, nFocalPoint);
}
public function lineTo(nX:Number, nY:Number):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.lineTo(nX, nY);
}
public function get target():Graphics{
return (_gTarget);
}
public function clear():void{
_gTarget.clear();
_bLineStyleSet = false;
}
public function drawRect(nX:Number, nY:Number, nWidth:Number, nHeight:Number):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.drawRect(nX, nY, nWidth, nHeight);
}
public function drawLine(nX0:Number, nY0:Number, nX1:Number, nY1:Number):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.moveTo(nX0, nY0);
_gTarget.lineTo(nX1, nY1);
}
public function beginBitmapFill(bmpData:BitmapData, mtxTransform:Matrix=null, bRepeat:Boolean=true, bSmooth:Boolean=false):void{
_gTarget.beginBitmapFill(bmpData, mtxTransform, bRepeat, bSmooth);
}
public function beginGradientFill(sFillType:String, aColors:Array, aAlphas:Array, aRatios:Array, mtxTransform:Matrix=null, sMethod:String="pad", sInterpolation:String="rgb", nFocalPoint:Number=0):void{
_gTarget.beginGradientFill(sFillType, aColors, aAlphas, aRatios, mtxTransform, sMethod, sInterpolation, nFocalPoint);
}
public function lineStyle(nThickness:Number=1, nRGB:Number=0, nAlpha:Number=1, bPixelHinting:Boolean=false, sScaleMode:String="normal", sCaps:String=null, sJoints:String=null, nMiterLimit:Number=3):void{
_gTarget.lineStyle(nThickness, nRGB, nAlpha, bPixelHinting, sScaleMode, sCaps, sJoints, nMiterLimit);
_bLineStyleSet = true;
}
public function set target(gTarget:Graphics):void{
_gTarget = gTarget;
}
public function drawRoundRectComplex(nX:Number, nY:Number, nWidth:Number, nHeight:Number, nA:Number, nB:Number, nC:Number, nD:Number):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.drawRoundRectComplex(nX, nY, nWidth, nHeight, nA, nB, nC, nD);
}
public function moveTo(nX:Number, nY:Number):void{
_gTarget.moveTo(nX, nY);
}
public function drawArc(nX:Number, nY:Number, nRadius:Number, nArc:Number, nStartingAngle:Number=0, bRadialLines:Boolean=false):void{
var nCtrlX:Number;
var nCtrlY:Number;
var nAnchorX:Number;
var nAnchorY:Number;
if (nArc > 360){
nArc = 360;
};
nArc = ((Math.PI / 180) * nArc);
var nAngleDelta:Number = (nArc / 8);
var nCtrlDist:Number = (nRadius / Math.cos((nAngleDelta / 2)));
nStartingAngle = (nStartingAngle * (Math.PI / 180));
var nAngle:Number = nStartingAngle;
var nStartingX:Number = (nX + (Math.cos(nStartingAngle) * nRadius));
var nStartingY:Number = (nY + (Math.sin(nStartingAngle) * nRadius));
if (bRadialLines){
moveTo(nX, nY);
lineTo(nStartingX, nStartingY);
} else {
moveTo(nStartingX, nStartingY);
};
var i:Number = 0;
while (i < 8) {
nAngle = (nAngle + nAngleDelta);
nCtrlX = (nX + (Math.cos((nAngle - (nAngleDelta / 2))) * nCtrlDist));
nCtrlY = (nY + (Math.sin((nAngle - (nAngleDelta / 2))) * nCtrlDist));
nAnchorX = (nX + (Math.cos(nAngle) * nRadius));
nAnchorY = (nY + (Math.sin(nAngle) * nRadius));
curveTo(nCtrlX, nCtrlY, nAnchorX, nAnchorY);
i++;
};
if (bRadialLines){
lineTo(nX, nY);
};
}
public function drawRegularPolygon(nX:Number, nY:Number, nSides:Number, nLength:Number, nRotation:Number=0):void{
nRotation = ((nRotation * Math.PI) / 180);
var nAngle:Number = ((2 * Math.PI) / nSides);
var nRadius:Number = ((nLength / 2) / Math.sin((nAngle / 2)));
var nPx:Number = ((Math.cos(nRotation) * nRadius) + nX);
var nPy:Number = ((Math.sin(nRotation) * nRadius) + nY);
moveTo(nPx, nPy);
var i:Number = 1;
while (i <= nSides) {
nPx = ((Math.cos(((nAngle * i) + nRotation)) * nRadius) + nX);
nPy = ((Math.sin(((nAngle * i) + nRotation)) * nRadius) + nY);
lineTo(nPx, nPy);
i++;
};
}
public function drawCircle(nX:Number, nY:Number, nRadius:Number):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.drawCircle(nX, nY, nRadius);
}
public function drawRoundRect(nX:Number, nY:Number, nWidth:Number, nHeight:Number, nRadius:Number):void{
if (!_bLineStyleSet){
lineStyle();
};
_gTarget.drawRoundRect(nX, nY, nWidth, nHeight, nRadius);
}
public function drawStar(nX:Number, nY:Number, nPoints:Number, nInnerRadius:Number, nOuterRadius:Number, nRotation:Number=0):void{
if (nPoints < 3){
return;
};
var nAngleDelta:Number = ((Math.PI * 2) / nPoints);
nRotation = ((Math.PI * (nRotation - 90)) / 180);
var nAngle:Number = nRotation;
var nPenX:Number = (nX + (Math.cos((nAngle + (nAngleDelta / 2))) * nInnerRadius));
var nPenY:Number = (nY + (Math.sin((nAngle + (nAngleDelta / 2))) * nInnerRadius));
moveTo(nPenX, nPenY);
nAngle = (nAngle + nAngleDelta);
var i:Number = 0;
while (i < nPoints) {
nPenX = (nX + (Math.cos(nAngle) * nOuterRadius));
nPenY = (nY + (Math.sin(nAngle) * nOuterRadius));
lineTo(nPenX, nPenY);
nPenX = (nX + (Math.cos((nAngle + (nAngleDelta / 2))) * nInnerRadius));
nPenY = (nY + (Math.sin((nAngle + (nAngleDelta / 2))) * nInnerRadius));
lineTo(nPenX, nPenY);
nAngle = (nAngle + nAngleDelta);
i++;
};
}
public function drawEllipse(nX:Number, nY:Number, nRadiusX:Number, nRadiusY:Number):void{
var nCtrlX:Number;
var nCtrlY:Number;
var nAnchorX:Number;
var nAnchorY:Number;
var nAngleDelta:Number = (Math.PI / 4);
var nAngle:Number = 0;
var nCtrlDistX:Number = (nRadiusX / Math.cos((nAngleDelta / 2)));
var nCtrlDistY:Number = (nRadiusY / Math.cos((nAngleDelta / 2)));
moveTo((nX + nRadiusX), nY);
var i:Number = 0;
while (i < 8) {
nAngle = (nAngle + nAngleDelta);
nCtrlX = (nX + (Math.cos((nAngle - (nAngleDelta / 2))) * nCtrlDistX));
nCtrlY = (nY + (Math.sin((nAngle - (nAngleDelta / 2))) * nCtrlDistY));
nAnchorX = (nX + (Math.cos(nAngle) * nRadiusX));
nAnchorY = (nY + (Math.sin(nAngle) * nRadiusY));
this.curveTo(nCtrlX, nCtrlY, nAnchorX, nAnchorY);
i++;
};
}
public function drawTriangle(nX:Number, nY:Number, nAB:Number, nAC:Number, nAngle:Number, nRotation:Number=0):void{
nRotation = ((nRotation * Math.PI) / 180);
nAngle = ((nAngle * Math.PI) / 180);
var nBx:Number = (Math.cos((nAngle - nRotation)) * nAB);
var nBy:Number = (Math.sin((nAngle - nRotation)) * nAB);
var nCx:Number = (Math.cos(-(nRotation)) * nAC);
var nCy:Number = (Math.sin(-(nRotation)) * nAC);
var nCentroidX:Number = 0;
var nCentroidY:Number = 0;
drawLine((-(nCentroidX) + nX), (-(nCentroidY) + nY), ((nCx - nCentroidX) + nX), ((nCy - nCentroidY) + nY));
lineTo(((nBx - nCentroidX) + nX), ((nBy - nCentroidY) + nY));
lineTo((-(nCentroidX) + nX), (-(nCentroidY) + nY));
}
public function drawSlice(nArc:Number, nRadius:Number, nStartingAngle:Number, nX:Number, nY:Number):void{
drawArc(nX, nY, nRadius, nArc, nStartingAngle, true);
}
public function endFill():void{
_gTarget.endFill();
}
}
}//package ascb.drawing
Section 2
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
public class b2CircleDef extends b2ShapeDef {
public var radius:Number;
public var localPosition:b2Vec2;
public function b2CircleDef(){
localPosition = new b2Vec2(0, 0);
super();
type = b2Shape.e_circleShape;
radius = 1;
}
}
}//package Box2D.Collision.Shapes
Section 3
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2CircleShape extends b2Shape {
public var m_localPosition:b2Vec2;
public var m_radius:Number;
public function b2CircleShape(def:b2ShapeDef){
m_localPosition = new b2Vec2();
super(def);
var circleDef:b2CircleDef = (def as b2CircleDef);
m_type = e_circleShape;
m_localPosition.SetV(circleDef.localPosition);
m_radius = circleDef.radius;
}
override public function TestSegment(transform:b2XForm, lambda:Array, normal:b2Vec2, segment:b2Segment, maxLambda:Number):Boolean{
var sY:Number;
var tMat:b2Mat22 = transform.R;
var positionX:Number = (transform.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y)));
var positionY:Number = (transform.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y)));
var sX:Number = (segment.p1.x - positionX);
sY = (segment.p1.y - positionY);
var b:Number = (((sX * sX) + (sY * sY)) - (m_radius * m_radius));
if (b < 0){
return (false);
};
var rX:Number = (segment.p2.x - segment.p1.x);
var rY:Number = (segment.p2.y - segment.p1.y);
var c:Number = ((sX * rX) + (sY * rY));
var rr:Number = ((rX * rX) + (rY * rY));
var sigma:Number = ((c * c) - (rr * b));
if ((((sigma < 0)) || ((rr < Number.MIN_VALUE)))){
return (false);
};
var a:Number = -((c + Math.sqrt(sigma)));
if ((((0 <= a)) && ((a <= (maxLambda * rr))))){
a = (a / rr);
lambda[0] = a;
normal.x = (sX + (a * rX));
normal.y = (sY + (a * rY));
normal.Normalize();
return (true);
};
return (false);
}
public function GetLocalPosition():b2Vec2{
return (m_localPosition);
}
public function GetRadius():Number{
return (m_radius);
}
override public function ComputeSweptAABB(aabb:b2AABB, transform1:b2XForm, transform2:b2XForm):void{
var tMat:b2Mat22;
tMat = transform1.R;
var p1X:Number = (transform1.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y)));
var p1Y:Number = (transform1.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y)));
tMat = transform2.R;
var p2X:Number = (transform2.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y)));
var p2Y:Number = (transform2.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y)));
aabb.lowerBound.Set((((p1X < p2X)) ? p1X : p2X - m_radius), (((p1Y < p2Y)) ? p1Y : p2Y - m_radius));
aabb.upperBound.Set((((p1X > p2X)) ? p1X : p2X + m_radius), (((p1Y > p2Y)) ? p1Y : p2Y + m_radius));
}
override public function ComputeMass(massData:b2MassData):void{
massData.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius);
massData.center.SetV(m_localPosition);
massData.I = (massData.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y))));
}
override public function UpdateSweepRadius(center:b2Vec2):void{
var dX:Number = (m_localPosition.x - center.x);
var dY:Number = (m_localPosition.y - center.y);
dX = Math.sqrt(((dX * dX) + (dY * dY)));
m_sweepRadius = ((dX + m_radius) - b2Settings.b2_toiSlop);
}
override public function ComputeAABB(aabb:b2AABB, transform:b2XForm):void{
var tMat:b2Mat22 = transform.R;
var pX:Number = (transform.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y)));
var pY:Number = (transform.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y)));
aabb.lowerBound.Set((pX - m_radius), (pY - m_radius));
aabb.upperBound.Set((pX + m_radius), (pY + m_radius));
}
override public function TestPoint(transform:b2XForm, p:b2Vec2):Boolean{
var tMat:b2Mat22 = transform.R;
var dX:Number = (transform.position.x + ((tMat.col1.x * m_localPosition.x) + (tMat.col2.x * m_localPosition.y)));
var dY:Number = (transform.position.y + ((tMat.col1.y * m_localPosition.x) + (tMat.col2.y * m_localPosition.y)));
dX = (p.x - dX);
dY = (p.y - dY);
return ((((dX * dX) + (dY * dY)) <= (m_radius * m_radius)));
}
}
}//package Box2D.Collision.Shapes
Section 4
//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(){
super();
}
public function Copy():b2FilterData{
var copy:b2FilterData = new b2FilterData();
copy.categoryBits = categoryBits;
copy.maskBits = maskBits;
copy.groupIndex = groupIndex;
return (copy);
}
}
}//package Box2D.Collision.Shapes
Section 5
//b2MassData (Box2D.Collision.Shapes.b2MassData)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
public class b2MassData {
public var mass:Number;// = 0
public var center:b2Vec2;
public var I:Number;// = 0
public function b2MassData(){
center = new b2Vec2(0, 0);
super();
}
}
}//package Box2D.Collision.Shapes
Section 6
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2PolygonDef extends b2ShapeDef {
public var vertices:Array;
public var vertexCount:int;
private static var s_mat:b2Mat22 = new b2Mat22();
public function b2PolygonDef(){
vertices = new Array(b2Settings.b2_maxPolygonVertices);
super();
type = b2Shape.e_polygonShape;
vertexCount = 0;
var i:int;
while (i < b2Settings.b2_maxPolygonVertices) {
vertices[i] = new b2Vec2();
i++;
};
}
public function SetAsOrientedBox(hx:Number, hy:Number, center:b2Vec2=null, angle:Number=0):void{
var xfPosition:b2Vec2;
var xfR:b2Mat22;
var i:int;
vertexCount = 4;
vertices[0].Set(-(hx), -(hy));
vertices[1].Set(hx, -(hy));
vertices[2].Set(hx, hy);
vertices[3].Set(-(hx), hy);
if (center){
xfPosition = center;
xfR = s_mat;
xfR.Set(angle);
i = 0;
while (i < vertexCount) {
center = vertices[i];
hx = (xfPosition.x + ((xfR.col1.x * center.x) + (xfR.col2.x * center.y)));
center.y = (xfPosition.y + ((xfR.col1.y * center.x) + (xfR.col2.y * center.y)));
center.x = hx;
i++;
};
};
}
public function SetAsBox(hx:Number, hy:Number):void{
vertexCount = 4;
vertices[0].Set(-(hx), -(hy));
vertices[1].Set(hx, -(hy));
vertices[2].Set(hx, hy);
vertices[3].Set(-(hx), hy);
}
}
}//package Box2D.Collision.Shapes
Section 7
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PolygonShape extends b2Shape {
public var m_coreVertices:Array;
public var m_vertices:Array;
private var s_supportVec:b2Vec2;
public var m_centroid:b2Vec2;
public var m_normals:Array;
public var m_obb:b2OBB;
public var m_vertexCount:int;
private static var s_computeMat:b2Mat22 = new b2Mat22();
private static var s_sweptAABB1:b2AABB = new b2AABB();
private static var s_sweptAABB2:b2AABB = new b2AABB();
public function b2PolygonShape(def:b2ShapeDef){
var i:int;
var edgeX:Number;
var edgeY:Number;
var len:Number;
var n1X:Number;
var n1Y:Number;
var n2X:Number;
var n2Y:Number;
var vX:Number;
var vY:Number;
var dX:Number;
var dY:Number;
var det: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(def);
m_type = e_polygonShape;
var poly:b2PolygonDef = (def as b2PolygonDef);
m_vertexCount = poly.vertexCount;
var i1:int = i;
var i2:int = i;
i = 0;
while (i < m_vertexCount) {
m_vertices[i] = poly.vertices[i].Copy();
i++;
};
i = 0;
while (i < m_vertexCount) {
i1 = i;
i2 = (((i + 1) < m_vertexCount)) ? (i + 1) : 0;
edgeX = (m_vertices[i2].x - m_vertices[i1].x);
edgeY = (m_vertices[i2].y - m_vertices[i1].y);
len = Math.sqrt(((edgeX * edgeX) + (edgeY * edgeY)));
m_normals[i] = new b2Vec2((edgeY / len), (-(edgeX) / len));
i++;
};
m_centroid = ComputeCentroid(poly.vertices, poly.vertexCount);
ComputeOBB(m_obb, m_vertices, m_vertexCount);
i = 0;
while (i < m_vertexCount) {
i1 = (((i - 1) >= 0)) ? (i - 1) : (m_vertexCount - 1);
i2 = i;
n1X = m_normals[i1].x;
n1Y = m_normals[i1].y;
n2X = m_normals[i2].x;
n2Y = m_normals[i2].y;
vX = (m_vertices[i].x - m_centroid.x);
vY = (m_vertices[i].y - m_centroid.y);
dX = (((n1X * vX) + (n1Y * vY)) - b2Settings.b2_toiSlop);
dY = (((n2X * vX) + (n2Y * vY)) - b2Settings.b2_toiSlop);
det = (1 / ((n1X * n2Y) - (n1Y * n2X)));
m_coreVertices[i] = new b2Vec2(((det * ((n2Y * dX) - (n1Y * dY))) + m_centroid.x), ((det * ((n1X * dY) - (n2X * dX))) + m_centroid.y));
i++;
};
}
override public function ComputeSweptAABB(aabb:b2AABB, transform1:b2XForm, transform2:b2XForm):void{
var aabb1:b2AABB = s_sweptAABB1;
var aabb2:b2AABB = s_sweptAABB2;
ComputeAABB(aabb1, transform1);
ComputeAABB(aabb2, transform2);
aabb.lowerBound.Set(((aabb1.lowerBound.x < aabb2.lowerBound.x)) ? aabb1.lowerBound.x : aabb2.lowerBound.x, ((aabb1.lowerBound.y < aabb2.lowerBound.y)) ? aabb1.lowerBound.y : aabb2.lowerBound.y);
aabb.upperBound.Set(((aabb1.upperBound.x > aabb2.upperBound.x)) ? aabb1.upperBound.x : aabb2.upperBound.x, ((aabb1.upperBound.y > aabb2.upperBound.y)) ? aabb1.upperBound.y : aabb2.upperBound.y);
}
public function GetVertices():Array{
return (m_vertices);
}
public function GetCoreVertices():Array{
return (m_coreVertices);
}
public function GetCentroid():b2Vec2{
return (m_centroid);
}
public function GetOBB():b2OBB{
return (m_obb);
}
public function GetFirstVertex(xf:b2XForm):b2Vec2{
return (b2Math.b2MulX(xf, m_coreVertices[0]));
}
public function Centroid(xf:b2XForm):b2Vec2{
return (b2Math.b2MulX(xf, m_centroid));
}
override public function TestSegment(xf:b2XForm, lambda:Array, normal:b2Vec2, segment:b2Segment, maxLambda:Number):Boolean{
var tX:Number;
var tY:Number;
var tMat:b2Mat22;
var tVec:b2Vec2;
var numerator:Number;
var denominator:Number;
var lower:Number = 0;
var upper:Number = maxLambda;
tX = (segment.p1.x - xf.position.x);
tY = (segment.p1.y - xf.position.y);
tMat = xf.R;
var p1X:Number = ((tX * tMat.col1.x) + (tY * tMat.col1.y));
var p1Y:Number = ((tX * tMat.col2.x) + (tY * tMat.col2.y));
tX = (segment.p2.x - xf.position.x);
tY = (segment.p2.y - xf.position.y);
tMat = xf.R;
var p2X:Number = ((tX * tMat.col1.x) + (tY * tMat.col1.y));
var p2Y:Number = ((tX * tMat.col2.x) + (tY * tMat.col2.y));
var dX:Number = (p2X - p1X);
var dY:Number = (p2Y - p1Y);
var index = -1;
var i:int;
while (i < m_vertexCount) {
tVec = m_vertices[i];
tX = (tVec.x - p1X);
tY = (tVec.y - p1Y);
tVec = m_normals[i];
numerator = ((tVec.x * tX) + (tVec.y * tY));
denominator = ((tVec.x * dX) + (tVec.y * dY));
if ((((denominator < 0)) && ((numerator < (lower * denominator))))){
lower = (numerator / denominator);
index = i;
} else {
if ((((denominator > 0)) && ((numerator < (upper * denominator))))){
upper = (numerator / denominator);
};
};
if (upper < lower){
return (false);
};
i++;
};
if (index >= 0){
lambda[0] = lower;
tMat = xf.R;
tVec = m_normals[index];
normal.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
normal.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y));
return (true);
};
return (false);
}
override public function ComputeMass(massData:b2MassData):void{
var p2:b2Vec2;
var p3:b2Vec2;
var e1X:Number;
var e1Y:Number;
var e2X:Number;
var e2Y:Number;
var D:Number;
var triangleArea:Number;
var px:Number;
var py:Number;
var ex1:Number;
var ey1:Number;
var ex2:Number;
var ey2:Number;
var intx2:Number;
var inty2:Number;
var centerX:Number = 0;
var centerY:Number = 0;
var area:Number = 0;
var I:Number = 0;
var p1X:Number = 0;
var p1Y:Number = 0;
var k_inv3:Number = (1 / 3);
var i:int;
while (i < m_vertexCount) {
p2 = m_vertices[i];
p3 = (((i + 1) < m_vertexCount)) ? m_vertices[int((i + 1))] : m_vertices[0];
e1X = (p2.x - p1X);
e1Y = (p2.y - p1Y);
e2X = (p3.x - p1X);
e2Y = (p3.y - p1Y);
D = ((e1X * e2Y) - (e1Y * e2X));
triangleArea = (0.5 * D);
area = (area + triangleArea);
centerX = (centerX + ((triangleArea * k_inv3) * ((p1X + p2.x) + p3.x)));
centerY = (centerY + ((triangleArea * k_inv3) * ((p1Y + p2.y) + p3.y)));
px = p1X;
py = p1Y;
ex1 = e1X;
ey1 = e1Y;
ex2 = e2X;
ey2 = e2Y;
intx2 = ((k_inv3 * ((0.25 * (((ex1 * ex1) + (ex2 * ex1)) + (ex2 * ex2))) + ((px * ex1) + (px * ex2)))) + ((0.5 * px) * px));
inty2 = ((k_inv3 * ((0.25 * (((ey1 * ey1) + (ey2 * ey1)) + (ey2 * ey2))) + ((py * ey1) + (py * ey2)))) + ((0.5 * py) * py));
I = (I + (D * (intx2 + inty2)));
i++;
};
massData.mass = (m_density * area);
centerX = (centerX * (1 / area));
centerY = (centerY * (1 / area));
massData.center.Set(centerX, centerY);
massData.I = (m_density * I);
}
public function GetNormals():Array{
return (m_normals);
}
public function Support(xf:b2XForm, dX:Number, dY:Number):b2Vec2{
var tVec:b2Vec2;
var tMat:b2Mat22;
var value:Number;
tMat = xf.R;
var dLocalX:Number = ((dX * tMat.col1.x) + (dY * tMat.col1.y));
var dLocalY:Number = ((dX * tMat.col2.x) + (dY * tMat.col2.y));
var bestIndex:int;
tVec = m_coreVertices[0];
var bestValue:Number = ((tVec.x * dLocalX) + (tVec.y * dLocalY));
var i = 1;
while (i < m_vertexCount) {
tVec = m_coreVertices[i];
value = ((tVec.x * dLocalX) + (tVec.y * dLocalY));
if (value > bestValue){
bestIndex = i;
bestValue = value;
};
i++;
};
tMat = xf.R;
tVec = m_coreVertices[bestIndex];
s_supportVec.x = (xf.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
s_supportVec.y = (xf.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
return (s_supportVec);
}
public function GetVertexCount():int{
return (m_vertexCount);
}
override public function ComputeAABB(aabb:b2AABB, xf:b2XForm):void{
var tMat:b2Mat22;
var tVec:b2Vec2;
var R:b2Mat22 = s_computeMat;
tMat = xf.R;
tVec = m_obb.R.col1;
R.col1.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
R.col1.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y));
tVec = m_obb.R.col2;
R.col2.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
R.col2.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y));
R.Abs();
var absR:b2Mat22 = R;
tVec = m_obb.extents;
var hX:Number = ((absR.col1.x * tVec.x) + (absR.col2.x * tVec.y));
var hY:Number = ((absR.col1.y * tVec.x) + (absR.col2.y * tVec.y));
tMat = xf.R;
tVec = m_obb.center;
var positionX:Number = (xf.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var positionY:Number = (xf.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
aabb.lowerBound.Set((positionX - hX), (positionY - hY));
aabb.upperBound.Set((positionX + hX), (positionY + hY));
}
override public function UpdateSweepRadius(center:b2Vec2):void{
var tVec:b2Vec2;
var dX:Number;
var dY:Number;
m_sweepRadius = 0;
var i:int;
while (i < m_vertexCount) {
tVec = m_coreVertices[i];
dX = (tVec.x - center.x);
dY = (tVec.y - center.y);
dX = Math.sqrt(((dX * dX) + (dY * dY)));
if (dX > m_sweepRadius){
m_sweepRadius = dX;
};
i++;
};
}
override public function TestPoint(xf:b2XForm, p:b2Vec2):Boolean{
var tVec:b2Vec2;
var dot:Number;
var tMat:b2Mat22 = xf.R;
var tX:Number = (p.x - xf.position.x);
var tY:Number = (p.y - xf.position.y);
var pLocalX:Number = ((tX * tMat.col1.x) + (tY * tMat.col1.y));
var pLocalY:Number = ((tX * tMat.col2.x) + (tY * tMat.col2.y));
var i:int;
while (i < m_vertexCount) {
tVec = m_vertices[i];
tX = (pLocalX - tVec.x);
tY = (pLocalY - tVec.y);
tVec = m_normals[i];
dot = ((tVec.x * tX) + (tVec.y * tY));
if (dot > 0){
return (false);
};
i++;
};
return (true);
}
public static function ComputeCentroid(vs:Array, count:int):b2Vec2{
var c:b2Vec2;
var inv3:Number;
var p2:b2Vec2;
var p3:b2Vec2;
var e1X:Number;
var e1Y:Number;
var e2X:Number;
var e2Y:Number;
var D:Number;
var triangleArea:Number;
c = new b2Vec2();
var area:Number = 0;
var p1X:Number = 0;
var p1Y:Number = 0;
inv3 = (1 / 3);
var i:int;
while (i < count) {
p2 = vs[i];
p3 = (((i + 1) < count)) ? vs[int((i + 1))] : vs[0];
e1X = (p2.x - p1X);
e1Y = (p2.y - p1Y);
e2X = (p3.x - p1X);
e2Y = (p3.y - p1Y);
D = ((e1X * e2Y) - (e1Y * e2X));
triangleArea = (0.5 * D);
area = (area + triangleArea);
c.x = (c.x + ((triangleArea * inv3) * ((p1X + p2.x) + p3.x)));
c.y = (c.y + ((triangleArea * inv3) * ((p1Y + p2.y) + p3.y)));
i++;
};
c.x = (c.x * (1 / area));
c.y = (c.y * (1 / area));
return (c);
}
public static function ComputeOBB(obb:b2OBB, vs:Array, count:int):void{
var i:int;
var root:b2Vec2;
var uxX:Number;
var uxY:Number;
var length:Number;
var uyX:Number;
var uyY:Number;
var lowerX:Number;
var lowerY:Number;
var upperX:Number;
var upperY:Number;
var j:int;
var area:Number;
var dX:Number;
var dY:Number;
var rX:Number;
var rY:Number;
var centerX:Number;
var centerY:Number;
var tMat:b2Mat22;
var p:Array = new Array((b2Settings.b2_maxPolygonVertices + 1));
i = 0;
while (i < count) {
p[i] = vs[i];
i++;
};
p[count] = p[0];
var minArea:Number = Number.MAX_VALUE;
i = 1;
while (i <= count) {
root = p[int((i - 1))];
uxX = (p[i].x - root.x);
uxY = (p[i].y - root.y);
length = Math.sqrt(((uxX * uxX) + (uxY * uxY)));
uxX = (uxX / length);
uxY = (uxY / length);
uyX = -(uxY);
uyY = uxX;
lowerX = Number.MAX_VALUE;
lowerY = Number.MAX_VALUE;
upperX = -(Number.MAX_VALUE);
upperY = -(Number.MAX_VALUE);
j = 0;
while (j < count) {
dX = (p[j].x - root.x);
dY = (p[j].y - root.y);
rX = ((uxX * dX) + (uxY * dY));
rY = ((uyX * dX) + (uyY * dY));
if (rX < lowerX){
lowerX = rX;
};
if (rY < lowerY){
lowerY = rY;
};
if (rX > upperX){
upperX = rX;
};
if (rY > upperY){
upperY = rY;
};
j++;
};
area = ((upperX - lowerX) * (upperY - lowerY));
if (area < (0.95 * minArea)){
minArea = area;
obb.R.col1.x = uxX;
obb.R.col1.y = uxY;
obb.R.col2.x = uyX;
obb.R.col2.y = uyY;
centerX = (0.5 * (lowerX + upperX));
centerY = (0.5 * (lowerY + upperY));
tMat = obb.R;
obb.center.x = (root.x + ((tMat.col1.x * centerX) + (tMat.col2.x * centerY)));
obb.center.y = (root.y + ((tMat.col1.y * centerX) + (tMat.col2.y * centerY)));
obb.extents.x = (0.5 * (upperX - lowerX));
obb.extents.y = (0.5 * (upperY - lowerY));
};
i++;
};
}
}
}//package Box2D.Collision.Shapes
Section 8
//b2Shape (Box2D.Collision.Shapes.b2Shape)
package Box2D.Collision.Shapes {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2Shape {
public var m_next:b2Shape;
public var m_type:int;
public var m_sweepRadius:Number;
public var m_density:Number;
public var m_filter:b2FilterData;
public var m_friction:Number;
public var m_isSensor:Boolean;
public var m_restitution:Number;
public var m_userData;
public var m_proxyId:uint;
public var m_body:b2Body;
public static const e_polygonShape:int = 1;
public static const e_unknownShape:int = -1;
public static const e_circleShape:int = 0;
public static const e_shapeTypeCount:int = 2;
private static var s_resetAABB:b2AABB = new b2AABB();
private static var s_syncAABB:b2AABB = new b2AABB();
private static var s_proxyAABB:b2AABB = new b2AABB();
public function b2Shape(def:b2ShapeDef){
super();
m_userData = def.userData;
m_friction = def.friction;
m_restitution = def.restitution;
m_density = def.density;
m_body = null;
m_sweepRadius = 0;
m_next = null;
m_proxyId = b2Pair.b2_nullProxy;
m_filter = def.filter.Copy();
m_isSensor = def.isSensor;
}
public function SetUserData(data):void{
m_userData = data;
}
public function GetSweepRadius():Number{
return (m_sweepRadius);
}
public function GetNext():b2Shape{
return (m_next);
}
public function ComputeSweptAABB(aabb:b2AABB, xf1:b2XForm, xf2: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(xf:b2XForm, lambda:Array, normal:b2Vec2, segment:b2Segment, maxLambda:Number):Boolean{
return (false);
}
public function RefilterProxy(broadPhase:b2BroadPhase, transform:b2XForm):void{
if (m_proxyId == b2Pair.b2_nullProxy){
return;
};
broadPhase.DestroyProxy(m_proxyId);
var aabb:b2AABB = s_resetAABB;
ComputeAABB(aabb, transform);
var inRange:Boolean = broadPhase.InRange(aabb);
if (inRange){
m_proxyId = broadPhase.CreateProxy(aabb, this);
} else {
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function SetFilterData(filter:b2FilterData):void{
m_filter = filter.Copy();
}
public function GetUserData(){
return (m_userData);
}
public function Synchronize(broadPhase:b2BroadPhase, transform1:b2XForm, transform2:b2XForm):Boolean{
if (m_proxyId == b2Pair.b2_nullProxy){
return (false);
};
var aabb:b2AABB = s_syncAABB;
ComputeSweptAABB(aabb, transform1, transform2);
if (broadPhase.InRange(aabb)){
broadPhase.MoveProxy(m_proxyId, aabb);
return (true);
};
return (false);
}
public function ComputeMass(massData:b2MassData):void{
}
public function IsSensor():Boolean{
return (m_isSensor);
}
public function DestroyProxy(broadPhase:b2BroadPhase):void{
if (m_proxyId != b2Pair.b2_nullProxy){
broadPhase.DestroyProxy(m_proxyId);
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function UpdateSweepRadius(center:b2Vec2):void{
}
public function ComputeAABB(aabb:b2AABB, xf:b2XForm):void{
}
public function GetBody():b2Body{
return (m_body);
}
public function CreateProxy(broadPhase:b2BroadPhase, transform:b2XForm):void{
var aabb:b2AABB = s_proxyAABB;
ComputeAABB(aabb, transform);
var inRange:Boolean = broadPhase.InRange(aabb);
if (inRange){
m_proxyId = broadPhase.CreateProxy(aabb, this);
} else {
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function TestPoint(xf:b2XForm, p:b2Vec2):Boolean{
return (false);
}
public static function Destroy(shape:b2Shape, allocator):void{
}
public static function Create(def:b2ShapeDef, allocator):b2Shape{
switch (def.type){
case e_circleShape:
return (new b2CircleShape(def));
case e_polygonShape:
return (new b2PolygonShape(def));
default:
return (null);
};
}
}
}//package Box2D.Collision.Shapes
Section 9
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef)
package Box2D.Collision.Shapes {
public class b2ShapeDef {
public var friction:Number;// = 0.2
public var isSensor:Boolean;// = false
public var density:Number;// = 0
public var restitution:Number;// = 0
public var userData;// = null
public var filter:b2FilterData;
public var type:int;
public function b2ShapeDef(){
type = b2Shape.e_unknownShape;
filter = new b2FilterData();
super();
}
}
}//package Box2D.Collision.Shapes
Section 10
//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 dX:Number = (upperBound.x - lowerBound.x);
var dY:Number = (upperBound.y - lowerBound.y);
var valid:Boolean = (((dX >= 0)) && ((dY >= 0)));
valid = ((((valid) && (lowerBound.IsValid()))) && (upperBound.IsValid()));
return (valid);
}
}
}//package Box2D.Collision
Section 11
//b2Bound (Box2D.Collision.b2Bound)
package Box2D.Collision {
public class b2Bound {
public var value:uint;
public var proxyId:uint;
public var stabbingCount:uint;
public function b2Bound(){
super();
}
public function Swap(b:b2Bound):void{
var tempValue:uint = value;
var tempProxyId:uint = proxyId;
var tempStabbingCount:uint = stabbingCount;
value = b.value;
proxyId = b.proxyId;
stabbingCount = b.stabbingCount;
b.value = tempValue;
b.proxyId = tempProxyId;
b.stabbingCount = tempStabbingCount;
}
public function IsLower():Boolean{
return (((value & 1) == 0));
}
public function IsUpper():Boolean{
return (((value & 1) == 1));
}
}
}//package Box2D.Collision
Section 12
//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 13
//b2BroadPhase (Box2D.Collision.b2BroadPhase)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2BroadPhase {
public var m_bounds:Array;
public var m_quantizationFactor:b2Vec2;
public var m_worldAABB:b2AABB;
public var m_freeProxy:uint;
public var m_proxyCount:int;
public var m_proxyPool:Array;
public var m_queryResultCount:int;
public var m_pairManager:b2PairManager;
public var m_timeStamp:uint;
public var m_queryResults:Array;
public static const b2_nullEdge:uint = 0xFFFF;
public static const b2_invalid:uint = 0xFFFF;
public static var s_validate:Boolean = false;
public function b2BroadPhase(worldAABB:b2AABB, callback:b2PairCallback){
var i:int;
var dY:Number;
var tProxy:b2Proxy;
var j: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, callback);
m_worldAABB = worldAABB;
m_proxyCount = 0;
i = 0;
while (i < b2Settings.b2_maxProxies) {
m_queryResults[i] = 0;
i++;
};
m_bounds = new Array(2);
i = 0;
while (i < 2) {
m_bounds[i] = new Array((2 * b2Settings.b2_maxProxies));
j = 0;
while (j < (2 * b2Settings.b2_maxProxies)) {
m_bounds[i][j] = new b2Bound();
j++;
};
i++;
};
var dX:Number = (worldAABB.upperBound.x - worldAABB.lowerBound.x);
dY = (worldAABB.upperBound.y - worldAABB.lowerBound.y);
m_quantizationFactor.x = (b2Settings.USHRT_MAX / dX);
m_quantizationFactor.y = (b2Settings.USHRT_MAX / dY);
i = 0;
while (i < (b2Settings.b2_maxProxies - 1)) {
tProxy = new b2Proxy();
m_proxyPool[i] = tProxy;
tProxy.SetNext((i + 1));
tProxy.timeStamp = 0;
tProxy.overlapCount = b2_invalid;
tProxy.userData = null;
i++;
};
tProxy = new b2Proxy();
m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = tProxy;
tProxy.SetNext(b2Pair.b2_nullProxy);
tProxy.timeStamp = 0;
tProxy.overlapCount = b2_invalid;
tProxy.userData = null;
m_freeProxy = 0;
m_timeStamp = 1;
m_queryResultCount = 0;
}
public function QueryAABB(aabb:b2AABB, userData, maxCount:int):int{
var lowerIndex:uint;
var upperIndex:uint;
var proxy:b2Proxy;
var lowerValues:Array = new Array();
var upperValues:Array = new Array();
ComputeBounds(lowerValues, upperValues, aabb);
var lowerIndexOut:Array = [lowerIndex];
var upperIndexOut:Array = [upperIndex];
Query(lowerIndexOut, upperIndexOut, lowerValues[0], upperValues[0], m_bounds[0], (2 * m_proxyCount), 0);
Query(lowerIndexOut, upperIndexOut, lowerValues[1], upperValues[1], m_bounds[1], (2 * m_proxyCount), 1);
var count:int;
var i:int;
while ((((i < m_queryResultCount)) && ((count < maxCount)))) {
proxy = m_proxyPool[m_queryResults[i]];
userData[i] = proxy.userData;
i++;
count++;
};
m_queryResultCount = 0;
IncrementTimeStamp();
return (count);
}
public function Commit():void{
m_pairManager.Commit();
}
public function GetProxy(proxyId:int):b2Proxy{
var proxy:b2Proxy = m_proxyPool[proxyId];
if ((((proxyId == b2Pair.b2_nullProxy)) || ((proxy.IsValid() == false)))){
return (null);
};
return (proxy);
}
private function IncrementTimeStamp():void{
var i:uint;
if (m_timeStamp == b2Settings.USHRT_MAX){
i = 0;
while (i < b2Settings.b2_maxProxies) {
(m_proxyPool[i] as b2Proxy).timeStamp = 0;
i++;
};
m_timeStamp = 1;
} else {
m_timeStamp++;
};
}
private function Query(lowerQueryOut:Array, upperQueryOut:Array, lowerValue:uint, upperValue:uint, bounds:Array, boundCount:uint, axis:int):void{
var bound:b2Bound;
var i:int;
var s:int;
var proxy:b2Proxy;
var lowerQuery:uint = BinarySearch(bounds, boundCount, lowerValue);
var upperQuery:uint = BinarySearch(bounds, boundCount, upperValue);
var j:uint = lowerQuery;
while (j < upperQuery) {
bound = bounds[j];
if (bound.IsLower()){
IncrementOverlapCount(bound.proxyId);
};
j++;
};
if (lowerQuery > 0){
i = (lowerQuery - 1);
bound = bounds[i];
s = bound.stabbingCount;
while (s) {
bound = bounds[i];
if (bound.IsLower()){
proxy = m_proxyPool[bound.proxyId];
if (lowerQuery <= proxy.upperBounds[axis]){
IncrementOverlapCount(bound.proxyId);
s--;
};
};
i--;
};
};
lowerQueryOut[0] = lowerQuery;
upperQueryOut[0] = upperQuery;
}
private function TestOverlapValidate(p1:b2Proxy, p2:b2Proxy):Boolean{
var bounds:Array;
var bound1:b2Bound;
var bound2:b2Bound;
var axis:int;
while (axis < 2) {
bounds = m_bounds[axis];
bound1 = bounds[p1.lowerBounds[axis]];
bound2 = bounds[p2.upperBounds[axis]];
if (bound1.value > bound2.value){
return (false);
};
bound1 = bounds[p1.upperBounds[axis]];
bound2 = bounds[p2.lowerBounds[axis]];
if (bound1.value < bound2.value){
return (false);
};
axis++;
};
return (true);
}
private function ComputeBounds(lowerValues:Array, upperValues:Array, aabb:b2AABB):void{
var minVertexX:Number = aabb.lowerBound.x;
var minVertexY:Number = aabb.lowerBound.y;
minVertexX = b2Math.b2Min(minVertexX, m_worldAABB.upperBound.x);
minVertexY = b2Math.b2Min(minVertexY, m_worldAABB.upperBound.y);
minVertexX = b2Math.b2Max(minVertexX, m_worldAABB.lowerBound.x);
minVertexY = b2Math.b2Max(minVertexY, m_worldAABB.lowerBound.y);
var maxVertexX:Number = aabb.upperBound.x;
var maxVertexY:Number = aabb.upperBound.y;
maxVertexX = b2Math.b2Min(maxVertexX, m_worldAABB.upperBound.x);
maxVertexY = b2Math.b2Min(maxVertexY, m_worldAABB.upperBound.y);
maxVertexX = b2Math.b2Max(maxVertexX, m_worldAABB.lowerBound.x);
maxVertexY = b2Math.b2Max(maxVertexY, m_worldAABB.lowerBound.y);
lowerValues[0] = (uint((m_quantizationFactor.x * (minVertexX - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1));
upperValues[0] = ((uint((m_quantizationFactor.x * (maxVertexX - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1);
lowerValues[1] = (uint((m_quantizationFactor.y * (minVertexY - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1));
upperValues[1] = ((uint((m_quantizationFactor.y * (maxVertexY - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1);
}
public function CreateProxy(aabb:b2AABB, userData):uint{
var index:uint;
var proxy:b2Proxy;
var bounds:Array;
var lowerIndex:uint;
var upperIndex:uint;
var lowerIndexOut:Array;
var upperIndexOut:Array;
var tArr:Array;
var j:int;
var tEnd:int;
var tBound1:b2Bound;
var tBound2:b2Bound;
var tBoundAS3:b2Bound;
var tIndex:int;
var proxy2:b2Proxy;
var proxyId:uint = m_freeProxy;
proxy = m_proxyPool[proxyId];
m_freeProxy = proxy.GetNext();
proxy.overlapCount = 0;
proxy.userData = userData;
var boundCount:uint = (2 * m_proxyCount);
var lowerValues:Array = new Array();
var upperValues:Array = new Array();
ComputeBounds(lowerValues, upperValues, aabb);
var axis:int;
while (axis < 2) {
bounds = m_bounds[axis];
lowerIndexOut = [lowerIndex];
upperIndexOut = [upperIndex];
Query(lowerIndexOut, upperIndexOut, lowerValues[axis], upperValues[axis], bounds, boundCount, axis);
lowerIndex = lowerIndexOut[0];
upperIndex = upperIndexOut[0];
tArr = new Array();
tEnd = (boundCount - upperIndex);
j = 0;
while (j < tEnd) {
tArr[j] = new b2Bound();
tBound1 = tArr[j];
tBound2 = bounds[int((upperIndex + j))];
tBound1.value = tBound2.value;
tBound1.proxyId = tBound2.proxyId;
tBound1.stabbingCount = tBound2.stabbingCount;
j++;
};
tEnd = tArr.length;
tIndex = (upperIndex + 2);
j = 0;
while (j < tEnd) {
tBound2 = tArr[j];
tBound1 = bounds[int((tIndex + j))];
tBound1.value = tBound2.value;
tBound1.proxyId = tBound2.proxyId;
tBound1.stabbingCount = tBound2.stabbingCount;
j++;
};
tArr = new Array();
tEnd = (upperIndex - lowerIndex);
j = 0;
while (j < tEnd) {
tArr[j] = new b2Bound();
tBound1 = tArr[j];
tBound2 = bounds[int((lowerIndex + j))];
tBound1.value = tBound2.value;
tBound1.proxyId = tBound2.proxyId;
tBound1.stabbingCount = tBound2.stabbingCount;
j++;
};
tEnd = tArr.length;
tIndex = (lowerIndex + 1);
j = 0;
while (j < tEnd) {
tBound2 = tArr[j];
tBound1 = bounds[int((tIndex + j))];
tBound1.value = tBound2.value;
tBound1.proxyId = tBound2.proxyId;
tBound1.stabbingCount = tBound2.stabbingCount;
j++;
};
upperIndex++;
tBound1 = bounds[lowerIndex];
tBound2 = bounds[upperIndex];
tBound1.value = lowerValues[axis];
tBound1.proxyId = proxyId;
tBound2.value = upperValues[axis];
tBound2.proxyId = proxyId;
tBoundAS3 = bounds[int((lowerIndex - 1))];
tBound1.stabbingCount = ((lowerIndex == 0)) ? 0 : tBoundAS3.stabbingCount;
tBoundAS3 = bounds[int((upperIndex - 1))];
tBound2.stabbingCount = tBoundAS3.stabbingCount;
index = lowerIndex;
while (index < upperIndex) {
tBoundAS3 = bounds[index];
tBoundAS3.stabbingCount++;
index++;
};
index = lowerIndex;
while (index < (boundCount + 2)) {
tBound1 = bounds[index];
proxy2 = m_proxyPool[tBound1.proxyId];
if (tBound1.IsLower()){
proxy2.lowerBounds[axis] = index;
} else {
proxy2.upperBounds[axis] = index;
};
index++;
};
axis++;
};
m_proxyCount++;
var i:int;
while (i < m_queryResultCount) {
m_pairManager.AddBufferedPair(proxyId, m_queryResults[i]);
i++;
};
m_pairManager.Commit();
m_queryResultCount = 0;
IncrementTimeStamp();
return (proxyId);
}
public function DestroyProxy(proxyId:uint):void{
var tBound1:b2Bound;
var tBound2:b2Bound;
var bounds:Array;
var lowerIndex:uint;
var upperIndex:uint;
var lowerValue:uint;
var upperValue:uint;
var tArr:Array;
var j:int;
var tEnd:int;
var tIndex:int;
var index:uint;
var index2:int;
var proxy2:b2Proxy;
var proxy:b2Proxy = m_proxyPool[proxyId];
var boundCount:int = (2 * m_proxyCount);
var axis:int;
while (axis < 2) {
bounds = m_bounds[axis];
lowerIndex = proxy.lowerBounds[axis];
upperIndex = proxy.upperBounds[axis];
tBound1 = bounds[lowerIndex];
lowerValue = tBound1.value;
tBound2 = bounds[upperIndex];
upperValue = tBound2.value;
tArr = new Array();
tEnd = ((upperIndex - lowerIndex) - 1);
j = 0;
while (j < tEnd) {
tArr[j] = new b2Bound();
tBound1 = tArr[j];
tBound2 = bounds[int(((lowerIndex + 1) + j))];
tBound1.value = tBound2.value;
tBound1.proxyId = tBound2.proxyId;
tBound1.stabbingCount = tBound2.stabbingCount;
j++;
};
tEnd = tArr.length;
tIndex = lowerIndex;
j = 0;
while (j < tEnd) {
tBound2 = tArr[j];
tBound1 = bounds[int((tIndex + j))];
tBound1.value = tBound2.value;
tBound1.proxyId = tBound2.proxyId;
tBound1.stabbingCount = tBound2.stabbingCount;
j++;
};
tArr = new Array();
tEnd = ((boundCount - upperIndex) - 1);
j = 0;
while (j < tEnd) {
tArr[j] = new b2Bound();
tBound1 = tArr[j];
tBound2 = bounds[int(((upperIndex + 1) + j))];
tBound1.value = tBound2.value;
tBound1.proxyId = tBound2.proxyId;
tBound1.stabbingCount = tBound2.stabbingCount;
j++;
};
tEnd = tArr.length;
tIndex = (upperIndex - 1);
j = 0;
while (j < tEnd) {
tBound2 = tArr[j];
tBound1 = bounds[int((tIndex + j))];
tBound1.value = tBound2.value;
tBound1.proxyId = tBound2.proxyId;
tBound1.stabbingCount = tBound2.stabbingCount;
j++;
};
tEnd = (boundCount - 2);
index = lowerIndex;
while (index < tEnd) {
tBound1 = bounds[index];
proxy2 = m_proxyPool[tBound1.proxyId];
if (tBound1.IsLower()){
proxy2.lowerBounds[axis] = index;
} else {
proxy2.upperBounds[axis] = index;
};
index++;
};
tEnd = (upperIndex - 1);
index2 = lowerIndex;
while (index2 < tEnd) {
tBound1 = bounds[index2];
tBound1.stabbingCount--;
index2++;
};
Query([0], [0], lowerValue, upperValue, bounds, (boundCount - 2), axis);
axis++;
};
var i:int;
while (i < m_queryResultCount) {
m_pairManager.RemoveBufferedPair(proxyId, m_queryResults[i]);
i++;
};
m_pairManager.Commit();
m_queryResultCount = 0;
IncrementTimeStamp();
proxy.userData = null;
proxy.overlapCount = b2_invalid;
proxy.lowerBounds[0] = b2_invalid;
proxy.lowerBounds[1] = b2_invalid;
proxy.upperBounds[0] = b2_invalid;
proxy.upperBounds[1] = b2_invalid;
proxy.SetNext(m_freeProxy);
m_freeProxy = proxyId;
m_proxyCount--;
}
public function TestOverlap(b:b2BoundValues, p:b2Proxy):Boolean{
var bounds:Array;
var bound:b2Bound;
var axis:int;
while (axis < 2) {
bounds = m_bounds[axis];
bound = bounds[p.upperBounds[axis]];
if (b.lowerValues[axis] > bound.value){
return (false);
};
bound = bounds[p.lowerBounds[axis]];
if (b.upperValues[axis] < bound.value){
return (false);
};
axis++;
};
return (true);
}
public function Validate():void{
var pair:b2Pair;
var proxy1:b2Proxy;
var proxy2:b2Proxy;
var overlap:Boolean;
var bounds:b2Bound;
var boundCount:uint;
var stabbingCount:uint;
var i:uint;
var bound:b2Bound;
var axis:int;
while (axis < 2) {
bounds = m_bounds[axis];
boundCount = (2 * m_proxyCount);
stabbingCount = 0;
i = 0;
while (i < boundCount) {
bound = bounds[i];
if (bound.IsLower() == true){
stabbingCount++;
} else {
stabbingCount--;
};
i++;
};
axis++;
};
}
private function IncrementOverlapCount(proxyId:uint):void{
var proxy:b2Proxy = m_proxyPool[proxyId];
if (proxy.timeStamp < m_timeStamp){
proxy.timeStamp = m_timeStamp;
proxy.overlapCount = 1;
} else {
proxy.overlapCount = 2;
m_queryResults[m_queryResultCount] = proxyId;
m_queryResultCount++;
};
}
public function InRange(aabb:b2AABB):Boolean{
var dX:Number;
var dY:Number;
var d2X:Number;
var d2Y:Number;
dX = aabb.lowerBound.x;
dY = aabb.lowerBound.y;
dX = (dX - m_worldAABB.upperBound.x);
dY = (dY - m_worldAABB.upperBound.y);
d2X = m_worldAABB.lowerBound.x;
d2Y = m_worldAABB.lowerBound.y;
d2X = (d2X - aabb.upperBound.x);
d2Y = (d2Y - aabb.upperBound.y);
dX = b2Math.b2Max(dX, d2X);
dY = b2Math.b2Max(dY, d2Y);
return ((b2Math.b2Max(dX, dY) < 0));
}
public function MoveProxy(proxyId:uint, aabb:b2AABB):void{
var as3arr:Array;
var as3int:int;
var axis:uint;
var index:uint;
var bound:b2Bound;
var prevBound:b2Bound;
var nextBound:b2Bound;
var nextProxyId:uint;
var nextProxy:b2Proxy;
var bounds:Array;
var lowerIndex:uint;
var upperIndex:uint;
var lowerValue:uint;
var upperValue:uint;
var deltaLower:int;
var deltaUpper:int;
var prevProxyId:uint;
var prevProxy:b2Proxy;
if ((((proxyId == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= proxyId)))){
return;
};
if (aabb.IsValid() == false){
return;
};
var boundCount:uint = (2 * m_proxyCount);
var proxy:b2Proxy = m_proxyPool[proxyId];
var newValues:b2BoundValues = new b2BoundValues();
ComputeBounds(newValues.lowerValues, newValues.upperValues, aabb);
var oldValues:b2BoundValues = new b2BoundValues();
axis = 0;
while (axis < 2) {
bound = m_bounds[axis][proxy.lowerBounds[axis]];
oldValues.lowerValues[axis] = bound.value;
bound = m_bounds[axis][proxy.upperBounds[axis]];
oldValues.upperValues[axis] = bound.value;
axis++;
};
axis = 0;
while (axis < 2) {
bounds = m_bounds[axis];
lowerIndex = proxy.lowerBounds[axis];
upperIndex = proxy.upperBounds[axis];
lowerValue = newValues.lowerValues[axis];
upperValue = newValues.upperValues[axis];
bound = bounds[lowerIndex];
deltaLower = (lowerValue - bound.value);
bound.value = lowerValue;
bound = bounds[upperIndex];
deltaUpper = (upperValue - bound.value);
bound.value = upperValue;
if (deltaLower < 0){
index = lowerIndex;
while ((((index > 0)) && ((lowerValue < (bounds[int((index - 1))] as b2Bound).value)))) {
bound = bounds[index];
prevBound = bounds[int((index - 1))];
prevProxyId = prevBound.proxyId;
prevProxy = m_proxyPool[prevBound.proxyId];
prevBound.stabbingCount++;
if (prevBound.IsUpper() == true){
if (TestOverlap(newValues, prevProxy)){
m_pairManager.AddBufferedPair(proxyId, prevProxyId);
};
as3arr = prevProxy.upperBounds;
as3int = as3arr[axis];
as3int++;
as3arr[axis] = as3int;
bound.stabbingCount++;
} else {
as3arr = prevProxy.lowerBounds;
as3int = as3arr[axis];
as3int++;
as3arr[axis] = as3int;
bound.stabbingCount--;
};
as3arr = proxy.lowerBounds;
as3int = as3arr[axis];
as3int--;
as3arr[axis] = as3int;
bound.Swap(prevBound);
index--;
};
};
if (deltaUpper > 0){
index = upperIndex;
while ((((index < (boundCount - 1))) && (((bounds[int((index + 1))] as b2Bound).value <= upperValue)))) {
bound = bounds[index];
nextBound = bounds[int((index + 1))];
nextProxyId = nextBound.proxyId;
nextProxy = m_proxyPool[nextProxyId];
nextBound.stabbingCount++;
if (nextBound.IsLower() == true){
if (TestOverlap(newValues, nextProxy)){
m_pairManager.AddBufferedPair(proxyId, nextProxyId);
};
as3arr = nextProxy.lowerBounds;
as3int = as3arr[axis];
as3int--;
as3arr[axis] = as3int;
bound.stabbingCount++;
} else {
as3arr = nextProxy.upperBounds;
as3int = as3arr[axis];
as3int--;
as3arr[axis] = as3int;
bound.stabbingCount--;
};
as3arr = proxy.upperBounds;
as3int = as3arr[axis];
as3int++;
as3arr[axis] = as3int;
bound.Swap(nextBound);
index++;
};
};
if (deltaLower > 0){
index = lowerIndex;
while ((((index < (boundCount - 1))) && (((bounds[int((index + 1))] as b2Bound).value <= lowerValue)))) {
bound = bounds[index];
nextBound = bounds[int((index + 1))];
nextProxyId = nextBound.proxyId;
nextProxy = m_proxyPool[nextProxyId];
nextBound.stabbingCount--;
if (nextBound.IsUpper()){
if (TestOverlap(oldValues, nextProxy)){
m_pairManager.RemoveBufferedPair(proxyId, nextProxyId);
};
as3arr = nextProxy.upperBounds;
as3int = as3arr[axis];
as3int--;
as3arr[axis] = as3int;
bound.stabbingCount--;
} else {
as3arr = nextProxy.lowerBounds;
as3int = as3arr[axis];
as3int--;
as3arr[axis] = as3int;
bound.stabbingCount++;
};
as3arr = proxy.lowerBounds;
as3int = as3arr[axis];
as3int++;
as3arr[axis] = as3int;
bound.Swap(nextBound);
index++;
};
};
if (deltaUpper < 0){
index = upperIndex;
while ((((index > 0)) && ((upperValue < (bounds[int((index - 1))] as b2Bound).value)))) {
bound = bounds[index];
prevBound = bounds[int((index - 1))];
prevProxyId = prevBound.proxyId;
prevProxy = m_proxyPool[prevProxyId];
prevBound.stabbingCount--;
if (prevBound.IsLower() == true){
if (TestOverlap(oldValues, prevProxy)){
m_pairManager.RemoveBufferedPair(proxyId, prevProxyId);
};
as3arr = prevProxy.lowerBounds;
as3int = as3arr[axis];
as3int++;
as3arr[axis] = as3int;
bound.stabbingCount--;
} else {
as3arr = prevProxy.upperBounds;
as3int = as3arr[axis];
as3int++;
as3arr[axis] = as3int;
bound.stabbingCount++;
};
as3arr = proxy.upperBounds;
as3int = as3arr[axis];
as3int--;
as3arr[axis] = as3int;
bound.Swap(prevBound);
index--;
};
};
axis++;
};
}
public static function BinarySearch(bounds:Array, count:int, value:uint):uint{
var mid:int;
var bound:b2Bound;
var low:int;
var high:int = (count - 1);
while (low <= high) {
mid = ((low + high) / 2);
bound = bounds[mid];
if (bound.value > value){
high = (mid - 1);
} else {
if (bound.value < value){
low = (mid + 1);
} else {
return (uint(mid));
};
};
};
return (uint(low));
}
}
}//package Box2D.Collision
Section 14
//b2BufferedPair (Box2D.Collision.b2BufferedPair)
package Box2D.Collision {
public class b2BufferedPair {
public var proxyId1:uint;
public var proxyId2:uint;
public function b2BufferedPair(){
super();
}
}
}//package Box2D.Collision
Section 15
//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 function b2Collision(){
super();
}
public static function EdgeSeparation(poly1:b2PolygonShape, xf1:b2XForm, edge1:int, poly2:b2PolygonShape, xf2:b2XForm):Number{
var tMat:b2Mat22;
var tVec:b2Vec2;
var dot:Number;
var count1:int = poly1.m_vertexCount;
var vertices1:Array = poly1.m_vertices;
var normals1:Array = poly1.m_normals;
var count2:int = poly2.m_vertexCount;
var vertices2:Array = poly2.m_vertices;
tMat = xf1.R;
tVec = normals1[edge1];
var normal1WorldX:Number = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
var normal1WorldY:Number = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y));
tMat = xf2.R;
var normal1X:Number = ((tMat.col1.x * normal1WorldX) + (tMat.col1.y * normal1WorldY));
var normal1Y:Number = ((tMat.col2.x * normal1WorldX) + (tMat.col2.y * normal1WorldY));
var index:int;
var minDot:Number = Number.MAX_VALUE;
var i:int;
while (i < count2) {
tVec = vertices2[i];
dot = ((tVec.x * normal1X) + (tVec.y * normal1Y));
if (dot < minDot){
minDot = dot;
index = i;
};
i++;
};
tVec = vertices1[edge1];
tMat = xf1.R;
var v1X:Number = (xf1.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var v1Y:Number = (xf1.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
tVec = vertices2[index];
tMat = xf2.R;
var v2X:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var v2Y:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
v2X = (v2X - v1X);
v2Y = (v2Y - v1Y);
var separation:Number = ((v2X * normal1WorldX) + (v2Y * normal1WorldY));
return (separation);
}
public static function b2TestOverlap(a:b2AABB, b:b2AABB):Boolean{
var t1:b2Vec2 = b.lowerBound;
var t2:b2Vec2 = a.upperBound;
var d1X:Number = (t1.x - t2.x);
var d1Y:Number = (t1.y - t2.y);
t1 = a.lowerBound;
t2 = b.upperBound;
var d2X:Number = (t1.x - t2.x);
var d2Y:Number = (t1.y - t2.y);
if ((((d1X > 0)) || ((d1Y > 0)))){
return (false);
};
if ((((d2X > 0)) || ((d2Y > 0)))){
return (false);
};
return (true);
}
public static function FindIncidentEdge(c:Array, poly1:b2PolygonShape, xf1:b2XForm, edge1:int, poly2:b2PolygonShape, xf2:b2XForm):void{
var tMat:b2Mat22;
var tVec:b2Vec2;
var tClip:ClipVertex;
var dot:Number;
var count1:int = poly1.m_vertexCount;
var normals1:Array = poly1.m_normals;
var count2:int = poly2.m_vertexCount;
var vertices2:Array = poly2.m_vertices;
var normals2:Array = poly2.m_normals;
tMat = xf1.R;
tVec = normals1[edge1];
var normal1X:Number = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
var normal1Y:Number = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y));
tMat = xf2.R;
var tX:Number = ((tMat.col1.x * normal1X) + (tMat.col1.y * normal1Y));
normal1Y = ((tMat.col2.x * normal1X) + (tMat.col2.y * normal1Y));
normal1X = tX;
var index:int;
var minDot:Number = Number.MAX_VALUE;
var i:int;
while (i < count2) {
tVec = normals2[i];
dot = ((normal1X * tVec.x) + (normal1Y * tVec.y));
if (dot < minDot){
minDot = dot;
index = i;
};
i++;
};
var i1:int = index;
var i2:int = (((i1 + 1) < count2)) ? (i1 + 1) : 0;
tClip = c[0];
tVec = vertices2[i1];
tMat = xf2.R;
tClip.v.x = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
tClip.v.y = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
tClip.id.features.referenceEdge = edge1;
tClip.id.features.incidentEdge = i1;
tClip.id.features.incidentVertex = 0;
tClip = c[1];
tVec = vertices2[i2];
tMat = xf2.R;
tClip.v.x = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
tClip.v.y = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
tClip.id.features.referenceEdge = edge1;
tClip.id.features.incidentEdge = i2;
tClip.id.features.incidentVertex = 1;
}
public static function b2CollidePolygons(manifold:b2Manifold, polyA:b2PolygonShape, xfA:b2XForm, polyB:b2PolygonShape, xfB:b2XForm):void{
var cv:ClipVertex;
var poly1:b2PolygonShape;
var poly2:b2PolygonShape;
var edge1:int;
var flip:uint;
var np:int;
var v12:b2Vec2;
var separation:Number;
var cp:b2ManifoldPoint;
manifold.pointCount = 0;
var edgeA:int;
var edgeAO:Array = [edgeA];
var separationA:Number = FindMaxSeparation(edgeAO, polyA, xfA, polyB, xfB);
edgeA = edgeAO[0];
if (separationA > 0){
return;
};
var edgeB:int;
var edgeBO:Array = [edgeB];
var separationB:Number = FindMaxSeparation(edgeBO, polyB, xfB, polyA, xfA);
edgeB = edgeBO[0];
if (separationB > 0){
return;
};
var xf1:b2XForm = new b2XForm();
var xf2:b2XForm = new b2XForm();
var k_relativeTol:Number = 0.98;
var k_absoluteTol:Number = 0.001;
if (separationB > ((k_relativeTol * separationA) + k_absoluteTol)){
poly1 = polyB;
poly2 = polyA;
xf1.Set(xfB);
xf2.Set(xfA);
edge1 = edgeB;
flip = 1;
} else {
poly1 = polyA;
poly2 = polyB;
xf1.Set(xfA);
xf2.Set(xfB);
edge1 = edgeA;
flip = 0;
};
var incidentEdge:Array = [new ClipVertex(), new ClipVertex()];
FindIncidentEdge(incidentEdge, poly1, xf1, edge1, poly2, xf2);
var count1:int = poly1.m_vertexCount;
var vertices1:Array = poly1.m_vertices;
var tVec:b2Vec2 = vertices1[edge1];
var v11:b2Vec2 = tVec.Copy();
if ((edge1 + 1) < count1){
tVec = vertices1[int((edge1 + 1))];
v12 = tVec.Copy();
} else {
tVec = vertices1[0];
v12 = tVec.Copy();
};
var dv:b2Vec2 = b2Math.SubtractVV(v12, v11);
var sideNormal:b2Vec2 = b2Math.b2MulMV(xf1.R, b2Math.SubtractVV(v12, v11));
sideNormal.Normalize();
var frontNormal:b2Vec2 = b2Math.b2CrossVF(sideNormal, 1);
v11 = b2Math.b2MulX(xf1, v11);
v12 = b2Math.b2MulX(xf1, v12);
var frontOffset:Number = b2Math.b2Dot(frontNormal, v11);
var sideOffset1:Number = -(b2Math.b2Dot(sideNormal, v11));
var sideOffset2:Number = b2Math.b2Dot(sideNormal, v12);
var clipPoints1:Array = [new ClipVertex(), new ClipVertex()];
var clipPoints2:Array = [new ClipVertex(), new ClipVertex()];
np = ClipSegmentToLine(clipPoints1, incidentEdge, sideNormal.Negative(), sideOffset1);
if (np < 2){
return;
};
np = ClipSegmentToLine(clipPoints2, clipPoints1, sideNormal, sideOffset2);
if (np < 2){
return;
};
manifold.normal = (flip) ? frontNormal.Negative() : frontNormal.Copy();
var pointCount:int;
var i:int;
while (i < b2Settings.b2_maxManifoldPoints) {
cv = clipPoints2[i];
separation = (b2Math.b2Dot(frontNormal, cv.v) - frontOffset);
if (separation <= 0){
cp = manifold.points[pointCount];
cp.separation = separation;
cp.localPoint1 = b2Math.b2MulXT(xfA, cv.v);
cp.localPoint2 = b2Math.b2MulXT(xfB, cv.v);
cp.id.key = cv.id._key;
cp.id.features.flip = flip;
pointCount++;
};
i++;
};
manifold.pointCount = pointCount;
}
public static function FindMaxSeparation(edgeIndex:Array, poly1:b2PolygonShape, xf1:b2XForm, poly2:b2PolygonShape, xf2:b2XForm):Number{
var tVec:b2Vec2;
var tMat:b2Mat22;
var bestEdge:int;
var bestSeparation:Number;
var increment:int;
var dot:Number;
var count1:int = poly1.m_vertexCount;
var normals1:Array = poly1.m_normals;
tMat = xf2.R;
tVec = poly2.m_centroid;
var dX:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var dY:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
tMat = xf1.R;
tVec = poly1.m_centroid;
dX = (dX - (xf1.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y))));
dY = (dY - (xf1.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y))));
var dLocal1X:Number = ((dX * xf1.R.col1.x) + (dY * xf1.R.col1.y));
var dLocal1Y:Number = ((dX * xf1.R.col2.x) + (dY * xf1.R.col2.y));
var edge:int;
var maxDot:Number = -(Number.MAX_VALUE);
var i:int;
while (i < count1) {
tVec = normals1[i];
dot = ((tVec.x * dLocal1X) + (tVec.y * dLocal1Y));
if (dot > maxDot){
maxDot = dot;
edge = i;
};
i++;
};
var s:Number = EdgeSeparation(poly1, xf1, edge, poly2, xf2);
if (s > 0){
return (s);
};
var prevEdge:int = (((edge - 1) >= 0)) ? (edge - 1) : (count1 - 1);
var sPrev:Number = EdgeSeparation(poly1, xf1, prevEdge, poly2, xf2);
if (sPrev > 0){
return (sPrev);
};
var nextEdge:int = (((edge + 1) < count1)) ? (edge + 1) : 0;
var sNext:Number = EdgeSeparation(poly1, xf1, nextEdge, poly2, xf2);
if (sNext > 0){
return (sNext);
};
if ((((sPrev > s)) && ((sPrev > sNext)))){
increment = -1;
bestEdge = prevEdge;
bestSeparation = sPrev;
} else {
if (sNext > s){
increment = 1;
bestEdge = nextEdge;
bestSeparation = sNext;
} else {
edgeIndex[0] = edge;
return (s);
};
};
while (true) {
if (increment == -1){
edge = (((bestEdge - 1) >= 0)) ? (bestEdge - 1) : (count1 - 1);
} else {
edge = (((bestEdge + 1) < count1)) ? (bestEdge + 1) : 0;
};
s = EdgeSeparation(poly1, xf1, edge, poly2, xf2);
if (s > 0){
return (s);
};
if (s > bestSeparation){
bestEdge = edge;
bestSeparation = s;
} else {
break;
};
};
edgeIndex[0] = bestEdge;
return (bestSeparation);
}
public static function ClipSegmentToLine(vOut:Array, vIn:Array, normal:b2Vec2, offset:Number):int{
var cv:ClipVertex;
var numOut:int;
var vIn0:b2Vec2;
var vIn1:b2Vec2;
var distance0:Number;
var interp:Number;
var tVec:b2Vec2;
var cv2:ClipVertex;
numOut = 0;
cv = vIn[0];
vIn0 = cv.v;
cv = vIn[1];
vIn1 = cv.v;
distance0 = (b2Math.b2Dot(normal, vIn0) - offset);
var distance1:Number = (b2Math.b2Dot(normal, vIn1) - offset);
if (distance0 <= 0){
var _temp1 = numOut;
numOut = (numOut + 1);
var _local14 = _temp1;
vOut[_local14] = vIn[0];
};
if (distance1 <= 0){
var _temp2 = numOut;
numOut = (numOut + 1);
_local14 = _temp2;
vOut[_local14] = vIn[1];
};
if ((distance0 * distance1) < 0){
interp = (distance0 / (distance0 - distance1));
cv = vOut[numOut];
tVec = cv.v;
tVec.x = (vIn0.x + (interp * (vIn1.x - vIn0.x)));
tVec.y = (vIn0.y + (interp * (vIn1.y - vIn0.y)));
cv = vOut[numOut];
if (distance0 > 0){
cv2 = vIn[0];
cv.id = cv2.id;
} else {
cv2 = vIn[1];
cv.id = cv2.id;
};
numOut++;
};
return (numOut);
}
public static function b2CollideCircles(manifold:b2Manifold, circle1:b2CircleShape, xf1:b2XForm, circle2:b2CircleShape, xf2:b2XForm):void{
var tMat:b2Mat22;
var tVec:b2Vec2;
var separation:Number;
var dist:Number;
var a:Number;
manifold.pointCount = 0;
tMat = xf1.R;
tVec = circle1.m_localPosition;
var p1X:Number = (xf1.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var p1Y:Number = (xf1.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
tMat = xf2.R;
tVec = circle2.m_localPosition;
var p2X:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var p2Y:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
var dX:Number = (p2X - p1X);
var dY:Number = (p2Y - p1Y);
var distSqr:Number = ((dX * dX) + (dY * dY));
var r1:Number = circle1.m_radius;
var r2:Number = circle2.m_radius;
var radiusSum:Number = (r1 + r2);
if (distSqr > (radiusSum * radiusSum)){
return;
};
if (distSqr < Number.MIN_VALUE){
separation = -(radiusSum);
manifold.normal.Set(0, 1);
} else {
dist = Math.sqrt(distSqr);
separation = (dist - radiusSum);
a = (1 / dist);
manifold.normal.x = (a * dX);
manifold.normal.y = (a * dY);
};
manifold.pointCount = 1;
var tPoint:b2ManifoldPoint = manifold.points[0];
tPoint.id.key = 0;
tPoint.separation = separation;
p1X = (p1X + (r1 * manifold.normal.x));
p1Y = (p1Y + (r1 * manifold.normal.y));
p2X = (p2X - (r2 * manifold.normal.x));
p2Y = (p2Y - (r2 * manifold.normal.y));
var pX:Number = (0.5 * (p1X + p2X));
var pY:Number = (0.5 * (p1Y + p2Y));
var tX:Number = (pX - xf1.position.x);
var tY:Number = (pY - xf1.position.y);
tPoint.localPoint1.x = ((tX * xf1.R.col1.x) + (tY * xf1.R.col1.y));
tPoint.localPoint1.y = ((tX * xf1.R.col2.x) + (tY * xf1.R.col2.y));
tX = (pX - xf2.position.x);
tY = (pY - xf2.position.y);
tPoint.localPoint2.x = ((tX * xf2.R.col1.x) + (tY * xf2.R.col1.y));
tPoint.localPoint2.y = ((tX * xf2.R.col2.x) + (tY * xf2.R.col2.y));
}
public static function b2CollidePolygonAndCircle(manifold:b2Manifold, polygon:b2PolygonShape, xf1:b2XForm, circle:b2CircleShape, xf2:b2XForm):void{
var tPoint:b2ManifoldPoint;
var dX:Number;
var dY:Number;
var positionX:Number;
var positionY:Number;
var tVec:b2Vec2;
var tMat:b2Mat22;
var dist:Number;
var pX:Number;
var pY:Number;
var s:Number;
manifold.pointCount = 0;
tMat = xf2.R;
tVec = circle.m_localPosition;
var cX:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var cY:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
dX = (cX - xf1.position.x);
dY = (cY - xf1.position.y);
tMat = xf1.R;
var cLocalX:Number = ((dX * tMat.col1.x) + (dY * tMat.col1.y));
var cLocalY:Number = ((dX * tMat.col2.x) + (dY * tMat.col2.y));
var normalIndex:int;
var separation:Number = -(Number.MAX_VALUE);
var radius:Number = circle.m_radius;
var vertexCount:int = polygon.m_vertexCount;
var vertices:Array = polygon.m_vertices;
var normals:Array = polygon.m_normals;
var i:int;
while (i < vertexCount) {
tVec = vertices[i];
dX = (cLocalX - tVec.x);
dY = (cLocalY - tVec.y);
tVec = normals[i];
s = ((tVec.x * dX) + (tVec.y * dY));
if (s > radius){
return;
};
if (s > separation){
separation = s;
normalIndex = i;
};
i++;
};
if (separation < Number.MIN_VALUE){
manifold.pointCount = 1;
tVec = normals[normalIndex];
tMat = xf1.R;
manifold.normal.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
manifold.normal.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y));
tPoint = manifold.points[0];
tPoint.id.features.incidentEdge = normalIndex;
tPoint.id.features.incidentVertex = b2_nullFeature;
tPoint.id.features.referenceEdge = 0;
tPoint.id.features.flip = 0;
positionX = (cX - (radius * manifold.normal.x));
positionY = (cY - (radius * manifold.normal.y));
dX = (positionX - xf1.position.x);
dY = (positionY - xf1.position.y);
tMat = xf1.R;
tPoint.localPoint1.x = ((dX * tMat.col1.x) + (dY * tMat.col1.y));
tPoint.localPoint1.y = ((dX * tMat.col2.x) + (dY * tMat.col2.y));
dX = (positionX - xf2.position.x);
dY = (positionY - xf2.position.y);
tMat = xf2.R;
tPoint.localPoint2.x = ((dX * tMat.col1.x) + (dY * tMat.col1.y));
tPoint.localPoint2.y = ((dX * tMat.col2.x) + (dY * tMat.col2.y));
tPoint.separation = (separation - radius);
return;
};
var vertIndex1:int = normalIndex;
var vertIndex2:int = (((vertIndex1 + 1) < vertexCount)) ? (vertIndex1 + 1) : 0;
tVec = vertices[vertIndex1];
var tVec2:b2Vec2 = vertices[vertIndex2];
var eX:Number = (tVec2.x - tVec.x);
var eY:Number = (tVec2.y - tVec.y);
var length:Number = Math.sqrt(((eX * eX) + (eY * eY)));
eX = (eX / length);
eY = (eY / length);
dX = (cLocalX - tVec.x);
dY = (cLocalY - tVec.y);
var u:Number = ((dX * eX) + (dY * eY));
tPoint = manifold.points[0];
if (u <= 0){
pX = tVec.x;
pY = tVec.y;
tPoint.id.features.incidentEdge = b2_nullFeature;
tPoint.id.features.incidentVertex = vertIndex1;
} else {
if (u >= length){
pX = tVec2.x;
pY = tVec2.y;
tPoint.id.features.incidentEdge = b2_nullFeature;
tPoint.id.features.incidentVertex = vertIndex2;
} else {
pX = ((eX * u) + tVec.x);
pY = ((eY * u) + tVec.y);
tPoint.id.features.incidentEdge = normalIndex;
tPoint.id.features.incidentVertex = b2_nullFeature;
};
};
dX = (cLocalX - pX);
dY = (cLocalY - pY);
dist = Math.sqrt(((dX * dX) + (dY * dY)));
dX = (dX / dist);
dY = (dY / dist);
if (dist > radius){
return;
};
manifold.pointCount = 1;
tMat = xf1.R;
manifold.normal.x = ((tMat.col1.x * dX) + (tMat.col2.x * dY));
manifold.normal.y = ((tMat.col1.y * dX) + (tMat.col2.y * dY));
positionX = (cX - (radius * manifold.normal.x));
positionY = (cY - (radius * manifold.normal.y));
dX = (positionX - xf1.position.x);
dY = (positionY - xf1.position.y);
tMat = xf1.R;
tPoint.localPoint1.x = ((dX * tMat.col1.x) + (dY * tMat.col1.y));
tPoint.localPoint1.y = ((dX * tMat.col2.x) + (dY * tMat.col2.y));
dX = (positionX - xf2.position.x);
dY = (positionY - xf2.position.y);
tMat = xf2.R;
tPoint.localPoint2.x = ((dX * tMat.col1.x) + (dY * tMat.col1.y));
tPoint.localPoint2.y = ((dX * tMat.col2.x) + (dY * tMat.col2.y));
tPoint.separation = (dist - radius);
tPoint.id.features.referenceEdge = 0;
tPoint.id.features.flip = 0;
}
}
}//package Box2D.Collision
Section 16
//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(id:b2ContactID):void{
key = id._key;
}
public function Copy():b2ContactID{
var id:b2ContactID = new b2ContactID();
id.key = key;
return (id);
}
public function set key(value:uint):void{
_key = value;
features._referenceEdge = (_key & 0xFF);
features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF);
features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF);
features._flip = (((_key & 4278190080) >> 24) & 0xFF);
}
public function get key():uint{
return (_key);
}
}
}//package Box2D.Collision
Section 17
//b2ContactPoint (Box2D.Collision.b2ContactPoint)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2ContactPoint {
public var friction:Number;
public var separation:Number;
public var normal:b2Vec2;
public var position:b2Vec2;
public var restitution:Number;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var id:b2ContactID;
public var velocity:b2Vec2;
public function b2ContactPoint(){
position = new b2Vec2();
velocity = new b2Vec2();
normal = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Collision
Section 18
//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 function b2Distance(){
super();
}
public static function InPoints(w:b2Vec2, points:Array, pointCount:int):Boolean{
var points_i:b2Vec2;
var dX:Number;
var dY:Number;
var mX:Number;
var mY:Number;
var k_tolerance:Number = (100 * Number.MIN_VALUE);
var i:int;
while (i < pointCount) {
points_i = points[i];
dX = Math.abs((w.x - points_i.x));
dY = Math.abs((w.y - points_i.y));
mX = Math.max(Math.abs(w.x), Math.abs(points_i.x));
mY = Math.max(Math.abs(w.y), Math.abs(points_i.y));
if ((((dX < (k_tolerance * (mX + 1)))) && ((dY < (k_tolerance * (mY + 1)))))){
return (true);
};
i++;
};
return (false);
}
public static function DistanceGeneric(x1:b2Vec2, x2:b2Vec2, shape1, xf1:b2XForm, shape2, xf2:b2XForm):Number{
var tVec:b2Vec2;
var vX:Number;
var vY:Number;
var w1:b2Vec2;
var w2:b2Vec2;
var wX:Number;
var wY:Number;
var vw:Number;
var maxSqr:Number;
var i:int;
var p1s:Array = s_p1s;
var p2s:Array = s_p2s;
var points:Array = s_points;
var pointCount:int;
x1.SetV(shape1.GetFirstVertex(xf1));
x2.SetV(shape2.GetFirstVertex(xf2));
var vSqr:Number = 0;
var maxIterations = 20;
var iter:int;
while (iter < maxIterations) {
vX = (x2.x - x1.x);
vY = (x2.y - x1.y);
w1 = shape1.Support(xf1, vX, vY);
w2 = shape2.Support(xf2, -(vX), -(vY));
vSqr = ((vX * vX) + (vY * vY));
wX = (w2.x - w1.x);
wY = (w2.y - w1.y);
vw = ((vX * wX) + (vY * wY));
if ((vSqr - vw) <= (0.01 * vSqr)){
if (pointCount == 0){
x1.SetV(w1);
x2.SetV(w2);
};
g_GJK_Iterations = iter;
return (Math.sqrt(vSqr));
};
switch (pointCount){
case 0:
tVec = p1s[0];
tVec.SetV(w1);
tVec = p2s[0];
tVec.SetV(w2);
tVec = points[0];
tVec.x = wX;
tVec.y = wY;
x1.SetV(p1s[0]);
x2.SetV(p2s[0]);
pointCount++;
break;
case 1:
tVec = p1s[1];
tVec.SetV(w1);
tVec = p2s[1];
tVec.SetV(w2);
tVec = points[1];
tVec.x = wX;
tVec.y = wY;
pointCount = ProcessTwo(x1, x2, p1s, p2s, points);
break;
case 2:
tVec = p1s[2];
tVec.SetV(w1);
tVec = p2s[2];
tVec.SetV(w2);
tVec = points[2];
tVec.x = wX;
tVec.y = wY;
pointCount = ProcessThree(x1, x2, p1s, p2s, points);
break;
};
if (pointCount == 3){
g_GJK_Iterations = iter;
return (0);
};
maxSqr = -(Number.MAX_VALUE);
i = 0;
while (i < pointCount) {
tVec = points[i];
maxSqr = b2Math.b2Max(maxSqr, ((tVec.x * tVec.x) + (tVec.y * tVec.y)));
i++;
};
if ((((pointCount == 3)) || ((vSqr <= ((100 * Number.MIN_VALUE) * maxSqr))))){
g_GJK_Iterations = iter;
vX = (x2.x - x1.x);
vY = (x2.y - x1.y);
vSqr = ((vX * vX) + (vY * vY));
return (Math.sqrt(vSqr));
};
iter++;
};
g_GJK_Iterations = maxIterations;
return (Math.sqrt(vSqr));
}
public static function DistanceCC(x1:b2Vec2, x2:b2Vec2, circle1:b2CircleShape, xf1:b2XForm, circle2:b2CircleShape, xf2:b2XForm):Number{
var tMat:b2Mat22;
var tVec:b2Vec2;
var dLen:Number;
var distance:Number;
tMat = xf1.R;
tVec = circle1.m_localPosition;
var p1X:Number = (xf1.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var p1Y:Number = (xf1.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
tMat = xf2.R;
tVec = circle2.m_localPosition;
var p2X:Number = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
var p2Y:Number = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
var dX:Number = (p2X - p1X);
var dY:Number = (p2Y - p1Y);
var dSqr:Number = ((dX * dX) + (dY * dY));
var r1:Number = (circle1.m_radius - b2Settings.b2_toiSlop);
var r2:Number = (circle2.m_radius - b2Settings.b2_toiSlop);
var r:Number = (r1 + r2);
if (dSqr > (r * r)){
dLen = Math.sqrt(dSqr);
dX = (dX / dLen);
dY = (dY / dLen);
distance = (dLen - r);
x1.x = (p1X + (r1 * dX));
x1.y = (p1Y + (r1 * dY));
x2.x = (p2X - (r2 * dX));
x2.y = (p2Y - (r2 * dY));
return (distance);
};
if (dSqr > (Number.MIN_VALUE * Number.MIN_VALUE)){
dLen = Math.sqrt(dSqr);
dX = (dX / dLen);
dY = (dY / dLen);
x1.x = (p1X + (r1 * dX));
x1.y = (p1Y + (r1 * dY));
x2.x = x1.x;
x2.y = x1.y;
return (0);
};
x1.x = p1X;
x1.y = p1Y;
x2.x = x1.x;
x2.y = x1.y;
return (0);
}
public static function ProcessThree(x1:b2Vec2, x2:b2Vec2, p1s:Array, p2s:Array, points:Array):int{
var points_0:b2Vec2;
var points_1:b2Vec2;
var points_2:b2Vec2;
var p1s_0:b2Vec2;
var p1s_1:b2Vec2;
var p1s_2:b2Vec2;
var p2s_0:b2Vec2;
var p2s_1:b2Vec2;
var lambda:Number;
points_0 = points[0];
points_1 = points[1];
points_2 = points[2];
p1s_0 = p1s[0];
p1s_1 = p1s[1];
p1s_2 = p1s[2];
p2s_0 = p2s[0];
p2s_1 = p2s[1];
var p2s_2:b2Vec2 = p2s[2];
var aX:Number = points_0.x;
var aY:Number = points_0.y;
var bX:Number = points_1.x;
var bY:Number = points_1.y;
var cX:Number = points_2.x;
var cY:Number = points_2.y;
var abX:Number = (bX - aX);
var abY:Number = (bY - aY);
var acX:Number = (cX - aX);
var acY:Number = (cY - aY);
var bcX:Number = (cX - bX);
var bcY:Number = (cY - bY);
var sn:Number = -(((aX * abX) + (aY * abY)));
var sd:Number = ((bX * abX) + (bY * abY));
var tn:Number = -(((aX * acX) + (aY * acY)));
var td:Number = ((cX * acX) + (cY * acY));
var un:Number = -(((bX * bcX) + (bY * bcY)));
var ud:Number = ((cX * bcX) + (cY * bcY));
if ((((td <= 0)) && ((ud <= 0)))){
x1.SetV(p1s_2);
x2.SetV(p2s_2);
p1s_0.SetV(p1s_2);
p2s_0.SetV(p2s_2);
points_0.SetV(points_2);
return (1);
};
var n:Number = ((abX * acY) - (abY * acX));
var vc:Number = (n * ((aX * bY) - (aY * bX)));
var va:Number = (n * ((bX * cY) - (bY * cX)));
if ((((((((va <= 0)) && ((un >= 0)))) && ((ud >= 0)))) && (((un + ud) > 0)))){
lambda = (un / (un + ud));
x1.x = (p1s_1.x + (lambda * (p1s_2.x - p1s_1.x)));
x1.y = (p1s_1.y + (lambda * (p1s_2.y - p1s_1.y)));
x2.x = (p2s_1.x + (lambda * (p2s_2.x - p2s_1.x)));
x2.y = (p2s_1.y + (lambda * (p2s_2.y - p2s_1.y)));
p1s_0.SetV(p1s_2);
p2s_0.SetV(p2s_2);
points_0.SetV(points_2);
return (2);
};
var vb:Number = (n * ((cX * aY) - (cY * aX)));
if ((((((((vb <= 0)) && ((tn >= 0)))) && ((td >= 0)))) && (((tn + td) > 0)))){
lambda = (tn / (tn + td));
x1.x = (p1s_0.x + (lambda * (p1s_2.x - p1s_0.x)));
x1.y = (p1s_0.y + (lambda * (p1s_2.y - p1s_0.y)));
x2.x = (p2s_0.x + (lambda * (p2s_2.x - p2s_0.x)));
x2.y = (p2s_0.y + (lambda * (p2s_2.y - p2s_0.y)));
p1s_1.SetV(p1s_2);
p2s_1.SetV(p2s_2);
points_1.SetV(points_2);
return (2);
};
var denom:Number = ((va + vb) + vc);
denom = (1 / denom);
var u:Number = (va * denom);
var v:Number = (vb * denom);
var w:Number = ((1 - u) - v);
x1.x = (((u * p1s_0.x) + (v * p1s_1.x)) + (w * p1s_2.x));
x1.y = (((u * p1s_0.y) + (v * p1s_1.y)) + (w * p1s_2.y));
x2.x = (((u * p2s_0.x) + (v * p2s_1.x)) + (w * p2s_2.x));
x2.y = (((u * p2s_0.y) + (v * p2s_1.y)) + (w * p2s_2.y));
return (3);
}
public static function DistancePC(x1:b2Vec2, x2:b2Vec2, polygon:b2PolygonShape, xf1:b2XForm, circle:b2CircleShape, xf2:b2XForm):Number{
var tMat:b2Mat22;
var tVec:b2Vec2;
var dX:Number;
var dY:Number;
var dLen:Number;
var point:b2Point = gPoint;
tVec = circle.m_localPosition;
tMat = xf2.R;
point.p.x = (xf2.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
point.p.y = (xf2.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
var distance:Number = DistanceGeneric(x1, x2, polygon, xf1, point, b2Math.b2XForm_identity);
var r:Number = (circle.m_radius - b2Settings.b2_toiSlop);
if (distance > r){
distance = (distance - r);
dX = (x2.x - x1.x);
dY = (x2.y - x1.y);
dLen = Math.sqrt(((dX * dX) + (dY * dY)));
dX = (dX / dLen);
dY = (dY / dLen);
x2.x = (x2.x - (r * dX));
x2.y = (x2.y - (r * dY));
} else {
distance = 0;
x2.x = x1.x;
x2.y = x1.y;
};
return (distance);
}
public static function Distance(x1:b2Vec2, x2:b2Vec2, shape1:b2Shape, xf1:b2XForm, shape2:b2Shape, xf2:b2XForm):Number{
var type1:int = shape1.m_type;
var type2:int = shape2.m_type;
if ((((type1 == b2Shape.e_circleShape)) && ((type2 == b2Shape.e_circleShape)))){
return (DistanceCC(x1, x2, (shape1 as b2CircleShape), xf1, (shape2 as b2CircleShape), xf2));
};
if ((((type1 == b2Shape.e_polygonShape)) && ((type2 == b2Shape.e_circleShape)))){
return (DistancePC(x1, x2, (shape1 as b2PolygonShape), xf1, (shape2 as b2CircleShape), xf2));
};
if ((((type1 == b2Shape.e_circleShape)) && ((type2 == b2Shape.e_polygonShape)))){
return (DistancePC(x2, x1, (shape2 as b2PolygonShape), xf2, (shape1 as b2CircleShape), xf1));
};
if ((((type1 == b2Shape.e_polygonShape)) && ((type2 == b2Shape.e_polygonShape)))){
return (DistanceGeneric(x1, x2, (shape1 as b2PolygonShape), xf1, (shape2 as b2PolygonShape), xf2));
};
return (0);
}
public static function ProcessTwo(x1:b2Vec2, x2:b2Vec2, p1s:Array, p2s:Array, points:Array):int{
var p1s_1:b2Vec2;
var p2s_0:b2Vec2;
var p2s_1:b2Vec2;
var lambda:Number;
var points_0:b2Vec2 = points[0];
var points_1:b2Vec2 = points[1];
var p1s_0:b2Vec2 = p1s[0];
p1s_1 = p1s[1];
p2s_0 = p2s[0];
p2s_1 = p2s[1];
var rX:Number = -(points_1.x);
var rY:Number = -(points_1.y);
var dX:Number = (points_0.x - points_1.x);
var dY:Number = (points_0.y - points_1.y);
var length:Number = Math.sqrt(((dX * dX) + (dY * dY)));
dX = (dX / length);
dY = (dY / length);
lambda = ((rX * dX) + (rY * dY));
if ((((lambda <= 0)) || ((length < Number.MIN_VALUE)))){
x1.SetV(p1s_1);
x2.SetV(p2s_1);
p1s_0.SetV(p1s_1);
p2s_0.SetV(p2s_1);
points_0.SetV(points_1);
return (1);
};
lambda = (lambda / length);
x1.x = (p1s_1.x + (lambda * (p1s_0.x - p1s_1.x)));
x1.y = (p1s_1.y + (lambda * (p1s_0.y - p1s_1.y)));
x2.x = (p2s_1.x + (lambda * (p2s_0.x - p2s_1.x)));
x2.y = (p2s_1.y + (lambda * (p2s_0.y - p2s_1.y)));
return (2);
}
}
}//package Box2D.Collision
Section 19
//b2Manifold (Box2D.Collision.b2Manifold)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2Manifold {
public var pointCount:int;// = 0
public var normal:b2Vec2;
public var points:Array;
public function b2Manifold(){
super();
points = new Array(b2Settings.b2_maxManifoldPoints);
var i:int;
while (i < b2Settings.b2_maxManifoldPoints) {
points[i] = new b2ManifoldPoint();
i++;
};
normal = new b2Vec2();
}
public function Set(m:b2Manifold):void{
pointCount = m.pointCount;
var i:int;
while (i < b2Settings.b2_maxManifoldPoints) {
(points[i] as b2ManifoldPoint).Set(m.points[i]);
i++;
};
normal.SetV(m.normal);
}
public function Reset():void{
var i:int;
while (i < b2Settings.b2_maxManifoldPoints) {
(points[i] as b2ManifoldPoint).Reset();
i++;
};
normal.SetZero();
pointCount = 0;
}
}
}//package Box2D.Collision
Section 20
//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(m:b2ManifoldPoint):void{
localPoint1.SetV(m.localPoint1);
localPoint2.SetV(m.localPoint2);
separation = m.separation;
normalImpulse = m.normalImpulse;
tangentImpulse = m.tangentImpulse;
id.key = m.id.key;
}
public function Reset():void{
localPoint1.SetZero();
localPoint2.SetZero();
separation = 0;
normalImpulse = 0;
tangentImpulse = 0;
id.key = 0;
}
}
}//package Box2D.Collision
Section 21
//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 22
//b2Pair (Box2D.Collision.b2Pair)
package Box2D.Collision {
import Box2D.Common.*;
public class b2Pair {
public var proxyId1:uint;
public var userData;// = null
public var proxyId2:uint;
public var status:uint;
public var next:uint;
public static var e_pairFinal:uint = 4;
public static var b2_tableMask:int = (b2_tableCapacity - 1);
public static var e_pairRemoved:uint = 2;
public static var b2_nullPair:uint = b2Settings.USHRT_MAX;
public static var e_pairBuffered:uint = 1;
public static var b2_nullProxy:uint = b2Settings.USHRT_MAX;
public static var b2_tableCapacity:int = b2Settings.b2_maxPairs;
public function b2Pair(){
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 23
//b2PairCallback (Box2D.Collision.b2PairCallback)
package Box2D.Collision {
public class b2PairCallback {
public function b2PairCallback(){
super();
}
public function PairRemoved(proxyUserData1, proxyUserData2, pairUserData):void{
}
public function PairAdded(proxyUserData1, proxyUserData2){
return (null);
}
}
}//package Box2D.Collision
Section 24
//b2PairManager (Box2D.Collision.b2PairManager)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2PairManager {
public var m_pairCount:int;
public var m_pairBuffer:Array;
public var m_hashTable:Array;
public var m_callback:b2PairCallback;
public var m_pairs:Array;
public var m_pairBufferCount:int;
public var m_broadPhase:b2BroadPhase;
public var m_freePair:uint;
public function b2PairManager(){
var i:uint;
super();
m_hashTable = new Array(b2Pair.b2_tableCapacity);
i = 0;
while (i < b2Pair.b2_tableCapacity) {
m_hashTable[i] = b2Pair.b2_nullPair;
i++;
};
m_pairs = new Array(b2Settings.b2_maxPairs);
i = 0;
while (i < b2Settings.b2_maxPairs) {
m_pairs[i] = new b2Pair();
i++;
};
m_pairBuffer = new Array(b2Settings.b2_maxPairs);
i = 0;
while (i < b2Settings.b2_maxPairs) {
m_pairBuffer[i] = new b2BufferedPair();
i++;
};
i = 0;
while (i < b2Settings.b2_maxPairs) {
m_pairs[i].proxyId1 = b2Pair.b2_nullProxy;
m_pairs[i].proxyId2 = b2Pair.b2_nullProxy;
m_pairs[i].userData = null;
m_pairs[i].status = 0;
m_pairs[i].next = (i + 1);
i++;
};
m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair;
m_pairCount = 0;
m_pairBufferCount = 0;
}
private function FindHash(proxyId1:uint, proxyId2:uint, hash:uint):b2Pair{
var pair:b2Pair;
var index:uint = m_hashTable[hash];
pair = m_pairs[index];
while (((!((index == b2Pair.b2_nullPair))) && ((Equals(pair, proxyId1, proxyId2) == false)))) {
index = pair.next;
pair = m_pairs[index];
};
if (index == b2Pair.b2_nullPair){
return (null);
};
return (pair);
}
private function Find(proxyId1:uint, proxyId2:uint):b2Pair{
var temp:uint;
if (proxyId1 > proxyId2){
temp = proxyId1;
proxyId1 = proxyId2;
proxyId2 = temp;
};
var hash:uint = (Hash(proxyId1, proxyId2) & b2Pair.b2_tableMask);
return (FindHash(proxyId1, proxyId2, hash));
}
private function ValidateBuffer():void{
}
public function Commit():void{
var bufferedPair:b2BufferedPair;
var i:int;
var pair:b2Pair;
var proxy1:b2Proxy;
var proxy2:b2Proxy;
var removeCount:int;
var proxies:Array = m_broadPhase.m_proxyPool;
i = 0;
while (i < m_pairBufferCount) {
bufferedPair = m_pairBuffer[i];
pair = Find(bufferedPair.proxyId1, bufferedPair.proxyId2);
pair.ClearBuffered();
proxy1 = proxies[pair.proxyId1];
proxy2 = proxies[pair.proxyId2];
if (pair.IsRemoved()){
if (pair.IsFinal() == true){
m_callback.PairRemoved(proxy1.userData, proxy2.userData, pair.userData);
};
bufferedPair = m_pairBuffer[removeCount];
bufferedPair.proxyId1 = pair.proxyId1;
bufferedPair.proxyId2 = pair.proxyId2;
removeCount++;
} else {
if (pair.IsFinal() == false){
pair.userData = m_callback.PairAdded(proxy1.userData, proxy2.userData);
pair.SetFinal();
};
};
i++;
};
i = 0;
while (i < removeCount) {
bufferedPair = m_pairBuffer[i];
RemovePair(bufferedPair.proxyId1, bufferedPair.proxyId2);
i++;
};
m_pairBufferCount = 0;
if (b2BroadPhase.s_validate){
ValidateTable();
};
}
public function RemoveBufferedPair(proxyId1:int, proxyId2:int):void{
var bufferedPair:b2BufferedPair;
var pair:b2Pair = Find(proxyId1, proxyId2);
if (pair == null){
return;
};
if (pair.IsBuffered() == false){
pair.SetBuffered();
bufferedPair = m_pairBuffer[m_pairBufferCount];
bufferedPair.proxyId1 = pair.proxyId1;
bufferedPair.proxyId2 = pair.proxyId2;
m_pairBufferCount++;
};
pair.SetRemoved();
if (b2BroadPhase.s_validate){
ValidateBuffer();
};
}
private function RemovePair(proxyId1:uint, proxyId2:uint){
var pair:b2Pair;
var temp:uint;
var index:uint;
var userData:*;
if (proxyId1 > proxyId2){
temp = proxyId1;
proxyId1 = proxyId2;
proxyId2 = temp;
};
var hash:uint = (Hash(proxyId1, proxyId2) & b2Pair.b2_tableMask);
var node:uint = m_hashTable[hash];
var pNode:b2Pair;
while (node != b2Pair.b2_nullPair) {
if (Equals(m_pairs[node], proxyId1, proxyId2)){
index = node;
pair = m_pairs[node];
if (pNode){
pNode.next = pair.next;
} else {
m_hashTable[hash] = pair.next;
};
pair = m_pairs[index];
userData = pair.userData;
pair.next = m_freePair;
pair.proxyId1 = b2Pair.b2_nullProxy;
pair.proxyId2 = b2Pair.b2_nullProxy;
pair.userData = null;
pair.status = 0;
m_freePair = index;
m_pairCount--;
return (userData);
} else {
pNode = m_pairs[node];
node = pNode.next;
};
};
return (null);
}
public function Initialize(broadPhase:b2BroadPhase, callback:b2PairCallback):void{
m_broadPhase = broadPhase;
m_callback = callback;
}
public function AddBufferedPair(proxyId1:int, proxyId2:int):void{
var bufferedPair:b2BufferedPair;
var pair:b2Pair = AddPair(proxyId1, proxyId2);
if (pair.IsBuffered() == false){
pair.SetBuffered();
bufferedPair = m_pairBuffer[m_pairBufferCount];
bufferedPair.proxyId1 = pair.proxyId1;
bufferedPair.proxyId2 = pair.proxyId2;
m_pairBufferCount++;
};
pair.ClearRemoved();
if (b2BroadPhase.s_validate){
ValidateBuffer();
};
}
private function AddPair(proxyId1:uint, proxyId2:uint):b2Pair{
var temp:uint;
if (proxyId1 > proxyId2){
temp = proxyId1;
proxyId1 = proxyId2;
proxyId2 = temp;
};
var hash:uint = (Hash(proxyId1, proxyId2) & b2Pair.b2_tableMask);
var pair = FindHash(proxyId1, proxyId2, hash);
if (pair != null){
return (pair);
};
var pIndex:uint = m_freePair;
pair = m_pairs[pIndex];
m_freePair = pair.next;
pair.proxyId1 = proxyId1;
pair.proxyId2 = proxyId2;
pair.status = 0;
pair.userData = null;
pair.next = m_hashTable[hash];
m_hashTable[hash] = pIndex;
m_pairCount++;
return (pair);
}
private function ValidateTable():void{
}
public static function EqualsPair(pair1:b2BufferedPair, pair2:b2BufferedPair):Boolean{
return ((((pair1.proxyId1 == pair2.proxyId1)) && ((pair1.proxyId2 == pair2.proxyId2))));
}
public static function Hash(proxyId1:uint, proxyId2:uint):uint{
var key:uint = (((proxyId2 << 16) & 4294901760) | proxyId1);
key = (~(key) + ((key << 15) & 4294934528));
key = (key ^ ((key >> 12) & 1048575));
key = (key + ((key << 2) & 4294967292));
key = (key ^ ((key >> 4) & 268435455));
key = (key * 2057);
key = (key ^ ((key >> 16) & 0xFFFF));
return (key);
}
public static function Equals(pair:b2Pair, proxyId1:uint, proxyId2:uint):Boolean{
return ((((pair.proxyId1 == proxyId1)) && ((pair.proxyId2 == proxyId2))));
}
}
}//package Box2D.Collision
Section 25
//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(xf:b2XForm):b2Vec2{
return (p);
}
public function Support(xf:b2XForm, vX:Number, vY:Number):b2Vec2{
return (p);
}
}
}//package Box2D.Collision
Section 26
//b2Proxy (Box2D.Collision.b2Proxy)
package Box2D.Collision {
public class b2Proxy {
public var overlapCount:uint;
public var userData;// = null
public var lowerBounds:Array;
public var upperBounds:Array;
public var timeStamp:uint;
public function b2Proxy(){
lowerBounds = [uint(0), uint(0)];
upperBounds = [uint(0), uint(0)];
super();
}
public function GetNext():uint{
return (lowerBounds[0]);
}
public function IsValid():Boolean{
return (!((overlapCount == b2BroadPhase.b2_invalid)));
}
public function SetNext(next:uint):void{
lowerBounds[0] = (next & 0xFFFF);
}
}
}//package Box2D.Collision
Section 27
//b2Segment (Box2D.Collision.b2Segment)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2Segment {
public var p1:b2Vec2;
public var p2:b2Vec2;
public function b2Segment(){
p1 = new b2Vec2();
p2 = new b2Vec2();
super();
}
public function TestSegment(lambda:Array, normal:b2Vec2, segment:b2Segment, maxLambda:Number):Boolean{
var bX:Number;
var bY:Number;
var a:Number;
var mu2:Number;
var nLen:Number;
var s:b2Vec2 = segment.p1;
var rX:Number = (segment.p2.x - s.x);
var rY:Number = (segment.p2.y - s.y);
var dX:Number = (p2.x - p1.x);
var dY:Number = (p2.y - p1.y);
var nX:Number = dY;
var nY:Number = -(dX);
var k_slop:Number = (100 * Number.MIN_VALUE);
var denom:Number = -(((rX * nX) + (rY * nY)));
if (denom > k_slop){
bX = (s.x - p1.x);
bY = (s.y - p1.y);
a = ((bX * nX) + (bY * nY));
if ((((0 <= a)) && ((a <= (maxLambda * denom))))){
mu2 = ((-(rX) * bY) + (rY * bX));
if (((((-(k_slop) * denom) <= mu2)) && ((mu2 <= (denom * (1 + k_slop)))))){
a = (a / denom);
nLen = Math.sqrt(((nX * nX) + (nY * nY)));
nX = (nX / nLen);
nY = (nY / nLen);
lambda[0] = a;
normal.Set(nX, nY);
return (true);
};
};
};
return (false);
}
}
}//package Box2D.Collision
Section 28
//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 function b2TimeOfImpact(){
super();
}
public static function TimeOfImpact(shape1:b2Shape, sweep1:b2Sweep, shape2:b2Shape, sweep2:b2Sweep):Number{
var math1:Number;
var math2:Number;
var t:Number;
var xf1:b2XForm;
var xf2:b2XForm;
var nLen:Number;
var approachVelocityBound:Number;
var dAlpha:Number;
var newAlpha:Number;
var r1:Number = shape1.m_sweepRadius;
var r2:Number = shape2.m_sweepRadius;
var t0:Number = sweep1.t0;
var v1X:Number = (sweep1.c.x - sweep1.c0.x);
var v1Y:Number = (sweep1.c.y - sweep1.c0.y);
var v2X:Number = (sweep2.c.x - sweep2.c0.x);
var v2Y:Number = (sweep2.c.y - sweep2.c0.y);
var omega1:Number = (sweep1.a - sweep1.a0);
var omega2:Number = (sweep2.a - sweep2.a0);
var alpha:Number = 0;
var p1:b2Vec2 = s_p1;
var p2:b2Vec2 = s_p2;
var k_maxIterations = 20;
var iter:int;
var normalX:Number = 0;
var normalY:Number = 0;
var distance:Number = 0;
var targetDistance:Number = 0;
while (true) {
t = (((1 - alpha) * t0) + alpha);
xf1 = s_xf1;
xf2 = s_xf2;
sweep1.GetXForm(xf1, t);
sweep2.GetXForm(xf2, t);
distance = b2Distance.Distance(p1, p2, shape1, xf1, shape2, xf2);
if (iter == 0){
if (distance > (2 * b2Settings.b2_toiSlop)){
targetDistance = (1.5 * b2Settings.b2_toiSlop);
} else {
math1 = (0.05 * b2Settings.b2_toiSlop);
math2 = (distance - (0.5 * b2Settings.b2_toiSlop));
targetDistance = ((math1 > math2)) ? math1 : math2;
};
};
if (((((distance - targetDistance) < (0.05 * b2Settings.b2_toiSlop))) || ((iter == k_maxIterations)))){
break;
};
normalX = (p2.x - p1.x);
normalY = (p2.y - p1.y);
nLen = Math.sqrt(((normalX * normalX) + (normalY * normalY)));
normalX = (normalX / nLen);
normalY = (normalY / nLen);
approachVelocityBound = ((((normalX * (v1X - v2X)) + (normalY * (v1Y - v2Y))) + (((omega1 < 0)) ? -(omega1) : omega1 * r1)) + (((omega2 < 0)) ? -(omega2) : omega2 * r2));
if (approachVelocityBound == 0){
alpha = 1;
break;
};
dAlpha = ((distance - targetDistance) / approachVelocityBound);
newAlpha = (alpha + dAlpha);
if ((((newAlpha < 0)) || ((1 < newAlpha)))){
alpha = 1;
break;
};
if (newAlpha < ((1 + (100 * Number.MIN_VALUE)) * alpha)){
break;
};
alpha = newAlpha;
iter++;
};
return (alpha);
}
}
}//package Box2D.Collision
Section 29
//ClipVertex (Box2D.Collision.ClipVertex)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class ClipVertex {
public var id:b2ContactID;
public var v:b2Vec2;
public function ClipVertex(){
v = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Collision
Section 30
//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 Features(){
super();
}
public function get referenceEdge():int{
return (_referenceEdge);
}
public function set incidentVertex(value:int):void{
_incidentVertex = value;
_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(value:int):void{
_referenceEdge = value;
_m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF));
}
public function get incidentVertex():int{
return (_incidentVertex);
}
public function set flip(value:int):void{
_flip = value;
_m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080));
}
public function set incidentEdge(value:int):void{
_incidentEdge = value;
_m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00));
}
}
}//package Box2D.Collision
Section 31
//b2Mat22 (Box2D.Common.Math.b2Mat22)
package Box2D.Common.Math {
public class b2Mat22 {
public var col1:b2Vec2;
public var col2:b2Vec2;
public function b2Mat22(angle:Number=0, c1:b2Vec2=null, c2:b2Vec2=null){
var c:Number;
var s:Number;
col1 = new b2Vec2();
col2 = new b2Vec2();
super();
if (((!((c1 == null))) && (!((c2 == null))))){
col1.SetV(c1);
col2.SetV(c2);
} else {
c = Math.cos(angle);
s = Math.sin(angle);
col1.x = c;
col2.x = -(s);
col1.y = s;
col2.y = c;
};
}
public function SetIdentity():void{
col1.x = 1;
col2.x = 0;
col1.y = 0;
col2.y = 1;
}
public function SetVV(c1:b2Vec2, c2:b2Vec2):void{
col1.SetV(c1);
col2.SetV(c2);
}
public function Set(angle:Number):void{
var c:Number;
c = Math.cos(angle);
var s:Number = Math.sin(angle);
col1.x = c;
col2.x = -(s);
col1.y = s;
col2.y = c;
}
public function SetZero():void{
col1.x = 0;
col2.x = 0;
col1.y = 0;
col2.y = 0;
}
public function SetM(m:b2Mat22):void{
col1.SetV(m.col1);
col2.SetV(m.col2);
}
public function AddM(m:b2Mat22):void{
col1.x = (col1.x + m.col1.x);
col1.y = (col1.y + m.col1.y);
col2.x = (col2.x + m.col2.x);
col2.y = (col2.y + m.col2.y);
}
public function Abs():void{
col1.Abs();
col2.Abs();
}
public function Copy():b2Mat22{
return (new b2Mat22(0, col1, col2));
}
public function Invert(out:b2Mat22):b2Mat22{
var a:Number;
var c:Number;
var det:Number;
a = col1.x;
var b:Number = col2.x;
c = col1.y;
var d:Number = col2.y;
det = ((a * d) - (b * c));
det = (1 / det);
out.col1.x = (det * d);
out.col2.x = (-(det) * b);
out.col1.y = (-(det) * c);
out.col2.y = (det * a);
return (out);
}
public function GetAngle():Number{
return (Math.atan2(col1.y, col1.x));
}
public function Solve(out:b2Vec2, bX:Number, bY:Number):b2Vec2{
var a11:Number = col1.x;
var a12:Number = col2.x;
var a21:Number = col1.y;
var a22:Number = col2.y;
var det:Number = ((a11 * a22) - (a12 * a21));
det = (1 / det);
out.x = (det * ((a22 * bX) - (a12 * bY)));
out.y = (det * ((a11 * bY) - (a21 * bX)));
return (out);
}
}
}//package Box2D.Common.Math
Section 32
//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 function b2Math(){
super();
}
public static function b2CrossVF(a:b2Vec2, s:Number):b2Vec2{
var v:b2Vec2 = new b2Vec2((s * a.y), (-(s) * a.x));
return (v);
}
public static function AddVV(a:b2Vec2, b:b2Vec2):b2Vec2{
var v:b2Vec2 = new b2Vec2((a.x + b.x), (a.y + b.y));
return (v);
}
public static function b2IsValid(x:Number):Boolean{
return (isFinite(x));
}
public static function b2MinV(a:b2Vec2, b:b2Vec2):b2Vec2{
var c:b2Vec2 = new b2Vec2(b2Min(a.x, b.x), b2Min(a.y, b.y));
return (c);
}
public static function b2MulX(T:b2XForm, v:b2Vec2):b2Vec2{
var a:b2Vec2;
a = b2MulMV(T.R, v);
a.x = (a.x + T.position.x);
a.y = (a.y + T.position.y);
return (a);
}
public static function b2DistanceSquared(a:b2Vec2, b:b2Vec2):Number{
var cX:Number = (a.x - b.x);
var cY:Number = (a.y - b.y);
return (((cX * cX) + (cY * cY)));
}
public static function b2Swap(a:Array, b:Array):void{
var tmp:* = a[0];
a[0] = b[0];
b[0] = tmp;
}
public static function b2AbsM(A:b2Mat22):b2Mat22{
var B:b2Mat22 = new b2Mat22(0, b2AbsV(A.col1), b2AbsV(A.col2));
return (B);
}
public static function SubtractVV(a:b2Vec2, b:b2Vec2):b2Vec2{
var v:b2Vec2 = new b2Vec2((a.x - b.x), (a.y - b.y));
return (v);
}
public static function b2MulXT(T:b2XForm, v:b2Vec2):b2Vec2{
var a:b2Vec2;
var tX:Number;
a = SubtractVV(v, T.position);
tX = ((a.x * T.R.col1.x) + (a.y * T.R.col1.y));
a.y = ((a.x * T.R.col2.x) + (a.y * T.R.col2.y));
a.x = tX;
return (a);
}
public static function b2Abs(a:Number):Number{
return (((a > 0)) ? a : -(a));
}
public static function b2Clamp(a:Number, low:Number, high:Number):Number{
return (b2Max(low, b2Min(a, high)));
}
public static function b2AbsV(a:b2Vec2):b2Vec2{
var b:b2Vec2 = new b2Vec2(b2Abs(a.x), b2Abs(a.y));
return (b);
}
public static function MulFV(s:Number, a:b2Vec2):b2Vec2{
var v:b2Vec2 = new b2Vec2((s * a.x), (s * a.y));
return (v);
}
public static function b2CrossVV(a:b2Vec2, b:b2Vec2):Number{
return (((a.x * b.y) - (a.y * b.x)));
}
public static function b2Dot(a:b2Vec2, b:b2Vec2):Number{
return (((a.x * b.x) + (a.y * b.y)));
}
public static function b2CrossFV(s:Number, a:b2Vec2):b2Vec2{
var v:b2Vec2 = new b2Vec2((-(s) * a.y), (s * a.x));
return (v);
}
public static function AddMM(A:b2Mat22, B:b2Mat22):b2Mat22{
var C:b2Mat22 = new b2Mat22(0, AddVV(A.col1, B.col1), AddVV(A.col2, B.col2));
return (C);
}
public static function b2Distance(a:b2Vec2, b:b2Vec2):Number{
var cX:Number = (a.x - b.x);
var cY:Number = (a.y - b.y);
return (Math.sqrt(((cX * cX) + (cY * cY))));
}
public static function b2MulTMM(A:b2Mat22, B:b2Mat22):b2Mat22{
var c1:b2Vec2 = new b2Vec2(b2Dot(A.col1, B.col1), b2Dot(A.col2, B.col1));
var c2:b2Vec2 = new b2Vec2(b2Dot(A.col1, B.col2), b2Dot(A.col2, B.col2));
var C:b2Mat22 = new b2Mat22(0, c1, c2);
return (C);
}
public static function b2MaxV(a:b2Vec2, b:b2Vec2):b2Vec2{
var c:b2Vec2 = new b2Vec2(b2Max(a.x, b.x), b2Max(a.y, b.y));
return (c);
}
public static function b2IsPowerOfTwo(x:uint):Boolean{
var result:Boolean = (((x > 0)) && (((x & (x - 1)) == 0)));
return (result);
}
public static function b2ClampV(a:b2Vec2, low:b2Vec2, high:b2Vec2):b2Vec2{
return (b2MaxV(low, b2MinV(a, high)));
}
public static function b2RandomRange(lo:Number, hi:Number):Number{
var r:Number = Math.random();
r = (((hi - lo) * r) + lo);
return (r);
}
public static function b2MulTMV(A:b2Mat22, v:b2Vec2):b2Vec2{
var u:b2Vec2 = new b2Vec2(b2Dot(v, A.col1), b2Dot(v, A.col2));
return (u);
}
public static function b2Min(a:Number, b:Number):Number{
return (((a < b)) ? a : b);
}
public static function b2Random():Number{
return (((Math.random() * 2) - 1));
}
public static function b2MulMM(A:b2Mat22, B:b2Mat22):b2Mat22{
var C:b2Mat22 = new b2Mat22(0, b2MulMV(A, B.col1), b2MulMV(A, B.col2));
return (C);
}
public static function b2NextPowerOfTwo(x:uint):uint{
x = (x | ((x >> 1) & 2147483647));
x = (x | ((x >> 2) & 1073741823));
x = (x | ((x >> 4) & 268435455));
x = (x | ((x >> 8) & 0xFFFFFF));
x = (x | ((x >> 16) & 0xFFFF));
return ((x + 1));
}
public static function b2Max(a:Number, b:Number):Number{
return (((a > b)) ? a : b);
}
public static function b2MulMV(A:b2Mat22, v:b2Vec2):b2Vec2{
var u:b2Vec2 = new b2Vec2(((A.col1.x * v.x) + (A.col2.x * v.y)), ((A.col1.y * v.x) + (A.col2.y * v.y)));
return (u);
}
}
}//package Box2D.Common.Math
Section 33
//b2Sweep (Box2D.Common.Math.b2Sweep)
package Box2D.Common.Math {
public class b2Sweep {
public var localCenter:b2Vec2;
public var a:Number;
public var c:b2Vec2;
public var a0:Number;
public var c0:b2Vec2;
public var t0:Number;
public function b2Sweep(){
localCenter = new b2Vec2();
c0 = new b2Vec2();
c = new b2Vec2();
super();
}
public function Advance(t:Number):void{
var alpha:Number;
if ((((t0 < t)) && (((1 - t0) > Number.MIN_VALUE)))){
alpha = ((t - t0) / (1 - t0));
c0.x = (((1 - alpha) * c0.x) + (alpha * c.x));
c0.y = (((1 - alpha) * c0.y) + (alpha * c.y));
a0 = (((1 - alpha) * a0) + (alpha * a));
t0 = t;
};
}
public function GetXForm(xf:b2XForm, t:Number):void{
var alpha:Number;
var angle:Number;
if ((1 - t0) > Number.MIN_VALUE){
alpha = ((t - t0) / (1 - t0));
xf.position.x = (((1 - alpha) * c0.x) + (alpha * c.x));
xf.position.y = (((1 - alpha) * c0.y) + (alpha * c.y));
angle = (((1 - alpha) * a0) + (alpha * a));
xf.R.Set(angle);
} else {
xf.position.SetV(c);
xf.R.Set(a);
};
var tMat:b2Mat22 = xf.R;
xf.position.x = (xf.position.x - ((tMat.col1.x * localCenter.x) + (tMat.col2.x * localCenter.y)));
xf.position.y = (xf.position.y - ((tMat.col1.y * localCenter.x) + (tMat.col2.y * localCenter.y)));
}
}
}//package Box2D.Common.Math
Section 34
//b2Vec2 (Box2D.Common.Math.b2Vec2)
package Box2D.Common.Math {
public class b2Vec2 {
public var y:Number;
public var x:Number;
public function b2Vec2(x_:Number=0, y_:Number=0):void{
super();
x = x_;
y = y_;
}
public function Add(v:b2Vec2):void{
x = (x + v.x);
y = (y + v.y);
}
public function Set(x_:Number=0, y_:Number=0):void{
x = x_;
y = y_;
}
public function Multiply(a:Number):void{
x = (x * a);
y = (y * a);
}
public function Length():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function LengthSquared():Number{
return (((x * x) + (y * y)));
}
public function MulM(A:b2Mat22):void{
var tX:Number = x;
x = ((A.col1.x * tX) + (A.col2.x * y));
y = ((A.col1.y * tX) + (A.col2.y * y));
}
public function SetZero():void{
x = 0;
y = 0;
}
public function MinV(b:b2Vec2):void{
x = ((x < b.x)) ? x : b.x;
y = ((y < b.y)) ? y : b.y;
}
public function Normalize():Number{
var length:Number = Math.sqrt(((x * x) + (y * y)));
if (length < Number.MIN_VALUE){
return (0);
};
var invLength:Number = (1 / length);
x = (x * invLength);
y = (y * invLength);
return (length);
}
public function CrossVF(s:Number):void{
var tX:Number = x;
x = (s * y);
y = (-(s) * tX);
}
public function MaxV(b:b2Vec2):void{
x = ((x > b.x)) ? x : b.x;
y = ((y > b.y)) ? y : b.y;
}
public function SetV(v:b2Vec2):void{
x = v.x;
y = v.y;
}
public function Negative():b2Vec2{
return (new b2Vec2(-(x), -(y)));
}
public function CrossFV(s:Number):void{
var tX:Number = x;
x = (-(s) * y);
y = (s * tX);
}
public function Abs():void{
if (x < 0){
x = -(x);
};
if (y < 0){
y = -(y);
};
}
public function Subtract(v:b2Vec2):void{
x = (x - v.x);
y = (y - v.y);
}
public function Copy():b2Vec2{
return (new b2Vec2(x, y));
}
public function MulTM(A:b2Mat22):void{
var tX:Number = b2Math.b2Dot(this, A.col1);
y = b2Math.b2Dot(this, A.col2);
x = tX;
}
public function IsValid():Boolean{
return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y))));
}
public static function Make(x_:Number, y_:Number):b2Vec2{
return (new b2Vec2(x_, y_));
}
}
}//package Box2D.Common.Math
Section 35
//b2XForm (Box2D.Common.Math.b2XForm)
package Box2D.Common.Math {
public class b2XForm {
public var position:b2Vec2;
public var R:b2Mat22;
public function b2XForm(pos:b2Vec2=null, r:b2Mat22=null):void{
position = new b2Vec2();
R = new b2Mat22();
super();
if (pos){
position.SetV(pos);
R.SetM(r);
};
}
public function Initialize(pos:b2Vec2, r:b2Mat22):void{
position.SetV(pos);
R.SetM(r);
}
public function Set(x:b2XForm):void{
position.SetV(x.position);
R.SetM(x.R);
}
public function SetIdentity():void{
position.SetZero();
R.SetIdentity();
}
}
}//package Box2D.Common.Math
Section 36
//b2Color (Box2D.Common.b2Color)
package Box2D.Common {
import Box2D.Common.Math.*;
public class b2Color {
private var _r:uint;// = 0
private var _g:uint;// = 0
private var _b:uint;// = 0
public function b2Color(rr:Number, gg:Number, bb:Number){
super();
_r = uint((0xFF * b2Math.b2Clamp(rr, 0, 1)));
_g = uint((0xFF * b2Math.b2Clamp(gg, 0, 1)));
_b = uint((0xFF * b2Math.b2Clamp(bb, 0, 1)));
}
public function Set(rr:Number, gg:Number, bb:Number):void{
_r = uint((0xFF * b2Math.b2Clamp(rr, 0, 1)));
_g = uint((0xFF * b2Math.b2Clamp(gg, 0, 1)));
_b = uint((0xFF * b2Math.b2Clamp(bb, 0, 1)));
}
public function set b(bb:Number):void{
_b = uint((0xFF * b2Math.b2Clamp(bb, 0, 1)));
}
public function get color():uint{
return (((_r | (_g << 8)) | (_b << 16)));
}
public function set r(rr:Number):void{
_r = uint((0xFF * b2Math.b2Clamp(rr, 0, 1)));
}
public function set g(gg:Number):void{
_g = uint((0xFF * b2Math.b2Clamp(gg, 0, 1)));
}
}
}//package Box2D.Common
Section 37
//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 function b2Settings(){
super();
}
public static function b2Assert(a:Boolean):void{
var nullVec:b2Vec2;
if (!a){
nullVec.x++;
};
}
}
}//package Box2D.Common
Section 38
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2CircleContact extends b2Contact {
private var m_manifolds:Array;
public var m_manifold:b2Manifold;
private var m0:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2CircleContact(shape1:b2Shape, shape2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(shape1, shape2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
var point:b2ManifoldPoint = m_manifold.points[0];
point.normalImpulse = 0;
point.tangentImpulse = 0;
}
override public function Evaluate(listener:b2ContactListener):void{
var v1:b2Vec2;
var v2:b2Vec2;
var mp0:b2ManifoldPoint;
var mp:b2ManifoldPoint;
var b1:b2Body = m_shape1.m_body;
var b2:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), b1.m_xf, (m_shape2 as b2CircleShape), b2.m_xf);
var cp:b2ContactPoint = s_evalCP;
cp.shape1 = m_shape1;
cp.shape2 = m_shape2;
cp.friction = m_friction;
cp.restitution = m_restitution;
if (m_manifold.pointCount > 0){
m_manifoldCount = 1;
mp = m_manifold.points[0];
if (m0.pointCount == 0){
mp.normalImpulse = 0;
mp.tangentImpulse = 0;
if (listener){
cp.position = b1.GetWorldPoint(mp.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m_manifold.normal);
cp.separation = mp.separation;
cp.id.key = mp.id._key;
listener.Add(cp);
};
} else {
mp0 = m0.points[0];
mp.normalImpulse = mp0.normalImpulse;
mp.tangentImpulse = mp0.tangentImpulse;
if (listener){
cp.position = b1.GetWorldPoint(mp.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m_manifold.normal);
cp.separation = mp.separation;
cp.id.key = mp.id._key;
listener.Persist(cp);
};
};
} else {
m_manifoldCount = 0;
if ((((m0.pointCount > 0)) && (listener))){
mp0 = m0.points[0];
cp.position = b1.GetWorldPoint(mp0.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp0.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp0.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m0.normal);
cp.separation = mp0.separation;
cp.id.key = mp0.id._key;
listener.Remove(cp);
};
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(contact:b2Contact, allocator):void{
}
public static function Create(shape1:b2Shape, shape2:b2Shape, allocator):b2Contact{
return (new b2CircleContact(shape1, shape2));
}
}
}//package Box2D.Dynamics.Contacts
Section 39
//b2Contact (Box2D.Dynamics.Contacts.b2Contact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Contact {
public var m_shape1:b2Shape;
public var m_shape2:b2Shape;
public var m_prev:b2Contact;
public var m_toi:Number;
public var m_next:b2Contact;
public var m_friction:Number;
public var m_manifoldCount:int;
public var m_node1:b2ContactEdge;
public var m_node2:b2ContactEdge;
public var m_restitution:Number;
public var m_flags:uint;
public static var e_toiFlag:uint = 8;
public static var e_nonSolidFlag:uint = 1;
public static var e_slowFlag:uint = 2;
public static var e_islandFlag:uint = 4;
public static var s_registers:Array;
public static var s_initialized:Boolean = false;
public function b2Contact(s1:b2Shape=null, s2:b2Shape=null){
m_node1 = new b2ContactEdge();
m_node2 = new b2ContactEdge();
super();
m_flags = 0;
if (((!(s1)) || (!(s2)))){
m_shape1 = null;
m_shape2 = null;
return;
};
if (((s1.IsSensor()) || (s2.IsSensor()))){
m_flags = (m_flags | e_nonSolidFlag);
};
m_shape1 = s1;
m_shape2 = s2;
m_manifoldCount = 0;
m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction));
m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution);
m_prev = null;
m_next = null;
m_node1.contact = null;
m_node1.prev = null;
m_node1.next = null;
m_node1.other = null;
m_node2.contact = null;
m_node2.prev = null;
m_node2.next = null;
m_node2.other = null;
}
public function IsSolid():Boolean{
return (((m_flags & e_nonSolidFlag) == 0));
}
public function GetShape1():b2Shape{
return (m_shape1);
}
public function GetShape2():b2Shape{
return (m_shape2);
}
public function GetNext():b2Contact{
return (m_next);
}
public function GetManifoldCount():int{
return (m_manifoldCount);
}
public function GetManifolds():Array{
return (null);
}
public function Update(listener:b2ContactListener):void{
var oldCount:int = m_manifoldCount;
Evaluate(listener);
var newCount:int = m_manifoldCount;
var body1:b2Body = m_shape1.m_body;
var body2:b2Body = m_shape2.m_body;
if ((((newCount == 0)) && ((oldCount > 0)))){
body1.WakeUp();
body2.WakeUp();
};
if (((((((body1.IsStatic()) || (body1.IsBullet()))) || (body2.IsStatic()))) || (body2.IsBullet()))){
m_flags = (m_flags & ~(e_slowFlag));
} else {
m_flags = (m_flags | e_slowFlag);
};
}
public function Evaluate(listener:b2ContactListener):void{
}
public static function InitializeRegisters():void{
var j:int;
s_registers = new Array(b2Shape.e_shapeTypeCount);
var i:int;
while (i < b2Shape.e_shapeTypeCount) {
s_registers[i] = new Array(b2Shape.e_shapeTypeCount);
j = 0;
while (j < b2Shape.e_shapeTypeCount) {
s_registers[i][j] = new b2ContactRegister();
j++;
};
i++;
};
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(contact:b2Contact, allocator):void{
if (contact.m_manifoldCount > 0){
contact.m_shape1.m_body.WakeUp();
contact.m_shape2.m_body.WakeUp();
};
var type1:int = contact.m_shape1.m_type;
var type2:int = contact.m_shape2.m_type;
var reg:b2ContactRegister = s_registers[type1][type2];
var destroyFcn:Function = reg.destroyFcn;
destroyFcn(contact, allocator);
}
public static function AddType(createFcn:Function, destroyFcn:Function, type1:int, type2:int):void{
s_registers[type1][type2].createFcn = createFcn;
s_registers[type1][type2].destroyFcn = destroyFcn;
s_registers[type1][type2].primary = true;
if (type1 != type2){
s_registers[type2][type1].createFcn = createFcn;
s_registers[type2][type1].destroyFcn = destroyFcn;
s_registers[type2][type1].primary = false;
};
}
public static function Create(shape1:b2Shape, shape2:b2Shape, allocator):b2Contact{
var c:b2Contact;
var i:int;
var m:b2Manifold;
if (s_initialized == false){
InitializeRegisters();
s_initialized = true;
};
var type1:int = shape1.m_type;
var type2:int = shape2.m_type;
var reg:b2ContactRegister = s_registers[type1][type2];
var createFcn:Function = reg.createFcn;
if (createFcn != null){
if (reg.primary){
return (createFcn(shape1, shape2, allocator));
};
c = createFcn(shape2, shape1, allocator);
i = 0;
while (i < c.m_manifoldCount) {
m = c.GetManifolds()[i];
m.normal = m.normal.Negative();
i++;
};
return (c);
//unresolved jump
};
return (null);
}
}
}//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2ContactConstraint {
public var points:Array;
public var normal:b2Vec2;
public var restitution:Number;
public var body1:b2Body;
public var manifold:b2Manifold;
public var body2:b2Body;
public var friction:Number;
public var pointCount:int;
public function b2ContactConstraint(){
normal = new b2Vec2();
super();
points = new Array(b2Settings.b2_maxManifoldPoints);
var i:int;
while (i < b2Settings.b2_maxManifoldPoints) {
points[i] = new b2ContactConstraintPoint();
i++;
};
}
}
}//package Box2D.Dynamics.Contacts
Section 41
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
public class b2ContactConstraintPoint {
public var r2:b2Vec2;
public var separation:Number;
public var positionImpulse:Number;
public var normalImpulse:Number;
public var tangentMass:Number;
public var equalizedMass:Number;
public var tangentImpulse:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var normalMass:Number;
public var velocityBias:Number;
public var r1:b2Vec2;
public function b2ContactConstraintPoint(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
r1 = new b2Vec2();
r2 = new b2Vec2();
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 42
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge)
package Box2D.Dynamics.Contacts {
import Box2D.Dynamics.*;
public class b2ContactEdge {
public var other:b2Body;
public var prev:b2ContactEdge;
public var contact:b2Contact;
public var next:b2ContactEdge;
public function b2ContactEdge(){
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 43
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister)
package Box2D.Dynamics.Contacts {
public class b2ContactRegister {
public var primary:Boolean;
public var createFcn:Function;
public var destroyFcn:Function;
public function b2ContactRegister(){
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 44
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2ContactResult {
public var position:b2Vec2;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var normalImpulse:Number;
public var normal:b2Vec2;
public var tangentImpulse:Number;
public var id:b2ContactID;
public function b2ContactResult(){
position = new b2Vec2();
normal = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 45
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2ContactSolver {
public var m_constraintCount:int;
public var m_constraints:Array;
public var m_allocator;
public var m_step:b2TimeStep;
public function b2ContactSolver(step:b2TimeStep, contacts:Array, contactCount:int, allocator){
var contact:b2Contact;
var i:int;
var tVec:b2Vec2;
var tMat:b2Mat22;
var b1:b2Body;
var b2:b2Body;
var manifoldCount:int;
var manifolds:Array;
var friction:Number;
var restitution:Number;
var v1X:Number;
var v1Y:Number;
var v2X:Number;
var v2Y:Number;
var w1:Number;
var w2:Number;
var j:int;
var manifold:b2Manifold;
var normalX:Number;
var normalY:Number;
var c:b2ContactConstraint;
var k:uint;
var cp:b2ManifoldPoint;
var ccp:b2ContactConstraintPoint;
var tX:Number;
var tY:Number;
var r1X:Number;
var r1Y:Number;
var r2X:Number;
var r2Y:Number;
var r1Sqr:Number;
var r2Sqr:Number;
var rn1:Number;
var rn2:Number;
var kNormal:Number;
var kEqualized:Number;
var tangentX:Number;
var tangentY:Number;
var rt1:Number;
var rt2:Number;
var kTangent:Number;
var vRel:Number;
m_step = new b2TimeStep();
m_constraints = new Array();
super();
m_step.dt = step.dt;
m_step.inv_dt = step.inv_dt;
m_step.maxIterations = step.maxIterations;
m_allocator = allocator;
m_constraintCount = 0;
i = 0;
while (i < contactCount) {
contact = contacts[i];
m_constraintCount = (m_constraintCount + contact.m_manifoldCount);
i++;
};
i = 0;
while (i < m_constraintCount) {
m_constraints[i] = new b2ContactConstraint();
i++;
};
var count:int;
i = 0;
while (i < contactCount) {
contact = contacts[i];
b1 = contact.m_shape1.m_body;
b2 = contact.m_shape2.m_body;
manifoldCount = contact.m_manifoldCount;
manifolds = contact.GetManifolds();
friction = contact.m_friction;
restitution = contact.m_restitution;
v1X = b1.m_linearVelocity.x;
v1Y = b1.m_linearVelocity.y;
v2X = b2.m_linearVelocity.x;
v2Y = b2.m_linearVelocity.y;
w1 = b1.m_angularVelocity;
w2 = b2.m_angularVelocity;
j = 0;
while (j < manifoldCount) {
manifold = manifolds[j];
normalX = manifold.normal.x;
normalY = manifold.normal.y;
c = m_constraints[count];
c.body1 = b1;
c.body2 = b2;
c.manifold = manifold;
c.normal.x = normalX;
c.normal.y = normalY;
c.pointCount = manifold.pointCount;
c.friction = friction;
c.restitution = restitution;
k = 0;
while (k < c.pointCount) {
cp = manifold.points[k];
ccp = c.points[k];
ccp.normalImpulse = cp.normalImpulse;
ccp.tangentImpulse = cp.tangentImpulse;
ccp.separation = cp.separation;
ccp.positionImpulse = 0;
ccp.localAnchor1.SetV(cp.localPoint1);
ccp.localAnchor2.SetV(cp.localPoint2);
tMat = b1.m_xf.R;
r1X = (cp.localPoint1.x - b1.m_sweep.localCenter.x);
r1Y = (cp.localPoint1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
ccp.r1.Set(r1X, r1Y);
tMat = b2.m_xf.R;
r2X = (cp.localPoint2.x - b2.m_sweep.localCenter.x);
r2Y = (cp.localPoint2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
ccp.r2.Set(r2X, r2Y);
r1Sqr = ((r1X * r1X) + (r1Y * r1Y));
r2Sqr = ((r2X * r2X) + (r2Y * r2Y));
rn1 = ((r1X * normalX) + (r1Y * normalY));
rn2 = ((r2X * normalX) + (r2Y * normalY));
kNormal = (b1.m_invMass + b2.m_invMass);
kNormal = (kNormal + ((b1.m_invI * (r1Sqr - (rn1 * rn1))) + (b2.m_invI * (r2Sqr - (rn2 * rn2)))));
ccp.normalMass = (1 / kNormal);
kEqualized = ((b1.m_mass * b1.m_invMass) + (b2.m_mass * b2.m_invMass));
kEqualized = (kEqualized + (((b1.m_mass * b1.m_invI) * (r1Sqr - (rn1 * rn1))) + ((b2.m_mass * b2.m_invI) * (r2Sqr - (rn2 * rn2)))));
ccp.equalizedMass = (1 / kEqualized);
tangentX = normalY;
tangentY = -(normalX);
rt1 = ((r1X * tangentX) + (r1Y * tangentY));
rt2 = ((r2X * tangentX) + (r2Y * tangentY));
kTangent = (b1.m_invMass + b2.m_invMass);
kTangent = (kTangent + ((b1.m_invI * (r1Sqr - (rt1 * rt1))) + (b2.m_invI * (r2Sqr - (rt2 * rt2)))));
ccp.tangentMass = (1 / kTangent);
ccp.velocityBias = 0;
if (ccp.separation > 0){
ccp.velocityBias = (-60 * ccp.separation);
};
tX = (((v2X + (-(w2) * r2Y)) - v1X) - (-(w1) * r1Y));
tY = (((v2Y + (w2 * r2X)) - v1Y) - (w1 * r1X));
vRel = ((c.normal.x * tX) + (c.normal.y * tY));
if (vRel < -(b2Settings.b2_velocityThreshold)){
ccp.velocityBias = (ccp.velocityBias + (-(c.restitution) * vRel));
};
k++;
};
count++;
j++;
};
i++;
};
}
public function InitVelocityConstraints(step:b2TimeStep):void{
var tVec:b2Vec2;
var tVec2:b2Vec2;
var tMat:b2Mat22;
var c:b2ContactConstraint;
var b1:b2Body;
var b2:b2Body;
var invMass1:Number;
var invI1:Number;
var invMass2:Number;
var invI2:Number;
var normalX:Number;
var normalY:Number;
var tangentX:Number;
var tangentY:Number;
var tX:Number;
var j:int;
var tCount:int;
var ccp:b2ContactConstraintPoint;
var PX:Number;
var PY:Number;
var ccp2:b2ContactConstraintPoint;
var i:int;
while (i < m_constraintCount) {
c = m_constraints[i];
b1 = c.body1;
b2 = c.body2;
invMass1 = b1.m_invMass;
invI1 = b1.m_invI;
invMass2 = b2.m_invMass;
invI2 = b2.m_invI;
normalX = c.normal.x;
normalY = c.normal.y;
tangentX = normalY;
tangentY = -(normalX);
if (step.warmStarting){
tCount = c.pointCount;
j = 0;
while (j < tCount) {
ccp = c.points[j];
ccp.normalImpulse = (ccp.normalImpulse * step.dtRatio);
ccp.tangentImpulse = (ccp.tangentImpulse * step.dtRatio);
PX = ((ccp.normalImpulse * normalX) + (ccp.tangentImpulse * tangentX));
PY = ((ccp.normalImpulse * normalY) + (ccp.tangentImpulse * tangentY));
b1.m_angularVelocity = (b1.m_angularVelocity - (invI1 * ((ccp.r1.x * PY) - (ccp.r1.y * PX))));
b1.m_linearVelocity.x = (b1.m_linearVelocity.x - (invMass1 * PX));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y - (invMass1 * PY));
b2.m_angularVelocity = (b2.m_angularVelocity + (invI2 * ((ccp.r2.x * PY) - (ccp.r2.y * PX))));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (invMass2 * PX));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (invMass2 * PY));
j++;
};
} else {
tCount = c.pointCount;
j = 0;
while (j < tCount) {
ccp2 = c.points[j];
ccp2.normalImpulse = 0;
ccp2.tangentImpulse = 0;
j++;
};
};
i++;
};
}
public function SolvePositionConstraints(baumgarte:Number):Boolean{
var tMat:b2Mat22;
var tVec:b2Vec2;
var c:b2ContactConstraint;
var b1:b2Body;
var b2:b2Body;
var b1_sweep_c:b2Vec2;
var b1_sweep_a:Number;
var b2_sweep_c:b2Vec2;
var b2_sweep_a:Number;
var invMass1:Number;
var invI1:Number;
var invMass2:Number;
var invI2:Number;
var normalX:Number;
var normalY:Number;
var tCount:int;
var j:int;
var ccp:b2ContactConstraintPoint;
var r1X:Number;
var r1Y:Number;
var r2X:Number;
var r2Y:Number;
var tX:Number;
var p1X:Number;
var p1Y:Number;
var p2X:Number;
var p2Y:Number;
var dpX:Number;
var dpY:Number;
var separation:Number;
var C:Number;
var dImpulse:Number;
var impulse0:Number;
var impulseX:Number;
var impulseY:Number;
var minSeparation:Number = 0;
var i:int;
while (i < m_constraintCount) {
c = m_constraints[i];
b1 = c.body1;
b2 = c.body2;
b1_sweep_c = b1.m_sweep.c;
b1_sweep_a = b1.m_sweep.a;
b2_sweep_c = b2.m_sweep.c;
b2_sweep_a = b2.m_sweep.a;
invMass1 = (b1.m_mass * b1.m_invMass);
invI1 = (b1.m_mass * b1.m_invI);
invMass2 = (b2.m_mass * b2.m_invMass);
invI2 = (b2.m_mass * b2.m_invI);
normalX = c.normal.x;
normalY = c.normal.y;
tCount = c.pointCount;
j = 0;
while (j < tCount) {
ccp = c.points[j];
tMat = b1.m_xf.R;
tVec = b1.m_sweep.localCenter;
r1X = (ccp.localAnchor1.x - tVec.x);
r1Y = (ccp.localAnchor1.y - tVec.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
tVec = b2.m_sweep.localCenter;
r2X = (ccp.localAnchor2.x - tVec.x);
r2Y = (ccp.localAnchor2.y - tVec.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
p1X = (b1_sweep_c.x + r1X);
p1Y = (b1_sweep_c.y + r1Y);
p2X = (b2_sweep_c.x + r2X);
p2Y = (b2_sweep_c.y + r2Y);
dpX = (p2X - p1X);
dpY = (p2Y - p1Y);
separation = (((dpX * normalX) + (dpY * normalY)) + ccp.separation);
minSeparation = b2Math.b2Min(minSeparation, separation);
C = (baumgarte * b2Math.b2Clamp((separation + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0));
dImpulse = (-(ccp.equalizedMass) * C);
impulse0 = ccp.positionImpulse;
ccp.positionImpulse = b2Math.b2Max((impulse0 + dImpulse), 0);
dImpulse = (ccp.positionImpulse - impulse0);
impulseX = (dImpulse * normalX);
impulseY = (dImpulse * normalY);
b1_sweep_c.x = (b1_sweep_c.x - (invMass1 * impulseX));
b1_sweep_c.y = (b1_sweep_c.y - (invMass1 * impulseY));
b1_sweep_a = (b1_sweep_a - (invI1 * ((r1X * impulseY) - (r1Y * impulseX))));
b1.m_sweep.a = b1_sweep_a;
b1.SynchronizeTransform();
b2_sweep_c.x = (b2_sweep_c.x + (invMass2 * impulseX));
b2_sweep_c.y = (b2_sweep_c.y + (invMass2 * impulseY));
b2_sweep_a = (b2_sweep_a + (invI2 * ((r2X * impulseY) - (r2Y * impulseX))));
b2.m_sweep.a = b2_sweep_a;
b2.SynchronizeTransform();
j++;
};
i++;
};
return ((minSeparation >= (-1.5 * b2Settings.b2_linearSlop)));
}
public function SolveVelocityConstraints():void{
var j:int;
var ccp:b2ContactConstraintPoint;
var r1X:Number;
var r1Y:Number;
var r2X:Number;
var r2Y:Number;
var dvX:Number;
var dvY:Number;
var vn:Number;
var vt:Number;
var lambda_n:Number;
var lambda_t:Number;
var newImpulse_n:Number;
var newImpulse_t:Number;
var PX:Number;
var PY:Number;
var tMat:b2Mat22;
var tVec:b2Vec2;
var c:b2ContactConstraint;
var b1:b2Body;
var b2:b2Body;
var w1:Number;
var w2:Number;
var v1:b2Vec2;
var v2:b2Vec2;
var invMass1:Number;
var invI1:Number;
var invMass2:Number;
var invI2:Number;
var normalX:Number;
var normalY:Number;
var tangentX:Number;
var tangentY:Number;
var friction:Number;
var tX:Number;
var tCount:int;
var maxFriction:Number;
var i:int;
while (i < m_constraintCount) {
c = m_constraints[i];
b1 = c.body1;
b2 = c.body2;
w1 = b1.m_angularVelocity;
w2 = b2.m_angularVelocity;
v1 = b1.m_linearVelocity;
v2 = b2.m_linearVelocity;
invMass1 = b1.m_invMass;
invI1 = b1.m_invI;
invMass2 = b2.m_invMass;
invI2 = b2.m_invI;
normalX = c.normal.x;
normalY = c.normal.y;
tangentX = normalY;
tangentY = -(normalX);
friction = c.friction;
tCount = c.pointCount;
j = 0;
while (j < tCount) {
ccp = c.points[j];
dvX = (((v2.x + (-(w2) * ccp.r2.y)) - v1.x) - (-(w1) * ccp.r1.y));
dvY = (((v2.y + (w2 * ccp.r2.x)) - v1.y) - (w1 * ccp.r1.x));
vn = ((dvX * normalX) + (dvY * normalY));
lambda_n = (-(ccp.normalMass) * (vn - ccp.velocityBias));
vt = ((dvX * tangentX) + (dvY * tangentY));
lambda_t = (ccp.tangentMass * -(vt));
newImpulse_n = b2Math.b2Max((ccp.normalImpulse + lambda_n), 0);
lambda_n = (newImpulse_n - ccp.normalImpulse);
maxFriction = (friction * ccp.normalImpulse);
newImpulse_t = b2Math.b2Clamp((ccp.tangentImpulse + lambda_t), -(maxFriction), maxFriction);
lambda_t = (newImpulse_t - ccp.tangentImpulse);
PX = ((lambda_n * normalX) + (lambda_t * tangentX));
PY = ((lambda_n * normalY) + (lambda_t * tangentY));
v1.x = (v1.x - (invMass1 * PX));
v1.y = (v1.y - (invMass1 * PY));
w1 = (w1 - (invI1 * ((ccp.r1.x * PY) - (ccp.r1.y * PX))));
v2.x = (v2.x + (invMass2 * PX));
v2.y = (v2.y + (invMass2 * PY));
w2 = (w2 + (invI2 * ((ccp.r2.x * PY) - (ccp.r2.y * PX))));
ccp.normalImpulse = newImpulse_n;
ccp.tangentImpulse = newImpulse_t;
j++;
};
b1.m_angularVelocity = w1;
b2.m_angularVelocity = w2;
i++;
};
}
public function FinalizeVelocityConstraints():void{
var c:b2ContactConstraint;
var m:b2Manifold;
var j:int;
var point1:b2ManifoldPoint;
var point2:b2ContactConstraintPoint;
var i:int;
while (i < m_constraintCount) {
c = m_constraints[i];
m = c.manifold;
j = 0;
while (j < c.pointCount) {
point1 = m.points[j];
point2 = c.points[j];
point1.normalImpulse = point2.normalImpulse;
point1.tangentImpulse = point2.tangentImpulse;
j++;
};
i++;
};
}
}
}//package Box2D.Dynamics.Contacts
Section 46
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact)
package Box2D.Dynamics.Contacts {
import Box2D.Dynamics.*;
public class b2NullContact extends b2Contact {
public function b2NullContact(){
super();
}
override public function Evaluate(l:b2ContactListener):void{
}
override public function GetManifolds():Array{
return (null);
}
}
}//package Box2D.Dynamics.Contacts
Section 47
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolyAndCircleContact extends b2Contact {
private var m_manifolds:Array;
public var m_manifold:b2Manifold;
private var m0:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2PolyAndCircleContact(shape1:b2Shape, shape2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(shape1, shape2);
m_manifold = m_manifolds[0];
b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape));
b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape));
m_manifold.pointCount = 0;
var point:b2ManifoldPoint = m_manifold.points[0];
point.normalImpulse = 0;
point.tangentImpulse = 0;
}
override public function Evaluate(listener:b2ContactListener):void{
var i:int;
var v1:b2Vec2;
var v2:b2Vec2;
var mp0:b2ManifoldPoint;
var mp:b2ManifoldPoint;
var found:Boolean;
var idKey:uint;
var j:int;
var b1:b2Body = m_shape1.m_body;
var b2:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), b1.m_xf, (m_shape2 as b2CircleShape), b2.m_xf);
var persisted:Array = [false, false];
var cp:b2ContactPoint = s_evalCP;
cp.shape1 = m_shape1;
cp.shape2 = m_shape2;
cp.friction = m_friction;
cp.restitution = m_restitution;
if (m_manifold.pointCount > 0){
i = 0;
while (i < m_manifold.pointCount) {
mp = m_manifold.points[i];
mp.normalImpulse = 0;
mp.tangentImpulse = 0;
found = false;
idKey = mp.id._key;
j = 0;
while (j < m0.pointCount) {
if (persisted[j] == true){
} else {
mp0 = m0.points[j];
if (mp0.id._key == idKey){
persisted[j] = true;
mp.normalImpulse = mp0.normalImpulse;
mp.tangentImpulse = mp0.tangentImpulse;
found = true;
if (listener != null){
cp.position = b1.GetWorldPoint(mp.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m_manifold.normal);
cp.separation = mp.separation;
cp.id.key = idKey;
listener.Persist(cp);
};
break;
};
};
j++;
};
if ((((found == false)) && (!((listener == null))))){
cp.position = b1.GetWorldPoint(mp.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m_manifold.normal);
cp.separation = mp.separation;
cp.id.key = idKey;
listener.Add(cp);
};
i++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (listener == null){
return;
};
i = 0;
while (i < m0.pointCount) {
if (persisted[i]){
} else {
mp0 = m0.points[i];
cp.position = b1.GetWorldPoint(mp0.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp0.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp0.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m0.normal);
cp.separation = mp0.separation;
cp.id.key = mp0.id._key;
listener.Remove(cp);
};
i++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(contact:b2Contact, allocator):void{
}
public static function Create(shape1:b2Shape, shape2:b2Shape, allocator):b2Contact{
return (new b2PolyAndCircleContact(shape1, shape2));
}
}
}//package Box2D.Dynamics.Contacts
Section 48
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact)
package Box2D.Dynamics.Contacts {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolygonContact extends b2Contact {
private var m_manifolds:Array;
private var m0:b2Manifold;
public var m_manifold:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2PolygonContact(shape1:b2Shape, shape2:b2Shape):void{
m0 = new b2Manifold();
m_manifolds = [new b2Manifold()];
super(shape1, shape2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
}
override public function Evaluate(listener:b2ContactListener):void{
var v1:b2Vec2;
var v2:b2Vec2;
var mp0:b2ManifoldPoint;
var cp:b2ContactPoint;
var i:int;
var mp:b2ManifoldPoint;
var found:Boolean;
var idKey:uint;
var j:int;
var b1:b2Body = m_shape1.m_body;
var b2:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), b1.m_xf, (m_shape2 as b2PolygonShape), b2.m_xf);
var persisted:Array = [false, false];
cp = s_evalCP;
cp.shape1 = m_shape1;
cp.shape2 = m_shape2;
cp.friction = m_friction;
cp.restitution = m_restitution;
if (m_manifold.pointCount > 0){
i = 0;
while (i < m_manifold.pointCount) {
mp = m_manifold.points[i];
mp.normalImpulse = 0;
mp.tangentImpulse = 0;
found = false;
idKey = mp.id._key;
j = 0;
while (j < m0.pointCount) {
if (persisted[j] == true){
} else {
mp0 = m0.points[j];
if (mp0.id._key == idKey){
persisted[j] = true;
mp.normalImpulse = mp0.normalImpulse;
mp.tangentImpulse = mp0.tangentImpulse;
found = true;
if (listener != null){
cp.position = b1.GetWorldPoint(mp.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m_manifold.normal);
cp.separation = mp.separation;
cp.id.key = idKey;
listener.Persist(cp);
};
break;
};
};
j++;
};
if ((((found == false)) && (!((listener == null))))){
cp.position = b1.GetWorldPoint(mp.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m_manifold.normal);
cp.separation = mp.separation;
cp.id.key = idKey;
listener.Add(cp);
};
i++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (listener == null){
return;
};
i = 0;
while (i < m0.pointCount) {
if (persisted[i]){
} else {
mp0 = m0.points[i];
cp.position = b1.GetWorldPoint(mp0.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp0.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp0.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.normal.SetV(m0.normal);
cp.separation = mp0.separation;
cp.id.key = mp0.id._key;
listener.Remove(cp);
};
i++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(contact:b2Contact, allocator):void{
}
public static function Create(shape1:b2Shape, shape2:b2Shape, allocator):b2Contact{
return (new b2PolygonContact(shape1, shape2));
}
}
}//package Box2D.Dynamics.Contacts
Section 49
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2DistanceJoint extends b2Joint {
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_bias:Number;
public var m_gamma:Number;
public var m_u:b2Vec2;
public var m_mass:Number;
public var m_impulse:Number;
public var m_dampingRatio:Number;
public var m_frequencyHz:Number;
public var m_length:Number;
public function b2DistanceJoint(def:b2DistanceJointDef){
var tMat:b2Mat22;
var tX:Number;
var tY:Number;
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_u = new b2Vec2();
super(def);
m_localAnchor1.SetV(def.localAnchor1);
m_localAnchor2.SetV(def.localAnchor2);
m_length = def.length;
m_frequencyHz = def.frequencyHz;
m_dampingRatio = def.dampingRatio;
m_impulse = 0;
m_gamma = 0;
m_bias = 0;
m_inv_dt = 0;
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function InitVelocityConstraints(step:b2TimeStep):void{
var tMat:b2Mat22;
var tX:Number;
var b1:b2Body;
var b2:b2Body;
var r1X:Number;
var r2X:Number;
var C:Number;
var omega:Number;
var d:Number;
var k:Number;
var PX:Number;
var PY:Number;
m_inv_dt = step.inv_dt;
b1 = m_body1;
b2 = m_body2;
tMat = b1.m_xf.R;
r1X = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
r2X = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
m_u.x = (((b2.m_sweep.c.x + r2X) - b1.m_sweep.c.x) - r1X);
m_u.y = (((b2.m_sweep.c.y + r2Y) - b1.m_sweep.c.y) - r1Y);
var length:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y)));
if (length > b2Settings.b2_linearSlop){
m_u.Multiply((1 / length));
} else {
m_u.SetZero();
};
var cr1u:Number = ((r1X * m_u.y) - (r1Y * m_u.x));
var cr2u:Number = ((r2X * m_u.y) - (r2Y * m_u.x));
var invMass:Number = (((b1.m_invMass + ((b1.m_invI * cr1u) * cr1u)) + b2.m_invMass) + ((b2.m_invI * cr2u) * cr2u));
m_mass = (1 / invMass);
if (m_frequencyHz > 0){
C = (length - m_length);
omega = ((2 * Math.PI) * m_frequencyHz);
d = (((2 * m_mass) * m_dampingRatio) * omega);
k = ((m_mass * omega) * omega);
m_gamma = (1 / (step.dt * (d + (step.dt * k))));
m_bias = (((C * step.dt) * k) * m_gamma);
m_mass = (1 / (invMass + m_gamma));
};
if (step.warmStarting){
m_impulse = (m_impulse * step.dtRatio);
PX = (m_impulse * m_u.x);
PY = (m_impulse * m_u.y);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x - (b1.m_invMass * PX));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y - (b1.m_invMass * PY));
b1.m_angularVelocity = (b1.m_angularVelocity - (b1.m_invI * ((r1X * PY) - (r1Y * PX))));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * PX));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * PY));
b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * PY) - (r2Y * PX))));
} else {
m_impulse = 0;
};
}
override public function GetReactionTorque():Number{
return (0);
}
override public function GetReactionForce():b2Vec2{
var F:b2Vec2 = new b2Vec2();
F.SetV(m_u);
F.Multiply((m_inv_dt * m_impulse));
return (F);
}
override public function SolvePositionConstraints():Boolean{
var tMat:b2Mat22;
if (m_frequencyHz > 0){
return (true);
};
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var dX:Number = (((b2.m_sweep.c.x + r2X) - b1.m_sweep.c.x) - r1X);
var dY:Number = (((b2.m_sweep.c.y + r2Y) - b1.m_sweep.c.y) - r1Y);
var length:Number = Math.sqrt(((dX * dX) + (dY * dY)));
dX = (dX / length);
dY = (dY / length);
var C:Number = (length - m_length);
C = b2Math.b2Clamp(C, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
var impulse:Number = (-(m_mass) * C);
m_u.Set(dX, dY);
var PX:Number = (impulse * m_u.x);
var PY:Number = (impulse * m_u.y);
b1.m_sweep.c.x = (b1.m_sweep.c.x - (b1.m_invMass * PX));
b1.m_sweep.c.y = (b1.m_sweep.c.y - (b1.m_invMass * PY));
b1.m_sweep.a = (b1.m_sweep.a - (b1.m_invI * ((r1X * PY) - (r1Y * PX))));
b2.m_sweep.c.x = (b2.m_sweep.c.x + (b2.m_invMass * PX));
b2.m_sweep.c.y = (b2.m_sweep.c.y + (b2.m_invMass * PY));
b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * ((r2X * PY) - (r2Y * PX))));
b1.SynchronizeTransform();
b2.SynchronizeTransform();
return ((b2Math.b2Abs(C) < b2Settings.b2_linearSlop));
}
override public function SolveVelocityConstraints(step:b2TimeStep):void{
var tMat:b2Mat22;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var v1X:Number = (b1.m_linearVelocity.x + (-(b1.m_angularVelocity) * r1Y));
var v1Y:Number = (b1.m_linearVelocity.y + (b1.m_angularVelocity * r1X));
var v2X:Number = (b2.m_linearVelocity.x + (-(b2.m_angularVelocity) * r2Y));
var v2Y:Number = (b2.m_linearVelocity.y + (b2.m_angularVelocity * r2X));
var Cdot:Number = ((m_u.x * (v2X - v1X)) + (m_u.y * (v2Y - v1Y)));
var impulse:Number = (-(m_mass) * ((Cdot + m_bias) + (m_gamma * m_impulse)));
m_impulse = (m_impulse + impulse);
var PX:Number = (impulse * m_u.x);
var PY:Number = (impulse * m_u.y);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x - (b1.m_invMass * PX));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y - (b1.m_invMass * PY));
b1.m_angularVelocity = (b1.m_angularVelocity - (b1.m_invI * ((r1X * PY) - (r1Y * PX))));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * PX));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * PY));
b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * PY) - (r2Y * PX))));
}
}
}//package Box2D.Dynamics.Joints
Section 50
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2DistanceJointDef extends b2JointDef {
public var localAnchor1:b2Vec2;
public var length:Number;
public var dampingRatio:Number;
public var localAnchor2:b2Vec2;
public var frequencyHz:Number;
public function b2DistanceJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_distanceJoint;
length = 1;
frequencyHz = 0;
dampingRatio = 0;
}
public function Initialize(b1:b2Body, b2:b2Body, anchor1:b2Vec2, anchor2:b2Vec2):void{
body1 = b1;
body2 = b2;
localAnchor1.SetV(body1.GetLocalPoint(anchor1));
localAnchor2.SetV(body2.GetLocalPoint(anchor2));
var dX:Number = (anchor2.x - anchor1.x);
var dY:Number = (anchor2.y - anchor1.y);
length = Math.sqrt(((dX * dX) + (dY * dY)));
frequencyHz = 0;
dampingRatio = 0;
}
}
}//package Box2D.Dynamics.Joints
Section 51
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2GearJoint extends b2Joint {
public var m_ground2:b2Body;
public var m_groundAnchor1:b2Vec2;
public var m_groundAnchor2:b2Vec2;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_ratio:Number;
public var m_revolute2:b2RevoluteJoint;
public var m_force:Number;
public var m_mass:Number;
public var m_prismatic2:b2PrismaticJoint;
public var m_ground1:b2Body;
public var m_revolute1:b2RevoluteJoint;
public var m_prismatic1:b2PrismaticJoint;
public var m_constant:Number;
public var m_J:b2Jacobian;
public function b2GearJoint(def:b2GearJointDef){
var coordinate1:Number;
var coordinate2:Number;
m_groundAnchor1 = new b2Vec2();
m_groundAnchor2 = new b2Vec2();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_J = new b2Jacobian();
super(def);
var type1:int = def.joint1.m_type;
var type2:int = def.joint2.m_type;
m_revolute1 = null;
m_prismatic1 = null;
m_revolute2 = null;
m_prismatic2 = null;
m_ground1 = def.joint1.m_body1;
m_body1 = def.joint1.m_body2;
if (type1 == b2Joint.e_revoluteJoint){
m_revolute1 = (def.joint1 as b2RevoluteJoint);
m_groundAnchor1.SetV(m_revolute1.m_localAnchor1);
m_localAnchor1.SetV(m_revolute1.m_localAnchor2);
coordinate1 = m_revolute1.GetJointAngle();
} else {
m_prismatic1 = (def.joint1 as b2PrismaticJoint);
m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1);
m_localAnchor1.SetV(m_prismatic1.m_localAnchor2);
coordinate1 = m_prismatic1.GetJointTranslation();
};
m_ground2 = def.joint2.m_body1;
m_body2 = def.joint2.m_body2;
if (type2 == b2Joint.e_revoluteJoint){
m_revolute2 = (def.joint2 as b2RevoluteJoint);
m_groundAnchor2.SetV(m_revolute2.m_localAnchor1);
m_localAnchor2.SetV(m_revolute2.m_localAnchor2);
coordinate2 = m_revolute2.GetJointAngle();
} else {
m_prismatic2 = (def.joint2 as b2PrismaticJoint);
m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1);
m_localAnchor2.SetV(m_prismatic2.m_localAnchor2);
coordinate2 = m_prismatic2.GetJointTranslation();
};
m_ratio = def.ratio;
m_constant = (coordinate1 + (m_ratio * coordinate2));
m_force = 0;
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function InitVelocityConstraints(step:b2TimeStep):void{
var ugX:Number;
var ugY:Number;
var rX:Number;
var rY:Number;
var tMat:b2Mat22;
var tVec:b2Vec2;
var crug:Number;
var tX:Number;
var P:Number;
var g1:b2Body = m_ground1;
var g2:b2Body = m_ground2;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
var K:Number = 0;
m_J.SetZero();
if (m_revolute1){
m_J.angular1 = -1;
K = (K + b1.m_invI);
} else {
tMat = g1.m_xf.R;
tVec = m_prismatic1.m_localXAxis1;
ugX = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
ugY = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y));
tMat = b1.m_xf.R;
rX = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
rY = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * rX) + (tMat.col2.x * rY));
rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY));
rX = tX;
crug = ((rX * ugY) - (rY * ugX));
m_J.linear1.Set(-(ugX), -(ugY));
m_J.angular1 = -(crug);
K = (K + (b1.m_invMass + ((b1.m_invI * crug) * crug)));
};
if (m_revolute2){
m_J.angular2 = -(m_ratio);
K = (K + ((m_ratio * m_ratio) * b2.m_invI));
} else {
tMat = g2.m_xf.R;
tVec = m_prismatic2.m_localXAxis1;
ugX = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
ugY = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y));
tMat = b2.m_xf.R;
rX = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
rY = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * rX) + (tMat.col2.x * rY));
rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY));
rX = tX;
crug = ((rX * ugY) - (rY * ugX));
m_J.linear2.Set((-(m_ratio) * ugX), (-(m_ratio) * ugY));
m_J.angular2 = (-(m_ratio) * crug);
K = (K + ((m_ratio * m_ratio) * (b2.m_invMass + ((b2.m_invI * crug) * crug))));
};
m_mass = (1 / K);
if (step.warmStarting){
P = (step.dt * m_force);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((b1.m_invMass * P) * m_J.linear1.x));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((b1.m_invMass * P) * m_J.linear1.y));
b1.m_angularVelocity = (b1.m_angularVelocity + ((b1.m_invI * P) * m_J.angular1));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((b2.m_invMass * P) * m_J.linear2.x));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((b2.m_invMass * P) * m_J.linear2.y));
b2.m_angularVelocity = (b2.m_angularVelocity + ((b2.m_invI * P) * m_J.angular2));
} else {
m_force = 0;
};
}
override public function GetReactionTorque():Number{
var tMat:b2Mat22 = m_body2.m_xf.R;
var rX:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x);
var rY:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y);
var tX:Number = ((tMat.col1.x * rX) + (tMat.col2.x * rY));
rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY));
rX = tX;
tX = ((m_force * m_J.angular2) - ((rX * (m_force * m_J.linear2.y)) - (rY * (m_force * m_J.linear2.x))));
return (tX);
}
override public function GetReactionForce():b2Vec2{
var F:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y));
return (F);
}
override public function SolvePositionConstraints():Boolean{
var coordinate1:Number;
var coordinate2:Number;
var linearError:Number = 0;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
if (m_revolute1){
coordinate1 = m_revolute1.GetJointAngle();
} else {
coordinate1 = m_prismatic1.GetJointTranslation();
};
if (m_revolute2){
coordinate2 = m_revolute2.GetJointAngle();
} else {
coordinate2 = m_prismatic2.GetJointTranslation();
};
var C:Number = (m_constant - (coordinate1 + (m_ratio * coordinate2)));
var impulse:Number = (-(m_mass) * C);
b1.m_sweep.c.x = (b1.m_sweep.c.x + ((b1.m_invMass * impulse) * m_J.linear1.x));
b1.m_sweep.c.y = (b1.m_sweep.c.y + ((b1.m_invMass * impulse) * m_J.linear1.y));
b1.m_sweep.a = (b1.m_sweep.a + ((b1.m_invI * impulse) * m_J.angular1));
b2.m_sweep.c.x = (b2.m_sweep.c.x + ((b2.m_invMass * impulse) * m_J.linear2.x));
b2.m_sweep.c.y = (b2.m_sweep.c.y + ((b2.m_invMass * impulse) * m_J.linear2.y));
b2.m_sweep.a = (b2.m_sweep.a + ((b2.m_invI * impulse) * m_J.angular2));
b1.SynchronizeTransform();
b2.SynchronizeTransform();
return ((linearError < b2Settings.b2_linearSlop));
}
public function GetRatio():Number{
return (m_ratio);
}
override public function SolveVelocityConstraints(step:b2TimeStep):void{
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
var Cdot:Number = m_J.Compute(b1.m_linearVelocity, b1.m_angularVelocity, b2.m_linearVelocity, b2.m_angularVelocity);
var force:Number = ((-(step.inv_dt) * m_mass) * Cdot);
m_force = (m_force + force);
var P:Number = (step.dt * force);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((b1.m_invMass * P) * m_J.linear1.x));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((b1.m_invMass * P) * m_J.linear1.y));
b1.m_angularVelocity = (b1.m_angularVelocity + ((b1.m_invI * P) * m_J.angular1));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((b2.m_invMass * P) * m_J.linear2.x));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((b2.m_invMass * P) * m_J.linear2.y));
b2.m_angularVelocity = (b2.m_angularVelocity + ((b2.m_invI * P) * m_J.angular2));
}
}
}//package Box2D.Dynamics.Joints
Section 52
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef)
package Box2D.Dynamics.Joints {
public class b2GearJointDef extends b2JointDef {
public var joint1:b2Joint;
public var joint2:b2Joint;
public var ratio:Number;
public function b2GearJointDef(){
super();
type = b2Joint.e_gearJoint;
joint1 = null;
joint2 = null;
ratio = 1;
}
}
}//package Box2D.Dynamics.Joints
Section 53
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
public class b2Jacobian {
public var linear1:b2Vec2;
public var linear2:b2Vec2;
public var angular1:Number;
public var angular2:Number;
public function b2Jacobian(){
linear1 = new b2Vec2();
linear2 = new b2Vec2();
super();
}
public function Set(x1:b2Vec2, a1:Number, x2:b2Vec2, a2:Number):void{
linear1.SetV(x1);
angular1 = a1;
linear2.SetV(x2);
angular2 = a2;
}
public function SetZero():void{
linear1.SetZero();
angular1 = 0;
linear2.SetZero();
angular2 = 0;
}
public function Compute(x1:b2Vec2, a1:Number, x2:b2Vec2, a2:Number):Number{
return ((((((linear1.x * x1.x) + (linear1.y * x1.y)) + (angular1 * a1)) + ((linear2.x * x2.x) + (linear2.y * x2.y))) + (angular2 * a2)));
}
}
}//package Box2D.Dynamics.Joints
Section 54
//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(def:b2JointDef){
m_node1 = new b2JointEdge();
m_node2 = new b2JointEdge();
super();
m_type = def.type;
m_prev = null;
m_next = null;
m_body1 = def.body1;
m_body2 = def.body2;
m_collideConnected = def.collideConnected;
m_islandFlag = false;
m_userData = def.userData;
}
public function GetBody2():b2Body{
return (m_body2);
}
public function GetAnchor1():b2Vec2{
return (null);
}
public function GetAnchor2():b2Vec2{
return (null);
}
public function GetNext():b2Joint{
return (m_next);
}
public function GetType():int{
return (m_type);
}
public function InitVelocityConstraints(step:b2TimeStep):void{
}
public function GetReactionTorque():Number{
return (0);
}
public function GetUserData(){
return (m_userData);
}
public function GetReactionForce():b2Vec2{
return (null);
}
public function SolvePositionConstraints():Boolean{
return (false);
}
public function SetUserData(data):void{
m_userData = data;
}
public function GetBody1():b2Body{
return (m_body1);
}
public function SolveVelocityConstraints(step:b2TimeStep):void{
}
public function InitPositionConstraints():void{
}
public static function Destroy(joint:b2Joint, allocator):void{
}
public static function Create(def:b2JointDef, allocator):b2Joint{
var joint:b2Joint;
switch (def.type){
case e_distanceJoint:
joint = new b2DistanceJoint((def as b2DistanceJointDef));
break;
case e_mouseJoint:
joint = new b2MouseJoint((def as b2MouseJointDef));
break;
case e_prismaticJoint:
joint = new b2PrismaticJoint((def as b2PrismaticJointDef));
break;
case e_revoluteJoint:
joint = new b2RevoluteJoint((def as b2RevoluteJointDef));
break;
case e_pulleyJoint:
joint = new b2PulleyJoint((def as b2PulleyJointDef));
break;
case e_gearJoint:
joint = new b2GearJoint((def as b2GearJointDef));
break;
default:
break;
};
return (joint);
}
}
}//package Box2D.Dynamics.Joints
Section 55
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef)
package Box2D.Dynamics.Joints {
import Box2D.Dynamics.*;
public class b2JointDef {
public var body2:b2Body;
public var type:int;
public var userData;
public var collideConnected:Boolean;
public var body1:b2Body;
public function b2JointDef(){
super();
type = b2Joint.e_unknownJoint;
userData = null;
body1 = null;
body2 = null;
collideConnected = false;
}
}
}//package Box2D.Dynamics.Joints
Section 56
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge)
package Box2D.Dynamics.Joints {
import Box2D.Dynamics.*;
public class b2JointEdge {
public var other:b2Body;
public var next:b2JointEdge;
public var prev:b2JointEdge;
public var joint:b2Joint;
public function b2JointEdge(){
super();
}
}
}//package Box2D.Dynamics.Joints
Section 57
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2MouseJoint extends b2Joint {
private var K1:b2Mat22;
private var K:b2Mat22;
public var m_beta:Number;
public var m_mass:b2Mat22;
private var K2:b2Mat22;
public var m_target:b2Vec2;
public var m_gamma:Number;
public var m_impulse:b2Vec2;
public var m_C:b2Vec2;
public var m_localAnchor:b2Vec2;
public var m_maxForce:Number;
public function b2MouseJoint(def:b2MouseJointDef){
var tY: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(def);
m_target.SetV(def.target);
var tX:Number = (m_target.x - m_body2.m_xf.position.x);
tY = (m_target.y - m_body2.m_xf.position.y);
var tMat:b2Mat22 = m_body2.m_xf.R;
m_localAnchor.x = ((tX * tMat.col1.x) + (tY * tMat.col1.y));
m_localAnchor.y = ((tX * tMat.col2.x) + (tY * tMat.col2.y));
m_maxForce = def.maxForce;
m_impulse.SetZero();
var mass:Number = m_body2.m_mass;
var omega:Number = ((2 * b2Settings.b2_pi) * def.frequencyHz);
var d:Number = (((2 * mass) * def.dampingRatio) * omega);
var k:Number = ((def.timeStep * mass) * (omega * omega));
m_gamma = (1 / (d + k));
m_beta = (k / (d + k));
}
public function SetTarget(target:b2Vec2):void{
if (m_body2.IsSleeping()){
m_body2.WakeUp();
};
m_target = target;
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor));
}
override public function InitVelocityConstraints(step:b2TimeStep):void{
var b:b2Body;
var tMat:b2Mat22;
var rX:Number;
var rY:Number;
var invMass:Number;
var invI:Number;
b = m_body2;
tMat = b.m_xf.R;
rX = (m_localAnchor.x - b.m_sweep.localCenter.x);
rY = (m_localAnchor.y - b.m_sweep.localCenter.y);
var tX:Number = ((tMat.col1.x * rX) + (tMat.col2.x * rY));
rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY));
rX = tX;
invMass = b.m_invMass;
invI = b.m_invI;
K1.col1.x = invMass;
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = invMass;
K2.col1.x = ((invI * rY) * rY);
K2.col2.x = ((-(invI) * rX) * rY);
K2.col1.y = ((-(invI) * rX) * rY);
K2.col2.y = ((invI * rX) * rX);
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 = ((b.m_sweep.c.x + rX) - m_target.x);
m_C.y = ((b.m_sweep.c.y + rY) - m_target.y);
b.m_angularVelocity = (b.m_angularVelocity * 0.98);
var PX:Number = (step.dt * m_impulse.x);
var PY:Number = (step.dt * m_impulse.y);
b.m_linearVelocity.x = (b.m_linearVelocity.x + (invMass * PX));
b.m_linearVelocity.y = (b.m_linearVelocity.y + (invMass * PY));
b.m_angularVelocity = (b.m_angularVelocity + (invI * ((rX * PY) - (rY * PX))));
}
override public function GetAnchor1():b2Vec2{
return (m_target);
}
override public function GetReactionTorque():Number{
return (0);
}
override public function GetReactionForce():b2Vec2{
return (m_impulse);
}
override public function SolvePositionConstraints():Boolean{
return (true);
}
override public function SolveVelocityConstraints(step:b2TimeStep):void{
var tMat:b2Mat22;
var tX:Number;
var tY:Number;
var b:b2Body = m_body2;
tMat = b.m_xf.R;
var rX:Number = (m_localAnchor.x - b.m_sweep.localCenter.x);
var rY:Number = (m_localAnchor.y - b.m_sweep.localCenter.y);
tX = ((tMat.col1.x * rX) + (tMat.col2.x * rY));
rY = ((tMat.col1.y * rX) + (tMat.col2.y * rY));
rX = tX;
var CdotX:Number = (b.m_linearVelocity.x + (-(b.m_angularVelocity) * rY));
var CdotY:Number = (b.m_linearVelocity.y + (b.m_angularVelocity * rX));
tMat = m_mass;
tX = ((CdotX + ((m_beta * step.inv_dt) * m_C.x)) + ((m_gamma * step.dt) * m_impulse.x));
tY = ((CdotY + ((m_beta * step.inv_dt) * m_C.y)) + ((m_gamma * step.dt) * m_impulse.y));
var forceX:Number = (-(step.inv_dt) * ((tMat.col1.x * tX) + (tMat.col2.x * tY)));
var forceY:Number = (-(step.inv_dt) * ((tMat.col1.y * tX) + (tMat.col2.y * tY)));
var oldForceX:Number = m_impulse.x;
var oldForceY:Number = m_impulse.y;
m_impulse.x = (m_impulse.x + forceX);
m_impulse.y = (m_impulse.y + forceY);
var forceMagnitude:Number = m_impulse.Length();
if (forceMagnitude > m_maxForce){
m_impulse.Multiply((m_maxForce / forceMagnitude));
};
forceX = (m_impulse.x - oldForceX);
forceY = (m_impulse.y - oldForceY);
var PX:Number = (step.dt * forceX);
var PY:Number = (step.dt * forceY);
b.m_linearVelocity.x = (b.m_linearVelocity.x + (b.m_invMass * PX));
b.m_linearVelocity.y = (b.m_linearVelocity.y + (b.m_invMass * PY));
b.m_angularVelocity = (b.m_angularVelocity + (b.m_invI * ((rX * PY) - (rY * PX))));
}
}
}//package Box2D.Dynamics.Joints
Section 58
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
public class b2MouseJointDef extends b2JointDef {
public var timeStep:Number;
public var target:b2Vec2;
public var maxForce:Number;
public var dampingRatio:Number;
public var frequencyHz:Number;
public function b2MouseJointDef(){
target = new b2Vec2();
super();
type = b2Joint.e_mouseJoint;
maxForce = 0;
frequencyHz = 5;
dampingRatio = 0.7;
timeStep = (1 / 60);
}
}
}//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PrismaticJoint extends b2Joint {
public var m_limitForce:Number;
public var m_lowerTranslation:Number;
public var m_localXAxis1:b2Vec2;
public var m_refAngle:Number;
public var m_torque:Number;
public var m_motorForce:Number;
public var m_enableLimit:Boolean;
public var m_angularMass:Number;
public var m_maxMotorForce:Number;
public var m_localYAxis1:b2Vec2;
public var m_force:Number;
public var m_motorMass:Number;
public var m_upperTranslation:Number;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_limitState:int;
public var m_linearMass:Number;
public var m_motorJacobian:b2Jacobian;
public var m_limitPositionImpulse:Number;
public var m_motorSpeed:Number;
public var m_enableMotor:Boolean;
public var m_linearJacobian:b2Jacobian;
public function b2PrismaticJoint(def:b2PrismaticJointDef){
var tMat:b2Mat22;
var tX:Number;
var tY: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(def);
m_localAnchor1.SetV(def.localAnchor1);
m_localAnchor2.SetV(def.localAnchor2);
m_localXAxis1.SetV(def.localAxis1);
m_localYAxis1.x = -(m_localXAxis1.y);
m_localYAxis1.y = m_localXAxis1.x;
m_refAngle = def.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 = def.lowerTranslation;
m_upperTranslation = def.upperTranslation;
m_maxMotorForce = def.maxMotorForce;
m_motorSpeed = def.motorSpeed;
m_enableLimit = def.enableLimit;
m_enableMotor = def.enableMotor;
}
override public function SolveVelocityConstraints(step:b2TimeStep):void{
var oldLimitForce:Number;
var motorCdot:Number;
var motorForce:Number;
var oldMotorForce:Number;
var limitCdot:Number;
var limitForce:Number;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
var invMass1:Number = b1.m_invMass;
var invMass2:Number = b2.m_invMass;
var invI1:Number = b1.m_invI;
var invI2:Number = b2.m_invI;
var linearCdot:Number = m_linearJacobian.Compute(b1.m_linearVelocity, b1.m_angularVelocity, b2.m_linearVelocity, b2.m_angularVelocity);
var force:Number = ((-(step.inv_dt) * m_linearMass) * linearCdot);
m_force = (m_force + force);
var P:Number = (step.dt * force);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((invMass1 * P) * m_linearJacobian.linear1.x));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((invMass1 * P) * m_linearJacobian.linear1.y));
b1.m_angularVelocity = (b1.m_angularVelocity + ((invI1 * P) * m_linearJacobian.angular1));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((invMass2 * P) * m_linearJacobian.linear2.x));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((invMass2 * P) * m_linearJacobian.linear2.y));
b2.m_angularVelocity = (b2.m_angularVelocity + ((invI2 * P) * m_linearJacobian.angular2));
var angularCdot:Number = (b2.m_angularVelocity - b1.m_angularVelocity);
var torque:Number = ((-(step.inv_dt) * m_angularMass) * angularCdot);
m_torque = (m_torque + torque);
var L:Number = (step.dt * torque);
b1.m_angularVelocity = (b1.m_angularVelocity - (invI1 * L));
b2.m_angularVelocity = (b2.m_angularVelocity + (invI2 * L));
if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
motorCdot = (m_motorJacobian.Compute(b1.m_linearVelocity, b1.m_angularVelocity, b2.m_linearVelocity, b2.m_angularVelocity) - m_motorSpeed);
motorForce = ((-(step.inv_dt) * m_motorMass) * motorCdot);
oldMotorForce = m_motorForce;
m_motorForce = b2Math.b2Clamp((m_motorForce + motorForce), -(m_maxMotorForce), m_maxMotorForce);
motorForce = (m_motorForce - oldMotorForce);
P = (step.dt * motorForce);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((invMass1 * P) * m_motorJacobian.linear1.x));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((invMass1 * P) * m_motorJacobian.linear1.y));
b1.m_angularVelocity = (b1.m_angularVelocity + ((invI1 * P) * m_motorJacobian.angular1));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((invMass2 * P) * m_motorJacobian.linear2.x));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((invMass2 * P) * m_motorJacobian.linear2.y));
b2.m_angularVelocity = (b2.m_angularVelocity + ((invI2 * P) * m_motorJacobian.angular2));
};
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
limitCdot = m_motorJacobian.Compute(b1.m_linearVelocity, b1.m_angularVelocity, b2.m_linearVelocity, b2.m_angularVelocity);
limitForce = ((-(step.inv_dt) * m_motorMass) * limitCdot);
if (m_limitState == e_equalLimits){
m_limitForce = (m_limitForce + limitForce);
} else {
if (m_limitState == e_atLowerLimit){
oldLimitForce = m_limitForce;
m_limitForce = b2Math.b2Max((m_limitForce + limitForce), 0);
limitForce = (m_limitForce - oldLimitForce);
} else {
if (m_limitState == e_atUpperLimit){
oldLimitForce = m_limitForce;
m_limitForce = b2Math.b2Min((m_limitForce + limitForce), 0);
limitForce = (m_limitForce - oldLimitForce);
};
};
};
P = (step.dt * limitForce);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + ((invMass1 * P) * m_motorJacobian.linear1.x));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + ((invMass1 * P) * m_motorJacobian.linear1.y));
b1.m_angularVelocity = (b1.m_angularVelocity + ((invI1 * P) * m_motorJacobian.angular1));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((invMass2 * P) * m_motorJacobian.linear2.x));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((invMass2 * P) * m_motorJacobian.linear2.y));
b2.m_angularVelocity = (b2.m_angularVelocity + ((invI2 * P) * m_motorJacobian.angular2));
};
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
public function GetUpperLimit():Number{
return (m_upperTranslation);
}
public function GetLowerLimit():Number{
return (m_lowerTranslation);
}
public function EnableMotor(flag:Boolean):void{
m_enableMotor = flag;
}
public function GetJointTranslation():Number{
var tMat:b2Mat22;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
var p1:b2Vec2 = b1.GetWorldPoint(m_localAnchor1);
var p2:b2Vec2 = b2.GetWorldPoint(m_localAnchor2);
var dX:Number = (p2.x - p1.x);
var dY:Number = (p2.y - p1.y);
var axis:b2Vec2 = b1.GetWorldVector(m_localXAxis1);
var translation:Number = ((axis.x * dX) + (axis.y * dY));
return (translation);
}
public function GetMotorSpeed():Number{
return (m_motorSpeed);
}
override public function GetReactionForce():b2Vec2{
var tMat:b2Mat22 = m_body1.m_xf.R;
var ax1X:Number = (m_limitForce * ((tMat.col1.x * m_localXAxis1.x) + (tMat.col2.x * m_localXAxis1.y)));
var ax1Y:Number = (m_limitForce * ((tMat.col1.y * m_localXAxis1.x) + (tMat.col2.y * m_localXAxis1.y)));
var ay1X:Number = (m_force * ((tMat.col1.x * m_localYAxis1.x) + (tMat.col2.x * m_localYAxis1.y)));
var ay1Y:Number = (m_force * ((tMat.col1.y * m_localYAxis1.x) + (tMat.col2.y * m_localYAxis1.y)));
return (new b2Vec2(((m_limitForce * ax1X) + (m_force * ay1X)), ((m_limitForce * ax1Y) + (m_force * ay1Y))));
}
override public function SolvePositionConstraints():Boolean{
var limitC:Number;
var oldLimitImpulse:Number;
var tMat:b2Mat22;
var tX:Number;
var ax1X:Number;
var ax1Y:Number;
var translation:Number;
var limitImpulse:Number;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
var invMass1:Number = b1.m_invMass;
var invMass2:Number = b2.m_invMass;
var invI1:Number = b1.m_invI;
var invI2:Number = b2.m_invI;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var p1X:Number = (b1.m_sweep.c.x + r1X);
var p1Y:Number = (b1.m_sweep.c.y + r1Y);
var p2X:Number = (b2.m_sweep.c.x + r2X);
var p2Y:Number = (b2.m_sweep.c.y + r2Y);
var dX:Number = (p2X - p1X);
var dY:Number = (p2Y - p1Y);
tMat = b1.m_xf.R;
var ay1X:Number = ((tMat.col1.x * m_localYAxis1.x) + (tMat.col2.x * m_localYAxis1.y));
var ay1Y:Number = ((tMat.col1.y * m_localYAxis1.x) + (tMat.col2.y * m_localYAxis1.y));
var linearC:Number = ((ay1X * dX) + (ay1Y * dY));
linearC = b2Math.b2Clamp(linearC, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
var linearImpulse:Number = (-(m_linearMass) * linearC);
b1.m_sweep.c.x = (b1.m_sweep.c.x + ((invMass1 * linearImpulse) * m_linearJacobian.linear1.x));
b1.m_sweep.c.y = (b1.m_sweep.c.y + ((invMass1 * linearImpulse) * m_linearJacobian.linear1.y));
b1.m_sweep.a = (b1.m_sweep.a + ((invI1 * linearImpulse) * m_linearJacobian.angular1));
b2.m_sweep.c.x = (b2.m_sweep.c.x + ((invMass2 * linearImpulse) * m_linearJacobian.linear2.x));
b2.m_sweep.c.y = (b2.m_sweep.c.y + ((invMass2 * linearImpulse) * m_linearJacobian.linear2.y));
b2.m_sweep.a = (b2.m_sweep.a + ((invI2 * linearImpulse) * m_linearJacobian.angular2));
var positionError:Number = b2Math.b2Abs(linearC);
var angularC:Number = ((b2.m_sweep.a - b1.m_sweep.a) - m_refAngle);
angularC = b2Math.b2Clamp(angularC, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
var angularImpulse:Number = (-(m_angularMass) * angularC);
b1.m_sweep.a = (b1.m_sweep.a - (b1.m_invI * angularImpulse));
b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * angularImpulse));
b1.SynchronizeTransform();
b2.SynchronizeTransform();
var angularError:Number = b2Math.b2Abs(angularC);
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
tMat = b1.m_xf.R;
r1X = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
r1Y = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
r2X = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
r2Y = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
p1X = (b1.m_sweep.c.x + r1X);
p1Y = (b1.m_sweep.c.y + r1Y);
p2X = (b2.m_sweep.c.x + r2X);
p2Y = (b2.m_sweep.c.y + r2Y);
dX = (p2X - p1X);
dY = (p2Y - p1Y);
tMat = b1.m_xf.R;
ax1X = ((tMat.col1.x * m_localXAxis1.x) + (tMat.col2.x * m_localXAxis1.y));
ax1Y = ((tMat.col1.y * m_localXAxis1.x) + (tMat.col2.y * m_localXAxis1.y));
translation = ((ax1X * dX) + (ax1Y * dY));
limitImpulse = 0;
if (m_limitState == e_equalLimits){
limitC = b2Math.b2Clamp(translation, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
limitImpulse = (-(m_motorMass) * limitC);
positionError = b2Math.b2Max(positionError, b2Math.b2Abs(angularC));
} else {
if (m_limitState == e_atLowerLimit){
limitC = (translation - m_lowerTranslation);
positionError = b2Math.b2Max(positionError, -(limitC));
limitC = b2Math.b2Clamp((limitC + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
limitImpulse = (-(m_motorMass) * limitC);
oldLimitImpulse = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + limitImpulse), 0);
limitImpulse = (m_limitPositionImpulse - oldLimitImpulse);
} else {
if (m_limitState == e_atUpperLimit){
limitC = (translation - m_upperTranslation);
positionError = b2Math.b2Max(positionError, limitC);
limitC = b2Math.b2Clamp((limitC - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection);
limitImpulse = (-(m_motorMass) * limitC);
oldLimitImpulse = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + limitImpulse), 0);
limitImpulse = (m_limitPositionImpulse - oldLimitImpulse);
};
};
};
b1.m_sweep.c.x = (b1.m_sweep.c.x + ((invMass1 * limitImpulse) * m_motorJacobian.linear1.x));
b1.m_sweep.c.y = (b1.m_sweep.c.y + ((invMass1 * limitImpulse) * m_motorJacobian.linear1.y));
b1.m_sweep.a = (b1.m_sweep.a + ((invI1 * limitImpulse) * m_motorJacobian.angular1));
b2.m_sweep.c.x = (b2.m_sweep.c.x + ((invMass2 * limitImpulse) * m_motorJacobian.linear2.x));
b2.m_sweep.c.y = (b2.m_sweep.c.y + ((invMass2 * limitImpulse) * m_motorJacobian.linear2.y));
b2.m_sweep.a = (b2.m_sweep.a + ((invI2 * limitImpulse) * m_motorJacobian.angular2));
b1.SynchronizeTransform();
b2.SynchronizeTransform();
};
return ((((positionError <= b2Settings.b2_linearSlop)) && ((angularError <= b2Settings.b2_angularSlop))));
}
public function SetMotorSpeed(speed:Number):void{
m_motorSpeed = speed;
}
public function GetJointSpeed():Number{
var tMat:b2Mat22;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var p1X:Number = (b1.m_sweep.c.x + r1X);
var p1Y:Number = (b1.m_sweep.c.y + r1Y);
var p2X:Number = (b2.m_sweep.c.x + r2X);
var p2Y:Number = (b2.m_sweep.c.y + r2Y);
var dX:Number = (p2X - p1X);
var dY:Number = (p2Y - p1Y);
var axis:b2Vec2 = b1.GetWorldVector(m_localXAxis1);
var v1:b2Vec2 = b1.m_linearVelocity;
var v2:b2Vec2 = b2.m_linearVelocity;
var w1:Number = b1.m_angularVelocity;
var w2:Number = b2.m_angularVelocity;
var speed:Number = (((dX * (-(w1) * axis.y)) + (dY * (w1 * axis.x))) + ((axis.x * (((v2.x + (-(w2) * r2Y)) - v1.x) - (-(w1) * r1Y))) + (axis.y * (((v2.y + (w2 * r2X)) - v1.y) - (w1 * r1X)))));
return (speed);
}
override public function InitVelocityConstraints(step:b2TimeStep):void{
var tMat:b2Mat22;
var tX:Number;
var ax1X:Number;
var ax1Y:Number;
var dX:Number;
var dY:Number;
var jointTranslation:Number;
var P1X:Number;
var P1Y:Number;
var P2X:Number;
var P2Y:Number;
var L1:Number;
var L2:Number;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var invMass1:Number = b1.m_invMass;
var invMass2:Number = b2.m_invMass;
var invI1:Number = b1.m_invI;
var invI2:Number = b2.m_invI;
tMat = b1.m_xf.R;
var ay1X:Number = ((tMat.col1.x * m_localYAxis1.x) + (tMat.col2.x * m_localYAxis1.y));
var ay1Y:Number = ((tMat.col1.y * m_localYAxis1.x) + (tMat.col2.y * m_localYAxis1.y));
var eX:Number = ((b2.m_sweep.c.x + r2X) - b1.m_sweep.c.x);
var eY:Number = ((b2.m_sweep.c.y + r2Y) - b1.m_sweep.c.y);
m_linearJacobian.linear1.x = -(ay1X);
m_linearJacobian.linear1.y = -(ay1Y);
m_linearJacobian.linear2.x = ay1X;
m_linearJacobian.linear2.y = ay1Y;
m_linearJacobian.angular1 = -(((eX * ay1Y) - (eY * ay1X)));
m_linearJacobian.angular2 = ((r2X * ay1Y) - (r2Y * ay1X));
m_linearMass = (((invMass1 + ((invI1 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + invMass2) + ((invI2 * m_linearJacobian.angular2) * m_linearJacobian.angular2));
m_linearMass = (1 / m_linearMass);
m_angularMass = (invI1 + invI2);
if (m_angularMass > Number.MIN_VALUE){
m_angularMass = (1 / m_angularMass);
};
if (((m_enableLimit) || (m_enableMotor))){
tMat = b1.m_xf.R;
ax1X = ((tMat.col1.x * m_localXAxis1.x) + (tMat.col2.x * m_localXAxis1.y));
ax1Y = ((tMat.col1.y * m_localXAxis1.x) + (tMat.col2.y * m_localXAxis1.y));
m_motorJacobian.linear1.x = -(ax1X);
m_motorJacobian.linear1.y = -(ax1Y);
m_motorJacobian.linear2.x = ax1X;
m_motorJacobian.linear2.y = ax1Y;
m_motorJacobian.angular1 = -(((eX * ax1Y) - (eY * ax1X)));
m_motorJacobian.angular2 = ((r2X * ax1Y) - (r2Y * ax1X));
m_motorMass = (((invMass1 + ((invI1 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + invMass2) + ((invI2 * m_motorJacobian.angular2) * m_motorJacobian.angular2));
m_motorMass = (1 / m_motorMass);
if (m_enableLimit){
dX = (eX - r1X);
dY = (eY - r1Y);
jointTranslation = ((ax1X * dX) + (ax1Y * dY));
if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){
m_limitState = e_equalLimits;
} else {
if (jointTranslation <= m_lowerTranslation){
if (m_limitState != e_atLowerLimit){
m_limitForce = 0;
};
m_limitState = e_atLowerLimit;
} else {
if (jointTranslation >= 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 (step.warmStarting){
P1X = (step.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x)));
P1Y = (step.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y)));
P2X = (step.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x)));
P2Y = (step.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y)));
L1 = (step.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1)));
L2 = (step.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2)));
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + (invMass1 * P1X));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + (invMass1 * P1Y));
b1.m_angularVelocity = (b1.m_angularVelocity + (invI1 * L1));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (invMass2 * P2X));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (invMass2 * P2Y));
b2.m_angularVelocity = (b2.m_angularVelocity + (invI2 * L2));
} else {
m_force = 0;
m_torque = 0;
m_limitForce = 0;
m_motorForce = 0;
};
m_limitPositionImpulse = 0;
}
public function GetMotorForce():Number{
return (m_motorForce);
}
public function EnableLimit(flag:Boolean):void{
m_enableLimit = flag;
}
public function SetMaxMotorForce(force:Number):void{
m_maxMotorForce = force;
}
override public function GetReactionTorque():Number{
return (m_torque);
}
public function IsLimitEnabled():Boolean{
return (m_enableLimit);
}
public function IsMotorEnabled():Boolean{
return (m_enableMotor);
}
public function SetLimits(lower:Number, upper:Number):void{
m_lowerTranslation = lower;
m_upperTranslation = upper;
}
}
}//package Box2D.Dynamics.Joints
Section 60
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PrismaticJointDef extends b2JointDef {
public var motorSpeed:Number;
public var localAxis1:b2Vec2;
public var referenceAngle:Number;
public var upperTranslation:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var enableLimit:Boolean;
public var enableMotor:Boolean;
public var maxMotorForce:Number;
public var lowerTranslation:Number;
public function b2PrismaticJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
localAxis1 = new b2Vec2();
super();
type = b2Joint.e_prismaticJoint;
localAxis1.Set(1, 0);
referenceAngle = 0;
enableLimit = false;
lowerTranslation = 0;
upperTranslation = 0;
enableMotor = false;
maxMotorForce = 0;
motorSpeed = 0;
}
public function Initialize(b1:b2Body, b2:b2Body, anchor:b2Vec2, axis:b2Vec2):void{
body1 = b1;
body2 = b2;
localAnchor1 = body1.GetLocalPoint(anchor);
localAnchor2 = body2.GetLocalPoint(anchor);
localAxis1 = body1.GetLocalVector(axis);
referenceAngle = (body2.GetAngle() - body1.GetAngle());
}
}
}//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PulleyJoint extends b2Joint {
public var m_limitState1:int;
public var m_limitState2:int;
public var m_ground:b2Body;
public var m_maxLength2:Number;
public var m_maxLength1:Number;
public var m_limitPositionImpulse1:Number;
public var m_limitPositionImpulse2:Number;
public var m_force:Number;
public var m_constant:Number;
public var m_positionImpulse:Number;
public var m_state:int;
public var m_ratio:Number;
public var m_groundAnchor1:b2Vec2;
public var m_groundAnchor2:b2Vec2;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_limitMass1:Number;
public var m_limitMass2:Number;
public var m_pulleyMass:Number;
public var m_u1:b2Vec2;
public var m_limitForce1:Number;
public var m_limitForce2:Number;
public var m_u2:b2Vec2;
public static const b2_minPulleyLength:Number = 2;
public function b2PulleyJoint(def:b2PulleyJointDef){
var tMat:b2Mat22;
var tX:Number;
var tY: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(def);
m_ground = m_body1.m_world.m_groundBody;
m_groundAnchor1.x = (def.groundAnchor1.x - m_ground.m_xf.position.x);
m_groundAnchor1.y = (def.groundAnchor1.y - m_ground.m_xf.position.y);
m_groundAnchor2.x = (def.groundAnchor2.x - m_ground.m_xf.position.x);
m_groundAnchor2.y = (def.groundAnchor2.y - m_ground.m_xf.position.y);
m_localAnchor1.SetV(def.localAnchor1);
m_localAnchor2.SetV(def.localAnchor2);
m_ratio = def.ratio;
m_constant = (def.length1 + (m_ratio * def.length2));
m_maxLength1 = b2Math.b2Min(def.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength)));
m_maxLength2 = b2Math.b2Min(def.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio));
m_force = 0;
m_limitForce1 = 0;
m_limitForce2 = 0;
}
public function GetGroundAnchor2():b2Vec2{
var a:b2Vec2 = m_ground.m_xf.position.Copy();
a.Add(m_groundAnchor2);
return (a);
}
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 F:b2Vec2 = m_u2.Copy();
F.Multiply(m_force);
return (F);
}
override public function SolvePositionConstraints():Boolean{
var tMat:b2Mat22;
var r1X:Number;
var r1Y:Number;
var r2X:Number;
var r2Y:Number;
var p1X:Number;
var p1Y:Number;
var p2X:Number;
var p2Y:Number;
var length1:Number;
var length2:Number;
var C:Number;
var impulse:Number;
var oldImpulse:Number;
var oldLimitPositionImpulse:Number;
var tX:Number;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
var s1X:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var s1Y:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var s2X:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var s2Y:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
var linearError:Number = 0;
if (m_state == e_atUpperLimit){
tMat = b1.m_xf.R;
r1X = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
r1Y = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
r2X = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
r2Y = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
p1X = (b1.m_sweep.c.x + r1X);
p1Y = (b1.m_sweep.c.y + r1Y);
p2X = (b2.m_sweep.c.x + r2X);
p2Y = (b2.m_sweep.c.y + r2Y);
m_u1.Set((p1X - s1X), (p1Y - s1Y));
m_u2.Set((p2X - s2X), (p2Y - s2Y));
length1 = m_u1.Length();
length2 = m_u2.Length();
if (length1 > b2Settings.b2_linearSlop){
m_u1.Multiply((1 / length1));
} else {
m_u1.SetZero();
};
if (length2 > b2Settings.b2_linearSlop){
m_u2.Multiply((1 / length2));
} else {
m_u2.SetZero();
};
C = ((m_constant - length1) - (m_ratio * length2));
linearError = b2Math.b2Max(linearError, -(C));
C = b2Math.b2Clamp((C + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
impulse = (-(m_pulleyMass) * C);
oldImpulse = m_positionImpulse;
m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + impulse));
impulse = (m_positionImpulse - oldImpulse);
p1X = (-(impulse) * m_u1.x);
p1Y = (-(impulse) * m_u1.y);
p2X = ((-(m_ratio) * impulse) * m_u2.x);
p2Y = ((-(m_ratio) * impulse) * m_u2.y);
b1.m_sweep.c.x = (b1.m_sweep.c.x + (b1.m_invMass * p1X));
b1.m_sweep.c.y = (b1.m_sweep.c.y + (b1.m_invMass * p1Y));
b1.m_sweep.a = (b1.m_sweep.a + (b1.m_invI * ((r1X * p1Y) - (r1Y * p1X))));
b2.m_sweep.c.x = (b2.m_sweep.c.x + (b2.m_invMass * p2X));
b2.m_sweep.c.y = (b2.m_sweep.c.y + (b2.m_invMass * p2Y));
b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * ((r2X * p2Y) - (r2Y * p2X))));
b1.SynchronizeTransform();
b2.SynchronizeTransform();
};
if (m_limitState1 == e_atUpperLimit){
tMat = b1.m_xf.R;
r1X = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
r1Y = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
p1X = (b1.m_sweep.c.x + r1X);
p1Y = (b1.m_sweep.c.y + r1Y);
m_u1.Set((p1X - s1X), (p1Y - s1Y));
length1 = m_u1.Length();
if (length1 > b2Settings.b2_linearSlop){
m_u1.x = (m_u1.x * (1 / length1));
m_u1.y = (m_u1.y * (1 / length1));
} else {
m_u1.SetZero();
};
C = (m_maxLength1 - length1);
linearError = b2Math.b2Max(linearError, -(C));
C = b2Math.b2Clamp((C + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
impulse = (-(m_limitMass1) * C);
oldLimitPositionImpulse = m_limitPositionImpulse1;
m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + impulse));
impulse = (m_limitPositionImpulse1 - oldLimitPositionImpulse);
p1X = (-(impulse) * m_u1.x);
p1Y = (-(impulse) * m_u1.y);
b1.m_sweep.c.x = (b1.m_sweep.c.x + (b1.m_invMass * p1X));
b1.m_sweep.c.y = (b1.m_sweep.c.y + (b1.m_invMass * p1Y));
b1.m_sweep.a = (b1.m_sweep.a + (b1.m_invI * ((r1X * p1Y) - (r1Y * p1X))));
b1.SynchronizeTransform();
};
if (m_limitState2 == e_atUpperLimit){
tMat = b2.m_xf.R;
r2X = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
r2Y = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
p2X = (b2.m_sweep.c.x + r2X);
p2Y = (b2.m_sweep.c.y + r2Y);
m_u2.Set((p2X - s2X), (p2Y - s2Y));
length2 = m_u2.Length();
if (length2 > b2Settings.b2_linearSlop){
m_u2.x = (m_u2.x * (1 / length2));
m_u2.y = (m_u2.y * (1 / length2));
} else {
m_u2.SetZero();
};
C = (m_maxLength2 - length2);
linearError = b2Math.b2Max(linearError, -(C));
C = b2Math.b2Clamp((C + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
impulse = (-(m_limitMass2) * C);
oldLimitPositionImpulse = m_limitPositionImpulse2;
m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + impulse));
impulse = (m_limitPositionImpulse2 - oldLimitPositionImpulse);
p2X = (-(impulse) * m_u2.x);
p2Y = (-(impulse) * m_u2.y);
b2.m_sweep.c.x = (b2.m_sweep.c.x + (b2.m_invMass * p2X));
b2.m_sweep.c.y = (b2.m_sweep.c.y + (b2.m_invMass * p2Y));
b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * ((r2X * p2Y) - (r2Y * p2X))));
b2.SynchronizeTransform();
};
return ((linearError < b2Settings.b2_linearSlop));
}
override public function InitVelocityConstraints(step:b2TimeStep):void{
var tMat:b2Mat22;
var P1X:Number;
var P1Y:Number;
var P2X:Number;
var P2Y:Number;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var p1X:Number = (b1.m_sweep.c.x + r1X);
var p1Y:Number = (b1.m_sweep.c.y + r1Y);
var p2X:Number = (b2.m_sweep.c.x + r2X);
var p2Y:Number = (b2.m_sweep.c.y + r2Y);
var s1X:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var s1Y:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var s2X:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var s2Y:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
m_u1.Set((p1X - s1X), (p1Y - s1Y));
m_u2.Set((p2X - s2X), (p2Y - s2Y));
var length1:Number = m_u1.Length();
var length2:Number = m_u2.Length();
if (length1 > b2Settings.b2_linearSlop){
m_u1.Multiply((1 / length1));
} else {
m_u1.SetZero();
};
if (length2 > b2Settings.b2_linearSlop){
m_u2.Multiply((1 / length2));
} else {
m_u2.SetZero();
};
var C:Number = ((m_constant - length1) - (m_ratio * length2));
if (C > 0){
m_state = e_inactiveLimit;
m_force = 0;
} else {
m_state = e_atUpperLimit;
m_positionImpulse = 0;
};
if (length1 < m_maxLength1){
m_limitState1 = e_inactiveLimit;
m_limitForce1 = 0;
} else {
m_limitState1 = e_atUpperLimit;
m_limitPositionImpulse1 = 0;
};
if (length2 < m_maxLength2){
m_limitState2 = e_inactiveLimit;
m_limitForce2 = 0;
} else {
m_limitState2 = e_atUpperLimit;
m_limitPositionImpulse2 = 0;
};
var cr1u1:Number = ((r1X * m_u1.y) - (r1Y * m_u1.x));
var cr2u2:Number = ((r2X * m_u2.y) - (r2Y * m_u2.x));
m_limitMass1 = (b1.m_invMass + ((b1.m_invI * cr1u1) * cr1u1));
m_limitMass2 = (b2.m_invMass + ((b2.m_invI * cr2u2) * cr2u2));
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 (step.warmStarting){
P1X = ((step.dt * (-(m_force) - m_limitForce1)) * m_u1.x);
P1Y = ((step.dt * (-(m_force) - m_limitForce1)) * m_u1.y);
P2X = ((step.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x);
P2Y = ((step.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + (b1.m_invMass * P1X));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + (b1.m_invMass * P1Y));
b1.m_angularVelocity = (b1.m_angularVelocity + (b1.m_invI * ((r1X * P1Y) - (r1Y * P1X))));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * P2X));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * P2Y));
b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * P2Y) - (r2Y * P2X))));
} else {
m_force = 0;
m_limitForce1 = 0;
m_limitForce2 = 0;
};
}
override public function GetReactionTorque():Number{
return (0);
}
public function GetRatio():Number{
return (m_ratio);
}
override public function SolveVelocityConstraints(step:b2TimeStep):void{
var tMat:b2Mat22;
var v1X:Number;
var v1Y:Number;
var v2X:Number;
var v2Y:Number;
var P1X:Number;
var P1Y:Number;
var P2X:Number;
var P2Y:Number;
var Cdot:Number;
var force:Number;
var oldForce:Number;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
if (m_state == e_atUpperLimit){
v1X = (b1.m_linearVelocity.x + (-(b1.m_angularVelocity) * r1Y));
v1Y = (b1.m_linearVelocity.y + (b1.m_angularVelocity * r1X));
v2X = (b2.m_linearVelocity.x + (-(b2.m_angularVelocity) * r2Y));
v2Y = (b2.m_linearVelocity.y + (b2.m_angularVelocity * r2X));
Cdot = (-(((m_u1.x * v1X) + (m_u1.y * v1Y))) - (m_ratio * ((m_u2.x * v2X) + (m_u2.y * v2Y))));
force = ((-(step.inv_dt) * m_pulleyMass) * Cdot);
oldForce = m_force;
m_force = b2Math.b2Max(0, (m_force + force));
force = (m_force - oldForce);
P1X = ((-(step.dt) * force) * m_u1.x);
P1Y = ((-(step.dt) * force) * m_u1.y);
P2X = (((-(step.dt) * m_ratio) * force) * m_u2.x);
P2Y = (((-(step.dt) * m_ratio) * force) * m_u2.y);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + (b1.m_invMass * P1X));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + (b1.m_invMass * P1Y));
b1.m_angularVelocity = (b1.m_angularVelocity + (b1.m_invI * ((r1X * P1Y) - (r1Y * P1X))));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * P2X));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * P2Y));
b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * P2Y) - (r2Y * P2X))));
};
if (m_limitState1 == e_atUpperLimit){
v1X = (b1.m_linearVelocity.x + (-(b1.m_angularVelocity) * r1Y));
v1Y = (b1.m_linearVelocity.y + (b1.m_angularVelocity * r1X));
Cdot = -(((m_u1.x * v1X) + (m_u1.y * v1Y)));
force = ((-(step.inv_dt) * m_limitMass1) * Cdot);
oldForce = m_limitForce1;
m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + force));
force = (m_limitForce1 - oldForce);
P1X = ((-(step.dt) * force) * m_u1.x);
P1Y = ((-(step.dt) * force) * m_u1.y);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x + (b1.m_invMass * P1X));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y + (b1.m_invMass * P1Y));
b1.m_angularVelocity = (b1.m_angularVelocity + (b1.m_invI * ((r1X * P1Y) - (r1Y * P1X))));
};
if (m_limitState2 == e_atUpperLimit){
v2X = (b2.m_linearVelocity.x + (-(b2.m_angularVelocity) * r2Y));
v2Y = (b2.m_linearVelocity.y + (b2.m_angularVelocity * r2X));
Cdot = -(((m_u2.x * v2X) + (m_u2.y * v2Y)));
force = ((-(step.inv_dt) * m_limitMass2) * Cdot);
oldForce = m_limitForce2;
m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + force));
force = (m_limitForce2 - oldForce);
P2X = ((-(step.dt) * force) * m_u2.x);
P2Y = ((-(step.dt) * force) * m_u2.y);
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * P2X));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * P2Y));
b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * P2Y) - (r2Y * P2X))));
};
}
public function GetLength1():Number{
var p:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1);
var sX:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var sY:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var dX:Number = (p.x - sX);
var dY:Number = (p.y - sY);
return (Math.sqrt(((dX * dX) + (dY * dY))));
}
public function GetLength2():Number{
var p:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2);
var sX:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var sY:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
var dX:Number = (p.x - sX);
var dY:Number = (p.y - sY);
return (Math.sqrt(((dX * dX) + (dY * dY))));
}
public function GetGroundAnchor1():b2Vec2{
var a:b2Vec2 = m_ground.m_xf.position.Copy();
a.Add(m_groundAnchor1);
return (a);
}
}
}//package Box2D.Dynamics.Joints
Section 62
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PulleyJointDef extends b2JointDef {
public var maxLength1:Number;
public var maxLength2:Number;
public var length1:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var groundAnchor1:b2Vec2;
public var groundAnchor2:b2Vec2;
public var ratio:Number;
public var length2:Number;
public function b2PulleyJointDef(){
groundAnchor1 = new b2Vec2();
groundAnchor2 = new b2Vec2();
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_pulleyJoint;
groundAnchor1.Set(-1, 1);
groundAnchor2.Set(1, 1);
localAnchor1.Set(-1, 0);
localAnchor2.Set(1, 0);
length1 = 0;
maxLength1 = 0;
length2 = 0;
maxLength2 = 0;
ratio = 1;
collideConnected = true;
}
public function Initialize(b1:b2Body, b2:b2Body, ga1:b2Vec2, ga2:b2Vec2, anchor1:b2Vec2, anchor2:b2Vec2, r:Number):void{
body1 = b1;
body2 = b2;
groundAnchor1.SetV(ga1);
groundAnchor2.SetV(ga2);
localAnchor1 = body1.GetLocalPoint(anchor1);
localAnchor2 = body2.GetLocalPoint(anchor2);
var d1X:Number = (anchor1.x - ga1.x);
var d1Y:Number = (anchor1.y - ga1.y);
length1 = Math.sqrt(((d1X * d1X) + (d1Y * d1Y)));
var d2X:Number = (anchor2.x - ga2.x);
var d2Y:Number = (anchor2.y - ga2.y);
length2 = Math.sqrt(((d2X * d2X) + (d2Y * d2Y)));
ratio = r;
var C:Number = (length1 + (ratio * length2));
maxLength1 = (C - (ratio * b2PulleyJoint.b2_minPulleyLength));
maxLength2 = ((C - b2PulleyJoint.b2_minPulleyLength) / ratio);
}
}
}//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2RevoluteJoint extends b2Joint {
public var m_limitForce:Number;
public var m_pivotMass:b2Mat22;
public var m_motorForce:Number;
public var m_enableLimit:Boolean;
public var m_limitState:int;
public var m_motorMass:Number;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
private var K1:b2Mat22;
private var K2:b2Mat22;
private var K3:b2Mat22;
private var K:b2Mat22;
public var m_pivotForce:b2Vec2;
public var m_enableMotor:Boolean;
public var m_referenceAngle:Number;
public var m_limitPositionImpulse:Number;
public var m_motorSpeed:Number;
public var m_upperAngle:Number;
public var m_lowerAngle:Number;
public var m_maxMotorTorque:Number;
public static var tImpulse:b2Vec2 = new b2Vec2();
public function b2RevoluteJoint(def: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(def);
m_localAnchor1.SetV(def.localAnchor1);
m_localAnchor2.SetV(def.localAnchor2);
m_referenceAngle = def.referenceAngle;
m_pivotForce.Set(0, 0);
m_motorForce = 0;
m_limitForce = 0;
m_limitPositionImpulse = 0;
m_lowerAngle = def.lowerAngle;
m_upperAngle = def.upperAngle;
m_maxMotorTorque = def.maxMotorTorque;
m_motorSpeed = def.motorSpeed;
m_enableLimit = def.enableLimit;
m_enableMotor = def.enableMotor;
}
override public function SolveVelocityConstraints(step:b2TimeStep):void{
var tMat:b2Mat22;
var tX:Number;
var oldLimitForce:Number;
var PY:Number;
var motorCdot:Number;
var motorForce:Number;
var oldMotorForce:Number;
var limitCdot:Number;
var limitForce:Number;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var pivotCdotX:Number = (((b2.m_linearVelocity.x + (-(b2.m_angularVelocity) * r2Y)) - b1.m_linearVelocity.x) - (-(b1.m_angularVelocity) * r1Y));
var pivotCdotY:Number = (((b2.m_linearVelocity.y + (b2.m_angularVelocity * r2X)) - b1.m_linearVelocity.y) - (b1.m_angularVelocity * r1X));
var pivotForceX:Number = (-(step.inv_dt) * ((m_pivotMass.col1.x * pivotCdotX) + (m_pivotMass.col2.x * pivotCdotY)));
var pivotForceY:Number = (-(step.inv_dt) * ((m_pivotMass.col1.y * pivotCdotX) + (m_pivotMass.col2.y * pivotCdotY)));
m_pivotForce.x = (m_pivotForce.x + pivotForceX);
m_pivotForce.y = (m_pivotForce.y + pivotForceY);
var PX:Number = (step.dt * pivotForceX);
PY = (step.dt * pivotForceY);
b1.m_linearVelocity.x = (b1.m_linearVelocity.x - (b1.m_invMass * PX));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y - (b1.m_invMass * PY));
b1.m_angularVelocity = (b1.m_angularVelocity - (b1.m_invI * ((r1X * PY) - (r1Y * PX))));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + (b2.m_invMass * PX));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + (b2.m_invMass * PY));
b2.m_angularVelocity = (b2.m_angularVelocity + (b2.m_invI * ((r2X * PY) - (r2Y * PX))));
if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
motorCdot = ((b2.m_angularVelocity - b1.m_angularVelocity) - m_motorSpeed);
motorForce = ((-(step.inv_dt) * m_motorMass) * motorCdot);
oldMotorForce = m_motorForce;
m_motorForce = b2Math.b2Clamp((m_motorForce + motorForce), -(m_maxMotorTorque), m_maxMotorTorque);
motorForce = (m_motorForce - oldMotorForce);
b1.m_angularVelocity = (b1.m_angularVelocity - ((b1.m_invI * step.dt) * motorForce));
b2.m_angularVelocity = (b2.m_angularVelocity + ((b2.m_invI * step.dt) * motorForce));
};
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
limitCdot = (b2.m_angularVelocity - b1.m_angularVelocity);
limitForce = ((-(step.inv_dt) * m_motorMass) * limitCdot);
if (m_limitState == e_equalLimits){
m_limitForce = (m_limitForce + limitForce);
} else {
if (m_limitState == e_atLowerLimit){
oldLimitForce = m_limitForce;
m_limitForce = b2Math.b2Max((m_limitForce + limitForce), 0);
limitForce = (m_limitForce - oldLimitForce);
} else {
if (m_limitState == e_atUpperLimit){
oldLimitForce = m_limitForce;
m_limitForce = b2Math.b2Min((m_limitForce + limitForce), 0);
limitForce = (m_limitForce - oldLimitForce);
};
};
};
b1.m_angularVelocity = (b1.m_angularVelocity - ((b1.m_invI * step.dt) * limitForce));
b2.m_angularVelocity = (b2.m_angularVelocity + ((b2.m_invI * step.dt) * limitForce));
};
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
public function GetUpperLimit():Number{
return (m_upperAngle);
}
public function GetLowerLimit():Number{
return (m_lowerAngle);
}
public function EnableMotor(flag:Boolean):void{
m_enableMotor = flag;
}
public function GetMotorSpeed():Number{
return (m_motorSpeed);
}
override public function GetReactionForce():b2Vec2{
return (m_pivotForce);
}
override public function SolvePositionConstraints():Boolean{
var oldLimitImpulse:Number;
var limitC:Number;
var tMat:b2Mat22;
var angle:Number;
var limitImpulse:Number;
var b1:b2Body = m_body1;
var b2:b2Body = m_body2;
var positionError:Number = 0;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
var r1Y:Number = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
var tX:Number = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var p1X:Number = (b1.m_sweep.c.x + r1X);
var p1Y:Number = (b1.m_sweep.c.y + r1Y);
var p2X:Number = (b2.m_sweep.c.x + r2X);
var p2Y:Number = (b2.m_sweep.c.y + r2Y);
var ptpCX:Number = (p2X - p1X);
var ptpCY:Number = (p2Y - p1Y);
positionError = Math.sqrt(((ptpCX * ptpCX) + (ptpCY * ptpCY)));
var invMass1:Number = b1.m_invMass;
var invMass2:Number = b2.m_invMass;
var invI1:Number = b1.m_invI;
var invI2:Number = b2.m_invI;
K1.col1.x = (invMass1 + invMass2);
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = (invMass1 + invMass2);
K2.col1.x = ((invI1 * r1Y) * r1Y);
K2.col2.x = ((-(invI1) * r1X) * r1Y);
K2.col1.y = ((-(invI1) * r1X) * r1Y);
K2.col2.y = ((invI1 * r1X) * r1X);
K3.col1.x = ((invI2 * r2Y) * r2Y);
K3.col2.x = ((-(invI2) * r2X) * r2Y);
K3.col1.y = ((-(invI2) * r2X) * r2Y);
K3.col2.y = ((invI2 * r2X) * r2X);
K.SetM(K1);
K.AddM(K2);
K.AddM(K3);
K.Solve(tImpulse, -(ptpCX), -(ptpCY));
var impulseX:Number = tImpulse.x;
var impulseY:Number = tImpulse.y;
b1.m_sweep.c.x = (b1.m_sweep.c.x - (b1.m_invMass * impulseX));
b1.m_sweep.c.y = (b1.m_sweep.c.y - (b1.m_invMass * impulseY));
b1.m_sweep.a = (b1.m_sweep.a - (b1.m_invI * ((r1X * impulseY) - (r1Y * impulseX))));
b2.m_sweep.c.x = (b2.m_sweep.c.x + (b2.m_invMass * impulseX));
b2.m_sweep.c.y = (b2.m_sweep.c.y + (b2.m_invMass * impulseY));
b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * ((r2X * impulseY) - (r2Y * impulseX))));
b1.SynchronizeTransform();
b2.SynchronizeTransform();
var angularError:Number = 0;
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
angle = ((b2.m_sweep.a - b1.m_sweep.a) - m_referenceAngle);
limitImpulse = 0;
if (m_limitState == e_equalLimits){
limitC = b2Math.b2Clamp(angle, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
limitImpulse = (-(m_motorMass) * limitC);
angularError = b2Math.b2Abs(limitC);
} else {
if (m_limitState == e_atLowerLimit){
limitC = (angle - m_lowerAngle);
angularError = b2Math.b2Max(0, -(limitC));
limitC = b2Math.b2Clamp((limitC + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0);
limitImpulse = (-(m_motorMass) * limitC);
oldLimitImpulse = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + limitImpulse), 0);
limitImpulse = (m_limitPositionImpulse - oldLimitImpulse);
} else {
if (m_limitState == e_atUpperLimit){
limitC = (angle - m_upperAngle);
angularError = b2Math.b2Max(0, limitC);
limitC = b2Math.b2Clamp((limitC - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection);
limitImpulse = (-(m_motorMass) * limitC);
oldLimitImpulse = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + limitImpulse), 0);
limitImpulse = (m_limitPositionImpulse - oldLimitImpulse);
};
};
};
b1.m_sweep.a = (b1.m_sweep.a - (b1.m_invI * limitImpulse));
b2.m_sweep.a = (b2.m_sweep.a + (b2.m_invI * limitImpulse));
b1.SynchronizeTransform();
b2.SynchronizeTransform();
};
return ((((positionError <= b2Settings.b2_linearSlop)) && ((angularError <= b2Settings.b2_angularSlop))));
}
public function SetMotorSpeed(speed:Number):void{
m_motorSpeed = speed;
}
public function GetJointSpeed():Number{
return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity));
}
public function SetMaxMotorTorque(torque:Number):void{
m_maxMotorTorque = torque;
}
public function GetJointAngle():Number{
return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle));
}
public function GetMotorTorque():Number{
return (m_motorForce);
}
override public function InitVelocityConstraints(step:b2TimeStep):void{
var b1:b2Body;
var b2:b2Body;
var tMat:b2Mat22;
var tX:Number;
var r1Y:Number;
var jointAngle:Number;
b1 = m_body1;
b2 = m_body2;
tMat = b1.m_xf.R;
var r1X:Number = (m_localAnchor1.x - b1.m_sweep.localCenter.x);
r1Y = (m_localAnchor1.y - b1.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r1X) + (tMat.col2.x * r1Y));
r1Y = ((tMat.col1.y * r1X) + (tMat.col2.y * r1Y));
r1X = tX;
tMat = b2.m_xf.R;
var r2X:Number = (m_localAnchor2.x - b2.m_sweep.localCenter.x);
var r2Y:Number = (m_localAnchor2.y - b2.m_sweep.localCenter.y);
tX = ((tMat.col1.x * r2X) + (tMat.col2.x * r2Y));
r2Y = ((tMat.col1.y * r2X) + (tMat.col2.y * r2Y));
r2X = tX;
var invMass1:Number = b1.m_invMass;
var invMass2:Number = b2.m_invMass;
var invI1:Number = b1.m_invI;
var invI2:Number = b2.m_invI;
K1.col1.x = (invMass1 + invMass2);
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = (invMass1 + invMass2);
K2.col1.x = ((invI1 * r1Y) * r1Y);
K2.col2.x = ((-(invI1) * r1X) * r1Y);
K2.col1.y = ((-(invI1) * r1X) * r1Y);
K2.col2.y = ((invI1 * r1X) * r1X);
K3.col1.x = ((invI2 * r2Y) * r2Y);
K3.col2.x = ((-(invI2) * r2X) * r2Y);
K3.col1.y = ((-(invI2) * r2X) * r2Y);
K3.col2.y = ((invI2 * r2X) * r2X);
K.SetM(K1);
K.AddM(K2);
K.AddM(K3);
K.Invert(m_pivotMass);
m_motorMass = (1 / (invI1 + invI2));
if (m_enableMotor == false){
m_motorForce = 0;
};
if (m_enableLimit){
jointAngle = ((b2.m_sweep.a - b1.m_sweep.a) - m_referenceAngle);
if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){
m_limitState = e_equalLimits;
} else {
if (jointAngle <= m_lowerAngle){
if (m_limitState != e_atLowerLimit){
m_limitForce = 0;
};
m_limitState = e_atLowerLimit;
} else {
if (jointAngle >= 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 (step.warmStarting){
b1.m_linearVelocity.x = (b1.m_linearVelocity.x - ((step.dt * invMass1) * m_pivotForce.x));
b1.m_linearVelocity.y = (b1.m_linearVelocity.y - ((step.dt * invMass1) * m_pivotForce.y));
b1.m_angularVelocity = (b1.m_angularVelocity - ((step.dt * invI1) * ((((r1X * m_pivotForce.y) - (r1Y * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
b2.m_linearVelocity.x = (b2.m_linearVelocity.x + ((step.dt * invMass2) * m_pivotForce.x));
b2.m_linearVelocity.y = (b2.m_linearVelocity.y + ((step.dt * invMass2) * m_pivotForce.y));
b2.m_angularVelocity = (b2.m_angularVelocity + ((step.dt * invI2) * ((((r2X * m_pivotForce.y) - (r2Y * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
} else {
m_pivotForce.SetZero();
m_motorForce = 0;
m_limitForce = 0;
};
m_limitPositionImpulse = 0;
}
public function EnableLimit(flag:Boolean):void{
m_enableLimit = flag;
}
override public function GetReactionTorque():Number{
return (m_limitForce);
}
public function IsLimitEnabled():Boolean{
return (m_enableLimit);
}
public function IsMotorEnabled():Boolean{
return (m_enableMotor);
}
public function SetLimits(lower:Number, upper:Number):void{
m_lowerAngle = lower;
m_upperAngle = upper;
}
}
}//package Box2D.Dynamics.Joints
Section 64
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2RevoluteJointDef extends b2JointDef {
public var upperAngle:Number;
public var enableMotor:Boolean;
public var referenceAngle:Number;
public var motorSpeed:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var enableLimit:Boolean;
public var lowerAngle:Number;
public var maxMotorTorque:Number;
public function b2RevoluteJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_revoluteJoint;
localAnchor1.Set(0, 0);
localAnchor2.Set(0, 0);
referenceAngle = 0;
lowerAngle = 0;
upperAngle = 0;
maxMotorTorque = 0;
motorSpeed = 0;
enableLimit = false;
enableMotor = false;
}
public function Initialize(b1:b2Body, b2:b2Body, anchor:b2Vec2):void{
body1 = b1;
body2 = b2;
localAnchor1 = body1.GetLocalPoint(anchor);
localAnchor2 = body2.GetLocalPoint(anchor);
referenceAngle = (body2.GetAngle() - body1.GetAngle());
}
}
}//package Box2D.Dynamics.Joints
Section 65
//b2Body (Box2D.Dynamics.b2Body)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import Box2D.Dynamics.Contacts.*;
public class b2Body {
public var m_next:b2Body;
public var m_xf:b2XForm;
public var m_contactList:b2ContactEdge;
public var m_angularVelocity:Number;
public var m_shapeList:b2Shape;
public var m_force:b2Vec2;
public var m_mass:Number;
public var m_sweep:b2Sweep;
public var m_torque:Number;
public var m_userData;
public var m_flags:uint;
public var m_world:b2World;
public var m_prev:b2Body;
public var m_invMass:Number;
public var m_type:int;
public var m_linearDamping:Number;
public var m_shapeCount:int;
public var m_angularDamping:Number;
public var m_invI:Number;
public var m_linearVelocity:b2Vec2;
public var m_sleepTime:Number;
public var m_jointList:b2JointEdge;
public var m_I:Number;
public static var e_fixedRotationFlag:uint = 64;
public static var e_frozenFlag:uint = 2;
public static var e_maxTypes:uint = 3;
public static var e_sleepFlag:uint = 8;
private static var s_massData:b2MassData = new b2MassData();
public static var e_bulletFlag:uint = 32;
public static var e_staticType:uint = 1;
public static var e_islandFlag:uint = 4;
public static var e_allowSleepFlag:uint = 16;
private static var s_xf1:b2XForm = new b2XForm();
public static var e_dynamicType:uint = 2;
public function b2Body(bd:b2BodyDef, world:b2World){
m_xf = new b2XForm();
m_sweep = new b2Sweep();
m_linearVelocity = new b2Vec2();
m_force = new b2Vec2();
super();
m_flags = 0;
if (bd.isBullet){
m_flags = (m_flags | e_bulletFlag);
};
if (bd.fixedRotation){
m_flags = (m_flags | e_fixedRotationFlag);
};
if (bd.allowSleep){
m_flags = (m_flags | e_allowSleepFlag);
};
if (bd.isSleeping){
m_flags = (m_flags | e_sleepFlag);
};
m_world = world;
m_xf.position.SetV(bd.position);
m_xf.R.Set(bd.angle);
m_sweep.localCenter.SetV(bd.massData.center);
m_sweep.t0 = 1;
m_sweep.a0 = (m_sweep.a = bd.angle);
var tMat:b2Mat22 = m_xf.R;
var tVec:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
m_sweep.c.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.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 = bd.linearDamping;
m_angularDamping = bd.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 = bd.massData.mass;
if (m_mass > 0){
m_invMass = (1 / m_mass);
};
if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
m_I = bd.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 = bd.userData;
m_shapeList = null;
m_shapeCount = 0;
}
public function GetLinearVelocityFromWorldPoint(worldPoint:b2Vec2):b2Vec2{
return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (worldPoint.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (worldPoint.x - m_sweep.c.x)))));
}
public function SetLinearVelocity(v:b2Vec2):void{
m_linearVelocity.SetV(v);
}
public function WakeUp():void{
m_flags = (m_flags & ~(e_sleepFlag));
m_sleepTime = 0;
}
public function GetLocalCenter():b2Vec2{
return (m_sweep.localCenter);
}
public function ApplyTorque(torque:Number):void{
if (IsSleeping()){
WakeUp();
};
m_torque = (m_torque + torque);
}
public function IsFrozen():Boolean{
return (((m_flags & e_frozenFlag) == e_frozenFlag));
}
public function IsDynamic():Boolean{
return ((m_type == e_dynamicType));
}
public function GetLinearVelocity():b2Vec2{
return (m_linearVelocity);
}
public function SynchronizeTransform():void{
m_xf.R.Set(m_sweep.a);
var tMat:b2Mat22 = m_xf.R;
var tVec:b2Vec2 = m_sweep.localCenter;
m_xf.position.x = (m_sweep.c.x - ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
m_xf.position.y = (m_sweep.c.y - ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
}
public function GetInertia():Number{
return (m_I);
}
public function IsSleeping():Boolean{
return (((m_flags & e_sleepFlag) == e_sleepFlag));
}
public function SetMassFromShapes():void{
var s:b2Shape;
if (m_world.m_lock == true){
return;
};
m_mass = 0;
m_invMass = 0;
m_I = 0;
m_invI = 0;
var centerX:Number = 0;
var centerY:Number = 0;
var massData:b2MassData = s_massData;
s = m_shapeList;
while (s) {
s.ComputeMass(massData);
m_mass = (m_mass + massData.mass);
centerX = (centerX + (massData.mass * massData.center.x));
centerY = (centerY + (massData.mass * massData.center.y));
m_I = (m_I + massData.I);
s = s.m_next;
};
if (m_mass > 0){
m_invMass = (1 / m_mass);
centerX = (centerX * m_invMass);
centerY = (centerY * m_invMass);
};
if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){
m_I = (m_I - (m_mass * ((centerX * centerX) + (centerY * centerY))));
m_invI = (1 / m_I);
} else {
m_I = 0;
m_invI = 0;
};
m_sweep.localCenter.Set(centerX, centerY);
var tMat:b2Mat22 = m_xf.R;
var tVec:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
m_sweep.c.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.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);
s = m_shapeList;
while (s) {
s.UpdateSweepRadius(m_sweep.localCenter);
s = s.m_next;
};
var oldType:int = m_type;
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
if (oldType != m_type){
s = m_shapeList;
while (s) {
s.RefilterProxy(m_world.m_broadPhase, m_xf);
s = s.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(position:b2Vec2, angle:Number):Boolean{
var s:b2Shape;
var inRange:Boolean;
if (m_world.m_lock == true){
return (true);
};
if (IsFrozen()){
return (false);
};
m_xf.R.Set(angle);
m_xf.position.SetV(position);
var tMat:b2Mat22 = m_xf.R;
var tVec:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
m_sweep.c.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.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 = angle);
var freeze:Boolean;
s = m_shapeList;
while (s) {
inRange = s.Synchronize(m_world.m_broadPhase, m_xf, m_xf);
if (inRange == false){
freeze = true;
break;
};
s = s.m_next;
};
if (freeze == true){
m_flags = (m_flags | e_frozenFlag);
m_linearVelocity.SetZero();
m_angularVelocity = 0;
s = m_shapeList;
while (s) {
s.DestroyProxy(m_world.m_broadPhase);
s = s.m_next;
};
return (false);
};
m_world.m_broadPhase.Commit();
return (true);
}
public function GetLocalPoint(worldPoint:b2Vec2):b2Vec2{
return (b2Math.b2MulXT(m_xf, worldPoint));
}
public function ApplyForce(force:b2Vec2, point:b2Vec2):void{
if (IsSleeping()){
WakeUp();
};
m_force.x = (m_force.x + force.x);
m_force.y = (m_force.y + force.y);
m_torque = (m_torque + (((point.x - m_sweep.c.x) * force.y) - ((point.y - m_sweep.c.y) * force.x)));
}
public function SynchronizeShapes():Boolean{
var s:b2Shape;
var xf1:b2XForm = s_xf1;
xf1.R.Set(m_sweep.a0);
var tMat:b2Mat22 = xf1.R;
var tVec:b2Vec2 = m_sweep.localCenter;
xf1.position.x = (m_sweep.c0.x - ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
xf1.position.y = (m_sweep.c0.y - ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
var inRange:Boolean;
s = m_shapeList;
while (s) {
inRange = s.Synchronize(m_world.m_broadPhase, xf1, m_xf);
if (inRange == false){
break;
};
s = s.m_next;
};
if (inRange == false){
m_flags = (m_flags | e_frozenFlag);
m_linearVelocity.SetZero();
m_angularVelocity = 0;
s = m_shapeList;
while (s) {
s.DestroyProxy(m_world.m_broadPhase);
s = s.m_next;
};
return (false);
};
return (true);
}
public function GetAngle():Number{
return (m_sweep.a);
}
public function GetXForm():b2XForm{
return (m_xf);
}
public function GetLinearVelocityFromLocalPoint(localPoint:b2Vec2):b2Vec2{
var A:b2Mat22 = m_xf.R;
var worldPoint:b2Vec2 = new b2Vec2(((A.col1.x * localPoint.x) + (A.col2.x * localPoint.y)), ((A.col1.y * localPoint.x) + (A.col2.y * localPoint.y)));
worldPoint.x = (worldPoint.x + m_xf.position.x);
worldPoint.y = (worldPoint.y + m_xf.position.y);
return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (worldPoint.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (worldPoint.x - m_sweep.c.x)))));
}
public function GetNext():b2Body{
return (m_next);
}
public function GetMass():Number{
return (m_mass);
}
public function ApplyImpulse(impulse:b2Vec2, point:b2Vec2):void{
if (IsSleeping()){
WakeUp();
};
m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * impulse.x));
m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * impulse.y));
m_angularVelocity = (m_angularVelocity + (m_invI * (((point.x - m_sweep.c.x) * impulse.y) - ((point.y - m_sweep.c.y) * impulse.x))));
}
public function GetAngularVelocity():Number{
return (m_angularVelocity);
}
public function SetAngularVelocity(omega:Number):void{
m_angularVelocity = omega;
}
public function SetMass(massData:b2MassData):void{
var s:b2Shape;
if (m_world.m_lock == true){
return;
};
m_invMass = 0;
m_I = 0;
m_invI = 0;
m_mass = massData.mass;
if (m_mass > 0){
m_invMass = (1 / m_mass);
};
if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
m_I = massData.I;
};
if (m_I > 0){
m_invI = (1 / m_I);
};
m_sweep.localCenter.SetV(massData.center);
var tMat:b2Mat22 = m_xf.R;
var tVec:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y));
m_sweep.c.y = ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.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);
s = m_shapeList;
while (s) {
s.UpdateSweepRadius(m_sweep.localCenter);
s = s.m_next;
};
var oldType:int = m_type;
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
if (oldType != m_type){
s = m_shapeList;
while (s) {
s.RefilterProxy(m_world.m_broadPhase, m_xf);
s = s.m_next;
};
};
}
public function IsStatic():Boolean{
return ((m_type == e_staticType));
}
public function GetWorldVector(localVector:b2Vec2):b2Vec2{
return (b2Math.b2MulMV(m_xf.R, localVector));
}
public function GetShapeList():b2Shape{
return (m_shapeList);
}
public function Advance(t:Number):void{
m_sweep.Advance(t);
m_sweep.c.SetV(m_sweep.c0);
m_sweep.a = m_sweep.a0;
SynchronizeTransform();
}
public function SetBullet(flag:Boolean):void{
if (flag){
m_flags = (m_flags | e_bulletFlag);
} else {
m_flags = (m_flags & ~(e_bulletFlag));
};
}
public function CreateShape(def:b2ShapeDef):b2Shape{
var s:b2Shape;
if (m_world.m_lock == true){
return (null);
};
s = b2Shape.Create(def, m_world.m_blockAllocator);
s.m_next = m_shapeList;
m_shapeList = s;
m_shapeCount++;
s.m_body = this;
s.CreateProxy(m_world.m_broadPhase, m_xf);
s.UpdateSweepRadius(m_sweep.localCenter);
return (s);
}
public function IsConnected(other:b2Body):Boolean{
var jn:b2JointEdge = m_jointList;
while (jn) {
if (jn.other == other){
return ((jn.joint.m_collideConnected == false));
};
jn = jn.next;
};
return (false);
}
public function DestroyShape(s:b2Shape):void{
if (m_world.m_lock == true){
return;
};
s.DestroyProxy(m_world.m_broadPhase);
var node:b2Shape = m_shapeList;
var ppS:b2Shape;
var found:Boolean;
while (node != null) {
if (node == s){
if (ppS){
ppS.m_next = s.m_next;
} else {
m_shapeList = s.m_next;
};
found = true;
break;
};
ppS = node;
node = node.m_next;
};
s.m_body = null;
s.m_next = null;
m_shapeCount--;
b2Shape.Destroy(s, 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(flag:Boolean):void{
if (flag){
m_flags = (m_flags | e_allowSleepFlag);
} else {
m_flags = (m_flags & ~(e_allowSleepFlag));
WakeUp();
};
}
public function SetUserData(data):void{
m_userData = data;
}
public function GetLocalVector(worldVector:b2Vec2):b2Vec2{
return (b2Math.b2MulTMV(m_xf.R, worldVector));
}
public function GetWorldPoint(localPoint:b2Vec2):b2Vec2{
var A:b2Mat22 = m_xf.R;
var u:b2Vec2 = new b2Vec2(((A.col1.x * localPoint.x) + (A.col2.x * localPoint.y)), ((A.col1.y * localPoint.x) + (A.col2.y * localPoint.y)));
u.x = (u.x + m_xf.position.x);
u.y = (u.y + m_xf.position.y);
return (u);
}
public function GetWorld():b2World{
return (m_world);
}
public function GetPosition():b2Vec2{
return (m_xf.position);
}
}
}//package Box2D.Dynamics
Section 66
//b2BodyDef (Box2D.Dynamics.b2BodyDef)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2BodyDef {
public var angularDamping:Number;
public var angle:Number;
public var isSleeping:Boolean;
public var position:b2Vec2;
public var isBullet:Boolean;
public var allowSleep:Boolean;
public var userData;
public var fixedRotation:Boolean;
public var linearDamping:Number;
public var massData:b2MassData;
public function b2BodyDef(){
massData = new b2MassData();
position = new b2Vec2();
super();
massData.center.SetZero();
massData.mass = 0;
massData.I = 0;
userData = null;
position.Set(0, 0);
angle = 0;
linearDamping = 0;
angularDamping = 0;
allowSleep = true;
isSleeping = false;
fixedRotation = false;
isBullet = false;
}
}
}//package Box2D.Dynamics
Section 67
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener)
package Box2D.Dynamics {
public class b2BoundaryListener {
public function b2BoundaryListener(){
super();
}
public function Violation(body:b2Body):void{
}
}
}//package Box2D.Dynamics
Section 68
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter)
package Box2D.Dynamics {
import Box2D.Collision.Shapes.*;
public class b2ContactFilter {
public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter);
;
public function b2ContactFilter(){
super();
}
public function ShouldCollide(shape1:b2Shape, shape2:b2Shape):Boolean{
var filter1:b2FilterData = shape1.GetFilterData();
var filter2:b2FilterData = shape2.GetFilterData();
if ((((filter1.groupIndex == filter2.groupIndex)) && (!((filter1.groupIndex == 0))))){
return ((filter1.groupIndex > 0));
};
var collide:Boolean = ((!(((filter1.maskBits & filter2.categoryBits) == 0))) && (!(((filter1.categoryBits & filter2.maskBits) == 0))));
return (collide);
}
}
}//package Box2D.Dynamics
Section 69
//b2ContactListener (Box2D.Dynamics.b2ContactListener)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Dynamics.Contacts.*;
public class b2ContactListener {
public function b2ContactListener(){
super();
}
public function Add(point:b2ContactPoint):void{
}
public function Remove(point:b2ContactPoint):void{
}
public function Persist(point:b2ContactPoint):void{
}
public function Result(point:b2ContactResult):void{
}
}
}//package Box2D.Dynamics
Section 70
//b2ContactManager (Box2D.Dynamics.b2ContactManager)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2ContactManager extends b2PairCallback {
public var m_world:b2World;
public var m_destroyImmediate:Boolean;
public var m_nullContact:b2NullContact;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2ContactManager(){
m_nullContact = new b2NullContact();
super();
m_world = null;
m_destroyImmediate = false;
}
override public function PairRemoved(proxyUserData1, proxyUserData2, pairUserData):void{
if (pairUserData == null){
return;
};
var c:b2Contact = (pairUserData as b2Contact);
if (c == m_nullContact){
return;
};
Destroy(c);
}
public function Destroy(c:b2Contact):void{
var b1:b2Body;
var b2:b2Body;
var manifolds:Array;
var cp:b2ContactPoint;
var i:int;
var manifold:b2Manifold;
var j:int;
var mp:b2ManifoldPoint;
var v1:b2Vec2;
var v2:b2Vec2;
var shape1:b2Shape = c.m_shape1;
var shape2:b2Shape = c.m_shape2;
var manifoldCount:int = c.m_manifoldCount;
if ((((manifoldCount > 0)) && (m_world.m_contactListener))){
b1 = shape1.m_body;
b2 = shape2.m_body;
manifolds = c.GetManifolds();
cp = s_evalCP;
cp.shape1 = c.m_shape1;
cp.shape2 = c.m_shape2;
cp.friction = c.m_friction;
cp.restitution = c.m_restitution;
i = 0;
while (i < manifoldCount) {
manifold = manifolds[i];
cp.normal.SetV(manifold.normal);
j = 0;
while (j < manifold.pointCount) {
mp = manifold.points[j];
cp.position = b1.GetWorldPoint(mp.localPoint1);
v1 = b1.GetLinearVelocityFromLocalPoint(mp.localPoint1);
v2 = b2.GetLinearVelocityFromLocalPoint(mp.localPoint2);
cp.velocity.Set((v2.x - v1.x), (v2.y - v1.y));
cp.separation = mp.separation;
cp.id.key = mp.id._key;
m_world.m_contactListener.Remove(cp);
j++;
};
i++;
};
};
if (c.m_prev){
c.m_prev.m_next = c.m_next;
};
if (c.m_next){
c.m_next.m_prev = c.m_prev;
};
if (c == m_world.m_contactList){
m_world.m_contactList = c.m_next;
};
var body1:b2Body = shape1.m_body;
var body2:b2Body = shape2.m_body;
if (c.m_node1.prev){
c.m_node1.prev.next = c.m_node1.next;
};
if (c.m_node1.next){
c.m_node1.next.prev = c.m_node1.prev;
};
if (c.m_node1 == body1.m_contactList){
body1.m_contactList = c.m_node1.next;
};
if (c.m_node2.prev){
c.m_node2.prev.next = c.m_node2.next;
};
if (c.m_node2.next){
c.m_node2.next.prev = c.m_node2.prev;
};
if (c.m_node2 == body2.m_contactList){
body2.m_contactList = c.m_node2.next;
};
b2Contact.Destroy(c, m_world.m_blockAllocator);
m_world.m_contactCount--;
}
override public function PairAdded(proxyUserData1, proxyUserData2){
var shape1:b2Shape = (proxyUserData1 as b2Shape);
var shape2:b2Shape = (proxyUserData2 as b2Shape);
var body1:b2Body = shape1.m_body;
var body2:b2Body = shape2.m_body;
if (((body1.IsStatic()) && (body2.IsStatic()))){
return (m_nullContact);
};
if (shape1.m_body == shape2.m_body){
return (m_nullContact);
};
if (body2.IsConnected(body1)){
return (m_nullContact);
};
if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(shape1, shape2) == false)))){
return (m_nullContact);
};
var c:b2Contact = b2Contact.Create(shape1, shape2, m_world.m_blockAllocator);
if (c == null){
return (m_nullContact);
};
shape1 = c.m_shape1;
shape2 = c.m_shape2;
body1 = shape1.m_body;
body2 = shape2.m_body;
c.m_prev = null;
c.m_next = m_world.m_contactList;
if (m_world.m_contactList != null){
m_world.m_contactList.m_prev = c;
};
m_world.m_contactList = c;
c.m_node1.contact = c;
c.m_node1.other = body2;
c.m_node1.prev = null;
c.m_node1.next = body1.m_contactList;
if (body1.m_contactList != null){
body1.m_contactList.prev = c.m_node1;
};
body1.m_contactList = c.m_node1;
c.m_node2.contact = c;
c.m_node2.other = body1;
c.m_node2.prev = null;
c.m_node2.next = body2.m_contactList;
if (body2.m_contactList != null){
body2.m_contactList.prev = c.m_node2;
};
body2.m_contactList = c.m_node2;
m_world.m_contactCount++;
return (c);
}
public function Collide():void{
var body1:b2Body;
var body2:b2Body;
var c:b2Contact = m_world.m_contactList;
while (c) {
body1 = c.m_shape1.m_body;
body2 = c.m_shape2.m_body;
if (((body1.IsSleeping()) && (body2.IsSleeping()))){
} else {
c.Update(m_world.m_contactListener);
};
c = c.m_next;
};
}
}
}//package Box2D.Dynamics
Section 71
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
import flash.display.*;
public class b2DebugDraw {
public var m_xformScale:Number;// = 1
public var m_fillAlpha:Number;// = 1
public var m_alpha:Number;// = 1
public var m_drawFlags:uint;
public var m_lineThickness:Number;// = 1
public var m_drawScale:Number;// = 1
public var m_sprite:Sprite;
public static var e_coreShapeBit:uint = 4;
public static var e_shapeBit:uint = 1;
public static var e_centerOfMassBit:uint = 64;
public static var e_aabbBit:uint = 8;
public static var e_obbBit:uint = 16;
public static var e_pairBit:uint = 32;
public static var e_jointBit:uint = 2;
public function b2DebugDraw(){
super();
m_drawFlags = 0;
}
public function ClearFlags(flags:uint):void{
m_drawFlags = (m_drawFlags & ~(flags));
}
public function SetFlags(flags:uint):void{
m_drawFlags = flags;
}
public function AppendFlags(flags:uint):void{
m_drawFlags = (m_drawFlags | flags);
}
public function DrawSegment(p1:b2Vec2, p2:b2Vec2, color:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha);
m_sprite.graphics.moveTo((p1.x * m_drawScale), (p1.y * m_drawScale));
m_sprite.graphics.lineTo((p2.x * m_drawScale), (p2.y * m_drawScale));
}
public function DrawSolidPolygon(vertices:Array, vertexCount:int, color:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha);
m_sprite.graphics.moveTo((vertices[0].x * m_drawScale), (vertices[0].y * m_drawScale));
m_sprite.graphics.beginFill(color.color, m_fillAlpha);
var i = 1;
while (i < vertexCount) {
m_sprite.graphics.lineTo((vertices[i].x * m_drawScale), (vertices[i].y * m_drawScale));
i++;
};
m_sprite.graphics.lineTo((vertices[0].x * m_drawScale), (vertices[0].y * m_drawScale));
m_sprite.graphics.endFill();
}
public function DrawCircle(center:b2Vec2, radius:Number, color:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha);
m_sprite.graphics.drawCircle((center.x * m_drawScale), (center.y * m_drawScale), (radius * m_drawScale));
}
public function DrawPolygon(vertices:Array, vertexCount:int, color:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha);
m_sprite.graphics.moveTo((vertices[0].x * m_drawScale), (vertices[0].y * m_drawScale));
var i = 1;
while (i < vertexCount) {
m_sprite.graphics.lineTo((vertices[i].x * m_drawScale), (vertices[i].y * m_drawScale));
i++;
};
m_sprite.graphics.lineTo((vertices[0].x * m_drawScale), (vertices[0].y * m_drawScale));
}
public function DrawSolidCircle(center:b2Vec2, radius:Number, axis:b2Vec2, color:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, color.color, m_alpha);
m_sprite.graphics.moveTo(0, 0);
m_sprite.graphics.beginFill(color.color, m_fillAlpha);
m_sprite.graphics.drawCircle((center.x * m_drawScale), (center.y * m_drawScale), (radius * m_drawScale));
m_sprite.graphics.endFill();
m_sprite.graphics.moveTo((center.x * m_drawScale), (center.y * m_drawScale));
m_sprite.graphics.lineTo(((center.x + (axis.x * radius)) * m_drawScale), ((center.y + (axis.y * radius)) * m_drawScale));
}
public function GetFlags():uint{
return (m_drawFlags);
}
public function DrawXForm(xf:b2XForm):void{
m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha);
m_sprite.graphics.moveTo((xf.position.x * m_drawScale), (xf.position.y * m_drawScale));
m_sprite.graphics.lineTo(((xf.position.x + (m_xformScale * xf.R.col1.x)) * m_drawScale), ((xf.position.y + (m_xformScale * xf.R.col1.y)) * m_drawScale));
m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha);
m_sprite.graphics.moveTo((xf.position.x * m_drawScale), (xf.position.y * m_drawScale));
m_sprite.graphics.lineTo(((xf.position.x + (m_xformScale * xf.R.col2.x)) * m_drawScale), ((xf.position.y + (m_xformScale * xf.R.col2.y)) * m_drawScale));
}
}
}//package Box2D.Dynamics
Section 72
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener)
package Box2D.Dynamics {
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
public class b2DestructionListener {
public function b2DestructionListener(){
super();
}
public function SayGoodbyeShape(shape:b2Shape):void{
}
public function SayGoodbyeJoint(joint:b2Joint):void{
}
}
}//package Box2D.Dynamics
Section 73
//b2Island (Box2D.Dynamics.b2Island)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2Island {
public var m_listener:b2ContactListener;
public var m_positionIterationCount:int;
public var m_bodyCapacity:int;
public var m_bodies:Array;
public var m_joints:Array;
public var m_jointCapacity:int;
public var m_contactCount:int;
public var m_contacts:Array;
public var m_contactCapacity:int;
public var m_jointCount:int;
public var m_allocator;
public var m_bodyCount:int;
private static var s_reportCR:b2ContactResult = new b2ContactResult();
public function b2Island(bodyCapacity:int, contactCapacity:int, jointCapacity:int, allocator, listener:b2ContactListener){
var i:int;
super();
m_bodyCapacity = bodyCapacity;
m_contactCapacity = contactCapacity;
m_jointCapacity = jointCapacity;
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
m_allocator = allocator;
m_listener = listener;
m_bodies = new Array(bodyCapacity);
i = 0;
while (i < bodyCapacity) {
m_bodies[i] = null;
i++;
};
m_contacts = new Array(contactCapacity);
i = 0;
while (i < contactCapacity) {
m_contacts[i] = null;
i++;
};
m_joints = new Array(jointCapacity);
i = 0;
while (i < jointCapacity) {
m_joints[i] = null;
i++;
};
m_positionIterationCount = 0;
}
public function AddBody(body:b2Body):void{
var _local2 = m_bodyCount++;
m_bodies[_local2] = body;
}
public function AddJoint(joint:b2Joint):void{
var _local2 = m_jointCount++;
m_joints[_local2] = joint;
}
public function Report(constraints:Array):void{
var tMat:b2Mat22;
var tVec:b2Vec2;
var c:b2Contact;
var cc:b2ContactConstraint;
var cr:b2ContactResult;
var b1:b2Body;
var manifoldCount:int;
var manifolds:Array;
var j:int;
var manifold:b2Manifold;
var k:int;
var point:b2ManifoldPoint;
var ccp:b2ContactConstraintPoint;
if (m_listener == null){
return;
};
var i:int;
while (i < m_contactCount) {
c = m_contacts[i];
cc = constraints[i];
cr = s_reportCR;
cr.shape1 = c.m_shape1;
cr.shape2 = c.m_shape2;
b1 = cr.shape1.m_body;
manifoldCount = c.m_manifoldCount;
manifolds = c.GetManifolds();
j = 0;
while (j < manifoldCount) {
manifold = manifolds[j];
cr.normal.SetV(manifold.normal);
k = 0;
while (k < manifold.pointCount) {
point = manifold.points[k];
ccp = cc.points[k];
cr.position = b1.GetWorldPoint(point.localPoint1);
cr.normalImpulse = ccp.normalImpulse;
cr.tangentImpulse = ccp.tangentImpulse;
cr.id.key = point.id.key;
m_listener.Result(cr);
k++;
};
j++;
};
i++;
};
}
public function AddContact(contact:b2Contact):void{
var _local2 = m_contactCount++;
m_contacts[_local2] = contact;
}
public function Solve(step:b2TimeStep, gravity:b2Vec2, correctPositions:Boolean, allowSleep:Boolean):void{
var i:int;
var b:b2Body;
var joint:b2Joint;
var j:int;
var contactsOkay:Boolean;
var jointsOkay:Boolean;
var jointOkay:Boolean;
var minSleepTime:Number;
var linTolSqr:Number;
var angTolSqr:Number;
i = 0;
while (i < m_bodyCount) {
b = m_bodies[i];
if (b.IsStatic()){
} else {
b.m_linearVelocity.x = (b.m_linearVelocity.x + (step.dt * (gravity.x + (b.m_invMass * b.m_force.x))));
b.m_linearVelocity.y = (b.m_linearVelocity.y + (step.dt * (gravity.y + (b.m_invMass * b.m_force.y))));
b.m_angularVelocity = (b.m_angularVelocity + ((step.dt * b.m_invI) * b.m_torque));
b.m_force.SetZero();
b.m_torque = 0;
b.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (step.dt * b.m_linearDamping)), 0, 1));
b.m_angularVelocity = (b.m_angularVelocity * b2Math.b2Clamp((1 - (step.dt * b.m_angularDamping)), 0, 1));
if (b.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){
b.m_linearVelocity.Normalize();
b.m_linearVelocity.x = (b.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity);
b.m_linearVelocity.y = (b.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity);
};
if ((b.m_angularVelocity * b.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){
if (b.m_angularVelocity < 0){
b.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity);
} else {
b.m_angularVelocity = b2Settings.b2_maxAngularVelocity;
};
};
};
i++;
};
var contactSolver:b2ContactSolver = new b2ContactSolver(step, m_contacts, m_contactCount, m_allocator);
contactSolver.InitVelocityConstraints(step);
i = 0;
while (i < m_jointCount) {
joint = m_joints[i];
joint.InitVelocityConstraints(step);
i++;
};
i = 0;
while (i < step.maxIterations) {
contactSolver.SolveVelocityConstraints();
j = 0;
while (j < m_jointCount) {
joint = m_joints[j];
joint.SolveVelocityConstraints(step);
j++;
};
i++;
};
contactSolver.FinalizeVelocityConstraints();
i = 0;
while (i < m_bodyCount) {
b = m_bodies[i];
if (b.IsStatic()){
} else {
b.m_sweep.c0.SetV(b.m_sweep.c);
b.m_sweep.a0 = b.m_sweep.a;
b.m_sweep.c.x = (b.m_sweep.c.x + (step.dt * b.m_linearVelocity.x));
b.m_sweep.c.y = (b.m_sweep.c.y + (step.dt * b.m_linearVelocity.y));
b.m_sweep.a = (b.m_sweep.a + (step.dt * b.m_angularVelocity));
b.SynchronizeTransform();
};
i++;
};
if (correctPositions){
i = 0;
while (i < m_jointCount) {
joint = m_joints[i];
joint.InitPositionConstraints();
i++;
};
m_positionIterationCount = 0;
while (m_positionIterationCount < step.maxIterations) {
contactsOkay = contactSolver.SolvePositionConstraints(b2Settings.b2_contactBaumgarte);
jointsOkay = true;
i = 0;
while (i < m_jointCount) {
joint = m_joints[i];
jointOkay = joint.SolvePositionConstraints();
jointsOkay = ((jointsOkay) && (jointOkay));
i++;
};
if (((contactsOkay) && (jointsOkay))){
break;
};
m_positionIterationCount++;
};
};
Report(contactSolver.m_constraints);
if (allowSleep){
minSleepTime = Number.MAX_VALUE;
linTolSqr = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance);
angTolSqr = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance);
i = 0;
while (i < m_bodyCount) {
b = m_bodies[i];
if (b.m_invMass == 0){
} else {
if ((b.m_flags & b2Body.e_allowSleepFlag) == 0){
b.m_sleepTime = 0;
minSleepTime = 0;
};
if (((((((b.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((b.m_angularVelocity * b.m_angularVelocity) > angTolSqr)))) || ((b2Math.b2Dot(b.m_linearVelocity, b.m_linearVelocity) > linTolSqr)))){
b.m_sleepTime = 0;
minSleepTime = 0;
} else {
b.m_sleepTime = (b.m_sleepTime + step.dt);
minSleepTime = b2Math.b2Min(minSleepTime, b.m_sleepTime);
};
};
i++;
};
if (minSleepTime >= b2Settings.b2_timeToSleep){
i = 0;
while (i < m_bodyCount) {
b = m_bodies[i];
b.m_flags = (b.m_flags | b2Body.e_sleepFlag);
b.m_linearVelocity.SetZero();
b.m_angularVelocity = 0;
i++;
};
};
};
}
public function Clear():void{
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
}
public function SolveTOI(subStep:b2TimeStep):void{
var i:int;
var b:b2Body;
var contactsOkay:Boolean;
var contactSolver:b2ContactSolver = new b2ContactSolver(subStep, m_contacts, m_contactCount, m_allocator);
i = 0;
while (i < subStep.maxIterations) {
contactSolver.SolveVelocityConstraints();
i++;
};
i = 0;
while (i < m_bodyCount) {
b = m_bodies[i];
if (b.IsStatic()){
} else {
b.m_sweep.c0.SetV(b.m_sweep.c);
b.m_sweep.a0 = b.m_sweep.a;
b.m_sweep.c.x = (b.m_sweep.c.x + (subStep.dt * b.m_linearVelocity.x));
b.m_sweep.c.y = (b.m_sweep.c.y + (subStep.dt * b.m_linearVelocity.y));
b.m_sweep.a = (b.m_sweep.a + (subStep.dt * b.m_angularVelocity));
b.SynchronizeTransform();
};
i++;
};
var k_toiBaumgarte:Number = 0.75;
i = 0;
while (i < subStep.maxIterations) {
contactsOkay = contactSolver.SolvePositionConstraints(k_toiBaumgarte);
if (contactsOkay){
break;
};
i++;
};
Report(contactSolver.m_constraints);
}
}
}//package Box2D.Dynamics
Section 74
//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;
public function b2TimeStep(){
super();
}
}
}//package Box2D.Dynamics
Section 75
//b2World (Box2D.Dynamics.b2World)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2World {
public var m_inv_dt0:Number;
public var m_boundaryListener:b2BoundaryListener;
public var m_contactList:b2Contact;
public var m_blockAllocator;
public var m_contactListener:b2ContactListener;
public var m_allowSleep:Boolean;
public var m_broadPhase:b2BroadPhase;
public var m_destructionListener:b2DestructionListener;
public var m_jointCount:int;
public var m_bodyCount:int;
public var m_lock:Boolean;
public var m_positionIterationCount:int;
public var m_groundBody:b2Body;
public var m_contactCount:int;
public var m_debugDraw:b2DebugDraw;
public var m_contactFilter:b2ContactFilter;
public var m_bodyList:b2Body;
public var m_stackAllocator;
public var m_jointList:b2Joint;
public var m_gravity:b2Vec2;
public var m_contactManager:b2ContactManager;
private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8);
public static var m_continuousPhysics:Boolean;
public static var m_warmStarting:Boolean;
private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6);
public static var m_positionCorrection:Boolean;
private static var s_xf:b2XForm = new b2XForm();
public function b2World(worldAABB:b2AABB, gravity:b2Vec2, doSleep:Boolean){
m_contactManager = new b2ContactManager();
super();
m_destructionListener = null;
m_boundaryListener = null;
m_contactFilter = b2ContactFilter.b2_defaultFilter;
m_contactListener = null;
m_debugDraw = null;
m_bodyList = null;
m_contactList = null;
m_jointList = null;
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
m_positionCorrection = true;
m_warmStarting = true;
m_continuousPhysics = true;
m_allowSleep = doSleep;
m_gravity = gravity;
m_lock = false;
m_inv_dt0 = 0;
m_contactManager.m_world = this;
m_broadPhase = new b2BroadPhase(worldAABB, m_contactManager);
var bd:b2BodyDef = new b2BodyDef();
m_groundBody = CreateBody(bd);
}
public function DrawJoint(joint:b2Joint):void{
var pulley:b2PulleyJoint;
var s1:b2Vec2;
var s2:b2Vec2;
var b1:b2Body = joint.m_body1;
var b2:b2Body = joint.m_body2;
var xf1:b2XForm = b1.m_xf;
var xf2:b2XForm = b2.m_xf;
var x1:b2Vec2 = xf1.position;
var x2:b2Vec2 = xf2.position;
var p1:b2Vec2 = joint.GetAnchor1();
var p2:b2Vec2 = joint.GetAnchor2();
var color:b2Color = s_jointColor;
switch (joint.m_type){
case b2Joint.e_distanceJoint:
m_debugDraw.DrawSegment(p1, p2, color);
break;
case b2Joint.e_pulleyJoint:
pulley = (joint as b2PulleyJoint);
s1 = pulley.GetGroundAnchor1();
s2 = pulley.GetGroundAnchor2();
m_debugDraw.DrawSegment(s1, p1, color);
m_debugDraw.DrawSegment(s2, p2, color);
m_debugDraw.DrawSegment(s1, s2, color);
break;
case b2Joint.e_mouseJoint:
m_debugDraw.DrawSegment(p1, p2, color);
break;
default:
if (b1 != m_groundBody){
m_debugDraw.DrawSegment(x1, p1, color);
};
m_debugDraw.DrawSegment(p1, p2, color);
if (b2 != m_groundBody){
m_debugDraw.DrawSegment(x2, p2, color);
};
};
}
public function Refilter(shape:b2Shape):void{
shape.RefilterProxy(m_broadPhase, shape.m_body.m_xf);
}
public function SetDebugDraw(debugDraw:b2DebugDraw):void{
m_debugDraw = debugDraw;
}
public function SetContinuousPhysics(flag:Boolean):void{
m_continuousPhysics = flag;
}
public function GetProxyCount():int{
return (m_broadPhase.m_proxyCount);
}
public function DrawDebugData():void{
var i:int;
var b:b2Body;
var s:b2Shape;
var j:b2Joint;
var bp:b2BroadPhase;
var xf:b2XForm;
var core:Boolean;
var index:uint;
var pair:b2Pair;
var p1:b2Proxy;
var p2:b2Proxy;
var worldLower:b2Vec2;
var worldUpper:b2Vec2;
var p:b2Proxy;
var poly:b2PolygonShape;
var obb:b2OBB;
var h:b2Vec2;
var tMat:b2Mat22;
var tVec:b2Vec2;
var tX:Number;
if (m_debugDraw == null){
return;
};
m_debugDraw.m_sprite.graphics.clear();
var flags:uint = m_debugDraw.GetFlags();
var invQ:b2Vec2 = new b2Vec2();
var x1:b2Vec2 = new b2Vec2();
var x2:b2Vec2 = new b2Vec2();
var color:b2Color = new b2Color(0, 0, 0);
var b1:b2AABB = new b2AABB();
var b2:b2AABB = new b2AABB();
var vs:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()];
if ((flags & b2DebugDraw.e_shapeBit)){
core = ((flags & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit);
b = m_bodyList;
while (b) {
xf = b.m_xf;
s = b.GetShapeList();
while (s) {
if (b.IsStatic()){
DrawShape(s, xf, new b2Color(0.5, 0.9, 0.5), core);
} else {
if (b.IsSleeping()){
DrawShape(s, xf, new b2Color(0.5, 0.5, 0.9), core);
} else {
DrawShape(s, xf, new b2Color(0.9, 0.9, 0.9), core);
};
};
s = s.m_next;
};
b = b.m_next;
};
};
if ((flags & b2DebugDraw.e_jointBit)){
j = m_jointList;
while (j) {
DrawJoint(j);
j = j.m_next;
};
};
if ((flags & b2DebugDraw.e_pairBit)){
bp = m_broadPhase;
invQ.Set((1 / bp.m_quantizationFactor.x), (1 / bp.m_quantizationFactor.y));
color.Set(0.9, 0.9, 0.3);
i = 0;
while (i < b2Pair.b2_tableCapacity) {
index = bp.m_pairManager.m_hashTable[i];
while (index != b2Pair.b2_nullPair) {
pair = bp.m_pairManager.m_pairs[index];
p1 = bp.m_proxyPool[pair.proxyId1];
p2 = bp.m_proxyPool[pair.proxyId2];
b1.lowerBound.x = (bp.m_worldAABB.lowerBound.x + (invQ.x * bp.m_bounds[0][p1.lowerBounds[0]].value));
b1.lowerBound.y = (bp.m_worldAABB.lowerBound.y + (invQ.y * bp.m_bounds[1][p1.lowerBounds[1]].value));
b1.upperBound.x = (bp.m_worldAABB.lowerBound.x + (invQ.x * bp.m_bounds[0][p1.upperBounds[0]].value));
b1.upperBound.y = (bp.m_worldAABB.lowerBound.y + (invQ.y * bp.m_bounds[1][p1.upperBounds[1]].value));
b2.lowerBound.x = (bp.m_worldAABB.lowerBound.x + (invQ.x * bp.m_bounds[0][p2.lowerBounds[0]].value));
b2.lowerBound.y = (bp.m_worldAABB.lowerBound.y + (invQ.y * bp.m_bounds[1][p2.lowerBounds[1]].value));
b2.upperBound.x = (bp.m_worldAABB.lowerBound.x + (invQ.x * bp.m_bounds[0][p2.upperBounds[0]].value));
b2.upperBound.y = (bp.m_worldAABB.lowerBound.y + (invQ.y * bp.m_bounds[1][p2.upperBounds[1]].value));
x1.x = (0.5 * (b1.lowerBound.x + b1.upperBound.x));
x1.y = (0.5 * (b1.lowerBound.y + b1.upperBound.y));
x2.x = (0.5 * (b2.lowerBound.x + b2.upperBound.x));
x2.y = (0.5 * (b2.lowerBound.y + b2.upperBound.y));
m_debugDraw.DrawSegment(x1, x2, color);
index = pair.next;
};
i++;
};
};
if ((flags & b2DebugDraw.e_aabbBit)){
bp = m_broadPhase;
worldLower = bp.m_worldAABB.lowerBound;
worldUpper = bp.m_worldAABB.upperBound;
invQ.Set((1 / bp.m_quantizationFactor.x), (1 / bp.m_quantizationFactor.y));
color.Set(0.9, 0.3, 0.9);
i = 0;
while (i < b2Settings.b2_maxProxies) {
p = bp.m_proxyPool[i];
if (p.IsValid() == false){
} else {
b1.lowerBound.x = (worldLower.x + (invQ.x * bp.m_bounds[0][p.lowerBounds[0]].value));
b1.lowerBound.y = (worldLower.y + (invQ.y * bp.m_bounds[1][p.lowerBounds[1]].value));
b1.upperBound.x = (worldLower.x + (invQ.x * bp.m_bounds[0][p.upperBounds[0]].value));
b1.upperBound.y = (worldLower.y + (invQ.y * bp.m_bounds[1][p.upperBounds[1]].value));
vs[0].Set(b1.lowerBound.x, b1.lowerBound.y);
vs[1].Set(b1.upperBound.x, b1.lowerBound.y);
vs[2].Set(b1.upperBound.x, b1.upperBound.y);
vs[3].Set(b1.lowerBound.x, b1.upperBound.y);
m_debugDraw.DrawPolygon(vs, 4, color);
};
i++;
};
vs[0].Set(worldLower.x, worldLower.y);
vs[1].Set(worldUpper.x, worldLower.y);
vs[2].Set(worldUpper.x, worldUpper.y);
vs[3].Set(worldLower.x, worldUpper.y);
m_debugDraw.DrawPolygon(vs, 4, new b2Color(0.3, 0.9, 0.9));
};
if ((flags & b2DebugDraw.e_obbBit)){
color.Set(0.5, 0.3, 0.5);
b = m_bodyList;
while (b) {
xf = b.m_xf;
s = b.GetShapeList();
while (s) {
if (s.m_type != b2Shape.e_polygonShape){
} else {
poly = (s as b2PolygonShape);
obb = poly.GetOBB();
h = obb.extents;
vs[0].Set(-(h.x), -(h.y));
vs[1].Set(h.x, -(h.y));
vs[2].Set(h.x, h.y);
vs[3].Set(-(h.x), h.y);
i = 0;
while (i < 4) {
tMat = obb.R;
tVec = vs[i];
tX = (obb.center.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
vs[i].y = (obb.center.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
vs[i].x = tX;
tMat = xf.R;
tX = (xf.position.x + ((tMat.col1.x * tVec.x) + (tMat.col2.x * tVec.y)));
vs[i].y = (xf.position.y + ((tMat.col1.y * tVec.x) + (tMat.col2.y * tVec.y)));
vs[i].x = tX;
i++;
};
m_debugDraw.DrawPolygon(vs, 4, color);
};
s = s.m_next;
};
b = b.m_next;
};
};
if ((flags & b2DebugDraw.e_centerOfMassBit)){
b = m_bodyList;
while (b) {
xf = s_xf;
xf.R = b.m_xf.R;
xf.position = b.GetWorldCenter();
m_debugDraw.DrawXForm(xf);
b = b.m_next;
};
};
}
public function DestroyBody(b:b2Body):void{
var jn0:b2JointEdge;
var s0:b2Shape;
if (m_lock == true){
return;
};
var jn:b2JointEdge = b.m_jointList;
while (jn) {
jn0 = jn;
jn = jn.next;
if (m_destructionListener){
m_destructionListener.SayGoodbyeJoint(jn0.joint);
};
DestroyJoint(jn0.joint);
};
var s:b2Shape = b.m_shapeList;
while (s) {
s0 = s;
s = s.m_next;
if (m_destructionListener){
m_destructionListener.SayGoodbyeShape(s0);
};
s0.DestroyProxy(m_broadPhase);
b2Shape.Destroy(s0, m_blockAllocator);
};
if (b.m_prev){
b.m_prev.m_next = b.m_next;
};
if (b.m_next){
b.m_next.m_prev = b.m_prev;
};
if (b == m_bodyList){
m_bodyList = b.m_next;
};
m_bodyCount--;
}
public function SetContactFilter(filter:b2ContactFilter):void{
m_contactFilter = filter;
}
public function GetGroundBody():b2Body{
return (m_groundBody);
}
public function DrawShape(shape:b2Shape, xf:b2XForm, color:b2Color, core:Boolean):void{
var circle:b2CircleShape;
var center:b2Vec2;
var radius:Number;
var axis:b2Vec2;
var i:int;
var poly:b2PolygonShape;
var vertexCount:int;
var localVertices:Array;
var vertices:Array;
var localCoreVertices:Array;
var coreColor:b2Color = s_coreColor;
switch (shape.m_type){
case b2Shape.e_circleShape:
circle = (shape as b2CircleShape);
center = b2Math.b2MulX(xf, circle.m_localPosition);
radius = circle.m_radius;
axis = xf.R.col1;
m_debugDraw.DrawSolidCircle(center, radius, axis, color);
if (core){
m_debugDraw.DrawCircle(center, (radius - b2Settings.b2_toiSlop), coreColor);
};
break;
case b2Shape.e_polygonShape:
poly = (shape as b2PolygonShape);
vertexCount = poly.GetVertexCount();
localVertices = poly.GetVertices();
vertices = new Array(b2Settings.b2_maxPolygonVertices);
i = 0;
while (i < vertexCount) {
vertices[i] = b2Math.b2MulX(xf, localVertices[i]);
i++;
};
m_debugDraw.DrawSolidPolygon(vertices, vertexCount, color);
if (core){
localCoreVertices = poly.GetCoreVertices();
i = 0;
while (i < vertexCount) {
vertices[i] = b2Math.b2MulX(xf, localCoreVertices[i]);
i++;
};
m_debugDraw.DrawPolygon(vertices, vertexCount, coreColor);
};
break;
};
}
public function GetContactCount():int{
return (m_contactCount);
}
public function Solve(step:b2TimeStep):void{
var b:b2Body;
var stackCount:int;
var i:int;
var other:b2Body;
var cn:b2ContactEdge;
var jn:b2JointEdge;
var inRange:Boolean;
m_positionIterationCount = 0;
var island:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener);
b = m_bodyList;
while (b) {
b.m_flags = (b.m_flags & ~(b2Body.e_islandFlag));
b = b.m_next;
};
var c:b2Contact = m_contactList;
while (c) {
c.m_flags = (c.m_flags & ~(b2Contact.e_islandFlag));
c = c.m_next;
};
var j:b2Joint = m_jointList;
while (j) {
j.m_islandFlag = false;
j = j.m_next;
};
var stackSize:int = m_bodyCount;
var stack:Array = new Array(stackSize);
var seed:b2Body = m_bodyList;
while (seed) {
if ((seed.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){
} else {
if (seed.IsStatic()){
} else {
island.Clear();
stackCount = 0;
var _temp1 = stackCount;
stackCount = (stackCount + 1);
var _local15 = _temp1;
stack[_local15] = seed;
seed.m_flags = (seed.m_flags | b2Body.e_islandFlag);
while (stackCount > 0) {
--stackCount;
b = stack[stackCount];
island.AddBody(b);
b.m_flags = (b.m_flags & ~(b2Body.e_sleepFlag));
if (b.IsStatic()){
} else {
cn = b.m_contactList;
while (cn) {
if ((cn.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){
} else {
if (cn.contact.m_manifoldCount == 0){
} else {
island.AddContact(cn.contact);
cn.contact.m_flags = (cn.contact.m_flags | b2Contact.e_islandFlag);
other = cn.other;
if ((other.m_flags & b2Body.e_islandFlag)){
} else {
var _temp2 = stackCount;
stackCount = (stackCount + 1);
var _local16 = _temp2;
stack[_local16] = other;
other.m_flags = (other.m_flags | b2Body.e_islandFlag);
};
};
};
cn = cn.next;
};
jn = b.m_jointList;
while (jn) {
if (jn.joint.m_islandFlag == true){
} else {
island.AddJoint(jn.joint);
jn.joint.m_islandFlag = true;
other = jn.other;
if ((other.m_flags & b2Body.e_islandFlag)){
} else {
var _temp3 = stackCount;
stackCount = (stackCount + 1);
_local16 = _temp3;
stack[_local16] = other;
other.m_flags = (other.m_flags | b2Body.e_islandFlag);
};
};
jn = jn.next;
};
};
};
island.Solve(step, m_gravity, m_positionCorrection, m_allowSleep);
if (island.m_positionIterationCount > m_positionIterationCount){
m_positionIterationCount = island.m_positionIterationCount;
};
i = 0;
while (i < island.m_bodyCount) {
b = island.m_bodies[i];
if (b.IsStatic()){
b.m_flags = (b.m_flags & ~(b2Body.e_islandFlag));
};
i++;
};
};
};
seed = seed.m_next;
};
b = m_bodyList;
while (b) {
if ((b.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
} else {
if (b.IsStatic()){
} else {
inRange = b.SynchronizeShapes();
if ((((inRange == false)) && (!((m_boundaryListener == null))))){
m_boundaryListener.Violation(b);
};
};
};
b = b.m_next;
};
m_broadPhase.Commit();
}
public function Query(aabb:b2AABB, shapes:Array, maxCount:int):int{
var results:Array = new Array(maxCount);
var count:int = m_broadPhase.QueryAABB(aabb, results, maxCount);
var i:int;
while (i < count) {
shapes[i] = results[i];
i++;
};
return (count);
}
public function SetGravity(gravity:b2Vec2):void{
m_gravity = gravity;
}
public function SolveTOI(step:b2TimeStep):void{
var b:b2Body;
var s1:b2Shape;
var s2:b2Shape;
var b1:b2Body;
var b2:b2Body;
var cn:b2ContactEdge;
var c:b2Contact;
var minContact:b2Contact;
var minTOI:Number;
var seed:b2Body;
var stackCount:int;
var subStep:b2TimeStep;
var i:int;
var toi:Number;
var t0:Number;
var other:b2Body;
var inRange:Boolean;
var island:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener);
var stackSize:int = m_bodyCount;
var stack:Array = new Array(stackSize);
b = m_bodyList;
while (b) {
b.m_flags = (b.m_flags & ~(b2Body.e_islandFlag));
b.m_sweep.t0 = 0;
b = b.m_next;
};
c = m_contactList;
while (c) {
c.m_flags = (c.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
c = c.m_next;
};
while (true) {
minContact = null;
minTOI = 1;
c = m_contactList;
for (;c;(c = c.m_next)) {
if ((c.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){
} else {
toi = 1;
if ((c.m_flags & b2Contact.e_toiFlag)){
toi = c.m_toi;
} else {
s1 = c.m_shape1;
s2 = c.m_shape2;
b1 = s1.m_body;
b2 = s2.m_body;
if (((((b1.IsStatic()) || (b1.IsSleeping()))) && (((b2.IsStatic()) || (b2.IsSleeping()))))){
continue;
};
t0 = b1.m_sweep.t0;
if (b1.m_sweep.t0 < b2.m_sweep.t0){
t0 = b2.m_sweep.t0;
b1.m_sweep.Advance(t0);
} else {
if (b2.m_sweep.t0 < b1.m_sweep.t0){
t0 = b1.m_sweep.t0;
b2.m_sweep.Advance(t0);
};
};
toi = b2TimeOfImpact.TimeOfImpact(c.m_shape1, b1.m_sweep, c.m_shape2, b2.m_sweep);
if ((((toi > 0)) && ((toi < 1)))){
toi = (((1 - toi) * t0) + toi);
if (toi > 1){
toi = 1;
};
};
c.m_toi = toi;
c.m_flags = (c.m_flags | b2Contact.e_toiFlag);
};
if ((((Number.MIN_VALUE < toi)) && ((toi < minTOI)))){
minContact = c;
minTOI = toi;
};
};
};
if ((((minContact == null)) || (((1 - (100 * Number.MIN_VALUE)) < minTOI)))){
break;
};
s1 = minContact.m_shape1;
s2 = minContact.m_shape2;
b1 = s1.m_body;
b2 = s2.m_body;
b1.Advance(minTOI);
b2.Advance(minTOI);
minContact.Update(m_contactListener);
minContact.m_flags = (minContact.m_flags & ~(b2Contact.e_toiFlag));
if (minContact.m_manifoldCount == 0){
} else {
seed = b1;
if (seed.IsStatic()){
seed = b2;
};
island.Clear();
stackCount = 0;
var _temp1 = stackCount;
stackCount = (stackCount + 1);
var _local22 = _temp1;
stack[_local22] = seed;
seed.m_flags = (seed.m_flags | b2Body.e_islandFlag);
while (stackCount > 0) {
--stackCount;
b = stack[stackCount];
island.AddBody(b);
b.m_flags = (b.m_flags & ~(b2Body.e_sleepFlag));
if (b.IsStatic()){
} else {
cn = b.m_contactList;
while (cn) {
if (island.m_contactCount == island.m_contactCapacity){
} else {
if ((cn.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){
} else {
if (cn.contact.m_manifoldCount == 0){
} else {
island.AddContact(cn.contact);
cn.contact.m_flags = (cn.contact.m_flags | b2Contact.e_islandFlag);
other = cn.other;
if ((other.m_flags & b2Body.e_islandFlag)){
} else {
if (other.IsStatic() == false){
other.Advance(minTOI);
other.WakeUp();
};
var _temp2 = stackCount;
stackCount = (stackCount + 1);
var _local23 = _temp2;
stack[_local23] = other;
other.m_flags = (other.m_flags | b2Body.e_islandFlag);
};
};
};
};
cn = cn.next;
};
};
};
subStep = new b2TimeStep();
subStep.dt = ((1 - minTOI) * step.dt);
subStep.inv_dt = (1 / subStep.dt);
subStep.maxIterations = step.maxIterations;
island.SolveTOI(subStep);
i = 0;
while (i < island.m_bodyCount) {
b = island.m_bodies[i];
b.m_flags = (b.m_flags & ~(b2Body.e_islandFlag));
if ((b.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
} else {
if (b.IsStatic()){
} else {
inRange = b.SynchronizeShapes();
if ((((inRange == false)) && (!((m_boundaryListener == null))))){
m_boundaryListener.Violation(b);
};
cn = b.m_contactList;
while (cn) {
cn.contact.m_flags = (cn.contact.m_flags & ~(b2Contact.e_toiFlag));
cn = cn.next;
};
};
};
i++;
};
i = 0;
while (i < island.m_contactCount) {
c = island.m_contacts[i];
c.m_flags = (c.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
i++;
};
m_broadPhase.Commit();
};
};
}
public function GetJointList():b2Joint{
return (m_jointList);
}
public function GetBodyList():b2Body{
return (m_bodyList);
}
public function GetPairCount():int{
return (m_broadPhase.m_pairManager.m_pairCount);
}
public function Validate():void{
m_broadPhase.Validate();
}
public function SetWarmStarting(flag:Boolean):void{
m_warmStarting = flag;
}
public function SetPositionCorrection(flag:Boolean):void{
m_positionCorrection = flag;
}
public function CreateJoint(def:b2JointDef):b2Joint{
var b:b2Body;
var s:b2Shape;
var j:b2Joint = b2Joint.Create(def, m_blockAllocator);
j.m_prev = null;
j.m_next = m_jointList;
if (m_jointList){
m_jointList.m_prev = j;
};
m_jointList = j;
m_jointCount++;
j.m_node1.joint = j;
j.m_node1.other = j.m_body2;
j.m_node1.prev = null;
j.m_node1.next = j.m_body1.m_jointList;
if (j.m_body1.m_jointList){
j.m_body1.m_jointList.prev = j.m_node1;
};
j.m_body1.m_jointList = j.m_node1;
j.m_node2.joint = j;
j.m_node2.other = j.m_body1;
j.m_node2.prev = null;
j.m_node2.next = j.m_body2.m_jointList;
if (j.m_body2.m_jointList){
j.m_body2.m_jointList.prev = j.m_node2;
};
j.m_body2.m_jointList = j.m_node2;
if (def.collideConnected == false){
b = ((def.body1.m_shapeCount < def.body2.m_shapeCount)) ? def.body1 : def.body2;
s = b.m_shapeList;
while (s) {
s.RefilterProxy(m_broadPhase, b.m_xf);
s = s.m_next;
};
};
return (j);
}
public function DestroyJoint(j:b2Joint):void{
var b:b2Body;
var s:b2Shape;
var collideConnected:Boolean = j.m_collideConnected;
if (j.m_prev){
j.m_prev.m_next = j.m_next;
};
if (j.m_next){
j.m_next.m_prev = j.m_prev;
};
if (j == m_jointList){
m_jointList = j.m_next;
};
var body1:b2Body = j.m_body1;
var body2:b2Body = j.m_body2;
body1.WakeUp();
body2.WakeUp();
if (j.m_node1.prev){
j.m_node1.prev.next = j.m_node1.next;
};
if (j.m_node1.next){
j.m_node1.next.prev = j.m_node1.prev;
};
if (j.m_node1 == body1.m_jointList){
body1.m_jointList = j.m_node1.next;
};
j.m_node1.prev = null;
j.m_node1.next = null;
if (j.m_node2.prev){
j.m_node2.prev.next = j.m_node2.next;
};
if (j.m_node2.next){
j.m_node2.next.prev = j.m_node2.prev;
};
if (j.m_node2 == body2.m_jointList){
body2.m_jointList = j.m_node2.next;
};
j.m_node2.prev = null;
j.m_node2.next = null;
b2Joint.Destroy(j, m_blockAllocator);
m_jointCount--;
if (collideConnected == false){
b = ((body1.m_shapeCount < body2.m_shapeCount)) ? body1 : body2;
s = b.m_shapeList;
while (s) {
s.RefilterProxy(m_broadPhase, b.m_xf);
s = s.m_next;
};
};
}
public function SetContactListener(listener:b2ContactListener):void{
m_contactListener = listener;
}
public function CreateBody(def:b2BodyDef):b2Body{
if (m_lock == true){
return (null);
};
var b:b2Body = new b2Body(def, this);
b.m_prev = null;
b.m_next = m_bodyList;
if (m_bodyList){
m_bodyList.m_prev = b;
};
m_bodyList = b;
m_bodyCount++;
return (b);
}
public function SetBoundaryListener(listener:b2BoundaryListener):void{
m_boundaryListener = listener;
}
public function SetDestructionListener(listener:b2DestructionListener):void{
m_destructionListener = listener;
}
public function Step(dt:Number, iterations:int):void{
m_lock = true;
var step:b2TimeStep = new b2TimeStep();
step.dt = dt;
step.maxIterations = iterations;
if (dt > 0){
step.inv_dt = (1 / dt);
} else {
step.inv_dt = 0;
};
step.dtRatio = (m_inv_dt0 * dt);
step.positionCorrection = m_positionCorrection;
step.warmStarting = m_warmStarting;
m_contactManager.Collide();
if (step.dt > 0){
Solve(step);
};
if (((m_continuousPhysics) && ((step.dt > 0)))){
SolveTOI(step);
};
DrawDebugData();
m_inv_dt0 = step.inv_dt;
m_lock = false;
}
public function GetBodyCount():int{
return (m_bodyCount);
}
public function GetJointCount():int{
return (m_jointCount);
}
}
}//package Box2D.Dynamics
Section 76
//Aim_Data (Engine.Sprites.aim.Aim_Data)
package Engine.Sprites.aim {
import flash.display.*;
import flash.text.*;
import flash.filters.*;
public class Aim_Data extends Sprite {
public var Power_text:TextField;
public var Angle_text:TextField;
public function Aim_Data(){
Power_text = new TextField();
Angle_text = new TextField();
super();
var format2:TextFormat = new TextFormat();
format2.font = "CooperStdBlack";
format2.color = 16769386;
format2.size = 16;
Power_text.embedFonts = true;
Power_text.antiAliasType = AntiAliasType.ADVANCED;
Power_text.autoSize = TextFieldAutoSize.LEFT;
Power_text.defaultTextFormat = format2;
Power_text.selectable = false;
Power_text.mouseEnabled = false;
Power_text.x = 0;
Power_text.y = -20;
var glow:GlowFilter = new GlowFilter(0, 1, 2, 2, 5, BitmapFilterQuality.HIGH);
var shadow:DropShadowFilter = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH);
var bevel:BevelFilter = new BevelFilter();
Power_text.filters = [glow, shadow];
Power_text.visible = true;
super.addChild(Power_text);
Angle_text.embedFonts = true;
Angle_text.antiAliasType = AntiAliasType.ADVANCED;
Angle_text.autoSize = TextFieldAutoSize.LEFT;
Angle_text.defaultTextFormat = format2;
Angle_text.selectable = false;
Angle_text.mouseEnabled = false;
Angle_text.x = -2;
Angle_text.y = 0;
Angle_text.filters = [glow, shadow];
Angle_text.visible = true;
super.addChild(Angle_text);
}
public function showAimData():void{
Power_text.visible = true;
}
public function hideAimData():void{
Power_text.visible = false;
}
}
}//package Engine.Sprites.aim
Section 77
//AimSprite (Engine.Sprites.aim.AimSprite)
package Engine.Sprites.aim {
import flash.display.*;
import flash.geom.*;
import ascb.drawing.*;
public class AimSprite extends Sprite {
public var _color:uint;// = 15146520
public function AimSprite(){
super();
var colors:Array = [_color, 0xFFFFFF];
var alphas:Array = [100, 0];
var rations:Array = [0, 160];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(50, 30, 0, 0, 0);
this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, rations, matrix);
this.graphics.drawRect(-20, -15, 50, 30);
this.graphics.endFill();
this.visible = true;
var mypen:Pen = new Pen(this.graphics);
mypen.lineStyle(1, 0xFFFFFF, 0);
mypen.beginFill(_color, 1);
mypen.drawRegularPolygon(-37, 0, 3, 60, 180);
}
public function _set_aim_rect(offset:Number):void{
this.graphics.clear();
var colors:Array = [_color, _color];
var alphas:Array = [100, 0];
var rations:Array = [0, 160];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(offset, 30, 0, 0, 0);
this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, rations, matrix);
this.graphics.drawRect(-20, -15, offset, 30);
this.graphics.endFill();
var mypen:Pen = new Pen(this.graphics);
mypen.lineStyle(1, 0xFFFFFF, 0);
mypen.beginFill(_color, 1);
mypen.drawRegularPolygon(-37, 0, 3, 60, 180);
}
}
}//package Engine.Sprites.aim
Section 78
//Animal1 (Engine.Sprites.Aminals.Animal1)
package Engine.Sprites.Aminals {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class Animal1 extends Sprite {
public var Bit_Ant_T3_F1_R_F4:CharacterFrame;
public var Frame_5_left:BitmapAsset;
public var Bit_Ant_T3_E_R_F1:CharacterFrame;
public var Bit_Ant_T3_E_R_F2:CharacterFrame;
public var Bit_Ant_T3_E_R_F3:CharacterFrame;
public var Bit_Ant_T3_E_R_F4:CharacterFrame;
public var Bit_Ant_T3_E_R_F5:CharacterFrame;
public var Bit_Ant_T3_E_R_F6:CharacterFrame;
private var Frame_1_left_Asset:Class;
public var Loading:Number;// = 0
public var Frame_3_right:BitmapAsset;
public var Frame_2_left:BitmapAsset;
private var Frame_4_left_Asset:Class;
private var Apple_1_Asset:Class;
public var AnimationTimer:Timer;
public var Direction:Number;// = -1
public var AnimationVelocity:Number;// = 0
public var Frame_4_left:BitmapAsset;
public var Frame_4_right:BitmapAsset;
public var Apple_1:BitmapAsset;
private var Frame_1_right_Asset:Class;
private var Frame_3_right_Asset:Class;
private var Frame_5_right_Asset:Class;
private var Frame_2_left_Asset:Class;
public var Frame_1_left:BitmapAsset;
private var Frame_5_left_Asset:Class;
public var CurrentFrame:Number;// = 1
public var Frame_1_right:BitmapAsset;
public var Frame_5_right:BitmapAsset;
public var Frame_6_left:BitmapAsset;
public var Frame_3_left:BitmapAsset;
public var Bit_Ant_T3_E_L_F1:CharacterFrame;
public var Bit_Ant_T3_E_L_F2:CharacterFrame;
public var Bit_Ant_T3_E_L_F3:CharacterFrame;
public var StarsAnimationTimer:Timer;
public var Bit_Ant_T3_E_L_F5:CharacterFrame;
public var Bit_Ant_T3_E_L_F6:CharacterFrame;
private var Frame_3_left_Asset:Class;
public var Frame_2_right:BitmapAsset;
public var Frame_6_right:BitmapAsset;
public var Bit_Ant_T3_E_L_F4:CharacterFrame;
private var Frame_4_right_Asset:Class;
private var Frame_6_left_Asset:Class;
private var Frame_2_right_Asset:Class;
public var Bit_Ant_T3_F1_R_F2:CharacterFrame;
public var Bit_Ant_T3_F1_R_F3:CharacterFrame;
private var Frame_6_right_Asset:Class;
public var Bit_Ant_T3_F1_R_F5:CharacterFrame;
public var Bit_Ant_T3_F1_R_F6:CharacterFrame;
public var Bit_Ant_T3_F1_R_F1:CharacterFrame;
public function Animal1(type:Number, velocity:Number):void{
Frame_1_left_Asset = Animal1_Frame_1_left_Asset;
Frame_2_left_Asset = Animal1_Frame_2_left_Asset;
Frame_3_left_Asset = Animal1_Frame_3_left_Asset;
Frame_1_right_Asset = Animal1_Frame_1_right_Asset;
Frame_2_right_Asset = Animal1_Frame_2_right_Asset;
Frame_3_right_Asset = Animal1_Frame_3_right_Asset;
Frame_4_left_Asset = Animal1_Frame_4_left_Asset;
Frame_5_left_Asset = Animal1_Frame_5_left_Asset;
Frame_6_left_Asset = Animal1_Frame_6_left_Asset;
Frame_4_right_Asset = Animal1_Frame_4_right_Asset;
Frame_5_right_Asset = Animal1_Frame_5_right_Asset;
Frame_6_right_Asset = Animal1_Frame_6_right_Asset;
Apple_1_Asset = Animal1_Apple_1_Asset;
AnimationTimer = new Timer(40, 0);
StarsAnimationTimer = new Timer(100);
Bit_Ant_T3_E_L_F1 = new CharacterFrame();
Bit_Ant_T3_E_L_F2 = new CharacterFrame();
Bit_Ant_T3_E_L_F3 = new CharacterFrame();
Bit_Ant_T3_E_R_F1 = new CharacterFrame();
Bit_Ant_T3_E_R_F2 = new CharacterFrame();
Bit_Ant_T3_E_R_F3 = new CharacterFrame();
Bit_Ant_T3_F1_R_F1 = new CharacterFrame();
Bit_Ant_T3_F1_R_F2 = new CharacterFrame();
Bit_Ant_T3_F1_R_F3 = new CharacterFrame();
Bit_Ant_T3_E_L_F4 = new CharacterFrame();
Bit_Ant_T3_E_L_F5 = new CharacterFrame();
Bit_Ant_T3_E_L_F6 = new CharacterFrame();
Bit_Ant_T3_E_R_F4 = new CharacterFrame();
Bit_Ant_T3_E_R_F5 = new CharacterFrame();
Bit_Ant_T3_E_R_F6 = new CharacterFrame();
Bit_Ant_T3_F1_R_F4 = new CharacterFrame();
Bit_Ant_T3_F1_R_F5 = new CharacterFrame();
Bit_Ant_T3_F1_R_F6 = new CharacterFrame();
super();
var Frame_1_left_bitmap:BitmapAsset = new Frame_1_left_Asset();
var Frame_2_left_bitmap:BitmapAsset = new Frame_2_left_Asset();
var Frame_3_left_bitmap:BitmapAsset = new Frame_3_left_Asset();
var Frame_4_left_bitmap:BitmapAsset = new Frame_4_left_Asset();
var Frame_5_left_bitmap:BitmapAsset = new Frame_5_left_Asset();
var Frame_6_left_bitmap:BitmapAsset = new Frame_6_left_Asset();
var Frame_1_right_bitmap:BitmapAsset = new Frame_1_right_Asset();
var Frame_2_right_bitmap:BitmapAsset = new Frame_2_right_Asset();
var Frame_3_right_bitmap:BitmapAsset = new Frame_3_right_Asset();
var Frame_4_right_bitmap:BitmapAsset = new Frame_4_right_Asset();
var Frame_5_right_bitmap:BitmapAsset = new Frame_5_right_Asset();
var Frame_6_right_bitmap:BitmapAsset = new Frame_6_right_Asset();
var Frame_1_right_bitmap1:BitmapAsset = new Frame_1_right_Asset();
var Frame_2_right_bitmap1:BitmapAsset = new Frame_2_right_Asset();
var Frame_3_right_bitmap1:BitmapAsset = new Frame_3_right_Asset();
var Frame_4_right_bitmap1:BitmapAsset = new Frame_4_right_Asset();
var Frame_5_right_bitmap1:BitmapAsset = new Frame_5_right_Asset();
var Frame_6_right_bitmap1:BitmapAsset = new Frame_6_right_Asset();
var Apple_1_bitmap1:BitmapAsset = new Apple_1_Asset();
var Apple_1_bitmap2:BitmapAsset = new Apple_1_Asset();
var Apple_1_bitmap3:BitmapAsset = new Apple_1_Asset();
var Apple_1_bitmap4:BitmapAsset = new Apple_1_Asset();
var Apple_1_bitmap5:BitmapAsset = new Apple_1_Asset();
var Apple_1_bitmap6:BitmapAsset = new Apple_1_Asset();
Frame_1_left_bitmap.smoothing = true;
Frame_2_left_bitmap.smoothing = true;
Frame_3_left_bitmap.smoothing = true;
Frame_4_left_bitmap.smoothing = true;
Frame_5_left_bitmap.smoothing = true;
Frame_6_left_bitmap.smoothing = true;
Frame_1_right_bitmap.smoothing = true;
Frame_2_right_bitmap.smoothing = true;
Frame_3_right_bitmap.smoothing = true;
Frame_4_right_bitmap.smoothing = true;
Frame_5_right_bitmap.smoothing = true;
Frame_6_right_bitmap.smoothing = true;
Frame_1_right_bitmap1.smoothing = true;
Frame_2_right_bitmap1.smoothing = true;
Frame_3_right_bitmap1.smoothing = true;
Frame_4_right_bitmap1.smoothing = true;
Frame_5_right_bitmap1.smoothing = true;
Frame_6_right_bitmap1.smoothing = true;
Apple_1_bitmap1.smoothing = true;
Apple_1_bitmap2.smoothing = true;
Apple_1_bitmap3.smoothing = true;
Apple_1_bitmap4.smoothing = true;
Apple_1_bitmap5.smoothing = true;
Apple_1_bitmap6.smoothing = true;
Bit_Ant_T3_E_L_F1.Frame.addChild(Frame_1_left_bitmap);
Bit_Ant_T3_E_L_F2.Frame.addChild(Frame_2_left_bitmap);
Bit_Ant_T3_E_L_F3.Frame.addChild(Frame_3_left_bitmap);
Bit_Ant_T3_E_L_F4.Frame.addChild(Frame_4_left_bitmap);
Bit_Ant_T3_E_L_F5.Frame.addChild(Frame_5_left_bitmap);
Bit_Ant_T3_E_L_F6.Frame.addChild(Frame_6_left_bitmap);
Bit_Ant_T3_E_R_F1.Frame.addChild(Frame_1_right_bitmap);
Bit_Ant_T3_E_R_F2.Frame.addChild(Frame_2_right_bitmap);
Bit_Ant_T3_E_R_F3.Frame.addChild(Frame_3_right_bitmap);
Bit_Ant_T3_E_R_F4.Frame.addChild(Frame_4_right_bitmap);
Bit_Ant_T3_E_R_F5.Frame.addChild(Frame_5_right_bitmap);
Bit_Ant_T3_E_R_F6.Frame.addChild(Frame_6_right_bitmap);
Bit_Ant_T3_F1_R_F1.Frame.addChild(Frame_1_right_bitmap1);
Bit_Ant_T3_F1_R_F2.Frame.addChild(Frame_2_right_bitmap1);
Bit_Ant_T3_F1_R_F3.Frame.addChild(Frame_3_right_bitmap1);
Bit_Ant_T3_F1_R_F4.Frame.addChild(Frame_4_right_bitmap1);
Bit_Ant_T3_F1_R_F5.Frame.addChild(Frame_5_right_bitmap1);
Bit_Ant_T3_F1_R_F6.Frame.addChild(Frame_6_right_bitmap1);
Bit_Ant_T3_F1_R_F1.Apple.addChild(Apple_1_bitmap1);
Bit_Ant_T3_F1_R_F2.Apple.addChild(Apple_1_bitmap2);
Bit_Ant_T3_F1_R_F3.Apple.addChild(Apple_1_bitmap3);
Bit_Ant_T3_F1_R_F4.Apple.addChild(Apple_1_bitmap4);
Bit_Ant_T3_F1_R_F5.Apple.addChild(Apple_1_bitmap5);
Bit_Ant_T3_F1_R_F6.Apple.addChild(Apple_1_bitmap6);
Bit_Ant_T3_F1_R_F1.Apple.y = (Bit_Ant_T3_F1_R_F1.Apple.y - 32);
Bit_Ant_T3_F1_R_F2.Apple.y = (Bit_Ant_T3_F1_R_F2.Apple.y - 32);
Bit_Ant_T3_F1_R_F3.Apple.y = (Bit_Ant_T3_F1_R_F3.Apple.y - 32);
Bit_Ant_T3_F1_R_F4.Apple.y = (Bit_Ant_T3_F1_R_F4.Apple.y - 32);
Bit_Ant_T3_F1_R_F5.Apple.y = (Bit_Ant_T3_F1_R_F5.Apple.y - 32);
Bit_Ant_T3_F1_R_F6.Apple.y = (Bit_Ant_T3_F1_R_F6.Apple.y - 32);
Bit_Ant_T3_F1_R_F1.Apple.x = (Bit_Ant_T3_F1_R_F1.Apple.x - 8);
Bit_Ant_T3_F1_R_F2.Apple.x = (Bit_Ant_T3_F1_R_F2.Apple.x - 8);
Bit_Ant_T3_F1_R_F3.Apple.x = (Bit_Ant_T3_F1_R_F3.Apple.x - 8);
Bit_Ant_T3_F1_R_F4.Apple.x = (Bit_Ant_T3_F1_R_F4.Apple.x - 8);
Bit_Ant_T3_F1_R_F5.Apple.x = (Bit_Ant_T3_F1_R_F5.Apple.x - 8);
Bit_Ant_T3_F1_R_F6.Apple.x = (Bit_Ant_T3_F1_R_F6.Apple.x - 8);
Bit_Ant_T3_E_L_F1.y = (Bit_Ant_T3_E_L_F1.y + 40);
Bit_Ant_T3_E_L_F2.y = (Bit_Ant_T3_E_L_F2.y + 40);
Bit_Ant_T3_E_L_F3.y = (Bit_Ant_T3_E_L_F3.y + 40);
Bit_Ant_T3_E_L_F4.y = (Bit_Ant_T3_E_L_F4.y + 40);
Bit_Ant_T3_E_L_F5.y = (Bit_Ant_T3_E_L_F5.y + 40);
Bit_Ant_T3_E_L_F6.y = (Bit_Ant_T3_E_L_F6.y + 40);
Bit_Ant_T3_E_R_F1.y = (Bit_Ant_T3_E_R_F1.y + 40);
Bit_Ant_T3_E_R_F2.y = (Bit_Ant_T3_E_R_F2.y + 40);
Bit_Ant_T3_E_R_F3.y = (Bit_Ant_T3_E_R_F3.y + 40);
Bit_Ant_T3_E_R_F4.y = (Bit_Ant_T3_E_R_F4.y + 40);
Bit_Ant_T3_E_R_F5.y = (Bit_Ant_T3_E_R_F5.y + 40);
Bit_Ant_T3_E_R_F6.y = (Bit_Ant_T3_E_R_F6.y + 40);
Bit_Ant_T3_F1_R_F1.y = (Bit_Ant_T3_F1_R_F1.y + 40);
Bit_Ant_T3_F1_R_F2.y = (Bit_Ant_T3_F1_R_F2.y + 40);
Bit_Ant_T3_F1_R_F3.y = (Bit_Ant_T3_F1_R_F3.y + 40);
Bit_Ant_T3_F1_R_F4.y = (Bit_Ant_T3_F1_R_F4.y + 40);
Bit_Ant_T3_F1_R_F5.y = (Bit_Ant_T3_F1_R_F5.y + 40);
Bit_Ant_T3_F1_R_F6.y = (Bit_Ant_T3_F1_R_F6.y + 40);
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
super.addChild(Bit_Ant_T3_E_L_F1);
super.addChild(Bit_Ant_T3_E_L_F2);
super.addChild(Bit_Ant_T3_E_L_F3);
super.addChild(Bit_Ant_T3_E_L_F4);
super.addChild(Bit_Ant_T3_E_L_F5);
super.addChild(Bit_Ant_T3_E_L_F6);
super.addChild(Bit_Ant_T3_E_R_F1);
super.addChild(Bit_Ant_T3_E_R_F2);
super.addChild(Bit_Ant_T3_E_R_F3);
super.addChild(Bit_Ant_T3_E_R_F4);
super.addChild(Bit_Ant_T3_E_R_F5);
super.addChild(Bit_Ant_T3_E_R_F6);
super.addChild(Bit_Ant_T3_F1_R_F1);
super.addChild(Bit_Ant_T3_F1_R_F2);
super.addChild(Bit_Ant_T3_F1_R_F3);
super.addChild(Bit_Ant_T3_F1_R_F4);
super.addChild(Bit_Ant_T3_F1_R_F5);
super.addChild(Bit_Ant_T3_F1_R_F6);
AntType1(velocity);
}
public function newFrame_type_1(e:TimerEvent):void{
switch (CurrentFrame){
case 1:
CurrentFrame = 2;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = true;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = true;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = true;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
break;
case 2:
CurrentFrame = 3;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = true;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = true;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = true;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
break;
case 3:
CurrentFrame = 4;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = true;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = true;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = true;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
break;
case 4:
CurrentFrame = 5;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = true;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = true;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = true;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
break;
case 5:
CurrentFrame = 6;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = true;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = true;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = true;
Bit_Ant_T3_F1_R_F6.visible = false;
};
break;
case 6:
CurrentFrame = 1;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = true;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = true;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_E_L_F4.visible = false;
Bit_Ant_T3_E_L_F5.visible = false;
Bit_Ant_T3_E_L_F6.visible = false;
Bit_Ant_T3_E_R_F4.visible = false;
Bit_Ant_T3_E_R_F5.visible = false;
Bit_Ant_T3_E_R_F6.visible = false;
Bit_Ant_T3_F1_R_F4.visible = false;
Bit_Ant_T3_F1_R_F5.visible = false;
Bit_Ant_T3_F1_R_F6.visible = true;
};
break;
};
}
public function SetDirection(dir:Number):void{
Direction = dir;
}
public function StartAnimation():void{
AnimationTimer.start();
}
public function SetAnimationVelocity(velocity:Number):void{
AnimationTimer.delay = velocity;
}
public function StopAnimation():void{
AnimationTimer.stop();
}
public function SetLoading(loading:Number):void{
Loading = loading;
}
public function AntType1(velocity:Number):void{
AnimationVelocity = velocity;
AnimationTimer.addEventListener(TimerEvent.TIMER, newFrame_type_1);
}
}
}//package Engine.Sprites.Aminals
Section 79
//Animal1_Apple_1_Asset (Engine.Sprites.Aminals.Animal1_Apple_1_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Apple_1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 80
//Animal1_Frame_1_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_1_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_1_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 81
//Animal1_Frame_1_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_1_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_1_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 82
//Animal1_Frame_2_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_2_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_2_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 83
//Animal1_Frame_2_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_2_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_2_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 84
//Animal1_Frame_3_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_3_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_3_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 85
//Animal1_Frame_3_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_3_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_3_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 86
//Animal1_Frame_4_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_4_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_4_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 87
//Animal1_Frame_4_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_4_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_4_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 88
//Animal1_Frame_5_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_5_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_5_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 89
//Animal1_Frame_5_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_5_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_5_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 90
//Animal1_Frame_6_left_Asset (Engine.Sprites.Aminals.Animal1_Frame_6_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_6_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 91
//Animal1_Frame_6_right_Asset (Engine.Sprites.Aminals.Animal1_Frame_6_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal1_Frame_6_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 92
//Animal2 (Engine.Sprites.Aminals.Animal2)
package Engine.Sprites.Aminals {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class Animal2 extends Sprite {
public var Bit_Ant_T3_F1_R_F2:CharacterFrame;
public var Frame_1_left:BitmapAsset;
public var Bit_Ant_T3_E_R_F1:CharacterFrame;
public var Bit_Ant_T3_E_R_F2:CharacterFrame;
public var Bit_Ant_T3_E_R_F3:CharacterFrame;
public var CurrentFrame:Number;// = 1
public var Bit_Ant_T3_F2_R_F1:CharacterFrame;
public var Bit_Ant_T3_F2_R_F3:CharacterFrame;
private var Frame_1_left_Asset:Class;
public var Loading:Number;// = 0
public var Frame_3_right:BitmapAsset;
public var Frame_1_right:BitmapAsset;
public var Frame_2_left:BitmapAsset;
public var Bit_Ant_T3_F2_R_F2:CharacterFrame;
public var Bit_Ant_T3_F3_R_F1:CharacterFrame;
public var Bit_Ant_T3_F3_R_F3:CharacterFrame;
private var Apple_1_Asset:Class;
public var AnimationTimer:Timer;
public var Bit_Ant_T3_F3_R_F2:CharacterFrame;
public var Frame_3_left:BitmapAsset;
private var Health_1_left_Asset:Class;
public var Health_1_right:BitmapAsset;
public var Bit_Ant_T3_E_L_F1:CharacterFrame;
public var Bit_Ant_T3_E_L_F2:CharacterFrame;
public var Bit_Ant_T3_E_L_F3:CharacterFrame;
public var Bit_Ant_T3_F4_R_F1:CharacterFrame;
public var Bit_Ant_T3_F4_R_F2:CharacterFrame;
public var Bit_Ant_T3_F4_R_F3:CharacterFrame;
private var Frame_3_left_Asset:Class;
public var Frame_2_right:BitmapAsset;
public var Direction:Number;// = -1
private var Health_1_right_Asset:Class;
public var AnimationVelocity:Number;// = 0
public var Apple_1:BitmapAsset;
private var Frame_1_right_Asset:Class;
private var Frame_3_right_Asset:Class;
public var Apple_2:BitmapAsset;
private var Frame_2_right_Asset:Class;
public var Bit_Ant_T3_F1_R_F1:CharacterFrame;
private var Frame_2_left_Asset:Class;
public var Health_1_left:BitmapAsset;
private var Apple_2_Asset:Class;
public var Bit_Ant_T3_F1_R_F3:CharacterFrame;
public function Animal2(type:Number, velocity:Number):void{
Frame_1_left_Asset = Animal2_Frame_1_left_Asset;
Frame_2_left_Asset = Animal2_Frame_2_left_Asset;
Frame_3_left_Asset = Animal2_Frame_3_left_Asset;
Frame_1_right_Asset = Animal2_Frame_1_right_Asset;
Frame_2_right_Asset = Animal2_Frame_2_right_Asset;
Frame_3_right_Asset = Animal2_Frame_3_right_Asset;
Apple_1_Asset = Animal2_Apple_1_Asset;
Apple_2_Asset = Animal2_Apple_2_Asset;
Health_1_right_Asset = Animal2_Health_1_right_Asset;
Health_1_left_Asset = Animal2_Health_1_left_Asset;
AnimationTimer = new Timer(60, 0);
Bit_Ant_T3_E_L_F1 = new CharacterFrame();
Bit_Ant_T3_E_L_F2 = new CharacterFrame();
Bit_Ant_T3_E_L_F3 = new CharacterFrame();
Bit_Ant_T3_E_R_F1 = new CharacterFrame();
Bit_Ant_T3_E_R_F2 = new CharacterFrame();
Bit_Ant_T3_E_R_F3 = new CharacterFrame();
Bit_Ant_T3_F1_R_F1 = new CharacterFrame();
Bit_Ant_T3_F1_R_F2 = new CharacterFrame();
Bit_Ant_T3_F1_R_F3 = new CharacterFrame();
Bit_Ant_T3_F2_R_F1 = new CharacterFrame();
Bit_Ant_T3_F2_R_F2 = new CharacterFrame();
Bit_Ant_T3_F2_R_F3 = new CharacterFrame();
Bit_Ant_T3_F3_R_F1 = new CharacterFrame();
Bit_Ant_T3_F3_R_F2 = new CharacterFrame();
Bit_Ant_T3_F3_R_F3 = new CharacterFrame();
Bit_Ant_T3_F4_R_F1 = new CharacterFrame();
Bit_Ant_T3_F4_R_F2 = new CharacterFrame();
Bit_Ant_T3_F4_R_F3 = new CharacterFrame();
super();
var Frame_1_left_bitmap1:BitmapAsset = new Frame_1_left_Asset();
var Health_1_left_bitmap2:BitmapAsset = new Health_1_left_Asset();
var Frame_2_left_bitmap3:BitmapAsset = new Frame_2_left_Asset();
var Health_1_left_bitmap4:BitmapAsset = new Health_1_left_Asset();
var Frame_3_left_bitmap5:BitmapAsset = new Frame_3_left_Asset();
var Health_1_left_bitmap6:BitmapAsset = new Health_1_left_Asset();
var Frame_1_right_bitmap7:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap8:BitmapAsset = new Health_1_right_Asset();
var Frame_2_right_bitmap9:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap10:BitmapAsset = new Health_1_right_Asset();
var Frame_3_right_bitmap11:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap12:BitmapAsset = new Health_1_right_Asset();
var Frame_1_right_bitmap13:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap14:BitmapAsset = new Health_1_right_Asset();
var Apple_1_bitmap15:BitmapAsset = new Apple_1_Asset();
var Frame_2_right_bitmap16:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap17:BitmapAsset = new Health_1_right_Asset();
var Apple_1_bitmap18:BitmapAsset = new Apple_1_Asset();
var Frame_3_right_bitmap19:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap20:BitmapAsset = new Health_1_right_Asset();
var Apple_1_bitmap21:BitmapAsset = new Apple_1_Asset();
var Frame_1_right_bitmap22:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap23:BitmapAsset = new Health_1_right_Asset();
var Apple_2_bitmap24:BitmapAsset = new Apple_2_Asset();
var Frame_2_right_bitmap25:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap26:BitmapAsset = new Health_1_right_Asset();
var Apple_2_bitmap27:BitmapAsset = new Apple_2_Asset();
var Frame_3_right_bitmap28:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap29:BitmapAsset = new Health_1_right_Asset();
var Apple_2_bitmap30:BitmapAsset = new Apple_2_Asset();
var Frame_1_right_bitmap31:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap32:BitmapAsset = new Health_1_right_Asset();
var Frame_2_right_bitmap33:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap34:BitmapAsset = new Health_1_right_Asset();
var Frame_3_right_bitmap35:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap36:BitmapAsset = new Health_1_right_Asset();
var Frame_1_right_bitmap37:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap38:BitmapAsset = new Health_1_right_Asset();
var Frame_2_right_bitmap39:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap40:BitmapAsset = new Health_1_right_Asset();
var Frame_3_right_bitmap41:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap42:BitmapAsset = new Health_1_right_Asset();
Bit_Ant_T3_E_L_F1.Frame.addChild(Frame_1_left_bitmap1);
Bit_Ant_T3_E_L_F1.Health_1.addChild(Health_1_left_bitmap2);
Bit_Ant_T3_E_L_F2.Frame.addChild(Frame_2_left_bitmap3);
Bit_Ant_T3_E_L_F2.Health_1.addChild(Health_1_left_bitmap4);
Bit_Ant_T3_E_L_F3.Frame.addChild(Frame_3_left_bitmap5);
Bit_Ant_T3_E_L_F3.Health_1.addChild(Health_1_left_bitmap6);
Bit_Ant_T3_E_R_F1.Frame.addChild(Frame_1_right_bitmap7);
Bit_Ant_T3_E_R_F1.Health_1.addChild(Health_1_right_bitmap8);
Bit_Ant_T3_E_R_F2.Frame.addChild(Frame_2_right_bitmap9);
Bit_Ant_T3_E_R_F2.Health_1.addChild(Health_1_right_bitmap10);
Bit_Ant_T3_E_R_F3.Frame.addChild(Frame_3_right_bitmap11);
Bit_Ant_T3_E_R_F3.Health_1.addChild(Health_1_right_bitmap12);
Bit_Ant_T3_F1_R_F1.Frame.addChild(Frame_1_right_bitmap13);
Bit_Ant_T3_F1_R_F1.Health_1.addChild(Health_1_right_bitmap14);
Bit_Ant_T3_F1_R_F1.Apple.addChild(Apple_1_bitmap15);
Bit_Ant_T3_F1_R_F2.Frame.addChild(Frame_2_right_bitmap16);
Bit_Ant_T3_F1_R_F2.Health_1.addChild(Health_1_right_bitmap17);
Bit_Ant_T3_F1_R_F2.Apple.addChild(Apple_1_bitmap18);
Bit_Ant_T3_F1_R_F3.Frame.addChild(Frame_3_right_bitmap19);
Bit_Ant_T3_F1_R_F3.Health_1.addChild(Health_1_right_bitmap20);
Bit_Ant_T3_F1_R_F3.Apple.addChild(Apple_1_bitmap21);
Bit_Ant_T3_F2_R_F1.Frame.addChild(Frame_1_right_bitmap22);
Bit_Ant_T3_F2_R_F1.Health_1.addChild(Health_1_right_bitmap23);
Bit_Ant_T3_F2_R_F1.Apple.addChild(Apple_2_bitmap24);
Bit_Ant_T3_F2_R_F2.Frame.addChild(Frame_2_right_bitmap25);
Bit_Ant_T3_F2_R_F2.Health_1.addChild(Health_1_right_bitmap26);
Bit_Ant_T3_F2_R_F2.Apple.addChild(Apple_2_bitmap27);
Bit_Ant_T3_F2_R_F3.Frame.addChild(Frame_3_right_bitmap28);
Bit_Ant_T3_F2_R_F3.Health_1.addChild(Health_1_right_bitmap29);
Bit_Ant_T3_F2_R_F3.Apple.addChild(Apple_2_bitmap30);
Bit_Ant_T3_F3_R_F1.Frame.addChild(Frame_1_right_bitmap31);
Bit_Ant_T3_F3_R_F1.Health_1.addChild(Health_1_right_bitmap32);
Bit_Ant_T3_F3_R_F2.Frame.addChild(Frame_2_right_bitmap33);
Bit_Ant_T3_F3_R_F2.Health_1.addChild(Health_1_right_bitmap34);
Bit_Ant_T3_F3_R_F3.Frame.addChild(Frame_3_right_bitmap35);
Bit_Ant_T3_F3_R_F3.Health_1.addChild(Health_1_right_bitmap36);
Bit_Ant_T3_F4_R_F1.Frame.addChild(Frame_1_right_bitmap37);
Bit_Ant_T3_F4_R_F1.Health_1.addChild(Health_1_right_bitmap38);
Bit_Ant_T3_F4_R_F2.Frame.addChild(Frame_2_right_bitmap39);
Bit_Ant_T3_F4_R_F2.Health_1.addChild(Health_1_right_bitmap40);
Bit_Ant_T3_F4_R_F3.Frame.addChild(Frame_3_right_bitmap41);
Bit_Ant_T3_F4_R_F3.Health_1.addChild(Health_1_right_bitmap42);
Frame_1_left_bitmap1.smoothing = true;
Health_1_left_bitmap2.smoothing = true;
Frame_2_left_bitmap3.smoothing = true;
Health_1_left_bitmap4.smoothing = true;
Frame_3_left_bitmap5.smoothing = true;
Health_1_left_bitmap6.smoothing = true;
Frame_1_right_bitmap7.smoothing = true;
Health_1_right_bitmap8.smoothing = true;
Frame_2_right_bitmap9.smoothing = true;
Health_1_right_bitmap10.smoothing = true;
Frame_3_right_bitmap11.smoothing = true;
Health_1_right_bitmap12.smoothing = true;
Frame_1_right_bitmap13.smoothing = true;
Health_1_right_bitmap14.smoothing = true;
Apple_1_bitmap15.smoothing = true;
Frame_2_right_bitmap16.smoothing = true;
Health_1_right_bitmap17.smoothing = true;
Apple_1_bitmap18.smoothing = true;
Frame_3_right_bitmap19.smoothing = true;
Health_1_right_bitmap20.smoothing = true;
Apple_1_bitmap21.smoothing = true;
Frame_1_right_bitmap22.smoothing = true;
Health_1_right_bitmap23.smoothing = true;
Apple_2_bitmap24.smoothing = true;
Frame_2_right_bitmap25.smoothing = true;
Health_1_right_bitmap26.smoothing = true;
Apple_2_bitmap27.smoothing = true;
Frame_3_right_bitmap28.smoothing = true;
Health_1_right_bitmap29.smoothing = true;
Apple_2_bitmap30.smoothing = true;
Frame_1_right_bitmap31.smoothing = true;
Health_1_right_bitmap32.smoothing = true;
Frame_2_right_bitmap33.smoothing = true;
Health_1_right_bitmap34.smoothing = true;
Frame_3_right_bitmap35.smoothing = true;
Health_1_right_bitmap36.smoothing = true;
Frame_1_right_bitmap37.smoothing = true;
Health_1_right_bitmap38.smoothing = true;
Frame_2_right_bitmap39.smoothing = true;
Health_1_right_bitmap40.smoothing = true;
Frame_3_right_bitmap41.smoothing = true;
Health_1_right_bitmap42.smoothing = true;
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
super.addChild(Bit_Ant_T3_E_L_F1);
super.addChild(Bit_Ant_T3_E_L_F2);
super.addChild(Bit_Ant_T3_E_L_F3);
super.addChild(Bit_Ant_T3_E_R_F1);
super.addChild(Bit_Ant_T3_E_R_F2);
super.addChild(Bit_Ant_T3_E_R_F3);
super.addChild(Bit_Ant_T3_F1_R_F1);
super.addChild(Bit_Ant_T3_F1_R_F2);
super.addChild(Bit_Ant_T3_F1_R_F3);
super.addChild(Bit_Ant_T3_F2_R_F1);
super.addChild(Bit_Ant_T3_F2_R_F2);
super.addChild(Bit_Ant_T3_F2_R_F3);
super.addChild(Bit_Ant_T3_F3_R_F1);
super.addChild(Bit_Ant_T3_F3_R_F2);
super.addChild(Bit_Ant_T3_F3_R_F3);
super.addChild(Bit_Ant_T3_F4_R_F1);
super.addChild(Bit_Ant_T3_F4_R_F2);
super.addChild(Bit_Ant_T3_F4_R_F3);
AntType2(velocity);
}
public function SetAnimationVelocity(velocity:Number):void{
AnimationTimer.delay = velocity;
}
public function SetLoading(loading:Number):void{
Loading = loading;
}
public function StopAnimation():void{
AnimationTimer.stop();
}
public function AntType2(velocity:Number):void{
AnimationVelocity = velocity;
AnimationTimer.addEventListener(TimerEvent.TIMER, newFrame_type_2);
}
public function newFrame_type_2(e:TimerEvent):void{
switch (CurrentFrame){
case 1:
CurrentFrame = 2;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = true;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = true;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = true;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
};
if (Loading == 2){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = true;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
};
break;
case 2:
CurrentFrame = 3;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = true;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = true;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = true;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
};
if (Loading == 2){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = true;
Bit_Ant_T3_F2_R_F3.visible = false;
};
break;
case 3:
CurrentFrame = 1;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = true;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = true;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = true;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
};
if (Loading == 2){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = true;
};
break;
};
}
public function StartAnimation():void{
AnimationTimer.start();
}
public function SetDirection(dir:Number):void{
Direction = dir;
}
public function I2_MoveTo_h1():void{
Bit_Ant_T3_E_L_F1.Health_1.visible = true;
Bit_Ant_T3_E_L_F2.Health_1.visible = true;
Bit_Ant_T3_E_L_F3.Health_1.visible = true;
Bit_Ant_T3_E_R_F1.Health_1.visible = true;
Bit_Ant_T3_E_R_F2.Health_1.visible = true;
Bit_Ant_T3_E_R_F3.Health_1.visible = true;
Bit_Ant_T3_F1_R_F1.Health_1.visible = true;
Bit_Ant_T3_F1_R_F2.Health_1.visible = true;
Bit_Ant_T3_F1_R_F3.Health_1.visible = true;
Bit_Ant_T3_F2_R_F1.Health_1.visible = true;
Bit_Ant_T3_F2_R_F2.Health_1.visible = true;
Bit_Ant_T3_F2_R_F3.Health_1.visible = true;
Bit_Ant_T3_F3_R_F1.Health_1.visible = true;
Bit_Ant_T3_F3_R_F2.Health_1.visible = true;
Bit_Ant_T3_F3_R_F3.Health_1.visible = true;
Bit_Ant_T3_F4_R_F1.Health_1.visible = true;
Bit_Ant_T3_F4_R_F2.Health_1.visible = true;
Bit_Ant_T3_F4_R_F3.Health_1.visible = true;
}
}
}//package Engine.Sprites.Aminals
Section 93
//Animal2_Apple_1_Asset (Engine.Sprites.Aminals.Animal2_Apple_1_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Apple_1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 94
//Animal2_Apple_2_Asset (Engine.Sprites.Aminals.Animal2_Apple_2_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Apple_2_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 95
//Animal2_Frame_1_left_Asset (Engine.Sprites.Aminals.Animal2_Frame_1_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Frame_1_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 96
//Animal2_Frame_1_right_Asset (Engine.Sprites.Aminals.Animal2_Frame_1_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Frame_1_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 97
//Animal2_Frame_2_left_Asset (Engine.Sprites.Aminals.Animal2_Frame_2_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Frame_2_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 98
//Animal2_Frame_2_right_Asset (Engine.Sprites.Aminals.Animal2_Frame_2_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Frame_2_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 99
//Animal2_Frame_3_left_Asset (Engine.Sprites.Aminals.Animal2_Frame_3_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Frame_3_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 100
//Animal2_Frame_3_right_Asset (Engine.Sprites.Aminals.Animal2_Frame_3_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Frame_3_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 101
//Animal2_Health_1_left_Asset (Engine.Sprites.Aminals.Animal2_Health_1_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Health_1_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 102
//Animal2_Health_1_right_Asset (Engine.Sprites.Aminals.Animal2_Health_1_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal2_Health_1_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 103
//Animal3 (Engine.Sprites.Aminals.Animal3)
package Engine.Sprites.Aminals {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class Animal3 extends Sprite {
private var Apple_4_Asset:Class;
public var Bit_Ant_T3_E_R_F1:CharacterFrame;
public var Bit_Ant_T3_E_R_F2:CharacterFrame;
public var Bit_Ant_T3_E_R_F3:CharacterFrame;
public var Health_2_right:BitmapAsset;
public var Health_2_left:BitmapAsset;
public var Loading:Number;// = 0
public var Frame_3_right:BitmapAsset;
private var Frame_1_left_Asset:Class;
public var Frame_2_left:BitmapAsset;
public var Bit_Ant_T3_F3_R_F1:CharacterFrame;
public var Bit_Ant_T3_F3_R_F3:CharacterFrame;
private var Apple_1_Asset:Class;
public var AnimationTimer:Timer;
public var Bit_Ant_T3_F3_R_F2:CharacterFrame;
private var Health_1_left_Asset:Class;
private var Health_1_right_Asset:Class;
public var Direction:Number;// = -1
public var AnimationVelocity:Number;// = 0
public var Apple_1:BitmapAsset;
private var Frame_1_right_Asset:Class;
public var Apple_3:BitmapAsset;
private var Frame_3_right_Asset:Class;
public var Apple_2:BitmapAsset;
public var Apple_4:BitmapAsset;
private var Frame_2_left_Asset:Class;
public var Health_1_left:BitmapAsset;
private var Apple_2_Asset:Class;
public var Frame_1_left:BitmapAsset;
public var CurrentFrame:Number;// = 1
public var Bit_Ant_T3_F2_R_F1:CharacterFrame;
public var Bit_Ant_T3_F2_R_F3:CharacterFrame;
public var Frame_1_right:BitmapAsset;
public var Bit_Ant_T3_F2_R_F2:CharacterFrame;
private var Health_2_left_Asset:Class;
private var Apple_3_Asset:Class;
public var Frame_3_left:BitmapAsset;
public var Health_1_right:BitmapAsset;
public var Bit_Ant_T3_E_L_F1:CharacterFrame;
public var Bit_Ant_T3_E_L_F2:CharacterFrame;
public var Bit_Ant_T3_E_L_F3:CharacterFrame;
public var Bit_Ant_T3_F4_R_F1:CharacterFrame;
public var Bit_Ant_T3_F4_R_F2:CharacterFrame;
public var Bit_Ant_T3_F4_R_F3:CharacterFrame;
private var Frame_3_left_Asset:Class;
public var Frame_2_right:BitmapAsset;
private var Health_2_right_Asset:Class;
public var Bit_Ant_T3_F1_R_F1:CharacterFrame;
public var Bit_Ant_T3_F1_R_F2:CharacterFrame;
public var Bit_Ant_T3_F1_R_F3:CharacterFrame;
private var Frame_2_right_Asset:Class;
public function Animal3(type:Number, velocity:Number):void{
Frame_1_left_Asset = Animal3_Frame_1_left_Asset;
Frame_2_left_Asset = Animal3_Frame_2_left_Asset;
Frame_3_left_Asset = Animal3_Frame_3_left_Asset;
Frame_1_right_Asset = Animal3_Frame_1_right_Asset;
Frame_2_right_Asset = Animal3_Frame_2_right_Asset;
Frame_3_right_Asset = Animal3_Frame_3_right_Asset;
Apple_1_Asset = Animal3_Apple_1_Asset;
Apple_2_Asset = Animal3_Apple_2_Asset;
Apple_3_Asset = Animal3_Apple_3_Asset;
Apple_4_Asset = Animal3_Apple_4_Asset;
Health_1_right_Asset = Animal3_Health_1_right_Asset;
Health_2_right_Asset = Animal3_Health_2_right_Asset;
Health_1_left_Asset = Animal3_Health_1_left_Asset;
Health_2_left_Asset = Animal3_Health_2_left_Asset;
AnimationTimer = new Timer(60, 0);
Bit_Ant_T3_E_L_F1 = new CharacterFrame();
Bit_Ant_T3_E_L_F2 = new CharacterFrame();
Bit_Ant_T3_E_L_F3 = new CharacterFrame();
Bit_Ant_T3_E_R_F1 = new CharacterFrame();
Bit_Ant_T3_E_R_F2 = new CharacterFrame();
Bit_Ant_T3_E_R_F3 = new CharacterFrame();
Bit_Ant_T3_F1_R_F1 = new CharacterFrame();
Bit_Ant_T3_F1_R_F2 = new CharacterFrame();
Bit_Ant_T3_F1_R_F3 = new CharacterFrame();
Bit_Ant_T3_F2_R_F1 = new CharacterFrame();
Bit_Ant_T3_F2_R_F2 = new CharacterFrame();
Bit_Ant_T3_F2_R_F3 = new CharacterFrame();
Bit_Ant_T3_F3_R_F1 = new CharacterFrame();
Bit_Ant_T3_F3_R_F2 = new CharacterFrame();
Bit_Ant_T3_F3_R_F3 = new CharacterFrame();
Bit_Ant_T3_F4_R_F1 = new CharacterFrame();
Bit_Ant_T3_F4_R_F2 = new CharacterFrame();
Bit_Ant_T3_F4_R_F3 = new CharacterFrame();
super();
var Frame_1_left_bitmap1:BitmapAsset = new Frame_1_left_Asset();
var Health_1_left_bitmap2:BitmapAsset = new Health_1_left_Asset();
var Health_2_left_bitmap3:BitmapAsset = new Health_2_left_Asset();
var Frame_2_left_bitmap4:BitmapAsset = new Frame_2_left_Asset();
var Health_1_left_bitmap5:BitmapAsset = new Health_1_left_Asset();
var Health_2_left_bitmap6:BitmapAsset = new Health_2_left_Asset();
var Frame_3_left_bitmap7:BitmapAsset = new Frame_3_left_Asset();
var Health_1_left_bitmap8:BitmapAsset = new Health_1_left_Asset();
var Health_2_left_bitmap9:BitmapAsset = new Health_2_left_Asset();
var Frame_1_right_bitmap10:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap11:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap12:BitmapAsset = new Health_2_right_Asset();
var Frame_2_right_bitmap13:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap14:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap15:BitmapAsset = new Health_2_right_Asset();
var Frame_3_right_bitmap16:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap17:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap18:BitmapAsset = new Health_2_right_Asset();
var Frame_1_right_bitmap19:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap20:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap21:BitmapAsset = new Health_2_right_Asset();
var Apple_1_bitmap22:BitmapAsset = new Apple_1_Asset();
var Frame_2_right_bitmap23:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap24:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap25:BitmapAsset = new Health_2_right_Asset();
var Apple_1_bitmap26:BitmapAsset = new Apple_1_Asset();
var Frame_3_right_bitmap27:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap28:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap29:BitmapAsset = new Health_2_right_Asset();
var Apple_1_bitmap30:BitmapAsset = new Apple_1_Asset();
var Frame_1_right_bitmap31:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap32:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap33:BitmapAsset = new Health_2_right_Asset();
var Apple_2_bitmap34:BitmapAsset = new Apple_2_Asset();
var Frame_2_right_bitmap35:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap36:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap37:BitmapAsset = new Health_2_right_Asset();
var Apple_2_bitmap38:BitmapAsset = new Apple_2_Asset();
var Frame_3_right_bitmap39:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap40:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap41:BitmapAsset = new Health_2_right_Asset();
var Apple_2_bitmap42:BitmapAsset = new Apple_2_Asset();
var Frame_1_right_bitmap43:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap44:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap45:BitmapAsset = new Health_2_right_Asset();
var Apple_3_bitmap46:BitmapAsset = new Apple_3_Asset();
var Frame_2_right_bitmap47:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap48:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap49:BitmapAsset = new Health_2_right_Asset();
var Apple_3_bitmap50:BitmapAsset = new Apple_3_Asset();
var Frame_3_right_bitmap51:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap52:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap53:BitmapAsset = new Health_2_right_Asset();
var Apple_3_bitmap54:BitmapAsset = new Apple_3_Asset();
var Frame_1_right_bitmap55:BitmapAsset = new Frame_1_right_Asset();
var Health_1_right_bitmap56:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap57:BitmapAsset = new Health_2_right_Asset();
var Apple_4_bitmap58:BitmapAsset = new Apple_4_Asset();
var Frame_2_right_bitmap59:BitmapAsset = new Frame_2_right_Asset();
var Health_1_right_bitmap60:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap61:BitmapAsset = new Health_2_right_Asset();
var Apple_4_bitmap62:BitmapAsset = new Apple_4_Asset();
var Frame_3_right_bitmap63:BitmapAsset = new Frame_3_right_Asset();
var Health_1_right_bitmap64:BitmapAsset = new Health_1_right_Asset();
var Health_2_right_bitmap65:BitmapAsset = new Health_2_right_Asset();
var Apple_4_bitmap66:BitmapAsset = new Apple_4_Asset();
Frame_1_left_bitmap1.smoothing = true;
Health_1_left_bitmap2.smoothing = true;
Health_2_left_bitmap3.smoothing = true;
Frame_2_left_bitmap4.smoothing = true;
Health_1_left_bitmap5.smoothing = true;
Health_2_left_bitmap6.smoothing = true;
Frame_3_left_bitmap7.smoothing = true;
Health_1_left_bitmap8.smoothing = true;
Health_2_left_bitmap9.smoothing = true;
Frame_1_right_bitmap10.smoothing = true;
Health_1_right_bitmap11.smoothing = true;
Health_2_right_bitmap12.smoothing = true;
Frame_2_right_bitmap13.smoothing = true;
Health_1_right_bitmap14.smoothing = true;
Health_2_right_bitmap15.smoothing = true;
Frame_3_right_bitmap16.smoothing = true;
Health_1_right_bitmap17.smoothing = true;
Health_2_right_bitmap18.smoothing = true;
Frame_1_right_bitmap19.smoothing = true;
Health_1_right_bitmap20.smoothing = true;
Health_2_right_bitmap21.smoothing = true;
Apple_1_bitmap22.smoothing = true;
Frame_2_right_bitmap23.smoothing = true;
Health_1_right_bitmap24.smoothing = true;
Health_2_right_bitmap25.smoothing = true;
Apple_1_bitmap26.smoothing = true;
Frame_3_right_bitmap27.smoothing = true;
Health_1_right_bitmap28.smoothing = true;
Health_2_right_bitmap29.smoothing = true;
Apple_1_bitmap30.smoothing = true;
Frame_1_right_bitmap31.smoothing = true;
Health_1_right_bitmap32.smoothing = true;
Health_2_right_bitmap33.smoothing = true;
Apple_2_bitmap34.smoothing = true;
Frame_2_right_bitmap35.smoothing = true;
Health_1_right_bitmap36.smoothing = true;
Health_2_right_bitmap37.smoothing = true;
Apple_2_bitmap38.smoothing = true;
Frame_3_right_bitmap39.smoothing = true;
Health_1_right_bitmap40.smoothing = true;
Health_2_right_bitmap41.smoothing = true;
Apple_2_bitmap42.smoothing = true;
Frame_1_right_bitmap43.smoothing = true;
Health_1_right_bitmap44.smoothing = true;
Health_2_right_bitmap45.smoothing = true;
Apple_3_bitmap46.smoothing = true;
Frame_2_right_bitmap47.smoothing = true;
Health_1_right_bitmap48.smoothing = true;
Health_2_right_bitmap49.smoothing = true;
Apple_3_bitmap50.smoothing = true;
Frame_3_right_bitmap51.smoothing = true;
Health_1_right_bitmap52.smoothing = true;
Health_2_right_bitmap53.smoothing = true;
Apple_3_bitmap54.smoothing = true;
Frame_1_right_bitmap55.smoothing = true;
Health_1_right_bitmap56.smoothing = true;
Health_2_right_bitmap57.smoothing = true;
Apple_4_bitmap58.smoothing = true;
Frame_2_right_bitmap59.smoothing = true;
Health_1_right_bitmap60.smoothing = true;
Health_2_right_bitmap61.smoothing = true;
Apple_4_bitmap62.smoothing = true;
Frame_3_right_bitmap63.smoothing = true;
Health_1_right_bitmap64.smoothing = true;
Health_2_right_bitmap65.smoothing = true;
Apple_4_bitmap66.smoothing = true;
Bit_Ant_T3_E_L_F1.Frame.addChild(Frame_1_left_bitmap1);
Bit_Ant_T3_E_L_F1.Health_1.addChild(Health_1_left_bitmap2);
Bit_Ant_T3_E_L_F1.Health_2.addChild(Health_2_left_bitmap3);
Bit_Ant_T3_E_L_F2.Frame.addChild(Frame_2_left_bitmap4);
Bit_Ant_T3_E_L_F2.Health_1.addChild(Health_1_left_bitmap5);
Bit_Ant_T3_E_L_F2.Health_2.addChild(Health_2_left_bitmap6);
Bit_Ant_T3_E_L_F3.Frame.addChild(Frame_3_left_bitmap7);
Bit_Ant_T3_E_L_F3.Health_1.addChild(Health_1_left_bitmap8);
Bit_Ant_T3_E_L_F3.Health_2.addChild(Health_2_left_bitmap9);
Bit_Ant_T3_E_R_F1.Frame.addChild(Frame_1_right_bitmap10);
Bit_Ant_T3_E_R_F1.Health_1.addChild(Health_1_right_bitmap11);
Bit_Ant_T3_E_R_F1.Health_2.addChild(Health_2_right_bitmap12);
Bit_Ant_T3_E_R_F2.Frame.addChild(Frame_2_right_bitmap13);
Bit_Ant_T3_E_R_F2.Health_1.addChild(Health_1_right_bitmap14);
Bit_Ant_T3_E_R_F2.Health_2.addChild(Health_2_right_bitmap15);
Bit_Ant_T3_E_R_F3.Frame.addChild(Frame_3_right_bitmap16);
Bit_Ant_T3_E_R_F3.Health_1.addChild(Health_1_right_bitmap17);
Bit_Ant_T3_E_R_F3.Health_2.addChild(Health_2_right_bitmap18);
Bit_Ant_T3_F1_R_F1.Frame.addChild(Frame_1_right_bitmap19);
Bit_Ant_T3_F1_R_F1.Health_1.addChild(Health_1_right_bitmap20);
Bit_Ant_T3_F1_R_F1.Health_2.addChild(Health_2_right_bitmap21);
Bit_Ant_T3_F1_R_F1.Apple.addChild(Apple_1_bitmap22);
Bit_Ant_T3_F1_R_F2.Frame.addChild(Frame_2_right_bitmap23);
Bit_Ant_T3_F1_R_F2.Health_1.addChild(Health_1_right_bitmap24);
Bit_Ant_T3_F1_R_F2.Health_2.addChild(Health_2_right_bitmap25);
Bit_Ant_T3_F1_R_F2.Apple.addChild(Apple_1_bitmap26);
Bit_Ant_T3_F1_R_F3.Frame.addChild(Frame_3_right_bitmap27);
Bit_Ant_T3_F1_R_F3.Health_1.addChild(Health_1_right_bitmap28);
Bit_Ant_T3_F1_R_F3.Health_2.addChild(Health_2_right_bitmap29);
Bit_Ant_T3_F1_R_F3.Apple.addChild(Apple_1_bitmap30);
Bit_Ant_T3_F2_R_F1.Frame.addChild(Frame_1_right_bitmap31);
Bit_Ant_T3_F2_R_F1.Health_1.addChild(Health_1_right_bitmap32);
Bit_Ant_T3_F2_R_F1.Health_2.addChild(Health_2_right_bitmap33);
Bit_Ant_T3_F2_R_F1.Apple.addChild(Apple_2_bitmap34);
Bit_Ant_T3_F2_R_F2.Frame.addChild(Frame_2_right_bitmap35);
Bit_Ant_T3_F2_R_F2.Health_1.addChild(Health_1_right_bitmap36);
Bit_Ant_T3_F2_R_F2.Health_2.addChild(Health_2_right_bitmap37);
Bit_Ant_T3_F2_R_F2.Apple.addChild(Apple_2_bitmap38);
Bit_Ant_T3_F2_R_F3.Frame.addChild(Frame_3_right_bitmap39);
Bit_Ant_T3_F2_R_F3.Health_1.addChild(Health_1_right_bitmap40);
Bit_Ant_T3_F2_R_F3.Health_2.addChild(Health_2_right_bitmap41);
Bit_Ant_T3_F2_R_F3.Apple.addChild(Apple_2_bitmap42);
Bit_Ant_T3_F3_R_F1.Frame.addChild(Frame_1_right_bitmap43);
Bit_Ant_T3_F3_R_F1.Health_1.addChild(Health_1_right_bitmap44);
Bit_Ant_T3_F3_R_F1.Health_2.addChild(Health_2_right_bitmap45);
Bit_Ant_T3_F3_R_F1.Apple.addChild(Apple_3_bitmap46);
Bit_Ant_T3_F3_R_F2.Frame.addChild(Frame_2_right_bitmap47);
Bit_Ant_T3_F3_R_F2.Health_1.addChild(Health_1_right_bitmap48);
Bit_Ant_T3_F3_R_F2.Health_2.addChild(Health_2_right_bitmap49);
Bit_Ant_T3_F3_R_F2.Apple.addChild(Apple_3_bitmap50);
Bit_Ant_T3_F3_R_F3.Frame.addChild(Frame_3_right_bitmap51);
Bit_Ant_T3_F3_R_F3.Health_1.addChild(Health_1_right_bitmap52);
Bit_Ant_T3_F3_R_F3.Health_2.addChild(Health_2_right_bitmap53);
Bit_Ant_T3_F3_R_F3.Apple.addChild(Apple_3_bitmap54);
Bit_Ant_T3_F4_R_F1.Frame.addChild(Frame_1_right_bitmap55);
Bit_Ant_T3_F4_R_F1.Health_1.addChild(Health_1_right_bitmap56);
Bit_Ant_T3_F4_R_F1.Health_2.addChild(Health_2_right_bitmap57);
Bit_Ant_T3_F4_R_F1.Apple.addChild(Apple_4_bitmap58);
Bit_Ant_T3_F4_R_F2.Frame.addChild(Frame_2_right_bitmap59);
Bit_Ant_T3_F4_R_F2.Health_1.addChild(Health_1_right_bitmap60);
Bit_Ant_T3_F4_R_F2.Health_2.addChild(Health_2_right_bitmap61);
Bit_Ant_T3_F4_R_F2.Apple.addChild(Apple_4_bitmap62);
Bit_Ant_T3_F4_R_F3.Frame.addChild(Frame_3_right_bitmap63);
Bit_Ant_T3_F4_R_F3.Health_1.addChild(Health_1_right_bitmap64);
Bit_Ant_T3_F4_R_F3.Health_2.addChild(Health_2_right_bitmap65);
Bit_Ant_T3_F4_R_F3.Apple.addChild(Apple_4_bitmap66);
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
super.addChild(Bit_Ant_T3_E_L_F1);
super.addChild(Bit_Ant_T3_E_L_F2);
super.addChild(Bit_Ant_T3_E_L_F3);
super.addChild(Bit_Ant_T3_E_R_F1);
super.addChild(Bit_Ant_T3_E_R_F2);
super.addChild(Bit_Ant_T3_E_R_F3);
super.addChild(Bit_Ant_T3_F1_R_F1);
super.addChild(Bit_Ant_T3_F1_R_F2);
super.addChild(Bit_Ant_T3_F1_R_F3);
super.addChild(Bit_Ant_T3_F2_R_F1);
super.addChild(Bit_Ant_T3_F2_R_F2);
super.addChild(Bit_Ant_T3_F2_R_F3);
super.addChild(Bit_Ant_T3_F3_R_F1);
super.addChild(Bit_Ant_T3_F3_R_F2);
super.addChild(Bit_Ant_T3_F3_R_F3);
super.addChild(Bit_Ant_T3_F4_R_F1);
super.addChild(Bit_Ant_T3_F4_R_F2);
super.addChild(Bit_Ant_T3_F4_R_F3);
AntType3(velocity);
}
public function newFrame_type_3(e:TimerEvent):void{
switch (CurrentFrame){
case 1:
CurrentFrame = 2;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = true;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = true;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = true;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 2){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = true;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 3){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = true;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 4){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = true;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
break;
case 2:
CurrentFrame = 3;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = true;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = true;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = true;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 2){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = true;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 3){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = true;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 4){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = true;
Bit_Ant_T3_F4_R_F3.visible = false;
};
break;
case 3:
CurrentFrame = 1;
if (Loading == 0){
if (Direction < 0){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = true;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
} else {
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_E_R_F3.visible = true;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
};
if (Loading == 1){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = true;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 2){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = true;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 3){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = true;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = false;
};
if (Loading == 4){
Bit_Ant_T3_E_L_F1.visible = false;
Bit_Ant_T3_E_L_F2.visible = false;
Bit_Ant_T3_E_L_F3.visible = false;
Bit_Ant_T3_E_R_F1.visible = false;
Bit_Ant_T3_E_R_F2.visible = false;
Bit_Ant_T3_F1_R_F1.visible = false;
Bit_Ant_T3_F1_R_F2.visible = false;
Bit_Ant_T3_F1_R_F3.visible = false;
Bit_Ant_T3_F2_R_F1.visible = false;
Bit_Ant_T3_F2_R_F2.visible = false;
Bit_Ant_T3_F2_R_F3.visible = false;
Bit_Ant_T3_F3_R_F1.visible = false;
Bit_Ant_T3_F3_R_F2.visible = false;
Bit_Ant_T3_F3_R_F3.visible = false;
Bit_Ant_T3_F4_R_F1.visible = false;
Bit_Ant_T3_F4_R_F2.visible = false;
Bit_Ant_T3_F4_R_F3.visible = true;
};
break;
};
}
public function SetDirection(dir:Number):void{
Direction = dir;
}
public function StartAnimation():void{
AnimationTimer.start();
}
public function SetAnimationVelocity(velocity:Number):void{
AnimationTimer.delay = velocity;
}
public function StopAnimation():void{
AnimationTimer.stop();
}
public function SetLoading(loading:Number):void{
Loading = loading;
}
public function I3_MoveTo_h1():void{
Bit_Ant_T3_E_L_F1.Health_1.visible = true;
Bit_Ant_T3_E_L_F2.Health_1.visible = true;
Bit_Ant_T3_E_L_F3.Health_1.visible = true;
Bit_Ant_T3_E_R_F1.Health_1.visible = true;
Bit_Ant_T3_E_R_F2.Health_1.visible = true;
Bit_Ant_T3_E_R_F3.Health_1.visible = true;
Bit_Ant_T3_F1_R_F1.Health_1.visible = true;
Bit_Ant_T3_F1_R_F2.Health_1.visible = true;
Bit_Ant_T3_F1_R_F3.Health_1.visible = true;
Bit_Ant_T3_F2_R_F1.Health_1.visible = true;
Bit_Ant_T3_F2_R_F2.Health_1.visible = true;
Bit_Ant_T3_F2_R_F3.Health_1.visible = true;
Bit_Ant_T3_F3_R_F1.Health_1.visible = true;
Bit_Ant_T3_F3_R_F2.Health_1.visible = true;
Bit_Ant_T3_F3_R_F3.Health_1.visible = true;
Bit_Ant_T3_F4_R_F1.Health_1.visible = true;
Bit_Ant_T3_F4_R_F2.Health_1.visible = true;
Bit_Ant_T3_F4_R_F3.Health_1.visible = true;
}
public function AntType3(velocity:Number):void{
AnimationVelocity = velocity;
AnimationTimer.addEventListener(TimerEvent.TIMER, newFrame_type_3);
}
public function I3_MoveTo_h2():void{
Bit_Ant_T3_E_L_F1.Health_1.visible = false;
Bit_Ant_T3_E_L_F2.Health_1.visible = false;
Bit_Ant_T3_E_L_F3.Health_1.visible = false;
Bit_Ant_T3_E_R_F1.Health_1.visible = false;
Bit_Ant_T3_E_R_F2.Health_1.visible = false;
Bit_Ant_T3_E_R_F3.Health_1.visible = false;
Bit_Ant_T3_F1_R_F1.Health_1.visible = false;
Bit_Ant_T3_F1_R_F2.Health_1.visible = false;
Bit_Ant_T3_F1_R_F3.Health_1.visible = false;
Bit_Ant_T3_F2_R_F1.Health_1.visible = false;
Bit_Ant_T3_F2_R_F2.Health_1.visible = false;
Bit_Ant_T3_F2_R_F3.Health_1.visible = false;
Bit_Ant_T3_F3_R_F1.Health_1.visible = false;
Bit_Ant_T3_F3_R_F2.Health_1.visible = false;
Bit_Ant_T3_F3_R_F3.Health_1.visible = false;
Bit_Ant_T3_F4_R_F1.Health_1.visible = false;
Bit_Ant_T3_F4_R_F2.Health_1.visible = false;
Bit_Ant_T3_F4_R_F3.Health_1.visible = false;
Bit_Ant_T3_E_L_F1.Health_2.visible = true;
Bit_Ant_T3_E_L_F2.Health_2.visible = true;
Bit_Ant_T3_E_L_F3.Health_2.visible = true;
Bit_Ant_T3_E_R_F1.Health_2.visible = true;
Bit_Ant_T3_E_R_F2.Health_2.visible = true;
Bit_Ant_T3_E_R_F3.Health_2.visible = true;
Bit_Ant_T3_F1_R_F1.Health_2.visible = true;
Bit_Ant_T3_F1_R_F2.Health_2.visible = true;
Bit_Ant_T3_F1_R_F3.Health_2.visible = true;
Bit_Ant_T3_F2_R_F1.Health_2.visible = true;
Bit_Ant_T3_F2_R_F2.Health_2.visible = true;
Bit_Ant_T3_F2_R_F3.Health_2.visible = true;
Bit_Ant_T3_F3_R_F1.Health_2.visible = true;
Bit_Ant_T3_F3_R_F2.Health_2.visible = true;
Bit_Ant_T3_F3_R_F3.Health_2.visible = true;
Bit_Ant_T3_F4_R_F1.Health_2.visible = true;
Bit_Ant_T3_F4_R_F2.Health_2.visible = true;
Bit_Ant_T3_F4_R_F3.Health_2.visible = true;
}
}
}//package Engine.Sprites.Aminals
Section 104
//Animal3_Apple_1_Asset (Engine.Sprites.Aminals.Animal3_Apple_1_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Apple_1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 105
//Animal3_Apple_2_Asset (Engine.Sprites.Aminals.Animal3_Apple_2_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Apple_2_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 106
//Animal3_Apple_3_Asset (Engine.Sprites.Aminals.Animal3_Apple_3_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Apple_3_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 107
//Animal3_Apple_4_Asset (Engine.Sprites.Aminals.Animal3_Apple_4_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Apple_4_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 108
//Animal3_Frame_1_left_Asset (Engine.Sprites.Aminals.Animal3_Frame_1_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Frame_1_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 109
//Animal3_Frame_1_right_Asset (Engine.Sprites.Aminals.Animal3_Frame_1_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Frame_1_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 110
//Animal3_Frame_2_left_Asset (Engine.Sprites.Aminals.Animal3_Frame_2_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Frame_2_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 111
//Animal3_Frame_2_right_Asset (Engine.Sprites.Aminals.Animal3_Frame_2_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Frame_2_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 112
//Animal3_Frame_3_left_Asset (Engine.Sprites.Aminals.Animal3_Frame_3_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Frame_3_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 113
//Animal3_Frame_3_right_Asset (Engine.Sprites.Aminals.Animal3_Frame_3_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Frame_3_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 114
//Animal3_Health_1_left_Asset (Engine.Sprites.Aminals.Animal3_Health_1_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Health_1_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 115
//Animal3_Health_1_right_Asset (Engine.Sprites.Aminals.Animal3_Health_1_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Health_1_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 116
//Animal3_Health_2_left_Asset (Engine.Sprites.Aminals.Animal3_Health_2_left_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Health_2_left_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 117
//Animal3_Health_2_right_Asset (Engine.Sprites.Aminals.Animal3_Health_2_right_Asset)
package Engine.Sprites.Aminals {
import mx.core.*;
public class Animal3_Health_2_right_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Aminals
Section 118
//CharacterFrame (Engine.Sprites.Aminals.CharacterFrame)
package Engine.Sprites.Aminals {
import flash.display.*;
public class CharacterFrame extends Sprite {
public var Apple:Sprite;
public var Health_1:Sprite;
public var Frame:Sprite;
public var Health_2:Sprite;
public function CharacterFrame(){
Frame = new Sprite();
Health_1 = new Sprite();
Health_2 = new Sprite();
Apple = new Sprite();
super();
super.addChild(Frame);
Health_1.visible = false;
Health_2.visible = false;
super.addChild(Health_1);
super.addChild(Health_2);
super.addChild(Apple);
}
}
}//package Engine.Sprites.Aminals
Section 119
//AppleCrushClip (Engine.Sprites.apples.AppleCrushClip)
package Engine.Sprites.apples {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class AppleCrushClip extends Sprite {
private var Frame_1_bitmapData:BitmapAsset;
private var AnimationTimer:Timer;
private var Frame:Array;
private var Frame_2_Asset:Class;
public var currentFrame:Number;// = 1
private var Frame_3_bitmapData:BitmapAsset;
private var Frame_2_bitmapData:BitmapAsset;
private var Frame_3_Asset:Class;
private var Frame_1_Asset:Class;
public function AppleCrushClip(){
Frame_1_Asset = AppleCrushClip_Frame_1_Asset;
Frame_2_Asset = AppleCrushClip_Frame_2_Asset;
Frame_3_Asset = AppleCrushClip_Frame_3_Asset;
AnimationTimer = new Timer(20, 2);
Frame = new Array();
super();
Frame.push(new Frame_1_Asset());
Frame.push(new Frame_2_Asset());
Frame.push(new Frame_3_Asset());
var t:int;
while (t < 3) {
Frame[t].visible = false;
Frame[t].smoothing = true;
super.addChild(Frame[t]);
t++;
};
Frame[0].visible = true;
AnimationTimer.addEventListener(TimerEvent.TIMER, onTime);
AnimationTimer.start();
}
public function onTime(e:TimerEvent):void{
if (currentFrame == 1){
switch_to_2();
return;
};
if (currentFrame == 2){
switch_to_3();
AnimationTimer.stop();
return;
};
}
public function switch_to_2():void{
Frame[0].visible = false;
Frame[1].visible = true;
currentFrame = 2;
}
public function switch_to_3():void{
Frame[1].visible = false;
Frame[2].visible = true;
currentFrame = 3;
}
}
}//package Engine.Sprites.apples
Section 120
//AppleCrushClip_Frame_1_Asset (Engine.Sprites.apples.AppleCrushClip_Frame_1_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class AppleCrushClip_Frame_1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 121
//AppleCrushClip_Frame_2_Asset (Engine.Sprites.apples.AppleCrushClip_Frame_2_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class AppleCrushClip_Frame_2_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 122
//AppleCrushClip_Frame_3_Asset (Engine.Sprites.apples.AppleCrushClip_Frame_3_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class AppleCrushClip_Frame_3_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 123
//CAppleSprite (Engine.Sprites.apples.CAppleSprite)
package Engine.Sprites.apples {
import flash.display.*;
import mx.core.*;
public class CAppleSprite extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function CAppleSprite(X:Number, Y:Number, R:Number){
AppleSimpl_Asset = CAppleSprite_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
var one_more_sprite:Sprite = new Sprite();
one_more_sprite.graphics.beginFill(16716049);
one_more_sprite.graphics.drawCircle(X, Y, R);
one_more_sprite.graphics.endFill();
_bitmapData.x = (-(R) - 2);
_bitmapData.y = (-(R) - 6);
_bitmapData.smoothing = true;
var temp1:Sprite = new Sprite();
_bitmapData.smoothing = true;
temp1.addChild(_bitmapData);
super.addChild(temp1);
}
}
}//package Engine.Sprites.apples
Section 124
//CAppleSprite_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite_AppleSimpl_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 125
//CAppleSprite_type2 (Engine.Sprites.apples.CAppleSprite_type2)
package Engine.Sprites.apples {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class CAppleSprite_type2 extends Sprite {
private var FrameFaster_1_Asset:Class;
private var AnimationTimer:Timer;
private var Frame:Array;
private var FrameFaster_3_Asset:Class;
private var Frame_2_bitmapData:BitmapAsset;
public var currentFrame:Number;// = 0
private var Frame_3_bitmapData:BitmapAsset;
private var FrameFaster_0_Asset:Class;
private var Frame_1_bitmapData:BitmapAsset;
private var FrameFaster_2_Asset:Class;
public function CAppleSprite_type2(){
FrameFaster_0_Asset = CAppleSprite_type2_FrameFaster_0_Asset;
FrameFaster_1_Asset = CAppleSprite_type2_FrameFaster_1_Asset;
FrameFaster_2_Asset = CAppleSprite_type2_FrameFaster_2_Asset;
FrameFaster_3_Asset = CAppleSprite_type2_FrameFaster_3_Asset;
AnimationTimer = new Timer(200);
Frame = new Array();
super();
Frame.push(new FrameFaster_0_Asset());
Frame.push(new FrameFaster_1_Asset());
Frame.push(new FrameFaster_2_Asset());
Frame.push(new FrameFaster_3_Asset());
var t:int;
while (t < 4) {
Frame[t].visible = false;
Frame[t].x = (-12.5 - 2);
Frame[t].y = (-12.5 - 6);
Frame[t].smoothing = true;
super.addChild(Frame[t]);
t++;
};
Frame[0].visible = true;
AnimationTimer.addEventListener(TimerEvent.TIMER, onTime);
AnimationTimer.start();
}
public function onTime(e:TimerEvent):void{
if (currentFrame == 0){
switch_to_1();
return;
};
if (currentFrame == 1){
switch_to_2();
return;
};
if (currentFrame == 2){
switch_to_3();
return;
};
if (currentFrame == 3){
switch_to_0();
return;
};
}
public function switch_to_0():void{
Frame[1].visible = false;
Frame[2].visible = false;
Frame[3].visible = false;
Frame[0].visible = true;
currentFrame = 0;
}
public function switch_to_1():void{
Frame[0].visible = false;
Frame[1].visible = true;
Frame[2].visible = false;
Frame[3].visible = false;
currentFrame = 1;
}
public function switch_to_2():void{
Frame[0].visible = false;
Frame[1].visible = false;
Frame[2].visible = true;
Frame[3].visible = false;
currentFrame = 2;
}
public function switch_to_3():void{
Frame[0].visible = false;
Frame[1].visible = false;
Frame[2].visible = false;
Frame[3].visible = true;
currentFrame = 3;
}
}
}//package Engine.Sprites.apples
Section 126
//CAppleSprite_type2_FrameFaster_0_Asset (Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_0_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type2_FrameFaster_0_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 127
//CAppleSprite_type2_FrameFaster_1_Asset (Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_1_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type2_FrameFaster_1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 128
//CAppleSprite_type2_FrameFaster_2_Asset (Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_2_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type2_FrameFaster_2_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 129
//CAppleSprite_type2_FrameFaster_3_Asset (Engine.Sprites.apples.CAppleSprite_type2_FrameFaster_3_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type2_FrameFaster_3_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 130
//CAppleSprite_type3 (Engine.Sprites.apples.CAppleSprite_type3)
package Engine.Sprites.apples {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class CAppleSprite_type3 extends Sprite {
private var AnimationTimer:Timer;
private var Frame:Array;
public var currentFrame:Number;// = 0
private var Frame_3_bitmapData:BitmapAsset;
private var Frame_2_bitmapData:BitmapAsset;
private var Frame_1_bitmapData:BitmapAsset;
private var FrameSlower_1_Asset:Class;
private var FrameSlower_2_Asset:Class;
public function CAppleSprite_type3(){
FrameSlower_1_Asset = CAppleSprite_type3_FrameSlower_1_Asset;
FrameSlower_2_Asset = CAppleSprite_type3_FrameSlower_2_Asset;
AnimationTimer = new Timer(270);
Frame = new Array();
super();
Frame.push(new FrameSlower_1_Asset());
Frame.push(new FrameSlower_2_Asset());
var t:int;
while (t < 2) {
Frame[t].visible = false;
Frame[t].x = (-12.5 - 2);
Frame[t].y = (-12.5 - 6);
Frame[t].smoothing = true;
super.addChild(Frame[t]);
t++;
};
Frame[0].visible = true;
AnimationTimer.addEventListener(TimerEvent.TIMER, onTime);
AnimationTimer.start();
}
public function switch_to_2():void{
Frame[0].visible = false;
Frame[1].visible = false;
Frame[2].visible = true;
Frame[3].visible = false;
currentFrame = 2;
}
public function switch_to_0():void{
Frame[1].visible = false;
Frame[0].visible = true;
currentFrame = 0;
}
public function switch_to_1():void{
Frame[0].visible = false;
Frame[1].visible = true;
currentFrame = 1;
}
public function switch_to_3():void{
Frame[0].visible = false;
Frame[1].visible = false;
Frame[2].visible = false;
Frame[3].visible = true;
currentFrame = 3;
}
public function onTime(e:TimerEvent):void{
if (currentFrame == 0){
switch_to_1();
return;
};
if (currentFrame == 1){
switch_to_0();
return;
};
}
}
}//package Engine.Sprites.apples
Section 131
//CAppleSprite_type3_FrameSlower_1_Asset (Engine.Sprites.apples.CAppleSprite_type3_FrameSlower_1_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type3_FrameSlower_1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 132
//CAppleSprite_type3_FrameSlower_2_Asset (Engine.Sprites.apples.CAppleSprite_type3_FrameSlower_2_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type3_FrameSlower_2_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 133
//CAppleSprite_type4 (Engine.Sprites.apples.CAppleSprite_type4)
package Engine.Sprites.apples {
import flash.display.*;
import mx.core.*;
public class CAppleSprite_type4 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function CAppleSprite_type4(X:Number, Y:Number, R:Number){
AppleSimpl_Asset = CAppleSprite_type4_AppleSimpl_Asset;
super();
var one_more_sprite:Sprite = new Sprite();
one_more_sprite.graphics.beginFill(1179409);
one_more_sprite.graphics.drawCircle(X, Y, R);
one_more_sprite.graphics.endFill();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.x = (-(R) - 2);
_bitmapData.y = (-(R) - 6);
_bitmapData.smoothing = true;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.apples
Section 134
//CAppleSprite_type4_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite_type4_AppleSimpl_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type4_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 135
//CAppleSprite_type5 (Engine.Sprites.apples.CAppleSprite_type5)
package Engine.Sprites.apples {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class CAppleSprite_type5 extends Sprite {
private var AnimationTimer:Timer;
private var Frame:Array;
public var currentFrame:Number;// = 0
private var FrameDie_1_Asset:Class;
private var Frame_3_bitmapData:BitmapAsset;
private var Frame_2_bitmapData:BitmapAsset;
private var Frame_1_bitmapData:BitmapAsset;
private var FrameDie_2_Asset:Class;
public function CAppleSprite_type5(){
FrameDie_1_Asset = CAppleSprite_type5_FrameDie_1_Asset;
FrameDie_2_Asset = CAppleSprite_type5_FrameDie_2_Asset;
AnimationTimer = new Timer(220);
Frame = new Array();
super();
Frame.push(new FrameDie_1_Asset());
Frame.push(new FrameDie_2_Asset());
var t:int;
while (t < 2) {
Frame[t].visible = false;
Frame[t].x = (-12.5 - 2);
Frame[t].y = (-12.5 - 6);
Frame[t].smoothing = true;
super.addChild(Frame[t]);
t++;
};
Frame[0].visible = true;
AnimationTimer.addEventListener(TimerEvent.TIMER, onTime);
AnimationTimer.start();
}
public function switch_to_2():void{
Frame[0].visible = false;
Frame[1].visible = false;
Frame[2].visible = true;
Frame[3].visible = false;
currentFrame = 2;
}
public function switch_to_0():void{
Frame[1].visible = false;
Frame[0].visible = true;
currentFrame = 0;
}
public function switch_to_3():void{
Frame[0].visible = false;
Frame[1].visible = false;
Frame[2].visible = false;
Frame[3].visible = true;
currentFrame = 3;
}
public function onTime(e:TimerEvent):void{
if (currentFrame == 0){
switch_to_1();
return;
};
if (currentFrame == 1){
switch_to_0();
return;
};
}
public function switch_to_1():void{
Frame[0].visible = false;
Frame[1].visible = true;
currentFrame = 1;
}
}
}//package Engine.Sprites.apples
Section 136
//CAppleSprite_type5_FrameDie_1_Asset (Engine.Sprites.apples.CAppleSprite_type5_FrameDie_1_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type5_FrameDie_1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 137
//CAppleSprite_type5_FrameDie_2_Asset (Engine.Sprites.apples.CAppleSprite_type5_FrameDie_2_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite_type5_FrameDie_2_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 138
//CAppleSprite_type6 (Engine.Sprites.apples.CAppleSprite_type6)
package Engine.Sprites.apples {
import flash.display.*;
public class CAppleSprite_type6 extends Sprite {
public function CAppleSprite_type6(X:Number, Y:Number, R:Number){
super();
var one_more_sprite:Sprite = new Sprite();
one_more_sprite.graphics.beginFill(0xFF0099);
one_more_sprite.graphics.drawCircle(X, Y, R);
one_more_sprite.graphics.endFill();
super.addChild(one_more_sprite);
}
}
}//package Engine.Sprites.apples
Section 139
//CAppleSprite_type7 (Engine.Sprites.apples.CAppleSprite_type7)
package Engine.Sprites.apples {
import flash.display.*;
public class CAppleSprite_type7 extends Sprite {
public function CAppleSprite_type7(X:Number, Y:Number, R:Number){
super();
var one_more_sprite:Sprite = new Sprite();
one_more_sprite.graphics.beginFill(0xFF0099);
one_more_sprite.graphics.drawCircle(X, Y, R);
one_more_sprite.graphics.endFill();
super.addChild(one_more_sprite);
}
}
}//package Engine.Sprites.apples
Section 140
//CAppleSprite1 (Engine.Sprites.apples.CAppleSprite1)
package Engine.Sprites.apples {
import flash.display.*;
import mx.core.*;
public class CAppleSprite1 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function CAppleSprite1(X:Number, Y:Number, R:Number){
AppleSimpl_Asset = CAppleSprite1_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
var one_more_sprite:Sprite = new Sprite();
one_more_sprite.graphics.beginFill(16716049);
one_more_sprite.graphics.drawCircle(X, Y, R);
one_more_sprite.graphics.endFill();
_bitmapData.x = (-(R) - 5);
_bitmapData.y = (-(R) - 10);
_bitmapData.smoothing = true;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.apples
Section 141
//CAppleSprite1_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite1_AppleSimpl_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite1_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 142
//CAppleSprite2 (Engine.Sprites.apples.CAppleSprite2)
package Engine.Sprites.apples {
import flash.display.*;
import mx.core.*;
public class CAppleSprite2 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function CAppleSprite2(X:Number, Y:Number, R:Number){
AppleSimpl_Asset = CAppleSprite2_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
var one_more_sprite:Sprite = new Sprite();
one_more_sprite.graphics.beginFill(16716049);
one_more_sprite.graphics.drawCircle(X, Y, R);
one_more_sprite.graphics.endFill();
_bitmapData.x = (-(R) - 2);
_bitmapData.y = (-(R) - 6);
_bitmapData.smoothing = true;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.apples
Section 143
//CAppleSprite2_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite2_AppleSimpl_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite2_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 144
//CAppleSprite3 (Engine.Sprites.apples.CAppleSprite3)
package Engine.Sprites.apples {
import flash.display.*;
import mx.core.*;
public class CAppleSprite3 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function CAppleSprite3(X:Number, Y:Number, R:Number){
AppleSimpl_Asset = CAppleSprite3_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
var one_more_sprite:Sprite = new Sprite();
one_more_sprite.graphics.beginFill(16716049);
one_more_sprite.graphics.drawCircle(X, Y, R);
one_more_sprite.graphics.endFill();
_bitmapData.x = (-(R) - 2);
_bitmapData.y = (-(R) - 6);
_bitmapData.smoothing = true;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.apples
Section 145
//CAppleSprite3_AppleSimpl_Asset (Engine.Sprites.apples.CAppleSprite3_AppleSimpl_Asset)
package Engine.Sprites.apples {
import mx.core.*;
public class CAppleSprite3_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.apples
Section 146
//BoxWithApples (Engine.Sprites.Objects.BoxWithApples)
package Engine.Sprites.Objects {
import flash.display.*;
import mx.core.*;
public class BoxWithApples extends Sprite {
public var Bit_Box:BitmapAsset;
public var Bit_Apple:BitmapAsset;
public var apples_in_the_box:Number;// = 20
private var Apple_Asset:Class;
public var Bit_Box_Top:BitmapAsset;
private var Box_Top_Asset:Class;
public var apples_array:Array;
private var Box_Asset:Class;
public function BoxWithApples(apples:Number){
Apple_Asset = BoxWithApples_Apple_Asset;
Box_Asset = BoxWithApples_Box_Asset;
Box_Top_Asset = BoxWithApples_Box_Top_Asset;
apples_array = new Array();
super();
apples_in_the_box = apples;
Bit_Box_Top = new Box_Top_Asset();
Bit_Box_Top.smoothing = true;
Bit_Box_Top.y = (Bit_Box_Top.y - 8);
super.addChild(Bit_Box_Top);
var i:Number = 0;
while (i < apples_in_the_box) {
apples_array.push(new Apple_Asset());
i++;
};
apples_array[0].x = 5;
apples_array[0].y = 35;
apples_array[1].x = 16;
apples_array[1].y = 35;
apples_array[2].x = 27;
apples_array[2].y = 35;
apples_array[3].x = 38;
apples_array[3].y = 35;
apples_array[4].x = 49;
apples_array[4].y = 35;
apples_array[5].x = 60;
apples_array[5].y = 35;
apples_array[6].x = 10;
apples_array[6].y = 25;
apples_array[7].x = 21;
apples_array[7].y = 25;
apples_array[8].x = 32;
apples_array[8].y = 25;
apples_array[9].x = 43;
apples_array[9].y = 25;
apples_array[10].x = 54;
apples_array[10].y = 25;
apples_array[11].x = 16;
apples_array[11].y = 15;
apples_array[12].x = 27;
apples_array[12].y = 15;
apples_array[13].x = 38;
apples_array[13].y = 15;
apples_array[14].x = 49;
apples_array[14].y = 15;
apples_array[15].x = 21;
apples_array[15].y = 5;
apples_array[16].x = 32;
apples_array[16].y = 5;
apples_array[17].x = 43;
apples_array[17].y = 5;
apples_array[18].x = 27;
apples_array[18].y = -5;
apples_array[19].x = 38;
apples_array[19].y = -5;
var t = 19;
while (t > -1) {
apples_array[t].y = (apples_array[t].y - 38);
apples_array[t].x = (apples_array[t].x - 2);
super.addChild(apples_array[t]);
t--;
};
Bit_Box = new Box_Asset();
Bit_Box.smoothing = true;
super.addChild(Bit_Box);
}
public function Increase(count:Number):void{
var i:Number = 0;
while (i < count) {
apples_array[apples_in_the_box].visible = true;
apples_in_the_box++;
i++;
};
}
public function Decrease(count:Number):void{
var i:Number = 0;
while (i < count) {
apples_array[(apples_in_the_box - 1)].visible = false;
apples_in_the_box--;
i++;
};
}
}
}//package Engine.Sprites.Objects
Section 147
//BoxWithApples_Apple_Asset (Engine.Sprites.Objects.BoxWithApples_Apple_Asset)
package Engine.Sprites.Objects {
import mx.core.*;
public class BoxWithApples_Apple_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Objects
Section 148
//BoxWithApples_Box_Asset (Engine.Sprites.Objects.BoxWithApples_Box_Asset)
package Engine.Sprites.Objects {
import mx.core.*;
public class BoxWithApples_Box_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Objects
Section 149
//BoxWithApples_Box_Top_Asset (Engine.Sprites.Objects.BoxWithApples_Box_Top_Asset)
package Engine.Sprites.Objects {
import mx.core.*;
public class BoxWithApples_Box_Top_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Objects
Section 150
//GroundSprite (Engine.Sprites.Objects.GroundSprite)
package Engine.Sprites.Objects {
import flash.display.*;
public class GroundSprite extends Sprite {
public function GroundSprite(hx:Number, hy:Number, ss:Number){
super();
}
}
}//package Engine.Sprites.Objects
Section 151
//MushroomSprite (Engine.Sprites.Objects.MushroomSprite)
package Engine.Sprites.Objects {
import flash.display.*;
import mx.core.*;
public class MushroomSprite extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function MushroomSprite(){
AppleSimpl_Asset = MushroomSprite_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -35;
_bitmapData.y = -35;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.Objects
Section 152
//MushroomSprite_2 (Engine.Sprites.Objects.MushroomSprite_2)
package Engine.Sprites.Objects {
import flash.display.*;
import mx.core.*;
public class MushroomSprite_2 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function MushroomSprite_2(){
AppleSimpl_Asset = MushroomSprite_2_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -37.5;
_bitmapData.y = -37.5;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.Objects
Section 153
//MushroomSprite_2_AppleSimpl_Asset (Engine.Sprites.Objects.MushroomSprite_2_AppleSimpl_Asset)
package Engine.Sprites.Objects {
import mx.core.*;
public class MushroomSprite_2_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Objects
Section 154
//MushroomSprite_AppleSimpl_Asset (Engine.Sprites.Objects.MushroomSprite_AppleSimpl_Asset)
package Engine.Sprites.Objects {
import mx.core.*;
public class MushroomSprite_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Objects
Section 155
//NestSprite (Engine.Sprites.Objects.NestSprite)
package Engine.Sprites.Objects {
import flash.display.*;
import mx.core.*;
public class NestSprite extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function NestSprite(){
AppleSimpl_Asset = NestSprite_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -30;
_bitmapData.y = -20;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.Objects
Section 156
//NestSprite_AppleSimpl_Asset (Engine.Sprites.Objects.NestSprite_AppleSimpl_Asset)
package Engine.Sprites.Objects {
import mx.core.*;
public class NestSprite_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Objects
Section 157
//OldMan (Engine.Sprites.oldman.OldMan)
package Engine.Sprites.oldman {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import mx.core.*;
import flash.filters.*;
public class OldMan extends Sprite {
private var AnimationTimer:Timer;
private var Frame_2_s0_Asset:Class;
private var Frame_2_s1_Asset:Class;
private var Frame_2_s2_Asset:Class;
private var Frame_2_s3_Asset:Class;
private var Frame_2_s4_Asset:Class;
private var Frame_3_Asset:Class;
private var Frame_2_s6_Asset:Class;
private var Frame:Array;
private var Frame_2_bitmapData:BitmapAsset;
private var Frame_2_s5_Asset:Class;
private var Frame_1_s0_Asset:Class;
private var Frame_1_s1_Asset:Class;
private var Frame_1_s3_Asset:Class;
private var Frame_1_s4_Asset:Class;
private var Frame_1_s5_Asset:Class;
private var Frame_1_s6_Asset:Class;
private var Frame_3_bitmapData:BitmapAsset;
private var Frame_1_bitmapData:BitmapAsset;
private var currentFrame:Number;// = 1
private var Frame_1_s2_Asset:Class;
public function OldMan(){
Frame_3_Asset = OldMan_Frame_3_Asset;
Frame_1_s0_Asset = OldMan_Frame_1_s0_Asset;
Frame_1_s1_Asset = OldMan_Frame_1_s1_Asset;
Frame_1_s2_Asset = OldMan_Frame_1_s2_Asset;
Frame_1_s3_Asset = OldMan_Frame_1_s3_Asset;
Frame_1_s4_Asset = OldMan_Frame_1_s4_Asset;
Frame_1_s5_Asset = OldMan_Frame_1_s5_Asset;
Frame_1_s6_Asset = OldMan_Frame_1_s6_Asset;
Frame_2_s0_Asset = OldMan_Frame_2_s0_Asset;
Frame_2_s1_Asset = OldMan_Frame_2_s1_Asset;
Frame_2_s2_Asset = OldMan_Frame_2_s2_Asset;
Frame_2_s3_Asset = OldMan_Frame_2_s3_Asset;
Frame_2_s4_Asset = OldMan_Frame_2_s4_Asset;
Frame_2_s5_Asset = OldMan_Frame_2_s5_Asset;
Frame_2_s6_Asset = OldMan_Frame_2_s6_Asset;
AnimationTimer = new Timer(100, 0);
Frame = new Array();
super();
this.filters = [new ConvolutionFilter(3, 3, [0, -1, 0, -1, 15, -1, 0, -1, 0], 11)];
AnimationTimer.addEventListener(TimerEvent.TIMER, onTimer);
}
private function switchFrame(frameID:Number):void{
currentFrame = frameID;
Frame[0].visible = false;
Frame[1].visible = false;
Frame[2].visible = false;
Frame[(frameID - 1)].visible = true;
}
public function AnimateDrop():void{
AnimationTimer.start();
}
private function onTimer(e:TimerEvent):void{
switch (currentFrame){
case 1:
switchFrame(2);
break;
case 2:
switchFrame(3);
break;
case 3:
switchFrame(1);
AnimationTimer.stop();
break;
};
}
public function SwithTool(tool_id:Number):void{
var tt:int;
if (Frame.length){
tt = 0;
while (tt < Frame.length) {
super.removeChild(Frame[tt]);
tt++;
};
};
Frame = new Array();
switch (tool_id){
case 0:
Frame.push(new Frame_1_s0_Asset());
Frame.push(new Frame_2_s0_Asset());
break;
case 1:
Frame.push(new Frame_1_s1_Asset());
Frame.push(new Frame_2_s1_Asset());
break;
case 2:
Frame.push(new Frame_1_s2_Asset());
Frame.push(new Frame_2_s2_Asset());
break;
case 3:
Frame.push(new Frame_1_s3_Asset());
Frame.push(new Frame_2_s3_Asset());
break;
case 4:
Frame.push(new Frame_1_s4_Asset());
Frame.push(new Frame_2_s4_Asset());
break;
case 5:
Frame.push(new Frame_1_s5_Asset());
Frame.push(new Frame_2_s5_Asset());
break;
case 6:
Frame.push(new Frame_1_s6_Asset());
Frame.push(new Frame_2_s6_Asset());
break;
};
Frame.push(new Frame_3_Asset());
Frame[0].smoothing = true;
super.addChild(Frame[0]);
var t = 1;
while (t < Frame.length) {
Frame[t].visible = false;
Frame[t].smoothing = true;
super.addChild(Frame[t]);
t++;
};
}
}
}//package Engine.Sprites.oldman
Section 158
//OldMan_Frame_1_s0_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s0_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_1_s0_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 159
//OldMan_Frame_1_s1_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s1_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_1_s1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 160
//OldMan_Frame_1_s2_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s2_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_1_s2_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 161
//OldMan_Frame_1_s3_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s3_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_1_s3_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 162
//OldMan_Frame_1_s4_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s4_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_1_s4_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 163
//OldMan_Frame_1_s5_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s5_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_1_s5_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 164
//OldMan_Frame_1_s6_Asset (Engine.Sprites.oldman.OldMan_Frame_1_s6_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_1_s6_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 165
//OldMan_Frame_2_s0_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s0_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_2_s0_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 166
//OldMan_Frame_2_s1_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s1_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_2_s1_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 167
//OldMan_Frame_2_s2_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s2_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_2_s2_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 168
//OldMan_Frame_2_s3_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s3_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_2_s3_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 169
//OldMan_Frame_2_s4_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s4_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_2_s4_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 170
//OldMan_Frame_2_s5_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s5_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_2_s5_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 171
//OldMan_Frame_2_s6_Asset (Engine.Sprites.oldman.OldMan_Frame_2_s6_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_2_s6_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 172
//OldMan_Frame_3_Asset (Engine.Sprites.oldman.OldMan_Frame_3_Asset)
package Engine.Sprites.oldman {
import mx.core.*;
public class OldMan_Frame_3_Asset extends BitmapAsset {
}
}//package Engine.Sprites.oldman
Section 173
//EngineSound (Engine.Sprites.Sound.EngineSound)
package Engine.Sprites.Sound {
import flash.display.*;
import flash.media.*;
public class EngineSound extends Sprite {
public var level_theme_voice:Sound;
public var ant_applebox_voice:Sound;
public var level_failed_voice:Sound;
public var SoundON:Boolean;// = true
public var apple_groun_voice:Sound;
public var garage_voice:Sound;
private var l_f_Cls:Class;
private var l_t_Cls:Class;
private var l_p_Cls:Class;
public var animal_die_voice:Sound;
private var g_Cls:Class;
public var garage_no_voice:Sound;
private var a_a_Cls:Class;
private var a_d_Cls:Class;
public var sndChannel:SoundChannel;
private var a_g_Cls:Class;
public var stick_apple_voice:Sound;
private var s_a_Cls:Class;
private var g_n_Cls:Class;
public var win_game_voice:Sound;
private var w_g_Cls:Class;
public var level_passed_voice:Sound;
public function EngineSound(){
l_f_Cls = EngineSound_l_f_Cls;
level_failed_voice = new l_f_Cls();
l_p_Cls = EngineSound_l_p_Cls;
level_passed_voice = new l_p_Cls();
g_n_Cls = EngineSound_g_n_Cls;
garage_no_voice = new g_n_Cls();
w_g_Cls = EngineSound_w_g_Cls;
win_game_voice = new w_g_Cls();
a_g_Cls = EngineSound_a_g_Cls;
apple_groun_voice = new a_g_Cls();
l_t_Cls = EngineSound_l_t_Cls;
level_theme_voice = new l_t_Cls();
s_a_Cls = EngineSound_s_a_Cls;
stick_apple_voice = new s_a_Cls();
a_d_Cls = EngineSound_a_d_Cls;
animal_die_voice = new a_d_Cls();
a_a_Cls = EngineSound_a_a_Cls;
ant_applebox_voice = new a_a_Cls();
g_Cls = EngineSound_g_Cls;
garage_voice = new g_Cls();
super();
}
public function ant_applebox():void{
if (SoundON){
ant_applebox_voice.play();
};
}
public function apple_ground(command:Number, position:Number):void{
switch (command){
case 1:
if (SoundON){
apple_groun_voice.play(position);
};
break;
};
}
public function garage():void{
if (SoundON){
garage_voice.play();
};
}
public function level_passed():void{
if (SoundON){
level_passed_voice.play();
};
}
public function animal_die():void{
if (SoundON){
animal_die_voice.play();
};
}
public function level_theme(command:Number, position:Number):Number{
var _pos:Number;
switch (command){
case 1:
if (SoundON){
sndChannel = level_theme_voice.play(position, 999);
};
break;
case 2:
_pos = sndChannel.position;
sndChannel.stop();
return (_pos);
};
return (0);
}
public function garage_no():void{
if (SoundON){
garage_no_voice.play();
};
}
public function level_failed():void{
if (SoundON){
level_failed_voice.play();
};
}
public function stick_apple():void{
if (SoundON){
stick_apple_voice.play(60);
};
}
public function win_game():void{
if (SoundON){
win_game_voice.play();
};
}
}
}//package Engine.Sprites.Sound
Section 174
//EngineSound_a_a_Cls (Engine.Sprites.Sound.EngineSound_a_a_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_a_a_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 175
//EngineSound_a_d_Cls (Engine.Sprites.Sound.EngineSound_a_d_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_a_d_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 176
//EngineSound_a_g_Cls (Engine.Sprites.Sound.EngineSound_a_g_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_a_g_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 177
//EngineSound_g_Cls (Engine.Sprites.Sound.EngineSound_g_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_g_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 178
//EngineSound_g_n_Cls (Engine.Sprites.Sound.EngineSound_g_n_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_g_n_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 179
//EngineSound_l_f_Cls (Engine.Sprites.Sound.EngineSound_l_f_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_l_f_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 180
//EngineSound_l_p_Cls (Engine.Sprites.Sound.EngineSound_l_p_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_l_p_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 181
//EngineSound_l_t_Cls (Engine.Sprites.Sound.EngineSound_l_t_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_l_t_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 182
//EngineSound_s_a_Cls (Engine.Sprites.Sound.EngineSound_s_a_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_s_a_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 183
//EngineSound_w_g_Cls (Engine.Sprites.Sound.EngineSound_w_g_Cls)
package Engine.Sprites.Sound {
import mx.core.*;
public class EngineSound_w_g_Cls extends SoundAsset {
}
}//package Engine.Sprites.Sound
Section 184
//StickSprite_type1 (Engine.Sprites.Sticks.StickSprite_type1)
package Engine.Sprites.Sticks {
import flash.display.*;
import mx.core.*;
public class StickSprite_type1 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function StickSprite_type1(X:Number, Y:Number){
AppleSimpl_Asset = StickSprite_type1_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -17.5;
_bitmapData.y = -15;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.Sticks
Section 185
//StickSprite_type1_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type1_AppleSimpl_Asset)
package Engine.Sprites.Sticks {
import mx.core.*;
public class StickSprite_type1_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Sticks
Section 186
//StickSprite_type2 (Engine.Sprites.Sticks.StickSprite_type2)
package Engine.Sprites.Sticks {
import flash.display.*;
import mx.core.*;
public class StickSprite_type2 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function StickSprite_type2(X:Number, Y:Number){
AppleSimpl_Asset = StickSprite_type2_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -40;
_bitmapData.y = -15;
var oneS:Sprite = new Sprite();
oneS.rotation = 60;
oneS.addChild(_bitmapData);
super.addChild(oneS);
}
}
}//package Engine.Sprites.Sticks
Section 187
//StickSprite_type2_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type2_AppleSimpl_Asset)
package Engine.Sprites.Sticks {
import mx.core.*;
public class StickSprite_type2_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Sticks
Section 188
//StickSprite_type3 (Engine.Sprites.Sticks.StickSprite_type3)
package Engine.Sprites.Sticks {
import flash.display.*;
import mx.core.*;
public class StickSprite_type3 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function StickSprite_type3(X:Number, Y:Number){
AppleSimpl_Asset = StickSprite_type3_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -23;
_bitmapData.y = -50;
var oneS:Sprite = new Sprite();
oneS.rotation = -210;
oneS.addChild(_bitmapData);
super.addChild(oneS);
}
}
}//package Engine.Sprites.Sticks
Section 189
//StickSprite_type3_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type3_AppleSimpl_Asset)
package Engine.Sprites.Sticks {
import mx.core.*;
public class StickSprite_type3_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Sticks
Section 190
//StickSprite_type4 (Engine.Sprites.Sticks.StickSprite_type4)
package Engine.Sprites.Sticks {
import flash.display.*;
import mx.core.*;
public class StickSprite_type4 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function StickSprite_type4(){
AppleSimpl_Asset = StickSprite_type4_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -38;
_bitmapData.y = -55;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.Sticks
Section 191
//StickSprite_type4_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type4_AppleSimpl_Asset)
package Engine.Sprites.Sticks {
import mx.core.*;
public class StickSprite_type4_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Sticks
Section 192
//StickSprite_type6 (Engine.Sprites.Sticks.StickSprite_type6)
package Engine.Sprites.Sticks {
import flash.display.*;
import mx.core.*;
public class StickSprite_type6 extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function StickSprite_type6(X:Number, Y:Number){
AppleSimpl_Asset = StickSprite_type6_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -14.5;
_bitmapData.y = -12.5;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.Sticks
Section 193
//StickSprite_type6_AppleSimpl_Asset (Engine.Sprites.Sticks.StickSprite_type6_AppleSimpl_Asset)
package Engine.Sprites.Sticks {
import mx.core.*;
public class StickSprite_type6_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Sticks
Section 194
//Tube (Engine.Sprites.Sticks.Tube)
package Engine.Sprites.Sticks {
import flash.display.*;
import mx.core.*;
public class Tube extends Sprite {
private var _bitmapData:BitmapAsset;
private var AppleSimpl_Asset:Class;
public function Tube(){
AppleSimpl_Asset = Tube_AppleSimpl_Asset;
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -49;
_bitmapData.y = -46;
super.addChild(_bitmapData);
}
}
}//package Engine.Sprites.Sticks
Section 195
//Tube_AppleSimpl_Asset (Engine.Sprites.Sticks.Tube_AppleSimpl_Asset)
package Engine.Sprites.Sticks {
import mx.core.*;
public class Tube_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites.Sticks
Section 196
//TheSky (Engine.Sprites.TheSky)
package Engine.Sprites {
import flash.display.*;
import flash.geom.*;
public class TheSky extends Sprite {
public var _color:uint;// = 9034231
public function TheSky(){
super();
var colors:Array = [_color, 15596030];
var alphas:Array = [100, 0];
var rations:Array = [16, 0xFF];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(800, 800, 0, 0, 0);
this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, rations, matrix);
this.graphics.drawRect(0, 0, 800, 800);
this.graphics.endFill();
this.rotation = 90;
this.x = 800;
}
}
}//package Engine.Sprites
Section 197
//TheTree (Engine.Sprites.TheTree)
package Engine.Sprites {
import flash.events.*;
import flash.display.*;
import Interface.Sprites.*;
import flash.net.*;
import mx.core.*;
import flash.filters.*;
public class TheTree extends Sprite {
private var buttonOFF_selected_BA:BitmapAsset;
public var SoundON_button:SimpleButton;
private var buttonRetry_BA:BitmapAsset;
private var AppleSimpl_Asset:Class;
private var SponsorLink_off_PNG:Class;
private var _sky1:TheSky;
private var SponsorLink_BTN:SimpleButton;
private var SponsorLink_on_BIT:BitmapAsset;
private var buttonON_selected_Asset:Class;
private var buttonExit_selected_BA:BitmapAsset;
private var _bitmapData:BitmapAsset;
public var dispatcher:InterfaceEventsDispatcher;
private var buttonON_BA:BitmapAsset;
private var buttonON_Asset:Class;
private var buttonON_selected_BA:BitmapAsset;
private var buttonRetry_selected_BA:BitmapAsset;
private var SponsorLink_on_PNG:Class;
private var buttonExit_Asset:Class;
public var Retry_button:SimpleButton;
private var buttonOFF_selected_Asset:Class;
public var SoundOFF_button:SimpleButton;
public var Exit_button:SimpleButton;
private var buttonExit_selected_Asset:Class;
private var buttonOFF_BA:BitmapAsset;
private var buttonRetry_Asset:Class;
private var buttonOFF_Asset:Class;
private var SponsorLink_off_BIT:BitmapAsset;
private var buttonRetry_selected_Asset:Class;
private var buttonExit_BA:BitmapAsset;
public function TheTree(){
AppleSimpl_Asset = TheTree_AppleSimpl_Asset;
SponsorLink_off_PNG = TheTree_SponsorLink_off_PNG;
SponsorLink_on_PNG = TheTree_SponsorLink_on_PNG;
buttonON_Asset = TheTree_buttonON_Asset;
buttonON_selected_Asset = TheTree_buttonON_selected_Asset;
buttonOFF_Asset = TheTree_buttonOFF_Asset;
buttonOFF_selected_Asset = TheTree_buttonOFF_selected_Asset;
buttonExit_Asset = TheTree_buttonExit_Asset;
buttonExit_selected_Asset = TheTree_buttonExit_selected_Asset;
buttonRetry_Asset = TheTree_buttonRetry_Asset;
buttonRetry_selected_Asset = TheTree_buttonRetry_selected_Asset;
dispatcher = new InterfaceEventsDispatcher();
_sky1 = new TheSky();
super();
_bitmapData = new AppleSimpl_Asset();
_bitmapData.smoothing = true;
_bitmapData.x = -15;
_bitmapData.y = 5;
super.addChild(_sky1);
super.addChild(_bitmapData);
buttonON_BA = new buttonON_Asset();
buttonON_BA.smoothing = true;
buttonON_selected_BA = new buttonON_selected_Asset();
buttonON_selected_BA.smoothing = true;
buttonOFF_selected_BA = new buttonOFF_selected_Asset();
buttonOFF_selected_BA.smoothing = true;
buttonOFF_BA = new buttonOFF_Asset();
buttonOFF_BA.smoothing = true;
buttonExit_selected_BA = new buttonExit_selected_Asset();
buttonExit_selected_BA.smoothing = true;
buttonExit_BA = new buttonExit_Asset();
buttonExit_BA.smoothing = true;
buttonRetry_selected_BA = new buttonRetry_selected_Asset();
buttonRetry_BA = new buttonRetry_Asset();
buttonRetry_selected_BA.smoothing = true;
buttonRetry_BA.smoothing = true;
buttonRetry_BA.filters = [new ConvolutionFilter(3, 3, [0, -1, 0, -1, 15, -1, 0, -1, 0], 11)];
SoundON_button = new SimpleButton(buttonON_BA, buttonON_selected_BA, buttonON_selected_BA, buttonON_selected_BA);
SoundON_button.addEventListener(MouseEvent.CLICK, SoundOn_click);
SoundOFF_button = new SimpleButton(buttonOFF_BA, buttonOFF_selected_BA, buttonOFF_selected_BA, buttonOFF_selected_BA);
SoundOFF_button.addEventListener(MouseEvent.CLICK, SoundOff_click);
Exit_button = new SimpleButton(buttonExit_BA, buttonExit_selected_BA, buttonExit_selected_BA, buttonExit_selected_BA);
Exit_button.addEventListener(MouseEvent.CLICK, Exit_click);
Retry_button = new SimpleButton(buttonRetry_BA, buttonRetry_selected_BA, buttonRetry_selected_BA, buttonRetry_selected_BA);
Retry_button.addEventListener(MouseEvent.CLICK, Retry_click);
SponsorLink_off_BIT = new SponsorLink_off_PNG();
SponsorLink_on_BIT = new SponsorLink_on_PNG();
SponsorLink_off_BIT.smoothing = true;
SponsorLink_on_BIT.smoothing = true;
SponsorLink_BTN = new SimpleButton(SponsorLink_off_BIT, SponsorLink_on_BIT, SponsorLink_on_BIT, SponsorLink_on_BIT);
SponsorLink_BTN.addEventListener(MouseEvent.CLICK, clickOnSponsorLink);
SoundON_button.x = 650;
SoundON_button.y = 550;
SoundOFF_button.x = 650;
SoundOFF_button.y = 550;
Exit_button.x = 0;
Exit_button.y = 550;
SoundON_button.visible = false;
Retry_button.x = 120;
Retry_button.y = 550;
SponsorLink_BTN.x = 330;
SponsorLink_BTN.y = 562;
super.addChild(Retry_button);
super.addChild(SoundON_button);
super.addChild(SoundOFF_button);
super.addChild(Exit_button);
super.addChild(SponsorLink_BTN);
}
public function Retry_click(e:MouseEvent):void{
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.RETRY));
}
public function SoundOff_click(e:MouseEvent):void{
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.TREE_SOFF));
}
private function clickOnSponsorLink(e:MouseEvent):void{
navigateToURL(new URLRequest("http://www.gamebeearcade.com/"), "_blank");
}
public function SoundOn_click(e:MouseEvent):void{
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.TREE_SON));
}
public function Exit_click(e:MouseEvent):void{
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.TREE_EXIT));
}
}
}//package Engine.Sprites
Section 198
//TheTree_AppleSimpl_Asset (Engine.Sprites.TheTree_AppleSimpl_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_AppleSimpl_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 199
//TheTree_buttonExit_Asset (Engine.Sprites.TheTree_buttonExit_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_buttonExit_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 200
//TheTree_buttonExit_selected_Asset (Engine.Sprites.TheTree_buttonExit_selected_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_buttonExit_selected_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 201
//TheTree_buttonOFF_Asset (Engine.Sprites.TheTree_buttonOFF_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_buttonOFF_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 202
//TheTree_buttonOFF_selected_Asset (Engine.Sprites.TheTree_buttonOFF_selected_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_buttonOFF_selected_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 203
//TheTree_buttonON_Asset (Engine.Sprites.TheTree_buttonON_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_buttonON_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 204
//TheTree_buttonON_selected_Asset (Engine.Sprites.TheTree_buttonON_selected_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_buttonON_selected_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 205
//TheTree_buttonRetry_Asset (Engine.Sprites.TheTree_buttonRetry_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_buttonRetry_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 206
//TheTree_buttonRetry_selected_Asset (Engine.Sprites.TheTree_buttonRetry_selected_Asset)
package Engine.Sprites {
import mx.core.*;
public class TheTree_buttonRetry_selected_Asset extends BitmapAsset {
}
}//package Engine.Sprites
Section 207
//TheTree_SponsorLink_off_PNG (Engine.Sprites.TheTree_SponsorLink_off_PNG)
package Engine.Sprites {
import mx.core.*;
public class TheTree_SponsorLink_off_PNG extends BitmapAsset {
}
}//package Engine.Sprites
Section 208
//TheTree_SponsorLink_on_PNG (Engine.Sprites.TheTree_SponsorLink_on_PNG)
package Engine.Sprites {
import mx.core.*;
public class TheTree_SponsorLink_on_PNG extends BitmapAsset {
}
}//package Engine.Sprites
Section 209
//_glideUserData (Engine._glideUserData)
package Engine {
import flash.display.*;
public class _glideUserData extends Sprite {
public var type:Number;// = 0
public var status:Number;// = 0
public var IsInWorld:Boolean;// = true
public var sprite:Sprite;
public var not_tuched:Boolean;// = true
public function _glideUserData(){
sprite = new Sprite();
super();
}
}
}//package Engine
Section 210
//ContactListener (Engine.ContactListener)
package Engine {
import Box2D.Collision.*;
import Box2D.Dynamics.*;
import Box2D.Dynamics.Contacts.*;
public class ContactListener extends b2ContactListener {
public var MyContactPoint:b2ContactPoint;
public var contactStack:Array;
public function ContactListener(){
MyContactPoint = new b2ContactPoint();
contactStack = new Array();
super();
}
override public function Add(point:b2ContactPoint):void{
}
override public function Result(point:b2ContactResult):void{
if ((point.shape1.GetBody().m_userData is _glideUserData)){
if (point.shape1.GetBody().m_userData.type == 3){
if ((point.shape2.GetBody().m_userData is _glideUserData)){
point.shape2.GetBody().m_userData.status = 2;
};
} else {
if (point.shape1.GetBody().m_userData.type == 4){
if ((point.shape2.GetBody().m_userData is _glideUserData)){
point.shape2.GetBody().m_userData.status = 1;
};
};
};
if ((point.shape2.GetBody().m_userData is _glideUserData)){
if (point.shape2.GetBody().m_userData.type == 3){
point.shape1.GetBody().m_userData.status = 2;
} else {
if (point.shape2.GetBody().m_userData.type == 4){
point.shape1.GetBody().m_userData.status = 1;
};
};
};
};
}
}
}//package Engine
Section 211
//Engine (Engine.Engine)
package Engine {
import flash.events.*;
import Box2D.Collision.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
import flash.display.*;
import Engine.Sprites.Objects.*;
import Engine.Sprites.aim.*;
import Engine.Sprites.*;
import flash.utils.*;
import Levels.*;
import Engine.Sprites.Sound.*;
import Interface.Sprites.*;
import flash.text.*;
import Engine.Sprites.oldman.*;
import flash.net.*;
import Engine.Sprites.Sticks.*;
import Engine.Sprites.apples.*;
import flash.media.*;
import Engine.Sprites.Aminals.*;
import flash.filters.*;
public class Engine extends Sprite {
private var boxBox:b2Body;
private var Drug_started:Boolean;// = false
private var boxGravity:b2Vec2;
private var boxApples:Array;
private var boxboxSprite:BoxWithApples;
private var boxStatic:Array;
public var AimDataSprite:Aim_Data;
private var Aim_sprite:AimSprite;
public var TreeSprite:TheTree;
private var AppleCrushTimer:Timer;
private var boxGround:b2Body;
private var LeveL:Levels;
public var EngineSounds:EngineSound;
private var Drop_started:Boolean;// = false
private var AntCrushTimersArray:Array;
public var gameStat:GameStat;
private var Can_start_grug:Boolean;// = true
public var TutorialDialog:AS_Tutorial;
private var AntCrushTimer:Timer;
private var Stick_sprite:Sprite;
private var DropTimer:Timer;
private var boxStick:b2Body;
private var boxWorld:b2World;
private var AppleCrushesArray:Array;
private var dbgDraw:b2DebugDraw;
public var instructions_text:TextField;
private var AntCrushesArray:Array;
private var myContactListener:ContactListener;
private var boxAABB:b2AABB;
private var boxDoSleep:Boolean;// = true
private var AppleCrushTimersArray:Array;
private var dbgSprite:Sprite;
private var oldman:OldMan;
public var _sharedObject:SharedObject;
private var StageInterface:UserInterface;
public function Engine(){
boxAABB = new b2AABB();
boxApples = new Array();
boxStatic = new Array();
myContactListener = new ContactListener();
instructions_text = new TextField();
gameStat = new GameStat();
AppleCrushTimer = new Timer(4000, 1);
AppleCrushesArray = new Array();
AppleCrushTimersArray = new Array();
DropTimer = new Timer(200, 0);
AntCrushTimer = new Timer(4000, 1);
AntCrushesArray = new Array();
AntCrushTimersArray = new Array();
StageInterface = new UserInterface();
oldman = new OldMan();
dbgDraw = new b2DebugDraw();
dbgSprite = new Sprite();
EngineSounds = new EngineSound();
TreeSprite = new TheTree();
TutorialDialog = new AS_Tutorial();
AimDataSprite = new Aim_Data();
super();
_sharedObject = SharedObject.getLocal("AS_payer_data");
_sharedObject.data.test = 10;
}
private function _appleAntCollision(i:Number):void{
if (LeveL.Ants[i].health == 10){
EngineSounds.animal_die();
if (LeveL.Ants[i].withApple){
LeveL.Ants[i].withApple = false;
LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox + LeveL.Ants[i].applesOnTheBack);
boxboxSprite.Increase(LeveL.Ants[i].applesOnTheBack);
LeveL.Ants[i].applesOnTheBack = 0;
};
this.removeChild(LeveL.Ants[i].sprite);
LeveL.Ants.splice(i, 1);
} else {
LeveL.Ants[i].health = (LeveL.Ants[i].health - 10);
switch (LeveL.Ants[i].type){
case 2:
LeveL.Ants[i].sprite.I2_MoveTo_h1();
break;
case 3:
switch (LeveL.Ants[i].health){
case 10:
LeveL.Ants[i].sprite.I3_MoveTo_h2();
break;
case 20:
LeveL.Ants[i].sprite.I3_MoveTo_h1();
break;
};
break;
};
};
if ((((LeveL.Ants.length == 0)) && ((LeveL.ApplesInTheBox > 0)))){
LeveL.level_status = "Passed";
instructions_text.text = ((((((("Apples in box: " + LeveL.ApplesInTheBox) + "\n") + "Level status: ") + LeveL.level_status) + "\n") + "Earned apples: ") + gameStat.EarnedApples);
};
}
private function _createNewStick():void{
var appl_obj:int;
var apple_body:b2BodyDef;
var apple_shape:b2CircleDef;
var boxStick_body:b2BodyDef;
var boxStick_shape:b2CircleDef;
var boxStick_body2:b2BodyDef;
var boxStick_shape2:b2PolygonDef;
var boxStick_body3:b2BodyDef;
var boxStick_shape3:b2PolygonDef;
var boxStick_body4:b2BodyDef;
var boxStick_shape4_1_1:b2PolygonDef;
var boxStick_shape4_1_2:b2CircleDef;
var boxStick_shape4_3:b2PolygonDef;
var boxStick_shape4_4:b2CircleDef;
var boxStick_shape4_2:b2CircleDef;
var boxStick_shape4_2_1:b2CircleDef;
var boxStick_body5:b2BodyDef;
var boxStick_shape5:b2CircleDef;
if (gameStat.LevelIsLoaded){
while (appl_obj < LeveL.Apples.length) {
if (LeveL.Apples[appl_obj].type == 1){
switch (LeveL.Apples[appl_obj].stat){
case 0:
LeveL.Apples[appl_obj].sprite = new CAppleSprite1(0, 0, 12.5);
LeveL.Apples[appl_obj].sprite.x = LeveL.Apples[appl_obj].positionX;
LeveL.Apples[appl_obj].sprite.y = LeveL.Apples[appl_obj].positionY;
this.addChild(LeveL.Apples[appl_obj].sprite);
LeveL.Apples[appl_obj].stat++;
break;
case 1:
this.removeChild(LeveL.Apples[appl_obj].sprite);
LeveL.Apples[appl_obj].sprite = new CAppleSprite2(0, 0, 12.5);
LeveL.Apples[appl_obj].sprite.x = LeveL.Apples[appl_obj].positionX;
LeveL.Apples[appl_obj].sprite.y = LeveL.Apples[appl_obj].positionY;
this.addChild(LeveL.Apples[appl_obj].sprite);
LeveL.Apples[appl_obj].stat++;
break;
case 2:
this.removeChild(LeveL.Apples[appl_obj].sprite);
LeveL.Apples[appl_obj].sprite = new CAppleSprite3(0, 0, 12.5);
LeveL.Apples[appl_obj].sprite.x = LeveL.Apples[appl_obj].positionX;
LeveL.Apples[appl_obj].sprite.y = LeveL.Apples[appl_obj].positionY;
this.addChild(LeveL.Apples[appl_obj].sprite);
LeveL.Apples[appl_obj].stat++;
break;
case 3:
this.removeChild(LeveL.Apples[appl_obj].sprite);
apple_body = new b2BodyDef();
apple_shape = new b2CircleDef();
apple_shape.density = 1;
apple_shape.friction = 0.0001;
apple_shape.restitution = -100;
apple_shape.filter.categoryBits = 2;
apple_shape.filter.maskBits = 29;
apple_shape.radius = (12.5 / 100);
LeveL.Apples[appl_obj].sprite = new CAppleSprite(0, 0, 12.5);
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[appl_obj].sprite;
apple_body.userData.sprite.x = LeveL.Apples[appl_obj].positionX;
apple_body.userData.sprite.y = LeveL.Apples[appl_obj].positionY;
this.addChild(apple_body.userData.sprite);
apple_body.position.Set((LeveL.Apples[appl_obj].positionX / 100), (LeveL.Apples[appl_obj].positionY / 100));
boxApples[appl_obj] = boxWorld.CreateBody(apple_body);
boxApples[appl_obj].CreateShape(apple_shape);
boxApples[appl_obj].SetMassFromShapes();
boxApples[appl_obj].PutToSleep();
LeveL.Apples[appl_obj].stat++;
break;
};
};
appl_obj++;
};
};
switch (gameStat.StickType){
case 1:
boxStick_body = new b2BodyDef();
boxStick_shape = new b2CircleDef();
boxStick_shape.radius = (12.5 / 100);
boxStick_body.position.Set(1.3, 4.6);
boxStick_body.userData = new _glideUserData();
boxStick_body.userData.type = 4;
boxStick_body.userData.sprite = new StickSprite_type1(0, 0);
boxStick_body.userData.sprite.x = 130;
boxStick_body.userData.sprite.y = 460;
boxStick_shape.density = 3;
boxStick_shape.friction = 0.9;
boxStick_shape.restitution = 0.3;
boxStick_shape.filter.categoryBits = 1;
boxStick_shape.filter.maskBits = 18;
boxStick = null;
boxStick = boxWorld.CreateBody(boxStick_body);
boxStick.CreateShape(boxStick_shape);
boxStick.SetMassFromShapes();
boxStick.PutToSleep();
boxStick.SetBullet(true);
this.addChild(boxStick_body.userData.sprite);
break;
case 2:
boxStick_body2 = new b2BodyDef();
boxStick_shape2 = new b2PolygonDef();
boxStick_body2.position.Set(1.3, 4.6);
boxStick_body2.userData = new _glideUserData();
boxStick_body2.userData.type = 4;
boxStick_body2.userData.sprite = new StickSprite_type2(0.2, 0.05);
boxStick_body2.userData.sprite.x = 140;
boxStick_body2.userData.sprite.y = 450;
boxStick_shape2.SetAsOrientedBox(0.31, 0.04, new b2Vec2(), (60 / (180 / Math.PI)));
boxStick_shape2.density = 3;
boxStick_shape2.friction = 0.9;
boxStick_shape2.restitution = 0.3;
boxStick_shape2.filter.categoryBits = 1;
boxStick_shape2.filter.maskBits = 18;
boxStick = boxWorld.CreateBody(boxStick_body2);
boxStick.CreateShape(boxStick_shape2);
boxStick.SetMassFromShapes();
boxStick.PutToSleep();
boxStick.SetBullet(true);
this.addChild(boxStick_body2.userData.sprite);
break;
case 3:
boxStick_body3 = new b2BodyDef();
boxStick_shape3 = new b2PolygonDef();
boxStick_body3.position.Set(1.3, 4.6);
boxStick_body3.userData = new _glideUserData();
boxStick_body3.userData.type = 4;
boxStick_body3.userData.sprite = new StickSprite_type3(0, 0);
boxStick_body3.userData.sprite.x = 130;
boxStick_body3.userData.sprite.y = 460;
this.addChild(boxStick_body3.userData.sprite);
boxStick_shape3.SetAsOrientedBox(0.42, 0.04, new b2Vec2(0, 0), (60 / (180 / Math.PI)));
boxStick_shape3.density = 1.5;
boxStick_shape3.friction = 0.9;
boxStick_shape3.restitution = 0.3;
boxStick_shape3.filter.categoryBits = 1;
boxStick_shape3.filter.maskBits = 18;
boxStick = boxWorld.CreateBody(boxStick_body3);
boxStick.CreateShape(boxStick_shape3);
boxStick_shape3.SetAsOrientedBox(0.2, 0.05, new b2Vec2(0.21, 0.33), (-34 / (180 / Math.PI)));
boxStick_shape3.density = 0.2;
boxStick.CreateShape(boxStick_shape3);
boxStick.SetMassFromShapes();
boxStick.PutToSleep();
boxStick.SetBullet(true);
break;
case 4:
boxStick_body4 = new b2BodyDef();
boxStick_shape4_1_1 = new b2PolygonDef();
boxStick_shape4_1_2 = new b2CircleDef();
boxStick_shape4_3 = new b2PolygonDef();
boxStick_shape4_4 = new b2CircleDef();
boxStick_shape4_2 = new b2CircleDef();
boxStick_shape4_2_1 = new b2CircleDef();
boxStick_body4.position.Set(1.3, 4.6);
boxStick_shape4_3.SetAsOrientedBox(0.2, 0.22, new b2Vec2(0, 0), (0 / (180 / Math.PI)));
boxStick_shape4_3.density = 1;
boxStick_shape4_3.friction = 0.9;
boxStick_shape4_3.restitution = 0.3;
boxStick_shape4_3.filter.categoryBits = 1;
boxStick_shape4_3.filter.maskBits = 18;
boxStick_shape4_1_1.SetAsOrientedBox(0.2, 0.05, new b2Vec2(0.28, -0.05), (-55 / (180 / Math.PI)));
boxStick_shape4_1_1.density = 0.2;
boxStick_shape4_1_1.friction = 0.9;
boxStick_shape4_1_1.restitution = 0.3;
boxStick_shape4_1_1.filter.categoryBits = 1;
boxStick_shape4_1_1.filter.maskBits = 18;
boxStick_shape4_1_2.radius = 0.07;
boxStick_shape4_1_2.localPosition.x = 0.42;
boxStick_shape4_1_2.localPosition.y = -0.24;
boxStick_shape4_1_2.density = 0.2;
boxStick_shape4_1_2.friction = 0.9;
boxStick_shape4_1_2.restitution = 0.3;
boxStick_shape4_1_2.filter.categoryBits = 1;
boxStick_shape4_1_2.filter.maskBits = 18;
boxStick_shape4_2.radius = 0.2;
boxStick_shape4_2.localPosition.x = 0;
boxStick_shape4_2.localPosition.y = -0.15;
boxStick_shape4_2.density = 0.2;
boxStick_shape4_2.friction = 0.9;
boxStick_shape4_2.restitution = 0.3;
boxStick_shape4_2.filter.categoryBits = 1;
boxStick_shape4_2.filter.maskBits = 18;
boxStick_shape4_2_1.radius = 0.08;
boxStick_shape4_2_1.localPosition.x = 0;
boxStick_shape4_2_1.localPosition.y = -0.36;
boxStick_shape4_2_1.density = 0.2;
boxStick_shape4_2_1.friction = 0.9;
boxStick_shape4_2_1.restitution = 0.3;
boxStick_shape4_2_1.filter.categoryBits = 1;
boxStick_shape4_2_1.filter.maskBits = 18;
boxStick_shape4_4.radius = 0.2;
boxStick_shape4_4.localPosition.x = -0.13;
boxStick_shape4_4.localPosition.y = -0.07;
boxStick_shape4_4.density = 0.2;
boxStick_shape4_4.friction = 0.9;
boxStick_shape4_4.restitution = 0.3;
boxStick_shape4_4.filter.categoryBits = 1;
boxStick_shape4_4.filter.maskBits = 18;
boxStick_body4.userData = new _glideUserData();
boxStick_body4.userData.type = 4;
boxStick_body4.userData.sprite = new StickSprite_type4();
boxStick_body4.userData.sprite.x = 130;
boxStick_body4.userData.sprite.y = 460;
boxStick = boxWorld.CreateBody(boxStick_body4);
boxStick.CreateShape(boxStick_shape4_1_1);
boxStick.CreateShape(boxStick_shape4_1_2);
boxStick.CreateShape(boxStick_shape4_2);
boxStick.CreateShape(boxStick_shape4_2_1);
boxStick.CreateShape(boxStick_shape4_3);
boxStick.CreateShape(boxStick_shape4_4);
boxStick.SetMassFromShapes();
boxStick.PutToSleep();
boxStick.SetBullet(true);
this.addChild(boxStick_body4.userData.sprite);
break;
case 5:
boxStick_body5 = new b2BodyDef();
boxStick_shape5 = new b2CircleDef();
boxStick_shape5.radius = (40 / 100);
boxStick_body5.position.Set(1.3, 4.6);
boxStick_body5.userData = new _glideUserData();
boxStick_body5.userData.type = 4;
boxStick_body5.userData.sprite = new Tube();
boxStick_body5.userData.sprite.x = 130;
boxStick_body5.userData.sprite.y = 460;
boxStick_shape5.density = 0.4;
boxStick_shape5.friction = 0.9;
boxStick_shape5.restitution = 0.3;
boxStick_shape5.filter.categoryBits = 1;
boxStick_shape5.filter.maskBits = 18;
boxStick = boxWorld.CreateBody(boxStick_body5);
boxStick.CreateShape(boxStick_shape5);
boxStick.SetMassFromShapes();
boxStick.PutToSleep();
boxStick.SetBullet(true);
this.addChild(boxStick_body5.userData.sprite);
break;
case 6:
boxStick_body = new b2BodyDef();
boxStick_shape = new b2CircleDef();
boxStick_shape.radius = (11 / 100);
boxStick_body.position.Set(1.3, 4.6);
boxStick_body.userData = new _glideUserData();
boxStick_body.userData.type = 4;
boxStick_body.userData.sprite = new StickSprite_type6(0, 0);
boxStick_body.userData.sprite.x = 130;
boxStick_body.userData.sprite.y = 460;
boxStick_shape.density = 3;
boxStick_shape.friction = 0.9;
boxStick_shape.restitution = 0.3;
boxStick_shape.filter.categoryBits = 1;
boxStick_shape.filter.maskBits = 18;
boxStick = null;
boxStick = boxWorld.CreateBody(boxStick_body);
boxStick.CreateShape(boxStick_shape);
boxStick.SetMassFromShapes();
boxStick.PutToSleep();
boxStick.SetBullet(true);
this.addChild(boxStick_body.userData.sprite);
break;
};
}
private function UI_OpenHelp(e:Event):void{
trace("UI_OpenHelp");
this.addChild(TutorialDialog.Tutorial_screen);
TutorialDialog.ShowTutorial();
}
private function _dropTimer(e:TimerEvent):void{
oldman.SwithTool(0);
_createNewStick();
if (gameStat.StickType < 4){
boxStick.ApplyImpulse(new b2Vec2(((boxStick.GetPosition().x - (mouseX / 100)) * 2), ((boxStick.GetPosition().y - (mouseY / 100)) * 2)), new b2Vec2((boxStick.GetPosition().x - 0.01), (boxStick.GetPosition().y - 0.01)));
} else {
if (gameStat.StickType == 6){
boxStick.ApplyImpulse(new b2Vec2(((boxStick.GetPosition().x - (mouseX / 100)) * 1.5), ((boxStick.GetPosition().y - (mouseY / 100)) * 1.5)), new b2Vec2((boxStick.GetPosition().x - 0.005), (boxStick.GetPosition().y - 0.005)));
} else {
boxStick.ApplyImpulse(new b2Vec2(((boxStick.GetPosition().x - (mouseX / 100)) * 3), ((boxStick.GetPosition().y - (mouseY / 100)) * 3)), new b2Vec2((boxStick.GetPosition().x - 0.01), (boxStick.GetPosition().y - 0.01)));
};
};
Drug_started = false;
Drop_started = true;
Can_start_grug = false;
DropTimer.stop();
}
private function UI_GotoGarage(e:Event):void{
EngineSounds.garage();
StageInterface.ChooseLevel_dialog.visible = false;
StageInterface.showDialog("Garage");
}
private function _levelFailed():void{
this.removeChild(Aim_sprite);
//unresolved jump
var _slot1 = error;
trace("failed to delete aim sprite - LEVEL FAILED");
this.removeChild(AimDataSprite);
//unresolved jump
var _slot1 = error;
trace("failed to delete aim data sprite - LEVEL FAILED");
gameStat.DrawAim = false;
Drug_started = false;
gameStat.VoicePosition = EngineSounds.level_theme(2, 0);
_deleteOldLevelData();
this.setChildIndex(StageInterface, (this.numChildren - 1));
saveGamestat();
if (LeveL.levelID == 1){
StageInterface.showChooseLevel(1, 0);
} else {
StageInterface.showChooseLevel((LeveL.levelID + 1), -1);
};
EngineSounds.level_failed();
}
private function UI_wingame(e:Event):void{
this.removeChild(StageInterface.WinGame_dialog);
SoundMixer.stopAll();
saveGamestat();
this.setChildIndex(StageInterface, (this.numChildren - 1));
StageInterface.showDialog("MainMenu");
}
private function UI_NewLevel(e:Event):void{
gameStat.EarnedApples = 0;
gameStat.InitiallyEarned = 0;
gameStat.StickType = 6;
StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples);
StageInterface.removeChild(StageInterface.ChooseLevel_dialog);
_loadLevel(1);
}
private function _refreshFrame(e:Event):void{
var LL8:Number;
var i:int;
var i2i:int;
boxWorld.Step((1 / 50), 10);
var bb:b2Body = boxWorld.m_bodyList;
while (bb) {
if ((bb.m_userData is _glideUserData)){
bb.m_userData.sprite.x = (bb.GetPosition().x * 100);
bb.m_userData.sprite.y = (bb.GetPosition().y * 100);
bb.m_userData.sprite.rotation = (bb.GetAngle() * (180 / Math.PI));
};
bb = bb.m_next;
};
if (gameStat.LevelIsLoaded){
LL8 = LeveL.Ants.length;
i = 0;
while (i < LL8) {
if (LeveL.Ants[i].direction == -1){
LeveL.Ants[i].sprite.x = (LeveL.Ants[i].sprite.x - LeveL.Ants[i].velocity);
if (LeveL.Ants[i].sprite.x < 240){
_antBoxCollision(i);
};
};
if (LeveL.Ants[i].direction == 1){
LeveL.Ants[i].sprite.x = (LeveL.Ants[i].sprite.x + LeveL.Ants[i].velocity);
if (LeveL.Ants[i].sprite.x > 680){
_antAntHomeCollision(i);
};
};
i++;
};
i2i = 0;
while (i2i < boxApples.length) {
if (LeveL.Apples[i2i].stat == 4){
if (boxApples[i2i].m_userData.status == 2){
_appleGroundCollision(i2i, (boxApples[i2i].GetPosition().x * 100), (boxApples[i2i].GetPosition().y * 100));
} else {
if (boxApples[i2i].m_userData.status == 1){
_stickAppleCollision(i2i);
};
};
};
if (boxApples[i2i]){
if (boxApples[i2i].IsFrozen()){
this.removeChild(boxApples[i2i].m_userData.sprite);
boxWorld.DestroyBody(boxApples[i2i]);
boxApples[i2i] = null;
LeveL.Apples[i2i].stat = 0;
};
};
i2i++;
};
if (Drop_started){
if (((boxStick.IsSleeping()) || (boxStick.IsFrozen()))){
Drop_started = false;
_deleteOldStick();
oldman.SwithTool(gameStat.StickType);
Can_start_grug = true;
};
};
};
}
private function UI_MainMenu(e:Event):void{
_loadLevel(0);
}
private function UI_TreeExit(e:Event):void{
SoundMixer.stopAll();
saveGamestat();
this.setChildIndex(StageInterface, (this.numChildren - 1));
_deleteOldLevelData();
StageInterface.showDialog("MainMenu");
trace("LeveL Exit works fine");
}
private function UI_helpExit(e:Event):void{
this.removeChild(TutorialDialog.Tutorial_screen);
}
private function UI_SoundOff(e:Event):void{
EngineSounds.SoundON = false;
SoundMixer.stopAll();
TreeSprite.SoundOFF_button.visible = false;
TreeSprite.SoundON_button.visible = true;
}
private function UI_NextLevel(e:Event):void{
gameStat.InitiallyEarned = gameStat.EarnedApples;
StageInterface.removeChild(StageInterface.ChooseLevel_dialog);
_loadLevel((LeveL.levelID + 1));
StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples);
}
private function _drugStick(e:MouseEvent):void{
var offset_x:Number;
var offset_y:Number;
var offset:Number;
var rotation_ang:Number;
var _p1:int;
var _p2:int;
var _p3:int;
trace("drag stick wwww");
if (Can_start_grug){
Drug_started = true;
gameStat.DrawAim = true;
Aim_sprite = new AimSprite();
Aim_sprite.x = 130;
Aim_sprite.y = 460;
offset_x = (mouseX - 130);
if (offset_x < 0){
offset_x = (offset_x * -1);
};
offset_y = (mouseY - 460);
if (offset_y < 0){
offset_y = (offset_y * -1);
};
offset = Math.sqrt(((offset_x * offset_x) + (offset_y * offset_y)));
Aim_sprite._set_aim_rect(((offset * 1.5) + 10));
rotation_ang = (Math.atan2(-((mouseX - 130)), (mouseY - 460)) * (180 / Math.PI));
Aim_sprite.rotation = (rotation_ang + 90);
AimDataSprite.x = (mouseX + 10);
AimDataSprite.y = (mouseY - 15);
_p1 = ((offset * 1.5) + 10);
_p2 = (_p1 / 10);
_p3 = (_p1 - (_p2 * 10));
AimDataSprite.Power_text.text = ((("P = " + _p2) + ".") + _p3);
AimDataSprite.Angle_text.text = (("A = " + Math.round((90 - rotation_ang))) + "°");
this.addChild(Aim_sprite);
this.addChild(AimDataSprite);
};
}
private function _levelPassed():void{
this.removeChild(Aim_sprite);
//unresolved jump
var _slot1 = error;
trace("failed to delete aim sprite - LEVEL PASSED");
this.removeChild(AimDataSprite);
//unresolved jump
var _slot1 = error;
trace("failed to delete aim data sprite - LEVEL PASSED");
gameStat.DrawAim = false;
Drug_started = false;
gameStat.VoicePosition = EngineSounds.level_theme(2, 0);
_deleteOldLevelData();
this.setChildIndex(StageInterface, (this.numChildren - 1));
StageInterface.fresh_apples = gameStat.EarnedApples;
saveGamestat();
trace("LEVEL PASSED, levelID = ", LeveL.levelID);
if (LeveL.levelID == 24){
StageInterface.showWinGame();
EngineSounds.win_game();
this.addChild(StageInterface.WinGame_dialog);
} else {
StageInterface.showChooseLevel((LeveL.levelID + 1), 1);
EngineSounds.level_passed();
};
}
private function _mouseUP_OBSOLETE(e:MouseEvent):void{
}
private function _dropStick(e:MouseEvent):void{
var e = e;
if (gameStat.LevelIsLoaded){
this.removeChild(Aim_sprite);
//unresolved jump
var _slot1 = error;
trace("failed to delete aim sprite");
this.removeChild(AimDataSprite);
//unresolved jump
var _slot1 = error;
trace("failed to delete aim data sprite");
gameStat.DrawAim = false;
if (Drug_started){
oldman.AnimateDrop();
DropTimer.start();
};
};
}
private function UI_RetryLevel(e:Event):void{
SoundMixer.stopAll();
trace("gameStat.EarnedApples", gameStat.EarnedApples);
trace("gameStat.InitiallyEarned", gameStat.InitiallyEarned);
gameStat.EarnedApples = gameStat.InitiallyEarned;
StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples);
_deleteOldLevelData();
_loadLevel(LeveL.levelID);
}
private function _createListeners():void{
this.addEventListener(Event.ENTER_FRAME, _refreshFrame);
this.addEventListener(MouseEvent.MOUSE_UP, _dropStick);
AppleCrushTimer.addEventListener(TimerEvent.TIMER_COMPLETE, AppleCrushTimerEvent);
this.addEventListener(KeyboardEvent.KEY_DOWN, _keyPress);
this.addEventListener(MouseEvent.MOUSE_MOVE, _aimMove);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.NEW_GAME, UI_NewGame);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.CONT_GAME, UI_ContGame);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.NEXT_LEVEL, UI_NextLevel);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.MAIN_MENU, UI_MainMenu);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.TRY_AGAIN, UI_TryAgain);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.GOTO_GARAGE, UI_GotoGarage);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.BUY_AN_EXIT, UI_buy_exit);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.NEW_LEVEL, UI_NewLevel);
TreeSprite.dispatcher.addEventListener(InterfaceEventsDispatcher.RETRY, UI_RetryLevel);
TreeSprite.dispatcher.addEventListener(InterfaceEventsDispatcher.TREE_EXIT, UI_TreeExit);
TreeSprite.dispatcher.addEventListener(InterfaceEventsDispatcher.TREE_SOFF, UI_SoundOff);
TreeSprite.dispatcher.addEventListener(InterfaceEventsDispatcher.TREE_SON, UI_SoundOn);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.WIN_GAME, UI_wingame);
TutorialDialog.dispatcher.addEventListener(InterfaceEventsDispatcher.HELP_EXIT, UI_helpExit);
StageInterface.dispatcher.addEventListener(InterfaceEventsDispatcher.MM_HELP, UI_OpenHelp);
oldman.addEventListener(MouseEvent.MOUSE_DOWN, _drugStick);
DropTimer.addEventListener(TimerEvent.TIMER, _dropTimer);
}
private function _aimMove(e:MouseEvent):void{
var offset_x:Number;
var offset_y:Number;
var offset:Number;
var rotation_ang:Number;
var _p2:int;
var _p3:int;
var _p1:int;
if (gameStat.DrawAim){
offset_x = (mouseX - 130);
if (offset_x < 0){
offset_x = (offset_x * -1);
};
offset_y = (mouseY - 460);
if (offset_y < 0){
offset_y = (offset_y * -1);
};
offset = Math.sqrt(((offset_x * offset_x) + (offset_y * offset_y)));
rotation_ang = (Math.atan2(-((mouseX - 130)), (mouseY - 460)) * (180 / Math.PI));
Aim_sprite.rotation = (rotation_ang + 90);
if (offset < 100){
Aim_sprite._set_aim_rect(((offset * 1.5) + 10));
if ((gameStat.StickType < 4)){
_p1 = (offset * 2);
} else {
_p1 = (offset * 4);
if (gameStat.StickType == 6){
_p1 = (offset * 1.5);
};
};
_p2 = (_p1 / 10);
_p3 = (_p1 - (_p2 * 10));
AimDataSprite.Power_text.text = ((("P = " + _p2) + ".") + _p3);
AimDataSprite.Angle_text.text = (("A = " + Math.round((90 - rotation_ang))) + "°");
AimDataSprite.x = (mouseX + 10);
AimDataSprite.y = (mouseY - 20);
} else {
if ((gameStat.StickType < 4)){
_p1 = (100 * 2);
} else {
_p1 = (100 * 4);
if (gameStat.StickType == 6){
_p1 = (100 * 1.5);
};
};
trace(_p1);
_p2 = (_p1 / 10);
_p3 = (_p1 - (_p2 * 10));
AimDataSprite.Power_text.text = ((("P = " + _p2) + ".") + _p3);
AimDataSprite.Angle_text.text = (("A = " + Math.round((90 - rotation_ang))) + "°");
AimDataSprite.x = (130 + (100 * Math.cos(((rotation_ang + 90) * (Math.PI / 180)))));
AimDataSprite.y = (460 + (100 * Math.sin(((rotation_ang + 90) * (Math.PI / 180)))));
};
};
}
private function _initGame():void{
var boxGround_sprite:GroundSprite;
boxAABB.lowerBound.Set(-10, -10);
boxAABB.upperBound.Set(10, 10);
boxGravity = new b2Vec2(0, 10);
boxWorld = new b2World(boxAABB, boxGravity, true);
boxWorld.SetContactListener(myContactListener);
var boxGround_body:b2BodyDef = new b2BodyDef();
var boxGround_shape:b2PolygonDef = new b2PolygonDef();
boxGround_body.position.Set(4, 6);
boxGround_shape.SetAsBox(4, 0.5);
boxGround_shape.density = 1;
boxGround_shape.friction = 0.1;
boxGround_shape.restitution = 0.1;
boxGround_shape.filter.categoryBits = 4;
boxGround_shape.filter.maskBits = 10;
boxGround_sprite = new GroundSprite(4, 0.5, 100);
boxGround_body.userData = new _glideUserData();
boxGround_body.userData.sprite = boxGround_sprite;
boxGround_body.userData.type = 3;
addChild(boxGround_body.userData.sprite);
boxGround = boxWorld.CreateBody(boxGround_body);
boxGround.CreateShape(boxGround_shape);
this.addChild(TreeSprite);
this.addChild(StageInterface);
_createListeners();
}
private function UI_SoundOn(e:Event):void{
EngineSounds.SoundON = true;
TreeSprite.SoundOFF_button.visible = true;
TreeSprite.SoundON_button.visible = false;
EngineSounds.level_theme(1, 0);
}
private function UI_buy_exit(e:Event):void{
trace("selected tool so far:", gameStat.StickType);
gameStat.StickType = StageInterface.bought_tool;
StageInterface.Garage_dialog.visible = false;
StageInterface.ChooseLevel_dialog.visible = true;
}
private function _mouseDown_OBSOLETE(e:MouseEvent):void{
if (gameStat.LevelIsLoaded){
gameStat.DrawAim = true;
Aim_sprite = new AimSprite();
Aim_sprite.x = 130;
Aim_sprite.y = 600;
this.addChild(Aim_sprite);
AimDataSprite.showAimData();
};
}
private function _keyPress(e:KeyboardEvent):void{
}
private function _deleteOldStick():void{
this.removeChild(boxStick.m_userData.sprite);
//unresolved jump
var _slot1 = error;
trace("Error while deleting stick sprite! ----- no sprite but deleting body");
if (boxStick.m_userData.IsInWorld){
boxWorld.DestroyBody(boxStick);
boxStick.m_userData.IsInWorld = false;
};
//unresolved jump
var _slot1 = error;
trace("error -delete old stick");
}
public function _startEngine():void{
_initGame();
}
private function _appleGroundCollision(i:Number, hitX:Number, hitY:Number):void{
EngineSounds.apple_ground(1, 0);
boxWorld.DestroyBody(boxApples[i]);
this.removeChild(LeveL.Apples[i].sprite);
boxApples[i] = null;
LeveL.Apples[i].stat = 0;
var AppleCrushSprite:Sprite = new AppleCrushClip();
AppleCrushSprite.x = (hitX - 40);
AppleCrushSprite.y = (hitY - 20);
this.addChild(AppleCrushSprite);
AppleCrushTimersArray.push(new Timer(300, 1));
AppleCrushTimersArray[(AppleCrushTimersArray.length - 1)].addEventListener(TimerEvent.TIMER, AppleCrushTimerEvent);
AppleCrushesArray.push(AppleCrushSprite);
AppleCrushTimersArray[(AppleCrushTimersArray.length - 1)].start();
var ai:int;
while (ai < LeveL.Ants.length) {
if (AppleCrushSprite.hitTestObject(LeveL.Ants[ai].sprite)){
_appleAntCollision(ai);
};
ai++;
};
}
private function UI_ContGame(e:Event):void{
_sharedObject = SharedObject.getLocal("AS_GameStat");
LeveL = new Levels(0);
trace("_sharedObject.data.levelID", _sharedObject.data.levelID);
LeveL.levelID = (_sharedObject.data.levelID - 1);
if ((((LeveL.levelID < 24)) && ((LeveL.levelID > 0)))){
gameStat.EarnedApples = _sharedObject.data.EarnedApples;
StageInterface.fresh_apples = gameStat.EarnedApples;
gameStat.StickType = _sharedObject.data.Stick;
StageInterface.showChooseLevel((LeveL.levelID + 1), 1);
StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples);
} else {
StageInterface.fresh_apples = 0;
gameStat.EarnedApples = 0;
gameStat.StickType = 6;
StageInterface.showChooseLevel(1, 0);
StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples);
};
}
private function _antAntHomeCollision(i:Number):void{
var ApplesInTheStage:Boolean;
var LL7:Number;
var ai:int;
LeveL.Ants[i].direction = -1;
LeveL.Ants[i].sprite.SetDirection(-1);
if (LeveL.Ants[i].withApple){
switch (LeveL.Ants[i].type){
case 1:
LeveL.Ants[i].sprite.SetLoading(0);
LeveL.Ants[i].withApple = false;
break;
case 2:
LeveL.Ants[i].sprite.SetLoading(0);
LeveL.Ants[i].withApple = false;
break;
case 3:
LeveL.Ants[i].sprite.SetLoading(0);
LeveL.Ants[i].withApple = false;
break;
};
};
if (LeveL.ApplesInTheBox == 0){
ApplesInTheStage = false;
LL7 = LeveL.Ants.length;
ai = 0;
while (ai < LL7) {
if (LeveL.Ants[ai].withApple){
ApplesInTheStage = true;
};
ai++;
};
if (!ApplesInTheStage){
_levelFailed();
};
};
}
private function onFlushStatus(event:NetStatusEvent):void{
switch (event.info.code){
case "SharedObject.Flush.Success":
trace("User granted permission -- value saved.\n");
break;
case "SharedObject.Flush.Failed":
trace("User denied permission -- value not saved.\n");
break;
};
_sharedObject.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
}
public function _loadLevel(levelID:Number):void{
var boxStatic_body_0:b2BodyDef;
var boxStatic_shape1_0:b2PolygonDef;
var boxStatic_shape2_0:b2PolygonDef;
var boxStatic_shape3_0:b2PolygonDef;
var boxStatic_body_1:b2BodyDef;
var boxStatic_shape1_1:b2PolygonDef;
var boxStatic_shape2_1:b2PolygonDef;
var boxStatic_shape3_1:b2PolygonDef;
var boxStatic_body:b2BodyDef;
var boxStatic_shape3:b2CircleDef;
var boxStatic_shape4:b2CircleDef;
var boxStatic_shape5:b2CircleDef;
var apple_body:b2BodyDef;
var apple_shape:b2CircleDef;
var apple_sprite:Sprite;
var apple_sprite2:CAppleSprite_type3;
var apple_sprite3:CAppleSprite_type2;
var apple_sprite4:Sprite;
var apple_sprite5:Sprite;
var apple_sprite6:Sprite;
var apple_sprite7:Sprite;
EngineSounds.level_theme(1, 0);
LeveL = new Levels(levelID);
if (!LeveL.levelID){
gameStat.EarnedApples = 0;
gameStat.LevelIsLoaded = false;
StageInterface.showDialog("MainMenu");
return;
};
boxboxSprite = new BoxWithApples(20);
boxboxSprite.x = 175;
boxboxSprite.y = 536;
this.addChild(boxboxSprite);
var so:int;
while (so < LeveL.StaticObjects.length) {
switch (LeveL.StaticObjects[so].type){
case 1:
boxStatic_body_0 = new b2BodyDef();
boxStatic_shape1_0 = new b2PolygonDef();
boxStatic_shape2_0 = new b2PolygonDef();
boxStatic_shape3_0 = new b2PolygonDef();
boxStatic_body_0.position.Set((LeveL.StaticObjects[so].positionX / 100), (LeveL.StaticObjects[so].positionY / 100));
boxStatic_shape1_0.SetAsOrientedBox(0.05, 0.2, new b2Vec2(-0.15, -0.2), (65 / (180 / Math.PI)));
boxStatic_shape2_0.SetAsOrientedBox(0.06, 0.13, new b2Vec2(0.21, -0.19), (-30 / (180 / Math.PI)));
boxStatic_shape3_0.SetAsOrientedBox(0.15, 0.31, new b2Vec2(0, 0), (0 / (180 / Math.PI)));
boxStatic_shape1_0.filter.categoryBits = 8;
boxStatic_shape1_0.filter.maskBits = 2;
boxStatic_shape2_0.filter.categoryBits = 8;
boxStatic_shape2_0.filter.maskBits = 2;
boxStatic_shape3_0.filter.categoryBits = 8;
boxStatic_shape3_0.filter.maskBits = 2;
boxStatic_shape1_0.density = 1;
boxStatic_shape1_0.friction = 0.1;
boxStatic_shape1_0.restitution = 0.5;
boxStatic_shape2_0.density = 1;
boxStatic_shape2_0.friction = 0.1;
boxStatic_shape2_0.restitution = 0.7;
boxStatic_shape3_0.density = 1;
boxStatic_shape3_0.friction = 0.1;
boxStatic_shape3_0.restitution = 0.7;
boxStatic_body_0.userData = new _glideUserData();
boxStatic_body_0.userData.sprite = new MushroomSprite();
boxStatic_body_0.userData.sprite.x = LeveL.StaticObjects[so].positionX;
boxStatic_body_0.userData.sprite.y = LeveL.StaticObjects[so].positionY;
this.addChild(boxStatic_body_0.userData.sprite);
boxStatic.push(boxWorld.CreateBody(boxStatic_body_0));
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape1_0);
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape2_0);
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape3_0);
break;
case 2:
boxStatic_body_1 = new b2BodyDef();
boxStatic_shape1_1 = new b2PolygonDef();
boxStatic_shape2_1 = new b2PolygonDef();
boxStatic_shape3_1 = new b2PolygonDef();
boxStatic_body_1.position.Set((LeveL.StaticObjects[so].positionX / 100), (LeveL.StaticObjects[so].positionY / 100));
boxStatic_shape1_1.SetAsOrientedBox(0.1, 0.15, new b2Vec2(-0.13, -0.2), (50 / (180 / Math.PI)));
boxStatic_shape2_1.SetAsOrientedBox(0.1, 0.15, new b2Vec2(0.13, -0.2), (-48 / (180 / Math.PI)));
boxStatic_shape3_1.SetAsOrientedBox(0.1, 0.37, new b2Vec2(0, 0), (0 / (180 / Math.PI)));
boxStatic_shape1_1.filter.categoryBits = 8;
boxStatic_shape1_1.filter.maskBits = 2;
boxStatic_shape2_1.filter.categoryBits = 8;
boxStatic_shape2_1.filter.maskBits = 2;
boxStatic_shape3_1.filter.categoryBits = 8;
boxStatic_shape3_1.filter.maskBits = 2;
boxStatic_shape1_1.density = 1;
boxStatic_shape1_1.friction = 0.1;
boxStatic_shape1_1.restitution = 0.5;
boxStatic_shape2_1.density = 1;
boxStatic_shape2_1.friction = 0.1;
boxStatic_shape2_1.restitution = 0.7;
boxStatic_shape3_1.density = 1;
boxStatic_shape3_1.friction = 0.1;
boxStatic_shape3_1.restitution = 0.7;
boxStatic_body_1.userData = new _glideUserData();
boxStatic_body_1.userData.sprite = new MushroomSprite_2();
boxStatic_body_1.userData.sprite.x = LeveL.StaticObjects[so].positionX;
boxStatic_body_1.userData.sprite.y = LeveL.StaticObjects[so].positionY;
this.addChild(boxStatic_body_1.userData.sprite);
boxStatic.push(boxWorld.CreateBody(boxStatic_body_1));
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape1_1);
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape2_1);
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape3_1);
break;
case 3:
boxStatic_body = new b2BodyDef();
boxStatic_shape3 = new b2CircleDef();
boxStatic_shape4 = new b2CircleDef();
boxStatic_shape5 = new b2CircleDef();
boxStatic_body.position.Set((LeveL.StaticObjects[so].positionX / 100), (LeveL.StaticObjects[so].positionY / 100));
boxStatic_shape5.localPosition.x = 0.03;
boxStatic_shape3.localPosition.x = -0.18;
boxStatic_shape4.localPosition.x = 0.24;
boxStatic_shape3.localPosition.y = 0.01;
boxStatic_shape4.localPosition.y = 0.01;
boxStatic_shape3.radius = 0.1;
boxStatic_shape4.radius = 0.1;
boxStatic_shape5.radius = 0.18;
boxStatic_shape5.filter.categoryBits = 16;
boxStatic_shape5.filter.maskBits = 3;
boxStatic_shape3.filter.categoryBits = 16;
boxStatic_shape3.filter.maskBits = 3;
boxStatic_shape4.filter.categoryBits = 16;
boxStatic_shape4.filter.maskBits = 3;
boxStatic_shape5.density = 1;
boxStatic_shape5.friction = 0.1;
boxStatic_shape5.restitution = 0.5;
boxStatic_shape3.density = 1;
boxStatic_shape3.friction = 0.1;
boxStatic_shape3.restitution = 0.5;
boxStatic_shape4.density = 1;
boxStatic_shape4.friction = 0.1;
boxStatic_shape4.restitution = 0.5;
boxStatic_body.userData = new _glideUserData();
boxStatic_body.userData.sprite = new NestSprite();
boxStatic_body.userData.sprite.x = LeveL.StaticObjects[so].positionX;
boxStatic_body.userData.sprite.y = LeveL.StaticObjects[so].positionY;
this.addChild(boxStatic_body.userData.sprite);
boxStatic.push(boxWorld.CreateBody(boxStatic_body));
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape5);
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape3);
boxStatic[(boxStatic.length - 1)].CreateShape(boxStatic_shape4);
break;
};
so++;
};
var LAL:Number = LeveL.Apples.length;
var i:int;
while (i < LAL) {
apple_body = new b2BodyDef();
apple_shape = new b2CircleDef();
apple_shape.density = 1;
apple_shape.friction = 0.0001;
apple_shape.restitution = -100;
apple_shape.filter.categoryBits = 2;
apple_shape.filter.maskBits = 29;
switch (LeveL.Apples[i].type){
case 1:
apple_shape.radius = (12.5 / 100);
apple_sprite = new CAppleSprite(0, 0, 12.5);
LeveL.Apples[i].sprite = apple_sprite;
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[i].sprite;
this.addChild(apple_body.userData.sprite);
break;
case 2:
apple_shape.radius = (12.5 / 100);
apple_sprite2 = new CAppleSprite_type3();
LeveL.Apples[i].sprite = apple_sprite2;
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[i].sprite;
this.addChild(apple_body.userData.sprite);
break;
case 3:
apple_shape.radius = (12.5 / 100);
apple_sprite3 = new CAppleSprite_type2();
LeveL.Apples[i].sprite = apple_sprite3;
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[i].sprite;
this.addChild(apple_body.userData.sprite);
break;
case 4:
apple_shape.radius = (12.5 / 100);
apple_sprite4 = new CAppleSprite_type4(0, 0, 12.5);
LeveL.Apples[i].sprite = apple_sprite4;
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[i].sprite;
this.addChild(apple_body.userData.sprite);
break;
case 5:
apple_shape.radius = (12.5 / 100);
apple_sprite5 = new CAppleSprite_type5();
LeveL.Apples[i].sprite = apple_sprite5;
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[i].sprite;
this.addChild(apple_body.userData.sprite);
break;
case 6:
apple_shape.radius = (16 / 100);
apple_sprite6 = new CAppleSprite_type6(0, 0, 16);
LeveL.Apples[i].sprite = apple_sprite6;
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[i].sprite;
this.addChild(apple_body.userData.sprite);
break;
case 7:
apple_shape.radius = (19 / 100);
apple_sprite7 = new CAppleSprite_type7(0, 0, 19);
LeveL.Apples[i].sprite = apple_sprite7;
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[i].sprite;
this.addChild(apple_body.userData.sprite);
break;
};
apple_body.position.Set((LeveL.Apples[i].positionX / 100), (LeveL.Apples[i].positionY / 100));
boxApples.push(boxWorld.CreateBody(apple_body));
boxApples[i].CreateShape(apple_shape);
boxApples[i].SetMassFromShapes();
boxApples[i].PutToSleep();
i++;
};
var LAnL:Number = LeveL.Ants.length;
var ai:int;
while (ai < LAnL) {
switch (LeveL.Ants[ai].type){
case 1:
LeveL.Ants[ai].sprite = new Animal1(1, 1);
LeveL.Ants[ai].sprite.StartAnimation();
LeveL.Ants[ai].sprite.x = 700;
LeveL.Ants[ai].sprite.y = 500;
this.addChild(LeveL.Ants[ai].sprite);
break;
case 2:
LeveL.Ants[ai].sprite = new Animal2(2, 1);
LeveL.Ants[ai].sprite.StartAnimation();
LeveL.Ants[ai].sprite.x = 700;
LeveL.Ants[ai].sprite.y = 515;
this.addChild(LeveL.Ants[ai].sprite);
break;
case 3:
LeveL.Ants[ai].sprite = new Animal3(3, 1);
LeveL.Ants[ai].sprite.StartAnimation();
LeveL.Ants[ai].sprite.x = 700;
LeveL.Ants[ai].sprite.y = 508;
this.addChild(LeveL.Ants[ai].sprite);
LeveL.Ants[ai].sprite.filters = [new ConvolutionFilter(3, 3, [0, -1, 0, -1, 15, -1, 0, -1, 0], 11)];
break;
};
ai++;
};
oldman.x = 0;
oldman.y = 370;
oldman.SwithTool(gameStat.StickType);
this.addChild(oldman);
Can_start_grug = true;
StageInterface.showBackground(levelID, 0);
gameStat.LevelIsLoaded = true;
}
private function UI_TryAgain(e:Event):void{
gameStat.EarnedApples = gameStat.InitiallyEarned;
StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples);
StageInterface.removeChild(StageInterface.ChooseLevel_dialog);
_loadLevel((LeveL.levelID - 1));
}
public function _deleteOldLevelData():void{
gameStat.LevelIsLoaded = false;
this.removeChild(oldman);
_deleteOldStick();
this.removeChild(boxboxSprite);
var i3:Number = 0;
while (i3 < boxStatic.length) {
this.removeChild(boxStatic[i3].m_userData.sprite);
boxWorld.DestroyBody(boxStatic[i3]);
i3 = (i3 + 1);
};
while (boxStatic.length) {
boxStatic.pop();
};
var i2:int;
for (;i2 < boxApples.length;(i2 = (i2 + 1))) {
if (boxApples[i2]){
this.removeChild(boxApples[i2].m_userData.sprite);
if (boxApples[i2] != null){
boxWorld.DestroyBody(boxApples[i2]);
};
};
this.removeChild(LeveL.Apples[i2].sprite);
continue;
var _slot1 = error;
};
var n1:Number = LeveL.Ants.length;
var i1:int;
while (i1 < n1) {
this.removeChild(LeveL.Ants[i1].sprite);
i1 = (i1 + 1);
};
boxApples = new Array();
}
private function AppleCrushTimerEvent(e:TimerEvent):void{
this.removeChild(AppleCrushesArray.shift());
AppleCrushTimersArray.shift();
if (!AppleCrushesArray.length){
if (gameStat.LevelIsLoaded){
if (LeveL.level_status == "Passed"){
_levelPassed();
};
};
};
}
private function UI_NewGame(e:Event):void{
StageInterface.showChooseLevel(1, 0);
}
private function _stickAppleCollision(i:Number):void{
var LL1:Number;
var ai:int;
var LL2:Number;
var aii:int;
var tempar:Array;
var di:int;
var apple_body:b2BodyDef;
var apple_shape:b2CircleDef;
var apple_sprite:Sprite;
var fi:int;
var i = i;
switch (LeveL.Apples[i].type){
case 1:
if (boxApples[i].m_userData.not_tuched){
boxApples[i].m_userData.not_tuched = false;
EngineSounds.stick_apple();
gameStat.EarnedApples++;
StageInterface.apples_count_text.text = (" " + gameStat.EarnedApples);
this.setChildIndex(boxApples[i].m_userData.sprite, (this.numChildren - 1));
};
break;
case 2:
boxWorld.DestroyBody(boxApples[i]);
this.removeChild(LeveL.Apples[i].sprite);
boxApples.splice(i, 1);
LeveL.Apples.splice(i, 1);
LL1 = LeveL.Ants.length;
ai = 0;
while (ai < LL1) {
LeveL.Ants[ai].velocity = (LeveL.Ants[ai].velocity / 2);
LeveL.Ants[ai].sprite.AnimationTimer.delay = (LeveL.Ants[ai].sprite.AnimationTimer.delay * 2);
ai = (ai + 1);
};
break;
case 3:
boxWorld.DestroyBody(boxApples[i]);
this.removeChild(LeveL.Apples[i].sprite);
boxApples.splice(i, 1);
LeveL.Apples.splice(i, 1);
LL2 = LeveL.Ants.length;
aii = 0;
while (aii < LL2) {
LeveL.Ants[aii].velocity = (LeveL.Ants[aii].velocity * 2);
LeveL.Ants[aii].sprite.AnimationTimer.delay = (LeveL.Ants[aii].sprite.AnimationTimer.delay / 2);
aii = (aii + 1);
};
break;
case 4:
boxWorld.DestroyBody(boxApples[i]);
this.removeChild(LeveL.Apples[i].sprite);
boxApples.splice(i, 1);
LeveL.Apples.splice(i, 1);
tempar = new Array();
tempar = LeveL.Apples_alts.pop();
di = 0;
while (di < tempar.length) {
apple_body = new b2BodyDef();
apple_shape = new b2CircleDef();
apple_shape.radius = (12.5 / 100);
apple_shape.density = 1;
apple_shape.friction = 0.0001;
apple_shape.restitution = -100;
apple_shape.filter.categoryBits = 2;
apple_shape.filter.maskBits = 29;
LeveL.Apples.push(tempar[di]);
if (LeveL.Apples[(LeveL.Apples.length - 1)].type == 4){
apple_sprite = new CAppleSprite_type4(0, 0, 12.5);
} else {
apple_sprite = new CAppleSprite(0, 0, 12.5);
};
LeveL.Apples[(LeveL.Apples.length - 1)].sprite = apple_sprite;
apple_body.userData = new _glideUserData();
apple_body.userData.sprite = LeveL.Apples[(LeveL.Apples.length - 1)].sprite;
apple_body.position.Set((LeveL.Apples[(LeveL.Apples.length - 1)].positionX / 100), (LeveL.Apples[(LeveL.Apples.length - 1)].positionY / 100));
boxApples.push(boxWorld.CreateBody(apple_body));
boxApples[(boxApples.length - 1)].CreateShape(apple_shape);
boxApples[(boxApples.length - 1)].SetMassFromShapes();
boxApples[(boxApples.length - 1)].PutToSleep();
apple_body.userData.sprite.x = -20;
apple_body.userData.sprite.y = -20;
this.addChild(apple_body.userData.sprite);
di = (di + 1);
};
LeveL.AltsLoaded++;
break;
case 5:
boxWorld.DestroyBody(boxApples[i]);
this.removeChild(LeveL.Apples[i].sprite);
boxApples.splice(i, 1);
LeveL.Apples.splice(i, 1);
fi = 0;
for (;fi < boxApples.length;boxApples.splice(fi, 1), LeveL.Apples.splice(fi, 1), (fi = (fi + 1))) {
//unresolved if
if (boxApples[fi]){
boxWorld.DestroyBody(boxApples[fi]);
};
this.removeChild(LeveL.Apples[fi].sprite);
continue;
var _slot1 = error;
trace("my error -- ", _slot1.message);
};
break;
};
}
private function saveGamestat():void{
_sharedObject = SharedObject.getLocal("AS_GameStat");
_sharedObject.data.levelID = LeveL.levelID;
_sharedObject.data.Stick = gameStat.StickType;
_sharedObject.data.EarnedApples = gameStat.InitiallyEarned;
var flushStatus:String;
flushStatus = _sharedObject.flush(((20 * 0x0400) * 10));
//unresolved jump
var _slot1 = error;
trace("Error...Could not write SharedObject to disk\n");
if (flushStatus != null){
switch (flushStatus){
case SharedObjectFlushStatus.PENDING:
trace("Requesting permission to save object...\n");
_sharedObject.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
break;
case SharedObjectFlushStatus.FLUSHED:
trace("Value flushed to disk.\n");
break;
};
};
}
private function _antBoxCollision(i:Number):void{
LeveL.Ants[i].direction = 1;
LeveL.Ants[i].sprite.SetDirection(1);
if (LeveL.ApplesInTheBox > 0){
LeveL.Ants[i].withApple = true;
EngineSounds.ant_applebox();
switch (LeveL.Ants[i].type){
case 1:
LeveL.ApplesInTheBox--;
boxboxSprite.Decrease(1);
LeveL.Ants[i].sprite.SetLoading(1);
LeveL.Ants[i].applesOnTheBack = 1;
break;
case 2:
if (LeveL.ApplesInTheBox > 1){
LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox - 2);
boxboxSprite.Decrease(2);
LeveL.Ants[i].sprite.SetLoading(2);
LeveL.Ants[i].applesOnTheBack = 2;
break;
};
if (LeveL.ApplesInTheBox == 1){
LeveL.ApplesInTheBox--;
boxboxSprite.Decrease(1);
LeveL.Ants[i].sprite.SetLoading(2);
LeveL.Ants[i].applesOnTheBack = 1;
break;
};
break;
case 3:
if (LeveL.ApplesInTheBox > 3){
LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox - 4);
boxboxSprite.Decrease(4);
LeveL.Ants[i].sprite.SetLoading(4);
LeveL.Ants[i].applesOnTheBack = 4;
break;
};
if (LeveL.ApplesInTheBox > 2){
LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox - 3);
boxboxSprite.Decrease(3);
LeveL.Ants[i].sprite.SetLoading(3);
LeveL.Ants[i].applesOnTheBack = 3;
break;
};
if (LeveL.ApplesInTheBox > 1){
LeveL.ApplesInTheBox = (LeveL.ApplesInTheBox - 2);
boxboxSprite.Decrease(2);
LeveL.Ants[i].sprite.SetLoading(2);
LeveL.Ants[i].applesOnTheBack = 2;
break;
};
if (LeveL.ApplesInTheBox == 1){
LeveL.ApplesInTheBox--;
boxboxSprite.Decrease(1);
LeveL.Ants[i].sprite.SetLoading(1);
LeveL.Ants[i].applesOnTheBack = 1;
break;
};
break;
};
};
}
}
}//package Engine
Section 212
//GameStat (Engine.GameStat)
package Engine {
import flash.display.*;
import flash.geom.*;
public class GameStat extends Sprite {
public var DrawAim:Boolean;// = false
public var LastCubePoint:Point;
public var InitiallyEarned:Number;// = 0
public var ChooseLevel_EarnedApples:Number;// = 0
public var StickType:Number;
public var ChooseLevel_LevelID:Number;// = 1
public var EarnedApples:Number;// = 0
public var LevelIsLoaded:Boolean;// = false
public var ChooseLevel_StickType:Number;// = 1
public var VoicePosition:Number;// = 0
public function GameStat(){
LastCubePoint = new Point(0, 0);
super();
StickType = 1;
}
}
}//package Engine
Section 213
//AS_Tutorial (Interface.Sprites.AS_Tutorial)
package Interface.Sprites {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
import mx.core.*;
public class AS_Tutorial extends Sprite {
private var WGFrame_3_Asset:Class;
private var WGFrame_7_Asset:Class;
private var WGFrame_3_Asset_bitmap:BitmapAsset;
public var TutorialExitButton:SimpleButton;
private var EmptyFrame_Asset:Class;
private var WGFrame_0_4_Asset_bitmap:BitmapAsset;
private var TutorialNextButtonOFF_Asset:Class;
private var Dissolve_timer:Timer;
private var WGFrame_12_Asset_bitmap:BitmapAsset;
public var TutorialNextButton:SimpleButton;
private var WGFrame_8_Asset_bitmap:BitmapAsset;
private var EmptyFrame_Asset_bitmap:BitmapAsset;
private var WGFrame_0_Asset_bitmap:BitmapAsset;
private var WGFrame_0_2_Asset:Class;
private var current_frame:Number;// = 1
private var Stage2_back:Sprite;
private var WGFrame_0_Asset:Class;
private var ExitFromFirtScreen:Boolean;// = true
public var TutorialExitButton_2:SimpleButton;
private var WGFrame_4_Asset:Class;
private var Tutorial_timer:Timer;
private var WGFrame_8_Asset:Class;
private var WGFrame_5_Asset_bitmap:BitmapAsset;
public var _seed:Number;
private var WGFrame_10_Asset:Class;
private var TutorialExitButtonON_bitmap:BitmapAsset;
public var Tutorial_screen:Sprite;
private var WGFrame_2_Asset_bitmap:BitmapAsset;
private var Stage4_back:Sprite;
private var WGFrame_0_3_Asset:Class;
private var WGFrame_11_Asset_bitmap:BitmapAsset;
private var TutorialExitButtonON_Asset:Class;
public var BlinkBool:Boolean;// = true
private var WGFrame_1_Asset:Class;
private var WGFrame_5_Asset:Class;
private var WGFrame_7_Asset_bitmap:BitmapAsset;
private var TutorialNextButtonOFF_bitmap:BitmapAsset;
private var WGFrame_11_Asset:Class;
private var WGFrame_9_Asset:Class;
private var TutorialExitButtonOFF_Asset:Class;
private var TutorialNextButtonON_Asset:Class;
public var ButtonsBlinkTimer:Timer;
private var WGFrame_0_3_Asset_bitmap:BitmapAsset;
public var _bit1:BitmapData;
public var _bit2:BitmapData;
public var dispatcher:InterfaceEventsDispatcher;
private var WGFrame_4_Asset_bitmap:BitmapAsset;
private var TutorialExitButtonOFF_bitmap:BitmapAsset;
private var WGFrame_0_4_Asset:Class;
private var WGFrame_13_Asset_bitmap:BitmapAsset;
private var WGFrame_12_Asset:Class;
private var WGFrame_2_Asset:Class;
private var WGFrame_6_Asset:Class;
private var WGFrame_9_Asset_bitmap:BitmapAsset;
public var _pixelCount:int;// = 0
private var TutorialNextButtonON_bitmap:BitmapAsset;
private var Frames:Array;
private var WGFrame_1_Asset_bitmap:BitmapAsset;
private var Stage3_back:Sprite;
private var WGFrame_0_2_Asset_bitmap:BitmapAsset;
private var WGFrame_10_Asset_bitmap:BitmapAsset;
private var WGFrame_6_Asset_bitmap:BitmapAsset;
private var WGFrame_13_Asset:Class;
public function AS_Tutorial(){
_bit1 = new BitmapData(800, 600);
_bit2 = new BitmapData(800, 600);
TutorialNextButton = new SimpleButton();
TutorialExitButton = new SimpleButton();
TutorialExitButton_2 = new SimpleButton();
dispatcher = new InterfaceEventsDispatcher();
TutorialNextButtonON_Asset = AS_Tutorial_TutorialNextButtonON_Asset;
TutorialNextButtonOFF_Asset = AS_Tutorial_TutorialNextButtonOFF_Asset;
TutorialExitButtonON_Asset = AS_Tutorial_TutorialExitButtonON_Asset;
TutorialExitButtonOFF_Asset = AS_Tutorial_TutorialExitButtonOFF_Asset;
EmptyFrame_Asset = AS_Tutorial_EmptyFrame_Asset;
WGFrame_0_Asset = AS_Tutorial_WGFrame_0_Asset;
WGFrame_0_2_Asset = AS_Tutorial_WGFrame_0_2_Asset;
Stage2_back = new Sprite();
WGFrame_0_3_Asset = AS_Tutorial_WGFrame_0_3_Asset;
Stage3_back = new Sprite();
WGFrame_0_4_Asset = AS_Tutorial_WGFrame_0_4_Asset;
Stage4_back = new Sprite();
WGFrame_1_Asset = AS_Tutorial_WGFrame_1_Asset;
WGFrame_2_Asset = AS_Tutorial_WGFrame_2_Asset;
WGFrame_3_Asset = AS_Tutorial_WGFrame_3_Asset;
WGFrame_4_Asset = AS_Tutorial_WGFrame_4_Asset;
WGFrame_5_Asset = AS_Tutorial_WGFrame_5_Asset;
WGFrame_6_Asset = AS_Tutorial_WGFrame_6_Asset;
WGFrame_7_Asset = AS_Tutorial_WGFrame_7_Asset;
WGFrame_8_Asset = AS_Tutorial_WGFrame_8_Asset;
WGFrame_9_Asset = AS_Tutorial_WGFrame_9_Asset;
WGFrame_10_Asset = AS_Tutorial_WGFrame_10_Asset;
WGFrame_11_Asset = AS_Tutorial_WGFrame_11_Asset;
WGFrame_12_Asset = AS_Tutorial_WGFrame_12_Asset;
WGFrame_13_Asset = AS_Tutorial_WGFrame_13_Asset;
Tutorial_screen = new Sprite();
Tutorial_timer = new Timer(3000);
Dissolve_timer = new Timer(5);
Frames = new Array();
ButtonsBlinkTimer = new Timer(200);
super();
EmptyFrame_Asset_bitmap = new EmptyFrame_Asset();
WGFrame_0_Asset_bitmap = new WGFrame_0_Asset();
WGFrame_0_2_Asset_bitmap = new WGFrame_0_2_Asset();
WGFrame_0_3_Asset_bitmap = new WGFrame_0_3_Asset();
WGFrame_0_4_Asset_bitmap = new WGFrame_0_4_Asset();
WGFrame_1_Asset_bitmap = new WGFrame_1_Asset();
WGFrame_2_Asset_bitmap = new WGFrame_2_Asset();
WGFrame_3_Asset_bitmap = new WGFrame_3_Asset();
WGFrame_4_Asset_bitmap = new WGFrame_4_Asset();
WGFrame_5_Asset_bitmap = new WGFrame_5_Asset();
WGFrame_6_Asset_bitmap = new WGFrame_6_Asset();
WGFrame_7_Asset_bitmap = new WGFrame_7_Asset();
WGFrame_8_Asset_bitmap = new WGFrame_8_Asset();
WGFrame_9_Asset_bitmap = new WGFrame_9_Asset();
WGFrame_10_Asset_bitmap = new WGFrame_10_Asset();
WGFrame_11_Asset_bitmap = new WGFrame_11_Asset();
WGFrame_12_Asset_bitmap = new WGFrame_12_Asset();
WGFrame_13_Asset_bitmap = new WGFrame_13_Asset();
EmptyFrame_Asset_bitmap.smoothing = true;
WGFrame_0_Asset_bitmap.smoothing = true;
WGFrame_0_2_Asset_bitmap.smoothing = true;
WGFrame_0_3_Asset_bitmap.smoothing = true;
WGFrame_0_4_Asset_bitmap.smoothing = true;
WGFrame_1_Asset_bitmap.smoothing = true;
WGFrame_2_Asset_bitmap.smoothing = true;
WGFrame_3_Asset_bitmap.smoothing = true;
WGFrame_4_Asset_bitmap.smoothing = true;
WGFrame_5_Asset_bitmap.smoothing = true;
WGFrame_6_Asset_bitmap.smoothing = true;
WGFrame_7_Asset_bitmap.smoothing = true;
WGFrame_8_Asset_bitmap.smoothing = true;
WGFrame_9_Asset_bitmap.smoothing = true;
WGFrame_10_Asset_bitmap.smoothing = true;
WGFrame_11_Asset_bitmap.smoothing = true;
WGFrame_12_Asset_bitmap.smoothing = true;
WGFrame_13_Asset_bitmap.smoothing = true;
Frames.push(WGFrame_0_Asset_bitmap);
Frames.push(WGFrame_1_Asset_bitmap);
Frames.push(WGFrame_2_Asset_bitmap);
Frames.push(WGFrame_3_Asset_bitmap);
Frames.push(WGFrame_4_Asset_bitmap);
Frames.push(WGFrame_5_Asset_bitmap);
Frames.push(WGFrame_6_Asset_bitmap);
Frames.push(WGFrame_7_Asset_bitmap);
Frames.push(WGFrame_8_Asset_bitmap);
Frames.push(WGFrame_9_Asset_bitmap);
Frames.push(WGFrame_10_Asset_bitmap);
Frames.push(WGFrame_11_Asset_bitmap);
Frames.push(WGFrame_12_Asset_bitmap);
Frames.push(WGFrame_13_Asset_bitmap);
Tutorial_screen.addChild(Frames[0]);
Stage2_back.addChild(WGFrame_0_2_Asset_bitmap);
Stage2_back.visible = false;
Tutorial_screen.addChild(Stage2_back);
Stage3_back.addChild(WGFrame_0_3_Asset_bitmap);
Stage3_back.visible = false;
Tutorial_screen.addChild(Stage3_back);
Stage4_back.addChild(WGFrame_0_4_Asset_bitmap);
Stage4_back.visible = false;
Tutorial_screen.addChild(Stage4_back);
EmptyFrame_Asset_bitmap = new EmptyFrame_Asset();
EmptyFrame_Asset_bitmap.smoothing = true;
Tutorial_screen.addChild(EmptyFrame_Asset_bitmap);
Tutorial_timer.addEventListener(TimerEvent.TIMER, _onTimer);
Dissolve_timer.addEventListener(TimerEvent.TIMER, _onDissolve);
ButtonsBlinkTimer.addEventListener(TimerEvent.TIMER, _onButtonsBlink);
TutorialNextButtonON_bitmap = new TutorialNextButtonON_Asset();
TutorialNextButtonOFF_bitmap = new TutorialNextButtonOFF_Asset();
TutorialExitButtonON_bitmap = new TutorialExitButtonON_Asset();
TutorialExitButtonOFF_bitmap = new TutorialExitButtonOFF_Asset();
TutorialNextButtonON_bitmap.smoothing = true;
TutorialNextButtonOFF_bitmap.smoothing = true;
TutorialExitButtonON_bitmap.smoothing = true;
TutorialExitButtonOFF_bitmap.smoothing = true;
TutorialExitButton.upState = TutorialExitButtonOFF_bitmap;
TutorialExitButton.downState = TutorialExitButtonON_bitmap;
TutorialExitButton.overState = TutorialExitButtonON_bitmap;
TutorialExitButton.hitTestState = TutorialExitButtonON_bitmap;
TutorialNextButton.upState = TutorialNextButtonOFF_bitmap;
TutorialNextButton.downState = TutorialNextButtonON_bitmap;
TutorialNextButton.overState = TutorialNextButtonON_bitmap;
TutorialNextButton.hitTestState = TutorialNextButtonON_bitmap;
TutorialExitButton.visible = false;
TutorialNextButton.visible = false;
TutorialExitButton.addEventListener(MouseEvent.CLICK, _onExitClick);
TutorialNextButton.addEventListener(MouseEvent.CLICK, _onNextClick);
}
private function _onDissolve(e:TimerEvent):void{
_seed = _bit1.pixelDissolve(_bit2, _bit1.rect, new Point(), _seed, 20000);
_pixelCount = (_pixelCount + 20000);
if (_pixelCount > (800 * 600)){
Dissolve_timer.stop();
_pixelCount = 0;
};
}
public function _onExitClick(e:MouseEvent):void{
ButtonsBlinkTimer.stop();
Tutorial_screen.removeChild(TutorialExitButton);
if (ExitFromFirtScreen){
Tutorial_screen.removeChild(TutorialNextButton);
};
Stage2_back.visible = false;
Stage3_back.visible = false;
Stage4_back.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.HELP_EXIT));
}
private function _onTimer(e:TimerEvent):void{
trace("current_ frame is ", current_frame);
switch (current_frame){
case 0:
Frames[0].visible = true;
current_frame++;
break;
case 1:
Tutorial_timer.delay = 3000;
_seed = (Math.random() * 100000);
_bit1 = EmptyFrame_Asset_bitmap.bitmapData;
_bit2 = Frames[1].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 2:
_seed = (Math.random() * 100000);
_bit2 = Frames[2].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 3:
_seed = (Math.random() * 100000);
_bit2 = Frames[3].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 4:
_seed = (Math.random() * 100000);
_bit2 = Frames[4].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 5:
_seed = (Math.random() * 100000);
_bit2 = Frames[5].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 6:
Tutorial_timer.stop();
TutorialExitButton.x = 400;
TutorialExitButton.y = 500;
TutorialExitButton.visible = true;
TutorialNextButton.x = 600;
TutorialNextButton.y = 500;
TutorialNextButton.visible = true;
Tutorial_screen.addChild(TutorialExitButton);
Tutorial_screen.addChild(TutorialNextButton);
ExitFromFirtScreen = true;
ButtonsBlinkTimer.start();
break;
case 7:
Tutorial_timer.delay = 3000;
_seed = (Math.random() * 100000);
EmptyFrame_Asset_bitmap = new EmptyFrame_Asset();
EmptyFrame_Asset_bitmap.smoothing = true;
Tutorial_screen.addChild(EmptyFrame_Asset_bitmap);
_bit1 = EmptyFrame_Asset_bitmap.bitmapData;
_bit2 = Frames[6].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 8:
_seed = (Math.random() * 100000);
_bit2 = Frames[7].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 9:
_seed = (Math.random() * 100000);
_bit2 = Frames[8].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 10:
_seed = (Math.random() * 100000);
_bit2 = Frames[9].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 11:
_seed = (Math.random() * 100000);
_bit2 = Frames[10].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 12:
Tutorial_timer.stop();
TutorialExitButton.x = 400;
TutorialExitButton.y = 500;
TutorialExitButton.visible = true;
TutorialNextButton.x = 600;
TutorialNextButton.y = 500;
TutorialNextButton.visible = true;
ExitFromFirtScreen = false;
ButtonsBlinkTimer.start();
break;
case 13:
Tutorial_timer.delay = 3000;
_seed = (Math.random() * 100000);
EmptyFrame_Asset_bitmap = new EmptyFrame_Asset();
EmptyFrame_Asset_bitmap.smoothing = true;
Tutorial_screen.addChild(EmptyFrame_Asset_bitmap);
_bit1 = EmptyFrame_Asset_bitmap.bitmapData;
_bit2 = Frames[11].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 14:
Tutorial_timer.delay = 500;
_seed = (Math.random() * 100000);
Tutorial_screen.removeChild(EmptyFrame_Asset_bitmap);
EmptyFrame_Asset_bitmap = new EmptyFrame_Asset();
EmptyFrame_Asset_bitmap.smoothing = true;
Tutorial_screen.addChild(EmptyFrame_Asset_bitmap);
Stage3_back.visible = false;
Stage4_back.visible = true;
current_frame++;
break;
case 15:
Tutorial_timer.delay = 3000;
_seed = (Math.random() * 100000);
_bit1 = EmptyFrame_Asset_bitmap.bitmapData;
_bit2 = Frames[12].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 16:
_seed = (Math.random() * 100000);
_bit2 = Frames[13].bitmapData;
Dissolve_timer.start();
current_frame++;
break;
case 17:
Tutorial_timer.stop();
current_frame = 1;
TutorialExitButton.x = 600;
TutorialExitButton.y = 370;
TutorialExitButton.visible = true;
ExitFromFirtScreen = false;
ButtonsBlinkTimer.start();
break;
};
}
public function _onNextClick(e:MouseEvent):void{
trace("current frame = ", current_frame);
switch (current_frame){
case 6:
Tutorial_screen.removeChild(EmptyFrame_Asset_bitmap);
TutorialExitButton.visible = false;
TutorialNextButton.visible = false;
Stage2_back.visible = true;
ButtonsBlinkTimer.stop();
current_frame = 7;
Tutorial_timer.delay = 500;
Tutorial_timer.start();
break;
case 12:
Tutorial_screen.removeChild(EmptyFrame_Asset_bitmap);
TutorialExitButton.visible = false;
TutorialNextButton.visible = false;
Stage2_back.visible = false;
Stage3_back.visible = true;
ButtonsBlinkTimer.stop();
current_frame = 13;
Tutorial_timer.delay = 500;
Tutorial_timer.start();
break;
};
}
public function ShowTutorial():void{
Tutorial_screen.removeChild(EmptyFrame_Asset_bitmap);
EmptyFrame_Asset_bitmap = new EmptyFrame_Asset();
EmptyFrame_Asset_bitmap.smoothing = true;
Tutorial_screen.addChild(EmptyFrame_Asset_bitmap);
Frames[0].visible = true;
trace("tutorial timer started");
Tutorial_timer.delay = 500;
Tutorial_timer.start();
}
public function _onButtonsBlink(e:TimerEvent):void{
BlinkBool = !(BlinkBool);
trace("buttons blink timer", BlinkBool);
if (BlinkBool){
TutorialExitButton.upState = TutorialExitButtonOFF_bitmap;
TutorialNextButton.upState = TutorialNextButtonOFF_bitmap;
} else {
TutorialExitButton.upState = TutorialExitButtonON_bitmap;
TutorialNextButton.upState = TutorialNextButtonON_bitmap;
};
}
}
}//package Interface.Sprites
Section 214
//AS_Tutorial_EmptyFrame_Asset (Interface.Sprites.AS_Tutorial_EmptyFrame_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_EmptyFrame_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 215
//AS_Tutorial_TutorialExitButtonOFF_Asset (Interface.Sprites.AS_Tutorial_TutorialExitButtonOFF_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_TutorialExitButtonOFF_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 216
//AS_Tutorial_TutorialExitButtonON_Asset (Interface.Sprites.AS_Tutorial_TutorialExitButtonON_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_TutorialExitButtonON_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 217
//AS_Tutorial_TutorialNextButtonOFF_Asset (Interface.Sprites.AS_Tutorial_TutorialNextButtonOFF_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_TutorialNextButtonOFF_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 218
//AS_Tutorial_TutorialNextButtonON_Asset (Interface.Sprites.AS_Tutorial_TutorialNextButtonON_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_TutorialNextButtonON_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 219
//AS_Tutorial_WGFrame_0_2_Asset (Interface.Sprites.AS_Tutorial_WGFrame_0_2_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_0_2_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 220
//AS_Tutorial_WGFrame_0_3_Asset (Interface.Sprites.AS_Tutorial_WGFrame_0_3_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_0_3_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 221
//AS_Tutorial_WGFrame_0_4_Asset (Interface.Sprites.AS_Tutorial_WGFrame_0_4_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_0_4_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 222
//AS_Tutorial_WGFrame_0_Asset (Interface.Sprites.AS_Tutorial_WGFrame_0_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_0_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 223
//AS_Tutorial_WGFrame_1_Asset (Interface.Sprites.AS_Tutorial_WGFrame_1_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_1_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 224
//AS_Tutorial_WGFrame_10_Asset (Interface.Sprites.AS_Tutorial_WGFrame_10_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_10_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 225
//AS_Tutorial_WGFrame_11_Asset (Interface.Sprites.AS_Tutorial_WGFrame_11_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_11_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 226
//AS_Tutorial_WGFrame_12_Asset (Interface.Sprites.AS_Tutorial_WGFrame_12_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_12_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 227
//AS_Tutorial_WGFrame_13_Asset (Interface.Sprites.AS_Tutorial_WGFrame_13_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_13_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 228
//AS_Tutorial_WGFrame_2_Asset (Interface.Sprites.AS_Tutorial_WGFrame_2_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_2_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 229
//AS_Tutorial_WGFrame_3_Asset (Interface.Sprites.AS_Tutorial_WGFrame_3_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_3_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 230
//AS_Tutorial_WGFrame_4_Asset (Interface.Sprites.AS_Tutorial_WGFrame_4_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_4_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 231
//AS_Tutorial_WGFrame_5_Asset (Interface.Sprites.AS_Tutorial_WGFrame_5_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_5_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 232
//AS_Tutorial_WGFrame_6_Asset (Interface.Sprites.AS_Tutorial_WGFrame_6_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_6_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 233
//AS_Tutorial_WGFrame_7_Asset (Interface.Sprites.AS_Tutorial_WGFrame_7_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_7_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 234
//AS_Tutorial_WGFrame_8_Asset (Interface.Sprites.AS_Tutorial_WGFrame_8_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_8_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 235
//AS_Tutorial_WGFrame_9_Asset (Interface.Sprites.AS_Tutorial_WGFrame_9_Asset)
package Interface.Sprites {
import mx.core.*;
public class AS_Tutorial_WGFrame_9_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 236
//InterfaceEventsDispatcher (Interface.Sprites.InterfaceEventsDispatcher)
package Interface.Sprites {
import flash.events.*;
public class InterfaceEventsDispatcher extends EventDispatcher {
public static var MM_HELP:String = "mh";
public static var GOTO_GARAGE:String = "gg";
public static var RETRY:String = "rl";
public static var TREE_SON:String = "tn";
public static var WIN_GAME:String = "wg";
public static var BUY_AN_EXIT:String = "be";
public static var NEW_GAME:String = "ng";
public static var TRY_AGAIN:String = "ta";
public static var TREE_SOFF:String = "tf";
public static var CONT_GAME:String = "cg";
public static var HELP_EXIT:String = "he";
public static var MAIN_MENU:String = "mm";
public static var TREE_EXIT:String = "te";
public static var NEXT_LEVEL:String = "nl";
public static var NEW_LEVEL:String = "nel";
public function InterfaceEventsDispatcher(target:IEventDispatcher=null){
super();
}
}
}//package Interface.Sprites
Section 237
//UserInterface (Interface.Sprites.UserInterface)
package Interface.Sprites {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import Levels.*;
import Engine.Sprites.Sound.*;
import flash.text.*;
import flash.net.*;
import mx.core.*;
import flash.filters.*;
public class UserInterface extends Sprite {
public var MainMenu_LINK1_off:Sprite;
public var apples_count_text:TextField;
private var Garage_button_Stick_6_selected_Asset:Class;
public var Garage_button_Stick_6_bitmap:BitmapAsset;
public var Garage_button_Stick_1:Sprite;
public var Garage_button_Stick_3:Sprite;
public var Garage_button_Stick_4:Sprite;
public var Garage_button_Stick_5:Sprite;
public var MainMenu_LINK1_off_disabled_bitmap:BitmapAsset;
public var ChooseLevel_GARAGE_bitmap:BitmapAsset;
private var level_id_text:TextField;
public var ChooseLevel_GARAGE:Sprite;
private var Garage_button_Stick_1_Asset:Class;
public var MainMenu_LINK2_on_bitmap:BitmapAsset;
private var ChooseLevel_GO_glow_Asset:Class;
private var Garage_button_Stick_4_Asset:Class;
public var ChooseLevel_apple:Sprite;
private var ChooseLevel_lafler_Asset:Class;
public var Garage_button_Stick_6_selected:Sprite;
public var Garage_button_Stick_2:Sprite;
public var ChooseLevel_GO_bitmap:BitmapAsset;
public var ChooseLevel_dialog:Sprite;
private var Garage_button_Stick_4_selected_Asset:Class;
public var ChooseLevel_GO_glow_bitmap:BitmapAsset;
public var Garage_button_Stick_6:Sprite;
public var Garage_button_Stick_4_bitmap:BitmapAsset;
private var Garage_button_Stick_5_selected_Asset:Class;
public var ChooseLevel_NEXT_bitmap:BitmapAsset;
public var MainMenu_LINK1_off_bitmap:BitmapAsset;
public var Garage_button_Exit_selected_bitmap:BitmapAsset;
public var MainMenu_PLAY_on:Sprite;
public var ChooseLevel_NEXT:Sprite;
private var Garage_button_Buy_selected_Asset:Class;
private var Garage_button_Stick_6_Asset:Class;
public var Garage_button_Stick_1_HA:Sprite;
public var bought_tool:Number;// = 6
private var ChooseLevel_NEXT_Asset:Class;
private var Garage_button_Stick_2_selected_Asset:Class;
private var Garage_button_Stick_3_selected_Asset:Class;
private var MainMenu_LINK1_on_Asset:Class;
public var MainMenu_PLAY_off_bitmap:BitmapAsset;
public var Garage_button_Stick_2_bitmap:BitmapAsset;
public var fresh_apples:Number;// = 0
public var MainMenu_PLAY_on_bitmap:BitmapAsset;
public var Garage_button_Stick_1_selected:Sprite;
public var MainMenu_dialog:Sprite;
private var MainMenu_LINK2_off_Asset:Class;
public var fresh_apples_left:Number;// = 0
private var Garage_button_Stick_1_selected_Asset:Class;
private var Garage_button_Stick_3_Asset:Class;
public var B_apples_set_bitmap:BitmapAsset;
public var dispatcher:InterfaceEventsDispatcher;
private var MainMenu_Sponsor_on_Asset:Class;
private var upgrade_link_BlinkTimer:Timer;
public var selected_tool:Number;// = 0
private var Garage_button_Exit_selected_Asset:Class;
private var B_apples_set_Asset:Class;
private var Garage_button_Exit_Asset:Class;
public var Garage_button_Stick_3_selected:Sprite;
public var GarageBlinkTimerIteration:Number;// = 1
public var WinGame_dialog:Sprite;
public var ChooseLevel_GO:Sprite;
public var MainMenu_dialog_bitmap:BitmapAsset;
private var Garage_button_Buy_Asset:Class;
public var MainMenu_Sponsor_on_bitmap:BitmapAsset;
public var Garage_button_Buy_selected_bitmap:BitmapAsset;
public var ChooseLevel_GARAGE_glow_bitmap:BitmapAsset;
private var MainMenu_PLAY_off_Asset:Class;
private var upgrade_link_PNG:Class;
public var Garage_button_Stick_5_selected:Sprite;
public var MainMenu_Sponsor_on:Sprite;
public var Garage_dialog_bitmap:BitmapAsset;
private var Garage_dialog_Asset:Class;
public var Garage_button_Stick_5_bitmap:BitmapAsset;
private var MainMenu_dialog_Asset:Class;
public var Garage_button_Stick_1_selected_bitmap:BitmapAsset;
public var Garage_button_Stick_2_selected_bitmap:BitmapAsset;
public var Garage_button_Stick_3_selected_bitmap:BitmapAsset;
public var Garage_button_Stick_5_selected_bitmap:BitmapAsset;
public var ChooseLevel_apple_bitmap:BitmapAsset;
public var ChooseLevel_NEXT_glow:Sprite;
private var ChooseLevel_GARAGE_Asset:Class;
public var MainMenu_Sponsor_off_bitmap:BitmapAsset;
public var Garage_Stick_3:SimpleButton;
public var Garage_button_Stick_6_selected_bitmap:BitmapAsset;
public var upgrade_shown:Boolean;// = false
public var Garage_Stick_6:SimpleButton;
private var Garage_button_Stick_5_Asset:Class;
private var ChooseLevel_GO_Asset:Class;
public var Garage_button_Stick_4_selected_bitmap:BitmapAsset;
public var ChooseLevel_lafler_bitmap:BitmapAsset;
public var MainMenu_LINK1_on:Sprite;
public var Garage_Stick_1:SimpleButton;
public var Garage_Stick_2:SimpleButton;
public var Garage_Stick_5:SimpleButton;
public var Garage_dialog:Sprite;
private var LeveL:Levels;
public var garage_text:TextField;
public var ChooseLevel_NEXT_glow_bitmap:BitmapAsset;
private var bee_swf:Class;
private var MainMenu_Sponsor_off_Asset:Class;
public var WinGame_dialog_bitmap:BitmapAsset;
public var Background_dialog:Sprite;
public var level_marker:Number;// = 0
public var label_array:Array;
private var Garage_button_Stick_2_Asset:Class;
public var MainMenu_LINK1_on_bitmap:BitmapAsset;
public var pic_array:Array;
public var Garage_button_Stick_3_bitmap:BitmapAsset;
public var BlinkTimer:Timer;
private var ChooseLevel_back_Asset:Class;
public var MainMenu_PLAY_off:Sprite;
private var MainMenu_LINK1_off_disabled_Asset:Class;
public var Garage_Stick_4:SimpleButton;
public var Garage_button_Buy_bitmap:BitmapAsset;
public var Garage_button_Exit:SimpleButton;
private var Garage_button_Buy_disabled_Asset:Class;
public var LINK1:SimpleButton;
public var MainMenu_LINK2_off:Sprite;
public var Garage_button_Stick_1_HA_bitmap:BitmapAsset;
private var ChooseLevel_GARAGE_glow_Asset:Class;
public var MainMenu_LINK2_on:Sprite;
private var MainMenu_LINK2_on_Asset:Class;
public var Garage_button_Stick_1_bitmap:BitmapAsset;
public var passing_stat:Number;// = 0
public var Garage_button_Stick_2_selected:Sprite;
public var MainMenu_LINK2_off_bitmap:BitmapAsset;
private var ChooseLevel_NEXT_glow_Asset:Class;
public var MainMenu_Sponsor_off:Sprite;
private var MainMenu_LINK1_off_Asset:Class;
public var ChooseLevel_GO_glow:Sprite;
public var Garage_button_Exit_bitmap:BitmapAsset;
public var ChooseLevel_back_bitmap:BitmapAsset;
public var Garage_button_Buy:SimpleButton;
public var MainMenu_LINK1_off_disabled:Sprite;
public var ChooseLevel_lafler:Sprite;
public var _sharedObject:SharedObject;
public var Garage_button_Buy_disabled_bitmap:BitmapAsset;
private var WinGame_dialog_Asset:Class;
private var upgrade_link_BIT:BitmapAsset;
private var engineSound:EngineSound;
public var GarageBlinkTimer:Timer;
public var Garage_button_Stick_4_selected:Sprite;
public var ChooseLevel_GARAGE_glow:Sprite;
private var MainMenu_PLAY_on_Asset:Class;
public var LevelNumArray:Array;
private var ChooseLevel_apple_Asset:Class;
public var upgrade_never_shown:Boolean;// = true
private var Garage_button_Stick_1_HA_Asset:Class;
public function UserInterface(){
engineSound = new EngineSound();
dispatcher = new InterfaceEventsDispatcher();
garage_text = new TextField();
level_id_text = new TextField();
apples_count_text = new TextField();
LevelNumArray = new Array();
pic_array = new Array();
label_array = new Array();
BlinkTimer = new Timer(300, 4);
GarageBlinkTimer = new Timer(100);
Background_dialog = new Sprite();
WinGame_dialog = new Sprite();
WinGame_dialog_Asset = UserInterface_WinGame_dialog_Asset;
bee_swf = UserInterface_bee_swf;
MainMenu_dialog = new Sprite();
MainMenu_dialog_Asset = UserInterface_MainMenu_dialog_Asset;
MainMenu_PLAY_on = new Sprite();
MainMenu_PLAY_on_Asset = UserInterface_MainMenu_PLAY_on_Asset;
MainMenu_PLAY_off = new Sprite();
MainMenu_PLAY_off_Asset = UserInterface_MainMenu_PLAY_off_Asset;
MainMenu_LINK1_on = new Sprite();
MainMenu_LINK1_on_Asset = UserInterface_MainMenu_LINK1_on_Asset;
MainMenu_LINK1_off_disabled = new Sprite();
MainMenu_LINK1_off_disabled_Asset = UserInterface_MainMenu_LINK1_off_disabled_Asset;
MainMenu_LINK1_off = new Sprite();
MainMenu_LINK1_off_Asset = UserInterface_MainMenu_LINK1_off_Asset;
MainMenu_LINK2_on = new Sprite();
MainMenu_LINK2_on_Asset = UserInterface_MainMenu_LINK2_on_Asset;
MainMenu_LINK2_off = new Sprite();
MainMenu_LINK2_off_Asset = UserInterface_MainMenu_LINK2_off_Asset;
MainMenu_Sponsor_on = new Sprite();
MainMenu_Sponsor_on_Asset = UserInterface_MainMenu_Sponsor_on_Asset;
MainMenu_Sponsor_off = new Sprite();
MainMenu_Sponsor_off_Asset = UserInterface_MainMenu_Sponsor_off_Asset;
upgrade_link_PNG = UserInterface_upgrade_link_PNG;
upgrade_link_BlinkTimer = new Timer(300);
ChooseLevel_dialog = new Sprite();
ChooseLevel_back_Asset = UserInterface_ChooseLevel_back_Asset;
ChooseLevel_apple = new Sprite();
ChooseLevel_apple_Asset = UserInterface_ChooseLevel_apple_Asset;
ChooseLevel_lafler = new Sprite();
ChooseLevel_lafler_Asset = UserInterface_ChooseLevel_lafler_Asset;
ChooseLevel_GO = new Sprite();
ChooseLevel_GO_Asset = UserInterface_ChooseLevel_GO_Asset;
ChooseLevel_NEXT = new Sprite();
ChooseLevel_NEXT_Asset = UserInterface_ChooseLevel_NEXT_Asset;
ChooseLevel_GARAGE = new Sprite();
ChooseLevel_GARAGE_Asset = UserInterface_ChooseLevel_GARAGE_Asset;
ChooseLevel_GO_glow = new Sprite();
ChooseLevel_GO_glow_Asset = UserInterface_ChooseLevel_GO_glow_Asset;
ChooseLevel_NEXT_glow = new Sprite();
ChooseLevel_NEXT_glow_Asset = UserInterface_ChooseLevel_NEXT_glow_Asset;
ChooseLevel_GARAGE_glow = new Sprite();
ChooseLevel_GARAGE_glow_Asset = UserInterface_ChooseLevel_GARAGE_glow_Asset;
Garage_dialog = new Sprite();
Garage_dialog_Asset = UserInterface_Garage_dialog_Asset;
Garage_button_Stick_1_HA = new Sprite();
Garage_button_Stick_1_HA_Asset = UserInterface_Garage_button_Stick_1_HA_Asset;
Garage_button_Stick_1 = new Sprite();
Garage_button_Stick_1_Asset = UserInterface_Garage_button_Stick_1_Asset;
Garage_button_Stick_1_selected = new Sprite();
Garage_button_Stick_1_selected_Asset = UserInterface_Garage_button_Stick_1_selected_Asset;
Garage_button_Stick_2 = new Sprite();
Garage_button_Stick_2_Asset = UserInterface_Garage_button_Stick_2_Asset;
Garage_button_Stick_2_selected = new Sprite();
Garage_button_Stick_2_selected_Asset = UserInterface_Garage_button_Stick_2_selected_Asset;
Garage_button_Stick_3 = new Sprite();
Garage_button_Stick_3_Asset = UserInterface_Garage_button_Stick_3_Asset;
Garage_button_Stick_3_selected = new Sprite();
Garage_button_Stick_3_selected_Asset = UserInterface_Garage_button_Stick_3_selected_Asset;
Garage_button_Stick_4 = new Sprite();
Garage_button_Stick_4_Asset = UserInterface_Garage_button_Stick_4_Asset;
Garage_button_Stick_4_selected = new Sprite();
Garage_button_Stick_4_selected_Asset = UserInterface_Garage_button_Stick_4_selected_Asset;
Garage_button_Stick_5 = new Sprite();
Garage_button_Stick_5_Asset = UserInterface_Garage_button_Stick_5_Asset;
Garage_button_Stick_5_selected = new Sprite();
Garage_button_Stick_5_selected_Asset = UserInterface_Garage_button_Stick_5_selected_Asset;
Garage_button_Stick_6 = new Sprite();
Garage_button_Stick_6_Asset = UserInterface_Garage_button_Stick_6_Asset;
Garage_button_Stick_6_selected = new Sprite();
Garage_button_Stick_6_selected_Asset = UserInterface_Garage_button_Stick_6_selected_Asset;
Garage_button_Buy = new SimpleButton();
Garage_button_Buy_Asset = UserInterface_Garage_button_Buy_Asset;
Garage_button_Buy_bitmap = new Garage_button_Buy_Asset();
Garage_button_Buy_selected_Asset = UserInterface_Garage_button_Buy_selected_Asset;
Garage_button_Buy_selected_bitmap = new Garage_button_Buy_selected_Asset();
Garage_button_Buy_disabled_Asset = UserInterface_Garage_button_Buy_disabled_Asset;
Garage_button_Buy_disabled_bitmap = new Garage_button_Buy_disabled_Asset();
Garage_button_Exit = new SimpleButton();
Garage_button_Exit_Asset = UserInterface_Garage_button_Exit_Asset;
Garage_button_Exit_selected_Asset = UserInterface_Garage_button_Exit_selected_Asset;
B_apples_set_Asset = UserInterface_B_apples_set_Asset;
LINK1 = new SimpleButton();
super();
_createMainMenu();
_createGarage();
_createBackground();
}
public function showBackground(level_id:Number, apples_count:Number):void{
level_id_text.text = (" Level " + level_id);
Background_dialog.visible = true;
}
private function _stick_5_out(e:MouseEvent):void{
if (selected_tool != 5){
Garage_button_Stick_5_selected.visible = false;
Garage_button_Stick_5.visible = true;
};
}
public function onGarageBlinkTimerComplete(e:TimerEvent):void{
garage_text.textColor = 0x444444;
}
public function showWinGame():void{
WinGame_dialog_bitmap = new WinGame_dialog_Asset();
WinGame_dialog_bitmap.smoothing = true;
WinGame_dialog.addChild(WinGame_dialog_bitmap);
WinGame_dialog.addEventListener(MouseEvent.CLICK, _clickOnWingame);
WinGame_dialog.visible = true;
}
private function _stick_4_over(e:MouseEvent):void{
Garage_button_Stick_4.visible = false;
Garage_button_Stick_4_selected.visible = true;
}
public function showChooseLevel(level_id:Number, stat:Number):void{
var _mod:Number;
var apples_text:TextField;
var choose_level_go_bitmap:BitmapAsset;
var choose_level_go_glow_bitmap:BitmapAsset;
var go_button:SimpleButton;
passing_stat = stat;
level_marker = level_id;
ChooseLevel_dialog = new Sprite();
pic_array = new Array();
label_array = new Array();
BlinkTimer = new Timer(200, 6);
BlinkTimer.addEventListener(TimerEvent.TIMER, BlinkTimerEvent);
BlinkTimer.addEventListener(TimerEvent.TIMER_COMPLETE, BlinkTimer_CompleteEvent);
ChooseLevel_dialog.graphics.beginFill(0xFFFFFF, 0.7);
ChooseLevel_dialog.graphics.drawRect(0, 0, 800, 640);
ChooseLevel_dialog.graphics.endFill();
ChooseLevel_back_bitmap = new ChooseLevel_back_Asset();
ChooseLevel_back_bitmap.smoothing = true;
ChooseLevel_dialog.addChild(ChooseLevel_back_bitmap);
super.addChild(ChooseLevel_dialog);
ChooseLevel_dialog.visible = true;
var _x:Number = 180;
var _y:Number = 100;
var _glow:GlowFilter = new GlowFilter(0xFFFFFF, 1, 2, 2, 15, BitmapFilterQuality.HIGH);
var _shadow:DropShadowFilter = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH);
var format2:TextFormat = new TextFormat();
format2.font = "CooperStdBlack";
format2.color = 29238;
format2.size = 26;
var i:int;
while (i < 24) {
_mod = Math.floor((i / 6));
if (i < (level_id - 2)){
pic_array.push(new ChooseLevel_lafler_Asset());
pic_array[(pic_array.length - 1)].smoothing = true;
pic_array[(pic_array.length - 1)].y = ((_y + (_mod * 80)) + 10);
pic_array[(pic_array.length - 1)].x = ((_x + ((i - (_mod * 6)) * 85)) + 10);
} else {
pic_array.push(new ChooseLevel_apple_Asset());
pic_array[(pic_array.length - 1)].smoothing = true;
pic_array[(pic_array.length - 1)].y = (_y + (_mod * 80));
pic_array[(pic_array.length - 1)].x = (_x + ((i - (_mod * 6)) * 85));
apples_text = new TextField();
apples_text.embedFonts = true;
apples_text.antiAliasType = AntiAliasType.ADVANCED;
apples_text.autoSize = TextFieldAutoSize.LEFT;
apples_text.defaultTextFormat = format2;
apples_text.text = ("" + (i + 1));
apples_text.selectable = false;
apples_text.mouseEnabled = false;
if ((i + 1) < 10){
apples_text.x = (pic_array[(pic_array.length - 1)].x + 22);
} else {
apples_text.x = (pic_array[(pic_array.length - 1)].x + 17);
};
apples_text.y = (pic_array[(pic_array.length - 1)].y + 26);
apples_text.filters = [_glow, _shadow];
label_array.push(apples_text);
};
ChooseLevel_dialog.addChild(pic_array[i]);
i++;
};
if (!passing_stat){
choose_level_go_bitmap = new ChooseLevel_GO_Asset();
choose_level_go_bitmap.smoothing = true;
ChooseLevel_GO.addChild(choose_level_go_bitmap);
choose_level_go_glow_bitmap = new ChooseLevel_GO_glow_Asset();
choose_level_go_glow_bitmap.smoothing = true;
ChooseLevel_GO_glow.addChild(choose_level_go_glow_bitmap);
go_button = new SimpleButton(ChooseLevel_GO, ChooseLevel_GO_glow, ChooseLevel_GO, ChooseLevel_GO);
go_button.x = 600;
go_button.y = 460;
ChooseLevel_dialog.addChild(go_button);
go_button.addEventListener(MouseEvent.CLICK, clickOnGo);
} else {
BlinkTimer.start();
};
var ai:int;
while (ai < label_array.length) {
ChooseLevel_dialog.addChild(label_array[ai]);
ai++;
};
}
private function _stick_5_click(e:MouseEvent):void{
Garage_Stick_5.upState = Garage_button_Stick_5_selected;
Garage_Stick_2.upState = Garage_button_Stick_2;
Garage_Stick_3.upState = Garage_button_Stick_3;
Garage_Stick_4.upState = Garage_button_Stick_4;
Garage_Stick_1.upState = Garage_button_Stick_1;
Garage_Stick_6.upState = Garage_button_Stick_6;
selected_tool = 5;
Garage_button_Buy.enabled = true;
Garage_button_Buy.upState = Garage_button_Buy_bitmap;
}
private function _stick_1_out(e:MouseEvent):void{
if (selected_tool != 1){
Garage_button_Stick_1_selected.visible = false;
Garage_button_Stick_1.visible = true;
};
}
public function _showGarage():void{
Garage_button_Buy.enabled = false;
Garage_button_Buy.upState = Garage_button_Buy_disabled_bitmap;
Garage_Stick_1.upState = Garage_button_Stick_1;
Garage_Stick_2.upState = Garage_button_Stick_2;
Garage_Stick_3.upState = Garage_button_Stick_3;
Garage_Stick_4.upState = Garage_button_Stick_4;
Garage_Stick_5.upState = Garage_button_Stick_5;
Garage_Stick_6.upState = Garage_button_Stick_6;
selected_tool = 0;
Garage_dialog.visible = true;
}
public function BlinkTimer_CompleteEvent(e:TimerEvent):void{
var _mod:Number;
var _glow:GlowFilter;
var _shadow:DropShadowFilter;
var format2:TextFormat;
var apples_text:TextField;
trace("level marker = ", level_marker);
var _x:Number = 180;
var _y:Number = 100;
_mod = Math.floor(((level_marker - 2) / 6));
if (passing_stat > 0){
ChooseLevel_dialog.removeChild(pic_array[(level_marker - 2)]);
ChooseLevel_dialog.removeChild(label_array[0]);
pic_array[(level_marker - 2)] = new ChooseLevel_lafler_Asset();
pic_array[(level_marker - 2)].smoothing = true;
ChooseLevel_dialog.addChild(pic_array[(level_marker - 2)]);
pic_array[(level_marker - 2)].y = ((_y + (_mod * 80)) + 10);
pic_array[(level_marker - 2)].x = ((_x + (((level_marker - 2) - (_mod * 6)) * 85)) + 10);
pic_array[(level_marker - 2)].visible = true;
} else {
_mod = Math.floor(((level_marker - 3) / 6));
ChooseLevel_dialog.removeChild(pic_array[(level_marker - 3)]);
pic_array[(level_marker - 3)] = new ChooseLevel_apple_Asset();
pic_array[(level_marker - 3)].smoothing = true;
ChooseLevel_dialog.addChild(pic_array[(level_marker - 3)]);
pic_array[(level_marker - 3)].y = (_y + (_mod * 80));
pic_array[(level_marker - 3)].x = (_x + (((level_marker - 3) - (_mod * 6)) * 85));
pic_array[(level_marker - 3)].visible = true;
_glow = new GlowFilter(0xFFFFFF, 1, 2, 2, 15, BitmapFilterQuality.HIGH);
_shadow = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH);
format2 = new TextFormat();
format2.font = "CooperStdBlack";
format2.color = 29238;
format2.size = 26;
apples_text = new TextField();
apples_text.embedFonts = true;
apples_text.antiAliasType = AntiAliasType.ADVANCED;
apples_text.autoSize = TextFieldAutoSize.LEFT;
apples_text.defaultTextFormat = format2;
apples_text.text = ("" + (level_marker - 2));
apples_text.selectable = false;
apples_text.mouseEnabled = false;
if ((level_marker - 2) < 10){
apples_text.x = ((_x + (((level_marker - 3) - (_mod * 6)) * 85)) + 22);
} else {
apples_text.x = ((_x + (((level_marker - 3) - (_mod * 6)) * 85)) + 17);
};
apples_text.y = ((_y + (_mod * 80)) + 26);
apples_text.filters = [_glow, _shadow];
label_array.push(apples_text);
ChooseLevel_dialog.addChild(label_array[(label_array.length - 1)]);
};
var choose_level_next_bitmap:BitmapAsset = new ChooseLevel_NEXT_Asset();
choose_level_next_bitmap.smoothing = true;
ChooseLevel_NEXT.addChild(choose_level_next_bitmap);
var choose_level_next_glow_bitmap:BitmapAsset = new ChooseLevel_NEXT_glow_Asset();
choose_level_next_glow_bitmap.smoothing = true;
ChooseLevel_NEXT_glow.addChild(choose_level_next_glow_bitmap);
var next_button:SimpleButton = new SimpleButton(ChooseLevel_NEXT, ChooseLevel_NEXT_glow, ChooseLevel_NEXT, ChooseLevel_NEXT);
next_button.x = 580;
next_button.y = 460;
ChooseLevel_dialog.addChild(next_button);
next_button.addEventListener(MouseEvent.CLICK, clickOnNext);
var choose_level_garage_bitmap:BitmapAsset = new ChooseLevel_GARAGE_Asset();
choose_level_garage_bitmap.smoothing = true;
ChooseLevel_GARAGE.addChild(choose_level_garage_bitmap);
var choose_level_garage_glow_bitmap:BitmapAsset = new ChooseLevel_GARAGE_glow_Asset();
choose_level_garage_glow_bitmap.smoothing = true;
ChooseLevel_GARAGE_glow.addChild(choose_level_garage_glow_bitmap);
var garage_button:SimpleButton = new SimpleButton(ChooseLevel_GARAGE, ChooseLevel_GARAGE_glow, ChooseLevel_GARAGE, ChooseLevel_GARAGE);
garage_button.x = 300;
garage_button.y = 10;
ChooseLevel_dialog.addChild(garage_button);
garage_button.addEventListener(MouseEvent.CLICK, clickOnGarage);
if ((((level_marker == 2)) && (upgrade_never_shown))){
upgrade_link_BIT = new upgrade_link_PNG();
upgrade_link_BIT.smoothing = true;
upgrade_link_BIT.x = 490;
upgrade_link_BIT.y = 70;
ChooseLevel_dialog.addChild(upgrade_link_BIT);
upgrade_link_BlinkTimer.addEventListener(TimerEvent.TIMER, upgrade_linkOnBlink);
upgrade_link_BlinkTimer.start();
upgrade_shown = true;
upgrade_never_shown = false;
};
}
private function _stick_1_over(e:MouseEvent):void{
Garage_button_Stick_1.visible = false;
Garage_button_Stick_1_selected.visible = true;
}
public function _clickOnWingame(e:MouseEvent):void{
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.WIN_GAME));
}
public function _showMM():void{
_sharedObject = SharedObject.getLocal("AS_GameStat");
LeveL = new Levels(0);
LeveL.levelID = (_sharedObject.data.levelID - 1);
if ((((LeveL.levelID < 24)) && ((LeveL.levelID > 0)))){
LINK1.upState = MainMenu_LINK1_off_bitmap;
LINK1.hitTestState = MainMenu_LINK1_on_bitmap;
} else {
LINK1.upState = MainMenu_LINK1_off_disabled_bitmap;
LINK1.hitTestState = null;
};
MainMenu_dialog.visible = true;
}
private function _stick_2_click(e:MouseEvent):void{
Garage_Stick_2.upState = Garage_button_Stick_2_selected;
Garage_Stick_1.upState = Garage_button_Stick_1;
Garage_Stick_3.upState = Garage_button_Stick_3;
Garage_Stick_4.upState = Garage_button_Stick_4;
Garage_Stick_5.upState = Garage_button_Stick_5;
Garage_Stick_6.upState = Garage_button_Stick_6;
selected_tool = 2;
Garage_button_Buy.enabled = true;
Garage_button_Buy.upState = Garage_button_Buy_bitmap;
}
public function showDialog(name:String):void{
Background_dialog.visible = false;
switch (name){
case "MainMenu":
_showMM();
break;
case "Garage":
garage_text.text = ("" + fresh_apples);
_showGarage();
break;
};
}
private function _stick_4_out(e:MouseEvent):void{
if (selected_tool != 4){
Garage_button_Stick_4_selected.visible = false;
Garage_button_Stick_4.visible = true;
};
}
public function _Exit_click_garage(e:MouseEvent):void{
Garage_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT));
}
public function BlinkTimerEvent(e:TimerEvent):void{
if (passing_stat > 0){
label_array[0].visible = !(label_array[0].visible);
pic_array[(level_marker - 2)].visible = !(pic_array[(level_marker - 2)].visible);
} else {
pic_array[(level_marker - 3)].visible = !(pic_array[(level_marker - 3)].visible);
};
}
public function clickOnGo(e:MouseEvent):void{
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.NEW_LEVEL));
}
private function _newGameClick(e:MouseEvent):void{
MainMenu_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.NEW_GAME));
}
private function _createChooseLevel():void{
ChooseLevel_dialog.graphics.beginFill(0xFFFFFF, 0.7);
ChooseLevel_dialog.graphics.drawRect(0, 0, 800, 640);
ChooseLevel_dialog.graphics.endFill();
ChooseLevel_back_bitmap = new ChooseLevel_back_Asset();
ChooseLevel_back_bitmap.smoothing = true;
ChooseLevel_dialog.addChild(ChooseLevel_back_bitmap);
ChooseLevel_dialog.visible = false;
super.addChild(ChooseLevel_dialog);
}
private function _tutorialClick(e:MouseEvent):void{
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.MM_HELP));
}
private function _Buy_click(e:MouseEvent):void{
if (Garage_button_Buy.enabled){
switch (selected_tool){
case 1:
if (fresh_apples > 4){
fresh_apples_left = fresh_apples;
bought_tool = 1;
Garage_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT));
} else {
GarageBlinkTimerIteration = 1;
GarageBlinkTimer.start();
engineSound.garage_no();
};
break;
case 2:
if (fresh_apples > 49){
fresh_apples_left = fresh_apples;
bought_tool = 2;
Garage_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT));
} else {
GarageBlinkTimerIteration = 1;
GarageBlinkTimer.start();
engineSound.garage_no();
};
break;
case 3:
if (fresh_apples > 99){
fresh_apples_left = fresh_apples;
bought_tool = 3;
Garage_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT));
} else {
GarageBlinkTimerIteration = 1;
GarageBlinkTimer.start();
engineSound.garage_no();
};
break;
case 4:
if (fresh_apples > 199){
fresh_apples_left = fresh_apples;
bought_tool = 4;
Garage_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT));
} else {
GarageBlinkTimerIteration = 1;
GarageBlinkTimer.start();
engineSound.garage_no();
};
break;
case 5:
if (fresh_apples > 499){
fresh_apples_left = fresh_apples;
bought_tool = 5;
Garage_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT));
} else {
GarageBlinkTimerIteration = 1;
GarageBlinkTimer.start();
engineSound.garage_no();
};
break;
case 6:
if (fresh_apples > 0){
fresh_apples_left = fresh_apples;
bought_tool = 6;
Garage_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.BUY_AN_EXIT));
} else {
GarageBlinkTimerIteration = 1;
GarageBlinkTimer.start();
engineSound.garage_no();
};
break;
};
};
}
private function _stick_5_over(e:MouseEvent):void{
Garage_button_Stick_5.visible = false;
Garage_button_Stick_5_selected.visible = true;
}
private function _stick_4_click(e:MouseEvent):void{
Garage_Stick_4.upState = Garage_button_Stick_4_selected;
Garage_Stick_2.upState = Garage_button_Stick_2;
Garage_Stick_3.upState = Garage_button_Stick_3;
Garage_Stick_1.upState = Garage_button_Stick_1;
Garage_Stick_5.upState = Garage_button_Stick_5;
Garage_Stick_6.upState = Garage_button_Stick_6;
selected_tool = 4;
Garage_button_Buy.enabled = true;
Garage_button_Buy.upState = Garage_button_Buy_bitmap;
}
private function _stick_3_out(e:MouseEvent):void{
if (selected_tool != 3){
Garage_button_Stick_3_selected.visible = false;
Garage_button_Stick_3.visible = true;
};
}
private function _stick_2_over(e:MouseEvent):void{
Garage_button_Stick_2.visible = false;
Garage_button_Stick_2_selected.visible = true;
}
private function _continueGameClick(e:MouseEvent):void{
MainMenu_dialog.visible = false;
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.CONT_GAME));
}
private function _stick_1_click(e:MouseEvent):void{
Garage_Stick_1.upState = Garage_button_Stick_1_selected;
Garage_Stick_2.upState = Garage_button_Stick_2;
Garage_Stick_3.upState = Garage_button_Stick_3;
Garage_Stick_4.upState = Garage_button_Stick_4;
Garage_Stick_5.upState = Garage_button_Stick_5;
Garage_Stick_6.upState = Garage_button_Stick_6;
selected_tool = 1;
Garage_button_Buy.enabled = true;
Garage_button_Buy.upState = Garage_button_Buy_bitmap;
}
public function _createGarage():void{
Garage_button_Buy_bitmap.smoothing = true;
Garage_button_Buy_selected_bitmap.smoothing = true;
Garage_button_Buy_disabled_bitmap.smoothing = true;
GarageBlinkTimer.addEventListener(TimerEvent.TIMER, onGarageBlinkTimer);
GarageBlinkTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onGarageBlinkTimerComplete);
Garage_dialog_bitmap = new Garage_dialog_Asset();
Garage_dialog_bitmap.smoothing = true;
Garage_dialog.addChild(Garage_dialog_bitmap);
Garage_dialog.visible = false;
super.addChild(Garage_dialog);
Garage_button_Stick_1_bitmap = new Garage_button_Stick_1_Asset();
Garage_button_Stick_1_bitmap.smoothing = true;
Garage_button_Stick_1.addChild(Garage_button_Stick_1_bitmap);
Garage_button_Stick_1_HA_bitmap = new Garage_button_Stick_1_HA_Asset();
Garage_button_Stick_1_HA_bitmap.smoothing = true;
Garage_button_Stick_1_HA_bitmap.rotation = 30;
Garage_button_Stick_1_HA_bitmap.x = (Garage_button_Stick_1_HA_bitmap.x + 80);
Garage_button_Stick_1_HA.addChild(Garage_button_Stick_1_HA_bitmap);
Garage_button_Stick_1_selected_bitmap = new Garage_button_Stick_1_selected_Asset();
Garage_button_Stick_1_selected_bitmap.smoothing = true;
Garage_button_Stick_1_selected.addChild(Garage_button_Stick_1_selected_bitmap);
Garage_Stick_1 = new SimpleButton(Garage_button_Stick_1, Garage_button_Stick_1_selected, Garage_button_Stick_1_selected, Garage_button_Stick_1_HA);
Garage_Stick_1.addEventListener(MouseEvent.CLICK, _stick_1_click);
Garage_Stick_1.x = 210;
Garage_Stick_1.y = 373;
Garage_button_Stick_2_bitmap = new Garage_button_Stick_2_Asset();
Garage_button_Stick_2_bitmap.smoothing = true;
Garage_button_Stick_2.addChild(Garage_button_Stick_2_bitmap);
Garage_button_Stick_2_selected_bitmap = new Garage_button_Stick_2_selected_Asset();
Garage_button_Stick_2_selected_bitmap.smoothing = true;
Garage_button_Stick_2_selected.addChild(Garage_button_Stick_2_selected_bitmap);
Garage_Stick_2 = new SimpleButton(Garage_button_Stick_2, Garage_button_Stick_2_selected, Garage_button_Stick_2_selected, Garage_button_Stick_2_selected);
Garage_Stick_2.addEventListener(MouseEvent.CLICK, _stick_2_click);
Garage_Stick_2.x = 147;
Garage_Stick_2.y = 344;
Garage_dialog.addChild(Garage_Stick_2);
Garage_button_Stick_3_bitmap = new Garage_button_Stick_3_Asset();
Garage_button_Stick_3_bitmap.smoothing = true;
Garage_button_Stick_3.addChild(Garage_button_Stick_3_bitmap);
Garage_button_Stick_3_selected_bitmap = new Garage_button_Stick_3_selected_Asset();
Garage_button_Stick_3_selected_bitmap.smoothing = true;
Garage_button_Stick_3_selected.addChild(Garage_button_Stick_3_selected_bitmap);
Garage_Stick_3 = new SimpleButton(Garage_button_Stick_3, Garage_button_Stick_3_selected, Garage_button_Stick_3_selected, Garage_button_Stick_3_selected);
Garage_Stick_3.addEventListener(MouseEvent.CLICK, _stick_3_click);
Garage_Stick_3.x = 312;
Garage_Stick_3.y = 223;
Garage_dialog.addChild(Garage_Stick_3);
Garage_button_Stick_4_bitmap = new Garage_button_Stick_4_Asset();
Garage_button_Stick_4_bitmap.smoothing = true;
Garage_button_Stick_4.addChild(Garage_button_Stick_4_bitmap);
Garage_button_Stick_4_selected_bitmap = new Garage_button_Stick_4_selected_Asset();
Garage_button_Stick_4_selected_bitmap.smoothing = true;
Garage_button_Stick_4_selected.addChild(Garage_button_Stick_4_selected_bitmap);
Garage_Stick_4 = new SimpleButton(Garage_button_Stick_4, Garage_button_Stick_4_selected, Garage_button_Stick_4_selected, Garage_button_Stick_4_selected);
Garage_Stick_4.addEventListener(MouseEvent.CLICK, _stick_4_click);
Garage_Stick_4.x = 477;
Garage_Stick_4.y = 370;
Garage_dialog.addChild(Garage_Stick_4);
Garage_button_Stick_5_bitmap = new Garage_button_Stick_5_Asset();
Garage_button_Stick_5_bitmap.smoothing = true;
Garage_button_Stick_5.addChild(Garage_button_Stick_5_bitmap);
Garage_button_Stick_5_selected_bitmap = new Garage_button_Stick_5_selected_Asset();
Garage_button_Stick_5_selected_bitmap.smoothing = true;
Garage_button_Stick_5_selected.addChild(Garage_button_Stick_5_selected_bitmap);
Garage_Stick_5 = new SimpleButton(Garage_button_Stick_5, Garage_button_Stick_5_selected, Garage_button_Stick_5_selected, Garage_button_Stick_5_selected);
Garage_Stick_5.addEventListener(MouseEvent.CLICK, _stick_5_click);
Garage_Stick_5.x = 145;
Garage_Stick_5.y = 130;
Garage_dialog.addChild(Garage_Stick_5);
Garage_button_Stick_6_bitmap = new Garage_button_Stick_6_Asset();
Garage_button_Stick_6_bitmap.smoothing = true;
Garage_button_Stick_6.addChild(Garage_button_Stick_6_bitmap);
Garage_button_Stick_6_selected_bitmap = new Garage_button_Stick_6_selected_Asset();
Garage_button_Stick_6_selected_bitmap.smoothing = true;
Garage_button_Stick_6_selected.addChild(Garage_button_Stick_6_selected_bitmap);
Garage_Stick_6 = new SimpleButton(Garage_button_Stick_6, Garage_button_Stick_6_selected, Garage_button_Stick_6_selected, Garage_button_Stick_6_selected);
Garage_Stick_6.addEventListener(MouseEvent.CLICK, _stick_6_click);
Garage_Stick_6.x = 157;
Garage_Stick_6.y = 535;
Garage_dialog.addChild(Garage_Stick_6);
Garage_dialog.addChild(Garage_Stick_1);
Garage_button_Buy.enabled = false;
Garage_button_Buy.upState = Garage_button_Buy_disabled_bitmap;
Garage_button_Buy.overState = Garage_button_Buy_selected_bitmap;
Garage_button_Buy.downState = Garage_button_Buy_selected_bitmap;
Garage_button_Buy.hitTestState = Garage_button_Buy_selected_bitmap;
Garage_button_Buy.x = 540;
Garage_button_Buy.y = 20;
Garage_button_Buy.addEventListener(MouseEvent.CLICK, _Buy_click);
Garage_dialog.addChild(Garage_button_Buy);
Garage_button_Exit_bitmap = new Garage_button_Exit_Asset();
Garage_button_Exit_bitmap.smoothing = true;
Garage_button_Exit_selected_bitmap = new Garage_button_Exit_selected_Asset();
Garage_button_Exit_selected_bitmap.smoothing = true;
Garage_button_Exit.upState = Garage_button_Exit_bitmap;
Garage_button_Exit.overState = Garage_button_Exit_selected_bitmap;
Garage_button_Exit.downState = Garage_button_Exit_selected_bitmap;
Garage_button_Exit.hitTestState = Garage_button_Exit_selected_bitmap;
Garage_button_Exit.x = 50;
Garage_button_Exit.y = 20;
Garage_button_Exit.addEventListener(MouseEvent.CLICK, _Exit_click_garage);
Garage_dialog.addChild(Garage_button_Exit);
var _glow:GlowFilter = new GlowFilter(0xF0F0F0, 1, 2, 2, 15, BitmapFilterQuality.HIGH);
var _shadow:DropShadowFilter = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH);
var format2:TextFormat = new TextFormat();
format2.font = "CooperStdBlack";
format2.color = 0x444444;
format2.size = 26;
garage_text.filters = [_glow];
var _local2 = garage_text;
with (_local2) {
embedFonts = true;
antiAliasType = AntiAliasType.ADVANCED;
autoSize = TextFieldAutoSize.LEFT;
defaultTextFormat = format2;
selectable = false;
mouseEnabled = false;
x = 565;
y = 175;
width = 495;
height = 61;
};
Garage_dialog.addChild(garage_text);
}
public function clickOnNext(e:MouseEvent):void{
if (upgrade_shown){
upgrade_shown = false;
ChooseLevel_dialog.removeChild(upgrade_link_BIT);
upgrade_link_BlinkTimer.stop();
upgrade_link_BlinkTimer.removeEventListener(TimerEvent.TIMER, upgrade_linkOnBlink);
};
if (passing_stat > 0){
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.NEXT_LEVEL));
} else {
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.TRY_AGAIN));
};
}
public function showLevelNum(level_num:Number):void{
var n100:Number = Math.round((level_num / 100));
var n10:Number = Math.round((level_num / 10));
var n1:Number = Math.round((level_num / 1));
if (n100){
};
}
public function clickOnGarage(e:MouseEvent):void{
if (upgrade_shown){
upgrade_shown = false;
ChooseLevel_dialog.removeChild(upgrade_link_BIT);
upgrade_link_BlinkTimer.stop();
upgrade_link_BlinkTimer.removeEventListener(TimerEvent.TIMER, upgrade_linkOnBlink);
};
dispatcher.dispatchEvent(new Event(InterfaceEventsDispatcher.GOTO_GARAGE));
}
private function _stick_6_click(e:MouseEvent):void{
Garage_Stick_6.upState = Garage_button_Stick_6_selected;
Garage_Stick_2.upState = Garage_button_Stick_2;
Garage_Stick_3.upState = Garage_button_Stick_3;
Garage_Stick_4.upState = Garage_button_Stick_4;
Garage_Stick_5.upState = Garage_button_Stick_5;
Garage_Stick_1.upState = Garage_button_Stick_1;
selected_tool = 6;
Garage_button_Buy.enabled = true;
Garage_button_Buy.upState = Garage_button_Buy_bitmap;
}
private function clickOnSponsor(e:MouseEvent):void{
navigateToURL(new URLRequest("http://www.gamebeearcade.com/"), "_blank");
}
private function _stick_6_out(e:MouseEvent):void{
if (selected_tool != 6){
Garage_button_Stick_6_selected.visible = false;
Garage_button_Stick_6.visible = true;
};
}
private function _stick_2_out(e:MouseEvent):void{
if (selected_tool != 2){
Garage_button_Stick_2_selected.visible = false;
Garage_button_Stick_2.visible = true;
};
}
private function _createBackground():void{
B_apples_set_bitmap = new B_apples_set_Asset();
B_apples_set_bitmap.smoothing = true;
B_apples_set_bitmap.x = 705;
B_apples_set_bitmap.y = 15;
var format:TextFormat = new TextFormat();
format.font = "CooperStdBlack";
format.color = 10931769;
format.size = 30;
level_id_text.embedFonts = true;
level_id_text.autoSize = TextFieldAutoSize.LEFT;
level_id_text.antiAliasType = AntiAliasType.ADVANCED;
level_id_text.defaultTextFormat = format;
level_id_text.selectable = false;
level_id_text.mouseEnabled = false;
var _local2 = level_id_text;
with (_local2) {
x = 10;
y = 10;
};
var format2:TextFormat = new TextFormat();
format2.font = "CooperStdBlack";
format2.color = 0;
format2.size = 24;
apples_count_text.embedFonts = true;
apples_count_text.antiAliasType = AntiAliasType.ADVANCED;
apples_count_text.autoSize = TextFieldAutoSize.LEFT;
apples_count_text.defaultTextFormat = format2;
apples_count_text.text = " 0";
apples_count_text.selectable = false;
apples_count_text.mouseEnabled = false;
apples_count_text.x = 740;
apples_count_text.y = 17;
var glow:GlowFilter = new GlowFilter(0xFFFFFF, 1, 2, 2, 15, BitmapFilterQuality.HIGH);
var shadow:DropShadowFilter = new DropShadowFilter(4, 45, 0, 0.5, 6, 6, 1, BitmapFilterQuality.HIGH);
level_id_text.filters = [glow, shadow];
apples_count_text.filters = [glow, shadow];
B_apples_set_bitmap.filters = [shadow];
Background_dialog.visible = false;
Background_dialog.addChild(apples_count_text);
Background_dialog.addChild(level_id_text);
Background_dialog.addChild(B_apples_set_bitmap);
super.addChild(Background_dialog);
}
private function _stick_6_over(e:MouseEvent):void{
Garage_button_Stick_6.visible = false;
Garage_button_Stick_6_selected.visible = true;
}
private function upgrade_linkOnBlink(e:TimerEvent):void{
upgrade_link_BIT.visible = !(upgrade_link_BIT.visible);
}
private function _stick_3_over(e:MouseEvent):void{
Garage_button_Stick_3.visible = false;
Garage_button_Stick_3_selected.visible = true;
}
public function onGarageBlinkTimer(e:TimerEvent):void{
switch (GarageBlinkTimerIteration){
case 1:
garage_text.textColor = 0xFF0000;
GarageBlinkTimerIteration++;
break;
case 2:
garage_text.textColor = 0x444444;
GarageBlinkTimerIteration++;
break;
case 3:
garage_text.textColor = 0xFF0000;
GarageBlinkTimerIteration++;
break;
case 4:
garage_text.textColor = 0x444444;
GarageBlinkTimerIteration = 1;
GarageBlinkTimer.stop();
break;
};
}
private function _stick_3_click(e:MouseEvent):void{
Garage_Stick_3.upState = Garage_button_Stick_3_selected;
Garage_Stick_2.upState = Garage_button_Stick_2;
Garage_Stick_1.upState = Garage_button_Stick_1;
Garage_Stick_4.upState = Garage_button_Stick_4;
Garage_Stick_5.upState = Garage_button_Stick_5;
Garage_Stick_6.upState = Garage_button_Stick_6;
selected_tool = 3;
Garage_button_Buy.enabled = true;
Garage_button_Buy.upState = Garage_button_Buy_bitmap;
}
private function _createMainMenu():void{
MainMenu_dialog.graphics.beginFill(0xFFFFFF, 0.7);
MainMenu_dialog.graphics.drawRect(0, 0, 800, 640);
MainMenu_dialog.graphics.endFill();
MainMenu_dialog_bitmap = new MainMenu_dialog_Asset();
MainMenu_dialog_bitmap.smoothing = true;
MainMenu_dialog.addChild(MainMenu_dialog_bitmap);
super.addChild(MainMenu_dialog);
MainMenu_PLAY_on_bitmap = new MainMenu_PLAY_on_Asset();
MainMenu_PLAY_on_bitmap.smoothing = true;
MainMenu_PLAY_off_bitmap = new MainMenu_PLAY_off_Asset();
MainMenu_PLAY_off_bitmap.smoothing = true;
var play:SimpleButton = new SimpleButton();
play.useHandCursor = true;
play.x = 380;
play.y = 265;
play.upState = MainMenu_PLAY_off_bitmap;
play.overState = MainMenu_PLAY_on_bitmap;
play.downState = MainMenu_PLAY_on_bitmap;
play.hitTestState = MainMenu_PLAY_on_bitmap;
play.addEventListener(MouseEvent.CLICK, _newGameClick);
MainMenu_dialog.addChild(play);
MainMenu_LINK1_on_bitmap = new MainMenu_LINK1_on_Asset();
MainMenu_LINK1_on_bitmap.smoothing = true;
MainMenu_LINK1_off_bitmap = new MainMenu_LINK1_off_Asset();
MainMenu_LINK1_off_bitmap.smoothing = true;
MainMenu_LINK1_off_disabled_bitmap = new MainMenu_LINK1_off_disabled_Asset();
MainMenu_LINK1_off_disabled_bitmap.smoothing = true;
LINK1.useHandCursor = true;
LINK1.x = 245;
LINK1.y = 205;
_sharedObject = SharedObject.getLocal("AS_GameStat");
LeveL = new Levels(0);
LeveL.levelID = (_sharedObject.data.levelID - 1);
if ((((LeveL.levelID < 24)) && ((LeveL.levelID > 0)))){
LINK1.upState = MainMenu_LINK1_off_bitmap;
LINK1.hitTestState = MainMenu_LINK1_on_bitmap;
} else {
LINK1.upState = MainMenu_LINK1_off_disabled_bitmap;
LINK1.hitTestState = null;
};
LINK1.overState = MainMenu_LINK1_on_bitmap;
LINK1.downState = MainMenu_LINK1_on_bitmap;
LINK1.addEventListener(MouseEvent.CLICK, _continueGameClick);
MainMenu_dialog.addChild(LINK1);
MainMenu_LINK2_on_bitmap = new MainMenu_LINK2_on_Asset();
MainMenu_LINK2_on_bitmap.smoothing = true;
MainMenu_LINK2_off_bitmap = new MainMenu_LINK2_off_Asset();
MainMenu_LINK2_off_bitmap.smoothing = true;
var LINK2:SimpleButton = new SimpleButton();
LINK2.useHandCursor = true;
LINK2.x = 275;
LINK2.y = 330;
LINK2.upState = MainMenu_LINK2_off_bitmap;
LINK2.overState = MainMenu_LINK2_on_bitmap;
LINK2.downState = MainMenu_LINK2_on_bitmap;
LINK2.hitTestState = MainMenu_LINK2_on_bitmap;
LINK2.addEventListener(MouseEvent.CLICK, _tutorialClick);
MainMenu_dialog.addChild(LINK2);
MainMenu_Sponsor_on_bitmap = new MainMenu_Sponsor_off_Asset();
MainMenu_Sponsor_on_bitmap.smoothing = true;
MainMenu_Sponsor_off_bitmap = new MainMenu_Sponsor_on_Asset();
MainMenu_Sponsor_off_bitmap.smoothing = true;
var Sponsor:SimpleButton = new SimpleButton();
Sponsor.useHandCursor = true;
Sponsor.x = 325;
Sponsor.y = 400;
Sponsor.upState = MainMenu_Sponsor_off_bitmap;
Sponsor.overState = MainMenu_Sponsor_on_bitmap;
Sponsor.downState = MainMenu_Sponsor_on_bitmap;
Sponsor.hitTestState = MainMenu_Sponsor_on_bitmap;
Sponsor.addEventListener(MouseEvent.CLICK, clickOnSponsor);
MainMenu_dialog.addChild(Sponsor);
var temp_swf:MovieClip = new MovieClip();
temp_swf = new bee_swf();
temp_swf.scaleX = 0.2;
temp_swf.scaleY = 0.2;
temp_swf.x = 490;
temp_swf.y = 390;
MainMenu_dialog.addChild(temp_swf);
}
}
}//package Interface.Sprites
Section 238
//UserInterface_B_apples_set_Asset (Interface.Sprites.UserInterface_B_apples_set_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_B_apples_set_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 239
//UserInterface_bee_swf (Interface.Sprites.UserInterface_bee_swf)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_bee_swf extends MovieClipAsset {
}
}//package Interface.Sprites
Section 240
//UserInterface_ChooseLevel_apple_Asset (Interface.Sprites.UserInterface_ChooseLevel_apple_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_apple_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 241
//UserInterface_ChooseLevel_back_Asset (Interface.Sprites.UserInterface_ChooseLevel_back_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_back_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 242
//UserInterface_ChooseLevel_GARAGE_Asset (Interface.Sprites.UserInterface_ChooseLevel_GARAGE_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_GARAGE_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 243
//UserInterface_ChooseLevel_GARAGE_glow_Asset (Interface.Sprites.UserInterface_ChooseLevel_GARAGE_glow_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_GARAGE_glow_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 244
//UserInterface_ChooseLevel_GO_Asset (Interface.Sprites.UserInterface_ChooseLevel_GO_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_GO_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 245
//UserInterface_ChooseLevel_GO_glow_Asset (Interface.Sprites.UserInterface_ChooseLevel_GO_glow_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_GO_glow_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 246
//UserInterface_ChooseLevel_lafler_Asset (Interface.Sprites.UserInterface_ChooseLevel_lafler_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_lafler_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 247
//UserInterface_ChooseLevel_NEXT_Asset (Interface.Sprites.UserInterface_ChooseLevel_NEXT_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_NEXT_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 248
//UserInterface_ChooseLevel_NEXT_glow_Asset (Interface.Sprites.UserInterface_ChooseLevel_NEXT_glow_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_ChooseLevel_NEXT_glow_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 249
//UserInterface_Garage_button_Buy_Asset (Interface.Sprites.UserInterface_Garage_button_Buy_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Buy_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 250
//UserInterface_Garage_button_Buy_disabled_Asset (Interface.Sprites.UserInterface_Garage_button_Buy_disabled_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Buy_disabled_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 251
//UserInterface_Garage_button_Buy_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Buy_selected_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Buy_selected_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 252
//UserInterface_Garage_button_Exit_Asset (Interface.Sprites.UserInterface_Garage_button_Exit_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Exit_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 253
//UserInterface_Garage_button_Exit_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Exit_selected_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Exit_selected_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 254
//UserInterface_Garage_button_Stick_1_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_1_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_1_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 255
//UserInterface_Garage_button_Stick_1_HA_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_1_HA_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_1_HA_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 256
//UserInterface_Garage_button_Stick_1_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_1_selected_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_1_selected_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 257
//UserInterface_Garage_button_Stick_2_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_2_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_2_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 258
//UserInterface_Garage_button_Stick_2_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_2_selected_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_2_selected_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 259
//UserInterface_Garage_button_Stick_3_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_3_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_3_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 260
//UserInterface_Garage_button_Stick_3_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_3_selected_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_3_selected_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 261
//UserInterface_Garage_button_Stick_4_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_4_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_4_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 262
//UserInterface_Garage_button_Stick_4_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_4_selected_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_4_selected_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 263
//UserInterface_Garage_button_Stick_5_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_5_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_5_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 264
//UserInterface_Garage_button_Stick_5_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_5_selected_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_5_selected_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 265
//UserInterface_Garage_button_Stick_6_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_6_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_6_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 266
//UserInterface_Garage_button_Stick_6_selected_Asset (Interface.Sprites.UserInterface_Garage_button_Stick_6_selected_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_button_Stick_6_selected_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 267
//UserInterface_Garage_dialog_Asset (Interface.Sprites.UserInterface_Garage_dialog_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_Garage_dialog_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 268
//UserInterface_MainMenu_dialog_Asset (Interface.Sprites.UserInterface_MainMenu_dialog_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_dialog_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 269
//UserInterface_MainMenu_LINK1_off_Asset (Interface.Sprites.UserInterface_MainMenu_LINK1_off_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_LINK1_off_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 270
//UserInterface_MainMenu_LINK1_off_disabled_Asset (Interface.Sprites.UserInterface_MainMenu_LINK1_off_disabled_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_LINK1_off_disabled_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 271
//UserInterface_MainMenu_LINK1_on_Asset (Interface.Sprites.UserInterface_MainMenu_LINK1_on_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_LINK1_on_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 272
//UserInterface_MainMenu_LINK2_off_Asset (Interface.Sprites.UserInterface_MainMenu_LINK2_off_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_LINK2_off_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 273
//UserInterface_MainMenu_LINK2_on_Asset (Interface.Sprites.UserInterface_MainMenu_LINK2_on_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_LINK2_on_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 274
//UserInterface_MainMenu_PLAY_off_Asset (Interface.Sprites.UserInterface_MainMenu_PLAY_off_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_PLAY_off_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 275
//UserInterface_MainMenu_PLAY_on_Asset (Interface.Sprites.UserInterface_MainMenu_PLAY_on_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_PLAY_on_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 276
//UserInterface_MainMenu_Sponsor_off_Asset (Interface.Sprites.UserInterface_MainMenu_Sponsor_off_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_Sponsor_off_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 277
//UserInterface_MainMenu_Sponsor_on_Asset (Interface.Sprites.UserInterface_MainMenu_Sponsor_on_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_MainMenu_Sponsor_on_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 278
//UserInterface_upgrade_link_PNG (Interface.Sprites.UserInterface_upgrade_link_PNG)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_upgrade_link_PNG extends BitmapAsset {
}
}//package Interface.Sprites
Section 279
//UserInterface_WinGame_dialog_Asset (Interface.Sprites.UserInterface_WinGame_dialog_Asset)
package Interface.Sprites {
import mx.core.*;
public class UserInterface_WinGame_dialog_Asset extends BitmapAsset {
}
}//package Interface.Sprites
Section 280
//LevelObj_Ant (Levels.LevelObj_Ant)
package Levels {
import flash.display.*;
public class LevelObj_Ant extends Sprite {
public var applesOnTheBack:Number;// = 0
public var justAdded:Boolean;// = false
public var sprite:Sprite;
public var JustHitByApple:Boolean;// = false
public var StoppedByApple:Boolean;// = false
public var type:Number;// = 0
public var withApple:Boolean;// = false
public var health:Number;
public var velocity:Number;
public var direction:Number;
public function LevelObj_Ant(_type:Number, _health:Number, _velocity:Number, _direction:Number){
super();
type = _type;
health = _health;
velocity = _velocity;
direction = _direction;
}
}
}//package Levels
Section 281
//LevelObj_Apple (Levels.LevelObj_Apple)
package Levels {
import flash.display.*;
public class LevelObj_Apple extends Sprite {
public var sprite:Sprite;
public var damage:Number;
public var positionY:Number;
public var positionX:Number;
public var type:Number;
public var stat:Number;
public var bonus:Number;
public function LevelObj_Apple(_type:Number, _damage:Number, _bonus:Number, _positionX:Number, _positionY:Number, _stat:Number){
super();
type = _type;
damage = _damage;
bonus = _bonus;
positionX = _positionX;
positionY = _positionY;
stat = _stat;
}
}
}//package Levels
Section 282
//Levels (Levels.Levels)
package Levels {
import flash.display.*;
public class Levels extends Sprite {
public var mashroom:Boolean;// = false
public var StickType:Number;
public var level_status:String;// = "in progress"
public var Ants:Array;
public var nest:Boolean;// = false
public var tree:Boolean;// = false
public var StaticObjects:Array;
public var levelID:Number;// = 0
public var AltsLoaded:Number;// = 0
public var Apples_alts:Array;
public var ApplesInTheBox:Number;// = 0
public var Apples:Array;
public function Levels(_levelID:Number):void{
var tempar:Array;
var tempar_2:Array;
var tempar_1:Array;
Apples = new Array();
Apples_alts = new Array();
Ants = new Array();
StaticObjects = new Array();
super();
levelID = _levelID;
switch (levelID){
case 0:
trace("Invalid level ID - 0");
break;
case 1:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 220, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 580, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 610, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 550, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 235, 290, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 325, 290, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 290, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 290, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 505, 290, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 595, 290, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 325, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 415, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 505, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 550, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 415, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 415, 170, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 415, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 415, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 415, 50, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 90, 4));
Ants.push(new LevelObj_Ant(1, 10, 3, -1));
break;
case 3:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 240, 146, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 270, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 300, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 300, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 510, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 480, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 540, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 510, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 570, 150, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 220, 240, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 600, 240, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 200, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 200, 4));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.7, -1));
break;
case 2:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 70, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 230, 110, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 600, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 470, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 290, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 470, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 510, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 550, 190, 4));
Ants.push(new LevelObj_Ant(2, 20, 2.5, -1));
break;
case 4:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 420, 270, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 254, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 300, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 290, 170, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 170, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 350, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 450, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 380, 270, 4));
Apples.push(new LevelObj_Apple(5, 20, 0, 400, 170, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 125, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 80, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 200, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 200, 4));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
break;
case 5:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(4, 20, 0, 400, 130, 4));
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 254, 136, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 284, 100, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 550, 130, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 520, 100, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 460, 220, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 340, 220, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 400, 190, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 400, 240, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 400, 290, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 400, 140, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 400, 90, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 400, 40, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 490, 160, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 460, 70, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 340, 70, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 310, 280, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 490, 280, 4));
Apples_alts.push(tempar);
StaticObjects.push(new StaticObj(3, 250, 250));
Ants.push(new LevelObj_Ant(1, 10, 2, -1));
break;
case 6:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 360, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 360, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 550, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 450, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 480, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 450, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 405, 70, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 405, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 360, 290, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 450, 290, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 310, 360, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 540, 370, 4));
StaticObjects.push(new StaticObj(3, 270, 190));
Ants.push(new LevelObj_Ant(2, 20, 2.2, -1));
Ants.push(new LevelObj_Ant(2, 20, 1.8, -1));
break;
case 7:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 480, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 480, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 350, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 450, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 240, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 200, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 300, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 560, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 510, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 610, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 405, 40, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 290, 100, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 530, 100, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 400, 290, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 280, 250, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 550, 250, 4));
StaticObjects.push(new StaticObj(3, 405, 170));
Ants.push(new LevelObj_Ant(2, 20, 1.8, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
break;
case 8:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 127, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 70, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 70, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 40, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 560, 190, 4));
Apples.push(new LevelObj_Apple(5, 20, 0, 250, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 250, 4));
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 230, 280, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 270, 280, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 310, 280, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 500, 280, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 540, 280, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 580, 280, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 250, 240, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 290, 240, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 525, 239, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 560, 240, 4));
Apples_alts.push(tempar);
StaticObjects.push(new StaticObj(3, 400, 285));
Ants.push(new LevelObj_Ant(2, 20, 1.8, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.8, -1));
break;
case 9:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 220, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 580, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 550, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 550, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 220, 4));
StaticObjects.push(new StaticObj(3, 390, 260));
StaticObjects.push(new StaticObj(2, 530, 520));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
break;
case 10:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 300, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 470, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 120, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 450, 130, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 350, 130, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 400, 210, 4));
StaticObjects.push(new StaticObj(3, 400, 170));
StaticObjects.push(new StaticObj(2, 530, 520));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(1, 10, 2, -1));
break;
case 11:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(4, 20, 0, 250, 180, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 280, 140, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 310, 100, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 340, 60, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 290, 200, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 330, 180, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 370, 160, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 420, 140, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 460, 230, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 460, 120, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 300, 230, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 340, 230, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 380, 230, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 510, 100, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 420, 230, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 560, 230, 4));
Apples.push(new LevelObj_Apple(4, 20, 0, 510, 230, 4));
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 216, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 260, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 300, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 340, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 380, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 430, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 470, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 510, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 590, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 550, 280, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 480, 360, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 510, 340, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 550, 350, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 520, 380, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 300, 340, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 490, 190, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 530, 190, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 570, 190, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 510, 160, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 550, 160, 4));
Apples_alts.push(tempar);
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 530, 130, 4));
Apples_alts.push(tempar);
StaticObjects.push(new StaticObj(3, 250, 240));
StaticObjects.push(new StaticObj(2, 530, 520));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(1, 10, 2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.4, -1));
break;
case 12:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 170, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 140, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 170, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 170, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 140, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 530, 170, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 80, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 80, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 250, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 370, 80, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 430, 80, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 400, 130, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 370, 260, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 430, 260, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 400, 220, 4));
StaticObjects.push(new StaticObj(3, 400, 170));
StaticObjects.push(new StaticObj(2, 530, 520));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 2.8, -1));
break;
case 13:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 210, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 290, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 230, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 270, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 540, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 580, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 560, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 540, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 350, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 390, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 80, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 80, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 390, 50, 4));
StaticObjects.push(new StaticObj(3, 330, 230));
StaticObjects.push(new StaticObj(3, 480, 230));
StaticObjects.push(new StaticObj(2, 530, 520));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
break;
case 14:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 193, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 252, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 279, 128, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 313, 104, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 343, 132, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 398, 192, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 367, 159, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 70, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 344, 248, 4));
Apples.push(new LevelObj_Apple(5, 20, 0, 460, 280, 4));
Apples.push(new LevelObj_Apple(5, 20, 0, 490, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 219, 190, 4));
StaticObjects.push(new StaticObj(3, 310, 350));
StaticObjects.push(new StaticObj(3, 490, 120));
StaticObjects.push(new StaticObj(2, 530, 520));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.3, -1));
break;
case 15:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 40, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 380, 70, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 70, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 380, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 380, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 380, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 320, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 320, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 90, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 230, 110, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 200, 170, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 220, 230, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 260, 280, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 600, 110, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 630, 170, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 610, 230, 4));
Apples.push(new LevelObj_Apple(3, 20, 0, 560, 280, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 310, 350, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 520, 350, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 350, 290, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 470, 290, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 550, 110, 4));
Apples.push(new LevelObj_Apple(2, 20, 0, 280, 110, 4));
StaticObjects.push(new StaticObj(3, 300, 170));
StaticObjects.push(new StaticObj(3, 530, 170));
StaticObjects.push(new StaticObj(2, 530, 520));
Ants.push(new LevelObj_Ant(2, 20, 1.8, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
break;
case 16:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 300, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 300, 240, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 360, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 240, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 470, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 270, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 360, 60, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 40, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 60, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 470, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 530, 150, 4));
Apples.push(new LevelObj_Apple(5, 20, 0, 570, 200, 4));
Apples.push(new LevelObj_Apple(5, 20, 0, 540, 290, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 230, 200, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 260, 290, 4));
StaticObjects.push(new StaticObj(3, 400, 210));
StaticObjects.push(new StaticObj(2, 530, 520));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(2, 20, 2.2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
break;
case 17:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(4, 20, 0, 410, 210, 4));
tempar = new Array();
tempar.push(new LevelObj_Apple(1, 20, 0, 249, 219, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 219, 192, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 280, 190, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 310, 160, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 340, 130, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 380, 120, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 430, 120, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 470, 130, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 500, 160, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 530, 190, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 550, 220, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 580, 190, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 610, 160, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 190, 160, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 380, 70, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 430, 70, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 440, 250, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 380, 180, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 430, 180, 4));
tempar.push(new LevelObj_Apple(1, 20, 0, 380, 250, 4));
Apples_alts.push(tempar);
StaticObjects.push(new StaticObj(3, 330, 230));
StaticObjects.push(new StaticObj(3, 490, 230));
StaticObjects.push(new StaticObj(2, 530, 522));
StaticObjects.push(new StaticObj(1, 320, 530));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 1.8, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.7, -1));
break;
case 18:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 260, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 260, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 290, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 320, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 380, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 590, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 350, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 560, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 530, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 230, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 320, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 380, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 470, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 560, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 350, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 470, 280, 4));
StaticObjects.push(new StaticObj(3, 250, 290));
StaticObjects.push(new StaticObj(3, 580, 290));
StaticObjects.push(new StaticObj(2, 530, 522));
StaticObjects.push(new StaticObj(1, 320, 530));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(2, 20, 2.2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
break;
case 19:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(5, 20, 0, 490, 300, 4));
Apples.push(new LevelObj_Apple(5, 20, 0, 330, 300, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 410, 210, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 440, 140, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 330, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 300, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 270, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 260, 140, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 270, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 350, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 140, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 360, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 500, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 550, 120, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 540, 180, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 390, 240, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 240, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 110, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 560, 150, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 90, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 390, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 280, 4));
StaticObjects.push(new StaticObj(3, 320, 150));
StaticObjects.push(new StaticObj(3, 510, 150));
StaticObjects.push(new StaticObj(2, 530, 522));
StaticObjects.push(new StaticObj(1, 320, 530));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 2, -1));
Ants.push(new LevelObj_Ant(2, 20, 2.2, -1));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
break;
case 20:
ApplesInTheBox = 20;
StickType = 1;
tempar_2 = new Array();
tempar_2.push(new LevelObj_Apple(1, 20, 0, 250, 190, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 310, 190, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 372, 192, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 280, 160, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 341, 160, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 310, 130, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 460, 250, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 520, 250, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 580, 250, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 490, 220, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 550, 220, 4));
tempar_2.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4));
Apples_alts.push(tempar_2);
Apples.push(new LevelObj_Apple(4, 20, 0, 360, 240, 4));
tempar_1 = new Array();
tempar_1.push(new LevelObj_Apple(4, 20, 0, 560, 120, 4));
Apples_alts.push(tempar_1);
StaticObjects.push(new StaticObj(3, 290, 250));
StaticObjects.push(new StaticObj(3, 490, 130));
StaticObjects.push(new StaticObj(2, 530, 522));
StaticObjects.push(new StaticObj(1, 320, 530));
Ants.push(new LevelObj_Ant(3, 40, 1.5, -1));
break;
case 21:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 220, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 285, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 580, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 495, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 310, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 370, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 490, 250, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 70, 4));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 1.8, -1));
Ants.push(new LevelObj_Ant(3, 30, 1.5, -1));
break;
case 22:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 280, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 160, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 220, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 280, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 460, 100, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 40, 4));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
Ants.push(new LevelObj_Ant(2, 20, 1.8, -1));
break;
case 23:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 340, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 430, 190, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 520, 190, 4));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
Ants.push(new LevelObj_Ant(1, 10, 2, -1));
break;
case 24:
ApplesInTheBox = 20;
StickType = 1;
Apples.push(new LevelObj_Apple(1, 20, 0, 250, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 400, 130, 4));
Apples.push(new LevelObj_Apple(1, 20, 0, 550, 130, 4));
Ants.push(new LevelObj_Ant(1, 10, 2.5, -1));
break;
};
}
}
}//package Levels
Section 283
//StaticObj (Levels.StaticObj)
package Levels {
import flash.display.*;
public class StaticObj extends Sprite {
public var positionY:Number;// = 0
public var sprite:Sprite;
public var type:Number;// = 0
public var positionX:Number;// = 0
public function StaticObj(_type:Number, _x:Number, _y:Number){
sprite = new Sprite();
super();
type = _type;
positionX = _x;
positionY = _y;
}
}
}//package Levels
Section 284
//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
import flash.display.*;
public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {
mx_internal static const VERSION:String = "3.2.0.3958";
public function BitmapAsset(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){
super(bitmapData, pixelSnapping, smoothing);
}
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(newWidth:Number, newHeight:Number):void{
width = newWidth;
height = newHeight;
}
public function move(x:Number, y:Number):void{
this.x = x;
this.y = y;
}
}
}//package mx.core
Section 285
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.2.0.3958";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(left:Number=0, top:Number=0, right:Number=0, bottom:Number=0){
super();
this.left = left;
this.top = top;
this.right = right;
this.bottom = bottom;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 286
//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexBitmap extends Bitmap {
mx_internal static const VERSION:String = "3.2.0.3958";
public function FlexBitmap(bitmapData:BitmapData=null, pixelSnapping:String="auto", smoothing:Boolean=false){
var bitmapData = bitmapData;
var pixelSnapping = pixelSnapping;
var smoothing = smoothing;
super(bitmapData, pixelSnapping, smoothing);
name = NameUtil.createUniqueName(this);
//unresolved jump
var _slot1 = e;
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 287
//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexMovieClip extends MovieClip {
mx_internal static const VERSION:String = "3.2.0.3958";
public function FlexMovieClip(){
super();
name = NameUtil.createUniqueName(this);
//unresolved jump
var _slot1 = e;
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 288
//FontAsset (mx.core.FontAsset)
package mx.core {
import flash.text.*;
public class FontAsset extends Font implements IFlexAsset {
mx_internal static const VERSION:String = "3.2.0.3958";
public function FontAsset(){
super();
}
}
}//package mx.core
Section 289
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 290
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 291
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.accessibility.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(void:Point):Point;
function get name():String;
function set width(flash.display:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(flash.display:String):void;
function set scaleX(flash.display:Number):void;
function set scaleY(flash.display:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(flash.display:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(void:Point):Point;
function get height():Number;
function set blendMode(flash.display:String):void;
function get parent():DisplayObjectContainer;
function getBounds(String:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(flash.display:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(flash.display:Number):void;
function set accessibilityProperties(flash.display:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(flash.display:Boolean):void;
function get scaleX():Number;
function get scaleY():Number;
function get scrollRect():Rectangle;
function get mouseX():Number;
function get mouseY():Number;
function set height(flash.display:Number):void;
function set mask(flash.display:DisplayObject):void;
function getRect(String:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(flash.display:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(mx.core:IFlexDisplayObject/mx.core:IFlexDisplayObject:stage/get:DisplayObject):Boolean;
function set opaqueBackground(flash.display:Object):void;
function set visible(flash.display:Boolean):void;
function get mask():DisplayObject;
function set x(flash.display:Number):void;
function set y(flash.display:Number):void;
function get transform():Transform;
function set filters(flash.display:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(flash.display:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 292
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get isDocument():Boolean;
function set repeaters(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function initializeRepeaterArrays(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(C:\autobuild\3.2.0\frameworks\projects\framework\src;mx\core;IRepeaterClient.as:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 293
//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {
public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.2.0.3958";
public function MovieClipAsset(){
super();
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(newWidth:Number, newHeight:Number):void{
width = newWidth;
height = newHeight;
}
public function move(x:Number, y:Number):void{
this.x = x;
this.y = y;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 294
//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 295
//SoundAsset (mx.core.SoundAsset)
package mx.core {
import flash.media.*;
public class SoundAsset extends Sound implements IFlexAsset {
mx_internal static const VERSION:String = "3.2.0.3958";
public function SoundAsset(){
super();
}
}
}//package mx.core
Section 296
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import mx.core.*;
import flash.utils.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.2.0.3958";
private static var counter:int = 0;
public function NameUtil(){
super();
}
public static function displayObjectToString(displayObject:DisplayObject):String{
var result:String;
var o:DisplayObject;
var s:String;
var indices:Array;
var displayObject = displayObject;
o = displayObject;
while (o != null) {
if (((((o.parent) && (o.stage))) && ((o.parent == o.stage)))){
break;
};
s = o.name;
if ((o is IRepeaterClient)){
indices = IRepeaterClient(o).instanceIndices;
if (indices){
s = (s + (("[" + indices.join("][")) + "]"));
};
};
result = ((result == null)) ? s : ((s + ".") + result);
o = o.parent;
};
//unresolved jump
var _slot1 = e;
return (result);
}
public static function createUniqueName(object:Object):String{
if (!object){
return (null);
};
var name:String = getQualifiedClassName(object);
var index:int = name.indexOf("::");
if (index != -1){
name = name.substr((index + 2));
};
var charCode:int = name.charCodeAt((name.length - 1));
if ((((charCode >= 48)) && ((charCode <= 57)))){
name = (name + "_");
};
return ((name + counter++));
}
}
}//package mx.utils
Section 297
//AS_09 (AS_09)
package {
import Engine.*;
public class AS_09 extends Engine {
public var font1:String;// = "AS_09_font1"
public var font2:String;// = "AS_09_font2"
public function AS_09(){
super();
this.scaleX = 0.8;
this.scaleY = 0.8;
_startEngine();
}
}
}//package
Section 298
//AS_09_font1 (AS_09_font1)
package {
import mx.core.*;
public class AS_09_font1 extends FontAsset {
}
}//package
Section 299
//AS_09_font2 (AS_09_font2)
package {
import mx.core.*;
public class AS_09_font2 extends FontAsset {
}
}//package
Section 300
//MyFactory (MyFactory)
package {
import flash.events.*;
import flash.display.*;
import mx.core.*;
import flash.utils.*;
import flash.net.*;
public class MyFactory extends MovieClip {
private var sponsorLable_BIT:BitmapAsset;
public var logoclip:MovieClip;
private var GameName_PNG:Class;
private var LoadingImage_BIT:BitmapAsset;
private var mailto_off_BIT:BitmapAsset;
private var sponsorLable_PNG:Class;
private var IntroLogo:Class;
public var LogoButton:SimpleButton;
public var MailTOButton:SimpleButton;
private var LoadingImage_PNG:Class;
private var GameName_BIT:BitmapAsset;
private var mailto_off_PNG:Class;
private var logo_timer:Timer;
private var mailto_on_PNG:Class;
private var mailto_on_BIT:BitmapAsset;
public function MyFactory(){
IntroLogo = MyFactory_IntroLogo;
logo_timer = new Timer(4000, 1);
GameName_PNG = MyFactory_GameName_PNG;
LoadingImage_PNG = MyFactory_LoadingImage_PNG;
mailto_off_PNG = MyFactory_mailto_off_PNG;
mailto_on_PNG = MyFactory_mailto_on_PNG;
sponsorLable_PNG = MyFactory_sponsorLable_PNG;
logoclip = new MovieClip();
super();
stop();
logo_timer.addEventListener(TimerEvent.TIMER_COMPLETE, intro_on_time);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
GameName_BIT = new GameName_PNG();
GameName_BIT.smoothing = true;
GameName_BIT.x = 40;
GameName_BIT.y = 50;
addChild(GameName_BIT);
LoadingImage_BIT = new LoadingImage_PNG();
LoadingImage_BIT.smoothing = true;
LoadingImage_BIT.x = 10;
LoadingImage_BIT.y = 200;
addChild(LoadingImage_BIT);
sponsorLable_BIT = new sponsorLable_PNG();
sponsorLable_BIT.smoothing = true;
LogoButton = new SimpleButton(sponsorLable_BIT, sponsorLable_BIT, sponsorLable_BIT, sponsorLable_BIT);
LogoButton.x = 65;
LogoButton.y = 270;
addChild(LogoButton);
LogoButton.addEventListener(MouseEvent.CLICK, clickOnSponsor);
mailto_off_BIT = new mailto_off_PNG();
mailto_off_BIT.smoothing = true;
mailto_on_BIT = new mailto_on_PNG();
mailto_on_BIT.smoothing = true;
MailTOButton = new SimpleButton(mailto_off_BIT, mailto_on_BIT, mailto_on_BIT, mailto_on_BIT);
MailTOButton.addEventListener(MouseEvent.CLICK, clickOmMailTO);
MailTOButton.x = 400;
MailTOButton.y = 110;
addChild(MailTOButton);
graphics.beginFill(13118257);
graphics.drawRect(0, ((stage.stageHeight / 2) - 10), stage.stageWidth, 20);
graphics.endFill();
}
public function onEnterFrame(event:Event):void{
var percent:Number;
graphics.clear();
if (framesLoaded == totalFrames){
LogoButton.removeEventListener(MouseEvent.CLICK, clickOnSponsor);
removeChild(LogoButton);
MailTOButton.removeEventListener(MouseEvent.CLICK, clickOmMailTO);
removeChild(MailTOButton);
removeChild(GameName_BIT);
removeChild(LoadingImage_BIT);
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
nextFrame();
logoinit();
} else {
percent = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal);
graphics.beginFill(13118257);
graphics.drawRect(0, ((stage.stageHeight / 2) - 10), (stage.stageWidth * percent), 20);
graphics.endFill();
};
}
private function logoinit():void{
logoclip = new IntroLogo();
logoclip.x = -190;
logoclip.y = 200;
addChild(logoclip);
logo_timer.start();
}
private function clickOnSponsor(e:MouseEvent):void{
navigateToURL(new URLRequest("http://www.gamebeearcade.com/"), "_blank");
}
private function clickOmMailTO(e:MouseEvent):void{
navigateToURL(new URLRequest("mailto:sunglide@gmail.com"), "_blank");
}
private function intro_on_time(e:TimerEvent):void{
removeChild(logoclip);
nextFrame();
init();
}
private function logo_idle(e:Event):void{
}
private function init():void{
var app:Object;
var mainClass:Class = Class(getDefinitionByName("AS_09"));
if (mainClass){
app = new (mainClass);
addChild((app as DisplayObject));
};
}
}
}//package
Section 301
//MyFactory_GameName_PNG (MyFactory_GameName_PNG)
package {
import mx.core.*;
public class MyFactory_GameName_PNG extends BitmapAsset {
}
}//package
Section 302
//MyFactory_IntroLogo (MyFactory_IntroLogo)
package {
import mx.core.*;
public class MyFactory_IntroLogo extends MovieClipAsset {
}
}//package
Section 303
//MyFactory_LoadingImage_PNG (MyFactory_LoadingImage_PNG)
package {
import mx.core.*;
public class MyFactory_LoadingImage_PNG extends BitmapAsset {
}
}//package
Section 304
//MyFactory_mailto_off_PNG (MyFactory_mailto_off_PNG)
package {
import mx.core.*;
public class MyFactory_mailto_off_PNG extends BitmapAsset {
}
}//package
Section 305
//MyFactory_mailto_on_PNG (MyFactory_mailto_on_PNG)
package {
import mx.core.*;
public class MyFactory_mailto_on_PNG extends BitmapAsset {
}
}//package
Section 306
//MyFactory_sponsorLable_PNG (MyFactory_sponsorLable_PNG)
package {
import mx.core.*;
public class MyFactory_sponsorLable_PNG extends BitmapAsset {
}
}//package