Section 1
//wav (ButtonPress.wav)
package ButtonPress {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package ButtonPress
Section 2
//wav (CannonFire.wav)
package CannonFire {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package CannonFire
Section 3
//wav (CannonMoveLoop.wav)
package CannonMoveLoop {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package CannonMoveLoop
Section 4
//wav (Cheer.wav)
package Cheer {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package Cheer
Section 5
//Vector2 (com.gamedozer.math.Vector2)
package com.gamedozer.math {
public class Vector2 {
public var x:Number;
public var y:Number;
public function Vector2(_arg1:Number=0, _arg2:Number=0){
x = _arg1;
y = _arg2;
}
public function isApproximatelyEqualToZero(_arg1:Number){
return ((((Math.abs(x) <= _arg1)) && ((Math.abs(y) <= _arg1))));
}
public function dividedBy(_arg1:Number):Vector2{
return (new Vector2((x / _arg1), (y / _arg1)));
}
public function projectedAlong(_arg1:Vector2):Vector2{
var _local2:Vector2;
var _local3:Number;
_local2 = _arg1.getUnitVector();
_local3 = this.dot(_local2);
return (new Vector2((_local3 * _local2.x), (_local3 * _local2.y)));
}
public function dot(_arg1:Vector2):Number{
return (((x * _arg1.x) + (y * _arg1.y)));
}
public function normalize(_arg1:Number=1){
var _local2:Number;
_local2 = (_arg1 / this.length());
x = (x * _local2);
y = (y * _local2);
}
public function minimum(_arg1:Vector2):Vector2{
var _local2:Vector2;
_local2 = new Vector2();
_local2.x = ((x < _arg1.x)) ? x : _arg1.x;
_local2.y = ((y < _arg1.y)) ? y : _arg1.y;
return (_local2);
}
public function isApproximatelyEqualTo(_arg1:Vector2, _arg2:Number){
return ((((Math.abs((x - _arg1.x)) <= _arg2)) && ((Math.abs((y - _arg1.y)) <= _arg2))));
}
public function setAngle(_arg1){
var _local2:*;
_local2 = ((_arg1 / 180) * Math.PI);
x = Math.cos(_local2);
y = Math.sin(_local2);
}
public function setEqualTo(_arg1:Vector2){
x = _arg1.x;
y = _arg1.y;
}
public function greaterThanOrEqual(_arg1:Vector2):Boolean{
return ((((x >= _arg1.x)) && ((y >= _arg1.y))));
}
public function lessThanOrEqual(_arg1:Vector2):Boolean{
return ((((x <= _arg1.x)) && ((y <= _arg1.y))));
}
public function plus(_arg1:Vector2):Vector2{
return (new Vector2((x + _arg1.x), (y + _arg1.y)));
}
public function multiplyBy(_arg1:Number){
this.x = (this.x * _arg1);
this.y = (this.y * _arg1);
}
public function getUnitVector():Vector2{
var _local1:Vector2;
_local1 = new Vector2(x, y);
_local1.normalize();
return (_local1);
}
public function equalTo(_arg1:Vector2):Boolean{
return ((((x == _arg1.x)) && ((y == _arg1.y))));
}
public function maximum(_arg1:Vector2):Vector2{
var _local2:Vector2;
_local2 = new Vector2();
_local2.x = ((x > _arg1.x)) ? x : _arg1.x;
_local2.y = ((y > _arg1.y)) ? y : _arg1.y;
return (_local2);
}
public function lengthSquared():Number{
return (((x * x) + (y * y)));
}
public function clone():Vector2{
return (new Vector2(x, y));
}
public function length():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function lessThan(_arg1:Vector2):Boolean{
return ((((x < _arg1.x)) && ((y < _arg1.y))));
}
public function multipliedBy(_arg1:Number):Vector2{
return (new Vector2((x * _arg1), (y * _arg1)));
}
public function toString():String{
return ((((("<" + x) + ",") + y) + ">"));
}
public function angleTo(_arg1:Vector2):Number{
var _local2:Number;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
_local2 = 0;
_local3 = (this.x - _arg1.x);
_local4 = (this.y - _arg1.y);
_local5 = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
_local6 = (_local4 / _local5);
_local7 = Math.asin(_local6);
if ((((this.x < _arg1.x)) && ((this.y < _arg1.y)))){
_local2 = (270 - (_local7 / (Math.PI / 180)));
} else {
if ((((this.x > _arg1.x)) && ((this.y < _arg1.y)))){
_local2 = (90 + (_local7 / (Math.PI / 180)));
};
};
return (_local2);
}
public function getAngle():Number{
return (((Math.atan2(y, x) * 180) / Math.PI));
}
public function minus(_arg1:Vector2):Vector2{
return (new Vector2((x - _arg1.x), (y - _arg1.y)));
}
public function greaterThan(_arg1:Vector2):Boolean{
return ((((x > _arg1.x)) && ((y > _arg1.y))));
}
public function notEqualTo(_arg1:Vector2):Boolean{
return (((!((x == _arg1.x))) && (!((y == _arg1.y)))));
}
public function equals(_arg1:Vector2):Boolean{
return ((((x == _arg1.x)) && ((y == _arg1.y))));
}
}
}//package com.gamedozer.math
Section 6
//WAV (default.WAV)
package default {
import flash.media.*;
public dynamic class WAV extends Sound {
}
}//package default
Section 7
//wav (Eaten.wav)
package Eaten {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package Eaten
Section 8
//wav (GroundExplode.wav)
package GroundExplode {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package GroundExplode
Section 9
//wav (Ohh.wav)
package Ohh {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package Ohh
Section 10
//AbstractConstraint (org.cove.ape.AbstractConstraint)
package org.cove.ape {
import flash.display.*;
public class AbstractConstraint {
private var _stiffness:Number;
protected var dc:Sprite;
private var _visible:Boolean;
public function AbstractConstraint(_arg1:Number){
visible = true;
this.stiffness = _arg1;
}
public function set visible(_arg1:Boolean):void{
_visible = _arg1;
}
function resolve():void{
}
public function get visible():Boolean{
return (_visible);
}
protected function getDefaultContainer():Sprite{
var _local1:Sprite;
var _local2:Sprite;
var _local3:String;
if (APEngine.defaultContainer == null){
_local3 = "";
_local3 = (_local3 + "You must set the defaultContainer property of the APEngine class ");
_local3 = (_local3 + "if you wish to use the default paint methods of the constraints");
throw (new Error(_local3));
};
_local1 = APEngine.defaultContainer;
_local2 = new Sprite();
_local1.addChild(_local2);
return (_local2);
}
public function set stiffness(_arg1:Number):void{
_stiffness = _arg1;
}
public function get stiffness():Number{
return (_stiffness);
}
}
}//package org.cove.ape
Section 11
//AbstractParticle (org.cove.ape.AbstractParticle)
package org.cove.ape {
import flash.display.*;
public class AbstractParticle {
private var _collidable:Boolean;
private var collision:Collision;
private var _kfr:Number;
var prev:Vector;
var curr:Vector;
private var _visible:Boolean;
var interval:Interval;
private var _invMass:Number;
private var _mass:Number;
private var temp:Vector;
private var _friction:Number;
private var forces:Vector;
var isColliding:Boolean;
private var _fixed:Boolean;
protected var dc:Sprite;
public function AbstractParticle(_arg1:Number, _arg2:Number, _arg3:Boolean, _arg4:Number, _arg5:Number, _arg6:Number){
interval = new Interval(0, 0);
curr = new Vector(_arg1, _arg2);
prev = new Vector(_arg1, _arg2);
temp = new Vector(0, 0);
fixed = _arg3;
forces = new Vector(0, 0);
collision = new Collision(new Vector(0, 0), new Vector(0, 0));
isColliding = false;
this.mass = _arg4;
this.elasticity = _arg5;
this.friction = _arg6;
collidable = true;
visible = true;
}
public function set friction(_arg1:Number):void{
if ((((_arg1 < 0)) || ((_arg1 > 1)))){
throw (new Error("Legal friction must be >= 0 and <=1"));
};
_friction = _arg1;
}
function get invMass():Number{
return (_invMass);
}
public function get px():Number{
return (curr.x);
}
public function get py():Number{
return (curr.y);
}
public function set px(_arg1:Number):void{
curr.x = _arg1;
prev.x = _arg1;
}
public function set py(_arg1:Number):void{
curr.y = _arg1;
prev.y = _arg1;
}
function getComponents(_arg1:Vector):Collision{
var _local2:Vector;
var _local3:Number;
_local2 = velocity;
_local3 = _arg1.dot(_local2);
collision.vn = _arg1.mult(_local3);
collision.vt = _local2.minus(collision.vn);
return (collision);
}
public function get position():Vector{
return (new Vector(curr.x, curr.y));
}
function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:Number):void{
curr.plusEquals(_arg1);
switch (APEngine.collisionResponseMode){
case APEngine.STANDARD:
velocity = _arg2;
break;
case APEngine.SELECTIVE:
if (!(isColliding)){
velocity = _arg2;
};
isColliding = true;
break;
case APEngine.SIMPLE:
break;
};
}
function getDefaultContainer():Sprite{
var _local1:Sprite;
var _local2:Sprite;
var _local3:String;
if (APEngine.defaultContainer == null){
_local3 = "";
_local3 = (_local3 + "You must set the defaultContainer property of the APEngine class ");
_local3 = (_local3 + "if you wish to use the default paint methods of the particles");
throw (new Error(_local3));
};
_local1 = APEngine.defaultContainer;
_local2 = new Sprite();
_local1.addChild(_local2);
return (_local2);
}
public function get elasticity():Number{
return (_kfr);
}
public function addMasslessForce(_arg1:Vector):void{
forces.plusEquals(_arg1);
}
public function set velocity(_arg1:Vector):void{
prev = curr.minus(_arg1);
}
function getProjection(_arg1:Vector):Interval{
return (null);
}
public function set collidable(_arg1:Boolean):void{
_collidable = _arg1;
}
public function set position(_arg1:Vector):void{
curr.copy(_arg1);
prev.copy(_arg1);
}
function update(_arg1:Number):void{
var _local2:Vector;
if (fixed){
return;
};
addForce(APEngine.force);
addMasslessForce(APEngine.masslessForce);
temp.copy(curr);
_local2 = velocity.plus(forces.multEquals(_arg1));
curr.plusEquals(_local2.multEquals(APEngine.damping));
prev.copy(temp);
forces.setTo(0, 0);
}
public function get velocity():Vector{
return (curr.minus(prev));
}
public function get collidable():Boolean{
return (_collidable);
}
public function set fixed(_arg1:Boolean):void{
_fixed = _arg1;
}
public function addForce(_arg1:Vector):void{
forces.plusEquals(_arg1.multEquals(invMass));
}
public function set elasticity(_arg1:Number):void{
_kfr = _arg1;
}
public function set visible(_arg1:Boolean):void{
_visible = _arg1;
}
public function get fixed():Boolean{
return (_fixed);
}
public function set mass(_arg1:Number):void{
if (_arg1 <= 0){
throw (new Error("mass may not be set <= 0"));
};
_mass = _arg1;
_invMass = (1 / _mass);
}
public function get visible():Boolean{
return (_visible);
}
public function get friction():Number{
return (_friction);
}
public function get mass():Number{
return (_mass);
}
}
}//package org.cove.ape
Section 12
//AngularConstraint (org.cove.ape.AngularConstraint)
package org.cove.ape {
public class AngularConstraint extends AbstractConstraint {
public function AngularConstraint(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:AbstractParticle, _arg4:Number=0.4){
}
}
}//package org.cove.ape
Section 13
//APEngine (org.cove.ape.APEngine)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public final class APEngine {
public static const SIMPLE:Number = 300;
public static const SELECTIVE:Number = 200;
public static const STANDARD:Number = 100;
private static var timeStep:Number;
private static var _damping:Number;
private static var _collisionResponseMode:Number = 100;
static var masslessForce:Vector;
private static var _defaultContainer:Sprite;
static var force:Vector;
private static var particles:Array;
private static var constraints:Array;
public static function removeConstraint(_arg1:AbstractConstraint):void{
var _local2:int;
_local2 = constraints.indexOf(_arg1);
if (_local2 == -1){
return;
};
constraints.splice(_local2, 1);
}
public static function get damping():Number{
return (_damping);
}
public static function set damping(_arg1:Number):void{
_damping = _arg1;
}
public static function get defaultContainer():Sprite{
return (_defaultContainer);
}
public static function getAllParticles():Array{
return (particles.slice());
}
public static function addForce(_arg1:Vector):void{
force.plusEquals(_arg1);
}
public static function addMasslessForce(_arg1:Vector):void{
masslessForce.plusEquals(_arg1);
}
public static function getAll():Array{
return (particles.concat(constraints));
}
public static function addParticle(_arg1:AbstractParticle):void{
particles.push(_arg1);
}
public static function set defaultContainer(_arg1:Sprite):void{
_defaultContainer = _arg1;
}
public static function init(_arg1:Number):void{
timeStep = (_arg1 * _arg1);
particles = new Array();
constraints = new Array();
force = new Vector(0, 0);
masslessForce = new Vector(0, 0);
damping = 1;
}
public static function getAllConstraints():Array{
return (constraints.slice());
}
public static function step():void{
integrate();
satisfyConstraints();
checkCollisions();
}
public static function getCustomParticles():Array{
var _local1:Array;
var _local2:int;
var _local3:AbstractParticle;
_local1 = new Array();
_local2 = 0;
while (_local2 < particles.length) {
_local3 = particles[_local2];
if (isCustomParticle(_local3)){
_local1.push(_local3);
};
_local2++;
};
return (_local1);
}
public static function get collisionResponseMode():Number{
return (_collisionResponseMode);
}
private static function isCustomParticle(_arg1:AbstractParticle):Boolean{
var _local2:String;
var _local3:Boolean;
var _local4:Boolean;
var _local5:Boolean;
_local2 = getQualifiedClassName(_arg1);
_local3 = (_local2 == "org.cove.ape::WheelParticle");
_local4 = (_local2 == "org.cove.ape::CircleParticle");
_local5 = (_local2 == "org.cove.ape::RectangleParticle");
if (!(((((_local3) || (_local4))) || (_local5)))){
return (true);
};
return (false);
}
public static function addConstraint(_arg1:AbstractConstraint):void{
constraints.push(_arg1);
}
private static function checkCollisions():void{
var _local1:Number;
var _local2:AbstractParticle;
var _local3:Number;
var _local4:Number;
var _local5:AbstractParticle;
var _local6:SpringConstraint;
_local1 = 0;
while (_local1 < particles.length) {
_local2 = particles[_local1];
_local3 = (_local1 + 1);
while (_local3 < particles.length) {
_local5 = particles[_local3];
if (((_local2.collidable) && (_local5.collidable))){
CollisionDetector.test(_local2, _local5);
};
_local3++;
};
_local4 = 0;
while (_local4 < constraints.length) {
if ((constraints[_local4] is AngularConstraint)){
} else {
_local6 = constraints[_local4];
if (((((_local2.collidable) && (_local6.collidable))) && (!(_local6.isConnectedTo(_local2))))){
CollisionDetector.test(_local2, _local6.getCollisionRect());
};
};
_local4++;
};
_local2.isColliding = false;
_local1++;
};
}
public static function removeParticle(_arg1:AbstractParticle):void{
var _local2:int;
_local2 = particles.indexOf(_arg1);
if (_local2 == -1){
return;
};
particles.splice(_local2, 1);
}
private static function integrate():void{
var _local1:Number;
_local1 = 0;
while (_local1 < particles.length) {
particles[_local1].update(timeStep);
_local1++;
};
}
public static function set collisionResponseMode(_arg1:Number):void{
_collisionResponseMode = _arg1;
}
public static function getAPEParticles():Array{
var _local1:Array;
var _local2:int;
var _local3:AbstractParticle;
_local1 = new Array();
_local2 = 0;
while (_local2 < particles.length) {
_local3 = particles[_local2];
if (!(isCustomParticle(_local3))){
_local1.push(_local3);
};
_local2++;
};
return (_local1);
}
private static function satisfyConstraints():void{
var _local1:Number;
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].resolve();
_local1++;
};
}
}
}//package org.cove.ape
Section 14
//CircleParticle (org.cove.ape.CircleParticle)
package org.cove.ape {
public class CircleParticle extends AbstractParticle {
private var _radius:Number;
public function CircleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean, _arg5:Number=1, _arg6:Number=0.3, _arg7:Number=0){
super(_arg1, _arg2, _arg4, _arg5, _arg6, _arg7);
_radius = _arg3;
}
override function getProjection(_arg1:Vector):Interval{
var _local2:Number;
_local2 = curr.dot(_arg1);
interval.min = (_local2 - _radius);
interval.max = (_local2 + _radius);
return (interval);
}
function getIntervalY():Interval{
interval.min = (curr.y - _radius);
interval.max = (curr.y + _radius);
return (interval);
}
function getIntervalX():Interval{
interval.min = (curr.x - _radius);
interval.max = (curr.x + _radius);
return (interval);
}
public function paint():void{
if (dc == null){
dc = getDefaultContainer();
};
dc.graphics.clear();
if (!(visible)){
return;
};
dc.graphics.lineStyle(0, 0x666666, 100);
dc.graphics.drawCircle(curr.x, curr.y, radius);
}
public function get radius():Number{
return (_radius);
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
}
}
}//package org.cove.ape
Section 15
//Collision (org.cove.ape.Collision)
package org.cove.ape {
import org.cove.ape.*;
final class Collision {
var vn:Vector;
var vt:Vector;
function Collision(_arg1:Vector, _arg2:Vector){
this.vn = _arg1;
this.vt = _arg2;
}
}
}//package org.cove.ape
Section 16
//CollisionDetector (org.cove.ape.CollisionDetector)
package org.cove.ape {
import org.cove.ape.*;
final class CollisionDetector {
static function test(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
if (((_arg1.fixed) && (_arg2.fixed))){
return;
};
if ((((_arg1 is RectangleParticle)) && ((_arg2 is RectangleParticle)))){
testOBBvsOBB(RectangleParticle(_arg1), RectangleParticle(_arg2));
} else {
if ((((_arg1 is CircleParticle)) && ((_arg2 is CircleParticle)))){
testCirclevsCircle(CircleParticle(_arg1), CircleParticle(_arg2));
} else {
if ((((_arg1 is RectangleParticle)) && ((_arg2 is CircleParticle)))){
testOBBvsCircle(RectangleParticle(_arg1), CircleParticle(_arg2));
} else {
if ((((_arg1 is CircleParticle)) && ((_arg2 is RectangleParticle)))){
testOBBvsCircle(RectangleParticle(_arg2), CircleParticle(_arg1));
};
};
};
};
}
private static function closestVertexOnOBB(_arg1:Vector, _arg2:RectangleParticle):Vector{
var _local3:Vector;
var _local4:Vector;
var _local5:int;
var _local6:Number;
_local3 = _arg1.minus(_arg2.curr);
_local4 = new Vector(_arg2.curr.x, _arg2.curr.y);
_local5 = 0;
while (_local5 < 2) {
_local6 = _local3.dot(_arg2.axes[_local5]);
if (_local6 >= 0){
_local6 = _arg2.extents[_local5];
} else {
if (_local6 < 0){
_local6 = -(_arg2.extents[_local5]);
};
};
_local4.plusEquals(_arg2.axes[_local5].mult(_local6));
_local5++;
};
return (_local4);
}
private static function testOBBvsOBB(_arg1:RectangleParticle, _arg2:RectangleParticle):void{
var _local3:Vector;
var _local4:Number;
var _local5:int;
var _local6:Vector;
var _local7:Number;
var _local8:Vector;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Boolean;
_local4 = Number.POSITIVE_INFINITY;
_local5 = 0;
while (_local5 < 2) {
_local6 = _arg1.axes[_local5];
_local7 = testIntervals(_arg1.getProjection(_local6), _arg2.getProjection(_local6));
if (_local7 == 0){
return;
};
_local8 = _arg2.axes[_local5];
_local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8));
if (_local9 == 0){
return;
};
_local10 = Math.abs(_local7);
_local11 = Math.abs(_local9);
if ((((_local10 < Math.abs(_local4))) || ((_local11 < Math.abs(_local4))))){
_local12 = (_local10 < _local11);
_local3 = (_local12) ? _local6 : _local8;
_local4 = (_local12) ? _local7 : _local9;
};
_local5++;
};
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4);
}
private static function testOBBvsCircle(_arg1:RectangleParticle, _arg2:CircleParticle):void{
var _local3:Vector;
var _local4:Number;
var _local5:Array;
var _local6:int;
var _local7:Number;
var _local8:Vector;
var _local9:Number;
var _local10:Vector;
var _local11:Number;
_local4 = Number.POSITIVE_INFINITY;
_local5 = new Array(2);
_local6 = 0;
while (_local6 < 2) {
_local8 = _arg1.axes[_local6];
_local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8));
if (_local9 == 0){
return;
};
if (Math.abs(_local9) < Math.abs(_local4)){
_local3 = _local8;
_local4 = _local9;
};
_local5[_local6] = _local9;
_local6++;
};
_local7 = _arg2.radius;
if ((((Math.abs(_local5[0]) < _local7)) && ((Math.abs(_local5[1]) < _local7)))){
_local10 = closestVertexOnOBB(_arg2.curr, _arg1);
_local3 = _local10.minus(_arg2.curr);
_local11 = _local3.magnitude();
_local4 = (_local7 - _local11);
if (_local4 > 0){
_local3.divEquals(_local11);
} else {
return;
};
};
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4);
}
private static function testIntervals(_arg1:Interval, _arg2:Interval):Number{
var _local3:Number;
var _local4:Number;
if (_arg1.max < _arg2.min){
return (0);
};
if (_arg2.max < _arg1.min){
return (0);
};
_local3 = (_arg2.max - _arg1.min);
_local4 = (_arg2.min - _arg1.max);
return (((Math.abs(_local3))<Math.abs(_local4)) ? _local3 : _local4);
}
private static function testCirclevsCircle(_arg1:CircleParticle, _arg2:CircleParticle):void{
var _local3:Number;
var _local4:Number;
var _local5:Vector;
var _local6:Number;
var _local7:Number;
_local3 = testIntervals(_arg1.getIntervalX(), _arg2.getIntervalX());
if (_local3 == 0){
return;
};
_local4 = testIntervals(_arg1.getIntervalY(), _arg2.getIntervalY());
if (_local4 == 0){
return;
};
_local5 = _arg1.curr.minus(_arg2.curr);
_local6 = _local5.magnitude();
_local7 = ((_arg1.radius + _arg2.radius) - _local6);
if (_local7 > 0){
_local5.divEquals(_local6);
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local5, _local7);
};
}
}
}//package org.cove.ape
Section 17
//CollisionResolver (org.cove.ape.CollisionResolver)
package org.cove.ape {
import org.cove.ape.*;
final class CollisionResolver {
static function resolveParticleParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Vector, _arg4:Number):void{
var _local5:Vector;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Collision;
var _local12:Collision;
var _local13:Vector;
var _local14:Vector;
var _local15:Vector;
var _local16:Vector;
_local5 = _arg3.mult(_arg4);
_local6 = (_arg1.elasticity + _arg2.elasticity);
_local7 = (1 - (_arg1.friction + _arg2.friction));
if (_local7 > 1){
_local7 = 1;
} else {
if (_local7 < 0){
_local7 = 0;
};
};
_local8 = (_arg1.fixed) ? 100000 : _arg1.mass;
_local9 = (_arg2.fixed) ? 100000 : _arg2.mass;
_local10 = (_local8 + _local9);
_local11 = _arg1.getComponents(_arg3);
_local12 = _arg2.getComponents(_arg3);
_local13 = _local12.vn.mult(((_local6 + 1) * _local9)).plus(_local11.vn.mult((_local8 - (_local6 * _local9)))).divEquals(_local10);
_local14 = _local11.vn.mult(((_local6 + 1) * _local8)).plus(_local12.vn.mult((_local9 - (_local6 * _local8)))).divEquals(_local10);
_local11.vt.multEquals(_local7);
_local12.vt.multEquals(_local7);
_local15 = _local5.mult((_local9 / _local10));
_local16 = _local5.mult((-(_local8) / _local10));
if (!(_arg1.fixed)){
_arg1.resolveCollision(_local15, _local13.plusEquals(_local11.vt), _arg3, _arg4, -1);
};
if (!(_arg2.fixed)){
_arg2.resolveCollision(_local16, _local14.plusEquals(_local12.vt), _arg3, _arg4, 1);
};
}
}
}//package org.cove.ape
Section 18
//Interval (org.cove.ape.Interval)
package org.cove.ape {
final class Interval {
var min:Number;
var max:Number;
function Interval(_arg1:Number, _arg2:Number){
this.min = _arg1;
this.max = _arg2;
}
function toString():String{
return (((min + " : ") + max));
}
}
}//package org.cove.ape
Section 19
//RectangleParticle (org.cove.ape.RectangleParticle)
package org.cove.ape {
public class RectangleParticle extends AbstractParticle {
private var _axes:Array;
private var _cornerParticles:Array;
private var _extents:Array;
var _cornerPositions:Array;
private var _rotation:Number;
public function RectangleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Boolean, _arg7:Number=1, _arg8:Number=0.3, _arg9:Number=0){
super(_arg1, _arg2, _arg6, _arg7, _arg8, _arg9);
_extents = new Array((_arg3 / 2), (_arg4 / 2));
_axes = new Array(new Vector(0, 0), new Vector(0, 0));
this.rotation = _arg5;
}
public function get rotation():Number{
return (_rotation);
}
function updateCornerPositions():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local1 = (_axes[0].x * _extents[0]);
_local2 = (_axes[0].y * _extents[0]);
_local3 = (_axes[1].x * _extents[1]);
_local4 = (_axes[1].y * _extents[1]);
_local5 = (_local1 - _local3);
_local6 = (_local2 - _local4);
_local7 = (_local1 + _local3);
_local8 = (_local2 + _local4);
_cornerPositions[0].x = (curr.x - _local7);
_cornerPositions[0].y = (curr.y - _local8);
_cornerPositions[1].x = (curr.x + _local5);
_cornerPositions[1].y = (curr.y + _local6);
_cornerPositions[2].x = (curr.x + _local7);
_cornerPositions[2].y = (curr.y + _local8);
_cornerPositions[3].x = (curr.x - _local5);
_cornerPositions[3].y = (curr.y - _local6);
}
public function get cornerPositions():Array{
if (_cornerPositions == null){
_cornerPositions = new Array(new Vector(0, 0), new Vector(0, 0), new Vector(0, 0), new Vector(0, 0));
updateCornerPositions();
};
return (_cornerPositions);
}
function get extents():Array{
return (_extents);
}
function get axes():Array{
return (_axes);
}
private function setAxes(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
_local2 = Math.sin(_arg1);
_local3 = Math.cos(_arg1);
axes[0].x = _local3;
axes[0].y = _local2;
axes[1].x = -(_local2);
axes[1].y = _local3;
}
override function getProjection(_arg1:Vector):Interval{
var _local2:Number;
var _local3:Number;
_local2 = ((extents[0] * Math.abs(_arg1.dot(axes[0]))) + (extents[1] * Math.abs(_arg1.dot(axes[1]))));
_local3 = curr.dot(_arg1);
interval.min = (_local3 - _local2);
interval.max = (_local3 + _local2);
return (interval);
}
override function update(_arg1:Number):void{
super.update(_arg1);
if (_cornerPositions != null){
updateCornerPositions();
};
if (_cornerParticles != null){
updateCornerParticles();
};
}
private function updateCornerParticles():void{
var _local1:int;
_local1 = 0;
while (_local1 < 4) {
_cornerParticles[_local1].px = _cornerPositions[_local1].x;
_cornerParticles[_local1].py = _cornerPositions[_local1].y;
_local1++;
};
}
public function get cornerParticles():Array{
var _local1:CircleParticle;
var _local2:CircleParticle;
var _local3:CircleParticle;
var _local4:CircleParticle;
if (_cornerPositions == null){
cornerPositions;
};
if (_cornerParticles == null){
_local1 = new CircleParticle(0, 0, 1, false);
_local1.collidable = false;
_local1.visible = false;
APEngine.addParticle(_local1);
_local2 = new CircleParticle(0, 0, 1, false);
_local2.collidable = false;
_local2.visible = false;
APEngine.addParticle(_local2);
_local3 = new CircleParticle(0, 0, 1, false);
_local3.collidable = false;
_local3.visible = false;
APEngine.addParticle(_local3);
_local4 = new CircleParticle(0, 0, 1, false);
_local4.collidable = false;
_local4.visible = false;
APEngine.addParticle(_local4);
_cornerParticles = new Array(_local1, _local2, _local3, _local4);
updateCornerParticles();
};
return (_cornerParticles);
}
public function paint():void{
var c:Array;
var j:*;
var i:*;
if (dc == null){
dc = getDefaultContainer();
};
dc.graphics.clear();
if (!(visible)){
return;
};
c = cornerPositions;
dc.graphics.lineStyle(0, 0x666666, 100);
var _local2 = dc.graphics;
with (_local2) {
j = 0;
while (j < 5) {
i = (j & 3);
if (j == 0){
moveTo(c[i].x, c[i].y);
} else {
lineTo(c[i].x, c[i].y);
};
j++;
};
};
}
public function set rotation(_arg1:Number):void{
_rotation = _arg1;
setAxes(_arg1);
}
}
}//package org.cove.ape
Section 20
//SpringConstraint (org.cove.ape.SpringConstraint)
package org.cove.ape {
public class SpringConstraint extends AbstractConstraint {
private var _collidable:Boolean;
protected var p1:AbstractParticle;
private var deltaLength:Number;
protected var p2:AbstractParticle;
private var _collisionRectScale:Number;
private var _collisionRectWidth:Number;
private var restLen:Number;
private var delta:Vector;
private var collisionRect:SpringConstraintParticle;
public function SpringConstraint(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Number=0.5){
super(_arg3);
this.p1 = _arg1;
this.p2 = _arg2;
checkParticlesLocation();
collisionRectWidth = 1;
collisionRectScale = 1;
collidable = false;
delta = _arg1.curr.minus(_arg2.curr);
deltaLength = _arg1.curr.distance(_arg2.curr);
restLength = deltaLength;
}
public function get center():Vector{
return (p1.curr.plus(p2.curr).divEquals(2));
}
public function get restLength():Number{
return (restLen);
}
public function get rotation():Number{
return (Math.atan2(delta.y, delta.x));
}
function getCollisionRect():RectangleParticle{
return (collisionRect);
}
public function paint():void{
if (dc == null){
dc = getDefaultContainer();
};
if (collidable){
collisionRect.paint();
} else {
dc.graphics.clear();
if (!(visible)){
return;
};
dc.graphics.lineStyle(0, 0x666666, 100);
dc.graphics.moveTo(p1.curr.x, p1.curr.y);
dc.graphics.lineTo(p2.curr.x, p2.curr.y);
};
}
public function set collisionRectWidth(_arg1:Number):void{
_collisionRectWidth = _arg1;
}
public function set collisionRectScale(_arg1:Number):void{
_collisionRectScale = _arg1;
}
public function isConnectedTo(_arg1:AbstractParticle):Boolean{
return ((((_arg1 == p1)) || ((_arg1 == p2))));
}
override function resolve():void{
var _local1:Number;
var _local2:Vector;
var _local3:Number;
var _local4:Number;
var _local5:Number;
if (((p1.fixed) && (p2.fixed))){
return;
};
delta = p1.curr.minus(p2.curr);
deltaLength = p1.curr.distance(p2.curr);
if (collidable){
orientCollisionRectangle();
};
_local1 = ((deltaLength - restLength) / deltaLength);
_local2 = delta.mult((_local1 * stiffness));
_local3 = p1.invMass;
_local4 = p2.invMass;
_local5 = (_local3 + _local4);
if (!(p1.fixed)){
p1.curr.minusEquals(_local2.mult((_local3 / _local5)));
};
if (!(p2.fixed)){
p2.curr.plusEquals(_local2.mult((_local4 / _local5)));
};
}
private function checkParticlesLocation():void{
if ((((p1.curr.x == p2.curr.x)) && ((p1.curr.y == p2.curr.y)))){
throw (new Error("The two particles specified for a SpringContraint can't be at the same location"));
};
}
public function set collidable(_arg1:Boolean):void{
_collidable = _arg1;
if (_collidable){
collisionRect = new SpringConstraintParticle(p1, p2);
orientCollisionRectangle();
} else {
collisionRect = null;
};
}
public function get collisionRectScale():Number{
return (_collisionRectScale);
}
private function orientCollisionRectangle():void{
var _local1:Vector;
var _local2:Number;
_local1 = center;
_local2 = rotation;
collisionRect.curr.setTo(_local1.x, _local1.y);
collisionRect.extents[0] = ((deltaLength / 2) * collisionRectScale);
collisionRect.extents[1] = (collisionRectWidth / 2);
collisionRect.rotation = _local2;
}
public function get collisionRectWidth():Number{
return (_collisionRectWidth);
}
public function get collidable():Boolean{
return (_collidable);
}
public function set restLength(_arg1:Number):void{
restLen = _arg1;
}
}
}//package org.cove.ape
Section 21
//SpringConstraintParticle (org.cove.ape.SpringConstraintParticle)
package org.cove.ape {
import org.cove.ape.*;
class SpringConstraintParticle extends RectangleParticle {
private var p1:AbstractParticle;
private var avgVelocity:Vector;
private var p2:AbstractParticle;
function SpringConstraintParticle(_arg1:AbstractParticle, _arg2:AbstractParticle){
super(0, 0, 0, 0, 0, false);
this.p1 = _arg1;
this.p2 = _arg2;
avgVelocity = new Vector(0, 0);
}
override public function get mass():Number{
return (((p1.mass + p2.mass) / 2));
}
override function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:Number):void{
if (!(p1.fixed)){
p1.curr.plusEquals(_arg1);
p1.velocity = _arg2;
};
if (!(p2.fixed)){
p2.curr.plusEquals(_arg1);
p2.velocity = _arg2;
};
}
override public function get velocity():Vector{
var _local1:Vector;
var _local2:Vector;
_local1 = p1.velocity;
_local2 = p2.velocity;
avgVelocity.setTo(((_local1.x + _local2.x) / 2), ((_local1.y + _local2.y) / 2));
return (avgVelocity);
}
override public function paint():void{
if (_cornerPositions != null){
updateCornerPositions();
};
super.paint();
}
}
}//package org.cove.ape
Section 22
//SwfConstraint (org.cove.ape.SwfConstraint)
package org.cove.ape {
import flash.display.*;
public class SwfConstraint extends SpringConstraint {
private var m_mcHeight:Number;
private var m_mc:MovieClip;
public function SwfConstraint(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:MovieClip, _arg4:Number=0.5){
super(_arg1, _arg2, _arg4);
m_mc = _arg3;
m_mcHeight = m_mc.height;
}
override public function paint():void{
var _local1:Number;
if (dc == null){
dc = getDefaultContainer();
};
if (m_mc.parent == null){
dc.addChild(m_mc);
};
if (collidable){
} else {
_local1 = (((this.restLength + ((p1 as CircleParticle).radius * 1.2)) + ((p2 as CircleParticle).radius * 1.2)) / m_mcHeight);
m_mc.visible = this.visible;
m_mc.x = this.center.x;
m_mc.y = this.center.y;
m_mc.rotation = ((this.rotation * (180 / Math.PI)) + 90);
m_mc.scaleX = _local1;
m_mc.scaleY = _local1;
};
}
}
}//package org.cove.ape
Section 23
//Vector (org.cove.ape.Vector)
package org.cove.ape {
public class Vector {
public var x:Number;
public var y:Number;
public function Vector(_arg1:Number, _arg2:Number){
x = _arg1;
y = _arg2;
}
public function cross(_arg1:Vector):Number{
return (((x * _arg1.y) - (y * _arg1.x)));
}
public function magnitude():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function divEquals(_arg1:Number):Vector{
if (_arg1 == 0){
_arg1 = 0.0001;
};
x = (x / _arg1);
y = (y / _arg1);
return (this);
}
public function times(_arg1:Vector):Vector{
return (new Vector((x * _arg1.x), (y * _arg1.y)));
}
public function plusEquals(_arg1:Vector):Vector{
x = (x + _arg1.x);
y = (y + _arg1.y);
return (this);
}
public function dot(_arg1:Vector):Number{
return (((x * _arg1.x) + (y * _arg1.y)));
}
public function magnitudeSquared():Number{
return (((x * x) + (y * y)));
}
public function toString():String{
return (((x + " : ") + y));
}
public function normalize():Vector{
var _local1:Number;
_local1 = magnitude();
if (_local1 == 0){
_local1 = 0.0001;
};
return (mult((1 / _local1)));
}
public function copy(_arg1:Vector):void{
x = _arg1.x;
y = _arg1.y;
}
public function minusEquals(_arg1:Vector):Vector{
x = (x - _arg1.x);
y = (y - _arg1.y);
return (this);
}
public function minus(_arg1:Vector):Vector{
return (new Vector((x - _arg1.x), (y - _arg1.y)));
}
public function plus(_arg1:Vector):Vector{
return (new Vector((x + _arg1.x), (y + _arg1.y)));
}
public function distance(_arg1:Vector):Number{
var _local2:Vector;
_local2 = this.minus(_arg1);
return (_local2.magnitude());
}
public function setTo(_arg1:Number, _arg2:Number):void{
x = _arg1;
y = _arg2;
}
public function multEquals(_arg1:Number):Vector{
x = (x * _arg1);
y = (y * _arg1);
return (this);
}
public function mult(_arg1:Number):Vector{
return (new Vector((x * _arg1), (y * _arg1)));
}
}
}//package org.cove.ape
Section 24
//wav (RandomCat.wav)
package RandomCat {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package RandomCat
Section 25
//wav (RandomDog.wav)
package RandomDog {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package RandomDog
Section 26
//wav (RandomSquirrel.wav)
package RandomSquirrel {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package RandomSquirrel
Section 27
//wav (SpikeHit.wav)
package SpikeHit {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package SpikeHit
Section 28
//wav (Splat1.wav)
package Splat1 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package Splat1
Section 29
//wav (Splat2.wav)
package Splat2 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package Splat2
Section 30
//wav (Splat3.wav)
package Splat3 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package Splat3
Section 31
//wav (StopCat.wav)
package StopCat {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package StopCat
Section 32
//wav (StopDog.wav)
package StopDog {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package StopDog
Section 33
//wav (StopSquirrel.wav)
package StopSquirrel {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package StopSquirrel
Section 34
//WAV (TrampolineBoing.WAV)
package TrampolineBoing {
import flash.media.*;
public dynamic class WAV extends Sound {
}
}//package TrampolineBoing
Section 35
//AbstractObstacle (AbstractObstacle)
package {
import flash.display.*;
import flash.geom.*;
public class AbstractObstacle extends Sprite {
var m_disabled:Boolean;
protected var m_animation:MovieClip;
public function AbstractObstacle(_arg1:MovieClip){
m_disabled = false;
m_animation = _arg1;
m_animation.gotoAndStop(1);
m_animation.cacheAsBitmap = true;
addChild(m_animation);
}
public function get CollisionRect():Rectangle{
return (new Rectangle((x - (width / 2)), (y - (height / 2)), width, height));
}
public function dispose(){
removeChild(m_animation);
m_animation = null;
}
public function collideWithDoll(_arg1:CannonGame){
trace("OVERRIDE ME");
}
function isDisabled():Boolean{
return (m_disabled);
}
function disable(){
m_disabled = true;
}
}
}//package
Section 36
//AbstractTheme (AbstractTheme)
package {
import flash.display.*;
public class AbstractTheme {
public function get Bomb():BombObstacle{
var _local1:BombObstacle;
var _local2:Number;
_local1 = new BombObstacle(new mc_ExplosivesGround());
_local2 = (50 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
public function get Bounce():BounceObstacle{
trace("OVERRIDE ME");
return (null);
}
public function get Stop():StopObstacle{
trace("OVERRIDE ME");
return (null);
}
public function get Air():AirObstacle{
var _local1:AirObstacle;
var _local2:Number;
_local1 = new AirObstacle(new mc_ExplosivesFloating());
_local2 = (45 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
public function get Floor():MovieClip{
trace("OVERRIDE ME");
return (null);
}
public function get Background():MovieClip{
trace("OVERRIDE ME");
return (null);
}
public function get Eat():EatObstacle{
trace("OVERRIDE ME");
return (null);
}
public function get Parallax1():MovieClip{
trace("OVERRIDE ME");
return (null);
}
public function get Parallax2():MovieClip{
trace("OVERRIDE ME");
return (null);
}
}
}//package
Section 37
//AirObstacle (AirObstacle)
package {
import flash.display.*;
import flash.geom.*;
public class AirObstacle extends AbstractObstacle {
private const k_yIncrease:Number = 200;
public function AirObstacle(_arg1:MovieClip){
super(_arg1);
}
override public function get CollisionRect():Rectangle{
return (new Rectangle((x - 30), y, (width / 2), (height / 2)));
}
override public function collideWithDoll(_arg1:CannonGame){
var _local2:*;
_local2 = ((_arg1.ForceY * 1.1) - _arg1.ForceY);
if (_local2 < k_yIncrease){
_local2 = k_yIncrease;
};
this.scaleX = 1.5;
this.scaleY = 1.5;
m_animation.gotoAndPlay(2);
_arg1.adjustForceBy(0, _local2);
_arg1.bounce(true);
_arg1.playSound("GroundExplode.wav");
disable();
}
}
}//package
Section 38
//AngleDownButton (AngleDownButton)
package {
import flash.media.*;
import flash.events.*;
import flash.utils.*;
import flash.display.*;
public class AngleDownButton extends MovieClip {
private const k_repeatDelay:Number = 60;
private const k_tick:Number = 20;
private var m_timer:Timer;
private var m_loop:Loop;
private var m_isButtonDown:Boolean;
private var m_game:CannonGame;
private var m_upClip:MovieClip;
private var m_downClip:MovieClip;
private var m_accruedTime:Number;
public function AngleDownButton(_arg1:CannonGame){
var _local2:Class;
var _local3:Sound;
super();
m_isButtonDown = false;
m_game = _arg1;
m_downClip = new mc_CannonControlArrowDownDown();
m_upClip = new mc_CannonControlArrowDownUp();
addChild(m_upClip);
addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
addEventListener(MouseEvent.MOUSE_OUT, handleMouseOut);
addEventListener(Event.ENTER_FRAME, handleFrame);
_local2 = (getDefinitionByName("CannonMoveLoop.wav") as Class);
_local3 = (new (_local2) as Sound);
m_loop = new Loop(_local3);
}
private function handleMouseUp(_arg1:Event){
m_isButtonDown = false;
removeChild(m_downClip);
addChild(m_upClip);
m_loop.stop();
}
private function updateTimer(_arg1:Event){
m_accruedTime = (m_accruedTime + k_tick);
if (m_accruedTime >= k_repeatDelay){
m_timer.stop();
m_timer = null;
addEventListener(Event.ENTER_FRAME, handleFrame);
};
}
private function handleFrame(_arg1:Event){
if (!(m_isButtonDown)){
return;
};
m_game.decreaseAngle();
removeEventListener(Event.ENTER_FRAME, handleFrame);
m_accruedTime = 0;
m_timer = new Timer(k_tick);
m_timer.addEventListener(TimerEvent.TIMER, updateTimer, false, 0, true);
m_timer.start();
}
private function handleMouseDown(_arg1:Event){
m_isButtonDown = true;
removeChild(m_upClip);
addChild(m_downClip);
m_loop.play();
}
private function handleMouseOut(_arg1:Event){
if (!(m_isButtonDown)){
return;
};
handleMouseUp(_arg1);
}
}
}//package
Section 39
//AngleUpButton (AngleUpButton)
package {
import flash.media.*;
import flash.events.*;
import flash.utils.*;
import flash.display.*;
public class AngleUpButton extends MovieClip {
private const k_repeatDelay:Number = 60;
private const k_tick:Number = 20;
private var m_timer:Timer;
private var m_loop:Loop;
private var m_isButtonDown:Boolean;
private var m_game:CannonGame;
private var m_upClip:MovieClip;
private var m_downClip:MovieClip;
private var m_accruedTime:Number;
public function AngleUpButton(_arg1:CannonGame){
var _local2:Class;
var _local3:Sound;
super();
m_isButtonDown = false;
m_accruedTime = 0;
m_game = _arg1;
m_downClip = new mc_CannonControlArrowUpDown();
m_upClip = new mc_CannonControlArrowUpUp();
addChild(m_upClip);
addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
addEventListener(MouseEvent.MOUSE_OUT, handleMouseOut);
addEventListener(Event.ENTER_FRAME, handleFrame);
_local2 = (getDefinitionByName("CannonMoveLoop.wav") as Class);
_local3 = (new (_local2) as Sound);
m_loop = new Loop(_local3);
}
private function handleMouseUp(_arg1:Event){
m_isButtonDown = false;
removeChild(m_downClip);
addChild(m_upClip);
m_loop.stop();
}
private function updateTimer(_arg1:Event){
m_accruedTime = (m_accruedTime + k_tick);
if (m_accruedTime >= k_repeatDelay){
m_timer.stop();
m_timer = null;
addEventListener(Event.ENTER_FRAME, handleFrame);
};
}
private function handleFrame(_arg1:Event){
if (!(m_isButtonDown)){
return;
};
m_game.increaseAngle();
removeEventListener(Event.ENTER_FRAME, handleFrame);
m_accruedTime = 0;
m_timer = new Timer(k_tick);
m_timer.addEventListener(TimerEvent.TIMER, updateTimer, false, 0, true);
m_timer.start();
}
private function handleMouseDown(_arg1:Event){
m_isButtonDown = true;
removeChild(m_upClip);
addChild(m_downClip);
m_loop.play();
}
private function handleMouseOut(_arg1:Event){
if (!(m_isButtonDown)){
return;
};
handleMouseUp(_arg1);
}
}
}//package
Section 40
//ArcadeTown_SplashMC (ArcadeTown_SplashMC)
package {
import flash.display.*;
public dynamic class ArcadeTown_SplashMC extends MovieClip {
}
}//package
Section 41
//ATHelpers (ATHelpers)
package {
public class ATHelpers {
public static function GetBaseUrl(_arg1){
var _local2:String;
var _local3:int;
var _local4:int;
var _local5:String;
_local2 = _arg1.toLowerCase();
_local3 = _local2.length;
_local4 = _local2.indexOf("?", 0);
if (_local4 > 0){
_local3 = _local4;
};
_local5 = "download";
if (_local2.substr(0, 4) == "http"){
_local5 = _arg1.substr(7, (_local3 - 7));
};
return (_local5);
}
public static function EncrpytString(_arg1:String){
var _local2:String;
var _local3:int;
var _local4:String;
var _local5:String;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:int;
_local2 = "aHfEjcDebChGiAfIjDbEjacD";
_local3 = _local2.length;
_local4 = "0";
_local5 = "";
_local6 = _arg1.length;
_local7 = 0;
_local5 = "";
_local11 = 0;
_local12 = 0;
while (_local12 < _local6) {
_local8 = _arg1.charCodeAt(_local12);
if (_local8 >= 128){
_local8 = 88;
};
_local9 = _local2.charCodeAt(_local7);
_local7 = (_local7 + 1);
if (_local7 >= _local3){
_local7 = 0;
};
_local10 = ((_local8 % 16) + _local9);
_local5 = (_local5 + String.fromCharCode(_local10));
_local11 = (_local11 + _local10);
_local9 = _local2.charCodeAt(_local7);
_local7 = (_local7 + 1);
if (_local7 >= _local3){
_local7 = 0;
};
_local10 = (Math.floor((_local8 / 16)) + _local9);
_local5 = (_local5 + String.fromCharCode(_local10));
_local11 = (_local11 + _local10);
_local12++;
};
_local11 = (_local11 % 0x0100);
_local9 = _local2.charCodeAt(_local7);
_local7 = (_local7 + 1);
if (_local7 >= _local3){
_local7 = 0;
};
_local10 = ((_local11 % 16) + _local9);
_local5 = (_local5 + String.fromCharCode(_local10));
_local9 = _local2.charCodeAt(_local7);
_local7 = (_local7 + 1);
if (_local7 >= _local3){
_local7 = 0;
};
_local10 = (Math.floor((_local11 / 16)) + _local9);
_local5 = (_local5 + String.fromCharCode(_local10));
return (_local5);
}
public static function generateHighscoreURL(_arg1:String){
var _local2:String;
_local2 = (("http://www.arcadetown.com/" + _arg1) + "/view_high_scores.asp");
return (_local2);
}
public static function GetUrlParam(_arg1:String, _arg2:String){
var _local3:String;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
_local3 = _arg1.toLowerCase();
_local4 = _local3.indexOf(_arg2);
_local5 = _arg2.length;
if (_local4 > 0){
_local7 = _local3.indexOf("&", (_local4 + _local5));
if (_local7 > 0){
_local6 = (_local7 - _local4);
} else {
_local6 = (_arg1.length - _local4);
};
return (_arg1.substr((_local4 + _local5), _local6));
};
return ("");
}
public static function generateHighscoreSubmission(_arg1:String, _arg2:String, _arg3:int){
var _local4:String;
var _local5:String;
var _local6:String;
_local4 = ((_arg2 + "|") + _arg3);
_local5 = EncrpytString(_local4);
_local6 = ((("http://www.arcadetown.com/" + _arg1) + "/hs.asp?") + _local5);
return (_local6);
}
}
}//package
Section 42
//BackButton (BackButton)
package {
import flash.display.*;
public class BackButton extends Sprite {
private var m_mc:SimpleButton;
public function BackButton(){
m_mc = new mc_UIMMBack();
addChild(m_mc);
}
}
}//package
Section 43
//BeachTheme (BeachTheme)
package {
import flash.display.*;
public class BeachTheme extends AbstractTheme {
override public function get Bounce():BounceObstacle{
var _local1:BounceObstacle;
var _local2:Number;
_local1 = new BounceObstacle(new mc_BeachTrampolineAnimation());
_local2 = (85 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Stop():StopObstacle{
var _local1:StopObstacle;
var _local2:Number;
_local1 = new StopObstacle(new mc_BeachSpike());
_local2 = (60 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Floor():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_BeachGround();
_local3.x = (_local2 * (_local3.width - 1));
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
override public function get Background():MovieClip{
return (new mc_BeachBackground());
}
override public function get Eat():EatObstacle{
var _local1:EatObstacle;
var _local2:Number;
_local1 = new EatObstacle(new mc_BeachFlytrapAnimation());
_local2 = (90 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Parallax1():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_BeachParallax1();
_local3.x = (_local2 * (_local3.width - 1));
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
override public function get Parallax2():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_BeachParallax2();
_local3.x = (_local2 * (_local3.width - 1));
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
}
}//package
Section 44
//BombObstacle (BombObstacle)
package {
import flash.display.*;
public class BombObstacle extends AbstractObstacle {
private const k_xIncrease:Number = 100;
private const k_yIncrease:Number = 100;
public function BombObstacle(_arg1:MovieClip){
super(_arg1);
}
override public function collideWithDoll(_arg1:CannonGame){
var _local2:*;
var _local3:*;
_local2 = ((_arg1.ForceX * 1.05) - _arg1.ForceX);
_local3 = ((_arg1.ForceY * 1.05) - _arg1.ForceY);
if (_local2 < k_xIncrease){
_local2 = k_xIncrease;
};
if (_local3 < k_yIncrease){
_local3 = k_yIncrease;
};
this.scaleX = 1.5;
this.scaleY = 1.5;
m_animation.gotoAndPlay(2);
_arg1.adjustForceBy(_local2, _local3);
_arg1.bounce(true);
_arg1.playSound("GroundExplode.wav");
disable();
}
}
}//package
Section 45
//BounceObstacle (BounceObstacle)
package {
import flash.display.*;
public class BounceObstacle extends AbstractObstacle {
private const k_xIncrease:Number = 160;
public function BounceObstacle(_arg1:MovieClip){
super(_arg1);
}
override public function collideWithDoll(_arg1:CannonGame){
var _local2:*;
_local2 = ((_arg1.ForceX * 1.1) - _arg1.ForceX);
if (_local2 < k_xIncrease){
_local2 = k_xIncrease;
};
m_animation.gotoAndPlay(2);
_arg1.adjustForceBy(_local2, 0);
_arg1.bounce(true);
_arg1.playSound("TrampolineBoing.WAV");
disable();
}
}
}//package
Section 46
//CannonApplication (CannonApplication)
package {
import flash.display.*;
import flash.ui.*;
import flash.events.*;
import flash.utils.*;
import flash.media.*;
import flash.net.*;
import flash.text.*;
import org.cove.ape.*;
public class CannonApplication extends MovieClip {
private const k_defaultAngle:Number = 30;
private const k_gravity:Number = 1;
private var m_availableCritters:Array;
private var m_sponsorFader:Fader;
private var m_beachTries:Array;
private var m_beachDistance:Number;// = 0
public var dt_percentLoaded:TextField;
private var m_mountainDistance:Number;// = 0
private var m_cursor:Sprite;
private var m_game:CannonGame;
private var m_parkDistance:Number;// = 0
private var m_lastAngle:Number;// = 30
private var m_parkTries:Array;
private var m_ui:UserInterface;
private var m_isAngleLoopPlaying:Boolean;// = false
private var m_stage:Number;
private var m_mountainTries:Array;
private var m_angleLoop:Loop;
public static const k_gameWidth:Number = 650;
public static const k_mountainGoal:Number = 1000;
public static const k_dog:Number = 1222062;
public static const k_cat:Number = 1222061;
public static const k_gameHeight:Number = 425;
public static const k_parkGoal:Number = 500;
public static const k_squirrel:Number = 1222060;
public static const k_beachGoal:Number = 750;
public function CannonApplication(){
var _local1:ContextMenu;
var _local2:FPSCounter;
m_availableCritters = new Array();
m_parkDistance = 0;
m_beachDistance = 0;
m_mountainDistance = 0;
m_parkTries = new Array();
m_beachTries = new Array();
m_mountainTries = new Array();
m_lastAngle = k_defaultAngle;
m_isAngleLoopPlaying = false;
super();
addFrameScript(0, frame1, 1, frame2, 2, frame3);
_local1 = new ContextMenu();
_local1.hideBuiltInItems();
this.contextMenu = _local1;
APEngine.init(0.33);
APEngine.collisionResponseMode = APEngine.SELECTIVE;
APEngine.addMasslessForce(new Vector(0, k_gravity));
_local2 = new FPSCounter();
addChild(_local2);
}
public function playSound(_arg1:String){
var _local2:SoundSystem;
_local2 = SoundSystem.getSingleton();
_local2.playSound(_arg1);
}
public function get Game():CannonGame{
return (m_game);
}
public function stopGame(){
removeChild(m_game);
removeChild(m_ui);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
stage.removeEventListener(KeyboardEvent.KEY_UP, handleKeyUp);
}
public function getCurrentLevel():int{
return (m_stage);
}
public function getAttemptsLeft():int{
return (m_availableCritters.length);
}
public function getCurrentLevelName():String{
switch (m_stage){
case 0:
return ("Park");
case 1:
return ("Beach");
case 2:
return ("Mountain");
};
return ("???");
}
public function updateLoader(_arg1:Event){
var _local2:Number;
var _local3:Number;
_local2 = _arg1.target.bytesLoaded;
_local3 = _arg1.target.bytesTotal;
dt_percentLoaded.text = String(Math.floor(((_local2 / _local3) * 100)));
}
public function set ParkDistance(_arg1:Number){
m_parkTries.push(_arg1);
if (m_parkDistance < _arg1){
m_parkDistance = _arg1;
};
}
private function handleKeyUp(_arg1:KeyboardEvent){
switch (_arg1.keyCode){
case Keyboard.UP:
case Keyboard.DOWN:
m_angleLoop.stop();
m_isAngleLoopPlaying = false;
break;
};
}
public function showGameCallback(){
var _local1:SoundSystem;
m_cursor = new Sprite();
m_cursor.addChild(new mc_UIPointer());
addChild(m_cursor);
stage.addEventListener(Event.MOUSE_LEAVE, cursorHide);
stage.addEventListener(MouseEvent.MOUSE_MOVE, cursorFollow);
m_cursor.visible = false;
Mouse.hide();
_local1 = SoundSystem.getSingleton();
_local1.playLoop("default.WAV");
beginGame();
}
public function onPreloadFinish(){
var _local1:Class;
var _local2:Sound;
var _local3:String;
var _local4:MovieClip;
_local1 = (getDefinitionByName("CannonMoveLoop.wav") as Class);
_local2 = (new (_local1) as Sound);
m_angleLoop = new Loop(_local2);
_local3 = this.loaderInfo.url;
if (_local3.toLowerCase().indexOf("uploads.ungrounded.net") >= 0){
_local4 = new Newgrounds_SplashMC();
} else {
_local4 = new ArcadeTown_SplashMC();
_local4.addEventListener(MouseEvent.CLICK, loadSponsorWebsite);
};
m_sponsorFader = new Fader(_local4, 2500, 350, this.showGameCallback);
addChild(m_sponsorFader);
}
public function areGoalsPassed():Boolean{
return (!((((((((m_parkDistance > 0)) && ((m_parkDistance < k_parkGoal)))) || ((((m_beachDistance > 0)) && ((m_beachDistance < k_beachGoal)))))) || ((((m_mountainDistance > 0)) && ((m_mountainDistance < k_mountainGoal)))))));
}
public function getCurrentStageScoreAt(_arg1:Number){
if (_arg1 >= (3 - getAttemptsLeft())){
return (0);
};
switch (m_stage){
case 0:
return (m_parkTries[_arg1]);
case 1:
return (m_beachTries[_arg1]);
case 2:
return (m_mountainTries[_arg1]);
};
return (0);
}
function frame1(){
this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, updateLoader);
this.loaderInfo.addEventListener(Event.COMPLETE, finishLoader);
changeVolume(0);
stop();
}
public function getNextCritter():int{
return (m_availableCritters[0]);
}
private function handleKeyDown(_arg1:KeyboardEvent){
switch (_arg1.keyCode){
case Keyboard.UP:
m_game.increaseAngle();
if (!(m_isAngleLoopPlaying)){
m_angleLoop.play();
m_isAngleLoopPlaying = true;
};
break;
case Keyboard.DOWN:
m_game.decreaseAngle();
if (!(m_isAngleLoopPlaying)){
m_angleLoop.play();
m_isAngleLoopPlaying = true;
};
break;
case Keyboard.SPACE:
m_game.launch(m_ui.Slider.Percent);
break;
};
}
function frame3(){
changeVolume(1);
this.onPreloadFinish();
stop();
}
public function startGame(_arg1:Boolean=false){
m_game = new CannonGame(this, getThemeFromStage());
addChildAt(m_game, 0);
m_ui = new UserInterface(this, m_availableCritters, _arg1);
m_ui.updateAngle(m_lastAngle);
addChildAt(m_ui, 1);
stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, handleKeyUp);
}
function frame2(){
nextFrame();
}
private function getThemeFromStage():AbstractTheme{
switch (m_stage){
case 0:
return (new ParkTheme());
case 1:
return (new BeachTheme());
case 2:
return (new MountainTheme());
};
return (null);
}
public function finishLoader(_arg1:Event){
play();
}
private function resetAvailableCritters(){
m_availableCritters.push(k_cat);
m_availableCritters.push(k_dog);
m_availableCritters.push(k_squirrel);
}
public function set BeachDistance(_arg1:Number){
m_beachTries.push(_arg1);
if (m_beachDistance < _arg1){
m_beachDistance = _arg1;
};
}
public function set MountainDistance(_arg1:Number){
m_mountainTries.push(_arg1);
if (m_mountainDistance < _arg1){
m_mountainDistance = _arg1;
};
}
public function get LastAngle():Number{
return (m_lastAngle);
}
public function get UI():UserInterface{
return (m_ui);
}
private function loadSponsorWebsite(_arg1:MouseEvent){
var url:String;
var request:URLRequest;
var a_event = _arg1;
url = "http://www.arcadetown.com/index.asp?gameid=crittercannon";
request = new URLRequest(url);
try {
navigateToURL(request, "_blank");
} catch(e:Error) {
};
}
public function showDistanceResults(_arg1:Number){
stage.removeEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown);
stage.removeEventListener(KeyboardEvent.KEY_UP, handleKeyUp);
m_ui.showResults(_arg1);
}
public function set LastAngle(_arg1:Number){
m_lastAngle = _arg1;
}
public function beginGame(){
m_stage = 0;
m_parkDistance = 0;
m_beachDistance = 0;
m_mountainDistance = 0;
m_parkTries.splice(0);
m_beachTries.splice(0);
m_mountainTries.splice(0);
resetAvailableCritters();
if (m_game != null){
stopGame();
};
startGame(true);
}
public function setDoll(_arg1:Number){
m_availableCritters.splice(m_availableCritters.indexOf(_arg1), 1);
m_game.Doll = _arg1;
}
public function getCurrentBest():Number{
switch (m_stage){
case 0:
return (m_parkDistance);
case 1:
return (m_beachDistance);
case 2:
return (m_mountainDistance);
};
return (0);
}
public function cursorHide(_arg1:Event):void{
m_cursor.visible = false;
}
public function cursorFollow(_arg1:MouseEvent):void{
if (!(m_cursor.visible)){
m_cursor.visible = true;
};
m_cursor.x = stage.mouseX;
m_cursor.y = stage.mouseY;
_arg1.updateAfterEvent();
}
public function resetGame(){
if ((((m_availableCritters.length == 0)) && (!(areGoalsPassed())))){
m_ui.showFinalResults(m_parkDistance, m_beachDistance, m_mountainDistance);
return;
};
if (m_availableCritters.length != 0){
stopGame();
startGame();
} else {
m_stage++;
if (m_stage < 3){
stopGame();
resetAvailableCritters();
startGame();
} else {
m_ui.showFinalResults(m_parkDistance, m_beachDistance, m_mountainDistance);
};
};
}
public function getCurrentGoalNumber():Number{
switch (m_stage){
case 0:
return (k_parkGoal);
case 1:
return (k_beachGoal);
case 2:
return (k_mountainGoal);
};
return (100);
}
public function changeVolume(_arg1:Number){
var _local2:SoundTransform;
_local2 = new SoundTransform();
_local2.volume = _arg1;
SoundMixer.soundTransform = _local2;
}
public function getCurrentGoal():String{
var _local1:String;
_local1 = "Goal: ";
switch (m_stage){
case 0:
_local1 = (_local1 + k_parkGoal);
break;
case 1:
_local1 = (_local1 + k_beachGoal);
break;
case 2:
_local1 = (_local1 + k_mountainGoal);
break;
default:
_local1 = (_local1 + 100);
break;
};
return ((_local1 + " ft"));
}
}
}//package
Section 47
//CannonGame (CannonGame)
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import org.cove.ape.*;
import com.gamedozer.math.*;
public class CannonGame extends Sprite {
private const k_obstaclesEvery:Number = 350;
private const k_defaultFloorBounceLossPercent:Number = 0.75;
private const k_floorElasticity:Number = 0.5;
private const k_floorY:Number = 395;
private const k_floorFriction:Number = 0;
private const k_angleStep:Number = 1;
private const k_pixelsToDistance:Number = 20;
private const k_floorHeight:Number = 30;
private const k_forceStep:Number = 100;
private const k_minimumAngle:Number = 10;
private const k_minimumForce:Number = 600;
private const k_maximumAngle:Number = 80;
private const k_maximumForce:Number = 4000;
private var m_fireForce:Number;
private var m_hasLaunchHappened:Boolean;
private var m_parallax1:MovieClip;// = null
private var m_parallax2:MovieClip;// = null
private var m_background:MovieClip;// = null
private var m_app:CannonApplication;
private var m_theme:AbstractTheme;
private var m_ragdoll:RagDoll;
private var m_pixelsSinceObstacle:Number;
private var m_ragdollChoice:Number;
private var m_obstacles:Array;
private var m_dollStartX:Number;
private var m_bounceLossPercent:Number;
private var m_fireForceX:Number;
private var m_cannonBarrel:MovieClip;
private var m_floor:RectangleParticle;
private var m_fireForceY:Number;
private var m_floorImage:MovieClip;
private var m_isReadyToBounce:Boolean;
private var m_bloods:Array;
private var m_cannonLegs:MovieClip;
private var m_fireAngle:Number;
public function CannonGame(_arg1:CannonApplication, _arg2:AbstractTheme){
var _local3:Number;
m_background = null;
m_parallax1 = null;
m_parallax2 = null;
m_obstacles = new Array();
m_bloods = new Array();
super();
m_app = _arg1;
m_theme = _arg2;
m_fireForce = k_minimumForce;
m_fireAngle = _arg1.LastAngle;
m_hasLaunchHappened = false;
m_isReadyToBounce = false;
m_pixelsSinceObstacle = 0;
m_bounceLossPercent = k_defaultFloorBounceLossPercent;
m_background = m_theme.Background;
m_background.x = 0;
m_background.y = (k_floorY - m_background.height);
m_background.cacheAsBitmap = true;
addChild(m_background);
m_parallax2 = m_theme.Parallax2;
m_parallax2.cacheAsBitmap = true;
m_parallax2.x = 0;
m_parallax2.y = (k_floorY - 75);
addChild(m_parallax2);
m_parallax1 = m_theme.Parallax1;
m_parallax1.cacheAsBitmap = true;
m_parallax1.x = 0;
m_parallax1.y = (k_floorY - 75);
addChild(m_parallax1);
m_floorImage = m_theme.Floor;
m_floorImage.cacheAsBitmap = true;
m_floorImage.y = (k_floorY - 75);
addChild(m_floorImage);
m_cannonBarrel = new mc_CannonBarrel();
_local3 = (150 / m_cannonBarrel.width);
m_cannonBarrel.x = 260;
m_cannonBarrel.y = ((k_floorY - (m_cannonBarrel.height / 4)) - 50);
m_cannonBarrel.rotation = -(m_fireAngle);
m_cannonBarrel.scaleX = _local3;
m_cannonBarrel.scaleY = _local3;
m_cannonBarrel.mc_innerAnimation.gotoAndStop(1);
addChild(m_cannonBarrel);
m_cannonLegs = new mc_CannonLegs();
m_cannonLegs.x = 250;
m_cannonLegs.y = (k_floorY - (m_cannonLegs.height / 4));
m_cannonLegs.scaleX = _local3;
m_cannonLegs.scaleY = _local3;
addChild(m_cannonLegs);
APEngine.defaultContainer = this;
m_floor = new RectangleParticle((CannonApplication.k_gameWidth / 2), (CannonApplication.k_gameHeight - (k_floorHeight / 2)), (CannonApplication.k_gameWidth * 2), k_floorHeight, 0, true, 1, k_floorElasticity, k_floorFriction);
m_floor.visible = false;
APEngine.addParticle(m_floor);
}
public function stopForce(){
m_fireForce = 0;
m_fireForceX = 0;
m_fireForceY = 0;
m_ragdoll.stop();
}
public function adjustForceBy(_arg1:Number, _arg2:Number){
m_fireForceX = (m_fireForceX + _arg1);
m_fireForceY = (m_fireForceY + _arg2);
if (m_fireForceX < 0){
m_fireForceX = 0;
};
if (m_fireForceY < 0){
m_fireForceY = 0;
};
}
public function createBloodGeyser(){
var _local1:MovieClip;
_local1 = new mc_BloodGeyser();
_local1.x = (m_ragdoll.x - 50);
_local1.y = m_ragdoll.y;
m_bloods.push(_local1);
addChild(_local1);
}
function dispose(){
var _local1:Array;
var _local2:int;
var _local3:Array;
var _local4:int;
_local1 = APEngine.getAllParticles();
_local2 = 0;
while (_local2 < _local1.length) {
APEngine.removeParticle(_local1[_local2]);
_local2++;
};
_local1.splice(0);
_local3 = APEngine.getAllConstraints();
_local4 = 0;
while (_local4 < _local3.length) {
APEngine.removeConstraint(_local3[_local4]);
_local4++;
};
_local3.splice(0);
removeEventListener(Event.ENTER_FRAME, handleFrame);
}
private function handleFrame(_arg1:Event){
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
_local2 = m_ragdoll.x;
_local3 = m_ragdoll.y;
APEngine.step();
m_floor.paint();
m_ragdoll.update();
m_floor.px = m_ragdoll.x;
_local4 = (m_ragdoll.x - _local2);
_local5 = (-(m_ragdoll.x) + (CannonApplication.k_gameWidth / 3));
_local6 = (-(m_ragdoll.y) + (CannonApplication.k_gameHeight / 2));
_local7 = -600;
if ((((m_ragdoll.y < _local7)) && ((_local3 >= _local7)))){
playSound((("Random" + getDollAsString()) + ".wav"));
};
this.x = _local5;
if (m_ragdoll.y < 215){
this.y = _local6;
};
if (m_background != null){
m_background.x = -(x);
};
if ((-(_local5) + CannonApplication.k_gameWidth) > (m_floorImage.x + m_floorImage.width)){
m_floorImage.x = (m_floorImage.x + ((m_floorImage.width * 1) / 3));
};
if (m_parallax1 != null){
m_parallax1.x = (m_parallax1.x + (_local4 / 1.5));
if ((-(_local5) + CannonApplication.k_gameWidth) > (m_parallax1.x + m_parallax1.width)){
m_parallax1.x = (m_parallax1.x + ((m_parallax1.width * 1) / 3));
};
};
if (m_parallax2 != null){
m_parallax2.x = (m_parallax2.x + (_local4 / 1.1));
if ((-(_local5) + CannonApplication.k_gameWidth) > (m_parallax2.x + m_parallax2.width)){
m_parallax2.x = (m_parallax2.x + ((m_parallax2.width * 1) / 3));
};
};
if (m_hasLaunchHappened){
doPostLaunchStep(_local2, _local3);
};
m_ragdoll.paint();
}
public function get ForceY(){
return (m_fireForceY);
}
public function playSound(_arg1:String){
m_app.playSound(_arg1);
}
public function bounce(_arg1:Boolean=false){
var _local2:Vector;
var _local3:MovieClip;
var _local4:Number;
var _local5:int;
_local2 = new Vector(m_fireForceX, -(m_fireForceY));
m_ragdoll.stop();
m_ragdoll.applyForce(_local2);
m_fireForce = (m_fireForce * m_bounceLossPercent);
m_bounceLossPercent = k_defaultFloorBounceLossPercent;
if (_arg1){
return;
};
_local4 = Math.floor((Math.random() * 3));
switch (_local4){
case 0:
_local3 = new mc_Blood1();
break;
case 1:
_local3 = new mc_Blood2();
break;
case 2:
_local3 = new mc_Blood3();
break;
default:
_local3 = new mc_Blood1();
break;
};
_local3.x = m_ragdoll.x;
_local3.y = k_floorY;
_local3.visible = m_ragdoll.visible;
m_bloods.push(_local3);
addChildAt(_local3, 6);
_local5 = (1 + Math.floor((Math.random() * 3)));
playSound((("Splat" + _local5) + ".wav"));
}
private function addObstacle(_arg1:Number){
var _local2:Number;
var _local3:AbstractObstacle;
_local2 = Math.floor((Math.random() * 16));
switch (_local2){
case 0:
case 1:
case 2:
case 3:
_local3 = m_theme.Bounce;
break;
case 4:
case 5:
case 6:
_local3 = m_theme.Eat;
break;
case 7:
case 8:
case 9:
_local3 = m_theme.Stop;
break;
case 10:
case 11:
case 12:
_local3 = m_theme.Bomb;
break;
case 13:
case 14:
case 15:
_local3 = m_theme.Air;
break;
};
_local3.x = _arg1;
_local3.y = (k_floorY - (_local3.height / 2));
if ((_local3 is AirObstacle)){
_local3.y = (_local3.y - (100 + (Math.floor((Math.random() * 8)) * 25)));
};
m_obstacles.push(_local3);
addChildAt(_local3, 6);
}
private function endLaunch(){
var _local1:Number;
m_hasLaunchHappened = false;
_local1 = calculateDistance();
handleAttemptDistance(_local1);
dispose();
}
private function doPostLaunchStep(_arg1:Number, _arg2:Number){
var _local3:Boolean;
var _local4:int;
var _local5:AbstractObstacle;
var _local6:MovieClip;
var _local7:Number;
_local3 = false;
_local4 = (m_obstacles.length - 1);
while (_local4 >= 0) {
_local5 = m_obstacles[_local4];
if (!(_local5.isDisabled())){
if (m_ragdoll.isIntersecting(_local5.CollisionRect)){
_local5.collideWithDoll(this);
_local3 = true;
};
};
if (_local5.x < (m_ragdoll.x - (CannonApplication.k_gameWidth / 2))){
_local5.dispose();
m_obstacles.splice(_local4, 1);
removeChild(_local5);
};
_local4--;
};
_local4 = (m_bloods.length - 1);
while (_local4 >= 0) {
_local6 = m_bloods[_local4];
if (_local6.x < (m_ragdoll.x - (CannonApplication.k_gameWidth / 2))){
m_bloods.splice(_local4, 1);
removeChild(_local6);
};
_local4--;
};
m_pixelsSinceObstacle = (m_pixelsSinceObstacle + (m_ragdoll.x - _arg1));
while (m_pixelsSinceObstacle >= k_obstaclesEvery) {
_local7 = ((m_ragdoll.x + CannonApplication.k_gameWidth) - (k_obstaclesEvery * (1 - (m_pixelsSinceObstacle / k_obstaclesEvery))));
addObstacle(_local7);
m_pixelsSinceObstacle = (m_pixelsSinceObstacle - k_obstaclesEvery);
};
m_app.UI.updateDistance(calculateDistance(), m_app.getCurrentGoalNumber());
if (((!(_local3)) && (!(m_ragdoll.isMoving())))){
endLaunch();
playSound((("Stop" + getDollAsString()) + ".wav"));
};
if (((m_isReadyToBounce) && ((m_ragdoll.y > (k_floorY - 10))))){
m_isReadyToBounce = false;
m_fireForceX = (m_fireForceX * m_ragdoll.Bounciness);
m_fireForceY = (m_fireForceY * m_ragdoll.Bounciness);
bounce();
} else {
if (m_ragdoll.y <= (k_floorY - 10)){
m_isReadyToBounce = true;
};
};
}
private function handleAttemptDistance(_arg1:Number){
if ((m_theme is ParkTheme)){
m_app.ParkDistance = _arg1;
} else {
if ((m_theme is BeachTheme)){
m_app.BeachDistance = _arg1;
} else {
if ((m_theme is MountainTheme)){
m_app.MountainDistance = _arg1;
};
};
};
m_app.showDistanceResults(_arg1);
}
private function calculateDistance():Number{
return (Math.floor(((m_ragdoll.x - m_dollStartX) / k_pixelsToDistance)));
}
public function increaseAngle(){
if (m_fireAngle >= k_maximumAngle){
return;
};
m_fireAngle = (m_fireAngle + k_angleStep);
m_cannonBarrel.rotation = -(m_fireAngle);
m_app.UI.updateAngle(m_fireAngle);
}
public function launch(_arg1:Number){
var _local2:Vector2;
var _local3:Number;
var _local4:Number;
if (m_hasLaunchHappened){
return;
};
m_app.LastAngle = m_fireAngle;
m_app.UI.launch();
m_cannonBarrel.mc_innerAnimation.gotoAndPlay(2);
_local2 = new Vector2(1, 0);
_local2.setAngle((m_fireAngle - 90));
_local2.normalize((m_cannonBarrel.width / 2));
_local3 = (m_cannonBarrel.x + _local2.x);
_local4 = (m_cannonBarrel.y + _local2.y);
switch (m_ragdollChoice){
case CannonApplication.k_squirrel:
m_ragdoll = new SquirrelDoll(_local3, _local4);
break;
case CannonApplication.k_cat:
m_ragdoll = new CatDoll(_local3, _local4);
break;
case CannonApplication.k_dog:
m_ragdoll = new DogDoll(_local3, _local4);
break;
};
m_dollStartX = _local3;
addEventListener(Event.ENTER_FRAME, handleFrame);
m_fireForce = (k_minimumForce + ((k_maximumForce - k_minimumForce) * (_arg1 / 100)));
m_fireForceX = (m_fireForce * Math.cos((m_fireAngle * (Math.PI / 180))));
m_fireForceY = (m_fireForce * Math.sin((m_fireAngle * (Math.PI / 180))));
bounce(true);
m_hasLaunchHappened = true;
playSound("CannonFire.wav");
}
public function hideDoll(){
m_ragdoll.Visibility = false;
}
private function update(_arg1:Event){
}
public function getDollAsString():String{
if (m_ragdollChoice == CannonApplication.k_dog){
return ("Dog");
};
if (m_ragdollChoice == CannonApplication.k_cat){
return ("Cat");
};
if (m_ragdollChoice == CannonApplication.k_squirrel){
return ("Squirrel");
};
trace(("Unknown animal type: " + m_ragdollChoice));
return ("");
}
public function decreaseAngle(){
if (m_fireAngle <= k_minimumAngle){
return;
};
m_fireAngle = (m_fireAngle - k_angleStep);
m_cannonBarrel.rotation = -(m_fireAngle);
m_app.UI.updateAngle(m_fireAngle);
}
public function set Doll(_arg1:Number){
m_ragdollChoice = _arg1;
}
public function get ForceX(){
return (m_fireForceX);
}
}
}//package
Section 48
//CatButton (CatButton)
package {
import flash.events.*;
import flash.display.*;
public class CatButton extends MovieClip implements HackButton {
private var m_ui:UserInterface;
private var m_mc:MovieClip;
public function CatButton(_arg1:UserInterface){
m_ui = _arg1;
m_mc = new mc_UICatAvailable();
m_mc.gotoAndStop(1);
addChild(m_mc);
}
public function dispose(){
removeEventListener(Event.ENTER_FRAME, update);
}
private function handleClick(_arg1:Event){
if (!(this.enabled)){
return;
};
SoundSystem.getSingleton().playSound("ButtonPress.wav");
m_ui.selectDoll(CannonApplication.k_cat);
}
function update(_arg1:Event){
if (!(this.enabled)){
return;
};
if (m_mc.hitTestPoint(this.stage.mouseX, this.stage.mouseY)){
m_mc.gotoAndStop(2);
} else {
m_mc.gotoAndStop(1);
};
}
}
}//package
Section 49
//CatDoll (CatDoll)
package {
import org.cove.ape.*;
public class CatDoll extends RagDoll {
public function CatDoll(_arg1:Number, _arg2:Number){
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:CircleParticle;
var _local18:CircleParticle;
var _local19:CircleParticle;
var _local20:CircleParticle;
var _local21:CircleParticle;
var _local22:CircleParticle;
var _local23:CircleParticle;
var _local24:CircleParticle;
var _local25:CircleParticle;
var _local26:CircleParticle;
var _local27:CircleParticle;
var _local28:CircleParticle;
var _local29:CircleParticle;
var _local30:SpringConstraint;
var _local31:SpringConstraint;
var _local32:SpringConstraint;
var _local33:SpringConstraint;
var _local34:SpringConstraint;
var _local35:SpringConstraint;
var _local36:SpringConstraint;
var _local37:SpringConstraint;
var _local38:SpringConstraint;
var _local39:SpringConstraint;
var _local40:SpringConstraint;
var _local41:SpringConstraint;
var _local42:SpringConstraint;
var _local43:SpringConstraint;
var _local44:SpringConstraint;
var _local45:SpringConstraint;
var _local46:SpringConstraint;
var _local47:SpringConstraint;
var _local48:SpringConstraint;
var _local49:SpringConstraint;
var _local50:SpringConstraint;
var _local51:Number;
var _local52:SpringConstraint;
var _local53:SpringConstraint;
var _local54:SpringConstraint;
var _local55:SpringConstraint;
super();
m_bounciness = 0.7;
_local3 = 15;
_local4 = 27;
_local5 = (_local4 / 2);
_local6 = 17;
_local7 = 7;
_local8 = 9;
_local9 = (((_local4 - _local7) - _local8) / 2);
_local10 = 2;
_local11 = 5;
_local12 = 1;
_local13 = 12;
_local14 = 6;
_local15 = _arg1;
_local16 = _arg2;
_local17 = createBodyPart(_local15, _local16, _local7, _local13);
_local18 = createBodyPart(_local15, (_local16 + _local5), _local9, 1);
_local19 = createBodyPart(_local15, (_local16 + _local4), _local8, _local14, true);
_local20 = createBodyPart(((_local15 - _local9) + _local10), (_local16 + _local5), _local10, 1);
_local21 = createBodyPart(((_local15 + _local9) - _local10), (_local16 + _local5), _local10, 1);
_local22 = createBodyPart(((_local15 - _local8) + _local10), (_local16 + _local4), _local10, 1);
_local23 = createBodyPart(((_local15 + _local8) - _local10), (_local16 + _local4), _local10, 1);
_local24 = createBodyPart(_local15, (((_local16 + _local4) + _local8) - _local10), _local10, 1);
_local25 = createBodyPart((_local15 - _local3), _local16, _local11, _local12);
_local26 = createBodyPart((_local15 + _local3), _local16, _local11, _local12);
_local27 = createBodyPart(((_local15 - _local3) - _local8), (_local16 + _local4), _local11, _local12);
_local28 = createBodyPart(((_local15 + _local3) + _local8), (_local16 + _local4), _local11, _local12);
_local29 = createBodyPart(_local15, (((_local16 + _local4) + _local6) + _local8), _local11, _local12);
_local30 = createLimb(_local17, _local18, null);
_local31 = createLimb(_local18, _local19, null);
_local32 = createLimb(_local20, _local21, null);
_local33 = createLimb(_local20, _local18, null);
_local34 = createLimb(_local20, _local19, null);
_local35 = createLimb(_local21, _local18, null);
_local36 = createLimb(_local21, _local19, null);
_local37 = createLimb(_local22, _local23, null);
_local38 = createLimb(_local22, _local18, null);
_local39 = createLimb(_local22, _local19, null);
_local40 = createLimb(_local23, _local18, null);
_local41 = createLimb(_local23, _local19, null);
_local42 = createLimb(_local24, _local17, null);
_local43 = createLimb(_local24, _local19, null);
_local44 = createLimb(_local24, _local18, null);
_local45 = createLimb(_local25, _local20, new mc_CatPawLeft());
_local46 = createLimb(_local26, _local21, new mc_CatPawRight());
_local47 = createLimb(_local29, _local24, new mc_CatTail());
_local48 = createLimb(_local27, _local22, new mc_CatPawLeft());
_local49 = createLimb(_local28, _local23, new mc_CatPawRight());
_local50 = createLimb(_local17, _local19, new mc_CatTorso());
_local51 = 0.05;
_local52 = createLimb(_local25, _local27, null, _local51);
_local53 = createLimb(_local26, _local28, null, _local51);
_local54 = createLimb(_local25, _local26, null, _local51);
_local55 = createLimb(_local27, _local28, null, _local51);
calculateDimensions();
}
}
}//package
Section 50
//ContinueButton (ContinueButton)
package {
import flash.display.*;
public class ContinueButton extends Sprite {
private var m_mc:SimpleButton;
public function ContinueButton(){
m_mc = new mc_UIResultsContinue();
addChild(m_mc);
}
}
}//package
Section 51
//CreditsButton (CreditsButton)
package {
import flash.display.*;
public class CreditsButton extends Sprite {
private var m_mc:SimpleButton;
public function CreditsButton(){
m_mc = new mc_UIMMCredits();
addChild(m_mc);
}
}
}//package
Section 52
//Delegate (Delegate)
package {
public class Delegate {
public static function create(_arg1, _arg2:Function, ... _args):Function{
var delegate:Function;
var target = _arg1;
var handler = _arg2;
var rest = _args;
delegate = function (... _args){
var _local2:Array;
_local2 = _args.concat(rest);
return (handler.apply(target, _local2));
};
return (delegate);
}
}
}//package
Section 53
//DogButton (DogButton)
package {
import flash.events.*;
import flash.display.*;
public class DogButton extends MovieClip implements HackButton {
private var m_ui:UserInterface;
private var m_mc:MovieClip;
public function DogButton(_arg1:UserInterface){
m_ui = _arg1;
m_mc = new mc_UIDogAvailable();
m_mc.gotoAndStop(1);
addChild(m_mc);
}
public function dispose(){
removeEventListener(Event.ENTER_FRAME, update);
}
private function handleClick(_arg1:Event){
if (!(this.enabled)){
return;
};
SoundSystem.getSingleton().playSound("ButtonPress.wav");
m_ui.selectDoll(CannonApplication.k_dog);
}
function update(_arg1:Event){
if (!(this.enabled)){
return;
};
if (m_mc.hitTestPoint(this.stage.mouseX, this.stage.mouseY)){
m_mc.gotoAndStop(2);
} else {
m_mc.gotoAndStop(1);
};
}
}
}//package
Section 54
//DogDoll (DogDoll)
package {
import org.cove.ape.*;
public class DogDoll extends RagDoll {
public function DogDoll(_arg1:Number, _arg2:Number){
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:CircleParticle;
var _local18:CircleParticle;
var _local19:CircleParticle;
var _local20:CircleParticle;
var _local21:CircleParticle;
var _local22:CircleParticle;
var _local23:CircleParticle;
var _local24:CircleParticle;
var _local25:CircleParticle;
var _local26:CircleParticle;
var _local27:CircleParticle;
var _local28:CircleParticle;
var _local29:CircleParticle;
var _local30:SpringConstraint;
var _local31:SpringConstraint;
var _local32:SpringConstraint;
var _local33:SpringConstraint;
var _local34:SpringConstraint;
var _local35:SpringConstraint;
var _local36:SpringConstraint;
var _local37:SpringConstraint;
var _local38:SpringConstraint;
var _local39:SpringConstraint;
var _local40:SpringConstraint;
var _local41:SpringConstraint;
var _local42:SpringConstraint;
var _local43:SpringConstraint;
var _local44:SpringConstraint;
var _local45:SpringConstraint;
var _local46:SpringConstraint;
var _local47:SpringConstraint;
var _local48:SpringConstraint;
var _local49:SpringConstraint;
var _local50:SpringConstraint;
var _local51:Number;
var _local52:SpringConstraint;
var _local53:SpringConstraint;
var _local54:SpringConstraint;
var _local55:SpringConstraint;
super();
m_bounciness = 0.6;
_local3 = 10;
_local4 = 32;
_local5 = (_local4 / 2);
_local6 = 12;
_local7 = 6;
_local8 = 8;
_local9 = (((_local4 - _local7) - _local8) / 2);
_local10 = 0.75;
_local11 = 5;
_local12 = 1;
_local13 = 10;
_local14 = 5;
_local15 = _arg1;
_local16 = _arg2;
_local17 = createBodyPart(_local15, _local16, _local7, _local13);
_local18 = createBodyPart(_local15, (_local16 + _local5), _local9, 1);
_local19 = createBodyPart(_local15, (_local16 + _local4), _local8, _local14, true);
_local20 = createBodyPart(((_local15 - _local9) + _local10), (_local16 + _local5), _local10, 1);
_local21 = createBodyPart(((_local15 + _local9) - _local10), (_local16 + _local5), _local10, 1);
_local22 = createBodyPart(((_local15 - _local8) + _local10), (_local16 + _local4), _local10, 1);
_local23 = createBodyPart(((_local15 + _local8) - _local10), (_local16 + _local4), _local10, 1);
_local24 = createBodyPart(_local15, (((_local16 + _local4) + _local8) - (_local10 * 2)), _local10, 1);
_local25 = createBodyPart((_local15 - _local3), _local16, _local11, _local12);
_local26 = createBodyPart((_local15 + _local3), _local16, _local11, _local12);
_local27 = createBodyPart(((_local15 - _local3) - _local8), (_local16 + _local4), _local11, _local12);
_local28 = createBodyPart(((_local15 + _local3) + _local8), (_local16 + _local4), _local11, _local12);
_local29 = createBodyPart(_local15, (((_local16 + _local4) + _local6) + _local8), _local11, _local12);
_local30 = createLimb(_local17, _local18, null);
_local31 = createLimb(_local18, _local19, null);
_local32 = createLimb(_local20, _local21, null);
_local33 = createLimb(_local20, _local18, null);
_local34 = createLimb(_local20, _local19, null);
_local35 = createLimb(_local21, _local18, null);
_local36 = createLimb(_local21, _local19, null);
_local37 = createLimb(_local22, _local23, null);
_local38 = createLimb(_local22, _local18, null);
_local39 = createLimb(_local22, _local19, null);
_local40 = createLimb(_local23, _local18, null);
_local41 = createLimb(_local23, _local19, null);
_local42 = createLimb(_local24, _local17, null);
_local43 = createLimb(_local24, _local19, null);
_local44 = createLimb(_local24, _local18, null);
_local45 = createLimb(_local25, _local20, new mc_DogPawLeft());
_local46 = createLimb(_local26, _local21, new mc_DogPawRight());
_local47 = createLimb(_local29, _local24, new mc_DogTail());
_local48 = createLimb(_local27, _local22, new mc_DogPawLeft());
_local49 = createLimb(_local28, _local23, new mc_DogPawRight());
_local50 = createLimb(_local17, _local19, new mc_DogTorso());
_local51 = 0.05;
_local52 = createLimb(_local25, _local27, null, _local51);
_local53 = createLimb(_local26, _local28, null, _local51);
_local54 = createLimb(_local25, _local26, null, _local51);
_local55 = createLimb(_local27, _local28, null, _local51);
calculateDimensions();
}
}
}//package
Section 55
//EatObstacle (EatObstacle)
package {
import flash.display.*;
public class EatObstacle extends AbstractObstacle {
public function EatObstacle(_arg1:MovieClip){
super(_arg1);
}
override public function collideWithDoll(_arg1:CannonGame){
m_animation.gotoAndPlay(2);
_arg1.stopForce();
_arg1.hideDoll();
_arg1.createBloodGeyser();
_arg1.playSound("Eaten.wav");
disable();
}
}
}//package
Section 56
//Fader (Fader)
package {
import flash.utils.*;
import flash.events.*;
import flash.display.*;
public class Fader extends MovieClip {
var m_timer:Timer;
var m_delay:Number;
var m_fadeTime:Number;
var m_accruedTime:Number;
var m_callback:Function;// = null
var m_display:DisplayObject;
static const k_tickTime:Number = 30;
public function Fader(_arg1:DisplayObject, _arg2:Number, _arg3:Number, _arg4:Function=null){
m_callback = null;
super();
addChild(_arg1);
m_accruedTime = 0;
m_delay = _arg2;
m_fadeTime = _arg3;
m_callback = _arg4;
m_display = _arg1;
m_timer = new Timer(k_tickTime);
m_timer.addEventListener(TimerEvent.TIMER, updateTimer, false, 0, true);
m_timer.start();
}
function updateTimer(_arg1:Event){
var _local2:Number;
m_accruedTime = (m_accruedTime + k_tickTime);
if (m_accruedTime < m_delay){
return;
};
if (m_accruedTime >= (m_delay + m_fadeTime)){
dispose();
return;
};
_local2 = (1 - ((m_accruedTime - m_delay) / m_fadeTime));
m_display.alpha = _local2;
}
function dispose(){
m_timer.stop();
m_timer = null;
if (m_callback != null){
m_callback.call();
};
this.parent.removeChild(this);
m_display = null;
m_callback = null;
}
}
}//package
Section 57
//ForceSlider (ForceSlider)
package {
import flash.display.*;
import flash.events.*;
public class ForceSlider extends Sprite {
private const k_backgroundColor:uint = 4539222;
private const k_stepSize:Number = 4.9;
private const k_indicatorHeight:Number = 34;
private const k_indicatorWidth:Number = 245;
private var m_forcePercent:Number;
private var m_mask:Sprite;
private var m_isIncreasing:Boolean;
public function ForceSlider(){
m_forcePercent = 0;
m_isIncreasing = true;
addChild(new mc_CannonControlPowerGauge());
m_mask = new Sprite();
m_mask.x = 16;
m_mask.y = 11;
addChild(m_mask);
start();
}
public function stop(){
removeEventListener(Event.ENTER_FRAME, handleFrame);
}
private function handleFrame(_arg1:Event){
var _local2:Number;
if (m_isIncreasing){
m_forcePercent = (m_forcePercent + k_stepSize);
} else {
m_forcePercent = (m_forcePercent - (k_stepSize * 4));
};
if (m_forcePercent >= k_indicatorWidth){
m_isIncreasing = false;
} else {
if (m_forcePercent <= 1){
m_isIncreasing = true;
};
};
_local2 = (k_indicatorWidth - m_forcePercent);
m_mask.graphics.clear();
m_mask.graphics.beginFill(k_backgroundColor);
m_mask.graphics.drawRect(m_forcePercent, 0, (_local2 + 1), k_indicatorHeight);
m_mask.graphics.endFill();
m_mask.width = (_local2 + 1);
m_mask.height = k_indicatorHeight;
}
public function get Percent():Number{
var _local1:Number;
_local1 = (100 * (m_forcePercent / k_indicatorWidth));
return (_local1);
}
public function start(){
addEventListener(Event.ENTER_FRAME, handleFrame);
}
}
}//package
Section 58
//FPSCounter (FPSCounter)
package {
import flash.events.*;
import flash.utils.*;
import flash.text.*;
import flash.display.*;
public class FPSCounter extends Sprite {
var m_timeOfLastUpdate:int;
var m_accumulatedFrames:int;
var m_textField:TextField;// = null
var m_framesToAccumulateBeforeUpdate:int;// = 15
public function FPSCounter(){
m_textField = null;
m_framesToAccumulateBeforeUpdate = 15;
super();
addEventListener(Event.ENTER_FRAME, handleFrame);
m_timeOfLastUpdate = getTimer();
m_accumulatedFrames = 0;
}
function handleFrame(_arg1:Event){
var _local2:int;
m_accumulatedFrames++;
if (m_accumulatedFrames == m_framesToAccumulateBeforeUpdate){
_local2 = calculateDeltaTime();
if (m_textField != null){
m_textField.text = String(int(((m_framesToAccumulateBeforeUpdate * 1000) / _local2)));
};
m_accumulatedFrames = 0;
};
this.parent.setChildIndex(this, (this.parent.numChildren - 1));
}
function createDisplay(){
var _local1:TextFormat;
_local1 = new TextFormat();
_local1.font = "Verdana";
_local1.color = 0xFF00;
_local1.size = 14;
m_textField = new TextField();
m_textField.defaultTextFormat = _local1;
m_textField.text = "";
m_textField.selectable = false;
addChild(m_textField);
}
public function draw(){
createDisplay();
}
function calculateDeltaTime():int{
var _local1:int;
var _local2:int;
_local1 = getTimer();
_local2 = (_local1 - m_timeOfLastUpdate);
m_timeOfLastUpdate = _local1;
return (_local2);
}
}
}//package
Section 59
//HackButton (HackButton)
package {
public interface HackButton {
function dispose();
}
}//package
Section 60
//HighScoresButton (HighScoresButton)
package {
import flash.display.*;
public class HighScoresButton extends Sprite {
private var m_mc:SimpleButton;
public function HighScoresButton(){
m_mc = new mc_UIMMHiscore();
addChild(m_mc);
}
}
}//package
Section 61
//HowToButton (HowToButton)
package {
import flash.display.*;
public class HowToButton extends Sprite {
private var m_mc:SimpleButton;
public function HowToButton(){
m_mc = new mc_UIMMHowTo();
addChild(m_mc);
}
}
}//package
Section 62
//LaunchButton (LaunchButton)
package {
import flash.events.*;
import flash.display.*;
public class LaunchButton extends Sprite {
private var m_isButtonDown:Boolean;
private var m_game:CannonGame;
private var m_upClip:MovieClip;
private var m_downClip:MovieClip;
private var m_slider:ForceSlider;
public function LaunchButton(_arg1:CannonGame, _arg2:ForceSlider){
m_game = _arg1;
m_slider = _arg2;
m_downClip = new mc_CannonControlLaunchDown();
m_upClip = new mc_CannonControlLaunchUp();
addChild(m_upClip);
addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown);
addEventListener(MouseEvent.MOUSE_UP, handleMouseUp);
addEventListener(MouseEvent.MOUSE_OUT, handleMouseOut);
}
private function handleMouseUp(_arg1:Event){
if (m_isButtonDown){
m_slider.stop();
m_game.launch(m_slider.Percent);
};
m_isButtonDown = false;
removeChild(m_downClip);
addChild(m_upClip);
}
private function handleMouseDown(_arg1:Event){
m_isButtonDown = true;
removeChild(m_upClip);
addChild(m_downClip);
}
private function handleMouseOut(_arg1:Event){
if (!(m_isButtonDown)){
return;
};
m_isButtonDown = false;
handleMouseUp(_arg1);
}
}
}//package
Section 63
//Loop (Loop)
package {
import flash.media.*;
public class Loop {
var m_musicChannel:SoundChannel;// = null
var m_sound:Sound;
public function Loop(_arg1:Sound){
m_musicChannel = null;
super();
initialize(_arg1);
}
public function play(){
m_musicChannel = m_sound.play(0, 999999999);
}
public function initialize(_arg1:Sound){
m_sound = _arg1;
if (m_musicChannel != null){
m_musicChannel.stop();
};
m_musicChannel = null;
}
public function stop(){
m_musicChannel.stop();
}
}
}//package
Section 64
//mc_arcadetownflashsmall (mc_arcadetownflashsmall)
package {
import flash.display.*;
public dynamic class mc_arcadetownflashsmall extends MovieClip {
}
}//package
Section 65
//mc_BeachBackground (mc_BeachBackground)
package {
import flash.display.*;
public dynamic class mc_BeachBackground extends MovieClip {
}
}//package
Section 66
//mc_BeachFlytrapAnimation (mc_BeachFlytrapAnimation)
package {
import flash.display.*;
public dynamic class mc_BeachFlytrapAnimation extends MovieClip {
public function mc_BeachFlytrapAnimation(){
addFrameScript(13, frame14);
}
function frame14(){
stop();
}
}
}//package
Section 67
//mc_BeachGround (mc_BeachGround)
package {
import flash.display.*;
public dynamic class mc_BeachGround extends MovieClip {
}
}//package
Section 68
//mc_BeachParallax1 (mc_BeachParallax1)
package {
import flash.display.*;
public dynamic class mc_BeachParallax1 extends MovieClip {
}
}//package
Section 69
//mc_BeachParallax2 (mc_BeachParallax2)
package {
import flash.display.*;
public dynamic class mc_BeachParallax2 extends MovieClip {
}
}//package
Section 70
//mc_BeachSpike (mc_BeachSpike)
package {
import flash.display.*;
public dynamic class mc_BeachSpike extends MovieClip {
}
}//package
Section 71
//mc_BeachTrampolineAnimation (mc_BeachTrampolineAnimation)
package {
import flash.display.*;
public dynamic class mc_BeachTrampolineAnimation extends MovieClip {
public function mc_BeachTrampolineAnimation(){
addFrameScript(21, frame22);
}
function frame22(){
stop();
}
}
}//package
Section 72
//mc_Blood1 (mc_Blood1)
package {
import flash.display.*;
public dynamic class mc_Blood1 extends MovieClip {
}
}//package
Section 73
//mc_Blood2 (mc_Blood2)
package {
import flash.display.*;
public dynamic class mc_Blood2 extends MovieClip {
}
}//package
Section 74
//mc_Blood3 (mc_Blood3)
package {
import flash.display.*;
public dynamic class mc_Blood3 extends MovieClip {
}
}//package
Section 75
//mc_BloodGeyser (mc_BloodGeyser)
package {
import flash.display.*;
public dynamic class mc_BloodGeyser extends MovieClip {
public function mc_BloodGeyser(){
addFrameScript(22, frame23);
}
function frame23(){
stop();
}
}
}//package
Section 76
//mc_CannonBarrel (mc_CannonBarrel)
package {
import flash.display.*;
public dynamic class mc_CannonBarrel extends MovieClip {
public var mc_innerAnimation:MovieClip;
}
}//package
Section 77
//mc_CannonControlArrowDownDown (mc_CannonControlArrowDownDown)
package {
import flash.display.*;
public dynamic class mc_CannonControlArrowDownDown extends MovieClip {
}
}//package
Section 78
//mc_CannonControlArrowDownUp (mc_CannonControlArrowDownUp)
package {
import flash.display.*;
public dynamic class mc_CannonControlArrowDownUp extends MovieClip {
}
}//package
Section 79
//mc_CannonControlArrowUpDown (mc_CannonControlArrowUpDown)
package {
import flash.display.*;
public dynamic class mc_CannonControlArrowUpDown extends MovieClip {
}
}//package
Section 80
//mc_CannonControlArrowUpUp (mc_CannonControlArrowUpUp)
package {
import flash.display.*;
public dynamic class mc_CannonControlArrowUpUp extends MovieClip {
}
}//package
Section 81
//mc_CannonControlLaunchDown (mc_CannonControlLaunchDown)
package {
import flash.display.*;
public dynamic class mc_CannonControlLaunchDown extends MovieClip {
}
}//package
Section 82
//mc_CannonControlLaunchUp (mc_CannonControlLaunchUp)
package {
import flash.display.*;
public dynamic class mc_CannonControlLaunchUp extends MovieClip {
}
}//package
Section 83
//mc_CannonControlMain (mc_CannonControlMain)
package {
import flash.text.*;
import flash.display.*;
public dynamic class mc_CannonControlMain extends MovieClip {
public var dt_degrees:TextField;
}
}//package
Section 84
//mc_CannonControlPowerGauge (mc_CannonControlPowerGauge)
package {
import flash.display.*;
public dynamic class mc_CannonControlPowerGauge extends MovieClip {
}
}//package
Section 85
//mc_CannonLegs (mc_CannonLegs)
package {
import flash.display.*;
public dynamic class mc_CannonLegs extends MovieClip {
}
}//package
Section 86
//mc_CatPawLeft (mc_CatPawLeft)
package {
import flash.display.*;
public dynamic class mc_CatPawLeft extends MovieClip {
}
}//package
Section 87
//mc_CatPawRight (mc_CatPawRight)
package {
import flash.display.*;
public dynamic class mc_CatPawRight extends MovieClip {
}
}//package
Section 88
//mc_CatTail (mc_CatTail)
package {
import flash.display.*;
public dynamic class mc_CatTail extends MovieClip {
}
}//package
Section 89
//mc_CatTorso (mc_CatTorso)
package {
import flash.display.*;
public dynamic class mc_CatTorso extends MovieClip {
}
}//package
Section 90
//mc_DogPawLeft (mc_DogPawLeft)
package {
import flash.display.*;
public dynamic class mc_DogPawLeft extends MovieClip {
}
}//package
Section 91
//mc_DogPawRight (mc_DogPawRight)
package {
import flash.display.*;
public dynamic class mc_DogPawRight extends MovieClip {
}
}//package
Section 92
//mc_DogTail (mc_DogTail)
package {
import flash.display.*;
public dynamic class mc_DogTail extends MovieClip {
}
}//package
Section 93
//mc_DogTorso (mc_DogTorso)
package {
import flash.display.*;
public dynamic class mc_DogTorso extends MovieClip {
}
}//package
Section 94
//mc_ExplosivesExplosion (mc_ExplosivesExplosion)
package {
import flash.display.*;
public dynamic class mc_ExplosivesExplosion extends MovieClip {
public function mc_ExplosivesExplosion(){
addFrameScript(12, frame13);
}
function frame13(){
stop();
}
}
}//package
Section 95
//mc_ExplosivesFloating (mc_ExplosivesFloating)
package {
import flash.display.*;
public dynamic class mc_ExplosivesFloating extends MovieClip {
public function mc_ExplosivesFloating(){
addFrameScript(1, frame2);
}
function frame2(){
stop();
}
}
}//package
Section 96
//mc_ExplosivesGround (mc_ExplosivesGround)
package {
import flash.display.*;
public dynamic class mc_ExplosivesGround extends MovieClip {
public function mc_ExplosivesGround(){
addFrameScript(1, frame2);
}
function frame2(){
stop();
}
}
}//package
Section 97
//mc_MountainBackground (mc_MountainBackground)
package {
import flash.display.*;
public dynamic class mc_MountainBackground extends MovieClip {
}
}//package
Section 98
//mc_MountainFlytrapAnimation (mc_MountainFlytrapAnimation)
package {
import flash.display.*;
public dynamic class mc_MountainFlytrapAnimation extends MovieClip {
public function mc_MountainFlytrapAnimation(){
addFrameScript(13, frame14);
}
function frame14(){
stop();
}
}
}//package
Section 99
//mc_MountainGround (mc_MountainGround)
package {
import flash.display.*;
public dynamic class mc_MountainGround extends MovieClip {
}
}//package
Section 100
//mc_MountainParallax1 (mc_MountainParallax1)
package {
import flash.display.*;
public dynamic class mc_MountainParallax1 extends MovieClip {
}
}//package
Section 101
//mc_MountainParallax2 (mc_MountainParallax2)
package {
import flash.display.*;
public dynamic class mc_MountainParallax2 extends MovieClip {
}
}//package
Section 102
//mc_MountainSpike (mc_MountainSpike)
package {
import flash.display.*;
public dynamic class mc_MountainSpike extends MovieClip {
}
}//package
Section 103
//mc_MountainTrampolineAnimation (mc_MountainTrampolineAnimation)
package {
import flash.display.*;
public dynamic class mc_MountainTrampolineAnimation extends MovieClip {
public function mc_MountainTrampolineAnimation(){
addFrameScript(11, frame12);
}
function frame12(){
stop();
}
}
}//package
Section 104
//mc_ParkBackground (mc_ParkBackground)
package {
import flash.display.*;
public dynamic class mc_ParkBackground extends MovieClip {
}
}//package
Section 105
//mc_ParkFlytrapAnimation (mc_ParkFlytrapAnimation)
package {
import flash.display.*;
public dynamic class mc_ParkFlytrapAnimation extends MovieClip {
public function mc_ParkFlytrapAnimation(){
addFrameScript(14, frame15);
}
function frame15(){
stop();
}
}
}//package
Section 106
//mc_ParkGround (mc_ParkGround)
package {
import flash.display.*;
public dynamic class mc_ParkGround extends MovieClip {
}
}//package
Section 107
//mc_ParkParallax1 (mc_ParkParallax1)
package {
import flash.display.*;
public dynamic class mc_ParkParallax1 extends MovieClip {
}
}//package
Section 108
//mc_ParkParallax2 (mc_ParkParallax2)
package {
import flash.display.*;
public dynamic class mc_ParkParallax2 extends MovieClip {
}
}//package
Section 109
//mc_ParkSpike (mc_ParkSpike)
package {
import flash.display.*;
public dynamic class mc_ParkSpike extends MovieClip {
}
}//package
Section 110
//mc_ParkTrampolineAnimation (mc_ParkTrampolineAnimation)
package {
import flash.display.*;
public dynamic class mc_ParkTrampolineAnimation extends MovieClip {
public function mc_ParkTrampolineAnimation(){
addFrameScript(21, frame22);
}
function frame22(){
stop();
}
}
}//package
Section 111
//mc_PutThisGameOnYourSite (mc_PutThisGameOnYourSite)
package {
import flash.display.*;
public dynamic class mc_PutThisGameOnYourSite extends MovieClip {
}
}//package
Section 112
//mc_SquirrelHandLeft (mc_SquirrelHandLeft)
package {
import flash.display.*;
public dynamic class mc_SquirrelHandLeft extends MovieClip {
}
}//package
Section 113
//mc_SquirrelHandRight (mc_SquirrelHandRight)
package {
import flash.display.*;
public dynamic class mc_SquirrelHandRight extends MovieClip {
}
}//package
Section 114
//mc_SquirrelLegLeft (mc_SquirrelLegLeft)
package {
import flash.display.*;
public dynamic class mc_SquirrelLegLeft extends MovieClip {
}
}//package
Section 115
//mc_SquirrelLegRight (mc_SquirrelLegRight)
package {
import flash.display.*;
public dynamic class mc_SquirrelLegRight extends MovieClip {
}
}//package
Section 116
//mc_SquirrelTail (mc_SquirrelTail)
package {
import flash.display.*;
public dynamic class mc_SquirrelTail extends MovieClip {
}
}//package
Section 117
//mc_SquirrelTorso (mc_SquirrelTorso)
package {
import flash.display.*;
public dynamic class mc_SquirrelTorso extends MovieClip {
}
}//package
Section 118
//mc_UI_SubmitScore (mc_UI_SubmitScore)
package {
import flash.text.*;
import flash.display.*;
public dynamic class mc_UI_SubmitScore extends MovieClip {
public var Name_txt:TextField;
public var Score_txt:TextField;
public var SubmitScore_BTN:SimpleButton;
}
}//package
Section 119
//mc_UIBeachPlayed (mc_UIBeachPlayed)
package {
import flash.display.*;
public dynamic class mc_UIBeachPlayed extends MovieClip {
}
}//package
Section 120
//mc_UICatAvailable (mc_UICatAvailable)
package {
import flash.display.*;
public dynamic class mc_UICatAvailable extends MovieClip {
}
}//package
Section 121
//mc_UICredits (mc_UICredits)
package {
import flash.display.*;
public dynamic class mc_UICredits extends MovieClip {
public var LinkClick:SimpleButton;
}
}//package
Section 122
//mc_UICritterSelect (mc_UICritterSelect)
package {
import flash.text.*;
import flash.display.*;
public dynamic class mc_UICritterSelect extends MovieClip {
public var dt_attempt:TextField;
public var dt_goal:TextField;
public var dt_levelName:TextField;
}
}//package
Section 123
//mc_UICritterSelect2 (mc_UICritterSelect2)
package {
import flash.text.*;
import flash.display.*;
public dynamic class mc_UICritterSelect2 extends MovieClip {
public var dt_attempt:TextField;
public var dt_catScore:TextField;
public var crackers_clip:MovieClip;
public var dt_goal:TextField;
public var dt_levelName:TextField;
public var mci_catColor:mc_UILevelPassColor;
public var dt_squirrelScore:TextField;
public var fat_kat_clip:MovieClip;
public var puddles_clip:MovieClip;
public var dt_dogScore:TextField;
public var mci_dogColor:mc_UILevelPassColor;
public var mci_squirrelColor:mc_UILevelPassColor;
}
}//package
Section 124
//mc_UIDistanceMeter (mc_UIDistanceMeter)
package {
import flash.text.*;
import flash.display.*;
public dynamic class mc_UIDistanceMeter extends MovieClip {
public var dt_DistanceText:TextField;
public var dt_goalAchieved:TextField;
}
}//package
Section 125
//mc_UIDogAvailable (mc_UIDogAvailable)
package {
import flash.display.*;
public dynamic class mc_UIDogAvailable extends MovieClip {
}
}//package
Section 126
//mc_UIFinalResultsBG (mc_UIFinalResultsBG)
package {
import flash.text.*;
import flash.display.*;
public dynamic class mc_UIFinalResultsBG extends MovieClip {
public var dt_parkGoal:TextField;
public var dt_beachGoal:TextField;
public var dt_mountainFinalResult:TextField;
public var dt_parkFinalResult:TextField;
public var dt_beachFinalResult:TextField;
public var dt_mountainGoal:TextField;
public var dt_overallFinalResult:TextField;
}
}//package
Section 127
//mc_UIHowTo (mc_UIHowTo)
package {
import flash.display.*;
public dynamic class mc_UIHowTo extends MovieClip {
}
}//package
Section 128
//mc_UILevelPassColor (mc_UILevelPassColor)
package {
import flash.display.*;
public dynamic class mc_UILevelPassColor extends MovieClip {
}
}//package
Section 129
//mc_UIMainMenu (mc_UIMainMenu)
package {
import flash.display.*;
public dynamic class mc_UIMainMenu extends MovieClip {
}
}//package
Section 130
//mc_UIMMBack (mc_UIMMBack)
package {
import flash.display.*;
public dynamic class mc_UIMMBack extends SimpleButton {
}
}//package
Section 131
//mc_UIMMCredits (mc_UIMMCredits)
package {
import flash.display.*;
public dynamic class mc_UIMMCredits extends SimpleButton {
}
}//package
Section 132
//mc_UIMMHiscore (mc_UIMMHiscore)
package {
import flash.display.*;
public dynamic class mc_UIMMHiscore extends SimpleButton {
}
}//package
Section 133
//mc_UIMMHowTo (mc_UIMMHowTo)
package {
import flash.display.*;
public dynamic class mc_UIMMHowTo extends SimpleButton {
}
}//package
Section 134
//mc_UIMMPlayGame (mc_UIMMPlayGame)
package {
import flash.display.*;
public dynamic class mc_UIMMPlayGame extends SimpleButton {
}
}//package
Section 135
//mc_UIMMSquallbunny (mc_UIMMSquallbunny)
package {
import flash.display.*;
public dynamic class mc_UIMMSquallbunny extends MovieClip {
}
}//package
Section 136
//mc_UIMountainPlayed (mc_UIMountainPlayed)
package {
import flash.display.*;
public dynamic class mc_UIMountainPlayed extends MovieClip {
}
}//package
Section 137
//mc_UIParkPlayed (mc_UIParkPlayed)
package {
import flash.display.*;
public dynamic class mc_UIParkPlayed extends MovieClip {
}
}//package
Section 138
//mc_UIPointer (mc_UIPointer)
package {
import flash.display.*;
public dynamic class mc_UIPointer extends MovieClip {
}
}//package
Section 139
//mc_UIPointerConfirm (mc_UIPointerConfirm)
package {
import flash.display.*;
public dynamic class mc_UIPointerConfirm extends MovieClip {
}
}//package
Section 140
//mc_UIResults (mc_UIResults)
package {
import flash.text.*;
import flash.display.*;
public dynamic class mc_UIResults extends MovieClip {
public var dt_status:TextField;
public var dt_resultDistance:TextField;
}
}//package
Section 141
//mc_UIResultsContinue (mc_UIResultsContinue)
package {
import flash.display.*;
public dynamic class mc_UIResultsContinue extends SimpleButton {
}
}//package
Section 142
//mc_UISndButton (mc_UISndButton)
package {
import flash.display.*;
public dynamic class mc_UISndButton extends MovieClip {
}
}//package
Section 143
//mc_UISquirrelAvailable (mc_UISquirrelAvailable)
package {
import flash.display.*;
public dynamic class mc_UISquirrelAvailable extends MovieClip {
}
}//package
Section 144
//MountainTheme (MountainTheme)
package {
import flash.display.*;
public class MountainTheme extends AbstractTheme {
override public function get Bounce():BounceObstacle{
var _local1:BounceObstacle;
var _local2:Number;
_local1 = new BounceObstacle(new mc_MountainTrampolineAnimation());
_local2 = (75 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Stop():StopObstacle{
var _local1:StopObstacle;
var _local2:Number;
_local1 = new StopObstacle(new mc_MountainSpike());
_local2 = (30 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Floor():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_MountainGround();
_local3.x = (_local2 * (_local3.width - 1));
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
override public function get Background():MovieClip{
return (new mc_MountainBackground());
}
override public function get Eat():EatObstacle{
var _local1:EatObstacle;
var _local2:Number;
_local1 = new EatObstacle(new mc_MountainFlytrapAnimation());
_local2 = (90 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Parallax1():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_MountainParallax1();
_local3.x = (_local2 * (_local3.width - 1));
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
override public function get Parallax2():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_MountainParallax2();
_local3.x = (_local2 * (_local3.width - 1));
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
}
}//package
Section 145
//Newgrounds_SplashMC (Newgrounds_SplashMC)
package {
import flash.display.*;
public dynamic class Newgrounds_SplashMC extends MovieClip {
}
}//package
Section 146
//ParkTheme (ParkTheme)
package {
import flash.display.*;
public class ParkTheme extends AbstractTheme {
override public function get Bounce():BounceObstacle{
var _local1:BounceObstacle;
var _local2:Number;
_local1 = new BounceObstacle(new mc_ParkTrampolineAnimation());
_local2 = (75 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Stop():StopObstacle{
var _local1:StopObstacle;
var _local2:Number;
_local1 = new StopObstacle(new mc_ParkSpike());
_local2 = (60 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Floor():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_ParkGround();
_local3.x = (_local2 * _local3.width);
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
override public function get Background():MovieClip{
return (new mc_ParkBackground());
}
override public function get Eat():EatObstacle{
var _local1:EatObstacle;
var _local2:Number;
_local1 = new EatObstacle(new mc_ParkFlytrapAnimation());
_local2 = (45 / _local1.width);
_local1.scaleX = _local2;
_local1.scaleY = _local2;
return (_local1);
}
override public function get Parallax1():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_ParkParallax1();
_local3.x = (_local2 * (_local3.width - 1));
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
override public function get Parallax2():MovieClip{
var _local1:MovieClip;
var _local2:Number;
var _local3:MovieClip;
_local1 = new MovieClip();
_local2 = 0;
while (_local2 < 3) {
_local3 = new mc_ParkParallax2();
_local3.x = (_local2 * (_local3.width - 1));
_local1.addChild(_local3);
_local2++;
};
return (_local1);
}
}
}//package
Section 147
//PlayGameButton (PlayGameButton)
package {
import flash.display.*;
public class PlayGameButton extends Sprite {
private var m_mc:SimpleButton;
public function PlayGameButton(){
m_mc = new mc_UIMMPlayGame();
addChild(m_mc);
}
}
}//package
Section 148
//RagDoll (RagDoll)
package {
import org.cove.ape.*;
import flash.display.*;
import flash.geom.*;
public class RagDoll extends Sprite {
private const k_defaultElasticity:Number = 0.3;
private const k_particlesVisible:Boolean = false;
private const k_defaultFriction:Number = 0.5;
private const k_defaultSpringStiffness:Number = 1;
protected var m_bounciness:Number;// = 0.75
private var m_bodyParts:Array;
private var m_definingFeatures:Array;
private var m_elasticity:Number;// = 0.3
public function RagDoll(){
m_bodyParts = new Array();
m_definingFeatures = new Array();
m_elasticity = k_defaultElasticity;
m_bounciness = 0.75;
super();
}
public function stop(){
var _local1:Object;
for each (_local1 in m_bodyParts) {
if ((_local1 is AbstractParticle)){
_local1.velocity = new Vector(0, 0);
};
};
}
public function get Bounciness(){
return (m_bounciness);
}
public function applyForce(_arg1:Vector){
var _local2:Object;
m_bodyParts[1].addForce(_arg1);
m_bodyParts[2].addForce(_arg1);
return;
}
public function set Visibility(_arg1:Boolean){
var _local2:Object;
this.visible = _arg1;
for each (_local2 in m_bodyParts) {
if ((((_local2 is AbstractParticle)) || ((_local2 is AbstractConstraint)))){
_local2.visible = _arg1;
};
};
}
public function paint(){
var _local1:Object;
for each (_local1 in m_bodyParts) {
_local1.paint();
};
}
public function isMoving():Boolean{
var _local1:Number;
var _local2:int;
var _local3:CircleParticle;
var _local4:Vector;
var _local5:Number;
_local1 = 2;
_local2 = 0;
while (_local2 < m_definingFeatures.length) {
_local3 = (m_definingFeatures[_local2] as CircleParticle);
if (!(_local3.collidable)){
} else {
if (_local3.py < 380){
return (true);
};
_local4 = _local3.velocity;
_local5 = _local4.magnitudeSquared();
if (_local5 > _local1){
return (true);
};
};
_local2++;
};
return (false);
}
private function isIntersectingWithOffset(_arg1:Rectangle, _arg2:Number, _arg3:Number):Boolean{
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:CircleParticle;
var _local9:Number;
var _local10:Number;
_local4 = (_arg1.width / 2);
_local5 = (_arg1.height / 2);
_local6 = (_arg1.x + _local4);
_local7 = (_arg1.y + _local5);
for each (_local8 in m_definingFeatures) {
_local9 = (_local8.px - _arg2);
_local10 = (_local8.py - _arg3);
if (((((_local4 + _local8.radius) > Math.abs((_local6 - _local9)))) && (((_local5 + _local8.radius) > Math.abs((_local7 - _local10)))))){
return (true);
};
};
return (false);
}
public function isIntersecting(_arg1:Rectangle):Boolean{
return (isIntersectingWithOffset(_arg1, 0, 0));
}
public function update(){
calculateDimensions();
}
public function createBodyPart(_arg1:int, _arg2:int, _arg3:int, _arg4:int=1, _arg5:Boolean=false):CircleParticle{
var _local6:CircleParticle;
_local6 = new CircleParticle(_arg1, _arg2, _arg3, false, _arg4, m_elasticity, k_defaultFriction);
_local6.visible = k_particlesVisible;
_local6.collidable = _arg5;
APEngine.addParticle(_local6);
m_bodyParts.push(_local6);
if (_arg5){
m_definingFeatures.push(_local6);
};
return (_local6);
}
protected function calculateDimensions(){
var _local1:Number;
var _local2:Number;
var _local3:AbstractParticle;
_local1 = 0;
_local2 = 0;
for each (_local3 in m_definingFeatures) {
_local1 = (_local1 + _local3.px);
_local2 = (_local2 + _local3.py);
};
this.x = (_local1 / m_definingFeatures.length);
this.y = (_local2 / m_definingFeatures.length);
}
public function createLimb(_arg1:CircleParticle, _arg2:CircleParticle, _arg3:MovieClip, _arg4=1):SpringConstraint{
var _local5:SpringConstraint;
if (((!(k_particlesVisible)) && (!((_arg3 == null))))){
_local5 = new SwfConstraint(_arg1, _arg2, _arg3, _arg4);
} else {
_local5 = new SpringConstraint(_arg1, _arg2, _arg4);
_local5.visible = false;
};
_local5.collidable = false;
_local5.collisionRectWidth = 10;
_local5.collisionRectScale = 0.6;
APEngine.addConstraint(_local5);
m_bodyParts.push(_local5);
return (_local5);
}
public function get Velocity(){
if (m_definingFeatures.length == 0){
return (0);
};
return (m_definingFeatures[0].velocity);
}
}
}//package
Section 149
//SoundButton (SoundButton)
package {
import flash.events.*;
import flash.display.*;
public class SoundButton extends Sprite {
private var m_mc:MovieClip;
public function SoundButton(){
m_mc = new mc_UISndButton();
m_mc.gotoAndStop(1);
addChild(m_mc);
addEventListener(MouseEvent.CLICK, handleClick);
}
private function handleClick(_arg1:Event){
SoundSystem.getSingleton().toggleMute();
if (m_mc.currentFrame == 1){
m_mc.gotoAndStop(2);
} else {
m_mc.gotoAndStop(1);
};
}
}
}//package
Section 150
//SoundSystem (SoundSystem)
package {
import flash.media.*;
import flash.utils.*;
public class SoundSystem {
var m_loopChannel:SoundChannel;// = null
var m_isMuted:Boolean;// = false
static var s_singleton:SoundSystem = null;
public function SoundSystem(){
m_loopChannel = null;
m_isMuted = false;
super();
s_singleton = this;
}
function updateMute(){
if (m_isMuted){
changeVolume(0);
} else {
changeVolume(1);
};
}
public function stopLoop(){
m_loopChannel.stop();
m_loopChannel = null;
}
public function changeVolume(_arg1:Number){
var _local2:SoundTransform;
_local2 = new SoundTransform();
_local2.volume = _arg1;
SoundMixer.soundTransform = _local2;
}
public function toggleMute(){
m_isMuted = !(m_isMuted);
updateMute();
}
public function unmute(){
m_isMuted = false;
updateMute();
}
public function playLoop(_arg1:String){
var _local2:Class;
var _local3:Sound;
if (m_loopChannel != null){
m_loopChannel.stop();
};
_local2 = (getDefinitionByName(_arg1) as Class);
_local3 = (new (_local2) as Sound);
m_loopChannel = _local3.play(0, 999999999);
}
public function mute(){
m_isMuted = true;
updateMute();
}
public function playSound(_arg1:String){
var _local2:Class;
var _local3:Sound;
_local2 = (getDefinitionByName(_arg1) as Class);
_local3 = (new (_local2) as Sound);
_local3.play();
}
public static function getSingleton():SoundSystem{
if (s_singleton == null){
return (new (SoundSystem));
};
return (s_singleton);
}
}
}//package
Section 151
//SquirrelButton (SquirrelButton)
package {
import flash.events.*;
import flash.display.*;
public class SquirrelButton extends MovieClip implements HackButton {
private var m_ui:UserInterface;
private var m_mc:MovieClip;
public function SquirrelButton(_arg1:UserInterface){
m_ui = _arg1;
m_mc = new mc_UISquirrelAvailable();
m_mc.gotoAndStop(1);
addChild(m_mc);
}
public function dispose(){
removeEventListener(Event.ENTER_FRAME, update);
}
private function handleClick(_arg1:Event){
if (!(this.enabled)){
return;
};
SoundSystem.getSingleton().playSound("ButtonPress.wav");
m_ui.selectDoll(CannonApplication.k_squirrel);
}
function update(_arg1:Event){
if (!(this.enabled)){
return;
};
if (m_mc.hitTestPoint(this.stage.mouseX, this.stage.mouseY)){
m_mc.gotoAndStop(2);
} else {
m_mc.gotoAndStop(1);
};
}
}
}//package
Section 152
//SquirrelDoll (SquirrelDoll)
package {
import org.cove.ape.*;
public class SquirrelDoll extends RagDoll {
public function SquirrelDoll(_arg1:Number, _arg2:Number){
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:CircleParticle;
var _local18:CircleParticle;
var _local19:CircleParticle;
var _local20:CircleParticle;
var _local21:CircleParticle;
var _local22:CircleParticle;
var _local23:CircleParticle;
var _local24:CircleParticle;
var _local25:CircleParticle;
var _local26:CircleParticle;
var _local27:CircleParticle;
var _local28:CircleParticle;
var _local29:CircleParticle;
var _local30:SpringConstraint;
var _local31:SpringConstraint;
var _local32:SpringConstraint;
var _local33:SpringConstraint;
var _local34:SpringConstraint;
var _local35:SpringConstraint;
var _local36:SpringConstraint;
var _local37:SpringConstraint;
var _local38:SpringConstraint;
var _local39:SpringConstraint;
var _local40:SpringConstraint;
var _local41:SpringConstraint;
var _local42:SpringConstraint;
var _local43:SpringConstraint;
var _local44:SpringConstraint;
var _local45:SpringConstraint;
var _local46:SpringConstraint;
var _local47:SpringConstraint;
var _local48:SpringConstraint;
var _local49:SpringConstraint;
var _local50:SpringConstraint;
var _local51:Number;
var _local52:SpringConstraint;
var _local53:SpringConstraint;
var _local54:SpringConstraint;
var _local55:SpringConstraint;
super();
m_bounciness = 0.5;
_local3 = 10;
_local4 = 28;
_local5 = (_local4 / 2);
_local6 = 14;
_local7 = 5;
_local8 = 7;
_local9 = (((_local4 - _local7) - _local8) / 2);
_local10 = 4;
_local11 = 5;
_local12 = 1;
_local13 = 8;
_local14 = 4;
_local15 = _arg1;
_local16 = _arg2;
_local17 = createBodyPart(_local15, _local16, _local7, _local13);
_local18 = createBodyPart(_local15, (_local16 + _local5), _local9, 1);
_local19 = createBodyPart(_local15, (_local16 + _local4), _local8, _local14, true);
_local20 = createBodyPart(((_local15 - _local9) + _local10), (_local16 + _local5), _local10, 1);
_local21 = createBodyPart(((_local15 + _local9) - _local10), (_local16 + _local5), _local10, 1);
_local22 = createBodyPart(((_local15 - _local8) + _local10), (_local16 + _local4), _local10, 1);
_local23 = createBodyPart(((_local15 + _local8) - _local10), (_local16 + _local4), _local10, 1);
_local24 = createBodyPart(_local15, (((_local16 + _local4) + _local8) - _local10), _local10, 1);
_local25 = createBodyPart((_local15 - _local3), _local16, _local11, _local12);
_local26 = createBodyPart((_local15 + _local3), _local16, _local11, _local12);
_local27 = createBodyPart(((_local15 - _local3) - _local8), (_local16 + _local4), _local11, _local12);
_local28 = createBodyPart(((_local15 + _local3) + _local8), (_local16 + _local4), _local11, _local12);
_local29 = createBodyPart(_local15, (((_local16 + _local4) + _local6) + _local8), _local11, _local12);
_local30 = createLimb(_local17, _local18, null);
_local31 = createLimb(_local18, _local19, null);
_local32 = createLimb(_local20, _local21, null);
_local33 = createLimb(_local20, _local18, null);
_local34 = createLimb(_local20, _local19, null);
_local35 = createLimb(_local21, _local18, null);
_local36 = createLimb(_local21, _local19, null);
_local37 = createLimb(_local22, _local23, null);
_local38 = createLimb(_local22, _local18, null);
_local39 = createLimb(_local22, _local19, null);
_local40 = createLimb(_local23, _local18, null);
_local41 = createLimb(_local23, _local19, null);
_local42 = createLimb(_local24, _local17, null);
_local43 = createLimb(_local24, _local19, null);
_local44 = createLimb(_local24, _local18, null);
_local45 = createLimb(_local25, _local20, new mc_SquirrelHandLeft());
_local46 = createLimb(_local26, _local21, new mc_SquirrelHandRight());
_local47 = createLimb(_local29, _local24, new mc_SquirrelTail());
_local48 = createLimb(_local27, _local22, new mc_SquirrelLegLeft());
_local49 = createLimb(_local28, _local23, new mc_SquirrelLegRight());
_local50 = createLimb(_local17, _local19, new mc_SquirrelTorso());
_local51 = 0.05;
_local52 = createLimb(_local25, _local27, null, _local51);
_local53 = createLimb(_local26, _local28, null, _local51);
_local54 = createLimb(_local25, _local26, null, _local51);
_local55 = createLimb(_local27, _local28, null, _local51);
calculateDimensions();
}
}
}//package
Section 153
//StopObstacle (StopObstacle)
package {
import flash.display.*;
public class StopObstacle extends AbstractObstacle {
public function StopObstacle(_arg1:MovieClip){
super(_arg1);
}
override public function collideWithDoll(_arg1:CannonGame){
_arg1.stopForce();
_arg1.createBloodGeyser();
_arg1.playSound("SpikeHit.wav");
disable();
}
}
}//package
Section 154
//Timeline116_f57d508544e45d44bf1fe878fb46f48 (Timeline116_f57d508544e45d44bf1fe878fb46f48)
package {
import flash.display.*;
public dynamic class Timeline116_f57d508544e45d44bf1fe878fb46f48 extends MovieClip {
public function Timeline116_f57d508544e45d44bf1fe878fb46f48(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 155
//Timeline118_ca77e6dc665e54ab960eb35c906e4d (Timeline118_ca77e6dc665e54ab960eb35c906e4d)
package {
import flash.display.*;
public dynamic class Timeline118_ca77e6dc665e54ab960eb35c906e4d extends MovieClip {
public function Timeline118_ca77e6dc665e54ab960eb35c906e4d(){
addFrameScript(53, frame54);
}
function frame54(){
stop();
}
}
}//package
Section 156
//Timeline134_b2bc6f11836a68499879c67039442ebd (Timeline134_b2bc6f11836a68499879c67039442ebd)
package {
import flash.display.*;
public dynamic class Timeline134_b2bc6f11836a68499879c67039442ebd extends MovieClip {
public var tank:MovieClip;
}
}//package
Section 157
//Timeline136_ddc1fcc9ba47c408db22ff7a5f8379a (Timeline136_ddc1fcc9ba47c408db22ff7a5f8379a)
package {
import flash.display.*;
public dynamic class Timeline136_ddc1fcc9ba47c408db22ff7a5f8379a extends MovieClip {
public var mc1:MovieClip;
public var mc4:MovieClip;
}
}//package
Section 158
//Timeline138_f064fc321849494b80c23f3fc16a833 (Timeline138_f064fc321849494b80c23f3fc16a833)
package {
import flash.display.*;
public dynamic class Timeline138_f064fc321849494b80c23f3fc16a833 extends MovieClip {
public var mc1:MovieClip;
public var mc0:MovieClip;
}
}//package
Section 159
//Timeline140_1285bf6b836884fad64aa4feda2e4aa (Timeline140_1285bf6b836884fad64aa4feda2e4aa)
package {
import flash.display.*;
public dynamic class Timeline140_1285bf6b836884fad64aa4feda2e4aa extends MovieClip {
public var mc0:MovieClip;
}
}//package
Section 160
//Timeline141_856d2da13ebff947a97049ea5910e34f (Timeline141_856d2da13ebff947a97049ea5910e34f)
package {
import flash.display.*;
public dynamic class Timeline141_856d2da13ebff947a97049ea5910e34f extends MovieClip {
public var mc1:MovieClip;
public var mc2:MovieClip;
public var mc0:MovieClip;
}
}//package
Section 161
//Timeline145_f53d6163b162e84ea5a7bda2d7181130 (Timeline145_f53d6163b162e84ea5a7bda2d7181130)
package {
import flash.display.*;
public dynamic class Timeline145_f53d6163b162e84ea5a7bda2d7181130 extends MovieClip {
public var mc1:MovieClip;
public var mc3:MovieClip;
public var mc2:MovieClip;
public var mc0:MovieClip;
}
}//package
Section 162
//Timeline24_bb89835cb2ce04b8fc47b53d9663890 (Timeline24_bb89835cb2ce04b8fc47b53d9663890)
package {
import flash.display.*;
public dynamic class Timeline24_bb89835cb2ce04b8fc47b53d9663890 extends MovieClip {
public function Timeline24_bb89835cb2ce04b8fc47b53d9663890(){
addFrameScript(0, frame1, 39, frame40);
}
function frame1(){
stop();
}
function frame40(){
stop();
}
}
}//package
Section 163
//Urbansquall_SplashMC (Urbansquall_SplashMC)
package {
import flash.display.*;
public dynamic class Urbansquall_SplashMC extends MovieClip {
public function Urbansquall_SplashMC(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 164
//UserInterface (UserInterface)
package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
public class UserInterface extends Sprite {
private var m_animalSelector:Sprite;
private var m_results:Sprite;
private var m_finalPark:MovieClip;
private var m_final:MovieClip;
private var m_animalSelectorTimer:Number;
private var m_creditsScreen:Sprite;
private var m_mainMenu:Sprite;
private var m_resultsDistance:MovieClip;
private var m_app:CannonApplication;
private var m_distanceIndicator:MovieClip;
private var m_howToScreen:Sprite;
private var m_selectClip:mc_UICritterSelect2;
private var m_finalBeach:MovieClip;
private var m_finalClip:MovieClip;
private var m_score:int;
private var m_launchBarClip:MovieClip;
private var m_finalMountain:MovieClip;
private var m_cannonControls:Sprite;
private var m_slider:ForceSlider;
private var m_submitScoreClip:MovieClip;
static const k_animalSelectorTimer:Number = 2000;
public function UserInterface(_arg1:CannonApplication, _arg2:Array, _arg3:Boolean=false){
var _local4:SoundButton;
var _local5:Number;
super();
m_app = _arg1;
createMainMenu();
createCredits();
createHowTo();
createAnimalSelector(_arg2);
createCannonControls();
createResultScreen();
createFinalResultScreen();
m_mainMenu.visible = _arg3;
if (!(_arg3)){
showAnimalSelection();
};
m_distanceIndicator = new mc_UIDistanceMeter();
m_distanceIndicator.visible = false;
m_distanceIndicator.dt_DistanceText.htmlText = "0";
m_distanceIndicator.dt_goalAchieved.visible = false;
m_distanceIndicator.x = (CannonApplication.k_gameWidth - m_distanceIndicator.width);
m_distanceIndicator.y = 0;
addChild(m_distanceIndicator);
_local4 = new SoundButton();
_local4.x = 0;
_local4.y = (CannonApplication.k_gameHeight - 36);
_local5 = (24 / _local4.width);
_local4.scaleX = _local5;
_local4.scaleY = _local5;
addChild(_local4);
}
public function get Slider():ForceSlider{
return (m_slider);
}
private function createCredits(){
var _local1:MovieClip;
var _local2:BackButton;
m_creditsScreen = new Sprite();
m_creditsScreen.visible = false;
_local1 = new mc_UICredits();
_local1.LinkClick.addEventListener(MouseEvent.CLICK, loadWebsite);
_local1.LinkClick.alpha = 0;
m_creditsScreen.addChild(_local1);
_local2 = new BackButton();
_local2.x = (m_creditsScreen.width / 2);
_local2.y = 350;
_local2.addEventListener(MouseEvent.CLICK, this.backClick);
m_creditsScreen.addChild(_local2);
addChild(m_creditsScreen);
}
public function creditsClick(_arg1:Event){
playButtonClickSound();
m_mainMenu.visible = false;
m_creditsScreen.visible = true;
}
private function createFinalResultScreen(){
var _local1:Sprite;
var _local2:MovieClip;
var _local3:Sprite;
m_final = new MovieClip();
m_final.visible = false;
_local1 = new Sprite();
_local1.graphics.beginFill(0, 0.5);
_local1.graphics.drawRect(0, 0, CannonApplication.k_gameWidth, CannonApplication.k_gameHeight);
_local1.graphics.endFill();
m_final.addChild(_local1);
_local2 = new mc_UIFinalResultsBG();
_local2.x = ((CannonApplication.k_gameWidth - _local2.width) / 2);
_local2.y = ((CannonApplication.k_gameHeight - _local2.height) / 2);
m_final.addChild(_local2);
m_finalClip = _local2;
m_finalPark = new mc_UIParkPlayed();
m_finalPark.visible = false;
m_finalPark.x = (_local2.x + 49);
m_finalPark.y = (_local2.y + 82);
m_final.addChild(m_finalPark);
m_finalBeach = new mc_UIBeachPlayed();
m_finalBeach.visible = false;
m_finalBeach.x = (_local2.x + 191);
m_finalBeach.y = (_local2.y + 82);
m_final.addChild(m_finalBeach);
m_finalMountain = new mc_UIMountainPlayed();
m_finalMountain.visible = false;
m_finalMountain.x = (_local2.x + 336);
m_finalMountain.y = (_local2.y + 82);
m_final.addChild(m_finalMountain);
_local3 = new ContinueButton();
_local3.x = (_local2.x + 133);
_local3.y = (_local2.y + 301);
_local3.addEventListener(MouseEvent.CLICK, handleSubmitScorePopupClick);
m_final.addChild(_local3);
m_submitScoreClip = new mc_UI_SubmitScore();
m_submitScoreClip.visible = false;
m_submitScoreClip.x = ((650 / 2) - (m_submitScoreClip.width / 2));
m_submitScoreClip.y = ((450 / 2) - (m_submitScoreClip.height / 2));
m_submitScoreClip.SubmitScore_BTN.addEventListener(MouseEvent.CLICK, submitScore);
m_final.addChild(m_submitScoreClip);
addChild(m_final);
}
private function createAnimalSelector(_arg1:Array){
var _local2:Number;
var _local3:CatButton;
var _local4:DogButton;
var _local5:SquirrelButton;
m_animalSelector = new Sprite();
m_animalSelector.visible = false;
m_selectClip = new mc_UICritterSelect2();
m_animalSelector.addChild(m_selectClip);
_local2 = _arg1[0];
_local3 = new CatButton(this);
_local4 = new DogButton(this);
_local5 = new SquirrelButton(this);
_local3.enabled = false;
_local4.enabled = false;
_local5.enabled = false;
switch (_local2){
case CannonApplication.k_squirrel:
_local5.x = (327 + 62);
_local5.y = 215;
m_animalSelector.addChild(_local5);
_local4.scaleX = 0.7;
_local4.scaleY = 0.7;
_local3.visible = false;
_local4.visible = false;
case CannonApplication.k_dog:
_local4.x = (327 + 62);
_local4.y = 215;
m_animalSelector.addChild(_local4);
_local3.scaleX = 0.7;
_local3.scaleY = 0.7;
_local3.visible = false;
case CannonApplication.k_cat:
_local3.x = (327 + 62);
_local3.y = 215;
m_animalSelector.addChild(_local3);
};
m_selectClip.crackers_clip.visible = false;
m_selectClip.fat_kat_clip.visible = false;
m_selectClip.puddles_clip.visible = false;
switch (_local2){
case CannonApplication.k_squirrel:
m_selectClip.crackers_clip.visible = true;
break;
case CannonApplication.k_dog:
m_selectClip.puddles_clip.visible = true;
break;
case CannonApplication.k_cat:
m_selectClip.fat_kat_clip.visible = true;
break;
};
m_selectClip.mci_catColor.gotoAndStop(1);
m_selectClip.mci_dogColor.gotoAndStop(1);
m_selectClip.mci_squirrelColor.gotoAndStop(1);
addChild(m_animalSelector);
}
private function loadPutThisWebsite(_arg1:MouseEvent){
var url:String;
var request:URLRequest;
var a_event = _arg1;
url = "http://www.arcadetown.com/free_content/index.asp";
request = new URLRequest(url);
try {
navigateToURL(request, "_blank");
} catch(e:Error) {
};
}
function updateTimer(_arg1:Event, _arg2:Timer, _arg3:int){
m_animalSelectorTimer = (m_animalSelectorTimer - 50);
if (m_animalSelectorTimer <= 0){
_arg2.stop();
_arg2 = null;
selectDoll(_arg3);
};
}
private function createResultScreen(){
var _local1:Sprite;
var _local2:MovieClip;
var _local3:Sprite;
m_results = new Sprite();
m_results.visible = false;
_local1 = new Sprite();
_local1.graphics.beginFill(0, 0.5);
_local1.graphics.drawRect(0, 0, CannonApplication.k_gameWidth, CannonApplication.k_gameHeight);
_local1.graphics.endFill();
m_results.addChild(_local1);
_local2 = new mc_UIResults();
_local2.x = ((CannonApplication.k_gameWidth - _local2.width) / 2);
_local2.y = ((CannonApplication.k_gameHeight - _local2.height) / 2);
m_results.addChild(_local2);
m_resultsDistance = _local2;
_local3 = new ContinueButton();
_local3.x = 76;
_local3.y = 113;
_local3.addEventListener(MouseEvent.CLICK, continueClick);
_local2.addChild(_local3);
addChild(m_results);
}
public function continueClick(_arg1:Event){
playButtonClickSound();
m_app.resetGame();
}
public function showFinalResults(_arg1:Number, _arg2:Number, _arg3:Number){
var _local4:Number;
m_finalClip.dt_parkFinalResult.text = (_arg1 + " ft");
m_finalClip.dt_beachFinalResult.text = (_arg2 + " ft");
m_finalClip.dt_mountainFinalResult.text = (_arg3 + " ft");
m_finalClip.dt_parkGoal.text = (("Goal: " + CannonApplication.k_parkGoal) + " ft");
m_finalClip.dt_beachGoal.text = (("Goal: " + CannonApplication.k_beachGoal) + " ft");
m_finalClip.dt_mountainGoal.text = (("Goal: " + CannonApplication.k_mountainGoal) + " ft");
_local4 = Math.floor(((_arg1 + _arg2) + _arg3));
m_score = _local4;
m_finalClip.dt_overallFinalResult.text = (("Total: " + _local4) + " ft");
m_finalPark.visible = (((_arg1 > 0)) && ((_arg1 > CannonApplication.k_parkGoal)));
m_finalBeach.visible = (((_arg2 > 0)) && ((_arg2 > CannonApplication.k_beachGoal)));
m_finalMountain.visible = (((_arg3 > 0)) && ((_arg3 > CannonApplication.k_mountainGoal)));
m_animalSelector.visible = false;
m_results.visible = false;
m_distanceIndicator.visible = false;
m_final.visible = true;
trace("yo");
m_submitScoreClip.Score_txt.text = ("Score: " + _local4);
trace("oo");
m_submitScoreClip.visible = false;
trace("ah");
}
public function handleNewGameClick(_arg1:Event){
playButtonClickSound();
m_final.visible = false;
m_app.beginGame();
}
public function howToClick(_arg1:Event){
playButtonClickSound();
m_mainMenu.visible = false;
m_howToScreen.visible = true;
}
public function submitScore(_arg1:Event){
var url:String;
var request:URLRequest;
var a_event = _arg1;
if (m_submitScoreClip.Name_txt.text != ""){
url = ATHelpers.generateHighscoreSubmission("crittercannon", m_submitScoreClip.Name_txt.text, m_score);
request = new URLRequest(url);
try {
navigateToURL(request, "_blank");
} catch(e:Error) {
};
};
handleNewGameClick(null);
}
public function selectDoll(_arg1:Number){
m_app.setDoll(_arg1);
m_animalSelector.visible = false;
m_results.visible = false;
m_final.visible = false;
m_cannonControls.visible = true;
m_slider.start();
}
private function createHowTo(){
var _local1:BackButton;
m_howToScreen = new Sprite();
m_howToScreen.visible = false;
m_howToScreen.addChild(new mc_UIHowTo());
_local1 = new BackButton();
_local1.x = (m_creditsScreen.width / 2);
_local1.y = 355;
_local1.addEventListener(MouseEvent.CLICK, this.backClick);
m_howToScreen.addChild(_local1);
addChild(m_howToScreen);
}
public function showResults(_arg1:Number){
var _local2:Number;
var _local3:int;
var _local4:String;
var _local5:HackButton;
_local2 = m_app.getCurrentGoalNumber();
if (_arg1 >= _local2){
m_app.playSound("Cheer.wav");
m_resultsDistance.dt_status.text = "Goal reached. Well done!";
} else {
m_app.playSound("Ohh.wav");
_local4 = "Goal failed.";
if (m_app.getAttemptsLeft() > 0){
_local4 = (_local4 + " Try again!");
};
m_resultsDistance.dt_status.text = _local4;
};
m_resultsDistance.dt_resultDistance.text = (_arg1 + " ft");
m_final.visible = false;
m_animalSelector.visible = false;
_local3 = (m_animalSelector.numChildren - 1);
while (_local3 >= 0) {
_local5 = (m_animalSelector.getChildAt(_local3) as HackButton);
if (_local5 == null){
} else {
_local5.dispose();
m_animalSelector.removeChild(m_animalSelector.getChildAt(_local3));
};
_local3--;
};
m_results.visible = true;
}
public function updateAngle(_arg1:Number){
var _local2:Number;
_local2 = Math.round(_arg1);
m_launchBarClip.dt_degrees.text = _local2;
}
private function loadSponsorWebsite(_arg1:MouseEvent){
var url:String;
var request:URLRequest;
var a_event = _arg1;
url = "http://www.arcadetown.com/index.asp?gameid=crittercannon";
request = new URLRequest(url);
try {
navigateToURL(request, "_blank");
} catch(e:Error) {
};
}
private function playButtonClickSound(){
SoundSystem.getSingleton().playSound("ButtonPress.wav");
}
public function launch(){
m_cannonControls.visible = false;
m_results.visible = false;
m_final.visible = false;
m_distanceIndicator.visible = true;
}
public function showAnimalSelection(){
var _local1:int;
var _local2:int;
var _local3:String;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:String;
var _local8:Timer;
_local1 = m_app.getCurrentBest();
_local2 = m_app.getCurrentGoalNumber();
m_selectClip.dt_levelName.text = m_app.getCurrentLevelName();
if (_local1 > _local2){
_local3 = "Goal Met!";
} else {
_local3 = ("Goal: " + _local2);
};
m_selectClip.dt_goal.text = _local3;
_local4 = m_app.getCurrentStageScoreAt(0);
_local5 = m_app.getCurrentStageScoreAt(1);
_local6 = m_app.getCurrentStageScoreAt(2);
if (_local4 >= _local2){
m_selectClip.mci_catColor.gotoAndStop(2);
};
if (_local5 >= _local2){
m_selectClip.mci_dogColor.gotoAndStop(2);
};
if (_local6 >= _local2){
m_selectClip.mci_squirrelColor.gotoAndStop(2);
};
_local7 = "You have not yet qualified for the next stage.";
if (m_app.getCurrentLevel() == 2){
_local7 = "You have not yet qualified for the final score.";
};
if ((((((_local4 >= _local2)) || ((_local5 >= _local2)))) || ((_local6 >= _local2)))){
_local7 = "You have qualified for the next stage!";
if (m_app.getCurrentLevel() == 2){
_local7 = "You have qualified for the final score!";
};
};
m_selectClip.dt_attempt.text = _local7;
m_selectClip.dt_catScore.text = String(_local4);
m_selectClip.dt_dogScore.text = String(_local5);
m_selectClip.dt_squirrelScore.text = String(_local6);
m_animalSelector.visible = true;
m_animalSelectorTimer = k_animalSelectorTimer;
_local8 = new Timer(50);
_local8.addEventListener(TimerEvent.TIMER, Delegate.create(this, updateTimer, _local8, m_app.getNextCritter()));
_local8.start();
}
private function createMainMenu(){
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:PlayGameButton;
var _local5:HowToButton;
var _local6:CreditsButton;
var _local7:HighScoresButton;
var _local8:MovieClip;
var _local9:MovieClip;
var _local10:MovieClip;
m_mainMenu = new Sprite();
m_mainMenu.visible = false;
m_mainMenu.addChild(new mc_UIMainMenu());
_local1 = (m_mainMenu.width / 2);
_local2 = 75;
_local3 = 115;
_local4 = new PlayGameButton();
_local4.x = _local1;
_local4.y = _local3;
_local4.addEventListener(MouseEvent.CLICK, this.playGameClick);
m_mainMenu.addChild(_local4);
_local3 = (_local3 + _local2);
_local5 = new HowToButton();
_local5.x = _local1;
_local5.y = _local3;
_local5.addEventListener(MouseEvent.CLICK, this.howToClick);
m_mainMenu.addChild(_local5);
_local3 = (_local3 + _local2);
_local6 = new CreditsButton();
_local6.x = _local1;
_local6.y = _local3;
_local6.addEventListener(MouseEvent.CLICK, this.creditsClick);
m_mainMenu.addChild(_local6);
_local3 = (_local3 + _local2);
_local7 = new HighScoresButton();
_local7.x = _local1;
_local7.y = _local3;
_local7.addEventListener(MouseEvent.CLICK, this.highScoresClick);
m_mainMenu.addChild(_local7);
_local8 = new mc_UIMMSquallbunny();
_local8.x = ((CannonApplication.k_gameWidth - _local8.width) - 5);
_local8.y = ((CannonApplication.k_gameHeight - _local8.height) - 5);
m_mainMenu.addChild(_local8);
_local9 = new mc_arcadetownflashsmall();
_local9.x = ((_local8.x - _local9.width) - 20);
_local9.y = ((CannonApplication.k_gameHeight - _local9.height) - 5);
_local9.addEventListener(MouseEvent.CLICK, loadSponsorWebsite);
m_mainMenu.addChild(_local9);
_local10 = new mc_PutThisGameOnYourSite();
_local10.x = 0;
_local10.y = 75;
_local10.addEventListener(MouseEvent.CLICK, loadPutThisWebsite);
m_mainMenu.addChild(_local10);
addChild(m_mainMenu);
}
function loadWebsite(_arg1:MouseEvent){
var url:String;
var request:URLRequest;
var a_event = _arg1;
url = "http://www.urbansquall.com/index.php?gameid=crittercannon";
request = new URLRequest(url);
try {
navigateToURL(request, "_blank");
} catch(e:Error) {
};
}
public function updateDistance(_arg1:Number, _arg2:Number){
if (_arg1 > _arg2){
if (!(m_distanceIndicator.dt_goalAchieved.visible)){
SoundSystem.getSingleton().playSound("Cheer.wav");
};
m_distanceIndicator.dt_goalAchieved.visible = true;
};
m_distanceIndicator.dt_DistanceText.htmlText = (((String(Math.floor(_arg1)) + "/") + String(Math.floor(_arg2))) + " ft");
}
public function backClick(_arg1:Event){
playButtonClickSound();
m_howToScreen.visible = false;
m_creditsScreen.visible = false;
m_mainMenu.visible = true;
}
public function playGameClick(_arg1:Event){
playButtonClickSound();
m_mainMenu.visible = false;
showAnimalSelection();
}
public function handleSubmitScorePopupClick(_arg1:Event){
m_submitScoreClip.visible = true;
}
private function createCannonControls(){
var _local1:AngleUpButton;
var _local2:AngleDownButton;
var _local3:LaunchButton;
m_cannonControls = new Sprite();
m_cannonControls.visible = false;
m_launchBarClip = new mc_CannonControlMain();
m_cannonControls.addChild(m_launchBarClip);
_local1 = new AngleUpButton(m_app.Game);
_local1.x = 20;
_local1.y = 40;
m_cannonControls.addChild(_local1);
_local2 = new AngleDownButton(m_app.Game);
_local2.x = 90;
_local2.y = 40;
m_cannonControls.addChild(_local2);
m_slider = new ForceSlider();
m_slider.x = 260;
m_slider.y = 40;
m_cannonControls.addChild(m_slider);
_local3 = new LaunchButton(m_app.Game, m_slider);
_local3.x = 543;
_local3.y = 24;
m_cannonControls.addChild(_local3);
addChild(m_cannonControls);
}
public function highScoresClick(_arg1:Event){
var url:String;
var request:URLRequest;
var a_event = _arg1;
url = ATHelpers.generateHighscoreURL("crittercannon");
request = new URLRequest(url);
try {
navigateToURL(request, "_blank");
} catch(e:Error) {
};
playButtonClickSound();
}
}
}//package