Section 1
//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
import flash.display.*;
public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {
mx_internal static const VERSION:String = "3.0.0.0";
public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
public function get measuredWidth():Number{
if (bitmapData){
return (bitmapData.width);
};
return (0);
}
public function get measuredHeight():Number{
if (bitmapData){
return (bitmapData.height);
};
return (0);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
}
}//package mx.core
Section 2
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 3
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
this.left = _arg1;
this.top = _arg2;
this.right = _arg3;
this.bottom = _arg4;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 4
//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexBitmap extends Bitmap {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
var bitmapData = _arg1;
var pixelSnapping = _arg2;
var smoothing = _arg3;
super(bitmapData, pixelSnapping, smoothing);
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 5
//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexMovieClip extends MovieClip {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexMovieClip(){
super();
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 6
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 7
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 8
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.accessibility.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(_arg1:Point):Point;
function get name():String;
function set width(_arg1:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(_arg1:String):void;
function set scaleX(_arg1:Number):void;
function set scaleY(_arg1:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(_arg1:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(_arg1:Point):Point;
function get height():Number;
function set blendMode(_arg1:String):void;
function get parent():DisplayObjectContainer;
function getBounds(_arg1:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(_arg1:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(_arg1:Number):void;
function set accessibilityProperties(_arg1:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(_arg1:Boolean):void;
function get scaleX():Number;
function get scaleY():Number;
function get scrollRect():Rectangle;
function get mouseX():Number;
function get mouseY():Number;
function set height(_arg1:Number):void;
function set mask(_arg1:DisplayObject):void;
function getRect(_arg1:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(_arg1:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(_arg1:DisplayObject):Boolean;
function set opaqueBackground(_arg1:Object):void;
function set visible(_arg1:Boolean):void;
function get mask():DisplayObject;
function set x(_arg1:Number):void;
function set y(_arg1:Number):void;
function get transform():Transform;
function set filters(_arg1:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(_arg1:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 9
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(_arg1:Array):void;
function get isDocument():Boolean;
function set repeaters(_arg1:Array):void;
function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(_arg1:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 10
//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {
public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipAsset(){
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 11
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.system.*;
public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject {
protected var initialHeight:Number;// = 0
private var loader:Loader;// = null
private var initialized:Boolean;// = false
protected var initialWidth:Number;// = 0
private var requestedHeight:Number;
private var requestedWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipLoaderAsset(){
var _local1:LoaderContext = new LoaderContext();
_local1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
if (("allowLoadBytesCodeExecution" in _local1)){
_local1["allowLoadBytesCodeExecution"] = true;
};
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.loadBytes(movieClipData, _local1);
addChild(loader);
}
override public function get width():Number{
if (!initialized){
return (initialWidth);
};
return (super.width);
}
override public function set width(_arg1:Number):void{
if (!initialized){
requestedWidth = _arg1;
} else {
loader.width = _arg1;
};
}
override public function get measuredHeight():Number{
return (initialHeight);
}
private function completeHandler(_arg1:Event):void{
initialized = true;
initialWidth = loader.width;
initialHeight = loader.height;
if (!isNaN(requestedWidth)){
loader.width = requestedWidth;
};
if (!isNaN(requestedHeight)){
loader.height = requestedHeight;
};
dispatchEvent(_arg1);
}
override public function set height(_arg1:Number):void{
if (!initialized){
requestedHeight = _arg1;
} else {
loader.height = _arg1;
};
}
override public function get measuredWidth():Number{
return (initialWidth);
}
override public function get height():Number{
if (!initialized){
return (initialHeight);
};
return (super.height);
}
public function get movieClipData():ByteArray{
return (null);
}
}
}//package mx.core
Section 12
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 13
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import mx.core.*;
import flash.utils.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.0.0.0";
private static var counter:int = 0;
public static function displayObjectToString(_arg1:DisplayObject):String{
var _local2:String;
var _local4:String;
var _local5:Array;
var _local3:DisplayObject = _arg1;
while (_local3 != null) {
if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){
break;
};
_local4 = _local3.name;
if ((_local3 is IRepeaterClient)){
_local5 = IRepeaterClient(_local3).instanceIndices;
if (_local5){
_local4 = (_local4 + (("[" + _local5.join("][")) + "]"));
};
};
_local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public static function createUniqueName(_arg1:Object):String{
if (!_arg1){
return (null);
};
var _local2:String = getQualifiedClassName(_arg1);
var _local3:int = _local2.indexOf("::");
if (_local3 != -1){
_local2 = _local2.substr((_local3 + 2));
};
var _local4:int = _local2.charCodeAt((_local2.length - 1));
if ((((_local4 >= 48)) && ((_local4 <= 57)))){
_local2 = (_local2 + "_");
};
return ((_local2 + counter++));
}
}
}//package mx.utils
Section 14
//Ball (Ball)
package {
import flash.display.*;
public class Ball {
public var _visible:BallVisible;// = null
public var _location:Location;
public var _occupancyType:int;// = 0
public function Ball(){
_location = new Location();
super();
}
public function CreateVisibles(_arg1:Sprite):void{
_visible = new BallVisible(_occupancyType);
_visible.x = _location._pos.x;
_visible.y = _location._pos.y;
_arg1.addChild(_visible);
}
}
}//package
Section 15
//BallVisible (BallVisible)
package {
import flash.events.*;
import flash.display.*;
public class BallVisible extends Sprite {
private var _size:Number;// = 35
public var _occupancyType:int;// = 0
private var _selected:Boolean;// = false
private var _animationVal:Number;// = 0
public function BallVisible(_arg1:int){
_occupancyType = _arg1;
UpdateDrawList();
}
public function MakeBallSelected(_arg1:Boolean):void{
if (((!(_selected)) && (_arg1))){
addEventListener(Event.ENTER_FRAME, OnEnterFrame);
_animationVal = 0;
_selected = true;
} else {
if (((_selected) && (!(_arg1)))){
removeEventListener(Event.ENTER_FRAME, OnEnterFrame);
_animationVal = 0;
_selected = false;
UpdateDrawList();
};
};
}
public function UpdateDrawList():void{
var _local1:int = GetColor();
var _local2:Number = Math.cos(((_animationVal * Math.PI) * 2));
_local2 = (_local2 * 0.1);
_local2 = (_local2 + (0.1 + 0.8));
_local1 = Misc.ScaleColor(_local1, _local2);
graphics.clear();
VisibleObjects.AddShadedSphereToDrawList(this, _local1, _size, true, true);
}
private function GetColor():int{
var _local1:int;
switch (_occupancyType){
case 0:
break;
case 1:
_local1 = 0xFF0000;
break;
case 2:
_local1 = 0xFF00;
break;
case 3:
_local1 = 4235519;
break;
case 4:
_local1 = 0xC0C0C0;
break;
};
return (_local1);
}
public function OnEnterFrame(_arg1:Event):void{
_animationVal = (_animationVal + 0.1);
if (_animationVal > 1){
_animationVal = (_animationVal - 1);
};
UpdateDrawList();
}
}
}//package
Section 16
//Constants (Constants)
package {
public class Constants {
public static const THRESHOLD_DIST_TO_DETERMINE_RUN:Number = 10;
public static const LEVEL_SELECT_FRAME_BORDER:Number = 5;
public static const BALL_RADIUS_SELECTED:Number = 30;
public static const BALL_POST_RELEASE_MOVE_TO_LOCATION_SPEED:Number = 0.1;
public static const BALL_RADIUS:Number = 35;
public static const URL_OTHER_GAMES_MOVIE:String = "http://www.reflexive.com/index.php?PAGE=WebGameHome&REFERRER=DrMembrainSliderama&SOURCE=IntroMovie";
public static const URL_OTHER_GAMES_MAIN:String = "http://www.reflexive.com/index.php?PAGE=WebGameHome&REFERRER=DrMembrainSliderama&SOURCE=Main";
public static const BALL_SELECT_REGION_RADIUS:Number = 40;
public static const LOCATION_RADIUS:Number = 70;
public static const URL_PUT_ON_SITE:String = "http://www.reflexive.com/index.php?PAGE=WebGameForMySite&REFERRER=DrMembrainSliderama&SOURCE=Main";
}
}//package
Section 17
//DebugButton (DebugButton)
package {
import flash.display.*;
public class DebugButton extends SimpleButton {
public function DebugButton(_arg1:String){
upState = new DebugButtonDisplayState(_arg1);
downState = upState;
overState = upState;
hitTestState = upState;
useHandCursor = true;
}
}
}//package
Section 18
//DebugButtonDisplayState (DebugButtonDisplayState)
package {
import flash.display.*;
import flash.text.*;
public class DebugButtonDisplayState extends Sprite {
public var _text:String;
public function DebugButtonDisplayState(_arg1:String){
_text = new String();
super();
_text = _arg1;
draw();
}
private function draw():void{
graphics.beginFill(0xFFFFFF);
graphics.drawRect(0, 0, 60, 24);
graphics.endFill();
var _local1:TextField = new TextField();
_local1.text = _text;
_local1.width = 60;
_local1.height = 24;
var _local2:TextFormat = new TextFormat();
_local2.align = TextFormatAlign.CENTER;
_local2.font = "Arial";
_local2.size = 15;
_local1.setTextFormat(_local2);
addChild(_local1);
}
}
}//package
Section 19
//DebugVisibleLayer (DebugVisibleLayer)
package {
import flash.display.*;
public class DebugVisibleLayer extends Sprite {
private var _buttonXPos:int;// = 0
public var _debugMarker:MarkerVisible;// = null
public static var _debugVisibleLayer:DebugVisibleLayer = null;
public function DebugVisibleLayer(){
_debugVisibleLayer = this;
_debugMarker = new MarkerVisible();
addChild(_debugMarker);
}
public function AddDebugButton(_arg1:String):DebugButton{
var _local2:DebugButton = new DebugButton(_arg1);
_local2.x = _buttonXPos;
_local2.y = 0;
addChild(_local2);
_buttonXPos = (_buttonXPos + _local2.width);
_buttonXPos = (_buttonXPos + 3);
return (_local2);
}
public static function Instance():DebugVisibleLayer{
return (_debugVisibleLayer);
}
}
}//package
Section 20
//EmbeddedAssets (EmbeddedAssets)
package {
public class EmbeddedAssets {
public var _introMovie:Class;
public var _check:Class;
public var _level1:Class;
public var _background:Class;
public var _level3:Class;
public var _longButtonHover:Class;
public var _level5:Class;
public var _arrow:Class;
public var _level8:Class;
public var _level4:Class;
public var _longButtonClick:Class;
public var _level2:Class;
public var _bigButtonNormal:Class;
public var _titleScreen:Class;
public var _bigButtonHover:Class;
public var _level10:Class;
public var _level9:Class;
public var _level6:Class;
public var _bigButtonClick:Class;
public var _longButtonNormal:Class;
public var _level7:Class;
private static var _instance:EmbeddedAssets;
public function EmbeddedAssets(){
_titleScreen = EmbeddedAssets__titleScreen;
_background = EmbeddedAssets__background;
_bigButtonNormal = EmbeddedAssets__bigButtonNormal;
_bigButtonHover = EmbeddedAssets__bigButtonHover;
_bigButtonClick = EmbeddedAssets__bigButtonClick;
_longButtonNormal = EmbeddedAssets__longButtonNormal;
_longButtonHover = EmbeddedAssets__longButtonHover;
_longButtonClick = EmbeddedAssets__longButtonClick;
_introMovie = EmbeddedAssets__introMovie;
_arrow = EmbeddedAssets__arrow;
_check = EmbeddedAssets__check;
_level1 = EmbeddedAssets__level1;
_level2 = EmbeddedAssets__level2;
_level3 = EmbeddedAssets__level3;
_level4 = EmbeddedAssets__level4;
_level5 = EmbeddedAssets__level5;
_level6 = EmbeddedAssets__level6;
_level7 = EmbeddedAssets__level7;
_level8 = EmbeddedAssets__level8;
_level9 = EmbeddedAssets__level9;
_level10 = EmbeddedAssets__level10;
super();
}
public static function Instance():EmbeddedAssets{
if (_instance == null){
_instance = new (EmbeddedAssets);
};
return (_instance);
}
}
}//package
Section 21
//EmbeddedAssets__arrow (EmbeddedAssets__arrow)
package {
import mx.core.*;
import flash.utils.*;
public class EmbeddedAssets__arrow extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function EmbeddedAssets__arrow(){
dataClass = EmbeddedAssets__arrow_dataClass;
super();
initialWidth = (11000 / 20);
initialHeight = (8000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 22
//EmbeddedAssets__arrow_dataClass (EmbeddedAssets__arrow_dataClass)
package {
import mx.core.*;
public class EmbeddedAssets__arrow_dataClass extends ByteArrayAsset {
}
}//package
Section 23
//EmbeddedAssets__background (EmbeddedAssets__background)
package {
import mx.core.*;
public class EmbeddedAssets__background extends BitmapAsset {
}
}//package
Section 24
//EmbeddedAssets__bigButtonClick (EmbeddedAssets__bigButtonClick)
package {
import mx.core.*;
public class EmbeddedAssets__bigButtonClick extends BitmapAsset {
}
}//package
Section 25
//EmbeddedAssets__bigButtonHover (EmbeddedAssets__bigButtonHover)
package {
import mx.core.*;
public class EmbeddedAssets__bigButtonHover extends BitmapAsset {
}
}//package
Section 26
//EmbeddedAssets__bigButtonNormal (EmbeddedAssets__bigButtonNormal)
package {
import mx.core.*;
public class EmbeddedAssets__bigButtonNormal extends BitmapAsset {
}
}//package
Section 27
//EmbeddedAssets__check (EmbeddedAssets__check)
package {
import mx.core.*;
import flash.utils.*;
public class EmbeddedAssets__check extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function EmbeddedAssets__check(){
dataClass = EmbeddedAssets__check_dataClass;
super();
initialWidth = (11000 / 20);
initialHeight = (8000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 28
//EmbeddedAssets__check_dataClass (EmbeddedAssets__check_dataClass)
package {
import mx.core.*;
public class EmbeddedAssets__check_dataClass extends ByteArrayAsset {
}
}//package
Section 29
//EmbeddedAssets__introMovie (EmbeddedAssets__introMovie)
package {
import mx.core.*;
import flash.utils.*;
public class EmbeddedAssets__introMovie extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function EmbeddedAssets__introMovie(){
dataClass = EmbeddedAssets__introMovie_dataClass;
super();
initialWidth = (10660 / 20);
initialHeight = (8000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package
Section 30
//EmbeddedAssets__introMovie_dataClass (EmbeddedAssets__introMovie_dataClass)
package {
import mx.core.*;
public class EmbeddedAssets__introMovie_dataClass extends ByteArrayAsset {
}
}//package
Section 31
//EmbeddedAssets__level1 (EmbeddedAssets__level1)
package {
import mx.core.*;
public class EmbeddedAssets__level1 extends ByteArrayAsset {
}
}//package
Section 32
//EmbeddedAssets__level10 (EmbeddedAssets__level10)
package {
import mx.core.*;
public class EmbeddedAssets__level10 extends ByteArrayAsset {
}
}//package
Section 33
//EmbeddedAssets__level2 (EmbeddedAssets__level2)
package {
import mx.core.*;
public class EmbeddedAssets__level2 extends ByteArrayAsset {
}
}//package
Section 34
//EmbeddedAssets__level3 (EmbeddedAssets__level3)
package {
import mx.core.*;
public class EmbeddedAssets__level3 extends ByteArrayAsset {
}
}//package
Section 35
//EmbeddedAssets__level4 (EmbeddedAssets__level4)
package {
import mx.core.*;
public class EmbeddedAssets__level4 extends ByteArrayAsset {
}
}//package
Section 36
//EmbeddedAssets__level5 (EmbeddedAssets__level5)
package {
import mx.core.*;
public class EmbeddedAssets__level5 extends ByteArrayAsset {
}
}//package
Section 37
//EmbeddedAssets__level6 (EmbeddedAssets__level6)
package {
import mx.core.*;
public class EmbeddedAssets__level6 extends ByteArrayAsset {
}
}//package
Section 38
//EmbeddedAssets__level7 (EmbeddedAssets__level7)
package {
import mx.core.*;
public class EmbeddedAssets__level7 extends ByteArrayAsset {
}
}//package
Section 39
//EmbeddedAssets__level8 (EmbeddedAssets__level8)
package {
import mx.core.*;
public class EmbeddedAssets__level8 extends ByteArrayAsset {
}
}//package
Section 40
//EmbeddedAssets__level9 (EmbeddedAssets__level9)
package {
import mx.core.*;
public class EmbeddedAssets__level9 extends ByteArrayAsset {
}
}//package
Section 41
//EmbeddedAssets__longButtonClick (EmbeddedAssets__longButtonClick)
package {
import mx.core.*;
public class EmbeddedAssets__longButtonClick extends BitmapAsset {
}
}//package
Section 42
//EmbeddedAssets__longButtonHover (EmbeddedAssets__longButtonHover)
package {
import mx.core.*;
public class EmbeddedAssets__longButtonHover extends BitmapAsset {
}
}//package
Section 43
//EmbeddedAssets__longButtonNormal (EmbeddedAssets__longButtonNormal)
package {
import mx.core.*;
public class EmbeddedAssets__longButtonNormal extends BitmapAsset {
}
}//package
Section 44
//EmbeddedAssets__titleScreen (EmbeddedAssets__titleScreen)
package {
import mx.core.*;
public class EmbeddedAssets__titleScreen extends BitmapAsset {
}
}//package
Section 45
//FrontMenuVisibleLayer (FrontMenuVisibleLayer)
package {
import flash.events.*;
import flash.display.*;
public class FrontMenuVisibleLayer extends Sprite {
public var _playButton:PlainButton;// = null
public static var _frontMenuVisibleLayer:FrontMenuVisibleLayer = null;
public function FrontMenuVisibleLayer(){
_frontMenuVisibleLayer = this;
_playButton = new PlainButton("Play", 200);
_playButton.x = 250;
_playButton.y = 440;
addChild(_playButton);
var _local1:Class = EmbeddedAssets.Instance()._titleScreen;
var _local2:Bitmap = new (_local1);
_local2.y = 100;
addChild(_local2);
MakeActive(true);
}
public function MakeActive(_arg1:Boolean):void{
if (_arg1){
_playButton.addEventListener(MouseEvent.MOUSE_UP, OnPlayButton);
} else {
_playButton.removeEventListener(MouseEvent.MOUSE_UP, OnPlayButton);
};
}
public function OnPlayButton(_arg1:MouseEvent):void{
SlippySlide.Instance().SetFrontLayerActive(false);
FrontMenuVisibleLayer.Instance().MakeActive(false);
SlippySlide.Instance().SetGameLayerActive(true);
SlippySlide.Instance().SetPlayLayerActive(true);
if (!PlayMenuVisibleLayer.Instance()._firstShow){
GameVisibleLayer.Instance().MakeActive(true);
PlayMenuVisibleLayer.Instance().MakeActive(true);
};
}
public static function Instance():FrontMenuVisibleLayer{
return (_frontMenuVisibleLayer);
}
}
}//package
Section 46
//GameFramework (GameFramework)
package {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
public class GameFramework extends Sprite {
public var _introMovie:MovieClip;
public var _introMovieTimer:Timer;
private var _game:SlippySlide;
public var _lastMousePosX:Number;// = 0
public var _lastMousePosY:Number;// = 0
public static var _framework:GameFramework = null;
public function GameFramework(){
_framework = this;
stage.scaleMode = StageScaleMode.NO_SCALE;
var _local1:Class = EmbeddedAssets.Instance()._introMovie;
_introMovie = new (_local1);
_introMovie.width = 700;
_introMovie.height = 525;
addChild(_introMovie);
_introMovie.buttonMode = true;
_introMovie.addEventListener(MouseEvent.MOUSE_UP, doMoreGamesFromIntroMovie);
_introMovie.gotoAndPlay(0);
_introMovieTimer = new Timer(7000);
_introMovieTimer.addEventListener(TimerEvent.TIMER, onIntroMovieDone);
_introMovieTimer.start();
}
private function onIntroMovieDone(_arg1:Event):void{
_introMovieTimer.stop();
removeChild(_introMovie);
_game = new SlippySlide(this);
addEventListener(Event.ENTER_FRAME, OnEnterFrame);
addEventListener(MouseEvent.MOUSE_MOVE, OnMouseMove);
}
private function doMoreGamesFromIntroMovie(_arg1:MouseEvent):void{
navigateToURL(new URLRequest(Constants.URL_OTHER_GAMES_MOVIE));
}
public function OnMouseMove(_arg1:MouseEvent):void{
_lastMousePosX = _arg1.stageX;
_lastMousePosY = _arg1.stageY;
}
public function OnEnterFrame(_arg1:Event):void{
}
public static function Instance():GameFramework{
return (_framework);
}
}
}//package
Section 47
//GameVisibleLayer (GameVisibleLayer)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.text.*;
public class GameVisibleLayer extends Sprite {
private var _movingLayer:Sprite;
private var _slidingOff:Boolean;// = false
private var _scalingLayer:Sprite;
private var _slidingOn:Boolean;// = false
private var _slideVal:Number;// = 1
private var _activeLevel:Level;// = null
public static var _gameVisibleLayer:GameVisibleLayer = null;
public function GameVisibleLayer(){
_gameVisibleLayer = this;
_movingLayer = new Sprite();
_scalingLayer = new Sprite();
_movingLayer.addChild(_scalingLayer);
var _local1:SlippySlide = SlippySlide.Instance();
SetActiveLevel(_local1._levelList[6]);
MakeActive(false);
var _local2:DebugButton = DebugVisibleLayer.Instance().AddDebugButton("game-on/off");
_local2.addEventListener(MouseEvent.MOUSE_UP, OnDebugSlideOnOff);
var _local3:DebugButton = DebugVisibleLayer.Instance().AddDebugButton("lvl cmp");
_local3.addEventListener(MouseEvent.MOUSE_UP, OnDebugLevelComplete);
}
public function SetActiveLevel(_arg1:Level):void{
while (numChildren > 0) {
removeChildAt(0);
};
addChild(_movingLayer);
_activeLevel = _arg1;
while (_scalingLayer.numChildren > 0) {
_scalingLayer.removeChildAt(0);
};
_activeLevel.CreateVisibles(_scalingLayer);
_activeLevel.SyncAllLocationMatches();
_activeLevel._activeLevel = true;
var _local2:RectBounds = new RectBounds();
var _local3:Point = new Point(0, 0);
_local2.UnionPoint(_local3);
_local3.x = 700;
_local3.y = 450;
_local2.UnionPoint(_local3);
_local2.Shrink(75, 75);
var _local4:OffsetScale = new OffsetScale();
_local2.DetermineOffsetScaleToApplyToChildRectToFillMaximallyWithUniformScaling(_activeLevel._bounds, _local4);
_scalingLayer.x = _local4._offsetX;
_scalingLayer.y = _local4._offsetY;
_scalingLayer.scaleX = _local4._scaleX;
_scalingLayer.scaleY = _local4._scaleY;
var _local5:TextField = new TextField();
var _local6:int = SlippySlide.Instance()._levelList.indexOf(_arg1);
var _local7:int = GetLevelNumberFromIndex(_local6);
_local5.text = ("Level: " + _local7);
_local5.width = 200;
_local5.height = 50;
var _local8:TextFormat = new TextFormat();
_local8.align = TextFormatAlign.CENTER;
_local8.font = "Comic Sans MS";
_local8.size = 30;
_local8.color = 0xC0C0C0;
_local8.bold = true;
_local5.setTextFormat(_local8);
_local5.x = 20;
_local5.y = 440;
addChild(_local5);
}
private function SetMovePosition():void{
var _local1:Number = ((1 - _slideVal) * (1 - _slideVal));
_local1 = (1 - _local1);
_movingLayer.alpha = _local1;
}
public function SlideOff():void{
_slidingOff = true;
}
public function SlideOn():void{
_slidingOn = true;
}
private function GetLevelNumberFromIndex(_arg1:int):int{
switch (_arg1){
case 0:
return (10);
case 1:
return (8);
case 2:
return (9);
case 3:
return (5);
case 4:
return (6);
case 5:
return (7);
case 6:
return (1);
case 7:
return (2);
case 8:
return (3);
case 9:
return (4);
};
return (1);
}
public function MakeActive(_arg1:Boolean):void{
if (_arg1){
addEventListener(Event.ENTER_FRAME, OnEnterFrame);
_activeLevel.MakeActive(true);
} else {
removeEventListener(Event.ENTER_FRAME, OnEnterFrame);
_activeLevel.MakeActive(false);
};
}
public function OnDebugLevelComplete(_arg1:MouseEvent):void{
_activeLevel._isLevelComplete = true;
}
public function OnDebugSlideOnOff(_arg1:MouseEvent):void{
if (((!(_slidingOn)) && (!(_slidingOff)))){
if (_slideVal == 0){
_slidingOn = true;
} else {
_slidingOff = true;
};
};
}
public function OnEnterFrame(_arg1:Event):void{
if (_slidingOff){
_slideVal = (_slideVal - 0.2);
if (_slideVal < 0){
_slidingOff = false;
_slideVal = 0;
};
SetMovePosition();
} else {
if (_slidingOn){
_slideVal = (_slideVal + 0.2);
if (_slideVal > 1){
_slideVal = 1;
_slidingOn = false;
};
SetMovePosition();
};
};
}
public static function Instance():GameVisibleLayer{
return (_gameVisibleLayer);
}
}
}//package
Section 48
//Instructions (Instructions)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class Instructions extends Sprite {
private var _doneButton:PlainButton;// = null
public function Instructions(_arg1:String, _arg2:Boolean){
graphics.lineStyle(4, 0);
graphics.beginFill(5292224, 1);
graphics.drawRoundRect(0, 0, 650, 475, 30, 30);
graphics.endFill();
var _local3:TextField = new TextField();
_local3.text = _arg1;
_local3.width = 600;
_local3.height = 425;
var _local4:TextFormat = new TextFormat();
_local4.align = TextFormatAlign.LEFT;
_local4.font = "Comic Sans MS";
_local4.size = 30;
_local4.color = 0;
_local3.setTextFormat(_local4);
_local3.selectable = false;
addChild(_local3);
_local3.x = 25;
_local3.y = 25;
if (_arg2){
_doneButton = new PlainButton("Done", 200);
_doneButton.x = (325 - 100);
_doneButton.y = 405;
addChild(_doneButton);
_doneButton.addEventListener(MouseEvent.MOUSE_UP, OnDoneButton);
};
}
public function OnDoneButton(_arg1:MouseEvent):void{
if (parent == PlayMenuVisibleLayer.Instance()){
PlayMenuVisibleLayer.Instance().MakeActive(true);
} else {
if (parent == LevelSelMenuVisibleLayer.Instance()){
LevelSelMenuVisibleLayer.Instance().MakeActive(true);
};
};
parent.removeChild(this);
}
}
}//package
Section 49
//Level (Level)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.utils.*;
import mx.utils.*;
import flash.text.*;
import flash.filters.*;
public class Level extends Sprite {
public const WAITING_FOR_MOVE_DIRECTION:int = 1;
public const WAITING_FOR_BALL_SELECTION:int = 0;
public const RELEASED_RUN:int = 3;
public const MOVING_RUN:int = 2;
public var _runList:Array;
public var _state:int;// = 0
public var _selectedBall:Ball;// = null
public var _isLevelComplete:Boolean;// = false
public var _ballList:Array;
public var debugCnt:int;// = 0
public var _activeRun:Run;// = null
private var _storedMousePosStageX:Number;
private var _storedMousePosStageY:Number;
public var _locationList:Array;
public var _activeLevel:Boolean;// = false
public var _bounds:RectBounds;
public var _activeRunLocation:Number;// = 0
public function Level(){
_ballList = new Array();
_locationList = new Array();
_runList = new Array();
_bounds = new RectBounds();
super();
MakeActive(false);
}
public function SyncAllLocationMatchesOnARun(_arg1:Run):void{
var _local6:Location;
var _local7:int;
var _local8:Ball;
var _local2:Array = new Array();
var _local3:int = _arg1.GetNumberOfLocationsOnRunTakingIntoAccountCyclic();
var _local4:int;
while (_local4 < _local3) {
_local6 = _arg1._locationList[_local4];
_local7 = 0;
while (_local7 < _ballList.length) {
_local8 = _ballList[_local7];
if (_local8._location == _local6){
_local2.push(_local8);
};
_local7++;
};
_local4++;
};
var _local5:int;
while (_local5 < _local2.length) {
_local8 = _local2[_local5];
if (_local8._occupancyType == _local8._location._desiredOccupancyType){
_local8._location._visible.SetMatched(true);
} else {
_local8._location._visible.SetMatched(false);
};
_local5++;
};
}
private function FindBallThatsClosestToMouse():Ball{
var _local5:Ball;
var _local6:BallVisible;
var _local7:Point;
var _local8:Point;
var _local9:Point;
var _local10:Number;
var _local1:Point = new Point();
_local1.x = GameFramework.Instance()._lastMousePosX;
_local1.y = GameFramework.Instance()._lastMousePosY;
var _local2:Ball;
var _local3:Number = Infinity;
var _local4:int;
while (_local4 < _ballList.length) {
_local5 = _ballList[_local4];
_local6 = _local5._visible;
_local7 = new Point(0, 0);
_local8 = _local6.localToGlobal(_local7);
_local9 = _local8.subtract(_local1);
_local10 = _local9.length;
if ((((_local10 < Constants.BALL_SELECT_REGION_RADIUS)) && ((_local10 < _local3)))){
_local3 = _local10;
_local2 = _local5;
};
_local4++;
};
return (_local2);
}
public function TerminateRelease():void{
var _local1:Sprite;
var _local2:TextField;
var _local3:TextFormat;
var _local4:GlowFilter;
var _local5:Array;
MoveBallGroupToActiveRunLocation();
_state = WAITING_FOR_BALL_SELECTION;
SyncAllLocationMatchesOnARun(_activeRun);
_activeRunLocation = 0;
_activeRun = null;
GameFramework.Instance().addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
GameFramework.Instance().addEventListener(MouseEvent.MOUSE_UP, OnMouseUp);
_isLevelComplete = IsLevelComplete();
if (_isLevelComplete){
MakeAllBallsNotSelected();
_activeLevel = false;
_local1 = new Sprite();
GameVisibleLayer.Instance().addChild(_local1);
_local1.y = 180;
_local2 = new TextField();
_local2.text = "Level Complete";
_local2.width = 700;
_local2.height = 200;
_local2.selectable = false;
_local3 = new TextFormat();
_local3.align = TextFormatAlign.CENTER;
_local3.font = "Arial";
_local3.size = 80;
_local3.color = 15261920;
_local3.bold = true;
_local2.setTextFormat(_local3);
_local1.addChild(_local2);
_local4 = new GlowFilter();
_local4.color = 13680832;
_local4.blurX = 8;
_local4.blurY = 8;
_local4.strength = 32;
_local4.alpha = 0.75;
_local5 = [_local4];
_local1.filters = _local5;
};
}
public function CountBallsOnRun(_arg1:Run):int{
var _local5:Location;
var _local6:int;
var _local7:Ball;
var _local2:int;
var _local3:int = _arg1.GetNumberOfLocationsOnRunTakingIntoAccountCyclic();
var _local4:int;
while (_local4 < _local3) {
_local5 = _arg1._locationList[_local4];
_local6 = 0;
while (_local6 < _ballList.length) {
_local7 = _ballList[_local6];
if (_local7._location == _local5){
_local2++;
break;
};
_local6++;
};
_local4++;
};
return (_local2);
}
public function SetBallVisiblesBackToLocations():void{
var _local2:Ball;
var _local3:BallVisible;
var _local1:int;
while (_local1 < _ballList.length) {
_local2 = _ballList[_local1];
_local3 = _local2._visible;
_local3.x = _local2._location._pos.x;
_local3.y = _local2._location._pos.y;
_local1++;
};
}
public function OnMouseUp(_arg1:MouseEvent):void{
if (_state == MOVING_RUN){
_state = RELEASED_RUN;
GameFramework.Instance().removeEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
GameFramework.Instance().removeEventListener(MouseEvent.MOUSE_UP, OnMouseUp);
} else {
_state = WAITING_FOR_BALL_SELECTION;
_activeRunLocation = 0;
_activeRun = null;
SetBallVisiblesBackToLocations();
};
}
public function GetRunLocationThatMouseIsNearest():Number{
var _local6:Point;
var _local7:Point;
var _local8:LineSegDistResult;
var _local1:Point = new Point();
_local1.x = GameFramework.Instance()._lastMousePosX;
_local1.y = GameFramework.Instance()._lastMousePosY;
var _local2:Number = Infinity;
var _local3:Number = 0;
var _local4:Point = new Point();
var _local5:int;
while (_local5 < (_activeRun._locationList.length - 1)) {
_local6 = _activeRun._locationList[_local5].GetLocationOfVisibleOnStage();
_local7 = _activeRun._locationList[(_local5 + 1)].GetLocationOfVisibleOnStage();
_local8 = MyMath.ClosestPointOnLineSegment(_local6, _local7, _local1);
if (_local8._distance < _local2){
_local2 = _local8._distance;
_local3 = (Number(_local5) + _local8._segmentCoeff);
_local4.x = _local8._location.x;
_local4.y = _local8._location.y;
};
_local5++;
};
return (_local3);
}
public function OnMouseDown(_arg1:MouseEvent):void{
if (_selectedBall != null){
_state = WAITING_FOR_MOVE_DIRECTION;
_storedMousePosStageX = GameFramework.Instance()._lastMousePosX;
_storedMousePosStageY = GameFramework.Instance()._lastMousePosY;
};
}
public function MakeActive(_arg1:Boolean):void{
if (_arg1){
addEventListener(Event.ENTER_FRAME, OnEnterFrame);
GameFramework.Instance().addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
GameFramework.Instance().addEventListener(MouseEvent.MOUSE_UP, OnMouseUp);
} else {
removeEventListener(Event.ENTER_FRAME, OnEnterFrame);
GameFramework.Instance().removeEventListener(MouseEvent.MOUSE_DOWN, OnMouseDown);
GameFramework.Instance().removeEventListener(MouseEvent.MOUSE_UP, OnMouseUp);
};
}
public function IsLevelComplete():Boolean{
var _local2:Ball;
var _local1:int;
while (_local1 < _ballList.length) {
_local2 = _ballList[_local1];
if ((((_local2._occupancyType > 0)) && ((_local2._occupancyType < 4)))){
if (_local2._occupancyType != _local2._location._desiredOccupancyType){
return (false);
};
};
_local1++;
};
return (true);
}
public function UpdateActiveRun():void{
var _local1:Array;
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:Number;
var _local6:int;
var _local7:Location;
var _local8:int;
var _local9:Ball;
var _local10:int;
var _local11:Location;
var _local12:Location;
var _local13:Point;
if (_activeRun != null){
_local1 = new Array();
_local2 = _activeRun.GetNumberOfLocationsOnRunTakingIntoAccountCyclic();
_local3 = 0;
while (_local3 < _local2) {
_local7 = _activeRun._locationList[_local3];
_local8 = 0;
while (_local8 < _ballList.length) {
_local9 = _ballList[_local8];
if (_local9._location == _local7){
_local1.push(_local9);
};
_local8++;
};
_local3++;
};
_local4 = int(_activeRunLocation);
_local5 = (_activeRunLocation % 1);
_local6 = 0;
while (_local6 < _local1.length) {
_local9 = _local1[_local6];
_local10 = (_local4 + _local6);
if (_local10 > (_local2 - 1)){
_local10 = (_local10 - _local2);
};
_local11 = _activeRun._locationList[_local10];
if (_local10 == (_activeRun._locationList.length - 1)){
_local9._visible.x = _local11._pos.x;
_local9._visible.y = _local11._pos.y;
} else {
_local12 = _activeRun._locationList[(_local10 + 1)];
_local13 = Point.interpolate(_local12._pos, _local11._pos, _local5);
_local9._visible.x = _local13.x;
_local9._visible.y = _local13.y;
};
_local6++;
};
};
}
public function FindRunThatContainsLocations(_arg1:Location, _arg2:Location):Run{
var _local4:Run;
var _local5:Boolean;
var _local6:int;
var _local7:Location;
var _local3:int;
while (_local3 < _runList.length) {
_local4 = _runList[_local3];
_local5 = false;
_local6 = 0;
while (_local6 < _local4._locationList.length) {
_local7 = _local4._locationList[_local6];
if (_local7 == _arg1){
_local5 = true;
break;
};
_local6++;
};
if (!_local5){
} else {
_local6 = 0;
while (_local6 < _local4._locationList.length) {
_local7 = _local4._locationList[_local6];
if (_local7 == _arg2){
return (_local4);
};
_local6++;
};
};
_local3++;
};
return (null);
}
public function FindRunThatContainsLocation(_arg1:Location):Run{
var _local3:Run;
var _local4:int;
var _local5:Location;
var _local2:int;
while (_local2 < _runList.length) {
_local3 = _runList[_local2];
_local4 = 0;
while (_local4 < _local3._locationList.length) {
_local5 = _local3._locationList[_local4];
if (_local5 == _arg1){
return (_local3);
};
_local4++;
};
_local2++;
};
return (null);
}
public function OnEnterFrame(_arg1:Event):void{
var _local2:Ball;
var _local3:Point;
var _local4:Point;
var _local5:Point;
var _local6:Number;
var _local7:Number;
var _local8:Location;
var _local9:Point;
var _local10:int;
var _local11:Location;
var _local12:Point;
var _local13:Point;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:int;
var _local18:Number;
if (!_activeLevel){
return;
};
if (_state == WAITING_FOR_BALL_SELECTION){
_local2 = FindBallThatsClosestToMouse();
if ((((_local2 == null)) || (!((_local2 == _selectedBall))))){
MakeAllBallsNotSelected();
};
_selectedBall = _local2;
if (_selectedBall != null){
MakeBallSelected(_selectedBall);
};
} else {
if (_state == WAITING_FOR_MOVE_DIRECTION){
if (_selectedBall._location._neighbours.length < 3){
_activeRun = FindRunThatContainsLocation(_selectedBall._location);
_activeRun._visible.SetSelected(true);
ClearAllLocationMatchesOnARun(_activeRun);
_state = MOVING_RUN;
} else {
_local3 = new Point();
_local3.x = GameFramework.Instance()._lastMousePosX;
_local3.y = GameFramework.Instance()._lastMousePosY;
_local4 = new Point();
_local4.x = _storedMousePosStageX;
_local4.y = _storedMousePosStageY;
_local5 = _local3.subtract(_local4);
_local6 = _local5.length;
if (_local6 > Constants.THRESHOLD_DIST_TO_DETERMINE_RUN){
_local5.x = (_local5.x / _local6);
_local5.y = (_local5.y / _local6);
_local7 = -(Infinity);
_local8 = null;
_local9 = _selectedBall._location.GetLocationOfVisibleOnStage();
_local10 = 0;
while (_local10 < _selectedBall._location._neighbours.length) {
_local11 = _selectedBall._location._neighbours[_local10];
_local12 = _local11.GetLocationOfVisibleOnStage();
_local13 = _local12.subtract(_local9);
_local14 = _local13.length;
_local13.x = (_local13.x / _local14);
_local13.y = (_local13.y / _local14);
_local15 = MyMath.DotProduct(_local5, _local13);
if (_local15 > _local7){
_local7 = _local15;
_local8 = _local11;
};
_local10++;
};
_activeRun = FindRunThatContainsLocations(_selectedBall._location, _local8);
_activeRun._visible.SetSelected(true);
ClearAllLocationMatchesOnARun(_activeRun);
_state = MOVING_RUN;
};
};
} else {
if (_state == MOVING_RUN){
_local16 = GetRunLocationThatMouseIsNearest();
_local17 = GetBallPositionIndexInGroup(_selectedBall);
Misc.assert(!((_local17 == -1)));
_activeRunLocation = (_local16 - _local17);
ClipActiveRunLocation();
UpdateActiveRun();
} else {
if (_state == RELEASED_RUN){
_activeRun._visible.SetSelected(false);
_local18 = (_activeRunLocation % 1);
if (_local18 < 0.5){
_local18 = (_local18 - Constants.BALL_POST_RELEASE_MOVE_TO_LOCATION_SPEED);
if (_local18 < 0){
_activeRunLocation = Math.floor(_activeRunLocation);
ClipActiveRunLocation();
TerminateRelease();
} else {
_activeRunLocation = (Math.floor(_activeRunLocation) + _local18);
UpdateActiveRun();
};
} else {
_local18 = (_local18 + Constants.BALL_POST_RELEASE_MOVE_TO_LOCATION_SPEED);
if (_local18 > 1){
_activeRunLocation = Math.ceil(_activeRunLocation);
ClipActiveRunLocation();
TerminateRelease();
} else {
_activeRunLocation = (Math.floor(_activeRunLocation) + _local18);
UpdateActiveRun();
};
};
};
};
};
};
}
private function GetBallPositionIndexInGroup(_arg1:Ball):int{
var _local5:Location;
var _local6:int;
var _local7:Ball;
var _local2 = -1;
var _local3:int = _activeRun.GetNumberOfLocationsOnRunTakingIntoAccountCyclic();
var _local4:int;
while (_local4 < _local3) {
_local5 = _activeRun._locationList[_local4];
_local6 = 0;
while (_local6 < _ballList.length) {
_local7 = _ballList[_local6];
if (_local7._location == _local5){
_local2++;
if (_local7 == _arg1){
return (_local2);
};
break;
};
_local6++;
};
_local4++;
};
return (-1);
}
private function MakeBallSelected(_arg1:Ball):void{
var _local2:BallVisible;
if (_arg1 != null){
_local2 = _arg1._visible;
_local2.MakeBallSelected(true);
};
}
public function ClipActiveRunLocation():void{
var _local2:Number;
var _local1:int = CountBallsOnRun(_activeRun);
if (_activeRun.IsCyclic()){
_local2 = (_activeRun._locationList.length - 1);
while (_activeRunLocation < 0) {
_activeRunLocation = (_activeRunLocation + _local2);
};
while (_activeRunLocation >= _local2) {
_activeRunLocation = (_activeRunLocation - _local2);
};
} else {
if (_activeRunLocation < 0){
_activeRunLocation = 0;
} else {
if ((_activeRunLocation + (_local1 - 1)) > (_activeRun._locationList.length - 1)){
_activeRunLocation = (((_activeRun._locationList.length - 1) - (_local1 - 1)) - 0.001);
};
};
};
}
private function MakeAllBallsNotSelected():void{
var _local2:Ball;
var _local3:BallVisible;
var _local1:int;
while (_local1 < _ballList.length) {
_local2 = _ballList[_local1];
_local3 = _local2._visible;
_local3.MakeBallSelected(false);
_local1++;
};
}
public function MoveBallGroupToActiveRunLocation():void{
var _local6:Location;
var _local7:int;
var _local8:Ball;
var _local9:Ball;
var _local1:Array = new Array();
var _local2:int = _activeRun.GetNumberOfLocationsOnRunTakingIntoAccountCyclic();
var _local3:int;
while (_local3 < _local2) {
_local6 = _activeRun._locationList[_local3];
_local7 = 0;
while (_local7 < _ballList.length) {
_local8 = _ballList[_local7];
if (_local8._location == _local6){
_local1.push(_local8);
};
_local7++;
};
_local3++;
};
var _local4:int = Math.round(_activeRunLocation);
var _local5:int;
while (_local5 < _local1.length) {
_local9 = _local1[_local5];
_local9._location = _activeRun._locationList[_local4];
_local4++;
if (_local4 >= _local2){
_local4 = 0;
};
_local5++;
};
SetBallVisiblesBackToLocations();
}
public function ClearAllLocationMatchesOnARun(_arg1:Run):void{
var _local3:Location;
var _local2:int;
while (_local2 < _arg1._locationList.length) {
_local3 = _arg1._locationList[_local2];
_local3._visible.SetMatched(false);
_local2++;
};
}
public function SyncAllLocationMatches():void{
var _local2:Ball;
var _local1:int;
while (_local1 < _ballList.length) {
_local2 = _ballList[_local1];
if (_local2._occupancyType == _local2._location._desiredOccupancyType){
_local2._location._visible.SetMatched(true);
} else {
_local2._location._visible.SetMatched(false);
};
_local1++;
};
}
public function CreateVisibles(_arg1:Sprite):void{
var _local3:Location;
var _local4:Run;
var _local5:Ball;
var _local2:int;
_local2 = 0;
while (_local2 < _locationList.length) {
_local3 = _locationList[_local2];
_local3.CreateVisibles(_arg1);
_local2++;
};
_local2 = 0;
while (_local2 < _runList.length) {
_local4 = _runList[_local2];
_local4.CreateVisibles(_arg1);
_local2++;
};
_local2 = 0;
while (_local2 < _ballList.length) {
_local5 = _ballList[_local2];
_local5.CreateVisibles(_arg1);
_local2++;
};
}
public function FixupReferences():void{
var _local2:Location;
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:Location;
var _local7:Run;
var _local8:int;
var _local9:int;
var _local1:int;
while (_local1 < _locationList.length) {
_local2 = _locationList[_local1];
_local3 = 0;
while (_local3 < _local2._neighbourIDs.length) {
_local4 = _local2._neighbourIDs[_local3];
_local5 = 0;
while (_local5 < _locationList.length) {
_local6 = _locationList[_local5];
if (_local4 == _local6._locationId){
_local2._neighbours.push(_local6);
break;
};
_local5++;
};
_local3++;
};
_local1++;
};
_local1 = 0;
while (_local1 < _runList.length) {
_local7 = _runList[_local1];
_local8 = 0;
while (_local8 < _local7._idList.length) {
_local9 = _local7._idList[_local8];
_local5 = 0;
while (_local5 < _locationList.length) {
_local6 = _locationList[_local5];
if (_local9 == _local6._locationId){
_local7._locationList.push(_local6);
break;
};
_local5++;
};
_local8++;
};
_local1++;
};
}
}
}//package
Section 50
//LevelLoader (LevelLoader)
package {
import flash.events.*;
import flash.geom.*;
import flash.net.*;
public class LevelLoader {
private var _fileLines:Array;
private var _currentLine:int;// = 0
public function LevelLoader(){
_fileLines = new Array();
super();
}
public function Load(_arg1:Class):Level{
var _local9:Location;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:Boolean;
var _local14:Number;
var _local15:Number;
var _local16:Point;
var _local17:Ball;
var _local18:int;
var _local19:*;
var _local20:*;
var _local21:*;
var _local22:*;
_fileLines.splice(0);
_currentLine = 0;
var _local2:String = new (_arg1);
_fileLines = _local2.split("\r\n");
var _local3:Level = new Level();
var _local4:int = GetNextLineAsNumber();
_local4 = -(_local4);
if (_local4 < 2){
trace("ERROR: Can't load pre version 2 files");
return (_local3);
};
var _local5:Boolean = Boolean((GetNextLineAsNumber() == 1));
var _local6:int = int(GetNextLineAsNumber());
var _local7:int;
while (_local7 < _local6) {
_local9 = new Location();
_local3._locationList.push(_local9);
_local9._locationId = int(GetNextLineAsNumber());
_local10 = int(GetNextLineAsNumber());
if (_local10 != 0){
_local17 = new Ball();
_local3._ballList.push(_local17);
_local17._occupancyType = _local10;
_local17._location = _local9;
};
_local9._desiredOccupancyType = int(GetNextLineAsNumber());
_local11 = int(GetNextLineAsNumber());
_local12 = 0;
while (_local12 < _local11) {
_local18 = int(GetNextLineAsNumber());
_local9._neighbourIDs.push(_local18);
_local12++;
};
_local13 = Boolean((GetNextLineAsNumber() == 1));
_local14 = GetNextLineAsNumber();
_local15 = -(GetNextLineAsNumber());
_local16 = new Point(_local14, _local15);
_local9._pos = _local16;
_local3._bounds.UnionPoint(_local16);
_local7++;
};
var _local8:Boolean;
do {
_local19 = new Run();
_local3._runList.push(_local19);
_local20 = int(GetNextLineAsNumber());
if (_local20 == -1){
_local8 = true;
};
_local21 = 0;
while (_local21 < _local20) {
_local22 = int(GetNextLineAsNumber());
_local19._idList.push(_local22);
_local21++;
};
} while (!(_local8));
_local3.FixupReferences();
return (_local3);
}
public function GetNextLineAsNumber():Number{
var _local1:Number;
if (_currentLine < _fileLines.length){
_local1 = parseFloat(_fileLines[_currentLine++]);
return (_local1);
};
return (0);
}
private function IsDoneReadingLines():Boolean{
if (_currentLine < _fileLines.length()){
return (false);
};
return (true);
}
}
}//package
Section 51
//LevelSelCheck (LevelSelCheck)
package {
import flash.display.*;
public class LevelSelCheck extends Sprite {
private var _height:int;// = 100
private var _width:int;// = 100
public var _checked:Boolean;// = false
private var _check:MovieClip;// = null
public function LevelSelCheck(_arg1:int, _arg2:int){
_width = _arg1;
_height = _arg2;
var _local3:Class = EmbeddedAssets.Instance()._check;
_check = new (_local3);
_check.scaleX = 0.8;
_check.scaleY = 0.8;
UpdateDrawList();
}
public function UpdateDrawList():void{
graphics.clear();
while (numChildren > 0) {
removeChildAt(0);
};
if (_checked){
addChild(_check);
};
}
}
}//package
Section 52
//LevelSelFrame (LevelSelFrame)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
public class LevelSelFrame extends Sprite {
public var _mouseOver:Boolean;// = false
public var _level:Level;// = null
private var _height:int;// = 100
private var _width:int;// = 100
public var _selectable:Boolean;// = false
public var _selected:Boolean;// = false
public var _checkSprite:LevelSelCheck;// = null
public function LevelSelFrame(_arg1:int, _arg2:int){
_width = _arg1;
_height = _arg2;
}
public function MakeActive(_arg1:Boolean):void{
if (_arg1){
addEventListener(Event.ENTER_FRAME, OnEnterFrame);
GameFramework.Instance().addEventListener(MouseEvent.MOUSE_UP, OnMouseUp);
UpdateDrawList();
} else {
removeEventListener(Event.ENTER_FRAME, OnEnterFrame);
GameFramework.Instance().removeEventListener(MouseEvent.MOUSE_UP, OnMouseUp);
};
}
private function OnMouseUp(_arg1:MouseEvent):void{
var _local4:int;
var _local5:LevelSelFrame;
var _local2:Point = new Point();
_local2.x = GameFramework.Instance()._lastMousePosX;
_local2.y = GameFramework.Instance()._lastMousePosY;
var _local3:Point = globalToLocal(_local2);
if (((((((((_selectable) && ((_local3.x > 0)))) && ((_local3.x < _width)))) && ((_local3.y > 0)))) && ((_local3.y < _height)))){
_selected = true;
_local4 = 0;
while (_local4 < LevelSelMenuVisibleLayer.Instance()._levelFrames.length) {
_local5 = LevelSelMenuVisibleLayer.Instance()._levelFrames[_local4];
if (_local5 != this){
_local5._selected = false;
_local5.UpdateDrawList();
};
_local4++;
};
UpdateDrawList();
};
}
public function UpdateDrawList():void{
graphics.clear();
if (_selectable){
if (_mouseOver){
if (_selected){
graphics.lineStyle(6, 8450176);
} else {
graphics.lineStyle(6, 0xF0F0F0);
};
graphics.beginFill(0x505050);
} else {
if (_selected){
graphics.lineStyle(6, 8450176);
} else {
graphics.lineStyle(2, 0xD0D0D0);
};
graphics.beginFill(0x303030);
};
graphics.drawRect(0, 0, _width, _height);
graphics.endFill();
};
if (((!((_checkSprite == null))) && (_level._isLevelComplete))){
_checkSprite._checked = true;
_checkSprite.UpdateDrawList();
};
}
private function OnEnterFrame(_arg1:Event):void{
var _local2:Point = new Point();
_local2.x = GameFramework.Instance()._lastMousePosX;
_local2.y = GameFramework.Instance()._lastMousePosY;
var _local3:Point = globalToLocal(_local2);
var _local4:Boolean;
if ((((((((_local3.x > 0)) && ((_local3.x < _width)))) && ((_local3.y > 0)))) && ((_local3.y < _height)))){
_local4 = true;
};
if (((!(_mouseOver)) && (_local4))){
_mouseOver = _local4;
UpdateDrawList();
} else {
if (((_mouseOver) && (!(_local4)))){
_mouseOver = _local4;
UpdateDrawList();
};
};
}
}
}//package
Section 53
//LevelSelMenuVisibleLayer (LevelSelMenuVisibleLayer)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import mx.utils.*;
public class LevelSelMenuVisibleLayer extends Sprite {
public var _playButton:PlainButton;// = null
private var _allDone:Boolean;// = false
private var _levelLayers:Array;
private var _movingLayer:Sprite;
public var _helpButton:PlainButton;// = null
public var _instructions:Instructions;// = null
public var _firstShow:Boolean;// = true
public var _levelFrames:Array;
public static var _levelSelMenuVisibleLayer:LevelSelMenuVisibleLayer = null;
public function LevelSelMenuVisibleLayer(){
var _local10:SlippySlide;
var _local11:Level;
var _local12:LevelSelFrame;
var _local13:Sprite;
var _local14:RectBounds;
var _local15:Point;
var _local16:OffsetScale;
var _local17:LevelSelCheck;
var _local18:MovieClip;
_levelLayers = new Array();
_levelFrames = new Array();
super();
_levelSelMenuVisibleLayer = this;
_movingLayer = new Sprite();
addChild(_movingLayer);
var _local1:Class = EmbeddedAssets.Instance()._arrow;
var _local2:Number = 70;
var _local3:Number = _local2;
var _local4:Number = ((700 * 0.5) - (_local2 * 0.5));
var _local5:Number = 50;
var _local6:Number = (_local2 + 25);
var _local7 = 1;
var _local8 = 1;
var _local9:int;
while (_local9 < 10) {
_local10 = SlippySlide.Instance();
_local11 = _local10._levelList[_local9];
if (_local9 < 6){
_local18 = new (_local1);
_local18.scaleX = 0.35;
_local18.scaleY = 0.35;
_local18.x = (_local4 + 10);
_local18.y = (_local5 + 50);
_local18.rotation = 45;
_movingLayer.addChild(_local18);
_local18 = new (_local1);
_local18.scaleX = 0.35;
_local18.scaleY = 0.35;
_local18.x = (_local4 + 40);
_local18.y = (_local5 + 70);
_local18.rotation = -45;
_movingLayer.addChild(_local18);
};
_local12 = new LevelSelFrame((_local2 + (2 * Constants.LEVEL_SELECT_FRAME_BORDER)), (_local3 + (2 * Constants.LEVEL_SELECT_FRAME_BORDER)));
_local12.x = (_local4 - Constants.LEVEL_SELECT_FRAME_BORDER);
_local12.y = (_local5 - Constants.LEVEL_SELECT_FRAME_BORDER);
_local12._level = _local11;
if (_local9 > 5){
_local12._selectable = true;
};
if (_local9 == 6){
_local12._selected = true;
};
_local12.UpdateDrawList();
_levelFrames.push(_local12);
_movingLayer.addChildAt(_local12, 0);
_local13 = new Sprite();
_movingLayer.addChild(_local13);
_local11.CreateVisibles(_local13);
_local14 = new RectBounds();
_local15 = new Point(_local4, _local5);
_local14.UnionPoint(_local15);
_local15.x = (_local4 + _local2);
_local15.y = (_local5 + _local3);
_local14.UnionPoint(_local15);
_local16 = new OffsetScale();
_local14.DetermineOffsetScaleToApplyToChildRectToFillMaximallyWithUniformScaling(_local11._bounds, _local16);
_local13.x = _local16._offsetX;
_local13.y = _local16._offsetY;
_local13.scaleX = _local16._scaleX;
_local13.scaleY = _local16._scaleY;
_local4 = (_local4 + _local6);
--_local7;
if (_local7 == 0){
_local4 = (_local4 - (_local6 * _local8));
_local4 = (_local4 - (_local6 * 0.5));
_local5 = (_local5 + _local6);
_local8++;
_local7 = _local8;
};
_local17 = new LevelSelCheck((_local2 + (2 * Constants.LEVEL_SELECT_FRAME_BORDER)), (_local3 + (2 * Constants.LEVEL_SELECT_FRAME_BORDER)));
_local17.scaleX = 0.7;
_local17.scaleY = 0.7;
_local17.x = (_local12.x + 5);
_local17.y = (_local12.y + 10);
_local12._checkSprite = _local17;
_movingLayer.addChild(_local17);
_local9++;
};
_playButton = new PlainButton("Play", 200);
_playButton.x = 250;
_playButton.y = 440;
addChild(_playButton);
_helpButton = new PlainButton("Help", 100);
_helpButton.x = 550;
_helpButton.y = 440;
addChild(_helpButton);
_instructions = new Instructions(((("Select a new level to play from the ones\n" + "unlocked.\n\n") + "Unlock harder levels by completing the\n") + "two directly below."), true);
_instructions.x = 25;
_instructions.y = 25;
addChild(_instructions);
MakeActive(false);
}
public function UpdateVisible():void{
var _local1:int;
while (_local1 < _levelFrames.length) {
_levelFrames[_local1].UpdateDrawList();
_local1++;
};
}
public function OnPlayButton(_arg1:MouseEvent):void{
MakeActive(false);
SlippySlide.Instance().SetLevelSelLayerActive(false);
var _local2:int;
while (_local2 < _levelFrames.length) {
if (_levelFrames[_local2]._selected){
GameVisibleLayer.Instance().SetActiveLevel(_levelFrames[_local2]._level);
_levelFrames[_local2]._level.MakeActive(true);
} else {
_levelFrames[_local2]._level.MakeActive(false);
};
_local2++;
};
SlippySlide.Instance().SetGameLayerActive(true);
SlippySlide.Instance().SetPlayLayerActive(true);
PlayMenuVisibleLayer.Instance().MakeActive(true);
}
public function MakeActive(_arg1:Boolean):void{
var _local3:int;
var _local4:LevelSelFrame;
var _local5:int;
var _local6:LevelSelFrame;
var _local7:LevelSelFrame;
_local3 = 5;
while (_local3 >= 0) {
_local4 = _levelFrames[_local3];
if (((!(_local4._selectable)) && (!(_local4._level._isLevelComplete)))){
switch (_local3){
case 0:
_local4._selectable = ((_levelFrames[1]._level._isLevelComplete) && (_levelFrames[2]._level._isLevelComplete));
break;
case 1:
_local4._selectable = ((_levelFrames[3]._level._isLevelComplete) && (_levelFrames[4]._level._isLevelComplete));
break;
case 2:
_local4._selectable = ((_levelFrames[4]._level._isLevelComplete) && (_levelFrames[5]._level._isLevelComplete));
break;
case 3:
_local4._selectable = ((_levelFrames[6]._level._isLevelComplete) && (_levelFrames[7]._level._isLevelComplete));
break;
case 4:
_local4._selectable = ((_levelFrames[7]._level._isLevelComplete) && (_levelFrames[8]._level._isLevelComplete));
break;
case 5:
_local4._selectable = ((_levelFrames[8]._level._isLevelComplete) && (_levelFrames[9]._level._isLevelComplete));
break;
};
};
_local3--;
};
var _local2:Boolean;
_local3 = 0;
while (_local3 < _levelFrames.length) {
_local4 = _levelFrames[_local3];
if (((_local4._level._isLevelComplete) && (_local4._selected))){
_local4._selectable = false;
_local4._selected = false;
_local5 = 0;
while (_local5 < _levelFrames.length) {
_local6 = _levelFrames[_local5];
if (_local6._selectable){
_local6._selected = true;
_local2 = true;
break;
};
_local5++;
};
};
if (_local2){
break;
};
_local3++;
};
_local3 = 0;
while (_local3 < _levelFrames.length) {
_levelFrames[_local3].MakeActive(_arg1);
_local3++;
};
if (_allDone){
return;
};
_allDone = true;
_local3 = 0;
while (_local3 < _levelFrames.length) {
_local7 = _levelFrames[_local3];
if (!_local7._level._isLevelComplete){
_allDone = false;
};
_local3++;
};
if (_allDone){
_instructions = new Instructions((((("Congratulations you've completed all the\n" + "levels.\n\n") + "Dr Membrain is truly impressed!\n\n") + "Hope you enjoyed playing. Look out for\n") + "more Dr Membrain games in the future."), true);
_instructions.x = 25;
_instructions.y = 25;
addChild(_instructions);
removeChild(_playButton);
removeChild(_helpButton);
return;
};
if (_arg1){
_firstShow = false;
_playButton.addEventListener(MouseEvent.MOUSE_UP, OnPlayButton);
_helpButton.addEventListener(MouseEvent.MOUSE_UP, OnHelpButton);
} else {
_playButton.removeEventListener(MouseEvent.MOUSE_UP, OnPlayButton);
_helpButton.removeEventListener(MouseEvent.MOUSE_UP, OnHelpButton);
};
}
public function OnHelpButton(_arg1:MouseEvent):void{
MakeActive(false);
addChild(_instructions);
}
public static function Instance():LevelSelMenuVisibleLayer{
return (_levelSelMenuVisibleLayer);
}
}
}//package
Section 54
//LineSegDistResult (LineSegDistResult)
package {
import flash.geom.*;
public class LineSegDistResult {
public var _location:Point;
public var _segmentCoeff:Number;// = 0
public var _distance:Number;// = 0
public function LineSegDistResult(){
_location = new Point();
super();
}
}
}//package
Section 55
//Location (Location)
package {
import flash.display.*;
import flash.geom.*;
public class Location {
public var _desiredOccupancyType:int;// = 0
public var _locationId:int;// = 0
public var _visible:LocationVisible;// = null
public var _pos:Point;
public var _neighbourIDs:Array;
public var _neighbours:Array;
public function Location(){
_pos = new Point(0, 0);
_neighbourIDs = new Array();
_neighbours = new Array();
super();
}
public function GetLocationOfVisibleOnStage():Point{
var _local1:Point = new Point(0, 0);
var _local2:Point = _visible.localToGlobal(_local1);
return (_local2);
}
public function CreateVisibles(_arg1:Sprite):void{
_visible = new LocationVisible(_desiredOccupancyType);
_visible.x = _pos.x;
_visible.y = _pos.y;
_arg1.addChild(_visible);
}
}
}//package
Section 56
//LocationVisible (LocationVisible)
package {
import flash.display.*;
public class LocationVisible extends Sprite {
private var _matched:Boolean;// = false
private var _occupancyType:int;// = 0
public function LocationVisible(_arg1:int){
_occupancyType = _arg1;
UpdateDrawList();
}
public function SetMatched(_arg1:Boolean):void{
_matched = _arg1;
UpdateDrawList();
}
public function UpdateDrawList():void{
graphics.clear();
if (_occupancyType == 0){
return;
};
var _local1:int;
switch (_occupancyType){
case 0:
break;
case 1:
_local1 = 0xFF0000;
break;
case 2:
_local1 = 0xFF00;
break;
case 3:
_local1 = 4235519;
break;
case 4:
_local1 = 0xFFFF;
break;
};
if (!_matched){
VisibleObjects.AddAlphaCircleToDrawList(this, _local1, Constants.LOCATION_RADIUS);
} else {
VisibleObjects.AddShadedSphereToDrawList(this, _local1, (Constants.LOCATION_RADIUS * 0.65), false, false);
};
}
}
}//package
Section 57
//MarkerVisible (MarkerVisible)
package {
import flash.display.*;
public class MarkerVisible extends Sprite {
public function MarkerVisible(){
VisibleObjects.AddPlainCircleToDrawList(this, 0, 5);
}
}
}//package
Section 58
//Misc (Misc)
package {
public class Misc {
public static function ScaleColor(_arg1:int, _arg2:Number):int{
var _local3:uint = ((_arg1 & 0xFF0000) >> 16);
var _local4:uint = ((_arg1 & 0xFF00) >> 8);
var _local5:uint = ((_arg1 & 0xFF) >> 0);
_local3 = uint((Number(_local3) * _arg2));
if (_local3 > 0xFF){
_local3 = 0xFF;
};
_local4 = uint((Number(_local4) * _arg2));
if (_local4 > 0xFF){
_local4 = 0xFF;
};
_local5 = uint((Number(_local5) * _arg2));
if (_local5 > 0xFF){
_local5 = 0xFF;
};
_arg1 = (((_local3 << 16) + (_local4 << 8)) + _local5);
return (_arg1);
}
public static function assert(_arg1:Boolean, _arg2:String=null):void{
if (!_arg1){
if (_arg2){
trace(_arg2);
};
trace(new Error().getStackTrace());
};
}
}
}//package
Section 59
//MyMath (MyMath)
package {
import flash.geom.*;
public class MyMath {
public static function ClosestPointOnLineSegment(_arg1:Point, _arg2:Point, _arg3:Point):LineSegDistResult{
var _local18:Number;
var _local19:Number;
var _local4:Point = _arg1;
var _local5:Point = _arg2;
var _local6:Point = _arg3;
var _local7:Number = (((_local6.x - _local4.x) * (_local5.x - _local4.x)) + ((_local6.y - _local4.y) * (_local5.y - _local4.y)));
var _local8:Number = (((_local5.x - _local4.x) * (_local5.x - _local4.x)) + ((_local5.y - _local4.y) * (_local5.y - _local4.y)));
var _local9:Number = (_local7 / _local8);
var _local10:Number = (_local4.x + (_local9 * (_local5.x - _local4.x)));
var _local11:Number = (_local4.y + (_local9 * (_local5.y - _local4.y)));
var _local12:Number = ((((_local4.y - _local6.y) * (_local5.x - _local4.x)) - ((_local4.x - _local6.x) * (_local5.y - _local4.y))) / _local8);
var _local13:Number = (Math.abs(_local12) * Math.sqrt(_local8));
var _local14:Number = _local10;
var _local15:Number = _local11;
var _local16:Number = 0;
if ((((_local9 >= 0)) && ((_local9 <= 1)))){
_local16 = _local13;
} else {
_local18 = (((_local6.x - _local4.x) * (_local6.x - _local4.x)) + ((_local6.y - _local4.y) * (_local6.y - _local4.y)));
_local19 = (((_local6.x - _local5.x) * (_local6.x - _local5.x)) + ((_local6.y - _local5.y) * (_local6.y - _local5.y)));
if (_local18 < _local19){
_local14 = _local4.x;
_local15 = _local4.y;
_local16 = Math.sqrt(_local18);
_local9 = 0;
} else {
_local14 = _local5.x;
_local15 = _local5.y;
_local16 = Math.sqrt(_local19);
_local9 = 1;
};
};
var _local17:LineSegDistResult = new LineSegDistResult();
_local17._segmentCoeff = _local9;
_local17._distance = _local16;
_local17._location.x = _local14;
_local17._location.y = _local15;
return (_local17);
}
public static function DotProduct(_arg1:Point, _arg2:Point):Number{
return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
}
}
}//package
Section 60
//OffsetScale (OffsetScale)
package {
public class OffsetScale {
public var _scaleY:Number;// = 0
public var _offsetX:Number;// = 0
public var _offsetY:Number;// = 0
public var _scaleX:Number;// = 0
}
}//package
Section 61
//PlainButton (PlainButton)
package {
import flash.display.*;
public class PlainButton extends SimpleButton {
public function PlainButton(_arg1:String, _arg2:int){
upState = new PlainButtonDisplayState(_arg1, _arg2, 0);
downState = new PlainButtonDisplayState(_arg1, _arg2, 2);
overState = new PlainButtonDisplayState(_arg1, _arg2, 1);
hitTestState = upState;
useHandCursor = true;
}
}
}//package
Section 62
//PlainButton2 (PlainButton2)
package {
import flash.display.*;
public class PlainButton2 extends SimpleButton {
public function PlainButton2(_arg1:String, _arg2:int){
upState = new PlainButtonDisplayState2(_arg1, _arg2, 0);
downState = new PlainButtonDisplayState2(_arg1, _arg2, 2);
overState = new PlainButtonDisplayState2(_arg1, _arg2, 1);
hitTestState = upState;
useHandCursor = true;
}
}
}//package
Section 63
//PlainButtonDisplayState (PlainButtonDisplayState)
package {
import flash.display.*;
import flash.text.*;
public class PlainButtonDisplayState extends Sprite {
public var _text:String;
public function PlainButtonDisplayState(_arg1:String, _arg2:int, _arg3:int){
_text = new String();
super();
_text = _arg1;
draw(_arg2, _arg3);
}
private function draw(_arg1:int, _arg2:int):void{
var _local3:Class;
if (_arg2 == 0){
_local3 = EmbeddedAssets.Instance()._bigButtonNormal;
} else {
if (_arg2 == 1){
_local3 = EmbeddedAssets.Instance()._bigButtonHover;
} else {
if (_arg2 == 2){
_local3 = EmbeddedAssets.Instance()._bigButtonClick;
};
};
};
var _local4:Bitmap = new (_local3);
_local4.width = _arg1;
_local4.height = 50;
addChild(_local4);
var _local5:TextField = new TextField();
_local5.text = _text;
_local5.width = _arg1;
_local5.height = 50;
var _local6:TextFormat = new TextFormat();
_local6.align = TextFormatAlign.CENTER;
_local6.font = "Comic Sans MS";
_local6.size = 30;
_local6.bold = true;
_local5.setTextFormat(_local6);
addChild(_local5);
}
}
}//package
Section 64
//PlainButtonDisplayState2 (PlainButtonDisplayState2)
package {
import flash.display.*;
import flash.text.*;
public class PlainButtonDisplayState2 extends Sprite {
public var _text:String;
public function PlainButtonDisplayState2(_arg1:String, _arg2:int, _arg3:int){
_text = new String();
super();
_text = _arg1;
draw(_arg2, _arg3);
}
private function draw(_arg1:int, _arg2:int):void{
var _local3:Class;
if (_arg2 == 0){
_local3 = EmbeddedAssets.Instance()._longButtonNormal;
} else {
if (_arg2 == 1){
_local3 = EmbeddedAssets.Instance()._longButtonHover;
} else {
if (_arg2 == 2){
_local3 = EmbeddedAssets.Instance()._longButtonClick;
};
};
};
var _local4:Bitmap = new (_local3);
_local4.width = _arg1;
_local4.height = 30;
addChild(_local4);
var _local5:TextField = new TextField();
_local5.text = _text;
_local5.width = _arg1;
_local5.height = 25;
var _local6:TextFormat = new TextFormat();
_local6.align = TextFormatAlign.CENTER;
_local6.font = "Comic Sans MS";
_local6.size = 15;
_local6.bold = true;
_local5.setTextFormat(_local6);
addChild(_local5);
_local5.y = (_local5.y + 2);
}
}
}//package
Section 65
//PlayMenuVisibleLayer (PlayMenuVisibleLayer)
package {
import flash.events.*;
import flash.display.*;
public class PlayMenuVisibleLayer extends Sprite {
public var _helpButton:PlainButton;// = null
public var _instructions:Instructions;// = null
public var _switchLevelsButton:PlainButton;// = null
public var _firstShow:Boolean;// = true
public static var _playMenuVisibleLayer:PlayMenuVisibleLayer = null;
public function PlayMenuVisibleLayer(){
_playMenuVisibleLayer = this;
_switchLevelsButton = new PlainButton("Switch Levels", 240);
_switchLevelsButton.x = 250;
_switchLevelsButton.y = 440;
addChild(_switchLevelsButton);
_helpButton = new PlainButton("Help", 100);
_helpButton.x = 550;
_helpButton.y = 440;
addChild(_helpButton);
_instructions = new Instructions((((("Grab and move groups of balls by clicking\n" + "and holding down the left mouse button\n") + "while you move the mouse.\n\n") + "The goal is to match the colored balls with\n") + "target locations of the same color."), true);
_instructions.x = 25;
_instructions.y = 25;
addChild(_instructions);
MakeActive(false);
}
public function OnSwitchLevelsButton(_arg1:MouseEvent):void{
SlippySlide.Instance().SetPlayLayerActive(false);
PlayMenuVisibleLayer.Instance().MakeActive(false);
SlippySlide.Instance().SetGameLayerActive(false);
GameVisibleLayer.Instance().MakeActive(false);
LevelSelMenuVisibleLayer.Instance().UpdateVisible();
SlippySlide.Instance().SetLevelSelLayerActive(true);
if (!LevelSelMenuVisibleLayer.Instance()._firstShow){
LevelSelMenuVisibleLayer.Instance().MakeActive(true);
};
_arg1.stopPropagation();
}
public function MakeActive(_arg1:Boolean):void{
if (_arg1){
_firstShow = false;
_switchLevelsButton.addEventListener(MouseEvent.MOUSE_UP, OnSwitchLevelsButton);
_helpButton.addEventListener(MouseEvent.MOUSE_UP, OnHelpButton);
} else {
_switchLevelsButton.removeEventListener(MouseEvent.MOUSE_UP, OnSwitchLevelsButton);
_helpButton.removeEventListener(MouseEvent.MOUSE_UP, OnHelpButton);
};
GameVisibleLayer.Instance().MakeActive(_arg1);
}
public function OnHelpButton(_arg1:MouseEvent):void{
MakeActive(false);
addChild(_instructions);
}
public static function Instance():PlayMenuVisibleLayer{
return (_playMenuVisibleLayer);
}
}
}//package
Section 66
//RectBounds (RectBounds)
package {
import flash.geom.*;
public class RectBounds {
public var _topLeft:Point;
public var _addPoint:Boolean;// = false
public var _bottomRight:Point;
public function RectBounds(){
_topLeft = new Point(0, 0);
_bottomRight = new Point(0, 0);
super();
}
public function UnionPoint(_arg1:Point):void{
if (!_addPoint){
_topLeft = _arg1.clone();
_bottomRight = _arg1.clone();
_addPoint = true;
return;
};
if (_arg1.x < _topLeft.x){
_topLeft.x = _arg1.x;
};
if (_arg1.y < _topLeft.y){
_topLeft.y = _arg1.y;
};
if (_arg1.x > _bottomRight.x){
_bottomRight.x = _arg1.x;
};
if (_arg1.y > _bottomRight.y){
_bottomRight.y = _arg1.y;
};
}
public function AspectRatio():Number{
return ((GetWidth() / GetHeight()));
}
public function DetermineOffsetScaleToApplyToChildRectToFillMaximallyWithUniformScaling(_arg1:RectBounds, _arg2:OffsetScale):void{
var _local3:Number = AspectRatio();
var _local4:Number = _arg1.AspectRatio();
var _local5:Number = GetWidth();
var _local6:Number = GetHeight();
var _local7:Number = 0;
var _local8:Number = 0;
var _local9:Number = 1;
if (_local4 > _local3){
_local9 = (GetWidth() / _arg1.GetWidth());
_local6 = (_local9 * _arg1.GetHeight());
_local8 = ((GetHeight() - _local6) / 2);
} else {
_local9 = (GetHeight() / _arg1.GetHeight());
_local5 = (_local9 * _arg1.GetWidth());
_local7 = ((GetWidth() - _local5) / 2);
};
_local7 = (_local7 + _topLeft.x);
_local8 = (_local8 + _topLeft.y);
_local7 = (_local7 - (_arg1._topLeft.x * _local9));
_local8 = (_local8 - (_arg1._topLeft.y * _local9));
_arg2._offsetX = _local7;
_arg2._offsetY = _local8;
_arg2._scaleX = _local9;
_arg2._scaleY = _local9;
}
public function Shrink(_arg1:Number, _arg2:Number):void{
_topLeft.x = (_topLeft.x + _arg1);
_topLeft.y = (_topLeft.y + _arg2);
_bottomRight.x = (_bottomRight.x - _arg1);
_bottomRight.y = (_bottomRight.y - _arg2);
}
public function GetCenter():Point{
var _local1:Point = new Point();
_local1 = Point.interpolate(_topLeft, _bottomRight, 0.5);
return (_local1);
}
public function GetWidth():Number{
return ((_bottomRight.x - _topLeft.x));
}
public function GetHeight():Number{
return ((_bottomRight.y - _topLeft.y));
}
}
}//package
Section 67
//Run (Run)
package {
import flash.display.*;
public class Run {
public var _locationList:Array;
public var _visible:RunVisible;// = null
public var _idList:Array;
public function Run(){
_idList = new Array();
_locationList = new Array();
super();
}
public function IsCyclic():Boolean{
if (_locationList[0] == _locationList[(_locationList.length - 1)]){
return (true);
};
return (false);
}
public function CreateVisibles(_arg1:Sprite):void{
_visible = new RunVisible(this);
_arg1.addChild(_visible);
}
public function GetNumberOfLocationsOnRunTakingIntoAccountCyclic():int{
if (IsCyclic()){
return ((_locationList.length - 1));
};
return (_locationList.length);
}
}
}//package
Section 68
//RunVisible (RunVisible)
package {
import flash.display.*;
import flash.geom.*;
public class RunVisible extends Sprite {
private var _col:int;// = 0x808080
private var _run:Run;// = null
public function RunVisible(_arg1:Run){
_run = _arg1;
UpdateDrawList();
}
public function UpdateDrawList():void{
var _local2:Location;
var _local3:Point;
var _local4:Sprite;
graphics.clear();
while (numChildren != 0) {
removeChildAt(0);
};
graphics.lineStyle(8, _col);
var _local1:int;
while (_local1 < _run._locationList.length) {
_local2 = _run._locationList[_local1];
_local3 = _local2._pos;
if (_local1 == 0){
graphics.moveTo(_local3.x, _local3.y);
} else {
graphics.lineTo(_local3.x, _local3.y);
};
_local1++;
};
_local1 = 0;
while (_local1 < _run._locationList.length) {
_local2 = _run._locationList[_local1];
_local3 = _local2._pos;
_local4 = new Sprite();
addChild(_local4);
_local4.x = _local3.x;
_local4.y = _local3.y;
VisibleObjects.AddShadedSphereToDrawList(_local4, _col, 9, false, false);
_local1++;
};
}
public function SetSelected(_arg1:Boolean):void{
if (_arg1){
_col = 0xD0D0D0;
} else {
_col = 0x808080;
};
UpdateDrawList();
}
}
}//package
Section 69
//SlippySlide (SlippySlide)
package {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public class SlippySlide {
public var _levelList:Array;
private var _frontMenuVisibleLayer:FrontMenuVisibleLayer;
private var _backGroundVisibleLayer:Sprite;
private var _rootSprite:Sprite;
private var _gameVisibleLayer:GameVisibleLayer;
private var _playMenuVisibleLayer:PlayMenuVisibleLayer;
private var _levelSelMenuVisibleLayer:LevelSelMenuVisibleLayer;
private var _debugVisibleLayer:DebugVisibleLayer;
public static var _slippySlide:SlippySlide = null;
public function SlippySlide(_arg1:Sprite){
_levelList = new Array();
super();
_slippySlide = this;
_rootSprite = _arg1;
SetupLevelList();
_debugVisibleLayer = new DebugVisibleLayer();
AddMainDebugControls(_debugVisibleLayer);
_backGroundVisibleLayer = new Sprite();
_levelSelMenuVisibleLayer = new LevelSelMenuVisibleLayer();
_gameVisibleLayer = new GameVisibleLayer();
_frontMenuVisibleLayer = new FrontMenuVisibleLayer();
_playMenuVisibleLayer = new PlayMenuVisibleLayer();
_rootSprite.addChild(_backGroundVisibleLayer);
_rootSprite.addChild(_gameVisibleLayer);
_rootSprite.addChild(_levelSelMenuVisibleLayer);
_rootSprite.addChild(_frontMenuVisibleLayer);
_rootSprite.addChild(_playMenuVisibleLayer);
SetGameLayerActive(false);
SetLevelSelLayerActive(false);
SetPlayLayerActive(false);
var _local2:Class = EmbeddedAssets.Instance()._background;
var _local3:Bitmap = new (_local2);
_backGroundVisibleLayer.addChild(_local3);
var _local4:PlainButton2 = new PlainButton2("More Games", 120);
_local4.x = 10;
_local4.y = 10;
_local4.addEventListener(MouseEvent.MOUSE_UP, OnMoreGames);
_backGroundVisibleLayer.addChild(_local4);
var _local5:PlainButton2 = new PlainButton2("Put this game on your site", 220);
_local5.x = 470;
_local5.y = 10;
_local5.addEventListener(MouseEvent.MOUSE_UP, OnPutOnSite);
_backGroundVisibleLayer.addChild(_local5);
}
public function SetPlayLayerActive(_arg1:Boolean):void{
SetLayerActiveOnDrawStack(_playMenuVisibleLayer, 4, _arg1);
}
public function OnDebugToggleBackLayer(_arg1:MouseEvent):void{
ToggleLayerOnDrawStack(_backGroundVisibleLayer, 0);
}
public function SetGameLayerActive(_arg1:Boolean):void{
SetLayerActiveOnDrawStack(_gameVisibleLayer, 1, _arg1);
}
public function ToggleLayerOnDrawStack(_arg1:Sprite, _arg2:int):void{
if (_rootSprite.contains(_arg1)){
_rootSprite.removeChildAt(_arg2);
_rootSprite.addChildAt(new Sprite(), _arg2);
} else {
_rootSprite.removeChildAt(_arg2);
_rootSprite.addChildAt(_arg1, _arg2);
};
}
public function SetFrontLayerActive(_arg1:Boolean):void{
SetLayerActiveOnDrawStack(_frontMenuVisibleLayer, 3, _arg1);
}
public function OnDebugToggleLevelSelLayer(_arg1:MouseEvent):void{
ToggleLayerOnDrawStack(_levelSelMenuVisibleLayer, 2);
}
public function OnDebugTogglePlayLayer(_arg1:MouseEvent):void{
ToggleLayerOnDrawStack(_playMenuVisibleLayer, 4);
}
public function OnDebugToggleFrontLayer(_arg1:MouseEvent):void{
ToggleLayerOnDrawStack(_frontMenuVisibleLayer, 3);
}
public function OnDebugToggleGameLayer(_arg1:MouseEvent):void{
ToggleLayerOnDrawStack(_gameVisibleLayer, 1);
}
private function SetupLevelList():void{
var _local1:LevelLoader = new LevelLoader();
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level1));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level2));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level3));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level4));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level5));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level6));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level7));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level8));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level9));
_levelList.push(_local1.Load(EmbeddedAssets.Instance()._level10));
}
public function SetBackLayerActive(_arg1:Boolean):void{
SetLayerActiveOnDrawStack(_backGroundVisibleLayer, 0, _arg1);
}
private function AddMainDebugControls(_arg1:DebugVisibleLayer):void{
var _local2:DebugButton = _arg1.AddDebugButton("Back");
_local2.addEventListener(MouseEvent.MOUSE_UP, OnDebugToggleBackLayer);
_local2 = _arg1.AddDebugButton("Game");
_local2.addEventListener(MouseEvent.MOUSE_UP, OnDebugToggleGameLayer);
_local2 = _arg1.AddDebugButton("Front");
_local2.addEventListener(MouseEvent.MOUSE_UP, OnDebugToggleFrontLayer);
_local2 = _arg1.AddDebugButton("Level Sel");
_local2.addEventListener(MouseEvent.MOUSE_UP, OnDebugToggleLevelSelLayer);
_local2 = _arg1.AddDebugButton("Play");
_local2.addEventListener(MouseEvent.MOUSE_UP, OnDebugTogglePlayLayer);
}
private function OnMoreGames(_arg1:MouseEvent):void{
navigateToURL(new URLRequest(Constants.URL_OTHER_GAMES_MAIN));
}
private function OnPutOnSite(_arg1:MouseEvent):void{
navigateToURL(new URLRequest(Constants.URL_PUT_ON_SITE));
}
public function SetLayerActiveOnDrawStack(_arg1:Sprite, _arg2:int, _arg3:Boolean):void{
if (_arg3){
_rootSprite.removeChildAt(_arg2);
_rootSprite.addChildAt(_arg1, _arg2);
} else {
_rootSprite.removeChildAt(_arg2);
_rootSprite.addChildAt(new Sprite(), _arg2);
};
}
public function SetLevelSelLayerActive(_arg1:Boolean):void{
SetLayerActiveOnDrawStack(_levelSelMenuVisibleLayer, 2, _arg1);
}
public static function Instance():SlippySlide{
return (_slippySlide);
}
}
}//package
Section 70
//VisibleObjects (VisibleObjects)
package {
import flash.display.*;
import flash.geom.*;
public class VisibleObjects {
public static function AddAlphaCircleToDrawListFastFade(_arg1:Sprite, _arg2:uint, _arg3:Number):void{
_arg1.graphics.lineStyle();
var _local4:String = GradientType.RADIAL;
var _local5:Array = [_arg2, _arg2, _arg2];
var _local6:Array = [1, 1, 0];
var _local7:Array = [0, 128, 0xFF];
var _local8:Matrix = new Matrix();
_local8.createGradientBox((_arg3 * 2), (_arg3 * 2), 0, -(_arg3), -(_arg3));
var _local9:String = SpreadMethod.PAD;
var _local10:String = InterpolationMethod.RGB;
var _local11:Number = 0;
_arg1.graphics.beginGradientFill(_local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11);
_arg1.graphics.drawRect(-(_arg3), -(_arg3), (_arg3 * 2), (_arg3 * 2));
_arg1.graphics.endFill();
}
public static function AddShadedSphereToDrawList(_arg1:Sprite, _arg2:uint, _arg3:Number, _arg4:Boolean, _arg5:Boolean):void{
var _local6:String;
var _local7:Array;
var _local8:Array;
var _local9:Array;
var _local10:Matrix;
var _local11:String;
var _local12:String;
var _local13:Number;
if (_arg4){
_arg1.graphics.lineStyle(0);
} else {
_arg1.graphics.lineStyle();
};
if (_arg5){
_local6 = GradientType.RADIAL;
_local7 = [0xFFFFFF, _arg2];
_local8 = [1, 1];
_local9 = [0, 0xFF];
_local10 = new Matrix();
_local10.createGradientBox(_arg3, _arg3, 0, ((-(_arg3) * 2) / 3), ((-(_arg3) * 2) / 3));
_local11 = SpreadMethod.PAD;
_local12 = InterpolationMethod.RGB;
_local13 = 0;
_arg1.graphics.beginGradientFill(_local6, _local7, _local8, _local9, _local10, _local11, _local12, _local13);
_arg1.graphics.drawCircle(0, 0, _arg3);
_arg1.graphics.endFill();
} else {
_arg1.graphics.beginFill(_arg2);
_arg1.graphics.drawCircle(0, 0, _arg3);
_arg1.graphics.endFill();
};
}
public static function AddCoolBackgroundToDrawList(_arg1:Sprite):void{
_arg1.graphics.lineStyle(0);
var _local2:String = GradientType.RADIAL;
var _local3:Array = [5263536, 2105440];
var _local4:Array = [1, 1];
var _local5:Array = [0, 0xFF];
var _local6:Matrix = new Matrix();
_local6.createGradientBox(1160, 781, 0, -230, -128);
var _local7:String = SpreadMethod.PAD;
var _local8:String = InterpolationMethod.RGB;
var _local9:Number = 0;
_arg1.graphics.beginGradientFill(_local2, _local3, _local4, _local5, _local6, _local7, _local8, _local9);
_arg1.graphics.drawRect(0, 0, 700, 525);
_arg1.graphics.endFill();
}
public static function AddPlainCircleToDrawList(_arg1:Sprite, _arg2:uint, _arg3:Number):void{
_arg1.graphics.lineStyle(3, _arg2);
_arg1.graphics.drawCircle(0, 0, _arg3);
}
public static function AddAlphaCircleToDrawList(_arg1:Sprite, _arg2:uint, _arg3:Number):void{
_arg1.graphics.lineStyle();
var _local4:String = GradientType.RADIAL;
var _local5:Array = [_arg2, _arg2];
var _local6:Array = [1, 0];
var _local7:Array = [0, 0xFF];
var _local8:Matrix = new Matrix();
_local8.createGradientBox((_arg3 * 2), (_arg3 * 2), 0, -(_arg3), -(_arg3));
var _local9:String = SpreadMethod.PAD;
var _local10:String = InterpolationMethod.RGB;
var _local11:Number = 0;
_arg1.graphics.beginGradientFill(_local4, _local5, _local6, _local7, _local8, _local9, _local10, _local11);
_arg1.graphics.drawRect(-(_arg3), -(_arg3), (_arg3 * 2), (_arg3 * 2));
_arg1.graphics.endFill();
}
public static function AddShadowToDrawList(_arg1:Sprite):void{
var _local2:Number = 20;
_arg1.graphics.lineStyle();
var _local3:String = GradientType.RADIAL;
var _local4:Array = [0, 0];
var _local5:Array = [1, 0];
var _local6:Array = [0, 0xFF];
var _local7:Matrix = new Matrix();
_local7.createGradientBox((_local2 * 2), _local2, 0, -(_local2), (-(_local2) / 2));
var _local8:String = SpreadMethod.PAD;
var _local9:String = InterpolationMethod.RGB;
var _local10:Number = 0;
_arg1.graphics.beginGradientFill(_local3, _local4, _local5, _local6, _local7, _local8, _local9, _local10);
_arg1.graphics.drawRect(-(_local2), (-(_local2) * 0.5), (_local2 * 2), _local2);
_arg1.graphics.endFill();
}
}
}//package