Section 1
//wav (bird1.wav)
package bird1 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package bird1
Section 2
//wav (bird2.wav)
package bird2 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package bird2
Section 3
//wav (bird3.wav)
package bird3 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package bird3
Section 4
//wav (bird4.wav)
package bird4 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package bird4
Section 5
//BaloonFromLoader_703 (BridgeCraft_CS3_Viral_fla.BaloonFromLoader_703)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
public dynamic class BaloonFromLoader_703 extends MovieClip {
public var maskMC:MovieClip;
}
}//package BridgeCraft_CS3_Viral_fla
Section 6
//cvetok_cvetok_prijok4_599 (BridgeCraft_CS3_Viral_fla.cvetok_cvetok_prijok4_599)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
public dynamic class cvetok_cvetok_prijok4_599 extends MovieClip {
public function cvetok_cvetok_prijok4_599(){
addFrameScript(7, frame8);
}
function frame8(){
stop();
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 7
//cvetok_cvetok_prijok44_604 (BridgeCraft_CS3_Viral_fla.cvetok_cvetok_prijok44_604)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
public dynamic class cvetok_cvetok_prijok44_604 extends MovieClip {
public function cvetok_cvetok_prijok44_604(){
addFrameScript(15, frame16);
}
function frame16(){
stop();
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 8
//cvetok_morgaet_461 (BridgeCraft_CS3_Viral_fla.cvetok_morgaet_461)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class cvetok_morgaet_461 extends MovieClip {
public function cvetok_morgaet_461(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 9
//cvetok_morgaet2_475 (BridgeCraft_CS3_Viral_fla.cvetok_morgaet2_475)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class cvetok_morgaet2_475 extends MovieClip {
public function cvetok_morgaet2_475(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 10
//glazan_morgaet_487 (BridgeCraft_CS3_Viral_fla.glazan_morgaet_487)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class glazan_morgaet_487 extends MovieClip {
public function glazan_morgaet_487(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 11
//glazan_morgaet_morgaet_498 (BridgeCraft_CS3_Viral_fla.glazan_morgaet_morgaet_498)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class glazan_morgaet_morgaet_498 extends MovieClip {
public function glazan_morgaet_morgaet_498(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 12
//larin_morgaet_2_521 (BridgeCraft_CS3_Viral_fla.larin_morgaet_2_521)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class larin_morgaet_2_521 extends MovieClip {
public function larin_morgaet_2_521(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 13
//larin_morgaet_510 (BridgeCraft_CS3_Viral_fla.larin_morgaet_510)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class larin_morgaet_510 extends MovieClip {
public function larin_morgaet_510(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 14
//logo_696 (BridgeCraft_CS3_Viral_fla.logo_696)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
public dynamic class logo_696 extends MovieClip {
public var logobutton:SimpleButton;
}
}//package BridgeCraft_CS3_Viral_fla
Section 15
//MainTimeline (BridgeCraft_CS3_Viral_fla.MainTimeline)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.net.*;
public dynamic class MainTimeline extends MovieClip {
public var urlEnd:Number;
public var urlStart:Number;
public var domEnd:Number;
public var _mochiads_game_id:String;
public var stinger:BcwStinger;
public var url:String;
public var preLoaderBar:PreLoaderBar;
public var LastDot:Number;
public var whiteBorder:MovieClip;
public var pauseCount:int;
public var buttonUnderCS:SimpleButton;
public var csStinger:ViralStinger;
public var whiteRect:MovieClip;
public var index:int;
public var domain:String;
public var tmpCounter:int;
public var game:BridgeCraft;
public function MainTimeline(){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 4, frame5);
}
public function fadeOut(_arg1:Event):void{
if (whiteRect.alpha < 0.95){
whiteRect.alpha = (whiteRect.alpha + (Math.abs((whiteRect.alpha - 1)) / 2));
} else {
whiteRect.alpha = 1;
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.play();
};
}
function frame1(){
whiteRect.visible = true;
whiteRect.alpha = 0;
whiteRect.mouseEnabled = false;
whiteRect.mouseChildren = false;
this.stop();
tmpCounter = 0;
(csStinger as ViralStinger).gotoAndPlay(1);
(csStinger as ViralStinger).addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false, 0, true);
(csStinger as ViralStinger).mouseEnabled = false;
(csStinger as ViralStinger).mouseChildren = false;
buttonUnderCS.addEventListener(MouseEvent.CLICK, clickOnStinger, false, 0, true);
Config.VIRAL = true;
_mochiads_game_id = "e32a30fd0af071a8";
url = this.loaderInfo.url;
urlStart = (url.indexOf("://") + 3);
urlEnd = url.indexOf("/", urlStart);
domain = url.substring(urlStart, urlEnd);
LastDot = (domain.lastIndexOf(".") - 1);
domEnd = (domain.lastIndexOf(".", LastDot) + 1);
domain = domain.substring(domEnd, domain.length);
GAManager.account = "UA-4255442-1";
if (Config.VIRAL){
GAManager.prefixString = "/bridgecraft/viral";
MochiBot.track(this, "d40eb2da");
} else {
GAManager.prefixString = "/bridgecraft/full";
};
GAManager.initTracker(this);
GAManager.trackPage(("/game-start-loading-from-" + domain));
}
function frame3(){
this.stop();
stinger = new BcwStinger();
stinger.x = 45;
stinger.y = 40;
stinger.addEventListener(BcwStinger.STINGER_COMPLETE, onStingerComplete);
this.addChild(stinger);
}
function frame5(){
this.stop();
index = getChildIndex(whiteBorder);
game = new BridgeCraft();
this.addChildAt(game, index);
game.init();
GAManager.trackPage("/game-loaded");
}
function frame2(){
this.stop();
whiteRect.visible = true;
pauseCount = 30;
preLoaderBar.addEventListener(PreLoaderBar.LOADED, onLoaded);
preLoaderBar.init();
whiteRect.alpha = 1;
this.addEventListener(Event.ENTER_FRAME, fadeIn);
}
public function fadeIn(_arg1:Event):void{
if (whiteRect.alpha > 0.05){
whiteRect.alpha = (whiteRect.alpha - (Math.abs(whiteRect.alpha) / 2));
} else {
whiteRect.alpha = 0;
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
};
}
public function clickOnStinger(_arg1:MouseEvent):void{
navigateToURL(new URLRequest(Config.CS_URL), "_blank");
}
public function onStingerComplete(_arg1:Event):void{
stinger.removeEventListener(BcwStinger.STINGER_COMPLETE, onStingerComplete);
this.play();
}
public function pauseBeforeGo(_arg1:Event):void{
pauseCount--;
if (pauseCount == 0){
this.removeEventListener(Event.ENTER_FRAME, pauseBeforeGo);
if (this.hasEventListener(Event.ENTER_FRAME)){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
};
this.addEventListener(Event.ENTER_FRAME, fadeOut);
};
}
public function onLoaded(_arg1:Event):void{
preLoaderBar.removeEventListener(PreLoaderBar.LOADED, onLoaded);
this.addEventListener(Event.ENTER_FRAME, pauseBeforeGo);
}
public function onEnterFrameHandler(_arg1:Event):void{
if ((csStinger as ViralStinger).currentFrame == (csStinger as ViralStinger).totalFrames){
if (tmpCounter > (this.stage.frameRate / 2)){
if (whiteRect.alpha < 0.95){
whiteRect.alpha = (whiteRect.alpha + (Math.abs((whiteRect.alpha - 1)) / 2));
} else {
whiteRect.alpha = 1;
(csStinger as ViralStinger).removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
buttonUnderCS.removeEventListener(MouseEvent.CLICK, clickOnStinger);
this.play();
};
} else {
tmpCounter++;
};
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 16
//pi_games_680 (BridgeCraft_CS3_Viral_fla.pi_games_680)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
public dynamic class pi_games_680 extends MovieClip {
public function pi_games_680(){
addFrameScript(19, frame20);
}
function frame20(){
stop();
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 17
//prezer_morgaet_2_542 (BridgeCraft_CS3_Viral_fla.prezer_morgaet_2_542)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class prezer_morgaet_2_542 extends MovieClip {
public function prezer_morgaet_2_542(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 18
//prezer_morgaet_529 (BridgeCraft_CS3_Viral_fla.prezer_morgaet_529)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class prezer_morgaet_529 extends MovieClip {
public function prezer_morgaet_529(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 19
//svet_morgaet_2_571 (BridgeCraft_CS3_Viral_fla.svet_morgaet_2_571)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class svet_morgaet_2_571 extends MovieClip {
public function svet_morgaet_2_571(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 20
//svet_morgaet_554 (BridgeCraft_CS3_Viral_fla.svet_morgaet_554)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
import core.*;
public dynamic class svet_morgaet_554 extends MovieClip {
public function svet_morgaet_554(){
addFrameScript(0, frame1);
}
function frame1(){
if (Math.random() < Config.PROTAGONISTS_EYES_SPEED){
this.gotoAndStop(1);
} else {
this.play();
};
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 21
//TextFromLoader_705 (BridgeCraft_CS3_Viral_fla.TextFromLoader_705)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
public dynamic class TextFromLoader_705 extends MovieClip {
public var maskMC:MovieClip;
}
}//package BridgeCraft_CS3_Viral_fla
Section 22
//wrap_47 (BridgeCraft_CS3_Viral_fla.wrap_47)
package BridgeCraft_CS3_Viral_fla {
import flash.display.*;
public dynamic class wrap_47 extends MovieClip {
public function wrap_47(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package BridgeCraft_CS3_Viral_fla
Section 23
//Cvetok (characters.Cvetok)
package characters {
public class Cvetok extends Protagonist {
public function Cvetok(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package characters
Section 24
//Glazan (characters.Glazan)
package characters {
public class Glazan extends Protagonist {
public function Glazan(_arg1:Number, _arg2:Number, _arg3:Boolean=true){
super(_arg1, _arg2, _arg3);
}
}
}//package characters
Section 25
//Larin (characters.Larin)
package characters {
public class Larin extends Protagonist {
public function Larin(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package characters
Section 26
//Prezer (characters.Prezer)
package characters {
public class Prezer extends Protagonist {
public function Prezer(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package characters
Section 27
//Protagonist (characters.Protagonist)
package characters {
import flash.display.*;
import core.*;
import org.cove.ape.*;
import flash.events.*;
import sounds.*;
public class Protagonist extends MovieClip {
private var _currentAction:int;
private var _alpha:Number;
private var _bottom:Number;
private var _hasParticle:Boolean;
public var particle:WheelParticle;
private var _paused;// = false
private var _manualMode:Boolean;// = false
private var _waitingForRun:Boolean;
private var _idle:Boolean;
private var _actions:Array;
private var _sign:Number;
private var _isSwimming:Boolean;
private var _beta:Number;
private var _finished:Boolean;// = false
private var _fallingCounter:int;// = -1
public static const STAND:int = 1;
public static const TURN_LEFT:int = 5;
public static const TURN_FROM_RIGHT_TO_PLAYER:int = 9;
public static const RUN_LEFT:int = 10;
public static const EVENT_FINISH_ACTION:String = "finishAction";
public static const FALLING_LEFT:int = 12;
public static const TURN_FROM_LEFT_TO_PLAYER:int = 6;
public static const FALLING_RIGHT:int = 11;
public static const RUN_RIGHT:int = 7;
public static const JUMP:int = 3;
public static const WAVE:int = 2;
public static const TURN_RIGHT:int = 8;
public static const SAD:int = 4;
public function Protagonist(_arg1:Number, _arg2:Number, _arg3:Boolean=true){
_paused = false;
_manualMode = false;
_finished = false;
_fallingCounter = -1;
super();
this.stop();
this._actions = new Array();
this._idle = true;
this._currentAction = 0;
this._isSwimming = false;
this._waitingForRun = false;
this._hasParticle = _arg3;
this.x = _arg1;
this.y = _arg2;
if (this._hasParticle){
this.particle = new WheelParticle(_arg1, _arg2, Config.PROTAGONIST_RADIOUS, false, Config.PROTAGONISTS_MASS, 0.3, 0, 0.5);
this.particle.sprite.visible = false;
this.particle.sprite.cacheAsBitmap = true;
};
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
this.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
}
public function set finished(_arg1:Boolean):void{
_finished = _arg1;
}
public function set manualMode(_arg1:Boolean):void{
_manualMode = _arg1;
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:int;
if (this._paused){
return;
};
if (this._hasParticle){
this.x = this.particle.px;
this.y = this.particle.py;
};
if (((this._idle) && (!(this.manualMode)))){
if (this._actions.length > 0){
_local2 = this._actions.shift();
this.makeAction(_local2);
};
};
}
public function get currentAction():int{
return (this._currentAction);
}
public function turnAndRun(_arg1:int):void{
if (this._waitingForRun){
return;
};
this.resetSpeed();
if (_arg1 == Protagonist.RUN_RIGHT){
this.turn(Protagonist.TURN_LEFT, true);
this.run(Protagonist.RUN_RIGHT);
} else {
this.turn(Protagonist.TURN_RIGHT, true);
this.run(Protagonist.RUN_LEFT);
};
this._waitingForRun = true;
}
public function jump(_arg1:Boolean=false):void{
this.addAction(Protagonist.JUMP, _arg1);
}
public function get paused():Boolean{
return (this._paused);
}
private function addAction(_arg1:int, _arg2:Boolean=false):void{
if (_arg2){
this._waitingForRun = false;
this._actions.splice(0);
this.makeAction(_arg1);
} else {
this._actions.push(_arg1);
};
}
public function set paused(_arg1:Boolean):void{
var _local2:MovieClip;
this._paused = _arg1;
_local2 = (this.getChildAt((this.currentAction - 1)) as MovieClip);
if (_arg1){
if ((((this.currentAction >= 1)) && ((this.currentAction <= 10)))){
_local2.stop();
};
} else {
if ((((((this.currentAction >= 1)) && ((this.currentAction <= 10)))) && (!((this.currentAction == Protagonist.SAD))))){
_local2.play();
};
};
}
public function get speed():Number{
if (this._hasParticle){
return (this.particle.angularVelocity);
};
return (0);
}
private function finishActionHandler(_arg1:Event):void{
this._idle = true;
}
public function resetSpeed():void{
if (this._hasParticle){
this.particle.speed = 0;
this.particle.angularVelocity = 0;
this.particle.velocity = new Vector();
};
}
public function rotateAndRun(_arg1:int):void{
if (this._waitingForRun){
return;
};
this.resetSpeed();
if (_arg1 == Protagonist.RUN_RIGHT){
this.turn(Protagonist.TURN_FROM_RIGHT_TO_PLAYER, true);
this.turn(Protagonist.TURN_LEFT);
this.run(Protagonist.RUN_RIGHT);
} else {
this.turn(Protagonist.TURN_FROM_LEFT_TO_PLAYER, true);
this.turn(Protagonist.TURN_RIGHT);
this.run(Protagonist.RUN_LEFT);
};
this._waitingForRun = true;
}
private function childEnterFrameHandler(_arg1:Event):void{
var _local2:MovieClip;
_local2 = (_arg1.currentTarget as MovieClip);
if (_local2.currentFrame == _local2.totalFrames){
_local2.removeEventListener(Event.ENTER_FRAME, childEnterFrameHandler);
this._idle = true;
if (((((((!((this.currentAction == Protagonist.RUN_LEFT))) && (!((this.currentAction == Protagonist.RUN_RIGHT))))) && (!((this.currentAction == Protagonist.FALLING_LEFT))))) && (!((this.currentAction == Protagonist.FALLING_RIGHT))))){
_local2.stop();
this.dispatchEvent(new Event(Protagonist.EVENT_FINISH_ACTION));
};
};
}
public function turn(_arg1:int, _arg2:Boolean=false):void{
this.addAction(_arg1, _arg2);
}
public function get finished():Boolean{
return (_finished);
}
public function swim():void{
if (!this._isSwimming){
if ((((this.currentAction == Protagonist.RUN_RIGHT)) || ((this.currentAction == Protagonist.FALLING_RIGHT)))){
this.turn(Protagonist.TURN_FROM_LEFT_TO_PLAYER, true);
} else {
this.turn(Protagonist.TURN_FROM_RIGHT_TO_PLAYER, true);
};
this.sad();
this._isSwimming = true;
this.addEventListener(Event.ENTER_FRAME, swimming, false, 0, true);
this._alpha = 0;
this._beta = 0;
this._bottom = this.y;
this._sign = (((Math.random() * 10))>=5) ? 1 : -1;
SoundData.WATER_SPLASH.play();
};
}
public function get manualMode():Boolean{
return (_manualMode);
}
public function set speed(_arg1:Number):void{
if (this._hasParticle){
this.particle.angularVelocity = _arg1;
};
}
private function clickHandler(_arg1:MouseEvent):void{
if (this.currentAction != Protagonist.STAND){
return;
};
this.jump(true);
this.stand();
}
public function resetParams():void{
if (this._isSwimming){
this.removeEventListener(Event.ENTER_FRAME, swimming);
};
this._isSwimming = false;
this._waitingForRun = false;
this.rotation = 0;
if (this._hasParticle){
this.particle.fixed = false;
};
}
private function makeAction(_arg1:int):void{
var _local2:int;
var _local3:MovieClip;
var _local4:MovieClip;
if ((((this.currentAction >= 1)) && ((this.currentAction <= 10)))){
_local3 = (this.getChildAt((this.currentAction - 1)) as MovieClip);
if (_local3.hasEventListener(Event.ENTER_FRAME)){
_local3.removeEventListener(Event.ENTER_FRAME, childEnterFrameHandler);
};
};
this._idle = false;
this._currentAction = _arg1;
if (this.currentAction == Protagonist.RUN_RIGHT){
this._waitingForRun = false;
if (this._hasParticle){
this.particle.angularVelocity = Config.PROTAGONISTS_SPEED;
};
};
if (this.currentAction == Protagonist.RUN_LEFT){
this._waitingForRun = false;
if (this._hasParticle){
this.particle.angularVelocity = -(Config.PROTAGONISTS_SPEED);
};
};
_local2 = 0;
while (_local2 < this.numChildren) {
_local4 = (this.getChildAt(_local2) as MovieClip);
if (_local2 == (_arg1 - 1)){
_local4.visible = true;
_local4.addEventListener(Event.ENTER_FRAME, childEnterFrameHandler, false, 0, true);
_local4.gotoAndPlay(1);
} else {
_local4.visible = false;
_local4.gotoAndStop(1);
};
_local2++;
};
}
public function stand(_arg1:Boolean=false):void{
this.addAction(Protagonist.STAND, _arg1);
}
public function sad(_arg1:Boolean=false):void{
this.addAction(Protagonist.SAD, _arg1);
}
public function run(_arg1:int, _arg2:Boolean=false):void{
this.addAction(_arg1, _arg2);
}
public function wave(_arg1:Boolean=false):void{
this.addAction(Protagonist.WAVE, _arg1);
}
public function get actions():Array{
return (this._actions);
}
private function swimming(_arg1:Event):void{
if (this.paused){
return;
};
if (!this._hasParticle){
return;
};
this.particle.py = (this._bottom - ((this._sign * 5) * Math.sin(this._beta)));
this._beta = (this._beta + (Math.PI / 70));
if (this._beta > (2 * Math.PI)){
this._beta = 0;
};
this.rotation = ((this._sign * 15) * Math.sin(this._alpha));
this._alpha = (this._alpha + (Math.PI / 100));
if (this._alpha > (2 * Math.PI)){
this._alpha = 0;
};
}
}
}//package characters
Section 28
//Sinyak (characters.Sinyak)
package characters {
public class Sinyak extends Protagonist {
public function Sinyak(_arg1:Number, _arg2:Number){
super(_arg1, _arg2);
}
}
}//package characters
Section 29
//Base64 (com.candystand.ScoreSubmit.Base64)
package com.candystand.ScoreSubmit {
import flash.utils.*;
import com.candystand.ScoreSubmit.*;
class Base64 {
public static function Decode64(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
_local3 = new Array();
_local4 = new Array();
_local5 = new Array();
_local10 = new Array();
_local2 = "";
_local6 = 0;
_local7 = 0;
while (_local7 <= 0xFF) {
_local4[_local7] = -1;
_local7++;
};
_local4.splice(43, 1, 62);
_local4.splice(47, 11, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61);
_local4.splice(61, 1, 64);
_local4.splice(65, 26, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25);
_local4.splice(97, 26, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51);
_local8 = 0;
while (_local8 < _arg1.length) {
_local9 = _local4[_arg1.charCodeAt(_local8)];
if (_local9 >= 0){
_local3[_local6] = _local9;
++_local6;
if (_local6 == 4){
_local11 = Decq(_local3);
_local10.push(_local11[0]);
_local10.push(_local11[1]);
_local10.push(_local11[2]);
if (_local3[3] == 64){
_local10.pop();
};
if (_local3[2] == 64){
_local10.pop();
};
_local6 = 0;
};
};
_local8++;
};
return (_local10);
}
public static function Encode64(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
_local7 = [];
_local10 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
_local3 = _arg1.length;
_local4 = int((_local3 / 3));
_local2 = "";
_local5 = 0;
while (_local5 < _local4) {
_local6 = 0;
while (_local6 <= 2) {
if (typeof(_arg1) == "string"){
_local7[_local6] = _arg1.charCodeAt(((_local5 * 3) + _local6));
} else {
_local7[_local6] = _arg1[((_local5 * 3) + _local6)];
};
_local6++;
};
_local2 = (_local2 + Encq(_local7, _local10));
_local5++;
};
_local8 = (_local3 % 3);
if (_local8 == 1){
if (typeof(_arg1) == "string"){
_local7[0] = _arg1.charCodeAt((_local3 - 1));
_local7[1] = 0;
_local7[2] = 0;
} else {
_local7[0] = _arg1[(_local3 - 1)];
_local7[1] = 0;
_local7[2] = 0;
};
_local9 = Encq(_local7, _local10);
_local2 = ((_local2 + _local9.slice(0, 2)) + "==");
};
if (_local8 == 2){
if (typeof(_arg1) == "string"){
_local7[0] = _arg1.charCodeAt((_local3 - 2));
_local7[1] = _arg1.charCodeAt((_local3 - 1));
_local7[2] = 0;
} else {
_local7[0] = _arg1[(_local3 - 2)];
_local7[1] = _arg1[(_local3 - 1)];
_local7[2] = 0;
};
_local9 = Encq(_local7, _local10);
_local2 = ((_local2 + _local9.slice(0, 3)) + "=");
};
return (_local2);
}
public static function Decq(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
_local2 = new Array();
_local4 = "";
_local3 = ((_arg1[0] << 2) | ((_arg1[1] >> 4) & 3));
_local2[0] = _local3;
_local3 = (((_arg1[1] & 15) << 4) | ((_arg1[2] >> 2) & 15));
_local2[1] = _local3;
_local3 = (((_arg1[2] & 3) << 6) | _arg1[3]);
_local2[2] = _local3;
return (_local2);
}
public static function Encq(_arg1, _arg2){
var _local3:*;
var _local4:*;
_local3 = "";
_local4 = ((_arg1[0] >> 2) & 63);
_local3 = (_local3 + _arg2.charAt(_local4));
_local4 = (((_arg1[0] & 3) << 4) | ((_arg1[1] >> 4) & 15));
_local3 = (_local3 + _arg2.charAt(_local4));
_local4 = (((_arg1[1] & 15) << 2) | ((_arg1[2] >> 6) & 3));
_local3 = (_local3 + _arg2.charAt(_local4));
_local4 = (_arg1[2] & 63);
_local3 = (_local3 + _arg2.charAt(_local4));
return (_local3);
}
}
}//package com.candystand.ScoreSubmit
Section 30
//Blowfish (com.candystand.ScoreSubmit.Blowfish)
package com.candystand.ScoreSubmit {
import flash.utils.*;
public class Blowfish {
private static var __blowfish:Object;
public static function initialize(_arg1:String):void{
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
_local2 = [];
_local4 = _arg1.length;
_local3 = 0;
while (_local3 < _local4) {
_local2[_local3] = _arg1.charCodeAt(_local3);
_local3++;
};
__blowfish = {};
__blowfish.blf_P = [];
__blowfish.blf_S = [];
__blowfish.blf_S[0] = [];
__blowfish.blf_S[1] = [];
__blowfish.blf_S[2] = [];
__blowfish.blf_S[3] = [];
_local8 = new Array(608135816, 2242054355, 320440878, 57701188, 2752067618, 698298832, 137296536, 3964562569, 1160258022, 953160567, 3193202383, 887688300, 3232508343, 3380367581, 1065670069, 3041331479, 2450970073, 2306472731);
_local5 = 0;
while (_local5 <= 17) {
__blowfish.blf_P[_local5] = _local8[_local5];
_local5++;
};
_local8 = new Array(3509652390, 2564797868, 805139163, 3491422135, 3101798381, 1780907670, 3128725573, 4046225305, 614570311, 3012652279, 134345442, 2240740374, 1667834072, 1901547113, 2757295779, 4103290238, 227898511, 1921955416, 1904987480, 2182433518, 2069144605, 3260701109, 2620446009, 720527379, 3318853667, 677414384, 3393288472, 3101374703, 2390351024, 1614419982, 1822297739, 2954791486, 3608508353, 3174124327, 2024746970, 1432378464, 3864339955, 2857741204, 1464375394, 1676153920, 1439316330, 715854006, 3033291828, 289532110, 2706671279, 2087905683, 3018724369, 1668267050, 732546397, 1947742710, 3462151702, 2609353502, 2950085171, 1814351708, 2050118529, 680887927, 999245976, 1800124847, 3300911131, 1713906067, 1641548236, 4213287313, 1216130144, 1575780402);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[0][_local5] = _local8[_local5];
_local5++;
};
_local8 = new Array(4018429277, 3917837745, 3693486850, 3949271944, 596196993, 3549867205, 258830323, 2213823033, 772490370, 2760122372, 1774776394, 2652871518, 566650946, 4142492826, 1728879713, 2882767088, 1783734482, 3629395816, 2517608232, 2874225571, 1861159788, 326777828, 3124490320, 2130389656, 2716951837, 967770486, 1724537150, 2185432712, 2364442137, 1164943284, 2105845187, 998989502, 3765401048, 2244026483, 1075463327, 1455516326, 1322494562, 910128902, 469688178, 1117454909, 936433444, 3490320968, 3675253459, 1240580251, 122909385, 2157517691, 634681816, 4142456567, 3825094682, 3061402683, 2540495037, 79693498, 3249098678, 1084186820, 1583128258, 426386531, 1761308591, 1047286709, 322548459, 995290223, 1845252383, 2603652396, 3431023940, 2942221577);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[0][(_local5 + 64)] = _local8[_local5];
_local5++;
};
_local8 = new Array(3202600964, 3727903485, 1712269319, 422464435, 3234572375, 1170764815, 3523960633, 3117677531, 1434042557, 442511882, 3600875718, 1076654713, 1738483198, 4213154764, 2393238008, 3677496056, 1014306527, 4251020053, 793779912, 2902807211, 842905082, 4246964064, 1395751752, 1040244610, 2656851899, 3396308128, 445077038, 3742853595, 3577915638, 679411651, 2892444358, 2354009459, 1767581616, 3150600392, 3791627101, 3102740896, 284835224, 4246832056, 1258075500, 768725851, 2589189241, 3069724005, 3532540348, 1274779536, 3789419226, 2764799539, 1660621633, 3471099624, 4011903706, 913787905, 3497959166, 737222580, 2514213453, 2928710040, 3937242737, 1804850592, 3499020752, 2949064160, 2386320175, 2390070455, 2415321851, 4061277028, 2290661394, 2416832540);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[0][(_local5 + 128)] = _local8[_local5];
_local5++;
};
_local8 = new Array(1336762016, 1754252060, 3520065937, 3014181293, 791618072, 3188594551, 3933548030, 2332172193, 3852520463, 3043980520, 413987798, 3465142937, 3030929376, 4245938359, 2093235073, 3534596313, 375366246, 2157278981, 2479649556, 555357303, 3870105701, 2008414854, 3344188149, 4221384143, 3956125452, 2067696032, 3594591187, 2921233993, 2428461, 544322398, 577241275, 1471733935, 610547355, 4027169054, 1432588573, 1507829418, 2025931657, 3646575487, 545086370, 48609733, 2200306550, 1653985193, 298326376, 1316178497, 3007786442, 2064951626, 458293330, 2589141269, 3591329599, 3164325604, 727753846, 2179363840, 146436021, 1461446943, 4069977195, 705550613, 3059967265, 3887724982, 4281599278, 3313849956, 1404054877, 2845806497, 146425753, 1854211946);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[0][(_local5 + 192)] = _local8[_local5];
_local5++;
};
_local8 = new Array(1266315497, 3048417604, 3681880366, 3289982499, 2909710000, 1235738493, 2632868024, 2414719590, 3970600049, 1771706367, 1449415276, 3266420449, 422970021, 1963543593, 2690192192, 3826793022, 1062508698, 1531092325, 1804592342, 2583117782, 2714934279, 4024971509, 1294809318, 4028980673, 1289560198, 2221992742, 1669523910, 35572830, 157838143, 1052438473, 1016535060, 1802137761, 1753167236, 1386275462, 3080475397, 2857371447, 1040679964, 2145300060, 2390574316, 1461121720, 2956646967, 4031777805, 4028374788, 33600511, 2920084762, 1018524850, 629373528, 3691585981, 3515945977, 2091462646, 2486323059, 586499841, 988145025, 935516892, 3367335476, 2599673255, 2839830854, 265290510, 3972581182, 2759138881, 3795373465, 1005194799, 847297441, 406762289);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[1][_local5] = _local8[_local5];
_local5++;
};
_local8 = new Array(1314163512, 1332590856, 1866599683, 4127851711, 750260880, 613907577, 1450815602, 3165620655, 3734664991, 3650291728, 3012275730, 3704569646, 1427272223, 778793252, 1343938022, 2676280711, 2052605720, 1946737175, 3164576444, 3914038668, 3967478842, 3682934266, 1661551462, 3294938066, 4011595847, 840292616, 3712170807, 616741398, 312560963, 711312465, 1351876610, 322626781, 1910503582, 271666773, 2175563734, 1594956187, 70604529, 3617834859, 1007753275, 1495573769, 4069517037, 2549218298, 2663038764, 504708206, 2263041392, 3941167025, 2249088522, 1514023603, 1998579484, 1312622330, 694541497, 2582060303, 2151582166, 1382467621, 776784248, 2618340202, 3323268794, 2497899128, 2784771155, 503983604, 4076293799, 907881277, 423175695, 432175456);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[1][(_local5 + 64)] = _local8[_local5];
_local5++;
};
_local8 = new Array(1378068232, 4145222326, 3954048622, 3938656102, 3820766613, 2793130115, 2977904593, 26017576, 3274890735, 3194772133, 1700274565, 1756076034, 4006520079, 3677328699, 720338349, 1533947780, 354530856, 688349552, 3973924725, 1637815568, 332179504, 3949051286, 53804574, 2852348879, 3044236432, 1282449977, 3583942155, 3416972820, 4006381244, 1617046695, 2628476075, 3002303598, 1686838959, 431878346, 2686675385, 1700445008, 1080580658, 1009431731, 832498133, 3223435511, 2605976345, 2271191193, 2516031870, 1648197032, 4164389018, 2548247927, 300782431, 375919233, 238389289, 3353747414, 2531188641, 2019080857, 1475708069, 455242339, 2609103871, 448939670, 3451063019, 1395535956, 2413381860, 1841049896, 1491858159, 885456874, 4264095073, 4001119347);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[1][(_local5 + 128)] = _local8[_local5];
_local5++;
};
_local8 = new Array(1565136089, 3898914787, 1108368660, 540939232, 1173283510, 2745871338, 3681308437, 4207628240, 3343053890, 4016749493, 1699691293, 1103962373, 3625875870, 2256883143, 3830138730, 1031889488, 3479347698, 1535977030, 4236805024, 3251091107, 2132092099, 1774941330, 1199868427, 1452454533, 157007616, 2904115357, 342012276, 595725824, 1480756522, 206960106, 497939518, 591360097, 863170706, 2375253569, 3596610801, 1814182875, 2094937945, 3421402208, 1082520231, 3463918190, 2785509508, 435703966, 3908032597, 1641649973, 2842273706, 3305899714, 1510255612, 2148256476, 2655287854, 3276092548, 4258621189, 236887753, 3681803219, 274041037, 1734335097, 3815195456, 3317970021, 1899903192, 1026095262, 4050517792, 356393447, 2410691914, 3873677099, 3682840055);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[1][(_local5 + 192)] = _local8[_local5];
_local5++;
};
_local8 = new Array(3913112168, 2491498743, 4132185628, 2489919796, 1091903735, 1979897079, 3170134830, 3567386728, 3557303409, 857797738, 1136121015, 1342202287, 507115054, 2535736646, 337727348, 3213592640, 1301675037, 2528481711, 1895095763, 1721773893, 3216771564, 62756741, 2142006736, 835421444, 2531993523, 1442658625, 3659876326, 2882144922, 676362277, 1392781812, 170690266, 3921047035, 1759253602, 3611846912, 1745797284, 664899054, 1329594018, 3901205900, 3045908486, 2062866102, 2865634940, 3543621612, 3464012697, 1080764994, 553557557, 3656615353, 3996768171, 991055499, 499776247, 1265440854, 648242737, 3940784050, 980351604, 3713745714, 1749149687, 3396870395, 4211799374, 3640570775, 1161844396, 3125318951, 1431517754, 545492359, 4268468663, 3499529547);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[2][_local5] = _local8[_local5];
_local5++;
};
_local8 = new Array(1437099964, 2702547544, 3433638243, 2581715763, 2787789398, 1060185593, 1593081372, 2418618748, 4260947970, 69676912, 2159744348, 86519011, 2512459080, 3838209314, 1220612927, 3339683548, 133810670, 1090789135, 1078426020, 1569222167, 845107691, 3583754449, 4072456591, 1091646820, 628848692, 1613405280, 3757631651, 526609435, 236106946, 48312990, 2942717905, 3402727701, 1797494240, 859738849, 992217954, 4005476642, 2243076622, 3870952857, 3732016268, 765654824, 3490871365, 2511836413, 1685915746, 3888969200, 1414112111, 2273134842, 3281911079, 4080962846, 172450625, 2569994100, 980381355, 4109958455, 2819808352, 2716589560, 2568741196, 3681446669, 3329971472, 1835478071, 660984891, 3704678404, 4045999559, 3422617507, 3040415634, 1762651403);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[2][(_local5 + 64)] = _local8[_local5];
_local5++;
};
_local8 = new Array(1719377915, 3470491036, 2693910283, 3642056355, 3138596744, 1364962596, 2073328063, 1983633131, 926494387, 3423689081, 2150032023, 4096667949, 1749200295, 3328846651, 309677260, 2016342300, 1779581495, 3079819751, 111262694, 1274766160, 443224088, 298511866, 1025883608, 3806446537, 1145181785, 168956806, 3641502830, 3584813610, 1689216846, 3666258015, 3200248200, 1692713982, 2646376535, 4042768518, 1618508792, 1610833997, 3523052358, 4130873264, 2001055236, 3610705100, 2202168115, 4028541809, 2961195399, 1006657119, 2006996926, 3186142756, 1430667929, 3210227297, 1314452623, 4074634658, 4101304120, 2273951170, 1399257539, 3367210612, 3027628629, 1190975929, 2062231137, 2333990788, 2221543033, 2438960610, 1181637006, 548689776, 2362791313, 3372408396);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[2][(_local5 + 128)] = _local8[_local5];
_local5++;
};
_local8 = new Array(3104550113, 3145860560, 296247880, 1970579870, 3078560182, 3769228297, 1714227617, 3291629107, 3898220290, 166772364, 1251581989, 493813264, 448347421, 195405023, 2709975567, 677966185, 3703036547, 1463355134, 2715995803, 1338867538, 1343315457, 2802222074, 2684532164, 233230375, 2599980071, 2000651841, 3277868038, 1638401717, 4028070440, 3237316320, 6314154, 819756386, 300326615, 590932579, 1405279636, 3267499572, 3150704214, 2428286686, 3959192993, 3461946742, 1862657033, 1266418056, 963775037, 2089974820, 2263052895, 1917689273, 448879540, 3550394620, 3981727096, 150775221, 3627908307, 1303187396, 508620638, 2975983352, 2726630617, 1817252668, 1876281319, 1457606340, 908771278, 3720792119, 3617206836, 2455994898, 1729034894, 1080033504);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[2][(_local5 + 192)] = _local8[_local5];
_local5++;
};
_local8 = new Array(976866871, 3556439503, 2881648439, 1522871579, 1555064734, 1336096578, 3548522304, 2579274686, 3574697629, 3205460757, 3593280638, 3338716283, 3079412587, 564236357, 2993598910, 1781952180, 1464380207, 3163844217, 3332601554, 1699332808, 1393555694, 1183702653, 3581086237, 1288719814, 691649499, 2847557200, 2895455976, 3193889540, 2717570544, 1781354906, 1676643554, 2592534050, 3230253752, 1126444790, 2770207658, 2633158820, 2210423226, 2615765581, 2414155088, 3127139286, 673620729, 2805611233, 1269405062, 4015350505, 3341807571, 4149409754, 1057255273, 2012875353, 2162469141, 2276492801, 2601117357, 993977747, 3918593370, 2654263191, 753973209, 36408145, 2530585658, 25011837, 3520020182, 2088578344, 530523599, 2918365339, 1524020338, 1518925132);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[3][_local5] = _local8[_local5];
_local5++;
};
_local8 = new Array(3760827505, 3759777254, 1202760957, 3985898139, 3906192525, 674977740, 4174734889, 2031300136, 2019492241, 3983892565, 4153806404, 3822280332, 352677332, 2297720250, 60907813, 90501309, 3286998549, 1016092578, 2535922412, 2839152426, 457141659, 509813237, 4120667899, 652014361, 1966332200, 2975202805, 55981186, 2327461051, 676427537, 3255491064, 2882294119, 3433927263, 1307055953, 942726286, 933058658, 2468411793, 3933900994, 4215176142, 1361170020, 2001714738, 2830558078, 3274259782, 1222529897, 1679025792, 2729314320, 3714953764, 1770335741, 151462246, 3013232138, 1682292957, 1483529935, 471910574, 1539241949, 458788160, 3436315007, 1807016891, 3718408830, 978976581, 1043663428, 3165965781, 1927990952, 4200891579, 2372276910, 3208408903);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[3][(_local5 + 64)] = _local8[_local5];
_local5++;
};
_local8 = new Array(3533431907, 1412390302, 2931980059, 4132332400, 1947078029, 3881505623, 4168226417, 2941484381, 1077988104, 1320477388, 886195818, 18198404, 3786409000, 2509781533, 112762804, 3463356488, 1866414978, 891333506, 18488651, 661792760, 1628790961, 3885187036, 3141171499, 876946877, 2693282273, 1372485963, 791857591, 2686433993, 3759982718, 3167212022, 3472953795, 2716379847, 445679433, 3561995674, 3504004811, 3574258232, 54117162, 3331405415, 2381918588, 3769707343, 4154350007, 1140177722, 4074052095, 668550556, 3214352940, 367459370, 261225585, 2610173221, 4209349473, 3468074219, 3265815641, 314222801, 3066103646, 3808782860, 282218597, 3406013506, 3773591054, 379116347, 1285071038, 846784868, 2669647154, 3771962079, 3550491691, 2305946142);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[3][(_local5 + 128)] = _local8[_local5];
_local5++;
};
_local8 = new Array(453669953, 1268987020, 3317592352, 3279303384, 3744833421, 2610507566, 3859509063, 266596637, 3847019092, 517658769, 3462560207, 3443424879, 370717030, 4247526661, 2224018117, 4143653529, 4112773975, 2788324899, 2477274417, 1456262402, 2901442914, 1517677493, 1846949527, 2295493580, 3734397586, 2176403920, 1280348187, 1908823572, 3871786941, 846861322, 1172426758, 3287448474, 3383383037, 1655181056, 3139813346, 901632758, 1897031941, 2986607138, 3066810236, 3447102507, 1393639104, 373351379, 950779232, 625454576, 3124240540, 4148612726, 2007998917, 544563296, 2244738638, 2330496472, 2058025392, 1291430526, 424198748, 50039436, 29584100, 3605783033, 2429876329, 2791104160, 1057563949, 3255363231, 3075367218, 3463963227, 1469046755, 985887462);
_local5 = 0;
while (_local5 <= 63) {
__blowfish.blf_S[3][(_local5 + 192)] = _local8[_local5];
_local5++;
};
_local6 = 0;
_local5 = 0;
while (_local5 <= 17) {
_local9 = 0;
_local7 = 0;
while (_local7 <= 3) {
_local9 = ((_local9 << 8) | _local2[_local6]);
_local6 = (_local6 + 1);
if (_local6 >= _local4){
_local6 = 0;
};
_local7++;
};
__blowfish.blf_P[_local5] = (__blowfish.blf_P[_local5] ^ _local9);
_local5++;
};
_local10 = 0;
_local11 = 0;
_local5 = 0;
while (_local5 <= 17) {
_local12 = DoBlowEnc(_local10, _local11);
__blowfish.blf_P[_local5] = _local12[0];
__blowfish.blf_P[(_local5 + 1)] = _local12[1];
_local10 = _local12[0];
_local11 = _local12[1];
_local5 = (_local5 + 2);
};
_local5 = 0;
while (_local5 <= 3) {
_local6 = 0;
while (_local6 <= 0xFF) {
_local12 = DoBlowEnc(_local10, _local11);
__blowfish.blf_S[_local5][_local6] = _local12[0];
__blowfish.blf_S[_local5][(_local6 + 1)] = _local12[1];
_local10 = _local12[0];
_local11 = _local12[1];
_local6 = (_local6 + 2);
};
_local5++;
};
}
public static function dec64str(_arg1:String):String{
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
_local7 = [];
_local8 = [];
_local16 = Base64.Decode64(_arg1);
_local3 = _local16.length;
_local4 = int((_local3 / 8));
_local5 = 0;
while (_local5 < _local4) {
_local6 = 0;
while (_local6 <= 3) {
_local7[_local6] = _local16[((_local5 * 8) + _local6)];
_local6++;
};
_local9 = ((((_local7[0] << 24) | (_local7[1] << 16)) | (_local7[2] << 8)) | _local7[3]);
_local6 = 0;
while (_local6 <= 3) {
_local7[_local6] = _local16[(((_local5 * 8) + _local6) + 4)];
_local6++;
};
_local10 = ((((_local7[0] << 24) | (_local7[1] << 16)) | (_local7[2] << 8)) | _local7[3]);
_local8[(_local5 * 2)] = _local9;
_local8[((_local5 * 2) + 1)] = _local10;
_local5++;
};
_local5 = 0;
while (_local5 < (_local4 * 2)) {
_local17 = DoBlowDec(_local8[_local5], _local8[(_local5 + 1)]);
_local8[_local5] = _local17[0];
_local8[(_local5 + 1)] = _local17[1];
_local5 = (_local5 + 2);
};
_local2 = "";
_local5 = 0;
while (_local5 < _local4) {
_local11 = ((_local8[(_local5 * 2)] & 4278190080) >>> 24);
_local12 = ((_local8[(_local5 * 2)] & 0xFF0000) >>> 16);
_local13 = ((_local8[(_local5 * 2)] & 0xFF00) >>> 8);
_local14 = (_local8[(_local5 * 2)] & 0xFF);
_local2 = (_local2 + String.fromCharCode(_local11, _local12, _local13, _local14));
_local11 = ((_local8[((_local5 * 2) + 1)] & 4278190080) >>> 24);
_local12 = ((_local8[((_local5 * 2) + 1)] & 0xFF0000) >>> 16);
_local13 = ((_local8[((_local5 * 2) + 1)] & 0xFF00) >>> 8);
_local14 = (_local8[((_local5 * 2) + 1)] & 0xFF);
_local2 = (_local2 + String.fromCharCode(_local11, _local12, _local13, _local14));
_local5++;
};
_local15 = _local2.slice(-1).charCodeAt(0);
if (_local15 > 8){
_local15 = 0;
};
_local2 = _local2.substring(0, (_local2.length - _local15));
return (_local2);
}
private static function blf_F(_arg1):Number{
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
_local2 = ((_arg1 & 4278190080) >>> 24);
_local3 = ((_arg1 & 0xFF0000) >>> 16);
_local4 = ((_arg1 & 0xFF00) >>> 8);
_local5 = (_arg1 & 0xFF);
_local6 = (__blowfish.blf_S[0][_local2] + __blowfish.blf_S[1][_local3]);
_local6 = (_local6 ^ __blowfish.blf_S[2][_local4]);
_local6 = (_local6 + __blowfish.blf_S[3][_local5]);
return (_local6);
}
private static function DoBlowDec(_arg1, _arg2):Array{
var _local3:*;
var _local4:*;
var _local5:*;
_local3 = [];
_local4 = 17;
while (_local4 >= 2) {
_arg1 = (_arg1 ^ __blowfish.blf_P[_local4]);
_arg2 = (_arg2 ^ blf_F(_arg1));
_local5 = _arg1;
_arg1 = _arg2;
_arg2 = _local5;
_local4--;
};
_local5 = _arg1;
_arg1 = _arg2;
_arg2 = _local5;
_arg2 = (_arg2 ^ __blowfish.blf_P[1]);
_arg1 = (_arg1 ^ __blowfish.blf_P[0]);
_local3[0] = _arg1;
_local3[1] = _arg2;
return (_local3);
}
public static function enc64str(_arg1:String):String{
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
_local7 = [];
_local8 = [];
_local3 = _arg1.length;
_local16 = (((int((_local3 / 8)) + 1) * 8) - _local3);
_local15 = "";
_local5 = 0;
while (_local5 <= _local16) {
_local15 = (_local15 + String.fromCharCode(_local16));
_local5++;
};
_arg1 = (_arg1 + _local15);
_local3 = _arg1.length;
_local4 = int((_local3 / 8));
_local5 = 0;
while (_local5 < _local4) {
_local6 = 0;
while (_local6 <= 3) {
_local7[_local6] = _arg1.charCodeAt(((_local5 * 8) + _local6));
_local6++;
};
_local9 = ((((_local7[0] << 24) | (_local7[1] << 16)) | (_local7[2] << 8)) | _local7[3]);
_local6 = 0;
while (_local6 <= 3) {
_local7[_local6] = _arg1.charCodeAt((((_local5 * 8) + _local6) + 4));
_local6++;
};
_local10 = ((((_local7[0] << 24) | (_local7[1] << 16)) | (_local7[2] << 8)) | _local7[3]);
_local8[(_local5 * 2)] = _local9;
_local8[((_local5 * 2) + 1)] = _local10;
_local5++;
};
_local5 = 0;
while (_local5 < (_local4 * 2)) {
_local17 = DoBlowEnc(_local8[_local5], _local8[(_local5 + 1)]);
_local8[_local5] = _local17[0];
_local8[(_local5 + 1)] = _local17[1];
_local5 = (_local5 + 2);
};
_local2 = [];
_local5 = 0;
while (_local5 < _local4) {
_local11 = ((_local8[(_local5 * 2)] & 4278190080) >>> 24);
_local12 = ((_local8[(_local5 * 2)] & 0xFF0000) >>> 16);
_local13 = ((_local8[(_local5 * 2)] & 0xFF00) >>> 8);
_local14 = (_local8[(_local5 * 2)] & 0xFF);
_local2.push(_local11, _local12, _local13, _local14);
_local11 = ((_local8[((_local5 * 2) + 1)] & 4278190080) >>> 24);
_local12 = ((_local8[((_local5 * 2) + 1)] & 0xFF0000) >>> 16);
_local13 = ((_local8[((_local5 * 2) + 1)] & 0xFF00) >>> 8);
_local14 = (_local8[((_local5 * 2) + 1)] & 0xFF);
_local2.push(_local11, _local12, _local13, _local14);
_local5++;
};
return (Base64.Encode64(_local2));
}
private static function DoBlowEnc(_arg1, _arg2):Array{
var _local3:*;
var _local4:*;
var _local5:*;
_local5 = [];
_local3 = 0;
while (_local3 <= 15) {
_arg1 = (_arg1 ^ __blowfish.blf_P[_local3]);
_arg2 = (_arg2 ^ blf_F(_arg1));
_local4 = _arg1;
_arg1 = _arg2;
_arg2 = _local4;
_local3++;
};
_local4 = _arg1;
_arg1 = _arg2;
_arg2 = _local4;
_arg2 = (_arg2 ^ __blowfish.blf_P[16]);
_arg1 = (_arg1 ^ __blowfish.blf_P[17]);
_local5[0] = _arg1;
_local5[1] = _arg2;
return (_local5);
}
}
}//package com.candystand.ScoreSubmit
Section 31
//Constants (com.candystand.ScoreSubmit.Constants)
package com.candystand.ScoreSubmit {
import flash.display.*;
import flash.utils.*;
import flash.system.*;
public class Constants {
private static var __multiplayId:String;
private static var __sessionId:String;
private static var __scoreurl:String;
private static var __main:DisplayObject;
private static var __trackingurl:String;
private static var __gameData:String;
private static var __brandingPath:String;
private static var __gameVersion:String;
private static var __flashVersion:String;
private static var __uniqueId:String;
private static var __sendPlay:Boolean;
private static var __multiplayurl:String;
private static var __playerId:String;
private static var __downloadTime:Number;
private static var __sendQuit:Boolean;
private static var __sendGameover:Boolean;
private static var __quiturl:String;
private static var __swlist:String;
private static var __copyright:String;
private static var __sendMethod:String;
private static var __sendLoad:Boolean;
private static var __initialized:Boolean = false;
private static var __systemSpeed:Number;
private static var __trackingParams:Object;
public static function set brandingPath(_arg1:String):void{
if (__main.loaderInfo.parameters.sw9 == undefined){
__brandingPath = _arg1;
};
}
public static function getIdString():String{
return (((((__playerId + "") + __sessionId) + "") + __uniqueId));
}
static function get systemSpeed():Number{
return (__systemSpeed);
}
public static function get gameVersion():String{
return (__gameVersion);
}
public static function get sendLoad():Boolean{
return (__sendLoad);
}
public static function get multiplayurl():String{
return (__multiplayurl);
}
private static function getSpeed():Number{
return (0);
}
public static function get stingerPath():String{
return (__swlist);
}
static function initialize(_arg1:DisplayObject, _arg2:String, _arg3:String, _arg4:Number){
var _local5:*;
_local5 = new Object();
_local5.sw1 = "/wrapup.do?id=100";
_local5.sw2 = "CopyrightWrigley";
_local5.sw3 = "e02acde5-adcb-11dc-abad-001b78448e04";
_local5.sw4 = "%2Fsubmit-score.do%3Fgame_id%3D18252%26";
_local5.sw5 = "";
_local5.sw6 = "100";
_local5.sw7 = "method%3Dget%26events%3D1111%26url%3Dhttp%3A%2F%2Fdev.candystand.com%2Fgame-track.do%3Fuuid%3D4de04f30-db1e-11dc-b1b5-0002a58776b0%26";
_local5.sw8 = "";
_local5.sw9 = "./us";
_local5.swlist = "stinger.swf";
_local5.session_id = "-1";
if (__initialized){
return;
};
__main = _arg1;
__initialized = true;
_arg2 = ((_arg2)==null) ? "" : _arg2;
_arg3 = ((_arg3)==null) ? "" : _arg3;
_arg4 = (_arg4) ? _arg4 : 0;
__sessionId = ((((__main.loaderInfo.parameters.session_id == undefined)) || ((String(__main.loaderInfo.parameters.session_id).length == 0)))) ? _local5.session_id : __main.loaderInfo.parameters.session_id;
__playerId = ((((__main.loaderInfo.parameters.sw3 == undefined)) || ((String(__main.loaderInfo.parameters.sw3).length == 0)))) ? _local5.sw3 : __main.loaderInfo.parameters.sw3;
__uniqueId = ((__main.loaderInfo.parameters.sw6)==undefined) ? _local5.sw6 : __main.loaderInfo.parameters.sw6;
__multiplayId = "";
__swlist = ((__main.loaderInfo.parameters.swlist)==undefined) ? _local5.swlist : __main.loaderInfo.parameters.swlist;
__brandingPath = ((__main.loaderInfo.parameters.sw9)==undefined) ? _local5.sw9 : __main.loaderInfo.parameters.sw9;
__copyright = ((__main.loaderInfo.parameters.sw2)==undefined) ? _local5.sw2 : __main.loaderInfo.parameters.sw2;
__quiturl = ((__main.loaderInfo.parameters.sw1)==undefined) ? _local5.sw1 : __main.loaderInfo.parameters.sw1;
__scoreurl = ((__main.loaderInfo.parameters.sw4)==undefined) ? _local5.sw4 : __main.loaderInfo.parameters.sw4;
__multiplayurl = ((__main.loaderInfo.parameters.sw5)==undefined) ? _local5.sw5 : __main.loaderInfo.parameters.sw5;
__trackingurl = ((__main.loaderInfo.parameters.sw7)==undefined) ? _local5.sw7 : ((((__main.loaderInfo.parameters.sw7 + "&events=") + __main.loaderInfo.parameters.events) + "&url=") + __main.loaderInfo.parameters.url);
__flashVersion = Capabilities.version.split(" ")[1];
__gameData = _arg2;
__gameVersion = _arg3;
__downloadTime = _arg4;
__systemSpeed = getSpeed();
parseUrl();
trace(("Constants.initialize() __quitUrl: " + __quiturl));
trace(("Constants.initialize() __scoreurl: " + __scoreurl));
trace(("Constants.initialize() __multiplayerurl: " + __multiplayurl));
trace(("Constants.initialize() __trackingurl: " + __trackingurl));
trace(("Constants.initialize() __swlist: " + __swlist));
}
public static function get sendMethod():String{
return (__sendMethod);
}
public static function get sendGameover():Boolean{
return (__sendGameover);
}
public static function get scoreurl():String{
return (__scoreurl);
}
static function get trackingParams():Object{
return (__trackingParams);
}
public static function getTrackingParams():String{
var _local1:String;
var _local2:String;
_local1 = "";
for (_local2 in __trackingParams) {
_local1 = (_local1 + ((("&" + _local2) + "=") + __trackingParams[_local2]));
};
return (_local1);
}
public static function get flashVersion():String{
return (__flashVersion);
}
static function get gameData():String{
return (__gameData);
}
public static function get brandingPath():String{
return (__brandingPath);
}
public static function get sessionId():String{
return (__sessionId);
}
public static function get uniqueId():String{
return (__uniqueId);
}
private static function parseUrl(){
var _local1:String;
var _local2:Array;
var _local3:String;
var _local4:Array;
var _local5:Number;
var _local6:String;
__trackingParams = {};
_local2 = new Array();
__trackingurl = unescape(__trackingurl);
if (__trackingurl.indexOf("url=") != -1){
_local2 = __trackingurl.split("url=");
_local3 = String(_local2[0]);
__trackingurl = String(_local2[1]);
if (_local3.indexOf("&") != -1){
_local4 = _local3.split("&");
_local5 = 0;
while (_local5 < 2) {
_local6 = String(_local4[_local5]);
if (_local6.indexOf("method") != -1){
__sendMethod = String(_local6.split("=")[1]).toUpperCase();
} else {
_local1 = String(_local6.split("=")[1]);
__sendLoad = Boolean(Number(_local1.charAt(0)));
__sendPlay = Boolean(Number(_local1.charAt(1)));
__sendGameover = Boolean(Number(_local1.charAt(2)));
__sendQuit = Boolean(Number(_local1.charAt(3)));
};
_local5++;
};
} else {
__sendMethod = ((_local3.indexOf("method"))==-1) ? "GET" : String(_local3.split("=")[1]).toUpperCase();
if (_local3.indexOf("events") != -1){
_local1 = String(_local3.split("=")[1]);
__sendLoad = Boolean(Number(_local1.charAt(0)));
__sendPlay = Boolean(Number(_local1.charAt(1)));
__sendGameover = Boolean(Number(_local1.charAt(2)));
__sendQuit = Boolean(Number(_local1.charAt(3)));
} else {
__sendLoad = (__sendPlay = (__sendGameover = (__sendQuit = true)));
};
};
} else {
__sendMethod = "GET";
__sendLoad = (__sendPlay = (__sendGameover = (__sendQuit = true)));
};
}
public static function get copyright():String{
return (__copyright);
}
public static function get trackingurl():String{
return (__trackingurl);
}
public static function get playerId():String{
return (__playerId);
}
public static function get sendPlay():Boolean{
return (__sendPlay);
}
public static function get quiturl():String{
return (__quiturl);
}
public static function get multiplayId():String{
return (__multiplayId);
}
static function get downloadTime():Number{
return (__downloadTime);
}
public static function getJavaTracking(_arg1:String, _arg2:Number, _arg3:String):String{
var _local4:String;
_local4 = "";
_local4 = ((((((("action=" + _arg1) + "&userid=") + __playerId) + "&sid=") + __sessionId) + "&gameid=") + __uniqueId);
_local4 = (_local4 + (((("&rn=" + _arg2) + getTrackingParams()) + "&cr=") + _arg3));
return (_local4);
}
public static function get sendQuit():Boolean{
return (__sendQuit);
}
}
}//package com.candystand.ScoreSubmit
Section 32
//Game (com.candystand.ScoreSubmit.Game)
package com.candystand.ScoreSubmit {
import flash.utils.*;
public class Game {
private static var __playTime:Number;
private static var __highscore:Number = 0;
private static var __gamesPlayed:Number;
private static var __cheated:Boolean;
private static var __leaderboardId:Number = -1;
private static var __scoreExtraParams:Object;
private static var __playStart:Number;
private static var __score:Number = 0;
private static var __initialized:Boolean = false;
private static var __gameResets:Number;
private static var __numPlayers:Number;
private static function getGameData():String{
return (((((((("&np=" + __numPlayers) + "&ng=") + __gamesPlayed) + "&nr=") + __gameResets) + "&tp=") + __playTime));
}
public static function quit(){
var _local1:Number;
var _local2:Number;
_local1 = getTimer();
_local2 = (_local1 - __playStart);
__playTime = (__playTime + Math.round((_local2 / 1000)));
Messenger.quit(__playTime);
__playTime = 0;
__gameResets = 0;
__gamesPlayed = 0;
}
public static function get score():Number{
return (__score);
}
public static function restart(){
var _local1:Number;
var _local2:Number;
_local1 = getTimer();
_local2 = (_local1 - __playStart);
__playTime = (__playTime + Math.round((_local2 / 1000)));
newGame(__numPlayers);
}
public static function get highScore():Number{
return (__highscore);
}
public static function submitScore(){
var _local1:Date;
var _local2:Number;
var _local3:String;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:String;
var _local9:String;
_local1 = new Date();
_local2 = _local1.getFullYear();
_local3 = ((((_local1.getMonth() + "/") + _local1.getDate()) + "/") + _local2);
_local4 = ((_local1.getHours() * 60) * 60);
_local5 = (_local1.getMinutes() * 60);
_local6 = ((_local1.getSeconds() + _local5) + _local4);
_local7 = Number(!(__cheated));
_local8 = ((((((("gamename=" + Constants.uniqueId) + "&score=") + __highscore) + "&pn=") + Constants.playerId) + "&sf=") + _local7);
_local8 = (_local8 + ((((getGameData() + "&ms=") + Constants.systemSpeed) + "&mr=0&bd=0&pi=") + Constants.flashVersion));
_local8 = (_local8 + ((((("&ds=" + Constants.downloadTime) + "&dt=") + _local3) + "&ss=&sp=") + Constants.gameData));
_local8 = (_local8 + ((((((("&sn=" + Constants.multiplayId) + "&tt=") + _local6) + "&vr=") + Constants.gameVersion) + "&gid=") + Constants.uniqueId));
if (__leaderboardId != -1){
_local8 = (_local8 + ("&gamelevel=" + __leaderboardId));
};
for (_local9 in __scoreExtraParams) {
_local8 = (_local8 + ((("&" + _local9) + "=") + String(__scoreExtraParams[_local9])));
};
trace((("preMD5: " + _local8) + "----"));
Messenger.submitScore(_local8);
}
public static function reset(){
__gameResets++;
__cheated = false;
}
public static function addScoreParam(_arg1:String, _arg2:String){
if (((_arg1) && (_arg2))){
__scoreExtraParams[_arg1] = _arg2;
};
}
public static function catchCheat(){
__cheated = true;
}
public static function endGame(){
var _local1:Number;
var _local2:Number;
_local1 = getTimer();
_local2 = (_local1 - __playStart);
__playTime = (__playTime + Math.round((_local2 / 1000)));
Messenger.sendAction("over", true);
}
public static function set leaderboardId(_arg1:Number){
if (!isNaN(_arg1)){
__leaderboardId = _arg1;
};
}
public static function get leaderboardId():Number{
return (__leaderboardId);
}
public static function newGame(_arg1:Number=1){
__numPlayers = _arg1;
__playStart = getTimer();
__gamesPlayed++;
__gameResets = 0;
__score = 0;
__cheated = false;
Messenger.sendAction("play", true);
}
public static function set score(_arg1:Number){
if (!isNaN(_arg1)){
__score = _arg1;
if (__score > __highscore){
__highscore = __score;
};
};
}
static function initialize(){
if (__initialized){
return;
};
__initialized = true;
__scoreExtraParams = {};
__gamesPlayed = 0;
__playTime = 0;
__gameResets = 0;
__numPlayers = 0;
__cheated = false;
__score = 0;
}
public static function removeScoreParam(_arg1:String){
delete __scoreExtraParams[_arg1];
}
}
}//package com.candystand.ScoreSubmit
Section 33
//MD5 (com.candystand.ScoreSubmit.MD5)
package com.candystand.ScoreSubmit {
public class MD5 {
private static var __b64pad = "";
private static var __hexcase = 0;
private static var __chrsz = 8;
private static function md5_gg(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){
return (md5_cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private static function md5_cmn(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6){
var _local7:*;
_local7 = safe_add(bit_rol(safe_add(safe_add(_arg2, _arg1), safe_add(_arg4, _arg6)), _arg5), _arg3);
return (_local7);
}
private static function binl2str(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local2 = "";
_local3 = ((1 << __chrsz) - 1);
_local4 = (_arg1.length * 32);
_local5 = 0;
while (_local5 < _local4) {
_local2 = (_local2 + String.fromCharCode(((_arg1[(_local5 >> 5)] >>> (_local5 & 31)) & _local3)));
_local5 = (_local5 + __chrsz);
};
return (_local2);
}
private static function core_hmac_md5(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
_local3 = str2binl(_arg1);
if (_local3.length > 16){
_local3 = core_md5(_local3, (_arg1.length * __chrsz));
};
_local4 = new Array(16);
_local5 = new Array(16);
_local6 = 0;
while (_local6 < 16) {
_local4[_local6] = (_local3[_local6] ^ 909522486);
_local5[_local6] = (_local3[_local6] ^ 1549556828);
_local6++;
};
_local7 = core_md5(_local4.concat(str2binl(_arg2)), (0x0200 + (_arg2.length * __chrsz)));
return (core_md5(_local5.concat(_local7), (0x0200 + 128)));
}
private static function md5_ii(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){
return (md5_cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private static function hex_hmac_md5(_arg1, _arg2){
return (binl2hex(core_hmac_md5(_arg1, _arg2)));
}
private static function md5_vm_test(){
return ((hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"));
}
public static function hex_md5(_arg1){
return (binl2hex(core_md5(str2binl(_arg1), (_arg1.length * __chrsz))));
}
private static function bit_rol(_arg1, _arg2){
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
private static function core_md5(_arg1, _arg2){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
_arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 & 31)));
_arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2;
_local7 = 1732584193;
_local8 = -271733879;
_local9 = -1732584194;
_local10 = 271733878;
_local11 = _arg1.length;
_local12 = 0;
while (_local12 < _local11) {
_local3 = _local7;
_local4 = _local8;
_local5 = _local9;
_local6 = _local10;
_local7 = md5_ff(_local7, _local8, _local9, _local10, _arg1[(_local12 + 0)], 7, -680876936);
_local10 = md5_ff(_local10, _local7, _local8, _local9, _arg1[(_local12 + 1)], 12, -389564586);
_local9 = md5_ff(_local9, _local10, _local7, _local8, _arg1[(_local12 + 2)], 17, 606105819);
_local8 = md5_ff(_local8, _local9, _local10, _local7, _arg1[(_local12 + 3)], 22, -1044525330);
_local7 = md5_ff(_local7, _local8, _local9, _local10, _arg1[(_local12 + 4)], 7, -176418897);
_local10 = md5_ff(_local10, _local7, _local8, _local9, _arg1[(_local12 + 5)], 12, 1200080426);
_local9 = md5_ff(_local9, _local10, _local7, _local8, _arg1[(_local12 + 6)], 17, -1473231341);
_local8 = md5_ff(_local8, _local9, _local10, _local7, _arg1[(_local12 + 7)], 22, -45705983);
_local7 = md5_ff(_local7, _local8, _local9, _local10, _arg1[(_local12 + 8)], 7, 1770035416);
_local10 = md5_ff(_local10, _local7, _local8, _local9, _arg1[(_local12 + 9)], 12, -1958414417);
_local9 = md5_ff(_local9, _local10, _local7, _local8, _arg1[(_local12 + 10)], 17, -42063);
_local8 = md5_ff(_local8, _local9, _local10, _local7, _arg1[(_local12 + 11)], 22, -1990404162);
_local7 = md5_ff(_local7, _local8, _local9, _local10, _arg1[(_local12 + 12)], 7, 1804603682);
_local10 = md5_ff(_local10, _local7, _local8, _local9, _arg1[(_local12 + 13)], 12, -40341101);
_local9 = md5_ff(_local9, _local10, _local7, _local8, _arg1[(_local12 + 14)], 17, -1502002290);
_local8 = md5_ff(_local8, _local9, _local10, _local7, _arg1[(_local12 + 15)], 22, 1236535329);
_local7 = md5_gg(_local7, _local8, _local9, _local10, _arg1[(_local12 + 1)], 5, -165796510);
_local10 = md5_gg(_local10, _local7, _local8, _local9, _arg1[(_local12 + 6)], 9, -1069501632);
_local9 = md5_gg(_local9, _local10, _local7, _local8, _arg1[(_local12 + 11)], 14, 643717713);
_local8 = md5_gg(_local8, _local9, _local10, _local7, _arg1[(_local12 + 0)], 20, -373897302);
_local7 = md5_gg(_local7, _local8, _local9, _local10, _arg1[(_local12 + 5)], 5, -701558691);
_local10 = md5_gg(_local10, _local7, _local8, _local9, _arg1[(_local12 + 10)], 9, 38016083);
_local9 = md5_gg(_local9, _local10, _local7, _local8, _arg1[(_local12 + 15)], 14, -660478335);
_local8 = md5_gg(_local8, _local9, _local10, _local7, _arg1[(_local12 + 4)], 20, -405537848);
_local7 = md5_gg(_local7, _local8, _local9, _local10, _arg1[(_local12 + 9)], 5, 568446438);
_local10 = md5_gg(_local10, _local7, _local8, _local9, _arg1[(_local12 + 14)], 9, -1019803690);
_local9 = md5_gg(_local9, _local10, _local7, _local8, _arg1[(_local12 + 3)], 14, -187363961);
_local8 = md5_gg(_local8, _local9, _local10, _local7, _arg1[(_local12 + 8)], 20, 1163531501);
_local7 = md5_gg(_local7, _local8, _local9, _local10, _arg1[(_local12 + 13)], 5, -1444681467);
_local10 = md5_gg(_local10, _local7, _local8, _local9, _arg1[(_local12 + 2)], 9, -51403784);
_local9 = md5_gg(_local9, _local10, _local7, _local8, _arg1[(_local12 + 7)], 14, 1735328473);
_local8 = md5_gg(_local8, _local9, _local10, _local7, _arg1[(_local12 + 12)], 20, -1926607734);
_local7 = md5_hh(_local7, _local8, _local9, _local10, _arg1[(_local12 + 5)], 4, -378558);
_local10 = md5_hh(_local10, _local7, _local8, _local9, _arg1[(_local12 + 8)], 11, -2022574463);
_local9 = md5_hh(_local9, _local10, _local7, _local8, _arg1[(_local12 + 11)], 16, 1839030562);
_local8 = md5_hh(_local8, _local9, _local10, _local7, _arg1[(_local12 + 14)], 23, -35309556);
_local7 = md5_hh(_local7, _local8, _local9, _local10, _arg1[(_local12 + 1)], 4, -1530992060);
_local10 = md5_hh(_local10, _local7, _local8, _local9, _arg1[(_local12 + 4)], 11, 1272893353);
_local9 = md5_hh(_local9, _local10, _local7, _local8, _arg1[(_local12 + 7)], 16, -155497632);
_local8 = md5_hh(_local8, _local9, _local10, _local7, _arg1[(_local12 + 10)], 23, -1094730640);
_local7 = md5_hh(_local7, _local8, _local9, _local10, _arg1[(_local12 + 13)], 4, 681279174);
_local10 = md5_hh(_local10, _local7, _local8, _local9, _arg1[(_local12 + 0)], 11, -358537222);
_local9 = md5_hh(_local9, _local10, _local7, _local8, _arg1[(_local12 + 3)], 16, -722521979);
_local8 = md5_hh(_local8, _local9, _local10, _local7, _arg1[(_local12 + 6)], 23, 76029189);
_local7 = md5_hh(_local7, _local8, _local9, _local10, _arg1[(_local12 + 9)], 4, -640364487);
_local10 = md5_hh(_local10, _local7, _local8, _local9, _arg1[(_local12 + 12)], 11, -421815835);
_local9 = md5_hh(_local9, _local10, _local7, _local8, _arg1[(_local12 + 15)], 16, 530742520);
_local8 = md5_hh(_local8, _local9, _local10, _local7, _arg1[(_local12 + 2)], 23, -995338651);
_local7 = md5_ii(_local7, _local8, _local9, _local10, _arg1[(_local12 + 0)], 6, -198630844);
_local10 = md5_ii(_local10, _local7, _local8, _local9, _arg1[(_local12 + 7)], 10, 1126891415);
_local9 = md5_ii(_local9, _local10, _local7, _local8, _arg1[(_local12 + 14)], 15, -1416354905);
_local8 = md5_ii(_local8, _local9, _local10, _local7, _arg1[(_local12 + 5)], 21, -57434055);
_local7 = md5_ii(_local7, _local8, _local9, _local10, _arg1[(_local12 + 12)], 6, 1700485571);
_local10 = md5_ii(_local10, _local7, _local8, _local9, _arg1[(_local12 + 3)], 10, -1894986606);
_local9 = md5_ii(_local9, _local10, _local7, _local8, _arg1[(_local12 + 10)], 15, -1051523);
_local8 = md5_ii(_local8, _local9, _local10, _local7, _arg1[(_local12 + 1)], 21, -2054922799);
_local7 = md5_ii(_local7, _local8, _local9, _local10, _arg1[(_local12 + 8)], 6, 1873313359);
_local10 = md5_ii(_local10, _local7, _local8, _local9, _arg1[(_local12 + 15)], 10, -30611744);
_local9 = md5_ii(_local9, _local10, _local7, _local8, _arg1[(_local12 + 6)], 15, -1560198380);
_local8 = md5_ii(_local8, _local9, _local10, _local7, _arg1[(_local12 + 13)], 21, 1309151649);
_local7 = md5_ii(_local7, _local8, _local9, _local10, _arg1[(_local12 + 4)], 6, -145523070);
_local10 = md5_ii(_local10, _local7, _local8, _local9, _arg1[(_local12 + 11)], 10, -1120210379);
_local9 = md5_ii(_local9, _local10, _local7, _local8, _arg1[(_local12 + 2)], 15, 718787259);
_local8 = md5_ii(_local8, _local9, _local10, _local7, _arg1[(_local12 + 9)], 21, -343485551);
_local7 = safe_add(_local7, _local3);
_local8 = safe_add(_local8, _local4);
_local9 = safe_add(_local9, _local5);
_local10 = safe_add(_local10, _local6);
_local12 = (_local12 + 16);
};
_local13 = new Array(_local7, _local8, _local9, _local10);
return (_local13);
}
public static function b64_md5(_arg1){
return (binl2b64(core_md5(str2binl(_arg1), (_arg1.length * __chrsz))));
}
private static function md5_ff(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){
return (md5_cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private static function b64_hmac_md5(_arg1, _arg2){
return (binl2b64(core_hmac_md5(_arg1, _arg2)));
}
private static function md5_hh(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){
return (md5_cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7));
}
private static function str2binl(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local2 = new Array();
_local3 = ((1 << __chrsz) - 1);
_local4 = (_arg1.length * __chrsz);
_local5 = 0;
while (_local5 < _local4) {
_local2[(_local5 >> 5)] = (_local2[(_local5 >> 5)] | ((_arg1.charCodeAt((_local5 / __chrsz)) & _local3) << (_local5 & 31)));
_local5 = (_local5 + __chrsz);
};
return (_local2);
}
private static function binl2hex(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local2 = (__hexcase) ? "0123456789ABCDEF" : "0123456789abcdef";
_local3 = "";
_local4 = (_arg1.length * 4);
_local5 = 0;
while (_local5 < _local4) {
_local3 = (_local3 + (_local2.charAt(((_arg1[(_local5 >> 2)] >> (((_local5 & 3) * 8) + 4)) & 15)) + _local2.charAt(((_arg1[(_local5 >> 2)] >> ((_local5 & 3) * 8)) & 15))));
_local5++;
};
return (_local3);
}
public static function str_md5(_arg1){
return (binl2str(core_md5(str2binl(_arg1), (_arg1.length * __chrsz))));
}
private static function binl2b64(_arg1){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
_local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
_local3 = "";
_local4 = (_arg1.length * 4);
_local5 = (4 * _local4);
_local6 = 0;
while (_local6 < _local4) {
_local8 = (((((_arg1[(_local6 >> 2)] >> (8 * (_local6 & 3))) & 0xFF) << 16) | (((_arg1[((_local6 + 1) >> 2)] >> (8 * ((_local6 + 1) & 3))) & 0xFF) << 8)) | ((_arg1[((_local6 + 2) >> 2)] >> (8 * ((_local6 + 2) & 3))) & 0xFF));
_local6 = (_local6 + 3);
};
_local7 = 0;
while (_local7 < 4) {
if (((_local6 * 8) + (_local7 * 6)) > _local5){
_local3 = (_local3 + __b64pad);
} else {
_local3 = (_local3 + _local2.charAt(((_local8 >> (6 * (3 - _local7))) & 63)));
};
_local7++;
};
return (_local3);
}
private static function safe_add(_arg1, _arg2){
var _local3:*;
var _local4:*;
_local3 = ((_arg1 & 0xFFFF) + (_arg2 & 0xFFFF));
_local4 = (((_arg1 >> 16) + (_arg2 >> 16)) + (_local3 >> 16));
return (((_local4 << 16) | (_local3 & 0xFFFF)));
}
private static function str_hmac_md5(_arg1, _arg2){
return (binl2str(core_hmac_md5(_arg1, _arg2)));
}
}
}//package com.candystand.ScoreSubmit
Section 34
//Messenger (com.candystand.ScoreSubmit.Messenger)
package com.candystand.ScoreSubmit {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.*;
public class Messenger {
private static var __md5Key:String;
private static var __initialized:Boolean = false;
private static var __blowfishKey:String;
private static var __kaInterval:Number;
private static var __timesExecuted:Number;
private static function onIOError(_arg1:IOErrorEvent):void{
trace(_arg1.text);
}
private static function load(){
var _local1:Boolean;
var _local2:Number;
var _local3:String;
var _local4:String;
var _local5:URLRequest;
var _local6:URLVariables;
var _local7:URLRequest;
var _local8:URLLoader;
var _local9:String;
if (!Constants.sendLoad){
return;
};
_local1 = false;
switch (Constants.sendMethod){
case "DISABLED":
return;
case "JAVASCRIPT":
_local1 = true;
case "GET":
_local2 = getTimer();
_local3 = ((("load" + Constants.getIdString()) + "") + _local2);
_local3 = (_local3 + __md5Key);
_local4 = MD5.hex_md5(_local3);
trace(("Messenger.load() preMD5: " + _local3));
trace(("Messenger.load() hash: " + _local4));
if (_local1){
_local5 = new URLRequest((("javascript: TrackingEvent( " + Constants.getJavaTracking("load", _local2, _local4)) + " );"));
navigateToURL(_local5, "_self");
} else {
_local6 = new URLVariables();
_local7 = new URLRequest(Constants.trackingurl);
_local7.method = URLRequestMethod.GET;
_local8 = new URLLoader();
_local8.dataFormat = URLLoaderDataFormat.VARIABLES;
_local8.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
_local6.action = "load";
_local6.gameid = Constants.uniqueId;
_local6.userid = Constants.playerId;
_local6.sid = Constants.sessionId;
_local6.d1 = Constants.downloadTime;
_local6.rn = _local2;
_local6.cr = _local4;
for (_local9 in Constants.trackingParams) {
_local6[_local9] = Constants.trackingParams[_local9];
};
_local7.data = _local6;
_local8.load(_local7);
};
break;
};
}
static function quit(_arg1:Number=0){
var _local2:URLRequest;
var _local3:Boolean;
var _local4:Number;
var _local5:String;
var _local6:String;
var _local7:URLVariables;
var _local8:URLRequest;
var _local9:URLLoader;
var _local10:String;
clearInterval(__kaInterval);
if (!Constants.sendQuit){
return;
};
_local2 = null;
_local3 = false;
switch (Constants.sendMethod){
case "DISABLED":
return;
case "JAVASCRIPT":
_local3 = true;
case "GET":
_local4 = getTimer();
_local5 = ((("quit" + Constants.getIdString()) + "") + _local4);
_local5 = (_local5 + __md5Key);
_local6 = MD5.hex_md5(_local5);
trace(("Messenger.quit() preMD5: " + _local5));
trace(("Messenger.quit() hash: " + _local6));
if (_local3){
_local2 = new URLRequest((("javascript: TrackingEvent( " + Constants.getJavaTracking("load", _local4, _local6)) + " );"));
navigateToURL(_local2, "_self");
} else {
_local7 = new URLVariables();
_local8 = new URLRequest(Constants.trackingurl);
_local8.method = URLRequestMethod.GET;
_local9 = new URLLoader();
_local9.dataFormat = URLLoaderDataFormat.VARIABLES;
_local9.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
_local7.action = "quit";
_local7.gameid = Constants.uniqueId;
_local7.userid = Constants.playerId;
_local7.sid = Constants.sessionId;
_local7.d1 = _arg1;
_local7.rn = _local4;
_local7.cr = _local6;
for (_local10 in Constants.trackingParams) {
_local7[_local10] = Constants.trackingParams[_local10];
};
_local8.data = _local7;
_local9.load(_local8);
};
break;
};
}
private static function keepAlive(){
var _local1:Number;
var _local2:Number;
var _local3:String;
var _local4:String;
var _local5:URLVariables;
var _local6:URLRequest;
var _local7:URLLoader;
var _local8:String;
if (Constants.sendMethod == "DISABLED"){
return;
};
__timesExecuted++;
_local1 = __timesExecuted;
_local2 = getTimer();
_local3 = ((("keepalive" + Constants.getIdString()) + "") + _local2);
_local3 = (_local3 + __md5Key);
_local4 = MD5.hex_md5(_local3);
trace(("Messenger.keepAlive() preMD5: " + _local3));
trace(("Messenger.keepAlive() hash: " + _local4));
_local5 = new URLVariables();
_local6 = new URLRequest(Constants.trackingurl);
_local6.method = URLRequestMethod.GET;
_local7 = new URLLoader();
_local7.dataFormat = URLLoaderDataFormat.VARIABLES;
_local7.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
_local5.action = "keepalive";
_local5.gameid = Constants.uniqueId;
_local5.userid = Constants.playerId;
_local5.sid = Constants.sessionId;
_local5.d1 = _local1;
_local5.rn = _local2;
_local5.cr = _local4;
for (_local8 in Constants.trackingParams) {
_local5[_local8] = Constants.trackingParams[_local8];
};
_local6.data = _local5;
_local7.load(_local6);
}
public static function initialize(_arg1:DisplayObject, _arg2:String, _arg3:String, _arg4:Number=0, _arg5:String="none", _arg6:String="0.0.0"){
var _local7:Number;
if (__initialized){
return;
};
__initialized = true;
_local7 = Math.round((getTimer() / 1000));
Constants.initialize(_arg1, _arg5, _arg6, _local7);
Game.initialize();
__md5Key = _arg2;
__blowfishKey = _arg3;
Blowfish.initialize(__blowfishKey);
if (_arg4){
__timesExecuted = 0;
__kaInterval = setInterval(Messenger.keepAlive, _arg4);
};
load();
}
static function submitScore(_arg1:String){
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:URLRequest;
_local2 = MD5.hex_md5((_arg1 + __blowfishKey));
_local3 = Blowfish.enc64str(((_arg1 + "&cr=") + _local2));
trace(("Messenger.submitScore() preMD5: " + _arg1));
trace(("Messenger.submitScore() hash: " + _local2));
trace(("Messenger.submitScore() encoded: " + _local3));
_local4 = ((Constants.scoreurl.indexOf("?"))!=-1) ? "&" : "?";
quit();
_local5 = new URLRequest((((Constants.scoreurl + _local4) + "param=") + _local3));
navigateToURL(_local5, "_self");
}
static function sendAction(_arg1:String, _arg2:Boolean){
var _local3:Boolean;
var _local4:Number;
var _local5:String;
var _local6:String;
var _local7:URLRequest;
var _local8:URLVariables;
var _local9:URLRequest;
var _local10:URLLoader;
var _local11:String;
trace(("MESSENGER: SEND ACTION " + _arg1));
if ((((_arg1 == "play")) && (!(Constants.sendPlay)))){
return;
};
if ((((_arg1 == "over")) && (!(Constants.sendGameover)))){
return;
};
if (!_arg2){
if (_arg1 == "play"){
Game.newGame();
return;
};
if (_arg1 == "over"){
Game.endGame();
return;
};
};
_local3 = false;
switch (Constants.sendMethod){
case "DISABLED":
return;
case "JAVASCRIPT":
_local3 = true;
case "GET":
_local4 = getTimer();
_local5 = ((((_arg1 + "") + Constants.getIdString()) + "") + _local4);
_local5 = (_local5 + __md5Key);
_local6 = MD5.hex_md5(_local5);
trace(("Messenger.sendAction() preMD5: " + _local5));
trace(("Messenger.sendAction() hash: " + _local6));
if (_local3){
_local7 = new URLRequest((("javascript: TrackingEvent( " + Constants.getJavaTracking(_arg1, _local4, _local6)) + " );"));
navigateToURL(_local7, "_self");
} else {
_local8 = new URLVariables();
_local9 = new URLRequest(Constants.trackingurl);
_local9.method = URLRequestMethod.GET;
_local10 = new URLLoader();
_local10.dataFormat = URLLoaderDataFormat.VARIABLES;
_local10.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
_local8.action = _arg1;
_local8.gameid = Constants.uniqueId;
_local8.userid = Constants.playerId;
_local8.sid = Constants.sessionId;
_local8.rn = _local4;
_local8.cr = _local6;
for (_local11 in Constants.trackingParams) {
_local8[_local11] = Constants.trackingParams[_local11];
};
_local9.data = _local8;
_local10.load(_local9);
};
break;
};
}
}
}//package com.candystand.ScoreSubmit
Section 35
//CampaignInfo (com.google.analytics.campaign.CampaignInfo)
package com.google.analytics.campaign {
import com.google.analytics.utils.*;
public class CampaignInfo {
private var _new:Boolean;
private var _empty:Boolean;
public function CampaignInfo(_arg1:Boolean=true, _arg2:Boolean=false){
_empty = _arg1;
_new = _arg2;
}
public function toURLString():String{
var _local1:Variables = toVariables();
return (_local1.toString());
}
public function isNew():Boolean{
return (_new);
}
public function get utmcn():String{
return ("1");
}
public function isEmpty():Boolean{
return (_empty);
}
public function toVariables():Variables{
var _local1:Variables = new Variables();
_local1.URIencode = true;
if (((!(isEmpty())) && (isNew()))){
_local1.utmcn = utmcn;
};
if (((!(isEmpty())) && (!(isNew())))){
_local1.utmcr = utmcr;
};
return (_local1);
}
public function get utmcr():String{
return ("1");
}
}
}//package com.google.analytics.campaign
Section 36
//CampaignKey (com.google.analytics.campaign.CampaignKey)
package com.google.analytics.campaign {
public class CampaignKey {
public var UCMD:String;// = "utm_medium"
public var UCID:String;// = "utm_id"
public var UCTR:String;// = "utm_term"
public var UCSR:String;// = "utm_source"
public var UCNO:String;// = "utm_nooverride"
public var UCCN:String;// = "utm_campaign"
public var UGCLID:String;// = "gclid"
public var UCCT:String;// = "utm_content"
}
}//package com.google.analytics.campaign
Section 37
//CampaignManager (com.google.analytics.campaign.CampaignManager)
package com.google.analytics.campaign {
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
public class CampaignManager {
private var _config:Configuration;
private var _domainHash:Number;
private var _debug:DebugConfiguration;
private var _timeStamp:Number;
private var _referrer:String;
private var _buffer:Buffer;
public static const trackingDelimiter:String = "|";
public function CampaignManager(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Number, _arg5:String, _arg6:Number){
_config = _arg1;
_debug = _arg2;
_buffer = _arg3;
_domainHash = _arg4;
_referrer = _arg5;
_timeStamp = _arg6;
}
public function getCampaignInformation(_arg1:String, _arg2:Boolean):CampaignInfo{
var _local4:CampaignTracker;
var _local8:CampaignTracker;
var _local9:int;
var _local3:CampaignInfo = new CampaignInfo();
var _local5:Boolean;
var _local6:Boolean;
var _local7:int;
if (((_config.allowLinker) && (_buffer.isGenuine()))){
if (!_buffer.hasUTMZ()){
return (_local3);
};
};
_local4 = getTrackerFromSearchString(_arg1);
if (isValid(_local4)){
_local6 = hasNoOverride(_arg1);
if (((_local6) && (!(_buffer.hasUTMZ())))){
return (_local3);
};
};
if (!isValid(_local4)){
_local4 = getOrganicCampaign();
if (((!(_buffer.hasUTMZ())) && (isIgnoredKeyword(_local4)))){
return (_local3);
};
};
if (((!(isValid(_local4))) && (_arg2))){
_local4 = getReferrerCampaign();
if (((!(_buffer.hasUTMZ())) && (isIgnoredReferral(_local4)))){
return (_local3);
};
};
if (!isValid(_local4)){
if (((!(_buffer.hasUTMZ())) && (_arg2))){
_local4 = getDirectCampaign();
};
};
if (!isValid(_local4)){
return (_local3);
};
if (((_buffer.hasUTMZ()) && (!(_buffer.utmz.isEmpty())))){
_local8 = new CampaignTracker();
_local8.fromTrackerString(_buffer.utmz.campaignTracking);
_local5 = (_local8.toTrackerString() == _local4.toTrackerString());
_local7 = _buffer.utmz.responseCount;
};
if (((!(_local5)) || (_arg2))){
_local9 = _buffer.utma.sessionCount;
_local7++;
if (_local9 == 0){
_local9 = 1;
};
_buffer.utmz.domainHash = _domainHash;
_buffer.utmz.campaignCreation = _timeStamp;
_buffer.utmz.campaignSessions = _local9;
_buffer.utmz.responseCount = _local7;
_buffer.utmz.campaignTracking = _local4.toTrackerString();
_debug.info(_buffer.utmz.toString(), VisualDebugMode.geek);
_local3 = new CampaignInfo(false, true);
} else {
_local3 = new CampaignInfo(false, false);
};
return (_local3);
}
public function hasNoOverride(_arg1:String):Boolean{
var _local2:CampaignKey = _config.campaignKey;
if (_arg1 == ""){
return (false);
};
var _local3:Variables = new Variables(_arg1);
var _local4 = "";
if (_local3.hasOwnProperty(_local2.UCNO)){
_local4 = _local3[_local2.UCNO];
switch (_local4){
case "1":
return (true);
case "":
case "0":
default:
return (false);
};
};
return (false);
}
public function getTrackerFromSearchString(_arg1:String):CampaignTracker{
var _local2:CampaignTracker = getOrganicCampaign();
var _local3:CampaignTracker = new CampaignTracker();
var _local4:CampaignKey = _config.campaignKey;
if (_arg1 == ""){
return (_local3);
};
var _local5:Variables = new Variables(_arg1);
if (_local5.hasOwnProperty(_local4.UCID)){
_local3.id = _local5[_local4.UCID];
};
if (_local5.hasOwnProperty(_local4.UCSR)){
_local3.source = _local5[_local4.UCSR];
};
if (_local5.hasOwnProperty(_local4.UGCLID)){
_local3.clickId = _local5[_local4.UGCLID];
};
if (_local5.hasOwnProperty(_local4.UCCN)){
_local3.name = _local5[_local4.UCCN];
} else {
_local3.name = "(not set)";
};
if (_local5.hasOwnProperty(_local4.UCMD)){
_local3.medium = _local5[_local4.UCMD];
} else {
_local3.medium = "(not set)";
};
if (_local5.hasOwnProperty(_local4.UCTR)){
_local3.term = _local5[_local4.UCTR];
} else {
if (((_local2) && (!((_local2.term == ""))))){
_local3.term = _local2.term;
};
};
if (_local5.hasOwnProperty(_local4.UCCT)){
_local3.content = _local5[_local4.UCCT];
};
return (_local3);
}
public function getOrganicCampaign():CampaignTracker{
var _local1:CampaignTracker;
var _local4:Array;
var _local5:OrganicReferrer;
var _local6:String;
if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
return (_local1);
};
var _local2:URL = new URL(_referrer);
var _local3 = "";
if (_local2.hostName != ""){
if (_local2.hostName.indexOf(".") > -1){
_local4 = _local2.hostName.split(".");
switch (_local4.length){
case 2:
_local3 = _local4[0];
break;
case 3:
_local3 = _local4[1];
break;
};
};
};
if (_config.organic.match(_local3)){
_local5 = _config.organic.getReferrerByName(_local3);
_local6 = _config.organic.getKeywordValue(_local5, _local2.search);
_local1 = new CampaignTracker();
_local1.source = _local5.engine;
_local1.name = "(organic)";
_local1.medium = "organic";
_local1.term = _local6;
};
return (_local1);
}
public function getDirectCampaign():CampaignTracker{
var _local1:CampaignTracker = new CampaignTracker();
_local1.source = "(direct)";
_local1.name = "(direct)";
_local1.medium = "(none)";
return (_local1);
}
public function isIgnoredKeyword(_arg1:CampaignTracker):Boolean{
if (((_arg1) && ((_arg1.medium == "organic")))){
return (_config.organic.isIgnoredKeyword(_arg1.term));
};
return (false);
}
public function isIgnoredReferral(_arg1:CampaignTracker):Boolean{
if (((_arg1) && ((_arg1.medium == "referral")))){
return (_config.organic.isIgnoredReferral(_arg1.source));
};
return (false);
}
public function isValid(_arg1:CampaignTracker):Boolean{
if (((_arg1) && (_arg1.isValid()))){
return (true);
};
return (false);
}
public function getReferrerCampaign():CampaignTracker{
var _local1:CampaignTracker;
if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){
return (_local1);
};
var _local2:URL = new URL(_referrer);
var _local3:String = _local2.hostName;
var _local4:String = _local2.path;
if (_local3.indexOf("www.") == 0){
_local3 = _local3.substr(4);
};
_local1 = new CampaignTracker();
_local1.source = _local3;
_local1.name = "(referral)";
_local1.medium = "referral";
_local1.content = _local4;
return (_local1);
}
public static function isInvalidReferrer(_arg1:String):Boolean{
var _local2:URL;
if ((((((_arg1 == "")) || ((_arg1 == "-")))) || ((_arg1 == "0")))){
return (true);
};
if (_arg1.indexOf("://") > -1){
_local2 = new URL(_arg1);
if ((((_local2.protocol == Protocols.file)) || ((_local2.protocol == Protocols.none)))){
return (true);
};
};
return (false);
}
public static function isFromGoogleCSE(_arg1:String, _arg2:Configuration):Boolean{
var _local3:URL = new URL(_arg1);
if (_local3.hostName.indexOf(_arg2.google) > -1){
if (_local3.search.indexOf((_arg2.googleSearchParam + "=")) > -1){
if (_local3.path == ("/" + _arg2.googleCsePath)){
return (true);
};
};
};
return (false);
}
}
}//package com.google.analytics.campaign
Section 38
//CampaignTracker (com.google.analytics.campaign.CampaignTracker)
package com.google.analytics.campaign {
import com.google.analytics.utils.*;
public class CampaignTracker {
public var content:String;
public var source:String;
public var clickId:String;
public var name:String;
public var term:String;
public var medium:String;
public var id:String;
public function CampaignTracker(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:String="", _arg5:String="", _arg6:String="", _arg7:String=""){
this.id = _arg1;
this.source = _arg2;
this.clickId = _arg3;
this.name = _arg4;
this.medium = _arg5;
this.term = _arg6;
this.content = _arg7;
}
public function isValid():Boolean{
if (((((!((id == ""))) || (!((source == ""))))) || (!((clickId == ""))))){
return (true);
};
return (false);
}
public function toTrackerString():String{
var _local1:Array = [];
_addIfNotEmpty(_local1, "utmcsr=", source);
_addIfNotEmpty(_local1, "utmccn=", name);
_addIfNotEmpty(_local1, "utmcmd=", medium);
_addIfNotEmpty(_local1, "utmctr=", term);
_addIfNotEmpty(_local1, "utmcct=", content);
_addIfNotEmpty(_local1, "utmcid=", id);
_addIfNotEmpty(_local1, "utmgclid=", clickId);
return (_local1.join(CampaignManager.trackingDelimiter));
}
private function _addIfNotEmpty(_arg1:Array, _arg2:String, _arg3:String):void{
if (_arg3 != ""){
_arg3 = _arg3.split("+").join("%20");
_arg3 = _arg3.split(" ").join("%20");
_arg1.push((_arg2 + _arg3));
};
}
public function fromTrackerString(_arg1:String):void{
var _local2:String = _arg1.split(CampaignManager.trackingDelimiter).join("&");
var _local3:Variables = new Variables(_local2);
if (_local3.hasOwnProperty("utmcid")){
this.id = _local3["utmcid"];
};
if (_local3.hasOwnProperty("utmcsr")){
this.source = _local3["utmcsr"];
};
if (_local3.hasOwnProperty("utmccn")){
this.name = _local3["utmccn"];
};
if (_local3.hasOwnProperty("utmcmd")){
this.medium = _local3["utmcmd"];
};
if (_local3.hasOwnProperty("utmctr")){
this.term = _local3["utmctr"];
};
if (_local3.hasOwnProperty("utmcct")){
this.content = _local3["utmcct"];
};
if (_local3.hasOwnProperty("utmgclid")){
this.clickId = _local3["utmgclid"];
};
}
}
}//package com.google.analytics.campaign
Section 39
//BrowserInfo (com.google.analytics.core.BrowserInfo)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.utils.*;
public class BrowserInfo {
private var _config:Configuration;
private var _info:Environment;
public function BrowserInfo(_arg1:Configuration, _arg2:Environment){
_config = _arg1;
_info = _arg2;
}
public function get utmul():String{
return (_info.language.toLowerCase());
}
public function get utmje():String{
return ("0");
}
public function toURLString():String{
var _local1:Variables = toVariables();
return (_local1.toString());
}
public function get utmsr():String{
return (((_info.screenWidth + "x") + _info.screenHeight));
}
public function get utmfl():String{
var _local1:Version;
if (_config.detectFlash){
_local1 = _info.flashVersion;
return (((((_local1.major + ".") + _local1.minor) + " r") + _local1.build));
};
return ("-");
}
public function get utmcs():String{
return (_info.languageEncoding);
}
public function toVariables():Variables{
var _local1:Variables = new Variables();
_local1.URIencode = true;
_local1.utmcs = utmcs;
_local1.utmsr = utmsr;
_local1.utmsc = utmsc;
_local1.utmul = utmul;
_local1.utmje = utmje;
_local1.utmfl = utmfl;
return (_local1);
}
public function get utmsc():String{
return ((_info.screenColorDepth + "-bit"));
}
}
}//package com.google.analytics.core
Section 40
//Buffer (com.google.analytics.core.Buffer)
package com.google.analytics.core {
import flash.events.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.net.*;
import com.google.analytics.data.*;
public dynamic class Buffer {
private var _SO:SharedObject;
private var _OBJ:Object;
private var _utma:UTMA;
private var _utmb:UTMB;
private var _utmc:UTMC;
private var _debug:DebugConfiguration;
private var _utmk:UTMK;
private var _config:Configuration;
private var _utmv:UTMV;
private var _utmz:UTMZ;
private var _volatile:Boolean;
public function Buffer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Boolean=false, _arg4:Object=null){
var _local5:Boolean;
var _local6:String;
super();
_config = _arg1;
_debug = _arg2;
UTMB.defaultTimespan = _config.sessionTimeout;
UTMZ.defaultTimespan = _config.conversionTimeout;
if (!_arg3){
_SO = SharedObject.getLocal(_config.cookieName, _config.cookiePath);
_local5 = false;
if (_SO.data.utma){
if (!hasUTMA()){
_createUMTA();
};
_utma.fromSharedObject(_SO.data.utma);
if (_debug.verbose){
_debug.info(("found: " + _utma.toString(true)), VisualDebugMode.geek);
};
if (_utma.isExpired()){
if (_debug.verbose){
_debug.warning("UTMA has expired", VisualDebugMode.advanced);
};
_clearUTMA();
_local5 = true;
};
};
if (_SO.data.utmb){
if (!hasUTMB()){
_createUMTB();
};
_utmb.fromSharedObject(_SO.data.utmb);
if (_debug.verbose){
_debug.info(("found: " + _utmb.toString(true)), VisualDebugMode.geek);
};
if (_utmb.isExpired()){
if (_debug.verbose){
_debug.warning("UTMB has expired", VisualDebugMode.advanced);
};
_clearUTMB();
_local5 = true;
};
};
if (_SO.data.utmc){
delete _SO.data.utmc;
_local5 = true;
};
if (_SO.data.utmk){
if (!hasUTMK()){
_createUMTK();
};
_utmk.fromSharedObject(_SO.data.utmk);
if (_debug.verbose){
_debug.info(("found: " + _utmk.toString()), VisualDebugMode.geek);
};
};
if (_SO.data.utmv){
if (!hasUTMV()){
_createUMTV();
};
_utmv.fromSharedObject(_SO.data.utmv);
if (_debug.verbose){
_debug.info(("found: " + _utmv.toString(true)), VisualDebugMode.geek);
};
if (_utmv.isExpired()){
if (_debug.verbose){
_debug.warning("UTMV has expired", VisualDebugMode.advanced);
};
_clearUTMV();
_local5 = true;
};
};
if (_SO.data.utmz){
if (!hasUTMZ()){
_createUMTZ();
};
_utmz.fromSharedObject(_SO.data.utmz);
if (_debug.verbose){
_debug.info(("found: " + _utmz.toString(true)), VisualDebugMode.geek);
};
if (_utmz.isExpired()){
if (_debug.verbose){
_debug.warning("UTMZ has expired", VisualDebugMode.advanced);
};
_clearUTMZ();
_local5 = true;
};
};
if (_local5){
save();
};
} else {
_OBJ = new Object();
if (_arg4){
for (_local6 in _arg4) {
_OBJ[_local6] = _arg4[_local6];
};
};
};
_volatile = _arg3;
}
public function clearCookies():void{
utma.reset();
utmb.reset();
utmc.reset();
utmz.reset();
utmv.reset();
utmk.reset();
}
public function save():void{
var flushStatus:String;
if (!isVolatile()){
flushStatus = null;
try {
flushStatus = _SO.flush();
} catch(e:Error) {
_debug.warning("Error...Could not write SharedObject to disk");
};
switch (flushStatus){
case SharedObjectFlushStatus.PENDING:
_debug.info("Requesting permission to save object...");
_SO.addEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus);
break;
case SharedObjectFlushStatus.FLUSHED:
_debug.info("Value flushed to disk.");
break;
};
};
}
public function get utmv():UTMV{
if (!hasUTMV()){
_createUMTV();
};
return (_utmv);
}
public function get utmz():UTMZ{
if (!hasUTMZ()){
_createUMTZ();
};
return (_utmz);
}
public function hasUTMA():Boolean{
if (_utma){
return (true);
};
return (false);
}
public function hasUTMB():Boolean{
if (_utmb){
return (true);
};
return (false);
}
public function hasUTMC():Boolean{
if (_utmc){
return (true);
};
return (false);
}
public function isGenuine():Boolean{
if (!hasUTMK()){
return (true);
};
return ((utmk.hash == generateCookiesHash()));
}
public function resetCurrentSession():void{
_clearUTMB();
_clearUTMC();
save();
}
public function hasUTMK():Boolean{
if (_utmk){
return (true);
};
return (false);
}
public function generateCookiesHash():Number{
var _local1 = "";
_local1 = (_local1 + utma.valueOf());
_local1 = (_local1 + utmb.valueOf());
_local1 = (_local1 + utmc.valueOf());
_local1 = (_local1 + utmz.valueOf());
_local1 = (_local1 + utmv.valueOf());
return (Utils.generateHash(_local1));
}
private function _createUMTB():void{
_utmb = new UTMB();
_utmb.proxy = this;
}
private function _createUMTC():void{
_utmc = new UTMC();
}
private function _createUMTA():void{
_utma = new UTMA();
_utma.proxy = this;
}
public function hasUTMV():Boolean{
if (_utmv){
return (true);
};
return (false);
}
private function _createUMTK():void{
_utmk = new UTMK();
_utmk.proxy = this;
}
public function hasUTMZ():Boolean{
if (_utmz){
return (true);
};
return (false);
}
private function _createUMTV():void{
_utmv = new UTMV();
_utmv.proxy = this;
}
private function _onFlushStatus(_arg1:NetStatusEvent):void{
_debug.info("User closed permission dialog...");
switch (_arg1.info.code){
case "SharedObject.Flush.Success":
_debug.info("User granted permission -- value saved.");
break;
case "SharedObject.Flush.Failed":
_debug.info("User denied permission -- value not saved.");
break;
};
_SO.removeEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus);
}
private function _createUMTZ():void{
_utmz = new UTMZ();
_utmz.proxy = this;
}
public function updateUTMA(_arg1:Number):void{
if (_debug.verbose){
_debug.info((("updateUTMA( " + _arg1) + " )"), VisualDebugMode.advanced);
};
if (!utma.isEmpty()){
if (isNaN(utma.sessionCount)){
utma.sessionCount = 1;
} else {
utma.sessionCount = (utma.sessionCount + 1);
};
utma.lastTime = utma.currentTime;
utma.currentTime = _arg1;
};
}
private function _clearUTMA():void{
_utma = null;
if (!isVolatile()){
_SO.data.utma = null;
delete _SO.data.utma;
};
}
private function _clearUTMC():void{
_utmc = null;
}
private function _clearUTMB():void{
_utmb = null;
if (!isVolatile()){
_SO.data.utmb = null;
delete _SO.data.utmb;
};
}
public function update(_arg1:String, _arg2):void{
if (isVolatile()){
_OBJ[_arg1] = _arg2;
} else {
_SO.data[_arg1] = _arg2;
};
}
private function _clearUTMZ():void{
_utmz = null;
if (!isVolatile()){
_SO.data.utmz = null;
delete _SO.data.utmz;
};
}
private function _clearUTMV():void{
_utmv = null;
if (!isVolatile()){
_SO.data.utmv = null;
delete _SO.data.utmv;
};
}
public function isVolatile():Boolean{
return (_volatile);
}
public function get utma():UTMA{
if (!hasUTMA()){
_createUMTA();
};
return (_utma);
}
public function get utmb():UTMB{
if (!hasUTMB()){
_createUMTB();
};
return (_utmb);
}
public function get utmc():UTMC{
if (!hasUTMC()){
_createUMTC();
};
return (_utmc);
}
public function get utmk():UTMK{
if (!hasUTMK()){
_createUMTK();
};
return (_utmk);
}
}
}//package com.google.analytics.core
Section 41
//DocumentInfo (com.google.analytics.core.DocumentInfo)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.utils.*;
import com.google.analytics.external.*;
public class DocumentInfo {
private var _pageURL:String;
private var _utmr:String;
private var _config:Configuration;
private var _adSense:AdSenseGlobals;
private var _info:Environment;
public function DocumentInfo(_arg1:Configuration, _arg2:Environment, _arg3:String, _arg4:String=null, _arg5:AdSenseGlobals=null){
_config = _arg1;
_info = _arg2;
_utmr = _arg3;
_pageURL = _arg4;
_adSense = _arg5;
}
public function get utmr():String{
if (!_utmr){
return ("-");
};
return (_utmr);
}
public function toURLString():String{
var _local1:Variables = toVariables();
return (_local1.toString());
}
private function _renderPageURL(_arg1:String=""):String{
var _local2:String = _info.locationPath;
var _local3:String = _info.locationSearch;
if (((!(_arg1)) || ((_arg1 == "")))){
_arg1 = (_local2 + unescape(_local3));
};
return (_arg1);
}
public function get utmp():String{
return (_renderPageURL(_pageURL));
}
public function get utmhid():String{
return (String(_generateHitId()));
}
private function _generateHitId():Number{
var _local1:Number;
if (((_adSense.hid) && (!((_adSense.hid == ""))))){
_local1 = Number(_adSense.hid);
} else {
_local1 = Math.round((Math.random() * 2147483647));
_adSense.hid = String(_local1);
};
return (_local1);
}
public function toVariables():Variables{
var _local1:Variables = new Variables();
_local1.URIencode = true;
if (((_config.detectTitle) && (!((utmdt == ""))))){
_local1.utmdt = utmdt;
};
_local1.utmhid = utmhid;
_local1.utmr = utmr;
_local1.utmp = utmp;
return (_local1);
}
public function get utmdt():String{
return (_info.documentTitle);
}
}
}//package com.google.analytics.core
Section 42
//Domain (com.google.analytics.core.Domain)
package com.google.analytics.core {
import com.google.analytics.debug.*;
public class Domain {
private var _mode:DomainNameMode;
private var _debug:DebugConfiguration;
private var _name:String;
public function Domain(_arg1:DomainNameMode=null, _arg2:String="", _arg3:DebugConfiguration=null){
_debug = _arg3;
if (_arg1 == null){
_arg1 = DomainNameMode.auto;
};
_mode = _arg1;
if (_arg1 == DomainNameMode.custom){
this.name = _arg2;
} else {
_name = _arg2;
};
}
public function get mode():DomainNameMode{
return (_mode);
}
public function set mode(_arg1:DomainNameMode):void{
_mode = _arg1;
if (_mode == DomainNameMode.none){
_name = "";
};
}
public function get name():String{
return (_name);
}
public function set name(_arg1:String):void{
if (((!((_arg1.charAt(0) == "."))) && (_debug))){
_debug.warning(("missing leading period \".\", cookie will only be accessible on " + _arg1), VisualDebugMode.geek);
};
_name = _arg1;
}
}
}//package com.google.analytics.core
Section 43
//DomainNameMode (com.google.analytics.core.DomainNameMode)
package com.google.analytics.core {
public class DomainNameMode {
private var _value:int;
private var _name:String;
public static const custom:DomainNameMode = new DomainNameMode(2, "custom");
;
public static const none:DomainNameMode = new DomainNameMode(0, "none");
;
public static const auto:DomainNameMode = new DomainNameMode(1, "auto");
;
public function DomainNameMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.core
Section 44
//EventInfo (com.google.analytics.core.EventInfo)
package com.google.analytics.core {
import com.google.analytics.data.*;
import com.google.analytics.utils.*;
public class EventInfo {
private var _ext10:X10;
private var _isEventHit:Boolean;
private var _x10:X10;
public function EventInfo(_arg1:Boolean, _arg2:X10, _arg3:X10=null){
_isEventHit = _arg1;
_x10 = _arg2;
_ext10 = _arg3;
}
public function toURLString():String{
var _local1:Variables = toVariables();
return (_local1.toString());
}
public function get utmt():String{
return ("event");
}
public function get utme():String{
return (_x10.renderMergedUrlString(_ext10));
}
public function toVariables():Variables{
var _local1:Variables = new Variables();
_local1.URIencode = true;
if (_isEventHit){
_local1.utmt = utmt;
};
_local1.utme = utme;
return (_local1);
}
}
}//package com.google.analytics.core
Section 45
//EventTracker (com.google.analytics.core.EventTracker)
package com.google.analytics.core {
import com.google.analytics.v4.*;
public class EventTracker {
private var _parent:GoogleAnalyticsAPI;
public var name:String;
public function EventTracker(_arg1:String, _arg2:GoogleAnalyticsAPI){
this.name = _arg1;
_parent = _arg2;
}
public function trackEvent(_arg1:String, _arg2:String=null, _arg3:Number=NaN):Boolean{
return (_parent.trackEvent(name, _arg1, _arg2, _arg3));
}
}
}//package com.google.analytics.core
Section 46
//ga_internal (com.google.analytics.core.ga_internal)
package com.google.analytics.core {
public namespace ga_internal;
}//package com.google.analytics.core
Section 47
//GIFRequest (com.google.analytics.core.GIFRequest)
package com.google.analytics.core {
import flash.display.*;
import flash.events.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.net.*;
import com.google.analytics.utils.*;
import flash.system.*;
public class GIFRequest {
private var _info:Environment;
private var _count:int;
private var _utmac:String;
private var _alertcount:int;
private var _debug:DebugConfiguration;
private var _lastRequest:URLRequest;
private var _buffer:Buffer;
private var _config:Configuration;
private var _requests:Array;
public function GIFRequest(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Environment){
_config = _arg1;
_debug = _arg2;
_buffer = _arg3;
_info = _arg4;
_count = 0;
_alertcount = 0;
_requests = [];
}
public function get utmn():String{
return ((Utils.generate32bitRandom() as String));
}
public function onIOError(_arg1:IOErrorEvent):void{
var _local2:String = _lastRequest.url;
var _local3:String = String((_requests.length - 1));
var _local4 = (("Gif Request #" + _local3) + " failed");
if (_debug.GIFRequests){
if (!_debug.verbose){
if (_local2.indexOf("?") > -1){
_local2 = _local2.split("?")[0];
};
_local2 = _shortenURL(_local2);
};
if (int(_debug.mode) > int(VisualDebugMode.basic)){
_local4 = (_local4 + ((" \"" + _local2) + "\" does not exists or is unreachable"));
};
_debug.failure(_local4);
} else {
_debug.warning(_local4);
};
_removeListeners(_arg1.target);
}
public function send(_arg1:String, _arg2:Variables=null, _arg3:Boolean=false, _arg4:Boolean=false):void{
var _local5:String;
var _local6:URLRequest;
var _local7:URLRequest;
_utmac = _arg1;
if (!_arg2){
_arg2 = new Variables();
};
_arg2.URIencode = false;
_arg2.pre = ["utmwv", "utmn", "utmhn", "utmt", "utme", "utmcs", "utmsr", "utmsc", "utmul", "utmje", "utmfl", "utmdt", "utmhid", "utmr", "utmp"];
_arg2.post = ["utmcc"];
if (_debug.verbose){
_debug.info(((("tracking: " + _buffer.utmb.trackCount) + "/") + _config.trackingLimitPerSession), VisualDebugMode.geek);
};
if ((((_buffer.utmb.trackCount < _config.trackingLimitPerSession)) || (_arg3))){
if (_arg4){
updateToken();
};
if (((((_arg3) || (!(_arg4)))) || ((_buffer.utmb.token >= 1)))){
if (((!(_arg3)) && (_arg4))){
_buffer.utmb.token = (_buffer.utmb.token - 1);
};
_buffer.utmb.trackCount = (_buffer.utmb.trackCount + 1);
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
};
_arg2.utmwv = utmwv;
_arg2.utmn = Utils.generate32bitRandom();
if (_info.domainName != ""){
_arg2.utmhn = _info.domainName;
};
if (_config.sampleRate < 1){
_arg2.utmsp = (_config.sampleRate * 100);
};
if ((((_config.serverMode == ServerOperationMode.local)) || ((_config.serverMode == ServerOperationMode.both)))){
_local5 = _info.locationSWFPath;
if (_local5.lastIndexOf("/") > 0){
_local5 = _local5.substring(0, _local5.lastIndexOf("/"));
};
_local6 = new URLRequest();
if (_config.localGIFpath.indexOf("http") == 0){
_local6.url = _config.localGIFpath;
} else {
_local6.url = (_local5 + _config.localGIFpath);
};
_local6.url = (_local6.url + ("?" + _arg2.toString()));
if (((_debug.active) && (_debug.GIFRequests))){
_debugSend(_local6);
} else {
sendRequest(_local6);
};
};
if ((((_config.serverMode == ServerOperationMode.remote)) || ((_config.serverMode == ServerOperationMode.both)))){
_local7 = new URLRequest();
if (_info.protocol == Protocols.HTTPS){
_local7.url = _config.secureRemoteGIFpath;
} else {
if (_info.protocol == Protocols.HTTP){
_local7.url = _config.remoteGIFpath;
} else {
_local7.url = _config.remoteGIFpath;
};
};
_arg2.utmac = utmac;
_arg2.utmcc = encodeURIComponent(utmcc);
_local7.url = (_local7.url + ("?" + _arg2.toString()));
if (((_debug.active) && (_debug.GIFRequests))){
_debugSend(_local7);
} else {
sendRequest(_local7);
};
};
};
};
}
public function onSecurityError(_arg1:SecurityErrorEvent):void{
if (_debug.GIFRequests){
_debug.failure(_arg1.text);
};
}
public function get utmsp():String{
return (((_config.sampleRate * 100) as String));
}
public function get utmcc():String{
var _local1:Array = [];
if (_buffer.hasUTMA()){
_local1.push((_buffer.utma.toURLString() + ";"));
};
if (_buffer.hasUTMZ()){
_local1.push((_buffer.utmz.toURLString() + ";"));
};
if (_buffer.hasUTMV()){
_local1.push((_buffer.utmv.toURLString() + ";"));
};
return (_local1.join("+"));
}
public function get utmac():String{
return (_utmac);
}
public function get utmwv():String{
return (_config.version);
}
public function sendRequest(_arg1:URLRequest):void{
var request = _arg1;
var loader:Loader = new Loader();
loader.name = String(_count++);
var context:LoaderContext = new LoaderContext(false);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
_lastRequest = request;
_requests[loader.name] = new RequestObject(request);
try {
loader.load(request, context);
} catch(e:Error) {
_debug.failure("\"Loader.load()\" could not instanciate Gif Request");
};
}
private function _removeListeners(_arg1:Object):void{
_arg1.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
_arg1.removeEventListener(Event.COMPLETE, onComplete);
}
public function updateToken():void{
var _local2:Number;
var _local1:Number = new Date().getTime();
_local2 = ((_local1 - _buffer.utmb.lastTime) * (_config.tokenRate / 1000));
if (_debug.verbose){
_debug.info(("tokenDelta: " + _local2), VisualDebugMode.geek);
};
if (_local2 >= 1){
_buffer.utmb.token = Math.min(Math.floor((_buffer.utmb.token + _local2)), _config.bucketCapacity);
_buffer.utmb.lastTime = _local1;
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
};
};
}
public function get utmhn():String{
return (_info.domainName);
}
private function _shortenURL(_arg1:String):String{
var _local2:Array;
if (_arg1.length > 60){
_local2 = _arg1.split("/");
while (_arg1.length > 60) {
_local2.shift();
_arg1 = ("../" + _local2.join("/"));
};
};
return (_arg1);
}
private function _debugSend(_arg1:URLRequest):void{
var _local3:String;
var _local2 = "";
switch (_debug.mode){
case VisualDebugMode.geek:
_local2 = ((("Gif Request #" + _alertcount) + ":\n") + _arg1.url);
break;
case VisualDebugMode.advanced:
_local3 = _arg1.url;
if (_local3.indexOf("?") > -1){
_local3 = _local3.split("?")[0];
};
_local3 = _shortenURL(_local3);
_local2 = (((("Send Gif Request #" + _alertcount) + ":\n") + _local3) + " ?");
break;
case VisualDebugMode.basic:
default:
_local2 = (((("Send " + _config.serverMode.toString()) + " Gif Request #") + _alertcount) + " ?");
};
_debug.alertGifRequest(_local2, _arg1, this);
_alertcount++;
}
public function onComplete(_arg1:Event):void{
var _local2:String = _arg1.target.loader.name;
_requests[_local2].complete();
var _local3 = (("Gif Request #" + _local2) + " sent");
var _local4:String = _requests[_local2].request.url;
if (_debug.GIFRequests){
if (!_debug.verbose){
if (_local4.indexOf("?") > -1){
_local4 = _local4.split("?")[0];
};
_local4 = _shortenURL(_local4);
};
if (int(_debug.mode) > int(VisualDebugMode.basic)){
_local3 = (_local3 + ((" to \"" + _local4) + "\""));
};
_debug.success(_local3);
} else {
_debug.info(_local3);
};
_removeListeners(_arg1.target);
}
}
}//package com.google.analytics.core
Section 48
//IdleTimer (com.google.analytics.core.IdleTimer)
package com.google.analytics.core {
import flash.display.*;
import flash.events.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.utils.*;
public class IdleTimer {
private var _stage:Stage;
private var _loop:Timer;
private var _lastMove:int;
private var _inactivity:Number;
private var _debug:DebugConfiguration;
private var _session:Timer;
private var _buffer:Buffer;
public function IdleTimer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:DisplayObject, _arg4:Buffer){
var _local5:Number = _arg1.idleLoop;
var _local6:Number = _arg1.idleTimeout;
var _local7:Number = _arg1.sessionTimeout;
_loop = new Timer((_local5 * 1000));
_session = new Timer((_local7 * 1000), 1);
_debug = _arg2;
_stage = _arg3.stage;
_buffer = _arg4;
_lastMove = getTimer();
_inactivity = (_local6 * 1000);
_loop.addEventListener(TimerEvent.TIMER, checkForIdle);
_session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession);
_stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
_debug.info(((((("delay: " + _local5) + "sec , inactivity: ") + _local6) + "sec, sessionTimeout: ") + _local7), VisualDebugMode.geek);
_loop.start();
}
private function onMouseMove(_arg1:MouseEvent):void{
_lastMove = getTimer();
if (_session.running){
_debug.info("session timer reset", VisualDebugMode.geek);
_session.reset();
};
}
public function endSession(_arg1:TimerEvent):void{
_session.removeEventListener(TimerEvent.TIMER_COMPLETE, endSession);
_debug.info("session timer end session", VisualDebugMode.geek);
_session.reset();
_buffer.resetCurrentSession();
_debug.info(_buffer.utmb.toString(), VisualDebugMode.geek);
_debug.info(_buffer.utmc.toString(), VisualDebugMode.geek);
_session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession);
}
public function checkForIdle(_arg1:TimerEvent):void{
var _local2:int = getTimer();
if ((_local2 - _lastMove) >= _inactivity){
if (!_session.running){
_debug.info("session timer start", VisualDebugMode.geek);
_session.start();
};
};
}
}
}//package com.google.analytics.core
Section 49
//Organic (com.google.analytics.core.Organic)
package com.google.analytics.core {
import com.google.analytics.utils.*;
public class Organic {
private var _sourcesCache:Array;
private var _sourcesEngine:Array;
private var _ignoredKeywords:Array;
private var _ignoredReferralsCache:Object;
private var _ignoredReferrals:Array;
private var _ignoredKeywordsCache:Object;
private var _sources:Array;
public static var throwErrors:Boolean = false;
public function Organic(){
_sources = [];
_sourcesCache = [];
_sourcesEngine = [];
_ignoredReferrals = [];
_ignoredReferralsCache = {};
_ignoredKeywords = [];
_ignoredKeywordsCache = {};
}
public function isIgnoredKeyword(_arg1:String):Boolean{
if (_ignoredKeywordsCache.hasOwnProperty(_arg1)){
return (true);
};
return (false);
}
public function getKeywordValue(_arg1:OrganicReferrer, _arg2:String):String{
var _local3:String = _arg1.keyword;
return (getKeywordValueFromPath(_local3, _arg2));
}
public function isIgnoredReferral(_arg1:String):Boolean{
if (_ignoredReferralsCache.hasOwnProperty(_arg1)){
return (true);
};
return (false);
}
public function clear():void{
clearEngines();
clearIgnoredReferrals();
clearIgnoredKeywords();
}
public function get count():int{
return (_sources.length);
}
public function get ignoredKeywordsCount():int{
return (_ignoredKeywords.length);
}
public function match(_arg1:String):Boolean{
if (_arg1 == ""){
return (false);
};
_arg1 = _arg1.toLowerCase();
if (_sourcesEngine[_arg1] != undefined){
return (true);
};
return (false);
}
public function clearIgnoredKeywords():void{
_ignoredKeywords = [];
_ignoredKeywordsCache = {};
}
public function addSource(_arg1:String, _arg2:String):void{
var _local3:OrganicReferrer = new OrganicReferrer(_arg1, _arg2);
if (_sourcesCache[_local3.toString()] == undefined){
_sources.push(_local3);
_sourcesCache[_local3.toString()] = (_sources.length - 1);
if (_sourcesEngine[_local3.engine] == undefined){
_sourcesEngine[_local3.engine] = [(_sources.length - 1)];
} else {
_sourcesEngine[_local3.engine].push((_sources.length - 1));
};
} else {
if (throwErrors){
throw (new Error((_local3.toString() + " already exists, we don't add it.")));
};
};
}
public function clearEngines():void{
_sources = [];
_sourcesCache = [];
_sourcesEngine = [];
}
public function get ignoredReferralsCount():int{
return (_ignoredReferrals.length);
}
public function addIgnoredReferral(_arg1:String):void{
if (_ignoredReferralsCache[_arg1] == undefined){
_ignoredReferrals.push(_arg1);
_ignoredReferralsCache[_arg1] = (_ignoredReferrals.length - 1);
} else {
if (throwErrors){
throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it.")));
};
};
}
public function clearIgnoredReferrals():void{
_ignoredReferrals = [];
_ignoredReferralsCache = {};
}
public function getReferrerByName(_arg1:String):OrganicReferrer{
var _local2:int;
if (match(_arg1)){
_local2 = _sourcesEngine[_arg1][0];
return (_sources[_local2]);
};
return (null);
}
public function addIgnoredKeyword(_arg1:String):void{
if (_ignoredKeywordsCache[_arg1] == undefined){
_ignoredKeywords.push(_arg1);
_ignoredKeywordsCache[_arg1] = (_ignoredKeywords.length - 1);
} else {
if (throwErrors){
throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it.")));
};
};
}
public function get sources():Array{
return (_sources);
}
public static function getKeywordValueFromPath(_arg1:String, _arg2:String):String{
var _local3:String;
var _local4:Variables;
if (_arg2.indexOf((_arg1 + "=")) > -1){
if (_arg2.charAt(0) == "?"){
_arg2 = _arg2.substr(1);
};
_arg2 = _arg2.split("+").join("%20");
_local4 = new Variables(_arg2);
_local3 = _local4[_arg1];
};
return (_local3);
}
}
}//package com.google.analytics.core
Section 50
//OrganicReferrer (com.google.analytics.core.OrganicReferrer)
package com.google.analytics.core {
public class OrganicReferrer {
private var _engine:String;
private var _keyword:String;
public function OrganicReferrer(_arg1:String, _arg2:String){
this.engine = _arg1;
this.keyword = _arg2;
}
public function get keyword():String{
return (_keyword);
}
public function get engine():String{
return (_engine);
}
public function set engine(_arg1:String):void{
_engine = _arg1.toLowerCase();
}
public function toString():String{
return (((engine + "?") + keyword));
}
public function set keyword(_arg1:String):void{
_keyword = _arg1.toLowerCase();
}
}
}//package com.google.analytics.core
Section 51
//RequestObject (com.google.analytics.core.RequestObject)
package com.google.analytics.core {
import flash.net.*;
import flash.utils.*;
public class RequestObject {
public var start:int;
public var end:int;
public var request:URLRequest;
public function RequestObject(_arg1:URLRequest){
start = getTimer();
this.request = _arg1;
}
public function hasCompleted():Boolean{
return ((end > 0));
}
public function toString():String{
var _local1:Array = [];
_local1.push((("duration: " + duration) + "ms"));
_local1.push(("url: " + request.url));
return ((("{ " + _local1.join(", ")) + " }"));
}
public function complete():void{
end = getTimer();
}
public function get duration():int{
if (!hasCompleted()){
return (0);
};
return ((end - start));
}
}
}//package com.google.analytics.core
Section 52
//ServerOperationMode (com.google.analytics.core.ServerOperationMode)
package com.google.analytics.core {
public class ServerOperationMode {
private var _value:int;
private var _name:String;
public static const both:ServerOperationMode = new ServerOperationMode(2, "both");
;
public static const remote:ServerOperationMode = new ServerOperationMode(1, "remote");
;
public static const local:ServerOperationMode = new ServerOperationMode(0, "local");
;
public function ServerOperationMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.core
Section 53
//TrackerCache (com.google.analytics.core.TrackerCache)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import flash.errors.*;
public class TrackerCache implements GoogleAnalyticsAPI {
public var tracker:GoogleAnalyticsAPI;
private var _ar:Array;
public static var CACHE_THROW_ERROR:Boolean;
public function TrackerCache(_arg1:GoogleAnalyticsAPI=null){
this.tracker = _arg1;
_ar = [];
}
public function size():uint{
return (_ar.length);
}
public function flush():void{
var _local1:Object;
var _local2:String;
var _local3:Array;
var _local4:int;
var _local5:int;
if (tracker == null){
return;
};
if (size() > 0){
_local4 = _ar.length;
while (_local5 < _local4) {
_local1 = _ar.shift();
_local2 = (_local1.name as String);
_local3 = (_local1.args as Array);
if (((!((_local2 == null))) && ((_local2 in tracker)))){
(tracker[_local2] as Function).apply(tracker, _local3);
};
_local5++;
};
};
}
public function enqueue(_arg1:String, ... _args):Boolean{
if (_arg1 == null){
return (false);
};
_ar.push({name:_arg1, args:_args});
return (true);
}
public function link(_arg1:String, _arg2:Boolean=false):void{
enqueue("link", _arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
enqueue("addOrganic", _arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
enqueue("setAllowLinker", _arg1);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
enqueue("trackEvent", _arg1, _arg2, _arg3, _arg4);
return (true);
}
public function getClientInfo():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getClientInfo' method for the moment."));
};
return (false);
}
public function trackTrans():void{
enqueue("trackTrans");
}
public function trackPageview(_arg1:String=""):void{
enqueue("trackPageview", _arg1);
}
public function setClientInfo(_arg1:Boolean):void{
enqueue("setClientInfo", _arg1);
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
enqueue("linkByPost", _arg1, _arg2);
}
public function setCookieTimeout(_arg1:int):void{
enqueue("setCookieTimeout", _arg1);
}
public function isEmpty():Boolean{
return ((_ar.length == 0));
}
public function getDetectTitle():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectTitle' method for the moment."));
};
return (false);
}
public function resetSession():void{
enqueue("resetSession");
}
public function setDetectFlash(_arg1:Boolean):void{
enqueue("setDetectFlash", _arg1);
}
public function clear():void{
_ar = [];
}
public function setCampNameKey(_arg1:String):void{
enqueue("setCampNameKey", _arg1);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
enqueue("addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
public function createEventTracker(_arg1:String):EventTracker{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'createEventTracker' method for the moment."));
};
return (null);
}
public function setVar(_arg1:String):void{
enqueue("setVar", _arg1);
}
public function clearIgnoredOrganic():void{
enqueue("clearIgnoredOrganic");
}
public function setDomainName(_arg1:String):void{
enqueue("setDomainName", _arg1);
}
public function setCampSourceKey(_arg1:String):void{
enqueue("setCampSourceKey", _arg1);
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'addTrans' method for the moment."));
};
return (null);
}
public function setCampContentKey(_arg1:String):void{
enqueue("setCampContentKey", _arg1);
}
public function setLocalServerMode():void{
enqueue("setLocalServerMode");
}
public function getLocalGifPath():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getLocalGifPath' method for the moment."));
};
return ("");
}
public function setAllowAnchor(_arg1:Boolean):void{
enqueue("setAllowAnchor", _arg1);
}
public function clearIgnoredRef():void{
enqueue("clearIgnoredRef");
}
public function setLocalGifPath(_arg1:String):void{
enqueue("setLocalGifPath", _arg1);
}
public function getVersion():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getVersion' method for the moment."));
};
return ("");
}
public function setCookiePath(_arg1:String):void{
enqueue("setCookiePath", _arg1);
}
public function setSampleRate(_arg1:Number):void{
enqueue("setSampleRate", _arg1);
}
public function setDetectTitle(_arg1:Boolean):void{
enqueue("setDetectTitle", _arg1);
}
public function setAllowHash(_arg1:Boolean):void{
enqueue("setAllowHash", _arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
enqueue("addIgnoredOrganic", _arg1);
}
public function setCampNOKey(_arg1:String):void{
enqueue("setCampNOKey", _arg1);
}
public function getServiceMode():ServerOperationMode{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getServiceMode' method for the moment."));
};
return (null);
}
public function setLocalRemoteServerMode():void{
enqueue("setLocalRemoteServerMode");
}
public function cookiePathCopy(_arg1:String):void{
enqueue("cookiePathCopy", _arg1);
}
public function getDetectFlash():Boolean{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectFlash' method for the moment."));
};
return (false);
}
public function setCampaignTrack(_arg1:Boolean):void{
enqueue("setCampaignTrack", _arg1);
}
public function clearOrganic():void{
enqueue("clearOrganic");
}
public function setCampTermKey(_arg1:String):void{
enqueue("setCampTermKey", _arg1);
}
public function addIgnoredRef(_arg1:String):void{
enqueue("addIgnoredRef", _arg1);
}
public function setCampMediumKey(_arg1:String):void{
enqueue("setCampMediumKey", _arg1);
}
public function setSessionTimeout(_arg1:int):void{
enqueue("setSessionTimeout", _arg1);
}
public function setRemoteServerMode():void{
enqueue("setRemoteServerMode");
}
public function element(){
return (_ar[0]);
}
public function getAccount():String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getAccount' method for the moment."));
};
return ("");
}
}
}//package com.google.analytics.core
Section 54
//TrackerMode (com.google.analytics.core.TrackerMode)
package com.google.analytics.core {
public class TrackerMode {
public static const BRIDGE:String = "Bridge";
public static const AS3:String = "AS3";
}
}//package com.google.analytics.core
Section 55
//Utils (com.google.analytics.core.Utils)
package com.google.analytics.core {
public class Utils {
public static function trim(_arg1:String, _arg2:Boolean=false):String{
var _local5:int;
var _local6:int;
var _local7:int;
if (_arg1 == ""){
return ("");
};
var _local3:Array = [" ", "\n", "\r", "\t"];
var _local4:String = _arg1;
if (_arg2){
_local5 = 0;
while ((((_local5 < _local3.length)) && ((_local4.indexOf(_local3[_local5]) > -1)))) {
_local4 = _local4.split(_local3[_local5]).join("");
_local5++;
};
} else {
_local6 = 0;
while ((((_local6 < _local4.length)) && ((_local3.indexOf(_local4.charAt(_local6)) > -1)))) {
_local6++;
};
_local4 = _local4.substr(_local6);
_local7 = (_local4.length - 1);
while ((((_local7 >= 0)) && ((_local3.indexOf(_local4.charAt(_local7)) > -1)))) {
_local7--;
};
_local4 = _local4.substring(0, (_local7 + 1));
};
return (_local4);
}
public static function generateHash(_arg1:String):int{
var _local4:int;
var _local5:int;
var _local2 = 1;
var _local3:int;
if (((!((_arg1 == null))) && (!((_arg1 == ""))))){
_local2 = 0;
_local4 = (_arg1.length - 1);
while (_local4 >= 0) {
_local5 = _arg1.charCodeAt(_local4);
_local2 = ((((_local2 << 6) & 268435455) + _local5) + (_local5 << 14));
_local3 = (_local2 & 266338304);
if (_local3 != 0){
_local2 = (_local2 ^ (_local3 >> 21));
};
_local4--;
};
};
return (_local2);
}
public static function generate32bitRandom():int{
return (Math.round((Math.random() * 2147483647)));
}
public static function validateAccount(_arg1:String):Boolean{
var _local2:RegExp = /^UA-[0-9]*-[0-9]*$/;
return (_local2.test(_arg1));
}
}
}//package com.google.analytics.core
Section 56
//Cookie (com.google.analytics.data.Cookie)
package com.google.analytics.data {
public interface Cookie {
function fromSharedObject(_arg1:Object):void;
function toURLString():String;
function get creation():Date;
function toSharedObject():Object;
function isExpired():Boolean;
function set creation(_arg1:Date):void;
function set expiration(_arg1:Date):void;
function get expiration():Date;
}
}//package com.google.analytics.data
Section 57
//UTMA (com.google.analytics.data.UTMA)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMA extends UTMCookie {
private var _sessionId:Number;
private var _domainHash:Number;
private var _firstTime:Number;
private var _currentTime:Number;
private var _lastTime:Number;
private var _sessionCount:Number;
public function UTMA(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:Number=NaN){
super("utma", "__utma", ["domainHash", "sessionId", "firstTime", "lastTime", "currentTime", "sessionCount"], (Timespan.twoyears * 1000));
this.domainHash = _arg1;
this.sessionId = _arg2;
this.firstTime = _arg3;
this.lastTime = _arg4;
this.currentTime = _arg5;
this.sessionCount = _arg6;
}
public function get lastTime():Number{
return (_lastTime);
}
public function set lastTime(_arg1:Number):void{
_lastTime = _arg1;
update();
}
public function set currentTime(_arg1:Number):void{
_currentTime = _arg1;
update();
}
public function get sessionId():Number{
return (_sessionId);
}
public function get sessionCount():Number{
return (_sessionCount);
}
public function get firstTime():Number{
return (_firstTime);
}
public function get currentTime():Number{
return (_currentTime);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set sessionId(_arg1:Number):void{
_sessionId = _arg1;
update();
}
public function set sessionCount(_arg1:Number):void{
_sessionCount = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
public function set firstTime(_arg1:Number):void{
_firstTime = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 58
//UTMB (com.google.analytics.data.UTMB)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMB extends UTMCookie {
private var _trackCount:Number;
private var _lastTime:Number;
private var _domainHash:Number;
private var _token:Number;
public static var defaultTimespan:Number = Timespan.thirtyminutes;
public function UTMB(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN){
super("utmb", "__utmb", ["domainHash", "trackCount", "token", "lastTime"], (defaultTimespan * 1000));
this.domainHash = _arg1;
this.trackCount = _arg2;
this.token = _arg3;
this.lastTime = _arg4;
}
public function set token(_arg1:Number):void{
_token = _arg1;
update();
}
public function set trackCount(_arg1:Number):void{
_trackCount = _arg1;
update();
}
public function get lastTime():Number{
return (_lastTime);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set lastTime(_arg1:Number):void{
_lastTime = _arg1;
update();
}
public function get domainHash():Number{
return (_domainHash);
}
public function get token():Number{
return (_token);
}
public function get trackCount():Number{
return (_trackCount);
}
}
}//package com.google.analytics.data
Section 59
//UTMC (com.google.analytics.data.UTMC)
package com.google.analytics.data {
public class UTMC extends UTMCookie {
private var _domainHash:Number;
public function UTMC(_arg1:Number=NaN){
super("utmc", "__utmc", ["domainHash"]);
this.domainHash = _arg1;
}
public function get domainHash():Number{
return (_domainHash);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 60
//UTMCookie (com.google.analytics.data.UTMCookie)
package com.google.analytics.data {
import com.google.analytics.core.*;
public class UTMCookie implements Cookie {
protected var inURL:String;
protected var name:String;
private var _creation:Date;
private var _expiration:Date;
public var proxy:Buffer;
protected var fields:Array;
private var _timespan:Number;
public function UTMCookie(_arg1:String, _arg2:String, _arg3:Array, _arg4:Number=0){
this.name = _arg1;
this.inURL = _arg2;
this.fields = _arg3;
_timestamp(_arg4);
}
public function isEmpty():Boolean{
var _local2:String;
var _local1:int;
var _local3:int;
while (_local3 < fields.length) {
_local2 = fields[_local3];
if ((((this[_local2] is Number)) && (isNaN(this[_local2])))){
_local1++;
} else {
if ((((this[_local2] is String)) && ((this[_local2] == "")))){
_local1++;
};
};
_local3++;
};
if (_local1 == fields.length){
return (true);
};
return (false);
}
public function resetTimestamp(_arg1:Number=NaN):void{
if (!isNaN(_arg1)){
_timespan = _arg1;
};
_creation = null;
_expiration = null;
_timestamp(_timespan);
}
protected function update():void{
resetTimestamp();
if (proxy){
proxy.update(name, toSharedObject());
};
}
public function reset():void{
var _local1:String;
var _local2:int;
while (_local2 < fields.length) {
_local1 = fields[_local2];
if ((this[_local1] is Number)){
this[_local1] = NaN;
} else {
if ((this[_local1] is String)){
this[_local1] = "";
};
};
_local2++;
};
resetTimestamp();
update();
}
public function fromSharedObject(_arg1:Object):void{
var _local2:String;
var _local3:int = fields.length;
var _local4:int;
while (_local4 < _local3) {
_local2 = fields[_local4];
if (_arg1[_local2]){
this[_local2] = _arg1[_local2];
};
_local4++;
};
if (_arg1.creation){
this.creation = _arg1.creation;
};
if (_arg1.expiration){
this.expiration = _arg1.expiration;
};
}
private function _timestamp(_arg1:Number):void{
creation = new Date();
_timespan = _arg1;
if (_arg1 > 0){
expiration = new Date((creation.valueOf() + _arg1));
};
}
public function isExpired():Boolean{
var _local1:Date = new Date();
var _local2:Number = (expiration.valueOf() - _local1.valueOf());
if (_local2 <= 0){
return (true);
};
return (false);
}
public function set expiration(_arg1:Date):void{
_expiration = _arg1;
}
public function get creation():Date{
return (_creation);
}
public function valueOf():String{
var _local2:String;
var _local3:*;
var _local1:Array = [];
var _local4:int;
while (_local4 < fields.length) {
_local2 = fields[_local4];
_local3 = this[_local2];
if ((_local3 is String)){
if (_local3 == ""){
_local3 = "-";
_local1.push(_local3);
} else {
_local1.push(_local3);
};
} else {
if ((_local3 is Number)){
if (_local3 == 0){
_local1.push(_local3);
} else {
if (isNaN(_local3)){
_local3 = "-";
_local1.push(_local3);
} else {
_local1.push(_local3);
};
};
};
};
_local4++;
};
return (("" + _local1.join(".")));
}
public function toURLString():String{
return (((inURL + "=") + valueOf()));
}
public function get expiration():Date{
if (_expiration){
return (_expiration);
};
return (new Date((new Date().valueOf() + 1000)));
}
public function toSharedObject():Object{
var _local2:String;
var _local3:*;
var _local1:Object = {};
var _local4:int;
for (;_local4 < fields.length;_local4++) {
_local2 = fields[_local4];
_local3 = this[_local2];
if ((_local3 is String)){
_local1[_local2] = _local3;
} else {
if (_local3 == 0){
_local1[_local2] = _local3;
} else {
if (isNaN(_local3)){
continue;
} else {
_local1[_local2] = _local3;
};
};
};
};
_local1.creation = creation;
_local1.expiration = expiration;
return (_local1);
}
public function toString(_arg1:Boolean=false):String{
var _local3:String;
var _local4:*;
var _local2:Array = [];
var _local5:int = fields.length;
var _local6:int;
for (;_local6 < _local5;_local6++) {
_local3 = fields[_local6];
_local4 = this[_local3];
if ((_local4 is String)){
_local2.push((((_local3 + ": \"") + _local4) + "\""));
} else {
if (_local4 == 0){
_local2.push(((_local3 + ": ") + _local4));
} else {
if (isNaN(_local4)){
continue;
} else {
_local2.push(((_local3 + ": ") + _local4));
};
};
};
};
var _local7 = (((name.toUpperCase() + " {") + _local2.join(", ")) + "}");
if (_arg1){
_local7 = (_local7 + (((" creation:" + creation) + ", expiration:") + expiration));
};
return (_local7);
}
public function set creation(_arg1:Date):void{
_creation = _arg1;
}
}
}//package com.google.analytics.data
Section 61
//UTMK (com.google.analytics.data.UTMK)
package com.google.analytics.data {
public class UTMK extends UTMCookie {
private var _hash:Number;
public function UTMK(_arg1:Number=NaN){
super("utmk", "__utmk", ["hash"]);
this.hash = _arg1;
}
public function set hash(_arg1:Number):void{
_hash = _arg1;
update();
}
public function get hash():Number{
return (_hash);
}
}
}//package com.google.analytics.data
Section 62
//UTMV (com.google.analytics.data.UTMV)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMV extends UTMCookie {
private var _domainHash:Number;
private var _value:String;
public function UTMV(_arg1:Number=NaN, _arg2:String=""){
super("utmv", "__utmv", ["domainHash", "value"], (Timespan.twoyears * 1000));
this.domainHash = _arg1;
this.value = _arg2;
}
override public function toURLString():String{
return (((inURL + "=") + encodeURI(valueOf())));
}
public function get value():String{
return (_value);
}
public function get domainHash():Number{
return (_domainHash);
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set value(_arg1:String):void{
_value = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 63
//UTMZ (com.google.analytics.data.UTMZ)
package com.google.analytics.data {
import com.google.analytics.utils.*;
public class UTMZ extends UTMCookie {
private var _campaignTracking:String;
private var _campaignCreation:Number;
private var _responseCount:Number;
private var _domainHash:Number;
private var _campaignSessions:Number;
public static var defaultTimespan:Number = Timespan.sixmonths;
public function UTMZ(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:String=""){
super("utmz", "__utmz", ["domainHash", "campaignCreation", "campaignSessions", "responseCount", "campaignTracking"], (defaultTimespan * 1000));
this.domainHash = _arg1;
this.campaignCreation = _arg2;
this.campaignSessions = _arg3;
this.responseCount = _arg4;
this.campaignTracking = _arg5;
}
public function set responseCount(_arg1:Number):void{
_responseCount = _arg1;
update();
}
public function set domainHash(_arg1:Number):void{
_domainHash = _arg1;
update();
}
public function set campaignCreation(_arg1:Number):void{
_campaignCreation = _arg1;
update();
}
public function get campaignTracking():String{
return (_campaignTracking);
}
public function get campaignSessions():Number{
return (_campaignSessions);
}
public function get domainHash():Number{
return (_domainHash);
}
public function get responseCount():Number{
return (_responseCount);
}
public function get campaignCreation():Number{
return (_campaignCreation);
}
public function set campaignSessions(_arg1:Number):void{
_campaignSessions = _arg1;
update();
}
public function set campaignTracking(_arg1:String):void{
_campaignTracking = _arg1;
update();
}
}
}//package com.google.analytics.data
Section 64
//X10 (com.google.analytics.data.X10)
package com.google.analytics.data {
public class X10 {
private var _delimEnd:String;// = ")"
private var _minimum:int;
private var _delimSet:String;// = "*"
private var _escapeChar:String;// = "'"
private var _delimBegin:String;// = "("
private var _delimNumValue:String;// = "!"
private var _key:String;// = "k"
private var _set:Array;
private var _hasData:int;
private var _escapeCharMap:Object;
private var _projectData:Object;
private var _value:String;// = "v"
public function X10(){
_set = [_key, _value];
super();
_projectData = {};
_escapeCharMap = {};
_escapeCharMap[_escapeChar] = "'0";
_escapeCharMap[_delimEnd] = "'1";
_escapeCharMap[_delimSet] = "'2";
_escapeCharMap[_delimNumValue] = "'3";
_minimum = 1;
}
private function _setInternal(_arg1:Number, _arg2:String, _arg3:Number, _arg4:String):void{
if (!hasProject(_arg1)){
_projectData[_arg1] = {};
};
if (_projectData[_arg1][_arg2] == undefined){
_projectData[_arg1][_arg2] = [];
};
_projectData[_arg1][_arg2][_arg3] = _arg4;
_hasData = (_hasData + 1);
}
private function _renderProject(_arg1:Object):String{
var _local4:int;
var _local5:Array;
var _local2 = "";
var _local3:Boolean;
var _local6:int = _set.length;
_local4 = 0;
while (_local4 < _local6) {
_local5 = _arg1[_set[_local4]];
if (_local5){
if (_local3){
_local2 = (_local2 + _set[_local4]);
};
_local2 = (_local2 + _renderDataType(_local5));
_local3 = false;
} else {
_local3 = true;
};
_local4++;
};
return (_local2);
}
public function hasProject(_arg1:Number):Boolean{
return (_projectData[_arg1]);
}
public function clearKey(_arg1:Number):void{
_clearInternal(_arg1, _key);
}
private function _renderDataType(_arg1:Array):String{
var _local3:String;
var _local4:int;
var _local2:Array = [];
_local4 = 0;
while (_local4 < _arg1.length) {
if (_arg1[_local4] != undefined){
_local3 = "";
if (((!((_local4 == _minimum))) && ((_arg1[(_local4 - 1)] == undefined)))){
_local3 = (_local3 + _local4.toString());
_local3 = (_local3 + _delimNumValue);
};
_local3 = (_local3 + _escapeExtensibleValue(_arg1[_local4]));
_local2.push(_local3);
};
_local4++;
};
return (((_delimBegin + _local2.join(_delimSet)) + _delimEnd));
}
public function getKey(_arg1:Number, _arg2:Number):String{
return ((_getInternal(_arg1, _key, _arg2) as String));
}
public function hasData():Boolean{
return ((_hasData > 0));
}
public function renderMergedUrlString(_arg1:X10=null):String{
var _local3:String;
if (!_arg1){
return (renderUrlString());
};
var _local2:Array = [_arg1.renderUrlString()];
for (_local3 in _projectData) {
if (((hasProject(Number(_local3))) && (!(_arg1.hasProject(Number(_local3)))))){
_local2.push((_local3 + _renderProject(_projectData[_local3])));
};
};
return (_local2.join(""));
}
public function setValue(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
if (((((!((Math.round(_arg3) == _arg3))) || (isNaN(_arg3)))) || ((_arg3 == Infinity)))){
return (false);
};
_setInternal(_arg1, _value, _arg2, _arg3.toString());
return (true);
}
public function renderUrlString():String{
var _local2:String;
var _local1:Array = [];
for (_local2 in _projectData) {
if (hasProject(Number(_local2))){
_local1.push((_local2 + _renderProject(_projectData[_local2])));
};
};
return (_local1.join(""));
}
private function _getInternal(_arg1:Number, _arg2:String, _arg3:Number):Object{
if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){
return (_projectData[_arg1][_arg2][_arg3]);
};
return (undefined);
}
public function setKey(_arg1:Number, _arg2:Number, _arg3:String):Boolean{
_setInternal(_arg1, _key, _arg2, _arg3);
return (true);
}
public function clearValue(_arg1:Number):void{
_clearInternal(_arg1, _value);
}
private function _clearInternal(_arg1:Number, _arg2:String):void{
var _local3:Boolean;
var _local4:int;
var _local5:int;
if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){
_projectData[_arg1][_arg2] = undefined;
_local3 = true;
_local5 = _set.length;
_local4 = 0;
while (_local4 < _local5) {
if (_projectData[_arg1][_set[_local4]] != undefined){
_local3 = false;
break;
};
_local4++;
};
if (_local3){
_projectData[_arg1] = undefined;
_hasData = (_hasData - 1);
};
};
}
public function getValue(_arg1:Number, _arg2:Number){
var _local3:* = _getInternal(_arg1, _value, _arg2);
if (_local3 == null){
return (null);
};
return (Number(_local3));
}
private function _escapeExtensibleValue(_arg1:String):String{
var _local3:int;
var _local4:String;
var _local5:String;
var _local2 = "";
_local3 = 0;
while (_local3 < _arg1.length) {
_local4 = _arg1.charAt(_local3);
_local5 = _escapeCharMap[_local4];
if (_local5){
_local2 = (_local2 + _local5);
} else {
_local2 = (_local2 + _local4);
};
_local3++;
};
return (_local2);
}
}
}//package com.google.analytics.data
Section 65
//_Style (com.google.analytics.debug._Style)
package com.google.analytics.debug {
import flash.net.*;
import flash.text.*;
public class _Style {
public var failureColor:uint;
public var borderColor:uint;
public var backgroundColor:uint;
private var _sheet:StyleSheet;
public var roundedCorner:uint;
public var warningColor:uint;
public var infoColor:uint;
public var alertColor:uint;
public var successColor:uint;
private var _loader:URLLoader;
private var _defaultSheet:String;
public function _Style(){
_sheet = new StyleSheet();
_loader = new URLLoader();
_init();
}
private function _parseSheet(_arg1:String):void{
_sheet.parseCSS(_arg1);
}
public function get sheet():StyleSheet{
return (_sheet);
}
private function _init():void{
_defaultSheet = "";
_defaultSheet = (_defaultSheet + "a{text-decoration: underline;}\n");
_defaultSheet = (_defaultSheet + ".uiLabel{color: #000000;font-family: Arial;font-size: 12;margin-left: 2;margin-right: 2;}\n");
_defaultSheet = (_defaultSheet + ".uiWarning{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlert{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiInfo{color: #000000;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiSuccess{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiFailure{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlertAction{color: #ffffff;text-align: center;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + ".uiAlertTitle{color: #ffffff;font-family: Arial;font-size: 16;font-weight: bold;margin-left: 6;margin-right: 6;}\n");
_defaultSheet = (_defaultSheet + "\n");
roundedCorner = 6;
backgroundColor = 0xCCCCCC;
borderColor = 0x555555;
infoColor = 16777113;
alertColor = 0xFFCC00;
warningColor = 0xCC0000;
successColor = 0xFF00;
failureColor = 0xFF0000;
_parseSheet(_defaultSheet);
}
}
}//package com.google.analytics.debug
Section 66
//Alert (com.google.analytics.debug.Alert)
package com.google.analytics.debug {
import flash.events.*;
public class Alert extends Label {
public var autoClose:Boolean;// = true
public var actionOnNextLine:Boolean;// = true
private var _actions:Array;
public function Alert(_arg1:String, _arg2:Array, _arg3:String="uiAlert", _arg4:uint=0, _arg5:Align=null, _arg6:Boolean=false, _arg7:Boolean=true){
if (_arg4 == 0){
_arg4 = Style.alertColor;
};
if (_arg5 == null){
_arg5 = Align.center;
};
super(_arg1, _arg3, _arg4, _arg5, _arg6);
this.selectable = true;
super.mouseChildren = true;
this.buttonMode = true;
this.mouseEnabled = true;
this.useHandCursor = true;
this.actionOnNextLine = _arg7;
_actions = [];
var _local8:int;
while (_local8 < _arg2.length) {
_arg2[_local8].container = this;
_actions.push(_arg2[_local8]);
_local8++;
};
}
private function _defineActions():void{
var _local3:AlertAction;
var _local1 = "";
if (actionOnNextLine){
_local1 = (_local1 + "\n");
} else {
_local1 = (_local1 + " |");
};
_local1 = (_local1 + " ");
var _local2:Array = [];
var _local4:int;
while (_local4 < _actions.length) {
_local3 = _actions[_local4];
_local2.push((((("<a href=\"event:" + _local3.activator) + "\">") + _local3.name) + "</a>"));
_local4++;
};
_local1 = (_local1 + _local2.join(" | "));
appendText(_local1, "uiAlertAction");
}
protected function isValidAction(_arg1:String):Boolean{
var _local2:int;
while (_local2 < _actions.length) {
if (_arg1 == _actions[_local2].activator){
return (true);
};
_local2++;
};
return (false);
}
override protected function layout():void{
super.layout();
_defineActions();
}
protected function getAction(_arg1:String):AlertAction{
var _local2:int;
while (_local2 < _actions.length) {
if (_arg1 == _actions[_local2].activator){
return (_actions[_local2]);
};
_local2++;
};
return (null);
}
protected function spaces(_arg1:int):String{
var _local2 = "";
var _local3 = " ";
var _local4:int;
while (_local4 < (_arg1 + 1)) {
_local2 = (_local2 + _local3);
_local4++;
};
return (_local2);
}
override public function onLink(_arg1:TextEvent):void{
var _local2:AlertAction;
if (isValidAction(_arg1.text)){
_local2 = getAction(_arg1.text);
if (_local2){
_local2.execute();
};
};
if (autoClose){
close();
};
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 67
//AlertAction (com.google.analytics.debug.AlertAction)
package com.google.analytics.debug {
public class AlertAction {
public var container:Alert;
private var _callback;
public var activator:String;
public var name:String;
public function AlertAction(_arg1:String, _arg2:String, _arg3){
this.name = _arg1;
this.activator = _arg2;
_callback = _arg3;
}
public function execute():void{
if (_callback){
if ((_callback is Function)){
(_callback as Function)();
} else {
if ((_callback is String)){
var _local1 = container;
_local1[_callback]();
};
};
};
}
}
}//package com.google.analytics.debug
Section 68
//Align (com.google.analytics.debug.Align)
package com.google.analytics.debug {
public class Align {
private var _value:int;
private var _name:String;
public static const bottomRight:Align = new Align(18, "bottomRight");
;
public static const right:Align = new Align(16, "right");
;
public static const left:Align = new Align(32, "left");
;
public static const topRight:Align = new Align(17, "topRight");
;
public static const bottom:Align = new Align(2, "bottom");
;
public static const bottomLeft:Align = new Align(34, "bottomLeft");
;
public static const topLeft:Align = new Align(33, "topLeft");
;
public static const center:Align = new Align(0x0100, "center");
;
public static const none:Align = new Align(0, "none");
;
public static const top:Align = new Align(1, "top");
;
public function Align(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.debug
Section 69
//Background (com.google.analytics.debug.Background)
package com.google.analytics.debug {
import flash.display.*;
public class Background {
public static function drawRounded(_arg1, _arg2:Graphics, _arg3:uint=0, _arg4:uint=0):void{
var _local5:uint;
var _local6:uint;
var _local7:uint = Style.roundedCorner;
if ((((_arg3 > 0)) && ((_arg4 > 0)))){
_local5 = _arg3;
_local6 = _arg4;
} else {
_local5 = _arg1.width;
_local6 = _arg1.height;
};
if (((_arg1.stickToEdge) && (!((_arg1.alignement == Align.none))))){
switch (_arg1.alignement){
case Align.top:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, _local7);
break;
case Align.topLeft:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, 0, _local7);
break;
case Align.topRight:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, 0);
break;
case Align.bottom:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, _local7, 0, 0);
break;
case Align.bottomLeft:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, 0);
break;
case Align.bottomRight:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, 0, 0);
break;
case Align.left:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, _local7);
break;
case Align.right:
_arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, _local7, 0);
break;
case Align.center:
_arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7);
break;
};
} else {
_arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7);
};
}
}
}//package com.google.analytics.debug
Section 70
//Debug (com.google.analytics.debug.Debug)
package com.google.analytics.debug {
import flash.events.*;
import flash.ui.*;
public class Debug extends Label {
private var _lines:Array;
private var _preferredForcedWidth:uint;// = 540
private var _linediff:int;// = 0
public var maxLines:uint;// = 16
public static var count:uint = 0;
public function Debug(_arg1:uint=0, _arg2:Align=null, _arg3:Boolean=false){
if (_arg2 == null){
_arg2 = Align.bottom;
};
super("", "uiLabel", _arg1, _arg2, _arg3);
this.name = ("Debug" + count++);
_lines = [];
selectable = true;
addEventListener(KeyboardEvent.KEY_DOWN, onKey);
}
public function writeBold(_arg1:String):void{
write(_arg1, true);
}
private function _getLinesToDisplay(_arg1:int=0):Array{
var _local2:Array;
var _local3:uint;
var _local4:uint;
if ((_lines.length - 1) > maxLines){
if ((_linediff <= 0)){
_linediff = (_linediff + _arg1);
} else {
if ((((_linediff > 0)) && ((_arg1 < 0)))){
_linediff = (_linediff + _arg1);
};
};
_local3 = ((_lines.length - maxLines) + _linediff);
_local4 = (_local3 + maxLines);
_local2 = _lines.slice(_local3, _local4);
} else {
_local2 = _lines;
};
return (_local2);
}
private function onKey(_arg1:KeyboardEvent=null):void{
var _local2:Array;
switch (_arg1.keyCode){
case Keyboard.DOWN:
_local2 = _getLinesToDisplay(1);
break;
case Keyboard.UP:
_local2 = _getLinesToDisplay(-1);
break;
default:
_local2 = null;
};
if (_local2 == null){
return;
};
text = _local2.join("\n");
}
override public function get forcedWidth():uint{
if (this.parent){
if (UISprite(this.parent).forcedWidth > _preferredForcedWidth){
return (_preferredForcedWidth);
};
return (UISprite(this.parent).forcedWidth);
//unresolved jump
};
return (super.forcedWidth);
}
public function write(_arg1:String, _arg2:Boolean=false):void{
var _local3:Array;
if (_arg1.indexOf("") > -1){
_local3 = _arg1.split("\n");
} else {
_local3 = [_arg1];
};
var _local4 = "";
var _local5 = "";
if (_arg2){
_local4 = "<b>";
_local5 = "</b>";
};
var _local6:int;
while (_local6 < _local3.length) {
_lines.push(((_local4 + _local3[_local6]) + _local5));
_local6++;
};
var _local7:Array = _getLinesToDisplay();
text = _local7.join("\n");
}
public function close():void{
dispose();
}
override protected function dispose():void{
removeEventListener(KeyboardEvent.KEY_DOWN, onKey);
super.dispose();
}
}
}//package com.google.analytics.debug
Section 71
//DebugConfiguration (com.google.analytics.debug.DebugConfiguration)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.net.*;
import flash.utils.*;
import flash.ui.*;
public class DebugConfiguration {
public var showHideKey:Number;
private var _mode:VisualDebugMode;
private var _verbose:Boolean;// = false
public var destroyKey:Number;
public var GIFRequests:Boolean;// = false
public var showInfos:Boolean;// = true
public var infoTimeout:Number;// = 1000
public var minimizedOnStart:Boolean;// = false
private var _active:Boolean;// = false
public var traceOutput:Boolean;// = false
public var layout:ILayout;
public var warningTimeout:Number;// = 1500
public var javascript:Boolean;// = false
public var showWarnings:Boolean;// = true
private var _visualInitialized:Boolean;// = false
public function DebugConfiguration(){
_mode = VisualDebugMode.basic;
showHideKey = Keyboard.SPACE;
destroyKey = Keyboard.BACKSPACE;
super();
}
public function get verbose():Boolean{
return (_verbose);
}
public function set verbose(_arg1:Boolean):void{
_verbose = _arg1;
}
public function set mode(_arg1):void{
if ((_arg1 is String)){
switch (_arg1){
case "geek":
_arg1 = VisualDebugMode.geek;
break;
case "advanced":
_arg1 = VisualDebugMode.advanced;
break;
case "basic":
default:
_arg1 = VisualDebugMode.basic;
};
};
_mode = _arg1;
}
public function success(_arg1:String):void{
if (layout){
layout.createSuccessAlert(_arg1);
};
if (traceOutput){
trace((("[+] " + _arg1) + " !!"));
};
}
public function get active():Boolean{
return (_active);
}
private function _initializeVisual():void{
if (layout){
layout.init();
_visualInitialized = true;
};
}
private function _destroyVisual():void{
if (((layout) && (_visualInitialized))){
layout.destroy();
};
}
public function warning(_arg1:String, _arg2:VisualDebugMode=null):void{
if (_filter(_arg2)){
return;
};
if (((layout) && (showWarnings))){
layout.createWarning(_arg1);
};
if (traceOutput){
trace((("## " + _arg1) + " ##"));
};
}
private function _filter(_arg1:VisualDebugMode=null):Boolean{
return (((_arg1) && ((int(_arg1) >= int(this.mode)))));
}
public function failure(_arg1:String):void{
if (layout){
layout.createFailureAlert(_arg1);
};
if (traceOutput){
trace((("[-] " + _arg1) + " !!"));
};
}
public function get mode(){
return (_mode);
}
public function set active(_arg1:Boolean):void{
_active = _arg1;
if (_active){
_initializeVisual();
} else {
_destroyVisual();
};
}
protected function trace(_arg1:String):void{
var _local7:Array;
var _local8:int;
var _local2:Array = [];
var _local3 = "";
var _local4 = "";
if (this.mode == VisualDebugMode.geek){
_local3 = (getTimer() + " - ");
_local4 = (new Array(_local3.length).join(" ") + " ");
};
if (_arg1.indexOf("\n") > -1){
_local7 = _arg1.split("\n");
_local8 = 0;
while (_local8 < _local7.length) {
if (_local7[_local8] == ""){
} else {
if (_local8 == 0){
_local2.push((_local3 + _local7[_local8]));
} else {
_local2.push((_local4 + _local7[_local8]));
};
};
_local8++;
};
} else {
_local2.push((_local3 + _arg1));
};
var _local5:int = _local2.length;
var _local6:int;
while (_local6 < _local5) {
trace(_local2[_local6]);
_local6++;
};
}
public function alert(_arg1:String):void{
if (layout){
layout.createAlert(_arg1);
};
if (traceOutput){
trace((("!! " + _arg1) + " !!"));
};
}
public function info(_arg1:String, _arg2:VisualDebugMode=null):void{
if (_filter(_arg2)){
return;
};
if (((layout) && (showInfos))){
layout.createInfo(_arg1);
};
if (traceOutput){
trace(_arg1);
};
}
public function alertGifRequest(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{
if (layout){
layout.createGIFRequestAlert(_arg1, _arg2, _arg3);
};
if (traceOutput){
trace(((">> " + _arg1) + " <<"));
};
}
}
}//package com.google.analytics.debug
Section 72
//FailureAlert (com.google.analytics.debug.FailureAlert)
package com.google.analytics.debug {
public class FailureAlert extends Alert {
public function FailureAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){
var _local4:Align = Align.bottomLeft;
var _local5:Boolean;
var _local6:Boolean;
if (_arg1.verbose){
_arg2 = ((("<u><span class=\"uiAlertTitle\">Failure</span>" + spaces(18)) + "</u>\n\n") + _arg2);
_local4 = Align.center;
_local5 = false;
_local6 = true;
};
super(_arg2, _arg3, "uiFailure", Style.failureColor, _local4, _local5, _local6);
}
}
}//package com.google.analytics.debug
Section 73
//GIFRequestAlert (com.google.analytics.debug.GIFRequestAlert)
package com.google.analytics.debug {
public class GIFRequestAlert extends Alert {
public function GIFRequestAlert(_arg1:String, _arg2:Array){
super(_arg1, _arg2);
}
}
}//package com.google.analytics.debug
Section 74
//ILayout (com.google.analytics.debug.ILayout)
package com.google.analytics.debug {
import flash.display.*;
import com.google.analytics.core.*;
import flash.net.*;
public interface ILayout {
function createAlert(_arg1:String):void;
function addToStage(_arg1:DisplayObject):void;
function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void;
function createWarning(_arg1:String):void;
function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void;
function createInfo(_arg1:String):void;
function createFailureAlert(_arg1:String):void;
function addToPanel(_arg1:String, _arg2:DisplayObject):void;
function init():void;
function createSuccessAlert(_arg1:String):void;
function createVisualDebug():void;
function destroy():void;
function bringToFront(_arg1:DisplayObject):void;
function isAvailable():Boolean;
}
}//package com.google.analytics.debug
Section 75
//Info (com.google.analytics.debug.Info)
package com.google.analytics.debug {
import flash.events.*;
import flash.utils.*;
public class Info extends Label {
private var _timer:Timer;
public function Info(_arg1:String="", _arg2:uint=3000){
super(_arg1, "uiInfo", Style.infoColor, Align.top, true);
if (_arg2 > 0){
_timer = new Timer(_arg2, 1);
_timer.start();
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true);
};
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
override public function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "hide":
close();
break;
};
}
public function onComplete(_arg1:TimerEvent):void{
close();
}
}
}//package com.google.analytics.debug
Section 76
//Label (com.google.analytics.debug.Label)
package com.google.analytics.debug {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class Label extends UISprite {
private var _color:uint;
private var _background:Shape;
private var _textField:TextField;
public var stickToEdge:Boolean;
private var _text:String;
protected var selectable:Boolean;
private var _tag:String;
public static var count:uint = 0;
public function Label(_arg1:String="", _arg2:String="uiLabel", _arg3:uint=0, _arg4:Align=null, _arg5:Boolean=false){
this.name = ("Label" + count++);
selectable = false;
_background = new Shape();
_textField = new TextField();
_text = _arg1;
_tag = _arg2;
if (_arg4 == null){
_arg4 = Align.none;
};
this.alignement = _arg4;
this.stickToEdge = _arg5;
if (_arg3 == 0){
_arg3 = Style.backgroundColor;
};
_color = _arg3;
_textField.addEventListener(TextEvent.LINK, onLink);
}
public function get tag():String{
return (_tag);
}
private function _draw():void{
var _local1:Graphics = _background.graphics;
_local1.clear();
_local1.beginFill(_color);
var _local2:uint = _textField.width;
var _local3:uint = _textField.height;
if (forcedWidth > 0){
_local2 = forcedWidth;
};
Background.drawRounded(this, _local1, _local2, _local3);
_local1.endFill();
}
public function get text():String{
return (_textField.text);
}
public function appendText(_arg1:String, _arg2:String=""):void{
if (_arg1 == ""){
return;
};
if (_arg2 == ""){
_arg2 = tag;
};
_textField.htmlText = (_textField.htmlText + (((("<span class=\"" + _arg2) + "\">") + _arg1) + "</span>"));
_text = (_text + _arg1);
_draw();
resize();
}
public function set text(_arg1:String):void{
if (_arg1 == ""){
_arg1 = _text;
};
_textField.htmlText = (((("<span class=\"" + tag) + "\">") + _arg1) + "</span>");
_text = _arg1;
_draw();
resize();
}
override protected function layout():void{
_textField.type = TextFieldType.DYNAMIC;
_textField.autoSize = TextFieldAutoSize.LEFT;
_textField.background = false;
_textField.selectable = selectable;
_textField.multiline = true;
_textField.styleSheet = Style.sheet;
this.text = _text;
addChild(_background);
addChild(_textField);
}
public function set tag(_arg1:String):void{
_tag = _arg1;
text = "";
}
public function onLink(_arg1:TextEvent):void{
}
override protected function dispose():void{
_textField.removeEventListener(TextEvent.LINK, onLink);
super.dispose();
}
}
}//package com.google.analytics.debug
Section 77
//Layout (com.google.analytics.debug.Layout)
package com.google.analytics.debug {
import flash.display.*;
import flash.events.*;
import com.google.analytics.core.*;
import flash.net.*;
import com.google.analytics.*;
public class Layout implements ILayout {
private var _display:DisplayObject;
private var _infoQueue:Array;
private var _maxCharPerLine:int;// = 85
private var _hasInfo:Boolean;
private var _warningQueue:Array;
private var _hasDebug:Boolean;
private var _hasWarning:Boolean;
private var _mainPanel:Panel;
private var _GRAlertQueue:Array;
private var _debug:DebugConfiguration;
public var visualDebug:Debug;
private var _hasGRAlert:Boolean;
public function Layout(_arg1:DebugConfiguration, _arg2:DisplayObject){
_display = _arg2;
_debug = _arg1;
_hasWarning = false;
_hasInfo = false;
_hasDebug = false;
_hasGRAlert = false;
_warningQueue = [];
_infoQueue = [];
_GRAlertQueue = [];
}
private function onKey(_arg1:KeyboardEvent=null):void{
switch (_arg1.keyCode){
case _debug.showHideKey:
_mainPanel.visible = !(_mainPanel.visible);
break;
case _debug.destroyKey:
destroy();
break;
};
}
public function createWarning(_arg1:String):void{
if (((_hasWarning) || (!(isAvailable())))){
_warningQueue.push(_arg1);
return;
};
_arg1 = _filterMaxChars(_arg1);
_hasWarning = true;
var _local2:Warning = new Warning(_arg1, _debug.warningTimeout);
addToPanel("analytics", _local2);
_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearWarning, false, 0, true);
if (_hasDebug){
visualDebug.writeBold(_arg1);
};
}
public function bringToFront(_arg1:DisplayObject):void{
_display.stage.setChildIndex(_arg1, (_display.stage.numChildren - 1));
}
public function createFailureAlert(_arg1:String):void{
var _local2:AlertAction;
if (_debug.verbose){
_arg1 = _filterMaxChars(_arg1);
_local2 = new AlertAction("Close", "close", "close");
} else {
_local2 = new AlertAction("X", "close", "close");
};
var _local3:Alert = new FailureAlert(_debug, _arg1, [_local2]);
addToPanel("analytics", _local3);
if (_hasDebug){
if (_debug.verbose){
_arg1 = _arg1.split("\n").join("");
_arg1 = _filterMaxChars(_arg1, 66);
};
visualDebug.writeBold(_arg1);
};
}
public function init():void{
var _local1 = 10;
var _local2:uint = (_display.stage.stageWidth - (_local1 * 2));
var _local3:uint = (_display.stage.stageHeight - (_local1 * 2));
var _local4:Panel = new Panel("analytics", _local2, _local3);
_local4.alignement = Align.top;
_local4.stickToEdge = false;
_local4.title = ("Google Analytics v" + GATracker.version);
_mainPanel = _local4;
addToStage(_local4);
bringToFront(_local4);
if (_debug.minimizedOnStart){
_mainPanel.onToggle();
};
createVisualDebug();
_display.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey, false, 0, true);
}
public function addToPanel(_arg1:String, _arg2:DisplayObject):void{
var _local4:Panel;
var _local3:DisplayObject = _display.stage.getChildByName(_arg1);
if (_local3){
_local4 = (_local3 as Panel);
_local4.addData(_arg2);
} else {
trace((("panel \"" + _arg1) + "\" not found"));
};
}
private function _clearInfo(_arg1:Event):void{
_hasInfo = false;
if (_infoQueue.length > 0){
createInfo(_infoQueue.shift());
};
}
private function _filterMaxChars(_arg1:String, _arg2:int=0):String{
var _local6:String;
var _local3 = "\n";
var _local4:Array = [];
var _local5:Array = _arg1.split(_local3);
if (_arg2 == 0){
_arg2 = _maxCharPerLine;
};
var _local7:int;
while (_local7 < _local5.length) {
_local6 = _local5[_local7];
while (_local6.length > _arg2) {
_local4.push(_local6.substr(0, _arg2));
_local6 = _local6.substring(_arg2);
};
_local4.push(_local6);
_local7++;
};
return (_local4.join(_local3));
}
private function _clearGRAlert(_arg1:Event):void{
_hasGRAlert = false;
if (_GRAlertQueue.length > 0){
createGIFRequestAlert.apply(this, _GRAlertQueue.shift());
};
}
public function createSuccessAlert(_arg1:String):void{
var _local2:AlertAction;
if (_debug.verbose){
_arg1 = _filterMaxChars(_arg1);
_local2 = new AlertAction("Close", "close", "close");
} else {
_local2 = new AlertAction("X", "close", "close");
};
var _local3:Alert = new SuccessAlert(_debug, _arg1, [_local2]);
addToPanel("analytics", _local3);
if (_hasDebug){
if (_debug.verbose){
_arg1 = _arg1.split("\n").join("");
_arg1 = _filterMaxChars(_arg1, 66);
};
visualDebug.writeBold(_arg1);
};
}
public function isAvailable():Boolean{
return (!((_display.stage == null)));
}
public function createAlert(_arg1:String):void{
_arg1 = _filterMaxChars(_arg1);
var _local2:Alert = new Alert(_arg1, [new AlertAction("Close", "close", "close")]);
addToPanel("analytics", _local2);
if (_hasDebug){
visualDebug.writeBold(_arg1);
};
}
public function createInfo(_arg1:String):void{
if (((_hasInfo) || (!(isAvailable())))){
_infoQueue.push(_arg1);
return;
};
_arg1 = _filterMaxChars(_arg1);
_hasInfo = true;
var _local2:Info = new Info(_arg1, _debug.infoTimeout);
addToPanel("analytics", _local2);
_local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearInfo, false, 0, true);
if (_hasDebug){
visualDebug.write(_arg1);
};
}
public function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{
var message = _arg1;
var request = _arg2;
var ref = _arg3;
if (_hasGRAlert){
_GRAlertQueue.push([message, request, ref]);
return;
};
_hasGRAlert = true;
var f:Function = function ():void{
ref.sendRequest(request);
};
message = _filterMaxChars(message);
var gra:GIFRequestAlert = new GIFRequestAlert(message, [new AlertAction("OK", "ok", f), new AlertAction("Cancel", "cancel", "close")]);
addToPanel("analytics", gra);
gra.addEventListener(Event.REMOVED_FROM_STAGE, _clearGRAlert, false, 0, true);
if (_hasDebug){
if (_debug.verbose){
message = message.split("\n").join("");
message = _filterMaxChars(message, 66);
};
visualDebug.write(message);
};
}
public function createVisualDebug():void{
if (!visualDebug){
visualDebug = new Debug();
visualDebug.alignement = Align.bottom;
visualDebug.stickToEdge = true;
addToPanel("analytics", visualDebug);
_hasDebug = true;
};
}
public function addToStage(_arg1:DisplayObject):void{
_display.stage.addChild(_arg1);
}
private function _clearWarning(_arg1:Event):void{
_hasWarning = false;
if (_warningQueue.length > 0){
createWarning(_warningQueue.shift());
};
}
public function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void{
var _local4:Panel = new Panel(_arg1, _arg2, _arg3);
_local4.alignement = Align.center;
_local4.stickToEdge = false;
addToStage(_local4);
bringToFront(_local4);
}
public function destroy():void{
_mainPanel.close();
_debug.layout = null;
}
}
}//package com.google.analytics.debug
Section 78
//Margin (com.google.analytics.debug.Margin)
package com.google.analytics.debug {
public class Margin {
public var top:int;
public var left:int;
public var bottom:int;
public var right:int;
public function Margin(_arg1:int=0, _arg2:int=0, _arg3:int=0, _arg4:int=0){
this.top = _arg1;
this.bottom = _arg2;
this.left = _arg3;
this.right = _arg4;
}
}
}//package com.google.analytics.debug
Section 79
//Panel (com.google.analytics.debug.Panel)
package com.google.analytics.debug {
import flash.display.*;
import flash.events.*;
public class Panel extends UISprite {
private var _savedH:uint;
private var _data:UISprite;
private var _mask:Sprite;
private var _background:Shape;
private var _savedW:uint;
private var _stickToEdge:Boolean;
private var _border:Shape;
private var _borderColor:uint;
protected var baseAlpha:Number;
private var _backgroundColor:uint;
private var _title:Label;
private var _colapsed:Boolean;
private var _name:String;
public function Panel(_arg1:String, _arg2:uint, _arg3:uint, _arg4:uint=0, _arg5:uint=0, _arg6:Number=0.3, _arg7:Align=null, _arg8:Boolean=false){
_name = _arg1;
this.name = _arg1;
this.mouseEnabled = false;
_colapsed = false;
forcedWidth = _arg2;
forcedHeight = _arg3;
this.baseAlpha = _arg6;
_background = new Shape();
_data = new UISprite();
_data.forcedWidth = _arg2;
_data.forcedHeight = _arg3;
_data.mouseEnabled = false;
_title = new Label(_arg1, "uiLabel", 0xFFFFFF, Align.topLeft, _arg8);
_title.buttonMode = true;
_title.margin.top = 0.6;
_title.margin.left = 0.6;
_title.addEventListener(MouseEvent.CLICK, onToggle);
_title.mouseChildren = false;
_border = new Shape();
_mask = new Sprite();
_mask.useHandCursor = false;
_mask.mouseEnabled = false;
_mask.mouseChildren = false;
if (_arg7 == null){
_arg7 = Align.none;
};
this.alignement = _arg7;
this.stickToEdge = _arg8;
if (_arg4 == 0){
_arg4 = Style.backgroundColor;
};
_backgroundColor = _arg4;
if (_arg5 == 0){
_arg5 = Style.borderColor;
};
_borderColor = _arg5;
}
public function get stickToEdge():Boolean{
return (_stickToEdge);
}
public function onToggle(_arg1:MouseEvent=null):void{
if (_colapsed){
_data.visible = true;
} else {
_data.visible = false;
};
_colapsed = !(_colapsed);
_update();
resize();
}
public function set stickToEdge(_arg1:Boolean):void{
_stickToEdge = _arg1;
_title.stickToEdge = _arg1;
}
override protected function dispose():void{
_title.removeEventListener(MouseEvent.CLICK, onToggle);
super.dispose();
}
private function _draw():void{
var _local1:uint;
var _local2:uint;
if (((_savedW) && (_savedH))){
forcedWidth = _savedW;
forcedHeight = _savedH;
};
if (!_colapsed){
_local1 = forcedWidth;
_local2 = forcedHeight;
} else {
_local1 = _title.width;
_local2 = _title.height;
_savedW = forcedWidth;
_savedH = forcedHeight;
forcedWidth = _local1;
forcedHeight = _local2;
};
var _local3:Graphics = _background.graphics;
_local3.clear();
_local3.beginFill(_backgroundColor);
Background.drawRounded(this, _local3, _local1, _local2);
_local3.endFill();
var _local4:Graphics = _data.graphics;
_local4.clear();
_local4.beginFill(_backgroundColor, 0);
Background.drawRounded(this, _local4, _local1, _local2);
_local4.endFill();
var _local5:Graphics = _border.graphics;
_local5.clear();
_local5.lineStyle(0.1, _borderColor);
Background.drawRounded(this, _local5, _local1, _local2);
_local5.endFill();
var _local6:Graphics = _mask.graphics;
_local6.clear();
_local6.beginFill(_backgroundColor);
Background.drawRounded(this, _local6, (_local1 + 1), (_local2 + 1));
_local6.endFill();
}
public function get title():String{
return (_title.text);
}
private function _update():void{
_draw();
if (baseAlpha < 1){
_background.alpha = baseAlpha;
_border.alpha = baseAlpha;
};
}
public function addData(_arg1:DisplayObject):void{
_data.addChild(_arg1);
}
override protected function layout():void{
_update();
addChild(_background);
addChild(_data);
addChild(_title);
addChild(_border);
addChild(_mask);
mask = _mask;
}
public function set title(_arg1:String):void{
_title.text = _arg1;
}
public function close():void{
dispose();
if (parent != null){
parent.removeChild(this);
};
}
}
}//package com.google.analytics.debug
Section 80
//Style (com.google.analytics.debug.Style)
package com.google.analytics.debug {
public const Style:_Style = new _Style();
}//package com.google.analytics.debug
Section 81
//SuccessAlert (com.google.analytics.debug.SuccessAlert)
package com.google.analytics.debug {
public class SuccessAlert extends Alert {
public function SuccessAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){
var _local4:Align = Align.bottomLeft;
var _local5:Boolean;
var _local6:Boolean;
if (_arg1.verbose){
_arg2 = ((("<u><span class=\"uiAlertTitle\">Success</span>" + spaces(18)) + "</u>\n\n") + _arg2);
_local4 = Align.center;
_local5 = false;
_local6 = true;
};
super(_arg2, _arg3, "uiSuccess", Style.successColor, _local4, _local5, _local6);
}
}
}//package com.google.analytics.debug
Section 82
//UISprite (com.google.analytics.debug.UISprite)
package com.google.analytics.debug {
import flash.display.*;
import flash.events.*;
public class UISprite extends Sprite {
private var _forcedWidth:uint;
public var margin:Margin;
protected var alignTarget:DisplayObject;
protected var listenResize:Boolean;
public var alignement:Align;
private var _forcedHeight:uint;
public function UISprite(_arg1:DisplayObject=null){
listenResize = false;
alignement = Align.none;
this.alignTarget = _arg1;
margin = new Margin();
addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
addEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage);
}
public function get forcedHeight():uint{
if (_forcedHeight){
return (_forcedHeight);
};
return (height);
}
private function _onAddedToStage(_arg1:Event):void{
layout();
resize();
}
protected function dispose():void{
var _local1:DisplayObject;
var _local2:int;
while (_local2 < numChildren) {
_local1 = getChildAt(_local2);
if (_local1){
removeChild(_local1);
};
_local2++;
};
}
public function set forcedHeight(_arg1:uint):void{
_forcedHeight = _arg1;
}
public function set forcedWidth(_arg1:uint):void{
_forcedWidth = _arg1;
}
protected function layout():void{
}
public function get forcedWidth():uint{
if (_forcedWidth){
return (_forcedWidth);
};
return (width);
}
public function alignTo(_arg1:Align, _arg2:DisplayObject=null):void{
var _local3:uint;
var _local4:uint;
var _local5:uint;
var _local6:uint;
var _local7:UISprite;
if (_arg2 == null){
if ((parent is Stage)){
_arg2 = this.stage;
} else {
_arg2 = parent;
};
};
if (_arg2 == this.stage){
if (this.stage == null){
return;
};
_local3 = this.stage.stageHeight;
_local4 = this.stage.stageWidth;
_local5 = 0;
_local6 = 0;
} else {
_local7 = (_arg2 as UISprite);
if (_local7.forcedHeight){
_local3 = _local7.forcedHeight;
} else {
_local3 = _local7.height;
};
if (_local7.forcedWidth){
_local4 = _local7.forcedWidth;
} else {
_local4 = _local7.width;
};
_local5 = 0;
_local6 = 0;
};
switch (_arg1){
case Align.top:
x = ((_local4 / 2) - (forcedWidth / 2));
y = (_local6 + margin.top);
break;
case Align.bottom:
x = ((_local4 / 2) - (forcedWidth / 2));
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
case Align.left:
x = (_local5 + margin.left);
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.right:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.center:
x = ((_local4 / 2) - (forcedWidth / 2));
y = ((_local3 / 2) - (forcedHeight / 2));
break;
case Align.topLeft:
x = (_local5 + margin.left);
y = (_local6 + margin.top);
break;
case Align.topRight:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = (_local6 + margin.top);
break;
case Align.bottomLeft:
x = (_local5 + margin.left);
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
case Align.bottomRight:
x = (((_local5 + _local4) - forcedWidth) - margin.right);
y = (((_local6 + _local3) - forcedHeight) - margin.bottom);
break;
};
if (((!(listenResize)) && (!((_arg1 == Align.none))))){
_arg2.addEventListener(Event.RESIZE, onResize, false, 0, true);
listenResize = true;
};
this.alignement = _arg1;
this.alignTarget = _arg2;
}
private function _onRemovedFromStage(_arg1:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
removeEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage);
dispose();
}
public function resize():void{
if (alignement != Align.none){
alignTo(alignement, alignTarget);
};
}
protected function onResize(_arg1:Event):void{
resize();
}
}
}//package com.google.analytics.debug
Section 83
//Warning (com.google.analytics.debug.Warning)
package com.google.analytics.debug {
import flash.events.*;
import flash.utils.*;
public class Warning extends Label {
private var _timer:Timer;
public function Warning(_arg1:String="", _arg2:uint=3000){
super(_arg1, "uiWarning", Style.warningColor, Align.top, false);
margin.top = 32;
if (_arg2 > 0){
_timer = new Timer(_arg2, 1);
_timer.start();
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true);
};
}
public function close():void{
if (parent != null){
parent.removeChild(this);
};
}
override public function onLink(_arg1:TextEvent):void{
switch (_arg1.text){
case "hide":
close();
break;
};
}
public function onComplete(_arg1:TimerEvent):void{
close();
}
}
}//package com.google.analytics.debug
Section 84
//VisualDebugMode (com.google.analytics.debug.VisualDebugMode)
package com.google.analytics.debug {
public class VisualDebugMode {
private var _value:int;
private var _name:String;
public static const advanced:VisualDebugMode = new VisualDebugMode(1, "advanced");
;
public static const geek:VisualDebugMode = new VisualDebugMode(2, "geek");
;
public static const basic:VisualDebugMode = new VisualDebugMode(0, "basic");
;
public function VisualDebugMode(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.debug
Section 85
//AnalyticsEvent (com.google.analytics.events.AnalyticsEvent)
package com.google.analytics.events {
import flash.events.*;
import com.google.analytics.*;
public class AnalyticsEvent extends Event {
public var tracker:AnalyticsTracker;
public static const READY:String = "ready";
public function AnalyticsEvent(_arg1:String, _arg2:AnalyticsTracker, _arg3:Boolean=false, _arg4:Boolean=false){
super(_arg1, _arg3, _arg4);
this.tracker = _arg2;
}
override public function clone():Event{
return (new AnalyticsEvent(type, tracker, bubbles, cancelable));
}
}
}//package com.google.analytics.events
Section 86
//AdSenseGlobals (com.google.analytics.external.AdSenseGlobals)
package com.google.analytics.external {
import com.google.analytics.debug.*;
public class AdSenseGlobals extends JavascriptProxy {
private var _gaGlobalVerified:Boolean;// = false
public static var gaGlobal_js:XML = <script>
<![CDATA[
function()
{
try
{
gaGlobal
}
catch(e)
{
gaGlobal = {} ;
}
}
]]>
</script>
;
public function AdSenseGlobals(_arg1:DebugConfiguration){
super(_arg1);
}
public function set vid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.vid", _arg1);
}
public function get hid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.hid"));
}
public function set hid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.hid", _arg1);
}
public function get dh():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.dh"));
}
public function get sid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.sid"));
}
public function get vid():String{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal.vid"));
}
private function _verify():void{
if (!_gaGlobalVerified){
executeBlock(gaGlobal_js);
_gaGlobalVerified = true;
};
}
public function set sid(_arg1:String):void{
if (!isAvailable()){
return;
};
_verify();
setProperty("gaGlobal.sid", _arg1);
}
public function get gaGlobal():Object{
if (!isAvailable()){
return (null);
};
_verify();
return (getProperty("gaGlobal"));
}
}
}//package com.google.analytics.external
Section 87
//HTMLDOM (com.google.analytics.external.HTMLDOM)
package com.google.analytics.external {
import com.google.analytics.debug.*;
public class HTMLDOM extends JavascriptProxy {
private var _referrer:String;
private var _language:String;
private var _host:String;
private var _pathname:String;
private var _location:String;
private var _search:String;
private var _characterSet:String;
private var _title:String;
private var _protocol:String;
private var _colorDepth:String;
public static var cache_properties_js:XML = <script>
<![CDATA[
function()
{
var obj = {};
obj.host = document.location.host;
obj.language = navigator.language ? navigator.language : navigator.browserLanguage;
obj.characterSet = document.characterSet ? document.characterSet : document.charset;
obj.colorDepth = window.screen.colorDepth;
obj.location = document.location.toString();
obj.pathname = document.location.pathname;
obj.protocol = document.location.protocol;
obj.search = document.location.search;
obj.referrer = document.referrer;
obj.title = document.title;
return obj;
}
]]>
</script>
;
public function HTMLDOM(_arg1:DebugConfiguration){
super(_arg1);
}
public function get search():String{
if (_search){
return (_search);
};
if (!isAvailable()){
return (null);
};
_search = getProperty("document.location.search");
return (_search);
}
public function get location():String{
if (_location){
return (_location);
};
if (!isAvailable()){
return (null);
};
_location = getPropertyString("document.location");
return (_location);
}
public function get pathname():String{
if (_pathname){
return (_pathname);
};
if (!isAvailable()){
return (null);
};
_pathname = getProperty("document.location.pathname");
return (_pathname);
}
public function cacheProperties():void{
if (!isAvailable()){
return;
};
var _local1:Object = call(cache_properties_js);
if (_local1){
_host = _local1.host;
_language = _local1.language;
_characterSet = _local1.characterSet;
_colorDepth = _local1.colorDepth;
_location = _local1.location;
_pathname = _local1.pathname;
_protocol = _local1.protocol;
_search = _local1.search;
_referrer = _local1.referrer;
_title = _local1.title;
};
}
public function get language():String{
if (_language){
return (_language);
};
if (!isAvailable()){
return (null);
};
var _local1:String = getProperty("navigator.language");
if (_local1 == null){
_local1 = getProperty("navigator.browserLanguage");
};
_language = _local1;
return (_language);
}
public function get colorDepth():String{
if (_colorDepth){
return (_colorDepth);
};
if (!isAvailable()){
return (null);
};
_colorDepth = getProperty("window.screen.colorDepth");
return (_colorDepth);
}
public function get referrer():String{
if (_referrer){
return (_referrer);
};
if (!isAvailable()){
return (null);
};
_referrer = getProperty("document.referrer");
return (_referrer);
}
public function get protocol():String{
if (_protocol){
return (_protocol);
};
if (!isAvailable()){
return (null);
};
_protocol = getProperty("document.location.protocol");
return (_protocol);
}
public function get host():String{
if (_host){
return (_host);
};
if (!isAvailable()){
return (null);
};
_host = getProperty("document.location.host");
return (_host);
}
public function get characterSet():String{
if (_characterSet){
return (_characterSet);
};
if (!isAvailable()){
return (null);
};
var _local1:String = getProperty("document.characterSet");
if (_local1 == null){
_local1 = getProperty("document.charset");
};
_characterSet = _local1;
return (_characterSet);
}
public function get title():String{
if (_title){
return (_title);
};
if (!isAvailable()){
return (null);
};
_title = getProperty("document.title");
return (_title);
}
}
}//package com.google.analytics.external
Section 88
//JavascriptProxy (com.google.analytics.external.JavascriptProxy)
package com.google.analytics.external {
import com.google.analytics.debug.*;
import flash.external.*;
import flash.system.*;
public class JavascriptProxy {
private var _notAvailableWarning:Boolean;// = true
private var _debug:DebugConfiguration;
public static var setProperty_js:XML = <script>
<![CDATA[
function( path , value )
{
var paths;
var prop;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
prop = paths.pop() ;
}
else
{
paths = [];
prop = path;
}
var target = window ;
var len = paths.length ;
for( var i = 0 ; i < len ; i++ )
{
target = target[ paths[i] ] ;
}
target[ prop ] = value ;
}
]]>
</script>
;
public static var hasProperty_js:XML = <script>
<![CDATA[
function( path )
{
var paths;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
}
else
{
paths = [path];
}
var target = window ;
var len = paths.length ;
for( var i = 0 ; i < len ; i++ )
{
target = target[ paths[i] ] ;
}
if( target )
{
return true;
}
else
{
return false;
}
}
]]>
</script>
;
public static var setPropertyRef_js:XML = <script>
<![CDATA[
function( path , target )
{
var paths;
var prop;
if( path.indexOf(".") > 0 )
{
paths = path.split(".");
prop = paths.pop() ;
}
else
{
paths = [];
prop = path;
}
alert( "paths:"+paths.length+", prop:"+prop );
var targets;
var name;
if( target.indexOf(".") > 0 )
{
targets = target.split(".");
name = targets.pop();
}
else
{
targets = [];
name = target;
}
alert( "targets:"+targets.length+", name:"+name );
var root = window;
var len = paths.length;
for( var i = 0 ; i < len ; i++ )
{
root = root[ paths[i] ] ;
}
var ref = window;
var depth = targets.length;
for( var j = 0 ; j < depth ; j++ )
{
ref = ref[ targets[j] ] ;
}
root[ prop ] = ref[name] ;
}
]]>
</script>
;
public function JavascriptProxy(_arg1:DebugConfiguration){
_debug = _arg1;
}
public function getProperty(_arg1:String){
return (call((_arg1 + ".valueOf")));
}
public function hasProperty(_arg1:String):Boolean{
return (call(hasProperty_js, _arg1));
}
public function setProperty(_arg1:String, _arg2):void{
call(setProperty_js, _arg1, _arg2);
}
public function executeBlock(_arg1:String):void{
var data = _arg1;
if (isAvailable()){
try {
ExternalInterface.call(data);
} catch(e:SecurityError) {
if (_debug.javascript){
_debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
};
} catch(e:Error) {
if (_debug.javascript){
_debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message));
};
};
};
}
public function getPropertyString(_arg1:String):String{
return (call((_arg1 + ".toString")));
}
public function setPropertyByReference(_arg1:String, _arg2:String):void{
call(setPropertyRef_js, _arg1, _arg2);
}
public function call(_arg1:String, ... _args){
var output:String;
var functionName = _arg1;
var args = _args;
if (isAvailable()){
try {
if (((_debug.javascript) && (_debug.verbose))){
output = "";
output = ("Flash->JS: " + functionName);
output = (output + "( ");
if (args.length > 0){
output = (output + args.join(","));
};
output = (output + " )");
_debug.info(output);
};
args.unshift(functionName);
return (ExternalInterface.call.apply(ExternalInterface, args));
} catch(e:SecurityError) {
if (_debug.javascript){
_debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML.");
};
} catch(e:Error) {
if (_debug.javascript){
_debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message));
};
};
};
return (null);
}
public function isAvailable():Boolean{
var _local1:Boolean = ExternalInterface.available;
if (((_local1) && ((Capabilities.playerType == "External")))){
_local1 = false;
};
if (((((!(_local1)) && (_debug.javascript))) && (_notAvailableWarning))){
_debug.warning("ExternalInterface is not available.");
_notAvailableWarning = false;
};
return (_local1);
}
}
}//package com.google.analytics.external
Section 89
//Environment (com.google.analytics.utils.Environment)
package com.google.analytics.utils {
import com.google.analytics.debug.*;
import com.google.analytics.external.*;
import flash.system.*;
public class Environment {
private var _dom:HTMLDOM;
private var _appName:String;
private var _debug:DebugConfiguration;
private var _appVersion:Version;
private var _url:String;
private var _protocol:Protocols;
private var _userAgent:UserAgent;
public function Environment(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:DebugConfiguration=null, _arg5:HTMLDOM=null){
var _local6:Version;
super();
if (_arg2 == ""){
if (isAIR()){
_arg2 = "AIR";
} else {
_arg2 = "Flash";
};
};
if (_arg3 == ""){
_local6 = flashVersion;
} else {
_local6 = Version.fromString(_arg3);
};
_url = _arg1;
_appName = _arg2;
_appVersion = _local6;
_debug = _arg4;
_dom = _arg5;
}
public function isAIR():Boolean{
return ((((playerType == "Desktop")) && ((Security.sandboxType.toString() == "application"))));
}
public function get screenWidth():Number{
return (Capabilities.screenResolutionX);
}
public function get playerType():String{
return (Capabilities.playerType);
}
public function get locationSearch():String{
var _local1:String = _dom.search;
if (_local1){
return (_local1);
};
return ("");
}
public function get protocol():Protocols{
if (!_protocol){
_findProtocol();
};
return (_protocol);
}
public function get flashVersion():Version{
var _local1:Version = Version.fromString(Capabilities.version.split(" ")[1], ",");
return (_local1);
}
public function get userAgent():UserAgent{
if (!_userAgent){
_userAgent = new UserAgent(this, appName, appVersion.toString(4));
};
return (_userAgent);
}
public function get languageEncoding():String{
var _local1:String;
if (System.useCodePage){
_local1 = _dom.characterSet;
if (_local1){
return (_local1);
};
return ("-");
};
return ("UTF-8");
}
public function get appName():String{
return (_appName);
}
public function get screenColorDepth():String{
var _local1:String;
switch (Capabilities.screenColor){
case "bw":
_local1 = "1";
break;
case "gray":
_local1 = "2";
break;
case "color":
default:
_local1 = "24";
};
var _local2:String = _dom.colorDepth;
if (_local2){
_local1 = _local2;
};
return (_local1);
}
private function _findProtocol():void{
var _local4:String;
var _local5:String;
var _local1:Protocols = Protocols.none;
if (_url != ""){
_local4 = _url.toLowerCase();
_local5 = _local4.substr(0, 5);
switch (_local5){
case "file:":
_local1 = Protocols.file;
break;
case "http:":
_local1 = Protocols.HTTP;
break;
case "https":
if (_local4.charAt(5) == ":"){
_local1 = Protocols.HTTPS;
};
break;
default:
_protocol = Protocols.none;
};
};
var _local2:String = _dom.protocol;
var _local3:String = (_local1.toString() + ":").toLowerCase();
if (((((_local2) && (!((_local2 == _local3))))) && (_debug))){
_debug.warning(((("Protocol mismatch: SWF=" + _local3) + ", DOM=") + _local2));
};
_protocol = _local1;
}
public function get locationSWFPath():String{
return (_url);
}
public function get platform():String{
var _local1:String = Capabilities.manufacturer;
return (_local1.split("Adobe ")[1]);
}
public function get operatingSystem():String{
return (Capabilities.os);
}
public function set appName(_arg1:String):void{
_appName = _arg1;
userAgent.applicationProduct = _arg1;
}
function set url(_arg1:String):void{
_url = _arg1;
}
public function get referrer():String{
var _local1:String = _dom.referrer;
if (_local1){
return (_local1);
};
if (protocol == Protocols.file){
return ("localhost");
};
return ("");
}
public function isInHTML():Boolean{
return ((Capabilities.playerType == "PlugIn"));
}
public function get language():String{
var _local1:String = _dom.language;
var _local2:String = Capabilities.language;
if (_local1){
if ((((_local1.length > _local2.length)) && ((_local1.substr(0, _local2.length) == _local2)))){
_local2 = _local1;
};
};
return (_local2);
}
public function get domainName():String{
var _local1:String;
var _local2:String;
var _local3:int;
if ((((protocol == Protocols.HTTP)) || ((protocol == Protocols.HTTPS)))){
_local1 = _url.toLowerCase();
if (protocol == Protocols.HTTP){
_local2 = _local1.split("http://").join("");
} else {
if (protocol == Protocols.HTTPS){
_local2 = _local1.split("https://").join("");
};
};
_local3 = _local2.indexOf("/");
if (_local3 > -1){
_local2 = _local2.substring(0, _local3);
};
return (_local2);
};
if (protocol == Protocols.file){
return ("localhost");
};
return ("");
}
public function set userAgent(_arg1:UserAgent):void{
_userAgent = _arg1;
}
public function set appVersion(_arg1:Version):void{
_appVersion = _arg1;
userAgent.applicationVersion = _arg1.toString(4);
}
public function get screenHeight():Number{
return (Capabilities.screenResolutionY);
}
public function get locationPath():String{
var _local1:String = _dom.pathname;
if (_local1){
return (_local1);
};
return ("");
}
public function get documentTitle():String{
var _local1:String = _dom.title;
if (_local1){
return (_local1);
};
return ("");
}
public function get appVersion():Version{
return (_appVersion);
}
}
}//package com.google.analytics.utils
Section 90
//Protocols (com.google.analytics.utils.Protocols)
package com.google.analytics.utils {
public class Protocols {
private var _value:int;
private var _name:String;
public static const none:Protocols = new Protocols(0, "none");
;
public static const HTTPS:Protocols = new Protocols(3, "HTTPS");
;
public static const file:Protocols = new Protocols(1, "file");
;
public static const HTTP:Protocols = new Protocols(2, "HTTP");
;
public function Protocols(_arg1:int=0, _arg2:String=""){
_value = _arg1;
_name = _arg2;
}
public function valueOf():int{
return (_value);
}
public function toString():String{
return (_name);
}
}
}//package com.google.analytics.utils
Section 91
//Timespan (com.google.analytics.utils.Timespan)
package com.google.analytics.utils {
public class Timespan {
public static var sixmonths:Number = 15768000;
public static var twoyears:Number = 63072000;
public static var thirtyminutes:Number = 1800;
}
}//package com.google.analytics.utils
Section 92
//URL (com.google.analytics.utils.URL)
package com.google.analytics.utils {
public class URL {
private var _url:String;
public function URL(_arg1:String=""){
_url = _arg1.toLowerCase();
}
public function get domain():String{
var _local1:Array;
if (((!((hostName == ""))) && ((hostName.indexOf(".") > -1)))){
_local1 = hostName.split(".");
switch (_local1.length){
case 2:
return (hostName);
case 3:
if (_local1[1] == "co"){
return (hostName);
};
_local1.shift();
return (_local1.join("."));
case 4:
_local1.shift();
return (_local1.join("."));
};
};
return ("");
}
public function get path():String{
var _local1:String = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf(hostName) == 0){
_local1 = _local1.substr(hostName.length);
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[0];
};
if (_local1.charAt(0) != "/"){
_local1 = ("/" + _local1);
};
return (_local1);
}
public function get protocol():Protocols{
var _local1:String = _url.split("://")[0];
switch (_local1){
case "file":
return (Protocols.file);
case "http":
return (Protocols.HTTP);
case "https":
return (Protocols.HTTPS);
default:
return (Protocols.none);
};
}
public function get hostName():String{
var _local1:String = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf("/") > -1){
_local1 = _local1.split("/")[0];
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[0];
};
if ((((protocol == Protocols.file)) || ((protocol == Protocols.none)))){
return ("");
};
return (_local1);
}
public function get subDomain():String{
if (((!((domain == ""))) && (!((domain == hostName))))){
return (hostName.split(("." + domain)).join(""));
};
return ("");
}
public function get search():String{
var _local1:String = _url;
if (_local1.indexOf("://") > -1){
_local1 = _local1.split("://")[1];
};
if (_local1.indexOf(hostName) == 0){
_local1 = _local1.substr(hostName.length);
};
if (_local1.indexOf("?") > -1){
_local1 = _local1.split("?")[1];
} else {
_local1 = "";
};
return (_local1);
}
}
}//package com.google.analytics.utils
Section 93
//UserAgent (com.google.analytics.utils.UserAgent)
package com.google.analytics.utils {
import com.google.analytics.core.*;
import flash.system.*;
public class UserAgent {
private var _localInfo:Environment;
private var _applicationProduct:String;
private var _version:Version;
public static var minimal:Boolean = false;
public function UserAgent(_arg1:Environment, _arg2:String="", _arg3:String=""){
_localInfo = _arg1;
applicationProduct = _arg2;
_version = Version.fromString(_arg3);
}
public function get tamarinProductToken():String{
if (UserAgent.minimal){
return ("");
};
if (System.vmVersion){
return (("Tamarin/" + Utils.trim(System.vmVersion, true)));
};
return ("");
}
public function get applicationVersion():String{
return (_version.toString(2));
}
public function get vendorProductToken():String{
var _local1 = "";
if (_localInfo.isAIR()){
_local1 = (_local1 + "AIR");
} else {
_local1 = (_local1 + "FlashPlayer");
};
_local1 = (_local1 + "/");
_local1 = (_local1 + _version.toString(3));
return (_local1);
}
public function toString():String{
var _local1 = "";
_local1 = (_local1 + applicationProductToken);
if (applicationComment != ""){
_local1 = (_local1 + (" " + applicationComment));
};
if (tamarinProductToken != ""){
_local1 = (_local1 + (" " + tamarinProductToken));
};
if (vendorProductToken != ""){
_local1 = (_local1 + (" " + vendorProductToken));
};
return (_local1);
}
public function get applicationComment():String{
var _local1:Array = [];
_local1.push(_localInfo.platform);
_local1.push(_localInfo.playerType);
if (!UserAgent.minimal){
_local1.push(_localInfo.operatingSystem);
_local1.push(_localInfo.language);
};
if (Capabilities.isDebugger){
_local1.push("DEBUG");
};
if (_local1.length > 0){
return ((("(" + _local1.join("; ")) + ")"));
};
return ("");
}
public function set applicationVersion(_arg1:String):void{
_version = Version.fromString(_arg1);
}
public function get applicationProductToken():String{
var _local1:String = applicationProduct;
if (applicationVersion != ""){
_local1 = (_local1 + ("/" + applicationVersion));
};
return (_local1);
}
public function set applicationProduct(_arg1:String):void{
_applicationProduct = _arg1;
}
public function get applicationProduct():String{
return (_applicationProduct);
}
}
}//package com.google.analytics.utils
Section 94
//Variables (com.google.analytics.utils.Variables)
package com.google.analytics.utils {
import flash.net.*;
public dynamic class Variables {
public var post:Array;
public var URIencode:Boolean;
public var pre:Array;
public var sort:Boolean;// = true
public function Variables(_arg1:String=null, _arg2:Array=null, _arg3:Array=null){
pre = [];
post = [];
super();
if (_arg1){
decode(_arg1);
};
if (_arg2){
this.pre = _arg2;
};
if (_arg3){
this.post = _arg3;
};
}
private function _join(_arg1:Variables):void{
var _local2:String;
if (!_arg1){
return;
};
for (_local2 in _arg1) {
this[_local2] = _arg1[_local2];
};
}
public function join(... _args):void{
var _local2:int = _args.length;
var _local3:int;
while (_local3 < _local2) {
if (!(_args[_local3] is Variables)){
} else {
_join(_args[_local3]);
};
_local3++;
};
}
public function toString():String{
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:String;
var _local8:String;
var _local1:Array = [];
for (_local3 in this) {
_local2 = this[_local3];
if (URIencode){
_local2 = encodeURI(_local2);
};
_local1.push(((_local3 + "=") + _local2));
};
if (sort){
_local1.sort();
};
if (pre.length > 0){
pre.reverse();
_local5 = 0;
while (_local5 < pre.length) {
_local7 = pre[_local5];
_local6 = 0;
while (_local6 < _local1.length) {
_local4 = _local1[_local6];
if (_local4.indexOf(_local7) == 0){
_local1.unshift(_local1.splice(_local6, 1)[0]);
};
_local6++;
};
_local5++;
};
pre.reverse();
};
if (post.length > 0){
_local5 = 0;
while (_local5 < post.length) {
_local8 = post[_local5];
_local6 = 0;
while (_local6 < _local1.length) {
_local4 = _local1[_local6];
if (_local4.indexOf(_local8) == 0){
_local1.push(_local1.splice(_local6, 1)[0]);
};
_local6++;
};
_local5++;
};
};
return (_local1.join("&"));
}
public function decode(_arg1:String):void{
var _local2:Array;
var _local3:String;
var _local4:String;
var _local5:String;
var _local6:Array;
if (_arg1 == ""){
return;
};
if (_arg1.indexOf("&") > -1){
_local2 = _arg1.split("&");
} else {
_local2 = [_arg1];
};
var _local7:int;
while (_local7 < _local2.length) {
_local3 = _local2[_local7];
if (_local3.indexOf("=") > -1){
_local6 = _local3.split("=");
_local4 = _local6[0];
_local5 = decodeURI(_local6[1]);
this[_local4] = _local5;
};
_local7++;
};
}
public function toURLVariables():URLVariables{
var _local2:String;
var _local1:URLVariables = new URLVariables();
for (_local2 in this) {
_local1[_local2] = this[_local2];
};
return (_local1);
}
}
}//package com.google.analytics.utils
Section 95
//Version (com.google.analytics.utils.Version)
package com.google.analytics.utils {
public class Version {
private var _revision:uint;
private var _maxBuild:uint;// = 0xFF
private var _maxMinor:uint;// = 15
private var _maxMajor:uint;// = 15
private var _separator:String;// = "."
private var _maxRevision:uint;// = 0xFFFF
private var _build:uint;
private var _major:uint;
private var _minor:uint;
public function Version(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0){
var _local5:Version;
super();
if ((((((((_arg1 > _maxMajor)) && ((_arg2 == 0)))) && ((_arg3 == 0)))) && ((_arg4 == 0)))){
_local5 = Version.fromNumber(_arg1);
_arg1 = _local5.major;
_arg2 = _local5.minor;
_arg3 = _local5.build;
_arg4 = _local5.revision;
};
this.major = _arg1;
this.minor = _arg2;
this.build = _arg3;
this.revision = _arg4;
}
public function toString(_arg1:int=0):String{
var _local2:Array;
if ((((_arg1 <= 0)) || ((_arg1 > 4)))){
_arg1 = getFields();
};
switch (_arg1){
case 1:
_local2 = [major];
break;
case 2:
_local2 = [major, minor];
break;
case 3:
_local2 = [major, minor, build];
break;
case 4:
default:
_local2 = [major, minor, build, revision];
};
return (_local2.join(_separator));
}
public function set revision(_arg1:uint):void{
_revision = Math.min(_arg1, _maxRevision);
}
public function get revision():uint{
return (_revision);
}
public function set build(_arg1:uint):void{
_build = Math.min(_arg1, _maxBuild);
}
public function set minor(_arg1:uint):void{
_minor = Math.min(_arg1, _maxMinor);
}
public function get build():uint{
return (_build);
}
public function set major(_arg1:uint):void{
_major = Math.min(_arg1, _maxMajor);
}
public function get minor():uint{
return (_minor);
}
private function getFields():int{
var _local1 = 4;
if (revision == 0){
_local1--;
};
if ((((_local1 == 3)) && ((build == 0)))){
_local1--;
};
if ((((_local1 == 2)) && ((minor == 0)))){
_local1--;
};
return (_local1);
}
public function valueOf():uint{
return (((((major << 28) | (minor << 24)) | (build << 16)) | revision));
}
public function get major():uint{
return (_major);
}
public function equals(_arg1):Boolean{
if (!(_arg1 is Version)){
return (false);
};
if ((((((((_arg1.major == major)) && ((_arg1.minor == minor)))) && ((_arg1.build == build)))) && ((_arg1.revision == revision)))){
return (true);
};
return (false);
}
public static function fromString(_arg1:String="", _arg2:String="."):Version{
var _local4:Array;
var _local3:Version = new (Version);
if ((((_arg1 == "")) || ((_arg1 == null)))){
return (_local3);
};
if (_arg1.indexOf(_arg2) > -1){
_local4 = _arg1.split(_arg2);
_local3.major = parseInt(_local4[0]);
_local3.minor = parseInt(_local4[1]);
_local3.build = parseInt(_local4[2]);
_local3.revision = parseInt(_local4[3]);
} else {
_local3.major = parseInt(_arg1);
};
return (_local3);
}
public static function fromNumber(_arg1:Number=0):Version{
var _local2:Version = new (Version);
if (((((((((((isNaN(_arg1)) || ((_arg1 == 0)))) || ((_arg1 < 0)))) || ((_arg1 == Number.MAX_VALUE)))) || ((_arg1 == Number.POSITIVE_INFINITY)))) || ((_arg1 == Number.NEGATIVE_INFINITY)))){
return (_local2);
};
_local2.major = (_arg1 >>> 28);
_local2.minor = ((_arg1 & 251658240) >>> 24);
_local2.build = ((_arg1 & 0xFF0000) >>> 16);
_local2.revision = (_arg1 & 0xFFFF);
return (_local2);
}
}
}//package com.google.analytics.utils
Section 96
//Bridge (com.google.analytics.v4.Bridge)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.external.*;
public class Bridge implements GoogleAnalyticsAPI {
private var _debug:DebugConfiguration;
private var _proxy:JavascriptProxy;
private var _jsContainer:String;// = "_GATracker"
private var _hasGATracker:Boolean;// = false
private var _account:String;
private static var _linkTrackingObject_js:XML = <script>
<![CDATA[
function( container , target )
{
var targets ;
var name ;
if( target.indexOf(".") > 0 )
{
targets = target.split(".");
name = targets.pop();
}
else
{
targets = [];
name = target;
}
var ref = window;
var depth = targets.length;
for( var j = 0 ; j < depth ; j++ )
{
ref = ref[ targets[j] ] ;
}
window[container][target] = ref[name] ;
}
]]>
</script>
;
private static var _createTrackingObject_js:XML = <script>
<![CDATA[
function( acct )
{
_GATracker[acct] = _gat._getTracker(acct);
}
]]>
</script>
;
private static var _injectTrackingObject_js:XML = <script>
<![CDATA[
function()
{
try
{
_GATracker
}
catch(e)
{
_GATracker = {};
}
}
]]>
</script>
;
private static var _checkGAJS_js:XML = <script>
<![CDATA[
function()
{
if( _gat && _gat._getTracker )
{
return true;
}
return false;
}
]]>
</script>
;
private static var _checkValidTrackingObject_js:XML = <script>
<![CDATA[
function(acct)
{
if( _GATracker[acct] && (_GATracker[acct]._getAccount) )
{
return true ;
}
else
{
return false;
}
}
]]>
</script>
;
public function Bridge(_arg1:String, _arg2:DebugConfiguration, _arg3:JavascriptProxy){
var _local4:String;
var _local5:String;
var _local6:String;
super();
_account = _arg1;
_debug = _arg2;
_proxy = _arg3;
if (!_checkGAJS()){
_local4 = "";
_local4 = (_local4 + "ga.js not found, be sure to check if\n");
_local4 = (_local4 + "<script src=\"http://www.google-analytics.com/ga.js\"></script>\n");
_local4 = (_local4 + "is included in the HTML.");
_debug.warning(_local4);
throw (new Error(_local4));
};
if (!_hasGATracker){
if (((_debug.javascript) && (_debug.verbose))){
_local5 = "";
_local5 = (_local5 + "The Google Analytics tracking code was not found on the container page\n");
_local5 = (_local5 + "we create it");
_debug.info(_local5, VisualDebugMode.advanced);
};
_injectTrackingObject();
};
if (Utils.validateAccount(_arg1)){
_createTrackingObject(_arg1);
} else {
if (_checkTrackingObject(_arg1)){
_linkTrackingObject(_arg1);
} else {
_local6 = "";
_local6 = (_local6 + (("JS Object \"" + _arg1) + "\" doesn't exist in DOM\n"));
_local6 = (_local6 + "Bridge object not created.");
_debug.warning(_local6);
throw (new Error(_local6));
};
};
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_debug.info((((("link( " + _arg1) + ", ") + _arg2) + " )"));
_call("_link", _arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )"));
_call("_addOrganic", _arg1);
}
public function setAllowLinker(_arg1:Boolean):void{
_debug.info((("setAllowLinker( " + _arg1) + " )"));
_call("_setAllowLinker", _arg1);
}
private function _linkTrackingObject(_arg1:String):void{
_proxy.call(_linkTrackingObject_js, _jsContainer, _arg1);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
var _local5 = 2;
if (((_arg3) && (!((_arg3 == ""))))){
_local5 = 3;
};
if ((((_local5 == 3)) && (!(isNaN(_arg4))))){
_local5 = 4;
};
switch (_local5){
case 4:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2, _arg3, _arg4));
case 3:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2, _arg3));
case 2:
default:
_debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )"));
return (_call("_trackEvent", _arg1, _arg2));
};
}
public function setClientInfo(_arg1:Boolean):void{
_debug.info((("setClientInfo( " + _arg1) + " )"));
_call("_setClientInfo", _arg1);
}
public function trackTrans():void{
_debug.info("trackTrans()");
_call("_trackTrans");
}
public function setCookieTimeout(_arg1:int):void{
_debug.info((("setCookieTimeout( " + _arg1) + " )"));
_call("_setCookieTimeout", _arg1);
}
public function trackPageview(_arg1:String=""):void{
_debug.info((("trackPageview( " + _arg1) + " )"));
_call("_trackPageview", _arg1);
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_call("_getClientInfo"));
}
private function _checkValidTrackingObject(_arg1:String):Boolean{
return (_proxy.call(_checkValidTrackingObject_js, _arg1));
}
private function _checkGAJS():Boolean{
return (_proxy.call(_checkGAJS_js));
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_debug.warning((((("linkByPost( " + _arg1) + ", ") + _arg2) + " ) not implemented"));
}
private function _call(_arg1:String, ... _args){
_args.unshift(((((("window." + _jsContainer) + "[\"") + _account) + "\"].") + _arg1));
return (_proxy.call.apply(_proxy, _args));
}
public function hasGAJS():Boolean{
return (_checkGAJS());
}
private function _checkTrackingObject(_arg1:String):Boolean{
var _local2:Boolean = _proxy.hasProperty(_arg1);
var _local3:Boolean = _proxy.hasProperty((_arg1 + "._getAccount"));
return (((_local2) && (_local3)));
}
public function resetSession():void{
_debug.warning("resetSession() not implemented");
}
public function getDetectTitle():Boolean{
_debug.info("getDetectTitle()");
return (_call("_getDetectTitle"));
}
public function setCampNameKey(_arg1:String):void{
_debug.info((("setCampNameKey( " + _arg1) + " )"));
_call("_setCampNameKey", _arg1);
}
public function setDetectFlash(_arg1:Boolean):void{
_debug.info((("setDetectFlash( " + _arg1) + " )"));
_call("_setDetectFlash", _arg1);
}
public function createEventTracker(_arg1:String):EventTracker{
_debug.info((("createEventTracker( " + _arg1) + " )"));
return (new EventTracker(_arg1, this));
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_debug.info((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " )"));
_call("_addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
public function clearIgnoredOrganic():void{
_debug.info("clearIgnoredOrganic()");
_call("_clearIgnoreOrganic");
}
public function setVar(_arg1:String):void{
_debug.info((("setVar( " + _arg1) + " )"));
_call("_setVar", _arg1);
}
public function setDomainName(_arg1:String):void{
_debug.info((("setDomainName( " + _arg1) + " )"));
_call("_setDomainName", _arg1);
}
public function hasTrackingAccount(_arg1:String):Boolean{
if (Utils.validateAccount(_arg1)){
return (_checkValidTrackingObject(_arg1));
};
return (_checkTrackingObject(_arg1));
}
public function setCampSourceKey(_arg1:String):void{
_debug.info((("setCampSourceKey( " + _arg1) + " )"));
_call("_setCampSourceKey", _arg1);
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
_debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " )"));
_call("_addTrans", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
return (null);
}
public function setCampContentKey(_arg1:String):void{
_debug.info((("setCampContentKey( " + _arg1) + " )"));
_call("_setCampContentKey", _arg1);
}
public function setLocalServerMode():void{
_debug.info("setLocalServerMode()");
_call("_setLocalServerMode");
}
public function getLocalGifPath():String{
_debug.info("getLocalGifPath()");
return (_call("_getLocalGifPath"));
}
public function clearIgnoredRef():void{
_debug.info("clearIgnoredRef()");
_call("_clearIgnoreRef");
}
public function setAllowAnchor(_arg1:Boolean):void{
_debug.info((("setAllowAnchor( " + _arg1) + " )"));
_call("_setAllowAnchor", _arg1);
}
public function setLocalGifPath(_arg1:String):void{
_debug.info((("setLocalGifPath( " + _arg1) + " )"));
_call("_setLocalGifPath", _arg1);
}
public function getVersion():String{
_debug.info("getVersion()");
return (_call("_getVersion"));
}
private function _injectTrackingObject():void{
_proxy.executeBlock(_injectTrackingObject_js);
_hasGATracker = true;
}
public function setCookiePath(_arg1:String):void{
_debug.info((("setCookiePath( " + _arg1) + " )"));
_call("_setCookiePath", _arg1);
}
public function setSampleRate(_arg1:Number):void{
_debug.info((("setSampleRate( " + _arg1) + " )"));
_call("_setSampleRate", _arg1);
}
public function setAllowHash(_arg1:Boolean):void{
_debug.info((("setAllowHash( " + _arg1) + " )"));
_call("_setAllowHash", _arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
_debug.info((("addIgnoredOrganic( " + _arg1) + " )"));
_call("_addIgnoredOrganic", _arg1);
}
public function setCampNOKey(_arg1:String):void{
_debug.info((("setCampNOKey( " + _arg1) + " )"));
_call("_setCampNOKey", _arg1);
}
public function cookiePathCopy(_arg1:String):void{
_debug.info((("cookiePathCopy( " + _arg1) + " )"));
_call("_cookiePathCopy", _arg1);
}
public function setLocalRemoteServerMode():void{
_debug.info("setLocalRemoteServerMode()");
_call("_setLocalRemoteServerMode");
}
public function getServiceMode():ServerOperationMode{
_debug.info("getServiceMode()");
return (_call("_getServiceMode"));
}
public function setDetectTitle(_arg1:Boolean):void{
_debug.info((("setDetectTitle( " + _arg1) + " )"));
_call("_setDetectTitle", _arg1);
}
private function _createTrackingObject(_arg1:String):void{
_proxy.call(_createTrackingObject_js, _arg1);
}
public function setCampaignTrack(_arg1:Boolean):void{
_debug.info((("setCampaignTrack( " + _arg1) + " )"));
_call("_setCampaignTrack", _arg1);
}
public function clearOrganic():void{
_debug.info("clearOrganic()");
_call("_clearOrganic");
}
public function setCampTermKey(_arg1:String):void{
_debug.info((("setCampTermKey( " + _arg1) + " )"));
_call("_setCampTermKey", _arg1);
}
public function getDetectFlash():Boolean{
_debug.info("getDetectFlash()");
return (_call("_getDetectFlash"));
}
public function setCampMediumKey(_arg1:String):void{
_debug.info((("setCampMediumKey( " + _arg1) + " )"));
_call("_setCampMediumKey", _arg1);
}
public function addIgnoredRef(_arg1:String):void{
_debug.info((("addIgnoredRef( " + _arg1) + " )"));
_call("_addIgnoredRef", _arg1);
}
public function setSessionTimeout(_arg1:int):void{
_debug.info((("setSessionTimeout( " + _arg1) + " )"));
_call("_setSessionTimeout", _arg1);
}
public function setRemoteServerMode():void{
_debug.info("setRemoteServerMode()");
_call("_setRemoteServerMode");
}
public function getAccount():String{
_debug.info("getAccount()");
return (_call("_getAccount"));
}
}
}//package com.google.analytics.v4
Section 97
//Configuration (com.google.analytics.v4.Configuration)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
import com.google.analytics.campaign.*;
public class Configuration {
public var serverMode:ServerOperationMode;
public var detectFlash:Boolean;// = true
public var hasSiteOverlay:Boolean;// = false
public var allowLocalTracking:Boolean;// = true
public var secureRemoteGIFpath:String;// = "https://ssl.google-analytics.com/__utm.gif"
private var _version:String;// = "4.3as"
public var allowDomainHash:Boolean;// = true
public var detectClientInfo:Boolean;// = true
public var idleLoop:Number;// = 30
public var isTrackOutboundSubdomains:Boolean;// = false
public var cookiePath:String;// = "/"
public var transactionFieldDelim:String;// = "|"
private var _organic:Organic;
private var _cookieName:String;// = "analytics"
public var campaignKey:CampaignKey;
public var google:String;// = "google"
public var googleCsePath:String;// = "cse"
public var bucketCapacity:Number;// = 10
private var _sampleRate:Number;// = 1
public var remoteGIFpath:String;// = "http://www.google-analytics.com/__utm.gif"
public var googleSearchParam:String;// = "q"
public var allowLinker:Boolean;// = false
public var maxOutboundLinkExamined:Number;// = 1000
private var _debug:DebugConfiguration;
public var allowAnchor:Boolean;// = false
private var _domain:Domain;
private var _trackingLimitPerSession:int;// = 500
public var tokenCliff:int;// = 10
public var sessionTimeout:Number;
public var idleTimeout:Number;// = 60
public var campaignTracking:Boolean;// = true
public var domainName:String;// = ""
public var detectTitle:Boolean;// = true
public var tokenRate:Number;// = 0.2
public var conversionTimeout:Number;
public var localGIFpath:String;// = "/__utm.gif"
public function Configuration(_arg1:DebugConfiguration=null){
_organic = new Organic();
conversionTimeout = Timespan.sixmonths;
sessionTimeout = Timespan.thirtyminutes;
campaignKey = new CampaignKey();
serverMode = ServerOperationMode.remote;
super();
_debug = _arg1;
_domain = new Domain(DomainNameMode.auto, "", _debug);
serverMode = ServerOperationMode.remote;
_initOrganicSources();
}
public function get organic():Organic{
return (_organic);
}
public function get cookieName():String{
return (_cookieName);
}
public function get trackingLimitPerSession():int{
return (_trackingLimitPerSession);
}
private function _initOrganicSources():void{
addOrganicSource(google, googleSearchParam);
addOrganicSource("yahoo", "p");
addOrganicSource("msn", "q");
addOrganicSource("aol", "query");
addOrganicSource("aol", "encquery");
addOrganicSource("lycos", "query");
addOrganicSource("ask", "q");
addOrganicSource("altavista", "q");
addOrganicSource("netscape", "query");
addOrganicSource("cnn", "query");
addOrganicSource("looksmart", "qt");
addOrganicSource("about", "terms");
addOrganicSource("mamma", "query");
addOrganicSource("alltheweb", "q");
addOrganicSource("gigablast", "q");
addOrganicSource("voila", "rdata");
addOrganicSource("virgilio", "qs");
addOrganicSource("live", "q");
addOrganicSource("baidu", "wd");
addOrganicSource("alice", "qs");
addOrganicSource("yandex", "text");
addOrganicSource("najdi", "q");
addOrganicSource("aol", "q");
addOrganicSource("club-internet", "q");
addOrganicSource("mama", "query");
addOrganicSource("seznam", "q");
addOrganicSource("search", "q");
addOrganicSource("wp", "szukaj");
addOrganicSource("onet", "qt");
addOrganicSource("netsprint", "q");
addOrganicSource("google.interia", "q");
addOrganicSource("szukacz", "q");
addOrganicSource("yam", "k");
addOrganicSource("pchome", "q");
addOrganicSource("kvasir", "searchExpr");
addOrganicSource("sesam", "q");
addOrganicSource("ozu", "q");
addOrganicSource("terra", "query");
addOrganicSource("nostrum", "query");
addOrganicSource("mynet", "q");
addOrganicSource("ekolay", "q");
addOrganicSource("search.ilse", "search_for");
}
public function get sampleRate():Number{
return (_sampleRate);
}
public function addOrganicSource(_arg1:String, _arg2:String):void{
var engine = _arg1;
var keyword = _arg2;
try {
_organic.addSource(engine, keyword);
} catch(e:Error) {
if (((_debug) && (_debug.active))){
_debug.warning(e.message);
};
};
}
public function get domain():Domain{
return (_domain);
}
public function set sampleRate(_arg1:Number):void{
if (_arg1 <= 0){
_arg1 = 0.1;
};
if (_arg1 > 1){
_arg1 = 1;
};
_arg1 = Number(_arg1.toFixed(2));
_sampleRate = _arg1;
}
public function get version():String{
return (_version);
}
}
}//package com.google.analytics.v4
Section 98
//GoogleAnalyticsAPI (com.google.analytics.v4.GoogleAnalyticsAPI)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
public interface GoogleAnalyticsAPI {
function setCampSourceKey(_arg1:String):void;
function getServiceMode():ServerOperationMode;
function resetSession():void;
function setLocalServerMode():void;
function setCampContentKey(_arg1:String):void;
function addOrganic(_arg1:String, _arg2:String):void;
function setDetectFlash(_arg1:Boolean):void;
function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object;
function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean;
function setCampTermKey(_arg1:String):void;
function setCampNameKey(_arg1:String):void;
function addIgnoredOrganic(_arg1:String):void;
function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void;
function setAllowLinker(_arg1:Boolean):void;
function getClientInfo():Boolean;
function getDetectFlash():Boolean;
function setCampaignTrack(_arg1:Boolean):void;
function createEventTracker(_arg1:String):EventTracker;
function setCookieTimeout(_arg1:int):void;
function setAllowAnchor(_arg1:Boolean):void;
function trackTrans():void;
function clearOrganic():void;
function trackPageview(_arg1:String=""):void;
function setLocalGifPath(_arg1:String):void;
function getVersion():String;
function getLocalGifPath():String;
function setVar(_arg1:String):void;
function clearIgnoredOrganic():void;
function setCampMediumKey(_arg1:String):void;
function addIgnoredRef(_arg1:String):void;
function setClientInfo(_arg1:Boolean):void;
function setCookiePath(_arg1:String):void;
function setSampleRate(_arg1:Number):void;
function setSessionTimeout(_arg1:int):void;
function setRemoteServerMode():void;
function clearIgnoredRef():void;
function setDomainName(_arg1:String):void;
function setDetectTitle(_arg1:Boolean):void;
function setAllowHash(_arg1:Boolean):void;
function getAccount():String;
function linkByPost(_arg1:Object, _arg2:Boolean=false):void;
function link(_arg1:String, _arg2:Boolean=false):void;
function setCampNOKey(_arg1:String):void;
function setLocalRemoteServerMode():void;
function cookiePathCopy(_arg1:String):void;
function getDetectTitle():Boolean;
}
}//package com.google.analytics.v4
Section 99
//Tracker (com.google.analytics.v4.Tracker)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import com.google.analytics.data.*;
import com.google.analytics.utils.*;
import com.google.analytics.external.*;
import com.google.analytics.campaign.*;
public class Tracker implements GoogleAnalyticsAPI {
private const EVENT_TRACKER_LABEL_KEY_NUM:int = 3;
private const EVENT_TRACKER_VALUE_VALUE_NUM:int = 1;
private const EVENT_TRACKER_PROJECT_ID:int = 5;
private const EVENT_TRACKER_OBJECT_NAME_KEY_NUM:int = 1;
private const EVENT_TRACKER_TYPE_KEY_NUM:int = 2;
private var _adSense:AdSenseGlobals;
private var _eventTracker:X10;
private var _noSessionInformation:Boolean;// = false
private var _browserInfo:BrowserInfo;
private var _debug:DebugConfiguration;
private var _isNewVisitor:Boolean;// = false
private var _buffer:Buffer;
private var _config:Configuration;
private var _x10Module:X10;
private var _campaign:CampaignManager;
private var _formatedReferrer:String;
private var _timeStamp:Number;
private var _info:Environment;
private var _domainHash:Number;
private var _campaignInfo:CampaignInfo;
private var _gifRequest:GIFRequest;
private var _hasInitData:Boolean;// = false
private var _account:String;
public function Tracker(_arg1:String, _arg2:Configuration, _arg3:DebugConfiguration, _arg4:Environment, _arg5:Buffer, _arg6:GIFRequest, _arg7:AdSenseGlobals){
var _local8:String;
super();
_account = _arg1;
_config = _arg2;
_debug = _arg3;
_info = _arg4;
_buffer = _arg5;
_gifRequest = _arg6;
_adSense = _arg7;
if (!Utils.validateAccount(_arg1)){
_local8 = (("Account \"" + _arg1) + "\" is not valid.");
_debug.warning(_local8);
throw (new Error(_local8));
};
_initData();
}
private function _doTracking():Boolean{
if (((((!((_info.protocol == Protocols.file))) && (!((_info.protocol == Protocols.none))))) && (_isNotGoogleSearch()))){
return (true);
};
if (_config.allowLocalTracking){
return (true);
};
return (false);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )"));
_config.organic.addSource(_arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
_config.allowLinker = _arg1;
_debug.info((("setAllowLinker( " + _config.allowLinker) + " )"));
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
var _local5:Boolean;
var _local6 = 2;
if (((!((_arg1 == ""))) && (!((_arg2 == ""))))){
_eventTracker.clearKey(EVENT_TRACKER_PROJECT_ID);
_eventTracker.clearValue(EVENT_TRACKER_PROJECT_ID);
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_OBJECT_NAME_KEY_NUM, _arg1);
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_TYPE_KEY_NUM, _arg2);
if (((_arg3) && (!((_arg3 == ""))))){
_local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_LABEL_KEY_NUM, _arg3);
_local6 = 3;
if (!isNaN(_arg4)){
_local5 = _eventTracker.setValue(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_VALUE_VALUE_NUM, _arg4);
_local6 = 4;
};
};
if (_local5){
_debug.info(((("valid event tracking call\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek);
_sendXEvent(_eventTracker);
};
} else {
_debug.warning(((("event tracking call is not valid, failed!\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek);
_local5 = false;
};
switch (_local6){
case 4:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )"));
break;
case 3:
_debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )"));
break;
case 2:
default:
_debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )"));
};
return (_local5);
}
public function trackPageview(_arg1:String=""):void{
_debug.info((("trackPageview( " + _arg1) + " )"));
if (_doTracking()){
_initData();
_trackMetrics(_arg1);
_noSessionInformation = false;
} else {
_debug.warning((("trackPageview( " + _arg1) + " ) failed"));
};
}
public function setCookieTimeout(_arg1:int):void{
_config.conversionTimeout = _arg1;
_debug.info((("setCookieTimeout( " + _config.conversionTimeout) + " )"));
}
public function trackTrans():void{
_debug.warning("trackTrans() not implemented");
}
public function setClientInfo(_arg1:Boolean):void{
_config.detectClientInfo = _arg1;
_debug.info((("setClientInfo( " + _config.detectClientInfo) + " )"));
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_debug.warning((("linkByPost( " + [_arg1, _arg2].join(", ")) + " ) not implemented"));
}
private function _initData():void{
var _local1:String;
var _local2:String;
if (!_hasInitData){
_updateDomainName();
_domainHash = _getDomainHash();
_timeStamp = Math.round((new Date().getTime() / 1000));
if (_debug.verbose){
_local1 = "";
_local1 = (_local1 + "_initData 0");
_local1 = (_local1 + ("\ndomain name: " + _config.domainName));
_local1 = (_local1 + ("\ndomain hash: " + _domainHash));
_local1 = (_local1 + (((("\ntimestamp: " + _timeStamp) + " (") + new Date((_timeStamp * 1000))) + ")"));
_debug.info(_local1, VisualDebugMode.geek);
};
};
if (_doTracking()){
_handleCookie();
};
if (!_hasInitData){
if (_doTracking()){
_formatedReferrer = _formatReferrer();
_browserInfo = new BrowserInfo(_config, _info);
_debug.info(("browserInfo: " + _browserInfo.toURLString()), VisualDebugMode.advanced);
if (_config.campaignTracking){
_campaign = new CampaignManager(_config, _debug, _buffer, _domainHash, _formatedReferrer, _timeStamp);
_campaignInfo = _campaign.getCampaignInformation(_info.locationSearch, _noSessionInformation);
_debug.info(("campaignInfo: " + _campaignInfo.toURLString()), VisualDebugMode.advanced);
};
};
_x10Module = new X10();
_eventTracker = new X10();
_hasInitData = true;
};
if (_config.hasSiteOverlay){
_debug.warning("Site Overlay is not supported");
};
if (_debug.verbose){
_local2 = "";
_local2 = (_local2 + "_initData (misc)");
_local2 = (_local2 + ("\nflash version: " + _info.flashVersion.toString(4)));
_local2 = (_local2 + ("\nprotocol: " + _info.protocol));
_local2 = (_local2 + (("\ndefault domain name (auto): \"" + _info.domainName) + "\""));
_local2 = (_local2 + ("\nlanguage: " + _info.language));
_local2 = (_local2 + ("\ndomain hash: " + _getDomainHash()));
_local2 = (_local2 + ("\nuser-agent: " + _info.userAgent));
_debug.info(_local2, VisualDebugMode.geek);
};
}
public function getDetectTitle():Boolean{
_debug.info("getDetectTitle()");
return (_config.detectTitle);
}
public function resetSession():void{
_debug.info("resetSession()");
_buffer.resetCurrentSession();
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_config.detectClientInfo);
}
private function _sendXEvent(_arg1:X10=null):void{
var _local2:Variables;
var _local3:EventInfo;
var _local4:Variables;
var _local5:Variables;
_initData();
if (_takeSample()){
_local2 = new Variables();
_local2.URIencode = true;
_local3 = new EventInfo(true, _x10Module, _arg1);
_local4 = _local3.toVariables();
_local5 = _renderMetricsSearchVariables();
_local2.join(_local4, _local5);
_gifRequest.send(_account, _local2, false, true);
};
}
public function setDetectFlash(_arg1:Boolean):void{
_config.detectFlash = _arg1;
_debug.info((("setDetectFlash( " + _config.detectFlash) + " )"));
}
public function setCampNameKey(_arg1:String):void{
_config.campaignKey.UCCN = _arg1;
var _local2 = (("setCampNameKey( " + _config.campaignKey.UCCN) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCCN]"));
} else {
_debug.info(_local2);
};
}
private function _formatReferrer():String{
var _local2:String;
var _local3:URL;
var _local4:URL;
var _local1:String = _info.referrer;
if ((((_local1 == "")) || ((_local1 == "localhost")))){
_local1 = "-";
} else {
_local2 = _info.domainName;
_local3 = new URL(_local1);
_local4 = new URL(("http://" + _local2));
if (_local3.hostName == _local2){
return ("-");
};
if (_local4.domain == _local3.domain){
if (_local4.subDomain != _local3.subDomain){
_local1 = "0";
};
};
if ((((_local1.charAt(0) == "[")) && (_local1.charAt((_local1.length - 1))))){
_local1 = "-";
};
};
_debug.info(("formated referrer: " + _local1), VisualDebugMode.advanced);
return (_local1);
}
private function _visitCode():Number{
if (_debug.verbose){
_debug.info(("visitCode: " + _buffer.utma.sessionId), VisualDebugMode.geek);
};
return (_buffer.utma.sessionId);
}
public function createEventTracker(_arg1:String):EventTracker{
_debug.info((("createEventTracker( " + _arg1) + " )"));
return (new EventTracker(_arg1, this));
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_debug.warning((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " ) not implemented"));
}
public function clearIgnoredOrganic():void{
_debug.info("clearIgnoredOrganic()");
_config.organic.clearIgnoredKeywords();
}
public function setVar(_arg1:String):void{
var _local2:Variables;
if (((!((_arg1 == ""))) && (_isNotGoogleSearch()))){
_initData();
_buffer.utmv.domainHash = _domainHash;
_buffer.utmv.value = _arg1;
if (_debug.verbose){
_debug.info(_buffer.utmv.toString(), VisualDebugMode.geek);
};
_debug.info((("setVar( " + _arg1) + " )"));
if (_takeSample()){
_local2 = new Variables();
_local2.utmt = "var";
_gifRequest.send(_account, _local2);
};
} else {
_debug.warning((("setVar \"" + _arg1) + "\" is ignored"));
};
}
public function setDomainName(_arg1:String):void{
if (_arg1 == "auto"){
_config.domain.mode = DomainNameMode.auto;
} else {
if (_arg1 == "none"){
_config.domain.mode = DomainNameMode.none;
} else {
_config.domain.mode = DomainNameMode.custom;
_config.domain.name = _arg1;
};
};
_updateDomainName();
_debug.info((("setDomainName( " + _config.domainName) + " )"));
}
private function _updateDomainName():void{
var _local1:String;
if (_config.domain.mode == DomainNameMode.auto){
_local1 = _info.domainName;
if (_local1.substring(0, 4) == "www."){
_local1 = _local1.substring(4);
};
_config.domain.name = _local1;
};
_config.domainName = _config.domain.name.toLowerCase();
_debug.info(("domain name: " + _config.domainName), VisualDebugMode.advanced);
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
_debug.warning((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " ) not implemented"));
return (null);
}
private function _renderMetricsSearchVariables(_arg1:String=""):Variables{
var _local4:Variables;
var _local2:Variables = new Variables();
_local2.URIencode = true;
var _local3:DocumentInfo = new DocumentInfo(_config, _info, _formatedReferrer, _arg1, _adSense);
_debug.info(("docInfo: " + _local3.toURLString()), VisualDebugMode.geek);
if (_config.campaignTracking){
_local4 = _campaignInfo.toVariables();
};
var _local5:Variables = _browserInfo.toVariables();
_local2.join(_local3.toVariables(), _local5, _local4);
return (_local2);
}
public function setCampContentKey(_arg1:String):void{
_config.campaignKey.UCCT = _arg1;
var _local2 = (("setCampContentKey( " + _config.campaignKey.UCCT) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCCT]"));
} else {
_debug.info(_local2);
};
}
private function _handleCookie():void{
var _local1:String;
var _local2:String;
var _local3:Array;
var _local4:String;
if (_config.allowLinker){
};
if (((_buffer.hasUTMA()) && (!(_buffer.utma.isEmpty())))){
if (((!(_buffer.hasUTMB())) || (!(_buffer.hasUTMC())))){
_buffer.updateUTMA(_timeStamp);
_noSessionInformation = true;
};
if (_debug.verbose){
_debug.info(("from cookie " + _buffer.utma.toString()), VisualDebugMode.geek);
};
} else {
_debug.info("create a new utma", VisualDebugMode.advanced);
_buffer.utma.domainHash = _domainHash;
_buffer.utma.sessionId = _getUniqueSessionId();
_buffer.utma.firstTime = _timeStamp;
_buffer.utma.lastTime = _timeStamp;
_buffer.utma.currentTime = _timeStamp;
_buffer.utma.sessionCount = 1;
if (_debug.verbose){
_debug.info(_buffer.utma.toString(), VisualDebugMode.geek);
};
_noSessionInformation = true;
_isNewVisitor = true;
};
if (((_adSense.gaGlobal) && ((_adSense.dh == String(_domainHash))))){
if (_adSense.sid){
_buffer.utma.currentTime = Number(_adSense.sid);
if (_debug.verbose){
_local1 = "";
_local1 = (_local1 + "AdSense sid found\n");
_local1 = (_local1 + (((("Override currentTime(" + _buffer.utma.currentTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")"));
_debug.info(_local1, VisualDebugMode.geek);
};
};
if (_isNewVisitor){
if (_adSense.sid){
_buffer.utma.lastTime = Number(_adSense.sid);
if (_debug.verbose){
_local2 = "";
_local2 = (_local2 + "AdSense sid found (new visitor)\n");
_local2 = (_local2 + (((("Override lastTime(" + _buffer.utma.lastTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")"));
_debug.info(_local2, VisualDebugMode.geek);
};
};
if (_adSense.vid){
_local3 = _adSense.vid.split(".");
_buffer.utma.sessionId = Number(_local3[0]);
_buffer.utma.firstTime = Number(_local3[1]);
if (_debug.verbose){
_local4 = "";
_local4 = (_local4 + "AdSense vid found (new visitor)\n");
_local4 = (_local4 + (((("Override sessionId(" + _buffer.utma.sessionId) + ") from AdSense vid(") + Number(_local3[0])) + ")\n"));
_local4 = (_local4 + (((("Override firstTime(" + _buffer.utma.firstTime) + ") from AdSense vid(") + Number(_local3[1])) + ")"));
_debug.info(_local4, VisualDebugMode.geek);
};
};
if (_debug.verbose){
_debug.info(("AdSense modified : " + _buffer.utma.toString()), VisualDebugMode.geek);
};
};
};
_buffer.utmb.domainHash = _domainHash;
if (isNaN(_buffer.utmb.trackCount)){
_buffer.utmb.trackCount = 0;
};
if (isNaN(_buffer.utmb.token)){
_buffer.utmb.token = _config.tokenCliff;
};
if (isNaN(_buffer.utmb.lastTime)){
_buffer.utmb.lastTime = _buffer.utma.currentTime;
};
_buffer.utmc.domainHash = _domainHash;
if (_debug.verbose){
_debug.info(_buffer.utmb.toString(), VisualDebugMode.advanced);
_debug.info(_buffer.utmc.toString(), VisualDebugMode.advanced);
};
}
public function setLocalServerMode():void{
_config.serverMode = ServerOperationMode.local;
_debug.info("setLocalServerMode()");
}
public function clearIgnoredRef():void{
_debug.info("clearIgnoredRef()");
_config.organic.clearIgnoredReferrals();
}
public function setCampSourceKey(_arg1:String):void{
_config.campaignKey.UCSR = _arg1;
var _local2 = (("setCampSourceKey( " + _config.campaignKey.UCSR) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCSR]"));
} else {
_debug.info(_local2);
};
}
public function getLocalGifPath():String{
_debug.info("getLocalGifPath()");
return (_config.localGIFpath);
}
public function setLocalGifPath(_arg1:String):void{
_config.localGIFpath = _arg1;
_debug.info((("setLocalGifPath( " + _config.localGIFpath) + " )"));
}
public function getVersion():String{
_debug.info("getVersion()");
return (_config.version);
}
public function setAllowAnchor(_arg1:Boolean):void{
_config.allowAnchor = _arg1;
_debug.info((("setAllowAnchor( " + _config.allowAnchor) + " )"));
}
private function _isNotGoogleSearch():Boolean{
var _local1:String = _config.domainName;
var _local2 = (_local1.indexOf("www.google.") < 0);
var _local3 = (_local1.indexOf(".google.") < 0);
var _local4 = (_local1.indexOf("google.") < 0);
var _local5 = (_local1.indexOf("google.org") > -1);
return (((((((((_local2) || (_local3))) || (_local4))) || (!((_config.cookiePath == "/"))))) || (_local5)));
}
public function setSampleRate(_arg1:Number):void{
if (_arg1 < 0){
_debug.warning("sample rate can not be negative, ignoring value.");
} else {
_config.sampleRate = _arg1;
};
_debug.info((("setSampleRate( " + _config.sampleRate) + " )"));
}
private function _takeSample():Boolean{
if (_debug.verbose){
_debug.info((((("takeSample: (" + (_visitCode() % 10000)) + ") < (") + (_config.sampleRate * 10000)) + ")"), VisualDebugMode.geek);
};
return (((_visitCode() % 10000) < (_config.sampleRate * 10000)));
}
public function setCookiePath(_arg1:String):void{
_config.cookiePath = _arg1;
_debug.info((("setCookiePath( " + _config.cookiePath) + " )"));
}
public function setAllowHash(_arg1:Boolean):void{
_config.allowDomainHash = _arg1;
_debug.info((("setAllowHash( " + _config.allowDomainHash) + " )"));
}
private function _generateUserDataHash():Number{
var _local1 = "";
_local1 = (_local1 + _info.appName);
_local1 = (_local1 + _info.appVersion);
_local1 = (_local1 + _info.language);
_local1 = (_local1 + _info.platform);
_local1 = (_local1 + _info.userAgent.toString());
_local1 = (_local1 + (((_info.screenWidth + "x") + _info.screenHeight) + _info.screenColorDepth));
_local1 = (_local1 + _info.referrer);
return (Utils.generateHash(_local1));
}
public function setCampNOKey(_arg1:String):void{
_config.campaignKey.UCNO = _arg1;
var _local2 = (("setCampNOKey( " + _config.campaignKey.UCNO) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCNO]"));
} else {
_debug.info(_local2);
};
}
public function addIgnoredOrganic(_arg1:String):void{
_debug.info((("addIgnoredOrganic( " + _arg1) + " )"));
_config.organic.addIgnoredKeyword(_arg1);
}
public function setLocalRemoteServerMode():void{
_config.serverMode = ServerOperationMode.both;
_debug.info("setLocalRemoteServerMode()");
}
public function cookiePathCopy(_arg1:String):void{
_debug.warning((("cookiePathCopy( " + _arg1) + " ) not implemented"));
}
public function setDetectTitle(_arg1:Boolean):void{
_config.detectTitle = _arg1;
_debug.info((("setDetectTitle( " + _config.detectTitle) + " )"));
}
public function setCampTermKey(_arg1:String):void{
_config.campaignKey.UCTR = _arg1;
var _local2 = (("setCampTermKey( " + _config.campaignKey.UCTR) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCTR]"));
} else {
_debug.info(_local2);
};
}
public function getServiceMode():ServerOperationMode{
_debug.info("getServiceMode()");
return (_config.serverMode);
}
private function _trackMetrics(_arg1:String=""):void{
var _local2:Variables;
var _local3:Variables;
var _local4:Variables;
var _local5:EventInfo;
if (_takeSample()){
_local2 = new Variables();
_local2.URIencode = true;
if (((_x10Module) && (_x10Module.hasData()))){
_local5 = new EventInfo(false, _x10Module);
_local3 = _local5.toVariables();
};
_local4 = _renderMetricsSearchVariables(_arg1);
_local2.join(_local3, _local4);
_gifRequest.send(_account, _local2);
};
}
public function setCampaignTrack(_arg1:Boolean):void{
_config.campaignTracking = _arg1;
_debug.info((("setCampaignTrack( " + _config.campaignTracking) + " )"));
}
public function addIgnoredRef(_arg1:String):void{
_debug.info((("addIgnoredRef( " + _arg1) + " )"));
_config.organic.addIgnoredReferral(_arg1);
}
public function clearOrganic():void{
_debug.info("clearOrganic()");
_config.organic.clearEngines();
}
public function getDetectFlash():Boolean{
_debug.info("getDetectFlash()");
return (_config.detectFlash);
}
public function setCampMediumKey(_arg1:String):void{
_config.campaignKey.UCMD = _arg1;
var _local2 = (("setCampMediumKey( " + _config.campaignKey.UCMD) + " )");
if (_debug.mode == VisualDebugMode.geek){
_debug.info((_local2 + " [UCMD]"));
} else {
_debug.info(_local2);
};
}
private function _getUniqueSessionId():Number{
var _local1:Number = ((Utils.generate32bitRandom() ^ _generateUserDataHash()) * 2147483647);
_debug.info(("Session ID: " + _local1), VisualDebugMode.geek);
return (_local1);
}
private function _getDomainHash():Number{
if (((((!(_config.domainName)) || ((_config.domainName == "")))) || ((_config.domain.mode == DomainNameMode.none)))){
_config.domainName = "";
return (1);
};
_updateDomainName();
if (_config.allowDomainHash){
return (Utils.generateHash(_config.domainName));
};
return (1);
}
public function setSessionTimeout(_arg1:int):void{
_config.sessionTimeout = _arg1;
_debug.info((("setSessionTimeout( " + _config.sessionTimeout) + " )"));
}
public function getAccount():String{
_debug.info("getAccount()");
return (_account);
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_debug.warning((("link( " + [_arg1, _arg2].join(", ")) + " ) not implemented"));
}
public function setRemoteServerMode():void{
_config.serverMode = ServerOperationMode.remote;
_debug.info("setRemoteServerMode()");
}
}
}//package com.google.analytics.v4
Section 100
//AnalyticsTracker (com.google.analytics.AnalyticsTracker)
package com.google.analytics {
import flash.events.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
public interface AnalyticsTracker extends GoogleAnalyticsAPI, IEventDispatcher {
function set account(_arg1:String):void;
function get config():Configuration;
function get mode():String;
function set config(_arg1:Configuration):void;
function set mode(_arg1:String):void;
function set debug(_arg1:DebugConfiguration):void;
function get visualDebug():Boolean;
function get account():String;
function set visualDebug(_arg1:Boolean):void;
function isReady():Boolean;
function get debug():DebugConfiguration;
}
}//package com.google.analytics
Section 101
//API (com.google.analytics.API)
package com.google.analytics {
import com.google.analytics.utils.*;
public class API {
public static var version:Version = new Version();
version.major = 1;
version.minor = 0;
version.build = 1;
version.revision = "$Rev: 319 $ ".split(" ")[1];
}
}//package com.google.analytics
Section 102
//GATracker (com.google.analytics.GATracker)
package com.google.analytics {
import flash.display.*;
import flash.events.*;
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import com.google.analytics.utils.*;
import com.google.analytics.external.*;
import com.google.analytics.events.*;
public class GATracker implements AnalyticsTracker {
private var _adSense:AdSenseGlobals;
private var _env:Environment;
private var _visualDebug:Boolean;
private var _idleTimer:IdleTimer;
private var _debug:DebugConfiguration;
private var _buffer:Buffer;
private var _config:Configuration;
private var _mode:String;
private var _display:DisplayObject;
private var _jsproxy:JavascriptProxy;
private var _dom:HTMLDOM;
private var _eventDispatcher:EventDispatcher;
private var _ready:Boolean;// = false
private var _gifRequest:GIFRequest;
private var _account:String;
private var _tracker:GoogleAnalyticsAPI;
public static var version:Version = API.version;
public static var autobuild:Boolean = true;
public function GATracker(_arg1:DisplayObject, _arg2:String, _arg3:String="AS3", _arg4:Boolean=false, _arg5:Configuration=null, _arg6:DebugConfiguration=null){
_display = _arg1;
_eventDispatcher = new EventDispatcher(this);
_tracker = new TrackerCache();
this.account = _arg2;
this.mode = _arg3;
this.visualDebug = _arg4;
if (!_arg6){
this.debug = new DebugConfiguration();
};
if (!_arg5){
this.config = new Configuration(_arg6);
};
if (autobuild){
_factory();
};
}
public function link(_arg1:String, _arg2:Boolean=false):void{
_tracker.link(_arg1, _arg2);
}
public function addOrganic(_arg1:String, _arg2:String):void{
_tracker.addOrganic(_arg1, _arg2);
}
public function setAllowLinker(_arg1:Boolean):void{
_tracker.setAllowLinker(_arg1);
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4));
}
public function setCookieTimeout(_arg1:int):void{
_tracker.setCookieTimeout(_arg1);
}
public function trackTrans():void{
_tracker.trackTrans();
}
public function getClientInfo():Boolean{
return (_tracker.getClientInfo());
}
public function trackPageview(_arg1:String=""):void{
_tracker.trackPageview(_arg1);
}
public function setClientInfo(_arg1:Boolean):void{
_tracker.setClientInfo(_arg1);
}
public function get account():String{
return (_account);
}
public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{
_tracker.linkByPost(_arg1, _arg2);
}
public function getDetectTitle():Boolean{
return (_tracker.getDetectTitle());
}
public function dispatchEvent(_arg1:Event):Boolean{
return (_eventDispatcher.dispatchEvent(_arg1));
}
public function get config():Configuration{
return (_config);
}
public function set mode(_arg1:String):void{
_mode = _arg1;
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
_eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
}
public function setDetectFlash(_arg1:Boolean):void{
_tracker.setDetectFlash(_arg1);
}
public function resetSession():void{
_tracker.resetSession();
}
public function setCampNameKey(_arg1:String):void{
_tracker.setCampNameKey(_arg1);
}
public function get debug():DebugConfiguration{
return (_debug);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{
_tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
private function _bridgeFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account));
return (new Bridge(account, _debug, _jsproxy));
}
public function clearIgnoredOrganic():void{
_tracker.clearIgnoredOrganic();
}
public function set account(_arg1:String):void{
_account = _arg1;
}
public function setVar(_arg1:String):void{
_tracker.setVar(_arg1);
}
public function build():void{
if (!isReady()){
_factory();
};
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
_eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function setDomainName(_arg1:String):void{
_tracker.setDomainName(_arg1);
}
public function createEventTracker(_arg1:String):EventTracker{
return (_tracker.createEventTracker(_arg1));
}
public function setCampSourceKey(_arg1:String):void{
_tracker.setCampSourceKey(_arg1);
}
public function set config(_arg1:Configuration):void{
_config = _arg1;
}
public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{
return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8));
}
public function setCampContentKey(_arg1:String):void{
_tracker.setCampContentKey(_arg1);
}
public function willTrigger(_arg1:String):Boolean{
return (_eventDispatcher.willTrigger(_arg1));
}
public function setLocalServerMode():void{
_tracker.setLocalServerMode();
}
public function getLocalGifPath():String{
return (_tracker.getLocalGifPath());
}
public function setAllowAnchor(_arg1:Boolean):void{
_tracker.setAllowAnchor(_arg1);
}
public function clearIgnoredRef():void{
_tracker.clearIgnoredRef();
}
public function isReady():Boolean{
return (_ready);
}
public function get mode():String{
return (_mode);
}
public function set debug(_arg1:DebugConfiguration):void{
_debug = _arg1;
}
public function setLocalGifPath(_arg1:String):void{
_tracker.setLocalGifPath(_arg1);
}
public function getVersion():String{
return (_tracker.getVersion());
}
public function setSampleRate(_arg1:Number):void{
_tracker.setSampleRate(_arg1);
}
public function setCookiePath(_arg1:String):void{
_tracker.setCookiePath(_arg1);
}
public function setAllowHash(_arg1:Boolean):void{
_tracker.setAllowHash(_arg1);
}
public function addIgnoredOrganic(_arg1:String):void{
_tracker.addIgnoredOrganic(_arg1);
}
public function setLocalRemoteServerMode():void{
_tracker.setLocalRemoteServerMode();
}
public function cookiePathCopy(_arg1:String):void{
_tracker.cookiePathCopy(_arg1);
}
private function _factory():void{
var _local1:GoogleAnalyticsAPI;
_jsproxy = new JavascriptProxy(debug);
if (visualDebug){
debug.layout = new Layout(debug, _display);
debug.active = visualDebug;
};
var _local2:TrackerCache = (_tracker as TrackerCache);
switch (mode){
case TrackerMode.BRIDGE:
_local1 = _bridgeFactory();
break;
case TrackerMode.AS3:
default:
_local1 = _trackerFactory();
};
if (!_local2.isEmpty()){
_local2.tracker = _local1;
_local2.flush();
};
_tracker = _local1;
_ready = true;
dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this));
}
public function setCampTermKey(_arg1:String):void{
_tracker.setCampTermKey(_arg1);
}
private function _trackerFactory():GoogleAnalyticsAPI{
debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account));
_adSense = new AdSenseGlobals(debug);
_dom = new HTMLDOM(debug);
_dom.cacheProperties();
_env = new Environment("", "", "", debug, _dom);
_buffer = new Buffer(config, debug, false);
_gifRequest = new GIFRequest(config, debug, _buffer, _env);
_idleTimer = new IdleTimer(config, debug, _display, _buffer);
_env.url = _display.stage.loaderInfo.url;
return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense));
}
public function setCampNOKey(_arg1:String):void{
_tracker.setCampNOKey(_arg1);
}
public function setDetectTitle(_arg1:Boolean):void{
_tracker.setDetectTitle(_arg1);
}
public function getServiceMode():ServerOperationMode{
return (_tracker.getServiceMode());
}
public function clearOrganic():void{
_tracker.clearOrganic();
}
public function setCampaignTrack(_arg1:Boolean):void{
_tracker.setCampaignTrack(_arg1);
}
public function addIgnoredRef(_arg1:String):void{
_tracker.addIgnoredRef(_arg1);
}
public function set visualDebug(_arg1:Boolean):void{
_visualDebug = _arg1;
}
public function setCampMediumKey(_arg1:String):void{
_tracker.setCampMediumKey(_arg1);
}
public function getDetectFlash():Boolean{
return (_tracker.getDetectFlash());
}
public function get visualDebug():Boolean{
return (_visualDebug);
}
public function hasEventListener(_arg1:String):Boolean{
return (_eventDispatcher.hasEventListener(_arg1));
}
public function getAccount():String{
return (_tracker.getAccount());
}
public function setSessionTimeout(_arg1:int):void{
_tracker.setSessionTimeout(_arg1);
}
public function setRemoteServerMode():void{
_tracker.setRemoteServerMode();
}
}
var _local1:* = ServerOperationMode;
return (_local1);
}//package com.google.analytics
Section 103
//Action (core.Action)
package core {
public class Action {
public var string:String;
public var params:Array;
public function Action(_arg1:String, _arg2:Array){
this.string = _arg1;
this.params = _arg2;
}
public function toString():String{
return (((string + "::") + params.toString()));
}
}
}//package core
Section 104
//BcwStinger (core.BcwStinger)
package core {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.system.*;
public class BcwStinger extends Loader {
public static const STINGER_COMPLETE:String = "bcwStingerCompletedPlayback";
public static var isComplete:Boolean = false;
public function BcwStinger():void{
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true);
}
private function onStingerLoadComplete(_arg1:Event):void{
this.addEventListener(Event.ENTER_FRAME, onEnterFrame, false, 0, true);
}
private function onStingerLoadProgrees(_arg1:ProgressEvent):void{
var _local2:String;
_local2 = String(Math.floor(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100)));
}
private function onAddedToStage(_arg1:Event):void{
var _local2:String;
var _local3:URLRequest;
Security.allowDomain(Config.BCW_STINGER_URL);
_local2 = Config.BCW_STINGER_URL;
if (!_local2){
_local2 = "stinger.swf";
};
this.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onStingerLoadProgrees);
this.contentLoaderInfo.addEventListener(Event.COMPLETE, onStingerLoadComplete);
this.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus);
this.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
_local3 = new URLRequest(_local2);
this.load(_local3);
}
private function onEnterFrame(_arg1:Event):void{
var _local2:MovieClip;
_local2 = MovieClip(this.content);
if ((((((_local2.currentFrame > 1)) && ((_local2.currentFrame == _local2.scenes[(_local2.scenes.length - 1)].numFrames)))) && ((_local2.currentScene.name == _local2.scenes[(_local2.scenes.length - 1)].name)))){
BcwStinger.isComplete = true;
this.dispatchEvent(new Event(BcwStinger.STINGER_COMPLETE));
this.destroy();
};
}
private function onHTTPStatus(_arg1:HTTPStatusEvent):void{
trace(_arg1);
}
private function onIOError(_arg1:IOErrorEvent):void{
trace(_arg1);
this.dispatchEvent(new Event(BcwStinger.STINGER_COMPLETE));
this.destroy();
}
public function destroy():void{
this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
this.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
this.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, onStingerLoadProgrees);
this.contentLoaderInfo.removeEventListener(Event.COMPLETE, onStingerLoadComplete);
this.contentLoaderInfo.removeEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus);
this.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
this.parent.removeChild(this);
}
}
}//package core
Section 105
//Boom (core.Boom)
package core {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
public class Boom extends Sprite {
public var startX:Number;
public var vector:Point;
public var stopX:Number;
public function init():void{
var _local1:int;
var _local2:Dot;
if (parent == null){
return;
};
startX = 0;
stopX = 30;
_local1 = 30;
while (_local1 > 0) {
_local2 = new Dot();
_local2.scaleX = (Math.random() + 1);
_local2.scaleY = (Math.random() + 1);
_local2.startX = 0;
_local2.stopX = (stopX * (Math.random() + 0.5));
_local2.rotation = (Math.random() * 360);
addChild(_local2);
_local1--;
};
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:int;
var _local3:Dot;
var _local4:Number;
if (numChildren == 0){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
parent.removeChild(this);
};
_local2 = 0;
while (_local2 < numChildren) {
if (getChildAt(_local2).scaleX < 0.01){
removeChildAt(_local2);
} else {
_local3 = (getChildAt(_local2) as Dot);
_local3.scaleX = (_local3.scaleX * 0.85);
_local3.scaleY = (_local3.scaleY * 0.85);
_local3.startX = (_local3.startX + ((_local3.stopX - _local3.startX) / 10));
_local4 = ((Math.PI * _local3.rotation) / 180);
_local3.x = ((_local3.startX * Math.cos(_local4)) + 0);
_local3.y = ((-(_local3.startX) * Math.sin(_local4)) + 0);
_local2++;
};
};
}
}
}//package core
Section 106
//BridgeCraft (core.BridgeCraft)
package core {
import flash.display.*;
import levels.*;
import flash.events.*;
import flash.net.*;
import picaso.*;
import map.*;
import utils.*;
import flash.utils.*;
import sounds.*;
import com.candystand.ScoreSubmit.*;
import vis.*;
import hud.*;
import menu.*;
import flash.ui.*;
import flash.system.*;
public dynamic class BridgeCraft extends Sprite {
private const HELP_SCREEN:int = 2;
private const MENU_SCREEN:int = 1;
private const CREDITS_SCREEN:int = 3;
private var sharedObject:SharedObject;
private var playedFirstTime:Boolean;// = true
private var _openedStoryLevels:int;// = 0
private var currentDifficulty:int;// = 0
private var prevScreenType:int;
private var _needHelp:Boolean;// = false
private var loaderScreen:LoaderScreen;
private var _showWin:Boolean;// = true
private var _sounds:Boolean;
private var fadingOut:Boolean;// = false
private var loadingAdText:LoadingAdText;
private var _whiteFader:Sprite;
public var _cursor:Cursor;
private var _fader:Fader;
private var _currentScore:Number;// = 0
private var _newGame:Boolean;// = false
private var _levels:Array;
private var _counter:int;// = 0
private var _musicArray:Array;
private var fadeDivider:Number;// = 3
private var _screenToFade;
private var _storyLevels:Array;
private var playerName:String;// = "Player"
private var _music:Boolean;
private var fadingIn:Boolean;// = false
private var _playingStory:Boolean;// = false
private var backGround;
private var logoCS:TheirLogo;
private var _contactUs:ContactUsButton;
private var prevMouseTypes:Array;
private var _currentLevel:Number;// = 0
private var _isLevelOpened:Array;
private var _screen;
private var returnToMap:Boolean;// = false
private var _submitScore:Boolean;// = false
private var currentPage:int;// = 0
private var logo:OurLogo;
private var _soundsArray:Array;
public var _soundPanel:SoundPanel;
private var levelCounter:int;// = 0
private var _showIntro:Boolean;// = true
public static const UNLOAD_COMPLETE:String = "screanUnloadComplete";
public static const LOAD_COMPLETE:String = "screanLoadComplete";
public function BridgeCraft(){
_currentLevel = 0;
_currentScore = 0;
_needHelp = false;
_showWin = true;
_playingStory = false;
_showIntro = true;
_openedStoryLevels = 0;
playedFirstTime = true;
playerName = "Player";
currentPage = 0;
prevMouseTypes = [];
fadeDivider = 3;
fadingIn = false;
fadingOut = false;
_counter = 0;
currentDifficulty = 0;
_newGame = false;
returnToMap = false;
_submitScore = false;
levelCounter = 0;
super();
}
private function mapLevelSelectHandler(_arg1:MapEvent):void{
this.afterMapCleanup();
_currentLevel = _arg1.level;
currentPage = (_screen as MapClass).page;
loadLevel(_currentLevel);
}
private function loadLevelZero():void{
this.logo.visible = false;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = false;
};
this._soundPanel.visible = true;
this.backGround.visible = false;
this._contactUs.visible = false;
clearScreen();
this.sharedObject.data.isLevelOpened[(_currentLevel - 1)] = true;
this.sharedObject.flush();
_screen = new Level00();
(_screen as LevelManager).needHelp = _needHelp;
(_screen as LevelManager).winBudget = _levels[(_currentLevel - 1)];
(_screen as LevelManager).levelDifficulty = this.currentDifficulty;
(_screen as LevelManager).playerName = this.playerName.concat();
addChildAt(_screen, 1);
_screen.init(_playingStory);
addEventListener(Config.EVENT_LEVEL_CLOSE, levelCloseHandler, false, 0, true);
addEventListener(Config.EVENT_LEVEL_CLOSE_TO_MENU, levelCloseToMenuHandler, false, 0, true);
addEventListener(Config.EVENT_LEVEL_NEXT, nextLevel, false, 0, true);
addEventListener(Config.EVENT_LEVEL_CLOSE_AND_QUIT, onQuitSubmitExit, false, 0, true);
}
private function helpCloseHandler(_arg1:Event):void{
this.removeEventListener(Config.EVENT_HELP_CLOSE, helpCloseHandler);
loadMenu();
}
private function mapSubmitHandler(_arg1:Event):void{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.afterMapCleanup();
this.quitSubmit();
};
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
this.quitSubmit();
};
}
private function onPlayHandler(_arg1:Event):void{
_newGame = true;
_submitScore = false;
GAManager.trackPage("/play-pressed");
}
private function enterFrameHandler(_arg1:Event):void{
trace("total memory", System.totalMemory);
}
private function redrawCursor(_arg1:MouseEvent):void{
Mouse.hide();
_cursor.x = _arg1.stageX;
_cursor.y = _arg1.stageY;
}
private function onFadeInCompleteHandler(_arg1:Event):void{
this._fader.removeEventListener(Fader.COMPLETE, onFadeInCompleteHandler);
}
private function loadLevel(_arg1:Number=1):void{
var _local2:String;
var _local3:Class;
if (this.playedFirstTime){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
Game.newGame(1);
} else {
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
PlayItManager.initGame();
};
};
this.playedFirstTime = false;
};
this.logo.visible = false;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = false;
};
this._soundPanel.visible = true;
this.backGround.visible = false;
this._contactUs.visible = false;
clearScreen();
_currentLevel = _arg1;
this.sharedObject.data.isLevelOpened[(_currentLevel - 1)] = true;
this.sharedObject.flush();
_local2 = ((_arg1)>=10) ? ("levels.Level" + _arg1.toString()) : ("levels.Level0" + _arg1.toString());
_local3 = (getDefinitionByName(_local2) as Class);
_screen = (getWR(new (_local3)).object as _local3);
_screen = new (_local3);
(_screen as LevelManager).needHelp = _needHelp;
(_screen as LevelManager).winBudget = _levels[(_currentLevel - 1)];
(_screen as LevelManager).levelDifficulty = this.currentDifficulty;
(_screen as LevelManager).playerName = this.playerName.concat();
addChildAt(_screen, 1);
_screen.init(_playingStory);
Config.CURRENT_LEVEL = _currentLevel;
addEventListener(Config.EVENT_LEVEL_CLOSE, levelCloseHandler, false, 0, true);
addEventListener(Config.EVENT_LEVEL_CLOSE_TO_MENU, levelCloseToMenuHandler, false, 0, true);
addEventListener(Config.EVENT_LEVEL_NEXT, nextLevel, false, 0, true);
addEventListener(Config.EVENT_LEVEL_CLOSE_AND_QUIT, onQuitSubmitExit, false, 0, true);
}
private function nextLevel(_arg1:Event):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:int;
_local2 = 0;
_local3 = 0;
_local4 = 0;
while (_local4 < _levels.length) {
if ((((_levels[_local4] == 0)) && (_isLevelOpened[_local4]))){
_local2++;
};
if (_levels[_local4] > 0){
_local3++;
};
_local4++;
};
_local5 = (_currentLevel + 1);
if ((((_local5 <= Config.LEVELS_TOTAL)) && (!(_isLevelOpened[(_local5 - 1)])))){
if (_local2 < Config.MAX_OPENED_LEVELS){
_isLevelOpened[(_local5 - 1)] = true;
};
};
this.afterLevelCleanup();
this.afterLevelSaveData();
if (((((_showWin) && ((_local5 > Config.LEVELS_TOTAL)))) && ((_local3 == Config.LEVELS_TOTAL)))){
GAManager.trackPage("/game-completed");
if (Config.VIRAL){
this.loadOutroViral();
} else {
this.loadOutro();
};
} else {
if (_local5 <= Config.LEVELS_TOTAL){
if (_isLevelOpened[(_local5 - 1)]){
this.loadLevel(_local5);
} else {
this.loadMap();
};
} else {
this.loadMap();
};
};
}
private function showOutroHandler(_arg1:Event):void{
this.afterMapCleanup();
this.loadOutro();
}
private function turnTutorialOff(_arg1:Event):void{
this.removeEventListener(Config.EVENT_DO_NOT_NEED_HELP, turnTutorialOff);
_needHelp = false;
}
private function checkCursor(_arg1:Event):void{
var _local2:int;
var _local3:int;
_local2 = stage.getChildIndex(_cursor);
if (_local2 != (stage.numChildren - 1)){
_local3 = _local2;
while (_local3 < (stage.numChildren - 1)) {
stage.swapChildrenAt(_local3, (_local3 + 1));
_local3++;
};
};
}
private function onHardHandler(_arg1:Event):void{
var _local2:int;
this.afterMenuCleanup();
Config.setDifficulty(Config.DIFFICULTY_HARD);
this.currentDifficulty = Config.DIFFICULTY_HARD;
if (_newGame){
_levels = [];
_isLevelOpened = [];
_local2 = 0;
while (_local2 < Config.LEVELS_TOTAL) {
_levels.push(0);
_isLevelOpened.push(false);
_local2++;
};
this.sharedObject.data.levels.hard = _levels;
this.sharedObject.data.isLevelOpened.hard = _isLevelOpened;
if (this.sharedObject.data.solutions){
this.sharedObject.data.solutions.hard = new Array(Config.LEVELS_TOTAL);
};
this.sharedObject.flush();
} else {
_levels = this.sharedObject.data.levels.hard;
_isLevelOpened = this.sharedObject.data.isLevelOpened.hard;
_local2 = 0;
while (_local2 < Config.LEVELS_TOTAL) {
if (_levels[_local2] > 0){
_isLevelOpened[_local2] = true;
};
_local2++;
};
this.sharedObject.data.isLevelOpened.hard = _isLevelOpened;
this.sharedObject.flush();
};
this.sharedObject.data["hard"] = true;
if (_newGame){
GAManager.trackPage("/play-hard-pressed");
_newGame = false;
this.loadWhiteIntro();
} else {
GAManager.trackPage("/continue-hard-pressed");
this.loadMap();
};
}
private function afterLevelCleanup():void{
removeEventListener(Config.EVENT_LEVEL_CLOSE, levelCloseHandler);
removeEventListener(Config.EVENT_LEVEL_CLOSE_TO_MENU, levelCloseToMenuHandler);
removeEventListener(Config.EVENT_LEVEL_NEXT, nextLevel);
removeEventListener(Config.EVENT_LEVEL_CLOSE_AND_QUIT, onQuitSubmitExit);
}
private function navigateToPicasogames(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://picasogames.com"), "_blank");
GAManager.trackPage("/go-to-picasogames-from-logo");
}
private function loadMap():void{
this.logo.visible = true;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = true;
};
this._soundPanel.visible = true;
this.backGround.visible = true;
this._contactUs.visible = false;
clearScreen();
_screen = new MapClass(Config.LEVELS_TOTAL, _levels, _isLevelOpened, _showWin, currentPage);
_screen.x = (Config.SCREEN_WIDTH / 2);
_screen.y = (Config.SCREEN_HEIGHT / 2);
this.addChildAt(_screen, 1);
if (!SoundManager.isSoundPlaying(SoundData.MAIN_THEME)){
SoundData.MAIN_THEME.play();
};
this.addEventListener(Config.EVENT_MAP_LEVEL_SELECT, mapLevelSelectHandler, false, 0, true);
this.addEventListener(Config.EVENT_MAP_CLOSE, mapCloseHandler, false, 0, true);
this.addEventListener(Config.EVENT_MAP_SUBMIT, mapSubmitHandler, false, 0, true);
this.addEventListener(Config.EVENT_SHOW_INTRO, showIntroHandler, false, 0, true);
this.addEventListener(Config.EVENT_SHOW_OUTRO, showOutroHandler, false, 0, true);
}
public function get score():Number{
var _local1:Number;
var _local2:int;
_local1 = 0;
_local2 = 0;
while (_local2 < _levels.length) {
_local1 = (_local1 + _levels[_local2]);
_local2++;
};
return (_local1);
}
private function mouseOutHandler(_arg1:Event):void{
if ((((_cursor.type == Config.MOUSE_TYPE_DRAG)) && ((prevMouseTypes.length > 0)))){
if ((((((((((((((((((((((((((((((_arg1.target is StartButton)) || ((_arg1.target is EditButton)))) || ((_arg1.target is DeckButton)))) || ((_arg1.target is SteelButton)))) || ((_arg1.target is RopeButton)))) || ((_arg1.target is StressButton)))) || ((_arg1.target is UndoButton)))) || ((_arg1.target is ResetButton)))) || ((_arg1.target is ZoomInButton)))) || ((_arg1.target is ZoomOutButton)))) || ((_arg1.target is MusicButton)))) || ((_arg1.target is SoundsButton)))) || ((_arg1.target is SoundPanel)))) || ((_arg1.target is TalkBaloon)))) || ((_arg1.target is HUD)))){
prevMouseTypes.pop();
} else {
_cursor.type = prevMouseTypes.pop();
prevMouseTypes.splice(0);
};
} else {
_cursor.type = Config.MOUSE_TYPE_NORMAL;
};
}
private function afterMapCleanup():void{
removeEventListener(Config.EVENT_MAP_LEVEL_SELECT, mapCloseHandler);
removeEventListener(Config.EVENT_MAP_CLOSE, mapCloseHandler);
removeEventListener(Config.EVENT_MAP_SUBMIT, mapSubmitHandler);
removeEventListener(Config.EVENT_SHOW_INTRO, showIntroHandler);
removeEventListener(Config.EVENT_SHOW_OUTRO, showOutroHandler);
}
private function loadContactUs(_arg1:MouseEvent=null):void{
clearScreen();
this.logo.visible = false;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = false;
};
this._soundPanel.visible = false;
this.backGround.visible = true;
this._contactUs.visible = false;
_screen = new ContactUsScreen();
_screen.x = (Config.SCREEN_WIDTH / 2);
_screen.y = (Config.SCREEN_HEIGHT / 2);
_screen.addEventListener(ContactUsScreen.ON_BACK, closeContactUsScreen, false, 0, true);
this.addChildAt(_screen, 1);
_screen.addEventListener(Event.ENTER_FRAME, checkCursor, false, 0, true);
}
private function clickHandler(_arg1:MouseEvent):void{
Mouse.hide();
}
private function resetStoredData(_arg1:Event):void{
var _local2:int;
_showWin = true;
_showIntro = true;
_levels = [];
_isLevelOpened = [];
_local2 = 0;
while (_local2 < Config.LEVELS_TOTAL) {
_levels.push(0);
_isLevelOpened.push(false);
_local2++;
};
this.sharedObject.data.levels = _levels;
this.sharedObject.data.isLevelOpened = _isLevelOpened;
this.sharedObject.data.name = Config.DEFAULT_PLAYER_NAME;
this.sharedObject.data.intro = _showIntro;
this.sharedObject.data.win = _showWin;
this.sharedObject.data.passedTutorials = [false, false, false];
this.sharedObject.data.introducedHeroes = [];
this.sharedObject.data.solutions = null;
this.sharedObject.flush();
this.playerName = Config.DEFAULT_PLAYER_NAME;
loadMenu();
}
private function outroClose(_arg1:Event):void{
_screen.removeEventListener(Outro.ON_OK, outroClose);
loadMap();
}
private function getWR(_arg1):WeakReference{
return (new WeakReference(_arg1));
}
private function onMochiEnds(_arg1:Event):void{
while (this.backGround.numChildren > 0) {
this.backGround.removeChildAt(0);
};
this.removeChild(this.backGround);
this.backGround = new BlueSky();
this.backGround.scaleX = (Config.SCREEN_WIDTH / this.backGround.width);
this.addChildAt(this.backGround, 0);
this.backGround.visible = false;
if (this.loadingAdText){
this.removeChild(this.loadingAdText);
this.loadingAdText = null;
};
if (this.hasEventListener(Config.EVENT_MOCHI_AD_LOADED)){
this.removeEventListener(Config.EVENT_MOCHI_AD_LOADED, onMochiLoaded);
};
this.removeEventListener(Config.EVENT_MOCHI_AD_ENDS, onMochiEnds);
this._soundPanel.visible = true;
_screen.visible = true;
}
private function afterMenuCleanup():void{
this.logo.x = Config.SCREEN_WIDTH;
this.logo.y = 0;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.x = 0;
this.logoCS.y = 0;
};
removeEventListener(Config.EVENT_ON_PLAY, onPlayHandler);
removeEventListener(Config.EVENT_ON_HELP, onHelpHandler);
removeEventListener(Config.EVENT_ON_CREDITS, onCreditsHandler);
removeEventListener(Config.EVENT_ON_QUIT, onQuitSubmitScoreHandler);
removeEventListener(Config.EVENT_PLAY_EASY, onEasyHandler);
removeEventListener(Config.EVENT_PLAY_NORMAL, onNormalHandler);
removeEventListener(Config.EVENT_PLAY_HARD, onHardHandler);
}
private function onNormalHandler(_arg1:Event):void{
var _local2:int;
this.afterMenuCleanup();
Config.setDifficulty(Config.DIFFICULTY_NORMAL);
this.currentDifficulty = Config.DIFFICULTY_NORMAL;
if (_newGame){
_levels = [];
_isLevelOpened = [];
_local2 = 0;
while (_local2 < Config.LEVELS_TOTAL) {
_levels.push(0);
_isLevelOpened.push(false);
_local2++;
};
this.sharedObject.data.levels.normal = _levels;
this.sharedObject.data.isLevelOpened.normal = _isLevelOpened;
if (this.sharedObject.data.solutions){
this.sharedObject.data.solutions.normal = new Array(Config.LEVELS_TOTAL);
};
this.sharedObject.flush();
} else {
_levels = this.sharedObject.data.levels.normal;
_isLevelOpened = this.sharedObject.data.isLevelOpened.normal;
_local2 = 0;
while (_local2 < Config.LEVELS_TOTAL) {
if (_levels[_local2] > 0){
_isLevelOpened[_local2] = true;
};
_local2++;
};
this.sharedObject.data.isLevelOpened.normal = _isLevelOpened;
this.sharedObject.flush();
};
this.sharedObject.data["normal"] = true;
if (_newGame){
GAManager.trackPage("/play-normal-pressed");
_newGame = false;
if (_showIntro){
this.loadWhiteIntro();
} else {
this.loadLevel();
};
} else {
if (_submitScore){
_submitScore = false;
this.quitSubmit();
} else {
GAManager.trackPage("/continue-normal-pressed");
this.loadMap();
};
};
}
private function loadOutro():void{
this.logo.visible = false;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = false;
};
this._soundPanel.visible = true;
this.backGround.visible = true;
this._contactUs.visible = false;
clearScreen();
_showWin = false;
this.sharedObject.data.win = _showWin;
this.sharedObject.flush();
_screen = new Outro();
_screen.x = (Config.SCREEN_WIDTH / 2);
_screen.y = (Config.SCREEN_HEIGHT / 2);
addChildAt(_screen, 1);
SoundData.STORY_WIN.play();
_screen.addEventListener(Outro.ON_OK, outroClose, false, 0, true);
_screen.init(true);
}
private function introCloseHandler(_arg1:Event):void{
removeEventListener(Config.EVENT_INTRO_CLOSE, introCloseHandler);
loadMenu();
}
private function completeGame(_arg1:Event):void{
this.removeEventListener(Config.EVENT_COMPLETE_GAME_POPUP, completeGame);
_showWin = true;
}
private function showIntroHandler(_arg1:Event):void{
this.afterMapCleanup();
this.loadWhiteIntro(true);
}
private function loadOutroViral():void{
this.logo.visible = false;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = false;
};
this._soundPanel.visible = true;
this.backGround.visible = true;
this._contactUs.visible = false;
clearScreen();
_showWin = false;
this.sharedObject.data.win = _showWin;
this.sharedObject.flush();
_screen = new OutroViral(this.playerName);
_screen.x = (Config.SCREEN_WIDTH / 2);
_screen.y = (Config.SCREEN_HEIGHT / 2);
addChildAt(_screen, 1);
SoundData.MAIN_THEME.play();
_screen.addEventListener(OutroViral.ON_OK, outroClose, false, 0, true);
}
private function testerPopUpDetected(_arg1:Event):void{
if ((((_screen is LevelManager)) && (!(_screen.paused)))){
_screen.pause();
};
if (_fader != null){
return;
};
this._fader = new Fader();
this.addChildAt(this._fader, 2);
this._fader.addEventListener(Fader.COMPLETE, onFadeInCompleteHandler, false, 0, true);
this._fader.fadeIn();
}
private function onQuitSubmitExit(_arg1:Event):void{
var _local2:String;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.afterLevelCleanup();
this.afterLevelSaveData();
_local2 = (_screen as LevelManager).levelWeather.concat();
(_screen as LevelManager).levelWeather = null;
this.quitSubmit(_local2);
};
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
_local2 = (_screen as LevelManager).levelWeather.concat();
(_screen as LevelManager).levelWeather = null;
this.quitSubmit(_local2);
};
}
private function picasoLogoCompleteHandler(_arg1:Event):void{
_screen.removeEventListener(PicasoLogoLite.ON_COMPLETE, picasoLogoCompleteHandler);
loadMenu();
_whiteFader = new Sprite();
_whiteFader.graphics.beginFill(0xFFFFFF, 1);
_whiteFader.graphics.drawRect(0, 0, Config.SCREEN_WIDTH, Config.SCREEN_HEIGHT);
_whiteFader.graphics.endFill();
_whiteFader.mouseEnabled = false;
_whiteFader.mouseChildren = false;
this.addChild(_whiteFader);
this.addEventListener(Event.ENTER_FRAME, whiteFaderHandler, false, 0, true);
}
private function loadCredits():void{
this.logo.visible = true;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = true;
};
this._soundPanel.visible = true;
this.backGround.visible = true;
this._contactUs.visible = true;
clearScreen();
_screen = new CreditsClass();
_screen.x = (Config.SCREEN_WIDTH / 2);
_screen.y = (Config.SCREEN_HEIGHT / 2);
addChildAt(_screen, 1);
this.prevScreenType = CREDITS_SCREEN;
this.addEventListener(Config.EVENT_CREDITS_CLOSE, helpCloseHandler);
}
private function onIntroWhiteEnd(_arg1:Event):void{
removeEventListener(IntroWhite.INTRO_COMPLETE, onIntroWhiteEnd);
if (this.returnToMap){
this.loadMap();
} else {
this.loadLevel();
};
}
private function levelCloseToMenuHandler(_arg1:Event):void{
this.afterLevelCleanup();
this.afterLevelSaveData();
loadMenu();
}
private function onFadeOutCompleteHandler(_arg1:Event):void{
this._fader.removeEventListener(Fader.COMPLETE, onFadeOutCompleteHandler);
this.removeChild(this._fader);
this._fader = null;
}
public function init():void{
var _local1:String;
var _local2:Number;
var _local3:Number;
var _local4:String;
var _local5:Number;
var _local6:Number;
var _local7:int;
var _local8:Object;
var _local9:Array;
var _local10:Array;
_local1 = this.loaderInfo.url;
_local2 = (_local1.indexOf("://") + 3);
_local3 = _local1.indexOf("/", _local2);
_local4 = _local1.substring(_local2, _local3);
_local5 = (_local4.lastIndexOf(".") - 1);
_local6 = (_local4.lastIndexOf(".", _local5) + 1);
_local4 = _local4.substring(_local6, _local4.length);
stage.frameRate = Config.ENGINE_FRAMERATE;
_levels = [];
_isLevelOpened = [];
_local7 = 0;
while (_local7 < Config.LEVELS_TOTAL) {
_levels.push(0);
_isLevelOpened.push(false);
_local7++;
};
this.sharedObject = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (this.sharedObject.size == 0){
this.sharedObject.data.levels = {easy:_levels.slice(), normal:_levels.slice(), hard:_levels.slice()};
this.sharedObject.data.isLevelOpened = {easy:_isLevelOpened.slice(), normal:_isLevelOpened.slice(), hard:_isLevelOpened.slice()};
this.sharedObject.data.name = Config.DEFAULT_PLAYER_NAME;
this.sharedObject.data.intro = _showIntro;
this.sharedObject.data.win = _showWin;
this.sharedObject.data.passedTutorials = [false, false, false, false, false];
this.sharedObject.data.introducedHeroes = [];
this.sharedObject.data.easy = false;
this.sharedObject.data.normal = false;
this.sharedObject.data.hard = false;
this.sharedObject.data.nameIsEntered = false;
Config.easyLevels = this.sharedObject.data.levels.easy;
Config.normalLevels = this.sharedObject.data.levels.normal;
} else {
if (((this.sharedObject.data.levels) && ((this.sharedObject.data.levels is Array)))){
this.sharedObject.data.levels = {easy:_levels.slice(), normal:this.sharedObject.data.levels, hard:_levels.slice()};
this.sharedObject.data.nameIsEntered = true;
_local8 = this.sharedObject.data.solutions[0];
if (_local8){
_local9 = _local8["particles"];
if (_local9){
_local7 = 0;
while (_local7 < _local9.length) {
_local9[_local7].py = (_local9[_local7].py + Config.GRID_HEIGHT);
_local7++;
};
_local9 = null;
};
_local8 = null;
};
_local8 = this.sharedObject.data.solutions[2];
if (_local8){
_local9 = _local8["particles"];
if (_local9){
_local7 = 0;
while (_local7 < _local9.length) {
_local9[_local7].py = (_local9[_local7].py + (2 * Config.GRID_HEIGHT));
_local7++;
};
_local9 = null;
};
_local8 = null;
};
if (((this.sharedObject.data.passedTutorials) && ((this.sharedObject.data.passedTutorials is Array)))){
this.sharedObject.data.passedTutorials.push(false);
this.sharedObject.data.passedTutorials.push(false);
};
};
if (((this.sharedObject.data.isLevelOpened) && ((this.sharedObject.data.isLevelOpened is Array)))){
this.sharedObject.data.isLevelOpened = {easy:_isLevelOpened.slice(), normal:this.sharedObject.data.isLevelOpened, hard:_isLevelOpened.slice()};
};
if ((((this.sharedObject.data.name == null)) || (!((this.sharedObject.data.name is String))))){
this.sharedObject.data.name = Config.DEFAULT_PLAYER_NAME;
} else {
if ((this.sharedObject.data.name is String)){
this.playerName = this.sharedObject.data.name;
};
};
if ((((this.sharedObject.data.intro == null)) || (!((this.sharedObject.data.intro is Boolean))))){
this.sharedObject.data.intro = _showIntro;
} else {
(this.sharedObject.data.intro is Boolean);
};
_showIntro = this.sharedObject.data.intro;
if ((((this.sharedObject.data.win == null)) || (!((this.sharedObject.data.win is Boolean))))){
this.sharedObject.data.win = _showWin;
} else {
(this.sharedObject.data.win is Boolean);
};
_showWin = this.sharedObject.data.win;
if ((((this.sharedObject.data.passedTutorials == null)) || (!((this.sharedObject.data.passedTutorials is Array))))){
this.sharedObject.data.passedTutorials = [false, false, false, false, false];
};
if (this.sharedObject.data.introducedHeroes == null){
this.sharedObject.data.introducedHeroes = [];
};
if (!this.sharedObject.data.easy){
this.sharedObject.data.easy = false;
};
if (!this.sharedObject.data.normal){
this.sharedObject.data.normal = false;
};
if (!this.sharedObject.data.hard){
this.sharedObject.data.hard = false;
};
if (((this.sharedObject.data.solutions) && ((this.sharedObject.data.solutions is Array)))){
_local10 = this.sharedObject.data.solutions;
this.sharedObject.data.solutions = {easy:[], normal:_local10, hard:[]};
this.sharedObject.data.normal = true;
};
Config.easyLevels = this.sharedObject.data.levels.easy;
Config.normalLevels = this.sharedObject.data.levels.normal;
};
this.sharedObject.flush();
_sounds = true;
_music = true;
_soundPanel = new SoundPanel();
_soundPanel.x = Config.SCREEN_WIDTH;
_soundPanel.y = Config.SCREEN_HEIGHT;
addChildAt(_soundPanel, 0);
_soundPanel.qualityButton.setLetter();
this.addEventListener(Config.EVENT_SOUNDS, soundsHandler, false, 0, true);
this.addEventListener(Config.EVENT_MUSIC, musicHandler, false, 0, true);
_contactUs = new ContactUsButton();
_contactUs.x = 46.7;
_contactUs.y = 445.4;
this.addChildAt(_contactUs, 0);
_contactUs.addEventListener(MouseEvent.CLICK, loadContactUs, false, 0, true);
_contactUs.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
_contactUs.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.logo = new OurLogo();
this.logo.x = Config.SCREEN_WIDTH;
this.logo.y = 0;
this.addChild(this.logo);
if (Config.VIRAL){
this.logo.addEventListener(MouseEvent.CLICK, navigateToPicasogames, false, 0, true);
this.logo.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.logo.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS = new TheirLogo();
this.logoCS.x = 0;
this.logoCS.y = 0;
this.addChild(this.logoCS);
if (Config.VIRAL){
this.logoCS.addEventListener(MouseEvent.CLICK, navigateToCS, false, 0, true);
this.logoCS.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.logoCS.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
};
_cursor = new Cursor();
_cursor.mouseEnabled = false;
stage.addChild(_cursor);
Mouse.hide();
_cursor.x = this.mouseX;
_cursor.y = this.mouseY;
stage.addEventListener(MouseEvent.MOUSE_MOVE, redrawCursor, false, 0, true);
addEventListener(Config.EVENT_MOUSE_OVER, mouseOverHandler, false, 0, true);
addEventListener(Config.EVENT_MOUSE_OUT, mouseOutHandler, false, 0, true);
addEventListener(Config.EVENT_MOUSE_DRAG, mouseDragHandler, false, 0, true);
addEventListener(Config.EVENT_MOUSE_HIDE, mouseHideHandler, false, 0, true);
addEventListener(Config.EVENT_MOUSE_SHOW, mouseShowHandler, false, 0, true);
addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
this.backGround = new BlueSky();
this.backGround.scaleX = (Config.SCREEN_WIDTH / this.backGround.width);
this.addChildAt(this.backGround, 0);
this.addEventListener(Config.EVENT_LEVEL_START_LOADING, onLevelStartLoading, false, 0, true);
this.addEventListener(Config.EVENT_LEVEL_LOADED, onLevelLoaded, false, 0, true);
loadMenu();
}
private function onMochiLoaded(_arg1:Event):void{
this.removeEventListener(Config.EVENT_MOCHI_AD_LOADED, onMochiLoaded);
this.removeChild(this.loadingAdText);
this.loadingAdText = null;
}
private function testerPopUpClosed(_arg1:Event):void{
if ((_screen is MapClass)){
_screen.putLevelsButtons();
};
if ((((_screen is LevelManager)) && (_screen.paused))){
_screen.pause();
};
if (_fader == null){
return;
};
this._fader.addEventListener(Fader.COMPLETE, onFadeOutCompleteHandler, false, 0, true);
this._fader.fadeOut();
}
private function onCreditsHandler(_arg1:Event):void{
this.afterMenuCleanup();
loadCredits();
GAManager.trackPage("/credits-pressed");
}
private function clearScreen():void{
if (_screen == null){
return;
};
_cursor.type = Config.MOUSE_TYPE_NORMAL;
_screen.cleanup();
removeChild(_screen);
_screen = null;
}
private function loadIntro():void{
clearScreen();
this._soundPanel.visible = true;
_screen = new IntroClass();
addChildAt(_screen, 1);
addEventListener(Config.EVENT_INTRO_CLOSE, introCloseHandler);
}
private function navigateToCS(_arg1:MouseEvent):void{
navigateToURL(new URLRequest(Config.CS_URL), "_blank");
GAManager.trackPage("/go-to-candystand-from-logo");
}
private function quitSubmit(_arg1:String="weatherday"):void{
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:URLVariables;
var _local6:URLRequest;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.clearScreen();
this.logo.visible = false;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = false;
};
this._soundPanel.visible = false;
this.backGround.visible = false;
this._contactUs.visible = false;
_screen = new LoaderScreen(_arg1, LoaderScreen.TYPE_REDIRECTING);
this.addChildAt(_screen, 1);
GAManager.trackPage("/quit-submit-pressed");
if (!Config.VIRAL){
Game.endGame();
Game.score = this.score;
Game.submitScore();
} else {
_local2 = ((("name=" + this.playerName) + "&score=") + this.score);
_local3 = MD5.hex_md5((_local2 + Config.SECRET_WORD));
_local4 = ((("hash=" + _local3) + "&") + _local2);
_local5 = new URLVariables(_local4);
_local6 = new URLRequest(Config.LEADERBOARD_URL);
_local6.method = URLRequestMethod.POST;
_local6.data = _local5;
navigateToURL(_local6, "_self");
};
};
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
GAManager.trackPage("/quit-submit-pressed");
if (!Config.VIRAL){
PlayItManager.submitScore(this.score);
};
};
}
private function loadWhiteIntro(_arg1:Boolean=false):void{
this.logo.visible = false;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = false;
};
this._soundPanel.visible = true;
this.backGround.visible = true;
this._contactUs.visible = false;
clearScreen();
_showIntro = false;
this.sharedObject.data.intro = _showIntro;
this.sharedObject.flush();
this.returnToMap = _arg1;
_screen = new IntroWhite();
(_screen as IntroWhite).x = (Config.SCREEN_WIDTH / 2);
(_screen as IntroWhite).y = (Config.SCREEN_HEIGHT / 2);
addChildAt(_screen, 1);
addEventListener(IntroWhite.INTRO_COMPLETE, onIntroWhiteEnd);
}
private function onLevelLoaded(_arg1:Event):void{
_soundPanel.visible = true;
}
private function loadMenu():void{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logo.visible = true;
this.logo.x = 535;
this.logo.y = 38.2;
} else {
this.logo.visible = true;
this.logo.x = 415;
this.logo.y = 20.4;
};
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = true;
this.logoCS.x = 81.2;
this.logoCS.y = 37.5;
};
this._soundPanel.visible = true;
this.backGround.visible = true;
this._contactUs.visible = true;
clearScreen();
_screen = new MenuClass();
addChildAt(_screen, 1);
this.prevScreenType = MENU_SCREEN;
if (!SoundManager.isSoundPlaying(SoundData.MAIN_THEME)){
SoundData.MAIN_THEME.play();
};
addEventListener(Config.EVENT_ON_PLAY, onPlayHandler, false, 0, true);
addEventListener(Config.EVENT_ON_HELP, onHelpHandler, false, 0, true);
addEventListener(Config.EVENT_ON_CREDITS, onCreditsHandler, false, 0, true);
addEventListener(Config.EVENT_ON_QUIT, onQuitSubmitScoreHandler, false, 0, true);
addEventListener(Config.EVENT_PLAY_EASY, onEasyHandler, false, 0, true);
addEventListener(Config.EVENT_PLAY_NORMAL, onNormalHandler, false, 0, true);
addEventListener(Config.EVENT_PLAY_HARD, onHardHandler, false, 0, true);
}
private function soundsHandler(_arg1:Event):void{
if (_sounds){
SoundManager.mute(SoundData.SOUND_CHANNELS);
_sounds = false;
GAManager.trackPage("/sounds-muted");
} else {
SoundManager.unmute(SoundData.SOUND_CHANNELS);
_sounds = true;
GAManager.trackPage("/sounds-unmuted");
};
}
private function loadHelp():void{
this.logo.visible = true;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = true;
};
this._soundPanel.visible = true;
this._contactUs.visible = true;
clearScreen();
_screen = new HelpClass();
_screen.x = (Config.SCREEN_WIDTH / 2);
_screen.y = (Config.SCREEN_HEIGHT / 2);
addChildAt(_screen, 1);
this.prevScreenType = HELP_SCREEN;
this.addEventListener(Config.EVENT_HELP_CLOSE, helpCloseHandler);
}
private function onHelpHandler(_arg1:Event):void{
this.afterMenuCleanup();
loadHelp();
GAManager.trackPage("/help-pressed");
}
private function musicHandler(_arg1:Event):void{
if (_music){
SoundManager.mute(SoundData.MUSIC_CHANNELS);
_music = false;
GAManager.trackPage("/music-muted");
} else {
SoundManager.unmute(SoundData.MUSIC_CHANNELS);
_music = true;
GAManager.trackPage("/music-unmuted");
};
}
private function onEasyHandler(_arg1:Event):void{
var _local2:int;
this.afterMenuCleanup();
Config.setDifficulty(Config.DIFFICULTY_EASY);
this.currentDifficulty = Config.DIFFICULTY_EASY;
if (_newGame){
_levels = [];
_isLevelOpened = [];
_local2 = 0;
while (_local2 < Config.LEVELS_TOTAL) {
_levels.push(0);
_isLevelOpened.push(false);
_local2++;
};
this.sharedObject.data.levels.easy = _levels;
this.sharedObject.data.isLevelOpened.easy = _isLevelOpened;
if (this.sharedObject.data.solutions){
this.sharedObject.data.solutions.easy = new Array(Config.LEVELS_TOTAL);
};
this.sharedObject.flush();
} else {
_levels = this.sharedObject.data.levels.easy;
_isLevelOpened = this.sharedObject.data.isLevelOpened.easy;
_local2 = 0;
while (_local2 < Config.LEVELS_TOTAL) {
if (_levels[_local2] > 0){
_isLevelOpened[_local2] = true;
};
_local2++;
};
this.sharedObject.data.isLevelOpened.easy = _isLevelOpened;
this.sharedObject.flush();
};
this.sharedObject.data["easy"] = true;
if (_newGame){
GAManager.trackPage("/play-easy-pressed");
_newGame = false;
if (_showIntro){
this.loadWhiteIntro();
} else {
this.loadLevel();
};
} else {
if (_submitScore){
_submitScore = false;
this.quitSubmit();
} else {
GAManager.trackPage("/continue-easy-pressed");
this.loadMap();
};
};
}
private function mouseDragHandler(_arg1:Event):void{
_cursor.type = Config.MOUSE_TYPE_DRAG;
}
private function mapCloseHandler(_arg1:Event):void{
this.afterMapCleanup();
currentPage = (_screen as MapClass).page;
loadMenu();
}
private function mouseShowHandler(_arg1:Event):void{
_cursor.visible = true;
}
private function loadSplashScreen():void{
clearScreen();
this.logo.visible = false;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.logoCS.visible = false;
};
this._soundPanel.visible = false;
this.backGround.visible = false;
this._contactUs.visible = false;
_screen = new PicasoLogoLite();
_screen.x = (Config.SCREEN_WIDTH / 2);
_screen.y = (Config.SCREEN_HEIGHT / 2);
_screen.addEventListener(PicasoLogoLite.ON_COMPLETE, picasoLogoCompleteHandler, false, 0, true);
this.addChildAt(_screen, 1);
_screen.init();
}
private function whiteFaderHandler(_arg1:Event):void{
if (_whiteFader != null){
if (_whiteFader.alpha > 0.01){
_whiteFader.alpha = (_whiteFader.alpha - (_whiteFader.alpha / 10));
} else {
this.removeEventListener(Event.ENTER_FRAME, whiteFaderHandler);
this.removeChild(_whiteFader);
_whiteFader = null;
};
};
}
private function mouseHideHandler(_arg1:Event):void{
_cursor.visible = false;
}
private function closeContactUsScreen(_arg1:Event):void{
_screen.removeEventListener(ContactUsScreen.ON_BACK, closeContactUsScreen);
_screen.removeEventListener(Event.ENTER_FRAME, checkCursor);
if (this.prevScreenType == CREDITS_SCREEN){
loadCredits();
} else {
if (this.prevScreenType == HELP_SCREEN){
loadHelp();
} else {
loadMenu();
};
};
}
private function levelCloseHandler(_arg1:Event):void{
this.afterLevelCleanup();
this.afterLevelSaveData();
this.loadMap();
}
private function afterLevelSaveData():void{
var _local1:Number;
this.playerName = (_screen as LevelManager).playerName.concat();
(_screen as LevelManager).playerName = null;
_local1 = (_screen as LevelManager).winBudget;
if (_levels[(_currentLevel - 1)] < _local1){
_levels[(_currentLevel - 1)] = _local1;
};
_isLevelOpened[(_currentLevel - 1)] = true;
_screen.saveLevelSolution();
this.sharedObject.data.name = this.playerName;
if (this.currentDifficulty == Config.DIFFICULTY_EASY){
this.sharedObject.data.levels.easy = _levels;
this.sharedObject.data.isLevelOpened.easy[(_currentLevel - 1)] = true;
Config.easyLevels = _levels;
};
if (this.currentDifficulty == Config.DIFFICULTY_NORMAL){
this.sharedObject.data.levels.normal = _levels;
this.sharedObject.data.isLevelOpened.normal[(_currentLevel - 1)] = true;
Config.normalLevels = _levels;
};
if (this.currentDifficulty == Config.DIFFICULTY_HARD){
this.sharedObject.data.levels.hard = _levels;
this.sharedObject.data.isLevelOpened.hard[(_currentLevel - 1)] = true;
};
this.sharedObject.flush();
}
private function mouseOverHandler(_arg1:Event):void{
if (_cursor.type == Config.MOUSE_TYPE_DRAG){
prevMouseTypes.push(Config.MOUSE_TYPE_HAND);
} else {
_cursor.type = Config.MOUSE_TYPE_HAND;
};
}
private function creditsCloseHandler(_arg1:Event):void{
this.removeEventListener(Config.EVENT_CREDITS_CLOSE, helpCloseHandler);
loadMenu();
}
private function outroViralClose(_arg1:Event):void{
_screen.removeEventListener(OutroViral.ON_OK, outroClose);
loadMap();
}
private function onQuitSubmitScoreHandler(_arg1:Event):void{
_newGame = false;
_submitScore = true;
}
private function onLevelStartLoading(_arg1:Event):void{
_soundPanel.visible = false;
}
}
}//package core
Section 107
//Config (core.Config)
package core {
import flash.net.*;
public class Config {
public static const EVENT_MUSIC:String = "music";
public static const MATERIAL_STEEL_COST:Number = 200;
public static const MATERIAL_ROPE_BLOCK_LENGTH:Number = 30;
public static const MATERIAL_DECK_LINE_THICKNESS:Number = 1;
public static const PROTAGONIST_BLINK_NAME:String = "BLINK";
public static const PROTAGONIST_JUMP3_FRAME:Number = 9;
public static const SCREEN_WIDTH:Number = 640;
public static const PROTAGONIST_SAD_NAME:String = "SAD";
public static const MATERIAL_ROPE_RECT_HEIGHT:Number = 5;
public static const ENGINE_CONSTRAINT_CYCLES:Number = 0;
public static const EVENT_SOUNDS_STEEL_CREAK:String = "playsteelcreak";
public static const HUD_DECK_COST:String = "$400";
public static const GRID_HEIGHT:Number = 20;
public static const WATER3_SPEED:Number = 0.5;
public static const PROTAGONIST_TURN_TO_RIGHT_FRAME:Number = 4;
public static const PROTAGONIST_BLINK_FRAME:Number = 2;
public static const EVENT_ZOOM_IN:String = "zoomIn";
public static const PROTAGONIST_TURN_TO_RIGHT_NAME:String = "TURN_TO_RIGHT";
public static const EVENT_BALOON_TEXT_COMPLETE:String = "baloonTextComplete";
public static const MODE_NONE:Number = 0;
public static const SCREEN_HEIGHT:Number = 480;
public static const POINT_MASS:Number = 0.1;
public static const PROTAGONIST_JUMP5_NAME:String = "JUMP5";
public static const LEVELS_STORY_TOTAL:int = 20;
public static const EVENT_POPUPBUTTON_MAP:String = "popupbuttonmap";
public static const EVENT_WIN:String = "win";
public static const EVENT_BALOON_RESPONSE_NEXT:String = "baloonResponseNext";
public static const MATERIAL_DECK_MAX_LENGTH:Number = 120;
public static const PROTAGONIST_BLINK_SAD_FRAME:Number = 13;
public static const EVENT_SOUNDS_WATER_SPLASH:String = "playwatersplash";
public static const EVENT_BALOON_RESPONSE_NO:String = "baloonResponseNo";
public static const MATERIAL_DECK_COST:Number = 300;
public static const EVENT_SCROLL_DOWN:String = "scrolldown";
public static const MATERIAL_STEEL:Number = 2;
public static const MATERIAL_ROPE_MAX_LENGTH:Number = 120;
public static const MATERIAL_ROPE_LINE_THICKNESS:Number = 5;
public static const PROTAGONIST_TURN_TO_NORMAL_FRAME:Number = 6;
public static const EVENT_SOUNDS_DECK_CREAK:String = "playwoodcreak";
public static const EVENT_BALOON_RESPONSE_YES:String = "baloonResponseYes";
public static const PROTAGONIST_BECOME_SAD_FRAME:Number = 12;
public static const EVENT_EDIT:String = "building";
public static const MATERIAL_STEEL_FILL_COLOR:uint = 0x888888;
public static const EVENT_SOUNDS_STEEL_BREAK:String = "playsteelbreak";
public static const MODE_LINKING_STRING:String = "Linking...";
public static const PROTAGONIST_STATE_SWIMMING:Number = 5;
public static const EVENT_CREDITS_CLOSE:String = "closeCredits";
public static const EVENT_ON_PLAY:String = "onPlay";
public static const MATERIAL_DECK:Number = 1;
public static const PROTAGONIST_JUMP2_FRAME:Number = 8;
public static const MOUSE_TYPE_NORMAL:int = 1;
public static const SCROLLING_ITERATION:Number = 10;
public static const PROTAGONIST_STATE_FINISHED_SAD:Number = 4;
public static const MATERIAL_FIXED_END_LIMIT:Number = 0.05;
public static const EVENT_TIP_STRESS:String = "eventTipStress";
public static const BC_ON_CS_URL:String = "http://www.candystand.com/play/bridgecraft?utm_source=Bridgecraft&utm_medium=link&utm_campaign=bridgecraft-vrl";
public static const EVENT_LEVEL_WIN:String = "levelwin";
public static const EVENT_TIP_RESET:String = "eventTipReset";
public static const EVENT_ZOOM_OUT:String = "zoomOut";
public static const EVENT_ON_HELP:String = "onHelp";
public static const MATERIAL_ROPE_STRING:String = "Rope";
public static const EVENT_MOUSE_OUT:String = "mouseoutbutton";
public static const EVENT_MOCHI_AD_ENDS:String = "mochiAdEnds";
public static const PROTAGONISTS_EYES_SPEED:Number = 0.7;
public static const EVENT_SOUNDS_MUSIC:String = "playmusic";
public static const MESSAGE_URL:String = "http://www.bridgecraftworld.com/send-message/";
public static const PROTAGONIST_BLINK_SAD_NAME:String = "BLINK_SAD";
public static const EVENT_ON_CREDITS:String = "oncredits";
public static const CS_URL:String = "http://www.candystand.com";
public static const WATER2_SPEED:Number = 1;
public static const LANGUAGE_RUS:int = 1;
public static const EVENT_SHOW_OUTRO:String = "show_outro";
public static const ZOOM_IN_ITERATION:Number = 1.1;
public static const MATERIAL_ROPE:Number = 3;
public static const PROTAGONIST_SAD_FRAME:Number = 14;
public static const GA_ACCOUNT_VIRAL:String = "";
public static const EVENT_SOUNDS_DECK_BREAK:String = "playdeckbreak";
public static const HUD_MODE_X:Number = 550;
public static const EVENT_BALOON_SHOWED_UP:String = "baloonShowedUp";
public static const MATERIAL_DECK_COLLIDABLE:Boolean = true;
public static const EVENT_DO_NOT_NEED_HELP:String = "dontshowmehelpagain";
public static const PROTAGONIST_RADIOUS:Number = 18;
public static const BCW_STINGER_URL:String = "http://www.bridgecraftworld.com/stinger.swf";
public static const MATERIAL_ROPE_COLLIDABLE:Boolean = false;
public static const HUD_MODE_Y:Number = 460;
public static const EVENT_LEVEL_CLOSE_AND_QUIT:String = "levelcloseandquitthen";
public static const PROTAGONIST_STAND_FRAME:Number = 1;
public static const MATERIAL_DECK_RECT_SCALE:Number = 0.97;
public static const MATERIAL_DECK_STRING:String = "Deck";
public static const MATERIAL_STEEL_STRING:String = "Steel";
public static const EVENT_MOUSE_SHOW:String = "mouseshow";
public static const MODE_BUILDING_STRING:String = "Building";
public static const MODE_EMULATION:Number = 2;
public static const EVENT_TIP_STEEL:String = "eventTipSteel";
public static const MATERIAL_DECK_RECT_HEIGHT:Number = 15;
public static const MATERIAL_ROPE_RECT_SCALE:Number = 1;
public static const EVENT_SOUNDS_DECK_CRUNCH:String = "playdeckcrunch";
public static const EVENT_SHOW_INTRO:String = "show_intro";
public static const HUD_STRESS_TEXT:String = "Stress";
public static const LEADERBOARD_URL:String = "http://www.bridgecraftworld.com/send-score/";
public static const MATERIAL_DECK_LINE_COLOR:uint = 0;
public static const MOUSE_TYPE_TARGET:int = 2;
public static const MATERIAL_STEEL_MAX_LENGTH:Number = 120;
public static const POPUP_WIN:Number = 1;
public static const EVENT_INPUT_NAME_ENTERED_NAME:String = "enteredName";
public static const EVENT_MAP_CLOSE:String = "on_close_map";
public static const TIP_TIMER_COUNT:int = 70;
public static const HUD_ROPE_COST:String = "$200";
public static const EVENT_TIP_PAUSE:String = "eventTipPause";
public static const PROTAGONIST_WAVE_NAME:String = "WAVE";
public static const HUD_DECK_TEXT:String = "Deck";
public static const PROTAGONIST_JUMP1_FRAME:Number = 7;
public static const MATERIAL_ROPE_LINE_COLOR:uint = 0;
public static const PROTAGONIST_NAME:String = "chubrik";
public static const WATER1_SPEED:Number = 1.5;
public static const EVENT_FOUND_PIN_POINT:String = "foundPinPoint";
public static const BCW_URL:String = "http://bridgecraftworld.com";
public static const EVENT_SCROLL_UP:String = "scrollup";
public static const EVENT_LEVEL_NEXT:String = "levelwinnextGO";
public static const PROTAGONIST_STATE_RUNNING:Number = 2;
public static const MODE_BUILDING:Number = 1;
public static const PROTAGONIST_TURN_TO_NORMAL_NAME:String = "TURN_TO_NORMAL";
public static const HUD_STOP_TEXT:String = "Stop";
public static const MATERIAL_ROPE_COST:Number = 100;
public static const DIFFICULTY_NORMAL:int = 1;
public static const PROTAGONIST_JUMP1_NAME:String = "JUMP1";
public static const MATERIAL_STEEL_LINE_THICKNESS:Number = 15;
public static const EVENT_SOUNDS_MUTE:String = "soundsmute";
public static const SCROLLING_BORDER_WIDTH:Number = 20;
public static const DIFFICULTY_EASY:int = 0;
public static const EVENT_PLAY_NORMAL:String = "eventPlayNormal";
public static const EVENT_TIP_DECK:String = "eventTipDeck";
public static const MATERIAL_STEEL_COLLIDABLE:Boolean = false;
public static const PROTAGONIST_STATE_BLOCKING:Number = 6;
public static const EVENT_SOUNDS_ROPE_CREAK:String = "playropecreak";
private static const _LEVELS_TOTAL:int = 70;
public static const ENGINE_FRAMERATE:Number = 35;
public static const MATERIAL_STEEL_RECT_SCALE:Number = 0.97;
public static const EVENT_START:String = "emulation";
public static const EVENT_HELP_CLOSE:String = "helpClosed";
public static const HUD_UNDO_TEXT:String = "Undo";
public static const POINT_RADIUS:Number = 7;
public static const HUD_STEEL_COST:String = "$300";
public static const EVENT_TIP_UNDO:String = "eventTipUndo";
public static const MATERIAL_STEEL_RECT_HEIGHT:Number = 10;
public static const EVENT_POPUP_BUTTON_OK:String = "popUpOnOk";
public static const EVENT_TIP_ROPE:String = "eventTipRope";
public static const EVENT_LEVEL_CLOSE_TO_MENU:String = "levelclosetomenu";
public static const EVENT_FINISH_ACTION:String = "finishaction";
public static const MAX_OPENED_LEVELS:int = 5;
public static const EVENT_CONNECT_POINTS:String = "onConnectPoints";
public static const PROTAGONIST_STATE_WAITING:Number = 1;
public static const MATERIAL_STEEL_LINE_COLOR:uint = 0;
public static const EVENT_TIP_BUDGET:String = "eventTipBudget";
public static const MATERIAL_ROPE_POINT_ELASTICITY:Number = 0.5;
public static const HUD_BUDGET_TEXT:String = "Budget";
public static const PROTAGONIST_RUN_NAME:String = "RUN";
public static const PROTAGONIST_JUMP2_NAME:String = "JUMP2";
public static const EVENT_READY_TO_RUN:String = "readytorun";
public static const ZOOM_DIVIDER:Number = 30;
public static const SCROLLING_DIVIDER:Number = 5;
public static const PROTAGONIST_JUMP5_FRAME:Number = 11;
public static const MODE_EMULATION_STRING:String = "Emulation";
public static const EVENT_ON_STORY:String = "onStory";
public static const EVENT_SOUNDS_STEP:String = "playstep";
public static const HUD_RESET_TEXT:String = "Reset";
public static const EVENT_PLAY_EASY:String = "eventPlayEasy";
public static const EVENT_SOUNDS:String = "sounds";
public static const ACTION_REMOVE:String = "remove";
public static const MATERIAL_ROPE_POINT_MASS:Number = 0.01;
public static const SHARED_OBJECT_TITLE:String = "bridgecraft_v1";
public static const MATERIAL_ROPE_LENGTH_MODIFIER:Number = 0.8;
public static const EVENT_ON_QUIT_NORMAL:String = "onQuitNormal";
public static const EVENT_MOCHI_AD_SKIPPED:String = "mochiAdSkipped";
public static const EVENT_SOUNDS_PROTAGONIST_SAD:String = "playprotagonistsad";
public static const EVENT_LEVEL_LOADED:String = "eventLevelLoaded";
public static const POPUP_LOSE:Number = 2;
public static const MODE_LINKING:Number = 3;
public static const DIFFICULTY_HARD:int = 2;
public static const HUD_ROPE_TEXT:String = "Rope";
public static const PROTAGONIST_WAVE_FRAME:Number = 3;
public static const EVENT_MUSIC_MUTE:String = "musicmute";
public static const EVENT_POPUPBUTTON_NEXT:String = "popupbuttonnext";
public static const EVENT_LEVEL_CLOSE:String = "levelclose";
public static const ACTION_ADD:String = "add";
public static const EVENT_STRESS:String = "stress";
public static const EVENT_RESET:String = "reset";
public static const PROTAGONIST_BECOME_SAD_NAME:String = "BECOME_SAD";
public static const EVENT_SOUNDS_START:String = "playstart";
public static const MOUSE_TYPE_HAND:int = 3;
public static const EVENT_MOUSE_OVER:String = "mouseoverbutton";
public static const PROTAGONIST_JUMP3_NAME:String = "JUMP3";
public static const EVENT_ON_QUIT_EASY:String = "onQuitEasy";
public static const SECRET_WORD:String = "xz34hhd84";
public static const PROTAGONISTS_NUMBER:Number = 1;
public static const EVENT_LEVEL_START_LOADING:String = "eventLevelStartLoading";
public static const LEVEL_RUNNING_ZONE:Number = 2;
public static const EVENT_POPUPBUTTON_RETRY:String = "popupbuttonretry";
public static const EVENT_DECK:String = "deck";
public static const BC_ON_PLAYIT_URL:String = "http://playit.ru/rus/flash/single/35";
public static const PROTAGONIST_JUMP4_FRAME:Number = 10;
public static const MATERIAL_ROPE_POINT_RADIUS:Number = 2;
public static const EVENT_MAP_SUBMIT:String = "on_submit_map";
public static const PROTAGONIST_STATE_FINISHED_HAPPY:Number = 3;
public static const LANGUAGE_ENG:int = 0;
public static const GRID_WIDTH:Number = 20;
public static const HUD_START_TEXT:String = "Start";
public static const EVENT_TIP_EDIT:String = "eventTipEdit";
private static const _LEVELS_TOTAL_VIRAL:int = 30;
public static const LEVEL_WAITING_ZONE:Number = 1;
public static const LEVEL_FINISH_ZONE:Number = 3;
public static const EVENT_MAP_LEVEL_SELECT:String = "on_level_select";
public static const EVENT_COMPLETE_GAME_POPUP:String = "showingCompleteGamePopUp";
public static const EVENT_HOME:String = "home";
public static const WATER4_SPEED:Number = 0.2;
public static const EVENT_MOCHI_AD_LOADED:String = "mochiAdLoaded";
public static const ZOOM_OUT_ITERATION:Number = 0.9;
public static const EVENT_UNDO:String = "undo";
public static const EVENT_PLAY_HARD:String = "eventPlayHard";
public static const EVENT_MOUSE_DRAG:String = "mousedrag";
public static const EVENT_ROPE:String = "rope";
public static const MODE_RESET:Number = -1;
public static const EVENT_MOUSE_HIDE:String = "mousehide";
public static const EVENT_STEEL:String = "steel";
public static const GA_ACCOUNT:String = "UA-4255440-1";
public static const HUD_STEEL_TEXT:String = "Steel";
public static const EVENT_SCROLL_RIGHT:String = "scrollright";
public static const EVENT_SOUNDS_PROTAGONIST_HAPPY:String = "playchubrickshappy";
public static const ENGINE_DT:Number = 0.25;
public static const EVENT_MOCHI_AD_FAILED:String = "mochiAdFailed";
public static const HUD_MATERIAL_Y:Number = 460;
public static const ENGINE_CONSTRAINT_COLLISION_CYCLES:Number = 2;
public static const PROTAGONIST_JUMP4_NAME:String = "JUMP4";
public static const EVENT_MOCHI_AD_STARTS:String = "mochiAdStarts";
public static const MATERIAL_DECK_FILL_COLOR:uint = 1052752;
public static const PROTAGONIST_STAND_NAME:String = "STAND";
public static const MATERIAL_ROPE_FILL_COLOR:uint = 170;
public static const MOUSE_TYPE_DRAG:int = 4;
public static const EVENT_INTRO_CLOSE:String = "on_skip_or_end_intro";
public static const HUD_MATERIAL_X:Number = 5;
public static const ENGINE_DAMPING:Number = 0.97;
public static const EVENT_ON_QUIT:String = "onQuit";
public static const POINT_ELASTICITY:Number = 0.3;
public static const EVENT_SOUNDS_BUTTON_CLICK:String = "playclick";
public static const EVENT_SCROLL_LEFT:String = "scrollleft";
public static const PROTAGONIST_RUN_FRAME:Number = 5;
public static const EVENT_TIP_START:String = "eventTipStart";
public static var easyLevels:Array;
private static var loader:URLLoader;
private static var gameCurrentDifficulty:int;
private static var _LANGUAGE:int = 0;
private static var _MATERIAL_OVERLOAD_CHECKS:int = 3;
private static var _WALKTHROUGH_URL:String = "http://www.candystand.com/play/bridgecraft?utm_source=Bridgecraft&utm_medium=link&utm_campaign=bridgecraft-walkthrough";
public static var normalLevels:Array;
private static var _DEFAULT_PLAYER_NAME:String;
private static var _MATERIAL_STEEL_MULTIPLIER:Number = 0.03;
private static var _PROTAGONISTS_SPEED:Number = 0.07;
private static var _MATERIAL_STEEL_STIFFNESS:Number = 0.75;
private static var _MATERIAL_DECK_STIFFNESS:Number = 0.97;
private static var _MATERIAL_ROPE_STIFFNESS:Number = 0.75;
private static var _PROTAGONISTS_MASS:Number = 1;
private static var _CURRENT_LEVEL:int = -1;
private static var _MATERIAL_DECK_MULTIPLIER:Number = 0.02;
private static var _VIRAL:Boolean = false;
private static var _MATERIAL_ROPE_MULTIPLIER:Number = 0.5;
private static var _currentDifficulty:int = -1;
public static function get DEFAULT_PLAYER_NAME():String{
var _local1:String;
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
_local1 = "Игрок";
} else {
_local1 = "Player";
};
return (_local1);
}
public static function get MATERIAL_ROPE_MULTIPLIER():Number{
return (_MATERIAL_ROPE_MULTIPLIER);
}
public static function set MATERIAL_ROPE_MULTIPLIER(_arg1:Number):void{
_MATERIAL_ROPE_MULTIPLIER = _arg1;
}
public static function set MATERIAL_ROPE_STIFFNESS(_arg1:Number):void{
_MATERIAL_ROPE_STIFFNESS = _arg1;
}
public static function get VIRAL():Boolean{
return (_VIRAL);
}
public static function get LEVELS_TOTAL():int{
return ((VIRAL) ? _LEVELS_TOTAL_VIRAL : _LEVELS_TOTAL);
}
public static function set CURRENT_DIFFICULTY(_arg1:int):void{
_currentDifficulty = _arg1;
}
public static function set MATERIAL_STEEL_STIFFNESS(_arg1:Number):void{
_MATERIAL_STEEL_STIFFNESS = _arg1;
}
public static function get MATERIAL_STEEL_MULTIPLIER():Number{
return (_MATERIAL_STEEL_MULTIPLIER);
}
public static function set VIRAL(_arg1:Boolean):void{
_VIRAL = _arg1;
}
public static function get CURRENT_LEVEL():int{
return (_CURRENT_LEVEL);
}
public static function get MATERIAL_DECK_STIFFNESS():Number{
return (_MATERIAL_DECK_STIFFNESS);
}
public static function get PROTAGONISTS_MASS():Number{
return (_PROTAGONISTS_MASS);
}
public static function get MATERIAL_OVERLOAD_CHECKS():int{
return (_MATERIAL_OVERLOAD_CHECKS);
}
public static function setDifficulty(_arg1:int=0):void{
if (_arg1 == DIFFICULTY_EASY){
PROTAGONISTS_MASS = 0.9;
PROTAGONISTS_SPEED = 0.08;
MATERIAL_OVERLOAD_CHECKS = 5;
MATERIAL_DECK_MULTIPLIER = 0.05;
MATERIAL_DECK_STIFFNESS = 0.95;
MATERIAL_STEEL_MULTIPLIER = 0.3;
MATERIAL_STEEL_STIFFNESS = 0.75;
MATERIAL_ROPE_MULTIPLIER = 0.5;
MATERIAL_ROPE_STIFFNESS = 0.75;
CURRENT_DIFFICULTY = DIFFICULTY_EASY;
};
if (_arg1 == DIFFICULTY_NORMAL){
PROTAGONISTS_MASS = 1;
PROTAGONISTS_SPEED = 0.08;
MATERIAL_OVERLOAD_CHECKS = 5;
MATERIAL_DECK_MULTIPLIER = 0.02;
MATERIAL_DECK_STIFFNESS = 0.97;
MATERIAL_STEEL_MULTIPLIER = 0.3;
MATERIAL_STEEL_STIFFNESS = 0.75;
MATERIAL_ROPE_MULTIPLIER = 0.5;
MATERIAL_ROPE_STIFFNESS = 0.75;
CURRENT_DIFFICULTY = DIFFICULTY_NORMAL;
};
}
public static function set MATERIAL_STEEL_MULTIPLIER(_arg1:Number):void{
_MATERIAL_STEEL_MULTIPLIER = _arg1;
}
public static function set PROTAGONISTS_SPEED(_arg1:Number):void{
_PROTAGONISTS_SPEED = _arg1;
}
public static function set CURRENT_LEVEL(_arg1:int):void{
_CURRENT_LEVEL = _arg1;
}
public static function get MATERIAL_ROPE_STIFFNESS():Number{
return (_MATERIAL_ROPE_STIFFNESS);
}
public static function set MATERIAL_DECK_STIFFNESS(_arg1:Number):void{
_MATERIAL_DECK_STIFFNESS = _arg1;
}
public static function get CURRENT_DIFFICULTY():int{
return (_currentDifficulty);
}
public static function get MATERIAL_STEEL_STIFFNESS():Number{
return (_MATERIAL_STEEL_STIFFNESS);
}
public static function set LANGUAGE(_arg1:int):void{
if ((((_arg1 == LANGUAGE_RUS)) || ((_arg1 == LANGUAGE_ENG)))){
_LANGUAGE = _arg1;
};
}
public static function set PROTAGONISTS_MASS(_arg1:Number):void{
_PROTAGONISTS_MASS = _arg1;
}
public static function set MATERIAL_OVERLOAD_CHECKS(_arg1:int):void{
_MATERIAL_OVERLOAD_CHECKS = _arg1;
}
public static function get PROTAGONISTS_SPEED():Number{
return (_PROTAGONISTS_SPEED);
}
public static function get WALKTHROUGH_URL():String{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
return (_WALKTHROUGH_URL);
};
return ("http://picasogames.com/games/bridgecraft/walkthrough");
}
public static function get LANGUAGE():int{
return (_LANGUAGE);
}
public static function set MATERIAL_DECK_MULTIPLIER(_arg1:Number):void{
_MATERIAL_DECK_MULTIPLIER = _arg1;
}
public static function get MATERIAL_DECK_MULTIPLIER():Number{
return (_MATERIAL_DECK_MULTIPLIER);
}
}
}//package core
Section 108
//ContactUsButton (core.ContactUsButton)
package core {
import flash.display.*;
public class ContactUsButton extends SimpleButton {
public function ContactUsButton():void{
}
}
}//package core
Section 109
//ContactUsScreen (core.ContactUsScreen)
package core {
import fl.controls.*;
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import flash.net.*;
import flash.ui.*;
public dynamic class ContactUsScreen extends MovieClip {
public var backBtn:SimpleButton;
public var emailTI:TextInput;
private var okButton:SimpleButton;
private var button1:SimpleButton;
public var btn2:SimpleButton;
private var nameTextInput:TextInput;
public var nameTI:TextInput;
private var emailTextInput:TextInput;
private var messageTextArea:TextArea;
private var _overScrollBar:Boolean;// = false
public var btn1:SimpleButton;
public var sendBtn:SimpleButton;
public var messageTA:TextArea;
public var topicCB:ComboBox;
private var button2:SimpleButton;
private var topicComboBox:ComboBox;
private var sendButton:SimpleButton;
public var okBtn:SimpleButton;
private var backButton:SimpleButton;
public static const ON_SEND:String = "sendPressedInContactUsScreen";
public static const ON_BACK:String = "backPressedInContactUsScreen";
public function ContactUsScreen():void{
_overScrollBar = false;
super();
this.stop();
this.nameTextInput = this["nameTI"];
this.nameTextInput.text = DEF_NAME;
this.nameTextInput.maxChars = 50;
this.nameTextInput.addEventListener(MouseEvent.CLICK, onNameActivated, false, 0, true);
this.nameTextInput.addEventListener(MouseEvent.MOUSE_OVER, overName, false, 0, true);
this.nameTextInput.addEventListener(MouseEvent.MOUSE_OUT, outName, false, 0, true);
this.emailTextInput = this["emailTI"];
this.emailTextInput.text = DEF_EMAIL;
this.emailTextInput.maxChars = 50;
this.emailTextInput.addEventListener(MouseEvent.CLICK, onEmailActivated, false, 0, true);
this.emailTextInput.addEventListener(MouseEvent.MOUSE_OVER, overEmail, false, 0, true);
this.emailTextInput.addEventListener(MouseEvent.MOUSE_OUT, outEmail, false, 0, true);
this.topicComboBox = this["topicCB"];
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.topicComboBox.addItem({label:"General Comments", value:1});
this.topicComboBox.addItem({label:"Game Support", value:2});
this.topicComboBox.addItem({label:"Development Inquiry", value:3});
this.topicComboBox.addItem({label:"Licensing Inquiry", value:4});
this.topicComboBox.addItem({label:"Other Business Opportunity", value:5});
} else {
this.topicComboBox.addItem({label:"Ошибка в игре", value:1});
this.topicComboBox.addItem({label:"Техническая поддержка", value:2});
this.topicComboBox.addItem({label:"Идеи", value:3});
this.topicComboBox.addItem({label:"Сотрудничество", value:4});
this.topicComboBox.addItem({label:"Другое", value:5});
};
this.topicComboBox.addEventListener(MouseEvent.CLICK, onTopic, false, 0, true);
this.messageTextArea = this["messageTA"];
this.messageTextArea.text = DEF_MSG;
this.messageTextArea.maxChars = 1000;
this.messageTextArea.addEventListener(MouseEvent.CLICK, onMessageActivated, false, 0, true);
this.messageTextArea.addEventListener(MouseEvent.MOUSE_OVER, overMessage, false, 0, true);
this.messageTextArea.addEventListener(MouseEvent.MOUSE_OUT, outMessage, false, 0, true);
this.backButton = this["backBtn"];
this.backButton.addEventListener(MouseEvent.CLICK, onBackHandler, false, 0, true);
this.backButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.backButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.sendButton = this["sendBtn"];
this.sendButton.transform.colorTransform = new ColorTransform(0.51, 0.51, 0.51, 1, 125, 125, 125);
this.sendButton.enabled = false;
this.okButton = this["okBtn"];
this.okButton.addEventListener(MouseEvent.CLICK, onBackHandler, false, 0, true);
this.okButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.okButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.okButton.visible = false;
this.button1 = this["btn1"];
this.button1.addEventListener(MouseEvent.CLICK, onButton1, false, 0, true);
this.button1.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.button1.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.button2 = this["btn2"];
this.button2.addEventListener(MouseEvent.CLICK, onButton2, false, 0, true);
this.button2.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.button2.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
this.nameTextInput.tabEnabled = false;
this.emailTextInput.tabEnabled = false;
this.messageTextArea.tabEnabled = false;
this.topicComboBox.tabEnabled = false;
this.backButton.tabEnabled = false;
this.sendButton.tabEnabled = false;
this.okButton.tabEnabled = false;
}
private function outName(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
}
private function onNameDeactivated(_arg1:MouseEvent=null):void{
if (this.nameTextInput.text.length == 0){
this.nameTextInput.text = DEF_NAME;
};
}
private function onBackHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(ON_BACK));
}
public function get DEF_MSG():String{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
return ("Your message*");
};
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
return ("Ваше сообщение*");
};
return ("No message");
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:Boolean;
var _local3:Boolean;
var _local4:Boolean;
_local2 = (((this.nameTextInput.text.length > 0)) && (!((this.nameTextInput.text == DEF_NAME))));
_local3 = (((this.emailTextInput.text.length > 0)) && (!((this.emailTextInput.text == DEF_EMAIL))));
_local4 = (((this.messageTextArea.text.length > 0)) && (!((this.messageTextArea.text == DEF_MSG))));
if (((((((_local2) && (_local3))) && (_local4))) && (!(this.sendButton.enabled)))){
this.sendButton.addEventListener(MouseEvent.CLICK, onSendHandler, false, 0, true);
this.sendButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.sendButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.sendButton.transform.colorTransform = new ColorTransform();
this.sendButton.enabled = true;
} else {
if (((!(((((_local2) && (_local3))) && (_local4)))) && (this.sendButton.enabled))){
this.sendButton.removeEventListener(MouseEvent.CLICK, onSendHandler);
this.sendButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.sendButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.sendButton.transform.colorTransform = new ColorTransform(0.51, 0.51, 0.51, 1, 125, 125, 125);
this.sendButton.enabled = false;
};
};
if (((((this.messageTextArea.verticalScrollBar) && (this.messageTextArea.verticalScrollBar.visible))) && (this.messageTextArea.verticalScrollBar.getBounds(this).contains(this.mouseX, this.mouseY)))){
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
_overScrollBar = true;
} else {
_overScrollBar = false;
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function onSendHandler(_arg1:MouseEvent):void{
var _local2:String;
var _local3:URLVariables;
var _local4:URLRequest;
this.dispatchEvent(new Event(ON_SEND));
_local2 = (((((((((("name=" + this.nameTextInput.text) + "&") + "email=") + this.emailTextInput.text) + "&") + "topic_id=") + this.topicComboBox.selectedItem.value) + "&") + "msg=") + this.messageTextArea.text);
_local3 = new URLVariables(_local2);
_local4 = new URLRequest(Config.MESSAGE_URL);
_local4.method = URLRequestMethod.POST;
_local4.data = _local3;
sendToURL(_local4);
this.backButton.visible = false;
this.sendButton.visible = false;
this.button1.visible = false;
this.button2.visible = false;
this.okButton.visible = true;
this.gotoAndStop(2);
}
private function onEmailActivated(_arg1:MouseEvent):void{
if (this.emailTextInput.text == DEF_EMAIL){
this.emailTextInput.text = "";
};
this.onNameDeactivated();
this.onMessageDeactivated();
}
private function overEmail(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_HIDE, true));
}
private function overName(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_HIDE, true));
}
private function onButton2(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://picasogames.com/"), "_blank");
}
private function onTopic(_arg1:MouseEvent):void{
this.onNameDeactivated();
this.onEmailDeactivated();
this.onMessageDeactivated();
}
private function onButton1(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://picasogames.com/games/bridgecraft/viral-pack"), "_blank");
}
private function onMessageActivated(_arg1:MouseEvent):void{
if (this.messageTextArea.text == DEF_MSG){
this.messageTextArea.text = "";
};
this.onNameDeactivated();
this.onEmailDeactivated();
}
private function onEmailDeactivated(_arg1:MouseEvent=null):void{
if (this.emailTextInput.text.length == 0){
this.emailTextInput.text = DEF_EMAIL;
};
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function overMessage(_arg1:MouseEvent):void{
if (!_overScrollBar){
this.dispatchEvent(new Event(Config.EVENT_MOUSE_HIDE, true));
};
}
private function outTopic(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
Mouse.hide();
}
public function get DEF_NAME():String{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
return ("Your name*");
};
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
return ("Ваше имя*");
};
return ("Nobody");
}
private function overTopic(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_HIDE, true));
Mouse.show();
}
private function onMessageDeactivated(_arg1:MouseEvent=null):void{
if (this.messageTextArea.text.length == 0){
this.messageTextArea.text = DEF_MSG;
};
}
public function get DEF_EMAIL():String{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
return ("Your email address*");
};
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
return ("Адрес вашей электронной почты*");
};
return ("no@mail.com");
}
public function cleanup():void{
}
private function outMessage(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
}
private function outEmail(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
}
private function onNameActivated(_arg1:MouseEvent):void{
if (this.nameTextInput.text == DEF_NAME){
this.nameTextInput.text = "";
};
this.onEmailDeactivated();
this.onMessageDeactivated();
}
}
}//package core
Section 110
//Cursor (core.Cursor)
package core {
import flash.display.*;
public class Cursor extends MovieClip {
private var _previousType:Number;
public function Cursor():void{
stop();
this.mouseEnabled = false;
this.mouseChildren = false;
}
public function set type(_arg1:int):void{
if (_arg1 == Config.MOUSE_TYPE_NORMAL){
_previousType = type;
gotoAndStop(_arg1);
} else {
if (_arg1 == Config.MOUSE_TYPE_TARGET){
_previousType = type;
gotoAndStop(_arg1);
} else {
if (_arg1 == Config.MOUSE_TYPE_HAND){
_previousType = type;
gotoAndStop(_arg1);
} else {
if (_arg1 == Config.MOUSE_TYPE_DRAG){
_previousType = type;
gotoAndStop(_arg1);
};
};
};
};
}
public function get type():int{
return (currentFrame);
}
}
}//package core
Section 111
//DeckLastSegment (core.DeckLastSegment)
package core {
import flash.display.*;
public class DeckLastSegment extends MovieClip {
public function DeckLastSegment(_arg1:Boolean=false){
if (_arg1){
scaleX = -1;
};
}
}
}//package core
Section 112
//DeckPole (core.DeckPole)
package core {
import flash.display.*;
public class DeckPole extends MovieClip {
}
}//package core
Section 113
//DeckSegment (core.DeckSegment)
package core {
import flash.display.*;
public class DeckSegment extends MovieClip {
}
}//package core
Section 114
//Digit (core.Digit)
package core {
import flash.display.*;
public class Digit extends MovieClip {
public function Digit(_arg1:int=0){
if (((((!((_arg1 is int))) || ((_arg1 < 0)))) || ((_arg1 > 9)))){
_arg1 = 0;
};
this.gotoAndStop(((_arg1)==0) ? 10 : _arg1);
this.cacheAsBitmap = true;
}
}
}//package core
Section 115
//Dot (core.Dot)
package core {
import flash.display.*;
public class Dot extends MovieClip {
public var startX:Number;
public var stopX:Number;
}
}//package core
Section 116
//GAManager (core.GAManager)
package core {
import flash.display.*;
import com.google.analytics.*;
public class GAManager {
public static const MODE_BRIDGE:String = "Bridge";
public static const MODE_AS3:String = "AS3";
private static var _mode:String = "AS3";
private static var _account:String = "UA-4255442-1";
private static var inited:Boolean = false;
private static var tracker:GATracker;
private static var _prefixString:String = "";
public function GAManager():void{
}
public static function trackPage(_arg1:String):void{
if (!inited){
return;
};
tracker.trackPageview((prefixString + _arg1));
}
public static function get mode():String{
return (_mode);
}
public static function set mode(_arg1:String):void{
_mode = _arg1;
}
public static function initTracker(_arg1:DisplayObject, _arg2:Boolean=false):void{
if (inited){
return;
};
tracker = new GATracker(_arg1, account, mode, _arg2);
inited = true;
}
public static function get account():String{
return (_account);
}
public static function set account(_arg1:String):void{
_account = _arg1;
}
public static function set prefixString(_arg1:String):void{
_prefixString = _arg1;
}
public static function get prefixString():String{
return (_prefixString);
}
}
}//package core
Section 117
//Grid (core.Grid)
package core {
import flash.display.*;
public class Grid extends Sprite {
public function Grid(_arg1:LevelBorders, _arg2:uint=0xFF, _arg3:Number=0.15){
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
super();
if (_arg1 == null){
return;
};
graphics.beginFill(0, 1);
graphics.lineStyle(2, _arg2, _arg3);
_local4 = _arg1.upperBorderY;
_local5 = _arg1.bottomBorderY;
_local6 = _arg1.leftBorderX;
_local7 = _arg1.rightBorderX;
if ((((_local6 < 0)) && ((_local7 > 0)))){
_local8 = 0;
while (_local8 >= _local6) {
graphics.moveTo(_local8, _local4);
graphics.lineTo(_local8, _local5);
_local8 = (_local8 - Config.GRID_WIDTH);
};
_local8 = Config.GRID_WIDTH;
while (_local8 <= _local7) {
graphics.moveTo(_local8, _local4);
graphics.lineTo(_local8, _local5);
_local8 = (_local8 + Config.GRID_WIDTH);
};
} else {
if (_local6 >= 0){
_local8 = 0;
while (_local8 <= _local7) {
if (_local8 >= _local6){
graphics.moveTo(_local8, _local4);
graphics.lineTo(_local8, _local5);
};
_local8 = (_local8 + Config.GRID_WIDTH);
};
} else {
_local8 = 0;
while (_local8 >= _local6) {
if (_local8 <= _local7){
graphics.moveTo(_local8, _local4);
graphics.lineTo(_local8, _local5);
};
_local8 = (_local8 - Config.GRID_WIDTH);
};
};
};
if ((((_local4 < 0)) && ((_local5 > 0)))){
_local8 = 0;
while (_local8 >= _local4) {
graphics.moveTo(_local6, _local8);
graphics.lineTo(_local7, _local8);
_local8 = (_local8 - Config.GRID_HEIGHT);
};
_local8 = Config.GRID_HEIGHT;
while (_local8 <= _local5) {
graphics.moveTo(_local6, _local8);
graphics.lineTo(_local7, _local8);
_local8 = (_local8 + Config.GRID_HEIGHT);
};
} else {
if (_local4 >= 0){
_local8 = 0;
while (_local8 <= _local5) {
if (_local8 >= _local4){
graphics.moveTo(_local6, _local8);
graphics.lineTo(_local7, _local8);
};
_local8 = (_local8 + Config.GRID_HEIGHT);
};
} else {
_local8 = 0;
while (_local8 >= _local4) {
if (_local8 <= _local5){
graphics.moveTo(_local6, _local8);
graphics.lineTo(_local7, _local8);
};
_local8 = (_local8 - Config.GRID_HEIGHT);
};
};
};
graphics.endFill();
this.x = 0;
this.y = 0;
cacheAsBitmap = true;
mouseEnabled = false;
mouseChildren = false;
}
}
}//package core
Section 118
//HelpClass (core.HelpClass)
package core {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import vis.*;
import help.*;
public dynamic class HelpClass extends MovieClip {
public var nextButton:SimpleButton;
private var greyColorTransform:ColorTransform;
public var menuButton:SimpleButton;
private var deleteClip:DeleteClip;
private var scrollClip:ScrollClip;
private var buildClip:BuildClip;
private var defaultColorTransform:ColorTransform;
public var backButton:SimpleButton;
public function HelpClass(_arg1:Boolean=true){
var _local2:BlueSky;
super();
if (_arg1){
_local2 = new BlueSky();
_local2.scaleX = (Config.SCREEN_WIDTH / _local2.width);
_local2.x = (_local2.x - (Config.SCREEN_WIDTH / 2));
_local2.y = (_local2.y - (Config.SCREEN_HEIGHT / 2));
addChildAt(_local2, 0);
};
stop();
this.buildClip = new BuildClip();
this.buildClip.x = -90;
this.buildClip.y = 35;
this.addChild(this.buildClip);
this.buildClip.stop();
this.buildClip.visible = false;
this.deleteClip = new DeleteClip();
this.deleteClip.x = -90;
this.deleteClip.y = 35;
this.addChild(this.deleteClip);
this.deleteClip.stop();
this.deleteClip.visible = false;
this.scrollClip = new ScrollClip();
this.scrollClip.x = -90;
this.scrollClip.y = 35;
this.addChild(this.scrollClip);
this.scrollClip.stop();
this.scrollClip.visible = false;
defaultColorTransform = this.backButton.transform.colorTransform;
greyColorTransform = new ColorTransform(0.55, 0.55, 0.55, 1, 68, 68, 68, 0);
this.backButton.visible = false;
this.backButton.scaleX = 0.1;
this.backButton.scaleY = this.backButton.scaleX;
this.backButton.addEventListener(MouseEvent.CLICK, clickOnBack, false, 0, true);
this.menuButton.addEventListener(MouseEvent.CLICK, clickOnMenu, false, 0, true);
this.nextButton.addEventListener(MouseEvent.CLICK, clickOnNext, false, 0, true);
this.backButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.menuButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.backButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.menuButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function clickOnBack(_arg1:MouseEvent):void{
var _local2:int;
_local2 = (currentFrame - 1);
if (_local2 <= 0){
_local2 = totalFrames;
};
gotoAndStop(_local2);
}
private function clickOnNext(_arg1:MouseEvent):void{
var _local2:int;
_local2 = (currentFrame + 1);
if (_local2 > totalFrames){
_local2 = 1;
};
gotoAndStop(_local2);
}
private function enterFrameHandler(_arg1:Event):void{
if (currentFrame == 1){
if (!this.buildClip.visible){
this.buildClip.visible = true;
this.buildClip.gotoAndPlay(1);
};
if (this.deleteClip.visible){
this.deleteClip.stop();
this.deleteClip.visible = false;
};
if (this.scrollClip.visible){
this.scrollClip.stop();
this.scrollClip.visible = false;
};
} else {
if (currentFrame == 2){
if (this.buildClip.visible){
this.buildClip.stop();
this.buildClip.visible = false;
};
if (!this.deleteClip.visible){
this.deleteClip.visible = true;
this.deleteClip.gotoAndPlay(1);
};
if (this.scrollClip.visible){
this.scrollClip.stop();
this.scrollClip.visible = false;
};
} else {
if (currentFrame == 4){
if (this.buildClip.visible){
this.buildClip.stop();
this.buildClip.visible = false;
};
if (this.deleteClip.visible){
this.deleteClip.stop();
this.deleteClip.visible = false;
};
if (!this.scrollClip.visible){
this.scrollClip.visible = true;
this.scrollClip.gotoAndPlay(1);
};
} else {
if (this.buildClip.visible){
this.buildClip.stop();
this.buildClip.visible = false;
};
if (this.deleteClip.visible){
this.deleteClip.stop();
this.deleteClip.visible = false;
};
if (this.scrollClip.visible){
this.scrollClip.stop();
this.scrollClip.visible = false;
};
};
};
};
if (currentFrame == 1){
if (this.backButton.visible){
this.backButton.scaleX = (this.backButton.scaleX * 0.6);
this.backButton.scaleY = this.backButton.scaleX;
if (this.backButton.scaleX < 0.1){
this.backButton.visible = false;
};
};
this.nextButton.scaleX = 1;
this.nextButton.scaleY = 1;
this.nextButton.visible = true;
} else {
if (currentFrame == totalFrames){
this.backButton.scaleX = 1;
this.backButton.scaleY = 1;
this.backButton.visible = true;
if (this.nextButton.visible){
this.nextButton.scaleX = (this.nextButton.scaleX * 0.6);
this.nextButton.scaleY = this.nextButton.scaleX;
if (this.nextButton.scaleX < 0.1){
this.nextButton.visible = false;
};
};
} else {
this.backButton.visible = true;
if (this.backButton.scaleX != 1){
this.backButton.scaleX = (this.backButton.scaleX / 0.6);
this.backButton.scaleY = this.backButton.scaleX;
if (this.backButton.scaleX > 0.9){
this.backButton.scaleX = 1;
this.backButton.scaleY = 1;
};
};
this.nextButton.visible = true;
if (this.nextButton.scaleX != 1){
this.nextButton.scaleX = (this.nextButton.scaleX / 0.6);
this.nextButton.scaleY = this.nextButton.scaleX;
if (this.nextButton.scaleX > 0.9){
this.nextButton.scaleX = 1;
this.nextButton.scaleY = 1;
};
};
};
};
}
private function clickOnMenu(_arg1:MouseEvent):void{
cleanup();
dispatchEvent(new Event(Config.EVENT_HELP_CLOSE, true));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function cleanup():void{
if (this.backButton.hasEventListener(MouseEvent.CLICK)){
this.backButton.removeEventListener(MouseEvent.CLICK, clickOnBack);
};
if (this.menuButton.hasEventListener(MouseEvent.CLICK)){
this.menuButton.removeEventListener(MouseEvent.CLICK, clickOnMenu);
};
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, clickOnNext);
};
if (this.backButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.backButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.menuButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.menuButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.backButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.backButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.menuButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.menuButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.hasEventListener(Event.ENTER_FRAME)){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
}
}//package core
Section 119
//IntroWhite (core.IntroWhite)
package core {
import flash.display.*;
import flash.events.*;
import picaso.*;
import sounds.*;
import vis.*;
public dynamic class IntroWhite extends MovieClip {
public var nextButton:SimpleButton;
private var _musicForSlide2WasPlayed:Boolean;// = false
private var skip:Boolean;// = false
public var skipButton:SimpleButton;
public static const INTRO_COMPLETE:String = "introWhiteComplete";
public function IntroWhite(){
var _local1:BlueSky;
_musicForSlide2WasPlayed = false;
skip = false;
super();
_local1 = new BlueSky();
_local1.scaleX = (Config.SCREEN_WIDTH / _local1.width);
_local1.x = (_local1.x - (Config.SCREEN_WIDTH / 2));
_local1.y = (_local1.y - (Config.SCREEN_HEIGHT / 2));
addChildAt(_local1, 0);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
(this.skipButton as SimpleButton).visible = true;
(this.skipButton as SimpleButton).addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
(this.skipButton as SimpleButton).addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
(this.skipButton as SimpleButton).addEventListener(MouseEvent.CLICK, skipClickHandler);
(this.nextButton as SimpleButton).visible = true;
(this.nextButton as SimpleButton).addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
(this.nextButton as SimpleButton).addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
(this.nextButton as SimpleButton).addEventListener(MouseEvent.CLICK, nextClickHandler);
GAManager.trackPage("/intro-loaded");
}
private function enterFrameHandler(_arg1:Event):void{
if (currentFrame == 5){
if (!SoundManager.isSoundPlaying(SoundData.MAIN_THEME)){
SoundData.MAIN_THEME.play();
};
stop();
};
if (currentFrame == 6){
if (((!(_musicForSlide2WasPlayed)) && (!(SoundManager.isSoundPlaying(SoundData.INTRO_SLIDE_2))))){
SoundData.INTRO_SLIDE_2.play();
_musicForSlide2WasPlayed = true;
};
} else {
if (currentFrame == 15){
stop();
} else {
if (currentFrame == 25){
if (!SoundManager.isSoundPlaying(SoundData.INTRO_SLIDE_3)){
SoundData.INTRO_SLIDE_3.play();
};
(this.skipButton as SimpleButton).visible = false;
if (Math.abs((this.nextButton as SimpleButton).x) > 0.5){
(this.nextButton as SimpleButton).x = ((this.nextButton as SimpleButton).x / 3);
} else {
(this.nextButton as SimpleButton).x = 0;
};
stop();
} else {
if (currentFrame == totalFrames){
dispatchEvent(new Event(IntroWhite.INTRO_COMPLETE, true));
};
};
};
};
}
private function nextClickHandler(_arg1:MouseEvent):void{
play();
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function cleanup():void{
if (hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
if ((this.skipButton as SimpleButton).hasEventListener(MouseEvent.MOUSE_OVER)){
(this.skipButton as SimpleButton).removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if ((this.skipButton as SimpleButton).hasEventListener(MouseEvent.MOUSE_OUT)){
(this.skipButton as SimpleButton).removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if ((this.skipButton as SimpleButton).hasEventListener(MouseEvent.CLICK)){
(this.skipButton as SimpleButton).removeEventListener(MouseEvent.CLICK, skipClickHandler);
};
if ((this.nextButton as SimpleButton).hasEventListener(MouseEvent.MOUSE_OVER)){
(this.nextButton as SimpleButton).removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if ((this.nextButton as SimpleButton).hasEventListener(MouseEvent.MOUSE_OUT)){
(this.nextButton as SimpleButton).removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if ((this.nextButton as SimpleButton).hasEventListener(MouseEvent.CLICK)){
(this.nextButton as SimpleButton).removeEventListener(MouseEvent.CLICK, nextClickHandler);
};
}
private function skipClickHandler(_arg1:MouseEvent):void{
GAManager.trackPage("/intro-skipped");
dispatchEvent(new Event(IntroWhite.INTRO_COMPLETE, true));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package core
Section 120
//LevelBorders (core.LevelBorders)
package core {
public class LevelBorders {
public var bottomBorderY:Number;
public var leftBorderX:Number;
public var upperBorderY:Number;
public var waterLineY:Number;
public var rightBorderX:Number;
public function LevelBorders(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0, _arg5:Number=0){
this.upperBorderY = _arg1;
this.leftBorderX = _arg2;
this.rightBorderX = _arg3;
this.bottomBorderY = _arg4;
this.waterLineY = _arg5;
}
public function get width():Number{
return (Math.abs((rightBorderX - leftBorderX)));
}
public function get height():Number{
return (Math.abs((bottomBorderY - upperBorderY)));
}
}
}//package core
Section 121
//LinkElement (core.LinkElement)
package core {
import flash.display.*;
public class LinkElement extends MovieClip {
public function LinkElement(_arg1:Boolean=false, _arg2:Number=1.5, _arg3:Number=0, _arg4:Number=0){
this.stop();
this.name = "link";
this.scaleX = _arg2;
this.scaleY = _arg2;
this.x = _arg3;
this.y = _arg4;
this.cacheAsBitmap = true;
if (_arg1){
this.gotoAndStop(2);
};
}
}
}//package core
Section 122
//LinkToCS (core.LinkToCS)
package core {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class LinkToCS extends SimpleButton {
public function LinkToCS():void{
if (Config.VIRAL){
this.addEventListener(MouseEvent.CLICK, navigate, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
}
private function navigate(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://candystand.com"), "_blank");
GAManager.trackPage("/go-to-candystand-from-map");
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package core
Section 123
//OurLogo (core.OurLogo)
package core {
import flash.display.*;
public class OurLogo extends MovieClip {
public function OurLogo():void{
}
}
}//package core
Section 124
//Outro (core.Outro)
package core {
import flash.display.*;
import flash.events.*;
import vis.*;
import popup.*;
public dynamic class Outro extends MovieClip {
private var buttonNext:SimpleButton;
public var btnOk:PopUpButtonOk;
private var fader:Sprite;
private var buttonOk:SimpleButton;
public static const ON_OK:String = "outroOnOk";
public function Outro(){
var _local1:BlueSky;
super();
_local1 = new BlueSky();
_local1.scaleX = (Config.SCREEN_WIDTH / _local1.width);
_local1.x = (_local1.x - (Config.SCREEN_WIDTH / 2));
_local1.y = (_local1.y - (Config.SCREEN_HEIGHT / 2));
addChildAt(_local1, 0);
this.visible = false;
this.stop();
this.buttonOk = this["btnOk"];
this.buttonOk.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
this.buttonOk.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.buttonOk.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.buttonOk.visible = false;
this.buttonNext = this["btnNext"];
this.buttonNext.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
this.buttonNext.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.buttonNext.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
}
public function init(_arg1:Boolean=true):void{
this.visible = true;
if (_arg1){
this.setAlpha(0);
this.addEventListener(Event.ENTER_FRAME, fadeIn, false, 0, true);
} else {
this.setAlpha(1);
};
}
private function setAlpha(_arg1:Number):void{
var _local2:int;
_local2 = 1;
while (_local2 < this.numChildren) {
this.getChildAt(_local2).alpha = _arg1;
_local2++;
};
}
private function fadeOut(_arg1:Event):void{
var _local2:Number;
_local2 = this.getAlpha();
if (_local2 > 0.05){
_local2 = (_local2 - (Math.abs(_local2) / 3));
this.setAlpha(_local2);
} else {
this.setAlpha(0);
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.dispatchEvent(new Event(Outro.ON_OK));
};
}
private function onNext(_arg1:MouseEvent):void{
this.gotoAndStop(2);
this.buttonOk.visible = true;
this.buttonNext.visible = false;
this.buttonNext.enabled = false;
this.buttonNext.removeEventListener(MouseEvent.CLICK, onNext);
this.buttonNext.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.buttonNext.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function getAlpha():Number{
if (this.numChildren > 1){
return (this.getChildAt(1).alpha);
};
return (0);
}
private function clickHandler(_arg1:MouseEvent):void{
if (this.hasEventListener(Event.ENTER_FRAME)){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
};
this.addEventListener(Event.ENTER_FRAME, fadeOut, false, 0, true);
}
public function cleanup():void{
if (this.buttonOk.hasEventListener(MouseEvent.CLICK)){
this.buttonOk.removeEventListener(MouseEvent.CLICK, clickHandler);
};
if (this.buttonOk.hasEventListener(MouseEvent.MOUSE_OVER)){
this.buttonOk.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.buttonOk.hasEventListener(MouseEvent.MOUSE_OUT)){
this.buttonOk.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
}
private function fadeIn(_arg1:Event):void{
var _local2:Number;
_local2 = this.getAlpha();
if (_local2 < 0.95){
_local2 = (_local2 + (Math.abs((1 - _local2)) / 5));
this.setAlpha(_local2);
} else {
this.setAlpha(1);
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package core
Section 125
//OutroViral (core.OutroViral)
package core {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;
import hud.*;
public dynamic class OutroViral extends MovieClip {
private var bcwLinkTextField:TextField;
public var btnOk:HomeButton;
public var playBonusLevelsBtn:LinkToCS;
private var csLinkTextField:TextField;
private var titleTextField:TextField;
public var bcwLink:TextField;
private var quitSubmitButton:SimpleButton;
private var fader:Sprite;
private var playBonusLevelsButton:SimpleButton;
public var csLink:TextField;
public var quitSubmitBtn:SimpleButton;
private var buttonOk:SimpleButton;
public var titleTF:TextField;
public static const ON_OK:String = "outroOnOk";
public static const ON_SUBMIT:String = "outroOnSubmit";
public function OutroViral(_arg1:String="Player"){
this.titleTextField = this["titleTF"];
this.titleTextField.text = this.titleTextField.text.replace("Player", _arg1);
this.csLinkTextField = this["csLink"];
this.csLinkTextField.addEventListener(MouseEvent.CLICK, onCsLink, false, 0, true);
this.csLinkTextField.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.csLinkTextField.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.bcwLinkTextField = this["bcwLink"];
this.bcwLinkTextField.addEventListener(MouseEvent.CLICK, onBcwLink, false, 0, true);
this.bcwLinkTextField.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.bcwLinkTextField.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.buttonOk = this["btnOk"];
this.buttonOk.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
this.buttonOk.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.buttonOk.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.playBonusLevelsButton = this["playBonusLevelsBtn"];
this.playBonusLevelsButton.addEventListener(MouseEvent.CLICK, clickPlayBonusLevelsHandler, false, 0, true);
this.playBonusLevelsButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.playBonusLevelsButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.playBonusLevelsButton = this["quitSubmitBtn"];
this.playBonusLevelsButton.addEventListener(MouseEvent.CLICK, clickQuitSubmitHandler, false, 0, true);
this.playBonusLevelsButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.playBonusLevelsButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
}
private function mouseOverLinkHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_HIDE, true));
}
private function onCsLink(_arg1:MouseEvent):void{
navigateToURL(new URLRequest(Config.BC_ON_CS_URL), "_blank");
}
private function clickQuitSubmitHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(ON_SUBMIT, true));
}
private function onBcwLink(_arg1:MouseEvent):void{
navigateToURL(new URLRequest(Config.BCW_URL), "_blank");
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(OutroViral.ON_OK));
}
public function cleanup():void{
if (this.buttonOk.hasEventListener(MouseEvent.CLICK)){
this.buttonOk.removeEventListener(MouseEvent.CLICK, clickHandler);
};
if (this.buttonOk.hasEventListener(MouseEvent.MOUSE_OVER)){
this.buttonOk.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.buttonOk.hasEventListener(MouseEvent.MOUSE_OUT)){
this.buttonOk.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
}
private function mouseOutLinkHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function clickPlayBonusLevelsHandler(_arg1:MouseEvent):void{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
navigateToURL(new URLRequest(Config.BC_ON_CS_URL), "_blank");
} else {
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
navigateToURL(new URLRequest(Config.BC_ON_PLAYIT_URL), "_blank");
};
};
}
}
}//package core
Section 126
//PicasoLogo (core.PicasoLogo)
package core {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class PicasoLogo extends MovieClip {
public static const ON_COMPLETE:String = "finishedPlaying";
public function PicasoLogo(){
addFrameScript(164, frame165);
stop();
}
public function init():void{
if (this.parent == null){
return;
};
this.stage.frameRate = 21;
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
this.gotoAndPlay(1);
}
private function enterFrameHandler(_arg1:Event):void{
if (currentFrame == totalFrames){
stop();
cleanup();
this.stage.frameRate = Config.ENGINE_FRAMERATE;
this.dispatchEvent(new Event(_slot1.ON_COMPLETE));
};
}
function frame165(){
stop();
}
private function navigate(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://picasogames.com"), "_blank");
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function cleanup():void{
if (hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package core
Section 127
//PicasoLogoLite (core.PicasoLogoLite)
package core {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class PicasoLogoLite extends MovieClip {
public var logobutton:SimpleButton;
public static const ON_COMPLETE:String = "finishedPlaying";
public function PicasoLogoLite(){
stop();
}
public function init():void{
if (this.parent == null){
return;
};
this.stage.frameRate = Config.ENGINE_FRAMERATE;
if (Config.VIRAL){
this.addEventListener(MouseEvent.CLICK, navigate, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
this.gotoAndPlay(1);
}
private function enterFrameHandler(_arg1:Event):void{
if (currentFrame == totalFrames){
stop();
cleanup();
if (Config.VIRAL){
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
this.stage.frameRate = Config.ENGINE_FRAMERATE;
this.dispatchEvent(new Event(PicasoLogoLite.ON_COMPLETE));
};
}
private function navigate(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://picasogames.com"), "_blank");
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function cleanup():void{
if (Config.VIRAL){
if (hasEventListener(MouseEvent.CLICK)){
removeEventListener(MouseEvent.CLICK, navigate);
};
if (hasEventListener(MouseEvent.MOUSE_OVER)){
removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (hasEventListener(MouseEvent.MOUSE_OUT)){
removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
};
if (hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package core
Section 128
//PlayItManager (core.PlayItManager)
package core {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class PlayItManager {
private static var _mask:String = "";
private static var _inited:Boolean = false;
private static var _reqURL:String;
private static var _state:int = 0;
private static var _user_id:String = "";
private static var _ssid:String;
private static var _domain:String;
private static var _id:String;
public function PlayItManager():void{
}
public static function set reqURL(_arg1:String):void{
_reqURL = _arg1;
}
private static function XORStrings(_arg1:String, _arg2:String):String{
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:String;
var _local7:int;
_local3 = _arg1.length;
_local4 = _arg2.length;
_local5 = 0;
_local6 = "";
_local7 = 0;
while (_local7 < _local3) {
if (_local5 >= _local4){
_local5 = 0;
};
_local6 = (_local6 + String((_arg2.charCodeAt(_local5) ^ _arg1.charCodeAt(_local5))));
_local5++;
_local7++;
};
return (_local6);
}
private static function onSgscLoaded(_arg1:Event):void{
var _local2:URLLoader;
var _local3:URLVariables;
_local2 = URLLoader(_arg1.target);
_local3 = new URLVariables(_local2.data);
state = int(_local3.state);
if (state == 0){
};
_local2.removeEventListener(Event.COMPLETE, onSgscLoaded);
_local2 = null;
_local3 = null;
}
public static function set state(_arg1:int):void{
_state = _arg1;
}
public static function get state():int{
return (_state);
}
public static function get domain():String{
return (_domain);
}
public static function set mask(_arg1:String):void{
_mask = _arg1;
}
public static function get id():String{
return (_id);
}
public static function traceToBCW(_arg1:String=""):void{
}
private static function onCrgLoaded(_arg1:Event):void{
var _local2:URLLoader;
var _local3:URLVariables;
var _local4:String;
_local2 = URLLoader(_arg1.target);
_local3 = new URLVariables(_local2.data);
state = int(_local3.state);
if (state == 0){
user_id = _local3.p1;
mask = _local3.p2;
_local4 = _local3.p3;
};
if (ssid == _local4){
};
_local2.removeEventListener(Event.COMPLETE, onCrgLoaded);
_local2 = null;
_local3 = null;
}
public static function init(_arg1:DisplayObject):void{
var _local2:Object;
var _local3:String;
var _local4:Number;
var _local5:Number;
var _local6:String;
if (inited){
return;
};
if (!_arg1.root){
return;
};
_local2 = _arg1.root.loaderInfo.parameters;
if (_local2["ssid"]){
ssid = String(_local2["ssid"]);
};
if (_local2["id"]){
id = String(_local2["id"]);
};
if (_local2["reqURL"]){
reqURL = String(_local2["reqURL"]);
};
_local3 = _arg1.loaderInfo.url;
_local4 = (_local3.indexOf("://") + 3);
_local5 = _local3.indexOf("/", _local4);
_local6 = _local3.substring(_local4, _local5);
domain = _local6;
inited = ((((Boolean(ssid)) && (Boolean(id)))) && (Boolean(domain)));
}
public static function submitScore(_arg1:Number):void{
var _local2:String;
var _local3:String;
var _local4:String;
var _local5:String;
var _local6:String;
var _local7:URLVariables;
var _local8:URLRequest;
var _local9:URLLoader;
if (!inited){
return;
};
_local2 = XORStrings(user_id, mask);
_local3 = XORStrings(_arg1.toString(), mask);
_local4 = _arg1.toString();
_local5 = id;
_local6 = ((((((((("ssid=" + ssid) + "&r1=") + _local2) + "&r2=") + _local3) + "&r3=") + _local4) + "&r4=") + _local5);
_local7 = new URLVariables(_local6);
_local8 = new URLRequest((("http://" + domain) + "/sgsc.php"));
_local8.method = URLRequestMethod.GET;
_local8.data = _local7;
_local9 = new URLLoader();
_local9.addEventListener(Event.COMPLETE, onSgscLoaded);
_local9.load(_local8);
}
public static function set user_id(_arg1:String):void{
_user_id = _arg1;
}
public static function initGame():void{
var _local1:URLRequest;
var _local2:String;
var _local3:URLVariables;
var _local4:URLLoader;
if (!inited){
return;
};
_local1 = new URLRequest((("http://" + domain) + "/crg.php"));
_local2 = ((("ssid=" + ssid) + "&id=") + id);
_local3 = new URLVariables(_local2);
_local1.method = URLRequestMethod.GET;
_local1.data = _local3;
_local4 = new URLLoader();
_local4.addEventListener(Event.COMPLETE, onCrgLoaded);
_local4.load(_local1);
}
public static function set domain(_arg1:String):void{
_domain = _arg1;
}
public static function get mask():String{
return (_mask);
}
public static function set inited(_arg1:Boolean):void{
_inited = _arg1;
}
public static function get inited():Boolean{
return (_inited);
}
public static function get reqURL():String{
return (_reqURL);
}
public static function set ssid(_arg1:String):void{
_ssid = _arg1;
}
public static function get ssid():String{
return (_ssid);
}
public static function get user_id():String{
return (_user_id);
}
public static function set id(_arg1:String):void{
_id = _arg1;
}
}
}//package core
Section 129
//Pointer (core.Pointer)
package core {
import flash.display.*;
import flash.filters.*;
public class Pointer extends Sprite {
public function Pointer(){
graphics.beginFill(0, 1);
graphics.drawCircle(0, 0, 5);
graphics.endFill();
filters = new Array(new GlowFilter(0));
cacheAsBitmap = true;
mouseEnabled = false;
mouseChildren = false;
}
}
}//package core
Section 130
//PreLoaderBar (core.PreLoaderBar)
package core {
import flash.display.*;
import flash.events.*;
public class PreLoaderBar extends MovieClip {
public var progressLine:MovieClip;
public static const LOADED:String = "loaded100";
public function PreLoaderBar(){
this["progressLine"].x = 0;
}
public function init():void{
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:Number;
_local2 = (stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal);
this["progressLine"].x = (400 * _local2);
if (stage.loaderInfo.bytesLoaded == stage.loaderInfo.bytesTotal){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
this.dispatchEvent(new Event(PreLoaderBar.LOADED));
};
}
public function setPercentage(_arg1:Number):void{
if (_arg1 < 0){
_arg1 = 0;
};
if (_arg1 > 1){
_arg1 = 1;
};
this["progressLine"].x = (400 * _arg1);
}
}
}//package core
Section 131
//ScrollZone (core.ScrollZone)
package core {
import flash.display.*;
import flash.events.*;
public class ScrollZone extends MovieClip {
private var _invertedX:Boolean;
private var _invertedY:Boolean;
private var _horizontal:Boolean;
public function ScrollZone(_arg1:Boolean=false, _arg2:Boolean=false, _arg3:Boolean=false){
if (_arg1){
scaleX = -1;
};
if (_arg3){
scaleY = -1;
};
if (_arg2){
rotation = 90;
};
_invertedX = _arg1;
_invertedY = _arg3;
_horizontal = _arg2;
gotoAndStop(1);
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
private function enterFrameHandler(_arg1:Event):void{
if (_horizontal){
if (_invertedX){
dispatchEvent(new Event(Config.EVENT_SCROLL_DOWN, true));
} else {
dispatchEvent(new Event(Config.EVENT_SCROLL_UP, true));
};
} else {
if (_invertedX){
dispatchEvent(new Event(Config.EVENT_SCROLL_RIGHT, true));
} else {
dispatchEvent(new Event(Config.EVENT_SCROLL_LEFT, true));
};
};
}
private function mouseOutHandler(_arg1:MouseEvent):void{
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
}
}//package core
Section 132
//SteelLastSegment (core.SteelLastSegment)
package core {
import flash.display.*;
public class SteelLastSegment extends MovieClip {
public function SteelLastSegment(_arg1:Boolean=false){
if (_arg1){
scaleX = -1;
};
}
}
}//package core
Section 133
//SteelSegment (core.SteelSegment)
package core {
import flash.display.*;
public class SteelSegment extends MovieClip {
}
}//package core
Section 134
//TestersPopUp (core.TestersPopUp)
package core {
import flash.display.*;
import flash.events.*;
public dynamic class TestersPopUp extends MovieClip {
private var nextButton:SimpleButton;
public var nextBtn:SimpleButton;
private var resetButton:SimpleButton;
public var resetBtn:SimpleButton;
public var saveAndCloseBtn:SimpleButton;
private var saveAndCloseButton:SimpleButton;
public static const RESET_ALL:String = "resetAllStoredData";
public static const ON_READY:String = "testersPopUpReady";
public static const TUTORIALS_RESET:String = "tutorialsChecked";
public static const INTRO_OUTRO_RESET:String = "introOutroChecked";
public static const ON_CLOSED:String = "testersPopUpClosed";
public static const ON_RESET:String = "introOutroReset";
public static const SCORES_RESET:String = "scoresChecked";
public static const ON_OK:String = "testersPopUpOk";
public function TestersPopUp():void{
this.saveAndCloseButton = this["saveAndCloseBtn"];
this.saveAndCloseButton.addEventListener(MouseEvent.CLICK, onSaveAndClose, false, 0, true);
this.saveAndCloseButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.saveAndCloseButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.resetButton = this["resetBtn"];
this.resetButton.addEventListener(MouseEvent.CLICK, onReset, false, 0, true);
this.resetButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.resetButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.nextButton = this["nextBtn"];
this.nextButton.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
}
private function onSaveAndClose(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(ON_OK));
}
private function onNext(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_LEVEL_NEXT, true));
this.dispatchEvent(new Event(ON_OK));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function onReset(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(ON_RESET));
}
public function cleanup():void{
this.saveAndCloseButton.removeEventListener(MouseEvent.CLICK, onSaveAndClose);
this.saveAndCloseButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.saveAndCloseButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.resetButton.removeEventListener(MouseEvent.CLICK, onReset);
this.resetButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.resetButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package core
Section 135
//TheirLogo (core.TheirLogo)
package core {
import flash.display.*;
public class TheirLogo extends MovieClip {
public function ThierLogo():void{
}
}
}//package core
Section 136
//wav (deck_break.wav)
package deck_break {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package deck_break
Section 137
//wav (deck_connect.wav)
package deck_connect {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package deck_connect
Section 138
//mp3 (emulation.mp3)
package emulation {
import flash.media.*;
public dynamic class mp3 extends Sound {
}
}//package emulation
Section 139
//BaseScrollPane (fl.containers.BaseScrollPane)
package fl.containers {
import fl.core.*;
import fl.controls.*;
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import fl.events.*;
public class BaseScrollPane extends UIComponent {
protected var contentHeight:Number;// = 0
protected var _horizontalScrollBar:ScrollBar;
protected var _horizontalPageScrollSize:Number;// = 0
protected var _verticalPageScrollSize:Number;// = 0
protected var _maxHorizontalScrollPosition:Number;// = 0
protected var defaultLineScrollSize:Number;// = 4
protected var vOffset:Number;// = 0
protected var contentScrollRect:Rectangle;
protected var background:DisplayObject;
protected var _verticalScrollBar:ScrollBar;
protected var disabledOverlay:Shape;
protected var vScrollBar:Boolean;
protected var _horizontalScrollPolicy:String;
protected var useFixedHorizontalScrolling:Boolean;// = false
protected var contentWidth:Number;// = 0
protected var availableHeight:Number;
protected var _verticalScrollPolicy:String;
protected var contentPadding:Number;// = 0
protected var _useBitmpScrolling:Boolean;// = false
protected var availableWidth:Number;
protected var hScrollBar:Boolean;
protected static const SCROLL_BAR_STYLES:Object = {upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
private static var defaultStyles:Object = {repeatDelay:500, repeatInterval:35, skin:"ScrollPane_upSkin", contentPadding:0, disabledAlpha:0.5};
override public function set enabled(_arg1:Boolean):void{
if (enabled == _arg1){
return;
};
_verticalScrollBar.enabled = _arg1;
_horizontalScrollBar.enabled = _arg1;
super.enabled = _arg1;
}
public function set useBitmapScrolling(_arg1:Boolean):void{
_useBitmpScrolling = _arg1;
invalidate(InvalidationType.STATE);
}
public function set horizontalLineScrollSize(_arg1:Number):void{
_horizontalScrollBar.lineScrollSize = _arg1;
}
protected function drawLayout():void{
calculateAvailableSize();
calculateContentWidth();
background.width = width;
background.height = height;
if (vScrollBar){
_verticalScrollBar.visible = true;
_verticalScrollBar.x = ((width - ScrollBar.WIDTH) - contentPadding);
_verticalScrollBar.y = contentPadding;
_verticalScrollBar.height = availableHeight;
} else {
_verticalScrollBar.visible = false;
};
_verticalScrollBar.setScrollProperties(availableHeight, 0, (contentHeight - availableHeight), verticalPageScrollSize);
setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false);
if (hScrollBar){
_horizontalScrollBar.visible = true;
_horizontalScrollBar.x = contentPadding;
_horizontalScrollBar.y = ((height - ScrollBar.WIDTH) - contentPadding);
_horizontalScrollBar.width = availableWidth;
} else {
_horizontalScrollBar.visible = false;
};
_horizontalScrollBar.setScrollProperties(availableWidth, 0, (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - availableWidth), horizontalPageScrollSize);
setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false);
drawDisabledOverlay();
}
protected function handleWheel(_arg1:MouseEvent):void{
if (((((!(enabled)) || (!(_verticalScrollBar.visible)))) || ((contentHeight <= availableHeight)))){
return;
};
_verticalScrollBar.scrollPosition = (_verticalScrollBar.scrollPosition - (_arg1.delta * verticalLineScrollSize));
setVerticalScrollPosition(_verticalScrollBar.scrollPosition);
dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _arg1.delta, horizontalScrollPosition));
}
protected function handleScroll(_arg1:ScrollEvent):void{
if (_arg1.target == _verticalScrollBar){
setVerticalScrollPosition(_arg1.position);
} else {
setHorizontalScrollPosition(_arg1.position);
};
}
public function get verticalLineScrollSize():Number{
return (_verticalScrollBar.lineScrollSize);
}
protected function drawBackground():void{
var _local1:DisplayObject = background;
background = getDisplayObjectInstance(getStyleValue("skin"));
background.width = width;
background.height = height;
addChildAt(background, 0);
if (((!((_local1 == null))) && (!((_local1 == background))))){
removeChild(_local1);
};
}
protected function calculateAvailableSize():void{
var _local1:Number = ScrollBar.WIDTH;
var _local2:Number = (contentPadding = Number(getStyleValue("contentPadding")));
var _local3:Number = ((height - (2 * _local2)) - vOffset);
vScrollBar = (((_verticalScrollPolicy == ScrollPolicy.ON)) || ((((_verticalScrollPolicy == ScrollPolicy.AUTO)) && ((contentHeight > _local3)))));
var _local4:Number = ((width - (vScrollBar) ? _local1 : 0) - (2 * _local2));
var _local5:Number = (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - _local4);
hScrollBar = (((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_local5 > 0)))));
if (hScrollBar){
_local3 = (_local3 - _local1);
};
if (((((((hScrollBar) && (!(vScrollBar)))) && ((_verticalScrollPolicy == ScrollPolicy.AUTO)))) && ((contentHeight > _local3)))){
vScrollBar = true;
_local4 = (_local4 - _local1);
};
availableHeight = (_local3 + vOffset);
availableWidth = _local4;
}
public function get verticalScrollPosition():Number{
return (_verticalScrollBar.scrollPosition);
}
public function get horizontalScrollPolicy():String{
return (_horizontalScrollPolicy);
}
protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
}
public function get horizontalPageScrollSize():Number{
if (isNaN(availableWidth)){
drawNow();
};
return (((((_horizontalPageScrollSize == 0)) && (!(isNaN(availableWidth))))) ? availableWidth : _horizontalPageScrollSize);
}
public function set horizontalScrollPosition(_arg1:Number):void{
drawNow();
_horizontalScrollBar.scrollPosition = _arg1;
setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false);
}
public function set verticalLineScrollSize(_arg1:Number):void{
_verticalScrollBar.lineScrollSize = _arg1;
}
public function get maxVerticalScrollPosition():Number{
drawNow();
return (Math.max(0, (contentHeight - availableHeight)));
}
public function set horizontalPageScrollSize(_arg1:Number):void{
_horizontalPageScrollSize = _arg1;
invalidate(InvalidationType.SIZE);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES)){
setStyles();
drawBackground();
if (contentPadding != getStyleValue("contentPadding")){
invalidate(InvalidationType.SIZE, false);
};
};
if (isInvalid(InvalidationType.SIZE, InvalidationType.STATE)){
drawLayout();
};
updateChildren();
super.draw();
}
public function get horizontalScrollBar():ScrollBar{
return (_horizontalScrollBar);
}
protected function calculateContentWidth():void{
}
public function set horizontalScrollPolicy(_arg1:String):void{
_horizontalScrollPolicy = _arg1;
invalidate(InvalidationType.SIZE);
}
override protected function configUI():void{
super.configUI();
contentScrollRect = new Rectangle(0, 0, 85, 85);
_verticalScrollBar = new ScrollBar();
_verticalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true);
_verticalScrollBar.visible = false;
_verticalScrollBar.lineScrollSize = defaultLineScrollSize;
addChild(_verticalScrollBar);
copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES);
_horizontalScrollBar = new ScrollBar();
_horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL;
_horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true);
_horizontalScrollBar.visible = false;
_horizontalScrollBar.lineScrollSize = defaultLineScrollSize;
addChild(_horizontalScrollBar);
copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES);
disabledOverlay = new Shape();
var _local1:Graphics = disabledOverlay.graphics;
_local1.beginFill(0xFFFFFF);
_local1.drawRect(0, 0, width, height);
_local1.endFill();
addEventListener(MouseEvent.MOUSE_WHEEL, handleWheel, false, 0, true);
}
protected function drawDisabledOverlay():void{
if (enabled){
if (contains(disabledOverlay)){
removeChild(disabledOverlay);
};
} else {
disabledOverlay.x = (disabledOverlay.y = contentPadding);
disabledOverlay.width = availableWidth;
disabledOverlay.height = availableHeight;
disabledOverlay.alpha = (getStyleValue("disabledAlpha") as Number);
addChild(disabledOverlay);
};
}
public function get horizontalScrollPosition():Number{
return (_horizontalScrollBar.scrollPosition);
}
public function get verticalScrollBar():ScrollBar{
return (_verticalScrollBar);
}
public function get horizontalLineScrollSize():Number{
return (_horizontalScrollBar.lineScrollSize);
}
public function set verticalScrollPosition(_arg1:Number):void{
drawNow();
_verticalScrollBar.scrollPosition = _arg1;
setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false);
}
protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
}
protected function setStyles():void{
copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES);
copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES);
}
public function set verticalPageScrollSize(_arg1:Number):void{
_verticalPageScrollSize = _arg1;
invalidate(InvalidationType.SIZE);
}
protected function setContentSize(_arg1:Number, _arg2:Number):void{
if ((((((contentWidth == _arg1)) || (useFixedHorizontalScrolling))) && ((contentHeight == _arg2)))){
return;
};
contentWidth = _arg1;
contentHeight = _arg2;
invalidate(InvalidationType.SIZE);
}
public function set verticalScrollPolicy(_arg1:String):void{
_verticalScrollPolicy = _arg1;
invalidate(InvalidationType.SIZE);
}
public function get maxHorizontalScrollPosition():Number{
drawNow();
return (Math.max(0, (contentWidth - availableWidth)));
}
protected function updateChildren():void{
_verticalScrollBar.enabled = (_horizontalScrollBar.enabled = enabled);
_verticalScrollBar.drawNow();
_horizontalScrollBar.drawNow();
}
public function get verticalPageScrollSize():Number{
if (isNaN(availableHeight)){
drawNow();
};
return (((((_verticalPageScrollSize == 0)) && (!(isNaN(availableHeight))))) ? availableHeight : _verticalPageScrollSize);
}
public function get verticalScrollPolicy():String{
return (_verticalScrollPolicy);
}
public function get useBitmapScrolling():Boolean{
return (_useBitmpScrolling);
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, ScrollBar.getStyleDefinition()));
}
}
}//package fl.containers
Section 140
//CellRenderer (fl.controls.listClasses.CellRenderer)
package fl.controls.listClasses {
import fl.controls.*;
import flash.events.*;
public class CellRenderer extends LabelButton implements ICellRenderer {
protected var _listData:ListData;
protected var _data:Object;
private static var defaultStyles:Object = {upSkin:"CellRenderer_upSkin", downSkin:"CellRenderer_downSkin", overSkin:"CellRenderer_overSkin", disabledSkin:"CellRenderer_disabledSkin", selectedDisabledSkin:"CellRenderer_selectedDisabledSkin", selectedUpSkin:"CellRenderer_selectedUpSkin", selectedDownSkin:"CellRenderer_selectedDownSkin", selectedOverSkin:"CellRenderer_selectedOverSkin", textFormat:null, disabledTextFormat:null, embedFonts:null, textPadding:5};
public function CellRenderer():void{
toggle = true;
focusEnabled = false;
}
override public function set selected(_arg1:Boolean):void{
super.selected = _arg1;
}
override protected function drawLayout():void{
var _local3:Number;
var _local1:Number = Number(getStyleValue("textPadding"));
var _local2:Number = 0;
if (icon != null){
icon.x = _local1;
icon.y = Math.round(((height - icon.height) >> 1));
_local2 = (icon.width + _local1);
};
if (label.length > 0){
textField.visible = true;
_local3 = Math.max(0, ((width - _local2) - (_local1 * 2)));
textField.width = _local3;
textField.height = (textField.textHeight + 4);
textField.x = (_local2 + _local1);
textField.y = Math.round(((height - textField.height) >> 1));
} else {
textField.visible = false;
};
background.width = width;
background.height = height;
}
public function get listData():ListData{
return (_listData);
}
override public function setSize(_arg1:Number, _arg2:Number):void{
super.setSize(_arg1, _arg2);
}
public function get data():Object{
return (_data);
}
public function set data(_arg1:Object):void{
_data = _arg1;
}
public function set listData(_arg1:ListData):void{
_listData = _arg1;
label = _listData.label;
setStyle("icon", _listData.icon);
}
override public function get selected():Boolean{
return (super.selected);
}
override protected function toggleSelected(_arg1:MouseEvent):void{
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls.listClasses
Section 141
//ICellRenderer (fl.controls.listClasses.ICellRenderer)
package fl.controls.listClasses {
public interface ICellRenderer {
function set x(_arg1:Number):void;
function set y(_arg1:Number):void;
function setSize(_arg1:Number, _arg2:Number):void;
function set data(_arg1:Object):void;
function set selected(_arg1:Boolean):void;
function set listData(_arg1:ListData):void;
function get listData():ListData;
function get data():Object;
function get selected():Boolean;
function setMouseState(_arg1:String):void;
}
}//package fl.controls.listClasses
Section 142
//ListData (fl.controls.listClasses.ListData)
package fl.controls.listClasses {
import fl.core.*;
public class ListData {
protected var _index:uint;
protected var _owner:UIComponent;
protected var _label:String;
protected var _icon:Object;// = null
protected var _row:uint;
protected var _column:uint;
public function ListData(_arg1:String, _arg2:Object, _arg3:UIComponent, _arg4:uint, _arg5:uint, _arg6:uint=0){
_label = _arg1;
_icon = _arg2;
_owner = _arg3;
_index = _arg4;
_row = _arg5;
_column = _arg6;
}
public function get row():uint{
return (_row);
}
public function get owner():UIComponent{
return (_owner);
}
public function get label():String{
return (_label);
}
public function get index():uint{
return (_index);
}
public function get icon():Object{
return (_icon);
}
public function get column():uint{
return (_column);
}
}
}//package fl.controls.listClasses
Section 143
//BaseButton (fl.controls.BaseButton)
package fl.controls {
import fl.core.*;
import flash.display.*;
import flash.events.*;
import fl.events.*;
import flash.utils.*;
public class BaseButton extends UIComponent {
protected var pressTimer:Timer;
protected var _autoRepeat:Boolean;// = false
protected var _selected:Boolean;// = false
protected var background:DisplayObject;
private var unlockedMouseState:String;
protected var mouseState:String;
private var _mouseStateLocked:Boolean;// = false
private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35};
public function BaseButton(){
buttonMode = true;
mouseChildren = false;
useHandCursor = false;
setupMouseEvents();
setMouseState("up");
pressTimer = new Timer(1, 0);
pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true);
}
override public function get enabled():Boolean{
return (super.enabled);
}
protected function startPress():void{
if (_autoRepeat){
pressTimer.delay = Number(getStyleValue("repeatDelay"));
pressTimer.start();
};
dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true));
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawBackground();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
super.draw();
}
protected function drawLayout():void{
background.width = width;
background.height = height;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
mouseEnabled = _arg1;
}
public function set autoRepeat(_arg1:Boolean):void{
_autoRepeat = _arg1;
}
protected function mouseEventHandler(_arg1:MouseEvent):void{
if (_arg1.type == MouseEvent.MOUSE_DOWN){
setMouseState("down");
startPress();
} else {
if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){
setMouseState("over");
endPress();
} else {
if (_arg1.type == MouseEvent.ROLL_OUT){
setMouseState("up");
endPress();
};
};
};
}
protected function drawBackground():void{
var _local1:String = (enabled) ? mouseState : "disabled";
if (selected){
_local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1));
};
_local1 = (_local1 + "Skin");
var _local2:DisplayObject = background;
background = getDisplayObjectInstance(getStyleValue(_local1));
addChildAt(background, 0);
if (((!((_local2 == null))) && (!((_local2 == background))))){
removeChild(_local2);
};
}
public function get selected():Boolean{
return (_selected);
}
protected function setupMouseEvents():void{
addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true);
}
protected function endPress():void{
pressTimer.reset();
}
public function set mouseStateLocked(_arg1:Boolean):void{
_mouseStateLocked = _arg1;
if (_arg1 == false){
setMouseState(unlockedMouseState);
} else {
unlockedMouseState = mouseState;
};
}
public function get autoRepeat():Boolean{
return (_autoRepeat);
}
public function set selected(_arg1:Boolean):void{
if (_selected == _arg1){
return;
};
_selected = _arg1;
invalidate(InvalidationType.STATE);
}
protected function buttonDown(_arg1:TimerEvent):void{
if (!_autoRepeat){
endPress();
return;
};
if (pressTimer.currentCount == 1){
pressTimer.delay = Number(getStyleValue("repeatInterval"));
};
dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true));
}
public function setMouseState(_arg1:String):void{
if (_mouseStateLocked){
unlockedMouseState = _arg1;
return;
};
if (mouseState == _arg1){
return;
};
mouseState = _arg1;
invalidate(InvalidationType.STATE);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 144
//Button (fl.controls.Button)
package fl.controls {
import fl.core.*;
import flash.display.*;
import fl.managers.*;
public class Button extends LabelButton implements IFocusManagerComponent {
protected var _emphasized:Boolean;// = false
protected var emphasizedBorder:DisplayObject;
private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2};
public static var createAccessibilityImplementation:Function;
public function set emphasized(_arg1:Boolean):void{
_emphasized = _arg1;
invalidate(InvalidationType.STYLES);
}
override protected function initializeAccessibility():void{
if (Button.createAccessibilityImplementation != null){
Button.createAccessibilityImplementation(this);
};
}
protected function drawEmphasized():void{
var _local2:Number;
if (emphasizedBorder != null){
removeChild(emphasizedBorder);
};
emphasizedBorder = null;
if (!_emphasized){
return;
};
var _local1:Object = getStyleValue("emphasizedSkin");
if (_local1 != null){
emphasizedBorder = getDisplayObjectInstance(_local1);
};
if (emphasizedBorder != null){
addChildAt(emphasizedBorder, 0);
_local2 = Number(getStyleValue("emphasizedPadding"));
emphasizedBorder.x = (emphasizedBorder.y = -(_local2));
emphasizedBorder.width = (width + (_local2 * 2));
emphasizedBorder.height = (height + (_local2 * 2));
};
}
public function get emphasized():Boolean{
return (_emphasized);
}
override protected function draw():void{
if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){
drawEmphasized();
};
super.draw();
if (emphasizedBorder != null){
setChildIndex(emphasizedBorder, (numChildren - 1));
};
}
override public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
var _local3:*;
super.drawFocus(_arg1);
if (_arg1){
_local2 = Number(getStyleValue("emphasizedPadding"));
if ((((_local2 < 0)) || (!(_emphasized)))){
_local2 = 0;
};
_local3 = getStyleValue("focusRectPadding");
_local3 = ((_local3)==null) ? 2 : _local3;
_local3 = (_local3 + _local2);
uiFocusRect.x = -(_local3);
uiFocusRect.y = -(_local3);
uiFocusRect.width = (width + (_local3 * 2));
uiFocusRect.height = (height + (_local3 * 2));
};
}
public static function getStyleDefinition():Object{
return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles));
}
}
}//package fl.controls
Section 145
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement)
package fl.controls {
public class ButtonLabelPlacement {
public static const TOP:String = "top";
public static const LEFT:String = "left";
public static const BOTTOM:String = "bottom";
public static const RIGHT:String = "right";
}
}//package fl.controls
Section 146
//ComboBox (fl.controls.ComboBox)
package fl.controls {
import fl.controls.listClasses.*;
import fl.core.*;
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import flash.text.*;
import fl.data.*;
import fl.managers.*;
import fl.events.*;
import flash.ui.*;
public class ComboBox extends UIComponent implements IFocusManagerComponent {
protected var isKeyDown:Boolean;// = false
protected var _labels:Array;
protected var background:BaseButton;
protected var _dropdownWidth:Number;
protected var inputField:TextInput;
protected var highlightedCell:int;// = -1
protected var listOverIndex:uint;
protected var editableValue:String;
protected var _prompt:String;
protected var isOpen:Boolean;// = false
protected var list:List;
protected var _rowCount:uint;// = 5
protected var _editable:Boolean;// = false
private var collectionItemImport:SimpleCollectionItem;
protected var currentIndex:int;
protected static const BACKGROUND_STYLES:Object = {overSkin:"overSkin", downSkin:"downSkin", upSkin:"upSkin", disabledSkin:"disabledSkin", repeatInterval:"repeatInterval"};
protected static const LIST_STYLES:Object = {upSkin:"comboListUpSkin", overSkin:"comboListOverSkin", downSkin:"comobListDownSkin", disabledSkin:"comboListDisabledSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval", textFormat:"textFormat", disabledAlpha:"disabledAlpha", skin:"listSkin"};
private static var defaultStyles:Object = {upSkin:"ComboBox_upSkin", downSkin:"ComboBox_downSkin", overSkin:"ComboBox_overSkin", disabledSkin:"ComboBox_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:3, buttonWidth:24, disabledAlpha:null, listSkin:null};
public static var createAccessibilityImplementation:Function;
protected function drawList():void{
list.rowCount = Math.max(0, Math.min(_rowCount, list.dataProvider.length));
}
public function get imeMode():String{
return (inputField.imeMode);
}
protected function onInputFieldFocusOut(_arg1:FocusEvent):void{
inputField.removeEventListener(ComponentEvent.ENTER, onEnter);
selectedIndex = selectedIndex;
}
public function set imeMode(_arg1:String):void{
inputField.imeMode = _arg1;
}
protected function passEvent(_arg1:Event):void{
dispatchEvent(_arg1);
}
protected function calculateAvailableHeight():Number{
var _local1:Number = Number(getStyleValue("contentPadding"));
return ((list.height - (_local1 * 2)));
}
public function get dropdown():List{
return (list);
}
override protected function focusOutHandler(_arg1:FocusEvent):void{
isKeyDown = false;
if (isOpen){
if (((!(_arg1.relatedObject)) || (!(list.contains(_arg1.relatedObject))))){
if (((!((highlightedCell == -1))) && (!((highlightedCell == selectedIndex))))){
selectedIndex = highlightedCell;
dispatchEvent(new Event(Event.CHANGE));
};
close();
};
};
super.focusOutHandler(_arg1);
}
public function get selectedLabel():String{
if (editableValue != null){
return (editableValue);
};
if (selectedIndex == -1){
return (null);
};
return (itemToLabel(selectedItem));
}
protected function onListChange(_arg1:Event):void{
editableValue = null;
dispatchEvent(_arg1);
invalidate(InvalidationType.SELECTED);
if (isKeyDown){
return;
};
close();
}
public function get text():String{
return (inputField.text);
}
protected function onEnter(_arg1:ComponentEvent):void{
_arg1.stopPropagation();
}
public function sortItemsOn(_arg1:String, _arg2:Object=null){
return (list.sortItemsOn(_arg1, _arg2));
}
protected function handleDataChange(_arg1:DataChangeEvent):void{
invalidate(InvalidationType.DATA);
}
protected function onToggleListVisibility(_arg1:MouseEvent):void{
_arg1.stopPropagation();
dispatchEvent(_arg1);
if (isOpen){
close();
} else {
open();
stage.addEventListener(MouseEvent.MOUSE_UP, onListItemUp, false, 0, true);
};
}
public function get dropdownWidth():Number{
return (list.width);
}
protected function highlightCell(_arg1:int=-1):void{
var _local2:ICellRenderer;
if (highlightedCell > -1){
_local2 = list.itemToCellRenderer(getItemAt(highlightedCell));
if (_local2 != null){
_local2.setMouseState("up");
};
};
if (_arg1 == -1){
return;
};
list.scrollToIndex(_arg1);
list.drawNow();
_local2 = list.itemToCellRenderer(getItemAt(_arg1));
if (_local2 != null){
_local2.setMouseState("over");
highlightedCell = _arg1;
};
}
public function removeItemAt(_arg1:uint):void{
list.removeItemAt(_arg1);
invalidate(InvalidationType.DATA);
}
override protected function draw():void{
var _local1:* = selectedIndex;
if ((((_local1 == -1)) && (((((!((prompt == null))) || (editable))) || ((length == 0)))))){
_local1 = Math.max(-1, Math.min(_local1, (length - 1)));
} else {
editableValue = null;
_local1 = Math.max(0, Math.min(_local1, (length - 1)));
};
if (list.selectedIndex != _local1){
list.selectedIndex = _local1;
invalidate(InvalidationType.SELECTED, false);
};
if (isInvalid(InvalidationType.STYLES)){
setStyles();
setEmbedFonts();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.STATE)){
drawTextFormat();
drawLayout();
invalidate(InvalidationType.DATA);
};
if (isInvalid(InvalidationType.DATA)){
drawList();
invalidate(InvalidationType.SELECTED, true);
};
if (isInvalid(InvalidationType.SELECTED)){
if ((((_local1 == -1)) && (!((editableValue == null))))){
inputField.text = editableValue;
} else {
if (_local1 > -1){
if (length > 0){
inputField.horizontalScrollPosition = 0;
inputField.text = itemToLabel(list.selectedItem);
};
} else {
if ((((_local1 == -1)) && (!((_prompt == null))))){
showPrompt();
} else {
inputField.text = "";
};
};
};
if (((((editable) && ((selectedIndex > -1)))) && ((stage.focus == inputField.textField)))){
inputField.setSelection(0, inputField.length);
};
};
drawTextField();
super.draw();
}
public function get selectedItem():Object{
return (list.selectedItem);
}
public function open():void{
currentIndex = selectedIndex;
if (((isOpen) || ((length == 0)))){
return;
};
dispatchEvent(new Event(Event.OPEN));
isOpen = true;
addEventListener(Event.ENTER_FRAME, addCloseListener, false, 0, true);
positionList();
list.scrollToSelected();
stage.addChild(list);
}
override protected function configUI():void{
super.configUI();
background = new BaseButton();
background.focusEnabled = false;
copyStylesToChild(background, BACKGROUND_STYLES);
background.addEventListener(MouseEvent.MOUSE_DOWN, onToggleListVisibility, false, 0, true);
addChild(background);
inputField = new TextInput();
inputField.focusTarget = (this as IFocusManagerComponent);
inputField.focusEnabled = false;
inputField.addEventListener(Event.CHANGE, onTextInput, false, 0, true);
addChild(inputField);
list = new List();
list.focusEnabled = false;
copyStylesToChild(list, LIST_STYLES);
list.addEventListener(Event.CHANGE, onListChange, false, 0, true);
list.addEventListener(ListEvent.ITEM_CLICK, onListChange, false, 0, true);
list.addEventListener(ListEvent.ITEM_ROLL_OUT, passEvent, false, 0, true);
list.addEventListener(ListEvent.ITEM_ROLL_OVER, passEvent, false, 0, true);
list.verticalScrollBar.addEventListener(Event.SCROLL, passEvent, false, 0, true);
}
public function set text(_arg1:String):void{
if (!editable){
return;
};
inputField.text = _arg1;
}
public function addItem(_arg1:Object):void{
list.addItem(_arg1);
invalidate(InvalidationType.DATA);
}
public function get editable():Boolean{
return (_editable);
}
public function get labelField():String{
return (list.labelField);
}
protected function positionList():void{
var _local1:Point = localToGlobal(new Point(0, 0));
list.x = _local1.x;
if (((_local1.y + height) + list.height) > stage.stageHeight){
list.y = (_local1.y - list.height);
} else {
list.y = (_local1.y + height);
};
}
protected function onStageClick(_arg1:MouseEvent):void{
if (!isOpen){
return;
};
if (((!(contains((_arg1.target as DisplayObject)))) && (!(list.contains((_arg1.target as DisplayObject)))))){
if (highlightedCell != -1){
selectedIndex = highlightedCell;
dispatchEvent(new Event(Event.CHANGE));
};
close();
};
}
public function set dropdownWidth(_arg1:Number):void{
_dropdownWidth = _arg1;
invalidate(InvalidationType.SIZE);
}
public function get prompt():String{
return (_prompt);
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
isKeyDown = true;
if (_arg1.ctrlKey){
switch (_arg1.keyCode){
case Keyboard.UP:
if (highlightedCell > -1){
selectedIndex = highlightedCell;
dispatchEvent(new Event(Event.CHANGE));
};
close();
break;
case Keyboard.DOWN:
open();
break;
};
return;
};
_arg1.stopPropagation();
var _local2:int = Math.max(((calculateAvailableHeight() / list.rowHeight) << 0), 1);
var _local3:uint = selectedIndex;
var _local4:Number = ((highlightedCell)==-1) ? selectedIndex : highlightedCell;
var _local5 = -1;
switch (_arg1.keyCode){
case Keyboard.SPACE:
if (isOpen){
close();
} else {
open();
};
return;
case Keyboard.ESCAPE:
if (isOpen){
if (highlightedCell > -1){
selectedIndex = selectedIndex;
};
close();
};
return;
case Keyboard.UP:
_local5 = Math.max(0, (_local4 - 1));
break;
case Keyboard.DOWN:
_local5 = Math.min((length - 1), (_local4 + 1));
break;
case Keyboard.PAGE_UP:
_local5 = Math.max((_local4 - _local2), 0);
break;
case Keyboard.PAGE_DOWN:
_local5 = Math.min((_local4 + _local2), (length - 1));
break;
case Keyboard.HOME:
_local5 = 0;
break;
case Keyboard.END:
_local5 = (length - 1);
break;
case Keyboard.ENTER:
if (((_editable) && ((highlightedCell == -1)))){
editableValue = inputField.text;
selectedIndex = -1;
} else {
if (((isOpen) && ((highlightedCell > -1)))){
editableValue = null;
selectedIndex = highlightedCell;
dispatchEvent(new Event(Event.CHANGE));
};
};
dispatchEvent(new ComponentEvent(ComponentEvent.ENTER));
close();
return;
default:
if (editable){
break;
};
_local5 = list.getNextIndexAtLetter(String.fromCharCode(_arg1.keyCode), _local4);
break;
};
if (_local5 > -1){
if (isOpen){
highlightCell(_local5);
inputField.text = list.itemToLabel(getItemAt(_local5));
} else {
highlightCell();
selectedIndex = _local5;
dispatchEvent(new Event(Event.CHANGE));
};
};
}
public function get value():String{
var _local1:Object;
if (editableValue != null){
return (editableValue);
};
_local1 = selectedItem;
if (((!(_editable)) && (!((_local1.data == null))))){
return (_local1.data);
};
return (itemToLabel(_local1));
}
override protected function focusInHandler(_arg1:FocusEvent):void{
super.focusInHandler(_arg1);
if (editable){
stage.focus = inputField.textField;
};
}
public function set dataProvider(_arg1:DataProvider):void{
_arg1.addEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange, false, 0, true);
list.dataProvider = _arg1;
invalidate(InvalidationType.DATA);
}
public function get rowCount():uint{
return (_rowCount);
}
public function set restrict(_arg1:String):void{
if (((componentInspectorSetting) && ((_arg1 == "")))){
_arg1 = null;
};
if (!_editable){
return;
};
inputField.restrict = _arg1;
}
public function replaceItemAt(_arg1:Object, _arg2:uint):Object{
return (list.replaceItemAt(_arg1, _arg2));
}
public function removeAll():void{
list.removeAll();
inputField.text = "";
invalidate(InvalidationType.DATA);
}
protected function onTextInput(_arg1:Event):void{
_arg1.stopPropagation();
if (!_editable){
return;
};
editableValue = inputField.text;
selectedIndex = -1;
dispatchEvent(new Event(Event.CHANGE));
}
protected function onInputFieldFocus(_arg1:FocusEvent):void{
inputField.addEventListener(ComponentEvent.ENTER, onEnter, false, 0, true);
close();
}
protected function onListItemUp(_arg1:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_UP, onListItemUp);
if (((!((_arg1.target is ICellRenderer))) || (!(list.contains((_arg1.target as DisplayObject)))))){
return;
};
editableValue = null;
var _local2:* = selectedIndex;
selectedIndex = _arg1.target.listData.index;
if (_local2 != selectedIndex){
dispatchEvent(new Event(Event.CHANGE));
};
close();
}
override protected function keyUpHandler(_arg1:KeyboardEvent):void{
isKeyDown = false;
}
protected function drawLayout():void{
var _local1:Number = (getStyleValue("buttonWidth") as Number);
var _local2:Number = (getStyleValue("textPadding") as Number);
background.setSize(width, height);
inputField.x = (inputField.y = _local2);
inputField.setSize(((width - _local1) - _local2), (height - _local2));
list.width = (isNaN(_dropdownWidth)) ? width : _dropdownWidth;
background.enabled = enabled;
background.drawNow();
}
public function set selectedItem(_arg1:Object):void{
list.selectedItem = _arg1;
invalidate(InvalidationType.SELECTED);
}
public function getItemAt(_arg1:uint):Object{
return (list.getItemAt(_arg1));
}
override protected function initializeAccessibility():void{
if (ComboBox.createAccessibilityImplementation != null){
ComboBox.createAccessibilityImplementation(this);
};
}
public function itemToLabel(_arg1:Object):String{
if (_arg1 == null){
return ("");
};
return (list.itemToLabel(_arg1));
}
public function addItemAt(_arg1:Object, _arg2:uint):void{
list.addItemAt(_arg1, _arg2);
invalidate(InvalidationType.DATA);
}
private function addCloseListener(_arg1:Event){
removeEventListener(Event.ENTER_FRAME, addCloseListener);
if (!isOpen){
return;
};
stage.addEventListener(MouseEvent.MOUSE_DOWN, onStageClick, false, 0, true);
}
protected function setEmbedFonts():void{
var _local1:Object = getStyleValue("embedFonts");
if (_local1 != null){
inputField.textField.embedFonts = _local1;
};
}
public function set rowCount(_arg1:uint):void{
_rowCount = _arg1;
invalidate(InvalidationType.SIZE);
}
public function removeItem(_arg1:Object):Object{
return (list.removeItem(_arg1));
}
public function get dataProvider():DataProvider{
return (list.dataProvider);
}
public function get restrict():String{
return (inputField.restrict);
}
protected function showPrompt():void{
inputField.text = _prompt;
}
public function sortItems(... _args){
return (list.sortItems.apply(list, _args));
}
public function set editable(_arg1:Boolean):void{
_editable = _arg1;
drawTextField();
}
public function set labelField(_arg1:String):void{
list.labelField = _arg1;
invalidate(InvalidationType.DATA);
}
public function get textField():TextInput{
return (inputField);
}
public function set prompt(_arg1:String):void{
if (_arg1 == ""){
_prompt = null;
} else {
_prompt = _arg1;
};
invalidate(InvalidationType.STATE);
}
public function set labelFunction(_arg1:Function):void{
list.labelFunction = _arg1;
invalidate(InvalidationType.DATA);
}
protected function setStyles():void{
copyStylesToChild(background, BACKGROUND_STYLES);
copyStylesToChild(list, LIST_STYLES);
}
public function get length():int{
return (list.length);
}
protected function drawTextFormat():void{
var _local1:TextFormat = (getStyleValue((_enabled) ? "textFormat" : "disabledTextFormat") as TextFormat);
if (_local1 == null){
_local1 = new TextFormat();
};
inputField.textField.defaultTextFormat = _local1;
inputField.textField.setTextFormat(_local1);
setEmbedFonts();
}
protected function drawTextField():void{
inputField.setStyle("upSkin", "");
inputField.setStyle("disabledSkin", "");
inputField.enabled = enabled;
inputField.editable = _editable;
inputField.textField.selectable = ((enabled) && (_editable));
inputField.mouseEnabled = (inputField.mouseChildren = ((enabled) && (_editable)));
inputField.focusEnabled = false;
if (_editable){
inputField.addEventListener(FocusEvent.FOCUS_IN, onInputFieldFocus, false, 0, true);
inputField.addEventListener(FocusEvent.FOCUS_OUT, onInputFieldFocusOut, false, 0, true);
} else {
inputField.removeEventListener(FocusEvent.FOCUS_IN, onInputFieldFocus);
inputField.removeEventListener(FocusEvent.FOCUS_OUT, onInputFieldFocusOut);
};
}
public function get labelFunction():Function{
return (list.labelFunction);
}
public function set selectedIndex(_arg1:int):void{
list.selectedIndex = _arg1;
highlightCell();
invalidate(InvalidationType.SELECTED);
}
public function get selectedIndex():int{
return (list.selectedIndex);
}
public function close():void{
highlightCell();
highlightedCell = -1;
if (!isOpen){
return;
};
dispatchEvent(new Event(Event.CLOSE));
stage.removeEventListener(MouseEvent.MOUSE_DOWN, onStageClick);
isOpen = false;
stage.removeChild(list);
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, List.getStyleDefinition()));
}
}
}//package fl.controls
Section 147
//LabelButton (fl.controls.LabelButton)
package fl.controls {
import fl.core.*;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import fl.managers.*;
import fl.events.*;
import flash.ui.*;
public class LabelButton extends BaseButton implements IFocusManagerComponent {
protected var _toggle:Boolean;// = false
public var textField:TextField;
protected var mode:String;// = "center"
protected var _labelPlacement:String;// = "right"
protected var oldMouseState:String;
protected var _label:String;// = "Label"
protected var icon:DisplayObject;
private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false};
public static var createAccessibilityImplementation:Function;
override protected function draw():void{
if (textField.text != _label){
label = _label;
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawBackground();
drawIcon();
drawTextFormat();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
};
validate();
}
override protected function drawLayout():void{
var _local7:Number;
var _local8:Number;
var _local1:Number = Number(getStyleValue("textPadding"));
var _local2:String = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement;
textField.height = (textField.textHeight + 4);
var _local3:Number = (textField.textWidth + 4);
var _local4:Number = (textField.textHeight + 4);
var _local5:Number = ((icon)==null) ? 0 : (icon.width + _local1);
var _local6:Number = ((icon)==null) ? 0 : (icon.height + _local1);
textField.visible = (label.length > 0);
if (icon != null){
icon.x = Math.round(((width - icon.width) / 2));
icon.y = Math.round(((height - icon.height) / 2));
};
if (textField.visible == false){
textField.width = 0;
textField.height = 0;
} else {
if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){
_local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1))));
if ((height - 2) > _local4){
_local8 = _local4;
} else {
_local8 = (height - 2);
};
_local3 = _local7;
textField.width = _local3;
_local4 = _local8;
textField.height = _local4;
textField.x = Math.round(((width - _local3) / 2));
textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0));
if (icon != null){
icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1));
};
} else {
_local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1))));
_local3 = _local7;
textField.width = _local3;
textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0));
textField.y = Math.round(((height - textField.height) / 2));
if (icon != null){
icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1));
};
};
};
super.drawLayout();
}
protected function toggleSelected(_arg1:MouseEvent):void{
selected = !(selected);
dispatchEvent(new Event(Event.CHANGE, true));
}
override protected function keyUpHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
if (_arg1.keyCode == Keyboard.SPACE){
setMouseState(oldMouseState);
oldMouseState = null;
endPress();
dispatchEvent(new MouseEvent(MouseEvent.CLICK));
};
}
public function get labelPlacement():String{
return (_labelPlacement);
}
public function get toggle():Boolean{
return (_toggle);
}
protected function setEmbedFont(){
var _local1:Object = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
}
override public function get selected():Boolean{
return ((_toggle) ? _selected : false);
}
override protected function configUI():void{
super.configUI();
textField = new TextField();
textField.type = TextFieldType.DYNAMIC;
textField.selectable = false;
addChild(textField);
}
override protected function initializeAccessibility():void{
if (LabelButton.createAccessibilityImplementation != null){
LabelButton.createAccessibilityImplementation(this);
};
}
public function set labelPlacement(_arg1:String):void{
_labelPlacement = _arg1;
invalidate(InvalidationType.SIZE);
}
protected function drawIcon():void{
var _local1:DisplayObject = icon;
var _local2:String = (enabled) ? mouseState : "disabled";
if (selected){
_local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1));
};
_local2 = (_local2 + "Icon");
var _local3:Object = getStyleValue(_local2);
if (_local3 == null){
_local3 = getStyleValue("icon");
};
if (_local3 != null){
icon = getDisplayObjectInstance(_local3);
};
if (icon != null){
addChildAt(icon, 1);
};
if (((!((_local1 == null))) && (!((_local1 == icon))))){
removeChild(_local1);
};
}
public function set label(_arg1:String):void{
_label = _arg1;
if (textField.text != _label){
textField.text = _label;
dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE));
};
invalidate(InvalidationType.SIZE);
invalidate(InvalidationType.STYLES);
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
if (_arg1.keyCode == Keyboard.SPACE){
if (oldMouseState == null){
oldMouseState = mouseState;
};
setMouseState("down");
startPress();
};
}
public function set toggle(_arg1:Boolean):void{
if (((!(_arg1)) && (super.selected))){
selected = false;
};
_toggle = _arg1;
if (_toggle){
addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true);
} else {
removeEventListener(MouseEvent.CLICK, toggleSelected);
};
invalidate(InvalidationType.STATE);
}
override public function set selected(_arg1:Boolean):void{
_selected = _arg1;
if (_toggle){
invalidate(InvalidationType.STATE);
};
}
protected function drawTextFormat():void{
var _local1:Object = UIComponent.getStyleDefinition();
var _local2:TextFormat = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat);
textField.setTextFormat(_local2);
var _local3:TextFormat = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat);
if (_local3 != null){
textField.setTextFormat(_local3);
} else {
_local3 = _local2;
};
textField.defaultTextFormat = _local3;
setEmbedFont();
}
public function get label():String{
return (_label);
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition()));
}
}
}//package fl.controls
Section 148
//List (fl.controls.List)
package fl.controls {
import fl.controls.listClasses.*;
import fl.core.*;
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import fl.managers.*;
import flash.utils.*;
import flash.ui.*;
public class List extends SelectableList implements IFocusManagerComponent {
protected var _iconField:String;// = "icon"
protected var _labelField:String;// = "label"
protected var _iconFunction:Function;
protected var _rowHeight:Number;// = 20
protected var _cellRenderer:Object;
protected var _labelFunction:Function;
private static var defaultStyles:Object = {focusRectSkin:null, focusRectPadding:null};
public static var createAccessibilityImplementation:Function;
public function get iconField():String{
return (_iconField);
}
public function set iconField(_arg1:String):void{
if (_arg1 == _iconField){
return;
};
_iconField = _arg1;
invalidate(InvalidationType.DATA);
}
public function set labelField(_arg1:String):void{
if (_arg1 == _labelField){
return;
};
_labelField = _arg1;
invalidate(InvalidationType.DATA);
}
public function set rowHeight(_arg1:Number):void{
_rowHeight = _arg1;
invalidate(InvalidationType.SIZE);
}
override protected function draw():void{
var _local1 = !((contentHeight == (rowHeight * length)));
contentHeight = (rowHeight * length);
if (isInvalid(InvalidationType.STYLES)){
setStyles();
drawBackground();
if (contentPadding != getStyleValue("contentPadding")){
invalidate(InvalidationType.SIZE, false);
};
if (_cellRenderer != getStyleValue("cellRenderer")){
_invalidateList();
_cellRenderer = getStyleValue("cellRenderer");
};
};
if (((isInvalid(InvalidationType.SIZE, InvalidationType.STATE)) || (_local1))){
drawLayout();
};
if (isInvalid(InvalidationType.RENDERER_STYLES)){
updateRendererStyles();
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.SIZE, InvalidationType.DATA, InvalidationType.SCROLL, InvalidationType.SELECTED)){
drawList();
};
updateChildren();
validate();
}
override public function get rowCount():uint{
return (Math.ceil((calculateAvailableHeight() / rowHeight)));
}
override protected function configUI():void{
useFixedHorizontalScrolling = true;
_horizontalScrollPolicy = ScrollPolicy.AUTO;
_verticalScrollPolicy = ScrollPolicy.AUTO;
super.configUI();
}
public function set labelFunction(_arg1:Function):void{
if (_labelFunction == _arg1){
return;
};
_labelFunction = _arg1;
invalidate(InvalidationType.DATA);
}
override public function scrollToIndex(_arg1:int):void{
drawNow();
var _local2:uint = (Math.floor(((_verticalScrollPosition + availableHeight) / rowHeight)) - 1);
var _local3:uint = Math.ceil((_verticalScrollPosition / rowHeight));
if (_arg1 < _local3){
verticalScrollPosition = (_arg1 * rowHeight);
} else {
if (_arg1 > _local2){
verticalScrollPosition = (((_arg1 + 1) * rowHeight) - availableHeight);
};
};
}
override protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{
}
override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
list.x = -(_arg1);
super.setHorizontalScrollPosition(_arg1, true);
}
override protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{
var _local4:int = Math.max(Math.floor((calculateAvailableHeight() / rowHeight)), 1);
var _local5 = -1;
var _local6:int;
switch (_arg1){
case Keyboard.UP:
if (caretIndex > 0){
_local5 = (caretIndex - 1);
};
break;
case Keyboard.DOWN:
if (caretIndex < (length - 1)){
_local5 = (caretIndex + 1);
};
break;
case Keyboard.PAGE_UP:
if (caretIndex > 0){
_local5 = Math.max((caretIndex - _local4), 0);
};
break;
case Keyboard.PAGE_DOWN:
if (caretIndex < (length - 1)){
_local5 = Math.min((caretIndex + _local4), (length - 1));
};
break;
case Keyboard.HOME:
if (caretIndex > 0){
_local5 = 0;
};
break;
case Keyboard.END:
if (caretIndex < (length - 1)){
_local5 = (length - 1);
};
break;
};
if (_local5 >= 0){
doKeySelection(_local5, _arg2, _arg3);
scrollToSelected();
};
}
protected function doKeySelection(_arg1:int, _arg2:Boolean, _arg3:Boolean):void{
var _local5:int;
var _local6:Array;
var _local7:int;
var _local8:int;
var _local4:Boolean;
if (_arg2){
_local6 = [];
_local7 = lastCaretIndex;
_local8 = _arg1;
if (_local7 == -1){
_local7 = ((caretIndex)!=-1) ? caretIndex : _arg1;
};
if (_local7 > _local8){
_local8 = _local7;
_local7 = _arg1;
};
_local5 = _local7;
while (_local5 <= _local8) {
_local6.push(_local5);
_local5++;
};
selectedIndices = _local6;
caretIndex = _arg1;
_local4 = true;
} else {
selectedIndex = _arg1;
caretIndex = (lastCaretIndex = _arg1);
_local4 = true;
};
if (_local4){
dispatchEvent(new Event(Event.CHANGE));
};
invalidate(InvalidationType.DATA);
}
public function get rowHeight():Number{
return (_rowHeight);
}
override protected function initializeAccessibility():void{
if (List.createAccessibilityImplementation != null){
List.createAccessibilityImplementation(this);
};
}
public function get labelField():String{
return (_labelField);
}
public function set iconFunction(_arg1:Function):void{
if (_iconFunction == _arg1){
return;
};
_iconFunction = _arg1;
invalidate(InvalidationType.DATA);
}
public function set rowCount(_arg1:uint):void{
var _local2:Number = Number(getStyleValue("contentPadding"));
var _local3:Number = ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0;
height = (((rowHeight * _arg1) + (2 * _local2)) + _local3);
}
public function get labelFunction():Function{
return (_labelFunction);
}
override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
invalidate(InvalidationType.SCROLL);
super.setVerticalScrollPosition(_arg1, true);
}
override protected function drawList():void{
var _local4:uint;
var _local5:Object;
var _local6:ICellRenderer;
var _local9:Boolean;
var _local10:String;
var _local11:Object;
var _local12:Sprite;
var _local13:String;
listHolder.x = (listHolder.y = contentPadding);
var _local1:Rectangle = listHolder.scrollRect;
_local1.x = _horizontalScrollPosition;
_local1.y = (Math.floor(_verticalScrollPosition) % rowHeight);
listHolder.scrollRect = _local1;
listHolder.cacheAsBitmap = useBitmapScrolling;
var _local2:uint = Math.floor((_verticalScrollPosition / rowHeight));
var _local3:uint = Math.min(length, ((_local2 + rowCount) + 1));
var _local7:Dictionary = (renderedItems = new Dictionary(true));
_local4 = _local2;
while (_local4 < _local3) {
_local7[_dataProvider.getItemAt(_local4)] = true;
_local4++;
};
var _local8:Dictionary = new Dictionary(true);
while (activeCellRenderers.length > 0) {
_local6 = (activeCellRenderers.pop() as ICellRenderer);
_local5 = _local6.data;
if ((((_local7[_local5] == null)) || ((invalidItems[_local5] == true)))){
availableCellRenderers.push(_local6);
} else {
_local8[_local5] = _local6;
invalidItems[_local5] = true;
};
list.removeChild((_local6 as DisplayObject));
};
invalidItems = new Dictionary(true);
_local4 = _local2;
while (_local4 < _local3) {
_local9 = false;
_local5 = _dataProvider.getItemAt(_local4);
if (_local8[_local5] != null){
_local9 = true;
_local6 = _local8[_local5];
delete _local8[_local5];
} else {
if (availableCellRenderers.length > 0){
_local6 = (availableCellRenderers.pop() as ICellRenderer);
} else {
_local6 = (getDisplayObjectInstance(getStyleValue("cellRenderer")) as ICellRenderer);
_local12 = (_local6 as Sprite);
if (_local12 != null){
_local12.addEventListener(MouseEvent.CLICK, handleCellRendererClick, false, 0, true);
_local12.addEventListener(MouseEvent.ROLL_OVER, handleCellRendererMouseEvent, false, 0, true);
_local12.addEventListener(MouseEvent.ROLL_OUT, handleCellRendererMouseEvent, false, 0, true);
_local12.addEventListener(Event.CHANGE, handleCellRendererChange, false, 0, true);
_local12.doubleClickEnabled = true;
_local12.addEventListener(MouseEvent.DOUBLE_CLICK, handleCellRendererDoubleClick, false, 0, true);
if (_local12.hasOwnProperty("setStyle")){
for (_local13 in rendererStyles) {
var _local16 = _local12;
_local16["setStyle"](_local13, rendererStyles[_local13]);
};
};
};
};
};
list.addChild((_local6 as Sprite));
activeCellRenderers.push(_local6);
_local6.y = (rowHeight * (_local4 - _local2));
_local6.setSize((availableWidth + _maxHorizontalScrollPosition), rowHeight);
_local10 = itemToLabel(_local5);
_local11 = null;
if (_iconFunction != null){
_local11 = _iconFunction(_local5);
} else {
if (_iconField != null){
_local11 = _local5[_iconField];
};
};
if (!_local9){
_local6.data = _local5;
};
_local6.listData = new ListData(_local10, _local11, this, _local4, _local4, 0);
_local6.selected = !((_selectedIndices.indexOf(_local4) == -1));
if ((_local6 is UIComponent)){
(_local6 as UIComponent).drawNow();
};
_local4++;
};
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
var _local2:int;
if (!selectable){
return;
};
switch (_arg1.keyCode){
case Keyboard.UP:
case Keyboard.DOWN:
case Keyboard.END:
case Keyboard.HOME:
case Keyboard.PAGE_UP:
case Keyboard.PAGE_DOWN:
moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection)));
break;
case Keyboard.LEFT:
case Keyboard.RIGHT:
moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection)));
break;
case Keyboard.SPACE:
if (caretIndex == -1){
caretIndex = 0;
};
doKeySelection(caretIndex, _arg1.shiftKey, _arg1.ctrlKey);
scrollToSelected();
break;
default:
_local2 = getNextIndexAtLetter(String.fromCharCode(_arg1.keyCode), selectedIndex);
if (_local2 > -1){
selectedIndex = _local2;
scrollToSelected();
};
break;
};
_arg1.stopPropagation();
}
public function get iconFunction():Function{
return (_iconFunction);
}
override public function itemToLabel(_arg1:Object):String{
if (_labelFunction != null){
return (String(_labelFunction(_arg1)));
};
return (((_arg1[_labelField])!=null) ? String(_arg1[_labelField]) : "");
}
protected function calculateAvailableHeight():Number{
var _local1:Number = Number(getStyleValue("contentPadding"));
return (((height - (_local1 * 2)) - ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0));
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, SelectableList.getStyleDefinition()));
}
}
}//package fl.controls
Section 149
//ScrollBar (fl.controls.ScrollBar)
package fl.controls {
import fl.core.*;
import flash.events.*;
import fl.events.*;
public class ScrollBar extends UIComponent {
private var _direction:String;// = "vertical"
private var _minScrollPosition:Number;// = 0
private var _pageSize:Number;// = 10
private var _maxScrollPosition:Number;// = 0
protected var downArrow:BaseButton;
private var _lineScrollSize:Number;// = 1
protected var upArrow:BaseButton;
private var _scrollPosition:Number;// = 0
private var thumbScrollOffset:Number;
protected var track:BaseButton;
protected var thumb:LabelButton;
protected var inDrag:Boolean;// = false
private var _pageScrollSize:Number;// = 0
protected static const THUMB_STYLES:Object = {disabledSkin:"thumbDisabledSkin", downSkin:"thumbDownSkin", overSkin:"thumbOverSkin", upSkin:"thumbUpSkin", icon:"thumbIcon", textPadding:0};
public static const WIDTH:Number = 15;
protected static const DOWN_ARROW_STYLES:Object = {disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
protected static const UP_ARROW_STYLES:Object = {disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
protected static const TRACK_STYLES:Object = {disabledSkin:"trackDisabledSkin", downSkin:"trackDownSkin", overSkin:"trackOverSkin", upSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
private static var defaultStyles:Object = {downArrowDisabledSkin:"ScrollArrowDown_disabledSkin", downArrowDownSkin:"ScrollArrowDown_downSkin", downArrowOverSkin:"ScrollArrowDown_overSkin", downArrowUpSkin:"ScrollArrowDown_upSkin", thumbDisabledSkin:"ScrollThumb_upSkin", thumbDownSkin:"ScrollThumb_downSkin", thumbOverSkin:"ScrollThumb_overSkin", thumbUpSkin:"ScrollThumb_upSkin", trackDisabledSkin:"ScrollTrack_skin", trackDownSkin:"ScrollTrack_skin", trackOverSkin:"ScrollTrack_skin", trackUpSkin:"ScrollTrack_skin", upArrowDisabledSkin:"ScrollArrowUp_disabledSkin", upArrowDownSkin:"ScrollArrowUp_downSkin", upArrowOverSkin:"ScrollArrowUp_overSkin", upArrowUpSkin:"ScrollArrowUp_upSkin", thumbIcon:"ScrollBar_thumbIcon", repeatDelay:500, repeatInterval:35};
public function ScrollBar(){
setStyles();
focusEnabled = false;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
downArrow.enabled = (track.enabled = (thumb.enabled = (upArrow.enabled = ((enabled) && ((_maxScrollPosition > _minScrollPosition))))));
updateThumb();
}
override public function setSize(_arg1:Number, _arg2:Number):void{
if (_direction == ScrollBarDirection.HORIZONTAL){
super.setSize(_arg2, _arg1);
} else {
super.setSize(_arg1, _arg2);
};
}
public function set lineScrollSize(_arg1:Number):void{
if (_arg1 > 0){
_lineScrollSize = _arg1;
};
}
public function get minScrollPosition():Number{
return (_minScrollPosition);
}
protected function updateThumb():void{
var _local1:Number = ((_maxScrollPosition - _minScrollPosition) + _pageSize);
if ((((((track.height <= 12)) || ((_maxScrollPosition <= _minScrollPosition)))) || ((((_local1 == 0)) || (isNaN(_local1)))))){
thumb.height = 12;
thumb.visible = false;
} else {
thumb.height = Math.max(13, ((_pageSize / _local1) * track.height));
thumb.y = (track.y + ((track.height - thumb.height) * ((_scrollPosition - _minScrollPosition) / (_maxScrollPosition - _minScrollPosition))));
thumb.visible = enabled;
};
}
public function set minScrollPosition(_arg1:Number):void{
setScrollProperties(_pageSize, _arg1, _maxScrollPosition);
}
public function get lineScrollSize():Number{
return (_lineScrollSize);
}
public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{
var _local3:Number = scrollPosition;
_scrollPosition = Math.max(_minScrollPosition, Math.min(_maxScrollPosition, _arg1));
if (_local3 == _scrollPosition){
return;
};
if (_arg2){
dispatchEvent(new ScrollEvent(_direction, (scrollPosition - _local3), scrollPosition));
};
updateThumb();
}
public function get maxScrollPosition():Number{
return (_maxScrollPosition);
}
public function get scrollPosition():Number{
return (_scrollPosition);
}
override public function get height():Number{
return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.width : super.height);
}
public function get pageSize():Number{
return (_pageSize);
}
public function set maxScrollPosition(_arg1:Number):void{
setScrollProperties(_pageSize, _minScrollPosition, _arg1);
}
protected function thumbReleaseHandler(_arg1:MouseEvent):void{
inDrag = false;
mouseChildren = true;
thumb.mouseStateLocked = false;
stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler);
}
public function set pageScrollSize(_arg1:Number):void{
if (_arg1 >= 0){
_pageScrollSize = _arg1;
};
}
public function set scrollPosition(_arg1:Number):void{
setScrollPosition(_arg1, true);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
var _local1:Number;
if (isInvalid(InvalidationType.SIZE)){
_local1 = super.height;
downArrow.move(0, Math.max(upArrow.height, (_local1 - downArrow.height)));
track.setSize(WIDTH, Math.max(0, (_local1 - (downArrow.height + upArrow.height))));
updateThumb();
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
setStyles();
};
downArrow.drawNow();
upArrow.drawNow();
track.drawNow();
thumb.drawNow();
validate();
}
override public function get width():Number{
return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.height : super.width);
}
override protected function configUI():void{
super.configUI();
track = new BaseButton();
track.move(0, 14);
track.useHandCursor = false;
track.autoRepeat = true;
track.focusEnabled = false;
addChild(track);
thumb = new LabelButton();
thumb.label = "";
thumb.setSize(WIDTH, 15);
thumb.move(0, 15);
thumb.focusEnabled = false;
addChild(thumb);
downArrow = new BaseButton();
downArrow.setSize(WIDTH, 14);
downArrow.autoRepeat = true;
downArrow.focusEnabled = false;
addChild(downArrow);
upArrow = new BaseButton();
upArrow.setSize(WIDTH, 14);
upArrow.move(0, 0);
upArrow.autoRepeat = true;
upArrow.focusEnabled = false;
addChild(upArrow);
upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
track.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, false, 0, true);
enabled = false;
}
public function set pageSize(_arg1:Number):void{
if (_arg1 > 0){
_pageSize = _arg1;
};
}
public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{
this.pageSize = _arg1;
_minScrollPosition = _arg2;
_maxScrollPosition = _arg3;
if (_arg4 >= 0){
_pageScrollSize = _arg4;
};
enabled = (_maxScrollPosition > _minScrollPosition);
setScrollPosition(_scrollPosition, false);
updateThumb();
}
public function get pageScrollSize():Number{
return (((_pageScrollSize)==0) ? _pageSize : _pageScrollSize);
}
protected function handleThumbDrag(_arg1:MouseEvent):void{
var _local2:Number = Math.max(0, Math.min((track.height - thumb.height), ((mouseY - track.y) - thumbScrollOffset)));
setScrollPosition((((_local2 / (track.height - thumb.height)) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition));
}
protected function setStyles():void{
copyStylesToChild(downArrow, DOWN_ARROW_STYLES);
copyStylesToChild(thumb, THUMB_STYLES);
copyStylesToChild(track, TRACK_STYLES);
copyStylesToChild(upArrow, UP_ARROW_STYLES);
}
protected function scrollPressHandler(_arg1:ComponentEvent):void{
var _local2:Number;
var _local3:Number;
_arg1.stopImmediatePropagation();
if (_arg1.currentTarget == upArrow){
setScrollPosition((_scrollPosition - _lineScrollSize));
} else {
if (_arg1.currentTarget == downArrow){
setScrollPosition((_scrollPosition + _lineScrollSize));
} else {
_local2 = (((track.mouseY / track.height) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition);
_local3 = ((pageScrollSize)==0) ? pageSize : pageScrollSize;
if (_scrollPosition < _local2){
setScrollPosition(Math.min(_local2, (_scrollPosition + _local3)));
} else {
if (_scrollPosition > _local2){
setScrollPosition(Math.max(_local2, (_scrollPosition - _local3)));
};
};
};
};
}
protected function thumbPressHandler(_arg1:MouseEvent):void{
inDrag = true;
thumbScrollOffset = (mouseY - thumb.y);
thumb.mouseStateLocked = true;
mouseChildren = false;
stage.addEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, false, 0, true);
}
public function set direction(_arg1:String):void{
if (_direction == _arg1){
return;
};
_direction = _arg1;
if (isLivePreview){
return;
};
setScaleY(1);
var _local2 = (_direction == ScrollBarDirection.HORIZONTAL);
if (((_local2) && (componentInspectorSetting))){
if (rotation == 90){
return;
};
setScaleX(-1);
rotation = -90;
};
if (!componentInspectorSetting){
if (((_local2) && ((rotation == 0)))){
rotation = -90;
setScaleX(-1);
} else {
if (((!(_local2)) && ((rotation == -90)))){
rotation = 0;
setScaleX(1);
};
};
};
invalidate(InvalidationType.SIZE);
}
public function get direction():String{
return (_direction);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 150
//ScrollBarDirection (fl.controls.ScrollBarDirection)
package fl.controls {
public class ScrollBarDirection {
public static const HORIZONTAL:String = "horizontal";
public static const VERTICAL:String = "vertical";
}
}//package fl.controls
Section 151
//ScrollPolicy (fl.controls.ScrollPolicy)
package fl.controls {
public class ScrollPolicy {
public static const OFF:String = "off";
public static const ON:String = "on";
public static const AUTO:String = "auto";
}
}//package fl.controls
Section 152
//SelectableList (fl.controls.SelectableList)
package fl.controls {
import fl.controls.listClasses.*;
import fl.core.*;
import flash.display.*;
import flash.events.*;
import fl.data.*;
import fl.managers.*;
import fl.events.*;
import flash.utils.*;
import fl.containers.*;
import flash.ui.*;
public class SelectableList extends BaseScrollPane implements IFocusManagerComponent {
protected var invalidItems:Dictionary;
protected var renderedItems:Dictionary;
protected var caretIndex:int;// = -1
protected var updatedRendererStyles:Object;
protected var _allowMultipleSelection:Boolean;// = false
protected var lastCaretIndex:int;// = -1
protected var _verticalScrollPosition:Number;
protected var _selectedIndices:Array;
protected var preChangeItems:Array;
protected var activeCellRenderers:Array;
protected var availableCellRenderers:Array;
protected var rendererStyles:Object;
protected var list:Sprite;
protected var _dataProvider:DataProvider;
protected var _horizontalScrollPosition:Number;
private var collectionItemImport:SimpleCollectionItem;
protected var listHolder:Sprite;
protected var _selectable:Boolean;// = true
private static var defaultStyles:Object = {skin:"List_skin", cellRenderer:CellRenderer, contentPadding:null, disabledAlpha:null};
public static var createAccessibilityImplementation:Function;
public function SelectableList(){
activeCellRenderers = [];
availableCellRenderers = [];
invalidItems = new Dictionary(true);
renderedItems = new Dictionary(true);
_selectedIndices = [];
if (dataProvider == null){
dataProvider = new DataProvider();
};
verticalScrollPolicy = ScrollPolicy.AUTO;
rendererStyles = {};
updatedRendererStyles = {};
}
protected function drawList():void{
}
protected function moveSelectionHorizontally(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{
}
public function get allowMultipleSelection():Boolean{
return (_allowMultipleSelection);
}
protected function onPreChange(_arg1:DataChangeEvent):void{
switch (_arg1.changeType){
case DataChangeType.REMOVE:
case DataChangeType.ADD:
case DataChangeType.INVALIDATE:
case DataChangeType.REMOVE_ALL:
case DataChangeType.REPLACE:
case DataChangeType.INVALIDATE_ALL:
break;
default:
preChangeItems = selectedItems;
break;
};
}
public function set selectedIndices(_arg1:Array):void{
if (!_selectable){
return;
};
_selectedIndices = ((_arg1)==null) ? [] : _arg1.concat();
invalidate(InvalidationType.SELECTED);
}
public function isItemSelected(_arg1:Object):Boolean{
return ((selectedItems.indexOf(_arg1) > -1));
}
public function set allowMultipleSelection(_arg1:Boolean):void{
if (_arg1 == _allowMultipleSelection){
return;
};
_allowMultipleSelection = _arg1;
if (((!(_arg1)) && ((_selectedIndices.length > 1)))){
_selectedIndices = [_selectedIndices.pop()];
invalidate(InvalidationType.DATA);
};
}
override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
if (_arg1 == _verticalScrollPosition){
return;
};
var _local3:Number = (_arg1 - _verticalScrollPosition);
_verticalScrollPosition = _arg1;
if (_arg2){
dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _local3, _arg1));
};
}
public function sortItemsOn(_arg1:String, _arg2:Object=null){
return (_dataProvider.sortOn(_arg1, _arg2));
}
public function getNextIndexAtLetter(_arg1:String, _arg2:int=-1):int{
var _local5:Number;
var _local6:Object;
var _local7:String;
if (length == 0){
return (-1);
};
_arg1 = _arg1.toUpperCase();
var _local3:int = (length - 1);
var _local4:Number = 0;
while (_local4 < _local3) {
_local5 = ((_arg2 + 1) + _local4);
if (_local5 > (length - 1)){
_local5 = (_local5 - length);
};
_local6 = getItemAt(_local5);
if (_local6 == null){
break;
};
_local7 = itemToLabel(_local6);
if (_local7 == null){
} else {
if (_local7.charAt(0).toUpperCase() == _arg1){
return (_local5);
};
};
_local4++;
};
return (-1);
}
override protected function draw():void{
super.draw();
}
public function removeItemAt(_arg1:uint):Object{
return (_dataProvider.removeItemAt(_arg1));
}
public function get selectedItem():Object{
return (((_selectedIndices.length)==0) ? null : _dataProvider.getItemAt(selectedIndex));
}
protected function handleDataChange(_arg1:DataChangeEvent):void{
var _local5:uint;
var _local2:int = _arg1.startIndex;
var _local3:int = _arg1.endIndex;
var _local4:String = _arg1.changeType;
if (_local4 == DataChangeType.INVALIDATE_ALL){
clearSelection();
invalidateList();
} else {
if (_local4 == DataChangeType.INVALIDATE){
_local5 = 0;
while (_local5 < _arg1.items.length) {
invalidateItem(_arg1.items[_local5]);
_local5++;
};
} else {
if (_local4 == DataChangeType.ADD){
_local5 = 0;
while (_local5 < _selectedIndices.length) {
if (_selectedIndices[_local5] >= _local2){
_selectedIndices[_local5] = (_selectedIndices[_local5] + (_local2 - _local3));
};
_local5++;
};
} else {
if (_local4 == DataChangeType.REMOVE){
_local5 = 0;
while (_local5 < _selectedIndices.length) {
if (_selectedIndices[_local5] >= _local2){
if (_selectedIndices[_local5] <= _local3){
delete _selectedIndices[_local5];
} else {
_selectedIndices[_local5] = (_selectedIndices[_local5] - ((_local2 - _local3) + 1));
};
};
_local5++;
};
} else {
if (_local4 == DataChangeType.REMOVE_ALL){
clearSelection();
} else {
if (_local4 == DataChangeType.REPLACE){
} else {
selectedItems = preChangeItems;
preChangeItems = null;
};
};
};
};
};
};
invalidate(InvalidationType.DATA);
}
public function itemToCellRenderer(_arg1:Object):ICellRenderer{
var _local2:*;
var _local3:ICellRenderer;
if (_arg1 != null){
for (_local2 in activeCellRenderers) {
_local3 = (activeCellRenderers[_local2] as ICellRenderer);
if (_local3.data == _arg1){
return (_local3);
};
};
};
return (null);
}
public function addItem(_arg1:Object):void{
_dataProvider.addItem(_arg1);
invalidateList();
}
public function get rowCount():uint{
return (0);
}
override protected function configUI():void{
super.configUI();
listHolder = new Sprite();
addChild(listHolder);
listHolder.scrollRect = contentScrollRect;
list = new Sprite();
listHolder.addChild(list);
}
public function get selectable():Boolean{
return (_selectable);
}
public function clearRendererStyle(_arg1:String, _arg2:int=-1):void{
delete rendererStyles[_arg1];
updatedRendererStyles[_arg1] = null;
invalidate(InvalidationType.RENDERER_STYLES);
}
protected function handleCellRendererMouseEvent(_arg1:MouseEvent):void{
var _local2:ICellRenderer = (_arg1.target as ICellRenderer);
var _local3:String = ((_arg1.type)==MouseEvent.ROLL_OVER) ? ListEvent.ITEM_ROLL_OVER : ListEvent.ITEM_ROLL_OUT;
dispatchEvent(new ListEvent(_local3, false, false, _local2.listData.column, _local2.listData.row, _local2.listData.index, _local2.data));
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
if (!selectable){
return;
};
switch (_arg1.keyCode){
case Keyboard.UP:
case Keyboard.DOWN:
case Keyboard.END:
case Keyboard.HOME:
case Keyboard.PAGE_UP:
case Keyboard.PAGE_DOWN:
moveSelectionVertically(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection)));
_arg1.stopPropagation();
break;
case Keyboard.LEFT:
case Keyboard.RIGHT:
moveSelectionHorizontally(_arg1.keyCode, ((_arg1.shiftKey) && (_allowMultipleSelection)), ((_arg1.ctrlKey) && (_allowMultipleSelection)));
_arg1.stopPropagation();
break;
};
}
protected function handleCellRendererDoubleClick(_arg1:MouseEvent):void{
if (!_enabled){
return;
};
var _local2:ICellRenderer = (_arg1.currentTarget as ICellRenderer);
var _local3:uint = _local2.listData.index;
dispatchEvent(new ListEvent(ListEvent.ITEM_DOUBLE_CLICK, false, true, _local2.listData.column, _local2.listData.row, _local3, _local2.data));
}
public function setRendererStyle(_arg1:String, _arg2:Object, _arg3:uint=0):void{
if (rendererStyles[_arg1] == _arg2){
return;
};
updatedRendererStyles[_arg1] = _arg2;
rendererStyles[_arg1] = _arg2;
invalidate(InvalidationType.RENDERER_STYLES);
}
public function set dataProvider(_arg1:DataProvider):void{
if (_dataProvider != null){
_dataProvider.removeEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange);
_dataProvider.removeEventListener(DataChangeEvent.PRE_DATA_CHANGE, onPreChange);
};
_dataProvider = _arg1;
_dataProvider.addEventListener(DataChangeEvent.DATA_CHANGE, handleDataChange, false, 0, true);
_dataProvider.addEventListener(DataChangeEvent.PRE_DATA_CHANGE, onPreChange, false, 0, true);
clearSelection();
invalidateList();
}
public function invalidateList():void{
_invalidateList();
invalidate(InvalidationType.DATA);
}
public function replaceItemAt(_arg1:Object, _arg2:uint):Object{
return (_dataProvider.replaceItemAt(_arg1, _arg2));
}
public function removeAll():void{
_dataProvider.removeAll();
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
list.mouseChildren = _enabled;
}
public function scrollToIndex(_arg1:int):void{
}
public function get selectedIndices():Array{
return (_selectedIndices.concat());
}
override protected function drawLayout():void{
super.drawLayout();
contentScrollRect = listHolder.scrollRect;
contentScrollRect.width = availableWidth;
contentScrollRect.height = availableHeight;
listHolder.scrollRect = contentScrollRect;
}
protected function _invalidateList():void{
availableCellRenderers = [];
while (activeCellRenderers.length > 0) {
list.removeChild((activeCellRenderers.pop() as DisplayObject));
};
}
public function set selectedItem(_arg1:Object):void{
var _local2:int = _dataProvider.getItemIndex(_arg1);
selectedIndex = _local2;
}
public function getItemAt(_arg1:uint):Object{
return (_dataProvider.getItemAt(_arg1));
}
protected function handleCellRendererChange(_arg1:Event):void{
var _local2:ICellRenderer = (_arg1.currentTarget as ICellRenderer);
var _local3:uint = _local2.listData.index;
_dataProvider.invalidateItemAt(_local3);
}
protected function moveSelectionVertically(_arg1:uint, _arg2:Boolean, _arg3:Boolean):void{
}
public function itemToLabel(_arg1:Object):String{
return (_arg1["label"]);
}
public function addItemAt(_arg1:Object, _arg2:uint):void{
_dataProvider.addItemAt(_arg1, _arg2);
invalidateList();
}
override protected function initializeAccessibility():void{
if (SelectableList.createAccessibilityImplementation != null){
SelectableList.createAccessibilityImplementation(this);
};
}
protected function updateRendererStyles():void{
var _local4:String;
var _local1:Array = availableCellRenderers.concat(activeCellRenderers);
var _local2:uint = _local1.length;
var _local3:uint;
while (_local3 < _local2) {
if (_local1[_local3].setStyle == null){
} else {
for (_local4 in updatedRendererStyles) {
_local1[_local3].setStyle(_local4, updatedRendererStyles[_local4]);
};
_local1[_local3].drawNow();
};
_local3++;
};
updatedRendererStyles = {};
}
public function set selectable(_arg1:Boolean):void{
if (_arg1 == _selectable){
return;
};
if (!_arg1){
selectedIndices = [];
};
_selectable = _arg1;
}
public function removeItem(_arg1:Object):Object{
return (_dataProvider.removeItem(_arg1));
}
public function get dataProvider():DataProvider{
return (_dataProvider);
}
public function set maxHorizontalScrollPosition(_arg1:Number):void{
_maxHorizontalScrollPosition = _arg1;
invalidate(InvalidationType.SIZE);
}
public function clearSelection():void{
selectedIndex = -1;
}
public function invalidateItemAt(_arg1:uint):void{
var _local2:Object = _dataProvider.getItemAt(_arg1);
if (_local2 != null){
invalidateItem(_local2);
};
}
public function sortItems(... _args){
return (_dataProvider.sort.apply(_dataProvider, _args));
}
public function set selectedItems(_arg1:Array):void{
var _local4:int;
if (_arg1 == null){
selectedIndices = null;
return;
};
var _local2:Array = [];
var _local3:uint;
while (_local3 < _arg1.length) {
_local4 = _dataProvider.getItemIndex(_arg1[_local3]);
if (_local4 != -1){
_local2.push(_local4);
};
_local3++;
};
selectedIndices = _local2;
}
override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
if (_arg1 == _horizontalScrollPosition){
return;
};
var _local3:Number = (_arg1 - _horizontalScrollPosition);
_horizontalScrollPosition = _arg1;
if (_arg2){
dispatchEvent(new ScrollEvent(ScrollBarDirection.HORIZONTAL, _local3, _arg1));
};
}
override public function get maxHorizontalScrollPosition():Number{
return (_maxHorizontalScrollPosition);
}
public function scrollToSelected():void{
scrollToIndex(selectedIndex);
}
public function get selectedItems():Array{
var _local1:Array = [];
var _local2:uint;
while (_local2 < _selectedIndices.length) {
_local1.push(_dataProvider.getItemAt(_selectedIndices[_local2]));
_local2++;
};
return (_local1);
}
public function get length():uint{
return (_dataProvider.length);
}
public function invalidateItem(_arg1:Object):void{
if (renderedItems[_arg1] == null){
return;
};
invalidItems[_arg1] = true;
invalidate(InvalidationType.DATA);
}
public function set selectedIndex(_arg1:int):void{
selectedIndices = ((_arg1)==-1) ? null : [_arg1];
}
public function get selectedIndex():int{
return (((_selectedIndices.length)==0) ? -1 : _selectedIndices[(_selectedIndices.length - 1)]);
}
public function getRendererStyle(_arg1:String, _arg2:int=-1):Object{
return (rendererStyles[_arg1]);
}
protected function handleCellRendererClick(_arg1:MouseEvent):void{
var _local5:int;
var _local6:uint;
if (!_enabled){
return;
};
var _local2:ICellRenderer = (_arg1.currentTarget as ICellRenderer);
var _local3:uint = _local2.listData.index;
if (((!(dispatchEvent(new ListEvent(ListEvent.ITEM_CLICK, false, true, _local2.listData.column, _local2.listData.row, _local3, _local2.data)))) || (!(_selectable)))){
return;
};
var _local4:int = selectedIndices.indexOf(_local3);
if (!_allowMultipleSelection){
if (_local4 != -1){
return;
};
_local2.selected = true;
_selectedIndices = [_local3];
lastCaretIndex = (caretIndex = _local3);
} else {
if (_arg1.shiftKey){
_local6 = ((_selectedIndices.length)>0) ? _selectedIndices[0] : _local3;
_selectedIndices = [];
if (_local6 > _local3){
_local5 = _local6;
while (_local5 >= _local3) {
_selectedIndices.push(_local5);
_local5--;
};
} else {
_local5 = _local6;
while (_local5 <= _local3) {
_selectedIndices.push(_local5);
_local5++;
};
};
caretIndex = _local3;
} else {
if (_arg1.ctrlKey){
if (_local4 != -1){
_local2.selected = false;
_selectedIndices.splice(_local4, 1);
} else {
_local2.selected = true;
_selectedIndices.push(_local3);
};
caretIndex = _local3;
} else {
_selectedIndices = [_local3];
lastCaretIndex = (caretIndex = _local3);
};
};
};
dispatchEvent(new Event(Event.CHANGE));
invalidate(InvalidationType.DATA);
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, BaseScrollPane.getStyleDefinition()));
}
}
}//package fl.controls
Section 153
//TextArea (fl.controls.TextArea)
package fl.controls {
import fl.core.*;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import fl.managers.*;
import fl.events.*;
import flash.ui.*;
import flash.system.*;
public class TextArea extends UIComponent implements IFocusManagerComponent {
protected var _horizontalScrollBar:UIScrollBar;
protected var _html:Boolean;// = false
protected var background:DisplayObject;
protected var _verticalScrollBar:UIScrollBar;
protected var _savedHTML:String;
protected var _horizontalScrollPolicy:String;// = "auto"
protected var _editable:Boolean;// = true
protected var textHasChanged:Boolean;// = false
public var textField:TextField;
protected var _wordWrap:Boolean;// = true
protected var _verticalScrollPolicy:String;// = "auto"
protected static const SCROLL_BAR_STYLES:Object = {downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
private static var defaultStyles:Object = {upSkin:"TextArea_upSkin", disabledSkin:"TextArea_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:3, embedFonts:false};
public static var createAccessibilityImplementation:Function;
public function set alwaysShowSelection(_arg1:Boolean):void{
textField.alwaysShowSelection = _arg1;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
mouseChildren = enabled;
invalidate(InvalidationType.STATE);
}
override protected function focusInHandler(_arg1:FocusEvent):void{
setIMEMode(true);
if (_arg1.target == this){
stage.focus = textField;
};
var _local2:IFocusManager = focusManager;
if (_local2){
if (editable){
_local2.showFocusIndicator = true;
};
_local2.defaultButtonEnabled = false;
};
super.focusInHandler(_arg1);
if (editable){
setIMEMode(true);
};
}
protected function handleChange(_arg1:Event):void{
_arg1.stopPropagation();
dispatchEvent(new Event(Event.CHANGE, true));
invalidate(InvalidationType.DATA);
}
public function set imeMode(_arg1:String):void{
_imeMode = _arg1;
}
public function get imeMode():String{
return (IME.conversionMode);
}
override public function drawFocus(_arg1:Boolean):void{
if (focusTarget != null){
focusTarget.drawFocus(_arg1);
return;
};
super.drawFocus(_arg1);
}
protected function handleWheel(_arg1:MouseEvent):void{
if (((!(enabled)) || (!(_verticalScrollBar.visible)))){
return;
};
_verticalScrollBar.scrollPosition = (_verticalScrollBar.scrollPosition - (_arg1.delta * _verticalScrollBar.lineScrollSize));
dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, (_arg1.delta * _verticalScrollBar.lineScrollSize), _verticalScrollBar.scrollPosition));
}
public function set condenseWhite(_arg1:Boolean):void{
textField.condenseWhite = _arg1;
invalidate(InvalidationType.DATA);
}
public function get textWidth():Number{
drawNow();
return (textField.textWidth);
}
override protected function focusOutHandler(_arg1:FocusEvent):void{
var _local2:IFocusManager = focusManager;
if (_local2){
_local2.defaultButtonEnabled = true;
};
setSelection(0, 0);
super.focusOutHandler(_arg1);
if (editable){
setIMEMode(false);
};
}
protected function handleScroll(_arg1:ScrollEvent):void{
dispatchEvent(_arg1);
}
protected function drawLayout():void{
var _local1:Number = Number(getStyleValue("textPadding"));
textField.x = (textField.y = _local1);
background.width = width;
background.height = height;
var _local2:Number = height;
var _local3:Boolean = needVScroll();
var _local4:Number = (width - (_local3) ? _verticalScrollBar.width : 0);
var _local5:Boolean = needHScroll();
if (_local5){
_local2 = (_local2 - _horizontalScrollBar.height);
};
setTextSize(_local4, _local2, _local1);
if (((((_local5) && (!(_local3)))) && (needVScroll()))){
_local3 = true;
_local4 = (_local4 - _verticalScrollBar.width);
setTextSize(_local4, _local2, _local1);
};
if (_local3){
_verticalScrollBar.visible = true;
_verticalScrollBar.x = (width - _verticalScrollBar.width);
_verticalScrollBar.height = _local2;
_verticalScrollBar.visible = true;
_verticalScrollBar.enabled = enabled;
} else {
_verticalScrollBar.visible = false;
};
if (_local5){
_horizontalScrollBar.visible = true;
_horizontalScrollBar.y = (height - _horizontalScrollBar.height);
_horizontalScrollBar.width = _local4;
_horizontalScrollBar.visible = true;
_horizontalScrollBar.enabled = enabled;
} else {
_horizontalScrollBar.visible = false;
};
updateScrollBars();
addEventListener(Event.ENTER_FRAME, delayedLayoutUpdate, false, 0, true);
}
public function set displayAsPassword(_arg1:Boolean):void{
textField.displayAsPassword = _arg1;
}
protected function drawBackground():void{
var _local1:DisplayObject = background;
var _local2:String = (enabled) ? "upSkin" : "disabledSkin";
background = getDisplayObjectInstance(getStyleValue(_local2));
if (background != null){
addChildAt(background, 0);
};
if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){
removeChild(_local1);
};
}
public function get horizontalScrollPolicy():String{
return (_horizontalScrollPolicy);
}
protected function delayedLayoutUpdate(_arg1:Event):void{
if (textHasChanged){
textHasChanged = false;
drawLayout();
return;
};
removeEventListener(Event.ENTER_FRAME, delayedLayoutUpdate);
}
public function get verticalScrollPosition():Number{
return (textField.scrollV);
}
public function get text():String{
return (textField.text);
}
public function get verticalScrollBar():UIScrollBar{
return (_verticalScrollBar);
}
public function set maxChars(_arg1:int):void{
textField.maxChars = _arg1;
}
public function get textHeight():Number{
drawNow();
return (textField.textHeight);
}
override protected function isOurFocus(_arg1:DisplayObject):Boolean{
return ((((_arg1 == textField)) || (super.isOurFocus(_arg1))));
}
public function get maxVerticalScrollPosition():int{
return (textField.maxScrollV);
}
public function set horizontalScrollPosition(_arg1:Number):void{
drawNow();
textField.scrollH = _arg1;
}
public function get restrict():String{
return (textField.restrict);
}
protected function setEmbedFont(){
var _local1:Object = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
}
public function get alwaysShowSelection():Boolean{
return (textField.alwaysShowSelection);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STATE)){
updateTextFieldType();
};
if (isInvalid(InvalidationType.STYLES)){
setStyles();
setEmbedFont();
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawTextFormat();
drawBackground();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE, InvalidationType.DATA)){
drawLayout();
};
super.draw();
}
public function set horizontalScrollPolicy(_arg1:String):void{
_horizontalScrollPolicy = _arg1;
invalidate(InvalidationType.SIZE);
}
public function set editable(_arg1:Boolean):void{
_editable = _arg1;
invalidate(InvalidationType.STATE);
}
public function setSelection(_arg1:int, _arg2:int):void{
textField.setSelection(_arg1, _arg2);
}
public function get condenseWhite():Boolean{
return (textField.condenseWhite);
}
public function get displayAsPassword():Boolean{
return (textField.displayAsPassword);
}
protected function setTextSize(_arg1:Number, _arg2:Number, _arg3:Number):void{
var _local4:Number = (_arg1 - (_arg3 * 2));
var _local5:Number = (_arg2 - (_arg3 * 2));
if (_local4 != textField.width){
textField.width = _local4;
};
if (_local5 != textField.height){
textField.height = _local5;
};
}
public function get horizontalScrollBar():UIScrollBar{
return (_horizontalScrollBar);
}
public function get selectionBeginIndex():int{
return (textField.selectionBeginIndex);
}
override protected function configUI():void{
super.configUI();
tabChildren = true;
textField = new TextField();
addChild(textField);
updateTextFieldType();
_verticalScrollBar = new UIScrollBar();
_verticalScrollBar.name = "V";
_verticalScrollBar.visible = false;
_verticalScrollBar.focusEnabled = false;
copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES);
_verticalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true);
addChild(_verticalScrollBar);
_horizontalScrollBar = new UIScrollBar();
_horizontalScrollBar.name = "H";
_horizontalScrollBar.visible = false;
_horizontalScrollBar.focusEnabled = false;
_horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL;
copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES);
_horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true);
addChild(_horizontalScrollBar);
textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true);
textField.addEventListener(Event.CHANGE, handleChange, false, 0, true);
textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true);
_horizontalScrollBar.scrollTarget = textField;
_verticalScrollBar.scrollTarget = textField;
addEventListener(MouseEvent.MOUSE_WHEEL, handleWheel, false, 0, true);
}
public function set verticalScrollPosition(_arg1:Number):void{
drawNow();
textField.scrollV = _arg1;
}
public function get maxChars():int{
return (textField.maxChars);
}
public function set text(_arg1:String):void{
if (((componentInspectorSetting) && ((_arg1 == "")))){
return;
};
textField.text = _arg1;
_html = false;
invalidate(InvalidationType.DATA);
invalidate(InvalidationType.STYLES);
textHasChanged = true;
}
protected function updateScrollBars(){
_horizontalScrollBar.update();
_verticalScrollBar.update();
_verticalScrollBar.enabled = enabled;
_horizontalScrollBar.enabled = enabled;
_horizontalScrollBar.drawNow();
_verticalScrollBar.drawNow();
}
public function get maxHorizontalScrollPosition():int{
return (textField.maxScrollH);
}
protected function needHScroll():Boolean{
if (_horizontalScrollPolicy == ScrollPolicy.OFF){
return (false);
};
if (_horizontalScrollPolicy == ScrollPolicy.ON){
return (true);
};
return ((textField.maxScrollH > 0));
}
protected function handleKeyDown(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.ENTER){
dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true));
};
}
public function get horizontalScrollPosition():Number{
return (textField.scrollH);
}
public function get selectionEndIndex():int{
return (textField.selectionEndIndex);
}
public function get editable():Boolean{
return (_editable);
}
protected function updateTextFieldType():void{
textField.type = (((enabled) && (_editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC;
textField.selectable = enabled;
textField.wordWrap = _wordWrap;
textField.multiline = true;
}
public function appendText(_arg1:String):void{
textField.appendText(_arg1);
invalidate(InvalidationType.DATA);
}
public function set wordWrap(_arg1:Boolean):void{
_wordWrap = _arg1;
invalidate(InvalidationType.STATE);
}
public function set verticalScrollPolicy(_arg1:String):void{
_verticalScrollPolicy = _arg1;
invalidate(InvalidationType.SIZE);
}
protected function setStyles():void{
copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES);
copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES);
}
public function get length():Number{
return (textField.text.length);
}
protected function drawTextFormat():void{
var _local1:Object = UIComponent.getStyleDefinition();
var _local2:TextFormat = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat);
textField.setTextFormat(_local2);
var _local3:TextFormat = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat);
if (_local3 != null){
textField.setTextFormat(_local3);
} else {
_local3 = _local2;
};
textField.defaultTextFormat = _local3;
setEmbedFont();
if (_html){
textField.htmlText = _savedHTML;
};
}
public function set htmlText(_arg1:String):void{
if (((componentInspectorSetting) && ((_arg1 == "")))){
return;
};
if (_arg1 == ""){
text = "";
return;
};
_html = true;
_savedHTML = _arg1;
textField.htmlText = _arg1;
invalidate(InvalidationType.DATA);
invalidate(InvalidationType.STYLES);
textHasChanged = true;
}
public function get verticalScrollPolicy():String{
return (_verticalScrollPolicy);
}
protected function handleTextInput(_arg1:TextEvent):void{
_arg1.stopPropagation();
dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text));
}
public function get htmlText():String{
return (textField.htmlText);
}
public function getLineMetrics(_arg1:int):TextLineMetrics{
return (textField.getLineMetrics(_arg1));
}
public function get wordWrap():Boolean{
return (_wordWrap);
}
protected function needVScroll():Boolean{
if (_verticalScrollPolicy == ScrollPolicy.OFF){
return (false);
};
if (_verticalScrollPolicy == ScrollPolicy.ON){
return (true);
};
return ((textField.maxScrollV > 1));
}
public function set restrict(_arg1:String):void{
if (((componentInspectorSetting) && ((_arg1 == "")))){
_arg1 = null;
};
textField.restrict = _arg1;
}
public static function getStyleDefinition():Object{
return (UIComponent.mergeStyles(defaultStyles, ScrollBar.getStyleDefinition()));
}
}
}//package fl.controls
Section 154
//TextInput (fl.controls.TextInput)
package fl.controls {
import fl.core.*;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import fl.managers.*;
import fl.events.*;
import flash.ui.*;
public class TextInput extends UIComponent implements IFocusManagerComponent {
protected var _html:Boolean;// = false
protected var background:DisplayObject;
protected var _savedHTML:String;
protected var _editable:Boolean;// = true
public var textField:TextField;
private static var defaultStyles:Object = {upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:0, embedFonts:false};
public static var createAccessibilityImplementation:Function;
public function set alwaysShowSelection(_arg1:Boolean):void{
textField.alwaysShowSelection = _arg1;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
updateTextFieldType();
}
public function get imeMode():String{
return (_imeMode);
}
protected function handleChange(_arg1:Event):void{
_arg1.stopPropagation();
dispatchEvent(new Event(Event.CHANGE, true));
}
public function set imeMode(_arg1:String):void{
_imeMode = _arg1;
}
protected function setEmbedFont(){
var _local1:Object = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
}
protected function drawLayout():void{
var _local1:Number = Number(getStyleValue("textPadding"));
if (background != null){
background.width = width;
background.height = height;
};
textField.width = (width - (2 * _local1));
textField.height = (height - (2 * _local1));
textField.x = (textField.y = _local1);
}
public function set condenseWhite(_arg1:Boolean):void{
textField.condenseWhite = _arg1;
}
public function get textWidth():Number{
return (textField.textWidth);
}
override protected function focusOutHandler(_arg1:FocusEvent):void{
super.focusOutHandler(_arg1);
if (editable){
setIMEMode(false);
};
}
override public function setFocus():void{
stage.focus = textField;
}
public function set displayAsPassword(_arg1:Boolean):void{
textField.displayAsPassword = _arg1;
}
protected function drawBackground():void{
var _local1:DisplayObject = background;
var _local2:String = (enabled) ? "upSkin" : "disabledSkin";
background = getDisplayObjectInstance(getStyleValue(_local2));
if (background == null){
return;
};
addChildAt(background, 0);
if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){
removeChild(_local1);
};
}
public function get text():String{
return (textField.text);
}
public function set maxChars(_arg1:int):void{
textField.maxChars = _arg1;
}
public function set horizontalScrollPosition(_arg1:int):void{
textField.scrollH = _arg1;
}
override protected function isOurFocus(_arg1:DisplayObject):Boolean{
return ((((_arg1 == textField)) || (super.isOurFocus(_arg1))));
}
public function get textHeight():Number{
return (textField.textHeight);
}
public function get restrict():String{
return (textField.restrict);
}
public function get alwaysShowSelection():Boolean{
return (textField.alwaysShowSelection);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
var _local1:Object;
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawTextFormat();
drawBackground();
_local1 = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
super.draw();
}
public function set editable(_arg1:Boolean):void{
_editable = _arg1;
updateTextFieldType();
}
public function setSelection(_arg1:int, _arg2:int):void{
textField.setSelection(_arg1, _arg2);
}
public function get condenseWhite():Boolean{
return (textField.condenseWhite);
}
public function get displayAsPassword():Boolean{
return (textField.displayAsPassword);
}
public function get selectionBeginIndex():int{
return (textField.selectionBeginIndex);
}
override protected function configUI():void{
super.configUI();
tabChildren = true;
textField = new TextField();
addChild(textField);
updateTextFieldType();
textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true);
textField.addEventListener(Event.CHANGE, handleChange, false, 0, true);
textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true);
}
public function get maxChars():int{
return (textField.maxChars);
}
public function set text(_arg1:String):void{
textField.text = _arg1;
_html = false;
invalidate(InvalidationType.DATA);
invalidate(InvalidationType.STYLES);
}
protected function updateTextFieldType():void{
textField.type = (((enabled) && (editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC;
textField.selectable = enabled;
}
protected function handleKeyDown(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.ENTER){
dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true));
};
}
public function get horizontalScrollPosition():int{
return (textField.scrollH);
}
public function get selectionEndIndex():int{
return (textField.selectionEndIndex);
}
public function get editable():Boolean{
return (_editable);
}
public function get maxHorizontalScrollPosition():int{
return (textField.maxScrollH);
}
public function appendText(_arg1:String):void{
textField.appendText(_arg1);
}
protected function drawTextFormat():void{
var _local1:Object = UIComponent.getStyleDefinition();
var _local2:TextFormat = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat);
textField.setTextFormat(_local2);
var _local3:TextFormat = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat);
if (_local3 != null){
textField.setTextFormat(_local3);
} else {
_local3 = _local2;
};
textField.defaultTextFormat = _local3;
setEmbedFont();
if (_html){
textField.htmlText = _savedHTML;
};
}
public function get length():int{
return (textField.length);
}
public function set htmlText(_arg1:String):void{
if (_arg1 == ""){
text = "";
return;
};
_html = true;
_savedHTML = _arg1;
textField.htmlText = _arg1;
invalidate(InvalidationType.DATA);
invalidate(InvalidationType.STYLES);
}
protected function handleTextInput(_arg1:TextEvent):void{
_arg1.stopPropagation();
dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text));
}
public function set restrict(_arg1:String):void{
if (((componentInspectorSetting) && ((_arg1 == "")))){
_arg1 = null;
};
textField.restrict = _arg1;
}
public function getLineMetrics(_arg1:int):TextLineMetrics{
return (textField.getLineMetrics(_arg1));
}
override public function drawFocus(_arg1:Boolean):void{
if (focusTarget != null){
focusTarget.drawFocus(_arg1);
return;
};
super.drawFocus(_arg1);
}
override protected function focusInHandler(_arg1:FocusEvent):void{
if (_arg1.target == this){
stage.focus = textField;
};
var _local2:IFocusManager = focusManager;
if (((editable) && (_local2))){
_local2.showFocusIndicator = true;
if (((textField.selectable) && ((textField.selectionBeginIndex == textField.selectionBeginIndex)))){
setSelection(0, textField.length);
};
};
super.focusInHandler(_arg1);
if (editable){
setIMEMode(true);
};
}
public function get htmlText():String{
return (textField.htmlText);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 155
//UIScrollBar (fl.controls.UIScrollBar)
package fl.controls {
import fl.core.*;
import flash.events.*;
import flash.text.*;
import fl.events.*;
public class UIScrollBar extends ScrollBar {
protected var inEdit:Boolean;// = false
protected var inScroll:Boolean;// = false
protected var _scrollTarget:TextField;
private static var defaultStyles:Object = {};
protected function updateScrollTargetProperties():void{
var _local1:Boolean;
var _local2:Number;
if (_scrollTarget == null){
setScrollProperties(pageSize, minScrollPosition, maxScrollPosition, pageScrollSize);
scrollPosition = 0;
} else {
_local1 = (direction == ScrollBarDirection.HORIZONTAL);
_local2 = (_local1) ? _scrollTarget.width : 10;
setScrollProperties(_local2, (_local1) ? 0 : 1, (_local1) ? _scrollTarget.maxScrollH : _scrollTarget.maxScrollV, pageScrollSize);
scrollPosition = (_local1) ? _scrollTarget.scrollH : _scrollTarget.scrollV;
};
}
override public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{
var _local5:Number = _arg3;
var _local6:Number = ((_arg2)<0) ? 0 : _arg2;
if (_scrollTarget != null){
if (direction == ScrollBarDirection.HORIZONTAL){
_local5 = ((_arg3)>_scrollTarget.maxScrollH) ? _scrollTarget.maxScrollH : _local5;
} else {
_local5 = ((_arg3)>_scrollTarget.maxScrollV) ? _scrollTarget.maxScrollV : _local5;
};
};
super.setScrollProperties(_arg1, _local6, _local5, _arg4);
}
protected function handleTargetScroll(_arg1:Event):void{
if (inDrag){
return;
};
if (!enabled){
return;
};
inEdit = true;
updateScrollTargetProperties();
scrollPosition = ((direction)==ScrollBarDirection.HORIZONTAL) ? _scrollTarget.scrollH : _scrollTarget.scrollV;
inEdit = false;
}
override public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{
super.setScrollPosition(_arg1, _arg2);
if (!_scrollTarget){
inScroll = false;
return;
};
updateTargetScroll();
}
public function get scrollTargetName():String{
return (_scrollTarget.name);
}
override protected function draw():void{
if (isInvalid(InvalidationType.DATA)){
updateScrollTargetProperties();
};
super.draw();
}
override public function set direction(_arg1:String):void{
if (isLivePreview){
return;
};
super.direction = _arg1;
updateScrollTargetProperties();
}
protected function updateTargetScroll(_arg1:ScrollEvent=null):void{
if (inEdit){
return;
};
if (direction == ScrollBarDirection.HORIZONTAL){
_scrollTarget.scrollH = scrollPosition;
} else {
_scrollTarget.scrollV = scrollPosition;
};
}
override public function set minScrollPosition(_arg1:Number):void{
super.minScrollPosition = ((_arg1)<0) ? 0 : _arg1;
}
override public function set maxScrollPosition(_arg1:Number):void{
var _local2:Number = _arg1;
if (_scrollTarget != null){
if (direction == ScrollBarDirection.HORIZONTAL){
_local2 = ((_local2)>_scrollTarget.maxScrollH) ? _scrollTarget.maxScrollH : _local2;
} else {
_local2 = ((_local2)>_scrollTarget.maxScrollV) ? _scrollTarget.maxScrollV : _local2;
};
};
super.maxScrollPosition = _local2;
}
protected function handleTargetChange(_arg1:Event):void{
inEdit = true;
setScrollPosition(((direction)==ScrollBarDirection.HORIZONTAL) ? _scrollTarget.scrollH : _scrollTarget.scrollV, true);
updateScrollTargetProperties();
inEdit = false;
}
public function update():void{
inEdit = true;
updateScrollTargetProperties();
inEdit = false;
}
public function set scrollTargetName(_arg1:String):void{
var target = _arg1;
try {
scrollTarget = (parent.getChildByName(target) as TextField);
} catch(error:Error) {
throw (new Error("ScrollTarget not found, or is not a TextField"));
};
}
public function set scrollTarget(_arg1:TextField):void{
if (_scrollTarget != null){
_scrollTarget.removeEventListener(Event.CHANGE, handleTargetChange, false);
_scrollTarget.removeEventListener(TextEvent.TEXT_INPUT, handleTargetChange, false);
_scrollTarget.removeEventListener(Event.SCROLL, handleTargetScroll, false);
removeEventListener(ScrollEvent.SCROLL, updateTargetScroll, false);
};
_scrollTarget = _arg1;
if (_scrollTarget != null){
_scrollTarget.addEventListener(Event.CHANGE, handleTargetChange, false, 0, true);
_scrollTarget.addEventListener(TextEvent.TEXT_INPUT, handleTargetChange, false, 0, true);
_scrollTarget.addEventListener(Event.SCROLL, handleTargetScroll, false, 0, true);
addEventListener(ScrollEvent.SCROLL, updateTargetScroll, false, 0, true);
};
invalidate(InvalidationType.DATA);
}
public function get scrollTarget():TextField{
return (_scrollTarget);
}
override public function get direction():String{
return (super.direction);
}
public static function getStyleDefinition():Object{
return (UIComponent.mergeStyles(defaultStyles, ScrollBar.getStyleDefinition()));
}
}
}//package fl.controls
Section 156
//ComponentShim (fl.core.ComponentShim)
package fl.core {
import flash.display.*;
public dynamic class ComponentShim extends MovieClip {
}
}//package fl.core
Section 157
//InvalidationType (fl.core.InvalidationType)
package fl.core {
public class InvalidationType {
public static const SIZE:String = "size";
public static const ALL:String = "all";
public static const DATA:String = "data";
public static const SCROLL:String = "scroll";
public static const STATE:String = "state";
public static const STYLES:String = "styles";
public static const SELECTED:String = "selected";
public static const RENDERER_STYLES:String = "rendererStyles";
}
}//package fl.core
Section 158
//UIComponent (fl.core.UIComponent)
package fl.core {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import fl.managers.*;
import fl.events.*;
import flash.utils.*;
import flash.system.*;
public class UIComponent extends Sprite {
protected var _x:Number;
protected var _enabled:Boolean;// = true
protected var callLaterMethods:Dictionary;
private var _mouseFocusEnabled:Boolean;// = true
private var tempText:TextField;
private var _focusEnabled:Boolean;// = true
protected var startHeight:Number;
protected var _height:Number;
protected var invalidateFlag:Boolean;// = false
protected var _oldIMEMode:String;// = null
protected var _inspector:Boolean;// = false
protected var startWidth:Number;
public var focusTarget:IFocusManagerComponent;
protected var errorCaught:Boolean;// = false
protected var invalidHash:Object;
protected var sharedStyles:Object;
protected var uiFocusRect:DisplayObject;
protected var isLivePreview:Boolean;// = false
protected var _imeMode:String;// = null
protected var _width:Number;
protected var instanceStyles:Object;
public var version:String;// = "3.0.0.16"
protected var isFocused:Boolean;// = false
protected var _y:Number;
public static var inCallLaterPhase:Boolean = false;
private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)};
public static var createAccessibilityImplementation:Function;
private static var focusManagers:Dictionary = new Dictionary(false);
public function UIComponent(){
instanceStyles = {};
sharedStyles = {};
invalidHash = {};
callLaterMethods = new Dictionary();
StyleManager.registerInstance(this);
configUI();
invalidate(InvalidationType.ALL);
tabEnabled = (this is IFocusManagerComponent);
focusRect = false;
if (tabEnabled){
addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
};
initializeFocusManager();
addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true);
}
public function getStyle(_arg1:String):Object{
return (instanceStyles[_arg1]);
}
protected function checkLivePreview():Boolean{
var className:String;
if (parent == null){
return (false);
};
try {
className = getQualifiedClassName(parent);
} catch(e:Error) {
};
return ((className == "fl.livepreview::LivePreviewParent"));
}
private function callLaterDispatcher(_arg1:Event):void{
var _local3:Object;
if (_arg1.type == Event.ADDED_TO_STAGE){
removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher);
stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true);
stage.invalidate();
return;
};
_arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher);
if (stage == null){
addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true);
return;
};
inCallLaterPhase = true;
var _local2:Dictionary = callLaterMethods;
for (_local3 in _local2) {
_local3();
delete _local2[_local3];
};
inCallLaterPhase = false;
}
protected function validate():void{
invalidHash = {};
}
protected function focusOutHandler(_arg1:FocusEvent):void{
if (isOurFocus((_arg1.target as DisplayObject))){
drawFocus(false);
isFocused = false;
};
}
public function set mouseFocusEnabled(_arg1:Boolean):void{
_mouseFocusEnabled = _arg1;
}
public function getFocus():InteractiveObject{
if (stage){
return (stage.focus);
};
return (null);
}
override public function get height():Number{
return (_height);
}
private function addedHandler(_arg1:Event):void{
removeEventListener("addedToStage", addedHandler);
initializeFocusManager();
}
protected function getStyleValue(_arg1:String):Object{
return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]);
}
public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{
invalidHash[_arg1] = true;
if (_arg2){
this.callLater(draw);
};
}
protected function isOurFocus(_arg1:DisplayObject):Boolean{
return ((_arg1 == this));
}
public function get enabled():Boolean{
return (_enabled);
}
protected function getScaleX():Number{
return (super.scaleX);
}
protected function getScaleY():Number{
return (super.scaleY);
}
public function get focusEnabled():Boolean{
return (_focusEnabled);
}
protected function afterComponentParameters():void{
}
override public function get scaleY():Number{
return ((height / startHeight));
}
protected function setIMEMode(_arg1:Boolean){
var enabled = _arg1;
if (_imeMode != null){
if (enabled){
IME.enabled = true;
_oldIMEMode = IME.conversionMode;
try {
if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){
IME.conversionMode = _imeMode;
};
errorCaught = false;
} catch(e:Error) {
errorCaught = true;
throw (new Error(("IME mode not supported: " + _imeMode)));
};
} else {
if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){
IME.conversionMode = _oldIMEMode;
};
IME.enabled = false;
};
};
}
protected function draw():void{
if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
};
validate();
}
override public function set height(_arg1:Number):void{
if (_height == _arg1){
return;
};
setSize(width, _arg1);
}
protected function configUI():void{
isLivePreview = checkLivePreview();
var _local1:Number = rotation;
rotation = 0;
var _local2:Number = super.width;
var _local3:Number = super.height;
var _local4 = 1;
super.scaleY = _local4;
super.scaleX = _local4;
setSize(_local2, _local3);
move(super.x, super.y);
rotation = _local1;
startWidth = _local2;
startHeight = _local3;
if (numChildren > 0){
removeChildAt(0);
};
}
protected function setScaleY(_arg1:Number):void{
super.scaleY = _arg1;
}
override public function get scaleX():Number{
return ((width / startWidth));
}
protected function setScaleX(_arg1:Number):void{
super.scaleX = _arg1;
}
private function initializeFocusManager():void{
if (stage == null){
addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true);
} else {
createFocusManager();
};
}
protected function keyDownHandler(_arg1:KeyboardEvent):void{
}
public function set focusManager(_arg1:IFocusManager):void{
UIComponent.focusManagers[this] = _arg1;
}
public function clearStyle(_arg1:String):void{
setStyle(_arg1, null);
}
protected function isInvalid(_arg1:String, ... _args):Boolean{
if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){
return (true);
};
while (_args.length > 0) {
if (invalidHash[_args.pop()]){
return (true);
};
};
return (false);
}
public function setStyle(_arg1:String, _arg2:Object):void{
if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
instanceStyles[_arg1] = _arg2;
invalidate(InvalidationType.STYLES);
}
override public function get visible():Boolean{
return (super.visible);
}
protected function focusInHandler(_arg1:FocusEvent):void{
var _local2:IFocusManager;
if (isOurFocus((_arg1.target as DisplayObject))){
_local2 = focusManager;
if (((_local2) && (_local2.showFocusIndicator))){
drawFocus(true);
isFocused = true;
};
};
}
public function get componentInspectorSetting():Boolean{
return (_inspector);
}
override public function get x():Number{
return ((isNaN(_x)) ? super.x : _x);
}
override public function get y():Number{
return ((isNaN(_y)) ? super.y : _y);
}
public function set enabled(_arg1:Boolean):void{
if (_arg1 == _enabled){
return;
};
_enabled = _arg1;
invalidate(InvalidationType.STATE);
}
public function setSize(_arg1:Number, _arg2:Number):void{
_width = _arg1;
_height = _arg2;
invalidate(InvalidationType.SIZE);
dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false));
}
protected function keyUpHandler(_arg1:KeyboardEvent):void{
}
public function setSharedStyle(_arg1:String, _arg2:Object):void{
if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
sharedStyles[_arg1] = _arg2;
if (instanceStyles[_arg1] == null){
invalidate(InvalidationType.STYLES);
};
}
public function set focusEnabled(_arg1:Boolean):void{
_focusEnabled = _arg1;
}
override public function set width(_arg1:Number):void{
if (_width == _arg1){
return;
};
setSize(_arg1, height);
}
public function setFocus():void{
if (stage){
stage.focus = this;
};
}
override public function set scaleX(_arg1:Number):void{
setSize((startWidth * _arg1), height);
}
public function get mouseFocusEnabled():Boolean{
return (_mouseFocusEnabled);
}
override public function set scaleY(_arg1:Number):void{
setSize(width, (startHeight * _arg1));
}
protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{
var skin = _arg1;
var classDef:Object;
if ((skin is Class)){
return ((new (skin) as DisplayObject));
};
if ((skin is DisplayObject)){
(skin as DisplayObject).x = 0;
(skin as DisplayObject).y = 0;
return ((skin as DisplayObject));
};
try {
classDef = getDefinitionByName(skin.toString());
} catch(e:Error) {
try {
classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object);
} catch(e:Error) {
};
};
if (classDef == null){
return (null);
};
return ((new (classDef) as DisplayObject));
}
protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{
var _local3:String;
for (_local3 in _arg2) {
_arg1.setStyle(_local3, getStyleValue(_arg2[_local3]));
};
}
protected function initializeAccessibility():void{
if (UIComponent.createAccessibilityImplementation != null){
UIComponent.createAccessibilityImplementation(this);
};
}
public function get focusManager():IFocusManager{
var _local1:DisplayObject = this;
while (_local1) {
if (UIComponent.focusManagers[_local1] != null){
return (IFocusManager(UIComponent.focusManagers[_local1]));
};
_local1 = _local1.parent;
};
return (null);
}
override public function get width():Number{
return (_width);
}
protected function beforeComponentParameters():void{
}
protected function callLater(_arg1:Function):void{
if (inCallLaterPhase){
return;
};
callLaterMethods[_arg1] = true;
if (stage != null){
stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true);
stage.invalidate();
} else {
addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true);
};
}
public function move(_arg1:Number, _arg2:Number):void{
_x = _arg1;
_y = _arg2;
super.x = Math.round(_arg1);
super.y = Math.round(_arg2);
dispatchEvent(new ComponentEvent(ComponentEvent.MOVE));
}
public function validateNow():void{
invalidate(InvalidationType.ALL, false);
draw();
}
override public function set visible(_arg1:Boolean):void{
if (super.visible == _arg1){
return;
};
super.visible = _arg1;
var _local2:String = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE;
dispatchEvent(new ComponentEvent(_local2, true));
}
protected function createFocusManager():void{
if (focusManagers[stage] == null){
focusManagers[stage] = new FocusManager(stage);
};
}
protected function hookAccessibility(_arg1:Event):void{
removeEventListener(Event.ENTER_FRAME, hookAccessibility);
initializeAccessibility();
}
public function set componentInspectorSetting(_arg1:Boolean):void{
_inspector = _arg1;
if (_inspector){
beforeComponentParameters();
} else {
afterComponentParameters();
};
}
override public function set y(_arg1:Number):void{
move(_x, _arg1);
}
public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
isFocused = _arg1;
if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){
removeChild(uiFocusRect);
uiFocusRect = null;
};
if (_arg1){
uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite);
if (uiFocusRect == null){
return;
};
_local2 = Number(getStyleValue("focusRectPadding"));
uiFocusRect.x = -(_local2);
uiFocusRect.y = -(_local2);
uiFocusRect.width = (width + (_local2 * 2));
uiFocusRect.height = (height + (_local2 * 2));
addChildAt(uiFocusRect, 0);
};
}
override public function set x(_arg1:Number):void{
move(_arg1, _y);
}
public function drawNow():void{
draw();
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
public static function mergeStyles(... _args):Object{
var _local5:Object;
var _local6:String;
var _local2:Object = {};
var _local3:uint = _args.length;
var _local4:uint;
while (_local4 < _local3) {
_local5 = _args[_local4];
for (_local6 in _local5) {
if (_local2[_local6] != null){
} else {
_local2[_local6] = _args[_local4][_local6];
};
};
_local4++;
};
return (_local2);
}
}
}//package fl.core
Section 159
//DataProvider (fl.data.DataProvider)
package fl.data {
import flash.events.*;
import fl.events.*;
public class DataProvider extends EventDispatcher {
protected var data:Array;
public function DataProvider(_arg1:Object=null){
if (_arg1 == null){
data = [];
} else {
data = getDataFromObject(_arg1);
};
}
public function invalidateItemAt(_arg1:int):void{
checkIndex(_arg1, (data.length - 1));
dispatchChangeEvent(DataChangeType.INVALIDATE, [data[_arg1]], _arg1, _arg1);
}
protected function dispatchPreChangeEvent(_arg1:String, _arg2:Array, _arg3:int, _arg4:int):void{
dispatchEvent(new DataChangeEvent(DataChangeEvent.PRE_DATA_CHANGE, _arg1, _arg2, _arg3, _arg4));
}
public function getItemIndex(_arg1:Object):int{
return (data.indexOf(_arg1));
}
public function removeItemAt(_arg1:uint):Object{
checkIndex(_arg1, (data.length - 1));
dispatchPreChangeEvent(DataChangeType.REMOVE, data.slice(_arg1, (_arg1 + 1)), _arg1, _arg1);
var _local2:Array = data.splice(_arg1, 1);
dispatchChangeEvent(DataChangeType.REMOVE, _local2, _arg1, _arg1);
return (_local2[0]);
}
protected function getDataFromObject(_arg1:Object):Array{
var _local2:Array;
var _local3:Array;
var _local4:uint;
var _local5:Object;
var _local6:XML;
var _local7:XMLList;
var _local8:XML;
var _local9:XMLList;
var _local10:XML;
var _local11:XMLList;
var _local12:XML;
if ((_arg1 is Array)){
_local3 = (_arg1 as Array);
if (_local3.length > 0){
if ((((_local3[0] is String)) || ((_local3[0] is Number)))){
_local2 = [];
_local4 = 0;
while (_local4 < _local3.length) {
_local5 = {label:String(_local3[_local4]), data:_local3[_local4]};
_local2.push(_local5);
_local4++;
};
return (_local2);
};
};
return (_arg1.concat());
//unresolved jump
};
if ((_arg1 is DataProvider)){
return (_arg1.toArray());
};
if ((_arg1 is XML)){
_local6 = (_arg1 as XML);
_local2 = [];
_local7 = _local6.*;
for each (_local8 in _local7) {
_arg1 = {};
_local9 = _local8.attributes();
for each (_local10 in _local9) {
_arg1[_local10.localName()] = _local10.toString();
};
_local11 = _local8.*;
for each (_local12 in _local11) {
if (_local12.hasSimpleContent()){
_arg1[_local12.localName()] = _local12.toString();
};
};
_local2.push(_arg1);
};
return (_local2);
//unresolved jump
};
throw (new TypeError((("Error: Type Coercion failed: cannot convert " + _arg1) + " to Array or DataProvider.")));
}
public function addItem(_arg1:Object):void{
dispatchPreChangeEvent(DataChangeType.ADD, [_arg1], (data.length - 1), (data.length - 1));
data.push(_arg1);
dispatchChangeEvent(DataChangeType.ADD, [_arg1], (data.length - 1), (data.length - 1));
}
public function concat(_arg1:Object):void{
addItems(_arg1);
}
public function getItemAt(_arg1:uint):Object{
checkIndex(_arg1, (data.length - 1));
return (data[_arg1]);
}
public function sortOn(_arg1:Object, _arg2:Object=null){
dispatchPreChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1));
var _local3:Array = data.sortOn(_arg1, _arg2);
dispatchChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1));
return (_local3);
}
public function toArray():Array{
return (data.concat());
}
public function addItems(_arg1:Object):void{
addItemsAt(_arg1, data.length);
}
public function clone():DataProvider{
return (new DataProvider(data));
}
public function sort(... _args){
dispatchPreChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1));
var _local2:Array = data.sort.apply(data, _args);
dispatchChangeEvent(DataChangeType.SORT, data.concat(), 0, (data.length - 1));
return (_local2);
}
public function get length():uint{
return (data.length);
}
public function addItemAt(_arg1:Object, _arg2:uint):void{
checkIndex(_arg2, data.length);
dispatchPreChangeEvent(DataChangeType.ADD, [_arg1], _arg2, _arg2);
data.splice(_arg2, 0, _arg1);
dispatchChangeEvent(DataChangeType.ADD, [_arg1], _arg2, _arg2);
}
override public function toString():String{
return ((("DataProvider [" + data.join(" , ")) + "]"));
}
public function invalidateItem(_arg1:Object):void{
var _local2:uint = getItemIndex(_arg1);
if (_local2 == -1){
return;
};
invalidateItemAt(_local2);
}
protected function dispatchChangeEvent(_arg1:String, _arg2:Array, _arg3:int, _arg4:int):void{
dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE, _arg1, _arg2, _arg3, _arg4));
}
protected function checkIndex(_arg1:int, _arg2:int):void{
if ((((_arg1 > _arg2)) || ((_arg1 < 0)))){
throw (new RangeError((((("DataProvider index (" + _arg1) + ") is not in acceptable range (0 - ") + _arg2) + ")")));
};
}
public function addItemsAt(_arg1:Object, _arg2:uint):void{
checkIndex(_arg2, data.length);
var _local3:Array = getDataFromObject(_arg1);
dispatchPreChangeEvent(DataChangeType.ADD, _local3, _arg2, ((_arg2 + _local3.length) - 1));
data.splice.apply(data, [_arg2, 0].concat(_local3));
dispatchChangeEvent(DataChangeType.ADD, _local3, _arg2, ((_arg2 + _local3.length) - 1));
}
public function replaceItem(_arg1:Object, _arg2:Object):Object{
var _local3:int = getItemIndex(_arg2);
if (_local3 != -1){
return (replaceItemAt(_arg1, _local3));
};
return (null);
}
public function removeItem(_arg1:Object):Object{
var _local2:int = getItemIndex(_arg1);
if (_local2 != -1){
return (removeItemAt(_local2));
};
return (null);
}
public function merge(_arg1:Object):void{
var _local6:Object;
var _local2:Array = getDataFromObject(_arg1);
var _local3:uint = _local2.length;
var _local4:uint = data.length;
dispatchPreChangeEvent(DataChangeType.ADD, data.slice(_local4, data.length), _local4, (this.data.length - 1));
var _local5:uint;
while (_local5 < _local3) {
_local6 = _local2[_local5];
if (getItemIndex(_local6) == -1){
data.push(_local6);
};
_local5++;
};
if (data.length > _local4){
dispatchChangeEvent(DataChangeType.ADD, data.slice(_local4, data.length), _local4, (this.data.length - 1));
} else {
dispatchChangeEvent(DataChangeType.ADD, [], -1, -1);
};
}
public function replaceItemAt(_arg1:Object, _arg2:uint):Object{
checkIndex(_arg2, (data.length - 1));
var _local3:Array = [data[_arg2]];
dispatchPreChangeEvent(DataChangeType.REPLACE, _local3, _arg2, _arg2);
data[_arg2] = _arg1;
dispatchChangeEvent(DataChangeType.REPLACE, _local3, _arg2, _arg2);
return (_local3[0]);
}
public function invalidate():void{
dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE, DataChangeType.INVALIDATE_ALL, data.concat(), 0, data.length));
}
public function removeAll():void{
var _local1:Array = data.concat();
dispatchPreChangeEvent(DataChangeType.REMOVE_ALL, _local1, 0, _local1.length);
data = [];
dispatchChangeEvent(DataChangeType.REMOVE_ALL, _local1, 0, _local1.length);
}
}
}//package fl.data
Section 160
//SimpleCollectionItem (fl.data.SimpleCollectionItem)
package fl.data {
public dynamic class SimpleCollectionItem {
public var data:String;
public var label:String;
public function toString():String{
return ((((("[SimpleCollectionItem: " + label) + ",") + data) + "]"));
}
}
}//package fl.data
Section 161
//ComponentEvent (fl.events.ComponentEvent)
package fl.events {
import flash.events.*;
public class ComponentEvent extends Event {
public static const HIDE:String = "hide";
public static const BUTTON_DOWN:String = "buttonDown";
public static const MOVE:String = "move";
public static const RESIZE:String = "resize";
public static const ENTER:String = "enter";
public static const LABEL_CHANGE:String = "labelChange";
public static const SHOW:String = "show";
public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("ComponentEvent", "type", "bubbles", "cancelable"));
}
override public function clone():Event{
return (new ComponentEvent(type, bubbles, cancelable));
}
}
}//package fl.events
Section 162
//DataChangeEvent (fl.events.DataChangeEvent)
package fl.events {
import flash.events.*;
public class DataChangeEvent extends Event {
protected var _items:Array;
protected var _changeType:String;
protected var _startIndex:uint;
protected var _endIndex:uint;
public static const PRE_DATA_CHANGE:String = "preDataChange";
public static const DATA_CHANGE:String = "dataChange";
public function DataChangeEvent(_arg1:String, _arg2:String, _arg3:Array, _arg4:int=-1, _arg5:int=-1):void{
super(_arg1);
_changeType = _arg2;
_startIndex = _arg4;
_items = _arg3;
_endIndex = ((_arg5)==-1) ? _startIndex : _arg5;
}
public function get items():Array{
return (_items);
}
public function get changeType():String{
return (_changeType);
}
public function get startIndex():uint{
return (_startIndex);
}
public function get endIndex():uint{
return (_endIndex);
}
override public function toString():String{
return (formatToString("DataChangeEvent", "type", "changeType", "startIndex", "endIndex", "bubbles", "cancelable"));
}
override public function clone():Event{
return (new DataChangeEvent(type, _changeType, _items, _startIndex, _endIndex));
}
}
}//package fl.events
Section 163
//DataChangeType (fl.events.DataChangeType)
package fl.events {
public class DataChangeType {
public static const ADD:String = "add";
public static const REMOVE:String = "remove";
public static const REMOVE_ALL:String = "removeAll";
public static const CHANGE:String = "change";
public static const REPLACE:String = "replace";
public static const INVALIDATE:String = "invalidate";
public static const INVALIDATE_ALL:String = "invalidateAll";
public static const SORT:String = "sort";
}
}//package fl.events
Section 164
//ListEvent (fl.events.ListEvent)
package fl.events {
import flash.events.*;
public class ListEvent extends Event {
protected var _item:Object;
protected var _index:int;
protected var _rowIndex:int;
protected var _columnIndex:int;
public static const ITEM_DOUBLE_CLICK:String = "itemDoubleClick";
public static const ITEM_ROLL_OUT:String = "itemRollOut";
public static const ITEM_ROLL_OVER:String = "itemRollOver";
public static const ITEM_CLICK:String = "itemClick";
public function ListEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:int=-1, _arg5:int=-1, _arg6:int=-1, _arg7:Object=null){
super(_arg1, _arg2, _arg3);
_rowIndex = _arg5;
_columnIndex = _arg4;
_index = _arg6;
_item = _arg7;
}
public function get item():Object{
return (_item);
}
override public function toString():String{
return (formatToString("ListEvent", "type", "bubbles", "cancelable", "columnIndex", "rowIndex", "index", "item"));
}
override public function clone():Event{
return (new ListEvent(type, bubbles, cancelable, _columnIndex, _rowIndex));
}
public function get rowIndex():Object{
return (_rowIndex);
}
public function get index():int{
return (_index);
}
public function get columnIndex():int{
return (_columnIndex);
}
}
}//package fl.events
Section 165
//ScrollEvent (fl.events.ScrollEvent)
package fl.events {
import flash.events.*;
public class ScrollEvent extends Event {
private var _direction:String;
private var _position:Number;
private var _delta:Number;
public static const SCROLL:String = "scroll";
public function ScrollEvent(_arg1:String, _arg2:Number, _arg3:Number){
super(ScrollEvent.SCROLL, false, false);
_direction = _arg1;
_delta = _arg2;
_position = _arg3;
}
public function get position():Number{
return (_position);
}
public function get direction():String{
return (_direction);
}
public function get delta():Number{
return (_delta);
}
override public function toString():String{
return (formatToString("ScrollEvent", "type", "bubbles", "cancelable", "direction", "delta", "position"));
}
override public function clone():Event{
return (new ScrollEvent(_direction, _delta, _position));
}
}
}//package fl.events
Section 166
//FocusManager (fl.managers.FocusManager)
package fl.managers {
import fl.core.*;
import fl.controls.*;
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.*;
import flash.ui.*;
public class FocusManager implements IFocusManager {
private var focusableObjects:Dictionary;
private var _showFocusIndicator:Boolean;// = true
private var defButton:Button;
private var focusableCandidates:Array;
private var _form:DisplayObjectContainer;
private var _defaultButtonEnabled:Boolean;// = true
private var activated:Boolean;// = false
private var _defaultButton:Button;
private var calculateCandidates:Boolean;// = true
private var lastFocus:InteractiveObject;
private var lastAction:String;
public function FocusManager(_arg1:DisplayObjectContainer){
focusableObjects = new Dictionary(true);
if (_arg1 != null){
_form = _arg1;
addFocusables(DisplayObject(_arg1));
_arg1.addEventListener(Event.ADDED, addedHandler);
_arg1.addEventListener(Event.REMOVED, removedHandler);
activate();
};
}
public function get showFocusIndicator():Boolean{
return (_showFocusIndicator);
}
private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{
var _local7:DisplayObject;
var _local8:IFocusManagerGroup;
var _local9:int;
var _local10:DisplayObject;
var _local11:IFocusManagerGroup;
var _local5:int = focusableCandidates.length;
var _local6:int = _arg1;
while (true) {
if (_arg2){
_arg1--;
} else {
_arg1++;
};
if (_arg3){
if (((_arg2) && ((_arg1 < 0)))){
break;
};
if (((!(_arg2)) && ((_arg1 == _local5)))){
break;
};
} else {
_arg1 = ((_arg1 + _local5) % _local5);
if (_local6 == _arg1){
break;
};
};
if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){
_local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1]));
if ((_local7 is IFocusManagerGroup)){
_local8 = IFocusManagerGroup(_local7);
_local9 = 0;
while (_local9 < focusableCandidates.length) {
_local10 = focusableCandidates[_local9];
if ((_local10 is IFocusManagerGroup)){
_local11 = IFocusManagerGroup(_local10);
if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){
_arg1 = _local9;
break;
};
};
_local9++;
};
};
return (_arg1);
};
};
return (_arg1);
}
private function mouseFocusChangeHandler(_arg1:FocusEvent):void{
if ((_arg1.relatedObject is TextField)){
return;
};
_arg1.preventDefault();
}
public function set form(_arg1:DisplayObjectContainer):void{
_form = _arg1;
}
private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{
var focusable:IFocusManagerComponent;
var io:InteractiveObject;
var doc:DisplayObjectContainer;
var i:int;
var child:DisplayObject;
var o = _arg1;
var skipTopLevel = _arg2;
if (!skipTopLevel){
if ((o is IFocusManagerComponent)){
focusable = IFocusManagerComponent(o);
if (focusable.focusEnabled){
if (((focusable.tabEnabled) && (isTabVisible(o)))){
focusableObjects[o] = true;
calculateCandidates = true;
};
o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
};
} else {
if ((o is InteractiveObject)){
io = (o as InteractiveObject);
if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){
focusableObjects[io] = true;
calculateCandidates = true;
};
io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
};
};
};
if ((o is DisplayObjectContainer)){
doc = DisplayObjectContainer(o);
o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler);
if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){
i = 0;
while (i < doc.numChildren) {
try {
child = doc.getChildAt(i);
if (child != null){
addFocusables(doc.getChildAt(i));
};
} catch(error:SecurityError) {
};
i = (i + 1);
};
};
};
}
private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{
return (_arg1.getChildIndex(_arg2));
}
public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{
var _local2:InteractiveObject = _arg1;
while (_arg1) {
if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){
return (_arg1);
};
_arg1 = _arg1.parent;
};
return (_local2);
}
private function focusOutHandler(_arg1:FocusEvent):void{
var _local2:InteractiveObject = (_arg1.target as InteractiveObject);
}
private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{
var _local3:IFocusManagerGroup;
if (!isEnabledAndVisible(_arg1)){
return (false);
};
if ((_arg1 is IFocusManagerGroup)){
_local3 = IFocusManagerGroup(_arg1);
if (_arg2 == _local3.groupName){
return (false);
};
};
return (true);
}
private function setFocusToNextObject(_arg1:FocusEvent):void{
if (!hasFocusableObjects()){
return;
};
var _local2:InteractiveObject = getNextFocusManagerComponent(_arg1.shiftKey);
if (_local2){
setFocus(_local2);
};
}
private function sortFocusableObjectsTabIndex():void{
var _local1:Object;
var _local2:InteractiveObject;
focusableCandidates = [];
for (_local1 in focusableObjects) {
_local2 = InteractiveObject(_local1);
if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){
focusableCandidates.push(_local2);
};
};
focusableCandidates.sort(sortByTabIndex);
}
private function removeFocusables(_arg1:DisplayObject):void{
var _local2:Object;
var _local3:DisplayObject;
if ((_arg1 is DisplayObjectContainer)){
_arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler);
_arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
for (_local2 in focusableObjects) {
_local3 = DisplayObject(_local2);
if (DisplayObjectContainer(_arg1).contains(_local3)){
if (_local3 == lastFocus){
lastFocus = null;
};
_local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
delete focusableObjects[_local2];
calculateCandidates = true;
};
};
};
}
private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{
while (_arg1 != InteractiveObject(form)) {
if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){
return (_arg1);
};
_arg1 = _arg1.parent;
if (_arg1 == null){
break;
};
};
return (null);
}
public function sendDefaultButtonEvent():void{
defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
private function addedHandler(_arg1:Event):void{
var _local2:DisplayObject = DisplayObject(_arg1.target);
if (_local2.stage){
addFocusables(DisplayObject(_arg1.target));
};
}
private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{
var _local3:TextField;
var _local4:SimpleButton;
var _local2:DisplayObjectContainer = DisplayObject(form).parent;
while (_arg1 != _local2) {
if ((_arg1 is UIComponent)){
if (!UIComponent(_arg1).enabled){
return (false);
};
} else {
if ((_arg1 is TextField)){
_local3 = TextField(_arg1);
if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){
return (false);
};
} else {
if ((_arg1 is SimpleButton)){
_local4 = SimpleButton(_arg1);
if (!_local4.enabled){
return (false);
};
};
};
};
if (!_arg1.visible){
return (false);
};
_arg1 = _arg1.parent;
};
return (true);
}
private function tabChildrenChangeHandler(_arg1:Event):void{
if (_arg1.target != _arg1.currentTarget){
return;
};
calculateCandidates = true;
var _local2:DisplayObjectContainer = DisplayObjectContainer(_arg1.target);
if (_local2.tabChildren){
addFocusables(_local2, true);
} else {
removeFocusables(_local2);
};
}
private function deactivateHandler(_arg1:Event):void{
var _local2:InteractiveObject = InteractiveObject(_arg1.target);
}
public function setFocus(_arg1:InteractiveObject):void{
if ((_arg1 is IFocusManagerComponent)){
IFocusManagerComponent(_arg1).setFocus();
} else {
form.stage.focus = _arg1;
};
}
public function getFocus():InteractiveObject{
var _local1:InteractiveObject = form.stage.focus;
return (findFocusManagerComponent(_local1));
}
private function hasFocusableObjects():Boolean{
var _local1:Object;
for (_local1 in focusableObjects) {
return (true);
};
return (false);
}
private function tabIndexChangeHandler(_arg1:Event):void{
calculateCandidates = true;
}
public function set defaultButton(_arg1:Button):void{
var _local2:Button = (_arg1) ? Button(_arg1) : null;
if (_local2 != _defaultButton){
if (_defaultButton){
_defaultButton.emphasized = false;
};
if (defButton){
defButton.emphasized = false;
};
_defaultButton = _local2;
defButton = _local2;
if (_local2){
_local2.emphasized = true;
};
};
}
private function sortFocusableObjects():void{
var _local1:Object;
var _local2:InteractiveObject;
focusableCandidates = [];
for (_local1 in focusableObjects) {
_local2 = InteractiveObject(_local1);
if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){
sortFocusableObjectsTabIndex();
return;
};
focusableCandidates.push(_local2);
};
focusableCandidates.sort(sortByDepth);
}
private function keyFocusChangeHandler(_arg1:FocusEvent):void{
showFocusIndicator = true;
if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){
setFocusToNextObject(_arg1);
_arg1.preventDefault();
};
}
private function getIndexOfFocusedObject(_arg1:DisplayObject):int{
var _local2:int = focusableCandidates.length;
var _local3:int;
_local3 = 0;
while (_local3 < _local2) {
if (focusableCandidates[_local3] == _arg1){
return (_local3);
};
_local3++;
};
return (-1);
}
public function hideFocus():void{
}
private function removedHandler(_arg1:Event):void{
var _local2:int;
var _local4:InteractiveObject;
var _local3:DisplayObject = DisplayObject(_arg1.target);
if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){
if (_local3 == lastFocus){
IFocusManagerComponent(lastFocus).drawFocus(false);
lastFocus = null;
};
_local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
delete focusableObjects[_local3];
calculateCandidates = true;
} else {
if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){
_local4 = (_local3 as InteractiveObject);
if (_local4){
if (_local4 == lastFocus){
lastFocus = null;
};
delete focusableObjects[_local4];
calculateCandidates = true;
};
_local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
};
};
removeFocusables(_local3);
}
private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{
var _local5:int;
var _local6:String;
var _local7:String;
var _local3 = "";
var _local4 = "";
var _local8 = "0000";
var _local9:DisplayObject = DisplayObject(_arg1);
var _local10:DisplayObject = DisplayObject(_arg2);
while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) {
_local5 = getChildIndex(_local9.parent, _local9);
_local6 = _local5.toString(16);
if (_local6.length < 4){
_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
};
_local3 = (_local7 + _local3);
_local9 = _local9.parent;
};
while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) {
_local5 = getChildIndex(_local10.parent, _local10);
_local6 = _local5.toString(16);
if (_local6.length < 4){
_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
};
_local4 = (_local7 + _local4);
_local10 = _local10.parent;
};
return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0);
}
public function get defaultButton():Button{
return (_defaultButton);
}
private function activateHandler(_arg1:Event):void{
var _local2:InteractiveObject = InteractiveObject(_arg1.target);
if (lastFocus){
if ((lastFocus is IFocusManagerComponent)){
IFocusManagerComponent(lastFocus).setFocus();
} else {
form.stage.focus = lastFocus;
};
};
lastAction = "ACTIVATE";
}
public function showFocus():void{
}
public function set defaultButtonEnabled(_arg1:Boolean):void{
_defaultButtonEnabled = _arg1;
}
public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{
var _local8:IFocusManagerGroup;
if (!hasFocusableObjects()){
return (null);
};
if (calculateCandidates){
sortFocusableObjects();
calculateCandidates = false;
};
var _local2:DisplayObject = form.stage.focus;
_local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2)));
var _local3 = "";
if ((_local2 is IFocusManagerGroup)){
_local8 = IFocusManagerGroup(_local2);
_local3 = _local8.groupName;
};
var _local4:int = getIndexOfFocusedObject(_local2);
var _local5:Boolean;
var _local6:int = _local4;
if (_local4 == -1){
if (_arg1){
_local4 = focusableCandidates.length;
};
_local5 = true;
};
var _local7:int = getIndexOfNextObject(_local4, _arg1, _local5, _local3);
return (findFocusManagerComponent(focusableCandidates[_local7]));
}
private function mouseDownHandler(_arg1:MouseEvent):void{
if (_arg1.isDefaultPrevented()){
return;
};
var _local2:InteractiveObject = getTopLevelFocusTarget(InteractiveObject(_arg1.target));
if (!_local2){
return;
};
showFocusIndicator = false;
if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){
setFocus(_local2);
};
lastAction = "MOUSEDOWN";
}
private function isTabVisible(_arg1:DisplayObject):Boolean{
var _local2:DisplayObjectContainer = _arg1.parent;
while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) {
if (!_local2.tabChildren){
return (false);
};
_local2 = _local2.parent;
};
return (true);
}
public function get nextTabIndex():int{
return (0);
}
private function keyDownHandler(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.TAB){
lastAction = "KEY";
if (calculateCandidates){
sortFocusableObjects();
calculateCandidates = false;
};
};
if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){
sendDefaultButtonEvent();
};
}
private function focusInHandler(_arg1:FocusEvent):void{
var _local3:Button;
var _local2:InteractiveObject = InteractiveObject(_arg1.target);
if (form.contains(_local2)){
lastFocus = findFocusManagerComponent(InteractiveObject(_local2));
if ((lastFocus is Button)){
_local3 = Button(lastFocus);
if (defButton){
defButton.emphasized = false;
defButton = _local3;
_local3.emphasized = true;
};
} else {
if (((defButton) && (!((defButton == _defaultButton))))){
defButton.emphasized = false;
defButton = _defaultButton;
_defaultButton.emphasized = true;
};
};
};
}
private function tabEnabledChangeHandler(_arg1:Event):void{
calculateCandidates = true;
var _local2:InteractiveObject = InteractiveObject(_arg1.target);
var _local3 = (focusableObjects[_local2] == true);
if (_local2.tabEnabled){
if (((!(_local3)) && (isTabVisible(_local2)))){
if (!(_local2 is IFocusManagerComponent)){
_local2.focusRect = false;
};
focusableObjects[_local2] = true;
};
} else {
if (_local3){
delete focusableObjects[_local2];
};
};
}
public function set showFocusIndicator(_arg1:Boolean):void{
_showFocusIndicator = _arg1;
}
public function get form():DisplayObjectContainer{
return (_form);
}
private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{
return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2));
}
public function get defaultButtonEnabled():Boolean{
return (_defaultButtonEnabled);
}
public function activate():void{
if (activated){
return;
};
form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true);
form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true);
form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true);
form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true);
form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
activated = true;
if (lastFocus){
setFocus(lastFocus);
};
}
public function deactivate():void{
form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
form.stage.removeEventListener(Event.ACTIVATE, activateHandler);
form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler);
form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
activated = false;
}
}
}//package fl.managers
Section 167
//IFocusManager (fl.managers.IFocusManager)
package fl.managers {
import fl.controls.*;
import flash.display.*;
public interface IFocusManager {
function getFocus():InteractiveObject;
function deactivate():void;
function set defaultButton(_arg1:Button):void;
function set showFocusIndicator(_arg1:Boolean):void;
function get defaultButtonEnabled():Boolean;
function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject;
function get nextTabIndex():int;
function get defaultButton():Button;
function get showFocusIndicator():Boolean;
function hideFocus():void;
function activate():void;
function showFocus():void;
function set defaultButtonEnabled(_arg1:Boolean):void;
function setFocus(_arg1:InteractiveObject):void;
function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject;
}
}//package fl.managers
Section 168
//IFocusManagerComponent (fl.managers.IFocusManagerComponent)
package fl.managers {
public interface IFocusManagerComponent {
function set focusEnabled(_arg1:Boolean):void;
function drawFocus(_arg1:Boolean):void;
function setFocus():void;
function get focusEnabled():Boolean;
function get tabEnabled():Boolean;
function get tabIndex():int;
function get mouseFocusEnabled():Boolean;
}
}//package fl.managers
Section 169
//IFocusManagerGroup (fl.managers.IFocusManagerGroup)
package fl.managers {
public interface IFocusManagerGroup {
function get groupName():String;
function get selected():Boolean;
function set groupName(_arg1:String):void;
function set selected(_arg1:Boolean):void;
}
}//package fl.managers
Section 170
//StyleManager (fl.managers.StyleManager)
package fl.managers {
import fl.core.*;
import flash.text.*;
import flash.utils.*;
public class StyleManager {
private var classToInstancesDict:Dictionary;
private var globalStyles:Object;
private var styleToClassesHash:Object;
private var classToStylesDict:Dictionary;
private var classToDefaultStylesDict:Dictionary;
private static var _instance:StyleManager;
public function StyleManager(){
styleToClassesHash = {};
classToInstancesDict = new Dictionary(true);
classToStylesDict = new Dictionary(true);
classToDefaultStylesDict = new Dictionary(true);
globalStyles = UIComponent.getStyleDefinition();
}
public static function clearComponentStyle(_arg1:Object, _arg2:String):void{
var _local3:Class = getClassDef(_arg1);
var _local4:Object = getInstance().classToStylesDict[_local3];
if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){
delete _local4[_arg2];
invalidateComponentStyle(_local3, _arg2);
};
}
private static function getClassDef(_arg1:Object):Class{
var component = _arg1;
if ((component is Class)){
return ((component as Class));
};
try {
return ((getDefinitionByName(getQualifiedClassName(component)) as Class));
} catch(e:Error) {
if ((component is UIComponent)){
try {
return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class));
} catch(e:Error) {
};
};
};
return (null);
}
public static function clearStyle(_arg1:String):void{
setStyle(_arg1, null);
}
public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{
var _local4:Class = getClassDef(_arg1);
var _local5:Object = getInstance().classToStylesDict[_local4];
if (_local5 == null){
_local5 = (getInstance().classToStylesDict[_local4] = {});
};
if (_local5 == _arg3){
return;
};
_local5[_arg2] = _arg3;
invalidateComponentStyle(_local4, _arg2);
}
private static function setSharedStyles(_arg1:UIComponent):void{
var _local5:String;
var _local2:StyleManager = getInstance();
var _local3:Class = getClassDef(_arg1);
var _local4:Object = _local2.classToDefaultStylesDict[_local3];
for (_local5 in _local4) {
_arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5));
};
}
public static function getComponentStyle(_arg1:Object, _arg2:String):Object{
var _local3:Class = getClassDef(_arg1);
var _local4:Object = getInstance().classToStylesDict[_local3];
return (((_local4)==null) ? null : _local4[_arg2]);
}
private static function getInstance(){
if (_instance == null){
_instance = new (StyleManager);
};
return (_instance);
}
private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{
var _local4:Object;
var _local5:UIComponent;
var _local3:Dictionary = getInstance().classToInstancesDict[_arg1];
if (_local3 == null){
return;
};
for (_local4 in _local3) {
_local5 = (_local4 as UIComponent);
if (_local5 == null){
} else {
_local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2));
};
};
}
private static function invalidateStyle(_arg1:String):void{
var _local3:Object;
var _local2:Dictionary = getInstance().styleToClassesHash[_arg1];
if (_local2 == null){
return;
};
for (_local3 in _local2) {
invalidateComponentStyle(Class(_local3), _arg1);
};
}
public static function registerInstance(_arg1:UIComponent):void{
var target:Class;
var defaultStyles:Object;
var styleToClasses:Object;
var n:String;
var instance = _arg1;
var inst:StyleManager = getInstance();
var classDef:Class = getClassDef(instance);
if (classDef == null){
return;
};
if (inst.classToInstancesDict[classDef] == null){
inst.classToInstancesDict[classDef] = new Dictionary(true);
target = classDef;
while (defaultStyles == null) {
if (target["getStyleDefinition"] != null){
defaultStyles = target["getStyleDefinition"]();
break;
};
try {
target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class);
} catch(err:Error) {
try {
target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class);
} catch(e:Error) {
defaultStyles = UIComponent.getStyleDefinition();
break;
};
};
};
styleToClasses = inst.styleToClassesHash;
for (n in defaultStyles) {
if (styleToClasses[n] == null){
styleToClasses[n] = new Dictionary(true);
};
styleToClasses[n][classDef] = true;
};
inst.classToDefaultStylesDict[classDef] = defaultStyles;
if (inst.classToStylesDict[classDef] == null){
inst.classToStylesDict[classDef] = {};
};
};
inst.classToInstancesDict[classDef][instance] = true;
setSharedStyles(instance);
}
public static function getStyle(_arg1:String):Object{
return (getInstance().globalStyles[_arg1]);
}
private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{
var _local3:Class = getClassDef(_arg1);
var _local4:StyleManager = getInstance();
var _local5:Object = _local4.classToStylesDict[_local3][_arg2];
if (_local5 != null){
return (_local5);
};
_local5 = _local4.globalStyles[_arg2];
if (_local5 != null){
return (_local5);
};
return (_local4.classToDefaultStylesDict[_local3][_arg2]);
}
public static function setStyle(_arg1:String, _arg2:Object):void{
var _local3:Object = getInstance().globalStyles;
if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
_local3[_arg1] = _arg2;
invalidateStyle(_arg1);
}
}
}//package fl.managers
Section 171
//wav (frogs.wav)
package frogs {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package frogs
Section 172
//BuildClip (help.BuildClip)
package help {
import flash.display.*;
import flash.events.*;
public class BuildClip extends MovieClip {
public var timer:int;
public function BuildClip(){
addFrameScript(0, frame1);
}
public function enterFrameHandler(_arg1:Event):void{
timer++;
if (timer == 2){
play();
timer = 0;
} else {
stop();
};
}
function frame1(){
timer = 0;
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
}
}
}//package help
Section 173
//DeleteClip (help.DeleteClip)
package help {
import flash.display.*;
public class DeleteClip extends MovieClip {
public function DeleteClip(){
addFrameScript(0, frame1, 145, frame146);
}
function frame1(){
gotoAndPlay(95);
}
function frame146(){
gotoAndPlay(95);
}
}
}//package help
Section 174
//ScrollClip (help.ScrollClip)
package help {
import flash.display.*;
public class ScrollClip extends MovieClip {
public function ScrollClip(){
addFrameScript(92, frame93);
}
function frame93(){
this.gotoAndPlay(2);
}
}
}//package help
Section 175
//House01 (houses.House01)
package houses {
import flash.display.*;
public class House01 extends MovieClip {
public function House01(){
cacheAsBitmap = true;
}
}
}//package houses
Section 176
//House02 (houses.House02)
package houses {
import flash.display.*;
public class House02 extends MovieClip {
}
}//package houses
Section 177
//House03 (houses.House03)
package houses {
import flash.display.*;
public class House03 extends MovieClip {
}
}//package houses
Section 178
//House04 (houses.House04)
package houses {
import flash.display.*;
public class House04 extends MovieClip {
}
}//package houses
Section 179
//House05 (houses.House05)
package houses {
import flash.display.*;
public class House05 extends MovieClip {
}
}//package houses
Section 180
//House06 (houses.House06)
package houses {
import flash.display.*;
public class House06 extends MovieClip {
}
}//package houses
Section 181
//House07 (houses.House07)
package houses {
import flash.display.*;
public class House07 extends MovieClip {
}
}//package houses
Section 182
//House08 (houses.House08)
package houses {
import flash.display.*;
public class House08 extends MovieClip {
}
}//package houses
Section 183
//House09 (houses.House09)
package houses {
import flash.display.*;
public class House09 extends MovieClip {
}
}//package houses
Section 184
//House10 (houses.House10)
package houses {
import flash.display.*;
public class House10 extends MovieClip {
}
}//package houses
Section 185
//House11 (houses.House11)
package houses {
import flash.display.*;
public class House11 extends MovieClip {
}
}//package houses
Section 186
//House12 (houses.House12)
package houses {
import flash.display.*;
public class House12 extends MovieClip {
}
}//package houses
Section 187
//House13 (houses.House13)
package houses {
import flash.display.*;
public class House13 extends MovieClip {
}
}//package houses
Section 188
//House14 (houses.House14)
package houses {
import flash.display.*;
public class House14 extends MovieClip {
}
}//package houses
Section 189
//House15 (houses.House15)
package houses {
import flash.display.*;
public class House15 extends MovieClip {
}
}//package houses
Section 190
//House16 (houses.House16)
package houses {
import flash.display.*;
public class House16 extends MovieClip {
}
}//package houses
Section 191
//House17 (houses.House17)
package houses {
import flash.display.*;
public class House17 extends MovieClip {
}
}//package houses
Section 192
//SpriteInfo (houses.SpriteInfo)
package houses {
import flash.geom.*;
public class SpriteInfo {
private var _matrix:Matrix;
private var _layer:int;
private var _type:int;
public function SpriteInfo(_arg1:Number=0, _arg2:Number=0, _arg3:int=0, _arg4:int=0, _arg5:Matrix=null){
this.type = _arg3;
this.layer = _arg4;
if (_arg5){
this.matrix = _arg5;
} else {
this.matrix = new Matrix();
this.x = _arg1;
this.y = _arg2;
};
}
public function set layer(_arg1:int):void{
_layer = _arg1;
}
public function get matrix():Matrix{
return (_matrix);
}
public function get y():Number{
return (_matrix.ty);
}
public function set matrix(_arg1:Matrix):void{
_matrix = _arg1;
}
public function get calculateTransformMatrix():Matrix{
return (new Matrix());
}
public function set x(_arg1:Number):void{
_matrix.tx = _arg1;
}
public function get layer():int{
return (_layer);
}
public function set type(_arg1:int):void{
_type = _arg1;
}
public function get x():Number{
return (_matrix.tx);
}
public function get type():int{
return (_type);
}
public function set y(_arg1:Number):void{
_matrix.ty = _arg1;
}
}
}//package houses
Section 193
//DeckButton (hud.DeckButton)
package hud {
import core.*;
public class DeckButton extends MaterialButton {
public function DeckButton(){
super(Config.EVENT_DECK);
}
}
}//package hud
Section 194
//EditButton (hud.EditButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class EditButton extends SimpleButton {
private var timerActivated:Boolean;
private var timerCount:int;
public function EditButton(){
reset();
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
private function startTimer():void{
if (this.timerActivated){
return;
};
this.timerCount = 0;
this.timerActivated = true;
this.addEventListener(Event.ENTER_FRAME, timerCounter, false, 0, true);
}
public function reset():void{
if (visible){
alpha = 1;
} else {
visible = true;
};
enabled = true;
if (!hasEventListener(MouseEvent.CLICK)){
addEventListener(MouseEvent.CLICK, clickHandler);
};
}
private function stopTimer():void{
if (!this.timerActivated){
return;
};
this.removeEventListener(Event.ENTER_FRAME, timerCounter);
this.timerActivated = false;
}
public function hide(_arg1:Boolean=true):void{
if (hasEventListener(MouseEvent.CLICK)){
removeEventListener(MouseEvent.CLICK, clickHandler);
};
enabled = false;
if (!_arg1){
alpha = 0.3;
} else {
visible = false;
};
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.stopTimer();
}
private function clickHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_EDIT, true));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
this.startTimer();
}
private function timerCounter(_arg1:Event):void{
if (!this.timerActivated){
return;
};
this.timerCount++;
if (this.timerCount >= Config.TIP_TIMER_COUNT){
this.stopTimer();
this.dispatchEvent(new Event(Config.EVENT_TIP_EDIT, true));
};
}
}
}//package hud
Section 195
//HomeButton (hud.HomeButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class HomeButton extends SimpleButton {
public function HomeButton(){
addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_HOME, true));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package hud
Section 196
//HUD (hud.HUD)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.text.*;
public dynamic class HUD extends Sprite {
public var stressButton:StressButton;
public var budgetText:TextField;
private var _currentBudget:Number;
public var zoomOutButtonObject:ZoomOutButton;
public var startButton:StartButton;
public var undoButton:UndoButton;
public var deckButton:DeckButton;
private var _signalling:Boolean;
private var timerActivated:Boolean;
private var budgetBarArea:MovieClip;
public var budgetRedBG:MovieClip;
private var currentTarget:Object;
private var _budget:Number;
public var resetButton:ResetButton;
private var _prevMaterial:Number;
private var _mode:Number;
public var zoomInButtonObject:ZoomInButton;
public var budgetBar:MovieClip;
public var pauseBtn:SimpleButton;
public var zoomOutButton:ZoomOutButton;
public var zoomInButton:ZoomInButton;
private var _material:Number;
private var _signalCount:Number;
private var _counter:Number;
private var timerCount:int;
private var pauseButton:SimpleButton;
public var ropeButton:RopeButton;
public var steelButton:SteelButton;
public var editButton:EditButton;
public function HUD(){
_currentBudget = 0;
_budget = 0;
material = -1;
_prevMaterial = -1;
mode = -1;
(budgetText as TextField).mouseEnabled = false;
_signalling = false;
this["budgetRedBG"].visible = false;
zoomInButton = this["zoomInButtonObject"];
zoomOutButton = this["zoomOutButtonObject"];
this.pauseButton = this["pauseBtn"];
this.pauseButton.addEventListener(MouseEvent.CLICK, onPauseHandler, false, 0, true);
this.pauseButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.pauseButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function onDeckHandler(_arg1:Event):void{
this.steelButton.reset();
this.ropeButton.reset();
}
private function onStartHandler(_arg1:Event):void{
mode = Config.MODE_EMULATION;
}
private function startTimer():void{
if (this.timerActivated){
return;
};
this.timerCount = 0;
this.timerActivated = true;
this.addEventListener(Event.ENTER_FRAME, timerCounter, false, 0, true);
}
private function enterFrameHandler(_arg1:Event):void{
if (_currentBudget != _budget){
_budget = (_budget + ((_currentBudget - _budget) / 3));
budgetText.text = Math.round(_budget).toString();
};
if (_signalling){
if (_counter == 0){
if (_signalCount == 0){
this["budgetRedBG"].visible = false;
_signalling = false;
} else {
if (!this["budgetRedBG"].visible){
this["budgetRedBG"].visible = true;
_signalCount--;
} else {
this["budgetRedBG"].visible = false;
};
};
};
_counter++;
if (_counter == 7){
_counter = 0;
};
};
}
private function onMusicHandler(_arg1:MouseEvent):void{
}
public function get material():Number{
return (_material);
}
public function get budget():Number{
return (_currentBudget);
}
private function onStressHandler(_arg1:MouseEvent):void{
}
private function stopTimer():void{
if (!this.timerActivated){
return;
};
this.removeEventListener(Event.ENTER_FRAME, timerCounter);
this.timerActivated = false;
}
public function set material(_arg1:Number):void{
if (_arg1 == Config.MATERIAL_DECK){
if (!this.steelButton.hidden){
this.steelButton.reset();
};
if (!this.ropeButton.hidden){
this.ropeButton.reset();
};
if (!this.deckButton.hidden){
this.deckButton.select();
};
} else {
if (_arg1 == Config.MATERIAL_STEEL){
if (!this.deckButton.hidden){
this.deckButton.reset();
};
if (!this.ropeButton.hidden){
this.ropeButton.reset();
};
if (!this.steelButton.hidden){
this.steelButton.select();
};
} else {
if (_arg1 == Config.MATERIAL_ROPE){
if (!this.deckButton.hidden){
this.deckButton.reset();
};
if (!this.steelButton.hidden){
this.steelButton.reset();
};
if (!this.ropeButton.hidden){
this.ropeButton.select();
};
} else {
if (_arg1 == -1){
this.deckButton.hide();
this.steelButton.hide();
this.ropeButton.hide();
} else {
return;
};
};
};
};
_prevMaterial = _material;
_material = _arg1;
}
private function onUndoHandler(_arg1:MouseEvent):void{
}
public function set mode(_arg1:Number):void{
if (_mode == _arg1){
return;
};
if (_arg1 == Config.MODE_BUILDING){
this.startButton.reset();
this.editButton.hide();
this.deckButton.reset();
this.steelButton.reset();
this.ropeButton.reset();
if (!hasEventListener(Config.EVENT_START)){
addEventListener(Config.EVENT_START, onStartHandler);
};
if (hasEventListener(Config.EVENT_EDIT)){
removeEventListener(Config.EVENT_START, onEditHandler);
};
if (!hasEventListener(Config.EVENT_DECK)){
addEventListener(Config.EVENT_DECK, onDeckHandler);
};
if (!hasEventListener(Config.EVENT_STEEL)){
addEventListener(Config.EVENT_STEEL, onSteelHandler);
};
if (!hasEventListener(Config.EVENT_ROPE)){
addEventListener(Config.EVENT_ROPE, onRopeHandler);
};
this.undoButton.reset();
if (_prevMaterial == -1){
material = Config.MATERIAL_DECK;
} else {
material = _prevMaterial;
};
} else {
if (_arg1 == Config.MODE_EMULATION){
this.startButton.hide();
this.editButton.reset();
this.stressButton.show();
if (hasEventListener(Config.EVENT_START)){
removeEventListener(Config.EVENT_START, onStartHandler);
};
if (!hasEventListener(Config.EVENT_EDIT)){
addEventListener(Config.EVENT_EDIT, onEditHandler);
};
if (hasEventListener(Config.EVENT_DECK)){
removeEventListener(Config.EVENT_DECK, onDeckHandler);
};
if (hasEventListener(Config.EVENT_STEEL)){
removeEventListener(Config.EVENT_STEEL, onSteelHandler);
};
if (hasEventListener(Config.EVENT_ROPE)){
removeEventListener(Config.EVENT_ROPE, onRopeHandler);
};
this.undoButton.hide();
material = -1;
this.deckButton.hide();
this.steelButton.hide();
this.ropeButton.hide();
} else {
if (_arg1 == -1){
if (_mode == Config.MODE_BUILDING){
this.startButton.hide(false);
this.editButton.hide(true);
} else {
if (_mode == Config.MODE_EMULATION){
this.startButton.hide(true);
this.editButton.hide(false);
};
};
this.deckButton.hide();
this.steelButton.hide();
this.ropeButton.hide();
if (hasEventListener(Config.EVENT_START)){
removeEventListener(Config.EVENT_START, onStartHandler);
};
if (hasEventListener(Config.EVENT_EDIT)){
removeEventListener(Config.EVENT_START, onStartHandler);
};
if (!hasEventListener(Config.EVENT_DECK)){
addEventListener(Config.EVENT_DECK, onDeckHandler);
};
if (!hasEventListener(Config.EVENT_STEEL)){
addEventListener(Config.EVENT_STEEL, onSteelHandler);
};
if (!hasEventListener(Config.EVENT_ROPE)){
addEventListener(Config.EVENT_ROPE, onRopeHandler);
};
} else {
return;
};
};
};
_mode = _arg1;
}
public function set budget(_arg1:Number):void{
_currentBudget = _arg1;
}
private function onSteelHandler(_arg1:Event):void{
this.deckButton.reset();
this.ropeButton.reset();
}
private function onEditHandler(_arg1:Event):void{
mode = Config.MODE_BUILDING;
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
stopTimer();
this.currentTarget = null;
}
public function cleanup():void{
if (hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
if (hasEventListener(Config.EVENT_DECK)){
removeEventListener(Config.EVENT_DECK, onDeckHandler);
};
if (hasEventListener(Config.EVENT_STEEL)){
removeEventListener(Config.EVENT_STEEL, onSteelHandler);
};
if (hasEventListener(Config.EVENT_ROPE)){
removeEventListener(Config.EVENT_ROPE, onRopeHandler);
};
if (hasEventListener(Config.EVENT_START)){
removeEventListener(Config.EVENT_START, onStartHandler);
};
if (hasEventListener(Config.EVENT_EDIT)){
removeEventListener(Config.EVENT_START, onStartHandler);
};
this.pauseButton.removeEventListener(MouseEvent.CLICK, onPauseHandler);
this.pauseButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.pauseButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
stopTimer();
}
private function onRopeHandler(_arg1:Event):void{
this.deckButton.reset();
this.steelButton.reset();
}
public function budgetSignalling():void{
_signalling = true;
_signalCount = 2;
_counter = 0;
}
private function onSoundsHandler(_arg1:MouseEvent):void{
}
private function onResetHandler(_arg1:MouseEvent):void{
}
private function mouseOverHandler(_arg1:MouseEvent):void{
if (_arg1.target != this.budgetBarArea){
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
};
if ((((_arg1.target == this.pauseButton)) || ((_arg1.target == this.budgetBarArea)))){
this.currentTarget = _arg1.target;
this.startTimer();
};
}
private function timerCounter(_arg1:Event):void{
if (!this.timerActivated){
return;
};
this.timerCount++;
if (this.timerCount >= Config.TIP_TIMER_COUNT){
this.stopTimer();
if (this.currentTarget == this.pauseButton){
this.dispatchEvent(new Event(Config.EVENT_TIP_PAUSE, true));
};
if (this.currentTarget == this.budgetBarArea){
this.dispatchEvent(new Event(Config.EVENT_TIP_BUDGET, true));
};
};
}
private function onPauseHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_HOME, true));
_arg1.stopPropagation();
}
}
}//package hud
Section 197
//MaterialButton (hud.MaterialButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class MaterialButton extends MovieClip {
private var _selected:Boolean;
private var timerActivated:Boolean;
private var _backward:Boolean;
private var _eventString:String;
private var _hidden:Boolean;
private var timerCount:int;
public function MaterialButton(_arg1:String=""){
stop();
buttonMode = true;
useHandCursor = true;
_selected = false;
_backward = false;
_hidden = false;
_eventString = _arg1;
if (!hasEventListener(MouseEvent.MOUSE_OVER)){
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!hasEventListener(MouseEvent.MOUSE_OUT)){
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
if (((!(_selected)) && (!(_hidden)))){
gotoAndStop(2);
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
};
}
private function timerCounter(_arg1:Event):void{
if (!this.timerActivated){
return;
};
this.timerCount++;
if (this.timerCount >= Config.TIP_TIMER_COUNT){
this.stopTimer();
if (_eventString == Config.EVENT_DECK){
this.dispatchEvent(new Event(Config.EVENT_TIP_DECK, true));
};
if (_eventString == Config.EVENT_STEEL){
this.dispatchEvent(new Event(Config.EVENT_TIP_STEEL, true));
};
if (_eventString == Config.EVENT_ROPE){
this.dispatchEvent(new Event(Config.EVENT_TIP_ROPE, true));
};
};
}
public function select(_arg1:Boolean=true):void{
if (hasEventListener(MouseEvent.CLICK)){
removeEventListener(MouseEvent.CLICK, clickHandler);
};
_selected = true;
this.gotoAndStop(3);
}
private function startTimer():void{
if (this.timerActivated){
return;
};
this.timerCount = 0;
this.timerActivated = true;
this.addEventListener(Event.ENTER_FRAME, timerCounter, false, 0, true);
}
private function enterFrameHandler(_arg1:Event):void{
if (_backward){
if (currentFrame == 3){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
gotoAndStop((currentFrame - 1));
} else {
if (currentFrame == totalFrames){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
gotoAndStop((currentFrame + 1));
};
}
private function playBackward():void{
gotoAndStop(totalFrames);
_backward = true;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function stopTimer():void{
if (!this.timerActivated){
return;
};
this.removeEventListener(Event.ENTER_FRAME, timerCounter);
this.timerActivated = false;
}
public function reset():void{
if (hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
if (!hasEventListener(MouseEvent.CLICK)){
addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
};
alpha = 1;
_selected = false;
_hidden = false;
gotoAndStop(1);
}
private function mouseOutHandler(_arg1:MouseEvent):void{
if (((!(_selected)) && (!(_hidden)))){
gotoAndStop(1);
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
}
private function clickHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(_eventString, true));
select();
_arg1.stopPropagation();
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function get hidden():Boolean{
return (_hidden);
}
public function hide():void{
if (hasEventListener(MouseEvent.CLICK)){
removeEventListener(MouseEvent.CLICK, clickHandler);
};
alpha = 0.3;
_hidden = true;
this.gotoAndStop(1);
}
private function playForward():void{
gotoAndStop(3);
_backward = false;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
}
}//package hud
Section 198
//MusicButton (hud.MusicButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class MusicButton extends MovieClip {
private var _switched:Boolean;
public function MusicButton(){
buttonMode = true;
useHandCursor = true;
switchOn();
addEventListener(MouseEvent.CLICK, clickHandler);
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
public function switchOn(_arg1:Boolean=false):void{
if (_arg1){
gotoAndStop(2);
} else {
gotoAndStop(1);
};
_switched = true;
}
private function mouseOutHandler(_arg1:MouseEvent):void{
if (_switched){
gotoAndStop(1);
} else {
gotoAndStop(3);
};
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickHandler(_arg1:MouseEvent):void{
if (_switched){
switchOff(true);
} else {
switchOn(true);
};
dispatchEvent(new Event(Config.EVENT_MUSIC, true));
_arg1.stopPropagation();
}
public function switchOff(_arg1:Boolean=false):void{
if (_arg1){
gotoAndStop(4);
} else {
gotoAndStop(3);
};
_switched = false;
}
private function mouseOverHandler(_arg1:MouseEvent):void{
if (_switched){
gotoAndStop(2);
} else {
gotoAndStop(4);
};
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package hud
Section 199
//QualityButton (hud.QualityButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.text.*;
public dynamic class QualityButton extends MovieClip {
public var letterTF:TextField;
private var letterTextField:TextField;
public function QualityButton(){
this.stop();
this.letterTextField = this["letterTF"];
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
}
private function mouseUpHandler(_arg1:MouseEvent):void{
this.gotoAndStop(1);
}
private function mouseDownHandler(_arg1:MouseEvent):void{
this.gotoAndStop(3);
}
public function setLetter():void{
if (this.stage == null){
return;
};
if (this.letterTextField == null){
return;
};
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
if (this.stage.quality == "BEST"){
this.letterTextField.text = "B";
};
if (this.stage.quality == "HIGH"){
this.letterTextField.text = "H";
};
if (this.stage.quality == "MEDIUM"){
this.letterTextField.text = "M";
};
if (this.stage.quality == "LOW"){
this.letterTextField.text = "L";
};
} else {
if (this.stage.quality == "BEST"){
this.letterTextField.text = "B";
};
if (this.stage.quality == "HIGH"){
this.letterTextField.text = "B";
};
if (this.stage.quality == "MEDIUM"){
this.letterTextField.text = "C";
};
if (this.stage.quality == "LOW"){
this.letterTextField.text = "H";
};
};
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.gotoAndStop(1);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.gotoAndStop(2);
}
}
}//package hud
Section 200
//ResetButton (hud.ResetButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class ResetButton extends SimpleButton {
private var timerActivated:Boolean;
private var _hidden:Boolean;
private var timerCount:int;
public function ResetButton(){
reset();
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
}
private function startTimer():void{
if (this.timerActivated){
return;
};
this.timerCount = 0;
this.timerActivated = true;
this.addEventListener(Event.ENTER_FRAME, timerCounter, false, 0, true);
}
public function reset():void{
alpha = 1;
enabled = true;
_hidden = false;
addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
}
private function stopTimer():void{
if (!this.timerActivated){
return;
};
this.removeEventListener(Event.ENTER_FRAME, timerCounter);
this.timerActivated = false;
}
public function hide():void{
_hidden = true;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
alpha = 0.3;
enabled = false;
removeEventListener(MouseEvent.CLICK, clickHandler);
}
private function mouseOutHandler(_arg1:MouseEvent):void{
if (!_hidden){
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
this.stopTimer();
}
private function clickHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_RESET, true));
_arg1.stopPropagation();
}
private function mouseOverHandler(_arg1:MouseEvent):void{
if (!_hidden){
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
};
this.startTimer();
}
private function timerCounter(_arg1:Event):void{
if (!this.timerActivated){
return;
};
this.timerCount++;
if (this.timerCount >= Config.TIP_TIMER_COUNT){
this.stopTimer();
this.dispatchEvent(new Event(Config.EVENT_TIP_RESET, true));
};
}
}
}//package hud
Section 201
//RopeButton (hud.RopeButton)
package hud {
import core.*;
public class RopeButton extends MaterialButton {
public function RopeButton(){
super(Config.EVENT_ROPE);
}
}
}//package hud
Section 202
//SoundPanel (hud.SoundPanel)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
import picaso.*;
import sounds.*;
import picaso.templates.*;
public dynamic class SoundPanel extends SpriteAdvanced {
private var _musicBar:VolumeBar;
public var qualityButton:QualityButton;
public var testersBtn:SimpleButton;
private var _mouseDown:Boolean;// = false
public var soundsBtn:SoundsButton;
private var testersPopUp:TestersPopUp;
private var currentQuality:int;// = -1
private var _soundsBar:VolumeBar;
public var qualityBtn:QualityButton;
private var testersButton:SimpleButton;
public var musicBtn:MusicButton;
public function SoundPanel(){
_mouseDown = false;
currentQuality = -1;
super();
this["musicBtn"].addEventListener(MouseEvent.MOUSE_OVER, musicBtn_mouseOverHandler, false, 0, true);
this["soundsBtn"].addEventListener(MouseEvent.MOUSE_OVER, soundsBtn_mouseOverHandler, false, 0, true);
_musicBar = new VolumeBar("VolumeBarGFX");
_musicBar.alpha = 0;
_musicBar.x = this["musicBtn"].x;
_musicBar.y = (this["musicBtn"].y - 19);
_musicBar.rotation = -90;
_musicBar.volume = 0.75;
_soundsBar = new VolumeBar("VolumeBarGFX");
_soundsBar.alpha = 0;
_soundsBar.x = this["soundsBtn"].x;
_soundsBar.y = (this["soundsBtn"].y - 19);
_soundsBar.rotation = -90;
_soundsBar.volume = 0.75;
this.addChildAt(_musicBar, 0);
this.addChildAt(_soundsBar, 0);
_musicBar.visible = false;
_soundsBar.visible = false;
this.qualityButton = this["qualityBtn"];
this.qualityButton.addEventListener(MouseEvent.CLICK, onQuality, false, 0, true);
this.qualityButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.qualityButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.testersButton = this["testersBtn"];
this.testersButton.visible = false;
}
private function soundsBtn_mouseOverHandler(_arg1:MouseEvent):void{
_soundsBar.visible = true;
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener, false, 0, true);
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:Boolean;
var _local3:Boolean;
if (!_mouseDown){
if (_musicBar.visible){
_local2 = _musicBar.getBounds(this).contains(this.mouseX, this.mouseY);
_local3 = this["musicBtn"].getBounds(this).contains(this.mouseX, this.mouseY);
if (((!(_local2)) && (!(_local3)))){
if (_musicBar.alpha > 0.1){
_musicBar.alpha = (_musicBar.alpha - 0.1);
} else {
_musicBar.visible = false;
};
} else {
if (_musicBar.alpha < 1){
_musicBar.alpha = (_musicBar.alpha + 0.1);
};
};
};
if (_soundsBar.visible){
_local2 = _soundsBar.getBounds(this).contains(this.mouseX, this.mouseY);
_local3 = this["soundsBtn"].getBounds(this).contains(this.mouseX, this.mouseY);
if (((!(_local2)) && (!(_local3)))){
if (_soundsBar.alpha > 0.1){
_soundsBar.alpha = (_soundsBar.alpha - 0.1);
} else {
_soundsBar.visible = false;
};
} else {
if (_soundsBar.alpha < 1){
_soundsBar.alpha = (_soundsBar.alpha + 0.1);
};
};
};
if (((!(_musicBar.visible)) && (!(_soundsBar.visible)))){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
this.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
};
};
SoundManager.setChannelVolume(SoundData.MUSIC_CHANNELS, _musicBar.volume);
SoundManager.setChannelVolume(SoundData.SOUND_CHANNELS, _soundsBar.volume);
}
private function onQuality(_arg1:MouseEvent):void{
if (this.stage == null){
return;
};
if (this.currentQuality == -1){
if (this.stage.quality == "BEST"){
this.currentQuality = 0;
} else {
if (this.stage.quality == "HIGH"){
this.currentQuality = 1;
} else {
if (this.stage.quality == "MEDIUM"){
this.currentQuality = 2;
} else {
this.currentQuality = 3;
};
};
};
};
this.currentQuality++;
if (this.currentQuality == 4){
this.currentQuality = 1;
};
if (this.currentQuality == 0){
this.stage.quality = "BEST";
} else {
if (this.currentQuality == 1){
this.stage.quality = "HIGH";
} else {
if (this.currentQuality == 2){
this.stage.quality = "MEDIUM";
} else {
this.stage.quality = "LOW";
};
};
};
this.qualityButton.setLetter();
GAManager.trackPage(("/quality-changed-to-" + this.stage.quality));
}
private function musicBtn_mouseOverHandler(_arg1:MouseEvent):void{
_musicBar.visible = true;
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener, false, 0, true);
}
private function onTestersButton(_arg1:MouseEvent):void{
if (this.testersPopUp != null){
return;
};
this.testersPopUp = new TestersPopUp();
this.testersPopUp.x = (-(Config.SCREEN_WIDTH) / 2);
this.testersPopUp.y = (-(Config.SCREEN_HEIGHT) / 2);
this.testersPopUp.addEventListener(TestersPopUp.ON_OK, onCloseTestersPopUp, false, 0, true);
this.testersPopUp.addEventListener(TestersPopUp.ON_RESET, onTestersPopUpReset, false, 0, true);
this.addChild(testersPopUp);
this.dispatchEvent(new Event(TestersPopUp.ON_READY, true));
}
private function stage_mouseUpHandler(_arg1:MouseEvent):void{
_mouseDown = false;
stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler);
}
private function onTestersPopUpReset(_arg1:Event):void{
if (this.testersPopUp == null){
return;
};
this.testersPopUp.removeEventListener(TestersPopUp.ON_OK, onCloseTestersPopUp);
this.testersPopUp.removeEventListener(TestersPopUp.ON_RESET, onTestersPopUpReset);
this.removeChild(this.testersPopUp);
this.testersPopUp.cleanup();
this.testersPopUp = null;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.dispatchEvent(new Event(TestersPopUp.ON_CLOSED, true));
this.dispatchEvent(new Event(TestersPopUp.RESET_ALL, true));
}
private function onCloseTestersPopUp(_arg1:Event):void{
this.testersPopUp.removeEventListener(TestersPopUp.ON_OK, onCloseTestersPopUp);
this.testersPopUp.removeEventListener(TestersPopUp.ON_RESET, onTestersPopUpReset);
this.removeChild(this.testersPopUp);
this.testersPopUp.cleanup();
this.testersPopUp = null;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.dispatchEvent(new Event(TestersPopUp.ON_CLOSED, true));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function mouseDownListener(_arg1:MouseEvent):void{
_mouseDown = true;
stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler, false, 0, true);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package hud
Section 203
//SoundsButton (hud.SoundsButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class SoundsButton extends MovieClip {
private var _switched:Boolean;
public function SoundsButton(){
buttonMode = true;
useHandCursor = true;
switchOn();
addEventListener(MouseEvent.CLICK, clickHandler);
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
public function switchOn(_arg1:Boolean=false):void{
if (_arg1){
gotoAndStop(2);
} else {
gotoAndStop(1);
};
_switched = true;
}
private function mouseOutHandler(_arg1:MouseEvent):void{
if (_switched){
gotoAndStop(1);
} else {
gotoAndStop(3);
};
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickHandler(_arg1:MouseEvent):void{
if (_switched){
switchOff(true);
} else {
switchOn(true);
};
dispatchEvent(new Event(Config.EVENT_SOUNDS, true));
}
public function switchOff(_arg1:Boolean=false):void{
if (_arg1){
gotoAndStop(4);
} else {
gotoAndStop(3);
};
_switched = false;
}
private function mouseOverHandler(_arg1:MouseEvent):void{
if (_switched){
gotoAndStop(2);
} else {
gotoAndStop(4);
};
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package hud
Section 204
//StartButton (hud.StartButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class StartButton extends SimpleButton {
private var timerActivated:Boolean;
private var _hidden:Boolean;
private var timerCount:int;
public function StartButton(){
reset();
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
private function startTimer():void{
if (this.timerActivated){
return;
};
this.timerCount = 0;
this.timerActivated = true;
this.addEventListener(Event.ENTER_FRAME, timerCounter, false, 0, true);
}
public function reset():void{
if (visible){
alpha = 1;
} else {
visible = true;
};
enabled = true;
if (!hasEventListener(MouseEvent.CLICK)){
addEventListener(MouseEvent.CLICK, clickHandler);
};
}
private function stopTimer():void{
if (!this.timerActivated){
return;
};
this.removeEventListener(Event.ENTER_FRAME, timerCounter);
this.timerActivated = false;
}
public function hide(_arg1:Boolean=true):void{
if (hasEventListener(MouseEvent.CLICK)){
removeEventListener(MouseEvent.CLICK, clickHandler);
};
enabled = false;
if (!_arg1){
alpha = 0.3;
} else {
visible = false;
};
}
private function mouseOutHandler(_arg1:MouseEvent):void{
if (!enabled){
return;
};
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.stopTimer();
}
private function clickHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_START, true));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
if (!enabled){
return;
};
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
this.startTimer();
}
private function timerCounter(_arg1:Event):void{
if (!this.timerActivated){
return;
};
this.timerCount++;
if (this.timerCount >= Config.TIP_TIMER_COUNT){
this.stopTimer();
this.dispatchEvent(new Event(Config.EVENT_TIP_START, true));
};
}
}
}//package hud
Section 205
//SteelButton (hud.SteelButton)
package hud {
import core.*;
public class SteelButton extends MaterialButton {
public function SteelButton(){
super(Config.EVENT_STEEL);
}
}
}//package hud
Section 206
//StressButton (hud.StressButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class StressButton extends MovieClip {
private var timerActivated:Boolean;
private var _switched:Boolean;
private var timerCount:int;
public function StressButton(){
buttonMode = true;
useHandCursor = true;
_switched = false;
reset();
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
}
private function timerCounter(_arg1:Event):void{
if (!this.timerActivated){
return;
};
this.timerCount++;
if (this.timerCount >= Config.TIP_TIMER_COUNT){
this.stopTimer();
this.dispatchEvent(new Event(Config.EVENT_TIP_STRESS, true));
};
}
private function startTimer():void{
if (this.timerActivated){
return;
};
this.timerCount = 0;
this.timerActivated = true;
this.addEventListener(Event.ENTER_FRAME, timerCounter, false, 0, true);
}
private function stopTimer():void{
if (!this.timerActivated){
return;
};
this.removeEventListener(Event.ENTER_FRAME, timerCounter);
this.timerActivated = false;
}
public function reset():void{
if (_switched){
switchOn();
} else {
switchOff();
};
alpha = 1;
if (!hasEventListener(MouseEvent.CLICK)){
addEventListener(MouseEvent.CLICK, clickHanlder, false, 0, true);
};
}
public function hide():void{
alpha = 0.3;
if (hasEventListener(MouseEvent.CLICK)){
removeEventListener(MouseEvent.CLICK, clickHanlder);
};
}
public function switchOn():void{
gotoAndStop(2);
_switched = true;
}
private function clickHanlder(_arg1:MouseEvent):void{
if (_switched){
switchOff();
} else {
switchOn();
};
if (this.alpha == 1){
dispatchEvent(new Event(Config.EVENT_STRESS, true));
};
}
private function mouseOutHandler(_arg1:MouseEvent):void{
if (this.alpha == 1){
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
this.stopTimer();
}
public function switchOff():void{
gotoAndStop(1);
_switched = false;
}
private function mouseOverHandler(_arg1:MouseEvent):void{
if (this.alpha == 1){
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
};
this.startTimer();
}
public function show():void{
alpha = 1;
if (!hasEventListener(MouseEvent.CLICK)){
addEventListener(MouseEvent.CLICK, clickHanlder, false, 0, true);
};
}
}
}//package hud
Section 207
//UndoButton (hud.UndoButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class UndoButton extends SimpleButton {
private var timerActivated:Boolean;
private var _hidden:Boolean;
private var timerCount:int;
public function UndoButton(){
reset();
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
}
private function startTimer():void{
if (this.timerActivated){
return;
};
this.timerCount = 0;
this.timerActivated = true;
this.addEventListener(Event.ENTER_FRAME, timerCounter, false, 0, true);
}
public function reset():void{
alpha = 1;
enabled = true;
_hidden = false;
addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
}
private function stopTimer():void{
if (!this.timerActivated){
return;
};
this.removeEventListener(Event.ENTER_FRAME, timerCounter);
this.timerActivated = false;
}
public function hide():void{
_hidden = true;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
alpha = 0.3;
enabled = false;
removeEventListener(MouseEvent.CLICK, clickHandler);
}
private function mouseOutHandler(_arg1:MouseEvent):void{
if (!_hidden){
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
this.stopTimer();
}
private function clickHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_UNDO, true));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
if (!_hidden){
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
};
this.startTimer();
}
private function timerCounter(_arg1:Event):void{
if (!this.timerActivated){
return;
};
this.timerCount++;
if (this.timerCount >= Config.TIP_TIMER_COUNT){
this.stopTimer();
this.dispatchEvent(new Event(Config.EVENT_TIP_UNDO, true));
};
}
}
}//package hud
Section 208
//ZoomInButton (hud.ZoomInButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class ZoomInButton extends SimpleButton {
public function ZoomInButton(){
setListeners();
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
}
public function set active(_arg1:Boolean):void{
if (_arg1 == this.enabled){
return;
};
if (_arg1){
this.alpha = 1;
setListeners();
} else {
this.alpha = 0.7;
cleanup();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
this.enabled = _arg1;
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_ZOOM_IN, true));
_arg1.stopPropagation();
}
public function cleanup():void{
if (this.hasEventListener(MouseEvent.CLICK)){
this.removeEventListener(MouseEvent.CLICK, clickHandler);
};
if (this.hasEventListener(MouseEvent.MOUSE_OVER)){
this.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.hasEventListener(MouseEvent.MOUSE_OUT)){
this.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
}
public function get active():Boolean{
return (this.enabled);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function setListeners():void{
if (!this.hasEventListener(MouseEvent.CLICK)){
this.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
};
if (!this.hasEventListener(MouseEvent.MOUSE_OVER)){
this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.hasEventListener(MouseEvent.MOUSE_OUT)){
this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
}
}
}//package hud
Section 209
//ZoomOutButton (hud.ZoomOutButton)
package hud {
import flash.display.*;
import core.*;
import flash.events.*;
public class ZoomOutButton extends SimpleButton {
public function ZoomOutButton(){
setListeners();
}
public function set active(_arg1:Boolean):void{
if (_arg1 == this.enabled){
return;
};
if (_arg1){
this.alpha = 1;
setListeners();
} else {
this.alpha = 0.7;
cleanup();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
this.enabled = _arg1;
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_ZOOM_OUT, true));
_arg1.stopPropagation();
}
public function cleanup():void{
if (this.hasEventListener(MouseEvent.CLICK)){
this.removeEventListener(MouseEvent.CLICK, clickHandler);
};
if (this.hasEventListener(MouseEvent.MOUSE_OVER)){
this.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.hasEventListener(MouseEvent.MOUSE_OUT)){
this.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
}
public function get active():Boolean{
return (this.enabled);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function setListeners():void{
if (!this.hasEventListener(MouseEvent.CLICK)){
this.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true);
};
if (!this.hasEventListener(MouseEvent.MOUSE_OVER)){
this.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.hasEventListener(MouseEvent.MOUSE_OUT)){
this.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
}
}
}//package hud
Section 210
//wav (intro_slide1.wav)
package intro_slide1 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package intro_slide1
Section 211
//wav (intro_slide2.wav)
package intro_slide2 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package intro_slide2
Section 212
//wav (intro_slide3.wav)
package intro_slide3 {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package intro_slide3
Section 213
//Level00 (levels.Level00)
package levels {
import flash.events.*;
import flash.net.*;
public class Level00 extends LevelManager {
private var loader:URLLoader;
private var xml:XML;
private var request:URLRequest;
private var level:int;
public function init(_arg1:int):void{
var str:String;
var levelNumber = _arg1;
str = "Level.xml";
this.loader = new URLLoader();
this.request = new URLRequest(str);
this.level = levelNumber;
try {
this.loader.load(this.request);
this.loader.addEventListener(Event.COMPLETE, onCompleteHandler);
} catch(error:Error) {
trace("Unable to load requested document", str);
};
}
private function onCompleteHandler(_arg1:Event):void{
var _local2:URLLoader;
var _local3:LevelData;
this.loader.removeEventListener(Event.COMPLETE, onCompleteHandler);
_local2 = (_arg1.target as URLLoader);
if (_local2 != null){
this.xml = new XML(_local2.data);
_local2.close();
_local3 = new LevelData(new XMLList(this.xml));
_local3.index = 0;
super.initLevel(_local3);
} else {
trace("Error while loading XML document");
};
}
}
}//package levels
Section 214
//Level01 (levels.Level01)
package levels {
import flash.display.*;
import flash.geom.*;
import core.*;
import flash.events.*;
import flash.net.*;
import vis.*;
import popup.*;
import characters.*;
public class Level01 extends LevelManager {
private var dotsBaloon:DotsBaloon;
private var so:SharedObject;
private var inputNamePopUp:BigPopUpInputName;
private var deckSamplesFound:Array;
private var tutorialDeckSprite:Sprite;
private var deckDirection:int;// = 0
private var timer:int;
private var tutorialArrow:TutorialArrow;
private var startEvent:Boolean;// = false
private var dotsDelay:int;// = -1
private var currentPhase:String;
private var solution:Object;
private var sampleMaterials:Array;
private var chudik:Protagonist;
public function Level01(){
deckDirection = 0;
dotsDelay = -1;
startEvent = false;
super();
}
private function phase1(_arg1:Event):void{
this.chudik.removeEventListener(Protagonist.EVENT_FINISH_ACTION, phase1);
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
_layerEngine.addChild(this.phraseBaloon);
this.phraseBaloon.type = TalkBaloon.TYPE_NEXT;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "My home sweet home is so far away! I’ll need to get to the other land bank! The water is so cold and I'm afraid of drowning. Maybe it would be possible to build a bridge?";
} else {
this.phraseBaloon.text = "Дом, как же далеко ты от меня! Ох, мне нужно как-то перебраться на другую сторону! Но вода такая холодная, я боюсь утонуть. Возможно, если получится построить мост...";
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase3, false, 0, true);
this.phraseBaloon.show();
}
private function phase4(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase4);
this.chudik.addEventListener(Protagonist.EVENT_FINISH_ACTION, phase5, false, 0, true);
this.chudik.turn(Protagonist.TURN_FROM_LEFT_TO_PLAYER, true);
}
private function introduction():void{
this.setTutorialMode();
if (this.islandText){
this.addEventListener(Event.ENTER_FRAME, waitToIslandText, false, 0, true);
return;
};
this.chudik.manualMode = true;
this.chudik.addEventListener(Protagonist.EVENT_FINISH_ACTION, phase1, false, 0, true);
this.chudik.turn(Protagonist.TURN_LEFT, true);
}
private function phase7(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase7);
this.inputNamePopUp = new BigPopUpInputName();
this.inputNamePopUp.x = (Config.SCREEN_WIDTH / 2);
this.inputNamePopUp.y = (Config.SCREEN_HEIGHT / 2);
this.inputNamePopUp.inputName.text = this.playerName;
this.addChild(this.inputNamePopUp);
this.inputNamePopUp.addEventListener(BigPopUpInputName.EVENT_OK, phase8, false, 0, true);
this.inputNamePopUp.show();
}
private function phase8(_arg1:Event):void{
this.inputNamePopUp.removeEventListener(BigPopUpInputName.EVENT_OK, phase8);
if (this.inputNamePopUp.inputName.text.length > 0){
this.playerName = this.inputNamePopUp.inputName.text;
};
this.inputNamePopUp.addEventListener(BigPopUpInputName.EVENT_HIDDEN, phase9, false, 0, true);
this.inputNamePopUp.hide();
so = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (so.size != 0){
so.data.nameIsEntered = true;
};
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function phase9(_arg1:Event):void{
this.inputNamePopUp.addEventListener(BigPopUpInputName.EVENT_HIDDEN, phase9);
this.inputNamePopUp.cleanup();
this.removeChild(this.inputNamePopUp);
this.inputNamePopUp = null;
this.phraseBaloon.show();
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = (("Nice to meet you, " + this.playerName) + "! I'm Crabi. Can you help me get home? I can't build a bridge for myself so I’ll need your help.");
} else {
this.phraseBaloon.text = (("Приятно познакомиться, " + this.playerName) + "! Меня зовут Краби. Вы поможете мне добраться домой? Я не могу построить мост своими силами, поэтому мне нужна ваша помощь.");
};
if (so.data.introducedHeroes.indexOf("Glazan") == -1){
so.data.introducedHeroes.push("Glazan");
so.flush();
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase10, false, 0, true);
}
private function phase6(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase6);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase7, false, 0, true);
this.phraseBaloon.hide();
}
private function phase3(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase3);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase4, false, 0, true);
this.phraseBaloon.hide();
}
private function phase5(_arg1:Event):void{
this.chudik.removeEventListener(Protagonist.EVENT_FINISH_ACTION, phase5);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Oh, who are you?";
} else {
this.phraseBaloon.text = "Ой, кто вы?";
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase6, false, 0, true);
this.phraseBaloon.show();
}
private function overDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function outDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function phase20a(_arg1:Event):void{
this.removeEventListener(Config.EVENT_START, phase20a);
if (this.dotsBaloon.hasEventListener(DotsBaloon.EVENT_SHOWED)){
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.CLICK)){
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OVER)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OUT)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
};
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21a, false, 0, true);
this.dotsBaloon.hide();
}
private function phase18aa(_arg1:Event):void{
var _local2:Boolean;
var _local3:int;
if (!this.dotsBaloon){
return;
};
if (!_protagonists){
if (this.dotsBaloon){
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
};
return;
};
_local2 = false;
_local3 = 0;
while (_local3 < _protagonists.length) {
if ((_protagonists[_local3] as Protagonist).currentAction == Protagonist.JUMP){
_local2 = true;
break;
};
_local3++;
};
if (_local2){
this.dotsBaloon.hide();
} else {
this.dotsBaloon.show();
};
}
private function phase21a(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21a);
this.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.phase18a();
}
private function phase10(_arg1:Event=null):void{
if (_arg1){
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase10);
this.chudik.manualMode = false;
};
if (!this.tutorialMode){
this.setTutorialMode();
};
if (!this.phraseBaloon){
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
_layerEngine.addChild(this.phraseBaloon);
this.phraseBaloon.show();
};
this.phraseBaloon.type = TalkBaloon.TYPE_YES_NO;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "My friends and I can tell you how to build bridges. Do you want me to help you?";
} else {
this.phraseBaloon.text = "Рассказать вам, как правильно строить мосты?";
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_YES, phase11a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NO, phase11b, false, 0, true);
}
private function phase13(_arg1:MouseEvent):void{
this.currentPhase = "13";
this.blockConnect = true;
this.blockDelete = true;
if (((!((_pointer.x == 160))) || (!((_pointer.y == 300))))){
return;
};
if (this.tutorialArrow){
this.tutorialArrow.x = 280;
};
}
private function phase14(_arg1:Event):void{
this.currentPhase = "14";
if (((!((_pointer.x == 280))) || (!((_pointer.y == 300))))){
this.tutorialArrow.x = 180;
return;
};
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase13);
this.removeEventListener(MouseEvent.MOUSE_UP, phase14);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "And now another one...";
} else {
this.phraseBaloon.text = "А теперь - еще один, чтобы получился мост.";
};
this.tutorialDeckSprite.x = (this.tutorialDeckSprite.x + 120);
tutorialDeckSprite.alpha = 0.5;
if (this.tutorialArrow){
tutorialArrow.x = (tutorialArrow.x + 60);
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase15, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase16, false, 0, true);
}
private function phase15(_arg1:MouseEvent):void{
this.currentPhase = "15";
this.blockConnect = true;
this.blockDelete = true;
if ((((_pointer.x == 280)) && ((_pointer.y == 300)))){
deckDirection = 1;
} else {
if ((((_pointer.x == 400)) && ((_pointer.y == 300)))){
deckDirection = -1;
} else {
return;
};
};
}
private function phase16(_arg1:MouseEvent):void{
this.currentPhase = "16";
if (deckDirection == 1){
if (((!((_pointer.x == 400))) || (!((_pointer.y == 300))))){
return;
};
} else {
if (deckDirection == -1){
if (((!((_pointer.x == 280))) || (!((_pointer.y == 300))))){
return;
};
} else {
return;
};
};
this.addEventListener(Config.EVENT_CONNECT_POINTS, phase16a, false, 0, true);
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase15);
this.removeEventListener(MouseEvent.MOUSE_UP, phase16);
this._layerEngine.removeChild(this.tutorialDeckSprite);
this.tutorialDeckSprite = null;
}
private function phase17(_arg1:Event):void{
var _local2:SharedObject;
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase17);
if (this.currentPhase == "11a"){
this._hud.deckButton.removeEventListener(MouseEvent.CLICK, phase12);
} else {
if ((((this.currentPhase == "12a")) || ((this.currentPhase == "14")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase13);
this.removeEventListener(MouseEvent.MOUSE_UP, phase14);
} else {
if ((((((this.currentPhase == "14")) || ((this.currentPhase == "15")))) || ((this.currentPhase == "16")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase15);
this.removeEventListener(MouseEvent.MOUSE_UP, phase16);
} else {
if (this.currentPhase == "16b"){
_hud.startButton.removeEventListener(Config.EVENT_START, phase17a);
};
};
};
};
if (this.tutorialDeckSprite){
this._layerEngine.removeChild(this.tutorialDeckSprite);
this.tutorialDeckSprite = null;
};
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase18, false, 0, true);
this.phraseBaloon.hide();
}
private function phase11a(_arg1:Event):void{
this.currentPhase = "11a";
this.blockDelete = false;
this.reset();
this.blockDelete = true;
_hud.undoButton.hide();
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_YES, phase11a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NO, phase11b);
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Let's start. First of all choose the deck material, I can walk on this.";
} else {
this.phraseBaloon.text = "Хорошо, начнем. Прежде всего, вам нужно выбрать деревянную балку. Это единственный материал, по которому можно ходить.";
};
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SKIP, phase17, false, 0, true);
this._hud.deckButton.reset();
this._hud.deckButton.addEventListener(MouseEvent.CLICK, phase12, false, 0, true);
tutorialArrow = new TutorialArrow();
tutorialArrow.x = 250;
tutorialArrow.y = 70;
tutorialArrow.rotation = -30;
this.addChild(tutorialArrow);
}
private function phase11b(_arg1:Event):void{
var _local2:SharedObject;
this.currentPhase = "11b";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_YES, phase11a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NO, phase11b);
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase11c, false, 0, true);
this.phraseBaloon.hide();
}
private function phase19(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
this.dotsBaloon.addEventListener(MouseEvent.CLICK, phase20, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon, false, 0, true);
}
private function phase12(_arg1:MouseEvent):void{
this.currentPhase = "12";
this._hud.deckButton.removeEventListener(MouseEvent.CLICK, phase12);
_arg1.stopPropagation();
_hud.steelButton.hide();
_hud.ropeButton.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase12a, false, 0, true);
this.phraseBaloon.hide();
}
private function phase11c(_arg1:Event):void{
this.currentPhase = "11c";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase11c);
_layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon = null;
this.unsetTutorialMode();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function phase18(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase18);
_layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.unsetTutorialMode();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function phase21(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21);
this.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.phase10();
}
private function phase20(_arg1:MouseEvent):void{
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
this.removeEventListener(Config.EVENT_START, phase20a);
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21, false, 0, true);
this.dotsBaloon.hide();
}
private function phase17ba(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase17ba);
this.phraseBaloon.type = TalkBaloon.TYPE_OK;
this.phraseBaloon.text = "Все мосты сохраняются автоматически, и вы всегда можете вернуться и улучшить уже построенный мост!";
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_OK, phase17c, false, 0, true);
}
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
var _local5:Boolean;
_local2 = <level><surfaces>
<surface>
<point x="160" y="300" pin="true"/>
<point x="-20" y="300" pin="false"/>
<point x="-20" y="500" pin="false"/>
<point x="160" y="500" pin="false"/>
</surface>
<surface>
<point x="400" y="300" pin="true"/>
<point x="640" y="300" pin="false"/>
<point x="640" y="520" pin="false"/>
<point x="400" y="520" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="20" y="260" width="80" height="40"/>
<zone type="finishzone" x="460" y="260" width="80" height="40"/>
</zones>
<grass>
</grass>
<heroes>
<hero type="Glazan" x="60" y="275"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="206" ty="-21" type="1" layer="1"/>
</sprites>
<borders waterLineY="420" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="800"/>
<weather value=""/>
<difficulty value="1"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 1;
_local5 = true;
so = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (so.size != 0){
if ((((so.data.passedTutorials is Array)) && ((so.data.passedTutorials.length > 0)))){
_local5 = !(so.data.passedTutorials[0]);
};
};
this.initLevel(_local4, _local5);
this.chudik = this._protagonists[0];
if (_local5){
this.introduction();
} else {
this.phase18a();
};
}
private function phase12a(_arg1:Event):void{
var _local2:LinkElement;
this.currentPhase = "12a";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase12a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase17);
_layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon = null;
this.phraseBaloon = new TalkBaloonAlt();
this.phraseBaloon.x = 60;
this.phraseBaloon.y = (Config.SCREEN_HEIGHT - 300);
_layerEngine.addChild(this.phraseBaloon);
this.phraseBaloon.show();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SKIP, phase17, false, 0, true);
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "To build a piece of bridge, left click on a green anchor point and draw a line where you want it to start & end. Remember, a bridge piece’s length is limited. For now please build the deck piece shown in the sample.";
} else {
this.phraseBaloon.text = "Чтобы построить сегмент моста, наведите курсор на зеленую точку-якорь и зажмите левую кнопку мыши и потяните курсор в нужную сторону. Однако следует помнить, что длина сегмента ограничена. Пожалуйста, постройте деревянный сегмент, как показано на примере.";
};
tutorialArrow.x = 180;
tutorialArrow.y = 320;
tutorialArrow.rotation = -45;
this._grid.visible = true;
this.tutorialDeckSprite = makeDeckSprite(new Point(160, 300), new Point(280, 300));
this.tutorialDeckSprite.x = (160 + 60);
this.tutorialDeckSprite.y = 300;
this.tutorialDeckSprite.scaleY = (this.tutorialDeckSprite.scaleY * -1);
this.tutorialDeckSprite.alpha = 0.5;
_local2 = new LinkElement();
_local2.x = 60;
_local2.y = 0;
_local2.scaleY = (_local2.scaleY / this.tutorialDeckSprite.scaleY);
this.tutorialDeckSprite.addChild(_local2);
this._layerEngine.addChild(this.tutorialDeckSprite);
this.addEventListener(MouseEvent.MOUSE_DOWN, phase13, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase14, false, 0, true);
}
private function phase16a(_arg1:Event):void{
this.currentPhase = "16a";
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase16a);
this.blockDelete = true;
this.blockConnect = true;
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase16b, false, 0, true);
this.phraseBaloon.hide();
}
private function phase16b(_arg1:Event):void{
this.currentPhase = "16b";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_OK, phase17c);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase16b);
_layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon = null;
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
_layerEngine.addChild(this.phraseBaloon);
this.phraseBaloon.show();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SKIP, phase17, false, 0, true);
_hud.startButton.reset();
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Great! Now just click on the big green button in the upper left corner of the screen.";
} else {
this.phraseBaloon.text = "Отлично! Теперь, когда мост построен, вы должны сообщить об этом. Для этого нажмите на большую зеленую кнопку в левом верхнем углу.";
};
startEvent = true;
_hud.startButton.addEventListener(Config.EVENT_START, phase17a, false, 0, true);
this.currMaterial = -1;
this.tutorialArrow.x = 70;
this.tutorialArrow.y = 75;
this.tutorialArrow.rotation = -45;
this.tutorialArrow.visible = true;
this.chudik.manualMode = false;
}
private function phase17b(_arg1:Event):void{
this.currentPhase = "17b";
_hud.editButton.hide(false);
if (_winTemp){
this.removeEventListener(Event.ENTER_FRAME, phase17b);
this.phraseBaloon.scaleX = (this.phraseBaloon.scaleX * -1);
this.phraseBaloon.textField.scaleX = (this.phraseBaloon.textField.scaleX * -1);
this.phraseBaloon.textField.x = (this.phraseBaloon.textField.x - 25);
this.phraseBaloon["okBtn"].scaleX = (this.phraseBaloon["okBtn"].scaleX * -1);
this.phraseBaloon["nextBtn"].scaleX = (this.phraseBaloon["nextBtn"].scaleX * -1);
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.type = TalkBaloon.TYPE_OK;
this.phraseBaloon.text = "Hurray! Thank you! Remember, all these bridges will be saved for later, you can always return to past bridges to adjust them and make them even better!";
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_OK, phase17c, false, 0, true);
} else {
this.phraseBaloon.type = TalkBaloon.TYPE_NEXT;
this.phraseBaloon.text = "Ура! Получилось! Спасибо вам!\nЗапомните, мосты, которые Вы построили, помогут другим Ёвинам передвигаться между островами.";
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase17ba, false, 0, true);
};
this.phraseBaloon.show();
};
}
private function phase17a(_arg1:Event):void{
this.currentPhase = "17a";
_hud.startButton.removeEventListener(Config.EVENT_START, phase17a);
this.phraseBaloon.hide();
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
this.addEventListener(Event.ENTER_FRAME, phase17b, false, 0, true);
}
private function phase17c(_arg1:Event):void{
this.currentPhase = "17c";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_OK, phase17c);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase17d, false, 0, true);
this.phraseBaloon.hide();
}
private function setTutorialMode():void{
this.chudik = this._protagonists[0];
this.tutorialMode = true;
this.startEvent = false;
this.currMaterial = -1;
_grid.visible = false;
_hud.deckButton.hide();
_hud.steelButton.hide();
_hud.ropeButton.hide();
_hud.startButton.hide(false);
_hud.editButton.hide();
_hud.stressButton.hide();
_hud.undoButton.hide();
_hud.resetButton.hide();
this.blockConnect = true;
this.blockDelete = true;
deckSamplesFound = [false, false];
}
private function phase17d(_arg1:Event):void{
var _local2:SharedObject;
this.currentPhase = "17d";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase17);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase16b);
_layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon = null;
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local2.data.passedTutorials){
_local2.data.passedTutorials[0] = true;
} else {
_local2.data.passedTutorials = [true, false, false, false, false];
};
_local2.flush();
this.unsetTutorialMode();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.addPopUp(Config.POPUP_WIN);
}
private function phase18b(_arg1:Event):void{
if (((((((((((!(this.phraseBaloon)) && ((this.currMode == Config.MODE_BUILDING)))) && (!(this.paused)))) && (!(this.tutorialMode)))) && (!(this.loaderScreen)))) && (!(this.islandText)))){
this.removeEventListener(Event.ENTER_FRAME, phase18b);
this.phase18a();
};
}
private function phase18a():void{
if (((((((((((this.phraseBaloon) || (!((this.currMode == Config.MODE_BUILDING))))) || (this.paused))) || (this.tutorialMode))) || (this.loaderScreen))) || (this.islandText))){
this.addEventListener(Event.ENTER_FRAME, phase18b, false, 0, true);
return;
};
this.dotsBaloon = new DotsBaloon();
this.dotsBaloon.x = this.chudik.particle.x;
this.dotsBaloon.y = this.chudik.particle.y;
this.addChild(this.dotsBaloon);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_SHOWED, phase19, false, 0, true);
this.addEventListener(Config.EVENT_START, phase20a, false, 0, true);
this.dotsBaloon.show();
this.dotsBaloon.addEventListener(Event.ENTER_FRAME, phase18aa, false, 0, true);
}
private function waitToIslandText(_arg1:Event):void{
if (!this.islandText){
this.removeEventListener(Event.ENTER_FRAME, waitToIslandText);
this.introduction();
};
}
private function unsetTutorialMode():void{
var _local1:int;
this.tutorialMode = false;
this.startEvent = false;
if (this.currMode == Config.MODE_BUILDING){
_grid.visible = true;
_hud.deckButton.reset();
_hud.steelButton.reset();
_hud.ropeButton.reset();
_hud.startButton.reset();
_hud.editButton.reset();
_hud.editButton.hide(true);
_hud.stressButton.reset();
_hud.undoButton.reset();
_hud.resetButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
} else {
_hud.editButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
};
this.chudik.manualMode = false;
if (((sampleMaterials) && ((sampleMaterials.length > 0)))){
_local1 = 0;
while (_local1 < sampleMaterials.length) {
_layerEngine.removeChild(sampleMaterials[_local1]);
_local1++;
};
sampleMaterials = null;
};
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
this.phase18a();
}
}
}//package levels
Section 215
//Level02 (levels.Level02)
package levels {
import flash.display.*;
import flash.geom.*;
import core.*;
import flash.events.*;
import flash.net.*;
import vis.*;
import characters.*;
public class Level02 extends LevelManager {
private var dotsBaloon:DotsBaloon;
private var so:SharedObject;
private var deckSamplesFound:Array;
private var ropeSamplesFound:Array;
private var timer:int;// = 0
private var tutorialArrow:TutorialArrow;
private var phase:int;// = 0
private var currentPhase:String;
private var sampleMaterials:Array;
private var p1:Point;
private var p2:Point;
private var chudik:Protagonist;
public function Level02(){
timer = 0;
phase = 0;
super();
}
private function phase4ad(_arg1:MouseEvent):void{
this.currentPhase = "4ad";
p1 = new Point(_pointer.x, _pointer.y);
this.blockConnect = true;
}
private function phase9a(_arg1:Event):void{
var _local2:SharedObject;
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase9a);
if (_hud.startButton.hasEventListener(Config.EVENT_START)){
_hud.startButton.removeEventListener(Config.EVENT_START, phase8a);
};
if (this.currentPhase){
if ((((this.currentPhase == "1aa")) || ((this.currentPhase == "2ad")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase2ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase2au);
} else {
if ((((this.currentPhase == "2au")) || ((this.currentPhase == "3d")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase3d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase3u);
} else {
if ((((this.currentPhase == "3u")) || ((this.currentPhase == "4ad")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase4ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase4au);
} else {
if (this.currentPhase == "4au"){
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase4b);
} else {
if ((((this.currentPhase == "5")) || ((this.currentPhase == "6d")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase6d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase6u);
} else {
if ((((this.currentPhase == "6u")) || ((this.currentPhase == "7ad")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase7ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase7au);
} else {
if (this.currentPhase == "7au"){
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase7b);
} else {
if (this.currentPhase == "7c"){
_hud.startButton.removeEventListener(Config.EVENT_START, phase8a);
};
};
};
};
};
};
};
};
};
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase8b, false, 0, true);
}
private function phase4au(_arg1:MouseEvent):void{
var _local2:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local2 = false;
if ((((((((((p1.x == 140)) && ((p1.y == 280)))) && ((p2.x == 260)))) && ((p2.y == 280)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p2.x == 140)) && ((p2.y == 280)))) && ((p1.x == 260)))) && ((p1.y == 280)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p1.x == 260)) && ((p1.y == 280)))) && ((p2.x == 380)))) && ((p2.y == 280)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p2.x == 260)) && ((p2.y == 280)))) && ((p1.x == 380)))) && ((p1.y == 280)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p1.x == 380)) && ((p1.y == 280)))) && ((p2.x == 500)))) && ((p2.y == 280)))) && (!(deckSamplesFound[2])))){
deckSamplesFound[2] = true;
_local2 = true;
};
if ((((((((((p2.x == 380)) && ((p2.y == 280)))) && ((p1.x == 500)))) && ((p1.y == 280)))) && (!(deckSamplesFound[2])))){
deckSamplesFound[2] = true;
_local2 = true;
};
if (!_local2){
return;
};
} else {
return;
};
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase4ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase4au);
this.currentPhase = "4au";
this.addEventListener(Config.EVENT_CONNECT_POINTS, phase4b, false, 0, true);
}
private function phase5(_arg1:Event):void{
var _local2:Sprite;
this.currentPhase = "5";
this.phraseBaloon.removeEventListener(TalkBaloonAltInv.EVENT_NEXT, phase5);
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Well, we are going to use the rope material to strengthen the bridge. Let’s connect the junctions of the bridge with the hook as it’s displayed on the sample.";
} else {
this.phraseBaloon.text = "Чтобы укрепить мост, воспользуемся веревкой. Соедините узлы моста с крюком, как показано на примере.";
};
_grid.visible = true;
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.lineStyle(Config.MATERIAL_ROPE_LINE_THICKNESS, Config.MATERIAL_ROPE_LINE_COLOR, 1);
_local2.graphics.moveTo(260, 280);
_local2.graphics.lineTo(320, 140);
_local2.graphics.endFill();
_local2.alpha = 0.5;
sampleMaterials.push(_local2);
this._layerEngine.addChild(_local2);
_local2 = new Sprite();
_local2.graphics.beginFill(0);
_local2.graphics.lineStyle(Config.MATERIAL_ROPE_LINE_THICKNESS, Config.MATERIAL_ROPE_LINE_COLOR, 1);
_local2.graphics.moveTo(380, 280);
_local2.graphics.lineTo(320, 140);
_local2.graphics.endFill();
_local2.alpha = 0.5;
sampleMaterials.push(_local2);
this._layerEngine.addChild(_local2);
_hud.deckButton.hide();
_hud.ropeButton.reset();
this.currMaterial = Config.MATERIAL_ROPE;
this.tutorialArrow.visible = false;
this.addEventListener(MouseEvent.MOUSE_DOWN, phase6d, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase6u, false, 0, true);
}
private function phase4ba(_arg1:Event):void{
this.currentPhase = "4ba";
this.phraseBaloon.removeEventListener(TalkBaloonAltInv.EVENT_NEXT, phase4ba);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "See that hook over there? It’s a piece of an old building that was here before the storm, It looks pretty solid.";
} else {
this.phraseBaloon.text = "Видите тот крюк сверху? Это остатки старых конструкций. Они настолько крепкие, что никакой шторм им не помеха!";
};
tutorialArrow = new TutorialArrow();
tutorialArrow.x = 300;
tutorialArrow.y = 160;
tutorialArrow.rotation = 30;
this.addChild(tutorialArrow);
this.phraseBaloon.addEventListener(TalkBaloonAltInv.EVENT_NEXT, phase4c, false, 0, true);
}
private function overDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function outDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function phase20a(_arg1:Event):void{
this.removeEventListener(Config.EVENT_START, phase20a);
if (this.dotsBaloon.hasEventListener(DotsBaloon.EVENT_SHOWED)){
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.CLICK)){
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OVER)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OUT)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
};
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21a, false, 0, true);
this.dotsBaloon.hide();
}
private function phase2au(_arg1:Event):void{
var _local2:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local2 = false;
if ((((((((((p1.x == 140)) && ((p1.y == 280)))) && ((p2.x == 260)))) && ((p2.y == 280)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p2.x == 140)) && ((p2.y == 280)))) && ((p1.x == 260)))) && ((p1.y == 280)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p1.x == 260)) && ((p1.y == 280)))) && ((p2.x == 380)))) && ((p2.y == 280)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p2.x == 260)) && ((p2.y == 280)))) && ((p1.x == 380)))) && ((p1.y == 280)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p1.x == 380)) && ((p1.y == 280)))) && ((p2.x == 500)))) && ((p2.y == 280)))) && (!(deckSamplesFound[2])))){
deckSamplesFound[2] = true;
_local2 = true;
};
if ((((((((((p2.x == 380)) && ((p2.y == 280)))) && ((p1.x == 500)))) && ((p1.y == 280)))) && (!(deckSamplesFound[2])))){
deckSamplesFound[2] = true;
_local2 = true;
};
if (!_local2){
return;
};
} else {
return;
};
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase2ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase2au);
this.currentPhase = "2au";
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Good! Two pieces left...";
} else {
this.phraseBaloon.text = "Отлично! А теперь еще один сегмент...";
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase3d, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase3u, false, 0, true);
}
private function phase18aa(_arg1:Event):void{
var _local2:Boolean;
var _local3:int;
if (!this.dotsBaloon){
return;
};
if (!_protagonists){
if (this.dotsBaloon){
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
};
return;
};
_local2 = false;
_local3 = 0;
while (_local3 < _protagonists.length) {
if ((_protagonists[_local3] as Protagonist).currentAction == Protagonist.JUMP){
_local2 = true;
break;
};
_local3++;
};
if (_local2){
this.dotsBaloon.hide();
} else {
this.dotsBaloon.show();
};
}
private function phase2ad(_arg1:Event):void{
this.currentPhase = "2ad";
p1 = new Point(_pointer.x, _pointer.y);
}
private function phase1aa(_arg1:Event):void{
var _local2:int;
this.currentPhase = "1aa";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase1aa);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon = new TalkBaloonAltInv();
this.phraseBaloon.x = 0;
this.phraseBaloon.y = (Config.SCREEN_HEIGHT - 40);
this.addChild(this.phraseBaloon);
this.phraseBaloon.show();
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Ok! Let’s start with a building of three deck pieces like it’s shown on the sample!";
} else {
this.phraseBaloon.text = "Для начала, давайте построим 3 деревянных сегмента, как показано на примере. Чтобы получился мост.";
};
_grid.visible = true;
_hud.deckButton.reset();
this.currMaterial = Config.MATERIAL_DECK;
sampleMaterials = [];
sampleMaterials.push(this.makeDeckSprite(new Point(140, 280), new Point(260, 280)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((140 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 280;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(this.makeDeckSprite(new Point(260, 280), new Point(380, 280)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((260 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 280;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(this.makeDeckSprite(new Point(380, 280), new Point(500, 280)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((380 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 280;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(new LinkElement(false, 1.5, 260, 280));
sampleMaterials.push(new LinkElement(false, 1.5, 380, 280));
_local2 = 0;
while (_local2 < sampleMaterials.length) {
sampleMaterials[_local2].alpha = 0.5;
this._layerEngine.addChild(sampleMaterials[_local2]);
_local2++;
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase2ad, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase2au, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloonAltInv.EVENT_SKIP, phase9a, false, 0, true);
}
private function phase21a(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21a);
this.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.phase18a();
}
private function phase19(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
this.dotsBaloon.addEventListener(MouseEvent.CLICK, phase20, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon, false, 0, true);
}
private function phase21(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21);
this.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.beginTutorial();
}
private function phase20(_arg1:MouseEvent):void{
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
this.removeEventListener(Config.EVENT_START, phase20a);
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21, false, 0, true);
this.dotsBaloon.hide();
}
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
var _local5:Boolean;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="140" y="280" pin="true"/>
<point x="140" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="320" y="140" pin="true" hook="true" onlysteel="false" hookdirectionx="1" hookdirectiony="1" hookrotation="0"/>
</surface>
<surface>
<point x="500" y="280" pin="true"/>
<point x="640" y="280" pin="false"/>
<point x="640" y="500" pin="false"/>
<point x="500" y="500" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="540" y="240" width="60" height="40"/>
<zone type="rightzone" x="20" y="240" width="60" height="40"/>
</zones>
<grass>
</grass>
<heroes>
<hero type="Cvetok" x="40" y="255"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="317" ty="13" type="2" layer="1"/> <!-- 167 x 13 -->
</sprites>
<borders waterLineY="360" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="2500"/>
<weather value=""/>
<difficulty value="1"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 2;
_local5 = true;
so = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (so.size != 0){
if ((((so.data.passedTutorials is Array)) && ((so.data.passedTutorials.length > 1)))){
_local5 = !(so.data.passedTutorials[1]);
};
};
this.initLevel(_local4, _local5);
this.chudik = this._protagonists[0];
if (_local5){
this.beginTutorial();
} else {
this.phase18a();
};
}
private function phase1a(_arg1:Event):void{
this.currentPhase = "1a";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_YES, phase1a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NO, phase1b);
this.blockDelete = false;
this.reset();
this.blockDelete = true;
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase1aa, false, 0, true);
this.phraseBaloon.hide();
}
private function phase1b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_YES, phase1a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NO, phase1b);
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase2b, false, 0, true);
}
private function phase2b(_arg1:Event):void{
var _local2:SharedObject;
this.phraseBaloon.removeEventListener(TalkBaloonAltInv.EVENT_HIDDEN, phase2b);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.unsetTutorialMode();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function beginTutorial():void{
this.setTutorialMode();
if (this.islandText){
this.addEventListener(Event.ENTER_FRAME, waitToIslandText, false, 0, true);
return;
};
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
this.addChild(this.phraseBaloon);
this.phraseBaloon.text = "";
if (so.data.introducedHeroes.indexOf("Cvetok") == -1){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.textField.appendText((("Hello, " + this.playerName) + "! I'm Ohani! Crabi told me about you. Thank you very much for helping us. "));
} else {
this.phraseBaloon.textField.appendText((("Привет, " + this.playerName) + "! Я Охани! Краби рассказал мне о вас. Большое спасибо, что помогаете нам.\n"));
};
so.data.introducedHeroes.push("Cvetok");
so.flush();
};
this.phraseBaloon.type = TalkBaloon.TYPE_YES_NO;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.textField.appendText("This time the task is not so easy. But I’m sure you can do it! Do you want me to help?");
} else {
this.phraseBaloon.textField.appendText("Ох, в этот раз задача сложнее, но я уверена, что у вас все получится! Хотите, я помогу?");
};
this.phraseBaloon.show();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_YES, phase1a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NO, phase1b, false, 0, true);
}
private function phase7ad(_arg1:MouseEvent):void{
this.currentPhase = "7ad";
p1 = new Point(_pointer.x, _pointer.y);
this.blockConnect = true;
}
private function phase7au(_arg1:MouseEvent):void{
var _local2:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local2 = false;
if ((((((((((p1.x == 260)) && ((p1.y == 280)))) && ((p2.x == 320)))) && ((p2.y == 140)))) && (!(ropeSamplesFound[0])))){
ropeSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p2.x == 260)) && ((p2.y == 280)))) && ((p1.x == 320)))) && ((p1.y == 140)))) && (!(ropeSamplesFound[0])))){
ropeSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p1.x == 380)) && ((p1.y == 280)))) && ((p2.x == 320)))) && ((p2.y == 140)))) && (!(ropeSamplesFound[1])))){
ropeSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p2.x == 380)) && ((p2.y == 280)))) && ((p1.x == 320)))) && ((p1.y == 140)))) && (!(ropeSamplesFound[1])))){
ropeSamplesFound[1] = true;
_local2 = true;
};
if (!_local2){
return;
};
} else {
return;
};
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase7ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase7au);
this.currentPhase = "7au";
this.addEventListener(Config.EVENT_CONNECT_POINTS, phase7b, false, 0, true);
}
private function phase3d(_arg1:MouseEvent):void{
this.currentPhase = "3d";
p1 = new Point(_pointer.x, _pointer.y);
this.blockConnect = true;
}
private function phase3u(_arg1:MouseEvent):void{
var _local2:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local2 = false;
if ((((((((((p1.x == 140)) && ((p1.y == 280)))) && ((p2.x == 260)))) && ((p2.y == 280)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p2.x == 140)) && ((p2.y == 280)))) && ((p1.x == 260)))) && ((p1.y == 280)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p1.x == 260)) && ((p1.y == 280)))) && ((p2.x == 380)))) && ((p2.y == 280)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p2.x == 260)) && ((p2.y == 280)))) && ((p1.x == 380)))) && ((p1.y == 280)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p1.x == 380)) && ((p1.y == 280)))) && ((p2.x == 500)))) && ((p2.y == 280)))) && (!(deckSamplesFound[2])))){
deckSamplesFound[2] = true;
_local2 = true;
};
if ((((((((((p2.x == 380)) && ((p2.y == 280)))) && ((p1.x == 500)))) && ((p1.y == 280)))) && (!(deckSamplesFound[2])))){
deckSamplesFound[2] = true;
_local2 = true;
};
if (!_local2){
return;
};
} else {
return;
};
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase3d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase3u);
this.currentPhase = "3u";
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "And the last one!";
} else {
this.phraseBaloon.text = "И еще один!";
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase4ad, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase4au, false, 0, true);
}
private function phase4b(_arg1:Event):void{
this.currentPhase = "4b";
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase4b);
this.blockConnect = true;
_grid.visible = false;
_hud.deckButton.hide();
this.phraseBaloon.type = TalkBaloonAltInv.TYPE_SKIP_NEXT;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Great! We have a bridge now! But I’m afraid it’s not going to last for long... We have to strengthen it!";
} else {
this.phraseBaloon.text = "Замечательно! У нас есть мост! Только, боюсь, такой мост долго не продержится. Нам нужно его укрепить!";
};
this.phraseBaloon.addEventListener(TalkBaloonAltInv.EVENT_NEXT, phase4ba, false, 0, true);
}
private function phase4c(_arg1:Event):void{
this.currentPhase = "4c";
this.phraseBaloon.removeEventListener(TalkBaloonAltInv.EVENT_NEXT, phase4c);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Anyway, if it could withstand the storm, I’m sure it can support our bridge, so let’s use it!";
} else {
this.phraseBaloon.text = "Давайте воспользуемся этой конструкцией и укрепим наш мост.";
};
this.phraseBaloon.addEventListener(TalkBaloonAltInv.EVENT_NEXT, phase5, false, 0, true);
}
private function phase6d(_arg1:MouseEvent):void{
this.currentPhase = "6d";
p1 = new Point(_pointer.x, _pointer.y);
}
private function setTutorialMode():void{
this.chudik = this._protagonists[0];
this.tutorialMode = true;
this.currMaterial = -1;
_grid.visible = false;
_hud.deckButton.hide();
_hud.steelButton.hide();
_hud.ropeButton.hide();
_hud.startButton.hide(false);
_hud.editButton.hide();
_hud.stressButton.hide();
_hud.undoButton.hide();
_hud.resetButton.hide();
this.blockConnect = true;
this.blockDelete = true;
deckSamplesFound = [false, false, false];
ropeSamplesFound = [false, false];
}
private function phase6u(_arg1:MouseEvent):void{
var _local2:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local2 = false;
if ((((((((((p1.x == 260)) && ((p1.y == 280)))) && ((p2.x == 320)))) && ((p2.y == 140)))) && (!(ropeSamplesFound[0])))){
ropeSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p2.x == 260)) && ((p2.y == 280)))) && ((p1.x == 320)))) && ((p1.y == 140)))) && (!(ropeSamplesFound[0])))){
ropeSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p1.x == 380)) && ((p1.y == 280)))) && ((p2.x == 320)))) && ((p2.y == 140)))) && (!(ropeSamplesFound[1])))){
ropeSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p2.x == 380)) && ((p2.y == 280)))) && ((p1.x == 320)))) && ((p1.y == 140)))) && (!(ropeSamplesFound[1])))){
ropeSamplesFound[1] = true;
_local2 = true;
};
if (!_local2){
return;
};
} else {
return;
};
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase6d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase6u);
this.currentPhase = "6u";
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "That’s it! One more rope segment and we are done.";
} else {
this.phraseBaloon.text = "Вот так! И еще одну веревку!";
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase7ad, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase7au, false, 0, true);
}
private function phase18b(_arg1:Event):void{
if (((((((((((!(this.phraseBaloon)) && ((this.currMode == Config.MODE_BUILDING)))) && (!(this.paused)))) && (!(this.tutorialMode)))) && (!(this.loaderScreen)))) && (!(this.islandText)))){
this.removeEventListener(Event.ENTER_FRAME, phase18b);
this.phase18a();
};
}
private function phase7c(_arg1:Event):void{
this.currentPhase = "7c";
this.phraseBaloon.removeEventListener(TalkBaloonAltInv.EVENT_HIDDEN, phase7c);
this.phraseBaloon.removeEventListener(TalkBaloonAltInv.EVENT_SKIP, phase9a);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
this.addChild(this.phraseBaloon);
this.phraseBaloon.show();
this.blockConnect = true;
_grid.visible = false;
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Good work! The bridge is ready! And since we’ve used ropes (the cheapest material we have) we saved a lot of money! And now please click on the big green Start button!";
} else {
this.phraseBaloon.text = "Отлично! Мост построен, и при этом, благодаря веревке, мы сохранили кучу денег! Пожалуйста, нажмите на большую зеленую кнопку в левом верхнем углу.";
};
this.tutorialArrow.x = 45;
this.tutorialArrow.y = 75;
this.tutorialArrow.rotation = 0;
this.tutorialArrow.visible = true;
_hud.startButton.reset();
_hud.startButton.addEventListener(Config.EVENT_START, phase8a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SKIP, phase9a, false, 0, true);
}
private function phase7b(_arg1:Event):void{
this.currentPhase = "7b";
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase7b);
this.blockConnect = true;
this.phraseBaloon.addEventListener(TalkBaloonAltInv.EVENT_HIDDEN, phase7c, false, 0, true);
this.phraseBaloon.hide();
}
private function phase18a():void{
if (((((((((((this.phraseBaloon) || (!((this.currMode == Config.MODE_BUILDING))))) || (this.paused))) || (this.tutorialMode))) || (this.loaderScreen))) || (this.islandText))){
this.addEventListener(Event.ENTER_FRAME, phase18b, false, 0, true);
return;
};
this.dotsBaloon = new DotsBaloon();
this.dotsBaloon.x = this.chudik.particle.x;
this.dotsBaloon.y = this.chudik.particle.y;
this.addChild(this.dotsBaloon);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_SHOWED, phase19, false, 0, true);
this.addEventListener(Config.EVENT_START, phase20a, false, 0, true);
this.dotsBaloon.show();
this.dotsBaloon.addEventListener(Event.ENTER_FRAME, phase18aa, false, 0, true);
}
private function waitToIslandText(_arg1:Event):void{
if (!this.islandText){
this.removeEventListener(Event.ENTER_FRAME, waitToIslandText);
this.beginTutorial();
};
}
private function phase8a(_arg1:Event):void{
var _local2:SharedObject;
_hud.startButton.removeEventListener(Config.EVENT_START, phase8a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase9a);
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local2.data.passedTutorials){
_local2.data.passedTutorials[1] = true;
} else {
_local2.data.passedTutorials = [true, true, false, false, false];
};
_local2.flush();
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase8b, false, 0, true);
}
private function phase8b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase8b);
this.removeChild(this.phraseBaloon);
this.phraseBaloon = null;
this.unsetTutorialMode();
}
private function unsetTutorialMode():void{
var _local1:int;
this.tutorialMode = false;
if (this.currMode == Config.MODE_BUILDING){
_grid.visible = true;
_hud.deckButton.reset();
_hud.steelButton.reset();
_hud.ropeButton.reset();
_hud.startButton.reset();
_hud.editButton.reset();
_hud.editButton.hide(true);
_hud.stressButton.reset();
_hud.undoButton.reset();
_hud.resetButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
} else {
_hud.editButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
};
this.chudik.manualMode = false;
if (((sampleMaterials) && ((sampleMaterials.length > 0)))){
_local1 = 0;
while (_local1 < sampleMaterials.length) {
_layerEngine.removeChild(sampleMaterials[_local1]);
_local1++;
};
sampleMaterials = null;
};
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
this.phase18a();
}
}
}//package levels
Section 216
//Level03 (levels.Level03)
package levels {
import core.*;
import flash.events.*;
import flash.net.*;
import vis.*;
import characters.*;
public class Level03 extends LevelManager {
private var dotsBaloon:DotsBaloon;
private var so:SharedObject;
private var tutorialArrow:TutorialArrow;
private var chudik:Protagonist;
private function phase9a(_arg1:Event):void{
var _local2:SharedObject;
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_OK, phase9a);
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_SKIP, phase10a);
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local2.data.passedTutorials){
_local2.data.passedTutorials[2] = true;
} else {
_local2.data.passedTutorials = [true, true, true, false, false];
};
_local2.flush();
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_HIDDEN, phase9b, false, 0, true);
this.phraseBaloon.hide();
}
private function phase9b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_HIDDEN, phase9b);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.unsetTutorialMode();
}
private function phase5(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase5);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "The Undo button cancels your last action.";
} else {
this.phraseBaloon.text = "Кнопка Отмена позволяет отменить любое ваше последнее действие, будь то построение или удаление.";
};
this.tutorialArrow.x = 520;
this.tutorialArrow.y = 75;
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase6, false, 0, true);
}
private function phase7(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase7);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "This button calls for a menu where you can look at the help section, return to the level selection screen or quit the game with submitting your current score.";
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase8, false, 0, true);
} else {
this.phraseBaloon.text = "Это кнопка вызывает меню, где вы можете просмотреть раздел помощи, выйти в окно выбора уровня или в главное меню.";
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase7a, false, 0, true);
};
this.tutorialArrow.x = 603;
this.tutorialArrow.y = 75;
this.tutorialArrow.rotation = 0;
}
private function phase8(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase8);
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon.type = TalkBaloonInv.TYPE_OK;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "It’s all for now. As always, please tell me when the bridge is ready by clicking on the Start button!";
} else {
this.phraseBaloon.text = "На этом все. Как обычно, сообщите мне, когда мост будет готов!";
};
this.tutorialArrow.visible = false;
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_OK, phase9a, false, 0, true);
}
private function phase6(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase6);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "The Reset button clears the screen and refunds your money. If you clicked on the button by accident, use the Undo button to restore your last creation.";
} else {
this.phraseBaloon.text = "Кнопка Сброс служит для удаления всех построенных сегментов. Если вы нажали на эту кнопку случайно — воспользуйтесь Отменой. Она восстановит все удаленные сегменты.";
};
this.tutorialArrow.x = 560;
this.tutorialArrow.y = 75;
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase7, false, 0, true);
}
private function phase3(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase3);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "You’ll have to keep track of it and try to use cheaper materials in your buildings.";
} else {
this.phraseBaloon.text = "Используйте имеющиеся материалы и ресурсы аккуратно.";
};
this.tutorialArrow.x = 320;
this.tutorialArrow.y = 75;
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase4a, false, 0, true);
}
private function overDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function outDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function phase20a(_arg1:Event):void{
this.removeEventListener(Config.EVENT_START, phase20a);
if (this.dotsBaloon.hasEventListener(DotsBaloon.EVENT_SHOWED)){
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.CLICK)){
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OVER)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OUT)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
};
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21a, false, 0, true);
this.dotsBaloon.hide();
}
private function phase18aa(_arg1:Event):void{
var _local2:Boolean;
var _local3:int;
if (!this.dotsBaloon){
return;
};
if (!_protagonists){
if (this.dotsBaloon){
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
};
return;
};
_local2 = false;
_local3 = 0;
while (_local3 < _protagonists.length) {
if ((_protagonists[_local3] as Protagonist).currentAction == Protagonist.JUMP){
_local2 = true;
break;
};
_local3++;
};
if (_local2){
this.dotsBaloon.hide();
} else {
this.dotsBaloon.show();
};
}
private function phase21a(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21a);
this.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.phase18a();
}
private function phase10a(_arg1:Event):void{
var _local2:SharedObject;
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_SKIP, phase10a);
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_HIDDEN, phase10b, false, 0, true);
this.phraseBaloon.hide();
}
private function phase10b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_HIDDEN, phase10b);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.unsetTutorialMode();
}
private function phase19(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
this.dotsBaloon.addEventListener(MouseEvent.CLICK, phase20, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon, false, 0, true);
}
private function phase21(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21);
this.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.beginTutorial();
}
private function phase20(_arg1:MouseEvent):void{
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
this.removeEventListener(Config.EVENT_START, phase20a);
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21, false, 0, true);
this.dotsBaloon.hide();
}
private function phase1a(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_YES, phase1a);
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NO, phase1b);
this.phraseBaloon.type = TalkBaloonInv.TYPE_SKIP_NEXT;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "You already know that that the START button above is used to inform us that the bridge is ready.";
} else {
this.phraseBaloon.text = "Вы уже знаете, что кнопка Старт используется для того, чтобы сообщить нам, что мост готов и можно смело двигаться вперед.";
};
tutorialArrow = new TutorialArrow();
this.tutorialArrow.x = 50;
this.tutorialArrow.y = 75;
this.tutorialArrow.rotation = -30;
this.addChild(tutorialArrow);
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase2a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_SKIP, phase10a, false, 0, true);
}
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
var _local5:Boolean;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="160" pin="false"/>
<point x="0" y="180" pin="false"/>
<point x="220" y="180" pin="false"/>
<point x="220" y="360" pin="true"/>
<point x="220" y="580" pin="false"/>
<point x="-20" y="580" pin="false"/>
</surface>
<surface>
<point x="460" y="360" pin="true"/>
<point x="460" y="520" pin="false"/>
<point x="660" y="540" pin="false"/>
<point x="700" y="400" pin="false"/>
<point x="640" y="360" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="540" y="200" width="40" height="160"/>
<zone type="rightzone" x="80" y="140" width="40" height="40"/>
</zones>
<grass>
<line><point x="0" y="180"/><point x="220" y="180"/></line>
<line><point x="460" y="360"/><point x="660" y="360"/></line>
</grass>
<heroes>
<hero type="Sinyak" x="100" y="155"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="440" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="3000"/>
<weather value="weathernight"/>
<difficulty value="1"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 3;
_local5 = true;
so = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (so.size != 0){
if ((((so.data.passedTutorials is Array)) && ((so.data.passedTutorials.length > 2)))){
_local5 = !(so.data.passedTutorials[2]);
};
};
this.initLevel(_local4, _local5);
this.chudik = this._protagonists[0];
if (_local5){
this.beginTutorial();
} else {
this.phase18a();
};
}
private function phase1b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_YES, phase1a);
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NO, phase1b);
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_HIDDEN, phase2b, false, 0, true);
this.phraseBaloon.hide();
}
private function phase2a(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase2a);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "You also know that while unfortunate our budget is also severely limited.";
} else {
this.phraseBaloon.text = "Наверное, вы знаете, что наш бюджет на постройку моста ограничен...";
};
this.tutorialArrow.x = 150;
this.tutorialArrow.y = 75;
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase3, false, 0, true);
}
private function phase2b(_arg1:Event):void{
var _local2:SharedObject;
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_HIDDEN, phase2b);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.unsetTutorialMode();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function beginTutorial():void{
this.setTutorialMode();
if (this.islandText){
this.addEventListener(Event.ENTER_FRAME, waitToIslandText, false, 0, true);
return;
};
this.phraseBaloon = new TalkBaloonInv();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
this.addChild(this.phraseBaloon);
this.phraseBaloon.text = "";
if (so.data.introducedHeroes.indexOf("Sinyak") == -1){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.textField.appendText((("Hello, " + this.playerName) + "! I'm Simbi! "));
} else {
this.phraseBaloon.textField.appendText((("Привет, " + this.playerName) + "! Я Симби! "));
};
so.data.introducedHeroes.push("Sinyak");
so.flush();
};
this.phraseBaloon.type = TalkBaloonInv.TYPE_YES_NO;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.textField.appendText("Do you want me to tell you about additional control elements?");
} else {
this.phraseBaloon.textField.appendText("Хотите, я расскажу вам про дополнительные элементы управления?");
};
this.phraseBaloon.show();
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_YES, phase1a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NO, phase1b, false, 0, true);
}
private function phase4b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase4b);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "If the segment is too blue or too red it might just break! So please be careful! We would rather not go swimming in that cold, cold water...";
} else {
this.phraseBaloon.text = "Любая чрезмерная нагрузка приведет к поломке сегмента, а, следовательно, и всего моста! Поэтому будьте осторожны! Мне бы не хотелось упасть в эту холодную воду...";
};
this.tutorialArrow.x = 470;
this.tutorialArrow.y = 75;
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase5, false, 0, true);
}
private function phase4a(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase4a);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "The button Show Stress button identifies which segments of your bridge may be weak. A blue aura represents stretching of a certain segment and a red aura represents the pressure applied to it.";
} else {
this.phraseBaloon.text = "Кнопка Стресс помогает проследить нагрузку на каждый из сегментов моста. Синий цвет говорит о чрезмерном растяжении сегмента, красный — о чрезмерном сжатии.";
};
this.tutorialArrow.x = 470;
this.tutorialArrow.y = 75;
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase4b, false, 0, true);
}
private function setTutorialMode():void{
this.chudik = this._protagonists[0];
this.tutorialMode = true;
this.currMaterial = -1;
_grid.visible = false;
_hud.deckButton.hide();
_hud.steelButton.hide();
_hud.ropeButton.hide();
_hud.startButton.hide(false);
_hud.editButton.hide();
_hud.stressButton.hide();
_hud.undoButton.hide();
_hud.resetButton.hide();
this.blockConnect = true;
this.blockDelete = true;
}
private function phase18b(_arg1:Event):void{
if (((((((((((!(this.phraseBaloon)) && ((this.currMode == Config.MODE_BUILDING)))) && (!(this.paused)))) && (!(this.tutorialMode)))) && (!(this.loaderScreen)))) && (!(this.islandText)))){
this.removeEventListener(Event.ENTER_FRAME, phase18b);
this.phase18a();
};
}
private function phase7a(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonInv.EVENT_NEXT, phase7a);
this.phraseBaloon.text = " Отсюда же вы можете отправить ваш текущий результат и перейти на таблицу с рейтингом.";
this.phraseBaloon.addEventListener(TalkBaloonInv.EVENT_NEXT, phase8, false, 0, true);
}
private function phase18a():void{
if (((((((((((this.phraseBaloon) || (!((this.currMode == Config.MODE_BUILDING))))) || (this.paused))) || (this.tutorialMode))) || (this.loaderScreen))) || (this.islandText))){
this.addEventListener(Event.ENTER_FRAME, phase18b, false, 0, true);
return;
};
this.dotsBaloon = new DotsBaloon();
this.dotsBaloon.x = this.chudik.particle.x;
this.dotsBaloon.y = this.chudik.particle.y;
this.addChild(this.dotsBaloon);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_SHOWED, phase19, false, 0, true);
this.addEventListener(Config.EVENT_START, phase20a, false, 0, true);
this.dotsBaloon.show();
this.dotsBaloon.addEventListener(Event.ENTER_FRAME, phase18aa, false, 0, true);
}
private function waitToIslandText(_arg1:Event):void{
if (!this.islandText){
this.removeEventListener(Event.ENTER_FRAME, waitToIslandText);
this.beginTutorial();
};
}
private function unsetTutorialMode():void{
this.tutorialMode = false;
_grid.visible = true;
_hud.deckButton.reset();
_hud.steelButton.reset();
_hud.ropeButton.reset();
_hud.startButton.reset();
_hud.editButton.reset();
_hud.editButton.hide();
_hud.stressButton.reset();
_hud.undoButton.reset();
_hud.resetButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
this.phase18a();
}
}
}//package levels
Section 217
//Level04 (levels.Level04)
package levels {
import flash.geom.*;
import core.*;
import flash.events.*;
import flash.net.*;
import vis.*;
import characters.*;
public class Level04 extends LevelManager {
private var dotsBaloon:DotsBaloon;
private var so:SharedObject;
private var steelSamplesFound:Array;
private var deckSamplesFound:Array;
private var timer:int;// = 0
private var tutorialArrow:TutorialArrow;
private var phase:int;// = 0
private var currentPhase:String;
private var sampleMaterials:Array;
private var p1:Point;
private var p2:Point;
private var chudik:Protagonist;
public function Level04(){
timer = 0;
phase = 0;
super();
}
private function phase9a(_arg1:Event):void{
var _local2:SharedObject;
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase9a);
if (_hud.startButton.hasEventListener(Config.EVENT_START)){
_hud.startButton.removeEventListener(Config.EVENT_START, phase8a);
};
if (this.currentPhase){
if ((((this.currentPhase == "1aa")) || ((this.currentPhase == "2ad")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase2ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase2au);
} else {
if ((((this.currentPhase == "2au")) || ((this.currentPhase == "3d")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase3d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase3u);
} else {
if (this.currentPhase == "3u"){
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase4b);
} else {
if ((((this.currentPhase == "4b")) || ((this.currentPhase == "6d")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase6d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase6u);
} else {
if (this.currentPhase == "6u"){
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase7b);
} else {
if (this.currentPhase == "7c"){
_hud.startButton.removeEventListener(Config.EVENT_START, phase8a);
};
};
};
};
};
};
};
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase8b, false, 0, true);
}
private function overDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function outDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function phase20a(_arg1:Event):void{
this.removeEventListener(Config.EVENT_START, phase20a);
if (this.dotsBaloon.hasEventListener(DotsBaloon.EVENT_SHOWED)){
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.CLICK)){
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OVER)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OUT)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
};
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21a, false, 0, true);
this.dotsBaloon.hide();
}
private function phase2au(_arg1:Event):void{
var _local2:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local2 = false;
if ((((((((((p1.x == 200)) && ((p1.y == 380)))) && ((p2.x == 320)))) && ((p2.y == 380)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p2.x == 200)) && ((p2.y == 380)))) && ((p1.x == 320)))) && ((p1.y == 380)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p1.x == 320)) && ((p1.y == 380)))) && ((p2.x == 440)))) && ((p2.y == 380)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p2.x == 320)) && ((p2.y == 380)))) && ((p1.x == 440)))) && ((p1.y == 380)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if (!_local2){
return;
};
} else {
return;
};
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase2ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase2au);
this.currentPhase = "2au";
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Good. One more deck segment...";
} else {
this.phraseBaloon.text = "А теперь еще один сегмент.";
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase3d, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase3u, false, 0, true);
}
private function phase18aa(_arg1:Event):void{
var _local2:Boolean;
var _local3:int;
if (!this.dotsBaloon){
return;
};
if (!_protagonists){
if (this.dotsBaloon){
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
};
return;
};
_local2 = false;
_local3 = 0;
while (_local3 < _protagonists.length) {
if ((_protagonists[_local3] as Protagonist).currentAction == Protagonist.JUMP){
_local2 = true;
break;
};
_local3++;
};
if (_local2){
this.dotsBaloon.hide();
} else {
this.dotsBaloon.show();
};
}
private function phase2ad(_arg1:Event):void{
this.currentPhase = "2ad";
p1 = new Point(_pointer.x, _pointer.y);
}
private function phase1ab(_arg1:Event):void{
this.currentPhase = "1ab";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase1ab);
this.blockDelete = false;
this.reset();
this.blockDelete = true;
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase1aa, false, 0, true);
this.phraseBaloon.hide();
}
private function phase1aa(_arg1:Event):void{
var _local2:int;
this.currentPhase = "1aa";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase9a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase1aa);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon = new TalkBaloonAlt();
this.phraseBaloon.x = 60;
this.phraseBaloon.y = (Config.SCREEN_HEIGHT - 300);
this.addChild(this.phraseBaloon);
this.phraseBaloon.show();
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Okay, it seems we need to start with a simple two bridge decks, like in the sample.";
} else {
this.phraseBaloon.text = "Для начала, давайте, построим обычный деревянный мост, состоящий из двух сегментов, как показано на примере.";
};
_grid.visible = true;
_hud.deckButton.reset();
this.currMaterial = Config.MATERIAL_DECK;
sampleMaterials = [];
sampleMaterials.push(this.makeDeckSprite(new Point(200, 380), new Point(320, 380)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((200 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 380;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(this.makeDeckSprite(new Point(320, 380), new Point(440, 380)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((320 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 380;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(new LinkElement(false, 1.5, 320, 380));
_local2 = 0;
while (_local2 < sampleMaterials.length) {
sampleMaterials[_local2].alpha = 0.5;
this._layerEngine.addChild(sampleMaterials[_local2]);
_local2++;
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase2ad, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase2au, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloonAlt.EVENT_SKIP, phase9a, false, 0, true);
}
private function phase21a(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21a);
this.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.phase18a();
}
private function phase19(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
this.dotsBaloon.addEventListener(MouseEvent.CLICK, phase20, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon, false, 0, true);
}
private function phase21(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21);
this.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.beginTutorial();
}
private function phase20(_arg1:MouseEvent):void{
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
this.removeEventListener(Config.EVENT_START, phase20a);
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21, false, 0, true);
this.dotsBaloon.hide();
}
private function phase1a(_arg1:Event):void{
this.currentPhase = "1a";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_YES, phase1a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NO, phase1b);
this.blockDelete = false;
this.reset();
this.blockDelete = true;
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP_NEXT;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "The waterline is too high in this area, that’s why this bridge must be really sturdy! It can’t bend at all! Well, let’s see what we can do here...";
} else {
this.phraseBaloon.text = "Уровень воды здесь очень высок, поэтому мост должен быть максимально прочным. Настолько прочным, чтобы совсем не прогибаться! Давайте посмотрим, что мы можем здесь сделать...";
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase1ab, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SKIP, phase9a, false, 0, true);
}
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
var _local5:Boolean;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="380" pin="false"/>
<point x="200" y="380" pin="true"/>
<point x="200" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="440" y="380" pin="true"/>
<point x="440" y="500" pin="false"/>
<point x="660" y="500" pin="false"/>
<point x="660" y="380" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="60" y="340" width="40" height="40"/>
<zone type="finishzone" x="520" y="320" width="40" height="60"/>
</zones>
<grass>
<line><point x="440" y="380"/><point x="660" y="380"/></line>
</grass>
<heroes>
<hero type="Cvetok" x="80" y="355"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="360" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="1700"/>
<weather value=""/>
<difficulty value="1"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 4;
_local5 = true;
so = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (so.size != 0){
if ((((so.data.passedTutorials is Array)) && ((so.data.passedTutorials.length > 3)))){
_local5 = !(so.data.passedTutorials[3]);
};
};
this.initLevel(_local4, _local5);
this.chudik = this._protagonists[0];
if (_local5){
this.beginTutorial();
} else {
this.phase18a();
};
}
private function phase1b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_YES, phase1a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NO, phase1b);
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase2b, false, 0, true);
}
private function phase2b(_arg1:Event):void{
var _local2:SharedObject;
this.currentPhase = "2b";
this.phraseBaloon.removeEventListener(TalkBaloonAlt.EVENT_HIDDEN, phase2b);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.unsetTutorialMode();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function beginTutorial():void{
this.setTutorialMode();
if (this.islandText){
this.addEventListener(Event.ENTER_FRAME, waitToIslandText, false, 0, true);
return;
};
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
this.addChild(this.phraseBaloon);
this.phraseBaloon.text = "";
if (so.data.introducedHeroes.indexOf("Cvetok") == -1){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.textField.appendText((("Hello, " + this.playerName) + "! I'm Ohani! "));
} else {
this.phraseBaloon.textField.appendText((("Привет, " + this.playerName) + "! Я Охани! "));
};
so.data.introducedHeroes.push("Cvetok");
so.flush();
};
this.phraseBaloon.type = TalkBaloon.TYPE_YES_NO;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.textField.appendText("Oh! It’s so insidious! Do you need help?");
} else {
this.phraseBaloon.textField.appendText("Ох, это очень коварное место. Хотите, чтобы я вам помогла?");
};
this.phraseBaloon.show();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_YES, phase1a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NO, phase1b, false, 0, true);
}
private function phase3d(_arg1:MouseEvent):void{
this.currentPhase = "3d";
p1 = new Point(_pointer.x, _pointer.y);
this.blockConnect = true;
}
private function phase3u(_arg1:MouseEvent):void{
var _local2:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local2 = false;
if ((((((((((p1.x == 200)) && ((p1.y == 380)))) && ((p2.x == 320)))) && ((p2.y == 380)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p2.x == 200)) && ((p2.y == 380)))) && ((p1.x == 320)))) && ((p1.y == 380)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local2 = true;
};
if ((((((((((p1.x == 320)) && ((p1.y == 380)))) && ((p2.x == 440)))) && ((p2.y == 380)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if ((((((((((p2.x == 320)) && ((p2.y == 380)))) && ((p1.x == 440)))) && ((p1.y == 380)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local2 = true;
};
if (!_local2){
return;
};
} else {
return;
};
this.blockConnect = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase3d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase3u);
this.currentPhase = "3u";
this.addEventListener(Config.EVENT_CONNECT_POINTS, phase4b, false, 0, true);
}
private function phase4b(_arg1:Event):void{
this.currentPhase = "4b";
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase4b);
this.blockConnect = true;
this.phraseBaloon.type = TalkBaloonAlt.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "That’s it. Now we need to use steel segments to strengthen the bridge. Don’t forget! Build steel segments as long as possible so it can give better support! Just to follow the sample.";
this.prepareToBuildIt();
} else {
this.phraseBaloon.type = TalkBaloonAlt.TYPE_SKIP_NEXT;
this.phraseBaloon.text = "Теперь, чтобы максимально укрепить мост, построим максимально длинные железные укрепления!";
this.phraseBaloon.addEventListener(TalkBaloonAlt.EVENT_NEXT, phase4c, false, 0, true);
};
}
private function phase4c(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloonAlt.EVENT_NEXT, phase4c);
this.phraseBaloon.type = TalkBaloonAlt.TYPE_SKIP;
this.phraseBaloon.text = "Чем длиннее будут железные сегменты, тем лучше они будут держать форму моста. Прошу вас, постройте укрепления, показанные на примере.";
this.prepareToBuildIt();
}
private function phase6d(_arg1:MouseEvent):void{
this.currentPhase = "6d";
p1 = new Point(_pointer.x, _pointer.y);
this.blockConnect = true;
}
private function setTutorialMode():void{
this.chudik = this._protagonists[0];
this.tutorialMode = true;
this.currMaterial = -1;
_grid.visible = false;
_hud.deckButton.hide();
_hud.steelButton.hide();
_hud.ropeButton.hide();
_hud.startButton.hide(false);
_hud.editButton.hide();
_hud.stressButton.hide();
_hud.undoButton.hide();
_hud.resetButton.hide();
this.blockConnect = true;
this.blockDelete = true;
deckSamplesFound = [false, false];
steelSamplesFound = [false, false, false, false, false];
}
private function phase6u(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
var _local4:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local4 = false;
if ((((((((((p1.x == 200)) && ((p1.y == 380)))) && ((p2.x == 260)))) && ((p2.y == 280)))) && (!(steelSamplesFound[0])))){
steelSamplesFound[0] = true;
_local4 = true;
};
if ((((((((((p2.x == 200)) && ((p2.y == 380)))) && ((p1.x == 260)))) && ((p1.y == 280)))) && (!(steelSamplesFound[0])))){
steelSamplesFound[0] = true;
_local4 = true;
};
if ((((((((((p1.x == 260)) && ((p1.y == 280)))) && ((p2.x == 320)))) && ((p2.y == 380)))) && (!(steelSamplesFound[1])))){
steelSamplesFound[1] = true;
_local4 = true;
};
if ((((((((((p2.x == 260)) && ((p2.y == 280)))) && ((p1.x == 320)))) && ((p1.y == 380)))) && (!(steelSamplesFound[1])))){
steelSamplesFound[1] = true;
_local4 = true;
};
if ((((((((((p1.x == 320)) && ((p1.y == 380)))) && ((p2.x == 380)))) && ((p2.y == 280)))) && (!(steelSamplesFound[2])))){
steelSamplesFound[2] = true;
_local4 = true;
};
if ((((((((((p2.x == 320)) && ((p2.y == 380)))) && ((p1.x == 380)))) && ((p1.y == 280)))) && (!(steelSamplesFound[2])))){
steelSamplesFound[2] = true;
_local4 = true;
};
if ((((((((((p1.x == 380)) && ((p1.y == 280)))) && ((p2.x == 440)))) && ((p2.y == 380)))) && (!(steelSamplesFound[3])))){
steelSamplesFound[3] = true;
_local4 = true;
};
if ((((((((((p2.x == 380)) && ((p2.y == 280)))) && ((p1.x == 440)))) && ((p1.y == 380)))) && (!(steelSamplesFound[3])))){
steelSamplesFound[3] = true;
_local4 = true;
};
if ((((((((((p1.x == 260)) && ((p1.y == 280)))) && ((p2.x == 380)))) && ((p2.y == 280)))) && (!(steelSamplesFound[4])))){
steelSamplesFound[4] = true;
_local4 = true;
};
if ((((((((((p2.x == 260)) && ((p2.y == 280)))) && ((p1.x == 380)))) && ((p1.y == 280)))) && (!(steelSamplesFound[4])))){
steelSamplesFound[4] = true;
_local4 = true;
};
if (!_local4){
return;
};
} else {
return;
};
this.blockConnect = false;
_local2 = 0;
_local3 = 0;
while (_local3 < steelSamplesFound.length) {
if (steelSamplesFound[_local3]){
_local2++;
};
_local3++;
};
if (_local2 == 4){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "One more segment...";
} else {
this.phraseBaloon.text = "А теперь еще сегмент...";
};
return;
};
if (_local2 == 5){
this.currentPhase = "6u";
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase6d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase6u);
this.addEventListener(Config.EVENT_CONNECT_POINTS, phase7b, false, 0, true);
};
}
private function phase18b(_arg1:Event):void{
if (((((((((((!(this.phraseBaloon)) && ((this.currMode == Config.MODE_BUILDING)))) && (!(this.paused)))) && (!(this.tutorialMode)))) && (!(this.loaderScreen)))) && (!(this.islandText)))){
this.removeEventListener(Event.ENTER_FRAME, phase18b);
this.phase18a();
};
}
private function phase7c(_arg1:Event):void{
this.currentPhase = "7c";
this.phraseBaloon.removeEventListener(TalkBaloonAlt.EVENT_HIDDEN, phase7c);
this.phraseBaloon.removeEventListener(TalkBaloonAlt.EVENT_SKIP, phase9a);
this.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
this.addChild(this.phraseBaloon);
this.phraseBaloon.show();
this.blockConnect = true;
_grid.visible = false;
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Great! This bridge is definitely not going to bend. Let’s try it out!";
} else {
this.phraseBaloon.text = "Отлично! Этот мост точно не прогнется. Давайте это проверим!";
};
this.tutorialArrow = new TutorialArrow();
this.tutorialArrow.x = 45;
this.tutorialArrow.y = 75;
this.tutorialArrow.rotation = 0;
this.tutorialArrow.visible = true;
this.addChild(this.tutorialArrow);
_hud.startButton.reset();
_hud.startButton.addEventListener(Config.EVENT_START, phase8a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SKIP, phase9a, false, 0, true);
}
private function phase7b(_arg1:Event):void{
this.currentPhase = "7b";
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase7b);
this.blockConnect = true;
this.phraseBaloon.addEventListener(TalkBaloonAlt.EVENT_HIDDEN, phase7c, false, 0, true);
this.phraseBaloon.hide();
}
private function phase18a():void{
if (((((((((((this.phraseBaloon) || (!((this.currMode == Config.MODE_BUILDING))))) || (this.paused))) || (this.tutorialMode))) || (this.loaderScreen))) || (this.islandText))){
this.addEventListener(Event.ENTER_FRAME, phase18b, false, 0, true);
return;
};
this.dotsBaloon = new DotsBaloon();
this.dotsBaloon.x = this.chudik.particle.x;
this.dotsBaloon.y = this.chudik.particle.y;
this.addChild(this.dotsBaloon);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_SHOWED, phase19, false, 0, true);
this.addEventListener(Config.EVENT_START, phase20a, false, 0, true);
this.dotsBaloon.show();
this.dotsBaloon.addEventListener(Event.ENTER_FRAME, phase18aa, false, 0, true);
}
private function waitToIslandText(_arg1:Event):void{
if (!this.islandText){
this.removeEventListener(Event.ENTER_FRAME, waitToIslandText);
this.beginTutorial();
};
}
private function phase8a(_arg1:Event):void{
var _local2:SharedObject;
_hud.startButton.removeEventListener(Config.EVENT_START, phase8a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase9a);
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local2.data.passedTutorials){
_local2.data.passedTutorials[3] = true;
} else {
_local2.data.passedTutorials = [true, true, true, true, false];
};
_local2.flush();
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase8b, false, 0, true);
}
private function phase8b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase8b);
this.removeChild(this.phraseBaloon);
this.phraseBaloon = null;
this.unsetTutorialMode();
}
private function unsetTutorialMode():void{
var _local1:int;
this.tutorialMode = false;
if (this.currMode == Config.MODE_BUILDING){
_grid.visible = true;
_hud.deckButton.reset();
_hud.steelButton.reset();
_hud.ropeButton.reset();
_hud.startButton.reset();
_hud.editButton.reset();
_hud.editButton.hide(true);
_hud.stressButton.reset();
_hud.undoButton.reset();
_hud.resetButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
} else {
_hud.editButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
};
this.chudik.manualMode = false;
if (((sampleMaterials) && ((sampleMaterials.length > 0)))){
_local1 = 0;
while (_local1 < sampleMaterials.length) {
_layerEngine.removeChild(sampleMaterials[_local1]);
_local1++;
};
sampleMaterials = null;
};
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
this.phase18a();
}
private function prepareToBuildIt():void{
var _local1:int;
_grid.visible = true;
_hud.deckButton.hide();
_hud.steelButton.reset();
this.currMaterial = Config.MATERIAL_STEEL;
if (((sampleMaterials) && ((sampleMaterials.length > 0)))){
_local1 = 0;
while (_local1 < sampleMaterials.length) {
_layerEngine.removeChild(sampleMaterials[_local1]);
_local1++;
};
};
sampleMaterials = [];
sampleMaterials.push(this.makeSteelSprite(new Point(200, 380), new Point(260, 280)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = -60;
sampleMaterials[(sampleMaterials.length - 1)].x = (200 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = (380 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(260, 280), new Point(320, 380)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 60;
sampleMaterials[(sampleMaterials.length - 1)].x = ((260 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 5);
sampleMaterials[(sampleMaterials.length - 1)].y = (380 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(320, 380), new Point(380, 280)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = -60;
sampleMaterials[(sampleMaterials.length - 1)].x = (320 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = (380 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(380, 280), new Point(440, 380)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 60;
sampleMaterials[(sampleMaterials.length - 1)].x = (380 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = (280 + (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(260, 280), new Point(380, 280)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 0;
sampleMaterials[(sampleMaterials.length - 1)].x = (260 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = ((280 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2)) + 2);
sampleMaterials.push(new LinkElement(false, 1.5, 260, 280));
sampleMaterials.push(new LinkElement(false, 1.5, 320, 380));
sampleMaterials.push(new LinkElement(false, 1.5, 380, 280));
_local1 = 0;
while (_local1 < sampleMaterials.length) {
sampleMaterials[_local1].alpha = 0.5;
this._layerEngine.addChild(sampleMaterials[_local1]);
_local1++;
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase6d, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase6u, false, 0, true);
}
}
}//package levels
Section 218
//Level05 (levels.Level05)
package levels {
import flash.geom.*;
import core.*;
import flash.events.*;
import flash.net.*;
import vis.*;
import characters.*;
public class Level05 extends LevelManager {
private var dotsBaloon:DotsBaloon;
private var so:SharedObject;
private var steelSamplesFound:Array;
private var deckSamplesFound:Array;
private var timer:int;// = 0
private var tutorialArrow:TutorialArrow;
private var phase:int;// = 0
private var currentPhase:String;
private var sampleMaterials:Array;
private var p1:Point;
private var p2:Point;
private var chudik:Protagonist;
public function Level05(){
timer = 0;
phase = 0;
super();
}
private function phase9a(_arg1:Event):void{
var _local2:SharedObject;
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase9a);
if (this.currentPhase){
if ((((this.currentPhase == "1aa")) || ((this.currentPhase == "2ad")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase2ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase2au);
} else {
if (this.currentPhase == "2au"){
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase4b);
} else {
if ((((this.currentPhase == "5")) || ((this.currentPhase == "6d")))){
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase6d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase6u);
} else {
if (this.currentPhase == "6u"){
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase7b);
} else {
if (this.currentPhase == "7e"){
_hud.startButton.removeEventListener(Config.EVENT_START, phase8a);
};
};
};
};
};
};
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase8b, false, 0, true);
}
private function phase5(_arg1:Event):void{
var _local2:int;
this.currentPhase = "5";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase5);
this.phraseBaloon.type = TalkBaloonAlt.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Oh, wait. I’m afraid without unlimited funds we’ll just have to settle for a bridge that’s strong enough to walk on. I think this sample is the best we can do.";
} else {
this.phraseBaloon.text = "Думаю, вот так вполне подойдет.";
};
_grid.visible = true;
_hud.deckButton.hide();
_hud.steelButton.reset();
this.currMaterial = Config.MATERIAL_STEEL;
if (((sampleMaterials) && ((sampleMaterials.length > 0)))){
_local2 = 0;
while (_local2 < sampleMaterials.length) {
_layerEngine.removeChild(sampleMaterials[_local2]);
_local2++;
};
};
sampleMaterials = [];
sampleMaterials.push(this.makeSteelSprite(new Point(160, 320), new Point(220, 220)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = -60;
sampleMaterials[(sampleMaterials.length - 1)].x = (160 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = (320 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(220, 220), new Point(280, 320)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 60;
sampleMaterials[(sampleMaterials.length - 1)].x = ((220 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 5);
sampleMaterials[(sampleMaterials.length - 1)].y = (320 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(280, 320), new Point(340, 220)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = -60;
sampleMaterials[(sampleMaterials.length - 1)].x = (280 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = (320 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(340, 220), new Point(400, 320)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 60;
sampleMaterials[(sampleMaterials.length - 1)].x = ((340 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 5);
sampleMaterials[(sampleMaterials.length - 1)].y = (320 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(400, 320), new Point(460, 220)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = -60;
sampleMaterials[(sampleMaterials.length - 1)].x = (400 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = (320 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(460, 220), new Point(520, 320)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 60;
sampleMaterials[(sampleMaterials.length - 1)].x = ((460 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 5);
sampleMaterials[(sampleMaterials.length - 1)].y = (320 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(520, 320), new Point(580, 220)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = -60;
sampleMaterials[(sampleMaterials.length - 1)].x = (520 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = (320 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2));
sampleMaterials.push(this.makeSteelSprite(new Point(580, 220), new Point(620, 320)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 68;
sampleMaterials[(sampleMaterials.length - 1)].x = ((580 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 5);
sampleMaterials[(sampleMaterials.length - 1)].y = ((220 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2)) + 100);
sampleMaterials.push(this.makeSteelSprite(new Point(220, 220), new Point(340, 220)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 0;
sampleMaterials[(sampleMaterials.length - 1)].x = (220 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = ((220 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2)) + 2);
sampleMaterials.push(this.makeSteelSprite(new Point(340, 220), new Point(460, 220)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 0;
sampleMaterials[(sampleMaterials.length - 1)].x = (340 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = ((220 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2)) + 2);
sampleMaterials.push(this.makeSteelSprite(new Point(460, 220), new Point(580, 220)));
sampleMaterials[(sampleMaterials.length - 1)].rotation = 0;
sampleMaterials[(sampleMaterials.length - 1)].x = (460 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2));
sampleMaterials[(sampleMaterials.length - 1)].y = ((220 - (sampleMaterials[(sampleMaterials.length - 1)].height / 2)) + 2);
sampleMaterials.push(new LinkElement(false, 1.5, 280, 320));
sampleMaterials.push(new LinkElement(false, 1.5, 400, 320));
sampleMaterials.push(new LinkElement(false, 1.5, 520, 320));
sampleMaterials.push(new LinkElement(false, 1.5, 220, 220));
sampleMaterials.push(new LinkElement(false, 1.5, 340, 220));
sampleMaterials.push(new LinkElement(false, 1.5, 460, 220));
sampleMaterials.push(new LinkElement(false, 1.5, 580, 220));
_local2 = 0;
while (_local2 < sampleMaterials.length) {
sampleMaterials[_local2].alpha = 0.5;
this._layerEngine.addChild(sampleMaterials[_local2]);
_local2++;
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase6d, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase6u, false, 0, true);
}
private function overDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function outDotsBaloon(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function phase20a(_arg1:Event):void{
this.removeEventListener(Config.EVENT_START, phase20a);
if (this.dotsBaloon.hasEventListener(DotsBaloon.EVENT_SHOWED)){
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.CLICK)){
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OVER)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
};
if (this.dotsBaloon.hasEventListener(MouseEvent.MOUSE_OUT)){
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
};
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21a, false, 0, true);
this.dotsBaloon.hide();
}
private function phase2au(_arg1:Event):void{
var _local2:int;
var _local3:int;
var _local4:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local4 = false;
if ((((((((((p1.x == 160)) && ((p1.y == 320)))) && ((p2.x == 280)))) && ((p2.y == 320)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local4 = true;
};
if ((((((((((p2.x == 160)) && ((p2.y == 320)))) && ((p1.x == 280)))) && ((p1.y == 320)))) && (!(deckSamplesFound[0])))){
deckSamplesFound[0] = true;
_local4 = true;
};
if ((((((((((p1.x == 280)) && ((p1.y == 320)))) && ((p2.x == 400)))) && ((p2.y == 320)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local4 = true;
};
if ((((((((((p2.x == 280)) && ((p2.y == 320)))) && ((p1.x == 400)))) && ((p1.y == 320)))) && (!(deckSamplesFound[1])))){
deckSamplesFound[1] = true;
_local4 = true;
};
if ((((((((((p1.x == 400)) && ((p1.y == 320)))) && ((p2.x == 520)))) && ((p2.y == 320)))) && (!(deckSamplesFound[2])))){
deckSamplesFound[2] = true;
_local4 = true;
};
if ((((((((((p2.x == 400)) && ((p2.y == 320)))) && ((p1.x == 520)))) && ((p1.y == 320)))) && (!(deckSamplesFound[2])))){
deckSamplesFound[2] = true;
_local4 = true;
};
if ((((((((((p1.x == 520)) && ((p1.y == 320)))) && ((p2.x == 620)))) && ((p2.y == 320)))) && (!(deckSamplesFound[3])))){
deckSamplesFound[3] = true;
_local4 = true;
};
if ((((((((((p2.x == 520)) && ((p2.y == 320)))) && ((p1.x == 620)))) && ((p1.y == 320)))) && (!(deckSamplesFound[3])))){
deckSamplesFound[3] = true;
_local4 = true;
};
if (!_local4){
return;
};
} else {
return;
};
this.blockConnect = false;
_local2 = 0;
_local3 = 0;
while (_local3 < deckSamplesFound.length) {
if (deckSamplesFound[_local3]){
_local2++;
};
_local3++;
};
if (_local2 == (deckSamplesFound.length - 1)){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Good. One more deck segment...";
} else {
this.phraseBaloon.text = "Еще один сегмент...";
};
return;
};
if (_local2 == deckSamplesFound.length){
this.currentPhase = "2au";
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase2ad);
this.removeEventListener(MouseEvent.MOUSE_UP, phase2au);
this.addEventListener(Config.EVENT_CONNECT_POINTS, phase4b, false, 0, true);
};
}
private function phase18aa(_arg1:Event):void{
var _local2:Boolean;
var _local3:int;
if (!this.dotsBaloon){
return;
};
if (!_protagonists){
if (this.dotsBaloon){
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
};
return;
};
_local2 = false;
_local3 = 0;
while (_local3 < _protagonists.length) {
if ((_protagonists[_local3] as Protagonist).currentAction == Protagonist.JUMP){
_local2 = true;
break;
};
_local3++;
};
if (_local2){
this.dotsBaloon.hide();
} else {
this.dotsBaloon.show();
};
}
private function phase2ad(_arg1:Event):void{
this.currentPhase = "2ad";
p1 = new Point(_pointer.x, _pointer.y);
this.blockConnect = true;
}
private function phase1ab(_arg1:Event):void{
this.currentPhase = "1ab";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase1ab);
this.blockDelete = false;
this.reset();
this.blockDelete = true;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "As you can see, the gap between the banks is just too long. If you want to see the whole level you’ll need to scroll. Just click on any empty space and drag!";
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase1ac, false, 0, true);
} else {
this.phraseBaloon.text = "Как видите, расстояние между берегами здесь очень велико.";
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase1aba, false, 0, true);
};
}
private function phase1ad(_arg1:Event):void{
this.currentPhase = "1ad";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase1ad);
this.tutorialArrow.visible = false;
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase1aa, false, 0, true);
this.phraseBaloon.hide();
}
private function phase1aa(_arg1:Event):void{
var _local2:int;
this.currentPhase = "1aa";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase9a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase1aa);
this._layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon = new TalkBaloonAlt();
this.phraseBaloon.x = 60;
this.phraseBaloon.y = (Config.SCREEN_HEIGHT - 300);
this._layerEngine.addChild(this.phraseBaloon);
this.phraseBaloon.show();
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Now it’s time to build a bridge! Just follow the sample. Once you do that I’ll tell you how you can strengthen such a long bridge.";
} else {
this.phraseBaloon.text = "Ну а теперь займемся мостом. Воспользуемся примером.";
};
_grid.visible = true;
_hud.deckButton.reset();
this.currMaterial = Config.MATERIAL_DECK;
sampleMaterials = [];
sampleMaterials.push(this.makeDeckSprite(new Point(160, 320), new Point(280, 320)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((160 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 320;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(this.makeDeckSprite(new Point(280, 320), new Point(400, 320)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((280 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 320;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(this.makeDeckSprite(new Point(400, 320), new Point(520, 320)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((400 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 320;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(this.makeDeckSprite(new Point(520, 320), new Point(620, 320)));
sampleMaterials[(sampleMaterials.length - 1)].x = ((520 + (sampleMaterials[(sampleMaterials.length - 1)].width / 2)) - 3);
sampleMaterials[(sampleMaterials.length - 1)].y = 320;
sampleMaterials[(sampleMaterials.length - 1)].scaleY = -1.6;
sampleMaterials.push(new LinkElement(false, 1.5, 280, 320));
sampleMaterials.push(new LinkElement(false, 1.5, 400, 320));
sampleMaterials.push(new LinkElement(false, 1.5, 520, 320));
_local2 = 0;
while (_local2 < sampleMaterials.length) {
sampleMaterials[_local2].alpha = 0.5;
this._layerEngine.addChild(sampleMaterials[_local2]);
_local2++;
};
this.addEventListener(MouseEvent.MOUSE_DOWN, phase2ad, false, 0, true);
this.addEventListener(MouseEvent.MOUSE_UP, phase2au, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloonAlt.EVENT_SKIP, phase9a, false, 0, true);
}
private function phase1ac(_arg1:Event):void{
this.currentPhase = "1ac";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase1ac);
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Oh! I almost forgot! You can use the + and – buttons to zoom within the level!";
} else {
this.phraseBaloon.text = "А еще вы можете воспользоваться кнопками приближения и удаления!";
};
tutorialArrow = new TutorialArrow();
tutorialArrow.x = 70;
tutorialArrow.y = 420;
tutorialArrow.rotation = -90;
this.addChild(tutorialArrow);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase1ad, false, 0, true);
}
private function phase1aba(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase1aba);
this.phraseBaloon.text = "Чтобы вы могли осмотреть весь уровень, наведите курсор на пустое место, зажмите левую кнопку мыши и двигайте в нужном вам направлении!";
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase1ac, false, 0, true);
}
private function phase21a(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21a);
_layerEngine.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.phase18a();
}
private function phase19(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_SHOWED, phase19);
this.dotsBaloon.addEventListener(MouseEvent.CLICK, phase20, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon, false, 0, true);
this.dotsBaloon.addEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon, false, 0, true);
}
private function phase21(_arg1:Event):void{
this.dotsBaloon.removeEventListener(DotsBaloon.EVENT_HIDDEN, phase21);
_layerEngine.removeChild(this.dotsBaloon);
this.dotsBaloon = null;
this.beginTutorial();
}
private function phase20(_arg1:MouseEvent):void{
this.dotsBaloon.removeEventListener(MouseEvent.CLICK, phase20);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OVER, overDotsBaloon);
this.dotsBaloon.removeEventListener(MouseEvent.MOUSE_OUT, outDotsBaloon);
this.removeEventListener(Config.EVENT_START, phase20a);
this.dotsBaloon.removeEventListener(Event.ENTER_FRAME, phase18aa);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_HIDDEN, phase21, false, 0, true);
this.dotsBaloon.hide();
}
private function phase1a(_arg1:Event):void{
this.currentPhase = "1a";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_YES, phase1a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NO, phase1b);
this.blockDelete = false;
this.reset();
this.blockDelete = true;
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP_NEXT;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "First of all I can tell you about map scrolling system and several additional control elements.";
} else {
this.phraseBaloon.text = "Прежде всего, я хочу рассказать вам про новые элементы управления!";
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase1ab, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SKIP, phase9a, false, 0, true);
}
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
var _local5:Boolean;
_local2 = <level><surfaces>
<surface>
<point x="160" y="320" pin="true"/>
<point x="160" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
<point x="-20" y="320" pin="false"/>
</surface>
<surface>
<point x="620" y="320" pin="true"/>
<point x="620" y="500" pin="false"/>
<point x="860" y="500" pin="false"/>
<point x="860" y="320" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="20" y="280" width="80" height="40"/>
<zone type="finishzone" x="700" y="240" width="40" height="80"/>
</zones>
<grass>
<line><point x="-20" y="320"/><point x="160" y="320"/></line>
<line><point x="620" y="320"/><point x="860" y="320"/></line>
</grass>
<heroes>
<hero type="Prezer" x="60" y="295"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="233" ty="-84" type="3" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="-105" leftBorderX="0" rightBorderX="780" bottomBorderY="480"/>
<budget value="3700"/>
<weather value="weatherday"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 5;
_local5 = true;
so = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (so.size != 0){
if ((((so.data.passedTutorials is Array)) && ((so.data.passedTutorials.length > 4)))){
_local5 = !(so.data.passedTutorials[4]);
};
};
this.initLevel(_local4, _local5);
this.chudik = this._protagonists[0];
if (_local5){
this.beginTutorial();
} else {
this.phase18a();
};
}
private function phase1b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_YES, phase1a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NO, phase1b);
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase2b, false, 0, true);
}
private function phase2b(_arg1:Event):void{
var _local2:SharedObject;
this.currentPhase = "2b";
this.phraseBaloon.removeEventListener(TalkBaloonAlt.EVENT_HIDDEN, phase2b);
this._layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
_local2.data.passedTutorials = [true, true, true, true, true];
GAManager.trackPage((("/tutorial-" + this.levelNumber.toString()) + "-skipped"));
_local2.flush();
this.unsetTutorialMode();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function beginTutorial():void{
var _local1:Boolean;
this.setTutorialMode();
if (this.islandText){
this.addEventListener(Event.ENTER_FRAME, waitToIslandText, false, 0, true);
return;
};
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
this._layerEngine.addChild(this.phraseBaloon);
this.phraseBaloon.text = "";
_local1 = false;
if (so.data.introducedHeroes.indexOf("Prezer") == -1){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
_local1 = true;
} else {
this.phraseBaloon.textField.appendText("Я Грини! Спасибо, что помогаете нам! ");
};
so.data.introducedHeroes.push("Prezer");
so.flush();
};
this.phraseBaloon.type = TalkBaloon.TYPE_YES_NO;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
if (_local1){
this.phraseBaloon.textField.appendText("So close, yet so far... Oh, hello there! My name is Greeni. Can I help you?");
} else {
this.phraseBaloon.textField.appendText("So close, yet so far... Oh, hello there! Can I help you?");
};
} else {
this.phraseBaloon.textField.appendText("Как близко, казалось бы, и вместе с тем так далеко противоположный берег...\nОй. Нужна помощь?");
};
this.phraseBaloon.show();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_YES, phase1a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NO, phase1b, false, 0, true);
}
private function phase4b(_arg1:Event):void{
this.currentPhase = "4b";
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase4b);
this.blockConnect = true;
this.phraseBaloon.type = TalkBaloonAlt.TYPE_SKIP_NEXT;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Wonderful! And now, with the help of the steel material, we are going to build the strongest bridge ever!";
} else {
this.phraseBaloon.text = "Отлично! А теперь укрепим наш мост с помощью железных балок! ";
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase5, false, 0, true);
}
private function phase6d(_arg1:MouseEvent):void{
this.currentPhase = "6d";
p1 = new Point(_pointer.x, _pointer.y);
this.blockConnect = true;
}
private function setTutorialMode():void{
this.chudik = this._protagonists[0];
this.tutorialMode = true;
this.currMaterial = -1;
_grid.visible = false;
_hud.deckButton.hide();
_hud.steelButton.hide();
_hud.ropeButton.hide();
_hud.startButton.hide(false);
_hud.editButton.hide();
_hud.stressButton.hide();
_hud.undoButton.hide();
_hud.resetButton.hide();
this.blockConnect = true;
this.blockDelete = true;
deckSamplesFound = [false, false, false, false];
steelSamplesFound = [false, false, false, false, false, false, false, false, false, false, false];
}
private function phase6u(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
var _local4:Boolean;
p2 = new Point(_pointer.x, _pointer.y);
if (((_points) && ((_points.length > 0)))){
_local4 = false;
if ((((((((((p1.x == 160)) && ((p1.y == 320)))) && ((p2.x == 220)))) && ((p2.y == 220)))) && (!(steelSamplesFound[0])))){
steelSamplesFound[0] = true;
_local4 = true;
};
if ((((((((((p2.x == 160)) && ((p2.y == 320)))) && ((p1.x == 220)))) && ((p1.y == 220)))) && (!(steelSamplesFound[0])))){
steelSamplesFound[0] = true;
_local4 = true;
};
if ((((((((((p1.x == 220)) && ((p1.y == 220)))) && ((p2.x == 280)))) && ((p2.y == 320)))) && (!(steelSamplesFound[1])))){
steelSamplesFound[1] = true;
_local4 = true;
};
if ((((((((((p2.x == 220)) && ((p2.y == 220)))) && ((p1.x == 280)))) && ((p1.y == 320)))) && (!(steelSamplesFound[1])))){
steelSamplesFound[1] = true;
_local4 = true;
};
if ((((((((((p1.x == 280)) && ((p1.y == 320)))) && ((p2.x == 340)))) && ((p2.y == 220)))) && (!(steelSamplesFound[2])))){
steelSamplesFound[2] = true;
_local4 = true;
};
if ((((((((((p2.x == 280)) && ((p2.y == 320)))) && ((p1.x == 340)))) && ((p1.y == 220)))) && (!(steelSamplesFound[2])))){
steelSamplesFound[2] = true;
_local4 = true;
};
if ((((((((((p1.x == 340)) && ((p1.y == 220)))) && ((p2.x == 400)))) && ((p2.y == 320)))) && (!(steelSamplesFound[3])))){
steelSamplesFound[3] = true;
_local4 = true;
};
if ((((((((((p2.x == 340)) && ((p2.y == 220)))) && ((p1.x == 400)))) && ((p1.y == 320)))) && (!(steelSamplesFound[3])))){
steelSamplesFound[3] = true;
_local4 = true;
};
if ((((((((((p1.x == 400)) && ((p1.y == 320)))) && ((p2.x == 460)))) && ((p2.y == 220)))) && (!(steelSamplesFound[4])))){
steelSamplesFound[4] = true;
_local4 = true;
};
if ((((((((((p2.x == 400)) && ((p2.y == 320)))) && ((p1.x == 460)))) && ((p1.y == 220)))) && (!(steelSamplesFound[4])))){
steelSamplesFound[4] = true;
_local4 = true;
};
if ((((((((((p1.x == 460)) && ((p1.y == 220)))) && ((p2.x == 520)))) && ((p2.y == 320)))) && (!(steelSamplesFound[5])))){
steelSamplesFound[5] = true;
_local4 = true;
};
if ((((((((((p2.x == 460)) && ((p2.y == 220)))) && ((p1.x == 520)))) && ((p1.y == 320)))) && (!(steelSamplesFound[5])))){
steelSamplesFound[5] = true;
_local4 = true;
};
if ((((((((((p1.x == 520)) && ((p1.y == 320)))) && ((p2.x == 580)))) && ((p2.y == 220)))) && (!(steelSamplesFound[6])))){
steelSamplesFound[6] = true;
_local4 = true;
};
if ((((((((((p2.x == 520)) && ((p2.y == 320)))) && ((p1.x == 580)))) && ((p1.y == 220)))) && (!(steelSamplesFound[6])))){
steelSamplesFound[6] = true;
_local4 = true;
};
if ((((((((((p1.x == 580)) && ((p1.y == 220)))) && ((p2.x == 620)))) && ((p2.y == 320)))) && (!(steelSamplesFound[7])))){
steelSamplesFound[7] = true;
_local4 = true;
};
if ((((((((((p2.x == 580)) && ((p2.y == 220)))) && ((p1.x == 620)))) && ((p1.y == 320)))) && (!(steelSamplesFound[7])))){
steelSamplesFound[7] = true;
_local4 = true;
};
if ((((((((((p1.x == 220)) && ((p1.y == 220)))) && ((p2.x == 340)))) && ((p2.y == 220)))) && (!(steelSamplesFound[8])))){
steelSamplesFound[8] = true;
_local4 = true;
};
if ((((((((((p2.x == 220)) && ((p2.y == 220)))) && ((p1.x == 340)))) && ((p1.y == 220)))) && (!(steelSamplesFound[8])))){
steelSamplesFound[8] = true;
_local4 = true;
};
if ((((((((((p1.x == 340)) && ((p1.y == 220)))) && ((p2.x == 460)))) && ((p2.y == 220)))) && (!(steelSamplesFound[9])))){
steelSamplesFound[9] = true;
_local4 = true;
};
if ((((((((((p2.x == 340)) && ((p2.y == 220)))) && ((p1.x == 460)))) && ((p1.y == 220)))) && (!(steelSamplesFound[9])))){
steelSamplesFound[9] = true;
_local4 = true;
};
if ((((((((((p1.x == 460)) && ((p1.y == 220)))) && ((p2.x == 580)))) && ((p2.y == 220)))) && (!(steelSamplesFound[10])))){
steelSamplesFound[10] = true;
_local4 = true;
};
if ((((((((((p2.x == 460)) && ((p2.y == 220)))) && ((p1.x == 580)))) && ((p1.y == 220)))) && (!(steelSamplesFound[10])))){
steelSamplesFound[10] = true;
_local4 = true;
};
if (!_local4){
return;
};
} else {
return;
};
this.blockConnect = false;
_local2 = 0;
_local3 = 0;
while (_local3 < steelSamplesFound.length) {
if (steelSamplesFound[_local3]){
_local2++;
};
_local3++;
};
if (_local2 == (steelSamplesFound.length - 1)){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "And the last one...";
} else {
this.phraseBaloon.text = "И последний...";
};
return;
};
if (_local2 == steelSamplesFound.length){
this.currentPhase = "6u";
this.removeEventListener(MouseEvent.MOUSE_DOWN, phase6d);
this.removeEventListener(MouseEvent.MOUSE_UP, phase6u);
this.addEventListener(Config.EVENT_CONNECT_POINTS, phase7b, false, 0, true);
};
}
private function phase18b(_arg1:Event):void{
if (((((((((((!(this.phraseBaloon)) && ((this.currMode == Config.MODE_BUILDING)))) && (!(this.paused)))) && (!(this.tutorialMode)))) && (!(this.loaderScreen)))) && (!(this.islandText)))){
this.removeEventListener(Event.ENTER_FRAME, phase18b);
this.phase18a();
};
}
private function phase7c(_arg1:Event):void{
this.currentPhase = "7c";
this.phraseBaloon.removeEventListener(TalkBaloonAlt.EVENT_HIDDEN, phase7c);
this.phraseBaloon.removeEventListener(TalkBaloonAlt.EVENT_SKIP, phase9a);
this._layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon.cleanup();
this.phraseBaloon = null;
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.x = this.chudik.x;
this.phraseBaloon.y = this.chudik.y;
this._layerEngine.addChild(this.phraseBaloon);
this.phraseBaloon.show();
this.blockConnect = true;
_grid.visible = false;
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP_NEXT;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = (("That’s it! Now I can cross this gap safely! Thank you very much, " + this.playerName) + "!");
} else {
this.phraseBaloon.text = (("Вот и все! Теперь я смогу перебраться на противоположную сторону! Большое спасибо вам, " + this.playerName) + "!");
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SKIP, phase9a, false, 0, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase7d, false, 0, true);
}
private function phase7d(_arg1:Event):void{
this.currentPhase = "7d";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase7d);
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP_NEXT;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "And it seems, my friend and I have told you everything we know, but if you need something you can always check the Help section from the menu. Thanks so much for helping us!";
} else {
this.phraseBaloon.text = "Я и мои друзья рассказали вам, все, что мы знаем. Но если вам что-то понадобится, вы всегда можете посмотреть раздел помощи!";
};
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_NEXT, phase7e, false, 0, true);
}
private function phase7e(_arg1:Event):void{
this.currentPhase = "7e";
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_NEXT, phase7e);
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
this.phraseBaloon.type = TalkBaloon.TYPE_SKIP;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Oh. One more request if you don’t mind. Please, click on the Start button! ^_^";
} else {
this.phraseBaloon.text = "Ой, еще одна просьба... Нажмите, пожалуйста, на большую зеленую кнопку.";
};
this.tutorialArrow = new TutorialArrow();
this.tutorialArrow.x = 45;
this.tutorialArrow.y = 75;
this.tutorialArrow.rotation = 0;
this.tutorialArrow.visible = true;
this.addChild(this.tutorialArrow);
_hud.startButton.reset();
_hud.startButton.addEventListener(Config.EVENT_START, phase8a, false, 0, true);
}
private function phase7b(_arg1:Event):void{
this.currentPhase = "7b";
this.removeEventListener(Config.EVENT_CONNECT_POINTS, phase7b);
this.blockConnect = true;
this.phraseBaloon.addEventListener(TalkBaloonAlt.EVENT_HIDDEN, phase7c, false, 0, true);
this.phraseBaloon.hide();
}
private function phase18a():void{
if (((((((((((this.phraseBaloon) || (!((this.currMode == Config.MODE_BUILDING))))) || (this.paused))) || (this.tutorialMode))) || (this.loaderScreen))) || (this.islandText))){
this.addEventListener(Event.ENTER_FRAME, phase18b, false, 0, true);
return;
};
this.dotsBaloon = new DotsBaloon();
this.dotsBaloon.x = this.chudik.particle.x;
this.dotsBaloon.y = this.chudik.particle.y;
_layerEngine.addChild(this.dotsBaloon);
this.dotsBaloon.addEventListener(DotsBaloon.EVENT_SHOWED, phase19, false, 0, true);
this.addEventListener(Config.EVENT_START, phase20a, false, 0, true);
this.dotsBaloon.show();
this.dotsBaloon.addEventListener(Event.ENTER_FRAME, phase18aa, false, 0, true);
}
private function waitToIslandText(_arg1:Event):void{
if (!this.islandText){
this.removeEventListener(Event.ENTER_FRAME, waitToIslandText);
this.beginTutorial();
};
}
private function phase8a(_arg1:Event):void{
var _local2:SharedObject;
_hud.startButton.removeEventListener(Config.EVENT_START, phase8a);
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SKIP, phase9a);
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
_local2 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local2.data.passedTutorials){
_local2.data.passedTutorials[4] = true;
} else {
_local2.data.passedTutorials = [true, true, true, true, true];
};
_local2.flush();
this.phraseBaloon.hide();
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, phase8b, false, 0, true);
}
private function phase8b(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, phase8b);
this._layerEngine.removeChild(this.phraseBaloon);
this.phraseBaloon = null;
this.unsetTutorialMode();
}
private function unsetTutorialMode():void{
var _local1:int;
this.tutorialMode = false;
if (this.currMode == Config.MODE_BUILDING){
_grid.visible = true;
_hud.deckButton.reset();
_hud.steelButton.reset();
_hud.ropeButton.reset();
_hud.startButton.reset();
_hud.editButton.reset();
_hud.editButton.hide(true);
_hud.stressButton.reset();
_hud.undoButton.reset();
_hud.resetButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
} else {
_hud.editButton.reset();
this.currMaterial = 1;
this.blockConnect = false;
this.blockDelete = false;
};
this.chudik.manualMode = false;
if (((sampleMaterials) && ((sampleMaterials.length > 0)))){
_local1 = 0;
while (_local1 < sampleMaterials.length) {
_layerEngine.removeChild(sampleMaterials[_local1]);
_local1++;
};
sampleMaterials = null;
};
if (this.tutorialArrow){
this.removeChild(this.tutorialArrow);
this.tutorialArrow = null;
};
this.phase18a();
}
}
}//package levels
Section 219
//Level06 (levels.Level06)
package levels {
public class Level06 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="400" pin="false"/>
<point x="40" y="320" pin="false"/>
<point x="100" y="280" pin="false"/>
<point x="140" y="220" pin="false"/>
<point x="240" y="220" pin="true"/>
<point x="240" y="300" pin="true"/>
<point x="220" y="320" pin="false"/>
<point x="180" y="340" pin="false"/>
<point x="140" y="400" pin="false"/>
<point x="80" y="460" pin="false"/>
<point x="60" y="500" pin="false"/>
<point x="-40" y="520" pin="false"/>
</surface>
<surface>
<point x="500" y="220" pin="true"/>
<point x="460" y="300" pin="true"/>
<point x="420" y="360" pin="false"/>
<point x="300" y="440" pin="false"/>
<point x="260" y="500" pin="false"/>
<point x="420" y="500" pin="false"/>
<point x="520" y="440" pin="false"/>
<point x="540" y="360" pin="false"/>
<point x="580" y="320" pin="false"/>
<point x="660" y="280" pin="false"/>
<point x="660" y="220" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="520" y="180" width="80" height="40"/>
<zone type="rightzone" x="160" y="160" width="80" height="60"/>
</zones>
<grass>
<line>
<point x="-20" y="400" pin="false"/>
<point x="40" y="320" pin="false"/>
</line>
<line>
<point x="40" y="320" pin="false"/>
<point x="100" y="280" pin="false"/>
</line>
<line>
<point x="100" y="280" pin="false"/>
<point x="140" y="220" pin="false"/>
</line>
<line>
<point x="140" y="220" pin="false"/>
<point x="240" y="220" pin="true"/>
</line>
<line>
<point x="260" y="500" pin="false"/>
<point x="300" y="440" pin="true"/>
</line>
<line>
<point x="300" y="440" pin="true"/>
<point x="420" y="360" pin="true"/>
</line>
<line>
<point x="420" y="360" pin="true"/>
<point x="460" y="300" pin="true"/>
</line>
<line>
<point x="460" y="300" pin="true"/>
<point x="500" y="220" pin="true"/>
</line>
<line>
<point x="500" y="220" pin="true"/>
<point x="660" y="220" pin="false"/>
</line>
</grass>
<heroes>
<hero type="Sinyak" x="200" y="195"/>
</heroes>
<sprites>
<sprite a="0.5" b="0" c="0" d="0.5" tx="150" ty="100" type="8" layer="3"/>
</sprites>
<borders waterLineY="380" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="1500"/>
<weather value="weatherday"/>
<difficulty value="1"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 6;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 220
//Level07 (levels.Level07)
package levels {
public class Level07 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="180" pin="false"/>
<point x="100" y="180" pin="false"/>
<point x="620" y="340" pin="true"/>
<point x="620" y="380" pin="true"/>
<point x="620" y="460" pin="false"/>
<point x="620" y="540" pin="false"/>
<point x="-20" y="700" pin="false"/>
</surface>
<surface>
<point x="800" y="400" pin="false"/>
<point x="820" y="620" pin="false"/>
<point x="1000" y="620" pin="false"/>
<point x="1000" y="400" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="20" y="140" width="40" height="40"/>
<zone type="finishzone" x="880" y="260" width="40" height="140"/>
</zones>
<grass>
<line><point x="100" y="180"/><point x="620" y="340"/></line>
<line><point x="800" y="400"/><point x="1000" y="400"/></line>
</grass>
<heroes>
<hero type="Glazan" x="40" y="155"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="460" upperBorderY="-135" leftBorderX="0" rightBorderX="980" bottomBorderY="600"/>
<budget value="500"/>
<weather value=""/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 7;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 221
//Level08 (levels.Level08)
package levels {
public class Level08 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="100" y="240" pin="false"/>
<point x="180" y="140" pin="false"/>
<point x="300" y="140" pin="true"/>
<point x="300" y="240" pin="false"/>
</surface>
<surface>
<point x="20" y="0" pin="false"/>
<point x="-20" y="0" pin="false"/>
<point x="-20" y="500" pin="false"/>
<point x="40" y="500" pin="false"/>
<point x="220" y="500" pin="false"/>
<point x="200" y="340" pin="true"/>
<point x="20" y="300" pin="false"/>
</surface>
<surface>
<point x="480" y="300" pin="true"/>
<point x="500" y="320" pin="false"/>
<point x="480" y="360" pin="false"/>
<point x="460" y="400" pin="false"/>
<point x="480" y="420" pin="false"/>
<point x="500" y="440" pin="false"/>
<point x="480" y="460" pin="false"/>
<point x="460" y="480" pin="false"/>
<point x="460" y="500" pin="false"/>
<point x="520" y="500" pin="false"/>
<point x="680" y="500" pin="false"/>
<point x="680" y="300" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="120" y="120" width="40" height="90"/>
<zone type="finishzone" x="560" y="220" width="40" height="80"/>
</zones>
<grass>
<line><point x="100" y="240"/><point x="180" y="140"/></line>
<line><point x="20" y="300"/><point x="200" y="340"/></line>
<line><point x="480" y="300"/><point x="680" y="300"/></line>
</grass>
<heroes>
<hero type="Sinyak" x="140" y="140"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="-15" leftBorderX="0" rightBorderX="660" bottomBorderY="480"/>
<budget value="1500"/>
<weather value=""/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 8;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 222
//Level09 (levels.Level09)
package levels {
public class Level09 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="260" pin="false"/>
<point x="140" y="260" pin="false"/>
<point x="240" y="280" pin="true"/>
<point x="240" y="340" pin="true"/>
<point x="220" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="720" y="280" pin="true"/>
<point x="700" y="340" pin="false"/>
<point x="720" y="460" pin="false"/>
<point x="740" y="500" pin="false"/>
<point x="1040" y="500" pin="false"/>
<point x="1040" y="280" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="60" y="220" width="40" height="40"/>
<zone type="finishzone" x="780" y="220" width="40" height="60"/>
</zones>
<grass>
<line><point x="140" y="260"/><point x="240" y="280"/></line>
<line><point x="720" y="280"/><point x="1040" y="280"/></line>
</grass>
<heroes>
<hero type="Glazan" x="80" y="235"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="331" ty="121" type="11" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="-225" leftBorderX="0" rightBorderX="940" bottomBorderY="480"/>
<budget value="3500"/>
<weather value="weatherday"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 9;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 223
//Level10 (levels.Level10)
package levels {
public class Level10 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="200" pin="false"/>
<point x="160" y="200" pin="false"/>
<point x="160" y="220" pin="false"/>
<point x="120" y="240" pin="true"/>
<point x="60" y="260" pin="false"/>
<point x="40" y="340" pin="false"/>
<point x="-20" y="420" pin="false"/>
</surface>
<surface>
<point x="160" y="540" pin="true" hook="true" onlysteel="true" hookdirectionx="1" hookdirectiony="-1" hookrotation="0"/>
</surface>
<surface>
<point x="520" y="540" pin="true"/>
<point x="520" y="560" pin="false"/>
<point x="560" y="600" pin="false"/>
<point x="560" y="660" pin="false"/>
<point x="580" y="740" pin="false"/>
<point x="800" y="740" pin="false"/>
<point x="800" y="540" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="660" y="460" width="40" height="80"/>
<zone type="rightzone" x="40" y="160" width="40" height="40"/>
</zones>
<grass>
<line><point x="520" y="540"/><point x="800" y="540"/></line>
</grass>
<heroes>
<hero type="Glazan" x="60" y="175"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="640" upperBorderY="0" leftBorderX="0" rightBorderX="740" bottomBorderY="700"/>
<budget value="3000"/>
<weather value=""/>
<difficulty value="3"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 10;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 224
//Level11 (levels.Level11)
package levels {
public class Level11 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="200" y="280" pin="false"/>
<point x="200" y="300" pin="false"/>
<point x="180" y="300" pin="false"/>
<point x="180" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="340" y="320" pin="false"/>
<point x="340" y="500" pin="false"/>
<point x="680" y="500" pin="false"/>
<point x="680" y="320" pin="false"/>
</surface>
<surface>
<point x="260" y="200" pin="true" hook="true" onlysteel="false" hookdirectionx="1" hookdirectiony="1" hookrotation="0"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="460" y="280" width="40" height="40"/>
<zone type="rightzone" x="60" y="240" width="40" height="40"/>
</zones>
<grass>
<line><point x="340" y="320"/><point x="680" y="320"/></line>
</grass>
<heroes>
<hero type="Prezer" x="80" y="255"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="1100"/>
<weather value="weatherday"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 11;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 225
//Level12 (levels.Level12)
package levels {
public class Level12 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-40" y="180" pin="false"/>
<point x="180" y="180" pin="true"/>
<point x="180" y="500" pin="false"/>
<point x="-40" y="500" pin="false"/>
</surface>
<surface>
<point x="360" y="-160" pin="false"/>
<point x="740" y="-160" pin="false"/>
<point x="740" y="100" pin="false"/>
<point x="520" y="120" pin="true"/>
<point x="360" y="40" pin="true"/>
</surface>
<surface>
<point x="580" y="500" pin="false"/>
<point x="580" y="400" pin="false"/>
<point x="740" y="400" pin="false"/>
<point x="740" y="500" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="600" y="340" width="100" height="60"/>
<zone type="rightzone" x="40" y="80" width="140" height="100"/>
</zones>
<grass>
</grass>
<heroes>
<hero type="Sinyak" x="100" y="155"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="420" upperBorderY="-120" leftBorderX="-40" rightBorderX="740" bottomBorderY="460"/>
<budget value="1700"/>
<weather value="weatherday"/>
<difficulty value="1"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 12;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 226
//Level13 (levels.Level13)
package levels {
public class Level13 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="100" y="280" pin="false"/>
<point x="200" y="260" pin="true"/>
<point x="260" y="320" pin="false"/>
<point x="300" y="260" pin="false"/>
<point x="320" y="420" pin="false"/>
<point x="260" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="500" y="220" pin="false"/>
<point x="520" y="300" pin="false"/>
<point x="480" y="380" pin="false"/>
<point x="500" y="480" pin="false"/>
<point x="520" y="500" pin="false"/>
<point x="540" y="500" pin="false"/>
<point x="660" y="500" pin="false"/>
<point x="660" y="220" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="40" y="240" width="40" height="40"/>
<zone type="finishzone" x="580" y="180" width="40" height="40"/>
</zones>
<grass>
<line><point x="-20" y="280"/><point x="100" y="280"/></line>
<line><point x="100" y="280"/><point x="200" y="260"/></line>
<line><point x="200" y="260"/><point x="250" y="310"/></line>
<line><point x="270" y="310"/><point x="300" y="260"/></line>
<line><point x="500" y="220"/><point x="660" y="220"/></line>
</grass>
<heroes>
<hero type="Cvetok" x="60" y="255"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="2000"/>
<weather value="weatherday"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 13;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 227
//Level14 (levels.Level14)
package levels {
public class Level14 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="220" pin="false"/>
<point x="160" y="220" pin="false"/>
<point x="160" y="260" pin="false"/>
<point x="120" y="260" pin="false"/>
<point x="100" y="300" pin="true"/>
<point x="120" y="340" pin="false"/>
<point x="160" y="340" pin="false"/>
<point x="160" y="560" pin="false"/>
<point x="-20" y="560" pin="false"/>
</surface>
<surface>
<point x="520" y="220" pin="true"/>
<point x="520" y="500" pin="false"/>
<point x="680" y="500" pin="false"/>
<point x="680" y="220" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="40" y="180" width="40" height="40"/>
<zone type="finishzone" x="560" y="180" width="40" height="40"/>
</zones>
<grass>
<line><point x="520" y="220"/><point x="680" y="220"/></line>
</grass>
<heroes>
<hero type="Glazan" x="60" y="195"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="302" ty="7" type="15" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="3500"/>
<weather value="weatherday"/>
<difficulty value="3"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 14;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 228
//Level15 (levels.Level15)
package levels {
public class Level15 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="320" pin="false"/>
<point x="180" y="320" pin="false"/>
<point x="180" y="340" pin="true"/>
<point x="180" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="480" y="320" pin="false"/>
<point x="660" y="320" pin="false"/>
<point x="660" y="500" pin="false"/>
<point x="480" y="500" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="20" y="280" width="80" height="40"/>
<zone type="finishzone" x="560" y="240" width="40" height="80"/>
</zones>
<grass>
</grass>
<heroes>
<hero type="Sinyak" x="60" y="295"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="71" ty="-326" type="10" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="3000"/>
<weather value="weathernight"/>
<difficulty value="3"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 15;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 229
//Level16 (levels.Level16)
package levels {
public class Level16 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="160" y="280" pin="true"/>
<point x="160" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="500" y="240" pin="false"/>
<point x="500" y="500" pin="false"/>
<point x="660" y="500" pin="false"/>
<point x="660" y="240" pin="false"/>
</surface>
<surface>
<point x="260" y="260" pin="true" hook="true" onlysteel="true" hookdirectionx="1" hookdirectiony="-1" hookrotation="0"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="560" y="160" width="40" height="80"/>
<zone type="rightzone" x="40" y="240" width="40" height="40"/>
</zones>
<grass>
<line><point x="500" y="240"/><point x="660" y="240"/></line>
</grass>
<heroes>
<hero type="Glazan" x="60" y="255"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="172" ty="-50" type="5" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="3000"/>
<weather value=""/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 16;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 230
//Level17 (levels.Level17)
package levels {
public class Level17 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="160" y="280" pin="true"/>
<point x="160" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="460" y="220" pin="false"/>
<point x="460" y="280" pin="true"/>
<point x="460" y="500" pin="false"/>
<point x="640" y="500" pin="false"/>
<point x="640" y="220" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="60" y="240" width="40" height="40"/>
<zone type="finishzone" x="560" y="180" width="40" height="40"/>
</zones>
<grass>
<line><point x="460" y="220"/><point x="640" y="220"/></line>
</grass>
<heroes>
<hero type="Sinyak" x="80" y="255"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="4000"/>
<weather value="weatherday"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 17;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 231
//Level18 (levels.Level18)
package levels {
public class Level18 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="260" pin="false"/>
<point x="100" y="260" pin="false"/>
<point x="200" y="340" pin="true"/>
<point x="420" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="440" y="340" pin="false"/>
<point x="440" y="480" pin="false"/>
<point x="760" y="480" pin="false"/>
<point x="760" y="340" pin="false"/>
</surface>
<surface>
<point x="340" y="160" pin="true"/>
<point x="760" y="160" pin="false"/>
<point x="760" y="-20" pin="false"/>
<point x="760" y="-40" pin="false"/>
<point x="760" y="-60" pin="false"/>
<point x="760" y="-80" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="40" y="220" width="40" height="40"/>
<zone type="finishzone" x="580" y="300" width="40" height="40"/>
</zones>
<grass>
<line><point x="100" y="260"/><point x="420" y="500"/></line>
<line><point x="440" y="340"/><point x="760" y="340"/></line>
<line><point x="340" y="160"/><point x="760" y="-80"/></line>
</grass>
<heroes>
<hero type="Sinyak" x="60" y="235"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="33" ty="-91" type="5" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="720" bottomBorderY="480"/>
<budget value="2000"/>
<weather value="weatherday"/>
<difficulty value="1"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 18;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 232
//Level19 (levels.Level19)
package levels {
public class Level19 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-80" y="140" pin="false"/>
<point x="120" y="140" pin="true"/>
<point x="120" y="240" pin="false"/>
<point x="100" y="300" pin="false"/>
<point x="80" y="380" pin="false"/>
<point x="80" y="440" pin="false"/>
<point x="80" y="500" pin="false"/>
<point x="-40" y="500" pin="false"/>
</surface>
<surface>
<point x="240" y="300" pin="true"/>
<point x="200" y="340" pin="false"/>
<point x="180" y="460" pin="false"/>
<point x="180" y="500" pin="false"/>
<point x="340" y="500" pin="false"/>
<point x="340" y="300" pin="true"/>
</surface>
<surface>
<point x="520" y="260" pin="true"/>
<point x="520" y="320" pin="false"/>
<point x="540" y="380" pin="false"/>
<point x="540" y="460" pin="false"/>
<point x="540" y="500" pin="false"/>
<point x="660" y="500" pin="false"/>
<point x="660" y="240" pin="false"/>
<point x="660" y="-140" pin="false"/>
<point x="580" y="100" pin="false"/>
<point x="580" y="160" pin="false"/>
<point x="620" y="200" pin="false"/>
<point x="640" y="260" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="540" y="200" width="40" height="60"/>
<zone type="rightzone" x="40" y="100" width="80" height="40"/>
</zones>
<grass>
<line><point x="200" y="340"/><point x="240" y="300"/></line>
<line><point x="240" y="300"/><point x="340" y="300"/></line>
<line><point x="520" y="260"/><point x="640" y="260"/></line>
</grass>
<heroes>
<hero type="Prezer" x="80" y="115"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="3000"/>
<weather value="weathercloudy"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 19;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 233
//Level20 (levels.Level20)
package levels {
public class Level20 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="140" y="280" pin="false"/>
<point x="140" y="300" pin="false"/>
<point x="160" y="300" pin="false"/>
<point x="200" y="340" pin="true"/>
<point x="240" y="380" pin="false"/>
<point x="260" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="500" y="280" pin="true"/>
<point x="500" y="500" pin="false"/>
<point x="680" y="500" pin="false"/>
<point x="680" y="320" pin="false"/>
<point x="680" y="280" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="60" y="240" width="40" height="40"/>
<zone type="finishzone" x="560" y="240" width="40" height="40"/>
</zones>
<grass>
<line><point x="140" y="300"/><point x="160" y="300"/></line>
<line><point x="160" y="300"/><point x="240" y="380"/></line>
<line><point x="500" y="280"/><point x="680" y="280"/></line>
</grass>
<heroes>
<hero type="Sinyak" x="80" y="255"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="1900"/>
<weather value="weatherday"/>
<difficulty value="3"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 20;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 234
//Level21 (levels.Level21)
package levels {
public class Level21 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="180" y="280" pin="true"/>
<point x="180" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="940" y="280" pin="true"/>
<point x="940" y="500" pin="false"/>
<point x="1140" y="500" pin="false"/>
<point x="1140" y="280" pin="false"/>
</surface>
<surface>
<point x="760" y="380" pin="true" hook="true" onlysteel="true" hookdirectionx="-1" hookdirectiony="-1" hookrotation="0"/>
</surface>
<surface>
<point x="360" y="380" pin="true" hook="true" onlysteel="true" hookdirectionx="1" hookdirectiony="-1" hookrotation="0"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="40" y="240" width="80" height="40"/>
<zone type="finishzone" x="1040" y="160" width="40" height="120"/>
</zones>
<grass>
<line><point x="940" y="280"/><point x="1140" y="280"/></line>
</grass>
<heroes>
<hero type="Glazan" x="80" y="255"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="158" ty="-101" type="5" layer="2"/>
<sprite a="1" b="0" c="0" d="1" tx="486" ty="138" type="7" layer="3"/>
</sprites>
<borders waterLineY="400" upperBorderY="-345" leftBorderX="0" rightBorderX="1100" bottomBorderY="480"/>
<budget value="6100"/>
<weather value="weathernight"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 21;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 235
//Level22 (levels.Level22)
package levels {
public class Level22 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-40" y="140" pin="false"/>
<point x="80" y="300" pin="false"/>
<point x="180" y="300" pin="true"/>
<point x="80" y="380" pin="false"/>
<point x="20" y="460" pin="false"/>
<point x="20" y="500" pin="false"/>
<point x="-80" y="500" pin="false"/>
</surface>
<surface>
<point x="460" y="380" pin="false"/>
<point x="500" y="420" pin="false"/>
<point x="520" y="500" pin="false"/>
<point x="660" y="500" pin="false"/>
<point x="660" y="120" pin="false"/>
<point x="600" y="200" pin="false"/>
<point x="580" y="280" pin="false"/>
<point x="560" y="300" pin="false"/>
<point x="440" y="300" pin="true"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="80" y="240" width="100" height="60"/>
<zone type="finishzone" x="460" y="260" width="100" height="40"/>
</zones>
<grass>
<line><point x="-40" y="140"/><point x="80" y="300"/></line>
<line><point x="80" y="300"/><point x="180" y="300"/></line>
<line><point x="440" y="300"/><point x="560" y="300"/></line>
<line><point x="560" y="300"/><point x="580" y="280"/></line>
<line><point x="580" y="280"/><point x="600" y="200"/></line>
<line><point x="600" y="200"/><point x="660" y="120"/></line>
</grass>
<heroes>
<hero type="Larin" x="120" y="275"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="158" ty="-8" type="3" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="1700"/>
<weather value=""/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 22;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 236
//Level23 (levels.Level23)
package levels {
public class Level23 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="200" pin="false"/>
<point x="180" y="200" pin="true"/>
<point x="180" y="240" pin="false"/>
<point x="120" y="280" pin="false"/>
<point x="20" y="320" pin="false"/>
<point x="-20" y="320" pin="false"/>
</surface>
<surface>
<point x="540" y="860" pin="false"/>
<point x="540" y="1060" pin="false"/>
<point x="700" y="1060" pin="false"/>
<point x="700" y="0" pin="false"/>
<point x="680" y="0" pin="false"/>
<point x="680" y="860" pin="false"/>
</surface>
<surface>
<point x="520" y="120" pin="true" hook="true" onlysteel="false" hookdirectionx="-1" hookdirectiony="1" hookrotation="0"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="580" y="820" width="120" height="40"/>
<zone type="rightzone" x="60" y="140" width="40" height="60"/>
</zones>
<grass>
<line><point x="540" y="860"/><point x="660" y="860"/></line>
</grass>
<heroes>
<hero type="Glazan" x="80" y="175"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="113" ty="211" type="10" layer="2"/>
</sprites>
<borders waterLineY="940" upperBorderY="-80" leftBorderX="0" rightBorderX="660" bottomBorderY="1020"/>
<budget value="2500"/>
<weather value=""/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 23;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 237
//Level24 (levels.Level24)
package levels {
public class Level24 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="200" y="280" pin="true"/>
<point x="180" y="520" pin="false"/>
<point x="-20" y="520" pin="false"/>
</surface>
<surface>
<point x="580" y="240" pin="false"/>
<point x="820" y="200" pin="false"/>
<point x="700" y="500" pin="false"/>
<point x="540" y="500" pin="false"/>
<point x="420" y="240" pin="false"/>
</surface>
<surface>
<point x="420" y="20" pin="false"/>
<point x="260" y="100" pin="true"/>
<point x="160" y="100" pin="false"/>
<point x="80" y="-40" pin="false"/>
<point x="340" y="-100" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="80" y="240" width="40" height="40"/>
<zone type="finishzone" x="540" y="180" width="40" height="60"/>
</zones>
<grass>
<line><point x="420" y="240"/><point x="580" y="240"/></line>
<line><point x="580" y="240"/><point x="800" y="200"/></line>
</grass>
<heroes>
<hero type="Sinyak" x="100" y="255"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="1500"/>
<weather value="weatherday"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 24;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 238
//Level25 (levels.Level25)
package levels {
public class Level25 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="220" y="280" pin="false"/>
<point x="220" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="460" y="280" pin="false"/>
<point x="460" y="500" pin="false"/>
<point x="680" y="500" pin="false"/>
<point x="680" y="280" pin="false"/>
</surface>
<surface>
<point x="40" y="240" pin="true" hook="true" onlysteel="true" hookdirectionx="-1" hookdirectiony="-1" hookrotation="+20"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="100" y="240" width="40" height="40"/>
<zone type="finishzone" x="560" y="220" width="40" height="60"/>
</zones>
<grass>
<line><point x="460" y="280"/><point x="680" y="280"/></line>
</grass>
<heroes>
<hero type="Sinyak" x="120" y="255"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="196" ty="131" type="11" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="5000"/>
<weather value="weatherday"/>
<difficulty value="3"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 25;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 239
//Level26 (levels.Level26)
package levels {
public class Level26 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="160" y="280" pin="true"/>
<point x="160" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="520" y="280" pin="false"/>
<point x="520" y="500" pin="false"/>
<point x="720" y="500" pin="false"/>
<point x="720" y="280" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="620" y="200" width="40" height="80"/>
<zone type="rightzone" x="20" y="240" width="140" height="40"/>
</zones>
<grass>
<line><point x="520" y="280"/><point x="720" y="280"/></line>
</grass>
<heroes>
<hero type="Cvetok" x="40" y="255"/>
<hero type="Glazan" x="80" y="255"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="189" ty="123" type="7" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="-45" leftBorderX="0" rightBorderX="700" bottomBorderY="480"/>
<budget value="4500"/>
<weather value=""/>
<difficulty value="3"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 26;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 240
//Level27 (levels.Level27)
package levels {
public class Level27 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="400" y="400" pin="false"/>
<point x="660" y="400" pin="false"/>
<point x="660" y="780" pin="false"/>
<point x="540" y="760" pin="false"/>
<point x="480" y="660" pin="false"/>
<point x="420" y="480" pin="false"/>
</surface>
<surface>
<point x="120" y="340" pin="false"/>
<point x="20" y="340" pin="false"/>
<point x="20" y="380" pin="false"/>
<point x="120" y="380" pin="false"/>
</surface>
<surface>
<point x="780" y="120" pin="true" hook="true" onlysteel="false" hookdirectionx="-1" hookdirectiony="1" hookrotation="30"/>
</surface>
<surface>
<point x="780" y="-160" pin="true" hook="true" onlysteel="false" hookdirectionx="-1" hookdirectiony="1" hookrotation="0"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="440" y="320" width="100" height="80"/>
<zone type="rightzone" x="20" y="140" width="100" height="200"/>
</zones>
<grass>
</grass>
<heroes>
<hero type="Larin" x="100" y="200"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="500" upperBorderY="-240" leftBorderX="0" rightBorderX="860" bottomBorderY="480"/>
<budget value="3800"/>
<weather value="weatherday"/>
<difficulty value="1"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 27;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 241
//Level28 (levels.Level28)
package levels {
public class Level28 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="40" pin="false"/>
<point x="20" y="80" pin="false"/>
<point x="40" y="140" pin="false"/>
<point x="60" y="220" pin="false"/>
<point x="80" y="260" pin="false"/>
<point x="180" y="260" pin="true"/>
<point x="200" y="340" pin="false"/>
<point x="200" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="480" y="500" pin="false"/>
<point x="480" y="260" pin="true"/>
<point x="500" y="220" pin="false"/>
<point x="660" y="220" pin="false"/>
<point x="660" y="500" pin="false"/>
</surface>
<surface>
<point x="660" y="80" pin="false"/>
<point x="580" y="80" pin="true"/>
<point x="520" y="40" pin="false"/>
<point x="500" y="-20" pin="false"/>
<point x="660" y="-20" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="80" y="220" width="100" height="40"/>
<zone type="finishzone" x="520" y="160" width="50" height="60"/>
</zones>
<grass>
<line><point x="-20" y="40"/><point x="20" y="80"/></line>
<line><point x="20" y="80"/><point x="40" y="140"/></line>
<line><point x="40" y="140"/><point x="60" y="220"/></line>
<line><point x="60" y="220"/><point x="80" y="260"/></line>
<line><point x="80" y="260"/><point x="180" y="260"/></line>
<line><point x="180" y="260"/><point x="200" y="340"/></line>
<line><point x="480" y="260"/><point x="500" y="220"/></line>
</grass>
<heroes>
<hero type="Cvetok" x="120" y="235"/>
</heroes>
<sprites>
<sprite a="1" b="0" c="0" d="1" tx="44" ty="-141" type="4" layer="2"/>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="3100"/>
<weather value="weathernight"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 28;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 242
//Level29 (levels.Level29)
package levels {
public class Level29 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="260" y="320" pin="true"/>
<point x="260" y="500" pin="false"/>
<point x="680" y="500" pin="false"/>
<point x="680" y="320" pin="false"/>
<point x="340" y="320" pin="true"/>
</surface>
<surface>
<point x="-20" y="140" pin="false"/>
<point x="160" y="140" pin="false"/>
<point x="140" y="160" pin="false"/>
<point x="-20" y="160" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="finishzone" x="340" y="240" width="40" height="80"/>
<zone type="rightzone" x="40" y="100" width="40" height="40"/>
</zones>
<grass>
<line><point x="260" y="320"/><point x="340" y="320"/></line>
</grass>
<heroes>
<hero type="Larin" x="60" y="115"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="1300"/>
<weather value="weathernight"/>
<difficulty value="3"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 29;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 243
//Level30 (levels.Level30)
package levels {
public class Level30 extends LevelManager {
public function init(_arg1:Boolean=false):void{
var _local2:XML;
var _local3:XMLList;
var _local4:LevelData;
_local2 = <level><surfaces>
<surface>
<point x="-20" y="280" pin="false"/>
<point x="80" y="280" pin="false"/>
<point x="80" y="300" pin="false"/>
<point x="180" y="300" pin="false"/>
<point x="200" y="300" pin="false"/>
<point x="260" y="260" pin="true"/>
<point x="320" y="340" pin="true"/>
<point x="320" y="500" pin="false"/>
<point x="-20" y="500" pin="false"/>
</surface>
<surface>
<point x="440" y="280" pin="false"/>
<point x="440" y="500" pin="false"/>
<point x="680" y="500" pin="false"/>
<point x="680" y="280" pin="false"/>
</surface>
</surfaces>
<zones>
<zone type="rightzone" x="20" y="240" width="40" height="40"/>
<zone type="finishzone" x="520" y="220" width="40" height="60"/>
</zones>
<grass>
<line><point x="-20" y="280"/><point x="80" y="280"/></line>
<line><point x="80" y="300"/><point x="200" y="300"/></line>
<line><point x="200" y="300"/><point x="260" y="260"/></line>
<line><point x="260" y="260"/><point x="320" y="340"/></line>
<line><point x="440" y="280"/><point x="680" y="280"/></line>
</grass>
<heroes>
<hero type="Prezer" x="40" y="255"/>
</heroes>
<sprites>
</sprites>
<borders waterLineY="400" upperBorderY="0" leftBorderX="0" rightBorderX="640" bottomBorderY="480"/>
<budget value="1200"/>
<weather value="weatherday"/>
<difficulty value="2"/>
</level>
;
_local3 = new XMLList(_local2);
_local4 = new LevelData(_local3);
_local4.index = 30;
this.initLevel(_local4, _arg1);
}
}
}//package levels
Section 244
//LevelData (levels.LevelData)
package levels {
import houses.*;
import flash.geom.*;
import core.*;
public class LevelData {
private var _borders:LevelBorders;
private var _sprites:Array;
private var _weather:String;
private var _grass:Array;
private var _surfaces:Array;
private var _zones:Array;
private var _index:uint;
private var _xml:XMLList;
private var _difficulty:int;
private var _budget:Number;
private var _protagonists:Array;
public static const WEATHER_DAY:String = "weatherday";
public static const WEATHER_NIGHT:String = "weathernight";
public static const WEATHER_CLOUDY:String = "weathercloudy";
public function LevelData(_arg1:XMLList=null){
_xml = _arg1;
initialize();
if (_xml){
parseLevel();
};
}
public function set zones(_arg1:Array):void{
_zones = _arg1;
}
private function parseLevel():void{
var _local1:*;
var _local2:Object;
var _local3:int;
var _local4:*;
for each (_local1 in _xml.surfaces.surface) {
_surfaces.push(parseSurface(_local1));
};
for each (_local1 in _xml.zones.zone) {
_zones.push(parseZone(_local1));
};
for each (_local1 in _xml.grass.line) {
_local2 = new Object();
_local3 = 1;
for each (_local4 in _local1.point) {
_local2[("p" + _local3)] = parsePoint(_local4);
_local3++;
};
_grass.push(_local2);
};
for each (_local1 in _xml.heroes.hero) {
_protagonists.push(parseHero(_local1));
};
for each (_local1 in _xml.sprites.sprite) {
_sprites.push(parseSprites(_local1));
};
this.borders = this.parseBorders(_xml.borders);
this.budget = Number(_xml.budget.@value);
this.difficulty = Number(_xml.difficulty.@value);
this.weather = _xml.weather.@value;
}
private function parseBorders(_arg1):LevelBorders{
return (new LevelBorders(_arg1.@upperBorderY, _arg1.@leftBorderX, _arg1.@rightBorderX, _arg1.@bottomBorderY, _arg1.@waterLineY));
}
public function get protagonists():Array{
return (_protagonists);
}
public function set budget(_arg1:Number):void{
_budget = _arg1;
}
private function parseSprites(_arg1):SpriteInfo{
var _local2:SpriteInfo;
_local2 = new SpriteInfo();
_local2.matrix = new Matrix(_arg1.@a, _arg1.@b, _arg1.@c, _arg1.@d, _arg1.@tx, _arg1.@ty);
_local2.layer = _arg1.@layer;
_local2.type = _arg1.@type;
return (_local2);
}
public function set sprites(_arg1:Array):void{
_sprites = _arg1;
}
private function parsePoint(_arg1):Point{
return (new Point(_arg1.@x, _arg1.@y));
}
private function initialize():void{
_surfaces = new Array();
_zones = new Array();
_grass = new Array();
_protagonists = new Array();
_sprites = new Array();
}
public function set index(_arg1:uint):void{
_index = _arg1;
}
public function set borders(_arg1:LevelBorders):void{
_borders = _arg1;
}
public function set protagonists(_arg1:Array):void{
_protagonists = _arg1;
}
public function get grass():Array{
return ((_grass as Array));
}
public function get difficulty():Number{
return (_difficulty);
}
public function get zones():Array{
return (_zones);
}
public function set surfaces(_arg1:Array):void{
_surfaces = _arg1;
}
private function parseHero(_arg1):Object{
return ({x:_arg1.@x, y:_arg1.@y, type:_arg1.@type});
}
public function get sprites():Array{
return (_sprites);
}
public function get index():uint{
return (_index);
}
public function get budget():Number{
return (_budget);
}
public function get borders():LevelBorders{
return (_borders);
}
public function get surfaces():Array{
return (_surfaces);
}
public function set grass(_arg1:Array):void{
_grass = _arg1;
}
public function set weather(_arg1:String):void{
_weather = _arg1;
}
public function set difficulty(_arg1:Number):void{
_difficulty = _arg1;
}
private function parseSurface(_arg1):Array{
var _local2:Array;
var _local3:*;
_local2 = new Array();
for each (_local3 in _arg1.point) {
_local2.push(new SurfacePoint(_local3.@x, _local3.@y, ((_local3.@pin)=="true") ? true : false, ((_local3.@hook)=="true") ? true : false, ((_local3.@onlysteel)=="true") ? true : false, Number(_local3.@hookrotation), int(_local3.@hookdirectionx), int(_local3.@hookdirectiony)));
};
return (_local2);
}
public function get weather():String{
return (_weather);
}
private function parseZone(_arg1):LevelZone{
return (new LevelZone(_arg1.@x, _arg1.@y, _arg1.@width, _arg1.@height, _arg1.@type));
}
public static function decode(_arg1:XMLList):LevelData{
return (new LevelData(_arg1));
}
public static function encode(_arg1:LevelData):XMLList{
return (new XMLList(""));
}
}
}//package levels
Section 245
//LevelManager (levels.LevelManager)
package levels {
import flash.display.*;
import houses.*;
import flash.geom.*;
import core.*;
import org.cove.ape.*;
import flash.events.*;
import flash.net.*;
import picaso.*;
import flash.utils.*;
import sounds.*;
import vis.*;
import hud.*;
import menu.*;
import popup.*;
import water.*;
import characters.*;
import flash.filters.*;
import flash.ui.*;
public class LevelManager extends Sprite {
protected var _grid:Grid;
protected var _hud:HUD;
private var storyMode:Boolean;// = false
private var _scale:Number;
private var _currMode:Number;
private var _scrollLeftZone:ScrollZone;
private var _budget:Number;
private var _scrolling:Boolean;
private var _fader:Fader;
protected var _winTemp:Boolean;// = false
private var currRopeBlock:int;// = 0
private var _counter:int;// = 0
private var _winBudget:Number;
private var _processingRope:Boolean;// = false
private var birdsSounds:Array;
private var _line:Sprite;
private var solutionObj:Object;
protected var islandText:Sprite;
public var levelObjects:Object;
protected var _pointer:Pointer;
public var needHelp:Boolean;
private var _physicsOn:Boolean;
public var levelSurfaces:Array;
public var levelZones:Array;
private var _mouseXY:Point;
private var _sets:Array;
private var loseTimes:int;// = 0
protected var _layerEngine:Sprite;
private var _groupProtagonists:Group;
public var levelFinish:Array;
public var levelProtagonists:Array;
private var numRopeBlocks:int;// = 0
public var levelData:LevelData;
private var _scrollRightZone:ScrollZone;
private var _layerStatic:Sprite;
protected var _protagonists:Array;
private var _blockConnect:Boolean;// = false
private var natureSoundsLaunched:Boolean;// = false
private var _layerFirst:Sprite;
public var levelFinishZone:Rectangle;
protected var _group:Group;
private var _bird:Bird;
private var _highlignting:Boolean;
private var _scrollThroughDragging:Boolean;
public var levelBorders:LevelBorders;
private var _swimmers:Number;
private var ropes:Array;
private var _fadeIn:Boolean;
private var _scrollX:Number;
private var _scrollY:Number;
private var _zooming:Boolean;
private var _fadeOut:Boolean;
public var levelHouses:Array;
protected var _points:Array;
private var _clouds:Array;
private var _undoMode:Boolean;
private var _oldBlockDelete:Boolean;// = false
protected var tutorialMode:Boolean;
private var _paused:Boolean;
private var sprites:Array;
public var levelDifficulty:int;
protected var loaderScreen:LoaderScreen;
private var _inGameMenu:InGameMenu;
protected var _flagArrow:TutorialArrow;
protected var _groupMaterials:Group;
private var _playerName:String;// = "Player"
private var _dragging:Boolean;
private var overloadingLimit:int;// = 3
private var _stress:Boolean;
private var _blockDelete:Boolean;// = false
private var numSlnConstraints:int;// = 0
private var constraintsCounter:int;// = 0
protected var _win:Boolean;// = false
private var _currMaterial:Number;
private var _waters:Array;
private var _instantScrolling:Boolean;
private var _enableBuilding:Boolean;
private var _scrollDownZone:ScrollZone;
private var _PHRASES:Array;
protected var phraseBaloon;
protected var _showedFlag:Boolean;
private var _layerDynamic:Sprite;
private var phraseBaloonDelayCounter:int;
private var _actions:Array;
private var _popUp;
public var levelWeather:String;
private var _soundPanel:SoundPanel;
private var currSlnConstraint:int;// = 0
private var fadeCounter:int;// = 0
public var levelBudget:Number;
public var levelNumber:int;
private var _scrollUpZone:ScrollZone;
private var _numProtagonists:Number;
public function LevelManager(){
_PHRASES = [];
_win = false;
_winTemp = false;
storyMode = false;
_playerName = "Player";
_blockConnect = false;
_blockDelete = false;
natureSoundsLaunched = false;
birdsSounds = [SoundData.BIRD1, SoundData.BIRD2, SoundData.BIRD3, SoundData.BIRD4];
ropes = [];
currSlnConstraint = 0;
_counter = 0;
numSlnConstraints = 0;
_processingRope = false;
constraintsCounter = 0;
numRopeBlocks = 0;
currRopeBlock = 0;
_oldBlockDelete = false;
overloadingLimit = 3;
loseTimes = 0;
sprites = [];
fadeCounter = 0;
super();
levelBudget = 0;
levelDifficulty = 1;
_stress = false;
_dragging = false;
_highlignting = false;
_physicsOn = false;
_enableBuilding = true;
_scrollThroughDragging = false;
_showedFlag = false;
_scrollX = 0;
_scrollY = 0;
_scale = 1;
_zooming = true;
_scrolling = false;
_swimmers = 0;
_currMaterial = 0;
_currMode = 0;
_budget = 0;
_numProtagonists = 0;
_win = false;
_winBudget = 0;
_actions = new Array();
_undoMode = true;
_points = new Array();
_sets = new Array();
_instantScrolling = false;
needHelp = true;
}
private function processRope(_arg1:Event):void{
var _local2:CircleParticle;
var _local3:CircleParticle;
var _local4:Point;
var _local5:Number;
var _local6:Number;
var _local7:SpringConstraint;
var _local8:CircleParticle;
if (this.currRopeBlock == this.numRopeBlocks){
this.removeEventListener(Event.ENTER_FRAME, processRope);
_processingRope = false;
this.ropes.push({setId:_groupMaterials.numSets, p1:_points[0], p2:_points[(_points.length - 1)]});
_sets.push(new Point(_groupMaterials.numSets, Config.MATERIAL_ROPE));
_groupMaterials.numSets++;
indexesCorrection();
_points.splice(0);
dispatchEvent(new Event(Config.EVENT_CONNECT_POINTS, true));
APEngine.paint();
return;
};
_local2 = _points[0];
_local3 = _points.pop();
_local4 = new Point((_local3.px - _local2.px), (_local3.py - _local2.py));
_local5 = (_local4.x / this.numRopeBlocks);
_local6 = (_local4.y / this.numRopeBlocks);
if (this.currRopeBlock == 0){
_local2.addSet(_groupMaterials.numSets);
};
if (this.currRopeBlock != (this.numRopeBlocks - 1)){
_local8 = new CircleParticle((_local2.px + ((this.currRopeBlock + 1) * _local5)), (_local2.py + ((this.currRopeBlock + 1) * _local6)), Config.MATERIAL_ROPE_POINT_RADIUS, false, Config.MATERIAL_ROPE_POINT_MASS, Config.MATERIAL_ROPE_POINT_ELASTICITY, 0);
_local8.setFill(0);
_local8.collidable = false;
_local8.subParticle = true;
_points.push(_local8);
_groupMaterials.addParticle(_local8, _groupMaterials.numSets);
} else {
_local3.addSet(_groupMaterials.numSets);
_points.push(_local3);
};
_local7 = new SpringConstraint(_points[this.currRopeBlock], _points[(this.currRopeBlock + 1)], Config.MATERIAL_ROPE_STIFFNESS, Config.MATERIAL_ROPE_COLLIDABLE, Config.MATERIAL_ROPE_RECT_HEIGHT, Config.MATERIAL_ROPE_RECT_SCALE, true);
_local7.setStyle(Config.MATERIAL_ROPE_LINE_THICKNESS, Config.MATERIAL_ROPE_LINE_COLOR, 1, Config.MATERIAL_ROPE_FILL_COLOR);
_local7.materialMultiplier = Config.MATERIAL_ROPE_MULTIPLIER;
_local7.material = Config.MATERIAL_ROPE;
_local7.restLength = (_local7.restLength * Config.MATERIAL_ROPE_LENGTH_MODIFIER);
_groupMaterials.addConstraint(_local7, _groupMaterials.numSets);
if (((_points[this.currRopeBlock].fixed) || (_points[(this.currRopeBlock + 1)].fixed))){
_local7.fixedEndLimit = Config.MATERIAL_FIXED_END_LIMIT;
};
if (_points[(_points.length - 1)] != _local3){
_points.push(_local3);
};
this.currRopeBlock++;
this.constraintsCounter++;
}
private function onStartHandler(_arg1:Event):void{
currMode = Config.MODE_EMULATION;
}
private function addChildIntoLayer(_arg1:DisplayObject, _arg2:int, _arg3:Boolean=false){
var _local4:Sprite;
if (this._layerDynamic == null){
return;
};
if (this._layerDynamic.numChildren < 7){
return;
};
if ((((_arg2 < 1)) || ((_arg2 > 7)))){
return;
};
_local4 = (this._layerDynamic.getChildAt((7 - _arg2)) as Sprite);
if (!_arg3){
_local4.addChildAt(_arg1, 0);
} else {
_local4.addChild(_arg1);
};
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:int;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:int;
var _local9:Thunder;
var _local10:Point;
var _local11:Number;
var _local12:Number;
var _local13:Point;
var _local14:Point;
var _local15:Point;
var _local16:Number;
var _local17:SpringConstraint;
var _local18:Boolean;
var _local19:Number;
var _local20:Number;
var _local21:int;
var _local22:*;
var _local23:int;
var _local24:LevelZone;
var _local25:Point;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Point;
var _local30:Point;
var _local31:Sprite;
var _local32:Point;
var _local33:Number;
var _local34:Point;
var _local35:Point;
var _local36:Point;
var _local37:Point;
var _local38:Point;
var _local39:Point;
var _local40:Point;
var _local41:Point;
var _local42:Point;
var _local43:Point;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:Number;
var _local48:Number;
var _local49:Number;
var _local50:Number;
var _local51:Number;
var _local52:Array;
var _local53:Boolean;
var _local54:Point;
var _local55:Array;
if (this.loaderScreen){
return;
};
if (this.levelWeather == LevelData.WEATHER_DAY){
if (Math.random() > 0.996){
_local8 = Math.floor((Math.random() * 4));
this.birdsSounds[_local8].play();
};
};
if (this._paused){
return;
};
if (levelWeather == LevelData.WEATHER_CLOUDY){
if (Math.random() > 0.998){
_local9 = new Thunder();
_local9.x = (Math.random() * Config.SCREEN_WIDTH);
this.addChildIntoLayer(_local9, (Math.round((Math.random() * 5)) + 1));
};
};
_local3 = 80;
_local4 = (Config.SCREEN_HEIGHT - 60);
_local5 = 60;
_local6 = (Config.SCREEN_WIDTH - 60);
_local7 = (this.tutorialMode) ? 1 : 0.8;
if (((!((this.phraseBaloon == null))) && (!(this.tutorialMode)))){
_local10 = new Point(_protagonists[0].x, _protagonists[0].y);
_local10 = _layerEngine.localToGlobal(_local10);
_local11 = 260;
_local12 = 140;
if ((((((_local10.x < _local5)) && ((_local10.y > _local3)))) && ((_local10.y < _local4)))){
_local13 = _layerEngine.globalToLocal(new Point(_local5, _local10.y));
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
this.phraseBaloon.scaleX = _local7;
this.phraseBaloon.textField.scaleX = 1;
this.phraseBaloon.textField.x = 69;
if ((_local10.y - _local12) < _local3){
this.phraseBaloon.scaleY = -(_local7);
this.phraseBaloon.textField.scaleY = -1;
this.phraseBaloon.textField.y = -15;
} else {
this.phraseBaloon.scaleY = _local7;
this.phraseBaloon.textField.scaleY = 1;
this.phraseBaloon.textField.y = -156;
};
} else {
if ((((((_local10.x > _local5)) && ((_local10.x < _local6)))) && ((_local10.y < _local3)))){
_local13 = _layerEngine.globalToLocal(new Point(_local10.x, _local3));
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
if ((_local10.x + _local11) > _local6){
this.phraseBaloon.scaleX = -(_local7);
this.phraseBaloon.textField.scaleX = -1;
this.phraseBaloon.textField.x = 300;
} else {
this.phraseBaloon.scaleX = _local7;
this.phraseBaloon.textField.scaleX = 1;
this.phraseBaloon.textField.x = 69;
};
this.phraseBaloon.scaleY = -(_local7);
this.phraseBaloon.textField.scaleY = -1;
this.phraseBaloon.textField.y = -15;
} else {
if ((((((_local10.x > _local6)) && ((_local10.y > _local3)))) && ((_local10.y < _local4)))){
_local13 = _layerEngine.globalToLocal(new Point(_local6, _local10.y));
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
this.phraseBaloon.scaleX = -(_local7);
this.phraseBaloon.textField.scaleX = -1;
this.phraseBaloon.textField.x = 300;
if ((_local10.y - _local12) < _local3){
this.phraseBaloon.scaleY = -(_local7);
this.phraseBaloon.textField.scaleY = -1;
this.phraseBaloon.textField.y = -15;
} else {
this.phraseBaloon.scaleY = _local7;
this.phraseBaloon.textField.scaleY = 1;
this.phraseBaloon.textField.y = -156;
};
} else {
if ((((((_local10.x > _local5)) && ((_local10.x < _local6)))) && ((_local10.y > _local4)))){
_local13 = _layerEngine.globalToLocal(new Point(_local10.x, _local4));
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
if ((_local10.x + _local11) > _local6){
this.phraseBaloon.scaleX = -(_local7);
this.phraseBaloon.textField.scaleX = -1;
this.phraseBaloon.textField.x = 300;
} else {
this.phraseBaloon.scaleX = _local7;
this.phraseBaloon.textField.scaleX = 1;
this.phraseBaloon.textField.x = 69;
};
this.phraseBaloon.scaleY = _local7;
this.phraseBaloon.textField.scaleY = 1;
this.phraseBaloon.textField.y = -156;
} else {
if ((((_local10.x < _local5)) && ((_local10.y < _local3)))){
_local13 = _layerEngine.globalToLocal(new Point(_local5, _local3));
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
this.phraseBaloon.scaleX = _local7;
this.phraseBaloon.textField.scaleX = 1;
this.phraseBaloon.textField.x = 69;
this.phraseBaloon.scaleY = -(_local7);
this.phraseBaloon.textField.scaleY = -1;
this.phraseBaloon.textField.y = -15;
} else {
if ((((_local10.x > _local6)) && ((_local10.y < _local3)))){
_local13 = _layerEngine.globalToLocal(new Point(_local6, _local3));
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
this.phraseBaloon.scaleX = -(_local7);
this.phraseBaloon.textField.scaleX = -1;
this.phraseBaloon.textField.x = 300;
this.phraseBaloon.scaleY = -(_local7);
this.phraseBaloon.textField.scaleY = -1;
this.phraseBaloon.textField.y = -15;
} else {
if ((((_local10.x > _local6)) && ((_local10.y > _local4)))){
_local13 = _layerEngine.globalToLocal(new Point(_local6, _local4));
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
this.phraseBaloon.scaleX = -(_local7);
this.phraseBaloon.textField.scaleX = -1;
this.phraseBaloon.textField.x = 300;
this.phraseBaloon.scaleY = _local7;
this.phraseBaloon.textField.scaleY = 1;
this.phraseBaloon.textField.y = -156;
} else {
if ((((_local10.x < _local5)) && ((_local10.y > _local4)))){
_local13 = _layerEngine.globalToLocal(new Point(_local5, _local4));
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
this.phraseBaloon.scaleX = _local7;
this.phraseBaloon.textField.scaleX = 1;
this.phraseBaloon.textField.x = 69;
this.phraseBaloon.scaleY = _local7;
this.phraseBaloon.textField.scaleY = 1;
this.phraseBaloon.textField.y = -156;
} else {
_local13 = _layerEngine.globalToLocal(_local10);
this.phraseBaloon.x = _local13.x;
this.phraseBaloon.y = _local13.y;
if ((_local10.x + _local11) > _local6){
this.phraseBaloon.scaleX = -(_local7);
this.phraseBaloon.textField.scaleX = -1;
this.phraseBaloon.textField.x = 300;
} else {
this.phraseBaloon.scaleX = _local7;
this.phraseBaloon.textField.scaleX = 1;
this.phraseBaloon.textField.x = 69;
};
if ((_local10.y - _local12) < _local3){
this.phraseBaloon.scaleY = -(_local7);
this.phraseBaloon.textField.scaleY = -1;
this.phraseBaloon.textField.y = -15;
} else {
this.phraseBaloon.scaleY = _local7;
this.phraseBaloon.textField.scaleY = 1;
this.phraseBaloon.textField.y = -156;
};
};
};
};
};
};
};
};
};
};
_local3 = 80;
_local4 = (Config.SCREEN_HEIGHT - 80);
_local5 = 80;
_local6 = (Config.SCREEN_WIDTH - 60);
if (((!(this._showedFlag)) && (this.levelFinishZone))){
_local14 = this._layerFirst.localToGlobal(new Point((this.levelFinishZone.left + (this.levelFinishZone.width / 2)), (this.levelFinishZone.bottom - 40)));
if ((((((((_local14.x >= 0)) && ((_local14.x < Config.SCREEN_WIDTH)))) && ((_local14.y >= 0)))) && ((_local14.y < Config.SCREEN_HEIGHT)))){
this._showedFlag = true;
if (_flagArrow){
this.removeChild(this._flagArrow);
this._flagArrow = null;
};
} else {
if (this._flagArrow == null){
this._flagArrow = new TutorialArrow();
this.addChild(this._flagArrow);
};
if ((((((_local14.x < _local5)) && ((_local14.y > _local3)))) && ((_local14.y < _local4)))){
_flagArrow.rotation = -90;
_flagArrow.x = _local5;
_flagArrow.y = _local14.y;
} else {
if ((((((_local14.x > _local5)) && ((_local14.x < _local6)))) && ((_local14.y < _local3)))){
_flagArrow.rotation = 0;
_flagArrow.x = _local14.x;
_flagArrow.y = _local3;
} else {
if ((((((_local14.x > _local6)) && ((_local14.y > _local3)))) && ((_local14.y < _local4)))){
_flagArrow.rotation = 90;
_flagArrow.x = _local6;
_flagArrow.y = _local14.y;
} else {
if ((((((_local14.x > _local5)) && ((_local14.x < _local6)))) && ((_local14.y > _local4)))){
_flagArrow.rotation = 180;
_flagArrow.x = _local14.x;
_flagArrow.y = _local4;
} else {
if ((((_local14.x < _local5)) && ((_local14.y < _local3)))){
_local15 = new Point((_local14.x - _local5), (_local14.y - _local3));
_local16 = ((Math.asin((_local15.y / _local15.length)) * 180) / Math.PI);
_flagArrow.rotation = (90 + _local16);
_flagArrow.x = _local5;
_flagArrow.y = _local3;
} else {
if ((((_local14.x > _local6)) && ((_local14.y < _local3)))){
_local15 = new Point((_local14.x - _local6), (_local14.y - _local3));
_local16 = ((Math.asin((_local15.y / _local15.length)) * 180) / Math.PI);
_flagArrow.rotation = (90 + _local16);
_flagArrow.x = _local6;
_flagArrow.y = _local3;
} else {
if ((((_local14.x > _local6)) && ((_local14.y > _local4)))){
_local15 = new Point((_local14.x - _local6), (_local14.y - _local4));
_local16 = ((Math.asin((_local15.y / _local15.length)) * 180) / Math.PI);
_flagArrow.rotation = (90 + _local16);
_flagArrow.x = _local6;
_flagArrow.y = _local4;
} else {
if ((((_local14.x < _local5)) && ((_local14.y > _local4)))){
_local15 = new Point((_local14.x - _local5), (_local14.y - _local4));
_local16 = ((Math.asin((_local15.y / _local15.length)) * 180) / Math.PI);
_flagArrow.rotation = (90 + _local16);
_flagArrow.x = _local5;
_flagArrow.y = _local4;
};
};
};
};
};
};
};
};
};
};
if (((_stress) && ((_currMode == Config.MODE_EMULATION)))){
this._groupMaterials.currStress();
};
if (((_stress) && ((_currMode == Config.MODE_BUILDING)))){
_groupMaterials.hideStress();
};
if (_scrollThroughDragging){
if (_popUp){
_scrollThroughDragging = false;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
} else {
this.scrollUpdate();
};
};
if (_zooming){
this.zoomUpdate();
} else {
_hud.zoomInButton.active = false;
_hud.zoomOutButton.active = false;
};
if (((!(_hud.zoomInButton.active)) && (!(_hud.zoomOutButton.active)))){
_hud.zoomInButton.visible = false;
_hud.zoomOutButton.visible = false;
_zooming = false;
};
if (currMode == Config.MODE_EMULATION){
if (_physicsOn){
_local2 = 0;
while (_local2 < _protagonists.length) {
_protagonists[_local2].particle.collisionDetected = false;
_local2++;
};
APEngine.step();
APEngine.paint();
} else {
return;
};
_local2 = 0;
while (_local2 < _groupMaterials.constraints.length) {
_local17 = _groupMaterials.constraints[_local2];
_local18 = false;
if ((_local17.currLength - _local17.restLength) > (_local17.restLength * _local17.materialMultiplier)){
_local18 = true;
};
if ((_local17.currLength - _local17.restLength) < (-(_local17.restLength) * _local17.materialMultiplier)){
_local18 = true;
};
if (_local18){
_local17.overloadingCounter++;
if (_local17.overloadingCounter >= Config.MATERIAL_OVERLOAD_CHECKS){
_local17.overloadingCounter = 0;
deleteOverloadedConstraint(_local17);
};
};
_local2++;
};
if (this._protagonists.length > 0){
_local19 = _protagonists[0].x;
_local20 = _protagonists[0].y;
_swimmers = 0;
_local21 = 0;
_local2 = 0;
while (_local2 < _protagonists.length) {
_local22 = _protagonists[_local2];
if ((_local22 as Protagonist).finished){
_local21++;
if (Math.random() > 0.99){
_local22.jump();
_local22.stand();
};
} else {
if (_local22.y > levelBorders.waterLineY){
_local22.swim();
_swimmers++;
};
if (levelZones != null){
_local23 = 0;
while (_local23 < levelZones.length) {
_local24 = (levelZones[_local23] as LevelZone);
if (_local24.type == LevelZone.FINISH){
if (_local24.containsPoint(new Point(_protagonists[_local2].x, _protagonists[_local2].y))){
if (_local22.currentAction == Protagonist.RUN_RIGHT){
_local22.resetSpeed();
_local22.turn(Protagonist.TURN_FROM_LEFT_TO_PLAYER, true);
_local22.stand();
} else {
if (_local22.currentAction == Protagonist.RUN_LEFT){
_local22.resetSpeed();
_local22.turn(Protagonist.TURN_FROM_RIGHT_TO_PLAYER, true);
_local22.stand();
};
};
if (Math.random() > 0.99){
_local22.jump();
_local22.stand();
};
(_local22 as Protagonist).finished = true;
};
} else {
if (_local24.type == LevelZone.RIGHT){
if (_local24.containsPoint(new Point(_protagonists[_local2].x, _protagonists[_local2].y))){
if (_local22.particle.angularVelocity <= 0){
if (_local22.particle.angularVelocity < 0){
_local22.rotateAndRun(Protagonist.RUN_RIGHT);
} else {
if (_local22.particle.angularVelocity == 0){
_local22.turnAndRun(Protagonist.RUN_RIGHT);
};
};
};
};
} else {
if (_local24.type == LevelZone.LEFT){
if (_local24.containsPoint(new Point(_protagonists[_local2].x, _protagonists[_local2].y))){
if (_local22.particle.angularVelocity >= 0){
if (_local22.particle.angularVelocity > 0){
_local22.rotateAndRun(Protagonist.RUN_LEFT);
} else {
if (_local22.particle.angularVelocity == 0){
_local22.turnAndRun(Protagonist.RUN_LEFT);
};
};
};
};
};
};
};
_local23++;
};
};
};
_local2++;
};
};
if (_swimmers > 0){
addPopUp(Config.POPUP_LOSE);
GAManager.trackPage((("/level-" + this.levelNumber.toString()) + "-lost"));
};
if (_local21 == _numProtagonists){
_win = true;
_winTemp = true;
if (!this.tutorialMode){
addPopUp(Config.POPUP_WIN);
};
GAManager.trackPage((("/level-" + this.levelNumber.toString()) + "-passed"));
};
} else {
if (currMode == Config.MODE_BUILDING){
if (!_zooming){
_scale = _layerDynamic.scaleX;
};
_local2 = 0;
while (_local2 < this._protagonists.length) {
if (this._protagonists[_local2].actions.length == 0){
if (Math.random() > 0.99){
this._protagonists[_local2].wave();
this._protagonists[_local2].stand();
};
};
_local2++;
};
_local25 = this._layerFirst.globalToLocal(new Point(mouseX, mouseY));
_local26 = (Math.round((_local25.x / Config.GRID_WIDTH)) * Config.GRID_WIDTH);
_local27 = (Math.round((_local25.y / Config.GRID_HEIGHT)) * Config.GRID_HEIGHT);
if (_dragging){
_local28 = 0;
if (currMaterial == Config.MATERIAL_DECK){
_local28 = Config.MATERIAL_DECK_MAX_LENGTH;
} else {
if (currMaterial == Config.MATERIAL_STEEL){
_local28 = Config.MATERIAL_STEEL_MAX_LENGTH;
};
};
_local29 = new Point(_points[0].px, _points[0].py);
_local30 = new Point(_local26, _local27);
_local15 = _local30.subtract(_local29);
if (((!((_local28 == 0))) && ((_local15.length > _local28)))){
_local34 = new Point();
_local15 = _local30.subtract(_local29);
_local34.x = (_local29.x + ((_local28 * _local15.x) / _local15.length));
_local34.y = (_local29.y + ((_local28 * _local15.y) / _local15.length));
_local35 = new Point();
_local35.x = (Math.floor((_local34.x / Config.GRID_WIDTH)) * Config.GRID_WIDTH);
_local35.y = (Math.floor((_local34.y / Config.GRID_HEIGHT)) * Config.GRID_HEIGHT);
if (_local35.x < 0){
_local35.x = (_local35.x - Config.GRID_WIDTH);
};
if (_local35.y < 0){
_local35.y = (_local35.y - Config.GRID_HEIGHT);
};
_local36 = _local35.clone();
_local37 = new Point(_local35.x, (_local35.y + Config.GRID_HEIGHT));
_local38 = new Point((_local35.x + Config.GRID_WIDTH), (_local35.y + Config.GRID_HEIGHT));
_local39 = new Point((_local35.x + Config.GRID_WIDTH), _local35.y);
_local40 = _local36.subtract(_local29);
_local41 = _local37.subtract(_local29);
_local42 = _local38.subtract(_local29);
_local43 = _local39.subtract(_local29);
_local44 = (((_local15.x * _local40.x) + (_local15.y * _local40.y)) / (_local15.length * _local40.length));
_local45 = (((_local15.x * _local41.x) + (_local15.y * _local41.y)) / (_local15.length * _local41.length));
_local46 = (((_local15.x * _local42.x) + (_local15.y * _local42.y)) / (_local15.length * _local42.length));
_local47 = (((_local15.x * _local43.x) + (_local15.y * _local43.y)) / (_local15.length * _local43.length));
if (_local44 > 1){
_local44 = 1;
};
if (_local44 < -1){
_local44 = -1;
};
if (_local45 > 1){
_local45 = 1;
};
if (_local45 < -1){
_local45 = -1;
};
if (_local46 > 1){
_local46 = 1;
};
if (_local46 < -1){
_local46 = -1;
};
if (_local47 > 1){
_local47 = 1;
};
if (_local47 < -1){
_local47 = -1;
};
_local48 = Math.acos(_local44);
_local49 = Math.acos(_local45);
_local50 = Math.acos(_local46);
_local51 = Math.acos(_local47);
_local52 = [];
_local52.push({point:_local36, angelDiff:_local48, distToPoint:-(_local40.length)});
_local52.push({point:_local37, angelDiff:_local49, distToPoint:-(_local41.length)});
_local52.push({point:_local38, angelDiff:_local50, distToPoint:-(_local42.length)});
_local52.push({point:_local39, angelDiff:_local51, distToPoint:-(_local43.length)});
_local52.sortOn(["angelDiff", "distToPoint"], Array.NUMERIC);
_local53 = false;
_local2 = 0;
while (_local2 < _local52.length) {
if (Math.abs(_local52[_local2].distToPoint) <= _local28){
_local54 = _local52[_local2].point;
_local26 = _local54.x;
_local27 = _local54.y;
_local53 = true;
break;
};
_local2++;
};
if (!_local53){
_local26 = _pointer.x;
_local27 = _pointer.y;
};
};
while (_line.numChildren > 0) {
_line.removeChildAt(0);
};
_line.graphics.clear();
_local30.x = _local26;
_local30.y = _local27;
_local32 = _local29.subtract(_local30);
_local33 = Math.atan2(_local32.y, _local32.x);
if (currMaterial == Config.MATERIAL_DECK){
if (_local32.length > 0){
_local31 = this.makeDeckSprite(_local29, _local30);
_local31.x = (_local29.x + ((_local30.x - _local29.x) / 2));
_local31.y = (_local29.y + ((_local30.y - _local29.y) / 2));
_local31.rotation = ((_local33 * 180) / Math.PI);
_line.addChild(_local31);
_line.addChild(new LinkElement(false, 1.5, _local30.x, _local30.y));
};
} else {
if (currMaterial == Config.MATERIAL_STEEL){
if (_local32.length > 0){
_local31 = this.makeSteelSprite(_local29, _local30);
_local31.x = (_local29.x + ((_local30.x - _local29.x) / 2));
_local31.y = (_local29.y + ((_local30.y - _local29.y) / 2));
_local31.rotation = ((_local33 * 180) / Math.PI);
_line.addChild(_local31);
_line.addChild(new LinkElement(false, 1.5, _local30.x, _local30.y));
};
} else {
_line.graphics.lineStyle(5, 0, 1);
_line.graphics.moveTo((_points[0].px + _layerEngine.x), (_points[0].py + _layerEngine.y));
_line.graphics.lineTo((_local26 + _layerEngine.x), (_local27 + _layerEngine.y));
_line.graphics.endFill();
_line.addChild(new LinkElement(false, 1.5, _local30.x, _local30.y));
};
};
};
_pointer.x = _local26;
_pointer.y = _local27;
if (_highlignting){
_groupMaterials.selectOffAll();
if (_dragging){
_local55 = _groupMaterials.getObjectsUnderPoint(_pointer.x, _pointer.y, true, true, 0, true);
if (_points.length > 0){
_points[0].select(0xFF);
};
if (_local55.length > 0){
_local55[0].select(0xFF);
};
} else {
_local55 = _groupMaterials.getObjectsUnderPoint(mouseX, mouseY, false);
if (_local55.length > 0){
if ((((((_local55[0] is AbstractParticle)) && ((_local55[0] as AbstractParticle).fixed))) && (!((currMaterial == -1))))){
if (((((!(this.blockDelete)) && (!(_soundPanel.hitTestPoint(mouseX, mouseY, true))))) && (!(_hud.hitTestPoint(mouseX, mouseY, true))))){
_groupMaterials.selectSets(_local55[0].getSets(0));
};
_local55[0].select(0xFF);
} else {
if (((((!(this.blockDelete)) && (!(_soundPanel.hitTestPoint(mouseX, mouseY, true))))) && (!(_hud.hitTestPoint(mouseX, mouseY, true))))){
_groupMaterials.selectSets(_groupMaterials.getSetsUnderPoint(mouseX, mouseY));
};
};
};
};
};
};
};
}
private function waitBeforeBuilding(_arg1:Event):void{
if (_counter <= 0){
_undoMode = false;
this.removeEventListener(Event.ENTER_FRAME, waitBeforeBuilding);
this.addEventListener(Event.ENTER_FRAME, lowCostBuilding, false, 0, true);
} else {
_counter--;
};
}
private function onFadeInCompleteHandler(_arg1:Event):void{
this._fader.removeEventListener(Fader.COMPLETE, onFadeInCompleteHandler);
}
private function addInGameMenuWithFading():void{
if (this._fader != null){
return;
};
this._fader = new Fader();
this.addChild(this._fader);
this._fader.addEventListener(Fader.COMPLETE, onFadeInCompleteHandler, false, 0, true);
this._fader.fadeIn();
this.addInGameMenu();
}
private function addInGameMenu():void{
if (this._inGameMenu != null){
return;
};
this.pause();
this._inGameMenu = new InGameMenu(this.levelNumber);
this._inGameMenu.x = (Config.SCREEN_WIDTH / 2);
this._inGameMenu.y = (Config.SCREEN_HEIGHT / 2);
this.addChild(this._inGameMenu);
this._inGameMenu.addEventListener(InGameMenu.ON_RESUME, onResumeHandler, false, 0, true);
this._inGameMenu.addEventListener(InGameMenu.ON_HELP, onHelpHandler, false, 0, true);
this._inGameMenu.addEventListener(InGameMenu.ON_MAP, onMapHandler, false, 0, true);
this._inGameMenu.addEventListener(InGameMenu.ON_MENU, onMenuHandler, false, 0, true);
this._inGameMenu.addEventListener(InGameMenu.ON_QUIT_SUBMIT, onQuitSubmitHandler, false, 0, true);
}
private function scrollLeftHandler(_arg1:Event):void{
scrollLeft();
}
public function zoomIn():void{
var _local1:*;
var _local2:Point;
if (_popUp){
return;
};
if (!_zooming){
return;
};
_zooming = false;
_local1 = _scale;
_scale = (_scale * Config.ZOOM_IN_ITERATION);
if (_scale > 1){
_scale = 1;
};
_zooming = true;
_local2 = new Point(((Config.SCREEN_WIDTH * (_local1 - _scale)) / 2), ((Config.SCREEN_HEIGHT * (_local1 - _scale)) / 2));
this.scrollUpdate(false, _local2);
}
private function removeInGameMenu():void{
if (this._inGameMenu == null){
return;
};
this.pause();
this._inGameMenu.removeEventListener(InGameMenu.ON_RESUME, onResumeHandler);
this._inGameMenu.removeEventListener(InGameMenu.ON_HELP, onHelpHandler);
this._inGameMenu.removeEventListener(InGameMenu.ON_MAP, onMapHandler);
this._inGameMenu.removeEventListener(InGameMenu.ON_QUIT_SUBMIT, onQuitSubmitHandler);
this.removeChild(this._inGameMenu);
this._inGameMenu.cleanup();
this._inGameMenu = null;
}
public function initLevel(_arg1:LevelData, _arg2:Boolean=false):void{
var _local3:*;
var _local4:Sprite;
var _local5:int;
var _local6:int;
var _local7:String;
var _local8:Boolean;
var _local9:SharedObject;
var _local10:Digit;
var _local11:String;
var _local12:int;
var _local13:String;
if (_arg1 == null){
return;
};
if (_arg1.borders == null){
return;
};
this.levelData = _arg1;
this.levelBorders = _arg1.borders;
this.levelBudget = (_arg1.budget) ? _arg1.budget : 10000000;
this.levelNumber = _arg1.index;
this.levelObjects = _arg1.sprites;
this.levelProtagonists = _arg1.protagonists;
this.levelSurfaces = _arg1.surfaces;
this.levelWeather = (((!((_arg1.weather == null))) && (!((_arg1.weather.length == 0))))) ? _arg1.weather : LevelData.WEATHER_DAY;
this.levelZones = _arg1.zones;
this._layerEngine = new Sprite();
this._layerDynamic = new Sprite();
this._layerStatic = new Sprite();
this._layerFirst = this._layerDynamic;
this.addChild(this._layerDynamic);
this.addChild(this._layerStatic);
if (stage == null){
return;
};
stage.frameRate = Config.ENGINE_FRAMERATE;
APEngine.init(Config.ENGINE_DT);
APEngine.damping = Config.ENGINE_DAMPING;
APEngine.constraintCycles = Config.ENGINE_CONSTRAINT_CYCLES;
APEngine.constraintCollisionCycles = Config.ENGINE_CONSTRAINT_COLLISION_CYCLES;
APEngine.addMasslessForce(new Vector(0, 2));
APEngine.container = this._layerEngine;
_group = new Group(false);
_groupMaterials = new Group(false);
_groupProtagonists = new Group(true);
_groupMaterials.addCollidable(_group);
_groupProtagonists.addCollidableList([_group, _groupMaterials]);
APEngine.addGroup(_group);
APEngine.addGroup(_groupMaterials);
APEngine.addGroup(_groupProtagonists);
this.setUpWeather(_arg1.weather);
this.setUpWaters(_arg1.borders);
this.setUpClouds(_arg1.weather, _arg1.borders);
this.setUpSurfaces(_arg1.surfaces);
this.addChildIntoLayer(this._layerEngine, 1);
this.setUpZones(_arg1.zones);
this.setUpProtagonists(_arg1.protagonists);
this.setUpGrass(_arg1.grass);
this.setUpSprites(_arg1.sprites);
this._bird = new Bird(true);
this.addChildIntoLayer(this._bird, 1);
this._grid = new Grid(_arg1.borders);
this._layerEngine.addChild(this._grid);
this._pointer = new Pointer();
this._layerEngine.addChild(this._pointer);
this._pointer.visible = false;
this._soundPanel = (this.parent as BridgeCraft)._soundPanel;
this._line = new Sprite();
this._line.name = "line";
this._layerEngine.addChild(this._line);
this._hud = new HUD();
this._layerStatic.addChild(this._hud);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, false, 0, true);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler, false, 0, true);
addEventListener(Config.EVENT_RESET, onResetHandler, false, 0, true);
addEventListener(Config.EVENT_STRESS, onStressHandler, false, 0, true);
addEventListener(Config.EVENT_HOME, onHomeHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
this.islandText = new Sprite();
_local3 = new IslandTextWS();
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
_local3.x = (_local3.x - 20);
} else {
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
_local3.x = (_local3.x - 40);
};
};
this.islandText.addChild(_local3);
_local4 = new Sprite();
_local5 = 0;
_local6 = this.levelNumber;
while (_local6 > 0) {
_local10 = new Digit(((_local6 % 10) as int));
_local10.x = (_local5 - (_local10.width / 2));
_local10.y = 0;
_local4.addChild(_local10);
_local6 = (_local6 / 10);
_local5 = (_local5 - (_local10.width + 5));
};
_local4.x = ((_local3.width / 2) + _local4.width);
_local4.y = 0;
this.islandText.addChild(_local4);
this.islandText.x = (Config.SCREEN_WIDTH / 2);
this.islandText.y = (Config.SCREEN_HEIGHT / 2);
_layerStatic.addChild(this.islandText);
this.addEventListener(Event.ENTER_FRAME, islandTextFading, false, 0, true);
if (((((levelBorders.width * _scale) <= Config.SCREEN_WIDTH)) || (((levelBorders.height * _scale) <= Config.SCREEN_HEIGHT)))){
_hud.zoomOutButton.active = false;
} else {
_hud.zoomOutButton.active = true;
};
if (_scale == 1){
_hud.zoomInButton.active = false;
} else {
_hud.zoomInButton.active = true;
};
if (((_hud.zoomInButton.active) || (_hud.zoomOutButton.active))){
this._zooming = true;
} else {
_zooming = false;
_hud.zoomInButton.visible = false;
_hud.zoomOutButton.visible = false;
};
if (_zooming){
this.addEventListener(Config.EVENT_ZOOM_IN, zoomInHandler, false, 0, true);
this.addEventListener(Config.EVENT_ZOOM_OUT, zoomOutHandler, false, 0, true);
};
this.currMaterial = Config.MATERIAL_DECK;
this.currMode = Config.MODE_BUILDING;
this.budget = levelBudget;
this.indexesCorrection();
if ((((levelBorders.width == Config.SCREEN_WIDTH)) && ((levelBorders.height == Config.SCREEN_HEIGHT)))){
scrolling = false;
} else {
scrolling = true;
};
this.loadLevelSolution();
GAManager.trackPage((("/level-" + this.levelNumber.toString()) + "-loaded"));
if (_arg2){
return;
};
_local7 = this.levelProtagonists[0].type;
_local8 = false;
_local9 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local9.size == 0){
_local8 = true;
};
if (((((!((_local9.data.introducedHeroes == null))) && ((_local9.data.introducedHeroes is Array)))) && ((_local9.data.introducedHeroes.indexOf(_local7) == -1)))){
_local8 = true;
};
if (_local8){
_local11 = "";
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
if (_local7 == "Cvetok"){
_local11 = "Ohani";
};
if (_local7 == "Glazan"){
_local11 = "Crabi";
};
if (_local7 == "Larin"){
_local11 = "Pokki";
};
if (_local7 == "Prezer"){
_local11 = "Greeni";
};
if (_local7 == "Sinyak"){
_local11 = "Simbi";
};
} else {
if (_local7 == "Cvetok"){
_local11 = "Охани";
};
if (_local7 == "Glazan"){
_local11 = "Краби";
};
if (_local7 == "Larin"){
_local11 = "Покки";
};
if (_local7 == "Prezer"){
_local11 = "Грини";
};
if (_local7 == "Sinyak"){
_local11 = "Симби";
};
};
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.scaleX = 0.8;
this.phraseBaloon.scaleY = 0.8;
this.phraseBaloon.x = _protagonists[0].x;
this.phraseBaloon.y = _protagonists[0].y;
this.phraseBaloon.type = TalkBaloon.TYPE_BLANK;
this.phraseBaloon.fontSize = 18;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = (((("Hello, " + this.playerName) + "! I'm ") + _local11) + "!");
} else {
this.phraseBaloon.text = (((("Привет, " + this.playerName) + "! Я ") + _local11) + "!");
};
this.addChildIntoLayer(this.phraseBaloon, 1, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SHOWED, onPhraseBaloonShowed, false, 0, true);
_local9.data.introducedHeroes.push(_local7);
_local9.flush();
return;
};
if (this.levelNumber == 50){
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.scaleX = 0.8;
this.phraseBaloon.scaleY = 0.8;
this.phraseBaloon.x = _protagonists[0].x;
this.phraseBaloon.y = _protagonists[0].y;
this.phraseBaloon.type = TalkBaloon.TYPE_BLANK;
this.phraseBaloon.fontSize = 18;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "I'll be able to turn around near that wall ahead, I just need to get there first.";
} else {
this.phraseBaloon.text = "Я буду следовать направлениям на знаках.";
};
this.addChildIntoLayer(this.phraseBaloon, 1, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SHOWED, onPhraseBaloonShowed, false, 0, true);
} else {
if (this.levelNumber == 44){
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.scaleX = 0.8;
this.phraseBaloon.scaleY = 0.8;
this.phraseBaloon.x = _protagonists[0].x;
this.phraseBaloon.y = _protagonists[0].y;
this.phraseBaloon.type = TalkBaloon.TYPE_BLANK;
this.phraseBaloon.fontSize = 18;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = "Hmm, this a bit complicated
Oh I know, you could use decks to lean on that tiny island.";
} else {
this.phraseBaloon.text = "Хммм... Выглядит сложно. Но я знаю решение: деревянные балки могут опираться на тот маленький островок.";
};
this.addChildIntoLayer(this.phraseBaloon, 1, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SHOWED, onPhraseBaloonShowed, false, 0, true);
} else {
if (Math.random() >= 0.5){
this.phraseBaloon = new TalkBaloon();
this.phraseBaloon.scaleX = 0.8;
this.phraseBaloon.scaleY = 0.8;
this.phraseBaloon.x = _protagonists[0].x;
this.phraseBaloon.y = _protagonists[0].y;
this.phraseBaloon.type = TalkBaloon.TYPE_BLANK;
_local12 = Math.floor(((Math.random() * PHRASES.length) + 1));
_local13 = "";
if (_local12 == PHRASES.length){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
if (this.levelWeather == LevelData.WEATHER_DAY){
_local13 = "Ahh, what beautiful weather.";
};
if (this.levelWeather == LevelData.WEATHER_NIGHT){
_local13 = "I love quiet nights.";
};
if (this.levelWeather == LevelData.WEATHER_CLOUDY){
_local13 = "Raining again. Ugh.";
};
} else {
if (this.levelWeather == LevelData.WEATHER_DAY){
_local13 = "Ах, что за прекрасная погода сегодня.";
};
if (this.levelWeather == LevelData.WEATHER_NIGHT){
_local13 = "Мне так нравятся тихие ночи.";
};
if (this.levelWeather == LevelData.WEATHER_CLOUDY){
_local13 = "И опять дождь. Ррр.";
};
};
} else {
_local13 = PHRASES[_local12];
};
this.phraseBaloon.fontSize = 18;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.phraseBaloon.text = _local13.replace("Player", this.playerName);
} else {
this.phraseBaloon.text = _local13.replace("Игрок", this.playerName);
};
this.addChildIntoLayer(this.phraseBaloon, 1, true);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_SHOWED, onPhraseBaloonShowed, false, 0, true);
};
};
};
}
private function zoomOutHandler(_arg1:Event):void{
zoomOut();
}
private function keyDownHandler(_arg1:KeyboardEvent):void{
if (this.paused){
return;
};
if (this._fader != null){
return;
};
if ((((((_arg1.keyCode == 49)) && (!(this.tutorialMode)))) && (!(dragging)))){
dispatchEvent(new Event(Config.EVENT_DECK));
};
if ((((((_arg1.keyCode == 50)) && (!(this.tutorialMode)))) && (!(dragging)))){
dispatchEvent(new Event(Config.EVENT_STEEL));
};
if ((((((_arg1.keyCode == 51)) && (!(this.tutorialMode)))) && (!(dragging)))){
dispatchEvent(new Event(Config.EVENT_ROPE));
};
if ((((((_arg1.keyCode == Keyboard.SPACE)) && (!(this.tutorialMode)))) && (!(dragging)))){
if (currMode == Config.MODE_EMULATION){
_hud.dispatchEvent(new Event(Config.EVENT_EDIT, true));
} else {
_hud.dispatchEvent(new Event(Config.EVENT_START, true));
};
};
if ((((_arg1.keyCode == Keyboard.ESCAPE)) && (!(dragging)))){
this.addInGameMenuWithFading();
};
if ((((_arg1.keyCode == 90)) && (!(dragging)))){
if (_arg1.ctrlKey){
undo();
};
};
}
public function scrollLeft(_arg1:Number=0):void{
if (!_scrolling){
return;
};
if (_arg1 > 0){
_scrollX = (_scrollX + _arg1);
} else {
_scrollX = (_scrollX + Config.SCROLLING_ITERATION);
};
if ((_scrollX + (levelBorders.leftBorderX * _scale)) >= 0){
_scrollX = (-(levelBorders.leftBorderX) * _scale);
};
}
public function set winBudget(_arg1:Number):void{
if (_arg1 > _winBudget){
_winBudget = _arg1;
};
}
private function keyUpHandler(_arg1:KeyboardEvent):void{
}
public function get blockDelete():Boolean{
return (_blockDelete);
}
private function removeInGameMenuWithFading():void{
if (_fader == null){
return;
};
if (this._inGameMenu != null){
this.removeInGameMenu();
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
this._fader.addEventListener(Fader.COMPLETE, onFadeOutCompleteHandler, false, 0, true);
this._fader.fadeOut();
}
private function indexesCorrection():void{
var _local1:int;
var _local2:int;
_local1 = (_layerEngine.numChildren - 1);
while (_local1 >= 0) {
if (_layerEngine.getChildAt(_local1).name == "line"){
_local2 = (_local1 + 1);
while (_local2 < _layerEngine.numChildren) {
_layerEngine.swapChildrenAt((_local2 - 1), _local2);
_local2++;
};
};
_local1--;
};
_local1 = (_layerEngine.numChildren - 1);
while (_local1 >= 0) {
if (_layerEngine.getChildAt(_local1).name == "link"){
_local2 = (_local1 + 1);
while ((((_local2 < _layerEngine.numChildren)) && (!((_layerEngine.getChildAt(_local2).name == "link"))))) {
_layerEngine.swapChildrenAt((_local2 - 1), _local2);
_local2++;
};
};
_local1--;
};
}
private function onPhraseBaloonShowed(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SHOWED, onPhraseBaloonShowed);
this.phraseBaloonDelayCounter = 0;
this.phraseBaloon.addEventListener(Event.ENTER_FRAME, phraseBaloonDelay, false, 0, true);
}
public function addPopUp(_arg1:int):void{
var _local2:Number;
var _local3:Number;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:Boolean;
var _local8:SharedObject;
var _local9:EditButton;
if (_popUp == null){
this.addEventListener(Config.EVENT_POPUPBUTTON_NEXT, popupButtonNextHandler, false, 0, true);
this.addEventListener(Config.EVENT_POPUPBUTTON_MAP, popupButtonMapHandler, false, 0, true);
this.addEventListener(Config.EVENT_POPUPBUTTON_RETRY, popupButtonRetryHandler, false, 0, true);
if (this._fader == null){
this._fader = new Fader();
this._fader.addEventListener(Fader.COMPLETE, onFadeInCompleteHandler, false, 0, true);
this.addChild(this._fader);
this._fader.fadeIn();
};
if (_arg1 == Config.POPUP_WIN){
_local2 = Math.round(this.budget);
_local3 = 0;
if (this.levelDifficulty == Config.DIFFICULTY_EASY){
if (this.levelNumber <= 11){
_local3 = 100;
} else {
if ((((this.levelNumber >= 12)) && ((this.levelNumber <= 17)))){
_local3 = 200;
} else {
if ((((this.levelNumber >= 18)) && ((this.levelNumber <= 27)))){
_local3 = 3000;
} else {
if ((((this.levelNumber >= 28)) && ((this.levelNumber <= 33)))){
_local3 = 400;
} else {
if ((((this.levelNumber >= 34)) && ((this.levelNumber <= 43)))){
_local3 = 500;
} else {
if ((((this.levelNumber >= 44)) && ((this.levelNumber <= 49)))){
_local3 = 600;
} else {
if ((((this.levelNumber >= 50)) && ((this.levelNumber <= 57)))){
_local3 = 700;
} else {
if ((((this.levelNumber >= 58)) && ((this.levelNumber <= 63)))){
_local3 = 800;
} else {
if ((((this.levelNumber >= 64)) && ((this.levelNumber <= 66)))){
_local3 = 900;
} else {
if (this.levelNumber >= 67){
_local3 = 1000;
};
};
};
};
};
};
};
};
};
};
};
if (this.levelDifficulty == Config.DIFFICULTY_NORMAL){
if (this.levelNumber <= 11){
_local3 = 1000;
} else {
if ((((this.levelNumber >= 12)) && ((this.levelNumber <= 17)))){
_local3 = 2000;
} else {
if ((((this.levelNumber >= 18)) && ((this.levelNumber <= 27)))){
_local3 = 3000;
} else {
if ((((this.levelNumber >= 28)) && ((this.levelNumber <= 33)))){
_local3 = 4000;
} else {
if ((((this.levelNumber >= 34)) && ((this.levelNumber <= 43)))){
_local3 = 5000;
} else {
if ((((this.levelNumber >= 44)) && ((this.levelNumber <= 49)))){
_local3 = 6000;
} else {
if ((((this.levelNumber >= 50)) && ((this.levelNumber <= 57)))){
_local3 = 7000;
} else {
if ((((this.levelNumber >= 58)) && ((this.levelNumber <= 63)))){
_local3 = 8000;
} else {
if ((((this.levelNumber >= 64)) && ((this.levelNumber <= 66)))){
_local3 = 9000;
} else {
if (this.levelNumber >= 67){
_local3 = 10000;
};
};
};
};
};
};
};
};
};
};
};
if (this.levelDifficulty == Config.DIFFICULTY_HARD){
if (this.levelNumber <= 11){
_local3 = 1000;
} else {
if ((((this.levelNumber >= 12)) && ((this.levelNumber <= 17)))){
_local3 = 2000;
} else {
if ((((this.levelNumber >= 18)) && ((this.levelNumber <= 27)))){
_local3 = 3000;
} else {
if ((((this.levelNumber >= 28)) && ((this.levelNumber <= 33)))){
_local3 = 4000;
} else {
if ((((this.levelNumber >= 34)) && ((this.levelNumber <= 43)))){
_local3 = 5000;
} else {
if ((((this.levelNumber >= 44)) && ((this.levelNumber <= 49)))){
_local3 = 6000;
} else {
if ((((this.levelNumber >= 50)) && ((this.levelNumber <= 57)))){
_local3 = 7000;
} else {
if ((((this.levelNumber >= 58)) && ((this.levelNumber <= 63)))){
_local3 = 8000;
} else {
if ((((this.levelNumber >= 64)) && ((this.levelNumber <= 66)))){
_local3 = 9000;
} else {
if (this.levelNumber >= 67){
_local3 = 10000;
};
};
};
};
};
};
};
};
};
};
};
_local2 = (_local2 + _local3);
this.winBudget = _local2;
_local4 = BigPopUpWin.TYPE_RETRY_MAP_NEXT;
_local5 = 0;
if (this.levelDifficulty == Config.DIFFICULTY_EASY){
_local6 = 0;
while (_local6 < Config.easyLevels.length) {
if (((!((_local6 == (this.levelNumber - 1)))) && ((Config.easyLevels[_local6] > 0)))){
_local5++;
};
_local6++;
};
};
if (this.levelDifficulty == Config.DIFFICULTY_NORMAL){
_local6 = 0;
while (_local6 < Config.normalLevels.length) {
if (((!((_local6 == (this.levelNumber - 1)))) && ((Config.normalLevels[_local6] > 0)))){
_local5++;
};
_local6++;
};
};
if (_local5 == (Config.LEVELS_TOTAL - 1)){
_local7 = true;
_local8 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local8.size > 0){
if (_local8.data.win != null){
_local7 = _local8.data.win;
};
};
if (_local7){
_local4 = BigPopUpWin.TYPE_NEXT;
} else {
_local4 = BigPopUpWin.TYPE_RETRY_MAP;
};
};
_popUp = new BigPopUpWin(_local2, this.winBudget, _local3, _local4);
_popUp.x = (Config.SCREEN_WIDTH / 2);
_popUp.y = (Config.SCREEN_HEIGHT / 2);
addChild(_popUp);
} else {
if (_arg1 == Config.POPUP_LOSE){
_arg1 = BigPopUpLose.TYPE_YES_NO;
if (this.loseTimes > 5){
_arg1 = BigPopUpLose.TYPE_YES_NO_SKIP;
};
_popUp = new BigPopUpLose(_arg1);
_popUp.x = (Config.SCREEN_WIDTH / 2);
_popUp.y = (Config.SCREEN_HEIGHT / 2);
_local9 = new EditButton();
_local9.x = ((-(Config.SCREEN_WIDTH) / 2) + 46.6);
_local9.y = ((-(Config.SCREEN_HEIGHT) / 2) + 36);
_local9.addEventListener(MouseEvent.CLICK, onEditButton, false, 0, true);
_local9.addEventListener(MouseEvent.MOUSE_OVER, overEditButton, false, 0, true);
_local9.addEventListener(MouseEvent.MOUSE_OUT, outEditButton, false, 0, true);
_popUp.addChild(_local9);
addChild(_popUp);
};
};
};
}
private function mouseWheelHandler(_arg1:MouseEvent):void{
if (_arg1.delta > 0){
zoomIn();
} else {
zoomOut();
};
}
public function get PHRASES():Array{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
_PHRASES = ["Oh... still so far from home.", "Thanks for your help, Player", "This one sure is tough.", "Youve done well so far, but there are still more islands to cross!", "I really miss my friends.", "I think I can see home from here, were getting closer!", "Hey everybody, I'm on my way and Im bringing help!", "You seem tired, do you need a rest?", "I feel that together we can do this.", "One more leap!", "Here we go, Player!", "Oh, were still not there yet...", "We're heading in the right direction, Player!", "We still have more work to do.", "The water sure is cold these days.", "There is no such thing as \"Do not try\". Do, or do not. Those are your options.", "There must be a solution... Youll get it, I'm sure!", "Do your best, Player.", "I wonder how my friends are.", "Back to work...", "I'm sure that there was a bridge here before.", "This bridge was broken too, let's rebuild it!", "I wish this was just a dream.", "I sure hope this ends soon.", "I wish this never happened.", "That storm came out of nowhere.", "Let's rebuild this bridge too!"];
} else {
_PHRASES = ["Ох, я все еще так далеко от дома...", "Спасибо за помощь, Игрок.", "В этот раз все не так просто, как кажется.", "Все это время вы продвигались очень хорошо, но впереди нас ждут еще большие испытания!", "Я так скучаю по моим друзьям.", "Мне кажется, я уже вижу мой дом! Мы подбираемся все ближе и ближе!", "Друзья, мы идем к вам на помощь!", "Вы выглядите усталым, не хотите отдохнуть?", "Вместе мы справимся!", "Еще чуть-чуть!", "А вот и мы!", "Ох, мы все еще не на месте...", "Мы двигаемся в правильном направлении, Игрок!", "У нас еще столько работы...", "А вода сейчас холодная, бррр.", "Забудьте про слово «в другой раз», просто берите и делайте!", "Должно же быть здесь хоть какое-то решение. Я верю в вас, вы справитесь!", "Игрок, покажите, на что вы способны!", "Интересно как там мои друзья.", "Возвращаемся к работе...", "Я помню это место, здесь стоял красивый и крепкий мост.", "Волна разрушила и этот мост тоже. Давайте построим новый!", "Так хочется верить, что все, что с нами случилось, - всего лишь страшный сон.", "Я надеюсь, это скоро закончится.", "Как бы хотелось, чтобы этого никогда не случалось.", "Эта волна появилась словно ниоткуда!", "Давайте перестроим и этот мост тоже!"];
};
return (_PHRASES);
}
private function deleteSets(_arg1:Array):void{
var _local2:Number;
var _local3:Number;
var _local4:Boolean;
var _local5:Array;
var _local6:Number;
var _local7:Array;
var _local8:Number;
var _local9:Number;
_groupMaterials.removeSetById(_arg1);
_local2 = 0;
while (_local2 < this.ropes.length) {
if (_arg1.indexOf(this.ropes[_local2].setId) == -1){
_local2++;
} else {
this.ropes.splice(_local2, 1);
};
};
while (_local2 < _sets.length) {
if (_arg1.indexOf(_sets[_local2].x) != -1){
_sets.splice(_local2, 1);
} else {
_local2++;
};
};
_local2 = 0;
while (_local2 < _groupMaterials.particles.length) {
if (!_groupMaterials.particles[_local2].collidable){
} else {
if (_groupMaterials.particles[_local2].fixed){
_groupMaterials.particles[_local2].collidable = true;
} else {
_local4 = false;
_local5 = _groupMaterials.particles[_local2].getSets();
_local6 = 0;
while (_local6 < _sets.length) {
if (_local5.indexOf(_sets[_local6].x) != -1){
if (_sets[_local6].y == Config.MATERIAL_DECK){
_local4 = true;
break;
};
};
_local6++;
};
_groupMaterials.particles[_local2].collidable = _local4;
};
};
_local2++;
};
_local3 = 0;
_local2 = 0;
while (_local2 < _groupMaterials.constraints.length) {
_local7 = (_groupMaterials.constraints[_local2] as SpringConstraint).getSets();
_local8 = 0;
if (_local7.length != 0){
_local9 = _local7[0];
_local8 = getMaterialBySet(_local9);
};
_local3 = (_local3 + calcCost((_groupMaterials.constraints[_local2] as SpringConstraint).particleA, (_groupMaterials.constraints[_local2] as SpringConstraint).particleB, _local8));
_local2++;
};
budget = (levelBudget - _local3);
}
private function undo():void{
var _local1:Number;
var _local2:Point;
var _local3:Point;
var _local4:Number;
var _local5:Array;
if (currMode == Config.MODE_EMULATION){
return;
};
if (_actions.length == 0){
return;
};
_undoMode = false;
_local1 = 0;
while (_local1 < _actions.length) {
if ((_actions[_local1] as Action).string == Config.ACTION_ADD){
deleteSets((_actions[_local1] as Action).params);
} else {
if ((_actions[_local1] as Action).string == Config.ACTION_REMOVE){
_local2 = (_actions[_local1] as Action).params[0];
_local3 = (_actions[_local1] as Action).params[1];
_local4 = (_actions[_local1] as Action).params[2];
if (_points.length > 0){
_points.splice(0);
};
_local5 = _groupMaterials.getObjectsUnderPoint(_local2.x, _local2.y, true, true, 0, true);
if (_local5.length > 0){
_points.push(_local5[0]);
} else {
_points.push(_local2);
};
_local5 = _groupMaterials.getObjectsUnderPoint(_local3.x, _local3.y, true, true, 0, true);
if (_local5.length > 0){
_points.push(_local5[0]);
} else {
_points.push(_local3);
};
connectPoints(_local4);
};
};
_local1++;
};
_actions.splice(0);
_hud.undoButton.hide();
_undoMode = true;
}
private function setUpSprites(_arg1:Array):void{
var _local2:int;
var _local3:SpriteInfo;
var _local4:String;
var _local5:Class;
var _local6:*;
if (this._layerDynamic == null){
return;
};
if (_arg1 == null){
return;
};
_local2 = 0;
while (_local2 < _arg1.length) {
if ((_arg1[_local2] is SpriteInfo)){
_local3 = _arg1[_local2];
_local4 = ("sprite_" + _local3.type.toString());
_local5 = (getDefinitionByName(_local4) as Class);
_local6 = new (_local5);
_local6.x = _local3.x;
_local6.y = _local3.y;
_local6.transform.matrix = _local3.matrix;
_local6.cacheAsBitmap = true;
this.addChildIntoLayer(_local6, ((_local3.layer)==1) ? 2 : _local3.layer);
};
_local2++;
};
}
private function scrollRightHandler(_arg1:Event):void{
scrollRight();
}
public function scrollDown(_arg1:Number=0):void{
if (!_scrolling){
return;
};
if (_arg1 > 0){
_scrollY = (_scrollY - _arg1);
} else {
_scrollY = (_scrollY - Config.SCROLLING_ITERATION);
};
if ((_scrollY + (levelBorders.bottomBorderY * _scale)) <= Config.SCREEN_HEIGHT){
_scrollY = (Config.SCREEN_HEIGHT - (levelBorders.bottomBorderY * _scale));
};
}
private function mouseUpHandler(_arg1:MouseEvent):void{
var _local2:Point;
var _local3:Array;
var _local4:*;
var _local5:Point;
if (this._fader){
return;
};
if (_scrollThroughDragging){
_scrollThroughDragging = false;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
if (_currMode == Config.MODE_EMULATION){
return;
};
if (!enableBuilding){
return;
};
if (_currMode == Config.MODE_BUILDING){
if (_dragging){
_local2 = new Point((_points[(_points.length - 1)] as AbstractParticle).px, (_points[(_points.length - 1)] as AbstractParticle).py);
_local3 = _groupMaterials.getObjectsUnderPoint(_pointer.x, _pointer.y, true, true, 0, true);
if ((((_pointer.x == _local2.x)) && ((_pointer.y == _local2.y)))){
_points.splice(0);
_local5 = new Point(_arg1.stageX, _arg1.stageY);
deleteSetUnderPoint(_local5.x, _local5.y);
} else {
if (_local3.length > 0){
_points.push(_local3[0]);
} else {
_local4 = new Point(_pointer.x, _pointer.y);
_points.push(_local4);
};
connectPoints();
};
dragging = false;
_line.visible = false;
} else {
if (((!(_soundPanel.hitTestPoint(mouseX, mouseY, true))) && (!(_hud.hitTestPoint(mouseX, mouseY, true))))){
deleteSetUnderPoint(_arg1.stageX, _arg1.stageY);
};
};
};
}
public function get playerName():String{
return (_playerName);
}
private function setUpGrass(_arg1:Array=null):void{
var _local2:Array;
var _local3:int;
var _local4:Array;
var _local5:Point;
var _local6:Point;
var _local7:int;
var _local8:*;
var _local9:Boolean;
var _local10:int;
var _local11:DisplayObject;
var _local12:Point;
var _local13:Object;
var _local14:Number;
var _local15:Sprite;
var _local16:Class;
var _local17:Number;
var _local18:String;
var _local19:*;
if (this._layerEngine == null){
return;
};
if (_arg1 != null){
_local2 = _arg1;
} else {
_local2 = new Array();
};
_local3 = 0;
while (_local3 < this.levelSurfaces.length) {
if (this.levelSurfaces[_local3].length > 1){
_local4 = this.levelSurfaces[_local3];
_local7 = 0;
for (;_local7 < _local4.length;_local7++) {
if (_local7 == 0){
_local6 = new Point(_local4[_local7].x, _local4[_local7].y);
continue;
} else {
_local5 = _local6;
_local6 = new Point(_local4[_local7].x, _local4[_local7].y);
};
if (_local5.y == _local6.y){
_local8 = (_local5.x + ((_local6.x - _local5.x) / 2));
_local9 = false;
_local10 = 0;
while (_local10 < _layerEngine.numChildren) {
_local11 = _layerEngine.getChildAt(_local10);
if (_local11.name == "texture"){
_local12 = _layerEngine.localToGlobal(new Point(_local8, (_local5.y - 20)));
if (_local11.hitTestPoint(_local12.x, _local12.y)){
_local9 = true;
break;
};
};
_local10++;
};
if (!_local9){
_local2.push({p1:_local5, p2:_local6});
};
};
};
};
_local3++;
};
_local3 = 0;
while (_local3 < _local2.length) {
_local13 = _local2[_local3];
_local14 = Math.sqrt((((_local13.p1.x - _local13.p2.x) * (_local13.p1.x - _local13.p2.x)) + ((_local13.p1.y - _local13.p2.y) * (_local13.p1.y - _local13.p2.y))));
_local15 = new Sprite();
_local17 = 0;
while (_local17 <= _local14) {
_local18 = ("vis.Grass0" + Math.floor(((Math.random() * 8) + 1)).toString());
_local16 = (getDefinitionByName(_local18) as Class);
_local19 = new (_local16);
_local19.scaleX = 1.3;
_local19.scaleY = 1.3;
if (_local17 == 0){
_local17 = (_local17 + (_local19.width / 2));
};
_local19.x = _local17;
_local19.y = -5;
_local19.cacheAsBitmap = true;
_local15.addChild(_local19);
_local17 = (_local17 + (_local19.width / 2));
};
_local15.rotation = ((Math.asin(((_local13.p2.y - _local13.p1.y) / _local14)) * 180) / Math.PI);
_local15.x = ((_local13.p1.x)<=_local13.p2.x) ? _local13.p1.x : _local13.p2.x;
_local15.y = _local13.p1.y;
this._layerEngine.addChild(_local15);
_local3++;
};
}
private function onEditButton(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_EDIT, true));
}
private function startBuilding():void{
var _local1:int;
var _local2:int;
this.loseTimes++;
if (hasEventListener(Config.EVENT_EDIT)){
removeEventListener(Config.EVENT_EDIT, onEditHandler);
};
addEventListener(Config.EVENT_START, onStartHandler, false, 0, true);
addEventListener(Config.EVENT_DECK, onDeckHandler, false, 0, true);
addEventListener(Config.EVENT_STEEL, onSteelHandler, false, 0, true);
addEventListener(Config.EVENT_ROPE, onRopeHandler, false, 0, true);
addEventListener(Config.EVENT_UNDO, onUndoHandler, false, 0, true);
_local1 = 0;
while (_local1 < _layerDynamic.numChildren) {
if (_local1 != (_layerDynamic.numChildren - 1)){
_layerDynamic.getChildAt(_local1).transform.colorTransform = new ColorTransform(0.57, 0.57, 0.57, 1, 80, 95, 101, 0);
};
_local1++;
};
_local2 = 0;
while (_local2 < this.sprites.length) {
trace(this.sprites[_local1]);
_local2++;
};
_grid.visible = true;
_groupMaterials.restoreDeletedParticles();
_groupMaterials.restoreDeletedConstraints();
_groupMaterials.resetCoordinates();
APEngine.paint();
protagonistsReset();
if (_currMaterial == 0){
currMaterial = Config.MATERIAL_DECK;
};
removePopUp();
scrollReset();
highlignting = true;
_hud.mode = Config.MODE_BUILDING;
if ((((_actions == null)) || ((_actions.length == 0)))){
_hud.undoButton.hide();
} else {
_hud.undoButton.reset();
};
_local1 = 0;
while (_local1 < _protagonists.length) {
_protagonists[_local1].particle.collisionDetected = false;
_local1++;
};
}
private function waitAfterBuilding(_arg1:Event):void{
if (_counter <= 0){
this.removeEventListener(Event.ENTER_FRAME, waitAfterBuilding);
this.removeChild(this.loaderScreen);
this.loaderScreen = null;
this.dispatchEvent(new Event(Config.EVENT_LEVEL_LOADED, true));
_hud.undoButton.hide();
_undoMode = true;
} else {
_counter--;
};
}
public function get paused():Boolean{
return (this._paused);
}
public function set blockDelete(_arg1:Boolean):void{
_blockDelete = _arg1;
}
protected function reset():void{
var _local1:Array;
var _local2:int;
var _local3:Array;
var _local4:int;
scrollReset();
if (_currMode == Config.MODE_EMULATION){
removePopUp();
_groupMaterials.restoreDeletedParticles();
_groupMaterials.restoreDeletedConstraints();
_groupMaterials.resetConstraintOverloading();
_groupMaterials.resetCoordinates();
protagonistsReset();
protagonistsRun();
} else {
if (_currMode == Config.MODE_BUILDING){
_local1 = [];
_local2 = 0;
while (_local2 < _groupMaterials.constraints.length) {
if ((_groupMaterials.constraints[_local2] as SpringConstraint).numSets() > 0){
_local3 = (_groupMaterials.constraints[_local2] as SpringConstraint).getSets(0);
_local4 = 0;
while (_local4 < _local3.length) {
if (_local1.indexOf(_local3[_local4]) == -1){
_local1.push(_local3[_local4]);
};
_local4++;
};
};
_local2++;
};
this.deleteSetUnderPoint(0, 0, _local1);
};
};
}
protected function get enableBuilding():Boolean{
return (_enableBuilding);
}
private function onHelpHandler(_arg1:Event):void{
}
protected function makeDeckSprite(_arg1, _arg2):Sprite{
var _local3:Point;
var _local4:Point;
var _local5:Number;
var _local6:Number;
var _local7:Sprite;
var _local8:Sprite;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:DeckLastSegment;
var _local14:DeckLastSegment;
var _local15:DeckSegment;
var _local16:DeckPole;
if ((((_arg1 == null)) || ((_arg2 == null)))){
return (null);
};
if ((_arg1 is AbstractParticle)){
_local3 = new Point();
_local3.x = _arg1.px;
_local3.y = _arg1.py;
} else {
if ((_arg1 is Point)){
_local3 = _arg1;
} else {
return (null);
};
};
if ((_arg2 is AbstractParticle)){
_local4 = new Point();
_local4.x = _arg2.px;
_local4.y = _arg2.py;
} else {
if ((_arg2 is Point)){
_local4 = _arg2;
} else {
return (null);
};
};
_local5 = Math.sqrt((((_local4.x - _local3.x) * (_local4.x - _local3.x)) + ((_local4.y - _local3.y) * (_local4.y - _local3.y))));
_local6 = (-(_local5) / 2);
_local7 = new Sprite();
_local8 = new Sprite();
_local9 = (Math.floor((_local5 / Config.GRID_WIDTH)) - 1);
_local10 = (_local9 + 1);
_local11 = 0;
_local12 = (_local5 / _local10);
while (_local10 > 0) {
_local15 = new DeckSegment();
_local15.scaleX = (_local12 / _local15.width);
_local15.x = _local11;
_local8.addChild(_local15);
_local11 = (_local11 + _local12);
_local10--;
};
_local12 = (_local5 / (_local9 + 1));
_local11 = _local12;
while (_local9 > 0) {
_local16 = new DeckPole();
_local16.x = _local11;
_local8.addChild(_local16);
_local11 = (_local11 + _local12);
_local9--;
};
_local7.addChild(_local8);
_local8.x = _local6;
_local8.scaleY = -1;
_local13 = new DeckLastSegment(true);
_local7.addChild(_local13);
_local13.x = _local6;
_local13.scaleY = -1;
_local14 = new DeckLastSegment();
_local7.addChild(_local14);
_local14.x = (_local5 + _local6);
_local14.scaleY = -1;
if (_local3.x < _local4.x){
_local7.scaleY = 1.6;
} else {
if (_local3.x > _local4.x){
_local7.scaleY = -1.6;
} else {
if (_local3.y > _local4.y){
_local7.scaleY = 1.6;
} else {
_local7.scaleY = 1.6;
};
};
};
_local7.name = "deck";
_local7.cacheAsBitmap = true;
return (_local7);
}
public function getLevelSolution():Object{
var _local1:Boolean;
var _local2:Object;
var _local3:Array;
var _local4:Array;
var _local5:*;
var _local6:int;
var _local7:Array;
var _local8:Array;
var _local9:CircleParticle;
var _local10:SpringConstraint;
var _local11:Number;
var _local12:Object;
_local1 = _physicsOn;
_physicsOn = false;
_groupMaterials.restoreDeletedParticles();
_groupMaterials.restoreDeletedConstraints();
_groupMaterials.resetCoordinates();
_local2 = {};
_local3 = [];
_local4 = new Array(_groupMaterials.particles.length);
_local5 = 0;
_local6 = 0;
while (_local6 < _groupMaterials.particles.length) {
_local9 = _groupMaterials.particles[_local6];
if (_local9.subParticle){
} else {
_local3.push({px:Math.floor(_local9.px), py:Math.floor(_local9.py)});
var _temp1 = _local5;
_local5 = (_local5 + 1);
_local4[_local6] = _temp1;
};
_local6++;
};
_local7 = [];
_local8 = [];
_local6 = 0;
for (;_local6 < _groupMaterials.constraints.length;_local6++) {
_local10 = _groupMaterials.constraints[_local6];
if (_local10.material == Config.MATERIAL_ROPE){
_local11 = _local10.getSets()[0];
if (_local7.indexOf(_local11) >= 0){
continue;
};
for each (_local12 in this.ropes) {
if (_local12.setId == _local11){
_local8.push({material:_local10.material, particleA:_local4[_groupMaterials.particles.indexOf(_local12.p1)], particleB:_local4[_groupMaterials.particles.indexOf(_local12.p2)]});
break;
};
};
_local7.push(_local11);
} else {
_local8.push({material:_local10.material, particleA:_local4[_groupMaterials.particles.indexOf(_local10.particleA)], particleB:_local4[_groupMaterials.particles.indexOf(_local10.particleB)]});
};
};
_local2["particles"] = _local3;
_local2["constraints"] = _local8;
_physicsOn = _local1;
return (_local2);
}
public function get dragging():Boolean{
return (_dragging);
}
protected function get currMaterial():Number{
return (_currMaterial);
}
private function onMapHandler(_arg1:Event):void{
this.dispatchEvent(new Event(Config.EVENT_LEVEL_CLOSE, true));
}
private function onMenuHandler(_arg1:Event):void{
this.dispatchEvent(new Event(Config.EVENT_LEVEL_CLOSE_TO_MENU, true));
}
private function popupButtonRetryHandler(_arg1:Event):void{
removePopUp();
currMode = Config.MODE_BUILDING;
}
protected function makeSteelSprite(_arg1, _arg2):Sprite{
var _local3:Point;
var _local4:Point;
var _local5:Number;
var _local6:Number;
var _local7:Sprite;
var _local8:Sprite;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:SteelLastSegment;
var _local13:SteelLastSegment;
var _local14:SteelSegment;
if ((((_arg1 == null)) || ((_arg2 == null)))){
return (null);
};
if ((_arg1 is AbstractParticle)){
_local3 = new Point();
_local3.x = _arg1.px;
_local3.y = _arg1.py;
} else {
if ((_arg1 is Point)){
_local3 = _arg1;
} else {
return (null);
};
};
if ((_arg2 is AbstractParticle)){
_local4 = new Point();
_local4.x = _arg2.px;
_local4.y = _arg2.py;
} else {
if ((_arg2 is Point)){
_local4 = _arg2;
} else {
return (null);
};
};
_local5 = Math.sqrt((((_local4.x - _local3.x) * (_local4.x - _local3.x)) + ((_local4.y - _local3.y) * (_local4.y - _local3.y))));
_local6 = (-(_local5) / 2);
_local7 = new Sprite();
_local8 = new Sprite();
_local9 = Math.floor((_local5 / Config.GRID_WIDTH));
_local10 = 0;
_local11 = (_local5 / _local9);
while (_local9 > 0) {
_local14 = new SteelSegment();
_local14.scaleX = (_local11 / _local14.width);
_local14.x = _local10;
_local8.addChild(_local14);
_local10 = (_local10 + _local11);
_local9--;
};
_local7.addChild(_local8);
_local8.x = (0 + _local6);
_local8.scaleY = -1;
_local12 = new SteelLastSegment(true);
_local7.addChild(_local12);
_local12.x = (0 + _local6);
_local12.scaleY = -1;
_local13 = new SteelLastSegment();
_local7.addChild(_local13);
_local13.x = (_local5 + _local6);
_local13.scaleY = -1;
_local7.name = "steel";
_local7.cacheAsBitmap = true;
return (_local7);
}
private function setUpZones(_arg1:Array):void{
var _local2:int;
var _local3:LevelZone;
var _local4:Flag;
var _local5:RoadSign;
if (_arg1 == null){
return;
};
if (this._layerFirst == null){
return;
};
_local2 = 0;
while (_local2 < _arg1.length) {
if (_arg1[_local2].type == LevelZone.FINISH){
this.levelFinishZone = this.levelZones[_local2];
};
_local2++;
};
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = (_arg1[_local2] as LevelZone);
if (_local3.type == LevelZone.FINISH){
_local4 = new Flag();
_local4.x = (_local3.x + (_local3.width / 2));
_local4.y = _local3.bottom;
_local4.scaleX = 0.4;
_local4.scaleY = 0.4;
this._layerEngine.addChild(_local4);
} else {
if (_local3.type == LevelZone.LEFT){
_local5 = new RoadSign(RoadSign.SIGN_LEFT);
_local5.x = _local3.right;
_local5.y = _local3.bottom;
this._layerEngine.addChild(_local5);
if (this.levelNumber == 60){
_local5.rotation = (_local5.rotation - 40);
};
} else {
if (_local3.type == LevelZone.RIGHT){
_local5 = new RoadSign(RoadSign.SIGN_RIGHT);
_local5.x = _local3.left;
_local5.y = _local3.bottom;
this._layerEngine.addChild(_local5);
};
};
};
_local2++;
};
}
private function get stress():Boolean{
return (_stress);
}
private function overEditButton(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
public function loadLevelSolution():void{
var _local1:SharedObject;
_local1 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local1.size != 0){
if (_local1.data.solutions){
if ((((this.levelDifficulty == Config.DIFFICULTY_EASY)) && (_local1.data.solutions.easy))){
this.setLevelSolution(_local1.data.solutions.easy[(this.levelNumber - 1)]);
};
if ((((this.levelDifficulty == Config.DIFFICULTY_NORMAL)) && (_local1.data.solutions.normal))){
this.setLevelSolution(_local1.data.solutions.normal[(this.levelNumber - 1)]);
};
if ((((this.levelDifficulty == Config.DIFFICULTY_HARD)) && (_local1.data.solutions.hard))){
this.setLevelSolution(_local1.data.solutions.hard[(this.levelNumber - 1)]);
};
};
};
}
private function setUpClouds(_arg1:String, _arg2:LevelBorders=null):void{
var _local3:*;
var _local4:int;
var _local5:int;
if (this._clouds == null){
this._clouds = new Array();
};
if (_arg1 == LevelData.WEATHER_CLOUDY){
_local4 = 0;
while (_local4 < 10) {
_local3 = new NastyCloud();
if (_arg2 != null){
(_local3 as NastyCloud).leftBorder = _arg2.leftBorderX;
(_local3 as NastyCloud).rightBorder = _arg2.rightBorderX;
};
_local3.x = ((Math.random() * Math.abs((_arg2.rightBorderX - _arg2.leftBorderX))) + _arg2.leftBorderX);
this.addChildIntoLayer(_local3, (Math.round(((Math.random() * 5) + 2)) as int));
this._clouds.push(_local3);
_local4++;
};
} else {
if (_arg1 == LevelData.WEATHER_NIGHT){
_local4 = 0;
while (_local4 < 3) {
_local3 = new NightCloud();
if (_arg2 != null){
(_local3 as NightCloud).leftBorder = _arg2.leftBorderX;
(_local3 as NightCloud).rightBorder = _arg2.rightBorderX;
};
_local3.x = ((Math.random() * Math.abs((_arg2.rightBorderX - _arg2.leftBorderX))) + _arg2.leftBorderX);
this.addChildIntoLayer(_local3, (Math.round(((Math.random() * 5) + 2)) as int));
this._clouds.push(_local3);
_local4++;
};
} else {
_local4 = 0;
while (_local4 < 3) {
_local3 = new Clouds();
if (_arg2 != null){
(_local3 as Clouds).leftBorder = _arg2.leftBorderX;
(_local3 as Clouds).rightBorder = _arg2.rightBorderX;
};
_local3.x = ((Math.random() * Math.abs((_arg2.rightBorderX - _arg2.leftBorderX))) + _arg2.leftBorderX);
_local5 = (Math.round(((Math.random() * 5) + 2)) as int);
this.addChildIntoLayer(_local3, _local5);
this._clouds.push(_local3);
_local4++;
};
};
};
}
private function onQuitSubmitHandler(_arg1:Event):void{
this.dispatchEvent(new Event(Config.EVENT_LEVEL_CLOSE_AND_QUIT, true));
}
protected function set currMode(_arg1:Number):void{
if (_arg1 == _currMode){
return;
};
_winTemp = false;
if (_arg1 == Config.MODE_RESET){
reset();
return;
};
if (_arg1 == Config.MODE_EMULATION){
startEmulation();
SoundData.RUN.play();
} else {
if (_arg1 == Config.MODE_BUILDING){
startBuilding();
SoundManager.clearChannel(SoundData.MAIN_THEME.channel);
if (!natureSoundsLaunched){
if (this.levelWeather == LevelData.WEATHER_NIGHT){
SoundData.FROGS.play();
natureSoundsLaunched = true;
} else {
if (this.levelWeather == LevelData.WEATHER_CLOUDY){
SoundData.THUNDER.play();
natureSoundsLaunched = true;
} else {
natureSoundsLaunched = true;
};
};
};
} else {
return;
};
};
_swimmers = 0;
_currMode = _arg1;
}
private function mouseOverHandler(_arg1:Event):void{
_oldBlockDelete = this.blockDelete;
this.blockDelete = true;
}
private function get scrolling():Boolean{
return (_scrolling);
}
public function pause():void{
if (this.paused){
this.paused = false;
} else {
this.paused = true;
};
}
private function scrollUpdate(_arg1:Boolean=true, _arg2:Point=null):void{
var _local3:Point;
var _local4:int;
var _local5:Point;
_local3 = new Point();
if (_arg1){
_local5 = this._layerFirst.globalToLocal(new Point(this.mouseX, this.mouseY));
_local3.x = (_local5.x - _mouseXY.x);
_local3.y = (_local5.y - _mouseXY.y);
} else {
if (_arg2 != null){
_local3 = _arg2;
};
};
if (((this._layerFirst.x + (this.levelBorders.leftBorderX * _scale)) + _local3.x) > 0){
_local3.x = ((-(this.levelBorders.leftBorderX) * _scale) - this._layerFirst.x);
};
if (((this._layerFirst.x + _local3.x) + (levelBorders.rightBorderX * _scale)) < Config.SCREEN_WIDTH){
_local3.x = ((Config.SCREEN_WIDTH - this._layerFirst.x) - (levelBorders.rightBorderX * _scale));
};
if (((this._layerFirst.y + _local3.y) + (levelBorders.upperBorderY * _scale)) > 0){
_local3.y = (-(this._layerFirst.y) - (levelBorders.upperBorderY * _scale));
};
if (((this._layerFirst.y + _local3.y) + (levelBorders.bottomBorderY * _scale)) < Config.SCREEN_HEIGHT){
_local3.y = ((Config.SCREEN_HEIGHT - this._layerFirst.y) - (levelBorders.bottomBorderY * _scale));
};
_local4 = 0;
while (_local4 < this._layerDynamic.numChildren) {
this._layerDynamic.getChildAt(_local4).x = (this._layerDynamic.getChildAt(_local4).x + (_local3.x / (7 - _local4)));
this._layerDynamic.getChildAt(_local4).y = (this._layerDynamic.getChildAt(_local4).y + (_local3.y / (1 + ((6 - _local4) * 0.1))));
_local4++;
};
if (_arg1){
this._mouseXY = this._layerFirst.globalToLocal(new Point(this.mouseX, this.mouseY));
};
}
private function onPhraseBaloonHidden(_arg1:Event):void{
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_HIDDEN, onPhraseBaloonHidden);
this.phraseBaloon.parent.removeChild(this.phraseBaloon);
this.phraseBaloon = null;
}
private function onHomeHandler(_arg1:Event):void{
this.addInGameMenuWithFading();
}
public function set playerName(_arg1:String):void{
_playerName = _arg1;
}
private function phraseBaloonDelay(_arg1:Event):void{
this.phraseBaloonDelayCounter++;
if (this.phraseBaloonDelayCounter >= (Config.ENGINE_FRAMERATE * 5)){
this.phraseBaloon.removeEventListener(Event.ENTER_FRAME, phraseBaloonDelay);
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, onPhraseBaloonHidden, false, 0, true);
this.phraseBaloon.hide();
};
}
public function get winBudget():Number{
return (_winBudget);
}
public function scrollUp(_arg1:Number=0):void{
if (!_scrolling){
return;
};
if (_arg1 > 0){
_scrollY = (_scrollY + _arg1);
} else {
_scrollY = (_scrollY + Config.SCROLLING_ITERATION);
};
if ((_scrollY + (levelBorders.upperBorderY * _scale)) >= 0){
_scrollY = (-(levelBorders.upperBorderY) * _scale);
};
}
public function set paused(_arg1:Boolean):void{
var _local2:int;
if (_arg1){
this._paused = true;
this._bird.paused = true;
_local2 = 0;
while (_local2 < this._clouds.length) {
this._clouds[_local2].paused = true;
_local2++;
};
_local2 = 0;
while (_local2 < this._protagonists.length) {
if (!_protagonists[_local2].manualMode){
this._protagonists[_local2].paused = true;
};
_local2++;
};
_local2 = 0;
while (_local2 < this._waters.length) {
this._waters[_local2].paused = true;
_local2++;
};
if (this._flagArrow != null){
this._flagArrow.paused = true;
};
} else {
this._paused = false;
this._bird.paused = false;
_local2 = 0;
while (_local2 < this._clouds.length) {
this._clouds[_local2].paused = false;
_local2++;
};
_local2 = 0;
while (_local2 < this._protagonists.length) {
if (!_protagonists[_local2].manualMode){
this._protagonists[_local2].paused = false;
};
_local2++;
};
_local2 = 0;
while (_local2 < this._waters.length) {
this._waters[_local2].paused = false;
_local2++;
};
if (this._flagArrow != null){
this._flagArrow.paused = false;
};
};
}
private function onUndoHandler(_arg1:Event):void{
undo();
}
protected function connectPoints(_arg1:Number=-1, _arg2:Boolean=false, _arg3:Boolean=true):void{
var _local4:Point;
var _local5:Point;
var _local6:int;
var _local7:Number;
var _local8:Sprite;
var _local9:SpringConstraint;
var _local10:CircleParticle;
var _local11:Boolean;
var _local12:Number;
var _local13:DisplayObject;
var _local14:Point;
var _local15:int;
var _local16:Point;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:*;
var _local23:Array;
if (((this.blockConnect) && (!(_arg2)))){
return;
};
if (_currMode == Config.MODE_EMULATION){
return;
};
if (_points.length < 2){
return;
};
if (_arg1 == -1){
_arg1 = currMaterial;
};
if ((_points[1] is Point)){
_local4 = _points[1].clone();
} else {
_local4 = new Point(_points[1].px, _points[1].py);
};
if ((_points[0] is Point)){
_local5 = _points[0].clone();
} else {
_local5 = new Point(_points[0].px, _points[0].py);
};
_local6 = 0;
while (_local6 < _layerEngine.numChildren) {
_local13 = _layerEngine.getChildAt(_local6);
if (_local13.name == "texture"){
_local14 = _layerEngine.localToGlobal(_local5);
if (((!((_points[0] is CircleParticle))) && (_local13.hitTestPoint(_local14.x, _local14.y, true)))){
_points.splice(0);
return;
};
_local14 = _layerEngine.localToGlobal(_local4);
if (((!((_points[1] is CircleParticle))) && (_local13.hitTestPoint(_local14.x, _local14.y, true)))){
_points.splice(0);
return;
};
};
_local6++;
};
_local7 = calcCost(_local5, _local4, _arg1);
if (_local7 > budget){
_points.splice(0);
_hud.budgetSignalling();
return;
};
budget = (budget - _local7);
_local11 = false;
_local12 = _groupMaterials.numSets;
if (_arg1 == Config.MATERIAL_DECK){
_local11 = true;
_local15 = 0;
while (_local15 < _points.length) {
if ((_points[_local15] is Point)){
if (_layerEngine != null){
_local8 = new Sprite();
_local8.addChild(new LinkElement());
_local8.name = "link";
_layerEngine.addChild(_local8);
};
_local10 = new CircleParticle(_points[_local15].x, _points[_local15].y, Config.POINT_RADIUS, false, Config.POINT_MASS, Config.POINT_ELASTICITY, 0, _local8);
_points[_local15] = _local10;
_groupMaterials.addParticle(_points[_local15]);
};
_points[_local15].addSet(_local12);
_points[_local15].deselect();
_points[_local15].collidable = true;
if (_local15 > 0){
if (_layerEngine != null){
_local8 = makeDeckSprite(_points[(_local15 - 1)], _points[_local15]);
_layerEngine.addChild(_local8);
};
_local9 = new SpringConstraint(_points[(_local15 - 1)], _points[_local15], Config.MATERIAL_DECK_STIFFNESS, Config.MATERIAL_DECK_COLLIDABLE, Config.MATERIAL_DECK_RECT_HEIGHT, Config.MATERIAL_DECK_RECT_SCALE, true, _local8);
_local9.setStyle(Config.MATERIAL_DECK_LINE_THICKNESS, Config.MATERIAL_DECK_LINE_COLOR, 1, Config.MATERIAL_DECK_FILL_COLOR);
_local9.materialMultiplier = Config.MATERIAL_DECK_MULTIPLIER;
_local9.material = _arg1;
_groupMaterials.addConstraint(_local9, _local12);
if (_arg3){
SoundData.DECK_CONNECT.play();
};
if (((_points[(_local15 - 1)].fixed) || (_points[_local15].fixed))){
_local9.fixedEndLimit = Config.MATERIAL_FIXED_END_LIMIT;
};
};
_local15++;
};
} else {
if (_arg1 == Config.MATERIAL_STEEL){
_local11 = true;
_local15 = 0;
while (_local15 < _points.length) {
if ((_points[_local15] is Point)){
if (_layerEngine != null){
_local8 = new Sprite();
_local8.addChild(new LinkElement());
_local8.name = "link";
_layerEngine.addChild(_local8);
};
_local10 = new CircleParticle(_points[_local15].x, _points[_local15].y, Config.POINT_RADIUS, false, Config.POINT_MASS, Config.POINT_ELASTICITY, 0, _local8);
_points[_local15] = _local10;
_groupMaterials.addParticle(_points[_local15]);
};
_points[_local15].addSet(_local12);
_points[_local15].deselect();
if (_points[_local15].numSets() == 1){
_points[_local15].collidable = false;
};
if (_local15 > 0){
if (_layerEngine != null){
_local8 = makeSteelSprite(_points[(_local15 - 1)], _points[_local15]);
_layerEngine.addChild(_local8);
};
_local9 = new SpringConstraint(_points[(_local15 - 1)], _points[_local15], Config.MATERIAL_STEEL_STIFFNESS, Config.MATERIAL_STEEL_COLLIDABLE, Config.MATERIAL_STEEL_RECT_HEIGHT, Config.MATERIAL_STEEL_RECT_SCALE, true, _local8);
_local9.setStyle(Config.MATERIAL_STEEL_LINE_THICKNESS, Config.MATERIAL_STEEL_LINE_COLOR, 1, Config.MATERIAL_STEEL_FILL_COLOR);
_local9.materialMultiplier = Config.MATERIAL_STEEL_MULTIPLIER;
_local9.material = _arg1;
_groupMaterials.addConstraint(_local9, _local12);
if (_arg3){
SoundData.STEEL_CONNECT.play();
};
if (((_points[(_local15 - 1)].fixed) || (_points[_local15].fixed))){
_local9.fixedEndLimit = Config.MATERIAL_FIXED_END_LIMIT;
};
};
_local15++;
};
} else {
if (_arg1 == Config.MATERIAL_ROPE){
_local11 = true;
_local16 = new Point((_local4.x - _local5.x), (_local4.y - _local5.y));
_local17 = Config.MATERIAL_ROPE_BLOCK_LENGTH;
_local18 = Math.floor((_local16.length / _local17));
if (_local18 == 0){
_local18 = 1;
};
if (this.loaderScreen){
_processingRope = true;
this.numRopeBlocks = _local18;
this.currRopeBlock = 0;
this.addEventListener(Event.ENTER_FRAME, processRope, false, 0, true);
return;
};
_local19 = Config.MATERIAL_ROPE_LENGTH_MODIFIER;
_local20 = (_local16.x / _local18);
_local21 = (_local16.y / _local18);
if ((_points[0] is Point)){
if (_layerEngine != null){
_local8 = new Sprite();
_local8.addChild(new LinkElement());
_local8.name = "link";
_layerEngine.addChild(_local8);
};
_local10 = new CircleParticle(_points[0].x, _points[0].y, Config.POINT_RADIUS, false, Config.POINT_MASS, Config.POINT_ELASTICITY, 0, _local8);
_points[0] = _local10;
_groupMaterials.addParticle(_points[0]);
};
_points[0].addSet(_local12);
_points[0].deselect();
if (_points[0].numSets() == 1){
_points[0].collidable = false;
};
if ((_points[1] is Point)){
if (_layerEngine != null){
_local8 = new Sprite();
_local8.addChild(new LinkElement());
_local8.name = "link";
_layerEngine.addChild(_local8);
};
_local10 = new CircleParticle(_points[1].x, _points[1].y, Config.POINT_RADIUS, false, Config.POINT_MASS, Config.POINT_ELASTICITY, 0, _local8);
_points[1] = _local10;
_groupMaterials.addParticle(_points[1]);
};
_points[1].addSet(_local12);
_points[1].deselect();
if (_points[1].numSets() == 1){
_points[1].collidable = false;
};
_local22 = _points.pop();
_local15 = 1;
while (_local15 <= _local18) {
if (_local15 == _local18){
_points.push(_local22);
} else {
_local10 = new CircleParticle((_local5.x + (_local15 * _local20)), (_local5.y + (_local15 * _local21)), Config.MATERIAL_ROPE_POINT_RADIUS, false, Config.MATERIAL_ROPE_POINT_MASS, Config.MATERIAL_ROPE_POINT_ELASTICITY, 0);
_local10.setFill(0);
_local10.collidable = false;
_local10.subParticle = true;
_points.push(_local10);
_groupMaterials.addParticle(_local10, _local12);
};
_local9 = new SpringConstraint(_points[(_local15 - 1)], _points[_local15], Config.MATERIAL_ROPE_STIFFNESS, Config.MATERIAL_ROPE_COLLIDABLE, Config.MATERIAL_ROPE_RECT_HEIGHT, Config.MATERIAL_ROPE_RECT_SCALE, true);
_local9.setStyle(Config.MATERIAL_ROPE_LINE_THICKNESS, Config.MATERIAL_ROPE_LINE_COLOR, 1, Config.MATERIAL_ROPE_FILL_COLOR);
_local9.materialMultiplier = Config.MATERIAL_ROPE_MULTIPLIER;
_local9.material = _arg1;
_local9.restLength = (_local9.restLength * _local19);
_groupMaterials.addConstraint(_local9, _local12);
if (_arg3){
SoundData.ROPE_CONNECT.play();
};
if (((_points[(_local15 - 1)].fixed) || (_points[_local15].fixed))){
_local9.fixedEndLimit = Config.MATERIAL_FIXED_END_LIMIT;
};
_local15++;
};
this.ropes.push({setId:_local12, p1:_points[0], p2:_local22});
APEngine.paint();
};
};
};
if (_local11){
_sets.push(new Point(_local12, _arg1));
_groupMaterials.numSets++;
indexesCorrection();
_points.splice(0);
dispatchEvent(new Event(Config.EVENT_CONNECT_POINTS, true));
if (((_undoMode) && (!(this.tutorialMode)))){
if (_actions.length > 0){
_actions.splice(0);
};
_local23 = [_local12];
_actions.push(new Action(Config.ACTION_ADD, _local23));
_hud.undoButton.reset();
};
};
}
private function onResetHandler(_arg1:Event):void{
currMode = Config.MODE_RESET;
}
public function zoomOut():void{
var _local1:*;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Point;
if (_popUp){
return;
};
if (!_zooming){
return;
};
_zooming = false;
_local1 = _scale;
_scale = (_scale * Config.ZOOM_OUT_ITERATION);
_local2 = (levelBorders.width * _scale);
_local3 = (levelBorders.height * _scale);
_local4 = (_local3 * (Math.abs(levelBorders.bottomBorderY) / levelBorders.height));
_local5 = (_local3 - _local4);
if (_local2 < Config.SCREEN_WIDTH){
_scale = (Config.SCREEN_WIDTH / levelBorders.width);
_local2 = (levelBorders.width * _scale);
_local3 = (levelBorders.height * _scale);
_local4 = (_local3 * (Math.abs(levelBorders.bottomBorderY) / levelBorders.height));
_local5 = (_local3 - _local4);
};
if (_local3 < Config.SCREEN_HEIGHT){
_scale = (Config.SCREEN_HEIGHT / levelBorders.height);
_local2 = (levelBorders.width * _scale);
_local3 = (levelBorders.height * _scale);
_local4 = (_local3 * (Math.abs(levelBorders.bottomBorderY) / levelBorders.height));
_local5 = (_local3 - _local4);
};
_local6 = new Point(((Config.SCREEN_WIDTH * (_local1 - _scale)) / 2), ((Config.SCREEN_HEIGHT * (_local1 - _scale)) / 2));
this.scrollUpdate(false, _local6);
_zooming = true;
}
private function onEditHandler(_arg1:Event):void{
if (_popUp){
this.removePopUp();
};
currMode = Config.MODE_BUILDING;
}
public function scrollReset():void{
if (!scrolling){
return;
};
if (_scrollX > 0){
scrollLeft(_scrollX);
} else {
if (_scrollX < 0){
scrollRight(-(_scrollX));
};
};
if (_scrollY > 0){
scrollDown(_scrollY);
} else {
if (_scrollY < 0){
scrollUp(-(_scrollY));
};
};
}
private function zoomUpdate():void{
var _local1:int;
if (_popUp){
return;
};
_hud.zoomInButton.visible = true;
_hud.zoomInButton.visible = true;
if (((((levelBorders.width * _scale) <= Config.SCREEN_WIDTH)) || (((levelBorders.height * _scale) <= Config.SCREEN_HEIGHT)))){
_hud.zoomOutButton.active = false;
} else {
_hud.zoomOutButton.active = true;
};
if (_scale == 1){
_hud.zoomInButton.active = false;
} else {
_hud.zoomInButton.active = true;
};
if (_scale != this._layerFirst.scaleX){
_local1 = 0;
while (_local1 < this._layerDynamic.numChildren) {
this._layerDynamic.getChildAt(_local1).scaleX = this._scale;
this._layerDynamic.getChildAt(_local1).scaleY = this._scale;
_local1++;
};
};
}
private function mouseDownHandler(_arg1:MouseEvent):void{
var _local2:Array;
if (this._fader){
return;
};
if (((!((this.phraseBaloon == null))) && (!(this.tutorialMode)))){
if (this.phraseBaloon.hasEventListener(TalkBaloon.EVENT_SHOWED)){
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SHOWED, onPhraseBaloonShowed);
};
if (this.phraseBaloon.hasEventListener(Event.ENTER_FRAME)){
this.phraseBaloon.removeEventListener(Event.ENTER_FRAME, phraseBaloonDelay);
};
if (!this.phraseBaloon.hasEventListener(TalkBaloon.EVENT_HIDDEN)){
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, onPhraseBaloonHidden, false, 0, true);
this.phraseBaloon.hide();
};
};
if (_currMode == Config.MODE_EMULATION){
if (((((this.scrolling) && ((_popUp == null)))) && (!(this.paused)))){
if (((((!(_hud.hitTestPoint(mouseX, mouseY, true))) && (!(_soundPanel.hitTestPoint(mouseX, mouseY, true))))) && (!(this._bird.hitTestPoint(mouseX, mouseY))))){
_scrollThroughDragging = true;
_mouseXY = this._layerFirst.globalToLocal(new Point(this.mouseX, this.mouseY));
this.dispatchEvent(new Event(Config.EVENT_MOUSE_DRAG, true));
};
};
} else {
if (!enableBuilding){
return;
};
_local2 = [];
if (currMaterial != -1){
_local2 = _groupMaterials.getObjectsUnderPoint(_pointer.x, _pointer.y, true, true, 0, true);
};
if (_local2.length > 0){
_points.splice(0);
_points.push(_local2[0]);
dragging = true;
this.dispatchEvent(new Event(Config.EVENT_FOUND_PIN_POINT));
_line.visible = true;
} else {
if (((this.scrolling) && (!(this.paused)))){
if (((((((((((!(_hud.hitTestPoint(mouseX, mouseY, true))) && ((_groupMaterials.getObjectsUnderPoint(mouseX, mouseY, false).length == 0)))) && (_soundPanel))) && (!(_soundPanel.hitTestPoint(mouseX, mouseY, true))))) && (!(this._bird.hitTestPoint(mouseX, mouseY))))) && (!(protagonistClickTest())))){
if (((!((this.phraseBaloon == null))) && (this.phraseBaloon.hitTestPoint(mouseX, mouseY)))){
return;
};
_scrollThroughDragging = true;
_mouseXY = this._layerFirst.globalToLocal(new Point(this.mouseX, this.mouseY));
this.dispatchEvent(new Event(Config.EVENT_MOUSE_DRAG, true));
};
};
};
};
}
public function set budget(_arg1:Number):void{
_budget = _arg1;
_hud.budget = _arg1;
}
private function onSteelHandler(_arg1:Event):void{
currMaterial = Config.MATERIAL_STEEL;
}
private function turnPhysicsOn(_arg1:Event):void{
_physicsOn = true;
}
private function setUpWeather(_arg1:String):void{
var _local2:NastySky;
var _local3:Moon;
var _local4:int;
var _local5:NightSky;
var _local6:Star;
var _local7:Sun;
var _local8:BlueSky;
if (_arg1 == LevelData.WEATHER_CLOUDY){
_local2 = new NastySky();
if (_local2.width != 0){
_local2.scaleX = (Config.SCREEN_WIDTH / _local2.width);
};
this.addChildAt(_local2, 0);
} else {
if (_arg1 == LevelData.WEATHER_NIGHT){
_local3 = new Moon();
_local3.x = 160;
_local3.y = 125;
this.addChildAt(_local3, 0);
_local4 = 0;
while (_local4 < 40) {
_local6 = new Star();
_local6.x = (Math.random() * Config.SCREEN_WIDTH);
_local6.y = (Math.random() * Config.SCREEN_HEIGHT);
this.addChildAt(_local6, 0);
_local4++;
};
_local5 = new NightSky();
if (_local5.width != 0){
_local5.scaleX = (Config.SCREEN_WIDTH / _local5.width);
};
this.addChildAt(_local5, 0);
} else {
_local7 = new Sun();
_local7.x = 160;
_local7.y = 125;
this.addChildAt(_local7, 0);
_local8 = new BlueSky();
_local8.scaleX = (Config.SCREEN_WIDTH / _local8.width);
this.addChildAt(_local8, 0);
};
};
}
private function onRopeHandler(_arg1:Event):void{
currMaterial = Config.MATERIAL_ROPE;
}
public function set dragging(_arg1:Boolean):void{
_dragging = _arg1;
}
public function saveLevelSolution():void{
var _local1:SharedObject;
var _local2:Object;
var _local3:Array;
var _local4:Array;
var _local5:Array;
_local1 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local1.size != 0){
if (!_local1.data.solutions){
_local3 = new Array(Config.LEVELS_TOTAL);
_local4 = new Array(Config.LEVELS_TOTAL);
_local5 = new Array(Config.LEVELS_TOTAL);
_local1.data.solutions = {easy:_local3, normal:_local4, hard:_local5};
};
_local2 = this.getLevelSolution();
if (this.levelDifficulty == Config.DIFFICULTY_EASY){
_local1.data.solutions.easy[(this.levelNumber - 1)] = _local2;
} else {
if (this.levelDifficulty == Config.DIFFICULTY_NORMAL){
_local1.data.solutions.normal[(this.levelNumber - 1)] = _local2;
} else {
if (this.levelDifficulty == Config.DIFFICULTY_HARD){
_local1.data.solutions.hard[(this.levelNumber - 1)] = _local2;
};
};
};
_local1.flush();
};
}
private function mouseOutHandler(_arg1:Event):void{
this.blockDelete = _oldBlockDelete;
}
public function cleanup():void{
_hud.cleanup();
_hud = null;
stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
stage.removeEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
removeEventListener(Config.EVENT_RESET, onResetHandler);
removeEventListener(Config.EVENT_STRESS, onStressHandler);
removeEventListener(Config.EVENT_HOME, onHomeHandler);
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
if (hasEventListener(Config.EVENT_EDIT)){
removeEventListener(Config.EVENT_EDIT, onEditHandler);
};
if (hasEventListener(Config.EVENT_START)){
removeEventListener(Config.EVENT_START, onStartHandler);
};
if (hasEventListener(Config.EVENT_DECK)){
removeEventListener(Config.EVENT_DECK, onDeckHandler);
};
if (hasEventListener(Config.EVENT_STEEL)){
removeEventListener(Config.EVENT_STEEL, onSteelHandler);
};
if (hasEventListener(Config.EVENT_ROPE)){
removeEventListener(Config.EVENT_ROPE, onRopeHandler);
};
if (hasEventListener(Config.EVENT_UNDO)){
removeEventListener(Config.EVENT_UNDO, onUndoHandler);
};
if (this.islandText){
this.removeEventListener(Event.ENTER_FRAME, islandTextFading);
_layerStatic.removeChild(this.islandText);
this.islandText = null;
};
if (_zooming){
this.removeEventListener(Config.EVENT_ZOOM_IN, zoomInHandler);
this.removeEventListener(Config.EVENT_ZOOM_OUT, zoomOutHandler);
};
SoundManager.clearChannel(SoundData.THUNDER.channel);
while (_layerDynamic.numChildren > 0) {
_layerDynamic.removeChildAt(0);
};
while (this.numChildren > 0) {
this.removeChildAt(0);
};
APEngine.container = null;
APEngine.removeGroup(_group);
APEngine.removeGroup(_groupMaterials);
APEngine.removeGroup(_groupProtagonists);
_group = null;
_groupMaterials = null;
_groupProtagonists = null;
_layerDynamic = null;
_layerEngine = null;
_layerFirst = null;
_layerStatic = null;
this.levelData = null;
this.levelBorders = null;
this.levelObjects = null;
this.levelProtagonists = null;
this.levelSurfaces = null;
this.levelWeather = null;
this.levelZones = null;
_playerName = null;
_clouds = null;
_bird = null;
_fader = null;
_flagArrow = null;
_grid = null;
_inGameMenu = null;
_line = null;
_pointer = null;
_points = null;
_popUp = null;
_protagonists = null;
_sets = null;
_soundPanel = null;
_waters = null;
_actions = null;
_sets = null;
_mouseXY = null;
this.phraseBaloon = null;
this.loaderScreen = null;
this.birdsSounds = null;
this.solutionObj = null;
this.ropes = null;
this.sprites = null;
}
public function removePopUp():void{
if (_popUp != null){
if (this._fader != null){
this._fader.addEventListener(Fader.COMPLETE, onFadeOutCompleteHandler, false, 0, true);
this._fader.fadeOut();
};
this.removeEventListener(Config.EVENT_POPUPBUTTON_NEXT, popupButtonNextHandler);
this.removeEventListener(Config.EVENT_POPUPBUTTON_MAP, popupButtonMapHandler);
this.removeEventListener(Config.EVENT_POPUPBUTTON_RETRY, popupButtonRetryHandler);
_popUp.cleanup();
removeChild(_popUp);
_popUp = null;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
};
}
protected function set enableBuilding(_arg1:Boolean):void{
_enableBuilding = _arg1;
}
private function protagonistsReset():void{
var _local1:int;
var _local2:*;
_local1 = 0;
while (_local1 < _protagonists.length) {
_local2 = _protagonists[_local1];
_local2.resetSpeed();
_local2.resetParams();
_local2.stand(true);
_local2.particle.px = this.levelProtagonists[_local1].x;
_local2.particle.py = this.levelProtagonists[_local1].y;
_local1++;
};
}
private function protagonistsRun():void{
}
private function onResumeHandler(_arg1:Event):void{
this.removeInGameMenuWithFading();
}
private function setUpProtagonists(_arg1:Array):void{
var _local2:int;
var _local3:String;
var _local4:Class;
var _local5:*;
if (this._layerEngine == null){
return;
};
if (_arg1 == null){
return;
};
if (this._groupProtagonists == null){
this._groupProtagonists = new Group(true);
};
if (this._protagonists == null){
this._protagonists = new Array();
};
this._numProtagonists = _arg1.length;
_local2 = 0;
while (_local2 < this._numProtagonists) {
_local3 = ("characters." + _arg1[_local2].type);
_local4 = (getDefinitionByName(_local3) as Class);
_local5 = new _local4(_arg1[_local2].x, _arg1[_local2].y);
this._protagonists.push(_local5);
this._groupProtagonists.addParticle(_local5.particle);
this._layerEngine.addChild(_local5);
_local2++;
};
}
private function startEmulation():void{
var _local1:int;
var _local2:SpringConstraint;
if (((!(tutorialMode)) && (this.phraseBaloon))){
if (this.phraseBaloon.hasEventListener(TalkBaloon.EVENT_SHOWED)){
this.phraseBaloon.removeEventListener(TalkBaloon.EVENT_SHOWED, onPhraseBaloonShowed);
};
if (this.phraseBaloon.hasEventListener(Event.ENTER_FRAME)){
this.phraseBaloon.removeEventListener(Event.ENTER_FRAME, phraseBaloonDelay);
};
if (!this.phraseBaloon.hasEventListener(TalkBaloon.EVENT_HIDDEN)){
this.phraseBaloon.addEventListener(TalkBaloon.EVENT_HIDDEN, onPhraseBaloonHidden, false, 0, true);
};
this.phraseBaloon.hide();
};
addEventListener(Config.EVENT_EDIT, onEditHandler, false, 0, true);
removeEventListener(Config.EVENT_START, onStartHandler);
removeEventListener(Config.EVENT_DECK, onDeckHandler);
removeEventListener(Config.EVENT_STEEL, onSteelHandler);
removeEventListener(Config.EVENT_ROPE, onRopeHandler);
removeEventListener(Config.EVENT_UNDO, onUndoHandler);
_local1 = 0;
while (_local1 < _layerDynamic.numChildren) {
_layerDynamic.getChildAt(_local1).transform.colorTransform = new ColorTransform();
_local1++;
};
_grid.visible = false;
_local1 = 0;
while (_local1 < _protagonists.length) {
_protagonists[_local1].finished = false;
_local1++;
};
scrollReset();
highlignting = false;
_physicsOn = true;
_hud.mode = Config.MODE_EMULATION;
_local1 = 0;
while (_local1 < _groupMaterials.constraints.length) {
_local2 = _groupMaterials.constraints[_local1];
if (_local2.material == Config.MATERIAL_DECK){
_local2.stiffness = Config.MATERIAL_DECK_STIFFNESS;
_local2.materialMultiplier = Config.MATERIAL_DECK_MULTIPLIER;
};
if (_local2.material == Config.MATERIAL_STEEL){
_local2.stiffness = Config.MATERIAL_STEEL_STIFFNESS;
_local2.materialMultiplier = Config.MATERIAL_STEEL_MULTIPLIER;
};
if (_local2.material == Config.MATERIAL_ROPE){
_local2.stiffness = Config.MATERIAL_ROPE_STIFFNESS;
_local2.materialMultiplier = Config.MATERIAL_ROPE_MULTIPLIER;
};
_local2.overloadingCounter = 0;
_local1++;
};
}
private function deleteOverloadedConstraint(_arg1:AbstractConstraint):void{
var _local2:CircleParticle;
var _local3:CircleParticle;
var _local4:Point;
var _local5:Point;
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:Boom;
_physicsOn = false;
_local2 = ((_arg1 as SpringConstraint).particleA as CircleParticle);
_local3 = ((_arg1 as SpringConstraint).particleB as CircleParticle);
_local4 = new Point(_local2.px, _local2.py);
_local5 = new Point(_local3.px, _local3.py);
_local6 = (_arg1 as SpringConstraint).material;
_groupMaterials.removeConstraintWithBackup(_arg1);
_local7 = Math.sqrt((((_local5.x - _local4.x) * (_local5.x - _local4.x)) + ((_local5.y - _local4.y) * (_local5.y - _local4.y))));
_local8 = (-((_local5.y - _local4.y)) / _local7);
_local9 = ((_local5.x - _local4.x) / _local7);
_local10 = 0;
_local11 = _local7;
_local12 = (Math.floor((_local7 / 20)) + 1);
while (_local12 > 0) {
_local13 = (_local10 * _local9);
_local14 = (-(_local10) * _local8);
_local15 = new Boom();
_layerEngine.addChild(_local15);
_local15.x = (_local13 + _local4.x);
_local15.y = (_local14 + _local4.y);
if (_local6 == Config.MATERIAL_STEEL){
_local15.transform.colorTransform = new ColorTransform(0.1, 0.1, 0.1, 1, 138, 138, 138);
} else {
if (_local6 == Config.MATERIAL_ROPE){
_local15.transform.colorTransform = new ColorTransform(0.1, 0.1, 0.1, 1, 0, 0, 0);
};
};
_local15.init();
_local10 = (_local10 + 20);
_local12--;
};
if (_local6 == Config.MATERIAL_DECK){
SoundData.DECK_BREAK.play();
};
if (_local6 == Config.MATERIAL_STEEL){
SoundData.STEEL_BREAK.play();
};
if (_local6 == Config.MATERIAL_ROPE){
SoundData.ROPE_BREAK.play();
};
if (((!(_local2.isInSet(0))) && (!(_groupMaterials.haveConstraintConnectedTo(_local2))))){
_groupMaterials.removeParticleWithBackup(_local2);
};
if (((!(_local3.isInSet(0))) && (!(_groupMaterials.haveConstraintConnectedTo(_local3))))){
_groupMaterials.removeParticleWithBackup(_local3);
};
_physicsOn = true;
}
protected function set currMaterial(_arg1:Number):void{
if (_currMaterial == _arg1){
return;
};
_currMaterial = _arg1;
_hud.material = _arg1;
}
protected function get currMode():Number{
return (_currMode);
}
private function popupButtonNextHandler(_arg1:Event):void{
this.removeChild(this._fader);
this._fader = null;
removePopUp();
dispatchEvent(new Event(Config.EVENT_LEVEL_NEXT, true));
}
private function onDeckHandler(_arg1:Event):void{
currMaterial = Config.MATERIAL_DECK;
}
private function onFadeOutCompleteHandler(_arg1:Event):void{
this._fader.removeEventListener(Fader.COMPLETE, onFadeOutCompleteHandler);
this.removeChild(this._fader);
this._fader = null;
}
private function lowCostBuilding(_arg1:Event):void{
var _local2:Object;
this.loaderScreen.setPercentage((this.constraintsCounter / this.numSlnConstraints));
if (_processingRope){
return;
};
if (this.constraintsCounter == this.numSlnConstraints){
this.removeEventListener(Event.ENTER_FRAME, lowCostBuilding);
_counter = int((Config.ENGINE_FRAMERATE / 2));
this.addEventListener(Event.ENTER_FRAME, waitAfterBuilding, false, 0, true);
return;
};
_local2 = this.solutionObj["constraints"][this.currSlnConstraint++];
_points.splice(0);
_points.push(solutionObj["particles"][_local2.particleA]);
_points.push(solutionObj["particles"][_local2.particleB]);
this.connectPoints(_local2.material, false, false);
if (_local2.material != Config.MATERIAL_ROPE){
this.constraintsCounter++;
};
}
private function setUpSurfaces(_arg1:Array):void{
var _local2:Array;
var _local3:int;
var _local4:Array;
var _local5:CircleParticle;
var _local6:CircleParticle;
var _local7:CircleParticle;
var _local8:int;
var _local9:Sprite;
var _local10:SurfacePoint;
var _local11:Sprite;
var _local12:LinkElement;
var _local13:Hook;
var _local14:SpringConstraint;
if (this._layerEngine == null){
return;
};
if (_arg1 == null){
return;
};
if (this._group == null){
this._group = new Group(true);
};
_local2 = new Array();
_local3 = 0;
while (_local3 < _arg1.length) {
_local4 = (_arg1[_local3] as Array);
if (_local4.length > 1){
_local9 = new Sprite();
_local9.graphics.clear();
_local9.graphics.lineStyle(2);
_local9.graphics.beginBitmapFill(new GroundTexture(), null, true);
};
_local8 = 0;
while (_local8 < _local4.length) {
_local10 = (_local4[_local8] as SurfacePoint);
if (_local10.pin){
_local11 = new Sprite();
_local12 = new LinkElement(true);
_local11.addChild(_local12);
if ((((this.levelWeather == LevelData.WEATHER_NIGHT)) || ((this.levelWeather == LevelData.WEATHER_CLOUDY)))){
_local11.filters = [new GlowFilter(0xFF00, 1, 6, 6)];
};
_local11.name = "link";
if (_local10.hook){
_local13 = new Hook(_local10.hookRotation, _local10.hookDirectionX, _local10.hookDirectionY);
_local13.x = _local10.x;
_local13.y = _local10.y;
if (_local10.onlySteel){
_local13.hookMC.visible = false;
_local13.x = (_local13.x - 2);
_local13.y = (_local13.y + 10);
};
_layerEngine.addChildAt(_local13, 0);
};
_layerEngine.addChild(_local11);
if (_local8 > 0){
_local5 = _local7;
};
_local7 = new CircleParticle(_local10.x, _local10.y, 8, true, 1, 0.3, 0, _local11);
_local7.setFill(0xFFFFFF);
_group.addParticle(_local7, 0);
_groupMaterials.addParticle(_local7, 0);
} else {
if (_local8 > 0){
_local5 = _local7;
};
_local7 = new CircleParticle(_local10.x, _local10.y, 8, true);
_local7.setFill(0);
_group.addParticle(_local7);
};
if (_local4.length > 1){
if (_local8 == 0){
_local6 = _local7;
_local9.graphics.moveTo(_local10.x, _local10.y);
};
if (_local8 > 0){
_local14 = new SpringConstraint(_local5, _local7, 1, true, 16);
_local14.setFill(0);
_group.addConstraint(_local14);
_local9.graphics.lineTo(_local10.x, _local10.y);
};
};
_local8++;
};
if (_local4.length > 1){
_local14 = new SpringConstraint(_local6, _local7, 1, true, 16);
_local14.setFill(0);
_group.addConstraint(_local14);
_local9.graphics.lineTo(_local4[0].x, _local4[0].y);
_local9.graphics.endFill();
_local9.cacheAsBitmap = true;
_local9.name = "texture";
_local2.push(_local9);
};
_local3++;
};
_groupMaterials.numSets++;
_local3 = 0;
while (_local3 < _local2.length) {
_layerEngine.addChild(_local2[_local3]);
_local3++;
};
}
private function setUpWaters(_arg1:LevelBorders):void{
var _local2:Number;
var _local3:Sprite;
var _local4:Water;
var _local5:Water;
var _local6:Water;
var _local7:Water;
var _local8:Water;
var _local9:Water;
var _local10:Water;
if (this._layerDynamic == null){
return;
};
if (_arg1 == null){
return;
};
if (this._waters == null){
this._waters = new Array();
};
_local2 = _arg1.waterLineY;
_local3 = new Sprite();
_local4 = new Water(1, _arg1.width);
_local4.x = _arg1.leftBorderX;
_local4.y = (_local2 - 55);
_local3.addChild(_local4);
_local4.launch(2, 0, 100);
this._layerDynamic.addChild(_local3);
this._waters.push(_local4);
_local3 = new Sprite();
_local5 = new Water(2, _arg1.width);
_local5.x = _arg1.leftBorderX;
_local5.y = (_local2 - 50);
_local3.addChild(_local5);
_local5.launch(2, (Math.PI / 50), 80);
this._layerDynamic.addChild(_local3);
this._waters.push(_local5);
_local3 = new Sprite();
_local6 = new Water(3, _arg1.width);
_local6.x = _arg1.leftBorderX;
_local6.y = (_local2 - 45);
_local3.addChild(_local6);
_local6.launch(2, (Math.PI / 25), 70);
this._layerDynamic.addChild(_local3);
this._waters.push(_local6);
_local3 = new Sprite();
_local7 = new Water(4, _arg1.width);
_local7.x = _arg1.leftBorderX;
_local7.y = (_local2 - 40);
_local3.addChild(_local7);
_local7.launch(3, (Math.PI / 10), 60);
this._layerDynamic.addChild(_local3);
this._waters.push(_local7);
_local3 = new Sprite();
_local8 = new Water(5, _arg1.width);
_local8.x = _arg1.leftBorderX;
_local8.y = (_local2 - 35);
_local3.addChild(_local8);
_local8.launch(4, (Math.PI / 4), 50);
this._layerDynamic.addChild(_local3);
this._waters.push(_local8);
_local3 = new Sprite();
_local9 = new Water(6, _arg1.width);
_local9.x = _arg1.leftBorderX;
_local9.y = (_local2 - 20);
_local3.addChild(_local9);
_local9.launch(5, (Math.PI / 2), 50);
this._layerDynamic.addChild(_local3);
this._waters.push(_local9);
_local3 = new Sprite();
_local10 = new Water(7, _arg1.width);
_local10.x = _arg1.leftBorderX;
_local10.y = _local2;
_local3.addChild(_local10);
_local10.launch(5, Math.PI, 50);
this._layerDynamic.addChild(_local3);
this._layerFirst = _local3;
this._waters.push(_local10);
}
public function set blockConnect(_arg1:Boolean):void{
_blockConnect = _arg1;
}
private function scrollDownHandler(_arg1:Event):void{
scrollDown();
}
private function protagonistClickTest():Boolean{
var _local1:int;
_local1 = 0;
while (_local1 < this._protagonists.length) {
if ((this._protagonists[_local1] as MovieClip).hitTestPoint(mouseX, mouseY, true)){
return (true);
};
_local1++;
};
return (false);
}
public function get budget():Number{
return (_budget);
}
public function scrollRight(_arg1:Number=0):void{
if (!_scrolling){
return;
};
if (_arg1 > 0){
_scrollX = (_scrollX - _arg1);
} else {
_scrollX = (_scrollX - Config.SCROLLING_ITERATION);
};
if ((_scrollX + ((levelBorders.leftBorderX + levelBorders.width) * _scale)) <= Config.SCREEN_WIDTH){
_scrollX = (Config.SCREEN_WIDTH - ((levelBorders.leftBorderX + levelBorders.width) * _scale));
};
}
private function onStressHandler(_arg1:Event):void{
if (_stress){
stress = false;
} else {
stress = true;
};
}
private function set stress(_arg1:Boolean):void{
if (((!(_arg1)) && (_stress))){
_groupMaterials.hideStress();
};
_stress = _arg1;
}
public function set highlignting(_arg1:Boolean):void{
if (_arg1){
if (_highlignting){
return;
};
_highlignting = true;
} else {
if (!_highlignting){
return;
};
_highlignting = false;
_groupMaterials.selectOffAll();
};
}
public function get blockConnect():Boolean{
return (_blockConnect);
}
private function deleteSetUnderPoint(_arg1:Number, _arg2:Number, _arg3:Array=null):void{
var _local4:Array;
var _local5:int;
var _local6:Number;
var _local7:Number;
var _local8:Array;
var _local9:Point;
var _local10:Point;
var _local11:int;
if (this.blockDelete){
return;
};
if (_currMode == Config.MODE_EMULATION){
return;
};
if (_arg3 != null){
_local4 = _arg3;
} else {
_local4 = _groupMaterials.getSetsUnderPoint(_arg1, _arg2);
};
if (_local4.length == 0){
return;
};
if (((_undoMode) && (!(this.tutorialMode)))){
if (_actions.length > 0){
_actions.splice(0);
};
_local5 = 0;
while (_local5 < _local4.length) {
_local6 = _local4[_local5];
_local7 = getMaterialBySet(_local6);
_local8 = new Array();
_local9 = null;
_local10 = null;
_local11 = 0;
while (_local11 < _groupMaterials.constraints.length) {
if ((_groupMaterials.constraints[_local11] as SpringConstraint).isInSet(_local6)){
if (_local7 == Config.MATERIAL_ROPE){
if (!((_groupMaterials.constraints[_local11] as SpringConstraint).particleA as CircleParticle).subParticle){
if (_local9 == null){
_local9 = new Point((_groupMaterials.constraints[_local11] as SpringConstraint).particleA.px, (_groupMaterials.constraints[_local11] as SpringConstraint).particleA.py);
} else {
if (_local10 == null){
_local10 = new Point((_groupMaterials.constraints[_local11] as SpringConstraint).particleA.px, (_groupMaterials.constraints[_local11] as SpringConstraint).particleA.py);
break;
};
};
};
if (!((_groupMaterials.constraints[_local11] as SpringConstraint).particleB as CircleParticle).subParticle){
if (_local9 == null){
_local9 = new Point((_groupMaterials.constraints[_local11] as SpringConstraint).particleB.px, (_groupMaterials.constraints[_local11] as SpringConstraint).particleB.py);
} else {
if (_local10 == null){
_local10 = new Point((_groupMaterials.constraints[_local11] as SpringConstraint).particleB.px, (_groupMaterials.constraints[_local11] as SpringConstraint).particleB.py);
break;
};
};
};
} else {
_local9 = new Point((_groupMaterials.constraints[_local11] as SpringConstraint).particleA.px, (_groupMaterials.constraints[_local11] as SpringConstraint).particleA.py);
_local10 = new Point((_groupMaterials.constraints[_local11] as SpringConstraint).particleB.px, (_groupMaterials.constraints[_local11] as SpringConstraint).particleB.py);
};
};
_local11++;
};
if ((((_local9 == null)) || ((_local10 == null)))){
_local9 = null;
_local10 = null;
} else {
_local8.push(_local9);
_local8.push(_local10);
_local8.push(_local7);
_actions.push(new Action(Config.ACTION_REMOVE, _local8));
};
_local5++;
};
_hud.undoButton.reset();
};
deleteSets(_local4);
}
public function get highlignting():Boolean{
return (_highlignting);
}
private function islandTextFading(_arg1:Event):void{
if (this.islandText){
if (this.loaderScreen){
return;
};
if (this.fadeCounter >= 0){
this.fadeCounter++;
if (this.fadeCounter > this.stage.frameRate){
this.fadeCounter = -1;
};
return;
};
this.islandText.alpha = (this.islandText.alpha - (this.islandText.alpha / 5));
if (Math.abs(this.islandText.alpha) < 0.001){
_layerStatic.removeChild(this.islandText);
this.islandText = null;
this.removeEventListener(Event.ENTER_FRAME, islandTextFading);
if (this.phraseBaloon){
this.phraseBaloon.show();
};
};
} else {
this.removeEventListener(Event.ENTER_FRAME, islandTextFading);
};
}
private function calcCost(_arg1, _arg2, _arg3:Number):Number{
var _local4:Number;
var _local5:Point;
var _local6:Point;
var _local7:Point;
var _local8:Number;
if (_arg3 == 0){
return (0);
};
_local4 = 0;
if ((_arg1 is Point)){
_local5 = _arg1;
} else {
if ((_arg1 is AbstractParticle)){
_local5 = new Point(_arg1.px, _arg1.py);
} else {
return (0);
};
};
if ((_arg2 is Point)){
_local6 = _arg2;
} else {
if ((_arg2 is AbstractParticle)){
_local6 = new Point(_arg2.px, _arg2.py);
} else {
return (0);
};
};
_local7 = _local6.subtract(_local5);
_local8 = _local7.length;
if (_arg3 == Config.MATERIAL_DECK){
_local4 = (Config.MATERIAL_DECK_COST / Config.MATERIAL_DECK_MAX_LENGTH);
} else {
if (_arg3 == Config.MATERIAL_STEEL){
_local4 = (Config.MATERIAL_STEEL_COST / Config.MATERIAL_STEEL_MAX_LENGTH);
} else {
if (_arg3 == Config.MATERIAL_ROPE){
_local4 = (Config.MATERIAL_ROPE_COST / Config.MATERIAL_ROPE_MAX_LENGTH);
};
};
};
_local4 = (_local4 * _local8);
return (_local4);
}
private function outEditButton(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function zoomInHandler(_arg1:Event):void{
zoomIn();
}
public function setLevelSolution(_arg1:Object):void{
var _local2:Array;
var _local3:int;
var _local4:Array;
var _local5:int;
var _local6:Array;
var _local7:int;
var _local8:CircleParticle;
var _local9:Object;
var _local10:Array;
var _local11:Sprite;
var _local12:*;
var _local13:Point;
if (!_arg1){
return;
};
if (((!(_arg1["particles"])) || (!(_arg1["constraints"])))){
return;
};
if ((((_arg1["particles"].length == 0)) || ((_arg1["constraints"].length == 0)))){
return;
};
_local2 = [];
_local3 = 0;
while (_local3 < _groupMaterials.constraints.length) {
if ((_groupMaterials.constraints[_local3] as SpringConstraint).numSets() > 0){
_local6 = (_groupMaterials.constraints[_local3] as SpringConstraint).getSets(0);
_local7 = 0;
while (_local7 < _local6.length) {
if (_local2.indexOf(_local6[_local7]) == -1){
_local2.push(_local6[_local7]);
};
_local7++;
};
};
_local3++;
};
this.deleteSetUnderPoint(0, 0, _local2);
_local4 = _arg1["particles"];
_local5 = _local4.length;
_local3 = 0;
while (_local3 < _local5) {
_local9 = _local4[_local3];
_local10 = _groupMaterials.getObjectsUnderPoint(_local9.px, _local9.py);
if (_local10.length > 0){
_local8 = _local10[0];
} else {
if (_layerEngine != null){
_local11 = new Sprite();
_local11.addChild(new LinkElement());
_local11.name = "link";
_layerEngine.addChild(_local11);
};
_local8 = new CircleParticle(_local9.px, _local9.py, Config.POINT_RADIUS, false, Config.POINT_MASS, Config.POINT_ELASTICITY, 0, _local11);
_local8.collidable = false;
_groupMaterials.addParticle(_local8);
};
_local4[_local3] = _local8;
_local3++;
};
this.solutionObj = _arg1;
this.currSlnConstraint = 0;
this.constraintsCounter = 0;
this.numSlnConstraints = 0;
_local3 = 0;
while (_local3 < _arg1["constraints"].length) {
if (_arg1["constraints"][_local3]["material"] == Config.MATERIAL_ROPE){
_local12 = _arg1["constraints"][_local3];
_local13 = new Point((_local4[_local12.particleB].px - _local4[_local12.particleA].px), (_local4[_local12.particleB].py - _local4[_local12.particleA].py));
if (_local13.length < Config.MATERIAL_ROPE_BLOCK_LENGTH){
this.numSlnConstraints = (this.numSlnConstraints + 1);
} else {
this.numSlnConstraints = (this.numSlnConstraints + Math.floor((_local13.length / Config.MATERIAL_ROPE_BLOCK_LENGTH)));
};
} else {
this.numSlnConstraints++;
};
_local3++;
};
this.loaderScreen = new LoaderScreen(this.levelWeather);
this.addChild(this.loaderScreen);
this.dispatchEvent(new Event(Config.EVENT_LEVEL_START_LOADING, true));
_counter = 0;
this.addEventListener(Event.ENTER_FRAME, waitBeforeBuilding, false, 0, true);
}
private function scrollUpHandler(_arg1:Event):void{
scrollUp();
}
private function set scrolling(_arg1:Boolean):void{
_scrolling = _arg1;
}
private function popupButtonMapHandler(_arg1:Event):void{
this.removeChild(this._fader);
this._fader = null;
removePopUp();
dispatchEvent(new Event(Config.EVENT_LEVEL_CLOSE, true));
}
private function getMaterialBySet(_arg1:Number):Number{
var _local2:Number;
var _local3:int;
_local2 = 0;
_local3 = 0;
while (_local3 < _sets.length) {
if (_sets[_local3].x == _arg1){
_local2 = _sets[_local3].y;
break;
};
_local3++;
};
return (_local2);
}
}
}//package levels
Section 246
//LevelZone (levels.LevelZone)
package levels {
import picaso.geom.*;
public class LevelZone extends RectangleAdvanced {
private var _type:String;
public static const FINISH:String = "finishzone";
public static const LEFT:String = "leftzone";
public static const RIGHT:String = "rightzone";
public function LevelZone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String){
super(_arg1, _arg2, _arg3, _arg4);
_type = _arg5;
}
public function get type():String{
return (_type);
}
public function set type(_arg1:String):void{
_type = _arg1;
}
}
}//package levels
Section 247
//SurfacePoint (levels.SurfacePoint)
package levels {
import flash.geom.*;
public class SurfacePoint extends Point {
private var _onlySteel:Boolean;// = false
private var _hookDirectionX:int;// = 1
private var _hookDirectionY:int;// = 1
private var _pin:Boolean;// = false
private var _hookRotation:Number;// = 0
private var _needHook:Boolean;// = false
public static const HOOK_DIRECTION_INVERT:int = -1;
public static const HOOK_DIRECTION_NORMAL:int = 1;
public function SurfacePoint(_arg1:Number=0, _arg2:Number=0, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Boolean=false, _arg6:Number=0, _arg7:int=1, _arg8:int=1){
_pin = false;
_needHook = false;
_onlySteel = false;
_hookRotation = 0;
_hookDirectionX = SurfacePoint.HOOK_DIRECTION_NORMAL;
_hookDirectionY = SurfacePoint.HOOK_DIRECTION_NORMAL;
if (_arg3){
_pin = _arg3;
};
super(_arg1, _arg2);
_needHook = _arg4;
_onlySteel = _arg5;
_hookRotation = _arg6;
_hookDirectionX = _arg7;
_hookDirectionY = _arg8;
}
public function set hookRotation(_arg1:Number):void{
_hookRotation = _arg1;
}
public function get hookRotation():Number{
return (_hookRotation);
}
public function set hookDirectionY(_arg1:int):void{
_hookDirectionY = _arg1;
}
public function get pin():Boolean{
return (_pin);
}
public function get onlySteel():Boolean{
return (_onlySteel);
}
public function set hookDirectionX(_arg1:int):void{
_hookDirectionX = _arg1;
}
public function set hook(_arg1:Boolean):void{
_needHook = _arg1;
}
public function get hook():Boolean{
return (_needHook);
}
public function set pin(_arg1:Boolean):void{
_pin = _arg1;
}
public function get hookDirectionX():int{
return (_hookDirectionX);
}
public function get hookDirectionY():int{
return (_hookDirectionY);
}
public function set onlySteel(_arg1:Boolean):void{
_onlySteel = _arg1;
}
}
}//package levels
Section 248
//wav (lose.wav)
package lose {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package lose
Section 249
//wav (main_theme.wav)
package main_theme {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package main_theme
Section 250
//LevelSelectButton (map.LevelSelectButton)
package map {
import flash.display.*;
import flash.text.*;
public dynamic class LevelSelectButton extends MovieClip {
private var _levelId:int;
public var levelId:TextField;
private var _levelTextField:TextField;
public static const OPENED:int = 1;
public static const SCORED:int = 3;
public static const CLOSED:int = 2;
public function LevelSelectButton(){
this._levelTextField = this["levelId"];
this._levelId = 0;
this._levelTextField.text = this._levelId.toString();
this.active = false;
}
public function set level(_arg1:int):void{
this._levelId = _arg1;
this._levelTextField.text = _arg1.toString();
}
public function set state(_arg1:int):void{
if (_arg1 == LevelSelectButton.CLOSED){
this.gotoAndStop(3);
} else {
if (_arg1 == LevelSelectButton.OPENED){
this.gotoAndStop(2);
} else {
if (_arg1 == LevelSelectButton.SCORED){
this.gotoAndStop(1);
};
};
};
}
public function get level():int{
return (this._levelId);
}
public function get state():int{
return (this.currentFrame);
}
}
}//package map
Section 251
//MapClass (map.MapClass)
package map {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;
import vis.*;
import popup.*;
public dynamic class MapClass extends Sprite {
public var nextButton:SimpleButton;
private var _openedLevels:Array;
private var _totalLevels:int;
private var outroButton:SimpleButton;
private var scores:Number;
public var prevButton:SimpleButton;
public var introBtn:SimpleButton;
public var playBonusLevelsBtn:LinkToCS;
public var outroBtn:SimpleButton;
private var _page:int;
private var quitSubmitButton:SimpleButton;
public var closeButton:SimpleButton;
private var playBonusLevelsButton:SimpleButton;
public var scoreTF:TextField;
public var quitSubmitBtn:SimpleButton;
private var _closeButton:SimpleButton;
private var _numOpenedLevels:int;// = 0
private var _levelsScore:Array;
private var _winPopUp:BigPopUpCompleteGame;
private var _levelSelected:Number;
private var introButton:SimpleButton;
private var _nextButton:SimpleButton;
private var _lastOpenedLevel:int;
private var _prevButton:SimpleButton;
public function MapClass(_arg1:int, _arg2:Array=null, _arg3:Array=null, _arg4:Boolean=false, _arg5:int=0){
var _local6:int;
var _local7:BlueSky;
var _local8:SharedObject;
_numOpenedLevels = 0;
super();
this._totalLevels = _arg1;
this._levelsScore = _arg2;
if (this._levelsScore == null){
this._levelsScore = new Array();
};
scores = 0;
_local6 = 0;
while (_local6 < this._totalLevels) {
if (this._levelsScore.length == _local6){
this._levelsScore.push(0);
};
scores = (scores + this._levelsScore[_local6]);
_local6++;
};
_openedLevels = _arg3;
if (_openedLevels == null){
_openedLevels = [];
};
_local6 = 0;
while (_local6 < _totalLevels) {
if (_openedLevels.length == _local6){
_openedLevels.push(false);
};
_local6++;
};
_numOpenedLevels = 0;
_local6 = 0;
while (_local6 < _openedLevels.length) {
if (_openedLevels[_local6]){
_numOpenedLevels++;
};
_local6++;
};
this._lastOpenedLevel = -1;
_local6 = 0;
while (_local6 < this._totalLevels) {
if (_levelsScore[_local6] > 0){
_lastOpenedLevel++;
} else {
break;
};
_local6++;
};
this["scoreTF"].embedFonts = true;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this["scoreTF"].text = ("Total Score: " + scores.toString());
} else {
this["scoreTF"].text = ("Ваш результат: " + scores.toString());
};
_local7 = new BlueSky();
_local7.scaleX = (Config.SCREEN_WIDTH / _local7.width);
_local7.x = (_local7.x - (Config.SCREEN_WIDTH / 2));
_local7.y = (_local7.y - (Config.SCREEN_HEIGHT / 2));
this.addChildAt(_local7, 0);
this._closeButton = this["closeButton"];
this._closeButton.addEventListener(MouseEvent.CLICK, clickCloseHandler, false, 0, true);
this._closeButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._closeButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this._nextButton = this["nextButton"];
this._nextButton.addEventListener(MouseEvent.CLICK, clickNextHandler, false, 0, true);
this._nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this._prevButton = this["prevButton"];
this._prevButton.addEventListener(MouseEvent.CLICK, clickPrevHandler, false, 0, true);
this._prevButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._prevButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.quitSubmitButton = this["quitSubmitBtn"];
this.quitSubmitButton.addEventListener(MouseEvent.CLICK, clickSubmitHandler, false, 0, true);
this.quitSubmitButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.quitSubmitButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.introButton = this["introBtn"];
this.introButton.addEventListener(MouseEvent.CLICK, clickIntroHandler, false, 0, true);
this.introButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.introButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.introButton.visible = false;
this.outroButton = this["outroBtn"];
this.outroButton.addEventListener(MouseEvent.CLICK, clickOutroHandler, false, 0, true);
this.outroButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.outroButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.outroButton.visible = false;
this.playBonusLevelsButton = this["playBonusLevelsBtn"];
this.playBonusLevelsButton.addEventListener(MouseEvent.CLICK, clickPlayBonusLevelsHandler, false, 0, true);
this.playBonusLevelsButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.playBonusLevelsButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
if (Config.VIRAL){
this.playBonusLevelsButton.visible = true;
} else {
this.playBonusLevelsButton.visible = false;
};
this.page = _arg5;
if (_arg1 <= 30){
this._nextButton.visible = false;
this._prevButton.visible = false;
};
putLevelsButtons();
_local8 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local8.size == 0){
return;
};
if (((!((_local8.data.intro == null))) && (!(_local8.data.intro)))){
this.introButton.visible = true;
};
if (((!((_local8.data.win == null))) && (!(_local8.data.win)))){
if (!Config.VIRAL){
this.outroButton.visible = true;
} else {
this.playBonusLevelsButton.visible = true;
};
};
}
public function set page(_arg1:int):void{
this._nextButton.visible = true;
this._prevButton.visible = true;
if (_arg1 <= 0){
_arg1 = 0;
this._prevButton.visible = false;
};
if (((_arg1 * 30) + 30) > this._totalLevels){
_arg1 = Math.floor((this._totalLevels / 30));
if ((this._totalLevels % 30) == 0){
_arg1--;
};
this._nextButton.visible = false;
};
this._page = _arg1;
this.putLevelsButtons();
}
private function clickNextHandler(_arg1:MouseEvent):void{
this.page++;
putLevelsButtons();
}
public function putLevelsButtons():void{
var _local1:int;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:int;
var _local6:int;
var _local7:LevelSelectButton;
_local1 = 0;
while (_local1 < this.numChildren) {
if ((this.getChildAt(_local1) is LevelSelectButton)){
this.removeChildAt(_local1);
} else {
_local1++;
};
};
_local2 = -170;
_local3 = _local2;
_local4 = -30;
_local5 = (this.page * 30);
_local6 = (((_local5 + 30))>this._totalLevels) ? this._totalLevels : (_local5 + 30);
_local1 = _local5;
while (_local1 < _local6) {
_local7 = new LevelSelectButton();
_local7.level = (_local1 + 1);
_local7.x = _local3;
_local7.y = _local4;
if (_openedLevels[_local1]){
if (_levelsScore[_local1] > 0){
_local7.state = LevelSelectButton.SCORED;
_local7.addEventListener(MouseEvent.CLICK, clickLevelHandler, false, 0, true);
_local7.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
_local7.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
} else {
_local7.state = LevelSelectButton.OPENED;
_local7.addEventListener(MouseEvent.CLICK, clickLevelHandler, false, 0, true);
_local7.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
_local7.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
} else {
if ((((_local1 == (this._lastOpenedLevel + 1))) && ((_numOpenedLevels < Config.MAX_OPENED_LEVELS)))){
_local7.state = LevelSelectButton.OPENED;
_local7.addEventListener(MouseEvent.CLICK, clickLevelHandler, false, 0, true);
_local7.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
_local7.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
} else {
_local7.state = LevelSelectButton.CLOSED;
};
};
this.addChild(_local7);
_local3 = (_local3 + _local7.width);
if (((_local1 + 1) % 10) == 0){
_local4 = (_local4 + _local7.height);
_local3 = _local2;
};
_local1++;
};
}
private function clickOutroHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_SHOW_OUTRO, true));
}
private function clickSubmitHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MAP_SUBMIT, true));
}
public function get page():int{
return (this._page);
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickLevelHandler(_arg1:MouseEvent):void{
var _local2:LevelSelectButton;
_local2 = (_arg1.currentTarget as LevelSelectButton);
this.dispatchEvent(new MapEvent(_local2.level));
}
private function clickCloseHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MAP_CLOSE, true));
}
public function cleanup():void{
var _local1:int;
var _local2:LevelSelectButton;
this._closeButton.removeEventListener(MouseEvent.CLICK, clickCloseHandler);
this._closeButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this._closeButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this._nextButton.removeEventListener(MouseEvent.CLICK, clickNextHandler);
this._nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this._nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this._prevButton.removeEventListener(MouseEvent.CLICK, clickPrevHandler);
this._prevButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this._prevButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.quitSubmitButton.removeEventListener(MouseEvent.CLICK, clickSubmitHandler);
this.quitSubmitButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.quitSubmitButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.introButton.removeEventListener(MouseEvent.CLICK, clickIntroHandler);
this.introButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.introButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.outroButton.removeEventListener(MouseEvent.CLICK, clickOutroHandler);
this.outroButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.outroButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.playBonusLevelsButton.removeEventListener(MouseEvent.CLICK, clickPlayBonusLevelsHandler);
this.playBonusLevelsButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.playBonusLevelsButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
_levelsScore = null;
_openedLevels = null;
_local1 = 0;
while (_local1 < this.numChildren) {
if ((this.getChildAt(_local1) is LevelSelectButton)){
_local2 = (this.getChildAt(_local1) as LevelSelectButton);
_local2.removeEventListener(MouseEvent.CLICK, clickLevelHandler);
_local2.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
_local2.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.removeChildAt(_local1);
} else {
_local1++;
};
};
}
private function clickIntroHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_SHOW_INTRO, true));
}
private function clickPrevHandler(_arg1:MouseEvent):void{
this.page--;
putLevelsButtons();
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function clickPlayBonusLevelsHandler(_arg1:MouseEvent):void{
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
navigateToURL(new URLRequest(Config.BC_ON_CS_URL), "_blank");
} else {
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
navigateToURL(new URLRequest(Config.BC_ON_PLAYIT_URL), "_blank");
};
};
}
}
}//package map
Section 252
//MapEvent (map.MapEvent)
package map {
import core.*;
import flash.events.*;
public class MapEvent extends Event {
public var level:Number;
public function MapEvent(_arg1:Number){
var _local2:String;
var _local3:Boolean;
var _local4:Boolean;
this.level = _arg1;
_local2 = Config.EVENT_MAP_LEVEL_SELECT;
_local3 = true;
_local4 = false;
super(_local2, _local3, _local4);
}
}
}//package map
Section 253
//CreditsButton (menu.CreditsButton)
package menu {
import flash.display.*;
public class CreditsButton extends SimpleButton {
}
}//package menu
Section 254
//CreditsClass (menu.CreditsClass)
package menu {
import flash.display.*;
import core.*;
import flash.events.*;
import vis.*;
import hud.*;
public dynamic class CreditsClass extends MovieClip {
public var closeButton:HomeButton;
private var _closeButton:SimpleButton;
public function CreditsClass(){
var _local1:BlueSky;
super();
_local1 = new BlueSky();
_local1.scaleX = (Config.SCREEN_WIDTH / _local1.width);
_local1.x = (_local1.x - (Config.SCREEN_WIDTH / 2));
_local1.y = (_local1.y - (Config.SCREEN_HEIGHT / 2));
addChildAt(_local1, 0);
_closeButton = this["closeButton"];
_closeButton.addEventListener(MouseEvent.CLICK, clickHandler);
_closeButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
_closeButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickHandler(_arg1:MouseEvent):void{
cleanup();
this.dispatchEvent(new Event(Config.EVENT_CREDITS_CLOSE, true));
}
public function cleanup():void{
if (_closeButton.hasEventListener(MouseEvent.CLICK)){
_closeButton.removeEventListener(MouseEvent.CLICK, clickHandler);
};
if (_closeButton.hasEventListener(MouseEvent.MOUSE_OVER)){
_closeButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (_closeButton.hasEventListener(MouseEvent.MOUSE_OUT)){
_closeButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package menu
Section 255
//HelpButton (menu.HelpButton)
package menu {
import flash.display.*;
public class HelpButton extends SimpleButton {
}
}//package menu
Section 256
//InGameMenu (menu.InGameMenu)
package menu {
import flash.display.*;
import core.*;
import flash.events.*;
public dynamic class InGameMenu extends MovieClip {
private var _menuButton:SimpleButton;
private var levelIndexSprite:Sprite;
public var line:MovieClip;
private var _mapButton:SimpleButton;
public var resume:SimpleButton;
public var help:HelpButton;
public var menu:SimpleButton;
public var map:SimpleButton;
public var islandMC:IslandTextWS;
private var _helpButton:SimpleButton;
public var quitSubmitBtn:SimpleButton;
private var _helpScreen:HelpClass;
private var _resumeButton:SimpleButton;
private var _helpIsOnScreen:Boolean;// = false
private var _quitSubmitButton:SimpleButton;
public static const ON_HELP:String = "onHelpFromPause";
public static const ON_QUIT_SUBMIT:String = "onQuitSubmitFromPause";
public static const ON_MAP:String = "onMapFromPause";
public static const ON_RESUME:String = "onResumeFromPause";
public static const ON_MENU:String = "onMenuFromPause";
public function InGameMenu(_arg1:int=0){
_helpIsOnScreen = false;
super();
this.init(_arg1);
}
public function init(_arg1:int=0){
var _local2:int;
var _local3:Digit;
this.levelIndexSprite = new Sprite();
_local2 = 0;
while (_arg1 > 0) {
_local3 = new Digit(((_arg1 % 10) as int));
_local3.x = (_local2 - (_local3.width / 2));
_local3.y = 0;
this.levelIndexSprite.addChild(_local3);
_arg1 = (_arg1 / 10);
_local2 = (_local2 - (_local3.width + 5));
};
this.levelIndexSprite.x = this.levelIndexSprite.width;
if (Config.LANGUAGE == Config.LANGUAGE_RUS){
this.levelIndexSprite.x = (this.levelIndexSprite.x + 30);
};
this.levelIndexSprite.y = -148;
this.addChild(levelIndexSprite);
this._resumeButton = this["resume"];
this._resumeButton.addEventListener(MouseEvent.CLICK, onResumeHandler, false, 0, true);
this._resumeButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._resumeButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this._helpButton = this["help"];
this._helpButton.addEventListener(MouseEvent.CLICK, onHelpHandler, false, 0, true);
this._helpButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._helpButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this._mapButton = this["map"];
this._mapButton.addEventListener(MouseEvent.CLICK, onMapHandler, false, 0, true);
this._mapButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._mapButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this._menuButton = this["menu"];
this._menuButton.addEventListener(MouseEvent.CLICK, onMenuHandler, false, 0, true);
this._menuButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._menuButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
_quitSubmitButton = this["quitSubmitBtn"];
this._quitSubmitButton.addEventListener(MouseEvent.CLICK, onQuitSubmitHandler, false, 0, true);
this._quitSubmitButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._quitSubmitButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
if (this._helpIsOnScreen){
this.hideHelp();
};
}
private function onQuitSubmitHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(ON_QUIT_SUBMIT, true));
}
private function helpFadeIn(_arg1:Event):void{
if (Math.abs((1 - _helpScreen.alpha)) > 0.01){
_helpScreen.alpha = (_helpScreen.alpha + (Math.abs((1 - _helpScreen.alpha)) / 2));
} else {
_helpScreen.alpha = 1;
_helpScreen.removeEventListener(Event.ENTER_FRAME, helpFadeIn);
};
}
private function onHelpHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(InGameMenu.ON_HELP, true));
this.showHelp();
GAManager.trackPage("/help-pressed");
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function onMapHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(InGameMenu.ON_MAP, true));
}
private function helpFadeOut(_arg1:Event):void{
if (_helpScreen.alpha > 0.01){
_helpScreen.alpha = (_helpScreen.alpha - (Math.abs(_helpScreen.alpha) / 2));
} else {
_helpScreen.removeEventListener(Event.ENTER_FRAME, helpFadeOut);
this.removeChild(this._helpScreen);
this._helpScreen.cleanup();
this._helpScreen = null;
this._helpIsOnScreen = false;
};
}
public function cleanup():void{
if (this._resumeButton.hasEventListener(MouseEvent.CLICK)){
this._resumeButton.removeEventListener(MouseEvent.CLICK, onResumeHandler);
};
if (this._resumeButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this._resumeButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this._resumeButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this._resumeButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this._helpButton.hasEventListener(MouseEvent.CLICK)){
this._helpButton.removeEventListener(MouseEvent.CLICK, onHelpHandler);
};
if (this._helpButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this._helpButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this._helpButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this._helpButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this._mapButton.hasEventListener(MouseEvent.CLICK)){
this._mapButton.removeEventListener(MouseEvent.CLICK, onMapHandler);
};
if (this._mapButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this._mapButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this._mapButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this._mapButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this._menuButton.hasEventListener(MouseEvent.CLICK)){
this._menuButton.removeEventListener(MouseEvent.CLICK, onMenuHandler);
};
if (this._menuButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this._menuButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this._menuButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this._menuButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this._quitSubmitButton.hasEventListener(MouseEvent.CLICK)){
this._quitSubmitButton.removeEventListener(MouseEvent.CLICK, onQuitSubmitHandler);
};
if (this._quitSubmitButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this._quitSubmitButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this._quitSubmitButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this._quitSubmitButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this._helpScreen != null){
if (this._helpScreen.hasEventListener(Config.EVENT_HELP_CLOSE)){
this._helpScreen.removeEventListener(Config.EVENT_HELP_CLOSE, hideHelp);
};
};
}
private function onMenuHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(InGameMenu.ON_MENU, true));
}
private function hideHelp(_arg1:Event=null):void{
if (!this._helpIsOnScreen){
return;
};
if (_arg1 != null){
if (_arg1.cancelable){
_arg1.stopPropagation();
};
};
if (this._helpScreen.hasEventListener(Config.EVENT_HELP_CLOSE)){
this._helpScreen.removeEventListener(Config.EVENT_HELP_CLOSE, hideHelp);
};
this._resumeButton.visible = true;
this._helpButton.visible = true;
this._mapButton.visible = true;
this._menuButton.visible = true;
_quitSubmitButton.visible = true;
this.levelIndexSprite.visible = true;
this["line"].visible = true;
this["islandMC"].visible = true;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
if (_helpScreen.hasEventListener(Event.ENTER_FRAME)){
_helpScreen.removeEventListener(Event.ENTER_FRAME, helpFadeIn);
};
_helpScreen.addEventListener(Event.ENTER_FRAME, helpFadeOut, false, 0, true);
}
private function onResumeHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(InGameMenu.ON_RESUME, true));
}
private function showHelp():void{
if (this._helpIsOnScreen){
return;
};
this._resumeButton.visible = false;
this._helpButton.visible = false;
this._mapButton.visible = false;
this._menuButton.visible = false;
_quitSubmitButton.visible = false;
levelIndexSprite.visible = false;
this["line"].visible = false;
this["islandMC"].visible = false;
this._helpScreen = new HelpClass(false);
_helpScreen.alpha = 0;
this.addChild(this._helpScreen);
this._helpIsOnScreen = true;
_helpScreen.alpha = 0;
_helpScreen.addEventListener(Event.ENTER_FRAME, helpFadeIn, false, 0, true);
this._helpScreen.addEventListener(Config.EVENT_HELP_CLOSE, hideHelp, false, 0, true);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package menu
Section 257
//IntroClass (menu.IntroClass)
package menu {
import flash.display.*;
import core.*;
import flash.events.*;
import picaso.*;
import sounds.*;
import vis.*;
public dynamic class IntroClass extends MovieClip {
private var fade:Boolean;
private var _musicFroSlide2WasPlayed:Boolean;
public function IntroClass(){
var _local1:BlueSky;
super();
fade = SoundManager.fade;
SoundManager.fade = true;
x = (Config.SCREEN_WIDTH / 2);
y = (Config.SCREEN_HEIGHT / 2);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
this.skipButton.addEventListener(MouseEvent.CLICK, onSkipHandler);
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.nextButton.addEventListener(MouseEvent.CLICK, onNextHandler);
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
_local1 = new BlueSky();
_local1.scaleX = (Config.SCREEN_WIDTH / _local1.width);
_local1.x = (-(Config.SCREEN_WIDTH) / 2);
_local1.y = (-(Config.SCREEN_HEIGHT) / 2);
addChildAt(_local1, 0);
_musicFroSlide2WasPlayed = false;
}
private function enterFrameHandler(_arg1:Event):void{
if (currentFrame == 5){
stop();
if (!SoundManager.isSoundPlaying(SoundData.MAIN_THEME)){
SoundData.MAIN_THEME.play();
};
};
if (currentFrame == 6){
if (((!(_musicFroSlide2WasPlayed)) && (!(SoundManager.isSoundPlaying(SoundData.INTRO_SLIDE_2))))){
SoundData.INTRO_SLIDE_2.play();
_musicFroSlide2WasPlayed = true;
};
};
if (currentFrame == 15){
stop();
};
if (currentFrame == 25){
stop();
if (!SoundManager.isSoundPlaying(SoundData.INTRO_SLIDE_3)){
SoundData.INTRO_SLIDE_3.play();
};
this.skipButton.visible = false;
this.nextButton.x = 0;
};
if (currentFrame == totalFrames){
dispatchEvent(new Event(Config.EVENT_INTRO_CLOSE, true));
};
}
private function onSkipHandler(_arg1:MouseEvent):void{
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
GAManager.trackPage("/intro-skipped");
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkipHandler);
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this.nextButton.removeEventListener(MouseEvent.CLICK, onNextHandler);
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
dispatchEvent(new Event(Config.EVENT_INTRO_CLOSE, true));
}
private function onNextHandler(_arg1:MouseEvent):void{
play();
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function cleanup():void{
if (this.hasEventListener(Event.ENTER_FRAME)){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkipHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNextHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
while (numChildren > 0) {
removeChildAt(0);
};
SoundManager.fade = this.fade;
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package menu
Section 258
//MenuClass (menu.MenuClass)
package menu {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;
import vis.*;
import water.*;
import characters.*;
public dynamic class MenuClass extends MovieClip {
private var easy:Boolean;
private var scoreNormal:Number;// = 0
private var bubbleOption:Boolean;// = true
public var helpButtonObj:HelpButton;
public var wtBtn:SimpleButton;
public var quitButton:SimpleButton;
private var fadingOut:Boolean;// = false
public var creditsButton:CreditsButton;
public var easyButtonObj:SimpleButton;
private var continueButton:SimpleButton;
public var quitButtonObj:SimpleButton;
private var _chubrik:Glazan;
private var normal:Boolean;
public var creditsButtonObj:CreditsButton;
private var startNewGame:Boolean;// = false
private var hard:Boolean;
private var fadeDivider:Number;// = 3
private var normalButton:SimpleButton;
private var talkBaloon:TalkBaloon;
private var walkthroughButton:SimpleButton;
public var normalButtonObj:SimpleButton;
private var fadingIn:Boolean;// = false
private var eventString:String;// = ""
private var submitScore:Boolean;// = false
public var continueButtonObj:SimpleButton;
public var playButtonObj:SimpleButton;
public var playButton:SimpleButton;
private var scoreEasy:Number;// = 0
public var helpButton:HelpButton;
private var easyButton:SimpleButton;
private var counter:int;// = 0
private var firstText:Boolean;// = false
public function MenuClass(){
var _local1:Number;
var _local2:Water;
var _local3:Water;
var _local4:Water;
var _local5:Water;
var _local6:Water;
var _local7:Water;
var _local8:Water;
var _local9:Clouds;
var _local10:int;
var _local11:SharedObject;
var _local12:Glazan;
var _local13:TextFormat;
var _local14:String;
var _local15:int;
fadeDivider = 3;
fadingIn = false;
fadingOut = false;
eventString = "";
bubbleOption = true;
counter = 0;
startNewGame = false;
submitScore = false;
scoreEasy = 0;
scoreNormal = 0;
firstText = false;
super();
_local1 = 450;
_local2 = new Water(7, 640);
_local2.y = _local1;
this.addChild(_local2);
_local2.launch(5, Math.PI, 50);
_local3 = new Water(6, 640);
_local3.y = (_local1 - 20);
this.addChildAt(_local3, 4);
_local3.launch(5, (Math.PI / 2), 50);
_local4 = new Water(5, 640);
_local4.y = (_local1 - 35);
this.addChildAt(_local4, 3);
_local4.launch(4, (Math.PI / 4), 50);
_local5 = new Water(4, 640);
_local5.y = (_local1 - 40);
this.addChildAt(_local5, 3);
_local5.launch(3, (Math.PI / 10), 60);
_local6 = new Water(3, 640);
_local6.y = (_local1 - 45);
this.addChildAt(_local6, 2);
_local6.launch(2, (Math.PI / 25), 70);
_local7 = new Water(2, 640);
_local7.y = (_local1 - 50);
this.addChildAt(_local7, 2);
_local7.launch(2, (Math.PI / 50), 80);
_local8 = new Water(1, 640);
_local8.y = (_local1 - 55);
this.addChildAt(_local8, 1);
_local8.launch(2, 0, 100);
_local10 = 0;
while (_local10 < 3) {
_local9 = new Clouds();
_local9.x = (Math.random() * Config.SCREEN_WIDTH);
this.addChildAt(_local9, Math.round(((Math.random() * 5) + 1)));
_local10++;
};
playButton = this["playButtonObj"];
playButton.addEventListener(MouseEvent.CLICK, onPlay, false, 0, true);
playButton.addEventListener(MouseEvent.MOUSE_OVER, overPlay, false, 0, true);
playButton.addEventListener(MouseEvent.MOUSE_OUT, outPlay, false, 0, true);
helpButton = this["helpButtonObj"];
helpButton.addEventListener(MouseEvent.CLICK, onHelp, false, 0, true);
helpButton.addEventListener(MouseEvent.MOUSE_OVER, overHelp, false, 0, true);
helpButton.addEventListener(MouseEvent.MOUSE_OUT, outHelp, false, 0, true);
creditsButton = this["creditsButtonObj"];
creditsButton.addEventListener(MouseEvent.CLICK, onCredits, false, 0, true);
creditsButton.addEventListener(MouseEvent.MOUSE_OVER, overCredits, false, 0, true);
creditsButton.addEventListener(MouseEvent.MOUSE_OUT, outCredits, false, 0, true);
quitButton = this["quitButtonObj"];
quitButton.addEventListener(MouseEvent.CLICK, onQuit, false, 0, true);
quitButton.addEventListener(MouseEvent.MOUSE_OVER, overQuit, false, 0, true);
quitButton.addEventListener(MouseEvent.MOUSE_OUT, outQuit, false, 0, true);
continueButton = this["continueButtonObj"];
continueButton.addEventListener(MouseEvent.CLICK, onContinue, false, 0, true);
continueButton.addEventListener(MouseEvent.MOUSE_OVER, overContinue, false, 0, true);
continueButton.addEventListener(MouseEvent.MOUSE_OUT, outContinue, false, 0, true);
easyButton = this["easyButtonObj"];
easyButton.addEventListener(MouseEvent.CLICK, onEasy, false, 0, true);
easyButton.addEventListener(MouseEvent.MOUSE_OVER, overEasy, false, 0, true);
easyButton.addEventListener(MouseEvent.MOUSE_OUT, outEasy, false, 0, true);
normalButton = this["normalButtonObj"];
normalButton.addEventListener(MouseEvent.CLICK, onNormal, false, 0, true);
normalButton.addEventListener(MouseEvent.MOUSE_OVER, overNormal, false, 0, true);
normalButton.addEventListener(MouseEvent.MOUSE_OUT, outNormal, false, 0, true);
walkthroughButton = this["wtBtn"];
walkthroughButton.addEventListener(MouseEvent.CLICK, onWalkthrough, false, 0, true);
walkthroughButton.addEventListener(MouseEvent.MOUSE_OVER, overWalkthrough, false, 0, true);
walkthroughButton.addEventListener(MouseEvent.MOUSE_OUT, outWalkthrough, false, 0, true);
this.easyButton.visible = false;
this.normalButton.visible = false;
this.continueButton.visible = false;
_local11 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local11.size > 0){
this.easy = Boolean(_local11.data["easy"]);
this.normal = Boolean(_local11.data["normal"]);
this.hard = false;
this.continueButton.visible = Boolean(((((this.easy) || (this.normal))) || (this.hard)));
};
_local12 = new Glazan(0, 0, false);
_local12.x = (558 + 30);
_local12.y = 332;
_local12.stand();
this.addChildAt(_local12, 14);
this._chubrik = _local12;
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
this.talkBaloon = new TalkBaloon();
this.talkBaloon.x = _local12.x;
this.talkBaloon.y = (_local12.y - 30);
this.talkBaloon.scaleX = -0.6;
this.talkBaloon.scaleY = 0.6;
this.talkBaloon.fontSize = 24;
this.talkBaloon.textField.scaleX = -1;
this.talkBaloon.textField.x = (this.talkBaloon.textField.x - 26);
this.talkBaloon.textFieldY = (this.talkBaloon.textFieldY + 5);
this.addChild(this.talkBaloon);
this.talkBaloon.centeredText = true;
this.talkBaloon.show();
_local13 = this.talkBaloon.textField.defaultTextFormat;
_local13.size = 24;
_local13.align = "center";
this.talkBaloon.textField.defaultTextFormat = _local13;
if (_local11.size > 0){
if (_local11.data.nameIsEntered){
_local14 = _local11.data.name;
};
};
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
if (_local14){
this.talkBaloon.text = (("Hello, " + _local14) + "!");
} else {
this.talkBaloon.text = "Hello!";
};
} else {
if (_local14){
this.talkBaloon.text = (("Привет, " + _local14) + "!");
} else {
this.talkBaloon.text = "Привет!";
};
};
firstText = true;
scoreEasy = 0;
if (Config.easyLevels){
_local15 = 0;
while (_local15 < Config.easyLevels.length) {
scoreEasy = (scoreEasy + Config.easyLevels[_local15]);
_local15++;
};
};
scoreNormal = 0;
if (Config.normalLevels){
_local15 = 0;
while (_local15 < Config.normalLevels.length) {
scoreNormal = (scoreNormal + Config.normalLevels[_local15]);
_local15++;
};
};
this.counter = 0;
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:Number;
if (this.counter >= 0){
this.counter++;
};
_local2 = (firstText) ? (this.stage.frameRate * 2) : (this.stage.frameRate / 2);
if (((this.stage) && ((this.counter >= _local2)))){
this.counter = -1;
this.talkBaloon.hide();
firstText = false;
};
if (this._chubrik.actions.length == 0){
if (Math.random() > 0.99){
this._chubrik.wave();
this._chubrik.stand();
};
};
}
private function overPlay(_arg1:MouseEvent):void{
this.counter = -1;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = "Start a new game!";
} else {
this.talkBaloon.text = "Хотите начать новую игру? Нажмите на эту кнопку!";
};
this.talkBaloon.show();
firstText = false;
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function outContinue(_arg1:MouseEvent):void{
this.counter = 0;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function overHelp(_arg1:MouseEvent):void{
this.counter = -1;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = "Help section! You’ll need this info!";
} else {
this.talkBaloon.text = "Не знаете, что делать в игре? Тогда загляните сюда.";
};
this.talkBaloon.show();
firstText = false;
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
public function onStory(_arg1:MouseEvent){
dispatchEvent(new Event(Config.EVENT_ON_STORY, true));
}
private function outEasy(_arg1:MouseEvent):void{
this.counter = 0;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function onEasy(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_PLAY_EASY, true));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function cleanup():void{
if (playButton.hasEventListener(MouseEvent.CLICK)){
playButton.removeEventListener(MouseEvent.CLICK, onPlay);
};
if (playButton.hasEventListener(MouseEvent.MOUSE_OVER)){
playButton.removeEventListener(MouseEvent.MOUSE_OVER, overPlay);
};
if (playButton.hasEventListener(MouseEvent.MOUSE_OUT)){
playButton.removeEventListener(MouseEvent.MOUSE_OUT, outPlay);
};
if (helpButton.hasEventListener(MouseEvent.CLICK)){
helpButton.removeEventListener(MouseEvent.CLICK, onHelp);
};
if (helpButton.hasEventListener(MouseEvent.MOUSE_OVER)){
helpButton.removeEventListener(MouseEvent.MOUSE_OVER, overHelp);
};
if (helpButton.hasEventListener(MouseEvent.MOUSE_OUT)){
helpButton.removeEventListener(MouseEvent.MOUSE_OUT, outHelp);
};
if (creditsButton.hasEventListener(MouseEvent.CLICK)){
creditsButton.removeEventListener(MouseEvent.CLICK, onCredits);
};
if (creditsButton.hasEventListener(MouseEvent.MOUSE_OVER)){
creditsButton.removeEventListener(MouseEvent.MOUSE_OVER, overCredits);
};
if (creditsButton.hasEventListener(MouseEvent.MOUSE_OUT)){
creditsButton.removeEventListener(MouseEvent.MOUSE_OUT, outCredits);
};
if (quitButton.hasEventListener(MouseEvent.CLICK)){
quitButton.removeEventListener(MouseEvent.CLICK, onQuit);
};
if (quitButton.hasEventListener(MouseEvent.MOUSE_OVER)){
quitButton.removeEventListener(MouseEvent.MOUSE_OVER, overQuit);
};
if (quitButton.hasEventListener(MouseEvent.MOUSE_OUT)){
quitButton.removeEventListener(MouseEvent.MOUSE_OUT, outQuit);
};
if (continueButton.hasEventListener(MouseEvent.CLICK)){
continueButton.removeEventListener(MouseEvent.CLICK, onContinue);
};
if (continueButton.hasEventListener(MouseEvent.MOUSE_OVER)){
continueButton.removeEventListener(MouseEvent.MOUSE_OVER, overContinue);
};
if (continueButton.hasEventListener(MouseEvent.MOUSE_OUT)){
continueButton.removeEventListener(MouseEvent.MOUSE_OUT, outContinue);
};
if (easyButton.hasEventListener(MouseEvent.CLICK)){
easyButton.removeEventListener(MouseEvent.CLICK, onEasy);
};
if (easyButton.hasEventListener(MouseEvent.MOUSE_OVER)){
easyButton.removeEventListener(MouseEvent.MOUSE_OVER, overEasy);
};
if (easyButton.hasEventListener(MouseEvent.MOUSE_OUT)){
easyButton.removeEventListener(MouseEvent.MOUSE_OUT, outEasy);
};
if (normalButton.hasEventListener(MouseEvent.CLICK)){
normalButton.removeEventListener(MouseEvent.CLICK, onNormal);
};
if (normalButton.hasEventListener(MouseEvent.MOUSE_OVER)){
normalButton.removeEventListener(MouseEvent.MOUSE_OVER, overNormal);
};
if (normalButton.hasEventListener(MouseEvent.MOUSE_OUT)){
normalButton.removeEventListener(MouseEvent.MOUSE_OUT, outNormal);
};
if (walkthroughButton.hasEventListener(MouseEvent.CLICK)){
walkthroughButton.removeEventListener(MouseEvent.CLICK, onWalkthrough);
};
if (walkthroughButton.hasEventListener(MouseEvent.MOUSE_OVER)){
walkthroughButton.removeEventListener(MouseEvent.MOUSE_OVER, overWalkthrough);
};
if (walkthroughButton.hasEventListener(MouseEvent.MOUSE_OUT)){
walkthroughButton.removeEventListener(MouseEvent.MOUSE_OUT, outWalkthrough);
};
if (this.hasEventListener(Event.ENTER_FRAME)){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
this.talkBaloon.cleanup();
this.talkBaloon = null;
while (numChildren > 0) {
removeChildAt(0);
};
}
private function outWalkthrough(_arg1:MouseEvent):void{
this.counter = 0;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function outQuit(_arg1:MouseEvent):void{
this.counter = 0;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function onQuit(_arg1:MouseEvent){
if ((((scoreEasy == 0)) && ((scoreNormal == 0)))){
return;
};
this.dispatchEvent(new Event(Config.EVENT_ON_QUIT, true));
this.playButton.visible = false;
this.helpButton.visible = false;
this.quitButton.visible = false;
this.creditsButton.visible = false;
this.continueButton.visible = false;
this.walkthroughButton.visible = false;
this.easyButton.visible = ((this.easy) && (!((scoreEasy == 0))));
this.normalButton.visible = ((this.normal) && (!((scoreNormal == 0))));
if (((this.easyButton.visible) && (!(this.normalButton.visible)))){
this.dispatchEvent(new Event(Config.EVENT_PLAY_EASY, true));
this.resetMenu();
};
if (((!(this.easyButton.visible)) && (this.normalButton.visible))){
this.dispatchEvent(new Event(Config.EVENT_PLAY_NORMAL, true));
this.resetMenu();
};
if (((!(this.easyButton.visible)) && (this.normalButton.visible))){
this.normalButton.y = 280;
};
this.startNewGame = false;
this.submitScore = true;
}
private function overNormal(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
_local2 = 0;
if (Config.normalLevels){
_local3 = 0;
while (_local3 < Config.normalLevels.length) {
if (Config.normalLevels[_local3] > 0){
_local2++;
};
_local3++;
};
};
this.counter = -1;
if (this.startNewGame){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = "Start normal mode!";
} else {
this.talkBaloon.text = "Выбирайте этот режим, если вам нравится решать сложные задачи.";
};
this.talkBaloon.show();
} else {
if (this.submitScore){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = (("Submit your normal mode score! (" + scoreNormal.toString()) + ")");
} else {
if ((((_local2 == 0)) || ((_local2 >= 5)))){
this.talkBaloon.text = (((((("Вы набрали " + scoreNormal.toString()) + " очков. Пройдено ") + _local2.toString()) + " уровней из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
if (_local2 == 1){
this.talkBaloon.text = (((((("Вы набрали " + scoreNormal.toString()) + " очков. Пройден ") + _local2.toString()) + " уровень из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
this.talkBaloon.text = (((((("Вы набрали " + scoreNormal.toString()) + " очков. Пройдено ") + _local2.toString()) + " уровня из ") + Config.LEVELS_TOTAL.toString()) + ".");
};
};
};
this.talkBaloon.show();
} else {
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = (((("Continue normal mode with " + _local2.toString()) + "/") + Config.LEVELS_TOTAL.toString()) + " levels completed.");
this.talkBaloon.show();
} else {
if ((((_local2 == 0)) || ((_local2 >= 5)))){
this.talkBaloon.text = (((("Пройдено " + _local2.toString()) + " уровней из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
if (_local2 == 1){
this.talkBaloon.text = (((("Пройден " + _local2.toString()) + " уровень из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
this.talkBaloon.text = (((("Пройдено " + _local2.toString()) + " уровня из ") + Config.LEVELS_TOTAL.toString()) + ".");
};
};
this.talkBaloon.show();
};
};
};
firstText = false;
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function overEasy(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
_local2 = 0;
if (Config.easyLevels){
_local3 = 0;
while (_local3 < Config.easyLevels.length) {
if (Config.easyLevels[_local3] > 0){
_local2++;
};
_local3++;
};
};
this.counter = -1;
if (this.startNewGame){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = "Start easy mode!";
} else {
this.talkBaloon.text = "Выбирайте этот режим, если вы играете в первый раз.";
};
this.talkBaloon.show();
} else {
if (this.submitScore){
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = (("Submit your easy mode score! (" + scoreEasy.toString()) + ")");
} else {
if ((((_local2 == 0)) || ((_local2 >= 5)))){
this.talkBaloon.text = (((((("Вы набрали " + scoreEasy.toString()) + " очков. Пройдено ") + _local2.toString()) + " уровней из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
if (_local2 == 1){
this.talkBaloon.text = (((((("Вы набрали " + scoreEasy.toString()) + " очков. Пройден ") + _local2.toString()) + " уровень из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
this.talkBaloon.text = (((((("Вы набрали " + scoreEasy.toString()) + " очков. Пройдено ") + _local2.toString()) + " уровня из ") + Config.LEVELS_TOTAL.toString()) + ".");
};
};
};
this.talkBaloon.show();
} else {
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = (((("Continue on easy mode with " + _local2.toString()) + "/") + Config.LEVELS_TOTAL.toString()) + " levels completed.");
this.talkBaloon.show();
} else {
if ((((_local2 == 0)) || ((_local2 >= 5)))){
this.talkBaloon.text = (((("Пройдено " + _local2.toString()) + " уровней из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
if (_local2 == 1){
this.talkBaloon.text = (((("Пройден " + _local2.toString()) + " уровень из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
this.talkBaloon.text = (((("Пройдено " + _local2.toString()) + " уровня из ") + Config.LEVELS_TOTAL.toString()) + ".");
};
};
this.talkBaloon.show();
};
};
};
firstText = false;
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function overCredits(_arg1:MouseEvent):void{
this.counter = -1;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = "Credits section!";
} else {
this.talkBaloon.text = "Узнайте, кто создал эту замечательную игру.";
};
this.talkBaloon.show();
firstText = false;
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function overQuit(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
this.counter = -1;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
if ((((scoreEasy == 0)) && ((scoreNormal == 0)))){
this.talkBaloon.text = "No score achieved yet!";
} else {
if ((((scoreEasy > 0)) && ((scoreNormal == 0)))){
this.talkBaloon.text = (("Submit your easy mode score! (" + scoreEasy.toString()) + ")");
} else {
if ((((scoreEasy == 0)) && ((scoreNormal > 0)))){
this.talkBaloon.text = (("Submit your normal mode score! (" + scoreNormal.toString()) + ")");
} else {
this.talkBaloon.text = "Submit your score!";
};
};
};
} else {
if ((((scoreEasy == 0)) && ((scoreNormal == 0)))){
this.talkBaloon.text = "Ёвины очень расстроились, что вы не построили ни одного моста.";
} else {
if ((((scoreEasy > 0)) && ((scoreNormal == 0)))){
_local2 = 0;
if (Config.easyLevels){
_local3 = 0;
while (_local3 < Config.easyLevels.length) {
if (Config.easyLevels[_local3] > 0){
_local2++;
};
_local3++;
};
};
if ((((_local2 == 0)) || ((_local2 >= 5)))){
this.talkBaloon.text = (((((("Вы набрали " + scoreEasy.toString()) + " очков. Пройдено ") + _local2.toString()) + " уровней из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
if (_local2 == 1){
this.talkBaloon.text = (((((("Вы набрали " + scoreEasy.toString()) + " очков. Пройден ") + _local2.toString()) + " уровень из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
this.talkBaloon.text = (((((("Вы набрали " + scoreEasy.toString()) + " очков. Пройдено ") + _local2.toString()) + " уровня из ") + Config.LEVELS_TOTAL.toString()) + ".");
};
};
} else {
if ((((scoreEasy == 0)) && ((scoreNormal > 0)))){
_local2 = 0;
if (Config.easyLevels){
_local3 = 0;
while (_local3 < Config.normalLevels.length) {
if (Config.normalLevels[_local3] > 0){
_local2++;
};
_local3++;
};
};
if ((((_local2 == 0)) || ((_local2 >= 5)))){
this.talkBaloon.text = (((((("Вы набрали " + scoreNormal.toString()) + " очков. Пройдено ") + _local2.toString()) + " уровней из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
if (_local2 == 1){
this.talkBaloon.text = (((((("Вы набрали " + scoreNormal.toString()) + " очков. Пройден ") + _local2.toString()) + " уровень из ") + Config.LEVELS_TOTAL.toString()) + ".");
} else {
this.talkBaloon.text = (((((("Вы набрали " + scoreNormal.toString()) + " очков. Пройдено ") + _local2.toString()) + " уровня из ") + Config.LEVELS_TOTAL.toString()) + ".");
};
};
} else {
this.talkBaloon.text = "Нажмите, чтобы отправить ваш результат.";
};
};
};
};
this.talkBaloon.show();
firstText = false;
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function resetMenu():void{
this.continueButton.visible = Boolean(((((this.easy) || (this.normal))) || (this.hard)));
this.playButton.visible = true;
this.helpButton.visible = true;
this.walkthroughButton.visible = true;
this.creditsButton.visible = true;
this.quitButton.visible = true;
this.easyButton.visible = false;
this.normalButton.visible = false;
this.startNewGame = false;
this.submitScore = false;
this.easyButton.y = 293.2;
this.normalButton.y = 340.3;
}
private function onHard(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_PLAY_HARD, true));
}
private function outCredits(_arg1:MouseEvent):void{
this.counter = 0;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function overWalkthrough(_arg1:MouseEvent):void{
this.counter = -1;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
this.talkBaloon.text = "Stuck on a level? Check out walkthrough videos!";
} else {
this.talkBaloon.text = "Не знаете как пройти уровень? Нажмите на эту кнопку!";
};
this.talkBaloon.show();
firstText = false;
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function onWalkthrough(_arg1:MouseEvent):void{
navigateToURL(new URLRequest(Config.WALKTHROUGH_URL), "_blank");
}
private function overContinue(_arg1:MouseEvent):void{
this.counter = -1;
if (Config.LANGUAGE == Config.LANGUAGE_ENG){
if (((this.easy) && (!(this.normal)))){
this.talkBaloon.text = "Continue your previous game on easy mode!";
} else {
if (((!(this.easy)) && (this.normal))){
this.talkBaloon.text = "Continue your previous game on normal mode!";
} else {
this.talkBaloon.text = "Continue your previous game!";
};
};
} else {
if (((this.easy) && (!(this.normal)))){
this.talkBaloon.text = "Продолжить игру (легкий режим).";
} else {
if (((!(this.easy)) && (this.normal))){
this.talkBaloon.text = "Продолжить игру (нормальный режим).";
} else {
this.talkBaloon.text = "Продолжить игру.";
};
};
};
this.talkBaloon.show();
firstText = false;
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function outPlay(_arg1:MouseEvent):void{
this.counter = 0;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function onContinue(_arg1:MouseEvent):void{
this.playButton.visible = false;
this.helpButton.visible = false;
this.quitButton.visible = false;
this.creditsButton.visible = false;
this.continueButton.visible = false;
this.walkthroughButton.visible = false;
this.easyButton.visible = this.easy;
this.normalButton.visible = this.normal;
this.startNewGame = false;
this.submitScore = false;
if (((this.easyButton.visible) && (!(this.normalButton.visible)))){
this.dispatchEvent(new Event(Config.EVENT_PLAY_EASY, true));
};
if (((!(this.easyButton.visible)) && (this.normalButton.visible))){
this.dispatchEvent(new Event(Config.EVENT_PLAY_NORMAL, true));
};
if (!this.easyButton.visible){
this.normalButton.y = 280;
};
}
private function outHelp(_arg1:MouseEvent):void{
this.counter = 0;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function onPlay(_arg1:MouseEvent){
dispatchEvent(new Event(Config.EVENT_ON_PLAY, true));
this.playButton.visible = false;
this.helpButton.visible = false;
this.quitButton.visible = false;
this.creditsButton.visible = false;
this.continueButton.visible = false;
this.walkthroughButton.visible = false;
this.easyButton.visible = true;
this.normalButton.visible = true;
this.startNewGame = true;
this.submitScore = false;
}
private function onNormal(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_PLAY_NORMAL, true));
}
public function onCredits(_arg1:MouseEvent){
dispatchEvent(new Event(Config.EVENT_ON_CREDITS, true));
}
public function onHelp(_arg1:MouseEvent){
dispatchEvent(new Event(Config.EVENT_ON_HELP, true));
}
private function outNormal(_arg1:MouseEvent):void{
this.counter = 0;
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package menu
Section 259
//AbstractCollection (org.cove.ape.AbstractCollection)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public class AbstractCollection {
private var _particles:Array;
private var _isParented:Boolean;
private var _stress:Boolean;
private var _deletedObjects:Array;
private var _sprite:Sprite;
private var _constraints:Array;
public var numSets:Number;
public function AbstractCollection(){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractCollection"){
throw (new ArgumentError("AbstractCollection can't be instantiated directly"));
};
_isParented = false;
_particles = new Array();
_constraints = new Array();
numSets = 0;
_deletedObjects = new Array();
_stress = false;
}
function checkCollisionsVsCollection(_arg1:AbstractCollection):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:AbstractParticle;
var _local6:int;
var _local7:int;
var _local8:int;
var _local9:AbstractParticle;
var _local10:SpringConstraint;
var _local11:SpringConstraint;
var _local12:int;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local5 = _particles[_local3];
if (!_local5.collidable){
} else {
_local6 = _arg1.particles.length;
_local7 = 0;
while (_local7 < _local6) {
_local9 = _arg1.particles[_local7];
if (_local9.collidable){
CollisionDetector.test(_local5, _local9);
};
_local7++;
};
_local8 = _arg1.constraints.length;
_local7 = 0;
while (_local7 < _local8) {
_local10 = _arg1.constraints[_local7];
if (((_local10.collidable) && (!(_local10.isConnectedTo(_local5))))){
_local10.scp.updatePosition();
CollisionDetector.test(_local5, _local10.scp);
};
_local7++;
};
};
_local3++;
};
_local4 = _constraints.length;
_local3 = 0;
while (_local3 < _local4) {
_local11 = _constraints[_local3];
if (!_local11.collidable){
} else {
_local6 = _arg1.particles.length;
_local12 = 0;
while (_local12 < _local6) {
_local9 = _arg1.particles[_local12];
if (((_local9.collidable) && (!(_local11.isConnectedTo(_local9))))){
_local11.scp.updatePosition();
CollisionDetector.test(_local9, _local11.scp);
};
_local12++;
};
};
_local3++;
};
}
public function currStress():void{
var _local1:Number;
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].currStress();
_local1++;
};
_stress = true;
}
public function removeConstraint(_arg1:AbstractConstraint, _arg2:Boolean=true):void{
var _local3:int;
_local3 = constraints.indexOf(_arg1);
if (_local3 == -1){
return;
};
constraints.splice(_local3, 1);
_arg1.cleanup(_arg2);
}
public function removeConstraintWithBackup(_arg1:AbstractConstraint):void{
if (_deletedObjects == null){
_deletedObjects = new Array();
};
if (_arg1.graphicsLayer != null){
_arg1.graphicsLayer.visible = false;
};
_deletedObjects.push(_arg1);
removeConstraint(_arg1, false);
}
public function restoreDeletedConstraints():void{
var _local1:Number;
if (_deletedObjects == null){
return;
};
if (_deletedObjects.length == 0){
return;
};
_local1 = 0;
while (_local1 < _deletedObjects.length) {
if ((_deletedObjects[_local1] is AbstractConstraint)){
addConstraint(_deletedObjects[_local1]);
if (_deletedObjects[_local1].graphicsLayer != null){
_deletedObjects[_local1].graphicsLayer.visible = true;
};
_deletedObjects.splice(_local1, 1);
} else {
_local1++;
};
};
}
public function haveParticle(_arg1:AbstractParticle):Boolean{
if (particles.indexOf(_arg1) >= 0){
return (true);
};
return (false);
}
public function init():void{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
particles[_local1].init();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].init();
_local1++;
};
}
function get isParented():Boolean{
return (_isParented);
}
public function getObjectsUnderPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=true, _arg4:Boolean=true, _arg5:Number=0, _arg6:Boolean=false):Array{
var _local7:Array;
var _local8:Number;
_local7 = new Array();
_local8 = 0;
while (_local8 < particles.length) {
if (((((_arg3) && ((particles[_local8] is CircleParticle)))) && ((particles[_local8].subParticle == true)))){
} else {
if ((particles[_local8] as AbstractParticle).numSets() == 0){
} else {
if (_arg6){
if ((((Math.abs((particles[_local8].px - _arg1)) < 0.001)) && ((Math.abs((particles[_local8].py - _arg2)) < 0.001)))){
_local7.push(particles[_local8]);
};
} else {
if (particles[_local8].sprite.hitTestPoint(_arg1, _arg2, true)){
_local7.push(particles[_local8]);
};
};
};
};
_local8++;
};
if (!_arg3){
_local8 = 0;
while (_local8 < constraints.length) {
if (constraints[_local8].sprite.hitTestPoint(_arg1, _arg2, true)){
_local7.push(constraints[_local8]);
};
_local8++;
};
};
if (_arg4){
_local7.sortOn("childIndex", Array.DESCENDING);
};
if ((((_arg5 > 0)) && ((_arg5 < _local7.length)))){
_local7.splice(_arg5);
};
return (_local7);
}
public function hideStress():void{
var _local1:Number;
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].hideStress();
_local1++;
};
_stress = false;
}
public function cleanup():void{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
particles[_local1].cleanup();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].cleanup();
_local1++;
};
}
function set isParented(_arg1:Boolean):void{
_isParented = _arg1;
}
public function removeParticle(_arg1:AbstractParticle, _arg2:Boolean=true):void{
var _local3:int;
_local3 = particles.indexOf(_arg1);
if (_local3 == -1){
return;
};
particles.splice(_local3, 1);
_arg1.cleanup(_arg2);
}
public function resetCoordinates():void{
var _local1:Number;
_local1 = 0;
while (_local1 < particles.length) {
(particles[_local1] as AbstractParticle).restoreStartCoordinates();
_local1++;
};
}
public function removeSetById(_arg1:Array):void{
var _local2:Number;
var _local3:Number;
if (_arg1 == null){
return;
};
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = 0;
while (_local3 < constraints.length) {
if (!constraints[_local3].isInSet(_arg1[_local2])){
_local3++;
} else {
removeConstraint(constraints[_local3]);
};
};
_local3 = 0;
while (_local3 < particles.length) {
if (!particles[_local3].isInSet(_arg1[_local2])){
_local3++;
} else {
if (particles[_local3].numSets() > 1){
particles[_local3].removeSet(_arg1[_local2]);
_local3++;
} else {
if (particles[_local3].fixed){
_local3++;
} else {
removeParticle(particles[_local3]);
};
};
};
};
_local2++;
};
}
function integrate(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:AbstractParticle;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _particles[_local3];
_local4.update(_arg1);
_local3++;
};
}
public function get particles():Array{
return (_particles);
}
public function get constraints():Array{
return (_constraints);
}
public function resetConstraintOverloading():void{
var _local1:int;
_local1 = 0;
while (_local1 < this.constraints.length) {
if ((constraints[_local1] is SpringConstraint)){
(constraints[_local1] as SpringConstraint).overloadingCounter = 0;
};
_local1++;
};
}
public function getSetsUnderPoint(_arg1:Number, _arg2:Number):Array{
var _local3:Array;
var _local4:Array;
var _local5:int;
var _local6:Array;
var _local7:int;
_local3 = getObjectsUnderPoint(_arg1, _arg2, false, false);
if (_local3.length == 0){
return (new Array());
};
_local4 = new Array();
_local5 = 0;
while (_local5 < _local3.length) {
_local6 = _local3[_local5].getSets(0);
_local7 = 0;
while (_local7 < _local6.length) {
if (_local4.indexOf(_local6[_local7]) == -1){
_local4.push(_local6[_local7]);
};
_local7++;
};
_local5++;
};
return (_local4);
}
public function restoreDeletedParticles():void{
var _local1:Number;
if (_deletedObjects == null){
return;
};
if (_deletedObjects.length == 0){
return;
};
_local1 = 0;
while (_local1 < _deletedObjects.length) {
if ((_deletedObjects[_local1] is AbstractParticle)){
addParticle(_deletedObjects[_local1]);
if (_deletedObjects[_local1].graphicsLayer != null){
_deletedObjects[_local1].graphicsLayer.visible = true;
};
_deletedObjects.splice(_local1, 1);
} else {
_local1++;
};
};
}
public function get sprite():Sprite{
if (_sprite != null){
return (_sprite);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_sprite = new Sprite();
APEngine.container.addChild(_sprite);
return (_sprite);
}
function checkInternalCollisions():void{
var _local1:int;
var _local2:int;
var _local3:AbstractParticle;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:AbstractParticle;
var _local8:SpringConstraint;
_local1 = _particles.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _particles[_local2];
if (!_local3.collidable){
} else {
_local4 = (_local2 + 1);
while (_local4 < _local1) {
_local7 = _particles[_local4];
if (_local7.collidable){
CollisionDetector.test(_local3, _local7);
};
_local4++;
};
_local5 = _constraints.length;
_local6 = 0;
while (_local6 < _local5) {
_local8 = _constraints[_local6];
if (((_local8.collidable) && (!(_local8.isConnectedTo(_local3))))){
_local8.scp.updatePosition();
CollisionDetector.test(_local3, _local8.scp);
};
_local6++;
};
};
_local2++;
};
}
public function addParticle(_arg1:AbstractParticle, _arg2:Number=-1):void{
particles.push(_arg1);
if (isParented){
_arg1.init();
};
_arg1.setStartCoordinates(_arg1.px, _arg1.py);
if (_arg2 != -1){
_arg1.addSet(_arg2);
};
this.particles.sortOn(["px", "py"], Array.NUMERIC, Array.NUMERIC);
}
public function haveConstraintConnectedTo(_arg1:AbstractParticle, _arg2:AbstractParticle=null):Boolean{
var _local3:Number;
_local3 = 0;
while (_local3 < constraints.length) {
if (_arg2 == null){
if (constraints[_local3].isConnectedTo(_arg1)){
return (true);
};
} else {
if (((constraints[_local3].isConnectedTo(_arg1)) && (constraints[_local3].isConnectedTo(_arg2)))){
return (true);
};
};
_local3++;
};
return (false);
}
function satisfyConstraints(_arg1:Boolean=false):void{
var _local2:int;
var _local3:int;
var _local4:AbstractConstraint;
_local2 = _constraints.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _constraints[_local3];
_local4.resolve();
_local3++;
};
}
public function selectOffAll():void{
var _local1:Number;
_local1 = 0;
while (_local1 < particles.length) {
particles[_local1].deselect();
_local1++;
};
_local1 = 0;
while (_local1 < constraints.length) {
constraints[_local1].deselect();
_local1++;
};
}
public function haveObjectUnderPoint(_arg1:Number, _arg2:Number):Boolean{
var _local3:Number;
var _local4:Number;
_local3 = 0;
while (_local3 < particles.length) {
if (particles[_local3].sprite.hitTestPoint(_arg1, _arg2, true)){
return (true);
};
_local3++;
};
_local4 = 0;
while (_local4 < constraints.length) {
if (constraints[_local4].sprite.hitTestPoint(_arg1, _arg2, true)){
return (true);
};
_local4++;
};
return (false);
}
public function addConstraint(_arg1:AbstractConstraint, _arg2:Number=-1):void{
constraints.push(_arg1);
if (isParented){
_arg1.init();
};
if (_arg2 != -1){
_arg1.addSet(_arg2);
};
constraints.sort(constraintSpecialSort);
}
public function paint():void{
var _local1:AbstractParticle;
var _local2:int;
var _local3:int;
var _local4:SpringConstraint;
_local2 = _particles.length;
_local3 = 0;
while (_local3 < _local2) {
_local1 = _particles[_local3];
if (((!(_local1.fixed)) || (_local1.alwaysRepaint))){
_local1.paint();
};
_local3++;
};
_local2 = _constraints.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _constraints[_local3];
if (((!(_local4.fixed)) || (_local4.alwaysRepaint))){
_local4.paint();
};
_local3++;
};
}
private function constraintSpecialSort(_arg1:SpringConstraint, _arg2:SpringConstraint):Number{
var _local3:int;
var _local4:int;
var _local5:int;
var _local6:int;
var _local7:int;
_local4 = particles.indexOf(_arg1.particleA);
_local5 = particles.indexOf(_arg1.particleB);
if (_local4 > _local5){
_local3 = _local4;
_local4 = _local5;
_local5 = _local3;
};
_local6 = particles.indexOf(_arg2.particleA);
_local7 = particles.indexOf(_arg2.particleB);
if (_local6 > _local7){
_local3 = _local6;
_local6 = _local7;
_local7 = _local3;
};
if (_local4 < _local6){
return (-1);
};
if (_local4 > _local6){
return (1);
};
if (_local5 < _local7){
return (-1);
};
if (_local5 > _local7){
return (1);
};
return (0);
}
public function selectSets(_arg1:Array):void{
var _local2:Number;
var _local3:Number;
if (_arg1 == null){
return;
};
_local2 = 0;
while (_local2 < particles.length) {
_local3 = 0;
while (_local3 < _arg1.length) {
if (particles[_local2].isInSet(_arg1[_local3])){
particles[_local2].select();
break;
};
_local3++;
};
_local2++;
};
_local2 = 0;
while (_local2 < constraints.length) {
_local3 = 0;
while (_local3 < _arg1.length) {
if (constraints[_local2].isInSet(_arg1[_local3])){
constraints[_local2].select();
break;
};
_local3++;
};
_local2++;
};
}
public function clearDeletedConstraintsArray():void{
var _local1:Number;
if (_deletedObjects == null){
return;
};
if (_deletedObjects.length == 0){
return;
};
_local1 = 0;
while (_local1 < _deletedObjects.length) {
_deletedObjects[_local1].cleanup();
_local1++;
};
_deletedObjects.splice(0);
}
public function removeParticleWithBackup(_arg1:AbstractParticle):void{
var _local2:int;
if (_deletedObjects == null){
_deletedObjects = new Array();
};
_local2 = particles.indexOf(_arg1);
if (_local2 == -1){
return;
};
(particles[_local2] as AbstractParticle).restoreStartCoordinates();
if (_arg1.graphicsLayer != null){
_arg1.graphicsLayer.visible = false;
};
_deletedObjects.push(_arg1);
removeParticle(_arg1, false);
}
public function removeSetUnderPoint(_arg1:Number, _arg2:Number):Array{
var _local3:Array;
var _local4:Number;
var _local5:Number;
_local3 = getSetsUnderPoint(_arg1, _arg2);
_local4 = 0;
while (_local4 < _local3.length) {
_local5 = 0;
while (_local5 < constraints.length) {
if (!constraints[_local5].isInSet(_local3[_local4])){
_local5++;
} else {
removeConstraint(constraints[_local5]);
};
};
_local5 = 0;
while (_local5 < particles.length) {
if (!particles[_local5].isInSet(_local3[_local4])){
_local5++;
} else {
if (particles[_local5].numSets() > 1){
particles[_local5].removeSet(_local3[_local4]);
_local5++;
} else {
if (particles[_local5].fixed){
_local5++;
} else {
removeParticle(particles[_local5]);
};
};
};
};
_local4++;
};
return (_local3);
}
public function getAll():Array{
return (particles.concat(constraints));
}
}
}//package org.cove.ape
Section 260
//AbstractConstraint (org.cove.ape.AbstractConstraint)
package org.cove.ape {
import flash.utils.*;
public class AbstractConstraint extends AbstractItem {
private var _stiffness:Number;
public function AbstractConstraint(_arg1:Number){
if (getQualifiedClassName(this) == "org.cove.ape::AbstractConstraint"){
throw (new ArgumentError("AbstractConstraint can't be instantiated directly"));
};
this.stiffness = _arg1;
setStyle();
}
public function set stiffness(_arg1:Number):void{
_stiffness = _arg1;
}
public function get stiffness():Number{
return (_stiffness);
}
function resolve():void{
}
}
}//package org.cove.ape
Section 261
//AbstractItem (org.cove.ape.AbstractItem)
package org.cove.ape {
import flash.display.*;
import flash.filters.*;
public class AbstractItem {
public var graphicsLayer:Sprite;
var fillAlpha:Number;
var fillColor:uint;
var displayObject:DisplayObject;
var displayObjectOffset:Vector;
private var _sets:Array;
private var _visible:Boolean;
var displayObjectRotation:Number;
var lineAlpha:Number;
var lineColor:uint;
private var oldFilters:Array;
var lineThickness:Number;
private var _sprite:Sprite;
private var _selected:Boolean;
private var _alwaysRepaint:Boolean;
public function AbstractItem(){
_visible = true;
_alwaysRepaint = false;
_selected = false;
}
final public function get alwaysRepaint():Boolean{
return (_alwaysRepaint);
}
public function setFill(_arg1:uint=0xFFFFFF, _arg2:Number=1):void{
fillColor = _arg1;
fillAlpha = _arg2;
}
public function addSet(_arg1:Number):void{
if (_arg1 == -1){
return;
};
if (_sets == null){
_sets = new Array();
};
if (_sets.indexOf(_arg1) == -1){
_sets.push(_arg1);
};
}
public function init():void{
}
public function get childIndex():Number{
var _local1:Number;
var _local2:int;
if (_sets == null){
return (0);
};
_local1 = 0;
_local2 = 0;
while (_local2 < _sets.length) {
if (_local1 < _sets[_local2]){
_local1 = _sets[_local2];
};
_local2++;
};
return (_local1);
}
public function cleanup(_arg1:Boolean=true):void{
var _local2:int;
var _local3:DisplayObjectContainer;
sprite.graphics.clear();
_local2 = 0;
while (_local2 < sprite.numChildren) {
sprite.removeChildAt(_local2);
_local2++;
};
if (((_arg1) && (!((graphicsLayer == null))))){
_local3 = graphicsLayer.parent;
if (_local3 != null){
_local3.removeChild(graphicsLayer);
};
graphicsLayer = null;
};
}
public function deselect():void{
if (!_selected){
return;
};
if (graphicsLayer != null){
graphicsLayer.filters = this.oldFilters;
} else {
sprite.filters = this.oldFilters;
};
_selected = false;
}
public function removeSet(_arg1:Number=-1):void{
var _local2:Number;
if (_sets == null){
return;
};
if (_arg1 == -1){
_sets.splice(0);
};
_local2 = _sets.indexOf(_arg1);
if (_local2 == -1){
return;
};
_sets.splice(_local2, 1);
}
public function get sprite():Sprite{
if (_sprite != null){
return (_sprite);
};
if (APEngine.container == null){
throw (new Error("The container property of the APEngine class has not been set"));
};
_sprite = new Sprite();
APEngine.container.addChild(_sprite);
return (_sprite);
}
public function getSets(_arg1:Number=-1):Array{
var _local2:Array;
var _local3:Number;
if (_sets == null){
return (new Array());
};
if ((((_arg1 == -1)) || (((!((_arg1 == -1))) && ((_sets.indexOf(_arg1) == -1)))))){
return (_sets);
};
_local2 = new Array();
_local3 = 0;
while (_local3 < _sets.length) {
if (_sets[_local3] != _arg1){
_local2.push(_sets[_local3]);
};
_local3++;
};
return (_local2);
}
public function paint():void{
}
public function set visible(_arg1:Boolean):void{
_visible = _arg1;
sprite.visible = _arg1;
}
public function setStyle(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1, _arg4:uint=0xFFFFFF, _arg5:Number=1):void{
setLine(_arg1, _arg2, _arg3);
setFill(_arg4, _arg5);
}
public function get visible():Boolean{
return (_visible);
}
public function isInSet(_arg1):Boolean{
if (_sets == null){
return (false);
};
if (_sets.indexOf(_arg1) != -1){
return (true);
};
return (false);
}
public function setLine(_arg1:Number=0, _arg2:uint=0, _arg3:Number=1):void{
lineThickness = _arg1;
lineColor = _arg2;
lineAlpha = _arg3;
}
public function numSets():Number{
if (_sets == null){
return (0);
};
return (_sets.length);
}
final public function set alwaysRepaint(_arg1:Boolean):void{
_alwaysRepaint = _arg1;
}
public function select(_arg1:uint=0xFF0000, _arg2:Number=6, _arg3:Number=2):void{
var _local4:Array;
if (_selected){
return;
};
if (graphicsLayer != null){
this.oldFilters = graphicsLayer.filters;
} else {
this.oldFilters = sprite.filters;
};
_local4 = new Array(new GlowFilter(_arg1, 1, _arg2, _arg2, _arg3));
if (graphicsLayer != null){
graphicsLayer.filters = _local4;
} else {
sprite.filters = _local4;
};
_selected = true;
}
}
}//package org.cove.ape
Section 262
//AbstractParticle (org.cove.ape.AbstractParticle)
package org.cove.ape {
import flash.display.*;
import flash.utils.*;
public class AbstractParticle extends AbstractItem {
private var forces:Vector;
private var _y:Number;// = 0
var curr:Vector;
var prev:Vector;
private var collision:Collision;
private var _invMass:Number;
private var _collisionDetected:Boolean;// = false
private var _friction:Number;
private var _multisample:int;
var samp:Vector;
private var _fixed:Boolean;
private var _center:Vector;
private var _collidable:Boolean;
private var _kfr:Number;
var interval:Interval;
private var _mass:Number;
private var temp:Vector;
private var _x:Number;// = 0
public function AbstractParticle(_arg1:Number, _arg2:Number, _arg3:Boolean, _arg4:Number, _arg5:Number, _arg6:Number){
_x = 0;
_y = 0;
_collisionDetected = false;
super();
if (getQualifiedClassName(this) == "org.cove.ape::AbstractParticle"){
throw (new ArgumentError("AbstractParticle can't be instantiated directly"));
};
interval = new Interval(0, 0);
curr = new Vector(_arg1, _arg2);
prev = new Vector(_arg1, _arg2);
samp = new Vector();
temp = new Vector();
fixed = _arg3;
forces = new Vector();
collision = new Collision(new Vector(), new Vector());
collidable = true;
this.mass = _arg4;
this.elasticity = _arg5;
this.friction = _arg6;
setStyle();
_center = new Vector();
_multisample = 0;
}
public function get px():Number{
return (curr.x);
}
public function get py():Number{
return (curr.y);
}
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 set px(_arg1:Number):void{
curr.x = _arg1;
prev.x = _arg1;
}
public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
displayObject = _arg1;
displayObjectRotation = _arg4;
displayObjectOffset = new Vector(_arg2, _arg3);
}
public function get multisample():int{
return (_multisample);
}
public function get position():Vector{
return (new Vector(curr.x, curr.y));
}
public function addMasslessForce(_arg1:Vector):void{
forces.plusEquals(_arg1);
}
public function set multisample(_arg1:int):void{
_multisample = _arg1;
}
public function set position(_arg1:Vector):void{
curr.copy(_arg1);
prev.copy(_arg1);
}
public function get center():Vector{
_center.setTo(px, py);
return (_center);
}
public function set elasticity(_arg1:Number):void{
_kfr = _arg1;
}
public function get fixed():Boolean{
return (_fixed);
}
public function get x():Number{
return (_x);
}
function get invMass():Number{
return ((fixed) ? 0 : _invMass);
}
public function get y():Number{
return (_y);
}
function initDisplay():void{
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
sprite.addChild(displayObject);
}
function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
curr.plusEquals(_arg1);
velocity = _arg2;
this.collisionDetected = true;
}
public function set collisionDetected(_arg1:Boolean):void{
_collisionDetected = _arg1;
}
public function get elasticity():Number{
return (_kfr);
}
public function set velocity(_arg1:Vector):void{
prev = curr.minus(_arg1);
}
public function setStartCoordinates(_arg1:Number, _arg2:Number):void{
_x = _arg1;
_y = _arg2;
}
public function set collidable(_arg1:Boolean):void{
_collidable = _arg1;
}
public 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 addForce(_arg1:Vector):void{
forces.plusEquals(_arg1.mult(invMass));
}
public function get collisionDetected():Boolean{
return (_collisionDetected);
}
public function get velocity():Vector{
return (curr.minus(prev));
}
public function get collidable():Boolean{
return (_collidable);
}
public function restoreStartCoordinates():void{
this.px = _x;
this.py = _y;
}
public function set mass(_arg1:Number):void{
if (_arg1 <= 0){
throw (new ArgumentError("mass may not be set <= 0"));
};
_mass = _arg1;
_invMass = (1 / _mass);
}
public function get mass():Number{
return (_mass);
}
public function set fixed(_arg1:Boolean):void{
_fixed = _arg1;
}
public function get friction():Number{
return (_friction);
}
public function set friction(_arg1:Number):void{
if ((((_arg1 < 0)) || ((_arg1 > 1)))){
throw (new ArgumentError("Legal friction must be >= 0 and <=1"));
};
_friction = _arg1;
}
}
}//package org.cove.ape
Section 263
//APEngine (org.cove.ape.APEngine)
package org.cove.ape {
import flash.display.*;
import flash.filters.*;
public final class APEngine {
private static var _container:DisplayObjectContainer;
private static var _damping:Number;
private static var _constraintCollisionCycles:int;
private static var groups:Array;
static var masslessForce:Vector;
private static var _constraintCycles:int;
static var force:Vector;
private static var timeStep:Number;
private static var numGroups:int;
public static function get container():DisplayObjectContainer{
return (_container);
}
public static function get constraintCollisionCycles():int{
return (_constraintCollisionCycles);
}
public static function set damping(_arg1:Number):void{
_damping = _arg1;
}
public static function step():void{
var _local1:int;
var _local2:int;
integrate();
_local1 = 0;
while (_local1 < _constraintCycles) {
satisfyConstraints();
_local1++;
};
_local2 = 0;
while (_local2 < _constraintCollisionCycles) {
satisfyConstraints();
checkCollisions();
_local2++;
};
}
public static function init(_arg1:Number=0.25):void{
timeStep = (_arg1 * _arg1);
numGroups = 0;
groups = new Array();
force = new Vector(0, 0);
masslessForce = new Vector(0, 0);
damping = 1;
_constraintCycles = 0;
_constraintCollisionCycles = 1;
}
public static function get constraintCycles():int{
return (_constraintCycles);
}
public static function set constraintCollisionCycles(_arg1:int):void{
_constraintCollisionCycles = _arg1;
}
public static function set constraintCycles(_arg1:int):void{
_constraintCycles = _arg1;
}
public static function resetSelection(){
var _local1:Number;
var _local2:Number;
_local1 = 0;
while (_local1 < groups.length) {
_local2 = 0;
while (_local2 < (groups[_local1] as Group).particles.length) {
((groups[_local1] as Group).particles[_local2] as AbstractParticle).sprite.filters = new Array();
_local2++;
};
_local2 = 0;
while (_local2 < (groups[_local1] as Group).constraints.length) {
((groups[_local1] as Group).constraints[_local2] as AbstractConstraint).sprite.filters = new Array();
_local2++;
};
_local1++;
};
}
public static function addForce(_arg1:Vector):void{
force.plusEquals(_arg1);
}
public static function get damping():Number{
return (_damping);
}
public static function removeGroupExtended(_arg1:Group):void{
var _local2:int;
var _local3:Array;
var _local4:Number;
_local2 = groups.indexOf(_arg1);
if (_local2 == -1){
return;
};
groups.splice(_local2, 1);
_arg1.isParented = false;
numGroups--;
while (_arg1.constraints.length > 0) {
_arg1.removeConstraint(_arg1.constraints[0]);
};
_local3 = new Array();
_local4 = 0;
while (_local4 < _arg1.particles.length) {
if (getGroupsByParticle(_arg1.particles[_local4], _arg1).length == 0){
_local3.push(_arg1.particles[_local4]);
};
_local4++;
};
_local4 = 0;
while (_local4 < _local3.length) {
_arg1.removeParticle(_local3[_local4]);
_local4++;
};
}
public static function set container(_arg1:DisplayObjectContainer):void{
_container = _arg1;
}
public static function addGroup(_arg1:Group):void{
groups.push(_arg1);
_arg1.isParented = true;
numGroups++;
_arg1.init();
}
public static function getGroupsByParticle(_arg1:AbstractParticle, _arg2:Group=null):Array{
var _local3:Array;
var _local4:Number;
var _local5:Number;
_local3 = new Array();
_local4 = 0;
while (_local4 < numGroups) {
_local5 = 0;
for (;_local5 < (groups[_local4] as Group).particles.length;_local5++) {
if ((groups[_local4] as Group).particles[_local5] == _arg1){
if ((((_local3.indexOf(groups[_local4]) == -1)) && (!((groups[_local4] == _arg2))))){
_local3.push(groups[_local4]);
continue;
};
};
};
_local4++;
};
return (_local3);
}
public static function removeGroup(_arg1:Group):void{
var _local2:int;
_local2 = groups.indexOf(_arg1);
if (_local2 == -1){
return;
};
groups.splice(_local2, 1);
_arg1.isParented = false;
numGroups--;
_arg1.cleanup();
}
public static function setSelection(_arg1:Array):void{
var _local2:Number;
resetSelection();
_local2 = 0;
while (_local2 < _arg1.length) {
(_arg1[_local2] as AbstractItem).sprite.filters = new Array(new GlowFilter());
_local2++;
};
}
public static function paint():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.paint();
_local1++;
};
}
public static function getParticlesUnderPoint(_arg1:Number, _arg2:Number, _arg3=0, _arg4:Boolean=false, _arg5:Boolean=false):Array{
var _local6:Array;
var _local7:Number;
var _local8:Number;
_local6 = new Array();
_local7 = 0;
while (_local7 < numGroups) {
_local8 = 0;
while (_local8 < (groups[_local7] as Group).particles.length) {
if (((groups[_local7] as Group).particles[_local8].sprite as Sprite).hitTestPoint(_arg1, _arg2, true)){
if (((((_arg5) && (((groups[_local7] as Group).particles[_local8] is CircleParticle)))) || (!(_arg5)))){
_local6.push((groups[_local7] as Group).particles[_local8]);
};
};
_local8++;
};
if (!_arg4){
_local8 = 0;
while (_local8 < (groups[_local7] as Group).constraints.length) {
if (((groups[_local7] as Group).constraints[_local8] as AbstractConstraint).sprite.hitTestPoint(_arg1, _arg2, true)){
_local6.push((groups[_local7] as Group).constraints[_local8]);
};
_local8++;
};
};
_local7++;
};
if (_local6.length > 0){
_local6.sortOn("childIndex", Array.DESCENDING);
if (_arg3 != 0){
if (_arg3 < _local6.length){
_local6.splice(_arg3);
};
};
};
return (_local6);
}
private static function checkCollisions():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.checkCollisions();
_local1++;
};
}
private static function integrate():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.integrate(timeStep);
_local1++;
};
}
private static function satisfyConstraints():void{
var _local1:int;
var _local2:Group;
_local1 = 0;
while (_local1 < numGroups) {
_local2 = groups[_local1];
_local2.satisfyConstraints(true);
_local1++;
};
}
public static function getGroupsUnderPoint(_arg1:Number, _arg2:Number):Array{
var _local3:Array;
var _local4:Number;
var _local5:Number;
_local3 = new Array();
_local4 = 0;
while (_local4 < numGroups) {
_local5 = 0;
for (;_local5 < (groups[_local4] as Group).particles.length;_local5++) {
if (((groups[_local4] as Group).particles[_local5].sprite as Sprite).hitTestPoint(_arg1, _arg2, true)){
if (_local3.indexOf(groups[_local4]) == -1){
_local3.push(groups[_local4]);
continue;
};
};
};
_local5 = 0;
for (;_local5 < (groups[_local4] as Group).constraints.length;_local5++) {
if (((groups[_local4] as Group).constraints[_local5] as AbstractConstraint).sprite.hitTestPoint(_arg1, _arg2, true)){
if (_local3.indexOf(groups[_local4]) == -1){
_local3.push(groups[_local4]);
continue;
};
};
};
_local4++;
};
return (_local3);
}
public static function addMasslessForce(_arg1:Vector):void{
masslessForce.plusEquals(_arg1);
}
}
}//package org.cove.ape
Section 264
//CircleParticle (org.cove.ape.CircleParticle)
package org.cove.ape {
import flash.display.*;
public class CircleParticle extends AbstractParticle {
private var _radius:Number;
public var subParticle:Boolean;
public function CircleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=0.3, _arg7:Number=0, _arg8:Sprite=null){
this.graphicsLayer = _arg8;
super(_arg1, _arg2, _arg4, _arg5, _arg6, _arg7);
_radius = _arg3;
subParticle = false;
if (_arg8 != null){
sprite.visible = false;
this.graphicsLayer.x = _arg1;
this.graphicsLayer.y = _arg2;
};
}
function getIntervalY():Interval{
interval.min = (curr.y - _radius);
interval.max = (curr.y + _radius);
return (interval);
}
override public function init():void{
cleanup(false);
if (displayObject != null){
initDisplay();
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginFill(fillColor, fillAlpha);
sprite.graphics.drawCircle(0, 0, radius);
sprite.graphics.endFill();
};
paint();
}
public function get radius():Number{
return (_radius);
}
public function set radius(_arg1:Number):void{
_radius = _arg1;
}
function getProjection(_arg1:Vector):Interval{
var _local2:Number;
_local2 = samp.dot(_arg1);
interval.min = (_local2 - _radius);
interval.max = (_local2 + _radius);
return (interval);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
if (graphicsLayer != null){
graphicsLayer.x = curr.x;
graphicsLayer.y = curr.y;
};
}
function getIntervalX():Interval{
interval.min = (curr.x - _radius);
interval.max = (curr.x + _radius);
return (interval);
}
}
}//package org.cove.ape
Section 265
//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 266
//CollisionDetector (org.cove.ape.CollisionDetector)
package org.cove.ape {
import org.cove.ape.*;
final class CollisionDetector {
private static function testOBBvsCircle(_arg1:RectangleParticle, _arg2:CircleParticle):Boolean{
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 (false);
};
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.samp, _arg1);
_local3 = _local10.minus(_arg2.samp);
_local11 = _local3.magnitude();
_local4 = (_local7 - _local11);
if (_local4 > 0){
_local3.divEquals(_local11);
} else {
return (false);
};
};
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local3, _local4);
return (true);
}
static function test(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
if (((_arg1.fixed) && (_arg2.fixed))){
return;
};
if ((((_arg1.multisample == 0)) && ((_arg2.multisample == 0)))){
normVsNorm(_arg1, _arg2);
} else {
if ((((_arg1.multisample > 0)) && ((_arg2.multisample == 0)))){
sampVsNorm(_arg1, _arg2);
} else {
if ((((_arg2.multisample > 0)) && ((_arg1.multisample == 0)))){
sampVsNorm(_arg2, _arg1);
} else {
if (_arg1.multisample == _arg2.multisample){
sampVsSamp(_arg1, _arg2);
} else {
normVsNorm(_arg1, _arg2);
};
};
};
};
}
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 normVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
_arg1.samp.copy(_arg1.curr);
_arg2.samp.copy(_arg2.curr);
testTypes(_arg1, _arg2);
}
private static function testCirclevsCircle(_arg1:CircleParticle, _arg2:CircleParticle):Boolean{
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 (false);
};
_local4 = testIntervals(_arg1.getIntervalY(), _arg2.getIntervalY());
if (_local4 == 0){
return (false);
};
_local5 = _arg1.samp.minus(_arg2.samp);
_local6 = _local5.magnitude();
_local7 = ((_arg1.radius + _arg2.radius) - _local6);
if (_local7 > 0){
_local5.divEquals(_local6);
CollisionResolver.resolveParticleParticle(_arg1, _arg2, _local5, _local7);
return (true);
};
return (false);
}
private static function testTypes(_arg1:AbstractParticle, _arg2:AbstractParticle):Boolean{
if ((((_arg1 is RectangleParticle)) && ((_arg2 is RectangleParticle)))){
return (testOBBvsOBB((_arg1 as RectangleParticle), (_arg2 as RectangleParticle)));
};
if ((((_arg1 is CircleParticle)) && ((_arg2 is CircleParticle)))){
return (testCirclevsCircle((_arg1 as CircleParticle), (_arg2 as CircleParticle)));
};
if ((((_arg1 is RectangleParticle)) && ((_arg2 is CircleParticle)))){
return (testOBBvsCircle((_arg1 as RectangleParticle), (_arg2 as CircleParticle)));
};
if ((((_arg1 is CircleParticle)) && ((_arg2 is RectangleParticle)))){
return (testOBBvsCircle((_arg2 as RectangleParticle), (_arg1 as CircleParticle)));
};
return (false);
}
private static function sampVsNorm(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
var _local3:Number;
var _local4:Number;
var _local5:int;
_local3 = (1 / (_arg1.multisample + 1));
_local4 = _local3;
_arg2.samp.copy(_arg2.curr);
_local5 = 0;
while (_local5 <= _arg1.multisample) {
_arg1.samp.setTo((_arg1.prev.x + (_local4 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local4 * (_arg1.curr.y - _arg1.prev.y))));
if (testTypes(_arg1, _arg2)){
return;
};
_local4 = (_local4 + _local3);
_local5++;
};
}
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.samp);
_local4 = new Vector(_arg2.samp.x, _arg2.samp.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):Boolean{
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 (false);
};
_local8 = _arg2.axes[_local5];
_local9 = testIntervals(_arg1.getProjection(_local8), _arg2.getProjection(_local8));
if (_local9 == 0){
return (false);
};
_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);
return (true);
}
private static function sampVsSamp(_arg1:AbstractParticle, _arg2:AbstractParticle):void{
var _local3:Number;
var _local4:Number;
var _local5:int;
_local3 = (1 / (_arg1.multisample + 1));
_local4 = _local3;
_local5 = 0;
while (_local5 <= _arg1.multisample) {
_arg1.samp.setTo((_arg1.prev.x + (_local4 * (_arg1.curr.x - _arg1.prev.x))), (_arg1.prev.y + (_local4 * (_arg1.curr.y - _arg1.prev.y))));
_arg2.samp.setTo((_arg2.prev.x + (_local4 * (_arg2.curr.x - _arg2.prev.x))), (_arg2.prev.y + (_local4 * (_arg2.curr.y - _arg2.prev.y))));
if (testTypes(_arg1, _arg2)){
return;
};
_local4 = (_local4 + _local3);
_local5++;
};
}
}
}//package org.cove.ape
Section 267
//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:Collision;
var _local10:Collision;
var _local11:Vector;
var _local12:Vector;
var _local13:Vector;
var _local14:Vector;
_arg1.curr.copy(_arg1.samp);
_arg2.curr.copy(_arg2.samp);
_local5 = _arg3.mult(_arg4);
_local6 = (_arg1.elasticity + _arg2.elasticity);
_local7 = (_arg1.invMass + _arg2.invMass);
_local8 = clamp((1 - (_arg1.friction + _arg2.friction)), 0, 1);
_local9 = _arg1.getComponents(_arg3);
_local10 = _arg2.getComponents(_arg3);
_local11 = _local10.vn.mult(((_local6 + 1) * _arg1.invMass)).plus(_local9.vn.mult((_arg2.invMass - (_local6 * _arg1.invMass)))).divEquals(_local7);
_local12 = _local9.vn.mult(((_local6 + 1) * _arg2.invMass)).plus(_local10.vn.mult((_arg1.invMass - (_local6 * _arg2.invMass)))).divEquals(_local7);
_local9.vt.multEquals(_local8);
_local10.vt.multEquals(_local8);
_local13 = _local5.mult((_arg1.invMass / _local7));
_local14 = _local5.mult((-(_arg2.invMass) / _local7));
_local11.plusEquals(_local9.vt);
_local12.plusEquals(_local10.vt);
if (!_arg1.fixed){
_arg1.resolveCollision(_local13, _local11, _arg3, _arg4, -1, _arg2);
};
if (!_arg2.fixed){
_arg2.resolveCollision(_local14, _local12, _arg3, _arg4, 1, _arg1);
};
}
static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 > _arg3){
return (_arg3);
};
if (_arg1 < _arg2){
return (_arg2);
};
return (_arg1);
}
}
}//package org.cove.ape
Section 268
//Composite (org.cove.ape.Composite)
package org.cove.ape {
public class Composite extends AbstractCollection {
private var delta:Vector;
public function Composite(){
delta = new Vector();
}
public function set fixed(_arg1:Boolean):void{
var _local2:int;
_local2 = 0;
while (_local2 < particles.length) {
particles[_local2].fixed = _arg1;
_local2++;
};
}
private function getRelativeAngle(_arg1:Vector, _arg2:Vector):Number{
delta.setTo((_arg2.x - _arg1.x), (_arg2.y - _arg1.y));
return (Math.atan2(delta.y, delta.x));
}
public function rotateByRadian(_arg1:Number, _arg2:Vector):void{
var _local3:AbstractParticle;
var _local4:Array;
var _local5:int;
var _local6:int;
var _local7:Number;
var _local8:Number;
_local4 = particles;
_local5 = _local4.length;
_local6 = 0;
while (_local6 < _local5) {
_local3 = _local4[_local6];
_local7 = _local3.center.distance(_arg2);
_local8 = (getRelativeAngle(_arg2, _local3.center) + _arg1);
_local3.px = ((Math.cos(_local8) * _local7) + _arg2.x);
_local3.py = ((Math.sin(_local8) * _local7) + _arg2.y);
_local6++;
};
}
public function rotateByAngle(_arg1:Number, _arg2:Vector):void{
var _local3:Number;
_local3 = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY);
rotateByRadian(_local3, _arg2);
}
public function get fixed():Boolean{
var _local1:int;
_local1 = 0;
while (_local1 < particles.length) {
if (!particles[_local1].fixed){
return (false);
};
_local1++;
};
return (true);
}
}
}//package org.cove.ape
Section 269
//Group (org.cove.ape.Group)
package org.cove.ape {
public class Group extends AbstractCollection {
private var _type:Number;
private var _collideInternal:Boolean;
private var _collisionList:Array;
private var _composites:Array;
public function Group(_arg1:Boolean=false){
_composites = new Array();
_collisionList = new Array();
this.collideInternal = _arg1;
_type = 0;
}
public function removeCollidable(_arg1:Group):void{
var _local2:int;
_local2 = collisionList.indexOf(_arg1);
if (_local2 == -1){
return;
};
collisionList.splice(_local2, 1);
}
override public function init():void{
var _local1:int;
super.init();
_local1 = 0;
while (_local1 < composites.length) {
composites[_local1].init();
_local1++;
};
}
public function get collideInternal():Boolean{
return (_collideInternal);
}
public function addCollidableList(_arg1:Array):void{
var _local2:int;
var _local3:Group;
_local2 = 0;
while (_local2 < _arg1.length) {
_local3 = _arg1[_local2];
collisionList.push(_local3);
_local2++;
};
}
override public function cleanup():void{
var _local1:int;
super.cleanup();
_local1 = 0;
while (_local1 < composites.length) {
composites[_local1].cleanup();
_local1++;
};
}
function checkCollisions():void{
var _local1:int;
var _local2:int;
var _local3:Group;
if (collideInternal){
checkCollisionGroupInternal();
};
_local1 = collisionList.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = collisionList[_local2];
checkCollisionVsGroup(_local3);
_local2++;
};
}
override public function resetCoordinates():void{
var _local1:Number;
super.resetCoordinates();
_local1 = 0;
while (_local1 < composites.length) {
composites[_local1].resetCoordinates();
_local1++;
};
}
override function integrate(_arg1:Number):void{
var _local2:int;
var _local3:int;
var _local4:Composite;
super.integrate(_arg1);
_local2 = _composites.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _composites[_local3];
_local4.integrate(_arg1);
_local3++;
};
}
public function get type():Number{
return (_type);
}
public function set collideInternal(_arg1:Boolean):void{
_collideInternal = _arg1;
}
public function removeCompositeExtended(_arg1:Composite):void{
var _local2:int;
var _local3:Array;
var _local4:Number;
_local2 = composites.indexOf(_arg1);
if (_local2 == -1){
return;
};
composites.splice(_local2, 1);
_arg1.isParented = false;
while (_arg1.constraints.length > 0) {
_arg1.removeConstraint(_arg1.constraints[0]);
};
_local3 = new Array();
_local4 = 0;
while (_local4 < _arg1.particles.length) {
if (((!(_arg1.particles[_local4].fixed)) && ((getCompositesByParticle(_arg1.particles[_local4], _arg1).length == 0)))){
_local3.push(_arg1.particles[_local4]);
};
_local4++;
};
_local4 = 0;
while (_local4 < _local3.length) {
_arg1.removeParticle(_local3[_local4]);
_local4++;
};
}
public function get composites():Array{
return (_composites);
}
override function satisfyConstraints(_arg1:Boolean=false):void{
var _local2:int;
var _local3:int;
var _local4:Composite;
super.satisfyConstraints(_arg1);
_local2 = _composites.length;
_local3 = 0;
while (_local3 < _local2) {
_local4 = _composites[_local3];
_local4.satisfyConstraints(_arg1);
_local3++;
};
}
private function checkCollisionVsGroup(_arg1:Group):void{
var _local2:int;
var _local3:int;
var _local4:int;
var _local5:Composite;
var _local6:int;
var _local7:Composite;
checkCollisionsVsCollection(_arg1);
_local2 = _composites.length;
_local3 = _arg1.composites.length;
_local4 = 0;
while (_local4 < _local2) {
_local5 = _composites[_local4];
_local5.checkCollisionsVsCollection(_arg1);
_local6 = 0;
while (_local6 < _local3) {
_local7 = _arg1.composites[_local6];
_local5.checkCollisionsVsCollection(_local7);
_local6++;
};
_local4++;
};
_local6 = 0;
while (_local6 < _local3) {
_local7 = _arg1.composites[_local6];
checkCollisionsVsCollection(_local7);
_local6++;
};
}
public function removeCompositeUnderPoint(_arg1:Number, _arg2:Number):void{
var _local3:Number;
_local3 = 0;
while (_local3 < composites.length) {
if (composites[_local3].haveObjectUnderPoint(_arg1, _arg2)){
removeCompositeExtended(composites[_local3]);
};
_local3++;
};
}
public function getCompositesByParticle(_arg1:AbstractParticle, _arg2:Composite):Array{
var _local3:Array;
var _local4:Number;
_local3 = new Array();
_local4 = 0;
while (_local4 < composites.length) {
if (((!((composites[_local4] == _arg2))) && (composites[_local4].haveParticle(_arg1)))){
_local3.push(composites[_local4]);
};
_local4++;
};
return (_local3);
}
public function removeComposite(_arg1:Composite):void{
var _local2:int;
_local2 = composites.indexOf(_arg1);
if (_local2 == -1){
return;
};
composites.splice(_local2, 1);
_arg1.isParented = false;
_arg1.cleanup();
}
override public function paint():void{
var _local1:int;
var _local2:int;
var _local3:Composite;
super.paint();
_local1 = _composites.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.paint();
_local2++;
};
}
public function addComposite(_arg1:Composite):void{
composites.push(_arg1);
_arg1.isParented = true;
if (isParented){
_arg1.init();
};
}
public function addCollidable(_arg1:Group):void{
collisionList.push(_arg1);
}
override public function getAll():Array{
return (particles.concat(constraints).concat(composites));
}
public function get collisionList():Array{
return (_collisionList);
}
public function set type(_arg1:Number):void{
_type = _arg1;
}
private function checkCollisionGroupInternal():void{
var _local1:int;
var _local2:int;
var _local3:Composite;
var _local4:int;
var _local5:Composite;
checkInternalCollisions();
_local1 = _composites.length;
_local2 = 0;
while (_local2 < _local1) {
_local3 = _composites[_local2];
_local3.checkCollisionsVsCollection(this);
_local4 = (_local2 + 1);
while (_local4 < _local1) {
_local5 = _composites[_local4];
_local3.checkCollisionsVsCollection(_local5);
_local4++;
};
_local2++;
};
}
}
}//package org.cove.ape
Section 270
//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 271
//MathUtil (org.cove.ape.MathUtil)
package org.cove.ape {
final class MathUtil {
static var ONE_EIGHTY_OVER_PI:Number = 57.2957795130823;
static var PI_OVER_ONE_EIGHTY:Number = 0.0174532925199433;
static function clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
if (_arg1 < _arg2){
return (_arg2);
};
if (_arg1 > _arg3){
return (_arg3);
};
return (_arg1);
}
static function sign(_arg1:Number):int{
if (_arg1 < 0){
return (-1);
};
return (1);
}
}
}//package org.cove.ape
Section 272
//RectangleParticle (org.cove.ape.RectangleParticle)
package org.cove.ape {
import vis.*;
public class RectangleParticle extends AbstractParticle {
private var _axes:Array;
private var _radian:Number;
private var _extents:Array;
public function RectangleParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Boolean=false, _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));
radian = _arg5;
}
override public function init():void{
var _local1:Number;
var _local2:Number;
cleanup();
if (displayObject != null){
initDisplay();
} else {
_local1 = (extents[0] * 2);
_local2 = (extents[1] * 2);
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginBitmapFill(new GroundTexture(), null, true);
sprite.graphics.drawRect((-(_local1) / 2), (-(_local2) / 2), _local1, _local2);
sprite.graphics.endFill();
};
paint();
}
function get axes():Array{
return (_axes);
}
public function get height():Number{
return ((_extents[1] * 2));
}
function get extents():Array{
return (_extents);
}
public function set angle(_arg1:Number):void{
radian = (_arg1 * MathUtil.PI_OVER_ONE_EIGHTY);
}
public function set width(_arg1:Number):void{
_extents[0] = (_arg1 / 2);
}
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 = samp.dot(_arg1);
interval.min = (_local3 - _local2);
interval.max = (_local3 + _local2);
return (interval);
}
public function get radian():Number{
return (_radian);
}
public function get width():Number{
return ((_extents[0] * 2));
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
public function set radian(_arg1:Number):void{
_radian = _arg1;
setAxes(_arg1);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
sprite.rotation = angle;
}
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;
}
public function set height(_arg1:Number):void{
_extents[1] = (_arg1 / 2);
}
}
}//package org.cove.ape
Section 273
//RimParticle (org.cove.ape.RimParticle)
package org.cove.ape {
import org.cove.ape.*;
class RimParticle {
private var maxTorque:Number;
var curr:Vector;
var prev:Vector;
private var av:Number;
private var wr:Number;
private var sp:Number;
function RimParticle(_arg1:Number, _arg2:Number){
curr = new Vector(_arg1, 0);
prev = new Vector(0, 0);
sp = 0;
av = 0;
maxTorque = _arg2;
wr = _arg1;
}
function update(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
sp = Math.max(-(maxTorque), Math.min(maxTorque, (sp + av)));
_local2 = -(curr.y);
_local3 = curr.x;
_local4 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
_local2 = (_local2 / _local4);
_local3 = (_local3 / _local4);
curr.x = (curr.x + (sp * _local2));
curr.y = (curr.y + (sp * _local3));
_local5 = prev.x;
_local6 = prev.y;
_local7 = (prev.x = curr.x);
_local8 = (prev.y = curr.y);
curr.x = (curr.x + (APEngine.damping * (_local7 - _local5)));
curr.y = (curr.y + (APEngine.damping * (_local8 - _local6)));
_local9 = Math.sqrt(((curr.x * curr.x) + (curr.y * curr.y)));
_local10 = ((_local9 - wr) / _local9);
curr.x = (curr.x - (curr.x * _local10));
curr.y = (curr.y - (curr.y * _local10));
}
function set speed(_arg1:Number):void{
sp = _arg1;
}
function get angularVelocity():Number{
return (av);
}
function set angularVelocity(_arg1:Number):void{
av = _arg1;
}
function get speed():Number{
return (sp);
}
}
}//package org.cove.ape
Section 274
//SpringConstraint (org.cove.ape.SpringConstraint)
package org.cove.ape {
import flash.display.*;
import flash.geom.*;
import flash.events.*;
public class SpringConstraint extends AbstractConstraint {
private var _restLength:Number;
private var _collidable:Boolean;
private var _tearable:Boolean;
public var material:Number;// = 0
private var p1:AbstractParticle;
public var materialMultiplier:Number;// = 1
private var p2:AbstractParticle;
private var _stress:Boolean;
private var _scp:SpringConstraintParticle;
public var overloadingCounter:int;// = 0
public function SpringConstraint(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:Number=0.5, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=1, _arg7:Boolean=false, _arg8:Sprite=null){
materialMultiplier = 1;
material = 0;
overloadingCounter = 0;
super(_arg3);
this.graphicsLayer = _arg8;
if (_arg8 != null){
sprite.visible = false;
};
this.p1 = _arg1;
this.p2 = _arg2;
checkParticlesLocation();
_restLength = currLength;
setCollidable(_arg4, _arg5, _arg6, _arg7);
materialMultiplier = 1;
tearable = false;
stress = false;
}
public function set fixedEndLimit(_arg1:Number):void{
if (scp == null){
return;
};
scp.fixedEndLimit = _arg1;
}
public function get particleB():AbstractParticle{
return (p2);
}
override public function init():void{
cleanup(false);
if (collidable){
scp.init();
} else {
if (displayObject != null){
initDisplay();
};
};
paint();
}
function initDisplay():void{
if (collidable){
scp.initDisplay();
} else {
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
sprite.addChild(displayObject);
if (graphicsLayer != null){
graphicsLayer.x = displayObjectOffset.x;
graphicsLayer.y = displayObjectOffset.y;
graphicsLayer.rotation = displayObjectRotation;
};
};
}
public function set rectScale(_arg1:Number):void{
if (scp == null){
return;
};
scp.rectScale = _arg1;
}
public function set stress(_arg1:Boolean):void{
if (_arg1){
if (_stress){
return;
};
_stress = true;
if (!sprite.hasEventListener(Event.ENTER_FRAME)){
sprite.addEventListener(Event.ENTER_FRAME, currStress);
};
} else {
if (!_stress){
return;
};
_stress = false;
if (sprite.hasEventListener(Event.ENTER_FRAME)){
sprite.removeEventListener(Event.ENTER_FRAME, currStress);
};
hideStress();
};
}
public function get particleA():AbstractParticle{
return (p1);
}
public function hideStress():void{
if (!graphicsLayer){
sprite.transform.colorTransform = new ColorTransform();
} else {
graphicsLayer.transform.colorTransform = new ColorTransform();
};
}
public function get rectHeight():Number{
return (scp.rectHeight);
}
private function checkParticlesLocation():void{
if ((((p1.curr.x == p2.curr.x)) && ((p1.curr.y == p2.curr.y)))){
p2.curr.x = (p2.curr.x + 0.0001);
};
}
public function setDisplay(_arg1:DisplayObject, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0):void{
if (collidable){
scp.setDisplay(_arg1, _arg2, _arg3, _arg4);
} else {
displayObject = _arg1;
displayObjectRotation = _arg4;
displayObjectOffset = new Vector(_arg2, _arg3);
};
}
public function isConnectedTo(_arg1:AbstractParticle):Boolean{
return ((((_arg1 == p1)) || ((_arg1 == p2))));
}
function get scp():SpringConstraintParticle{
return (_scp);
}
public function get radian():Number{
var _local1:Vector;
_local1 = delta;
return (Math.atan2(_local1.y, _local1.x));
}
public function set restLength(_arg1:Number):void{
if (_arg1 <= 0){
throw (new ArgumentError("restLength must be greater than 0"));
};
_restLength = _arg1;
}
public function get currLength():Number{
return (p1.curr.distance(p2.curr));
}
public function get fixedEndLimit():Number{
return (scp.fixedEndLimit);
}
public function get tearable():Boolean{
return (_tearable);
}
public function get stress():Boolean{
return (_stress);
}
public function currStress(_arg1:Event=null):void{
var _local2:Number;
var _local3:ColorTransform;
var _local4:Number;
var _local5:Number;
_local2 = (currLength / restLength);
if (_local2 > 1){
_local4 = (Math.abs((_local2 - 1)) / materialMultiplier);
_local5 = (1 - _local4);
_local3 = new ColorTransform(_local5, _local5, _local5, 1, 0, 0, (_local4 * 0xFF), 0);
};
if (_local2 < 1){
_local4 = (Math.abs((1 - _local2)) / materialMultiplier);
_local5 = (1 - _local4);
_local3 = new ColorTransform(_local5, _local5, _local5, 1, (_local4 * 0xFF), 0, 0, 0);
};
if (_local3){
if (!graphicsLayer){
sprite.transform.colorTransform = _local3;
} else {
graphicsLayer.transform.colorTransform = _local3;
};
};
}
public function get rectScale():Number{
return (scp.rectScale);
}
function get delta():Vector{
return (p1.curr.minus(p2.curr));
}
public function get center():Vector{
return (p1.curr.plus(p2.curr).divEquals(2));
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
public function set rectHeight(_arg1:Number):void{
if (scp == null){
return;
};
scp.rectHeight = _arg1;
}
override public function paint():void{
var _local1:Vector;
var _local2:Number;
var _local3:Number;
if (collidable){
scp.paint();
} else {
if (displayObject != null){
_local1 = center;
sprite.x = _local1.x;
sprite.y = _local1.y;
sprite.rotation = angle;
if (graphicsLayer != null){
graphicsLayer.x = _local1.x;
graphicsLayer.y = _local1.y;
graphicsLayer.rotation = angle;
};
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.moveTo(p1.px, p1.py);
sprite.graphics.lineTo(p2.px, p2.py);
if (graphicsLayer != null){
_local2 = ((p1.px + p2.px) / 2);
_local3 = ((p1.py + p2.py) / 2);
graphicsLayer.x = _local2;
graphicsLayer.y = _local3;
graphicsLayer.rotation = angle;
};
};
};
}
public function setCollidable(_arg1:Boolean, _arg2:Number, _arg3:Number, _arg4:Boolean=false):void{
_collidable = _arg1;
_scp = null;
if (_collidable){
_scp = new SpringConstraintParticle(p1, p2, this, _arg2, _arg3, _arg4);
};
}
public function get restLength():Number{
return (_restLength);
}
override function resolve():void{
var _local1:Number;
var _local2:Number;
var _local3:Vector;
if (((p1.fixed) && (p2.fixed))){
return;
};
_local1 = currLength;
_local2 = ((_local1 - restLength) / (_local1 * (p1.invMass + p2.invMass)));
_local3 = delta.mult((_local2 * stiffness));
p1.curr.minusEquals(_local3.mult(p1.invMass));
p2.curr.plusEquals(_local3.mult(p2.invMass));
}
public function get collidable():Boolean{
return (_collidable);
}
public function get fixed():Boolean{
return (((p1.fixed) && (p2.fixed)));
}
public function set tearable(_arg1:Boolean):void{
_tearable = _arg1;
}
}
}//package org.cove.ape
Section 275
//SpringConstraintParticle (org.cove.ape.SpringConstraintParticle)
package org.cove.ape {
import flash.display.*;
import org.cove.ape.*;
class SpringConstraintParticle extends RectangleParticle {
private var _fixedEndLimit:Number;
private var _rectScale:Number;
private var rca:Vector;
private var rcb:Vector;
private var s:Number;
private var parent:SpringConstraint;
private var scaleToLength:Boolean;
private var p1:AbstractParticle;
private var p2:AbstractParticle;
private var lambda:Vector;
private var avgVelocity:Vector;
private var _rectHeight:Number;
function SpringConstraintParticle(_arg1:AbstractParticle, _arg2:AbstractParticle, _arg3:SpringConstraint, _arg4:Number, _arg5:Number, _arg6:Boolean){
super(0, 0, 0, 0, 0, false);
this.p1 = _arg1;
this.p2 = _arg2;
lambda = new Vector(0, 0);
avgVelocity = new Vector(0, 0);
parent = _arg3;
this.rectScale = _arg5;
this.rectHeight = _arg4;
this.scaleToLength = _arg6;
fixedEndLimit = 0;
rca = new Vector();
rcb = new Vector();
graphicsLayer = parent.graphicsLayer;
}
private function setCorners(_arg1:RectangleParticle, _arg2:int):void{
var _local3:Number;
var _local4:Number;
var _local5:Array;
var _local6:Array;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
_local3 = _arg1.curr.x;
_local4 = _arg1.curr.y;
_local5 = _arg1.axes;
_local6 = _arg1.extents;
_local7 = (_local5[0].x * _local6[0]);
_local8 = (_local5[0].y * _local6[0]);
_local9 = (_local5[1].x * _local6[1]);
_local10 = (_local5[1].y * _local6[1]);
_local11 = (_local7 - _local9);
_local12 = (_local8 - _local10);
_local13 = (_local7 + _local9);
_local14 = (_local8 + _local10);
if (_arg2 == 0){
rca.x = (_local3 - _local13);
rca.y = (_local4 - _local14);
rcb.x = (_local3 + _local11);
rcb.y = (_local4 + _local12);
} else {
if (_arg2 == 1){
rca.x = (_local3 + _local11);
rca.y = (_local4 + _local12);
rcb.x = (_local3 + _local13);
rcb.y = (_local4 + _local14);
} else {
if (_arg2 == 2){
rca.x = (_local3 + _local13);
rca.y = (_local4 + _local14);
rcb.x = (_local3 - _local11);
rcb.y = (_local4 - _local12);
} else {
if (_arg2 == 3){
rca.x = (_local3 - _local11);
rca.y = (_local4 - _local12);
rcb.x = (_local3 - _local13);
rcb.y = (_local4 - _local14);
};
};
};
};
}
override public function init():void{
var _local1:Sprite;
var _local2:Number;
var _local3:Number;
if (displayObject != null){
initDisplay();
} else {
_local1 = new Sprite();
parent.sprite.addChild(_local1);
_local1.name = "inner";
_local2 = (parent.currLength * rectScale);
_local3 = rectHeight;
_local1.graphics.clear();
_local1.graphics.lineStyle(parent.lineThickness, parent.lineColor, parent.lineAlpha);
_local1.graphics.beginFill(parent.fillColor, parent.fillAlpha);
_local1.graphics.drawRect((-(_local2) / 2), (-(_local3) / 2), _local2, _local3);
_local1.graphics.endFill();
};
paint();
}
function updatePosition():void{
var _local1:Vector;
_local1 = parent.center;
curr.setTo(_local1.x, _local1.y);
width = (scaleToLength) ? (parent.currLength * rectScale) : (parent.restLength * rectScale);
height = rectHeight;
radian = parent.radian;
}
private function closestPtSegmentSegment():Number{
var _local1:Vector;
var _local2:Vector;
var _local3:Vector;
var _local4:Vector;
var _local5:Vector;
var _local6:Vector;
var _local7:Vector;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Vector;
var _local16:Vector;
var _local17:Vector;
_local1 = p1.curr;
_local2 = p2.curr;
_local3 = rca;
_local4 = rcb;
_local5 = _local2.minus(_local1);
_local6 = _local4.minus(_local3);
_local7 = _local1.minus(_local3);
_local9 = _local5.dot(_local5);
_local10 = _local6.dot(_local6);
_local11 = _local6.dot(_local7);
_local12 = _local5.dot(_local7);
_local13 = _local5.dot(_local6);
_local14 = ((_local9 * _local10) - (_local13 * _local13));
if (_local14 != 0){
s = MathUtil.clamp((((_local13 * _local11) - (_local12 * _local10)) / _local14), 0, 1);
} else {
s = 0.5;
};
_local8 = (((_local13 * s) + _local11) / _local10);
if (_local8 < 0){
_local8 = 0;
s = MathUtil.clamp((-(_local12) / _local9), 0, 1);
} else {
if (_local8 > 0){
_local8 = 1;
s = MathUtil.clamp(((_local13 - _local12) / _local9), 0, 1);
};
};
_local15 = _local1.plus(_local5.mult(s));
_local16 = _local3.plus(_local6.mult(_local8));
_local17 = _local15.minus(_local16);
return (_local15.minus(_local16).dot(_local17));
}
function get rectHeight():Number{
return (_rectHeight);
}
function get fixedEndLimit():Number{
return (_fixedEndLimit);
}
private function closestParamPoint(_arg1:Vector):Number{
var _local2:Vector;
var _local3:Number;
_local2 = p2.curr.minus(p1.curr);
_local3 = (_local2.dot(_arg1.minus(p1.curr)) / _local2.dot(_local2));
return (MathUtil.clamp(_local3, 0, 1));
}
function set rectHeight(_arg1:Number):void{
_rectHeight = _arg1;
}
override public function paint():void{
var _local1:Vector;
var _local2:Sprite;
_local1 = parent.center;
_local2 = parent.sprite;
if (scaleToLength){
_local2.getChildByName("inner").width = (parent.currLength * rectScale);
} else {
if (displayObject != null){
_local2.getChildByName("inner").width = (parent.restLength * rectScale);
};
};
_local2.x = _local1.x;
_local2.y = _local1.y;
_local2.rotation = parent.angle;
if (graphicsLayer != null){
graphicsLayer.x = _local1.x;
graphicsLayer.y = _local1.y;
graphicsLayer.rotation = parent.angle;
};
}
private function getContactPointParam(_arg1:AbstractParticle):Number{
var _local2:Number;
var _local3:Number;
var _local4:Array;
var _local5:Number;
var _local6:int;
var _local7:Number;
if ((_arg1 is CircleParticle)){
_local2 = closestParamPoint(_arg1.curr);
} else {
if ((_arg1 is RectangleParticle)){
_local4 = new Array(4);
_local5 = Number.POSITIVE_INFINITY;
_local6 = 0;
while (_local6 < 4) {
setCorners((_arg1 as RectangleParticle), _local6);
_local7 = closestPtSegmentSegment();
if (_local7 < _local5){
_local5 = _local7;
_local3 = _local6;
_local4[_local6] = s;
};
_local6++;
};
_local2 = _local4[_local3];
};
};
return (_local2);
}
function set fixedEndLimit(_arg1:Number):void{
_fixedEndLimit = _arg1;
}
override function get invMass():Number{
if (((p1.fixed) && (p2.fixed))){
return (0);
};
return ((1 / ((p1.mass + p2.mass) / 2)));
}
override function initDisplay():void{
var _local1:Sprite;
displayObject.x = displayObjectOffset.x;
displayObject.y = displayObjectOffset.y;
displayObject.rotation = displayObjectRotation;
_local1 = new Sprite();
_local1.name = "inner";
_local1.addChild(displayObject);
parent.sprite.addChild(_local1);
if (graphicsLayer != null){
graphicsLayer.x = displayObjectOffset.x;
graphicsLayer.y = displayObjectOffset.y;
graphicsLayer.rotation = displayObjectRotation;
};
}
function set rectScale(_arg1:Number):void{
_rectScale = _arg1;
}
override function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:AbstractParticle;
_local7 = getContactPointParam(_arg6);
_local8 = (1 - _local7);
_local9 = _local7;
if (p1.fixed){
if (_local9 <= fixedEndLimit){
return;
};
lambda.setTo((_arg1.x / _local9), (_arg1.y / _local9));
p2.curr.plusEquals(lambda);
p2.velocity = _arg2;
} else {
if (p2.fixed){
if (_local8 <= fixedEndLimit){
return;
};
lambda.setTo((_arg1.x / _local8), (_arg1.y / _local8));
p1.curr.plusEquals(lambda);
p1.velocity = _arg2;
} else {
_local10 = ((_local8 * _local8) + (_local9 * _local9));
if (_local10 == 0){
return;
};
lambda.setTo((_arg1.x / _local10), (_arg1.y / _local10));
p1.curr.plusEquals(lambda.mult(_local8));
p2.curr.plusEquals(lambda.mult(_local9));
if (_local7 == 0.5){
p1.velocity = _arg2;
p2.velocity = _arg2;
} else {
_local11 = ((_local7)<0.5) ? p1 : p2;
_local11.velocity = _arg2;
};
};
};
}
override public function get elasticity():Number{
return (((p1.elasticity + p2.elasticity) / 2));
}
function get rectScale():Number{
return (_rectScale);
}
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 get mass():Number{
return (((p1.mass + p2.mass) / 2));
}
override public function get friction():Number{
return (((p1.friction + p2.friction) / 2));
}
}
}//package org.cove.ape
Section 276
//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=0, _arg2:Number=0){
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 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 277
//WheelParticle (org.cove.ape.WheelParticle)
package org.cove.ape {
import flash.display.*;
public class WheelParticle extends CircleParticle {
private var normSlip:Vector;
private var rp:RimParticle;
private var _traction:Number;
private var tan:Vector;
private var orientation:Vector;
public function WheelParticle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Number=1, _arg6:Number=0.3, _arg7:Number=0, _arg8:Number=1, _arg9:Sprite=null){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
tan = new Vector(0, 0);
normSlip = new Vector(0, 0);
rp = new RimParticle(_arg3, 2);
this.traction = _arg8;
orientation = new Vector();
}
override public function init():void{
cleanup();
if (displayObject != null){
initDisplay();
} else {
sprite.graphics.clear();
sprite.graphics.lineStyle(lineThickness, lineColor, lineAlpha);
sprite.graphics.beginFill(fillColor, fillAlpha);
sprite.graphics.drawCircle(0, 0, radius);
sprite.graphics.endFill();
sprite.graphics.moveTo(-(radius), 0);
sprite.graphics.lineTo(radius, 0);
sprite.graphics.moveTo(0, -(radius));
sprite.graphics.lineTo(0, radius);
};
paint();
}
public function get radian():Number{
orientation.setTo(rp.curr.x, rp.curr.y);
return ((Math.atan2(orientation.y, orientation.x) + Math.PI));
}
public function get traction():Number{
return ((1 - _traction));
}
public function get speed():Number{
return (rp.speed);
}
override public function paint():void{
sprite.x = curr.x;
sprite.y = curr.y;
sprite.rotation = angle;
}
public function set traction(_arg1:Number):void{
_traction = (1 - _arg1);
}
public function set speed(_arg1:Number):void{
rp.speed = _arg1;
}
override function resolveCollision(_arg1:Vector, _arg2:Vector, _arg3:Vector, _arg4:Number, _arg5:int, _arg6:AbstractParticle):void{
super.resolveCollision(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
resolve(_arg3.mult(MathUtil.sign((_arg4 * _arg5))));
}
public function set angularVelocity(_arg1:Number):void{
rp.angularVelocity = _arg1;
}
override public function update(_arg1:Number):void{
super.update(_arg1);
rp.update(_arg1);
}
public function get angle():Number{
return ((radian * MathUtil.ONE_EIGHTY_OVER_PI));
}
public function get angularVelocity():Number{
return (rp.angularVelocity);
}
private function resolve(_arg1:Vector):void{
var _local2:Vector;
var _local3:Vector;
var _local4:Number;
var _local5:Number;
tan.setTo(-(rp.curr.y), rp.curr.x);
tan = tan.normalize();
_local2 = tan.mult(rp.speed);
_local3 = velocity.plusEquals(_local2);
_local4 = _local3.cross(_arg1);
tan.multEquals(_local4);
rp.prev.copy(rp.curr.minus(tan));
_local5 = ((1 - _traction) * rp.speed);
normSlip.setTo((_local5 * _arg1.y), (_local5 * _arg1.x));
curr.plusEquals(normSlip);
rp.speed = (rp.speed * _traction);
}
}
}//package org.cove.ape
Section 278
//RectangleAdvanced (picaso.geom.RectangleAdvanced)
package picaso.geom {
import flash.geom.*;
public class RectangleAdvanced extends Rectangle {
public function RectangleAdvanced(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
super(_arg1, _arg2, _arg3, _arg4);
}
public function get topRight():Point{
return (new Point((x + width), y));
}
public function get bottomLeft():Point{
return (new Point(x, (y + height)));
}
}
}//package picaso.geom
Section 279
//SkinElementContainer (picaso.mlui.SkinElementContainer)
package picaso.mlui {
import flash.display.*;
import picaso.*;
import flash.utils.*;
public class SkinElementContainer extends SpriteAdvanced implements IMemorySafe {
private var _baseName:String;
private var _cacheAsBitmap:Boolean;// = false
public function SkinElementContainer(_arg1:String=null){
_cacheAsBitmap = false;
super();
this.baseName = _arg1;
}
public function get baseName():String{
return (_baseName);
}
override public function set cacheAsBitmap(_arg1:Boolean):void{
_cacheAsBitmap = _arg1;
this.getChildAt(0).cacheAsBitmap = _arg1;
}
override public function get cacheAsBitmap():Boolean{
return (_cacheAsBitmap);
}
public function set baseName(_arg1:String):void{
var obj:DisplayObject;
var v = _arg1;
_baseName = v;
if (this.numChildren > 0){
this.removeChildAt(0);
};
try {
obj = DisplayObject(new ((getDefinitionByName(_baseName) as Class)));
} catch(err:Error) {
trace(("[SkinElementHolder] Can't find definition for: " + _baseName));
obj = DisplayObject(new ((getDefinitionByName("MISSING_GFX") as Class)));
};
this.addChild(obj);
if ((obj is InteractiveObject)){
(obj as InteractiveObject).mouseEnabled = false;
};
if ((obj is DisplayObjectContainer)){
(obj as DisplayObjectContainer).mouseChildren = false;
};
obj.cacheAsBitmap = cacheAsBitmap;
}
}
}//package picaso.mlui
Section 280
//VolumeBar (picaso.templates.VolumeBar)
package picaso.templates {
import flash.display.*;
import flash.events.*;
import picaso.*;
import picaso.mlui.*;
public class VolumeBar extends SkinElementContainer implements IMemorySafe {
private var _slider:InteractiveObject;
private var _volume:Number;
private var _barBG:InteractiveObject;
private var _barGFX:DisplayObjectContainer;
private var _draging:Boolean;// = false
public static const CHANGE_VOLUME:String = "changeVolume";
public function VolumeBar(_arg1:String){
_draging = false;
super(_arg1);
this.volume = 0.75;
}
public function get volume():Number{
return (_volume);
}
function doStuff(_arg1:Event):void{
var _local2:Number;
if (_draging){
_local2 = MathUtils.bounds(_barGFX.mouseX, (_slider.width / 2), (_barBG.width - (_slider.width / 2)));
this.volume = (0.01 * Math.round(((100 * (_local2 - (_slider.width / 2))) / (_barBG.width - _slider.width))));
};
}
public function set volume(_arg1:Number):void{
_arg1 = MathUtils.bounds(_arg1, 0, 1);
if (_arg1 != _volume){
_volume = _arg1;
_slider.x = ((_slider.width / 2) + (_volume * (_barBG.width - _slider.width)));
dispatchEvent(new Event(CHANGE_VOLUME));
};
}
private function barBG_MouseDownHandler(_arg1:MouseEvent):void{
var _local2:Number;
_local2 = MathUtils.bounds(_barGFX.mouseX, (_slider.width / 2), (_barBG.width - (_slider.width / 2)));
this.volume = (0.01 * Math.round(((100 * (_local2 - (_slider.width / 2))) / (_barBG.width - _slider.width))));
beginDrag(_arg1);
}
function beginDrag(_arg1:MouseEvent):void{
_draging = true;
stage.addEventListener(MouseEvent.MOUSE_UP, endDrag, false, 0, true);
}
function endDrag(_arg1:MouseEvent):void{
_draging = false;
stage.removeEventListener(MouseEvent.MOUSE_UP, endDrag);
}
override public function destroy():void{
_barBG = null;
_slider = null;
_barGFX = null;
super.destroy();
}
override public function set baseName(_arg1:String):void{
var _local2:Error;
super.baseName = _arg1;
_barGFX = DisplayObjectContainer(this.getChildAt(0));
_barGFX.mouseEnabled = true;
_barGFX.mouseChildren = true;
if (_barGFX["bg"]){
_barBG = _barGFX["bg"];
} else {
_local2 = new Error(("[VolumeBar] no 'bg' in graphics: " + _arg1));
throw (_local2);
};
if (_barGFX["slider"]){
_slider = _barGFX["slider"];
} else {
_local2 = new Error(("[VolumeBar] no 'slider' in graphics: " + _arg1));
throw (_local2);
};
_barGFX.addEventListener(Event.ENTER_FRAME, doStuff, false, 0, true);
_slider.addEventListener(MouseEvent.MOUSE_DOWN, beginDrag, false, 0, true);
_barBG.addEventListener(MouseEvent.MOUSE_DOWN, barBG_MouseDownHandler, false, 0, true);
}
}
}//package picaso.templates
Section 281
//EventDispatcherAdvaned (picaso.EventDispatcherAdvaned)
package picaso {
import flash.events.*;
import flash.utils.*;
public class EventDispatcherAdvaned extends EventDispatcher implements IMemorySafe {
private var _listeners:Array;
private var _externalObjects:Dictionary;
public function EventDispatcherAdvaned(_arg1:IEventDispatcher=null){
super(_arg1);
_listeners = new Array();
_externalObjects = new Dictionary(true);
}
public function getExtObject(_arg1:String){
var _local2:*;
for (_local2 in _externalObjects) {
if (_externalObjects[_local2] == _arg1){
return (_local2);
};
};
}
public function destroy():void{
var _local1:int;
if (_listeners != null){
_local1 = 0;
while (_local1 < _listeners.length) {
super.removeEventListener(_listeners[_local1].type, _listeners[_local1].listener);
_local1++;
};
_listeners = null;
};
_local1 = 0;
while (_local1 < _externalObjects.length) {
super.removeEventListener(_listeners[_local1].type, _listeners[_local1].listener);
_local1++;
};
_listeners = null;
}
override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=true):void{
super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
_listeners.push({type:_arg1, listener:_arg2});
}
public function registerExtObject(_arg1, _arg2:String):void{
_externalObjects[_arg1] = _arg2;
}
}
}//package picaso
Section 282
//IMemorySafe (picaso.IMemorySafe)
package picaso {
public interface IMemorySafe {
function destroy():void;
}
}//package picaso
Section 283
//MathUtils (picaso.MathUtils)
package picaso {
import flash.display.*;
import flash.geom.*;
public class MathUtils {
public static function degreesToGrad(_arg1:Number):Number{
_arg1 = MathUtils.normalizeAngle(_arg1);
return (((_arg1 * Math.PI) / 180));
}
public static function localToLocal(_arg1:Point, _arg2:DisplayObject, _arg3:DisplayObject):Point{
_arg1 = _arg2.localToGlobal(_arg1);
_arg1 = _arg3.globalToLocal(_arg1);
return (_arg1);
}
public static function distance(_arg1:Point, _arg2:Point):Number{
return (Math.sqrt((Math.pow((_arg2.x - _arg1.x), 2) + Math.pow((_arg2.y - _arg1.y), 2))));
}
public static function normalizeAngle(_arg1:Number):Number{
return ((((_arg1 % 360) + 360) % 360));
}
public static function selectNearest(_arg1:Number, _arg2:Array):Number{
var _local3:Number;
var _local4:uint;
var _local5:Number;
var _local6:Number;
_local3 = Math.abs((_arg1 - _arg2[0]));
_local4 = 0;
_local5 = 1;
while (_local5 < _arg2.length) {
_local6 = Math.abs((_arg1 - _arg2[_local5]));
if (_local6 < _local3){
_local3 = _local6;
_local4 = _local5;
};
_local5++;
};
return (_arg2[_local4]);
}
public static function findAngle(_arg1:Number, _arg2:Number):Number{
var _local3:Number;
_local3 = Math.round(((Math.atan2(_arg2, _arg1) * 180) / Math.PI));
return (_local3);
}
public static function bounds(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number;
if (_arg2 > _arg3){
_arg2 = (_arg3 + _arg2);
_arg3 = (_arg2 - _arg3);
_arg2 = (_arg2 - _arg3);
} else {
if (_arg2 == _arg3){
return (_arg2);
};
};
_local4 = Math.max(_arg2, Math.min(_arg1, _arg3));
return (_local4);
}
public static function gradToDegrees(_arg1:Number):Number{
return (MathUtils.normalizeAngle(((_arg1 * 180) / Math.PI)));
}
}
}//package picaso
Section 284
//SoundInfo (picaso.SoundInfo)
package picaso {
import flash.events.*;
import flash.media.*;
import flash.utils.*;
public class SoundInfo extends EventDispatcherAdvaned {
private var _loop:Boolean;// = false
private var _sound:Sound;
private var _privilleged:Boolean;// = false
private var _fadeTargetVolume:Number;// = 0
private var _currFadeVolume:Number;// = 0
private var _fadeTimer:Timer;
private var _volume:Number;// = 1
private var _fadeDivider:Number;// = 10
private var _channel:String;// = "1"
private var _loopPosition:Number;// = 0
private var _soundChannel:SoundChannel;
private var _stop:Boolean;// = false
private var _random:Boolean;// = false
private var _name:String;
private var _probability:Number;// = 0.005
private var _fade:Boolean;// = false
private var _channelVolume:Number;// = 1
public function SoundInfo(_arg1:Object){
var i:String;
var obj = _arg1;
_privilleged = false;
_random = false;
_loop = false;
_loopPosition = 0;
_channel = "1";
_fade = false;
_fadeDivider = 10;
_volume = 1;
_probability = 0.005;
_currFadeVolume = 0;
_fadeTargetVolume = 0;
_channelVolume = 1;
_stop = false;
super();
_fadeTimer = new Timer(30);
for (i in obj) {
this[i] = obj[i];
};
try {
_sound = new ((getDefinitionByName(_name) as Class));
} catch(error:Error) {
_sound = new Sound();
trace(("[SoundInfo] Wrong SoundInfo.name: " + _name));
};
}
public function stop():void{
_fadeTargetVolume = 0;
_stop = true;
startFading(0);
if (_random){
dispatchEvent(new Event("RandomSoundComplete"));
};
}
public function get channelVolume():Number{
return (_channelVolume);
}
public function get channel():String{
return (_channel);
}
public function get privilleged():Boolean{
return (_privilleged);
}
public function set name(_arg1:String):void{
_name = _arg1;
}
public function get volume():Number{
return (_volume);
}
public function get fadeDivider():Number{
return (_fadeDivider);
}
private function dispatchStop(_arg1:Event):void{
deleteSoundChannel();
dispatchEvent(_arg1);
}
private function doFading(_arg1:TimerEvent=null):void{
if ((((Math.abs((_fadeTargetVolume - _currFadeVolume)) > 0.01)) && (_soundChannel))){
_currFadeVolume = (_currFadeVolume + ((_fadeTargetVolume - _currFadeVolume) / _fadeDivider));
_soundChannel.soundTransform = new SoundTransform(_currFadeVolume);
} else {
_currFadeVolume = _fadeTargetVolume;
if (_soundChannel){
_soundChannel.soundTransform = new SoundTransform(_currFadeVolume);
};
if (_stop){
dispatchStop(new Event(Event.SOUND_COMPLETE));
};
_fadeTimer.stop();
_fadeTimer.removeEventListener(TimerEvent.TIMER, doFading);
};
}
public function set channel(_arg1:String):void{
_channel = _arg1;
}
public function get fade():Boolean{
return (_fade);
}
public function get loop():Boolean{
return (_loop);
}
public function get name():String{
return (_name);
}
public function play(_arg1:Number=0, _arg2:int=0):SoundChannel{
if (!_random){
if (!_soundChannel){
_stop = false;
if (_arg2 > 0){
this.loop = false;
this.loopPosition = 0;
};
deleteSoundChannel();
_soundChannel = _sound.play(_arg1, _arg2);
if (_soundChannel){
if (loop){
_soundChannel.addEventListener(Event.SOUND_COMPLETE, loopMe, false, 0, true);
} else {
_soundChannel.addEventListener(Event.SOUND_COMPLETE, dispatchStop, false, 0, true);
};
_currFadeVolume = 0;
startFading((_volume * _channelVolume));
SoundManager.playSound(this);
return (_soundChannel);
} else {
trace("You have no sound card or you run out of available sound channels. The maximum number of sound channels available at once is 32.");
};
} else {
return (new SoundInfo({channel:this.channel, loop:this.loop, name:this.name, loopPosition:this.loopPosition, random:this.random, privilleged:this.privilleged, channelVolume:this.channelVolume, fade:this.fade, fadeDivider:this.fadeDivider}).play(_arg1, _arg2));
};
} else {
SoundManager.playSound(this);
};
return (null);
}
public function get probability():Number{
return (_probability);
}
public function set channelVolume(_arg1:Number):void{
_channelVolume = MathUtils.bounds(_arg1, 0, 1);
this.volume = volume;
}
private function startFading(_arg1:Number):void{
if (!_stop){
_fadeTargetVolume = _arg1;
};
if (_fade){
_fadeTimer.addEventListener(TimerEvent.TIMER, doFading, false, 0, true);
_fadeTimer.start();
doFading();
} else {
_currFadeVolume = _arg1;
if (_soundChannel){
_soundChannel.soundTransform = new SoundTransform(_arg1);
};
if (_stop){
dispatchStop(new Event(Event.SOUND_COMPLETE));
};
};
}
public function set privilleged(_arg1:Boolean):void{
_privilleged = _arg1;
}
private function deleteSoundChannel():void{
if (_soundChannel){
if (_loop){
_soundChannel.removeEventListener(Event.SOUND_COMPLETE, loopMe);
} else {
_soundChannel.removeEventListener(Event.SOUND_COMPLETE, dispatchStop);
};
_soundChannel.stop();
_soundChannel = null;
};
}
public function set volume(_arg1:Number):void{
_volume = Math.round(_arg1);
startFading((_volume * _channelVolume));
}
public function set loop(_arg1:Boolean):void{
_loop = _arg1;
}
public function youAreChoosen():void{
if (_random){
deleteSoundChannel();
_soundChannel = _sound.play();
_soundChannel.addEventListener(Event.SOUND_COMPLETE, dispatchStop, false, 0, true);
this.volume = _volume;
};
}
public function get random():Boolean{
return (_random);
}
public function set loopPosition(_arg1:Number):void{
_loopPosition = _arg1;
}
private function loopMe(_arg1:Event):void{
dispatchStop(new Event(Event.SOUND_COMPLETE));
if (!_stop){
play();
};
}
public function set random(_arg1:Boolean):void{
_random = _arg1;
}
public function get loopPosition():Number{
return (_loopPosition);
}
public function set probability(_arg1:Number):void{
_probability = MathUtils.bounds(_arg1, 0, 1);
}
public function set fade(_arg1:Boolean):void{
_fade = _arg1;
}
public function set fadeDivider(_arg1:Number):void{
_fadeDivider = Math.max(2, _arg1);
}
}
}//package picaso
Section 285
//SoundManager (picaso.SoundManager)
package picaso {
import flash.display.*;
import flash.events.*;
import flash.media.*;
import flash.utils.*;
public class SoundManager extends EventDispatcherAdvaned {
public static const MUTE:String = "mute";
public static const UNMUTE:String = "unmute";
private static var _timer:Timer;
private static var _randomTracks:Array = new Array();
private static var _inited:Boolean = false;
private static var _fadeTarger:Number = 0.75;
private static var _muted:Boolean = false;
private static var _channels:Object = new Object();
private static var _fade:Boolean = true;
private static var _channelVolumes:Object = new Object();
private static var _volume:Number = 0.75;
private static var _channelsMuted:Object = new Object();
private static var _stage:Stage;
public function SoundManager(_arg1:Stage){
stage = _arg1;
}
override public function destroy():void{
var _local1:String;
while (_randomTracks.length > 0) {
_randomTracks.pop();
};
for (_local1 in _channels) {
_channels[_local1] = null;
};
_randomTracks = null;
_channels = null;
_timer = null;
_timer.removeEventListener(TimerEvent.TIMER, takeAction);
_stage.removeEventListener(SoundManager.MUTE, mute);
_stage.removeEventListener(SoundManager.UNMUTE, unmute);
_stage = null;
super.destroy();
}
public static function playASound(_arg1:SoundInfo):void{
init();
if ((((_channelVolumes[_arg1.channel] > -1)) || (_channelsMuted[_arg1.channel]))){
_channelVolumes[_arg1.channel] = ((_channelVolumes[_arg1.channel])>-1) ? _channelVolumes[_arg1.channel] : 1;
_arg1.channelVolume = (_channelVolumes[_arg1.channel] * int(!(_channelsMuted[_arg1.channel])));
};
if (!_arg1.random){
playInChannel(_arg1);
} else {
_arg1.addEventListener("RandomSoundComplete", removeFromRandom);
_randomTracks.push(_arg1);
};
}
public static function set stage(_arg1:Stage):void{
init();
_stage = _arg1;
_arg1.addEventListener(SoundManager.MUTE, stage_muteListener);
_arg1.addEventListener(SoundManager.UNMUTE, stage_unmuteListener);
}
public static function set pause(_arg1:Boolean):void{
if (_arg1){
_fadeTarger = 0;
} else {
if (!_muted){
_fadeTarger = _volume;
};
};
}
public static function set fade(_arg1:Boolean):void{
_fade = _arg1;
}
public static function get fade():Boolean{
return (_fade);
}
private static function init():void{
if (!_inited){
_inited = true;
SoundMixer.soundTransform = new SoundTransform(1);
_timer = new Timer(30);
_timer.addEventListener(TimerEvent.TIMER, takeAction);
_timer.start();
};
}
public static function setChannelVolume(_arg1, _arg2:Number):void{
var _local3:Number;
init();
if ((_arg1 is String)){
_channelVolumes[_arg1] = MathUtils.bounds(_arg2, 0, 1);
if (_channels[_arg1] != null){
_channelVolumes[_arg1] = ((_channelVolumes[_arg1])>-1) ? _channelVolumes[_arg1] : 1;
SoundInfo(_channels[_arg1]).channelVolume = (_channelVolumes[_arg1] * int(!(_channelsMuted[_arg1])));
};
} else {
if ((_arg1 is Array)){
_local3 = 0;
while (_local3 < _arg1.length) {
_channelVolumes[_arg1[_local3]] = MathUtils.bounds(_arg2, 0, 1);
if (_channels[_arg1[_local3]] != null){
_channelVolumes[_arg1[_local3]] = ((_channelVolumes[_arg1[_local3]])>-1) ? _channelVolumes[_arg1[_local3]] : 1;
SoundInfo(_channels[_arg1[_local3]]).channelVolume = (_channelVolumes[_arg1[_local3]] * int(!(_channelsMuted[_arg1[_local3]])));
};
_local3++;
};
};
};
}
private static function stage_muteListener(_arg1:Event=null):void{
mute();
}
private static function playRandom():void{
var _local1:Number;
var _local2:SoundInfo;
var _local3:Number;
_local1 = 0;
while (_local1 < _randomTracks.length) {
_local2 = (_randomTracks[_local1] as SoundInfo);
_local3 = Math.random();
if (_local3 <= _local2.probability){
_channelVolumes[_local2.channel] = ((_channelVolumes[_local2.channel])>-1) ? _channelVolumes[_local2.channel] : 1;
_local2.channelVolume = (_channelVolumes[_local2.channel] * int(!(_channelsMuted[_local2.channel])));
_local2.youAreChoosen();
playInChannel(_local2);
};
_local1++;
};
}
private static function clrChannel(_arg1:Event):void{
_channels[(_arg1.target as SoundInfo).channel] = null;
}
private static function takeAction(_arg1:Event):void{
doFade();
playRandom();
}
public static function unmute(_arg1=null):void{
var _local2:Number;
if (!_arg1){
_fadeTarger = _volume;
_muted = false;
} else {
if ((_arg1 is String)){
_channelsMuted[_arg1] = false;
setChannelVolume(_arg1, _channelVolumes[_arg1]);
} else {
if ((_arg1 is Array)){
_local2 = 0;
while (_local2 < _arg1.length) {
_channelsMuted[_arg1[_local2]] = false;
setChannelVolume(_arg1[_local2], _channelVolumes[_arg1[_local2]]);
_local2++;
};
};
};
};
}
public static function mute(_arg1=null):void{
var _local2:Number;
if (!_arg1){
_fadeTarger = 0;
_muted = true;
} else {
if ((_arg1 is String)){
_channelsMuted[_arg1] = true;
setChannelVolume(_arg1, _channelVolumes[_arg1]);
} else {
if ((_arg1 is Array)){
_local2 = 0;
while (_local2 < _arg1.length) {
_channelsMuted[_arg1[_local2]] = true;
setChannelVolume(_arg1[_local2], _channelVolumes[_arg1[_local2]]);
_local2++;
};
};
};
};
}
public static function get volume():Number{
return (_volume);
}
private static function doFade():void{
if (SoundMixer.soundTransform.volume != _fadeTarger){
if (((_fade) && ((Math.abs((SoundMixer.soundTransform.volume - _fadeTarger)) > 0.03)))){
SoundMixer.soundTransform = new SoundTransform((SoundMixer.soundTransform.volume + ((_fadeTarger - SoundMixer.soundTransform.volume) / 20)));
} else {
SoundMixer.soundTransform = new SoundTransform(_fadeTarger);
};
};
}
public static function isSoundPlaying(_arg1:SoundInfo):Boolean{
if (!_channels[_arg1.channel]){
return (false);
};
if (SoundInfo(_channels[_arg1.channel]).name == _arg1.name){
return (true);
};
return (false);
}
private static function stage_unmuteListener(_arg1:Event=null):void{
unmute();
}
public static function clearRandom():void{
while (_randomTracks.length > 0) {
(_randomTracks.pop() as SoundInfo).stop();
};
}
private static function removeFromRandom(_arg1:Event):void{
_randomTracks.splice(_randomTracks.indexOf(_arg1.target), 1);
}
public static function set volume(_arg1:Number):void{
_volume = MathUtils.bounds(_arg1, 0, 1);
if (!_muted){
_fadeTarger = _volume;
};
}
private static function playInChannel(_arg1:SoundInfo):void{
if (_channels[_arg1.channel]){
if (_arg1.privilleged){
_channels[_arg1.channel].removeEventListener(Event.SOUND_COMPLETE, clrChannel);
_channels[_arg1.channel].stop();
_channels[_arg1.channel] = _arg1;
_arg1.addEventListener(Event.SOUND_COMPLETE, clrChannel);
} else {
_arg1.stop();
};
} else {
_channels[_arg1.channel] = _arg1;
_arg1.addEventListener(Event.SOUND_COMPLETE, clrChannel);
};
}
public static function playSound(_arg1:SoundInfo):void{
init();
playASound(_arg1);
}
public static function clearChannel(_arg1:String):void{
var _local2:Number;
if (_channels[_arg1] != null){
(_channels[_arg1] as SoundInfo).stop();
};
_local2 = 0;
while (_local2 < _randomTracks.length) {
if (_randomTracks[_local2].channel == _arg1){
_randomTracks[_local2].stop();
_randomTracks.splice(_local2, 1);
_local2--;
};
_local2++;
};
}
}
}//package picaso
Section 286
//SpriteAdvanced (picaso.SpriteAdvanced)
package picaso {
import flash.display.*;
public class SpriteAdvanced extends Sprite implements IMemorySafe {
private var _listeners:Array;
public function SpriteAdvanced(){
_listeners = new Array();
}
override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
_listeners.push({type:_arg1, listener:_arg2});
}
public function destroy():void{
var _local1:Number;
if (_listeners != null){
_local1 = 0;
while (_local1 < _listeners.length) {
super.removeEventListener(_listeners[_local1].type, _listeners[_local1].listener);
_local1++;
};
_listeners = null;
};
while (this.numChildren > 0) {
if ((this.getChildAt(0) is IMemorySafe)){
(this.getChildAt(0) as IMemorySafe).destroy();
};
this.removeChildAt(0);
};
}
}
}//package picaso
Section 287
//BigPopUpCompleteGame (popup.BigPopUpCompleteGame)
package popup {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public dynamic class BigPopUpCompleteGame extends MovieClip {
public var scoreTextField:TextField;
public function BigPopUpCompleteGame(_arg1:Number=0){
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
scoreTextField = this.scoreText;
trace(scoreTextField);
scoreTextField.visible = false;
scoreTextField.text = _arg1.toString();
}
private function enterFrameHandler(_arg1:Event):void{
if (currentFrame == totalFrames){
stop();
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
public function cleanup():void{
var _local1:Number;
if (hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
_local1 = 1;
while (_local1 < numChildren) {
_local1++;
};
}
}
}//package popup
Section 288
//BigPopUpInputName (popup.BigPopUpInputName)
package popup {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.text.*;
public dynamic class BigPopUpInputName extends MovieClip {
private const divider:Number = 5;
private var defPlayerName:String;
private var fadingIn:Boolean;// = false
private var fadingOut:Boolean;// = false
public var inputName:TextField;
public var inputOk:PopUpButtonOk;
public static const EVENT_SHOWED:String = "showed";
public static const EVENT_OK:String = "onPressedOkButton";
public static const EVENT_HIDDEN:String = "hidden";
public function BigPopUpInputName(){
fadingIn = false;
fadingOut = false;
super();
(this.inputOk as SimpleButton).addEventListener(MouseEvent.CLICK, onOk, false, 0, true);
(this.inputOk as SimpleButton).addEventListener(MouseEvent.MOUSE_OVER, overOk, false, 0, true);
(this.inputOk as SimpleButton).addEventListener(MouseEvent.MOUSE_OUT, outOk, false, 0, true);
(this.inputName as TextField).maxChars = 17;
(this.inputName as TextField).addEventListener(MouseEvent.MOUSE_OVER, overInput, false, 0, true);
(this.inputName as TextField).addEventListener(MouseEvent.MOUSE_OUT, outInput, false, 0, true);
(this.inputName as TextField).addEventListener(MouseEvent.CLICK, onInput, false, 0, true);
(this.inputName as TextField).addEventListener(FocusEvent.FOCUS_OUT, unfocusInput, false, 0, true);
this.defPlayerName = Config.DEFAULT_PLAYER_NAME;
(this.inputName as TextField).text = Config.DEFAULT_PLAYER_NAME;
this.alpha = 0;
}
private function onOk(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(BigPopUpInputName.EVENT_OK));
}
private function outInput(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
}
private function unfocusInput(_arg1:FocusEvent):void{
if ((this.inputName as TextField).text.length == 0){
(this.inputName as TextField).text = Config.DEFAULT_PLAYER_NAME;
};
}
private function onInput(_arg1:MouseEvent):void{
if ((this.inputName as TextField).text == Config.DEFAULT_PLAYER_NAME){
(this.inputName as TextField).text = "";
};
}
private function overInput(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_HIDE, true));
}
private function fadeOut(_arg1:Event):void{
if (this.alpha > 0.05){
this.alpha = (this.alpha - (Math.abs(this.alpha) / this.divider));
} else {
this.alpha = 0;
this.fadingOut = false;
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.dispatchEvent(new Event(BigPopUpInputName.EVENT_HIDDEN));
};
}
public function hide():void{
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
this.fadingOut = true;
this.addEventListener(Event.ENTER_FRAME, fadeOut, false, 0, true);
(this.inputName as TextField).selectable = false;
(this.inputName as TextField).removeEventListener(MouseEvent.MOUSE_OVER, overInput);
(this.inputName as TextField).removeEventListener(MouseEvent.MOUSE_OUT, outInput);
(this.inputName as TextField).removeEventListener(MouseEvent.CLICK, onInput);
(this.inputName as TextField).removeEventListener(FocusEvent.FOCUS_OUT, unfocusInput);
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
}
public function cleanup():void{
if ((this.inputOk as SimpleButton).hasEventListener(MouseEvent.CLICK)){
(this.inputOk as SimpleButton).removeEventListener(MouseEvent.CLICK, onOk);
};
if ((this.inputOk as SimpleButton).hasEventListener(MouseEvent.MOUSE_OVER)){
(this.inputOk as SimpleButton).removeEventListener(MouseEvent.MOUSE_OVER, overOk);
};
if ((this.inputOk as SimpleButton).hasEventListener(MouseEvent.MOUSE_OUT)){
(this.inputOk as SimpleButton).removeEventListener(MouseEvent.MOUSE_OUT, outOk);
};
if ((this.inputName as TextField).hasEventListener(MouseEvent.MOUSE_OVER)){
(this.inputName as TextField).removeEventListener(MouseEvent.MOUSE_OVER, overInput);
};
if ((this.inputName as TextField).hasEventListener(MouseEvent.MOUSE_OUT)){
(this.inputName as TextField).removeEventListener(MouseEvent.MOUSE_OUT, outInput);
};
if ((this.inputName as TextField).hasEventListener(MouseEvent.CLICK)){
(this.inputName as TextField).removeEventListener(MouseEvent.CLICK, onInput);
};
if ((this.inputName as TextField).hasEventListener(FocusEvent.FOCUS_OUT)){
(this.inputName as TextField).removeEventListener(FocusEvent.FOCUS_OUT, unfocusInput);
};
this.visible = false;
this.dispatchEvent(new Event(Config.EVENT_MOUSE_SHOW, true));
}
private function fadeIn(_arg1:Event):void{
if (this.alpha < 0.95){
this.alpha = (this.alpha + (Math.abs((this.alpha - 1)) / this.divider));
} else {
this.alpha = 1;
this.fadingIn = false;
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.dispatchEvent(new Event(BigPopUpInputName.EVENT_SHOWED));
};
}
private function outOk(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function overOk(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
public function show():void{
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
this.fadingIn = true;
this.addEventListener(Event.ENTER_FRAME, fadeIn, false, 0, true);
}
}
}//package popup
Section 289
//BigPopUpLose (popup.BigPopUpLose)
package popup {
import flash.display.*;
import flash.geom.*;
import core.*;
import flash.events.*;
import flash.net.*;
import sounds.*;
public dynamic class BigPopUpLose extends MovieClip {
public var btnYes:SimpleButton;
public var btnNo:SimpleButton;
private var _buttonSkip:SimpleButton;
public var btnSkip:SimpleButton;
private var _buttonYes:SimpleButton;
private var _buttonNo:SimpleButton;
public static const TYPE_YES_NO_SKIP:int = 1;
public static const TYPE_YES_NO:int = 0;
public function BigPopUpLose(_arg1:int=0){
var _local2:int;
var _local3:Array;
var _local4:Array;
var _local5:SharedObject;
var _local6:Boolean;
var _local7:int;
super();
SoundData.LOSE.play();
this._buttonNo = this["btnNo"];
this._buttonNo.addEventListener(MouseEvent.CLICK, onNoHandler, false, 0, true);
this._buttonNo.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._buttonNo.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this._buttonYes = this["btnYes"];
this._buttonYes.addEventListener(MouseEvent.CLICK, onYesHandler, false, 0, true);
this._buttonYes.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._buttonYes.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this._buttonSkip = this["btnSkip"];
_local2 = Config.MAX_OPENED_LEVELS;
_local5 = SharedObject.getLocal(Config.SHARED_OBJECT_TITLE);
if (_local5.size > 0){
if (Config.CURRENT_DIFFICULTY == Config.DIFFICULTY_EASY){
_local3 = _local5.data.isLevelOpened.easy;
_local4 = _local5.data.levels.easy;
};
if (Config.CURRENT_DIFFICULTY == Config.DIFFICULTY_NORMAL){
_local3 = _local5.data.isLevelOpened.normal;
_local4 = _local5.data.levels.normal;
};
};
_local6 = false;
if (((_local3) && (_local4))){
_local7 = 0;
while (_local7 < _local3.length) {
if (((_local3[_local7]) && ((_local4[_local7] == 0)))){
_local2--;
};
if (((_local3[_local7]) && ((_local7 > (Config.CURRENT_LEVEL - 1))))){
_local6 = true;
};
_local7++;
};
};
if (_local2 < 0){
_local2 = 0;
};
if (_arg1 == TYPE_YES_NO){
_buttonYes.x = (_buttonYes.x + 48);
_buttonNo.x = (_buttonNo.x + 48);
_buttonSkip.visible = false;
};
if (((!(_local6)) && ((_local2 == 0)))){
_buttonSkip.enabled = false;
_buttonSkip.transform.colorTransform = new ColorTransform(0.51, 0.51, 0.51, 1, 125, 125, 125);
} else {
this._buttonSkip.addEventListener(MouseEvent.CLICK, onSkipHandler, false, 0, true);
this._buttonSkip.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this._buttonSkip.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
_local3 = null;
_local4 = null;
_local5 = null;
}
private function onNoHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_POPUPBUTTON_MAP, true));
}
private function onSkipHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_LEVEL_NEXT, true));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function onYesHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_POPUPBUTTON_RETRY, true));
}
public function cleanup():void{
this._buttonNo.removeEventListener(MouseEvent.CLICK, onNoHandler);
this._buttonNo.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this._buttonNo.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this._buttonYes.removeEventListener(MouseEvent.CLICK, onYesHandler);
this._buttonYes.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this._buttonYes.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
if (_buttonSkip.hasEventListener(MouseEvent.CLICK)){
this._buttonSkip.removeEventListener(MouseEvent.CLICK, onSkipHandler);
};
if (_buttonSkip.hasEventListener(MouseEvent.MOUSE_OVER)){
this._buttonSkip.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (_buttonSkip.hasEventListener(MouseEvent.MOUSE_OUT)){
this._buttonSkip.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package popup
Section 290
//BigPopUpWin (popup.BigPopUpWin)
package popup {
import flash.display.*;
import flash.geom.*;
import core.*;
import flash.events.*;
import flash.text.*;
import sounds.*;
public dynamic class BigPopUpWin extends MovieClip {
private var retryButton:SimpleButton;
private var nextButton:SimpleButton;
private var bestScore:Number;
public var budgetText:TextField;
public var altScoreText:TextField;
public var budget:TextField;
private var timer:int;
public var scoreBG:MovieClip;
private var _scoreCurrent:Number;// = 0
public var altScore:TextField;
private var _budget:Number;// = 0
public var difficultyBG:MovieClip;
public var nextBtn:SimpleButton;
public var altScoreBG:MovieClip;
public var budgetBG:MovieClip;
private var _budgetCurrent:Number;// = 0
public var difficultyText:TextField;
public var score:TextField;
private var _score:Number;// = 0
public var mapBtn:SimpleButton;
private var currentScore:Number;
public var difficulty:TextField;
private var mapButton:SimpleButton;
public var retryBtn:SimpleButton;
private var _difficulty:Number;// = 0
private var _difficultyCurrent:Number;// = 0
private var _altScore:Number;// = 0
public var scoreText:TextField;
public static const TYPE_RETRY_MAP:int = 2;
public static const TYPE_RETRY_MAP_NEXT:int = 0;
public static const TYPE_NEXT:int = 3;
public static const TYPE_RETRY_NEXT:int = 1;
public function BigPopUpWin(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:int=0){
_score = 0;
_scoreCurrent = 0;
_altScore = 0;
_difficulty = 0;
_difficultyCurrent = 0;
_budget = 0;
_budgetCurrent = 0;
super();
stop();
_score = _arg1;
_altScore = _arg2;
_difficulty = _arg3;
_budget = (_arg1 - _arg3);
this.nextButton = this["nextBtn"];
this.mapButton = this["mapBtn"];
this.retryButton = this["retryBtn"];
if (_arg4 == TYPE_RETRY_NEXT){
this.mapButton.transform.colorTransform = new ColorTransform(0.51, 0.51, 0.51, 1, 125, 125, 125);
this.mapButton.enabled = false;
this.nextButton.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.retryButton.addEventListener(MouseEvent.CLICK, onRetry, false, 0, true);
this.retryButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.retryButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
if (_arg4 == TYPE_RETRY_MAP){
this.nextButton.transform.colorTransform = new ColorTransform(0.51, 0.51, 0.51, 1, 125, 125, 125);
this.nextButton.enabled = false;
this.mapButton.addEventListener(MouseEvent.CLICK, onMap, false, 0, true);
this.mapButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.mapButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.retryButton.addEventListener(MouseEvent.CLICK, onRetry, false, 0, true);
this.retryButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.retryButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
if (_arg4 == TYPE_NEXT){
this.mapButton.transform.colorTransform = new ColorTransform(0.51, 0.51, 0.51, 1, 125, 125, 125);
this.mapButton.enabled = false;
this.retryButton.transform.colorTransform = new ColorTransform(0.51, 0.51, 0.51, 1, 125, 125, 125);
this.retryButton.enabled = false;
this.nextButton.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
if (_arg4 == TYPE_RETRY_MAP_NEXT){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.mapButton.addEventListener(MouseEvent.CLICK, onMap, false, 0, true);
this.mapButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.mapButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
this.retryButton.addEventListener(MouseEvent.CLICK, onRetry, false, 0, true);
this.retryButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
this.retryButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
SoundData.WIN.play();
if (_arg1 != _arg2){
} else {
this["difficulty"].y = (this["difficulty"].y + 15);
this["difficultyText"].y = (this["difficultyText"].y + 15);
this["difficultyBG"].y = (this["difficultyBG"].y + 15);
this["budget"].y = (this["budget"].y + 15);
this["budgetText"].y = (this["budgetText"].y + 15);
this["budgetBG"].y = (this["budgetBG"].y + 15);
this["score"].y = (this["score"].y + 15);
this["scoreText"].y = (this["scoreText"].y + 15);
this["scoreBG"].y = (this["scoreBG"].y + 15);
this["altScore"].visible = false;
this["altScoreText"].visible = false;
this["altScoreBG"].visible = false;
};
this["difficulty"].text = _arg3.toString();
this["budget"].text = (_arg1 - _arg3).toString();
this["score"].text = _arg1.toString();
this["altScore"].text = _arg2.toString();
}
private function mouseOverHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function enterFrameHandler(_arg1:Event):void{
var _local2:Boolean;
var _local3:Boolean;
var _local4:Boolean;
_local2 = false;
_local3 = false;
_local4 = false;
if (Math.abs((_difficulty - _difficultyCurrent)) > 0.001){
_difficultyCurrent = (_difficultyCurrent + ((_difficulty - _difficultyCurrent) / 3));
this["difficulty"].text = Math.round(_difficultyCurrent).toString();
} else {
_difficultyCurrent = _difficulty;
this["difficulty"].text = Math.round(_difficulty).toString();
_local2 = true;
};
if (Math.abs((_budget - _budgetCurrent)) > 0.001){
_budgetCurrent = (_budgetCurrent + ((_budget - _budgetCurrent) / 3));
this["budget"].text = Math.round(_budgetCurrent).toString();
} else {
_budgetCurrent = _budget;
this["budget"].text = _budget.toString();
_local3 = true;
};
if (Math.abs((_score - _scoreCurrent)) > 0.001){
_scoreCurrent = (_scoreCurrent + ((_score - _scoreCurrent) / 3));
this["score"].text = Math.round(_scoreCurrent).toString();
} else {
_scoreCurrent = _score;
this["score"].text = _score.toString();
_local4 = true;
};
if (((((_local2) && (_local3))) && (_local4))){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
private function onRetry(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_POPUPBUTTON_RETRY, true));
}
private function onNext(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_POPUPBUTTON_NEXT, true));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function cleanup():void{
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.mapButton.hasEventListener(MouseEvent.CLICK)){
this.mapButton.removeEventListener(MouseEvent.CLICK, onMap);
};
if (this.mapButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.mapButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.mapButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.mapButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.retryButton.hasEventListener(MouseEvent.CLICK)){
this.retryButton.removeEventListener(MouseEvent.CLICK, onRetry);
};
if (this.retryButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.retryButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.retryButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.retryButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.hasEventListener(Event.ENTER_FRAME)){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
private function onMap(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(Config.EVENT_POPUPBUTTON_MAP, true));
}
}
}//package popup
Section 291
//PopUpButtonOk (popup.PopUpButtonOk)
package popup {
import flash.display.*;
import core.*;
import flash.events.*;
public class PopUpButtonOk extends SimpleButton {
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
private function clickHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_POPUP_BUTTON_OK, true));
}
public function cleanup():void{
if (hasEventListener(MouseEvent.CLICK)){
removeEventListener(MouseEvent.CLICK, clickHandler);
};
if (hasEventListener(MouseEvent.MOUSE_OVER)){
removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (hasEventListener(MouseEvent.MOUSE_OUT)){
removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
}
}//package popup
Section 292
//wav (rope_break.wav)
package rope_break {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package rope_break
Section 293
//wav (rope_connect.wav)
package rope_connect {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package rope_connect
Section 294
//SoundData (sounds.SoundData)
package sounds {
import picaso.*;
public class SoundData {
public static var THUNDER:SoundInfo = new SoundInfo({name:"thunder.wav", random:false, channel:"nature", loop:true, privilleged:true});
public static var DECK_BREAK:SoundInfo = new SoundInfo({name:"deck_break.wav", random:false, channel:"materials_sounds"});
public static var MUSIC_CHANNELS:Array = [MAIN_THEME.channel];
public static var STEEL_BREAK:SoundInfo = new SoundInfo({name:"steel_break.wav", random:false, channel:"materials_sounds"});
public static var ROPE_CONNECT:SoundInfo = new SoundInfo({name:"rope_connect.wav", random:false, channel:"materials_sounds"});
public static var INTRO_SLIDE_1:SoundInfo = new SoundInfo({name:"intro_slide1.wav", random:false, channel:"music", loop:true, privilleged:true, fade:true});
public static var INTRO_SLIDE_2:SoundInfo = new SoundInfo({name:"intro_slide2.wav", random:false, channel:"music", loop:false, privilleged:true, fade:true});
public static var STORY_WIN:SoundInfo = new SoundInfo({name:"story_victory.wav", random:false, channel:"music", loop:true, privilleged:true});
public static var LOSE:SoundInfo = new SoundInfo({name:"lose.wav", random:false, channel:"music", loop:false, privilleged:true});
public static var BIRD1:SoundInfo = new SoundInfo({name:"bird1.wav", random:false, channel:"nature", loop:false});
public static var BIRD2:SoundInfo = new SoundInfo({name:"bird2.wav", random:false, channel:"nature", loop:false});
public static var BIRD3:SoundInfo = new SoundInfo({name:"bird3.wav", random:false, channel:"nature", loop:false});
public static var BIRD4:SoundInfo = new SoundInfo({name:"bird4.wav", random:false, channel:"nature", loop:false});
public static var INTRO_SLIDE_3:SoundInfo = new SoundInfo({name:"intro_slide3.wav", random:false, channel:"music", loop:true, privilleged:true, fade:true});
public static var MAIN_THEME:SoundInfo = new SoundInfo({name:"main_theme.wav", random:false, channel:"music", loop:true, privilleged:true});
public static var ROPE_BREAK:SoundInfo = new SoundInfo({name:"rope_break.wav", random:false, channel:"materials_sounds"});
public static var SOUND_CHANNELS:Array = [DECK_CONNECT.channel, WATER_SPLASH.channel, THUNDER.channel];
public static var RUN:SoundInfo = new SoundInfo({name:"emulation.mp3", random:false, channel:"music", loop:true, privilleged:true});
public static var FROGS:SoundInfo = new SoundInfo({name:"frogs.wav", random:false, channel:"nature", loop:true, privilleged:true});
public static var DECK_CONNECT:SoundInfo = new SoundInfo({name:"deck_connect.wav", random:false, channel:"materials_sounds"});
public static var WIN:SoundInfo = new SoundInfo({name:"victory.wav", random:false, channel:"music", loop:false, privilleged:true});
public static var STEEL_CONNECT:SoundInfo = new SoundInfo({name:"steel_connect.wav", random:false, channel:"materials_sounds"});
public static var WATER_SPLASH:SoundInfo = new SoundInfo({name:"water_splash.wav", random:false, channel:"environment"});
}
}//package sounds
Section 295
//wav (steel_break.wav)
package steel_break {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package steel_break
Section 296
//wav (steel_connect.wav)
package steel_connect {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package steel_connect
Section 297
//wav (story_victory.wav)
package story_victory {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package story_victory
Section 298
//wav (thunder.wav)
package thunder {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package thunder
Section 299
//WeakReference (utils.WeakReference)
package utils {
import flash.utils.*;
public class WeakReference {
private var dictionary:Dictionary;
public function WeakReference(_arg1:Object){
dictionary = new Dictionary(true);
dictionary[_arg1] = null;
}
public function get object():Object{
var _local1:Object;
for (_local1 in dictionary) {
return (_local1);
};
return (null);
}
}
}//package utils
Section 300
//Water (water.Water)
package water {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class Water extends Sprite {
private var _amplitude:Number;
private var _initWidth:Number;
private var _speed:Number;
private var _alpha:Number;
private var _paused:Boolean;
private var _initHeight:Number;
public function Water(_arg1:Number, _arg2:Number){
var _local3:String;
var _local4:Class;
var _local5:*;
var _local6:Number;
super();
name = ("water" + _arg1.toString);
_local3 = ((_arg1)>=10) ? ("water.Water" + _arg1.toString()) : ("water.Water0" + _arg1.toString());
_local4 = (getDefinitionByName(_local3) as Class);
_local6 = 0;
while (_local6 < _arg2) {
_local5 = new (_local4);
if ((_local5 as MovieClip).width == 0){
return;
};
(_local5 as MovieClip).x = _local6;
this.addChild(_local5);
_local6 = (_local6 + (_local5 as MovieClip).width);
};
this.cacheAsBitmap = true;
}
private function enterFrameHandler(_arg1:Event):void{
if (this.paused){
return;
};
y = (_initHeight + (_amplitude * Math.sin(_alpha)));
_alpha = (_alpha + (Math.PI / _speed));
if (_alpha > (Math.PI * 2)){
_alpha = 0;
};
}
public function get paused():Boolean{
return (this._paused);
}
public function set paused(_arg1:Boolean):void{
this._paused = _arg1;
}
public function cleanup():void{
if (hasEventListener(Event.ENTER_FRAME)){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
public function launch(_arg1:Number, _arg2:Number, _arg3:Number):void{
if (_speed == 0){
return;
};
_amplitude = _arg1;
_alpha = _arg2;
_speed = _arg3;
_initWidth = x;
_initHeight = y;
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
}
}//package water
Section 301
//Water01 (water.Water01)
package water {
import flash.display.*;
public class Water01 extends MovieClip {
}
}//package water
Section 302
//Water02 (water.Water02)
package water {
import flash.display.*;
public class Water02 extends MovieClip {
}
}//package water
Section 303
//Water03 (water.Water03)
package water {
import flash.display.*;
public class Water03 extends MovieClip {
}
}//package water
Section 304
//Water04 (water.Water04)
package water {
import flash.display.*;
public class Water04 extends MovieClip {
}
}//package water
Section 305
//Water05 (water.Water05)
package water {
import flash.display.*;
public class Water05 extends MovieClip {
}
}//package water
Section 306
//Water06 (water.Water06)
package water {
import flash.display.*;
public class Water06 extends MovieClip {
}
}//package water
Section 307
//Water07 (water.Water07)
package water {
import flash.display.*;
public class Water07 extends MovieClip {
}
}//package water
Section 308
//wav (water_splash.wav)
package water_splash {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package water_splash
Section 309
//wav (victory.wav)
package victory {
import flash.media.*;
public dynamic class wav extends Sound {
}
}//package victory
Section 310
//Bird (vis.Bird)
package vis {
import flash.display.*;
import core.*;
import flash.events.*;
public class Bird extends MovieClip {
private var _paused:Boolean;// = false
private var _sign:Number;
public function Bird(_arg1:Boolean=false){
_paused = false;
super();
if (_arg1){
init();
addEventListener(MouseEvent.CLICK, clickHandler);
};
}
private function init():void{
_sign = (((Math.random() - 0.5))>=0) ? 1 : -1;
scaleX = (_sign * 0.3);
scaleY = 0.3;
x = ((_sign * Config.SCREEN_WIDTH) * 3);
y = ((Math.random() * 80) + 100);
if (!hasEventListener(Event.ENTER_FRAME)){
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
private function enterFrameHandler(_arg1:Event):void{
if (this.paused){
return;
};
x = (x - _sign);
if ((((((_sign > 0)) && ((x <= (-(Config.SCREEN_WIDTH) * 3))))) || ((((_sign < 0)) && ((x >= (Config.SCREEN_WIDTH * 3))))))){
init();
};
}
public function get paused():Boolean{
return (this._paused);
}
public function set paused(_arg1:Boolean):void{
if (_arg1){
this.stop();
} else {
this.play();
};
this._paused = _arg1;
}
private function clickHandler(_arg1:MouseEvent):void{
reverse();
}
private function reverse():void{
_sign = (_sign * -1);
scaleX = (scaleX * -1);
}
}
}//package vis
Section 311
//BlueSky (vis.BlueSky)
package vis {
import flash.display.*;
public class BlueSky extends MovieClip {
}
}//package vis
Section 312
//Clouds (vis.Clouds)
package vis {
import flash.display.*;
import flash.events.*;
public class Clouds extends MovieClip {
private var _count:Number;
private var _speed:Number;
private var _paused:Boolean;// = false
private var _rightBorder:Number;// = 0
private var _leftBorder:Number;// = 0
public function Clouds(){
_paused = false;
_leftBorder = 0;
_rightBorder = 0;
super();
_count = 0;
_speed = (Math.random() + 0.5);
chooseCloud();
chooseCoordinates();
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
public function get leftBorder():Number{
return (_leftBorder);
}
private function enterFrameHandler(_arg1:Event):void{
if (this.paused){
return;
};
x = (x - _speed);
if (((((this.rightBorder - this.leftBorder) > 0)) && ((this.x < (this.leftBorder - (2 * this.width)))))){
chooseCloud();
chooseCoordinates();
} else {
if (((((this.rightBorder - this.leftBorder) == 0)) && ((x < -(this.width))))){
chooseCloud();
chooseCoordinates();
};
};
}
public function set leftBorder(_arg1:Number):void{
_leftBorder = _arg1;
}
public function get paused():Boolean{
return (this._paused);
}
public function set paused(_arg1:Boolean):void{
this._paused = _arg1;
}
public function chooseCloud():void{
var _local1:int;
var _local2:Number;
var _local3:Number;
_local1 = Math.floor(((Math.random() * totalFrames) + 1));
gotoAndStop(_local1);
_local2 = ((Math.random() * 0.3) + 0.3);
_local3 = 1;
scaleX = (_local2 * _local3);
scaleY = _local2;
this.cacheAsBitmap = true;
}
public function get rightBorder():Number{
return (_rightBorder);
}
public function chooseCoordinates():void{
if ((this.rightBorder - this.leftBorder) > 0){
x = (this.rightBorder + (2 * this.width));
} else {
x = (3000 + this.width);
};
y = ((Math.random() * 100) + 50);
}
public function set rightBorder(_arg1:Number):void{
_rightBorder = _arg1;
}
}
}//package vis
Section 313
//DayCloud (vis.DayCloud)
package vis {
public class DayCloud extends Clouds {
}
}//package vis
Section 314
//DotsBaloon (vis.DotsBaloon)
package vis {
import flash.display.*;
import flash.events.*;
public class DotsBaloon extends MovieClip {
private const divider:Number = 3;
private var fadingIn:Boolean;// = false
private var fadingOut:Boolean;// = false
public static const EVENT_SHOWED:String = "showed";
public static const EVENT_HIDDEN:String = "hidden";
public function DotsBaloon():void{
fadingOut = false;
fadingIn = false;
super();
this.alpha = 0;
}
private function fadeOut(_arg1:Event):void{
if (this.alpha > 0.05){
this.alpha = (this.alpha - (Math.abs(this.alpha) / this.divider));
} else {
this.alpha = 0;
this.fadingOut = false;
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.dispatchEvent(new Event(EVENT_HIDDEN));
};
}
public function hide():void{
if (this.fadingOut){
return;
};
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
this.fadingOut = true;
this.addEventListener(Event.ENTER_FRAME, fadeOut, false, 0, true);
}
public function cleanup():void{
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
}
private function fadeIn(_arg1:Event):void{
if (this.alpha < 0.95){
this.alpha = (this.alpha + (Math.abs((this.alpha - 1)) / this.divider));
} else {
this.alpha = 1;
this.fadingIn = false;
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.dispatchEvent(new Event(EVENT_SHOWED));
};
}
public function show():void{
if (this.fadingIn){
return;
};
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
this.fadingIn = true;
this.addEventListener(Event.ENTER_FRAME, fadeIn, false, 0, true);
}
}
}//package vis
Section 315
//Fader (vis.Fader)
package vis {
import flash.display.*;
import flash.events.*;
public class Fader extends MovieClip {
private const alphaMax:Number = 0.7;
private var _fadeOut:Boolean;// = false
private var _fadeIn:Boolean;// = false
public static const COMPLETE:String = "complete";
public function Fader(){
_fadeIn = false;
_fadeOut = false;
super();
this.alpha = 0;
}
private function enterFrameHandler(_arg1:Event):void{
if (this._fadeIn){
if (Math.abs((this.alpha - this.alphaMax)) > 0.01){
this.alpha = (this.alpha + ((this.alphaMax - this.alpha) / 3));
} else {
this.alpha = this.alphaMax;
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
this.dispatchEvent(new Event(Fader.COMPLETE, true));
};
} else {
if (this._fadeOut){
if (Math.abs(this.alpha) > 0.01){
this.alpha = (this.alpha - (this.alpha / 2));
} else {
this.alpha = 0;
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
this.dispatchEvent(new Event(Fader.COMPLETE, true));
};
};
};
}
public function fadeOut():void{
if (this._fadeOut){
return;
};
this.alpha = this.alphaMax;
this._fadeIn = false;
this._fadeOut = true;
if (!this.hasEventListener(Event.ENTER_FRAME)){
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
};
}
public function get fadingIn():Boolean{
return (this._fadeIn);
}
public function get fadingOut():Boolean{
return (this._fadeOut);
}
public function fadeIn():void{
if (this._fadeIn){
return;
};
this.alpha = 0;
this._fadeIn = true;
this._fadeOut = false;
if (!this.hasEventListener(Event.ENTER_FRAME)){
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
};
}
}
}//package vis
Section 316
//Grass01 (vis.Grass01)
package vis {
import flash.display.*;
public class Grass01 extends MovieClip {
}
}//package vis
Section 317
//Grass02 (vis.Grass02)
package vis {
import flash.display.*;
public class Grass02 extends MovieClip {
}
}//package vis
Section 318
//Grass03 (vis.Grass03)
package vis {
import flash.display.*;
public class Grass03 extends MovieClip {
}
}//package vis
Section 319
//Grass04 (vis.Grass04)
package vis {
import flash.display.*;
public class Grass04 extends MovieClip {
}
}//package vis
Section 320
//Grass05 (vis.Grass05)
package vis {
import flash.display.*;
public class Grass05 extends MovieClip {
}
}//package vis
Section 321
//Grass06 (vis.Grass06)
package vis {
import flash.display.*;
public class Grass06 extends MovieClip {
}
}//package vis
Section 322
//Grass07 (vis.Grass07)
package vis {
import flash.display.*;
public class Grass07 extends MovieClip {
}
}//package vis
Section 323
//Grass08 (vis.Grass08)
package vis {
import flash.display.*;
public class Grass08 extends MovieClip {
}
}//package vis
Section 324
//GroundTexture (vis.GroundTexture)
package vis {
import flash.display.*;
public class GroundTexture extends BitmapData {
public function GroundTexture(){
super(128, 107);
}
}
}//package vis
Section 325
//Hook (vis.Hook)
package vis {
import flash.display.*;
public dynamic class Hook extends MovieClip {
public var steelConstractionMC:MovieClip;
public var hookMC:MovieClip;
public function Hook(_arg1:Number=0, _arg2:Number=1, _arg3:Number=1):void{
this["steelConstractionMC"].scaleX = _arg2;
this["steelConstractionMC"].scaleY = _arg3;
this["steelConstractionMC"].rotation = _arg1;
this.cacheAsBitmap = true;
}
}
}//package vis
Section 326
//LoaderScreen (vis.LoaderScreen)
package vis {
import flash.display.*;
import levels.*;
import core.*;
public class LoaderScreen extends MovieClip {
private var baloonStartX:Number;
private var loadingStartX:Number;
public var baloonMC:MovieClip;
public var redirectingMC:MovieClip;
public var loadingMC:MovieClip;
public static const TYPE_REDIRECTING:int = 1;
public static const TYPE_LOADING:int = 0;
public function LoaderScreen(_arg1:String="weatherday", _arg2:int=0):void{
var _local3:BlueSky;
var _local4:int;
var _local5:NightSky;
var _local6:Star;
var _local7:NastySky;
super();
if (_arg2 == TYPE_LOADING){
this["redirectingMC"].visible = false;
} else {
this["loadingMC"].visible = false;
};
if (_arg1 == LevelData.WEATHER_DAY){
_local3 = new BlueSky();
_local3.scaleX = (Config.SCREEN_WIDTH / _local3.width);
this.addChildAt(_local3, 0);
} else {
if (_arg1 == LevelData.WEATHER_NIGHT){
_local4 = 0;
while (_local4 < 40) {
_local6 = new Star();
_local6.x = (Math.random() * Config.SCREEN_WIDTH);
_local6.y = (Math.random() * Config.SCREEN_HEIGHT);
this.addChildAt(_local6, 0);
_local4++;
};
_local5 = new NightSky();
if (_local5.width != 0){
_local5.scaleX = (Config.SCREEN_WIDTH / _local5.width);
};
this.addChildAt(_local5, 0);
} else {
if (_arg1 == LevelData.WEATHER_CLOUDY){
_local7 = new NastySky();
if (_local7.width != 0){
_local7.scaleX = (Config.SCREEN_WIDTH / _local7.width);
};
this.addChildAt(_local7, 0);
};
};
};
baloonStartX = this["baloonMC"]["maskMC"].x;
loadingStartX = this["loadingMC"]["maskMC"].x;
}
public function setPercentage(_arg1:Number):void{
var _local2:Number;
if (_arg1 < 0){
_arg1 = 0;
};
if (_arg1 > 1){
_arg1 = 1;
};
_local2 = (_arg1 * 223);
this["baloonMC"]["maskMC"].x = (this.baloonStartX + _local2);
this["loadingMC"]["maskMC"].x = (this.loadingStartX + _local2);
}
}
}//package vis
Section 327
//LoadingAdText (vis.LoadingAdText)
package vis {
import flash.display.*;
import flash.events.*;
public class LoadingAdText extends MovieClip {
private var direction:int;// = 0
private var iteration:Number;// = 0.05
public function LoadingAdText(){
direction = 0;
iteration = 0.05;
super();
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true);
}
private function onRemovedFromStage(_arg1:Event):void{
this.removeEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage);
this.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}
private function onAddedToStage(_arg1:Event):void{
this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
this.alpha = 1;
this.direction = -1;
this.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false, 0, true);
this.addEventListener(Event.REMOVED_FROM_STAGE, onRemovedFromStage, false, 0, true);
}
private function onEnterFrameHandler(_arg1:Event):void{
if (this.direction > 0){
this.alpha = (this.alpha + this.iteration);
if (this.alpha >= 1){
this.direction = -1;
return;
};
};
if (direction < 0){
this.alpha = (this.alpha - this.iteration);
if (this.alpha <= 0){
this.direction = 1;
return;
};
};
}
}
}//package vis
Section 328
//Moon (vis.Moon)
package vis {
import flash.display.*;
import flash.events.*;
public class Moon extends MovieClip {
public function Moon(){
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
}
private function enterFrameHandler(_arg1:Event):void{
if (this.currentFrame == this.totalFrames){
stop();
};
if ((((this.currentFrame == this.totalFrames)) && (((Math.random() * 500) > 498)))){
this.gotoAndPlay(1);
};
}
}
}//package vis
Section 329
//NastyCloud (vis.NastyCloud)
package vis {
public class NastyCloud extends Clouds {
}
}//package vis
Section 330
//NastySky (vis.NastySky)
package vis {
import flash.display.*;
public class NastySky extends MovieClip {
}
}//package vis
Section 331
//NightCloud (vis.NightCloud)
package vis {
public class NightCloud extends Clouds {
}
}//package vis
Section 332
//NightSky (vis.NightSky)
package vis {
import flash.display.*;
public class NightSky extends MovieClip {
}
}//package vis
Section 333
//Rain (vis.Rain)
package vis {
import flash.display.*;
public class Rain extends MovieClip {
public function Rain(){
cacheAsBitmap = true;
}
}
}//package vis
Section 334
//RoadSign (vis.RoadSign)
package vis {
import flash.display.*;
public class RoadSign extends MovieClip {
public static const SIGN_LEFT:String = "signLeft";
public static const SIGN_RIGHT:String = "signRight";
public function RoadSign(_arg1:String="signLeft"){
if (_arg1 == SIGN_RIGHT){
this.scaleX = -1;
};
this.cacheAsBitmap = true;
}
}
}//package vis
Section 335
//Star (vis.Star)
package vis {
import flash.display.*;
public class Star extends MovieClip {
}
}//package vis
Section 336
//Sun (vis.Sun)
package vis {
import flash.display.*;
public class Sun extends MovieClip {
}
}//package vis
Section 337
//TalkBaloon (vis.TalkBaloon)
package vis {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.text.*;
public class TalkBaloon extends MovieClip {
private const divider:Number = 3;
private var yesButton:SimpleButton;
public var yesBtn:SimpleButton;
private var nextButton:SimpleButton;
private var _text:String;
public var textFieldY:Number;
private var okButton:SimpleButton;
private var _type:int;
private var textProcessing:Boolean;
private var fadingIn:Boolean;
public var skipBtn:SimpleButton;
private var _textField:TextField;
public var nextBtn:SimpleButton;
private var noButton:SimpleButton;
private var fadingOut:Boolean;
private var skipButton:SimpleButton;
private var textMask:Sprite;
public var noBtn:SimpleButton;
public var okBtn:SimpleButton;
public var textfield:TextField;
private var _centeredText:Boolean;// = false
public static const TYPE_OK:int = 5;
public static const EVENT_TEXT_COMPLETE:String = "textComplete";
public static const EVENT_SHOWED:String = "showed";
public static const EVENT_YES:String = "onYES";
public static const EVENT_HIDDEN:String = "hidden";
public static const TYPE_NEXT:int = 1;
public static const EVENT_OK:String = "onOk";
public static const TYPE_YES_NO:int = 0;
public static const EVENT_NEXT:String = "onNext";
public static const TYPE_SKIP:int = 4;
public static const EVENT_NO:String = "onNo";
public static const EVENT_SKIP:String = "onSkip";
public static const TYPE_SKIP_NEXT:int = 3;
public static const TYPE_BLANK:int = 2;
public function TalkBaloon(){
_centeredText = false;
super();
this.textField = this["textfield"];
this.textField.text = "";
this.textField.embedFonts = true;
this.nextButton = this["nextBtn"];
this.yesButton = this["yesBtn"];
this.noButton = this["noBtn"];
this.skipButton = this["skipBtn"];
this.okButton = this["okBtn"];
this.text = "";
this.type = TalkBaloon.TYPE_BLANK;
this.fadingIn = false;
this.fadingOut = false;
this.textProcessing = false;
this.textFieldY = this.textField.y;
this.alpha = 0;
}
public function get centeredText():Boolean{
return (_centeredText);
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function onSkip(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloon.EVENT_SKIP));
}
public function pause():void{
}
private function fadeOut(_arg1:Event):void{
if (this.alpha > 0.05){
this.alpha = (this.alpha - (Math.abs(this.alpha) / this.divider));
} else {
this.alpha = 0;
this.visible = false;
this.fadingOut = false;
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.dispatchEvent(new Event(TalkBaloon.EVENT_HIDDEN));
};
}
private function onNo(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloon.EVENT_NO));
}
public function get text():String{
return (_text);
}
public function set fontSize(_arg1:Object):void{
var _local2:TextFormat;
_local2 = this.textField.defaultTextFormat;
_local2.size = _arg1;
this.textField.defaultTextFormat = _local2;
}
private function onOk(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloon.EVENT_OK));
}
public function set centeredText(_arg1:Boolean):void{
_centeredText = _arg1;
}
public function hide():void{
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
this.fadingOut = true;
this.addEventListener(Event.ENTER_FRAME, fadeOut, false, 0, true);
}
public function set type(_arg1:int):void{
if (_arg1 == TalkBaloon.TYPE_YES_NO){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = true;
if (!this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.addEventListener(MouseEvent.CLICK, onYes, false, 0, true);
};
if (!this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.noButton.visible = true;
if (!this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.addEventListener(MouseEvent.CLICK, onNo, false, 0, true);
};
if (!this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloon.TYPE_NEXT){
this.nextButton.visible = true;
this.nextButton.x = 188.8;
if (!this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TYPE_SKIP_NEXT){
this.nextButton.visible = true;
this.nextButton.x = 224.1;
if (!this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.skipButton.visible = true;
if (!this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.addEventListener(MouseEvent.CLICK, onSkip, false, 0, true);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloon.TYPE_SKIP){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = true;
this.skipButton.x = 188.8;
if (!this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.addEventListener(MouseEvent.CLICK, onSkip, false, 0, true);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloon.TYPE_OK){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = true;
if (!this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.addEventListener(MouseEvent.CLICK, onOk, false, 0, true);
};
if (!this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
} else {
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
};
};
};
};
};
_type = _arg1;
}
public function set text(_arg1:String):void{
if (_arg1 == _text){
return;
};
_text = _arg1;
this.textField.text = _text;
if (this.centeredText){
this.textField.y = (this.textFieldY + ((this.textField.height - this.textField.textHeight) / 2));
};
}
private function onYes(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloon.EVENT_YES));
}
private function textProcessingManager(_arg1:Event):void{
if (!this.textProcessing){
return;
};
if (this.textField.text.length == this.text.length){
this.removeEventListener(Event.ENTER_FRAME, textProcessingManager);
this.textProcessing = false;
this.dispatchEvent(new Event(TalkBaloon.EVENT_TEXT_COMPLETE));
return;
};
this.textField.appendText(this.text.charAt(this.textField.length));
}
public function get type():int{
return (_type);
}
private function onNext(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloon.EVENT_NEXT));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function set textField(_arg1:TextField):void{
_textField = _arg1;
}
private function fadeIn(_arg1:Event):void{
if (this.alpha < 0.95){
this.alpha = (this.alpha + (Math.abs((this.alpha - 1)) / this.divider));
} else {
this.alpha = 1;
this.fadingIn = false;
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.dispatchEvent(new Event(TalkBaloon.EVENT_SHOWED));
};
}
public function get textField():TextField{
return (_textField);
}
public function cleanup():void{
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
if (textProcessing){
this.removeEventListener(Event.ENTER_FRAME, textProcessingManager);
this.textProcessing = false;
};
}
public function show():void{
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
this.fadingIn = true;
this.visible = true;
this.addEventListener(Event.ENTER_FRAME, fadeIn, false, 0, true);
}
public function get fontSize():Object{
return (textField.defaultTextFormat.size);
}
}
}//package vis
Section 338
//TalkBaloonAlt (vis.TalkBaloonAlt)
package vis {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.text.*;
public class TalkBaloonAlt extends MovieClip {
private const divider:Number = 3;
public var yesBtn:SimpleButton;
private var nextButton:SimpleButton;
private var _text:String;
private var _type:int;
private var textProcessing:Boolean;
private var fadingIn:Boolean;
public var skipBtn:SimpleButton;
private var _textField:TextField;
public var nextBtn:SimpleButton;
private var noButton:SimpleButton;
private var fadingOut:Boolean;
private var skipButton:SimpleButton;
private var textMask:Sprite;
public var noBtn:SimpleButton;
public var textfield:TextField;
private var yesButton:SimpleButton;
public static const EVENT_SHOWED:String = "showed";
public static const TYPE_SKIP:int = 4;
public static const TYPE_YES_NO:int = 0;
public static const EVENT_TEXT_COMPLETE:String = "textComplete";
public static const EVENT_SKIP:String = "onSkip";
public static const TYPE_SKIP_NEXT:int = 3;
public static const TYPE_BLANK:int = 2;
public static const EVENT_YES:String = "onYES";
public static const EVENT_NO:String = "onNo";
public static const EVENT_HIDDEN:String = "hidden";
public static const TYPE_NEXT:int = 1;
public static const EVENT_NEXT:String = "onNext";
public function TalkBaloonAlt(){
this.textField = this["textfield"];
this.textField.text = "";
this.textField.embedFonts = true;
this.nextButton = this["nextBtn"];
this.yesButton = this["yesBtn"];
this.noButton = this["noBtn"];
this.skipButton = this["skipBtn"];
this.text = "";
this.type = TalkBaloonAlt.TYPE_BLANK;
this.fadingIn = false;
this.fadingOut = false;
this.textProcessing = false;
this.alpha = 0;
}
private function onNo(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonAlt.EVENT_NO));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function onSkip(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonAlt.EVENT_SKIP));
}
public function pause():void{
}
public function get text():String{
return (_text);
}
public function hide():void{
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
this.fadingOut = true;
this.addEventListener(Event.ENTER_FRAME, fadeOut, false, 0, true);
}
public function set type(_arg1:int):void{
if (_arg1 == TalkBaloonAlt.TYPE_YES_NO){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = true;
if (!this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.addEventListener(MouseEvent.CLICK, onYes);
};
if (!this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = true;
if (!this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.addEventListener(MouseEvent.CLICK, onNo);
};
if (!this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloonAlt.TYPE_NEXT){
this.nextButton.visible = true;
this.nextButton.x = this.skipButton.x;
this.nextButton.y = this.skipButton.y;
if (!this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TYPE_SKIP_NEXT){
this.nextButton.visible = true;
this.nextButton.x = 439.3;
if (!this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = true;
this.skipButton.x = 365.3;
if (!this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.addEventListener(MouseEvent.CLICK, onSkip);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloonAlt.TYPE_SKIP){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = true;
this.skipButton.x = 439.3;
if (!this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.addEventListener(MouseEvent.CLICK, onSkip);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
};
};
};
};
_type = _arg1;
}
public function set text(_arg1:String):void{
if (_arg1 == _text){
return;
};
_text = _arg1;
this.textField.text = _text;
}
private function fadeOut(_arg1:Event):void{
if (this.alpha > 0.05){
this.alpha = (this.alpha - (Math.abs(this.alpha) / this.divider));
} else {
this.alpha = 0;
this.visible = false;
this.fadingOut = false;
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.dispatchEvent(new Event(TalkBaloonAlt.EVENT_HIDDEN));
};
}
private function onYes(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonAlt.EVENT_YES));
}
private function textProcessingManager(_arg1:Event):void{
if (!this.textProcessing){
return;
};
if (this.textField.text.length == this.text.length){
this.removeEventListener(Event.ENTER_FRAME, textProcessingManager);
this.textProcessing = false;
this.dispatchEvent(new Event(TalkBaloonAlt.EVENT_TEXT_COMPLETE));
return;
};
this.textField.appendText(this.text.charAt(this.textField.length));
}
public function get type():int{
return (_type);
}
private function onNext(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonAlt.EVENT_NEXT));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function set textField(_arg1:TextField):void{
_textField = _arg1;
}
private function fadeIn(_arg1:Event):void{
if (this.alpha < 0.95){
this.alpha = (this.alpha + (Math.abs((this.alpha - 1)) / this.divider));
} else {
this.alpha = 1;
this.fadingIn = false;
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.dispatchEvent(new Event(TalkBaloonAlt.EVENT_SHOWED));
};
}
public function get textField():TextField{
return (_textField);
}
public function cleanup():void{
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
if (textProcessing){
this.removeEventListener(Event.ENTER_FRAME, textProcessingManager);
this.textProcessing = false;
};
}
public function set fontSize(_arg1:Object):void{
var _local2:TextFormat;
_local2 = this.textField.defaultTextFormat;
_local2.size = _arg1;
this.textField.defaultTextFormat = _local2;
}
public function show():void{
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
this.fadingIn = true;
this.visible = true;
this.addEventListener(Event.ENTER_FRAME, fadeIn, false, 0, true);
}
public function get fontSize():Object{
return (textField.defaultTextFormat.size);
}
}
}//package vis
Section 339
//TalkBaloonAltInv (vis.TalkBaloonAltInv)
package vis {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.text.*;
public class TalkBaloonAltInv extends MovieClip {
private const divider:Number = 3;
public var yesBtn:SimpleButton;
private var nextButton:SimpleButton;
private var _text:String;
private var _type:int;
private var textProcessing:Boolean;
private var fadingIn:Boolean;
public var skipBtn:SimpleButton;
private var _textField:TextField;
public var nextBtn:SimpleButton;
private var noButton:SimpleButton;
private var fadingOut:Boolean;
private var skipButton:SimpleButton;
private var textMask:Sprite;
public var noBtn:SimpleButton;
public var textfield:TextField;
private var yesButton:SimpleButton;
public static const EVENT_SHOWED:String = "showed";
public static const TYPE_SKIP:int = 4;
public static const TYPE_YES_NO:int = 0;
public static const EVENT_TEXT_COMPLETE:String = "textComplete";
public static const EVENT_SKIP:String = "onSkip";
public static const TYPE_SKIP_NEXT:int = 3;
public static const TYPE_BLANK:int = 2;
public static const EVENT_YES:String = "onYES";
public static const EVENT_NO:String = "onNo";
public static const EVENT_HIDDEN:String = "hidden";
public static const TYPE_NEXT:int = 1;
public static const EVENT_NEXT:String = "onNext";
public function TalkBaloonAltInv(){
this.textField = this["textfield"];
this.textField.text = "";
this.textField.embedFonts = true;
this.nextButton = this["nextBtn"];
this.yesButton = this["yesBtn"];
this.noButton = this["noBtn"];
this.skipButton = this["skipBtn"];
this.text = "";
this.type = TalkBaloonAltInv.TYPE_BLANK;
this.fadingIn = false;
this.fadingOut = false;
this.textProcessing = false;
this.alpha = 0;
}
private function onNo(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonAltInv.EVENT_NO));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function onSkip(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonAltInv.EVENT_SKIP));
}
public function pause():void{
}
public function get text():String{
return (_text);
}
public function hide():void{
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
this.fadingOut = true;
this.addEventListener(Event.ENTER_FRAME, fadeOut, false, 0, true);
}
public function set type(_arg1:int):void{
if (_arg1 == TalkBaloonAltInv.TYPE_YES_NO){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = true;
if (!this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.addEventListener(MouseEvent.CLICK, onYes);
};
if (!this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = true;
if (!this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.addEventListener(MouseEvent.CLICK, onNo);
};
if (!this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloonAltInv.TYPE_NEXT){
this.nextButton.visible = true;
this.nextButton.x = this.skipButton.x;
this.nextButton.y = this.skipButton.y;
if (!this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TYPE_SKIP_NEXT){
this.nextButton.visible = true;
this.nextButton.x = 439.3;
this.nextButton.y = -29.7;
if (!this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = true;
this.skipButton.x = 365.3;
this.skipButton.y = -31.7;
if (!this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.addEventListener(MouseEvent.CLICK, onSkip);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloonAltInv.TYPE_SKIP){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = true;
this.skipButton.x = 439.3;
this.skipButton.y = -31.7;
if (!this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.addEventListener(MouseEvent.CLICK, onSkip);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
};
};
};
};
_type = _arg1;
}
public function set text(_arg1:String):void{
if (_arg1 == _text){
return;
};
_text = _arg1;
this.textField.text = _text;
}
private function fadeOut(_arg1:Event):void{
if (this.alpha > 0.05){
this.alpha = (this.alpha - (Math.abs(this.alpha) / this.divider));
} else {
this.alpha = 0;
this.visible = false;
this.fadingOut = false;
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.dispatchEvent(new Event(TalkBaloonAltInv.EVENT_HIDDEN));
};
}
private function onYes(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonAltInv.EVENT_YES));
}
private function textProcessingManager(_arg1:Event):void{
if (!this.textProcessing){
return;
};
if (this.textField.text.length == this.text.length){
this.removeEventListener(Event.ENTER_FRAME, textProcessingManager);
this.textProcessing = false;
this.dispatchEvent(new Event(TalkBaloonAltInv.EVENT_TEXT_COMPLETE));
return;
};
this.textField.appendText(this.text.charAt(this.textField.length));
}
public function get type():int{
return (_type);
}
private function onNext(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonAltInv.EVENT_NEXT));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function set textField(_arg1:TextField):void{
_textField = _arg1;
}
private function fadeIn(_arg1:Event):void{
if (this.alpha < 0.95){
this.alpha = (this.alpha + (Math.abs((this.alpha - 1)) / this.divider));
} else {
this.alpha = 1;
this.fadingIn = false;
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.dispatchEvent(new Event(TalkBaloonAltInv.EVENT_SHOWED));
};
}
public function get textField():TextField{
return (_textField);
}
public function cleanup():void{
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
if (textProcessing){
this.removeEventListener(Event.ENTER_FRAME, textProcessingManager);
this.textProcessing = false;
};
}
public function set fontSize(_arg1:Object):void{
var _local2:TextFormat;
_local2 = this.textField.defaultTextFormat;
_local2.size = _arg1;
this.textField.defaultTextFormat = _local2;
}
public function show():void{
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
this.visible = true;
this.fadingIn = true;
this.addEventListener(Event.ENTER_FRAME, fadeIn, false, 0, true);
}
public function get fontSize():Object{
return (textField.defaultTextFormat.size);
}
}
}//package vis
Section 340
//TalkBaloonInv (vis.TalkBaloonInv)
package vis {
import flash.display.*;
import core.*;
import flash.events.*;
import flash.text.*;
public class TalkBaloonInv extends MovieClip {
private const divider:Number = 3;
public var yesBtn:SimpleButton;
private var nextButton:SimpleButton;
private var _text:String;
private var okButton:SimpleButton;
private var _type:int;
private var textProcessing:Boolean;
private var fadingIn:Boolean;
public var skipBtn:SimpleButton;
private var _textField:TextField;
public var nextBtn:SimpleButton;
private var noButton:SimpleButton;
private var fadingOut:Boolean;
private var skipButton:SimpleButton;
private var textMask:Sprite;
public var noBtn:SimpleButton;
public var okBtn:SimpleButton;
public var textfield:TextField;
private var yesButton:SimpleButton;
public static const TYPE_OK:int = 5;
public static const EVENT_TEXT_COMPLETE:String = "textComplete";
public static const EVENT_SHOWED:String = "showed";
public static const EVENT_YES:String = "onYES";
public static const EVENT_HIDDEN:String = "hidden";
public static const TYPE_NEXT:int = 1;
public static const EVENT_OK:String = "onOk";
public static const TYPE_YES_NO:int = 0;
public static const EVENT_NEXT:String = "onNext";
public static const TYPE_SKIP:int = 4;
public static const EVENT_NO:String = "onNo";
public static const EVENT_SKIP:String = "onSkip";
public static const TYPE_SKIP_NEXT:int = 3;
public static const TYPE_BLANK:int = 2;
public function TalkBaloonInv(){
this.textField = this["textfield"];
this.textField.text = "";
this.textField.embedFonts = true;
this.nextButton = this["nextBtn"];
this.yesButton = this["yesBtn"];
this.noButton = this["noBtn"];
this.skipButton = this["skipBtn"];
this.okButton = this["okBtn"];
this.text = "";
this.type = TalkBaloonInv.TYPE_BLANK;
this.fadingIn = false;
this.fadingOut = false;
this.textProcessing = false;
this.alpha = 0;
}
private function onNo(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonInv.EVENT_NO));
}
private function mouseOverHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OVER, true));
}
private function onSkip(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonInv.EVENT_SKIP));
}
public function pause():void{
}
public function get text():String{
return (_text);
}
private function onOk(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonInv.EVENT_OK));
}
public function hide():void{
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
this.fadingOut = true;
this.addEventListener(Event.ENTER_FRAME, fadeOut, false, 0, true);
}
public function set type(_arg1:int):void{
if (_arg1 == TalkBaloonInv.TYPE_YES_NO){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = true;
if (!this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.addEventListener(MouseEvent.CLICK, onYes, false, 0, true);
};
if (!this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.noButton.visible = true;
if (!this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.addEventListener(MouseEvent.CLICK, onNo, false, 0, true);
};
if (!this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloonInv.TYPE_NEXT){
this.nextButton.visible = true;
this.nextButton.x = 172.6;
if (!this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TYPE_SKIP_NEXT){
this.nextButton.visible = true;
this.nextButton.x = 208.8;
if (!this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.addEventListener(MouseEvent.CLICK, onNext, false, 0, true);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.skipButton.visible = true;
this.skipButton.x = 135.7;
if (!this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.addEventListener(MouseEvent.CLICK, onSkip, false, 0, true);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloonInv.TYPE_SKIP){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = true;
this.skipButton.x = 172.6;
if (!this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.addEventListener(MouseEvent.CLICK, onSkip, false, 0, true);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
} else {
if (_arg1 == TalkBaloonInv.TYPE_OK){
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = true;
if (!this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.addEventListener(MouseEvent.CLICK, onOk, false, 0, true);
};
if (!this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler, false, 0, true);
};
if (!this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler, false, 0, true);
};
} else {
this.nextButton.visible = false;
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.skipButton.visible = false;
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.yesButton.visible = false;
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.noButton.visible = false;
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
this.okButton.visible = false;
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
};
};
};
};
};
_type = _arg1;
}
public function set text(_arg1:String):void{
if (_arg1 == _text){
return;
};
_text = _arg1;
this.textField.text = _text;
}
private function fadeOut(_arg1:Event):void{
if (this.alpha > 0.05){
this.alpha = (this.alpha - (Math.abs(this.alpha) / this.divider));
} else {
this.alpha = 0;
this.visible = false;
this.fadingOut = false;
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.dispatchEvent(new Event(TalkBaloonInv.EVENT_HIDDEN));
};
}
private function onYes(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonInv.EVENT_YES));
}
private function textProcessingManager(_arg1:Event):void{
if (!this.textProcessing){
return;
};
if (this.textField.text.length == this.text.length){
this.removeEventListener(Event.ENTER_FRAME, textProcessingManager);
this.textProcessing = false;
this.dispatchEvent(new Event(TalkBaloonInv.EVENT_TEXT_COMPLETE));
return;
};
this.textField.appendText(this.text.charAt(this.textField.length));
}
public function get type():int{
return (_type);
}
private function onNext(_arg1:MouseEvent):void{
this.dispatchEvent(new Event(TalkBaloonInv.EVENT_NEXT));
}
private function mouseOutHandler(_arg1:MouseEvent):void{
dispatchEvent(new Event(Config.EVENT_MOUSE_OUT, true));
}
public function set textField(_arg1:TextField):void{
_textField = _arg1;
}
private function fadeIn(_arg1:Event):void{
if (this.alpha < 0.95){
this.alpha = (this.alpha + (Math.abs((this.alpha - 1)) / this.divider));
} else {
this.alpha = 1;
this.fadingIn = false;
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.dispatchEvent(new Event(TalkBaloonInv.EVENT_SHOWED));
};
}
public function get textField():TextField{
return (_textField);
}
public function cleanup():void{
if (this.nextButton.hasEventListener(MouseEvent.CLICK)){
this.nextButton.removeEventListener(MouseEvent.CLICK, onNext);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.nextButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.nextButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.CLICK)){
this.skipButton.removeEventListener(MouseEvent.CLICK, onSkip);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.skipButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.skipButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.CLICK)){
this.yesButton.removeEventListener(MouseEvent.CLICK, onYes);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.yesButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.yesButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.noButton.hasEventListener(MouseEvent.CLICK)){
this.noButton.removeEventListener(MouseEvent.CLICK, onNo);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.noButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.noButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.okButton.hasEventListener(MouseEvent.CLICK)){
this.okButton.removeEventListener(MouseEvent.CLICK, onOk);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OVER)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
};
if (this.okButton.hasEventListener(MouseEvent.MOUSE_OUT)){
this.okButton.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
};
if (this.fadingIn){
this.removeEventListener(Event.ENTER_FRAME, fadeIn);
this.fadingIn = false;
};
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
if (textProcessing){
this.removeEventListener(Event.ENTER_FRAME, textProcessingManager);
this.textProcessing = false;
};
}
public function set fontSize(_arg1:Object):void{
var _local2:TextFormat;
_local2 = this.textField.defaultTextFormat;
_local2.size = _arg1;
this.textField.defaultTextFormat = _local2;
}
public function show():void{
if (this.fadingOut){
this.removeEventListener(Event.ENTER_FRAME, fadeOut);
this.fadingOut = false;
};
this.fadingIn = true;
this.visible = true;
this.addEventListener(Event.ENTER_FRAME, fadeIn, false, 0, true);
}
public function get fontSize():Object{
return (textField.defaultTextFormat.size);
}
}
}//package vis
Section 341
//Thunder (vis.Thunder)
package vis {
import flash.display.*;
import flash.events.*;
public class Thunder extends MovieClip {
public function Thunder(){
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function enterFrameHandler(_arg1:Event):void{
if (this.currentFrame == this.totalFrames){
stop();
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
if (this.parent != null){
this.parent.removeChild(this);
};
};
}
}
}//package vis
Section 342
//TutorialArrow (vis.TutorialArrow)
package vis {
import flash.display.*;
import flash.events.*;
public dynamic class TutorialArrow extends MovieClip {
private var _totalTicks:int;
private var startX:Number;
private var startY:Number;
public var clip:MovieClip;
private var speed:Number;
private var _timer:int;
private var delay:int;
private var _paused:Boolean;// = false
private var _ident:Number;
public function TutorialArrow(){
_paused = false;
super();
}
private function enterFrameHandler(_arg1:Event):void{
_timer++;
if (_timer == 20){
this.visible = !(this.visible);
_timer = 0;
};
}
public function get paused():Boolean{
return (this._paused);
}
public function set paused(_arg1:Boolean):void{
this._paused = _arg1;
if (_arg1){
(this.getChildAt(0) as MovieClip).stop();
} else {
(this.getChildAt(0) as MovieClip).play();
};
}
private function buildMagicHandler(_arg1:Event):void{
_timer++;
if (_timer >= _totalTicks){
_timer = 0;
this["clip"].gotoAndStop(1);
this.x = this.startX;
this.y = this.startY;
};
if (_timer <= delay){
return;
};
if (_timer >= (_totalTicks - delay)){
return;
};
if ((((_timer <= (delay + 7))) || ((_timer >= (_totalTicks - (delay + 7)))))){
this["clip"].nextFrame();
} else {
this.x = (this.x + _ident);
};
}
public function stopBuildAnimation():void{
if (this.hasEventListener(Event.ENTER_FRAME)){
this.removeEventListener(Event.ENTER_FRAME, buildMagicHandler);
this.x = this.startX;
this.y = this.startY;
this["clip"].gotoAndPlay(1);
};
}
public function cleanup():void{
if (this.hasEventListener(Event.ENTER_FRAME)){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
};
}
public function startBuildAnimation(_arg1:Number):void{
if (!this.stage){
return;
};
if (this.hasEventListener(Event.ENTER_FRAME)){
this.stopBuildAnimation();
};
this["clip"].gotoAndStop(1);
this.startX = this.x;
this.startY = this.y;
delay = 20;
speed = 70;
_timer = 0;
_totalTicks = ((((7 + 7) + Math.round(((this.stage.frameRate * _arg1) / speed))) + delay) + delay);
_ident = (speed / this.stage.frameRate);
this.addEventListener(Event.ENTER_FRAME, buildMagicHandler, false, 0, true);
}
}
}//package vis
Section 343
//CellRenderer_disabledSkin (CellRenderer_disabledSkin)
package {
import flash.display.*;
public dynamic class CellRenderer_disabledSkin extends MovieClip {
}
}//package
Section 344
//CellRenderer_downSkin (CellRenderer_downSkin)
package {
import flash.display.*;
public dynamic class CellRenderer_downSkin extends MovieClip {
}
}//package
Section 345
//CellRenderer_overSkin (CellRenderer_overSkin)
package {
import flash.display.*;
public dynamic class CellRenderer_overSkin extends MovieClip {
}
}//package
Section 346
//CellRenderer_selectedDisabledSkin (CellRenderer_selectedDisabledSkin)
package {
import flash.display.*;
public dynamic class CellRenderer_selectedDisabledSkin extends MovieClip {
}
}//package
Section 347
//CellRenderer_selectedDownSkin (CellRenderer_selectedDownSkin)
package {
import flash.display.*;
public dynamic class CellRenderer_selectedDownSkin extends MovieClip {
}
}//package
Section 348
//CellRenderer_selectedOverSkin (CellRenderer_selectedOverSkin)
package {
import flash.display.*;
public dynamic class CellRenderer_selectedOverSkin extends MovieClip {
}
}//package
Section 349
//CellRenderer_selectedUpSkin (CellRenderer_selectedUpSkin)
package {
import flash.display.*;
public dynamic class CellRenderer_selectedUpSkin extends MovieClip {
}
}//package
Section 350
//CellRenderer_upSkin (CellRenderer_upSkin)
package {
import flash.display.*;
public dynamic class CellRenderer_upSkin extends MovieClip {
}
}//package
Section 351
//ComboBox_disabledSkin (ComboBox_disabledSkin)
package {
import flash.display.*;
public dynamic class ComboBox_disabledSkin extends MovieClip {
}
}//package
Section 352
//ComboBox_downSkin (ComboBox_downSkin)
package {
import flash.display.*;
public dynamic class ComboBox_downSkin extends MovieClip {
}
}//package
Section 353
//ComboBox_overSkin (ComboBox_overSkin)
package {
import flash.display.*;
public dynamic class ComboBox_overSkin extends MovieClip {
}
}//package
Section 354
//ComboBox_upSkin (ComboBox_upSkin)
package {
import flash.display.*;
public dynamic class ComboBox_upSkin extends MovieClip {
}
}//package
Section 355
//Flag (Flag)
package {
import flash.display.*;
public dynamic class Flag extends MovieClip {
}
}//package
Section 356
//focusRectSkin (focusRectSkin)
package {
import flash.display.*;
public dynamic class focusRectSkin extends MovieClip {
}
}//package
Section 357
//IslandTextWS (IslandTextWS)
package {
import flash.display.*;
public dynamic class IslandTextWS extends MovieClip {
public var islandMC:MovieClip;
}
}//package
Section 358
//List_skin (List_skin)
package {
import flash.display.*;
public dynamic class List_skin extends MovieClip {
}
}//package
Section 359
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
var _local3:MochiBot;
var _local4:String;
var _local5:URLVariables;
var _local6:String;
var _local7:URLRequest;
var _local8:Loader;
if (Security.sandboxType == "localWithFile"){
return (null);
};
_local3 = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
_local4 = "http://core.mochibot.com/my/core.swf";
_local5 = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
_local6 = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
_local7 = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
_local8 = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 360
//ScrollArrowDown_disabledSkin (ScrollArrowDown_disabledSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_disabledSkin extends MovieClip {
}
}//package
Section 361
//ScrollArrowDown_downSkin (ScrollArrowDown_downSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_downSkin extends MovieClip {
}
}//package
Section 362
//ScrollArrowDown_overSkin (ScrollArrowDown_overSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_overSkin extends MovieClip {
}
}//package
Section 363
//ScrollArrowDown_upSkin (ScrollArrowDown_upSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_upSkin extends MovieClip {
}
}//package
Section 364
//ScrollArrowUp_disabledSkin (ScrollArrowUp_disabledSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_disabledSkin extends MovieClip {
}
}//package
Section 365
//ScrollArrowUp_downSkin (ScrollArrowUp_downSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_downSkin extends MovieClip {
}
}//package
Section 366
//ScrollArrowUp_overSkin (ScrollArrowUp_overSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_overSkin extends MovieClip {
}
}//package
Section 367
//ScrollArrowUp_upSkin (ScrollArrowUp_upSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_upSkin extends MovieClip {
}
}//package
Section 368
//ScrollBar_thumbIcon (ScrollBar_thumbIcon)
package {
import flash.display.*;
public dynamic class ScrollBar_thumbIcon extends MovieClip {
}
}//package
Section 369
//ScrollThumb_downSkin (ScrollThumb_downSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_downSkin extends MovieClip {
}
}//package
Section 370
//ScrollThumb_overSkin (ScrollThumb_overSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_overSkin extends MovieClip {
}
}//package
Section 371
//ScrollThumb_upSkin (ScrollThumb_upSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_upSkin extends MovieClip {
}
}//package
Section 372
//ScrollTrack_skin (ScrollTrack_skin)
package {
import flash.display.*;
public dynamic class ScrollTrack_skin extends MovieClip {
}
}//package
Section 373
//sprite_1 (sprite_1)
package {
import flash.display.*;
public dynamic class sprite_1 extends MovieClip {
}
}//package
Section 374
//sprite_10 (sprite_10)
package {
import flash.display.*;
public dynamic class sprite_10 extends MovieClip {
}
}//package
Section 375
//sprite_11 (sprite_11)
package {
import flash.display.*;
public dynamic class sprite_11 extends MovieClip {
}
}//package
Section 376
//sprite_12 (sprite_12)
package {
import flash.display.*;
public dynamic class sprite_12 extends MovieClip {
}
}//package
Section 377
//sprite_13 (sprite_13)
package {
import flash.display.*;
public dynamic class sprite_13 extends MovieClip {
}
}//package
Section 378
//sprite_14 (sprite_14)
package {
import flash.display.*;
public dynamic class sprite_14 extends MovieClip {
}
}//package
Section 379
//sprite_15 (sprite_15)
package {
import flash.display.*;
public dynamic class sprite_15 extends MovieClip {
}
}//package
Section 380
//sprite_16 (sprite_16)
package {
import flash.display.*;
public dynamic class sprite_16 extends MovieClip {
}
}//package
Section 381
//sprite_17 (sprite_17)
package {
import flash.display.*;
public dynamic class sprite_17 extends MovieClip {
}
}//package
Section 382
//sprite_2 (sprite_2)
package {
import flash.display.*;
public dynamic class sprite_2 extends MovieClip {
}
}//package
Section 383
//sprite_3 (sprite_3)
package {
import flash.display.*;
public dynamic class sprite_3 extends MovieClip {
}
}//package
Section 384
//sprite_4 (sprite_4)
package {
import flash.display.*;
public dynamic class sprite_4 extends MovieClip {
}
}//package
Section 385
//sprite_5 (sprite_5)
package {
import flash.display.*;
public dynamic class sprite_5 extends MovieClip {
}
}//package
Section 386
//sprite_6 (sprite_6)
package {
import flash.display.*;
public dynamic class sprite_6 extends MovieClip {
}
}//package
Section 387
//sprite_7 (sprite_7)
package {
import flash.display.*;
public dynamic class sprite_7 extends MovieClip {
}
}//package
Section 388
//sprite_8 (sprite_8)
package {
import flash.display.*;
public dynamic class sprite_8 extends MovieClip {
}
}//package
Section 389
//sprite_9 (sprite_9)
package {
import flash.display.*;
public dynamic class sprite_9 extends MovieClip {
}
}//package
Section 390
//TextArea_disabledSkin (TextArea_disabledSkin)
package {
import flash.display.*;
public dynamic class TextArea_disabledSkin extends MovieClip {
}
}//package
Section 391
//TextArea_upSkin (TextArea_upSkin)
package {
import flash.display.*;
public dynamic class TextArea_upSkin extends MovieClip {
}
}//package
Section 392
//TextInput_disabledSkin (TextInput_disabledSkin)
package {
import flash.display.*;
public dynamic class TextInput_disabledSkin extends MovieClip {
}
}//package
Section 393
//TextInput_upSkin (TextInput_upSkin)
package {
import flash.display.*;
public dynamic class TextInput_upSkin extends MovieClip {
}
}//package
Section 394
//ViralStinger (ViralStinger)
package {
import flash.display.*;
public dynamic class ViralStinger extends MovieClip {
public function ViralStinger(){
addFrameScript(191, frame192);
}
function frame192(){
stop();
}
}
}//package
Section 395
//VolumeBarGFX (VolumeBarGFX)
package {
import flash.display.*;
public dynamic class VolumeBarGFX extends Sprite {
public var bg:MovieClip;
public var slider:MovieClip;
}
}//package