Section 1
//ChunkUI (assets.effects.ChunkUI)
package assets.effects {
import flash.display.*;
public dynamic class ChunkUI extends MovieClip {
}
}//package assets.effects
Section 2
//ExplodeUI (assets.effects.ExplodeUI)
package assets.effects {
import flash.display.*;
public dynamic class ExplodeUI extends MovieClip {
}
}//package assets.effects
Section 3
//MapScar (assets.effects.MapScar)
package assets.effects {
import flash.display.*;
public dynamic class MapScar extends MovieClip {
}
}//package assets.effects
Section 4
//ParticleUI (assets.effects.ParticleUI)
package assets.effects {
import flash.display.*;
public dynamic class ParticleUI extends MovieClip {
}
}//package assets.effects
Section 5
//AIMSentry_BlueClip (assets.enemies.AIMSentry_BlueClip)
package assets.enemies {
import flash.display.*;
public dynamic class AIMSentry_BlueClip extends MovieClip {
public function AIMSentry_BlueClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 6
//AIMSentry_RedClip (assets.enemies.AIMSentry_RedClip)
package assets.enemies {
import flash.display.*;
public dynamic class AIMSentry_RedClip extends MovieClip {
public function AIMSentry_RedClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 7
//AIMSentry_YellowClip (assets.enemies.AIMSentry_YellowClip)
package assets.enemies {
import flash.display.*;
public dynamic class AIMSentry_YellowClip extends MovieClip {
public function AIMSentry_YellowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 8
//AIMSentryShadowClip (assets.enemies.AIMSentryShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class AIMSentryShadowClip extends MovieClip {
public function AIMSentryShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 9
//AttackAPCClip (assets.enemies.AttackAPCClip)
package assets.enemies {
import flash.display.*;
public dynamic class AttackAPCClip extends MovieClip {
public function AttackAPCClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 10
//AttackAPCShadowClip (assets.enemies.AttackAPCShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class AttackAPCShadowClip extends MovieClip {
public function AttackAPCShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 11
//CruiseMissileClip (assets.enemies.CruiseMissileClip)
package assets.enemies {
import flash.display.*;
public dynamic class CruiseMissileClip extends MovieClip {
public function CruiseMissileClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 12
//CruiseMissileShadowClip (assets.enemies.CruiseMissileShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class CruiseMissileShadowClip extends MovieClip {
public function CruiseMissileShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 13
//DoombotClip (assets.enemies.DoombotClip)
package assets.enemies {
import flash.display.*;
public dynamic class DoombotClip extends MovieClip {
public function DoombotClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 14
//DoombotShadow (assets.enemies.DoombotShadow)
package assets.enemies {
import flash.display.*;
public dynamic class DoombotShadow extends MovieClip {
public function DoombotShadow(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 15
//DrDoomClip (assets.enemies.DrDoomClip)
package assets.enemies {
import flash.display.*;
public dynamic class DrDoomClip extends MovieClip {
public function DrDoomClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 16
//DrDoomShadowClip (assets.enemies.DrDoomShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class DrDoomShadowClip extends MovieClip {
public function DrDoomShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 17
//HealthBar (assets.enemies.HealthBar)
package assets.enemies {
import flash.display.*;
public dynamic class HealthBar extends MovieClip {
public var green_mc:MovieClip;
public var red_mc:MovieClip;
}
}//package assets.enemies
Section 18
//HeavyTankClip (assets.enemies.HeavyTankClip)
package assets.enemies {
import flash.display.*;
public dynamic class HeavyTankClip extends MovieClip {
public function HeavyTankClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 19
//HeavyTankShadowClip (assets.enemies.HeavyTankShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class HeavyTankShadowClip extends MovieClip {
public function HeavyTankShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 20
//HelicopterClip (assets.enemies.HelicopterClip)
package assets.enemies {
import flash.display.*;
public dynamic class HelicopterClip extends MovieClip {
public function HelicopterClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 21
//HelicopterShadowClip (assets.enemies.HelicopterShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class HelicopterShadowClip extends MovieClip {
public function HelicopterShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 22
//JeepClip (assets.enemies.JeepClip)
package assets.enemies {
import flash.display.*;
public dynamic class JeepClip extends MovieClip {
public function JeepClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 23
//JeepShadowClip (assets.enemies.JeepShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class JeepShadowClip extends MovieClip {
public function JeepShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 24
//LightTankClip (assets.enemies.LightTankClip)
package assets.enemies {
import flash.display.*;
public dynamic class LightTankClip extends MovieClip {
public function LightTankClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 25
//LightTankShadowClip (assets.enemies.LightTankShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class LightTankShadowClip extends MovieClip {
public function LightTankShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 26
//ModokClip (assets.enemies.ModokClip)
package assets.enemies {
import flash.display.*;
public dynamic class ModokClip extends MovieClip {
public function ModokClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 27
//ModokShadowClip (assets.enemies.ModokShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class ModokShadowClip extends MovieClip {
public function ModokShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 28
//MoleManClip (assets.enemies.MoleManClip)
package assets.enemies {
import flash.display.*;
public dynamic class MoleManClip extends MovieClip {
public function MoleManClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 29
//MoleManShadowClip (assets.enemies.MoleManShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class MoleManShadowClip extends MovieClip {
public function MoleManShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 30
//MoleoidClip (assets.enemies.MoleoidClip)
package assets.enemies {
import flash.display.*;
public dynamic class MoleoidClip extends MovieClip {
public function MoleoidClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 31
//MoleoidShadowClip (assets.enemies.MoleoidShadowClip)
package assets.enemies {
import flash.display.*;
public dynamic class MoleoidShadowClip extends MovieClip {
public function MoleoidShadowClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets.enemies
Section 32
//BlasterTowerIcon (assets.hud.BlasterTowerIcon)
package assets.hud {
import flash.display.*;
public dynamic class BlasterTowerIcon extends MovieClip {
}
}//package assets.hud
Section 33
//BossPopupPanel (assets.hud.BossPopupPanel)
package assets.hud {
import flash.display.*;
import flash.text.*;
public dynamic class BossPopupPanel extends MovieClip {
public var txt:TextField;
public var avatar:MovieClip;
}
}//package assets.hud
Section 34
//BuyPanel (assets.hud.BuyPanel)
package assets.hud {
import flash.display.*;
public dynamic class BuyPanel extends MovieClip {
public var msmarvelDisabled:MovieClip;
public var ironmanOver:MovieClip;
public var spidermanOver:MovieClip;
public var thorOver:MovieClip;
public var cyclopsDisabled:MovieClip;
public var cyclopsEnabled:MovieClip;
public var ironmanEnabled:MovieClip;
public var msmarvelOver:MovieClip;
public var cyclopsOver:MovieClip;
public var thorEnabled:MovieClip;
public var msmarvelEnabled:MovieClip;
public var spidermanEnabled:MovieClip;
public var ironmanDisabled:MovieClip;
public var spidermanDisabled:MovieClip;
public var thorDisabled:MovieClip;
}
}//package assets.hud
Section 35
//BuyStatsPanel (assets.hud.BuyStatsPanel)
package assets.hud {
import flash.display.*;
import flash.text.*;
public dynamic class BuyStatsPanel extends MovieClip {
public var label:MovieClip;
public var cost_txt:TextField;
public var statBar:StatBar;
}
}//package assets.hud
Section 36
//ConfirmExitScreen (assets.hud.ConfirmExitScreen)
package assets.hud {
import flash.display.*;
public dynamic class ConfirmExitScreen extends MovieClip {
public var noButton:MovieClip;
public var yesGlow:MovieClip;
public var yesButton:MovieClip;
public var noGlow:MovieClip;
}
}//package assets.hud
Section 37
//DifficultySelectScreen (assets.hud.DifficultySelectScreen)
package assets.hud {
import flash.display.*;
public dynamic class DifficultySelectScreen extends MovieClip {
public var epicGlow:MovieClip;
public var epicButton:MovieClip;
public var normalButton:MovieClip;
public var normalGlow:MovieClip;
}
}//package assets.hud
Section 38
//GameBottomPanel (assets.hud.GameBottomPanel)
package assets.hud {
import flash.display.*;
import flash.text.*;
public dynamic class GameBottomPanel extends MovieClip {
public var livesProgress:MovieClip;
public var sendNextWave:MovieClip;
public var waveProgress:MovieClip;
public var nextWaveGlow:MovieClip;
public var wave_txt:TextField;
}
}//package assets.hud
Section 39
//GameDefeatScreen (assets.hud.GameDefeatScreen)
package assets.hud {
import flash.display.*;
public dynamic class GameDefeatScreen extends MovieClip {
}
}//package assets.hud
Section 40
//GameHelpScreen (assets.hud.GameHelpScreen)
package assets.hud {
import flash.display.*;
public dynamic class GameHelpScreen extends MovieClip {
public var closeButton:MovieClip;
public var closeGlow:MovieClip;
}
}//package assets.hud
Section 41
//GamePauseScreen (assets.hud.GamePauseScreen)
package assets.hud {
import flash.display.*;
public dynamic class GamePauseScreen extends MovieClip {
public var pauseButton:MovieClip;
public var pauseGlow:MovieClip;
}
}//package assets.hud
Section 42
//GameTopPanel (assets.hud.GameTopPanel)
package assets.hud {
import flash.display.*;
import flash.text.*;
public dynamic class GameTopPanel extends MovieClip {
public var score_txt:TextField;
public var cash_txt:TextField;
public var helpBtn:MovieClip;
public var scoretext:TextField;
}
}//package assets.hud
Section 43
//GameVictoryScreen (assets.hud.GameVictoryScreen)
package assets.hud {
import flash.display.*;
public dynamic class GameVictoryScreen extends MovieClip {
public var skipGlowBtn:MovieClip;
public var victoryImage:MovieClip;
public var videoWindow:MovieClip;
public var skipBtn:MovieClip;
}
}//package assets.hud
Section 44
//HoverAllowed (assets.hud.HoverAllowed)
package assets.hud {
import flash.display.*;
public dynamic class HoverAllowed extends MovieClip {
}
}//package assets.hud
Section 45
//HoverDenied (assets.hud.HoverDenied)
package assets.hud {
import flash.display.*;
public dynamic class HoverDenied extends MovieClip {
}
}//package assets.hud
Section 46
//HudBG (assets.hud.HudBG)
package assets.hud {
import flash.display.*;
public dynamic class HudBG extends MovieClip {
}
}//package assets.hud
Section 47
//LaserTowerIcon (assets.hud.LaserTowerIcon)
package assets.hud {
import flash.display.*;
public dynamic class LaserTowerIcon extends MovieClip {
}
}//package assets.hud
Section 48
//LightningTowerIcon (assets.hud.LightningTowerIcon)
package assets.hud {
import flash.display.*;
public dynamic class LightningTowerIcon extends MovieClip {
}
}//package assets.hud
Section 49
//RocketTowerIcon (assets.hud.RocketTowerIcon)
package assets.hud {
import flash.display.*;
public dynamic class RocketTowerIcon extends MovieClip {
}
}//package assets.hud
Section 50
//SelectedPanel (assets.hud.SelectedPanel)
package assets.hud {
import flash.display.*;
public dynamic class SelectedPanel extends MovieClip {
public var badge:MovieClip;
public var sellOver:MovieClip;
public var upgradeOver:MovieClip;
public var closeOver:MovieClip;
public var label:MovieClip;
public var closeOff:MovieClip;
public var icon:MovieClip;
public var upgradeOff:MovieClip;
public var sellOff:MovieClip;
public var statBar:StatBar;
}
}//package assets.hud
Section 51
//SlowdownTowerIcon (assets.hud.SlowdownTowerIcon)
package assets.hud {
import flash.display.*;
public dynamic class SlowdownTowerIcon extends MovieClip {
}
}//package assets.hud
Section 52
//StatBar (assets.hud.StatBar)
package assets.hud {
import flash.display.*;
public dynamic class StatBar extends MovieClip {
public var frequency:MovieClip;
public var range:MovieClip;
public var damage:MovieClip;
}
}//package assets.hud
Section 53
//DamageFlash (assets.level01.fortress.DamageFlash)
package assets.level01.fortress {
import flash.display.*;
public dynamic class DamageFlash extends MovieClip {
}
}//package assets.level01.fortress
Section 54
//HealthFull (assets.level01.fortress.HealthFull)
package assets.level01.fortress {
import flash.display.*;
public dynamic class HealthFull extends MovieClip {
}
}//package assets.level01.fortress
Section 55
//HealthLow (assets.level01.fortress.HealthLow)
package assets.level01.fortress {
import flash.display.*;
public dynamic class HealthLow extends MovieClip {
}
}//package assets.level01.fortress
Section 56
//HealthMedium (assets.level01.fortress.HealthMedium)
package assets.level01.fortress {
import flash.display.*;
public dynamic class HealthMedium extends MovieClip {
}
}//package assets.level01.fortress
Section 57
//BlasterTowerL1 (assets.towers.BlasterTowerL1)
package assets.towers {
import flash.display.*;
public dynamic class BlasterTowerL1 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 58
//BlasterTowerL2 (assets.towers.BlasterTowerL2)
package assets.towers {
import flash.display.*;
public dynamic class BlasterTowerL2 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 59
//BlasterTowerL3 (assets.towers.BlasterTowerL3)
package assets.towers {
import flash.display.*;
public dynamic class BlasterTowerL3 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 60
//BlasterTowerShadowL1 (assets.towers.BlasterTowerShadowL1)
package assets.towers {
import flash.display.*;
public dynamic class BlasterTowerShadowL1 extends MovieClip {
}
}//package assets.towers
Section 61
//BlasterTowerShadowL2 (assets.towers.BlasterTowerShadowL2)
package assets.towers {
import flash.display.*;
public dynamic class BlasterTowerShadowL2 extends MovieClip {
}
}//package assets.towers
Section 62
//BlasterTowerShadowL3 (assets.towers.BlasterTowerShadowL3)
package assets.towers {
import flash.display.*;
public dynamic class BlasterTowerShadowL3 extends MovieClip {
}
}//package assets.towers
Section 63
//LaserTowerL1 (assets.towers.LaserTowerL1)
package assets.towers {
import flash.display.*;
public dynamic class LaserTowerL1 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 64
//LaserTowerL2 (assets.towers.LaserTowerL2)
package assets.towers {
import flash.display.*;
public dynamic class LaserTowerL2 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 65
//LaserTowerL3 (assets.towers.LaserTowerL3)
package assets.towers {
import flash.display.*;
public dynamic class LaserTowerL3 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 66
//LaserTowerShadowL1 (assets.towers.LaserTowerShadowL1)
package assets.towers {
import flash.display.*;
public dynamic class LaserTowerShadowL1 extends MovieClip {
}
}//package assets.towers
Section 67
//LaserTowerShadowL2 (assets.towers.LaserTowerShadowL2)
package assets.towers {
import flash.display.*;
public dynamic class LaserTowerShadowL2 extends MovieClip {
}
}//package assets.towers
Section 68
//LaserTowerShadowL3 (assets.towers.LaserTowerShadowL3)
package assets.towers {
import flash.display.*;
public dynamic class LaserTowerShadowL3 extends MovieClip {
}
}//package assets.towers
Section 69
//LightningTowerL1 (assets.towers.LightningTowerL1)
package assets.towers {
import flash.display.*;
public dynamic class LightningTowerL1 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 70
//LightningTowerL2 (assets.towers.LightningTowerL2)
package assets.towers {
import flash.display.*;
public dynamic class LightningTowerL2 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 71
//LightningTowerL3 (assets.towers.LightningTowerL3)
package assets.towers {
import flash.display.*;
public dynamic class LightningTowerL3 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 72
//LightningTowerShadowL1 (assets.towers.LightningTowerShadowL1)
package assets.towers {
import flash.display.*;
public dynamic class LightningTowerShadowL1 extends MovieClip {
}
}//package assets.towers
Section 73
//LightningTowerShadowL2 (assets.towers.LightningTowerShadowL2)
package assets.towers {
import flash.display.*;
public dynamic class LightningTowerShadowL2 extends MovieClip {
}
}//package assets.towers
Section 74
//LightningTowerShadowL3 (assets.towers.LightningTowerShadowL3)
package assets.towers {
import flash.display.*;
public dynamic class LightningTowerShadowL3 extends MovieClip {
}
}//package assets.towers
Section 75
//RocketTowerL1 (assets.towers.RocketTowerL1)
package assets.towers {
import flash.display.*;
public dynamic class RocketTowerL1 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 76
//RocketTowerL2 (assets.towers.RocketTowerL2)
package assets.towers {
import flash.display.*;
public dynamic class RocketTowerL2 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 77
//RocketTowerL3 (assets.towers.RocketTowerL3)
package assets.towers {
import flash.display.*;
public dynamic class RocketTowerL3 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 78
//RocketTowerShadowL1 (assets.towers.RocketTowerShadowL1)
package assets.towers {
import flash.display.*;
public dynamic class RocketTowerShadowL1 extends MovieClip {
}
}//package assets.towers
Section 79
//RocketTowerShadowL2 (assets.towers.RocketTowerShadowL2)
package assets.towers {
import flash.display.*;
public dynamic class RocketTowerShadowL2 extends MovieClip {
}
}//package assets.towers
Section 80
//RocketTowerShadowL3 (assets.towers.RocketTowerShadowL3)
package assets.towers {
import flash.display.*;
public dynamic class RocketTowerShadowL3 extends MovieClip {
}
}//package assets.towers
Section 81
//SlowdownTowerL1 (assets.towers.SlowdownTowerL1)
package assets.towers {
import flash.display.*;
public dynamic class SlowdownTowerL1 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 82
//SlowdownTowerL2 (assets.towers.SlowdownTowerL2)
package assets.towers {
import flash.display.*;
public dynamic class SlowdownTowerL2 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 83
//SlowdownTowerL3 (assets.towers.SlowdownTowerL3)
package assets.towers {
import flash.display.*;
public dynamic class SlowdownTowerL3 extends MovieClip {
public var gunfire:MovieClip;
}
}//package assets.towers
Section 84
//SlowdownTowerShadowL1 (assets.towers.SlowdownTowerShadowL1)
package assets.towers {
import flash.display.*;
public dynamic class SlowdownTowerShadowL1 extends MovieClip {
}
}//package assets.towers
Section 85
//SlowdownTowerShadowL2 (assets.towers.SlowdownTowerShadowL2)
package assets.towers {
import flash.display.*;
public dynamic class SlowdownTowerShadowL2 extends MovieClip {
}
}//package assets.towers
Section 86
//SlowdownTowerShadowL3 (assets.towers.SlowdownTowerShadowL3)
package assets.towers {
import flash.display.*;
public dynamic class SlowdownTowerShadowL3 extends MovieClip {
}
}//package assets.towers
Section 87
//GameMask (assets.ui.GameMask)
package assets.ui {
import flash.display.*;
public dynamic class GameMask extends MovieClip {
}
}//package assets.ui
Section 88
//RocketProjectileL1 (assets.weapons.RocketProjectileL1)
package assets.weapons {
import flash.display.*;
public dynamic class RocketProjectileL1 extends MovieClip {
}
}//package assets.weapons
Section 89
//RocketProjectileL2 (assets.weapons.RocketProjectileL2)
package assets.weapons {
import flash.display.*;
public dynamic class RocketProjectileL2 extends MovieClip {
}
}//package assets.weapons
Section 90
//RocketProjectileL3 (assets.weapons.RocketProjectileL3)
package assets.weapons {
import flash.display.*;
public dynamic class RocketProjectileL3 extends MovieClip {
}
}//package assets.weapons
Section 91
//SlowdownExplosion (assets.weapons.SlowdownExplosion)
package assets.weapons {
import flash.display.*;
public dynamic class SlowdownExplosion extends MovieClip {
}
}//package assets.weapons
Section 92
//SlowdownProjectile (assets.weapons.SlowdownProjectile)
package assets.weapons {
import flash.display.*;
public dynamic class SlowdownProjectile extends MovieClip {
}
}//package assets.weapons
Section 93
//Level01 (assets.Level01)
package assets {
import flash.display.*;
public dynamic class Level01 extends MovieClip {
}
}//package assets
Section 94
//Level01_animated (assets.Level01_animated)
package assets {
import flash.display.*;
public dynamic class Level01_animated extends MovieClip {
}
}//package assets
Section 95
//Level01Background (assets.Level01Background)
package assets {
import flash.display.*;
public dynamic class Level01Background extends MovieClip {
}
}//package assets
Section 96
//BlasterGunfire1_rocket_116 (assets_fla.BlasterGunfire1_rocket_116)
package assets_fla {
import flash.display.*;
public dynamic class BlasterGunfire1_rocket_116 extends MovieClip {
public function BlasterGunfire1_rocket_116(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets_fla
Section 97
//BossPopupAvatars_75 (assets_fla.BossPopupAvatars_75)
package assets_fla {
import flash.display.*;
public dynamic class BossPopupAvatars_75 extends MovieClip {
public function BossPopupAvatars_75(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets_fla
Section 98
//towerLevelBadge_42 (assets_fla.towerLevelBadge_42)
package assets_fla {
import flash.display.*;
public dynamic class towerLevelBadge_42 extends MovieClip {
public function towerLevelBadge_42(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package assets_fla
Section 99
//towerSelectedIcons_41 (assets_fla.towerSelectedIcons_41)
package assets_fla {
import flash.display.*;
public dynamic class towerSelectedIcons_41 extends MovieClip {
public function towerSelectedIcons_41(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package assets_fla
Section 100
//towerTitleLabels_40 (assets_fla.towerTitleLabels_40)
package assets_fla {
import flash.display.*;
public dynamic class towerTitleLabels_40 extends MovieClip {
public function towerTitleLabels_40(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package assets_fla
Section 101
//bleep1 (assets_sfx.sfx.common.bleep1)
package assets_sfx.sfx.common {
import flash.media.*;
public dynamic class bleep1 extends Sound {
}
}//package assets_sfx.sfx.common
Section 102
//bleep2 (assets_sfx.sfx.common.bleep2)
package assets_sfx.sfx.common {
import flash.media.*;
public dynamic class bleep2 extends Sound {
}
}//package assets_sfx.sfx.common
Section 103
//bleep3 (assets_sfx.sfx.common.bleep3)
package assets_sfx.sfx.common {
import flash.media.*;
public dynamic class bleep3 extends Sound {
}
}//package assets_sfx.sfx.common
Section 104
//NavButtonSound (assets_sfx.sfx.common.NavButtonSound)
package assets_sfx.sfx.common {
import flash.media.*;
public dynamic class NavButtonSound extends Sound {
}
}//package assets_sfx.sfx.common
Section 105
//PanelSound (assets_sfx.sfx.common.PanelSound)
package assets_sfx.sfx.common {
import flash.media.*;
public dynamic class PanelSound extends Sound {
}
}//package assets_sfx.sfx.common
Section 106
//PanelSound2 (assets_sfx.sfx.common.PanelSound2)
package assets_sfx.sfx.common {
import flash.media.*;
public dynamic class PanelSound2 extends Sound {
}
}//package assets_sfx.sfx.common
Section 107
//BossExplosion (assets_sfx.sfx.explosions.BossExplosion)
package assets_sfx.sfx.explosions {
import flash.media.*;
public dynamic class BossExplosion extends Sound {
}
}//package assets_sfx.sfx.explosions
Section 108
//EnemyObjective (assets_sfx.sfx.explosions.EnemyObjective)
package assets_sfx.sfx.explosions {
import flash.media.*;
public dynamic class EnemyObjective extends Sound {
}
}//package assets_sfx.sfx.explosions
Section 109
//HeavyExplosion (assets_sfx.sfx.explosions.HeavyExplosion)
package assets_sfx.sfx.explosions {
import flash.media.*;
public dynamic class HeavyExplosion extends Sound {
}
}//package assets_sfx.sfx.explosions
Section 110
//HeliExplosion (assets_sfx.sfx.explosions.HeliExplosion)
package assets_sfx.sfx.explosions {
import flash.media.*;
public dynamic class HeliExplosion extends Sound {
}
}//package assets_sfx.sfx.explosions
Section 111
//MediumExplosion (assets_sfx.sfx.explosions.MediumExplosion)
package assets_sfx.sfx.explosions {
import flash.media.*;
public dynamic class MediumExplosion extends Sound {
}
}//package assets_sfx.sfx.explosions
Section 112
//MediumGlassExplosion (assets_sfx.sfx.explosions.MediumGlassExplosion)
package assets_sfx.sfx.explosions {
import flash.media.*;
public dynamic class MediumGlassExplosion extends Sound {
}
}//package assets_sfx.sfx.explosions
Section 113
//MediumVehicleExplosion (assets_sfx.sfx.explosions.MediumVehicleExplosion)
package assets_sfx.sfx.explosions {
import flash.media.*;
public dynamic class MediumVehicleExplosion extends Sound {
}
}//package assets_sfx.sfx.explosions
Section 114
//SmallExplosion (assets_sfx.sfx.explosions.SmallExplosion)
package assets_sfx.sfx.explosions {
import flash.media.*;
public dynamic class SmallExplosion extends Sound {
}
}//package assets_sfx.sfx.explosions
Section 115
//GameLoop (assets_sfx.sfx.music.GameLoop)
package assets_sfx.sfx.music {
import flash.media.*;
public dynamic class GameLoop extends Sound {
}
}//package assets_sfx.sfx.music
Section 116
//MenuLoop (assets_sfx.sfx.music.MenuLoop)
package assets_sfx.sfx.music {
import flash.media.*;
public dynamic class MenuLoop extends Sound {
}
}//package assets_sfx.sfx.music
Section 117
//TowerBuild (assets_sfx.sfx.towers.TowerBuild)
package assets_sfx.sfx.towers {
import flash.media.*;
public dynamic class TowerBuild extends Sound {
}
}//package assets_sfx.sfx.towers
Section 118
//TowerSell (assets_sfx.sfx.towers.TowerSell)
package assets_sfx.sfx.towers {
import flash.media.*;
public dynamic class TowerSell extends Sound {
}
}//package assets_sfx.sfx.towers
Section 119
//TowerUpgrade (assets_sfx.sfx.towers.TowerUpgrade)
package assets_sfx.sfx.towers {
import flash.media.*;
public dynamic class TowerUpgrade extends Sound {
}
}//package assets_sfx.sfx.towers
Section 120
//BlasterFire (assets_sfx.sfx.weapons.BlasterFire)
package assets_sfx.sfx.weapons {
import flash.media.*;
public dynamic class BlasterFire extends Sound {
}
}//package assets_sfx.sfx.weapons
Section 121
//LaserFire (assets_sfx.sfx.weapons.LaserFire)
package assets_sfx.sfx.weapons {
import flash.media.*;
public dynamic class LaserFire extends Sound {
}
}//package assets_sfx.sfx.weapons
Section 122
//LightningFire (assets_sfx.sfx.weapons.LightningFire)
package assets_sfx.sfx.weapons {
import flash.media.*;
public dynamic class LightningFire extends Sound {
}
}//package assets_sfx.sfx.weapons
Section 123
//RocketExplosion (assets_sfx.sfx.weapons.RocketExplosion)
package assets_sfx.sfx.weapons {
import flash.media.*;
public dynamic class RocketExplosion extends Sound {
}
}//package assets_sfx.sfx.weapons
Section 124
//RocketFire (assets_sfx.sfx.weapons.RocketFire)
package assets_sfx.sfx.weapons {
import flash.media.*;
public dynamic class RocketFire extends Sound {
}
}//package assets_sfx.sfx.weapons
Section 125
//SlowdownFire (assets_sfx.sfx.weapons.SlowdownFire)
package assets_sfx.sfx.weapons {
import flash.media.*;
public dynamic class SlowdownFire extends Sound {
}
}//package assets_sfx.sfx.weapons
Section 126
//browserBg (assets_ui.pages.characterBrowser.browserBg)
package assets_ui.pages.characterBrowser {
import flash.display.*;
public dynamic class browserBg extends MovieClip {
public var cyclopsOff:MovieClip;
public var drdoomOff:MovieClip;
public var msmarvelOff:MovieClip;
public var molemanOff:MovieClip;
public var ironmanOn:MovieClip;
public var thorOn:MovieClip;
public var thorOff:MovieClip;
public var spidermanOff:MovieClip;
public var spidermanOn:MovieClip;
public var modokOn:MovieClip;
public var molemanOn:MovieClip;
public var msmarvelOn:MovieClip;
public var modokOff:MovieClip;
public var cyclopsOn:MovieClip;
public var drdoomOn:MovieClip;
public var ironmanOff:MovieClip;
public var bgPanel:MovieClip;
}
}//package assets_ui.pages.characterBrowser
Section 127
//CyclopsPage (assets_ui.pages.characters.CyclopsPage)
package assets_ui.pages.characters {
import flash.display.*;
public dynamic class CyclopsPage extends MovieClip {
}
}//package assets_ui.pages.characters
Section 128
//DrdoomPage (assets_ui.pages.characters.DrdoomPage)
package assets_ui.pages.characters {
import flash.display.*;
public dynamic class DrdoomPage extends MovieClip {
}
}//package assets_ui.pages.characters
Section 129
//IronmanPage (assets_ui.pages.characters.IronmanPage)
package assets_ui.pages.characters {
import flash.display.*;
public dynamic class IronmanPage extends MovieClip {
}
}//package assets_ui.pages.characters
Section 130
//ModokPage (assets_ui.pages.characters.ModokPage)
package assets_ui.pages.characters {
import flash.display.*;
public dynamic class ModokPage extends MovieClip {
}
}//package assets_ui.pages.characters
Section 131
//MolemanPage (assets_ui.pages.characters.MolemanPage)
package assets_ui.pages.characters {
import flash.display.*;
public dynamic class MolemanPage extends MovieClip {
}
}//package assets_ui.pages.characters
Section 132
//MsmarvelPage (assets_ui.pages.characters.MsmarvelPage)
package assets_ui.pages.characters {
import flash.display.*;
public dynamic class MsmarvelPage extends MovieClip {
}
}//package assets_ui.pages.characters
Section 133
//SpidermanPage (assets_ui.pages.characters.SpidermanPage)
package assets_ui.pages.characters {
import flash.display.*;
public dynamic class SpidermanPage extends MovieClip {
}
}//package assets_ui.pages.characters
Section 134
//ThorPage (assets_ui.pages.characters.ThorPage)
package assets_ui.pages.characters {
import flash.display.*;
public dynamic class ThorPage extends MovieClip {
}
}//package assets_ui.pages.characters
Section 135
//CyclopsPage (assets_ui.pages.help.defenders.CyclopsPage)
package assets_ui.pages.help.defenders {
import flash.display.*;
public dynamic class CyclopsPage extends MovieClip {
}
}//package assets_ui.pages.help.defenders
Section 136
//IronmanPage (assets_ui.pages.help.defenders.IronmanPage)
package assets_ui.pages.help.defenders {
import flash.display.*;
public dynamic class IronmanPage extends MovieClip {
}
}//package assets_ui.pages.help.defenders
Section 137
//MsmarvelPage (assets_ui.pages.help.defenders.MsmarvelPage)
package assets_ui.pages.help.defenders {
import flash.display.*;
public dynamic class MsmarvelPage extends MovieClip {
}
}//package assets_ui.pages.help.defenders
Section 138
//SpidermanPage (assets_ui.pages.help.defenders.SpidermanPage)
package assets_ui.pages.help.defenders {
import flash.display.*;
public dynamic class SpidermanPage extends MovieClip {
}
}//package assets_ui.pages.help.defenders
Section 139
//ThorPage (assets_ui.pages.help.defenders.ThorPage)
package assets_ui.pages.help.defenders {
import flash.display.*;
public dynamic class ThorPage extends MovieClip {
}
}//package assets_ui.pages.help.defenders
Section 140
//HelpPage1 (assets_ui.pages.help.HelpPage1)
package assets_ui.pages.help {
import flash.display.*;
public dynamic class HelpPage1 extends MovieClip {
}
}//package assets_ui.pages.help
Section 141
//HelpPage2 (assets_ui.pages.help.HelpPage2)
package assets_ui.pages.help {
import flash.display.*;
public dynamic class HelpPage2 extends MovieClip {
public var spidermanOn:MovieClip;
public var msmarvelOff:MovieClip;
public var msmarvelOn:MovieClip;
public var ironmanOn:MovieClip;
public var cyclopsOn:MovieClip;
public var thorOn:MovieClip;
public var spidermanOff:MovieClip;
public var cyclopsOff:MovieClip;
public var ironmanOff:MovieClip;
public var thorOff:MovieClip;
}
}//package assets_ui.pages.help
Section 142
//HelpPage3 (assets_ui.pages.help.HelpPage3)
package assets_ui.pages.help {
import flash.display.*;
public dynamic class HelpPage3 extends MovieClip {
}
}//package assets_ui.pages.help
Section 143
//HelpPage4 (assets_ui.pages.help.HelpPage4)
package assets_ui.pages.help {
import flash.display.*;
public dynamic class HelpPage4 extends MovieClip {
}
}//package assets_ui.pages.help
Section 144
//HelpPage5 (assets_ui.pages.help.HelpPage5)
package assets_ui.pages.help {
import flash.display.*;
public dynamic class HelpPage5 extends MovieClip {
}
}//package assets_ui.pages.help
Section 145
//browserBg (assets_ui.pages.helpBrowser.browserBg)
package assets_ui.pages.helpBrowser {
import flash.display.*;
public dynamic class browserBg extends MovieClip {
public var arrowRightOn:MovieClip;
public var arrowLeftOn:MovieClip;
public var arrowRightOff:MovieClip;
public var arrowLeftOff:MovieClip;
}
}//package assets_ui.pages.helpBrowser
Section 146
//CharactersUI (assets_ui.pages.CharactersUI)
package assets_ui.pages {
import flash.display.*;
public dynamic class CharactersUI extends MovieClip {
}
}//package assets_ui.pages
Section 147
//CreditsUI (assets_ui.pages.CreditsUI)
package assets_ui.pages {
import flash.display.*;
import flash.text.*;
public dynamic class CreditsUI extends MovieClip {
public var version:TextField;
public function CreditsUI(){
addFrameScript(27, frame28);
}
function frame28(){
stop();
}
}
}//package assets_ui.pages
Section 148
//HelpUI (assets_ui.pages.HelpUI)
package assets_ui.pages {
import flash.display.*;
public dynamic class HelpUI extends MovieClip {
}
}//package assets_ui.pages
Section 149
//IntroVideoUI (assets_ui.pages.IntroVideoUI)
package assets_ui.pages {
import flash.display.*;
public dynamic class IntroVideoUI extends MovieClip {
public var skipGlowBtn:MovieClip;
public var videoWindow:MovieClip;
public var skipBtn:MovieClip;
}
}//package assets_ui.pages
Section 150
//MedalsUI (assets_ui.pages.MedalsUI)
package assets_ui.pages {
import flash.display.*;
public dynamic class MedalsUI extends MovieClip {
public var lockDrdoom:MovieClip;
public var baseHighScore:MovieClip;
public var lockMasterDefender:MovieClip;
public var baseModok:MovieClip;
public var baseMoleman:MovieClip;
public var lockConstructor:MovieClip;
public var baseDefender:MovieClip;
public var baseMasterDefender:MovieClip;
public var lockGoldTower:MovieClip;
public var baseGameAddict:MovieClip;
public var lockHighScore:MovieClip;
public var baseDrdoom:MovieClip;
public var baseConstructor:MovieClip;
public var lockDefender:MovieClip;
public var lockMoleman:MovieClip;
public var lockGameAddict:MovieClip;
public var lockModok:MovieClip;
public var baseMillionaire:MovieClip;
public var lockMillionaire:MovieClip;
public var baseGoldTower:MovieClip;
}
}//package assets_ui.pages
Section 151
//TitleUI (assets_ui.pages.TitleUI)
package assets_ui.pages {
import flash.display.*;
public dynamic class TitleUI extends MovieClip {
public function TitleUI(){
addFrameScript(0, frame1, 45, frame46);
}
function frame1(){
stop();
}
function frame46(){
stop();
}
}
}//package assets_ui.pages
Section 152
//HudBtnCredits (assets_ui.HudBtnCredits)
package assets_ui {
import flash.display.*;
public dynamic class HudBtnCredits extends MovieClip {
}
}//package assets_ui
Section 153
//HudBtnMarvelKids (assets_ui.HudBtnMarvelKids)
package assets_ui {
import flash.display.*;
public dynamic class HudBtnMarvelKids extends MovieClip {
}
}//package assets_ui
Section 154
//HudBtnSHS (assets_ui.HudBtnSHS)
package assets_ui {
import flash.display.*;
public dynamic class HudBtnSHS extends MovieClip {
}
}//package assets_ui
Section 155
//HudSoundControls (assets_ui.HudSoundControls)
package assets_ui {
import flash.display.*;
public dynamic class HudSoundControls extends MovieClip {
public var soundSlider:MovieClip;
public var soundButton:SimpleButton;
public var musicSlider:MovieClip;
public var musicButton:SimpleButton;
}
}//package assets_ui
Section 156
//HudUI (assets_ui.HudUI)
package assets_ui {
import flash.display.*;
public dynamic class HudUI extends MovieClip {
public var MenuHeader:MovieClip;
public var top:MovieClip;
}
}//package assets_ui
Section 157
//HudUIButtons (assets_ui.HudUIButtons)
package assets_ui {
import flash.display.*;
public dynamic class HudUIButtons extends MovieClip {
public var ButtonMore:MovieClip;
public var BaseMulti:MovieClip;
public var BaseHelp:MovieClip;
public var ButtonMedals:MovieClip;
public var InGame:MovieClip;
public var ButtonCharacters:MovieClip;
public var BaseMore:MovieClip;
public var ButtonShare:MovieClip;
public var ButtonStart:MovieClip;
public var BaseStart:MovieClip;
public var ButtonHelp:MovieClip;
public var BaseCharacters:MovieClip;
}
}//package assets_ui
Section 158
//Preloader (assets_ui.Preloader)
package assets_ui {
import flash.display.*;
public dynamic class Preloader extends MovieClip {
public var bar:MovieClip;
}
}//package assets_ui
Section 159
//PreloaderBackgroundUI (assets_ui.PreloaderBackgroundUI)
package assets_ui {
import flash.display.*;
public dynamic class PreloaderBackgroundUI extends MovieClip {
public var Advertisement:MovieClip;
}
}//package assets_ui
Section 160
//characterBrowserBgPanel_15 (assets_ui_fla.characterBrowserBgPanel_15)
package assets_ui_fla {
import flash.display.*;
public dynamic class characterBrowserBgPanel_15 extends MovieClip {
public function characterBrowserBgPanel_15(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets_ui_fla
Section 161
//HudUI_107 (assets_ui_fla.HudUI_107)
package assets_ui_fla {
import flash.display.*;
public dynamic class HudUI_107 extends MovieClip {
public function HudUI_107(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package assets_ui_fla
Section 162
//scanLines_126 (assets_ui_fla.scanLines_126)
package assets_ui_fla {
import flash.display.*;
public dynamic class scanLines_126 extends MovieClip {
public function scanLines_126(){
addFrameScript(0, frame1);
}
function frame1(){
this.mouseEnabled = (this.mouseChildren = false);
}
}
}//package assets_ui_fla
Section 163
//soundSlider_47 (assets_ui_fla.soundSlider_47)
package assets_ui_fla {
import flash.display.*;
public dynamic class soundSlider_47 extends MovieClip {
public function soundSlider_47(){
addFrameScript(0, frame1, 7, frame8, 15, frame16);
}
function frame16(){
stop();
trace("Should Stop Here (on)");
}
function frame8(){
stop();
trace("Should Stop Here (off)");
}
function frame1(){
stop();
}
}
}//package assets_ui_fla
Section 164
//AdEvent (com.doubleclick.dartshell.ad.events.AdEvent)
package com.doubleclick.dartshell.ad.events {
import flash.events.*;
public class AdEvent extends Event {
private var context:Object;// = null
public static const CUSTOM_EVENT:String = "customEvent";
public static const COLLAPSED:String = "collapsed";
public static const EXPANDED:String = "expanded";
public static const EXIT:String = "exit";
public function AdEvent(_arg1:String, _arg2:Object=null){
super(_arg1);
this.context = _arg2;
}
public function getContext():Object{
return (context);
}
override public function clone():Event{
return (new AdEvent(type, context));
}
}
}//package com.doubleclick.dartshell.ad.events
Section 165
//AdLoadedEvent (com.doubleclick.dartshell.ad.events.AdLoadedEvent)
package com.doubleclick.dartshell.ad.events {
import flash.events.*;
import com.doubleclick.dartshell.ad.*;
public class AdLoadedEvent extends Event {
private var ad:Ad;// = null
protected var context:Object;// = null
public function AdLoadedEvent(_arg1:String, _arg2:Ad, _arg3:Object=null){
super(_arg1);
this.ad = _arg2;
this.context = _arg3;
}
public function getAd():Ad{
return (ad);
}
public function getContext():Object{
return (context);
}
override public function clone():Event{
return (new AdLoadedEvent(type, ad, context));
}
}
}//package com.doubleclick.dartshell.ad.events
Section 166
//FlashAsset (com.doubleclick.dartshell.ad.flash_in_flash.FlashAsset)
package com.doubleclick.dartshell.ad.flash_in_flash {
import flash.events.*;
import flash.display.*;
public interface FlashAsset extends IEventDispatcher {
function getActionscriptVersion():String;
function hide():void;
function load():void;
function display(_arg1:DisplayObjectContainer=null):void;
function getOffsets():Object;
function getDisplay():DisplayObject;
function isMainAsset():Boolean;
function getType():String;
function set y(_arg1:Number):void;
function getExpandedHeight():Number;
function set x(_arg1:Number):void;
function get x():Number;
function get y():Number;
function getHeight():Number;
function getExpandedWidth():Number;
function getWidth():Number;
}
}//package com.doubleclick.dartshell.ad.flash_in_flash
Section 167
//FlashAssetLoadedEvent (com.doubleclick.dartshell.ad.flash_in_flash.FlashAssetLoadedEvent)
package com.doubleclick.dartshell.ad.flash_in_flash {
import flash.events.*;
public class FlashAssetLoadedEvent extends Event {
private var asset:FlashAsset;// = null
public static const TYPE:String = "flashAssetLoaded";
public function FlashAssetLoadedEvent(_arg1:FlashAsset){
super(TYPE);
this.asset = _arg1;
}
public function getAsset():FlashAsset{
return (asset);
}
override public function clone():Event{
return (new FlashAssetLoadedEvent(asset));
}
}
}//package com.doubleclick.dartshell.ad.flash_in_flash
Section 168
//FlashInFlashAd (com.doubleclick.dartshell.ad.flash_in_flash.FlashInFlashAd)
package com.doubleclick.dartshell.ad.flash_in_flash {
import flash.display.*;
import com.doubleclick.dartshell.ad.*;
public interface FlashInFlashAd extends Ad {
function loadAssets():void;
function hide():void;
function getAdId():String;
function unload():void;
function isBlockingAssetsLoad():Boolean;
function display(_arg1:DisplayObjectContainer=null):void;
function getMetaDataKeyValues():Object;
function getAdPublishFlashVersion():String;
function getSurveyURL():String;
}
}//package com.doubleclick.dartshell.ad.flash_in_flash
Section 169
//FlashInFlashAdLoadedEvent (com.doubleclick.dartshell.ad.flash_in_flash.FlashInFlashAdLoadedEvent)
package com.doubleclick.dartshell.ad.flash_in_flash {
import flash.events.*;
import com.doubleclick.dartshell.ad.events.*;
public class FlashInFlashAdLoadedEvent extends AdLoadedEvent {
public static const TYPE:String = "flashInFlashAdLoaded";
public function FlashInFlashAdLoadedEvent(_arg1:FlashInFlashAd, _arg2:Object=null){
super(TYPE, _arg1, _arg2);
}
public function getFlashInFlashAd():FlashInFlashAd{
return ((getAd() as FlashInFlashAd));
}
override public function clone():Event{
return (new FlashInFlashAdLoadedEvent(getFlashInFlashAd(), context));
}
}
}//package com.doubleclick.dartshell.ad.flash_in_flash
Section 170
//Ad (com.doubleclick.dartshell.ad.Ad)
package com.doubleclick.dartshell.ad {
import flash.events.*;
public interface Ad extends IEventDispatcher {
function isVASTWrapperAd():Boolean;
function isDartInStreamAd():Boolean;
function isInStreamAd():Boolean;
function getAdType():String;
function isVideoAd():Boolean;
function getXMLAdResponse():XML;
function isFlashInFlashAd():Boolean;
function isVASTAd():Boolean;
function isCustomAd():Boolean;
}
}//package com.doubleclick.dartshell.ad
Section 171
//DartShellErrorEvent (com.doubleclick.dartshell.errors.events.DartShellErrorEvent)
package com.doubleclick.dartshell.errors.events {
import flash.events.*;
import com.doubleclick.dartshell.errors.*;
public class DartShellErrorEvent extends ErrorEvent {
private var error:DartShellError;
private var context:Object;// = null
public static const TYPE:String = "dartShellError";
public function DartShellErrorEvent(_arg1:DartShellError, _arg2:Object=null){
super(TYPE);
this.error = _arg1;
this.context = _arg2;
this.text = _arg1.message;
if (_arg1.getCause()){
this.text = (this.text + (" caused by \n" + _arg1.getCause()));
};
}
public function getError():DartShellError{
return (this.error);
}
public function getContext():Object{
return (context);
}
override public function clone():Event{
return (new DartShellErrorEvent(getError(), getContext()));
}
}
}//package com.doubleclick.dartshell.errors.events
Section 172
//DartShellError (com.doubleclick.dartshell.errors.DartShellError)
package com.doubleclick.dartshell.errors {
public class DartShellError extends Error {
private var cause:String;// = null
public function DartShellError(_arg1:Object){
super(_arg1.message, _arg1.id);
this.name = "DartShellError";
}
public function getCause():String{
return (cause);
}
public function setCause(_arg1:String):void{
this.cause = _arg1;
}
}
}//package com.doubleclick.dartshell.errors
Section 173
//DartShellLoadedEvent (com.doubleclick.dartshell.events.DartShellLoadedEvent)
package com.doubleclick.dartshell.events {
import flash.events.*;
public class DartShellLoadedEvent extends Event {
private var dartShell:DartShell;
public static const TYPE:String = "dartShellLoaded";
public function DartShellLoadedEvent(_arg1:DartShell){
super(TYPE);
this.dartShell = _arg1;
}
override public function clone():Event{
return (new DartShellLoadedEvent(getDartShell()));
}
public function getDartShell():DartShell{
return (dartShell);
}
}
}//package com.doubleclick.dartshell.events
Section 174
//MemoryCrypto (com.electrotank.util.MemoryCrypto)
package com.electrotank.util {
import com.meychi.ascrypt3.*;
public class MemoryCrypto {
private static var crypto:TEA = null;
private static var INCREMENT:int = 0;
private static var initialized:Boolean = false;
private static var key:String = null;
private static var MULTIPLY:int = 2;
private static var DECREMENT:int = 1;
private static var dataHolder:Object = null;
private static var DIVIDE:int = 3;
public static function incrementValue(_arg1:String, _arg2:Number):Number{
return (processValue(_arg1, _arg2, INCREMENT));
}
public static function getValue(_arg1:String):Number{
initIfNeeded();
var _local2:Number = 0;
if (!isValueSet(_arg1)){
setValue(_arg1, _local2);
} else {
_local2 = new Number(crypto.decrypt(dataHolder[_arg1], key));
};
return (_local2);
}
private static function processValue(_arg1:String, _arg2:Number, _arg3:int):Number{
initIfNeeded();
var _local4:Number = getValue(_arg1);
switch (_arg3){
case INCREMENT:
_local4 = (_local4 + _arg2);
break;
case DECREMENT:
_local4 = (_local4 - _arg2);
break;
case MULTIPLY:
_local4 = (_local4 * _arg2);
break;
case DIVIDE:
_local4 = (_local4 / _arg2);
break;
};
setValue(_arg1, _local4);
return (_local4);
}
public static function reset():void{
initialized = false;
initIfNeeded();
}
public static function decrementValue(_arg1:String, _arg2:Number):Number{
return (processValue(_arg1, _arg2, DECREMENT));
}
private static function initIfNeeded():void{
var _local1:Number;
var _local2:String;
var _local3:Number;
var _local4:String;
if (!initialized){
_local1 = Math.random();
_local2 = new String(_local1);
_local2 = _local2.substr(2, (_local2.length - 2));
_local3 = Math.random();
_local4 = new String(_local3);
_local4 = _local4.substr(2, (_local4.length - 2));
key = (_local2 + _local4);
crypto = new TEA();
dataHolder = new Object();
initialized = true;
};
}
public static function multiplyValue(_arg1:String, _arg2:Number):Number{
return (processValue(_arg1, _arg2, MULTIPLY));
}
public static function setValue(_arg1:String, _arg2:Number):Number{
initIfNeeded();
dataHolder[_arg1] = crypto.encrypt(_arg2.toString(), key);
return (_arg2);
}
public static function divideValue(_arg1:String, _arg2:Number):Number{
if (_arg2 == 0){
throw (new Error("Amount can't be zero when dividing!"));
};
return (processValue(_arg1, _arg2, DIVIDE));
}
public static function isValueSet(_arg1:String):Boolean{
initIfNeeded();
var _local2:Boolean;
if (dataHolder[_arg1] != null){
_local2 = true;
};
return (_local2);
}
}
}//package com.electrotank.util
Section 175
//Raster (com.foxaweb.utils.Raster)
package com.foxaweb.utils {
import flash.display.*;
import flash.geom.*;
public class Raster {
public static function aaCircle(_arg1:BitmapData, _arg2:Number, _arg3:Number, _arg4:int, _arg5:Number):void{
var _local6:int;
var _local7:int;
var _local8:int;
var _local10:Number;
_local6 = _arg4;
_local7 = 0;
var _local9:Number = 0;
var _local11:Function = Math.sqrt;
var _local12:Function = Math.ceil;
_arg1.setPixel((_arg2 + _local6), (_arg3 + _local7), _arg5);
_arg1.setPixel((_arg2 - _local6), (_arg3 + _local7), _arg5);
_arg1.setPixel((_arg2 + _local7), (_arg3 + _local6), _arg5);
_arg1.setPixel((_arg2 + _local7), (_arg3 - _local6), _arg5);
while (_local6 > (_local7 + 1)) {
_local7++;
_local10 = (_local12(_local11(((_arg4 * _arg4) - (_local7 * _local7)))) - _local11(((_arg4 * _arg4) - (_local7 * _local7))));
if (_local10 < _local9){
_local6--;
};
drawAlphaPixel(_arg1, (_arg2 + _local6), (_arg3 + _local7), (1 - _local10), _arg5);
drawAlphaPixel(_arg1, ((_arg2 + _local6) - 1), (_arg3 + _local7), _local10, _arg5);
drawAlphaPixel(_arg1, (_arg2 - _local6), (_arg3 + _local7), (1 - _local10), _arg5);
drawAlphaPixel(_arg1, ((_arg2 - _local6) + 1), (_arg3 + _local7), _local10, _arg5);
drawAlphaPixel(_arg1, (_arg2 + _local6), (_arg3 - _local7), (1 - _local10), _arg5);
drawAlphaPixel(_arg1, ((_arg2 + _local6) - 1), (_arg3 - _local7), _local10, _arg5);
drawAlphaPixel(_arg1, (_arg2 - _local6), (_arg3 - _local7), (1 - _local10), _arg5);
drawAlphaPixel(_arg1, ((_arg2 - _local6) + 1), (_arg3 - _local7), _local10, _arg5);
drawAlphaPixel(_arg1, (_arg2 + _local7), (_arg3 + _local6), (1 - _local10), _arg5);
drawAlphaPixel(_arg1, (_arg2 + _local7), ((_arg3 + _local6) - 1), _local10, _arg5);
drawAlphaPixel(_arg1, (_arg2 - _local7), (_arg3 + _local6), (1 - _local10), _arg5);
drawAlphaPixel(_arg1, (_arg2 - _local7), ((_arg3 + _local6) - 1), _local10, _arg5);
drawAlphaPixel(_arg1, (_arg2 + _local7), (_arg3 - _local6), (1 - _local10), _arg5);
drawAlphaPixel(_arg1, (_arg2 + _local7), ((_arg3 - _local6) + 1), _local10, _arg5);
drawAlphaPixel(_arg1, (_arg2 - _local7), (_arg3 - _local6), (1 - _local10), _arg5);
drawAlphaPixel(_arg1, (_arg2 - _local7), ((_arg3 - _local6) + 1), _local10, _arg5);
_local9 = _local10;
};
}
public static function cubicBezier(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int, _arg9:int, _arg10:Number, _arg11:int=5):void{
var _local14:int;
var _local15:int;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local12:Number = _arg2;
var _local13:Number = _arg3;
var _local16:Number = 0;
var _local17:Number = (1 / _arg11);
var _local24:int;
while (++_local24 <= _arg11) {
_local18 = (_local17 * _local24);
_local19 = ((_local17 * _local24) * _local18);
_local20 = (_local19 * _local18);
_local21 = (1 - _local18);
_local22 = ((1 - _local18) * _local21);
_local23 = (_local22 * _local21);
_local14 = ((((_local23 * _arg2) + (((3 * _local18) * _local22) * _arg4)) + (((3 * _arg6) * _local19) * _local21)) + (_arg8 * _local20));
_local15 = ((((_local23 * _arg3) + (((3 * _local18) * _local22) * _arg5)) + (((3 * _arg7) * _local19) * _local21)) + (_arg9 * _local20));
_local16 = (_local16 + Math.sqrt((((_local14 - _local12) * (_local14 - _local12)) + ((_local15 - _local13) * (_local15 - _local13)))));
_local12 = _local14;
_local13 = _local15;
};
var _local25:int = Math.floor(_local16);
_local17 = (1 / _local25);
var _local26:int = _arg2;
var _local27:int = _arg3;
_local24 = -1;
while (++_local24 <= _local25) {
_local18 = (_local17 * _local24);
_local19 = ((_local17 * _local24) * _local18);
_local20 = (_local19 * _local18);
_local21 = (1 - _local18);
_local22 = ((1 - _local18) * _local21);
_local23 = (_local22 * _local21);
_local14 = ((((_local23 * _arg2) + (((3 * _local18) * _local22) * _arg4)) + (((3 * _arg6) * _local19) * _local21)) + (_arg8 * _local20));
_local15 = ((((_local23 * _arg3) + (((3 * _local18) * _local22) * _arg5)) + (((3 * _arg7) * _local19) * _local21)) + (_arg9 * _local20));
line(_arg1, _local26, _local27, _local14, _local15, _arg10);
_local26 = _local14;
_local27 = _local15;
};
}
private static function checkLine(_arg1:Object, _arg2:int, _arg3:int, _arg4:BitmapData, _arg5:int, _arg6:Rectangle):void{
if (_arg1[_arg3]){
if (_arg1[_arg3] > _arg2){
_arg6.width = (_arg1[_arg3] - _arg2);
_arg6.x = _arg2;
_arg6.y = _arg3;
_arg4.fillRect(_arg6, _arg5);
} else {
_arg6.width = (_arg2 - _arg1[_arg3]);
_arg6.x = _arg1[_arg3];
_arg6.y = _arg3;
_arg4.fillRect(_arg6, _arg5);
};
} else {
_arg1[_arg3] = _arg2;
};
}
public static function line(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:Number):void{
var _local7:int;
var _local8:int;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:int;
var _local14:int;
_local13 = _arg2;
_local14 = _arg3;
_local7 = (_arg4 - _arg2);
_local8 = (_arg5 - _arg3);
_local10 = ((_local7)>0) ? 1 : -1;
_local11 = ((_local8)>0) ? 1 : -1;
_local7 = Math.abs(_local7);
_local8 = Math.abs(_local8);
_arg1.setPixel32(_local13, _local14, _arg6);
if (_local7 > _local8){
_local12 = (_local7 / 2);
_local9 = 1;
while (_local9 <= _local7) {
_local13 = (_local13 + _local10);
_local12 = (_local12 + _local8);
if (_local12 >= _local7){
_local12 = (_local12 - _local7);
_local14 = (_local14 + _local11);
};
_arg1.setPixel32(_local13, _local14, _arg6);
_local9++;
};
} else {
_local12 = (_local8 / 2);
_local9 = 1;
while (_local9 <= _local8) {
_local14 = (_local14 + _local11);
_local12 = (_local12 + _local7);
if (_local12 >= _local8){
_local12 = (_local12 - _local8);
_local13 = (_local13 + _local10);
};
_arg1.setPixel32(_local13, _local14, _arg6);
_local9++;
};
};
}
public static function quadBezier(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:Number, _arg9:int=3):void{
var _local12:int;
var _local13:int;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local10:Number = _arg2;
var _local11:Number = _arg3;
var _local14:Number = 0;
var _local15:Number = (1 / _arg9);
var _local20:int;
while (++_local20 <= _arg9) {
_local16 = (_local15 * _local20);
_local17 = ((_local15 * _local20) * _local16);
_local18 = (1 - _local16);
_local19 = ((1 - _local16) * _local18);
_local12 = (((_local19 * _arg2) + (((2 * _local16) * _local18) * _arg4)) + (_local17 * _arg6));
_local13 = (((_local19 * _arg3) + (((2 * _local16) * _local18) * _arg5)) + (_local17 * _arg7));
_local14 = (_local14 + Math.sqrt((((_local12 - _local10) * (_local12 - _local10)) + ((_local13 - _local11) * (_local13 - _local11)))));
_local10 = _local12;
_local11 = _local13;
};
var _local21:int = Math.floor(_local14);
_local15 = (1 / _local21);
var _local22:int = _arg2;
var _local23:int = _arg3;
_local20 = -1;
while (++_local20 <= _local21) {
_local16 = (_local15 * _local20);
_local17 = ((_local15 * _local20) * _local16);
_local18 = (1 - _local16);
_local19 = ((1 - _local16) * _local18);
_local12 = (((_local19 * _arg2) + (((2 * _local16) * _local18) * _arg4)) + (_local17 * _arg6));
_local13 = (((_local19 * _arg3) + (((2 * _local16) * _local18) * _arg5)) + (_local17 * _arg7));
line(_arg1, _local22, _local23, _local12, _local13, _arg8);
_local22 = _local12;
_local23 = _local13;
};
}
public static function circle(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:Number):void{
var _local6:int;
var _local7:int;
var _local8:int;
_local6 = 0;
_local7 = _arg4;
_local8 = (1 - _arg4);
_arg1.setPixel32((_arg2 + _local6), (_arg3 + _local7), _arg5);
_arg1.setPixel32((_arg2 + _local6), (_arg3 - _local7), _arg5);
_arg1.setPixel32((_arg2 - _local7), (_arg3 + _local6), _arg5);
_arg1.setPixel32((_arg2 + _local7), (_arg3 + _local6), _arg5);
while (_local7 > _local6) {
if (_local8 < 0){
_local8 = (_local8 + ((2 * _local6) + 3));
} else {
_local8 = (_local8 + ((2 * (_local6 - _local7)) + 5));
_local7--;
};
_local6++;
_arg1.setPixel32((_arg2 + _local6), (_arg3 + _local7), _arg5);
_arg1.setPixel32((_arg2 - _local6), (_arg3 + _local7), _arg5);
_arg1.setPixel32((_arg2 + _local6), (_arg3 - _local7), _arg5);
_arg1.setPixel32((_arg2 - _local6), (_arg3 - _local7), _arg5);
_arg1.setPixel32((_arg2 - _local7), (_arg3 + _local6), _arg5);
_arg1.setPixel32((_arg2 - _local7), (_arg3 - _local6), _arg5);
_arg1.setPixel32((_arg2 + _local7), (_arg3 - _local6), _arg5);
_arg1.setPixel32((_arg2 + _local7), (_arg3 + _local6), _arg5);
};
}
public static function triangle(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:Number):void{
line(_arg1, _arg2, _arg3, _arg4, _arg5, _arg8);
line(_arg1, _arg4, _arg5, _arg6, _arg7, _arg8);
line(_arg1, _arg6, _arg7, _arg2, _arg3, _arg8);
}
public static function filledTri(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:Number):void{
var _local9:Object = {};
lineTri(_local9, _arg1, _arg2, _arg3, _arg4, _arg5, _arg8);
lineTri(_local9, _arg1, _arg4, _arg5, _arg6, _arg7, _arg8);
lineTri(_local9, _arg1, _arg6, _arg7, _arg2, _arg3, _arg8);
}
public static function aaLine(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:Number):void{
var _local8:int;
var _local17:Number;
var _local7 = (Math.abs((_arg5 - _arg3)) > Math.abs((_arg4 - _arg2)));
if (_local7){
_local8 = _arg2;
_arg2 = _arg3;
_arg3 = _local8;
_local8 = _arg4;
_arg4 = _arg5;
_arg5 = _local8;
};
if (_arg2 > _arg4){
_local8 = _arg2;
_arg2 = _arg4;
_arg4 = _local8;
_local8 = _arg3;
_arg3 = _arg5;
_arg5 = _local8;
};
var _local9:int = (_arg4 - _arg2);
var _local10:int = (_arg5 - _arg3);
var _local11:Number = (_local10 / _local9);
var _local12:int = _arg2;
var _local13:Number = (_arg3 + (_local11 * (_local12 - _arg2)));
var _local14:Number = (1 - ((_arg2 + 0.5) % 1));
var _local15:int = _local12;
var _local16:int = Math.floor(_local13);
_local17 = ((1 - (_local13 % 1)) * _local14);
if (_local7){
};
_local17 = ((_local13 % 1) * _local14);
if (_local7){
};
var _local18:Number = (_local13 + _local11);
_local12 = _arg4;
_local13 = (_arg5 + (_local11 * (_local12 - _arg4)));
_local14 = ((_arg4 + 0.5) % 1);
var _local19:int = _local12;
var _local20:int = Math.floor(_local13);
_local17 = ((1 - (_local13 % 1)) * _local14);
if (_local7){
drawAlphaPixel(_arg1, _local20, _local19, _local17, _arg6);
} else {
drawAlphaPixel(_arg1, _local19, _local20, _local17, _arg6);
};
_local17 = ((_local13 % 1) * _local14);
if (_local7){
drawAlphaPixel(_arg1, (_local20 + 1), _local19, _local17, _arg6);
} else {
drawAlphaPixel(_arg1, _local19, (_local20 + 1), _local17, _arg6);
};
var _local21:int = _local15;
while (_local21++ < _local19) {
_local17 = (1 - (_local18 % 1));
if (_local7){
drawAlphaPixel(_arg1, _local18, _local21, _local17, _arg6);
} else {
drawAlphaPixel(_arg1, _local21, _local18, _local17, _arg6);
};
_local17 = (_local18 % 1);
if (_local7){
drawAlphaPixel(_arg1, (_local18 + 1), _local21, _local17, _arg6);
} else {
drawAlphaPixel(_arg1, _local21, (_local18 + 1), _local17, _arg6);
};
_local18 = (_local18 + _local11);
};
}
private static function drawAlphaPixel(_arg1:BitmapData, _arg2:int, _arg3:int, _arg4:Number, _arg5:Number):void{
var _local6:uint = _arg1.getPixel32(_arg2, _arg3);
var _local7:uint = ((_local6 & 0xFF0000) >> 16);
var _local8:uint = ((_local6 & 0xFF00) >> 8);
var _local9:uint = (_local6 & 0xFF);
var _local10:uint = ((_arg5 & 0xFF0000) >> 16);
var _local11:uint = ((_arg5 & 0xFF00) >> 8);
var _local12:uint = (_arg5 & 0xFF);
var _local13:Number = 0xFF;
var _local14:Number = ((_local10 * _arg4) + (_local7 * (1 - _arg4)));
var _local15:Number = ((_local11 * _arg4) + (_local8 * (1 - _arg4)));
var _local16:Number = ((_local12 * _arg4) + (_local9 * (1 - _arg4)));
var _local17:uint = ((((_local13 << 24) + (_local14 << 16)) + (_local15 << 8)) + _local16);
_arg1.setPixel32(_arg2, _arg3, _local17);
}
private static function lineTri(_arg1:Object, _arg2:BitmapData, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:Number):void{
var _local9:int;
var _local8 = (((_arg6 - _arg4) * (_arg6 - _arg4)) > ((_arg5 - _arg3) * (_arg5 - _arg3)));
if (_local8){
_local9 = _arg3;
_arg3 = _arg4;
_arg4 = _local9;
_local9 = _arg5;
_arg5 = _arg6;
_arg6 = _local9;
};
if (_arg3 > _arg5){
_arg3 = (_arg3 ^ _arg5);
_arg5 = (_arg5 ^ _arg3);
_arg3 = (_arg3 ^ _arg5);
_arg4 = (_arg4 ^ _arg6);
_arg6 = (_arg6 ^ _arg4);
_arg4 = (_arg4 ^ _arg6);
};
var _local10:int = (_arg5 - _arg3);
var _local11:int = Math.abs((_arg6 - _arg4));
var _local12:int;
var _local13:int = _arg4;
var _local14:int = ((_arg4 < _arg6)) ? 1 : -1;
var _local15:int = _arg3;
var _local16:int = (_arg5 - (_local10 >> 1));
var _local17:int = _arg5;
var _local18:int = _arg6;
var _local19:Rectangle = new Rectangle();
var _local20:int;
_local19.x = 0;
_local19.y = 0;
_local19.width = 0;
_local19.height = 1;
while (_local15++ <= _local16) {
if (_local8){
checkLine(_arg1, _local13, _local15, _arg2, _arg7, _local19);
if (((!((_local17 == _arg5))) && (!((_local17 == _local16))))){
checkLine(_arg1, _local18, (_local17 + 1), _arg2, _arg7, _local19);
};
};
_local12 = (_local12 + _local11);
if ((_local12 << 1) >= _local10){
if (!_local8){
checkLine(_arg1, ((_local15 - _local20) + 1), _local13, _arg2, _arg7, _local19);
if (_local17 != _local16){
checkLine(_arg1, (_local17 + 1), _local18, _arg2, _arg7, _local19);
};
};
_local20 = 0;
_local13 = (_local13 + _local14);
_local18 = (_local18 - _local14);
_local12 = (_local12 - _local10);
};
_local20++;
_local17--;
};
if (!_local8){
checkLine(_arg1, ((_local15 - _local20) + 1), _local13, _arg2, _arg7, _local19);
};
}
}
}//package com.foxaweb.utils
Section 176
//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 177
//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 178
//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 179
//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, "utmcid=", id);
_addIfNotEmpty(_local1, "utmcsr=", source);
_addIfNotEmpty(_local1, "utmgclid=", clickId);
_addIfNotEmpty(_local1, "utmccn=", name);
_addIfNotEmpty(_local1, "utmcmd=", medium);
_addIfNotEmpty(_local1, "utmctr=", term);
_addIfNotEmpty(_local1, "utmcct=", content);
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 180
//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 181
//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 _data:Object;
private var _OBJ:Object;
private var _utmb:UTMB;
private var _utmc:UTMC;
private var _utma:UTMA;
private var _debug:DebugConfiguration;
private var _utmk:UTMK;
private var _config:Configuration;
private var _utmv:UTMV;
private var _utmx:UTMX;
private var _utmz:UTMZ;
private var _volatile:Boolean;
public function Buffer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Boolean=false, _arg4:Object=null){
var _local5:String;
super();
_config = _arg1;
_debug = _arg2;
_data = _arg4;
_volatile = _arg3;
if (_volatile){
_OBJ = new Object();
if (_data){
for (_local5 in _data) {
_OBJ[_local5] = _data[_local5];
};
};
};
}
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 utmx():UTMX{
if (!hasUTMX()){
_createUMTX();
};
return (_utmx);
}
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 clearCookies():void{
utma.reset();
utmb.reset();
utmc.reset();
utmz.reset();
utmv.reset();
utmk.reset();
}
public function resetCurrentSession():void{
_clearUTMB();
_clearUTMC();
save();
}
public function hasUTMK():Boolean{
if (_utmk){
return (true);
};
return (false);
}
public function getLinkerUrl(_arg1:String="", _arg2:Boolean=false):String{
var _local3:String = toLinkerParams();
var _local4:String = _arg1;
var _local5:Array = _arg1.split("#");
if (_local3){
if (_arg2){
if (1 >= _local5.length){
_local4 = (_local4 + ("#" + _local3));
} else {
_local4 = (_local4 + ("&" + _local3));
};
} else {
if (1 >= _local5.length){
if (_arg1.indexOf("?") > -1){
_local4 = (_local4 + "&");
} else {
_local4 = (_local4 + "?");
};
_local4 = (_local4 + _local3);
} else {
_local4 = _local5[0];
if (_arg1.indexOf("?") > -1){
_local4 = (_local4 + "&");
} else {
_local4 = (_local4 + "?");
};
_local4 = (_local4 + ((_local3 + "#") + _local5[1]));
};
};
};
return (_local4);
}
public function generateCookiesHash():Number{
var _local1 = "";
_local1 = (_local1 + utma.valueOf());
_local1 = (_local1 + utmb.valueOf());
_local1 = (_local1 + utmc.valueOf());
_local1 = (_local1 + utmx.valueOf());
_local1 = (_local1 + utmz.valueOf());
_local1 = (_local1 + utmv.valueOf());
return (Utils.generateHash(_local1));
}
private function _createUMTA():void{
_utma = new UTMA();
_utma.proxy = this;
}
private function _createUMTB():void{
_utmb = new UTMB();
_utmb.proxy = this;
}
private function _createUMTC():void{
_utmc = new UTMC();
}
public function hasUTMV():Boolean{
if (_utmv){
return (true);
};
return (false);
}
private function _createUMTK():void{
_utmk = new UTMK();
_utmk.proxy = this;
}
public function hasUTMX():Boolean{
if (_utmx){
return (true);
};
return (false);
}
public function hasUTMZ():Boolean{
if (_utmz){
return (true);
};
return (false);
}
private function _createUMTV():void{
_utmv = new UTMV();
_utmv.proxy = this;
}
private function _createUMTX():void{
_utmx = new UTMX();
_utmx.proxy = this;
}
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;
};
}
public function isGenuine():Boolean{
if (!hasUTMK()){
return (true);
};
return ((utmk.hash == generateCookiesHash()));
}
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);
}
public function toLinkerParams():String{
var _local1 = "";
_local1 = (_local1 + utma.toURLString());
_local1 = (_local1 + ("&" + utmb.toURLString()));
_local1 = (_local1 + ("&" + utmc.toURLString()));
_local1 = (_local1 + ("&" + utmx.toURLString()));
_local1 = (_local1 + ("&" + utmz.toURLString()));
_local1 = (_local1 + ("&" + utmv.toURLString()));
_local1 = (_local1 + ("&__utmk=" + generateCookiesHash()));
return (_local1);
}
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;
};
}
public function createSO():void{
var saveSO:Boolean;
UTMZ.defaultTimespan = _config.conversionTimeout;
UTMB.defaultTimespan = _config.sessionTimeout;
if (!_volatile){
try {
_SO = SharedObject.getLocal(_config.cookieName, _config.cookiePath);
} catch(e:Error) {
if (_debug.active){
_debug.warning(((("Shared Object " + _config.cookieName) + " failed to be set\nreason: ") + e.message));
};
};
saveSO = 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();
saveSO = 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();
saveSO = true;
};
};
if (_SO.data.utmc){
delete _SO.data.utmc;
saveSO = true;
};
if (_SO.data.utmk){
if (!hasUTMK()){
_createUMTK();
};
_utmk.fromSharedObject(_SO.data.utmk);
if (_debug.verbose){
_debug.info(("found: " + _utmk.toString()), VisualDebugMode.geek);
};
};
if (!hasUTMX()){
_createUMTX();
};
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();
saveSO = 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();
saveSO = true;
};
};
if (saveSO){
save();
};
};
}
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 182
//DocumentInfo (com.google.analytics.core.DocumentInfo)
package com.google.analytics.core {
import com.google.analytics.v4.*;
import com.google.analytics.external.*;
import com.google.analytics.utils.*;
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));
if (_arg1 == ""){
_arg1 = "/";
};
};
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 183
//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 184
//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 185
//Ecommerce (com.google.analytics.core.Ecommerce)
package com.google.analytics.core {
import com.google.analytics.debug.*;
import com.google.analytics.ecommerce.*;
public class Ecommerce {
private var _debug:DebugConfiguration;
private var _trans:Array;
public function Ecommerce(_arg1:DebugConfiguration){
this._debug = _arg1;
_trans = new Array();
}
public function getTransLength():Number{
return (_trans.length);
}
public function getTransFromArray(_arg1:Number):Transaction{
return (_trans[_arg1]);
}
public function addTransaction(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String, _arg6:String, _arg7:String, _arg8:String):Transaction{
var _local9:Transaction;
_local9 = getTransaction(_arg1);
if (_local9 == null){
_local9 = new Transaction(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
_trans.push(_local9);
} else {
_local9.affiliation = _arg2;
_local9.total = _arg3;
_local9.tax = _arg4;
_local9.shipping = _arg5;
_local9.city = _arg6;
_local9.state = _arg7;
_local9.country = _arg8;
};
return (_local9);
}
public function getTransaction(_arg1:String):Transaction{
var _local2:Number;
_local2 = 0;
while (_local2 < _trans.length) {
if (_trans[_local2].id == _arg1){
return (_trans[_local2]);
};
_local2++;
};
return (null);
}
}
}//package com.google.analytics.core
Section 186
//EventInfo (com.google.analytics.core.EventInfo)
package com.google.analytics.core {
import com.google.analytics.utils.*;
import com.google.analytics.data.*;
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 187
//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 188
//ga_internal (com.google.analytics.core.ga_internal)
package com.google.analytics.core {
public namespace ga_internal;
}//package com.google.analytics.core
Section 189
//GIFRequest (com.google.analytics.core.GIFRequest)
package com.google.analytics.core {
import flash.events.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.display.*;
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 190
//IdleTimer (com.google.analytics.core.IdleTimer)
package com.google.analytics.core {
import flash.events.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.display.*;
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 191
//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 192
//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 193
//RequestObject (com.google.analytics.core.RequestObject)
package com.google.analytics.core {
import flash.utils.*;
import flash.net.*;
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 194
//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 195
//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 getLinkerUrl(_arg1:String="", _arg2:Boolean=false):String{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'getLinkerUrl' method for the moment."));
};
return ("");
}
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 clearIgnoredOrganic():void{
enqueue("clearIgnoredOrganic");
}
public function setVar(_arg1:String):void{
enqueue("setVar", _arg1);
}
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):void{
if (CACHE_THROW_ERROR){
throw (new IllegalOperationError("The tracker is not ready and you can use the 'addTrans' method for the moment."));
};
}
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 196
//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 197
//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 198
//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 199
//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 200
//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 201
//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 202
//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 _local4:Array;
var _local1:Array = [];
var _local5 = "";
var _local6:int;
while (_local6 < fields.length) {
_local2 = fields[_local6];
_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);
};
};
};
};
_local6++;
};
if (isEmpty()){
return ("-");
};
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 203
//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 204
//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;
}
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 205
//UTMX (com.google.analytics.data.UTMX)
package com.google.analytics.data {
public class UTMX extends UTMCookie {
private var _value:String;
public function UTMX(){
super("utmx", "__utmx", ["value"], 0);
_value = "-";
}
public function get value():String{
return (_value);
}
public function set value(_arg1:String):void{
_value = _arg1;
}
}
}//package com.google.analytics.data
Section 206
//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 207
//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 208
//_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 209
//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 210
//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 211
//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 212
//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 213
//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;
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 214
//DebugConfiguration (com.google.analytics.debug.DebugConfiguration)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.utils.*;
import flash.net.*;
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 215
//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 216
//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 217
//ILayout (com.google.analytics.debug.ILayout)
package com.google.analytics.debug {
import com.google.analytics.core.*;
import flash.display.*;
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 218
//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 219
//Label (com.google.analytics.debug.Label)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
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 220
//Layout (com.google.analytics.debug.Layout)
package com.google.analytics.debug {
import flash.events.*;
import com.google.analytics.core.*;
import flash.display.*;
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 221
//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 222
//Panel (com.google.analytics.debug.Panel)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
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 223
//Style (com.google.analytics.debug.Style)
package com.google.analytics.debug {
public const Style:_Style = new _Style();
}//package com.google.analytics.debug
Section 224
//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 225
//UISprite (com.google.analytics.debug.UISprite)
package com.google.analytics.debug {
import flash.events.*;
import flash.display.*;
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 226
//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 227
//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 228
//Item (com.google.analytics.ecommerce.Item)
package com.google.analytics.ecommerce {
import com.google.analytics.utils.*;
public class Item {
private var _price:String;
private var _id:String;
private var _sku:String;
private var _category:String;
private var _quantity:String;
private var _name:String;
public function Item(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String, _arg6:String){
this._id = _arg1;
this._sku = _arg2;
this._name = _arg3;
this._category = _arg4;
this._price = _arg5;
this._quantity = _arg6;
}
public function set sku(_arg1:String):void{
_sku = _arg1;
}
public function get price():String{
return (_price);
}
public function get name():String{
return (_name);
}
public function get quantity():String{
return (_quantity);
}
public function set name(_arg1:String):void{
_name = _arg1;
}
public function set price(_arg1:String):void{
_price = _arg1;
}
public function get id():String{
return (_id);
}
public function get sku():String{
return (_sku);
}
public function set quantity(_arg1:String):void{
_quantity = _arg1;
}
public function toGifParams():Variables{
var _local1:Variables = new Variables();
_local1.URIencode = true;
_local1.post = ["utmt", "utmtid", "utmipc", "utmipn", "utmiva", "utmipr", "utmiqt"];
_local1.utmt = "item";
_local1.utmtid = _id;
_local1.utmipc = _sku;
_local1.utmipn = _name;
_local1.utmiva = _category;
_local1.utmipr = _price;
_local1.utmiqt = _quantity;
return (_local1);
}
public function set id(_arg1:String):void{
_id = _arg1;
}
public function set category(_arg1:String):void{
_category = _arg1;
}
public function get category():String{
return (_category);
}
}
}//package com.google.analytics.ecommerce
Section 229
//Transaction (com.google.analytics.ecommerce.Transaction)
package com.google.analytics.ecommerce {
import com.google.analytics.utils.*;
public class Transaction {
private var _items:Array;
private var _total:String;
private var _vars:Variables;
private var _shipping:String;
private var _city:String;
private var _state:String;
private var _country:String;
private var _tax:String;
private var _affiliation:String;
private var _id:String;
public function Transaction(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String, _arg6:String, _arg7:String, _arg8:String){
this._id = _arg1;
this._affiliation = _arg2;
this._total = _arg3;
this._tax = _arg4;
this._shipping = _arg5;
this._city = _arg6;
this._state = _arg7;
this._country = _arg8;
_items = new Array();
}
public function get total():String{
return (_total);
}
public function getItemFromArray(_arg1:Number):Item{
return (_items[_arg1]);
}
public function set total(_arg1:String):void{
_total = _arg1;
}
public function getItem(_arg1:String):Item{
var _local2:Number;
_local2 = 0;
while (_local2 < _items.length) {
if (_items[_local2].sku == _arg1){
return (_items[_local2]);
};
_local2++;
};
return (null);
}
public function getItemsLength():Number{
return (_items.length);
}
public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:String):void{
var _local6:Item;
_local6 = getItem(_arg1);
if (_local6 == null){
_local6 = new Item(_id, _arg1, _arg2, _arg3, _arg4, _arg5);
_items.push(_local6);
} else {
_local6.name = _arg2;
_local6.category = _arg3;
_local6.price = _arg4;
_local6.quantity = _arg5;
};
}
public function set shipping(_arg1:String):void{
_shipping = _arg1;
}
public function get country():String{
return (_country);
}
public function get state():String{
return (_state);
}
public function set tax(_arg1:String):void{
_tax = _arg1;
}
public function set affiliation(_arg1:String):void{
_affiliation = _arg1;
}
public function set state(_arg1:String):void{
_state = _arg1;
}
public function get id():String{
return (_id);
}
public function get tax():String{
return (_tax);
}
public function toGifParams():Variables{
var _local1:Variables = new Variables();
_local1.URIencode = true;
_local1.utmt = "tran";
_local1.utmtid = id;
_local1.utmtst = affiliation;
_local1.utmtto = total;
_local1.utmttx = tax;
_local1.utmtsp = shipping;
_local1.utmtci = city;
_local1.utmtrg = state;
_local1.utmtco = country;
_local1.post = ["utmtid", "utmtst", "utmtto", "utmttx", "utmtsp", "utmtci", "utmtrg", "utmtco"];
return (_local1);
}
public function get affiliation():String{
return (_affiliation);
}
public function get city():String{
return (_city);
}
public function get shipping():String{
return (_shipping);
}
public function set id(_arg1:String):void{
_id = _arg1;
}
public function set city(_arg1:String):void{
_city = _arg1;
}
public function set country(_arg1:String):void{
_country = _arg1;
}
}
}//package com.google.analytics.ecommerce
Section 230
//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 231
//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 232
//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 233
//JavascriptProxy (com.google.analytics.external.JavascriptProxy)
package com.google.analytics.external {
import com.google.analytics.debug.*;
import flash.system.*;
import flash.external.*;
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 234
//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 235
//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 236
//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 237
//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 238
//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 239
//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.charAt(0) == "?"){
_arg1 = _arg1.substr(1, _arg1.length);
};
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 240
//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 241
//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);
}
public function getLinkerUrl(_arg1:String="", _arg2:Boolean=false):String{
_debug.info((((("getLinkerUrl(" + _arg1) + ", ") + _arg2) + ")"));
return (_call("_getLinkerUrl", _arg1, _arg2));
}
private function _linkTrackingObject(_arg1:String):void{
_proxy.call(_linkTrackingObject_js, _jsContainer, _arg1);
}
public function setClientInfo(_arg1:Boolean):void{
_debug.info((("setClientInfo( " + _arg1) + " )"));
_call("_setClientInfo", _arg1);
}
public function trackTrans():void{
_debug.info("trackTrans()");
_call("_trackTrans");
}
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 setCookieTimeout(_arg1:int):void{
_debug.info((("setCookieTimeout( " + _arg1) + " )"));
_call("_setCookieTimeout", _arg1);
}
public function trackPageview(_arg1:String=""):void{
_debug.info((("trackPageview( " + _arg1) + " )"));
_call("_trackPageview", _arg1);
}
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"));
}
public function getClientInfo():Boolean{
_debug.info("getClientInfo()");
return (_call("_getClientInfo"));
}
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):void{
_debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " )"));
_call("_addTrans", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
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 242
//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 243
//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 setDetectTitle(_arg1:Boolean):void;
function setLocalRemoteServerMode():void;
function resetSession():void;
function setLocalServerMode():void;
function setCampContentKey(_arg1:String):void;
function addOrganic(_arg1:String, _arg2:String):void;
function setDetectFlash(_arg1:Boolean):void;
function setAllowLinker(_arg1:Boolean):void;
function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean;
function setCampTermKey(_arg1:String):void;
function setCampNameKey(_arg1:String):void;
function getLinkerUrl(_arg1:String="", _arg2:Boolean=false):String;
function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void;
function clearIgnoredRef():void;
function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):void;
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 getServiceMode():ServerOperationMode;
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 setDomainName(_arg1:String):void;
function addIgnoredOrganic(_arg1:String):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 getClientInfo():Boolean;
function cookiePathCopy(_arg1:String):void;
function getDetectTitle():Boolean;
}
}//package com.google.analytics.v4
Section 244
//Tracker (com.google.analytics.v4.Tracker)
package com.google.analytics.v4 {
import com.google.analytics.core.*;
import com.google.analytics.debug.*;
import flash.net.*;
import com.google.analytics.external.*;
import com.google.analytics.utils.*;
import com.google.analytics.data.*;
import com.google.analytics.ecommerce.*;
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 _ecom:Ecommerce;
private var _account:String;
public function Tracker(_arg1:String, _arg2:Configuration, _arg3:DebugConfiguration, _arg4:Environment, _arg5:Buffer, _arg6:GIFRequest, _arg7:AdSenseGlobals, _arg8:Ecommerce){
var _local9:String;
super();
_account = _arg1;
_config = _arg2;
_debug = _arg3;
_info = _arg4;
_buffer = _arg5;
_gifRequest = _arg6;
_adSense = _arg7;
_ecom = _arg8;
if (!Utils.validateAccount(_arg1)){
_local9 = (("Account \"" + _arg1) + "\" is not valid.");
_debug.warning(_local9);
throw (new Error(_local9));
};
}
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 getLinkerUrl(_arg1:String="", _arg2:Boolean=false):String{
_initData();
_debug.info((((("getLinkerUrl( " + _arg1) + ", ") + _arg2.toString()) + " )"));
return (_buffer.getLinkerUrl(_arg1, _arg2));
}
public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{
_initData();
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{
var _local1:Number;
var _local2:Number;
var _local4:Transaction;
_initData();
var _local3:Array = new Array();
if (_takeSample()){
_local1 = 0;
while (_local1 < _ecom.getTransLength()) {
_local4 = _ecom.getTransFromArray(_local1);
_local3.push(_local4.toGifParams());
_local2 = 0;
while (_local2 < _local4.getItemsLength()) {
_local3.push(_local4.getItemFromArray(_local2).toGifParams());
_local2++;
};
_local1++;
};
_local1 = 0;
while (_local1 < _local3.length) {
_gifRequest.send(_account, _local3[_local1]);
_local1++;
};
};
}
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 not implemented in AS3 mode");
}
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);
_debug.info(("Search: " + _info.locationSearch));
_debug.info(("CampaignTrackig: " + _buffer.utmz.campaignTracking));
};
};
_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;
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{
var _local7:Transaction;
_local7 = _ecom.getTransaction(_arg1);
if (_local7 == null){
_local7 = _ecom.addTransaction(_arg1, "", "", "", "", "", "", "");
};
_local7.addItem(_arg2, _arg3, _arg4, _arg5.toString(), _arg6.toString());
if (_debug.active){
_debug.info((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " )"));
};
}
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 = encodeURI(_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):void{
_ecom.addTransaction(_arg1, _arg2, _arg3.toString(), _arg4.toString(), _arg5.toString(), _arg6, _arg7, _arg8);
if (_debug.active){
_debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " );"));
};
}
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){
};
_buffer.createSO();
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{
var targetUrl = _arg1;
var useHash = _arg2;
_initData();
var out:String = _buffer.getLinkerUrl(targetUrl, useHash);
var request:URLRequest = new URLRequest(out);
_debug.info((("link( " + [targetUrl, useHash].join(",")) + " )"));
try {
navigateToURL(request, "_top");
} catch(e:Error) {
_debug.warning(("An error occured in link() msg: " + e.message));
};
}
public function setRemoteServerMode():void{
_config.serverMode = ServerOperationMode.remote;
_debug.info("setRemoteServerMode()");
}
}
}//package com.google.analytics.v4
Section 245
//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 246
//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 247
//GATracker (com.google.analytics.GATracker)
package com.google.analytics {
import flash.events.*;
import com.google.analytics.core.*;
import com.google.analytics.v4.*;
import com.google.analytics.debug.*;
import flash.display.*;
import com.google.analytics.external.*;
import com.google.analytics.utils.*;
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 _ecom:Ecommerce;
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 getLinkerUrl(_arg1:String="", _arg2:Boolean=false):String{
return (_tracker.getLinkerUrl(_arg1, _arg2));
}
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):void{
_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 isReady():Boolean{
return (_ready);
}
public function getLocalGifPath():String{
return (_tracker.getLocalGifPath());
}
public function setAllowAnchor(_arg1:Boolean):void{
_tracker.setAllowAnchor(_arg1);
}
public function clearIgnoredRef():void{
_tracker.clearIgnoredRef();
}
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);
_ecom = new Ecommerce(_debug);
_env.url = _display.stage.loaderInfo.url;
return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense, _ecom));
}
public function setCampNOKey(_arg1:String):void{
_tracker.setCampNOKey(_arg1);
}
public function setDetectTitle(_arg1:Boolean):void{
_tracker.setDetectTitle(_arg1);
}
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 getServiceMode():ServerOperationMode{
return (_tracker.getServiceMode());
}
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 248
//MediaEvent (com.malee.events.MediaEvent)
package com.malee.events {
import flash.events.*;
public class MediaEvent extends Event {
public static const STOP:String = "stop";
public static const CONNECT:String = "connect";
public static const START:String = "start";
public static const FINISH:String = "finish";
public static const PLAY:String = "play";
public static const PAUSE:String = "pause";
public static const CLOSE:String = "close";
public static const SEEK:String = "seek";
public function MediaEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false):void{
super(_arg1, _arg2, _arg3);
}
override public function clone():Event{
return (new MediaEvent(type, bubbles, cancelable));
}
}
}//package com.malee.events
Section 249
//AssetLoader (com.malee.loaders.AssetLoader)
package com.malee.loaders {
import flash.events.*;
import flash.display.*;
import flash.system.*;
import flash.net.*;
import flash.errors.*;
public class AssetLoader extends Loader implements ILoader {
private var _url:String;
private var context:LoaderContext;
private var request:URLRequest;
public function AssetLoader(_arg1:String="", _arg2:ApplicationDomain=null){
_url = _arg1;
request = new URLRequest();
context = new LoaderContext();
this.applicationDomain = ((_arg2 == null)) ? CURRENT_DOMAIN : _arg2;
handleInternalEvents();
}
public function set applicationDomain(_arg1:ApplicationDomain):void{
context.applicationDomain = _arg1;
}
private function onError(_arg1:ErrorEvent):void{
dispatchEvent(_arg1);
}
private function onProgress(_arg1:ProgressEvent):void{
dispatchEvent(_arg1);
}
private function handleInternalEvents():void{
contentLoaderInfo.addEventListener(Event.INIT, onInit);
contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
}
public function get url():String{
return (_url);
}
public function get applicationDomain():ApplicationDomain{
return (contentLoaderInfo.applicationDomain);
}
public function get bytesLoaded():uint{
return (contentLoaderInfo.bytesLoaded);
}
override public function close():void{
try {
super.close();
} catch(error:IOError) {
};
}
public function get bytesTotal():uint{
return (contentLoaderInfo.bytesTotal);
}
private function onComplete(_arg1:Event):void{
dispatchEvent(_arg1);
}
private function onInit(_arg1:Event):void{
dispatchEvent(_arg1);
}
public function loadData(_arg1:String):void{
_url = _arg1;
request.url = _arg1;
load(request, context);
}
public static function get CURRENT_DOMAIN():ApplicationDomain{
return (ApplicationDomain.currentDomain);
}
public static function get NEW_DOMAIN():ApplicationDomain{
return (new ApplicationDomain());
}
public static function loadQuick(_arg1:String, _arg2:Function=null, _arg3:Function=null):AssetLoader{
var _local4:AssetLoader = new (AssetLoader);
if (_arg3 != null){
_local4.addEventListener(IOErrorEvent.IO_ERROR, _arg3);
_local4.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _arg3);
};
if (_arg2 != null){
_local4.addEventListener(Event.COMPLETE, _arg2);
};
_local4.loadData(_arg1);
return (_local4);
}
public static function get CHILD_DOMAIN():ApplicationDomain{
return (new ApplicationDomain(CURRENT_DOMAIN));
}
}
}//package com.malee.loaders
Section 250
//ILoader (com.malee.loaders.ILoader)
package com.malee.loaders {
import flash.events.*;
public interface ILoader extends IEventDispatcher {
function loadData(_arg1:String):void;
function get url():String;
}
}//package com.malee.loaders
Section 251
//FLVPlayer (com.malee.media.FLVPlayer)
package com.malee.media {
import flash.events.*;
import flash.display.*;
import com.malee.events.*;
import flash.media.*;
import flash.net.*;
public class FLVPlayer extends Sprite {
private var stream:NetStream;
private var client:StreamClient;
private var connection:NetConnection;
private var _url:String;
private var _duration:Number;
private var _video:Video;
public function FLVPlayer(_arg1:int, _arg2:int):void{
_video = new Video(_arg1, _arg2);
addChild(_video);
initClient();
initConnection();
}
final public function stop():void{
pause();
seek(0);
dispatchEvent(new MediaEvent(MediaEvent.STOP));
}
private function loadVideo():void{
stream = new NetStream(connection);
stream.client = client;
stream.bufferTime = 2;
stream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
_video.attachNetStream(stream);
dispatchEvent(new MediaEvent(MediaEvent.CONNECT));
}
private function onPlayStatus(_arg1:Object):void{
}
final public function get loadPercent():Number{
return ((stream.bytesLoaded / stream.bytesTotal));
}
private function initClient():void{
client = new StreamClient();
client.onCuePoint = onCuePoint;
client.onImageData = onImageData;
client.onMetaData = onMetaData;
client.onPlayStatus = onPlayStatus;
client.onTextData = onTextData;
}
final public function get time():Number{
return (stream.time);
}
private function initConnection():void{
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
}
final public function seek(_arg1:Number):void{
stream.seek(_arg1);
dispatchEvent(new MediaEvent(MediaEvent.SEEK));
}
final public function get duration():Number{
return (_duration);
}
private function onImageData(_arg1:Object):void{
}
private function onNetStatus(_arg1:NetStatusEvent):void{
switch (_arg1.info.code){
case "NetConnection.Connect.Success":
loadVideo();
break;
case "NetStream.Play.Start":
dispatchEvent(new MediaEvent(MediaEvent.START));
break;
case "NetStream.Play.Stop":
dispatchEvent(new MediaEvent(MediaEvent.FINISH));
break;
case "NetStream.Buffer.Full":
dispatchEvent(new MediaEvent(MediaEvent.PLAY));
break;
case "NetStream.Pause.Notify":
break;
case "NetStream.Seek.InvalidTime":
break;
};
}
final public function set bufferTime(_arg1:Number):void{
stream.bufferTime = _arg1;
}
final public function setVolume(_arg1:Number):void{
stream.soundTransform = new SoundTransform(_arg1, 0);
}
private function onMetaData(_arg1:Object):void{
_duration = _arg1.duration;
}
final public function start():void{
stream.play(_url);
}
private function onCuePoint(_arg1:Object):void{
}
final public function set smoothing(_arg1:Boolean):void{
_video.smoothing = _arg1;
}
private function onError(_arg1:SecurityErrorEvent):void{
}
final public function get bufferTime():Number{
return (stream.bufferTime);
}
final public function get playPercent():Number{
return ((time / _duration));
}
final public function get smoothing():Boolean{
return (_video.smoothing);
}
final public function load(_arg1:String):void{
_url = _arg1;
connection.connect(null);
}
final public function pause():void{
stream.pause();
dispatchEvent(new MediaEvent(MediaEvent.PAUSE));
}
final public function close():void{
stream.close();
dispatchEvent(new MediaEvent(MediaEvent.CLOSE));
}
final public function play():void{
stream.resume();
dispatchEvent(new MediaEvent(MediaEvent.PLAY));
}
private function onTextData(_arg1:Object):void{
}
}
}//package com.malee.media
dynamic class StreamClient {
private function StreamClient():void{
}
}
Section 252
//ClearSpringInterface (com.malee.net.clearspring.ClearSpringInterface)
package com.malee.net.clearspring {
import flash.display.*;
import flash.system.*;
public class ClearSpringInterface {
private var _ref:DisplayObject;
private var _api:Object;
public function ClearSpringInterface(_arg1:DisplayObject){
_ref = _arg1;
start();
}
public function start():void{
Security.allowDomain("bin.clearspring.com");
Security.allowDomain("widgets.clearspring.com");
try {
_api = _ref.loaderInfo.loader.root;
trace((("User has viewed me " + _api.context.user.WIDGET_VIEWS) + " times"));
} catch(e:Error) {
trace("WARNING: Not able to add loader event listener. Normal if not running in the Clearspring container.");
};
}
public function get api():Object{
if (_api != null){
return (_api);
};
return (null);
}
}
}//package com.malee.net.clearspring
Section 253
//BitmapMatrix (com.malee.quickfx.display.bitmap.BitmapMatrix)
package com.malee.quickfx.display.bitmap {
import flash.display.*;
import flash.geom.*;
public class BitmapMatrix {
public var angles:int;
public var x:Number;
public var y:Number;
public var scaleX:Number;
public var scaleY:Number;
public function BitmapMatrix(_arg1:int=1, _arg2:Number=0, _arg3:Number=0, _arg4:Number=1, _arg5:Number=1){
this.x = _arg2;
this.y = _arg3;
this.angles = _arg1;
this.scaleX = _arg4;
this.scaleY = _arg5;
}
public static function createMatrixFromDisplay(_arg1:DisplayObject, _arg2:DisplayObject=null, _arg3:int=1):BitmapMatrix{
var _local4:Rectangle;
if (_arg2 != null){
_local4 = _arg1.getBounds(_arg2);
} else {
_local4 = _arg1.getBounds(_arg1);
};
return (new BitmapMatrix(_arg3, _local4.x, _local4.y, _arg1.scaleX, _arg1.scaleY));
}
}
}//package com.malee.quickfx.display.bitmap
Section 254
//BitmapMovie (com.malee.quickfx.display.bitmap.BitmapMovie)
package com.malee.quickfx.display.bitmap {
import flash.display.*;
public class BitmapMovie {
private var _frames:Array;
private var _totalFrames:int;
private var _angles:int;
public function BitmapMovie(_arg1:Array, _arg2:BitmapMatrix=null, _arg3:BitmapOptions=null){
_arg2 = ((_arg2 == null)) ? new BitmapMatrix() : _arg2;
_arg3 = ((_arg3 == null)) ? new BitmapOptions() : _arg3;
initialize(_arg1, _arg2, _arg3);
}
public function get angles():int{
return (_angles);
}
private function createFrames(_arg1:Array, _arg2:BitmapMatrix, _arg3:BitmapOptions):void{
var _local4:int;
var _local6:Bitmap;
_frames = [];
var _local5:int = _arg1.length;
_local4 = 0;
while (_local4 < _local5) {
_local6 = new Bitmap(_arg1[_local4]);
_frames[_local4] = new BitmapMovieFrame(_local6, _arg2, _arg3);
_local4++;
};
}
public function get totalFrames():int{
return (_totalFrames);
}
public function getBitmapData(_arg1:int, _arg2:int=0):BitmapData{
return (_frames[_arg1].getBitmapData(_arg2));
}
private function initialize(_arg1:Array, _arg2:BitmapMatrix, _arg3:BitmapOptions):void{
_angles = _arg2.angles;
createFrames(_arg1, _arg2, _arg3);
_totalFrames = _frames.length;
trace(("Bitmap rendered, we have frames: " + _totalFrames));
}
public function getFrame(_arg1:int):BitmapMovieFrame{
return (_frames[_arg1]);
}
public function getSlice(_arg1:int, _arg2:int=0):BitmapMovieSlice{
return (_frames[_arg1].getSlice(_arg2));
}
}
}//package com.malee.quickfx.display.bitmap
Section 255
//BitmapMovieDisplay (com.malee.quickfx.display.bitmap.BitmapMovieDisplay)
package com.malee.quickfx.display.bitmap {
import flash.display.*;
import flash.geom.*;
public class BitmapMovieDisplay {
private var _playhead:Number;
private var _angle:Number;
private var _angleIndex:int;
public var frameSpeed:Number;
private var _frame:Number;
private var _source:BitmapMovie;
private static const PI2:Number = 6.28318530717959;
public function BitmapMovieDisplay(_arg1:BitmapMovie, _arg2:int=0, _arg3:Number=0){
frameSpeed = 1;
this.source = _arg1;
this.frame = _arg2;
this.angle = _arg3;
}
public function get angles():int{
return (_source.angles);
}
public function forward():void{
_playhead = (_playhead + frameSpeed);
_frame = int(_playhead);
}
public function renderToBitmap(_arg1:Bitmap, _arg2:int=0, _arg3:int=0):void{
var _local4:BitmapMovieSlice = _source.getSlice(_frame, _angleIndex);
_arg1.bitmapData = _local4.bitmapData;
_arg1.x = (_arg2 - _local4.x);
_arg1.y = (_arg3 - _local4.y);
}
public function forwardLoop():void{
_playhead = ((_playhead + frameSpeed) % _source.totalFrames);
_frame = int(_playhead);
}
public function get totalFrames():int{
return (_source.totalFrames);
}
public function renderToBitmapData(_arg1:BitmapData, _arg2:Point):void{
var _local3:BitmapData = _source.getBitmapData(_frame, _angleIndex);
_arg1.copyPixels(_local3, _local3.rect, _arg2, null, null, true);
}
public function get angle():Number{
return (_angle);
}
public function set frame(_arg1:int):void{
_frame = (_playhead = _arg1);
}
public function get source():BitmapMovie{
return (_source);
}
public function backward():void{
_playhead = (_playhead - frameSpeed);
_frame = int(_playhead);
}
public function set angle(_arg1:Number):void{
_angle = _arg1;
_angleIndex = (((_angle % PI2) / PI2) * _source.angles);
if (_angleIndex < 0){
_angleIndex = (_angleIndex + _source.angles);
};
}
public function get displayAngle():Number{
return (((_angleIndex / _source.angles) * PI2));
}
public function get frame():int{
return (_frame);
}
public function set source(_arg1:BitmapMovie):void{
_source = _arg1;
}
public function get bitmapData():BitmapData{
return (_source.getBitmapData(_frame, _angleIndex));
}
public function set angleIndex(_arg1:int):void{
_angleIndex = _arg1;
if (_angleIndex < 0){
_angleIndex = (_angleIndex + _source.angles);
};
_angle = ((_angleIndex / _source.angles) * PI2);
}
public function get angleIndex():int{
return (_angleIndex);
}
}
}//package com.malee.quickfx.display.bitmap
Section 256
//BitmapMovieFrame (com.malee.quickfx.display.bitmap.BitmapMovieFrame)
package com.malee.quickfx.display.bitmap {
import flash.display.*;
public class BitmapMovieFrame {
private var _slices:Array;
private static const PI2:Number = 6.28318530717959;
public function BitmapMovieFrame(_arg1:DisplayObject, _arg2:BitmapMatrix, _arg3:BitmapOptions){
createSlices(_arg1, _arg2, _arg3);
}
public function getSlice(_arg1:int):BitmapMovieSlice{
return (_slices[_arg1]);
}
private function createSlices(_arg1:DisplayObject, _arg2:BitmapMatrix, _arg3:BitmapOptions):void{
var _local4:int;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_slices = new Array(_arg2.angles);
var _local5:int = _slices.length;
_local4 = 0;
while (_local4 < _local5) {
_local6 = (_local4 / _local5);
_local7 = (_local6 * PI2);
_local8 = (_local6 * 360);
_arg1.rotation = _local8;
_slices[_local4] = new BitmapMovieSlice(_arg1, _arg2, _arg3, _local7);
_local4++;
};
}
public function getBitmapData(_arg1:int):BitmapData{
return (_slices[_arg1].bitmapData);
}
}
}//package com.malee.quickfx.display.bitmap
Section 257
//BitmapMovieSlice (com.malee.quickfx.display.bitmap.BitmapMovieSlice)
package com.malee.quickfx.display.bitmap {
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
public class BitmapMovieSlice {
private var _height:int;
private var _width:int;
private var _bitmapData:BitmapData;
private var _x:int;
private var _y:int;
private var _angle:Number;
public function BitmapMovieSlice(_arg1:DisplayObject, _arg2:BitmapMatrix, _arg3:BitmapOptions, _arg4:Number){
createBitmapData(_arg1, _arg2, _arg3, _arg4);
}
public function get y():int{
return (_y);
}
public function get angle():Number{
return (_angle);
}
private function createNormal(_arg1:DisplayObject, _arg2:BitmapMatrix, _arg3:BitmapOptions):void{
draw(_arg1, getObjectBounds(_arg1), _arg2, _arg3);
}
public function get rect():Rectangle{
return (_bitmapData.rect);
}
private function getObjectBounds(_arg1:DisplayObject):Rectangle{
var _local2:Rectangle;
var _local6:DisplayObjectContainer;
var _local7:int;
var _local3:Sprite = new Sprite();
var _local4:Number = _arg1.x;
var _local5:Number = _arg1.y;
if (_arg1.parent != null){
_local6 = _arg1.parent;
_local7 = _local6.getChildIndex(_arg1);
_local3.addChild(_arg1);
_arg1.x = 0;
_arg1.y = 0;
_local2 = _arg1.getBounds(_local3);
_local6.addChildAt(_arg1, _local7);
} else {
_arg1.x = 0;
_arg1.y = 0;
_local2 = _arg1.getBounds(_local3);
};
_arg1.x = _local4;
_arg1.y = _local5;
return (_local2);
}
private function createFiltered(_arg1:DisplayObject, _arg2:BitmapMatrix, _arg3:BitmapOptions):void{
var _local7:Rectangle;
var _local8:int;
var _local12:BitmapFilter;
var _local4:Rectangle = getObjectBounds(_arg1);
var _local5:BitmapData = new BitmapData(_local4.width, _local4.height, false, 0);
var _local6:Rectangle = _local4.clone();
var _local9:int = _arg1.filters.length;
_local8 = 0;
while (_local8 < _local9) {
_local12 = (_arg1.filters[_local8] as BitmapFilter);
if (_local12 != null){
_local7 = _local5.generateFilterRect(_local5.rect, _local12);
_local6.x = (_local6.x + _local7.x);
_local6.y = (_local6.y + _local7.y);
_local6.width = (_local6.width + (_local7.width - _local5.width));
_local6.height = (_local6.height + (_local7.height - _local5.height));
};
_local8++;
};
_local5.dispose();
_local5 = null;
var _local10:Matrix = new Matrix();
_local10.rotate(_angle);
_local10.translate(-(_local6.x), -(_local6.y));
_local5 = new BitmapData(_local6.width, _local6.height, true, 0);
_local5.draw(_arg1, _local10);
var _local11:Rectangle = _local5.getColorBoundsRect(4294967295, 0, false);
_local5.dispose();
_local5 = null;
_local4.x = (_local6.x + _local11.x);
_local4.y = (_local6.y + _local11.y);
_local4.width = _local11.width;
_local4.height = _local11.height;
draw(_arg1, _local4, _arg2, _arg3);
}
public function get width():int{
return (_width);
}
public function get bitmapData():BitmapData{
return (_bitmapData);
}
public function createBitmapData(_arg1:DisplayObject, _arg2:BitmapMatrix, _arg3:BitmapOptions, _arg4:Number):void{
if (_bitmapData != null){
_bitmapData.dispose();
_bitmapData = null;
};
_angle = _arg4;
if (_arg1.filters.length > 0){
createFiltered(_arg1, _arg2, _arg3);
} else {
createNormal(_arg1, _arg2, _arg3);
};
}
public function get height():int{
return (_height);
}
private function draw(_arg1:DisplayObject, _arg2:Rectangle, _arg3:BitmapMatrix, _arg4:BitmapOptions):void{
var _local5:Matrix;
if ((((_arg2.width > 0)) && ((_arg2.height > 0)))){
_local5 = new Matrix();
_x = ((-(_arg2.x) + _arg3.x) * _arg3.scaleX);
_y = ((-(_arg2.y) + _arg3.y) * _arg3.scaleY);
_width = (_arg2.width * _arg3.scaleX);
_height = (_arg2.height * _arg3.scaleY);
_local5.scale(_arg3.scaleX, _arg3.scaleY);
_local5.rotate(_angle);
_local5.translate(_x, _y);
_bitmapData = new BitmapData(_width, _height, _arg4.transparent, _arg4.color);
_bitmapData.draw(_arg1, _local5, _arg4.colorTransform, _arg4.blendMode, _arg4.clipRect, _arg4.smoothing);
};
}
public function get x():int{
return (_x);
}
}
}//package com.malee.quickfx.display.bitmap
Section 258
//BitmapOptions (com.malee.quickfx.display.bitmap.BitmapOptions)
package com.malee.quickfx.display.bitmap {
import flash.geom.*;
public class BitmapOptions {
public var color:uint;
public var colorTransform:ColorTransform;
public var blendMode:String;
public var transparent:Boolean;
public var smoothing:Boolean;
public var clipRect:Rectangle;
public function BitmapOptions(_arg1:Boolean=false, _arg2:ColorTransform=null, _arg3:String=null){
this.smoothing = _arg1;
this.blendMode = _arg3;
this.colorTransform = _arg2;
color = 0;
clipRect = null;
transparent = true;
}
}
}//package com.malee.quickfx.display.bitmap
Section 259
//SoapMenu (com.malee.soap.SoapMenu)
package com.malee.soap {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.ui.*;
public class SoapMenu {
private var _context:ContextMenu;
private var _object:InteractiveObject;
public function SoapMenu(_arg1:DisplayObject):void{
_object = (_arg1 as InteractiveObject);
_context = new ContextMenu();
_context.hideBuiltInItems();
_object.contextMenu = _context;
init();
}
public function addItem(_arg1:String):void{
var _local2:ContextMenuItem = new ContextMenuItem(_arg1);
_local2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, selectItem);
_context.customItems.push(_local2);
}
private function selectItem(_arg1:ContextMenuEvent):void{
switch (_arg1.target.caption){
case "Game by Soap Creative":
linkToSoap();
break;
case "High Quality":
toggleQuality("HIGH");
break;
case "Low Quality":
toggleQuality("LOW");
break;
};
}
private function linkToSoap():void{
SoapTracking.trackSite("click", "visit_SOAP");
navigateToURL(new URLRequest("http://www.soap.com.au"), "_blank");
}
private function toggleQuality(_arg1:String):void{
_object.stage.quality = _arg1;
}
private function init():void{
addItem("Game by Soap Creative");
addItem("High Quality");
addItem("Low Quality");
}
}
}//package com.malee.soap
Section 260
//SoapTracking (com.malee.soap.SoapTracking)
package com.malee.soap {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
public class SoapTracking {
private static var _shared:SharedObject;
public static var clientId:int;
private static var siteEVTTime:Number;
private static var _request:URLRequest;
public static var projectId:int;
private static var _tracking:URLLoader;
private static var siteStartTime:Number;
private static var returnVisitor:int;
private static function onError(_arg1:IOErrorEvent):void{
trace("Tracking Error");
}
private static function sendSiteStats(_arg1:DisplayObject):void{
var _local2:URLRequest = new URLRequest();
var _local3:URLLoader = new URLLoader();
var _local4:URLVariables = new URLVariables();
_local2.url = "http://stats.soap.com.au/usrinfo.php";
_local2.method = URLRequestMethod.POST;
var _local5:String = _arg1.loaderInfo.url;
if (_local5.substring(0, 4) == "http"){
_local4.url = _local5;
} else {
_local4.url = "local";
};
_local4.clientId = clientId;
_local4.projectId = projectId;
_local2.data = _local4;
_local3.load(_local2);
}
private static function initTracking():void{
siteStartTime = getTimer();
siteEVTTime = getTimer();
checkReturn();
}
private static function onComplete(_arg1:Event):void{
}
public static function trackSite(_arg1:String, ... _args):void{
if (_tracking == null){
trace("ERROR - SoapTracking has not been Initalised");
return;
};
var _local3:String = _args.join(",");
var _local4:int;
switch (_arg1){
case "impression":
break;
case "click":
break;
case "over":
break;
case "durationFromInit":
_local4 = ((getTimer() - siteStartTime) / 1000);
break;
case "durationEvent":
_local4 = ((getTimer() - siteEVTTime) / 1000);
break;
default:
_arg1 = "";
};
var _local5:URLVariables = new URLVariables();
_local5["return"] = returnVisitor;
_local5.clientId = clientId;
_local5.projectId = projectId;
_local5.actionType = _arg1;
_local5.pageId = _local3;
_local5.time = _local4;
_local5.user = _shared.data.userID;
_request.data = _local5;
_tracking.load(_request);
}
private static function checkReturn():void{
returnVisitor = ((_shared.data.userID == undefined)) ? 0 : 1;
_shared.data.userID = (Math.random() * 9999999999);
}
public static function INIT(_arg1:int, _arg2:int, _arg3:DisplayObject):void{
clientId = _arg1;
projectId = _arg2;
_tracking = new URLLoader();
_request = new URLRequest();
_shared = SharedObject.getLocal(((("siteTrackingStats_" + _arg1) + "_") + _arg2), "/");
_request.url = "http://stats.soap.com.au/pgtrack.php";
_request.method = URLRequestMethod.POST;
_tracking.dataFormat = URLLoaderDataFormat.TEXT;
_tracking.addEventListener(Event.COMPLETE, onComplete);
_tracking.addEventListener(IOErrorEvent.IO_ERROR, onError);
initTracking();
sendSiteStats(_arg3);
}
}
}//package com.malee.soap
Section 261
//TimeKeeper (com.markfennell.display.TimeKeeper)
package com.markfennell.display {
import flash.utils.*;
public class TimeKeeper {
private var oldTime:Number;// = 0
private var countdownTime:Number;// = 0
private var isCountdown:Boolean;// = false
private var totalTime:Number;// = 0
private var pause:Boolean;// = false
public function TimeKeeper(_arg1:Number=0){
if (_arg1 != 0){
isCountdown = true;
countdownTime = _arg1;
};
this.reset();
}
public function stop():void{
if (!this.pause){
this.pause = true;
this.totalTime = (this.totalTime + (getTimer() - this.oldTime));
};
}
public function getTime(_arg1:int):int{
if (isCountdown){
return ((countdownTime - _arg1));
};
return (_arg1);
}
public function displayHour():int{
var _local1:int = this.getMili();
var _local2:int = Math.floor((_local1 / 1000));
var _local3:int = Math.floor((_local2 / 60));
var _local4:int = Math.floor((_local3 / 60));
return (_local4);
}
public function reset():void{
this.oldTime = 0;
this.pause = true;
this.totalTime = 0;
}
public function getMili():int{
var _local1:int = this.totalTime;
if (!this.pause){
_local1 = (_local1 + (getTimer() - this.oldTime));
};
return (getTime(_local1));
}
public function getMins():int{
var _local1:int = (this.totalTime / 1000);
if (!this.pause){
_local1 = (_local1 + (((getTimer() - this.oldTime) / 1000) / 60));
};
return (Math.round(getTime(_local1)));
}
public function addMili(_arg1:int):void{
this.totalTime = Math.max(0, (this.totalTime + _arg1));
}
public function start():void{
if (this.pause){
this.pause = false;
this.oldTime = getTimer();
};
}
public function displaySec():int{
var _local1:int = this.getMili();
var _local2:int = Math.floor((_local1 / 1000));
_local2 = (_local2 % 60);
return (_local2);
}
public function elapsedTime():int{
if (isCountdown){
return ((countdownTime - getMili()));
};
return (getMili());
}
public function displayTime():String{
var _local1:String = three(displayMili());
_local1 = _local1.substring(0, 3);
var _local2:String = ((((displayMin() + "'") + two(displaySec())) + "\"") + _local1);
return (_local2);
}
public function displayMin():int{
var _local1:int = this.getMili();
var _local2:int = Math.floor((_local1 / 1000));
var _local3:int = Math.floor((_local2 / 60));
_local3 = (_local3 % 60);
return (_local3);
}
public function getSecs():int{
var _local1:int = (this.totalTime / 1000);
if (!this.pause){
_local1 = (_local1 + ((getTimer() - this.oldTime) / 1000));
};
if (isCountdown){
return (((countdownTime / 1000) - _local1));
};
return (_local1);
}
public function subMili(_arg1:int):void{
this.totalTime = (this.totalTime - _arg1);
}
public function displayMili():int{
var _local1:int = this.getMili();
_local1 = (_local1 % 1000);
return (_local1);
}
public static function display(_arg1:Number, _arg2:String="'", _arg3:String="""):String{
var _local4:int = Math.floor((_arg1 / 1000));
var _local5:int = Math.floor((_local4 / 60));
return ((((((_local5 % 60) + _arg2) + two((_local4 % 60))) + _arg3) + three((_arg1 % 1000))));
}
private static function two(_arg1:int):String{
return ((((_arg1)>9) ? "" : "0" + _arg1));
}
private static function three(_arg1:int):String{
return (((((_arg1)>99) ? "" : "0" + ((_arg1)>9) ? "" : "0") + _arg1));
}
}
}//package com.markfennell.display
Section 262
//FoleyOptions (com.markfennell.sound.FoleyOptions)
package com.markfennell.sound {
public class FoleyOptions {
public static var ONCE:String = "once";
public static var LOOP:String = "loop";
public static var SINGLE:String = "single";
}
}//package com.markfennell.sound
Section 263
//FoleySound (com.markfennell.sound.FoleySound)
package com.markfennell.sound {
import flash.events.*;
import flash.geom.*;
import flash.media.*;
public class FoleySound extends SoundPlayer {
private var m_hasPlayed:Boolean;// = false
private var m_range:Number;
private var m_options:String;
private var m_source:IFoleySource;
public function FoleySound(_arg1:Sound, _arg2:Number, _arg3:IFoleySource, _arg4:String):void{
super(_arg1, false);
m_range = _arg2;
m_source = _arg3;
m_options = _arg4;
}
public function render(_arg1:Number, _arg2:Point):void{
var _local3:Number;
var _local4:Number = Point.distance(_arg2, m_source.point);
if (m_source.isOn){
if (_local4 < m_range){
_local3 = ((_arg1 * (m_range - _local4)) / m_range);
if (m_soundState == PLAYING){
volume = _local3;
} else {
if (m_options == FoleyOptions.ONCE){
if (m_hasPlayed){
return;
};
play(_local3, 1);
} else {
play(_local3, 999);
};
};
m_hasPlayed = true;
} else {
if (m_soundState == STOPPED){
return;
};
if (m_options == FoleyOptions.SINGLE){
m_loops = 1;
} else {
stop();
};
};
} else {
if (m_soundState == STOPPED){
return;
};
if (m_options == FoleyOptions.SINGLE){
m_loops = 1;
} else {
stop();
};
};
}
public static function stopSounds():void{
var item:SoundPlayer;
for each (item in soundsDictionary) {
try {
if (item.stoppable){
item.destroy();
soundsDictionary[item] = null;
};
} catch(e:Error) {
};
};
}
}
}//package com.markfennell.sound
Section 264
//IFoleySource (com.markfennell.sound.IFoleySource)
package com.markfennell.sound {
import flash.geom.*;
public interface IFoleySource {
function get point():Point;
function get isOn():Boolean;
}
}//package com.markfennell.sound
Section 265
//SoundEvent (com.markfennell.sound.SoundEvent)
package com.markfennell.sound {
import flash.events.*;
public class SoundEvent extends Event {
public var force:Boolean;
public var delay:Number;
public var volume:Number;
public var name:String;
public var loops:int;
public static var DIALOG:String = "Sound Dialog";
public static var EFFECT:String = "Sound Effect";
public function SoundEvent(_arg1:String, _arg2:String, _arg3:Number, _arg4:int=1, _arg5:Boolean=false, _arg6:Number=0){
super(_arg1, true, true);
name = _arg2;
volume = _arg3;
loops = _arg4;
force = _arg5;
delay = _arg6;
}
override public function clone():Event{
return (new SoundEvent(type, name, volume, loops, force, delay));
}
}
}//package com.markfennell.sound
Section 266
//SoundPlayer (com.markfennell.sound.SoundPlayer)
package com.markfennell.sound {
import flash.events.*;
import flash.utils.*;
import flash.media.*;
public class SoundPlayer extends EventDispatcher {
protected var m_soundChannel:SoundChannel;
public var stoppable:Boolean;// = true
protected var m_timeout:int;
public var m_soundState:String;
protected var m_loops:int;
protected var m_volume:Number;
protected var m_destroy:Boolean;
protected var m_position:Number;// = 0
protected var m_sound:Sound;
protected static var soundsDictionary:Dictionary = new Dictionary();
public static var STOPPED:String = "stopped";
public static var PAUSED:String = "paused";
public static var FINISHED:String = "finished";
public static var INITIALIZED:String = "init";
public static var PLAYING:String = "playing";
public static var COMPLETE:String = "complete";
public function SoundPlayer(_arg1:Sound, _arg2:Boolean=true):void{
m_soundChannel = new SoundChannel();
super();
m_sound = _arg1;
m_soundState = INITIALIZED;
soundsDictionary[this] = this;
m_destroy = _arg2;
}
public function get soundState():String{
return (m_soundState);
}
public function play(_arg1:Number=1, _arg2:int=1, _arg3:Number=0):void{
var a_volume = _arg1;
var a_loops = _arg2;
var a_delay = _arg3;
try {
clearTimeout(m_timeout);
if (a_delay != 0){
m_timeout = setTimeout(play, (a_delay * 1000), a_volume, a_loops, 0);
return;
};
if ((((m_soundState == PLAYING)) || ((m_soundChannel == null)))){
return;
};
m_volume = a_volume;
m_loops = a_loops;
m_soundChannel.stop();
m_soundChannel = m_sound.play(m_position);
m_soundChannel.addEventListener(Event.SOUND_COMPLETE, soundComplete);
m_soundState = PLAYING;
volume = m_volume;
} catch(e:Error) {
};
}
public function set soundState(_arg1:String):void{
m_soundState = _arg1;
}
public function pause():void{
if (m_soundState == INITIALIZED){
return;
};
m_position = m_soundChannel.position;
m_soundChannel.stop();
m_soundChannel.removeEventListener(Event.SOUND_COMPLETE, soundComplete);
m_soundState = PAUSED;
}
public function stop():void{
m_position = 0;
m_soundState = STOPPED;
if (m_soundChannel){
m_soundChannel.stop();
m_soundChannel.removeEventListener(Event.SOUND_COMPLETE, soundComplete);
};
}
public function get leftPeak():Number{
return (m_soundChannel.leftPeak);
}
public function set position(_arg1:Number):void{
var _local2 = (m_soundState == PLAYING);
pause();
m_position = _arg1;
if (_local2){
play();
};
}
public function get volume():Number{
return (m_soundChannel.soundTransform.volume);
}
public function get rightPeak():Number{
return (m_soundChannel.rightPeak);
}
public function destroy():void{
stop();
clearTimeout(m_timeout);
m_sound = null;
m_soundChannel = null;
soundsDictionary[this] = null;
}
public function get duration():Number{
return (m_sound.length);
}
public function get position():Number{
return (m_soundChannel.position);
}
public function resume():void{
play(m_volume, m_loops);
}
public function get playing():Boolean{
return ((m_soundState == PLAYING));
}
public function set volume(_arg1:Number):void{
if (m_soundChannel == null){
return;
};
var _local2:SoundTransform = m_soundChannel.soundTransform;
_local2.volume = _arg1;
m_soundChannel.soundTransform = _local2;
}
private function soundComplete(_arg1:Event):void{
m_loops--;
m_soundState = FINISHED;
if (m_loops == 0){
dispatchEvent(new Event(COMPLETE));
if (m_destroy){
destroy();
};
} else {
play(volume, m_loops);
};
}
public static function stopSounds():void{
var item:SoundPlayer;
for each (item in soundsDictionary) {
try {
if (item.stoppable){
item.destroy();
soundsDictionary[item] = null;
};
} catch(e:Error) {
};
};
}
public static function pauseSounds():void{
var item:SoundPlayer;
for each (item in soundsDictionary) {
try {
if (soundsDictionary[item].stoppable){
soundsDictionary[item].pause();
};
} catch(e:Error) {
};
};
}
public static function resumeSounds():void{
var item:SoundPlayer;
for each (item in soundsDictionary) {
try {
soundsDictionary[item].resume();
} catch(e:Error) {
};
};
}
}
}//package com.markfennell.sound
Section 267
//TEA (com.meychi.ascrypt3.TEA)
package com.meychi.ascrypt3 {
public class TEA {
public function decrypt(_arg1:String, _arg2:String):String{
var _local9:Number;
var _local10:Number;
var _local13:Number;
var _local3:Array = charsToLongs(hexToChars(_arg1));
var _local4:Array = charsToLongs(strToChars(_arg2));
var _local5:Number = _local3.length;
if (_local5 == 0){
return ("");
};
var _local6:Number = _local3[(_local5 - 1)];
var _local7:Number = _local3[0];
var _local8:Number = 2654435769;
var _local11:Number = Math.floor((6 + (52 / _local5)));
var _local12:Number = (_local11 * _local8);
while (_local12 != 0) {
_local10 = ((_local12 >>> 2) & 3);
_local13 = (_local5 - 1);
while (_local13 > 0) {
_local6 = _local3[(_local13 - 1)];
_local9 = ((((_local6 >>> 5) ^ (_local7 << 2)) + ((_local7 >>> 3) ^ (_local6 << 4))) ^ ((_local12 ^ _local7) + (_local4[((_local13 & 3) ^ _local10)] ^ _local6)));
_local7 = (_local3[_local13] = (_local3[_local13] - _local9));
_local13--;
};
_local6 = _local3[(_local5 - 1)];
_local9 = ((((_local6 >>> 5) ^ (_local7 << 2)) + ((_local7 >>> 3) ^ (_local6 << 4))) ^ ((_local12 ^ _local7) + (_local4[((_local13 & 3) ^ _local10)] ^ _local6)));
_local7 = (_local3[0] = (_local3[0] - _local9));
_local12 = (_local12 - _local8);
};
return (charsToStr(longsToChars(_local3)));
}
public function encrypt(_arg1:String, _arg2:String):String{
var _local9:Number;
var _local10:Number;
var _local13:Number;
var _local3:Array = charsToLongs(strToChars(_arg1));
var _local4:Array = charsToLongs(strToChars(_arg2));
var _local5:Number = _local3.length;
if (_local5 == 0){
return ("");
};
if (_local5 == 1){
var _temp1 = _local5;
_local5 = (_local5 + 1);
var _local14 = _temp1;
_local3[_local14] = 0;
};
var _local6:Number = _local3[(_local5 - 1)];
var _local7:Number = _local3[0];
var _local8:Number = 2654435769;
var _local11:Number = Math.floor((6 + (52 / _local5)));
var _local12:Number = 0;
while (_local11-- > 0) {
_local12 = (_local12 + _local8);
_local10 = ((_local12 >>> 2) & 3);
_local13 = 0;
while (_local13 < (_local5 - 1)) {
_local7 = _local3[(_local13 + 1)];
_local9 = ((((_local6 >>> 5) ^ (_local7 << 2)) + ((_local7 >>> 3) ^ (_local6 << 4))) ^ ((_local12 ^ _local7) + (_local4[((_local13 & 3) ^ _local10)] ^ _local6)));
_local6 = (_local3[_local13] = (_local3[_local13] + _local9));
_local13++;
};
_local7 = _local3[0];
_local9 = ((((_local6 >>> 5) ^ (_local7 << 2)) + ((_local7 >>> 3) ^ (_local6 << 4))) ^ ((_local12 ^ _local7) + (_local4[((_local13 & 3) ^ _local10)] ^ _local6)));
_local6 = (_local3[(_local5 - 1)] = (_local3[(_local5 - 1)] + _local9));
};
return (charsToHex(longsToChars(_local3)));
}
private static function strToChars(_arg1:String):Array{
var _local2:Array = new Array();
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2.push(_arg1.charCodeAt(_local3));
_local3++;
};
return (_local2);
}
private static function charsToHex(_arg1:Array):String{
var _local2:String = new String("");
var _local3:Array = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
var _local4:Number = 0;
while (_local4 < _arg1.length) {
_local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)]));
_local4++;
};
return (_local2);
}
private static function hexToChars(_arg1:String):Array{
var _local2:Array = new Array();
var _local3:Number = ((_arg1.substr(0, 2))=="0x") ? 2 : 0;
while (_local3 < _arg1.length) {
_local2.push(parseInt(_arg1.substr(_local3, 2), 16));
_local3 = (_local3 + 2);
};
return (_local2);
}
private static function charsToStr(_arg1:Array):String{
var _local2:String = new String("");
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(_arg1[_local3]));
_local3++;
};
return (_local2);
}
private static function longsToChars(_arg1:Array):Array{
var _local2:Array = new Array();
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2.push((_arg1[_local3] & 0xFF), ((_arg1[_local3] >>> 8) & 0xFF), ((_arg1[_local3] >>> 16) & 0xFF), ((_arg1[_local3] >>> 24) & 0xFF));
_local3++;
};
return (_local2);
}
private static function charsToLongs(_arg1:Array):Array{
var _local2:Array = new Array(Math.ceil((_arg1.length / 4)));
var _local3:Number = 0;
while (_local3 < _local2.length) {
_local2[_local3] = (((_arg1[(_local3 * 4)] + (_arg1[((_local3 * 4) + 1)] << 8)) + (_arg1[((_local3 * 4) + 2)] << 16)) + (_arg1[((_local3 * 4) + 3)] << 24));
_local3++;
};
return (_local2);
}
}
}//package com.meychi.ascrypt3
Section 268
//Console (console.Console)
package console {
import flash.events.*;
import com.markfennell.sound.*;
import game.events.*;
import flash.utils.*;
import net.*;
import hud.*;
import org.casalib.display.*;
import interfaces.*;
import flash.net.*;
import org.casalib.util.*;
import pages.*;
import game.*;
import com.google.analytics.*;
public class Console extends CasaSprite {
private var m_hud:MarvelHudController;
private var m_currentState:String;
private var m_currentClass:IConsoleSection;// = null
private var m_nextClass:IConsoleSection;// = null
private var m_callBack:Function;
private var m_soundController:SoundController;
private var m_animating:Boolean;// = false
private var m_user:User;
public static var firstPlay:Boolean = true;
public static var exitShowing:Boolean = false;
public static var GoogleAnalytics:AnalyticsTracker;
public static var paused:Boolean = false;
public static var pauseShowing:Boolean = false;
public function Console(){
m_soundController = new SoundController();
super();
m_hud = new MarvelHudController();
addChild(m_hud);
GoogleAnalytics = new GATracker(StageReference.getStage(), Constants.GOOGLE, "AS3", false);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_CREDITS, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_HELP, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_INTRO, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_INTRO_VIDEO, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_MORE, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_PLAYGAME, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_CHARACTERS, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_SHARE, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.DISPLAY_MEDALS, handleConsoleEvent);
addEventListener(ConsoleEvent.TRANSITION_COMPLETE, handleTransitionComplete);
GameBroadcaster.addEventListener(ConsoleEvent.PAUSE, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.EXIT, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.EXIT_ATTEMPT, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.EXIT_ATTEMPT_CANCEL, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.PAUSE_ENABLED, handleConsoleEvent);
GameBroadcaster.addEventListener(ConsoleEvent.PAUSE_DISABLED, handleConsoleEvent);
handleConsoleEvent(new ConsoleEvent(ConsoleEvent.DISPLAY_INTRO));
GameBroadcaster.addEventListener(SoundEvent.EFFECT, handleSoundEffect);
GameBroadcaster.addEventListener(ConsoleEvent.GAME_COMPLETE, handleGameComplete);
}
override public function destroy():void{
GameBroadcaster.removeEventListener(ConsoleEvent.DISPLAY_CREDITS, handleConsoleEvent);
GameBroadcaster.removeEventListener(ConsoleEvent.DISPLAY_HELP, handleConsoleEvent);
GameBroadcaster.removeEventListener(ConsoleEvent.DISPLAY_INTRO, handleConsoleEvent);
GameBroadcaster.removeEventListener(ConsoleEvent.DISPLAY_MORE, handleConsoleEvent);
GameBroadcaster.removeEventListener(ConsoleEvent.DISPLAY_PLAYGAME, handleConsoleEvent);
GameBroadcaster.removeEventListener(ConsoleEvent.DISPLAY_CHARACTERS, handleConsoleEvent);
GameBroadcaster.removeEventListener(ConsoleEvent.DISPLAY_SHARE, handleConsoleEvent);
GameBroadcaster.removeEventListener(ConsoleEvent.TRANSITION_COMPLETE, handleTransitionComplete);
GameBroadcaster.removeEventListener(SoundEvent.EFFECT, handleSoundEffect);
GameBroadcaster.removeEventListener(ConsoleEvent.GAME_COMPLETE, handleGameComplete);
m_currentClass.destroy();
m_nextClass.destroy();
super.destroy();
}
private function handleConsoleEvent(_arg1:ConsoleEvent):void{
var e = _arg1;
trace(((((("HandleConsoleEvent " + e.type) + " currentState ") + m_currentState) + " animating: ") + m_animating));
if ((((e.type == m_currentState)) || (m_animating))){
return;
};
m_hud.setScore();
m_hud.updatePanel();
if (((!((m_callBack == null))) && (!((e.type == ConsoleEvent.DISPLAY_MORE))))){
m_callBack();
m_callBack = null;
};
switch (e.type){
case ConsoleEvent.PAUSE:
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.PAUSE_GAME));
break;
case ConsoleEvent.EXIT_ATTEMPT:
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.EXIT_ATTEMPT));
break;
case ConsoleEvent.DISPLAY_INTRO:
SoundController.getInstance().start_music(0);
SoundController.getInstance().pause_music(false);
m_hud.enableHud();
m_currentState = ConsoleEvent.DISPLAY_INTRO;
m_nextClass = new Title();
addChild((m_nextClass as CasaSprite));
m_nextClass.transitionIn();
m_animating = true;
setHudToTop();
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.SHOW_MENU_HUD_FRAME));
break;
case ConsoleEvent.DISPLAY_INTRO_VIDEO:
SoundController.getInstance().pause_music(true);
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "introVideo", "start");
m_currentState = ConsoleEvent.DISPLAY_CHARACTERS;
m_nextClass = new IntroVideo();
addChild((m_nextClass as CasaSprite));
m_nextClass.transitionIn();
m_animating = true;
m_callBack = m_nextClass.hide;
setHudToTop();
break;
case ConsoleEvent.DISPLAY_HELP:
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "menu", "help");
m_currentState = ConsoleEvent.DISPLAY_HELP;
m_nextClass = new Help();
addChild((m_nextClass as CasaSprite));
m_nextClass.transitionIn();
m_callBack = m_nextClass.hide;
m_animating = true;
setHudToTop();
break;
case ConsoleEvent.DISPLAY_MEDALS:
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "menu", "achievements");
m_currentState = ConsoleEvent.DISPLAY_MEDALS;
m_nextClass = new Medals();
addChild((m_nextClass as CasaSprite));
m_nextClass.transitionIn();
m_animating = true;
m_callBack = m_nextClass.hide;
setHudToTop();
break;
case ConsoleEvent.DISPLAY_CHARACTERS:
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "menu", "characters");
m_currentState = ConsoleEvent.DISPLAY_CHARACTERS;
m_nextClass = new Characters();
addChild((m_nextClass as CasaSprite));
m_nextClass.transitionIn();
m_animating = true;
m_callBack = m_nextClass.hide;
setHudToTop();
break;
case ConsoleEvent.DISPLAY_PLAYGAME:
paused = false;
pauseShowing = false;
exitShowing = false;
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "game", "start");
SoundController.getInstance().pause_music(false);
SoundController.getInstance().start_music(1);
displayGame();
break;
case ConsoleEvent.DISPLAY_CREDITS:
if (m_currentState == ConsoleEvent.DISPLAY_CREDITS){
return;
};
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "menu", "credits");
SoundController.getInstance().start_music(0);
m_currentState = ConsoleEvent.DISPLAY_CREDITS;
m_nextClass = new Credits();
addChild((m_nextClass as CasaSprite));
m_nextClass.transitionIn();
m_animating = true;
if (!m_hud.showingTitleButtons){
m_hud.hideInGameButtons();
setTimeout(m_hud.showTitleButtons, 500);
};
setHudToTop();
break;
case ConsoleEvent.DISPLAY_MORE:
trace("More Games");
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "linkOut", "moreGames");
navigateToURL(Constants.URL_MOREGAMES, "_blank");
break;
case ConsoleEvent.DISPLAY_SHARE:
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "menu", "share");
navigateToURL(Constants.URL_SEND_TO_FRIEND, "_blank");
try {
} catch(e:TypeError) {
trace("could not open clearspring");
navigateToURL(Constants.URL_MOREGAMES, "_blank");
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "linkOut", "moreGamesShare");
};
break;
case ConsoleEvent.PAUSE_ENABLED:
trace("Console > PAUSE_ENABLED");
m_hud.enableHud();
break;
case ConsoleEvent.PAUSE_DISABLED:
trace("Console > PAUSE_DISABLED");
m_hud.disableHud();
break;
};
}
private function setHudToTop():void{
setChildIndex(m_hud, (numChildren - 1));
}
private function handleTransitionComplete(_arg1:ConsoleEvent=null):void{
if (m_currentClass){
m_currentClass.destroy();
};
m_currentClass = m_nextClass;
if ((((m_currentState == ConsoleEvent.DISPLAY_INTRO)) && (!((_arg1 == null))))){
m_hud.showTitleButtons();
};
m_animating = false;
}
private function handleGameComplete(_arg1:Event):void{
m_currentState = ConsoleEvent.GAME_COMPLETE;
}
private function displayGame():void{
m_animating = true;
handleTransitionComplete();
m_currentState = ConsoleEvent.DISPLAY_PLAYGAME;
m_nextClass = new GameController();
addChild((m_nextClass as CasaSprite));
m_nextClass.transitionIn();
setHudToTop();
}
private function handleSoundEffect(_arg1:SoundEvent):void{
switch (_arg1.type){
case SoundEvent.EFFECT:
SoundController.getInstance().playSound(_arg1);
break;
};
}
}
}//package console
Section 269
//ConsoleEvent (console.ConsoleEvent)
package console {
import flash.events.*;
public class ConsoleEvent extends Event {
public var data;
public static var DISPLAY_INTRO_VIDEO:String = "ConsoleDisplayIntroVideo";
public static var EXIT_ATTEMPT:String = "GameExitAttempt";
public static var EXIT_ATTEMPT_CANCEL:String = "GameExitAttemptCancel";
public static var DISPLAY_MEDALS:String = "ConsoleDisplayMedals";
public static var EXIT:String = "GameExit";
public static var INITIALIZE_OFF:String = "ConsoleDisplayInitialiseOff";
public static var DISPLAY_PLAYGAME:String = "ConsoleDisplayPlayGame";
public static var DISPLAY_EASTER:String = "ConsoleDisplayEaster";
public static var DISPLAY_LEVELS:String = "ConsoleDisplayLevelSelect";
public static var RESUME:String = "GameResume";
public static var DISPLAY_CHARACTERS:String = "ConsoleDisplayCharacters";
public static var DISPLAY_HELP:String = "ConsoleDisplayHelp";
public static var PAUSE_ENABLED:String = "PauseEnabled";
public static var DISPLAY_GAMEOVER:String = "ConsoleDisplayGameover";
public static var PAUSE_DISABLED:String = "PauseDisabled";
public static var DISPLAY_MORE:String = "ConsoleDisplayMore";
public static var PAUSE:String = "GamePause";
public static var DISPLAY_EMBED:String = "ConsoleDisplayEmbed";
public static var DISPLAY_CREDITS:String = "ConsoleDisplayCredits";
public static var STARTED:String = "GameStarted";
public static var DISPLAY_SHARE:String = "ConsoleDisplaySendToFriend";
public static var TRANSITION_COMPLETE:String = "Transition COmplete";
public static var DISPLAY_SCORES:String = "ConsoleDisplayScores";
public static var GAME_COMPLETE:String = "Game Completed";
public static var DISPLAY_COMBOS:String = "ConsoleDisplayCombos";
public static var DISPLAY_PRIZES:String = "ConsoleDisplayPrizes";
public static var INITIALIZE_ON:String = "ConsoleDisplayInitialiseOn";
public static var DISPLAY_INTRO:String = "ConsoleDisplayIntro";
public static var DISPLAY_VIDEO:String = "ConsoleDisplayVideo";
public function ConsoleEvent(_arg1:String, _arg2=null){
super(_arg1, true, true);
data = _arg2;
}
override public function clone():Event{
return (new ConsoleEvent(type, data));
}
}
}//package console
Section 270
//Quadratic (fl.motion.easing.Quadratic)
package fl.motion.easing {
public class Quadratic {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((_arg3 * _arg1) * _arg1) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2));
};
--_arg1;
return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2));
}
}
}//package fl.motion.easing
Section 271
//Color (fl.motion.Color)
package fl.motion {
import flash.display.*;
import flash.geom.*;
public class Color extends ColorTransform {
private var _tintColor:Number;// = 0
private var _tintMultiplier:Number;// = 0
public function Color(_arg1:Number=1, _arg2:Number=1, _arg3:Number=1, _arg4:Number=1, _arg5:Number=0, _arg6:Number=0, _arg7:Number=0, _arg8:Number=0){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
private function deriveTintColor():uint{
var _local1:Number = (1 / this.tintMultiplier);
var _local2:uint = Math.round((this.redOffset * _local1));
var _local3:uint = Math.round((this.greenOffset * _local1));
var _local4:uint = Math.round((this.blueOffset * _local1));
var _local5:uint = (((_local2 << 16) | (_local3 << 8)) | _local4);
return (_local5);
}
public function set brightness(_arg1:Number):void{
if (_arg1 > 1){
_arg1 = 1;
} else {
if (_arg1 < -1){
_arg1 = -1;
};
};
var _local2:Number = (1 - Math.abs(_arg1));
var _local3:Number = 0;
if (_arg1 > 0){
_local3 = (_arg1 * 0xFF);
};
this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = _local2));
this.redOffset = (this.greenOffset = (this.blueOffset = _local3));
}
private function parseXML(_arg1:XML=null):Color{
var _local3:XML;
var _local4:String;
var _local5:uint;
if (!_arg1){
return (this);
};
var _local2:XML = _arg1.elements()[0];
if (!_local2){
return (this);
};
for each (_local3 in _local2.attributes()) {
_local4 = _local3.localName();
if (_local4 == "tintColor"){
_local5 = (Number(_local3.toString()) as uint);
this.tintColor = _local5;
} else {
this[_local4] = Number(_local3.toString());
};
};
return (this);
}
public function get tintColor():uint{
return (this._tintColor);
}
public function set tintColor(_arg1:uint):void{
this.setTint(_arg1, this.tintMultiplier);
}
public function get brightness():Number{
return ((this.redOffset) ? (1 - this.redMultiplier) : (this.redMultiplier - 1));
}
public function set tintMultiplier(_arg1:Number):void{
this.setTint(this.tintColor, _arg1);
}
public function get tintMultiplier():Number{
return (this._tintMultiplier);
}
public function setTint(_arg1:uint, _arg2:Number):void{
this._tintColor = _arg1;
this._tintMultiplier = _arg2;
this.redMultiplier = (this.greenMultiplier = (this.blueMultiplier = (1 - _arg2)));
var _local3:uint = ((_arg1 >> 16) & 0xFF);
var _local4:uint = ((_arg1 >> 8) & 0xFF);
var _local5:uint = (_arg1 & 0xFF);
this.redOffset = Math.round((_local3 * _arg2));
this.greenOffset = Math.round((_local4 * _arg2));
this.blueOffset = Math.round((_local5 * _arg2));
}
public static function interpolateColor(_arg1:uint, _arg2:uint, _arg3:Number):uint{
var _local4:Number = (1 - _arg3);
var _local5:uint = ((_arg1 >> 24) & 0xFF);
var _local6:uint = ((_arg1 >> 16) & 0xFF);
var _local7:uint = ((_arg1 >> 8) & 0xFF);
var _local8:uint = (_arg1 & 0xFF);
var _local9:uint = ((_arg2 >> 24) & 0xFF);
var _local10:uint = ((_arg2 >> 16) & 0xFF);
var _local11:uint = ((_arg2 >> 8) & 0xFF);
var _local12:uint = (_arg2 & 0xFF);
var _local13:uint = ((_local5 * _local4) + (_local9 * _arg3));
var _local14:uint = ((_local6 * _local4) + (_local10 * _arg3));
var _local15:uint = ((_local7 * _local4) + (_local11 * _arg3));
var _local16:uint = ((_local8 * _local4) + (_local12 * _arg3));
var _local17:uint = ((((_local13 << 24) | (_local14 << 16)) | (_local15 << 8)) | _local16);
return (_local17);
}
public static function interpolateTransform(_arg1:ColorTransform, _arg2:ColorTransform, _arg3:Number):ColorTransform{
var _local4:Number = (1 - _arg3);
var _local5:ColorTransform = new ColorTransform(((_arg1.redMultiplier * _local4) + (_arg2.redMultiplier * _arg3)), ((_arg1.greenMultiplier * _local4) + (_arg2.greenMultiplier * _arg3)), ((_arg1.blueMultiplier * _local4) + (_arg2.blueMultiplier * _arg3)), ((_arg1.alphaMultiplier * _local4) + (_arg2.alphaMultiplier * _arg3)), ((_arg1.redOffset * _local4) + (_arg2.redOffset * _arg3)), ((_arg1.greenOffset * _local4) + (_arg2.greenOffset * _arg3)), ((_arg1.blueOffset * _local4) + (_arg2.blueOffset * _arg3)), ((_arg1.alphaOffset * _local4) + (_arg2.alphaOffset * _arg3)));
return (_local5);
}
public static function fromXML(_arg1:XML):Color{
return (Color(new (Color).parseXML(_arg1)));
}
}
}//package fl.motion
Section 272
//Achievement (game.achievements.Achievement)
package game.achievements {
import flash.events.*;
public class Achievement extends EventDispatcher {
public var unlocked:Boolean;
public var title:String;
public var description:String;
public function Achievement(_arg1:String, _arg2:String, _arg3:Boolean){
title = _arg1;
description = _arg2;
unlocked = _arg3;
}
}
}//package game.achievements
Section 273
//AchievementController (game.achievements.AchievementController)
package game.achievements {
import flash.events.*;
import game.events.*;
import flash.utils.*;
import game.enemies.*;
import game.towers.*;
import flash.net.*;
public class AchievementController extends EventDispatcher {
private var m_difficulty:int;
private var m_currentLives:int;
private var m_hostName:String;// = "SuperHeroSquad"
private var m_so:SharedObject;
private var m_gameWon:Boolean;
private var m_initialLives:int;
public static const MASTER_DEFENDER:String = "masterDefender";
public static const ONE_GOLD_TOWER:String = "oneGoldTower";
public static const HIGH_SCORE:String = "highScore";
public static const MODOK:String = "modok";
public static const MILLIONAIRE:String = "millionaire";
public static const DEFENDER:String = "defender";
public static const DRDOOM:String = "drdoom";
public static const EPIC_VICTORY:String = "epicVictory";
public static const CONSTRUCTOR:String = "constructor";
public static const MOLEMAN:String = "moleman";
private static var m_instance:AchievementController = new (AchievementController);
;
public function AchievementController(){
if (m_instance){
throw (new Error("Error: AchievementController is a Singleton, and can only be accessed through AchievementController.instance"));
};
m_instance = this;
}
public function forceSharedObjectReset():void{
m_so.data.achievements = null;
m_so.data.bestScore = 0;
m_so.data.accumulatedMoney = 0;
m_so.data.accumulatedTowers = 0;
m_so.data.accumulatedScore = 0;
m_so.data.accumulatedGameFinishes = 0;
m_so.flush();
}
private function removeGameListeners():void{
GameBroadcaster.removeEventListener(WaveEvent.WAVE_DEFEATED, waveDefeatedHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler);
GameBroadcaster.removeEventListener(TowerEvent.UPGRADE_TOWER, upgradeTowerHandler);
GameBroadcaster.removeEventListener(TowerEvent.BUILD_TOWER_COMPLETE, buildTowerCompleteHandler);
GameBroadcaster.removeEventListener(GameEvent.LIVES_SET, livesSetHandler);
GameBroadcaster.removeEventListener(GameEvent.LIFE_LOST, lifeLostHandler);
GameBroadcaster.removeEventListener(GameEvent.GAME_COMPLETE_EVALUATE_ACHIEVEMENTS, gameCompleteHandler);
GameBroadcaster.removeEventListener(GameEvent.GAME_WON_DISPLAY, gameWonHandler);
}
private function unlockAchievement(_arg1:String):void{
var _local2:int = AchievementData.instance.achievementIndexMap[_arg1];
if (!Achievement(AchievementData.instance.achievements[_local2]).unlocked){
Achievement(AchievementData.instance.achievements[_local2]).unlocked = true;
trace(((((("AchievementController ACHIEVEMENT UNLOCKED: " + _arg1) + ", id: ") + _local2) + " lookup: ") + AchievementData.instance.achievementIndexMap[_arg1]));
};
}
private function saveData():void{
var _local1:Array = [];
var _local2:int;
while (_local2 < AchievementData.instance.achievements.length) {
_local1[_local2] = Achievement(AchievementData.instance.achievements[_local2]).unlocked;
_local2++;
};
m_so.data.achievements = _local1;
if (m_so.data.bestScore == null){
m_so.data.bestScore = AchievementData.instance.bestScore;
} else {
if (AchievementData.instance.bestScore > m_so.data.bestScore){
m_so.data.bestScore = AchievementData.instance.bestScore;
};
};
m_so.data.accumulatedMoney = AchievementData.instance.accumulatedMoney;
m_so.data.accumulatedTowers = AchievementData.instance.accumulatedTowers;
m_so.data.accumulatedScore = AchievementData.instance.accumulatedScore;
m_so.data.accumulatedGameFinishes = AchievementData.instance.accumulatedGameFinishes;
trace(((((((("AchievementController saving accum money: " + AchievementData.instance.accumulatedMoney) + ", accum towers: ") + AchievementData.instance.accumulatedTowers) + ", accum score: ") + AchievementData.instance.accumulatedScore) + " accum game finishes: ") + AchievementData.instance.accumulatedGameFinishes));
m_so.flush();
}
public function endWatchingGame():void{
trace("AchievementController ending watch");
removeGameListeners();
saveData();
}
private function registerGameListeners():void{
GameBroadcaster.addEventListener(WaveEvent.WAVE_DEFEATED, waveDefeatedHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.UPGRADE_TOWER, upgradeTowerHandler, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.BUILD_TOWER_COMPLETE, buildTowerCompleteHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.LIVES_SET, livesSetHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.LIFE_LOST, lifeLostHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.GAME_COMPLETE_EVALUATE_ACHIEVEMENTS, gameCompleteHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.GAME_WON_DISPLAY, gameWonHandler, false, 0, true);
}
public function beginWatchingGame():void{
trace("AchievementController beginning watch");
m_initialLives = 0;
m_currentLives = 0;
m_gameWon = false;
registerGameListeners();
}
private function buildTowerCompleteHandler(_arg1:TowerEvent):void{
AchievementData.instance.accumulatedTowers = (AchievementData.instance.accumulatedTowers + 1);
if (AchievementData.instance.accumulatedTowers >= 200){
unlockAchievement(CONSTRUCTOR);
};
trace((("AchievementController buildTowerComplete [towers built " + AchievementData.instance.accumulatedTowers) + "]"));
}
private function waveDefeatedHandler(_arg1:WaveEvent):void{
trace(("AchievementController waveDefeated: " + _arg1.wave.waveID));
if ((((_arg1.wave.waveID == 19)) && ((m_currentLives == m_initialLives)))){
unlockAchievement(DEFENDER);
} else {
if ((((_arg1.wave.waveID == 29)) && ((m_currentLives == m_initialLives)))){
unlockAchievement(MASTER_DEFENDER);
};
};
if ((((_arg1.wave.waveID == 29)) && ((m_difficulty == 1)))){
unlockAchievement(EPIC_VICTORY);
};
}
private function gameWonHandler(_arg1:GameEvent):void{
AchievementData.instance.accumulatedGameFinishes = (AchievementData.instance.accumulatedGameFinishes + 1);
trace(("AchievementController game WON, game victories now: " + AchievementData.instance.accumulatedGameFinishes));
}
private function lifeLostHandler(_arg1:GameEvent):void{
m_currentLives = _arg1.currentLives;
trace(("AchievementController life lost, now at: " + m_currentLives));
}
private function enemyKilledHandler(_arg1:EnemyEvent):void{
var _local2:String = EnemyController.getTypeOfEnemy(_arg1.enemyObject);
if (_local2 == EnemyController.DRDOOM){
unlockAchievement(DRDOOM);
} else {
if (_local2 == EnemyController.MODOK){
unlockAchievement(MODOK);
} else {
if (_local2 == EnemyController.MOLEMAN){
unlockAchievement(MOLEMAN);
};
};
};
}
private function livesSetHandler(_arg1:GameEvent):void{
trace(((("AchievementController lives set: " + _arg1.totalLives) + ", difficulty: ") + _arg1.difficulty));
m_initialLives = _arg1.totalLives;
m_currentLives = _arg1.currentLives;
m_difficulty = _arg1.difficulty;
}
private function loadData():void{
var _local1:Array;
var _local2:int;
var _local3:Boolean;
if (m_so.data.achievements == null){
trace("AchievementController achievements empty, leaving them false");
} else {
trace("AchievementController achievements valid");
_local1 = m_so.data.achievements;
_local2 = 0;
while (_local2 < _local1.length) {
_local3 = _local1[_local2];
Achievement(AchievementData.instance.achievements[_local2]).unlocked = _local3;
trace(((((((("AchievementController achievement " + _local2) + " stored unlock: ") + _local1[_local2]) + " translated to: ") + _local3) + ", stored: ") + Achievement(AchievementData.instance.achievements[_local2]).unlocked));
_local2++;
};
};
if (m_so.data.bestScore == null){
AchievementData.instance.bestScore = 0;
} else {
AchievementData.instance.bestScore = m_so.data.bestScore;
};
if (m_so.data.accumulatedMoney == null){
AchievementData.instance.accumulatedMoney = 0;
} else {
AchievementData.instance.accumulatedMoney = m_so.data.accumulatedMoney;
};
if (m_so.data.accumulatedTowers == null){
AchievementData.instance.accumulatedTowers = 0;
} else {
AchievementData.instance.accumulatedTowers = m_so.data.accumulatedTowers;
};
if (m_so.data.accumulatedScore == null){
AchievementData.instance.accumulatedScore = 0;
} else {
AchievementData.instance.accumulatedScore = m_so.data.accumulatedScore;
};
if (m_so.data.accumulatedGameFinishes == null){
AchievementData.instance.accumulatedGameFinishes = 0;
} else {
AchievementData.instance.accumulatedGameFinishes = m_so.data.accumulatedGameFinishes;
};
trace(((((((("AchievementController loaded accum money: " + AchievementData.instance.accumulatedMoney) + ", accum towers: ") + AchievementData.instance.accumulatedTowers) + ", accum score: ") + AchievementData.instance.accumulatedScore) + " accum game finishes: ") + AchievementData.instance.accumulatedGameFinishes));
}
public function initialise():void{
var _local1:Dictionary = AchievementData.instance.achievementIndexMap;
_local1[MOLEMAN] = 0;
_local1[ONE_GOLD_TOWER] = 1;
_local1[MODOK] = 2;
_local1[DRDOOM] = 3;
_local1[MILLIONAIRE] = 4;
_local1[CONSTRUCTOR] = 5;
_local1[DEFENDER] = 6;
_local1[MASTER_DEFENDER] = 7;
_local1[HIGH_SCORE] = 8;
_local1[EPIC_VICTORY] = 9;
var _local2:Array = [];
_local2[0] = new Achievement("Moleman", "Defeated Moleman", false);
_local2[1] = new Achievement("Gold Tower", "Fully upgraded one tower", false);
_local2[2] = new Achievement("Modok", "Defeated Modok", false);
_local2[3] = new Achievement("DR. DOOM", "Defeated DR. DOOM", false);
_local2[4] = new Achievement("Millionaire", "Earned $50,000", false);
_local2[5] = new Achievement("Constructor", "Built 200 towers", false);
_local2[6] = new Achievement("Defender", "Survived 20 waves without base damage", false);
_local2[7] = new Achievement("Master Defender", "Survived 30 waves without base damage", false);
_local2[8] = new Achievement("High Score", "Accumulated 10 million score", false);
_local2[9] = new Achievement("Epic Victory", "Finished the game on Epic difficulty", false);
AchievementData.instance.achievements = _local2;
m_so = SharedObject.getLocal(m_hostName);
loadData();
}
private function upgradeTowerHandler(_arg1:TowerEvent):void{
var _local2:String;
trace("AchievementController upgradeTower");
if (_arg1.levelID != 0){
_local2 = TowerController.getTowerLevelString(null, _arg1.levelID);
if (_local2 == TowerController.LEVEL_3){
unlockAchievement(ONE_GOLD_TOWER);
};
};
}
private function gameCompleteHandler(_arg1:GameEvent):void{
trace(((("AchievementController game complete, final earnings: " + _arg1.finalEarned) + ", final score: ") + _arg1.finalScore));
if (_arg1.finalScore > AchievementData.instance.bestScore){
AchievementData.instance.bestScore = _arg1.finalScore;
};
AchievementData.instance.accumulatedMoney = (AchievementData.instance.accumulatedMoney + _arg1.finalEarned);
AchievementData.instance.accumulatedScore = (AchievementData.instance.accumulatedScore + _arg1.finalScore);
if (AchievementData.instance.accumulatedMoney >= 50000){
unlockAchievement(MILLIONAIRE);
};
if (AchievementData.instance.accumulatedScore >= 10000000){
unlockAchievement(HIGH_SCORE);
};
}
public static function get instance():AchievementController{
return (m_instance);
}
}
}//package game.achievements
Section 274
//AchievementData (game.achievements.AchievementData)
package game.achievements {
import flash.events.*;
import flash.utils.*;
public class AchievementData extends EventDispatcher {
private var m_accumulatedScore:int;
private var m_bestScore:int;
private var m_accumulatedTowers:int;
private var m_achievementCollection:Array;
private var m_accumulatedGameFinishes:int;
private var m_achievementIndexMap:Dictionary;
private var m_accumulatedMoney:int;
private static var m_instance:AchievementData = new (AchievementData);
;
public function AchievementData(){
if (m_instance){
throw (new Error("Error: AchievementData is a Singleton, and can only be accessed through AchievementData.instance"));
};
m_instance = this;
m_achievementIndexMap = new Dictionary();
}
public function set achievements(_arg1:Array):void{
m_achievementCollection = _arg1;
}
public function get bestScore():int{
return (m_bestScore);
}
public function set accumulatedTowers(_arg1:int):void{
m_accumulatedTowers = _arg1;
}
public function set bestScore(_arg1:int):void{
m_bestScore = _arg1;
}
public function get accumulatedMoney():int{
return (m_accumulatedMoney);
}
public function get achievements():Array{
return (m_achievementCollection);
}
public function set accumulatedGameFinishes(_arg1:int):void{
m_accumulatedGameFinishes = _arg1;
}
public function get accumulatedTowers():int{
return (m_accumulatedTowers);
}
public function set accumulatedScore(_arg1:int):void{
m_accumulatedScore = _arg1;
}
public function get accumulatedGameFinishes():int{
return (m_accumulatedGameFinishes);
}
public function get accumulatedScore():int{
return (m_accumulatedScore);
}
public function get achievementIndexMap():Dictionary{
return (m_achievementIndexMap);
}
public function set accumulatedMoney(_arg1:int):void{
m_accumulatedMoney = _arg1;
}
public static function get instance():AchievementData{
return (m_instance);
}
}
}//package game.achievements
Section 275
//MedalPageDisplay (game.achievements.MedalPageDisplay)
package game.achievements {
import flash.events.*;
import flash.display.*;
import org.casalib.display.*;
import org.casalib.util.*;
import gs.*;
public class MedalPageDisplay extends CasaSprite {
public var m_base:MovieClip;
public var m_ui:MovieClip;
private var m_stage:Stage;
public var m_achievement:Achievement;
public function MedalPageDisplay(_arg1:Achievement, _arg2:MovieClip, _arg3:MovieClip, _arg4:MovieClip){
m_stage = StageReference.getStage();
m_achievement = _arg1;
m_ui = _arg2;
m_base = _arg3;
m_ui.mouseEnabled = false;
m_ui.mouseChildren = false;
m_ui.x = (m_ui.x + 0);
m_ui.y = (m_ui.y + 0);
m_ui.toolTip.titleText.text = m_achievement.title;
m_ui.toolTip.descriptionText.text = m_achievement.description;
m_ui.toolTip.alpha = 0;
if (!m_achievement.unlocked){
m_ui.shape.visible = true;
TweenMax.to(m_base, 0.05, {colorMatrixFilter:{colorize:0xCCCCCC, amount:1}, alpha:0.5});
} else {
m_ui.shape.blendMode = BlendMode.MULTIPLY;
m_ui.shape.visible = false;
TweenMax.to(m_base, 0.05, {colorMatrixFilter:{}, alpha:1});
};
m_base.x = (m_base.x + 0);
m_base.y = (m_base.y + 0);
m_base.addEventListener(MouseEvent.ROLL_OVER, handleRollOver, false, 0, true);
m_base.addEventListener(MouseEvent.ROLL_OUT, handleRollOut, false, 0, true);
}
private function handleRollOut(_arg1:MouseEvent):void{
TweenMax.to(m_ui.toolTip, 0.5, {alpha:0});
}
private function handleRollOver(_arg1:MouseEvent):void{
TweenMax.to(m_ui.toolTip, 0.5, {alpha:1});
}
override public function destroy():void{
m_base.removeEventListener(MouseEvent.ROLL_OVER, handleRollOver);
m_base.removeEventListener(MouseEvent.ROLL_OUT, handleRollOut);
super.destroy();
}
}
}//package game.achievements
Section 276
//Chunk (game.effects.Chunk)
package game.effects {
import flash.events.*;
import flash.display.*;
import assets.effects.*;
public class Chunk extends MovieClip {
private var m_angle:Number;
private var m_steps:int;
private var m_step:int;// = 0
private var m_vx:Number;
private var m_vy:Number;
private var m_chunkUI:ChunkUI;
private var m_force:Number;
private var m_chunkForceMax:Number;// = 12
private var m_gravity:Number;// = 1
private var m_angleInc:Number;
public function Chunk(_arg1:int, _arg2:int, _arg3:Number):void{
m_steps = ((Math.random() * 80) + 30);
m_angle = (Math.random() * Math.PI);
m_angleInc = ((Math.random() * 0.1) + 0.1);
super();
m_chunkUI = new ChunkUI();
m_chunkUI.x = (_arg1 + (Math.random() * 4));
m_chunkUI.y = _arg2;
m_chunkUI.scaleX = 0.4;
m_chunkUI.scaleY = 0.4;
m_force = ((Math.random() * 5) + 3);
m_chunkUI.rotation = (Math.random() * 360);
m_chunkUI.cacheAsBitmap = true;
addChild(m_chunkUI);
m_chunkUI.gotoAndStop((int((Math.random() * 10)) + 1));
m_vx = ((Math.random() * m_force) - (m_force / 2));
m_vy = ((Math.random() * m_force) - (m_force / 2));
addEventListener(Event.ENTER_FRAME, render);
}
private function render(_arg1:Event):void{
var _local2:Number = (Math.sin(m_angle) * 0.6);
m_step++;
if (_local2 <= 0){
removeEventListener(Event.ENTER_FRAME, render);
removeChild(m_chunkUI);
m_chunkUI = null;
if (this.parent != null){
this.parent.removeChild(this);
};
} else {
m_chunkUI.x = (m_chunkUI.x + m_vx);
m_chunkUI.y = (m_chunkUI.y + m_vy);
m_vx = (m_vx * 0.95);
m_vy = (m_vy * 0.95);
m_angle = (m_angle + m_angleInc);
m_chunkUI.scaleX = (0.2 + Math.abs(_local2));
m_chunkUI.scaleY = (0.2 + Math.abs(_local2));
};
}
}
}//package game.effects
Section 277
//EffectsController (game.effects.EffectsController)
package game.effects {
import flash.events.*;
import flash.display.*;
import game.events.*;
import game.interfaces.*;
import flash.geom.*;
import org.casalib.display.*;
import game.enemies.*;
import com.malee.quickfx.display.bitmap.*;
import game.*;
import assets.effects.*;
public class EffectsController extends CasaSprite {
private var m_map:CasaSprite;
private var m_mapScarBitmapData:BitmapData;
private var m_explosionSmallCountdown:int;
private var m_explosionLargeGraphic:Sprite;
private var m_scar:BitmapData;
private var m_mapScarContainer:CasaBitmap;
private var m_lighting:Bitmap;
private var m_explosionBitmapMovieMedium:BitmapMovie;
private var m_explosionsBitmapData:BitmapData;
private var m_mapFadeCountdown:int;
private var m_lightningWidth:int;// = 750
private var m_explosionMediumGraphic:Sprite;
private var m_explosionBitmapMovieSmall:BitmapMovie;
private var m_lightningHeight:int;// = 550
private var m_lightningData:BitmapData;
private var m_explosionSmallGraphic:Sprite;
private var m_explosionSmallFrames:Array;
private var m_explosionLargeCountdown:int;
private var m_explosionBitmapMovieLarge:BitmapMovie;
private var m_explosionMediumFrames:Array;
private var m_explosionsBitmap:Bitmap;
private var m_explosionOffsetX:int;// = -200
private var m_explosionOffsetY:int;// = -200
private var m_mapFadeFrequency:int;// = 600
private var m_explosionsDisplayArray:Array;
private var m_explosionsPointArray:Array;
private var m_explosionsReady:Boolean;// = false
private var m_explosionMediumCountdown:int;
private var m_explosionLargeFrames:Array;
public function EffectsController(_arg1:CasaSprite){
m_map = _arg1;
m_mapFadeCountdown = m_mapFadeFrequency;
this.mouseChildren = false;
this.mouseEnabled = false;
var _local2:MovieClip = new MapScar();
m_scar = new BitmapData(_local2.width, _local2.height, true, 0);
m_scar.draw(_local2);
m_mapScarBitmapData = new BitmapData(m_map.width, (m_map.height + Map.tileH), true, 0);
m_mapScarContainer = new CasaBitmap(m_mapScarBitmapData);
m_map.addChild(m_mapScarContainer);
m_explosionsBitmapData = new BitmapData(750, 550, true, 0);
m_explosionsBitmap = new Bitmap(m_explosionsBitmapData);
addChild(m_explosionsBitmap);
m_explosionsDisplayArray = [];
m_explosionsPointArray = [];
m_lightningData = new BitmapData(m_lightningWidth, m_lightningHeight, true, 0);
m_lighting = new Bitmap(m_lightningData);
addChild(m_lighting);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyKilledHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.ROCKET_DETONATE, rocketDetonationHandler, false, 0, true);
renderExplosions();
}
public function doRender():void{
var _local2:ColorTransform;
var _local3:Rectangle;
var _local4:BitmapMovieDisplay;
var _local5:Point;
m_mapFadeCountdown--;
if (m_mapFadeCountdown == 0){
m_mapFadeCountdown = m_mapFadeFrequency;
_local2 = new ColorTransform();
_local2.alphaMultiplier = 0.9;
_local3 = new Rectangle(0, 0, m_map.width, m_map.height);
m_mapScarBitmapData.colorTransform(_local3, _local2);
};
m_lightningData.fillRect(m_lightningData.rect, 0);
m_explosionsBitmapData.fillRect(m_explosionsBitmapData.rect, 0);
var _local1:int;
while (_local1 < m_explosionsDisplayArray.length) {
_local4 = m_explosionsDisplayArray[_local1];
_local5 = m_explosionsPointArray[_local1];
_local4.renderToBitmapData(m_explosionsBitmapData, _local5);
_local1++;
};
}
private function scarMap(_arg1:int, _arg2:int):void{
var _local3:Rectangle = new Rectangle(0, 0, m_scar.width, m_scar.height);
var _local4:Point = new Point(_arg1, _arg2);
m_mapScarBitmapData.copyPixels(m_scar, _local3, _local4, null, null, true);
}
private function renderExplosions():void{
trace("Recording explosions");
m_explosionLargeFrames = [];
m_explosionLargeGraphic = new Sprite();
var _local1:Explosion = new Explosion(m_explosionLargeGraphic, 200, 200, 44);
m_explosionLargeCountdown = 60;
m_explosionMediumFrames = [];
m_explosionMediumGraphic = new Sprite();
_local1 = new Explosion(m_explosionMediumGraphic, 200, 200, 28);
m_explosionMediumCountdown = 30;
m_explosionSmallFrames = [];
m_explosionSmallGraphic = new Sprite();
_local1 = new Explosion(m_explosionSmallGraphic, 200, 200, 18);
m_explosionSmallCountdown = 30;
this.addEventListener(Event.ENTER_FRAME, enterFrameRecord);
}
private function enterFrameRecord(_arg1:Event):void{
var _local2:BitmapData;
if (m_explosionLargeCountdown > 0){
_local2 = new BitmapData(400, 400, true, 0);
_local2.draw(m_explosionLargeGraphic);
m_explosionLargeFrames.push(_local2);
m_explosionLargeCountdown--;
};
if (m_explosionMediumCountdown > 0){
_local2 = new BitmapData(400, 400, true, 0);
_local2.draw(m_explosionMediumGraphic);
m_explosionMediumFrames.push(_local2);
m_explosionMediumCountdown--;
};
if (m_explosionSmallCountdown > 0){
_local2 = new BitmapData(400, 400, true, 0);
_local2.draw(m_explosionSmallGraphic);
m_explosionSmallFrames.push(_local2);
m_explosionSmallCountdown--;
};
if ((((((m_explosionLargeCountdown == 0)) && ((m_explosionMediumCountdown == 0)))) && ((m_explosionSmallCountdown == 0)))){
trace("All recording complete");
this.removeEventListener(Event.ENTER_FRAME, enterFrameRecord);
m_explosionBitmapMovieLarge = new BitmapMovie(m_explosionLargeFrames);
m_explosionBitmapMovieMedium = new BitmapMovie(m_explosionMediumFrames);
m_explosionBitmapMovieSmall = new BitmapMovie(m_explosionSmallFrames);
m_explosionsReady = true;
};
}
public function getDrawEffectsLayer():BitmapData{
return (m_lightningData);
}
private function rocketDetonationHandler(_arg1:WeaponEvent):void{
var _local4:Point;
var _local5:BitmapMovieDisplay;
var _local2:IWeapon = _arg1.weaponObject;
var _local3:Object = _local2.getPosition();
if (m_explosionsReady){
_local4 = new Point(((_local3.x + m_explosionOffsetX) + Map.tileHalfW), ((_local3.y + m_explosionOffsetY) + Map.tileHalfH));
_local5 = new BitmapMovieDisplay(m_explosionBitmapMovieSmall);
m_explosionsDisplayArray.push(_local5);
m_explosionsPointArray.push(_local4);
};
}
public function doPhysics():void{
var _local2:int;
var _local3:BitmapMovieDisplay;
var _local4:int;
var _local5:Point;
var _local1:Array = [];
_local2 = 0;
while (_local2 < m_explosionsDisplayArray.length) {
_local3 = m_explosionsDisplayArray[_local2];
if (_local3.frame >= (_local3.totalFrames - 1)){
_local1.push(_local3);
};
_local2++;
};
_local2 = 0;
while (_local2 < _local1.length) {
_local4 = m_explosionsDisplayArray.indexOf(_local1[_local2]);
m_explosionsDisplayArray.splice(_local4, 1);
m_explosionsPointArray.splice(_local4, 1);
_local2++;
};
_local2 = 0;
while (_local2 < m_explosionsDisplayArray.length) {
_local3 = m_explosionsDisplayArray[_local2];
_local5 = m_explosionsPointArray[_local2];
_local3.forward();
_local2++;
};
}
private function enemyKilledHandler(_arg1:EnemyEvent):void{
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:Point;
var _local8:BitmapMovieDisplay;
var _local2:IEnemy = _arg1.enemyObject;
var _local3:Object = _local2.getPosition();
if ((_local2 is Moleoid)){
_local4 = "small";
} else {
if ((_local2 is AIMSentryBase)){
_local4 = "small";
} else {
if ((_local2 is Doombot)){
_local4 = "medium";
} else {
if ((_local2 is Jeep)){
_local4 = "medium";
} else {
if ((_local2 is Helicopter)){
_local4 = "small";
} else {
if ((_local2 is AttackAPC)){
_local4 = "medium";
} else {
if ((_local2 is LightTank)){
_local4 = "medium";
} else {
if ((_local2 is CruiseMissile)){
_local4 = "small";
} else {
if ((_local2 is HeavyTank)){
_local4 = "large";
} else {
if ((_local2 is MoleMan)){
_local4 = "large";
} else {
if ((_local2 is Modok)){
_local4 = "large";
} else {
if ((_local2 is DrDoom)){
_local4 = "large";
};
};
};
};
};
};
};
};
};
};
};
};
if (((m_explosionsReady) && ((_arg1.type == EnemyEvent.ENEMY_KILLED)))){
_local5 = ((_local3.x + Map.tileHalfW) + m_explosionOffsetX);
_local6 = ((_local3.y + Map.tileHalfH) + m_explosionOffsetY);
_local7 = new Point(_local5, _local6);
if (_local4 == "small"){
_local8 = new BitmapMovieDisplay(m_explosionBitmapMovieSmall);
} else {
if (_local4 == "medium"){
_local8 = new BitmapMovieDisplay(m_explosionBitmapMovieMedium);
} else {
_local8 = new BitmapMovieDisplay(m_explosionBitmapMovieLarge);
};
};
m_explosionsDisplayArray.push(_local8);
m_explosionsPointArray.push(_local7);
if ((_local2 is ILandEnemy)){
scarMap(_local3.x, _local3.y);
};
};
}
override public function destroy():void{
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyKilledHandler);
GameBroadcaster.removeEventListener(WeaponEvent.ROCKET_DETONATE, rocketDetonationHandler);
removeChild(m_explosionsBitmap);
m_explosionsBitmapData.dispose();
m_mapScarContainer.destroy();
m_lightningData.dispose();
}
}
}//package game.effects
Section 278
//Explosion (game.effects.Explosion)
package game.effects {
import flash.events.*;
import flash.display.*;
public class Explosion extends EventDispatcher {
private var m_particlePerCycle:Number;
private var m_particleCycles:Number;
private var m_rumbleForce:Number;
private var m_forceMax:Number;// = 100
private var m_particleCount:int;
private var m_chunkMax:int;// = 0
private var m_force:Number;
private var m_particleExplosion:Boolean;// = false
private var m_particleArray:Array;
private var m_container:Sprite;
private var m_particleCycle:Number;// = 0
private var m_sx:Number;
private var m_sy:Number;
private var m_forceMin:Number;// = 0
private var m_chunks:int;// = 0
public function Explosion(_arg1:Sprite, _arg2:int, _arg3:int, _arg4:Number){
m_particleArray = new Array();
super();
m_force = Math.min(m_forceMax, Math.max(m_forceMin, _arg4));
m_container = _arg1;
m_rumbleForce = (((m_force / 100) * 10) + 2);
m_sx = _arg2;
m_sy = _arg3;
if (m_force < 10){
m_particlePerCycle = 2;
m_particleCycles = 1;
m_chunkMax = 0;
} else {
if (m_force < 20){
m_particlePerCycle = 2;
m_particleCycles = 1;
m_chunkMax = 18;
} else {
if (m_force < 40){
m_particlePerCycle = 2;
m_particleCycles = 1;
m_chunkMax = 18;
} else {
if ((((m_force >= 40)) && ((m_force < 50)))){
m_particlePerCycle = 3;
m_particleCycles = 2;
m_chunkMax = 28;
} else {
m_particlePerCycle = 3;
m_particleCycles = 2;
m_chunkMax = 70;
};
};
};
};
m_container.addEventListener(Event.ENTER_FRAME, render);
}
public function render(_arg1:Event):void{
var _local3:Particle;
var _local4:Chunk;
m_particleCycle++;
if (m_particleCycle == 1){
};
var _local2:int;
while (_local2 < m_particlePerCycle) {
m_chunks++;
if (m_chunks < m_chunkMax){
_local4 = new Chunk(m_sx, m_sy, m_force);
m_container.addChild(_local4);
};
_local3 = new Particle(m_sx, m_sy, m_force, true);
m_container.addChild(_local3);
_local2++;
};
if (m_particleCycle > m_particleCycles){
m_container.removeEventListener(Event.ENTER_FRAME, render);
};
}
}
}//package game.effects
Section 279
//Particle (game.effects.Particle)
package game.effects {
import flash.events.*;
import flash.display.*;
import assets.effects.*;
public class Particle extends MovieClip {
private var m_explodeUI:ExplodeUI;
private var m_damping:Number;// = 0.3
private var m_vx:Number;
private var m_vy:Number;
private var m_vz:Number;
private var m_force:Number;
private var m_gravity:Number;
private var m_particleSprite:ParticleUI;
public function Particle(_arg1:int, _arg2:int, _arg3:Number, _arg4:Boolean):void{
m_force = _arg3;
m_particleSprite = new ParticleUI();
m_particleSprite.x = (_arg1 + (Math.random() * 4));
m_particleSprite.y = (_arg2 + (Math.random() * 4));
m_particleSprite.rotation = (Math.random() * 360);
m_particleSprite.scaleX = (m_particleSprite.scaleY = ((m_force + (Math.random() * -10)) / 60));
m_damping = (m_damping * ((m_force + (Math.random() * -10)) / 60));
_arg4 = true;
addChild(m_particleSprite);
if (Math.random() > 0.3){
m_particleSprite.blendMode = BlendMode.HARDLIGHT;
} else {
m_particleSprite.blendMode = BlendMode.ADD;
};
m_particleSprite.addEventListener(Event.ENTER_FRAME, render);
if (m_force < 10){
if (Math.random() > 0.8){
m_particleSprite.gotoAndPlay((int((Math.random() * 5)) + 15));
} else {
m_particleSprite.gotoAndPlay((int((Math.random() * 5)) + 15));
};
} else {
if (Math.random() > 0.8){
m_particleSprite.gotoAndPlay((int((Math.random() * 20)) + 1));
};
};
m_vx = (((Math.random() * 2) * m_force) - m_force);
m_vy = (Math.random() * -(m_force));
m_gravity = (Math.random() + 0.7);
m_explodeUI = new ExplodeUI();
m_explodeUI.x = (_arg1 + (Math.random() * 4));
m_explodeUI.y = (_arg2 + (Math.random() * 4));
addChild(m_explodeUI);
m_explodeUI.rotation = (Math.random() * 360);
m_explodeUI.scaleX = (m_explodeUI.scaleY = (m_force / 60));
m_explodeUI.cacheAsBitmap = true;
m_explodeUI.addEventListener(Event.ENTER_FRAME, renderExplosion);
if (Math.random() > 0.5){
m_explodeUI.blendMode = BlendMode.ADD;
} else {
m_explodeUI.blendMode = BlendMode.OVERLAY;
};
}
private function render(_arg1:Event):void{
if (m_particleSprite.currentFrame == m_particleSprite.totalFrames){
m_particleSprite.removeEventListener(Event.ENTER_FRAME, render);
removeChild(m_particleSprite);
m_particleSprite = null;
if (this.parent != null){
this.parent.removeChild(this);
};
} else {
m_particleSprite.x = (m_particleSprite.x + m_vx);
m_particleSprite.y = (m_particleSprite.y + m_vy);
if (m_explodeUI){
m_explodeUI.x = (m_explodeUI.x + m_vx);
m_explodeUI.y = (m_explodeUI.y + m_vy);
};
m_particleSprite.scaleX = (m_particleSprite.scaleX + 0.018);
m_particleSprite.scaleY = (m_particleSprite.scaleY + 0.018);
m_vx = (m_vx * m_damping);
m_vy = (m_vy * m_damping);
};
}
private function renderExplosion(_arg1:Event):void{
if (m_explodeUI.currentFrame == m_explodeUI.totalFrames){
m_explodeUI.removeEventListener(Event.ENTER_FRAME, renderExplosion);
removeChild(m_explodeUI);
m_explodeUI = null;
};
}
}
}//package game.effects
Section 280
//AIMSentryBase (game.enemies.AIMSentryBase)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
public class AIMSentryBase extends BaseEnemy implements ILandEnemy {
public function AIMSentryBase(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.MediumExplosion", 1, 1, false));
}
}
}//package game.enemies
Section 281
//AIMSentryBlue (game.enemies.AIMSentryBlue)
package game.enemies {
import game.*;
import assets.enemies.*;
public class AIMSentryBlue extends AIMSentryBase {
public function AIMSentryBlue(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new AIMSentryShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 3);
addChild(m_shadow);
m_container = new AIMSentry_BlueClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 4;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
}
}//package game.enemies
Section 282
//AIMSentryRed (game.enemies.AIMSentryRed)
package game.enemies {
import game.*;
import assets.enemies.*;
public class AIMSentryRed extends AIMSentryBase {
public function AIMSentryRed(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new AIMSentryShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 3);
addChild(m_shadow);
m_container = new AIMSentry_RedClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 4;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
}
}//package game.enemies
Section 283
//AIMSentryYellow (game.enemies.AIMSentryYellow)
package game.enemies {
import game.*;
import assets.enemies.*;
public class AIMSentryYellow extends AIMSentryBase {
public function AIMSentryYellow(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new AIMSentryShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 3);
addChild(m_shadow);
m_container = new AIMSentry_YellowClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 4;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
}
}//package game.enemies
Section 284
//AttackAPC (game.enemies.AttackAPC)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class AttackAPC extends BaseEnemy implements ILandEnemy {
public function AttackAPC(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new AttackAPCShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 3);
addChild(m_shadow);
m_container = new AttackAPCClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 8;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.MediumVehicleExplosion", 1.2, 1, false));
}
}
}//package game.enemies
Section 285
//BaseEnemy (game.enemies.BaseEnemy)
package game.enemies {
import flash.display.*;
import game.events.*;
import game.interfaces.*;
import flash.geom.*;
import org.casalib.display.*;
import fl.motion.*;
import game.*;
public class BaseEnemy extends CasaSprite implements IEnemy {
protected const m_FINISHED:int = 2;
protected const m_ALIVE:int = 0;
protected const m_DEAD:int = 1;
protected var m_slowdownCountdown:int;// = 0
protected var m_rotation:Number;
protected var m_ticksPerFrame:Number;
protected var m_routeArray:Array;
protected var m_speedFactor:Number;// = 1
protected var m_x:Number;
protected var m_y:Number;
protected var m_container:MovieClip;
protected var m_shadow:MovieClip;
protected var m_targetableCountdown:int;
protected var m_state:int;
protected var m_score:int;
protected var m_healthBar:HealthBar;
protected var m_isTargetable:Boolean;
protected var m_healthOriginal:Number;
protected var m_waveID:int;
protected var m_money:int;
protected var m_health:Number;
protected var m_speed:Number;
protected var m_ticksPerFrameCountdown:Number;// = 0
public function BaseEnemy(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
m_x = (Map.tileW * _arg1[0].x);
m_y = (Map.tileH * _arg1[0].y);
m_routeArray = _arg1;
m_speed = _arg2;
m_healthOriginal = _arg3;
m_health = m_healthOriginal;
m_money = _arg4;
m_score = _arg5;
m_waveID = _arg6;
m_state = m_ALIVE;
m_isTargetable = false;
m_targetableCountdown = int(((Map.tileW * 1) / m_speed));
}
public function doRender():void{
m_container.rotation = m_rotation;
m_shadow.rotation = m_rotation;
this.x = m_x;
this.y = m_y;
}
override public function destroy():void{
m_healthBar.destroy();
super.destroy();
}
protected function navStep():void{
m_routeArray.shift();
if (m_routeArray.length == 1){
m_state = m_FINISHED;
GameBroadcaster.dispatchEvent(new EnemyEvent(EnemyEvent.ENEMY_OBJECTIVE, this));
};
}
public function getMoney():int{
return (m_money);
}
public function getPosition():Object{
var _local1:Object = {};
_local1.x = m_x;
_local1.y = m_y;
_local1.rotation = m_rotation;
return (_local1);
}
public function isTargetable():Boolean{
return (m_isTargetable);
}
public function doHurt(_arg1:int):void{
m_health = (m_health - _arg1);
m_healthBar.setHealth((m_health / m_healthOriginal));
if (m_health <= 0){
m_state = m_DEAD;
GameBroadcaster.dispatchEvent(new EnemyEvent(EnemyEvent.ENEMY_KILLED, this));
playDeathSound();
};
}
public function doPhysics():void{
if (m_state == m_ALIVE){
doNavigation();
doWalk();
doAssessTargetability();
};
}
public function getWaveID():int{
return (m_waveID);
}
public function getSpeedFactor():Number{
return (m_speedFactor);
}
public function doSlowdown(_arg1:Number, _arg2:Number):void{
m_slowdownCountdown = (m_slowdownCountdown + _arg2);
m_speedFactor = _arg1;
var _local3:Color = new Color();
_local3.setTint(0xFFFFFF, 0.4);
m_container.transform.colorTransform = _local3;
}
protected function playDeathSound():void{
}
public function getScore():int{
return (m_score);
}
protected function doAssessTargetability():void{
if (!m_isTargetable){
m_targetableCountdown--;
if (m_targetableCountdown <= 0){
m_isTargetable = true;
};
};
}
protected function doWalk():void{
var _local1:int;
m_ticksPerFrameCountdown--;
if (m_ticksPerFrameCountdown <= 0){
m_ticksPerFrameCountdown = m_ticksPerFrame;
_local1 = (m_container.currentFrame + 1);
if (_local1 > m_container.totalFrames){
_local1 = 1;
};
m_container.gotoAndStop(_local1);
};
}
protected function doNavigation():void{
if (m_slowdownCountdown > 0){
m_slowdownCountdown--;
if (m_slowdownCountdown == 0){
m_speedFactor = 1;
m_container.transform.colorTransform = new ColorTransform();
};
};
var _local1:Number = (m_speed * m_speedFactor);
var _local2:int = Map.tileW;
var _local3:int = Map.tileH;
if (m_routeArray[1].x < m_routeArray[0].x){
m_rotation = 270;
m_x = (m_x - _local1);
if (m_x < (m_routeArray[1].x * _local2)){
m_x = (m_routeArray[1].x * _local2);
navStep();
};
} else {
if (m_routeArray[1].x > m_routeArray[0].x){
m_rotation = 90;
m_x = (m_x + _local1);
if (m_x > (m_routeArray[1].x * _local2)){
m_x = (m_routeArray[1].x * _local2);
navStep();
};
} else {
if (m_routeArray[1].y > m_routeArray[0].y){
m_rotation = 180;
m_y = (m_y + _local1);
if (m_y > (m_routeArray[1].y * _local3)){
m_y = (m_routeArray[1].y * _local3);
navStep();
};
} else {
m_rotation = 0;
m_y = (m_y - _local1);
if (m_y < (m_routeArray[1].y * _local3)){
m_y = (m_routeArray[1].y * _local3);
navStep();
};
};
};
};
}
}
}//package game.enemies
Section 286
//CruiseMissile (game.enemies.CruiseMissile)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class CruiseMissile extends BaseEnemy implements IAirEnemy {
public function CruiseMissile(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new CruiseMissileShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 25);
addChild(m_shadow);
m_container = new CruiseMissileClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 8;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
var _local2:String;
var _local1:int = Math.round((Math.random() * 1));
if (_local1 == 0){
_local2 = "assets_sfx.sfx.explosions.MediumExplosion";
} else {
_local2 = "assets_sfx.sfx.explosions.MediumExplosion";
};
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, _local2, 1, 1, false));
}
}
}//package game.enemies
Section 287
//Doombot (game.enemies.Doombot)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class Doombot extends BaseEnemy implements ILandEnemy {
public function Doombot(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new DoombotShadow();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 3);
addChild(m_shadow);
m_container = new DoombotClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 5;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.MediumGlassExplosion", 0.4, 1, false));
}
}
}//package game.enemies
Section 288
//DrDoom (game.enemies.DrDoom)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class DrDoom extends BaseEnemy implements ILandEnemy {
public function DrDoom(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new DrDoomShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 8);
addChild(m_shadow);
m_container = new DrDoomClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 4;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.BossExplosion", 1.2, 1, false));
}
}
}//package game.enemies
Section 289
//EnemyController (game.enemies.EnemyController)
package game.enemies {
import game.events.*;
import flash.utils.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.*;
public class EnemyController extends CasaSprite {
private var m_landContainer:CasaSprite;
private var m_airContainer:CasaSprite;
public static const AIMSENTRY:String = "aimsentry";
public static const MODOK:String = "modok";
public static const AIMSENTRY_BLUE:String = "aimsentry_blue";
public static const AIMSENTRY_YELLOW:String = "aimsentry_yellow";
public static const HEAVYTANK:String = "heavytank";
public static const HELICOPTER:String = "helicopter";
public static const CRUISEMISSILE:String = "cruisemissile";
public static const DOOMBOT:String = "doombot";
public static const LIGHTTANK:String = "lighttank";
public static const JEEP:String = "jeep";
public static const ATTACKAPC:String = "attackapc";
public static const MOLEOID:String = "moleoid";
public static const AIMSENTRY_RED:String = "aimsentry_red";
public static const DRDOOM:String = "drdoom";
public static const MOLEMAN:String = "moleman";
public function EnemyController(_arg1:CasaSprite, _arg2:CasaSprite, _arg3:XML){
EnemyData.instance.emptyArray();
m_landContainer = _arg1;
m_airContainer = _arg2;
m_airContainer.mouseChildren = false;
m_airContainer.mouseEnabled = false;
initTables(_arg3);
GameBroadcaster.addEventListener(EnemyEvent.SPAWN_ENEMY, spawnEnemyHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyObjectiveHandler, false, 0, true);
trace("EC online");
}
public function doRender():void{
var _local1:Array = EnemyData.instance.enemyArray;
var _local2:int;
while (_local2 < _local1.length) {
BaseEnemy(_local1[_local2]).doRender();
_local2++;
};
}
public function doPhysics():void{
var _local1:Array = EnemyData.instance.enemyArray;
var _local2:int;
while (_local2 < _local1.length) {
BaseEnemy(_local1[_local2]).doPhysics();
_local2++;
};
}
private function enemyKilledHandler(_arg1:EnemyEvent):void{
var _local2:BaseEnemy = _arg1.enemyObject;
EnemyData.instance.enemyArray.splice(EnemyData.instance.enemyArray.indexOf(_local2), 1);
_local2.destroy();
}
private function initTables(_arg1:XML):void{
var _local2:Dictionary = EnemyData.instance.speedTable;
var _local3:Dictionary = EnemyData.instance.moneyTable;
var _local4:Dictionary = EnemyData.instance.scoreTable;
_local2[MOLEOID] = Number(_arg1.moleoid.@speed);
_local2[AIMSENTRY] = Number(_arg1.aimsentry.@speed);
_local2[DOOMBOT] = Number(_arg1.doombot.@speed);
_local2[JEEP] = Number(_arg1.jeep.@speed);
_local2[HELICOPTER] = Number(_arg1.helicopter.@speed);
_local2[ATTACKAPC] = Number(_arg1.attackapc.@speed);
_local2[LIGHTTANK] = Number(_arg1.lighttank.@speed);
_local2[CRUISEMISSILE] = Number(_arg1.cruisemissile.@speed);
_local2[HEAVYTANK] = Number(_arg1.heavytank.@speed);
_local2[MOLEMAN] = Number(_arg1.moleman.@speed);
_local2[MODOK] = Number(_arg1.modok.@speed);
_local2[DRDOOM] = Number(_arg1.drdoom.@speed);
_local3[MOLEOID] = int(_arg1.moleoid.@cost);
_local3[AIMSENTRY] = int(_arg1.aimsentry.@cost);
_local3[DOOMBOT] = int(_arg1.doombot.@cost);
_local3[JEEP] = int(_arg1.jeep.@cost);
_local3[HELICOPTER] = int(_arg1.helicopter.@cost);
_local3[ATTACKAPC] = int(_arg1.attackapc.@cost);
_local3[LIGHTTANK] = int(_arg1.lighttank.@cost);
_local3[CRUISEMISSILE] = int(_arg1.cruisemissile.@cost);
_local3[HEAVYTANK] = int(_arg1.heavytank.@cost);
_local3[MOLEMAN] = int(_arg1.moleman.@cost);
_local3[MODOK] = int(_arg1.modok.@cost);
_local3[DRDOOM] = int(_arg1.drdoom.@cost);
_local4[MOLEOID] = int(_arg1.moleoid.@score);
_local4[AIMSENTRY] = int(_arg1.aimsentry.@score);
_local4[DOOMBOT] = int(_arg1.doombot.@score);
_local4[JEEP] = int(_arg1.jeep.@score);
_local4[HELICOPTER] = int(_arg1.helicopter.@score);
_local4[ATTACKAPC] = int(_arg1.attackapc.@score);
_local4[LIGHTTANK] = int(_arg1.lighttank.@score);
_local4[CRUISEMISSILE] = int(_arg1.cruisemissile.@score);
_local4[HEAVYTANK] = int(_arg1.heavytank.@score);
_local4[MOLEMAN] = int(_arg1.moleman.@score);
_local4[MODOK] = int(_arg1.modok.@score);
_local4[DRDOOM] = int(_arg1.drdoom.@score);
}
private function enemyObjectiveHandler(_arg1:EnemyEvent):void{
var _local2:BaseEnemy;
if (EnemyData.instance.enemyArray.indexOf(_arg1.enemyObject) < 0){
trace("ERROR! this enemy is already out of our array!");
} else {
_local2 = _arg1.enemyObject;
EnemyData.instance.enemyArray.splice(EnemyData.instance.enemyArray.indexOf(_local2), 1);
_local2.destroy();
};
}
override public function destroy():void{
var _local1:Array = EnemyData.instance.enemyArray;
var _local2:int;
while (_local2 < _local1.length) {
BaseEnemy(_local1[_local2]).destroy();
_local1[_local2] = null;
_local2++;
};
GameBroadcaster.removeEventListener(EnemyEvent.SPAWN_ENEMY, spawnEnemyHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyObjectiveHandler);
EnemyData.instance.emptyArray();
trace("EnemyController destroy");
super.destroy();
}
private function spawnEnemyHandler(_arg1:EnemyEvent):void{
var _local8:Number;
var _local9:int;
var _local10:int;
var _local11:int;
var _local13:BaseEnemy;
var _local2:Array = Map.getRoutes();
var _local3:Array = [];
var _local4:int;
while (_local4 < _local2[_arg1.routeID].length) {
_local3[_local4] = _local2[_arg1.routeID][_local4];
_local4++;
};
_local9 = _arg1.health;
var _local5:Dictionary = EnemyData.instance.speedTable;
var _local6:Dictionary = EnemyData.instance.moneyTable;
var _local7:Dictionary = EnemyData.instance.scoreTable;
var _local12:int = _arg1.waveID;
if (_arg1.enemyType == MOLEOID){
_local8 = _local5[MOLEOID];
_local10 = _local6[MOLEOID];
_local11 = _local7[MOLEOID];
_local13 = new Moleoid(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == AIMSENTRY_BLUE){
_local8 = _local5[AIMSENTRY];
_local10 = _local6[AIMSENTRY];
_local11 = _local7[AIMSENTRY];
_local13 = new AIMSentryBlue(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == AIMSENTRY_RED){
_local8 = _local5[AIMSENTRY];
_local10 = _local6[AIMSENTRY];
_local11 = _local7[AIMSENTRY];
_local13 = new AIMSentryRed(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == AIMSENTRY_YELLOW){
_local8 = _local5[AIMSENTRY];
_local10 = _local6[AIMSENTRY];
_local11 = _local7[AIMSENTRY];
_local13 = new AIMSentryYellow(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == DOOMBOT){
_local8 = _local5[DOOMBOT];
_local10 = _local6[DOOMBOT];
_local11 = _local7[DOOMBOT];
_local13 = new Doombot(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == JEEP){
_local8 = _local5[JEEP];
_local10 = _local6[JEEP];
_local11 = _local7[JEEP];
_local13 = new Jeep(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == HELICOPTER){
_local8 = _local5[HELICOPTER];
_local10 = _local6[HELICOPTER];
_local11 = _local7[HELICOPTER];
_local13 = new Helicopter(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == ATTACKAPC){
_local8 = _local5[ATTACKAPC];
_local10 = _local6[ATTACKAPC];
_local11 = _local7[ATTACKAPC];
_local13 = new AttackAPC(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == LIGHTTANK){
_local8 = _local5[LIGHTTANK];
_local10 = _local6[LIGHTTANK];
_local11 = _local7[LIGHTTANK];
_local13 = new LightTank(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == CRUISEMISSILE){
_local8 = _local5[CRUISEMISSILE];
_local10 = _local6[CRUISEMISSILE];
_local11 = _local7[CRUISEMISSILE];
_local13 = new CruiseMissile(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == HEAVYTANK){
_local8 = _local5[HEAVYTANK];
_local10 = _local6[HEAVYTANK];
_local11 = _local7[HEAVYTANK];
_local13 = new HeavyTank(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == MOLEMAN){
_local8 = _local5[MOLEMAN];
_local10 = _local6[MOLEMAN];
_local11 = _local7[MOLEMAN];
_local13 = new MoleMan(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == MODOK){
_local8 = _local5[MODOK];
_local10 = _local6[MODOK];
_local11 = _local7[MODOK];
_local13 = new Modok(_local3, _local8, _local9, _local10, _local11, _local12);
} else {
if (_arg1.enemyType == DRDOOM){
_local8 = _local5[DRDOOM];
_local10 = _local6[DRDOOM];
_local11 = _local7[DRDOOM];
_local13 = new DrDoom(_local3, _local8, _local9, _local10, _local11, _local12);
};
};
};
};
};
};
};
};
};
};
};
};
};
};
if ((((((_arg1.enemyType == HELICOPTER)) || ((_arg1.enemyType == CRUISEMISSILE)))) || ((_arg1.enemyType == MODOK)))){
m_airContainer.addChild(_local13);
} else {
m_landContainer.addChild(_local13);
};
EnemyData.instance.enemyArray.push(_local13);
GameBroadcaster.dispatchEvent(new EnemyEvent(EnemyEvent.ENEMY_SPAWNED, _local13));
}
public static function getTypeOfEnemy(_arg1:IEnemy):String{
var _local2:String;
if ((_arg1 is Moleoid)){
_local2 = EnemyController.MOLEOID;
} else {
if ((_arg1 is AIMSentryBase)){
_local2 = EnemyController.AIMSENTRY;
} else {
if ((_arg1 is Doombot)){
_local2 = EnemyController.DOOMBOT;
} else {
if ((_arg1 is Jeep)){
_local2 = EnemyController.JEEP;
} else {
if ((_arg1 is Helicopter)){
_local2 = EnemyController.HELICOPTER;
} else {
if ((_arg1 is AttackAPC)){
_local2 = EnemyController.ATTACKAPC;
} else {
if ((_arg1 is LightTank)){
_local2 = EnemyController.LIGHTTANK;
} else {
if ((_arg1 is CruiseMissile)){
_local2 = EnemyController.CRUISEMISSILE;
} else {
if ((_arg1 is HeavyTank)){
_local2 = EnemyController.HEAVYTANK;
} else {
if ((_arg1 is MoleMan)){
_local2 = EnemyController.MOLEMAN;
} else {
if ((_arg1 is Modok)){
_local2 = EnemyController.MODOK;
} else {
if ((_arg1 is DrDoom)){
_local2 = EnemyController.DRDOOM;
} else {
throw (new Error((("getTypeOfEnemy: " + _arg1) + " unknown!")));
};
};
};
};
};
};
};
};
};
};
};
};
return (_local2);
}
}
}//package game.enemies
Section 290
//EnemyData (game.enemies.EnemyData)
package game.enemies {
import flash.events.*;
import flash.utils.*;
public class EnemyData extends EventDispatcher {
private var m_moneyTable:Dictionary;
private var m_enemyArray:Array;
private var m_scoreTable:Dictionary;
private var m_speedTable:Dictionary;
private static var m_instance:EnemyData = new (EnemyData);
;
public function EnemyData(){
if (m_instance){
throw (new Error("Error: EnemyData is a Singleton, and can only be accessed through EnemyData.instance"));
};
m_instance = this;
m_enemyArray = [];
m_speedTable = new Dictionary();
m_moneyTable = new Dictionary();
m_scoreTable = new Dictionary();
}
public function get scoreTable():Dictionary{
return (m_scoreTable);
}
public function emptyArray():void{
m_enemyArray = [];
m_speedTable = new Dictionary();
m_moneyTable = new Dictionary();
m_scoreTable = new Dictionary();
}
public function get enemyArray():Array{
return (m_enemyArray);
}
public function get moneyTable():Dictionary{
return (m_moneyTable);
}
public function get speedTable():Dictionary{
return (m_speedTable);
}
public static function get instance():EnemyData{
return (m_instance);
}
}
}//package game.enemies
Section 291
//HealthBar (game.enemies.HealthBar)
package game.enemies {
import flash.display.*;
import org.casalib.display.*;
import assets.enemies.*;
public class HealthBar extends CasaSprite {
private var container:MovieClip;
public function HealthBar(){
container = new HealthBar();
this.addChild(container);
}
public function setHealth(_arg1:Number):void{
if ((((_arg1 >= 0)) && ((_arg1 <= 1)))){
container.green_mc.width = (container.red_mc.width * _arg1);
} else {
if (_arg1 > 1){
container.green_mc.width = container.red_mc.width;
} else {
container.green_mc.width = 0;
};
};
}
}
}//package game.enemies
Section 292
//HeavyTank (game.enemies.HeavyTank)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class HeavyTank extends BaseEnemy implements ILandEnemy {
public function HeavyTank(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new HeavyTankShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 5);
addChild(m_shadow);
m_container = new HeavyTankClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 8;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.HeavyExplosion", 1, 1, false));
}
}
}//package game.enemies
Section 293
//Helicopter (game.enemies.Helicopter)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class Helicopter extends BaseEnemy implements IAirEnemy {
public function Helicopter(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new HelicopterShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 20);
addChild(m_shadow);
m_container = new HelicopterClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 8;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
var _local2:String;
var _local1:int = Math.round((Math.random() * 1));
if (_local1 == 0){
_local2 = "assets_sfx.sfx.explosions.HeliExplosion";
} else {
_local2 = "assets_sfx.sfx.explosions.HeliExplosion";
};
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, _local2, 1, 1, false));
}
}
}//package game.enemies
Section 294
//Jeep (game.enemies.Jeep)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class Jeep extends BaseEnemy implements ILandEnemy {
public function Jeep(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new JeepShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 3);
addChild(m_shadow);
m_container = new JeepClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 8;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.MediumGlassExplosion", 0.3, 1, false));
}
}
}//package game.enemies
Section 295
//LightTank (game.enemies.LightTank)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class LightTank extends BaseEnemy implements ILandEnemy {
public function LightTank(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new LightTankShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 4);
addChild(m_shadow);
m_container = new LightTankClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 8;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.MediumVehicleExplosion", 1, 1, false));
}
}
}//package game.enemies
Section 296
//Modok (game.enemies.Modok)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class Modok extends BaseEnemy implements IAirEnemy {
public function Modok(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new ModokShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 30);
addChild(m_shadow);
m_container = new ModokClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 8;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
var _local2:String;
var _local1:int = Math.round((Math.random() * 1));
if (_local1 == 0){
_local2 = "assets_sfx.sfx.explosions.BossExplosion";
} else {
_local2 = "assets_sfx.sfx.explosions.BossExplosion";
};
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, _local2, 1.2, 1, false));
}
}
}//package game.enemies
Section 297
//MoleMan (game.enemies.MoleMan)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class MoleMan extends BaseEnemy implements ILandEnemy {
public function MoleMan(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new MoleManShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 4);
addChild(m_shadow);
m_container = new MoleManClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 10;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.BossExplosion", 1.2, 1, false));
}
}
}//package game.enemies
Section 298
//Moleoid (game.enemies.Moleoid)
package game.enemies {
import com.markfennell.sound.*;
import game.interfaces.*;
import game.*;
import assets.enemies.*;
public class Moleoid extends BaseEnemy implements ILandEnemy {
public function Moleoid(_arg1:Array, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
m_shadow = new MoleoidShadowClip();
m_shadow.x = (Map.tileHalfW + 0);
m_shadow.y = (Map.tileHalfH + 2);
addChild(m_shadow);
m_container = new MoleoidClip();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_ticksPerFrame = 5;
m_healthBar = new HealthBar();
addChild(m_healthBar);
m_healthBar.x = 5;
m_healthBar.y = 1;
}
override protected function playDeathSound():void{
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.SmallExplosion", 0.7, 1, false));
}
}
}//package game.enemies
Section 299
//EnemyEvent (game.events.EnemyEvent)
package game.events {
import flash.events.*;
import game.enemies.*;
public class EnemyEvent extends Event {
public var enemyType:String;
public var waveID:int;
public var enemyObject:BaseEnemy;
public var routeID:int;
public var health:int;
public static const ENEMY_SPAWNED:String = "enemySpawned";
public static const ENEMY_KILLED:String = "enemyKilled";
public static const ENEMY_OBJECTIVE:String = "enemyObjective";
public static const SPAWN_ENEMY:String = "spawnEnemy";
public function EnemyEvent(_arg1:String, _arg2:BaseEnemy=null, _arg3:String="", _arg4:int=0, _arg5:int=0, _arg6:int=0){
super(_arg1, true);
enemyObject = _arg2;
enemyType = _arg3;
health = _arg4;
routeID = _arg5;
waveID = _arg6;
}
}
}//package game.events
Section 300
//FinanceEvent (game.events.FinanceEvent)
package game.events {
import flash.events.*;
public class FinanceEvent extends Event {
public var playerFunds:int;
public static const UPDATE_FINANCE:String = "updateFinance";
public function FinanceEvent(_arg1:String, _arg2:int=0){
super(_arg1, true);
playerFunds = _arg2;
}
}
}//package game.events
Section 301
//GameEvent (game.events.GameEvent)
package game.events {
import flash.events.*;
public class GameEvent extends Event {
public var totalLives:int;
public var finalScore:int;
public var finalEarned:int;
public var difficulty:int;
public var currentLives:int;
public static const LIFE_LOST:String = "lifeLost";
public static const GAME_WON_WAIT:String = "gameWonWait";
public static const GAME_WON_DISPLAY:String = "gameWonDisplay";
public static const START_GAME:String = "startGame";
public static const GO_TO_MAIN_MENU:String = "goToMainMenu";
public static const CHOOSE_DIFFICULTY:String = "chooseDifficulty";
public static const LIVES_SET:String = "livesSet";
public static const PAUSE_GAMEPLAY:String = "pauseGameplay";
public static const GAME_COMPLETE_EVALUATE_ACHIEVEMENTS:String = "gameCompleteEvaluateAchievements";
public static const GAME_LOST_WAIT:String = "gameLostWait";
public static const GO_TO_GAME_OVER:String = "goToGameOver";
public static const RESUME_GAMEPLAY:String = "resumeGameplay";
public static const GAME_LOST_DISPLAY:String = "gameLostDisplay";
public function GameEvent(_arg1:String, _arg2:int=0, _arg3:int=0, _arg4:int=0, _arg5:int=0, _arg6:int=0){
super(_arg1, true);
currentLives = _arg2;
totalLives = _arg3;
difficulty = _arg4;
finalScore = _arg5;
finalEarned = _arg6;
}
}
}//package game.events
Section 302
//HUDEvent (game.events.HUDEvent)
package game.events {
import flash.events.*;
import game.interfaces.*;
public class HUDEvent extends Event {
public var rangeBonus:Boolean;
public var towerType:String;
public var towerObject:ITower;
public var frequencyBonus:Boolean;
public var towerLevel:String;
public var difficulty:int;
public static const SHOW_HELP:String = "showHelp";
public static const SHOW_MENU_HUD_FRAME:String = "showMenuHUDFrame";
public static const APPLY_UPGRADE:String = "applyUpgrade";
public static const SELECTED_TOWER_SELL:String = "selectedTowerSell";
public static const CLOSE_HELP:String = "closeHelp";
public static const EXIT_ATTEMPT:String = "exitAttempt";
public static const SHOW_GAME_HUD_FRAME:String = "showGameHUDFrame";
public static const RESUME_GAME:String = "resumeGame";
public static const DIFFICULTY_SELECTED:String = "difficultySelected";
public static const SELECTED_TOWER_CLEAR_SELECTION:String = "selectedTowerClearSelection";
public static const SELECTED_TOWER_SHOW_UPGRADES:String = "selectedTowershowUpgrades";
public static const CLOSE_SELECTION_PANEL:String = "closeSelectionPanel";
public static const SELECTED_TOWER_DRAW_SELECTION:String = "selectedTowerDrawSelection";
public static const PREVIEW_TOWER_ROLL_OVER:String = "previewTowerRollOver";
public static const CANCEL_EXIT_ATTEMPT:String = "cancelExitAttempt";
public static const PREVIEW_TOWER_MOUSE_DOWN:String = "previewTowerMouseDown";
public static const PREVIEW_TOWER_ROLL_OUT:String = "previewTowerRollOut";
public static const QUIT_GAME:String = "quitGame";
public static const PAUSE_GAME:String = "pauseGame";
public function HUDEvent(_arg1:String, _arg2:String="", _arg3:ITower=null, _arg4:String="", _arg5:Boolean=false, _arg6:Boolean=false, _arg7:int=0){
super(_arg1, true);
towerType = _arg2;
towerObject = _arg3;
towerLevel = _arg4;
frequencyBonus = _arg5;
rangeBonus = _arg6;
difficulty = _arg7;
}
}
}//package game.events
Section 303
//ScoreEvent (game.events.ScoreEvent)
package game.events {
import flash.events.*;
public class ScoreEvent extends Event {
public var newScore:int;
public var bonusComponent:int;
public static const UPDATE_SCORE:String = "updateScore";
public function ScoreEvent(_arg1:String, _arg2:int=0, _arg3:int=0){
super(_arg1, true);
newScore = _arg2;
bonusComponent = _arg3;
}
}
}//package game.events
Section 304
//TowerEvent (game.events.TowerEvent)
package game.events {
import flash.events.*;
import game.interfaces.*;
public class TowerEvent extends Event {
public var towerType:String;
public var towerObject:ITower;
public var tower_cell_x:Number;
public var tower_cell_y:Number;
public var hasRangeBonus:Boolean;
public var hasFrequencyBonus:Boolean;
public var levelID:int;
public static const UPGRADE_TOWER:String = "upgradeTower";
public static const BUILD_TOWER_COMPLETE:String = "buildTowerComplete";
public static const BUILD_TOWER:String = "buildTower";
public static const TOWER_UPGRADE_COMPLETE:String = "towerUpgradeComplete";
public static const SELL_TOWER:String = "sellTower";
public function TowerEvent(_arg1:String, _arg2:ITower=null, _arg3:int=0, _arg4:Boolean=false, _arg5:Boolean=false, _arg6:String="", _arg7:Number=0, _arg8:Number=0){
super(_arg1, true);
towerObject = _arg2;
towerType = _arg6;
levelID = _arg3;
hasFrequencyBonus = _arg4;
hasRangeBonus = _arg5;
tower_cell_x = _arg7;
tower_cell_y = _arg8;
}
}
}//package game.events
Section 305
//WaveEvent (game.events.WaveEvent)
package game.events {
import flash.events.*;
import game.waves.*;
public class WaveEvent extends Event {
public var previousWaveMaxTime:int;
public var timeTillNextWaveMin:int;
public var currentWaveID:int;
public var previousWaveTime:int;
public var totalWaves:int;
public var wave:Wave;
public var timeTillNextWaveMax:int;
public static const LOCK_NEXT_WAVE:String = "lockNextWave";
public static const UNLOCK_NEXT_WAVE:String = "unlockNextWave";
public static const ALL_WAVES_LAUNCHED:String = "allWavesLaunched";
public static const WAVE_LAUNCHED:String = "waveLaunched";
public static const REQUEST_NEXT_WAVE:String = "requestNextWave";
public static const WAVE_DEFEATED:String = "waveDefeated";
public function WaveEvent(_arg1:String, _arg2:int=0, _arg3:int=0, _arg4:int=0, _arg5:int=0, _arg6:int=0, _arg7:int=0, _arg8:Wave=null){
super(_arg1, true);
timeTillNextWaveMin = _arg2;
timeTillNextWaveMax = _arg3;
currentWaveID = _arg4;
totalWaves = _arg5;
previousWaveTime = _arg6;
previousWaveMaxTime = _arg7;
wave = _arg8;
}
}
}//package game.events
Section 306
//WeaponEvent (game.events.WeaponEvent)
package game.events {
import flash.events.*;
import game.interfaces.*;
public class WeaponEvent extends Event {
public var towerLevel:int;
public var spawnOffset:Object;
public var enemyObject:IEnemy;
public var towerObject:ITower;
public var weaponObject:IWeapon;
public static const ROCKET_FIRE:String = "rocketFire";
public static const MORTAR_FIRE:String = "mortarFire";
public static const MORTAR_DETONATE:String = "mortarDetonate";
public static const ROCKET_DETONATE:String = "rocketDetonate";
public static const BLASTER_FIRE:String = "blasterFire";
public static const LASER_FIRE:String = "laserFire";
public static const SLOWDOWN_FIRE:String = "slowdownFire";
public static const LIGHTNING_STOP:String = "lightningStop";
public static const LIGHTNING_FIRE:String = "lightningFire";
public static const SLOWDOWN_DETONATE:String = "slowdownDetonate";
public static const LASER_STOP:String = "laserStop";
public function WeaponEvent(_arg1:String, _arg2:ITower=null, _arg3:IEnemy=null, _arg4:IWeapon=null, _arg5:int=0, _arg6:Object=null){
super(_arg1, true);
towerObject = _arg2;
enemyObject = _arg3;
weaponObject = _arg4;
towerLevel = _arg5;
spawnOffset = _arg6;
}
}
}//package game.events
Section 307
//FinanceController (game.finance.FinanceController)
package game.finance {
import game.events.*;
import flash.utils.*;
import game.interfaces.*;
import game.towers.*;
import mochi.as3.*;
public class FinanceController {
private var m_md0:MochiDigits;
private var m_md1:MochiDigits;
public function FinanceController(){
FinanceData.instance.emptyTable();
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.BUILD_TOWER, towerBuildHandler, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.UPGRADE_TOWER, towerUpgradeHandler, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.SELL_TOWER, towerSellHandler, false, 0, true);
GameBroadcaster.addEventListener(WaveEvent.WAVE_DEFEATED, waveDefeatedHandler, false, 0, true);
}
private function enemyKilledHandler(_arg1:EnemyEvent):void{
addPlayerFunds(_arg1.enemyObject.getMoney());
}
private function removePlayerFunds(_arg1:int):void{
(FinanceData.instance.playerFunds = (FinanceData.instance.playerFunds - _arg1));
m_md0.addValue(-(_arg1));
GameBroadcaster.dispatchEvent(new FinanceEvent(FinanceEvent.UPDATE_FINANCE, FinanceData.instance.playerFunds));
}
public function initFinance(_arg1:XML):void{
var _local5:*;
var _local6:int;
var _local7:*;
var _local2:XML = _arg1.towers[0];
var _local3:Dictionary = FinanceData.instance.costTable;
_local3[TowerController.BLASTER] = new Dictionary();
_local3[TowerController.BLASTER][TowerController.LEVEL_1] = int(_local2.blasterTower.@level1);
_local3[TowerController.BLASTER][TowerController.LEVEL_2] = int(_local2.blasterTower.@level2);
_local3[TowerController.BLASTER][TowerController.LEVEL_3] = int(_local2.blasterTower.@level3);
_local3[TowerController.BLASTER][TowerController.FREQUENCY_BONUS] = int(_local2.blasterTower.@frequencyBonus);
_local3[TowerController.BLASTER][TowerController.RANGE_BONUS] = int(_local2.blasterTower.@rangeBonus);
_local3[TowerController.SLOWDOWN] = new Dictionary();
_local3[TowerController.SLOWDOWN][TowerController.LEVEL_1] = int(_local2.slowdownTower.@level1);
_local3[TowerController.SLOWDOWN][TowerController.LEVEL_2] = int(_local2.slowdownTower.@level2);
_local3[TowerController.SLOWDOWN][TowerController.LEVEL_3] = int(_local2.slowdownTower.@level3);
_local3[TowerController.SLOWDOWN][TowerController.FREQUENCY_BONUS] = int(_local2.slowdownTower.@frequencyBonus);
_local3[TowerController.SLOWDOWN][TowerController.RANGE_BONUS] = int(_local2.slowdownTower.@rangeBonus);
_local3[TowerController.ROCKET] = new Dictionary();
_local3[TowerController.ROCKET][TowerController.LEVEL_1] = int(_local2.rocketTower.@level1);
_local3[TowerController.ROCKET][TowerController.LEVEL_2] = int(_local2.rocketTower.@level2);
_local3[TowerController.ROCKET][TowerController.LEVEL_3] = int(_local2.rocketTower.@level3);
_local3[TowerController.ROCKET][TowerController.FREQUENCY_BONUS] = int(_local2.rocketTower.@frequencyBonus);
_local3[TowerController.ROCKET][TowerController.RANGE_BONUS] = int(_local2.rocketTower.@rangeBonus);
_local3[TowerController.LASER] = new Dictionary();
_local3[TowerController.LASER][TowerController.LEVEL_1] = int(_local2.laserTower.@level1);
_local3[TowerController.LASER][TowerController.LEVEL_2] = int(_local2.laserTower.@level2);
_local3[TowerController.LASER][TowerController.LEVEL_3] = int(_local2.laserTower.@level3);
_local3[TowerController.LASER][TowerController.FREQUENCY_BONUS] = int(_local2.laserTower.@frequencyBonus);
_local3[TowerController.LASER][TowerController.RANGE_BONUS] = int(_local2.laserTower.@rangeBonus);
_local3[TowerController.LIGHTNING] = new Dictionary();
_local3[TowerController.LIGHTNING][TowerController.LEVEL_1] = int(_local2.lightningTower.@level1);
_local3[TowerController.LIGHTNING][TowerController.LEVEL_2] = int(_local2.lightningTower.@level2);
_local3[TowerController.LIGHTNING][TowerController.LEVEL_3] = int(_local2.lightningTower.@level3);
_local3[TowerController.LIGHTNING][TowerController.FREQUENCY_BONUS] = int(_local2.lightningTower.@frequencyBonus);
_local3[TowerController.LIGHTNING][TowerController.RANGE_BONUS] = int(_local2.lightningTower.@rangeBonus);
var _local4:Dictionary = FinanceData.instance.resaleTable;
_local4[TowerController.BLASTER] = Number(_local2.blasterTower.@resaleFraction);
_local4[TowerController.SLOWDOWN] = Number(_local2.slowdownTower.@resaleFraction);
_local4[TowerController.ROCKET] = Number(_local2.rocketTower.@resaleFraction);
_local4[TowerController.LASER] = Number(_local2.laserTower.@resaleFraction);
_local4[TowerController.LIGHTNING] = Number(_local2.lightningTower.@resaleFraction);
for (_local5 in _local3) {
for (_local7 in _local3[_local5]) {
};
};
_local6 = _arg1.player.startingFunds.@funds;
(FinanceData.instance.playerFunds = _local6);
(FinanceData.instance.playerEarnings = _local6);
(FinanceData.instance.playerSpendings = 0);
(m_md0 = new MochiDigits(_local6));
}
private function towerBuildHandler(_arg1:TowerEvent):void{
var _local2:String = TowerController.getTowerLevelString(null, _arg1.levelID);
var _local3:Dictionary = FinanceData.instance.costTable;
var _local4:int = _local3[_arg1.towerType][_local2];
var _local5:int;
if (_arg1.hasFrequencyBonus){
_local5 = (_local5 + _local3[_arg1.towerType][TowerController.FREQUENCY_BONUS]);
_local5;
trace("FC build tower has frequency bonus");
};
if (_arg1.hasRangeBonus){
_local5 = (_local5 + _local3[_arg1.towerType][TowerController.RANGE_BONUS]);
_local5;
trace("FC build tower has range bonus");
};
var _local6:int = (_local4 + _local5);
trace(("FC build, final cost " + _local6));
removePlayerFunds(_local6);
(FinanceData.instance.playerSpendings = (FinanceData.instance.playerSpendings + _local6));
trace(("FC spendings $ " + FinanceData.instance.playerSpendings));
}
private function towerSellHandler(_arg1:TowerEvent):void{
var _local2:int = evaluateTowerForSale(_arg1.towerObject);
trace(("FC sale, final value " + _local2));
addPlayerFunds(_local2);
}
public function freeze():void{
if (FinanceData.instance.playerFunds != m_md0.value){
(m_md1 = new MochiDigits(1));
} else {
(m_md1 = new MochiDigits(0));
};
}
public function destroy():void{
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler);
GameBroadcaster.removeEventListener(TowerEvent.BUILD_TOWER, towerBuildHandler);
GameBroadcaster.removeEventListener(TowerEvent.UPGRADE_TOWER, towerUpgradeHandler);
GameBroadcaster.removeEventListener(TowerEvent.SELL_TOWER, towerSellHandler);
GameBroadcaster.removeEventListener(WaveEvent.WAVE_DEFEATED, waveDefeatedHandler);
}
private function addPlayerFunds(_arg1:int):void{
(FinanceData.instance.playerFunds = (FinanceData.instance.playerFunds + _arg1));
(FinanceData.instance.playerEarnings = (FinanceData.instance.playerEarnings + _arg1));
m_md0.addValue(_arg1);
GameBroadcaster.dispatchEvent(new FinanceEvent(FinanceEvent.UPDATE_FINANCE, FinanceData.instance.playerFunds));
}
private function towerUpgradeHandler(_arg1:TowerEvent):void{
var _local5:String;
var _local2:Dictionary = FinanceData.instance.costTable;
var _local3:int;
var _local4:String = TowerController.getTowerTypeString(_arg1.towerObject);
if (_arg1.levelID != 0){
_local5 = TowerController.getTowerLevelString(null, _arg1.levelID);
_local3 = (_local3 + _local2[_local4][_local5]);
_local3;
trace(("FC upgrade tower has level up, to: " + _local5));
};
if (_arg1.hasFrequencyBonus){
_local3 = (_local3 + _local2[_local4][TowerController.FREQUENCY_BONUS]);
_local3;
trace("FC upgrade tower has frequency bonus");
};
if (_arg1.hasRangeBonus){
_local3 = (_local3 + _local2[_local4][TowerController.RANGE_BONUS]);
_local3;
trace("FC upgrade tower has range bonus");
};
trace(("FC upgrade, final cost " + _local3));
removePlayerFunds(_local3);
(FinanceData.instance.playerSpendings = (FinanceData.instance.playerSpendings + _local3));
trace(("FC spendings $ " + FinanceData.instance.playerSpendings));
}
private function waveDefeatedHandler(_arg1:WaveEvent):void{
var _local2:int = _arg1.wave.cashBonus;
trace(("FC waveDefeated, $: " + _local2));
addPlayerFunds(_local2);
}
public static function evaluateTowerForSale(_arg1:ITower):int{
var _local2:String = TowerController.getTowerTypeString(_arg1);
var _local3:String = TowerController.getTowerLevelString(_arg1);
var _local4:Dictionary = FinanceData.instance.costTable;
var _local5:int = _local4[_local2][_local3];
var _local6:Object = _arg1.getUpgrades();
if (_local6.hasFrequencyBonus){
_local5 = (_local5 + _local4[_local2][TowerController.FREQUENCY_BONUS]);
};
if (_local6.hasRangeBonus){
_local5 = (_local5 + _local4[_local2][TowerController.RANGE_BONUS]);
};
var _local7:int = Math.ceil((_local5 * FinanceData.instance.resaleTable[_local2]));
return (_local7);
}
}
}//package game.finance
Section 308
//FinanceData (game.finance.FinanceData)
package game.finance {
import flash.events.*;
import flash.utils.*;
public class FinanceData extends EventDispatcher {
private var m_resaleTable:Dictionary;
private var m_costTable:Dictionary;
private static var m_playerSpendings:int = 0;
private static var m_instance:FinanceData = new (FinanceData);
;
private static var m_playerFunds:int = 0;
private static var m_playerEarnings:int = 0;
public function FinanceData(){
if (m_instance){
throw (new Error("Error: FinanceData is a Singleton, and can only be accessed through FinanceData.instance"));
};
m_instance = this;
m_costTable = new Dictionary();
m_resaleTable = new Dictionary();
}
public function emptyTable():void{
m_costTable = new Dictionary();
m_resaleTable = new Dictionary();
}
public function get costTable():Dictionary{
return (m_costTable);
}
public function get playerEarnings():int{
return (m_playerEarnings);
}
public function get playerFunds():int{
return (m_playerFunds);
}
public function get playerSpendings():int{
return (m_playerSpendings);
}
public function get resaleTable():Dictionary{
return (m_resaleTable);
}
public function set playerFunds(_arg1:int):void{
if (_arg1 >= 0){
m_playerFunds = _arg1;
};
}
public function set playerEarnings(_arg1:int):void{
if (_arg1 >= 0){
m_playerEarnings = _arg1;
};
}
public function set playerSpendings(_arg1:int):void{
if (_arg1 >= 0){
m_playerSpendings = _arg1;
};
}
public static function get instance():FinanceData{
return (m_instance);
}
}
}//package game.finance
Section 309
//BasePanel (game.hud.BasePanel)
package game.hud {
import flash.display.*;
import game.interfaces.*;
import org.casalib.display.*;
import gs.*;
public class BasePanel extends CasaSprite implements IHUDPanel {
protected var m_transitionOut:Boolean;// = false
protected var m_transitionIn:Boolean;// = false
protected var m_container:MovieClip;
public function doRender():void{
}
override public function destroy():void{
super.destroy();
}
public function transitionOut():void{
TweenMax.to(this, 0.1, {alpha:0, onComplete:destroy});
}
public function transitionIn():void{
this.alpha = 0;
TweenMax.to(this, 0.1, {alpha:1});
}
public function doPhysics():void{
}
}
}//package game.hud
Section 310
//BossPopupController (game.hud.BossPopupController)
package game.hud {
import game.events.*;
import flash.utils.*;
import game.enemies.*;
import assets.hud.*;
import gs.*;
public class BossPopupController extends BasePanel {
private var m_xml:XML;
private var m_drdoomHitObjective:Boolean;// = false
private var m_modokHitObjective:Boolean;// = false
private var m_molemanHitObjective:Boolean;// = false
public function BossPopupController(_arg1:XML){
m_xml = _arg1;
m_container = new BossPopupPanel();
addChild(m_container);
m_container.alpha = 0;
m_container.visible = false;
GameBroadcaster.addEventListener(WaveEvent.WAVE_LAUNCHED, waveLaunchedHandler, false, 0, true);
GameBroadcaster.addEventListener(WaveEvent.WAVE_DEFEATED, waveDefeatedHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_OBJECTIVE, onEnemyObjective, false, 0, true);
}
private function waveDefeatedHandler(_arg1:WaveEvent):void{
if (_arg1.wave.waveID == 9){
if (!m_molemanHitObjective){
showPopup("moleman", m_xml.moleman.success, m_xml.moleman.success.@displayTime);
};
} else {
if (_arg1.wave.waveID == 19){
if (!m_modokHitObjective){
showPopup("modok", m_xml.modok.success, m_xml.modok.success.@displayTime);
};
} else {
if (_arg1.wave.waveID == 29){
if (!m_drdoomHitObjective){
};
};
};
};
}
private function onEnemyObjective(_arg1:EnemyEvent):void{
var _local2:String = EnemyController.getTypeOfEnemy(_arg1.enemyObject);
if (_local2 == EnemyController.DRDOOM){
m_drdoomHitObjective = true;
} else {
if (_local2 == EnemyController.MODOK){
m_modokHitObjective = true;
showPopup("modok", m_xml.modok.fail, m_xml.modok.fail.@displayTime);
} else {
if (_local2 == EnemyController.MOLEMAN){
m_molemanHitObjective = true;
showPopup("moleman", m_xml.moleman.fail, m_xml.moleman.fail.@displayTime);
};
};
};
}
private function hidePopup():void{
TweenMax.to(m_container, 0.5, {autoAlpha:0});
}
private function showPopup(_arg1:String, _arg2:String, _arg3:int):void{
trace(((("BossPopupController launching from: " + _arg1) + ", message: ") + _arg2));
m_container.avatar.gotoAndStop(_arg1);
m_container.txt.text = _arg2;
m_container.visible = true;
TweenMax.to(m_container, 0.5, {alpha:1});
setTimeout(hidePopup, _arg3);
}
override public function destroy():void{
GameBroadcaster.removeEventListener(WaveEvent.WAVE_LAUNCHED, waveLaunchedHandler);
GameBroadcaster.removeEventListener(WaveEvent.WAVE_DEFEATED, waveDefeatedHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_OBJECTIVE, onEnemyObjective);
TweenMax.killTweensOf(m_container);
super.destroy();
}
private function waveLaunchedHandler(_arg1:WaveEvent):void{
if (_arg1.wave.waveID == 9){
showPopup("moleman", m_xml.moleman.launch, m_xml.moleman.launch.@displayTime);
} else {
if (_arg1.wave.waveID == 19){
showPopup("modok", m_xml.modok.launch, m_xml.modok.launch.@displayTime);
} else {
if (_arg1.wave.waveID == 29){
showPopup("drdoom", m_xml.drdoom.launch, m_xml.drdoom.launch.@displayTime);
};
};
};
}
}
}//package game.hud
Section 311
//BuyPanel (game.hud.BuyPanel)
package game.hud {
import flash.events.*;
import game.events.*;
import flash.utils.*;
import game.finance.*;
import game.towers.*;
import assets.hud.*;
public class BuyPanel extends BasePanel {
private var m_cyclopsButton:TowerSelectionButton;
private var m_blasterSufficientFunds:Boolean;// = true
private var m_msmarvelButton:TowerSelectionButton;
private var m_rocketSufficientFunds:Boolean;// = true
private var m_ironmanButton:TowerSelectionButton;
private var m_spidermanButton:TowerSelectionButton;
private var m_laserSufficientFunds:Boolean;// = true
private var m_slowdownSufficientFunds:Boolean;// = true
private var m_statsPanel:BuyStatsPanel;
private var m_lightningSufficientFunds:Boolean;// = true
private var m_thorButton:TowerSelectionButton;
public function BuyPanel(){
m_container = new BuyPanel();
addChild(m_container);
m_statsPanel = new BuyStatsPanel();
addChild(m_statsPanel);
m_statsPanel.updateStats(TowerController.BLASTER);
GameBroadcaster.addEventListener(FinanceEvent.UPDATE_FINANCE, onFinanceChange, false, 0, true);
GameBroadcaster.addEventListener(ScoreEvent.UPDATE_SCORE, onScoreUpdate, false, 0, true);
m_msmarvelButton = new TowerSelectionButton(m_container.msmarvelDisabled, m_container.msmarvelEnabled, m_container.msmarvelOver);
m_spidermanButton = new TowerSelectionButton(m_container.spidermanDisabled, m_container.spidermanEnabled, m_container.spidermanOver);
m_ironmanButton = new TowerSelectionButton(m_container.ironmanDisabled, m_container.ironmanEnabled, m_container.ironmanOver);
m_thorButton = new TowerSelectionButton(m_container.thorDisabled, m_container.thorEnabled, m_container.thorOver);
m_cyclopsButton = new TowerSelectionButton(m_container.cyclopsDisabled, m_container.cyclopsEnabled, m_container.cyclopsOver);
addTowerButtonListeners(m_msmarvelButton);
addTowerButtonListeners(m_spidermanButton);
addTowerButtonListeners(m_ironmanButton);
addTowerButtonListeners(m_thorButton);
addTowerButtonListeners(m_cyclopsButton);
evaluatePlayerFunds(FinanceData.instance.playerFunds);
}
private function onRollOverHandler(_arg1:Event):void{
var _local2:String;
switch (_arg1.target){
case m_msmarvelButton:
_local2 = TowerController.BLASTER;
break;
case m_spidermanButton:
_local2 = TowerController.SLOWDOWN;
break;
case m_ironmanButton:
_local2 = TowerController.ROCKET;
break;
case m_cyclopsButton:
_local2 = TowerController.LASER;
break;
case m_thorButton:
_local2 = TowerController.LIGHTNING;
break;
};
m_statsPanel.updateStats(_local2);
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.PREVIEW_TOWER_ROLL_OVER, _local2));
}
private function removeTowerButtonListeners(_arg1:TowerSelectionButton):void{
_arg1.removeEventListener(TowerSelectionButton.ROLL_OVER, onRollOverHandler);
_arg1.removeEventListener(TowerSelectionButton.ROLL_OUT, onRollOutHandler);
_arg1.removeEventListener(TowerSelectionButton.MOUSE_DOWN, onMouseDownHandler);
}
private function onFinanceChange(_arg1:FinanceEvent):void{
evaluatePlayerFunds(_arg1.playerFunds);
}
private function onMouseDownHandler(_arg1:Event):void{
var _local2:String;
switch (_arg1.target){
case m_msmarvelButton:
_local2 = TowerController.BLASTER;
break;
case m_spidermanButton:
_local2 = TowerController.SLOWDOWN;
break;
case m_ironmanButton:
_local2 = TowerController.ROCKET;
break;
case m_cyclopsButton:
_local2 = TowerController.LASER;
break;
case m_thorButton:
_local2 = TowerController.LIGHTNING;
break;
};
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.PREVIEW_TOWER_MOUSE_DOWN, _local2));
}
private function onScoreUpdate(_arg1:ScoreEvent):void{
}
private function addTowerButtonListeners(_arg1:TowerSelectionButton):void{
_arg1.addEventListener(TowerSelectionButton.ROLL_OVER, onRollOverHandler, false, 0, true);
_arg1.addEventListener(TowerSelectionButton.ROLL_OUT, onRollOutHandler, false, 0, true);
_arg1.addEventListener(TowerSelectionButton.MOUSE_DOWN, onMouseDownHandler, false, 0, true);
}
private function evaluatePlayerFunds(_arg1:int):void{
var _local3:int;
var _local2:Dictionary = FinanceData.instance.costTable;
_local3 = _local2[TowerController.BLASTER][TowerController.LEVEL_1];
if ((((_arg1 < _local3)) && (m_blasterSufficientFunds))){
m_msmarvelButton.disableButton();
m_blasterSufficientFunds = false;
} else {
if ((((_arg1 >= _local3)) && (!(m_blasterSufficientFunds)))){
m_msmarvelButton.enableButton();
m_blasterSufficientFunds = true;
};
};
_local3 = _local2[TowerController.SLOWDOWN][TowerController.LEVEL_1];
if ((((_arg1 < _local3)) && (m_slowdownSufficientFunds))){
m_spidermanButton.disableButton();
m_slowdownSufficientFunds = false;
} else {
if ((((_arg1 >= _local3)) && (!(m_slowdownSufficientFunds)))){
m_spidermanButton.enableButton();
m_slowdownSufficientFunds = true;
};
};
_local3 = _local2[TowerController.ROCKET][TowerController.LEVEL_1];
if ((((_arg1 < _local3)) && (m_rocketSufficientFunds))){
m_ironmanButton.disableButton();
m_rocketSufficientFunds = false;
} else {
if ((((_arg1 >= _local3)) && (!(m_rocketSufficientFunds)))){
m_ironmanButton.enableButton();
m_rocketSufficientFunds = true;
};
};
_local3 = _local2[TowerController.LASER][TowerController.LEVEL_1];
if ((((_arg1 < _local3)) && (m_laserSufficientFunds))){
m_cyclopsButton.disableButton();
m_laserSufficientFunds = false;
} else {
if ((((_arg1 >= _local3)) && (!(m_laserSufficientFunds)))){
m_cyclopsButton.enableButton();
m_laserSufficientFunds = true;
};
};
_local3 = _local2[TowerController.LIGHTNING][TowerController.LEVEL_1];
if ((((_arg1 < _local3)) && (m_lightningSufficientFunds))){
m_thorButton.disableButton();
m_lightningSufficientFunds = false;
} else {
if ((((_arg1 >= _local3)) && (!(m_lightningSufficientFunds)))){
m_thorButton.enableButton();
m_lightningSufficientFunds = true;
};
};
}
override public function destroy():void{
GameBroadcaster.removeEventListener(FinanceEvent.UPDATE_FINANCE, onFinanceChange);
GameBroadcaster.removeEventListener(ScoreEvent.UPDATE_SCORE, onScoreUpdate);
removeTowerButtonListeners(m_msmarvelButton);
removeTowerButtonListeners(m_spidermanButton);
removeTowerButtonListeners(m_ironmanButton);
removeTowerButtonListeners(m_thorButton);
removeTowerButtonListeners(m_cyclopsButton);
m_msmarvelButton.destroy();
m_spidermanButton.destroy();
m_ironmanButton.destroy();
m_thorButton.destroy();
m_cyclopsButton.destroy();
m_statsPanel.destroy();
super.destroy();
}
private function onRollOutHandler(_arg1:Event):void{
var _local2:String;
switch (_arg1.target){
case m_msmarvelButton:
_local2 = TowerController.BLASTER;
break;
case m_spidermanButton:
_local2 = TowerController.SLOWDOWN;
break;
case m_ironmanButton:
_local2 = TowerController.ROCKET;
break;
case m_cyclopsButton:
_local2 = TowerController.LASER;
break;
case m_thorButton:
_local2 = TowerController.LIGHTNING;
break;
};
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.PREVIEW_TOWER_ROLL_OUT, _local2));
}
}
}//package game.hud
Section 312
//BuyStatsPanel (game.hud.BuyStatsPanel)
package game.hud {
import game.finance.*;
import game.towers.*;
import assets.hud.*;
public class BuyStatsPanel extends BasePanel {
private var m_towerType:String;
private var m_stats:StatBar;
public function BuyStatsPanel(){
m_container = new BuyStatsPanel();
addChild(m_container);
m_stats = new StatBar(m_container.statBar);
}
public function updateStats(_arg1:String):void{
var _local2:int;
m_towerType = _arg1;
switch (m_towerType){
case TowerController.BLASTER:
_local2 = FinanceData.instance.costTable[TowerController.BLASTER][TowerController.LEVEL_1];
m_container.label.gotoAndStop("msmarvel");
break;
case TowerController.SLOWDOWN:
_local2 = FinanceData.instance.costTable[TowerController.SLOWDOWN][TowerController.LEVEL_1];
m_container.label.gotoAndStop("spiderman");
break;
case TowerController.ROCKET:
_local2 = FinanceData.instance.costTable[TowerController.ROCKET][TowerController.LEVEL_1];
m_container.label.gotoAndStop("ironman");
break;
case TowerController.LASER:
_local2 = FinanceData.instance.costTable[TowerController.LASER][TowerController.LEVEL_1];
m_container.label.gotoAndStop("cyclops");
break;
case TowerController.LIGHTNING:
_local2 = FinanceData.instance.costTable[TowerController.LIGHTNING][TowerController.LEVEL_1];
m_container.label.gotoAndStop("thor");
break;
};
m_container.cost_txt.text = ("$" + _local2);
m_stats.initialiseWithType(m_towerType, TowerController.LEVEL_1);
}
override public function destroy():void{
super.destroy();
}
}
}//package game.hud
Section 313
//ConfirmExitPanel (game.hud.ConfirmExitPanel)
package game.hud {
import flash.events.*;
import com.markfennell.sound.*;
import game.events.*;
import ui.*;
import assets.hud.*;
import gs.*;
public class ConfirmExitPanel extends BasePanel {
private var m_noButton:SingleGraphicGlowButton;
private var m_yesButton:SingleGraphicGlowButton;
public function ConfirmExitPanel(){
m_container = new ConfirmExitScreen();
addChild(m_container);
m_yesButton = new SingleGraphicGlowButton(m_container.yesButton, m_container.yesGlow);
m_noButton = new SingleGraphicGlowButton(m_container.noButton, m_container.noGlow);
m_yesButton.addEventListener(SingleGraphicGlowButton.CLICKED, yesClickHandler, false, 0, true);
m_noButton.addEventListener(SingleGraphicGlowButton.CLICKED, noClickHandler, false, 0, true);
}
override public function transitionIn():void{
m_container.alpha = 0;
TweenMax.to(m_container, 0.25, {alpha:1});
}
private function noClickHandler(_arg1:Event):void{
TweenMax.to(m_container, 0.25, {alpha:0, onComplete:noDelayComplete});
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep2", 0.5, 1));
}
private function yesClickHandler(_arg1:Event):void{
TweenMax.to(m_container, 0.25, {alpha:0, onComplete:yesDelayComplete});
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep2", 0.5, 1));
}
private function yesDelayComplete():void{
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.QUIT_GAME));
}
private function noDelayComplete():void{
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.CANCEL_EXIT_ATTEMPT));
}
override public function destroy():void{
m_yesButton.removeEventListener(SingleGraphicGlowButton.CLICKED, yesClickHandler);
m_noButton.removeEventListener(SingleGraphicGlowButton.CLICKED, noClickHandler);
m_yesButton.destroy();
m_noButton.destroy();
super.destroy();
}
}
}//package game.hud
Section 314
//GameBottomPanel (game.hud.GameBottomPanel)
package game.hud {
import flash.events.*;
import console.*;
import game.events.*;
import hud.*;
import ui.*;
import assets.hud.*;
public class GameBottomPanel extends BaseMarvelHudComponent {
private var m_timeTillNextWaveMax:int;
private var m_isAnimating:Boolean;// = false
private var m_timeTillNextWaveCounter:int;
private var m_waveCountdownActive:Boolean;// = false
private var m_canSendNextWave:Boolean;// = false
private var m_nextWaveIsLocked:Boolean;// = false
private var m_waveButton:SingleGraphicGlowButton;
private var m_goalPercentage:Number;
private var m_currentPercentage:Number;
private var m_timeTillNextWaveMin:int;
private var m_nextWavePermanentLock:Boolean;// = false
public function GameBottomPanel(){
m_container = new GameBottomPanel();
addChild(m_container);
GameBroadcaster.addEventListener(WaveEvent.WAVE_LAUNCHED, onWaveLaunch, false, 0, true);
GameBroadcaster.addEventListener(WaveEvent.LOCK_NEXT_WAVE, onNextWaveLock, false, 0, true);
GameBroadcaster.addEventListener(WaveEvent.UNLOCK_NEXT_WAVE, onNextWaveUnlock, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.LIFE_LOST, onLivesChange, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.PAUSE_GAMEPLAY, pauseGameplayHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.RESUME_GAMEPLAY, resumeGameplayHandler, false, 0, true);
m_waveButton = new SingleGraphicGlowButton(m_container.sendNextWave, m_container.nextWaveGlow);
m_waveButton.addEventListener(SingleGraphicGlowButton.CLICKED, m_waveButtonHandler, false, 0, true);
m_waveButton.disableButton();
m_goalPercentage = 1;
m_currentPercentage = 1;
m_isAnimating = false;
m_container.livesProgress.aliveMask.scaleX = m_currentPercentage;
m_container.livesProgress.deadMask.scaleX = (1 - m_currentPercentage);
}
private function updateWaveProgress():void{
m_timeTillNextWaveCounter++;
if (((((((!(m_nextWavePermanentLock)) && (!(m_canSendNextWave)))) && ((m_timeTillNextWaveCounter >= m_timeTillNextWaveMin)))) && (!(m_nextWaveIsLocked)))){
m_canSendNextWave = true;
m_waveButton.enableButton();
};
}
override public function doRender():void{
super.doRender();
if (m_waveCountdownActive){
updateWaveRender();
};
if (m_isAnimating){
updateLivesRender();
};
}
private function updateLivesProgress():void{
m_currentPercentage = (m_currentPercentage - 0.02);
if (m_currentPercentage < m_goalPercentage){
m_currentPercentage = m_goalPercentage;
m_isAnimating = false;
} else {
if (m_goalPercentage == 0){
m_currentPercentage = 0;
};
};
}
private function onNextWaveLock(_arg1:WaveEvent):void{
m_nextWaveIsLocked = true;
m_waveButton.disableEvents();
}
private function resumeGameplayHandler(_arg1:GameEvent):void{
if (!m_nextWavePermanentLock){
m_waveButton.enableEvents();
};
}
private function onWaveLaunch(_arg1:WaveEvent):void{
var _local2:int = (_arg1.currentWaveID + 1);
m_container.wave_txt.text = ((_local2 + "/") + _arg1.totalWaves);
m_waveCountdownActive = true;
m_timeTillNextWaveCounter = 0;
m_timeTillNextWaveMin = _arg1.timeTillNextWaveMin;
m_timeTillNextWaveMax = _arg1.timeTillNextWaveMax;
m_canSendNextWave = false;
m_waveButton.disableButton();
if ((_arg1.currentWaveID + 1) == _arg1.totalWaves){
m_nextWavePermanentLock = true;
m_waveButton.disableEvents();
trace("GameBottomPanel > Next wave events disabled, final round");
};
trace(((("wave min time: " + m_timeTillNextWaveMin) + " wave max time: ") + m_timeTillNextWaveMax));
}
override public function destroy():void{
GameBroadcaster.removeEventListener(WaveEvent.WAVE_LAUNCHED, onWaveLaunch);
GameBroadcaster.removeEventListener(WaveEvent.LOCK_NEXT_WAVE, onNextWaveLock);
GameBroadcaster.removeEventListener(WaveEvent.UNLOCK_NEXT_WAVE, onNextWaveUnlock);
GameBroadcaster.removeEventListener(GameEvent.LIFE_LOST, onLivesChange);
GameBroadcaster.removeEventListener(GameEvent.PAUSE_GAMEPLAY, pauseGameplayHandler);
GameBroadcaster.removeEventListener(GameEvent.RESUME_GAMEPLAY, resumeGameplayHandler);
m_waveButton.removeEventListener(SingleGraphicGlowButton.CLICKED, m_waveButtonHandler);
m_waveButton.destroy();
trace("GameBottomPanel destroy");
super.destroy();
}
private function m_waveButtonHandler(_arg1:Event):void{
if (!Console.paused){
trace(((("GameBottomPanel nextWaveButton click, timer: " + m_timeTillNextWaveCounter) + " min: ") + m_timeTillNextWaveMin));
GameBroadcaster.dispatchEvent(new WaveEvent(WaveEvent.REQUEST_NEXT_WAVE));
};
}
private function pauseGameplayHandler(_arg1:GameEvent):void{
m_waveButton.disableEvents();
}
private function onNextWaveUnlock(_arg1:WaveEvent):void{
m_nextWaveIsLocked = false;
if (!m_nextWavePermanentLock){
m_waveButton.enableEvents();
};
}
private function updateWaveRender():void{
var _local1:Number = (m_timeTillNextWaveCounter / m_timeTillNextWaveMin);
var _local2:Number = (m_timeTillNextWaveCounter / m_timeTillNextWaveMax);
_local1 = ((_local1)>1) ? 1 : _local1;
_local2 = ((_local2)>1) ? 1 : _local2;
m_container.waveProgress.minMask.scaleX = (int((_local1 * 100)) / 100);
m_container.waveProgress.maxMask.scaleX = (int((_local2 * 100)) / 100);
}
private function updateLivesRender():void{
m_container.livesProgress.aliveMask.scaleX = m_currentPercentage;
m_container.livesProgress.deadMask.scaleX = (1 - m_currentPercentage);
}
override public function doPhysics():void{
if (m_waveCountdownActive){
updateWaveProgress();
};
if (m_isAnimating){
updateLivesProgress();
};
}
private function onLivesChange(_arg1:GameEvent):void{
m_goalPercentage = (_arg1.currentLives / _arg1.totalLives);
m_isAnimating = true;
if (_arg1.currentLives == 0){
m_nextWavePermanentLock = true;
m_waveButton.disableButton();
};
}
}
}//package game.hud
Section 315
//GameDifficultyPanel (game.hud.GameDifficultyPanel)
package game.hud {
import flash.events.*;
import com.markfennell.sound.*;
import game.events.*;
import ui.*;
import assets.hud.*;
import gs.*;
public class GameDifficultyPanel extends BasePanel {
private var m_normalButton:SingleGraphicGlowButton;
private var m_difficulty:int;
private var m_epicButton:SingleGraphicGlowButton;
public function GameDifficultyPanel(){
m_container = new DifficultySelectScreen();
addChild(m_container);
m_epicButton = new SingleGraphicGlowButton(m_container.epicButton, m_container.epicGlow);
m_normalButton = new SingleGraphicGlowButton(m_container.normalButton, m_container.normalGlow);
m_epicButton.addEventListener(SingleGraphicGlowButton.CLICKED, clickHandler, false, 0, true);
m_normalButton.addEventListener(SingleGraphicGlowButton.CLICKED, clickHandler, false, 0, true);
}
override public function destroy():void{
m_epicButton.removeEventListener(SingleGraphicGlowButton.CLICKED, clickHandler);
m_normalButton.removeEventListener(SingleGraphicGlowButton.CLICKED, clickHandler);
m_epicButton.destroy();
m_normalButton.destroy();
super.destroy();
}
private function clickHandler(_arg1:Event):void{
if (_arg1.target == m_epicButton){
m_difficulty = 1;
} else {
if (_arg1.target == m_normalButton){
m_difficulty = 0;
};
};
TweenMax.to(m_container, 0.25, {alpha:0, onComplete:delayComplete});
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep2", 0.5, 1));
}
private function delayComplete():void{
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.DIFFICULTY_SELECTED, "", null, "", false, false, m_difficulty));
}
override public function transitionIn():void{
m_container.alpha = 0;
TweenMax.to(m_container, 0.25, {alpha:1});
}
}
}//package game.hud
Section 316
//GameHelpPanel (game.hud.GameHelpPanel)
package game.hud {
import flash.events.*;
import com.markfennell.sound.*;
import game.events.*;
import ui.*;
import pages.helpbrowser.*;
import assets.hud.*;
import gs.*;
public class GameHelpPanel extends BasePanel {
private var m_browser:HelpBrowser;
private var m_closeButton:SingleGraphicGlowButton;
public function GameHelpPanel(){
m_container = new GameHelpScreen();
addChild(m_container);
m_closeButton = new SingleGraphicGlowButton(m_container.closeButton, m_container.closeGlow);
m_closeButton.addEventListener(SingleGraphicGlowButton.CLICKED, returnClickHandler, false, 0, true);
m_browser = new HelpBrowser();
m_browser.x = 70;
m_browser.y = 100;
addChild(m_browser);
}
override public function transitionIn():void{
m_container.alpha = 0;
TweenMax.to(m_container, 0.25, {alpha:1});
}
private function returnClickHandler(_arg1:Event):void{
TweenMax.to(m_container, 0.25, {alpha:0, onComplete:fadeDownComplete});
TweenMax.to(m_browser, 0.25, {alpha:0});
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep2", 0.5, 1));
}
override public function destroy():void{
m_closeButton.removeEventListener(SingleGraphicGlowButton.CLICKED, returnClickHandler);
m_closeButton.destroy();
m_browser.destroy();
super.destroy();
}
private function fadeDownComplete():void{
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.CLOSE_HELP));
}
}
}//package game.hud
Section 317
//GameLostPanel (game.hud.GameLostPanel)
package game.hud {
import game.events.*;
import flash.utils.*;
import assets.hud.*;
import gs.*;
public class GameLostPanel extends BasePanel {
private var delayInterval:int;
public function GameLostPanel(){
m_container = new GameDefeatScreen();
addChild(m_container);
delayInterval = setTimeout(delayComplete, 10000);
}
override public function destroy():void{
super.destroy();
}
override public function transitionIn():void{
m_container.alpha = 0;
TweenMax.to(m_container, 0.25, {alpha:1});
}
private function fadeDownComplete():void{
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GO_TO_GAME_OVER));
}
private function delayComplete():void{
TweenMax.to(m_container, 0.25, {onComplete:fadeDownComplete});
}
}
}//package game.hud
Section 318
//GamePausedPanel (game.hud.GamePausedPanel)
package game.hud {
import flash.events.*;
import console.*;
import com.markfennell.sound.*;
import ui.*;
import assets.hud.*;
import gs.*;
public class GamePausedPanel extends BasePanel {
private var m_pausedButton:SingleGraphicGlowButton;
public function GamePausedPanel(){
m_container = new GamePauseScreen();
addChild(m_container);
m_pausedButton = new SingleGraphicGlowButton(m_container.pauseButton, m_container.pauseGlow);
m_container.addEventListener(MouseEvent.CLICK, mapClickHandler, false, 0, true);
}
private function pausedClickHandler(_arg1:Event):void{
TweenMax.to(m_container, 0.25, {alpha:0, onComplete:fadeDownComplete});
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep2", 0.5, 1));
}
override public function destroy():void{
m_container.removeEventListener(MouseEvent.CLICK, mapClickHandler);
m_pausedButton.destroy();
super.destroy();
}
private function fadeDownComplete():void{
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.PAUSE));
}
override public function transitionIn():void{
m_container.alpha = 0;
TweenMax.to(m_container, 0.25, {alpha:1});
}
private function mapClickHandler(_arg1:Event):void{
TweenMax.to(m_container, 0.25, {alpha:0, onComplete:fadeDownComplete});
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep2", 0.5, 1));
}
}
}//package game.hud
Section 319
//GameTopPanel (game.hud.GameTopPanel)
package game.hud {
import flash.events.*;
import game.events.*;
import hud.*;
import game.finance.*;
import org.casalib.util.*;
import assets.hud.*;
public class GameTopPanel extends BaseMarvelHudComponent {
public function GameTopPanel(){
m_container = new GameTopPanel();
addChild(m_container);
m_container.cash_txt.text = ("$" + NumberUtil.format(FinanceData.instance.playerFunds, 1, ",", ""));
m_container.score_txt.text = "0";
m_container.helpBtn.buttonMode = true;
m_container.helpBtn.addEventListener(MouseEvent.CLICK, onHelpClick, false, 0, true);
GameBroadcaster.addEventListener(FinanceEvent.UPDATE_FINANCE, onFinanceChange, false, 0, true);
GameBroadcaster.addEventListener(ScoreEvent.UPDATE_SCORE, onScoreChange, false, 0, true);
}
private function onScoreChange(_arg1:ScoreEvent):void{
m_container.score_txt.text = NumberUtil.format(_arg1.newScore, 1, ",", "");
}
override public function doRender():void{
updateWaveRender();
}
override public function doPhysics():void{
updateWaveProgress();
}
private function onFinanceChange(_arg1:FinanceEvent):void{
m_container.cash_txt.text = ("$" + NumberUtil.format(_arg1.playerFunds, 1, ",", ""));
}
private function updateWaveProgress():void{
}
override public function destroy():void{
GameBroadcaster.removeEventListener(FinanceEvent.UPDATE_FINANCE, onFinanceChange);
GameBroadcaster.removeEventListener(ScoreEvent.UPDATE_SCORE, onScoreChange);
m_container.helpBtn.removeEventListener(MouseEvent.CLICK, onHelpClick);
super.destroy();
}
private function onHelpClick(_arg1:MouseEvent):void{
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.SHOW_HELP));
}
private function updateWaveRender():void{
}
}
}//package game.hud
Section 320
//GameWonPanel (game.hud.GameWonPanel)
package game.hud {
import flash.events.*;
import console.*;
import game.events.*;
import flash.utils.*;
import net.*;
import ui.*;
import fl.motion.easing.*;
import assets.hud.*;
import gs.*;
public class GameWonPanel extends BasePanel {
private var delayInterval:int;
private var m_videoPlayerWrapper:VideoPlayerWrapper;
private var m_skipBtn:DoubleGraphicButton;
public function GameWonPanel(){
m_container = new GameVictoryScreen();
addChild(m_container);
delayInterval = setTimeout(delayComplete, 10000);
m_container.victoryImage.alpha = 0;
TweenMax.to(m_container.victoryImage, 0.5, {alpha:1, delay:1});
m_container.skipBtn.visible = false;
m_container.skipGlowBtn.visible = false;
}
override public function destroy():void{
trace("GameWonPanel destroy");
m_videoPlayerWrapper.removeEventListener(VideoPlayerWrapper.VIDEO_FINISH, videoFinishHandler);
m_videoPlayerWrapper.removeEventListener(VideoPlayerWrapper.VIDEO_START, videoStartHandler);
m_videoPlayerWrapper.destroy();
m_skipBtn.removeEventListener(DoubleGraphicButton.CLICKED, skipClickHandler);
m_skipBtn.destroy();
super.destroy();
}
private function videoStartHandler(_arg1:Event):void{
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "gameWonVideo", "start");
TweenMax.to(m_container.victoryImage, 0.4, {scaleX:2, scaleY:2, x:(-(m_container.victoryImage.width) / 2), y:(-(m_container.victoryImage.height) / 2), alpha:0, onComplete:hideVictoryImage, ease:Quadratic.easeIn});
}
private function closePanel():void{
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GO_TO_GAME_OVER));
}
private function hideVictoryImage():void{
m_container.victoryImage.visible = false;
}
private function videoFinishHandler(_arg1:Event):void{
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "gameWonVideo", "videoComplete");
closePanel();
}
private function skipClickHandler(_arg1:Event):void{
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "gameWonVideo", "videoSkipped");
closePanel();
}
private function delayComplete():void{
m_videoPlayerWrapper = new VideoPlayerWrapper(Constants.GAME_WON_VIDEO_URL, m_container.videoWindow);
m_videoPlayerWrapper.addEventListener(VideoPlayerWrapper.VIDEO_FINISH, videoFinishHandler, false, 0, true);
m_videoPlayerWrapper.addEventListener(VideoPlayerWrapper.VIDEO_START, videoStartHandler, false, 0, true);
m_skipBtn = new DoubleGraphicButton(m_container.skipBtn, m_container.skipGlowBtn);
m_skipBtn.addEventListener(DoubleGraphicButton.CLICKED, skipClickHandler, false, 0, true);
m_container.skipBtn.visible = true;
m_container.skipGlowBtn.visible = true;
SoundController.getInstance().pause_music(true);
}
}
}//package game.hud
Section 321
//HUDBuildDisplay (game.hud.HUDBuildDisplay)
package game.hud {
import flash.display.*;
import org.casalib.display.*;
import game.*;
import flash.filters.*;
import assets.hud.*;
public class HUDBuildDisplay extends CasaSprite {
private var m_redStrokeColour:uint;// = 15869720
private var m_array:Array;
private var m_greenFilter:GlowFilter;
private var m_redFilter:GlowFilter;
private var m_cellClip:MovieClip;
private var m_x:int;
private var m_y:int;
private var m_range:int;
private var m_container:CasaSprite;
private var m_greenStrokeColour:uint;// = 1299982
private var m_rangeShape:CasaSprite;
private function drawRangeCircle(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean):void{
var _local5:uint;
var _local6:GlowFilter;
if (m_rangeShape != null){
m_rangeShape.destroy();
};
m_rangeShape = new CasaSprite();
m_container.addChild(m_rangeShape);
m_rangeShape.x = (_arg1 + Map.tileHalfW);
m_rangeShape.y = (_arg2 + Map.tileHalfH);
if (_arg4){
_local5 = m_greenStrokeColour;
_local6 = m_greenFilter;
} else {
_local5 = m_redStrokeColour;
_local6 = m_redFilter;
};
m_rangeShape.graphics.beginFill(0, 0.1);
m_rangeShape.graphics.lineStyle(2, _local5, 1);
m_rangeShape.graphics.drawCircle(0, 0, _arg3);
m_rangeShape.filters = [_local6];
}
public function hideDisplay():void{
m_container.visible = false;
}
public function newCell(_arg1:int, _arg2:int):void{
m_x = _arg1;
m_y = _arg2;
m_container.visible = true;
if (m_cellClip != null){
m_container.removeChild(m_cellClip);
m_cellClip = null;
};
if (m_rangeShape != null){
m_rangeShape.destroy();
m_rangeShape = null;
};
if (m_array[m_y][m_x] == true){
m_cellClip = new HoverAllowed();
} else {
m_cellClip = new HoverDenied();
};
m_cellClip.x = (m_x * Map.tileW);
m_cellClip.y = (m_y * Map.tileH);
m_container.addChild(m_cellClip);
drawRangeCircle((m_x * Map.tileW), (m_y * Map.tileH), m_range, m_array[m_y][m_x]);
}
public function newDrag(_arg1:Array, _arg2:int):void{
if (m_container != null){
m_container.destroy();
};
m_array = _arg1;
m_range = _arg2;
m_greenFilter = new GlowFilter(1572369, 1, 10, 10, 1, 1);
m_redFilter = new GlowFilter(15869720, 1, 10, 10, 1, 1);
m_container = new CasaSprite();
addChild(m_container);
}
override public function destroy():void{
if (m_container != null){
m_container.destroy();
};
super.destroy();
}
public function endDrag():void{
if (m_cellClip != null){
m_container.removeChild(m_cellClip);
m_cellClip = null;
};
if (m_rangeShape != null){
m_rangeShape.destroy();
m_rangeShape = null;
};
m_container.destroy();
}
}
}//package game.hud
Section 322
//HUDController (game.hud.HUDController)
package game.hud {
import flash.events.*;
import flash.display.*;
import game.events.*;
import game.interfaces.*;
import hud.*;
import org.casalib.display.*;
import game.towers.*;
import org.casalib.util.*;
import game.*;
import assets.hud.*;
public class HUDController extends Sprite {
private var m_draggingTowerType:String;
private var m_buildDisplay:HUDBuildDisplay;
private var m_placementOffsetX:int;
private var m_placementOffsetY:int;
private var m_draggingY:int;
private var m_draggingX:int;
private var m_draggingTower:MovieClip;
private var m_mapRef:CasaSprite;
private var m_confirmExitPanel:BasePanel;
private var m_bossPanel:BasePanel;
private var m_state:String;
private var m_towersPanel:BasePanel;
private var m_popupPanel:BasePanel;
private var m_marvelBottomPanel:BaseMarvelHudComponent;
private var m_draggingCellX:int;
private var m_draggingCellY:int;
private var m_popupState:String;
private var m_selectedTower:ITower;
private var m_marvelTopPanel:BaseMarvelHudComponent;
private var m_gameOverPanel:BasePanel;
private var m_bgPanel:MovieClip;
private var m_helpPanel:BasePanel;
private var m_availableMapCells:Array;
private static const POPUP_PAUSE:String = "popupPause";
private static const TOWER_DRAG:String = "towerDrag";
private static const POPUP_NONE:String = "popupNone";
private static const POPUP_DIFFICULTYSELECT:String = "popupDifficultySelect";
private static const POPUP_GAMELOST:String = "popupGameLost";
private static const TOWER_SELECTED:String = "towerSelected";
private static const INACTIVE:String = "inactive";
private static const POPUP_GAMEWON:String = "popupGameWon";
private static const POPUP_MAINMENU:String = "popupMainMenu";
private static const POPUP_HELP:String = "popupHelp";
public function HUDController(_arg1:CasaSprite, _arg2:int, _arg3:int, _arg4:XML){
m_mapRef = _arg1;
m_placementOffsetX = _arg2;
m_placementOffsetY = _arg3;
m_bgPanel = new HudBG();
addChild(m_bgPanel);
m_bgPanel.x = 571;
m_bgPanel.y = -342;
m_buildDisplay = new HUDBuildDisplay();
m_buildDisplay.alpha = 1;
addChild(m_buildDisplay);
m_buildDisplay.x = m_placementOffsetX;
m_buildDisplay.y = m_placementOffsetY;
m_bossPanel = new BossPopupController(_arg4);
addChild(m_bossPanel);
m_bossPanel.x = -12;
m_bossPanel.y = -52;
m_marvelTopPanel = new GameTopPanel();
m_marvelBottomPanel = new GameBottomPanel();
m_state = INACTIVE;
changePanel(m_state);
m_popupState = POPUP_NONE;
changePopupState(m_popupState);
m_mapRef.addEventListener(MouseEvent.CLICK, onMapClick, false, 0, true);
m_mapRef.addEventListener(MouseEvent.MOUSE_MOVE, onMapMove, false, 0, true);
m_mapRef.addEventListener(MouseEvent.MOUSE_OVER, onMapOver, false, 0, true);
m_mapRef.addEventListener(MouseEvent.MOUSE_OUT, onMapOut, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.BUILD_TOWER_COMPLETE, onAddTower, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.SELL_TOWER, onSellTower, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.TOWER_UPGRADE_COMPLETE, onUpgradeTowerComplete, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.PREVIEW_TOWER_ROLL_OVER, onTowerPreviewRollover, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.PREVIEW_TOWER_ROLL_OUT, onTowerPreviewRollout, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.PREVIEW_TOWER_MOUSE_DOWN, onTowerPreviewMouseDown, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.SELECTED_TOWER_SELL, onTowerSellHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.APPLY_UPGRADE, onApplyUpgradeHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.CLOSE_SELECTION_PANEL, onTowerSelectionCloseHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.CHOOSE_DIFFICULTY, chooseDifficultyHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.GAME_WON_DISPLAY, gameWonHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.GAME_LOST_DISPLAY, gameLostHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.PAUSE_GAME, pauseGameHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.RESUME_GAME, resumeGameHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.EXIT_ATTEMPT, exitAttemptHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.DIFFICULTY_SELECTED, difficultySelectedHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.QUIT_GAME, quitGameHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.CANCEL_EXIT_ATTEMPT, cancelExitHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.SHOW_HELP, showHelpHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.CLOSE_HELP, closeHelpHandler, false, 0, true);
trace("HUD online");
}
public function doRender():void{
m_marvelBottomPanel.doRender();
if (m_state == TOWER_DRAG){
manageDraggingTowerRender();
};
}
private function onTowerPreviewMouseDown(_arg1:HUDEvent):void{
trace(("HUD tower preview mouse down " + _arg1.towerType));
if (m_selectedTower != null){
exitSelectionMode();
};
changePanel(TOWER_DRAG);
enterTowerDragMode(_arg1.towerType);
}
private function resumeGameHandler(_arg1:HUDEvent):void{
trace("HUDController resumeGameHandler - not used anymore!");
}
private function onMapOut(_arg1:MouseEvent):void{
}
private function changePopupState(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false):void{
trace(("HUD changePopupState to: " + _arg1));
if (m_popupState != POPUP_NONE){
if (_arg2){
m_popupPanel.transitionOut();
};
m_popupPanel = null;
};
switch (_arg1){
case POPUP_NONE:
break;
case POPUP_PAUSE:
m_popupPanel = new GamePausedPanel();
break;
case POPUP_HELP:
m_popupPanel = new GameHelpPanel();
break;
case POPUP_MAINMENU:
m_popupPanel = new ConfirmExitPanel();
break;
case POPUP_GAMEWON:
m_popupPanel = new GameWonPanel();
break;
case POPUP_GAMELOST:
m_popupPanel = new GameLostPanel();
break;
case POPUP_DIFFICULTYSELECT:
m_popupPanel = new GameDifficultyPanel();
break;
};
if (_arg1 != POPUP_NONE){
addChild(m_popupPanel);
m_popupPanel.x = -15;
m_popupPanel.y = -342;
};
if (_arg3){
m_popupPanel.transitionIn();
};
m_popupState = _arg1;
}
public function get marvelBottomPanel():BaseMarvelHudComponent{
return (m_marvelBottomPanel);
}
private function showHelpHandler(_arg1:HUDEvent):void{
if (m_popupState == POPUP_NONE){
changePopupState(POPUP_HELP, false, true);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.PAUSE_GAMEPLAY));
};
}
private function pauseGameHandler(_arg1:HUDEvent):void{
if (m_popupState == POPUP_NONE){
changePopupState(POPUP_PAUSE, false, true);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.PAUSE_GAMEPLAY));
} else {
if (m_popupState == POPUP_PAUSE){
changePopupState(POPUP_NONE, true, false);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.RESUME_GAMEPLAY));
};
};
}
private function onMapClick(_arg1:MouseEvent):void{
var _local2:int = Math.floor((_arg1.localX / Map.tileW));
var _local3:int = Math.floor((_arg1.localY / Map.tileH));
trace((((((((("MAP CLICK! " + _arg1.localX) + ",") + _arg1.localY) + " (") + _local2) + ",") + _local3) + ")"));
if (m_state == TOWER_SELECTED){
exitSelectionMode();
changePanel(INACTIVE);
};
}
private function onUpgradeTowerComplete(_arg1:TowerEvent):void{
trace(("HUDController heard about an upgraded tower! " + _arg1.towerObject));
if (m_state == TOWER_SELECTED){
changePanel(TOWER_SELECTED, "", m_selectedTower);
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.SELECTED_TOWER_DRAW_SELECTION, "", m_selectedTower));
};
}
private function manageDraggingTowerRender():void{
m_draggingTower.x = m_draggingX;
m_draggingTower.y = m_draggingY;
}
private function enterTowerDragMode(_arg1:String):void{
var _local7:int;
var _local8:Object;
var _local9:int;
var _local10:int;
m_draggingTowerType = _arg1;
m_availableMapCells = [];
var _local2:Array = Map.getMap();
var _local3:int;
while (_local3 < _local2.length) {
m_availableMapCells[_local3] = [];
_local7 = 0;
while (_local7 < _local2[_local3].length) {
if (_local2[_local3][_local7] == Map.BUILDABLE){
m_availableMapCells[_local3][_local7] = true;
} else {
m_availableMapCells[_local3][_local7] = false;
};
_local7++;
};
_local3++;
};
var _local4:Array = TowerData.instance.towerArray;
var _local5:int;
while (_local5 < _local4.length) {
_local8 = ITower(_local4[_local5]).getPosition();
_local9 = (_local8.x / Map.tileW);
_local10 = (_local8.y / Map.tileH);
m_availableMapCells[_local10][_local9] = false;
_local5++;
};
m_buildDisplay.newDrag(m_availableMapCells, TowerData.instance.rangeTable[_arg1][TowerController.LEVEL_1]);
m_draggingCellX = 0;
m_draggingCellY = 0;
switch (_arg1){
case TowerController.BLASTER:
m_draggingTower = new BlasterTowerIcon();
break;
case TowerController.SLOWDOWN:
m_draggingTower = new SlowdownTowerIcon();
break;
case TowerController.ROCKET:
m_draggingTower = new RocketTowerIcon();
break;
case TowerController.LASER:
m_draggingTower = new LaserTowerIcon();
break;
case TowerController.LIGHTNING:
m_draggingTower = new LightningTowerIcon();
break;
};
addChild(m_draggingTower);
m_draggingTower.x = this.mouseX;
m_draggingTower.y = this.mouseY;
var _local6:Stage = StageReference.getStage();
_local6.addEventListener(MouseEvent.MOUSE_UP, exitTowerDragMode, false, 0, true);
}
private function closeHelpHandler(_arg1:HUDEvent):void{
if (m_popupState == POPUP_HELP){
changePopupState(POPUP_NONE, true, false);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.RESUME_GAMEPLAY));
};
}
private function gameLostHandler(_arg1:GameEvent):void{
changePopupState(POPUP_GAMELOST, false, true);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.PAUSE_GAMEPLAY));
}
private function onTowerSelectionCloseHandler(_arg1:HUDEvent):void{
if (m_state == TOWER_SELECTED){
exitSelectionMode();
changePanel(INACTIVE);
};
}
private function exitTowerDragMode(_arg1:MouseEvent):void{
var _local2:Stage = StageReference.getStage();
_local2.removeEventListener(MouseEvent.MOUSE_UP, exitTowerDragMode);
var _local3:int = (this.mouseX - m_placementOffsetX);
var _local4:int = (this.mouseY - m_placementOffsetY);
var _local5:int = Math.floor((_local3 / Map.tileW));
var _local6:int = Math.floor((_local4 / Map.tileH));
var _local7:Boolean;
if ((((((((_local5 > 0)) && ((_local5 < 25)))) && ((_local6 > 0)))) && ((_local6 < 16)))){
if (m_availableMapCells[_local6][_local5] == true){
_local7 = true;
};
};
removeChild(m_draggingTower);
m_draggingTower = null;
m_availableMapCells = null;
m_buildDisplay.endDrag();
changePanel(INACTIVE);
if (_local7){
trace(((((("build tower at " + _local5) + ",") + _local6) + " of type ") + m_draggingTowerType));
GameBroadcaster.dispatchEvent(new TowerEvent(TowerEvent.BUILD_TOWER, null, 1, false, false, m_draggingTowerType, _local5, _local6));
};
}
private function changePanel(_arg1:String, _arg2:String="", _arg3:ITower=null):void{
trace(((((("HUD changePanel to: " + _arg1) + " towerType: ") + _arg2) + " tower: ") + _arg3));
if ((((m_towersPanel is BuyPanel)) && ((((_arg1 == INACTIVE)) || ((_arg1 == TOWER_DRAG)))))){
} else {
if (m_towersPanel != null){
m_towersPanel.transitionOut();
m_towersPanel = null;
};
switch (_arg1){
case INACTIVE:
case TOWER_DRAG:
m_towersPanel = new BuyPanel();
addChild(m_towersPanel);
m_towersPanel.x = 571;
m_towersPanel.y = -342;
m_towersPanel.transitionIn();
break;
case TOWER_SELECTED:
m_towersPanel = new SelectedPanel(_arg3);
addChild(m_towersPanel);
m_towersPanel.x = 571;
m_towersPanel.y = -342;
m_towersPanel.transitionIn();
break;
};
};
m_state = _arg1;
}
public function doPhysics():void{
m_marvelBottomPanel.doPhysics();
if (m_state == TOWER_DRAG){
manageDraggingTowerPhysics();
};
}
private function onApplyUpgradeHandler(_arg1:HUDEvent):void{
var _local2:int;
if (_arg1.towerLevel != null){
_local2 = (m_selectedTower.getLevel() + 1);
trace(((("upgrade is a level boost to: " + _arg1.towerLevel) + ", calc'd that as level: ") + _local2));
GameBroadcaster.dispatchEvent(new TowerEvent(TowerEvent.UPGRADE_TOWER, m_selectedTower, _local2, false, false));
} else {
if (_arg1.frequencyBonus != false){
trace("upgrade is a frequency boost");
GameBroadcaster.dispatchEvent(new TowerEvent(TowerEvent.UPGRADE_TOWER, m_selectedTower, 0, true, false));
} else {
if (_arg1.rangeBonus != false){
trace("upgrade is a range boost");
GameBroadcaster.dispatchEvent(new TowerEvent(TowerEvent.UPGRADE_TOWER, m_selectedTower, 0, false, true));
} else {
trace("wtf bonus is that!");
};
};
};
}
private function onTowerClick(_arg1:MouseEvent):void{
var _local2:Object = ITower(_arg1.target).getPosition();
var _local3:int = (_local2.x / Map.tileW);
var _local4:int = (_local2.y / Map.tileH);
trace(((((("TOWER CLICK!! " + _arg1.target) + " ") + _local3) + ",") + _local4));
if (m_state == TOWER_SELECTED){
exitSelectionMode();
};
enterSelectionMode(ITower(_arg1.target));
changePanel(TOWER_SELECTED, "", m_selectedTower);
}
private function quitGameHandler(_arg1:HUDEvent):void{
trace("HUDController exit confirmed");
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GO_TO_MAIN_MENU));
}
private function chooseDifficultyHandler(_arg1:GameEvent):void{
changePopupState(POPUP_DIFFICULTYSELECT, false, false);
}
public function get marvelTopPanel():BaseMarvelHudComponent{
return (m_marvelTopPanel);
}
private function exitSelectionMode():void{
trace(("UNSELECTING " + m_selectedTower));
m_selectedTower = null;
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.SELECTED_TOWER_CLEAR_SELECTION));
}
private function onTowerPreviewRollout(_arg1:HUDEvent):void{
trace(("HUD tower preview rollout " + _arg1.towerType));
if (m_state == TOWER_DRAG){
} else {
if (m_selectedTower != null){
} else {
if (m_state != TOWER_DRAG){
};
};
};
}
private function onTowerSellHandler(_arg1:HUDEvent):void{
var _local2:ITower = m_selectedTower;
if (m_state == TOWER_SELECTED){
exitSelectionMode();
};
changePanel(INACTIVE);
GameBroadcaster.dispatchEvent(new TowerEvent(TowerEvent.SELL_TOWER, _local2));
}
private function enterSelectionMode(_arg1:ITower):void{
trace(("SELECTING " + _arg1));
m_selectedTower = _arg1;
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.SELECTED_TOWER_DRAW_SELECTION, "", m_selectedTower));
}
private function onSellTower(_arg1:TowerEvent):void{
trace(("HUDController heard about a sell tower! " + _arg1.towerObject));
BaseTower(_arg1.towerObject).removeEventListener(MouseEvent.CLICK, onTowerClick);
}
private function gameWonHandler(_arg1:GameEvent):void{
changePopupState(POPUP_GAMEWON, false, true);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.PAUSE_GAMEPLAY));
}
private function onAddTower(_arg1:TowerEvent):void{
trace(("HUDController heard about an build tower complete! " + _arg1.towerObject));
BaseTower(_arg1.towerObject).addEventListener(MouseEvent.CLICK, onTowerClick, false, 0, true);
}
private function onMapMove(_arg1:MouseEvent):void{
}
private function onTowerPreviewRollover(_arg1:HUDEvent):void{
trace(("HUD tower preview rollover " + _arg1.towerType));
if (m_state != TOWER_DRAG){
};
}
private function cancelExitHandler(_arg1:HUDEvent):void{
if (m_popupState == POPUP_MAINMENU){
changePopupState(POPUP_NONE, true, false);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.RESUME_GAMEPLAY));
};
}
private function difficultySelectedHandler(_arg1:HUDEvent):void{
changePopupState(POPUP_NONE, true, false);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.START_GAME, 0, 0, _arg1.difficulty));
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.SHOW_GAME_HUD_FRAME));
}
private function onMapOver(_arg1:MouseEvent):void{
}
private function manageDraggingTowerPhysics():void{
var _local1:int = (this.mouseX - m_placementOffsetX);
var _local2:int = (this.mouseY - m_placementOffsetY);
var _local3:int = Math.floor((_local1 / Map.tileW));
var _local4:int = Math.floor((_local2 / Map.tileH));
if ((((((((_local3 > 0)) && ((_local3 < 22)))) && ((_local4 > 0)))) && ((_local4 < 16)))){
m_draggingX = (((_local3 * Map.tileW) + Map.tileHalfW) + m_placementOffsetX);
m_draggingY = (((_local4 * Map.tileH) + Map.tileHalfH) + m_placementOffsetY);
if (((!((_local3 == m_draggingCellX))) || (!((_local4 == m_draggingCellY))))){
m_draggingCellX = _local3;
m_draggingCellY = _local4;
m_buildDisplay.newCell(m_draggingCellX, m_draggingCellY);
};
} else {
m_draggingX = this.mouseX;
m_draggingY = this.mouseY;
m_buildDisplay.hideDisplay();
};
}
public function destroy():void{
m_mapRef.removeEventListener(MouseEvent.CLICK, onMapClick);
m_mapRef.removeEventListener(MouseEvent.MOUSE_MOVE, onMapMove);
m_mapRef.removeEventListener(MouseEvent.MOUSE_OVER, onMapOver);
m_mapRef.removeEventListener(MouseEvent.MOUSE_OUT, onMapOut);
GameBroadcaster.removeEventListener(TowerEvent.BUILD_TOWER_COMPLETE, onAddTower);
GameBroadcaster.removeEventListener(TowerEvent.SELL_TOWER, onSellTower);
GameBroadcaster.removeEventListener(TowerEvent.TOWER_UPGRADE_COMPLETE, onUpgradeTowerComplete);
GameBroadcaster.removeEventListener(HUDEvent.PREVIEW_TOWER_ROLL_OVER, onTowerPreviewRollover);
GameBroadcaster.removeEventListener(HUDEvent.PREVIEW_TOWER_ROLL_OUT, onTowerPreviewRollout);
GameBroadcaster.removeEventListener(HUDEvent.PREVIEW_TOWER_MOUSE_DOWN, onTowerPreviewMouseDown);
GameBroadcaster.removeEventListener(HUDEvent.SELECTED_TOWER_SELL, onTowerSellHandler);
GameBroadcaster.removeEventListener(HUDEvent.APPLY_UPGRADE, onApplyUpgradeHandler);
GameBroadcaster.removeEventListener(HUDEvent.CLOSE_SELECTION_PANEL, onTowerSelectionCloseHandler);
GameBroadcaster.removeEventListener(GameEvent.CHOOSE_DIFFICULTY, chooseDifficultyHandler);
GameBroadcaster.removeEventListener(GameEvent.GAME_WON_DISPLAY, gameWonHandler);
GameBroadcaster.removeEventListener(GameEvent.GAME_LOST_DISPLAY, gameLostHandler);
GameBroadcaster.removeEventListener(HUDEvent.PAUSE_GAME, pauseGameHandler);
GameBroadcaster.removeEventListener(HUDEvent.RESUME_GAME, resumeGameHandler);
GameBroadcaster.removeEventListener(HUDEvent.EXIT_ATTEMPT, exitAttemptHandler);
GameBroadcaster.removeEventListener(HUDEvent.DIFFICULTY_SELECTED, difficultySelectedHandler);
GameBroadcaster.removeEventListener(HUDEvent.CANCEL_EXIT_ATTEMPT, cancelExitHandler);
GameBroadcaster.removeEventListener(HUDEvent.QUIT_GAME, quitGameHandler);
GameBroadcaster.removeEventListener(HUDEvent.SHOW_HELP, showHelpHandler);
GameBroadcaster.removeEventListener(HUDEvent.CLOSE_HELP, closeHelpHandler);
var _local1:Stage = StageReference.getStage();
_local1.removeEventListener(MouseEvent.MOUSE_UP, exitTowerDragMode);
if (m_state == TOWER_DRAG){
removeChild(m_draggingTower);
m_draggingTower = null;
m_availableMapCells = null;
m_buildDisplay.endDrag();
};
if (m_towersPanel != null){
m_towersPanel.destroy();
};
m_buildDisplay.destroy();
m_bossPanel.destroy();
m_marvelBottomPanel = null;
m_marvelTopPanel = null;
if (m_popupPanel != null){
m_popupPanel.destroy();
};
var _local2:Array = TowerData.instance.towerArray;
var _local3:int;
while (_local3 < _local2.length) {
_local2[_local3].removeEventListener(MouseEvent.CLICK, onTowerClick);
_local3++;
};
}
private function exitAttemptHandler(_arg1:HUDEvent):void{
if (m_popupState == POPUP_NONE){
changePopupState(POPUP_MAINMENU, false, true);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.PAUSE_GAMEPLAY));
};
}
}
}//package game.hud
Section 323
//HUDRangeDisplay (game.hud.HUDRangeDisplay)
package game.hud {
import game.events.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.*;
import gs.easing.*;
import gs.*;
public class HUDRangeDisplay extends CasaSprite {
private var m_shape:CasaSprite;
public function HUDRangeDisplay(){
GameBroadcaster.addEventListener(HUDEvent.SELECTED_TOWER_DRAW_SELECTION, drawSelectionHandler, false, 0, true);
GameBroadcaster.addEventListener(HUDEvent.SELECTED_TOWER_CLEAR_SELECTION, clearSelectionHandler, false, 0, true);
this.mouseEnabled = false;
this.mouseChildren = false;
}
private function clearRangeCircle():void{
m_shape.destroy();
}
override public function destroy():void{
GameBroadcaster.removeEventListener(HUDEvent.SELECTED_TOWER_DRAW_SELECTION, drawSelectionHandler);
GameBroadcaster.removeEventListener(HUDEvent.SELECTED_TOWER_CLEAR_SELECTION, clearSelectionHandler);
TweenMax.killTweensOf(this);
TweenMax.killTweensOf(m_shape);
if (m_shape != null){
m_shape.destroy();
};
super.destroy();
}
private function drawSelectionHandler(_arg1:HUDEvent):void{
var _local2:ITower = _arg1.towerObject;
var _local3:Object = _local2.getPosition();
var _local4:int = _local3.x;
var _local5:int = _local3.y;
var _local6:int = _local2.getRange();
drawRangeCircle(_local4, _local5, _local6);
}
private function drawRangeCircle(_arg1:int, _arg2:int, _arg3:int):void{
if (m_shape != null){
m_shape.destroy();
};
m_shape = new CasaSprite();
addChild(m_shape);
m_shape.x = (_arg1 + Map.tileHalfW);
m_shape.y = (_arg2 + Map.tileHalfH);
m_shape.graphics.beginFill(0, 0.1);
m_shape.graphics.lineStyle(2, 1299982, 1);
m_shape.graphics.drawCircle(0, 0, _arg3);
m_shape.scaleX = 0.1;
m_shape.scaleY = 0.1;
TweenMax.to(m_shape, 0.25, {glowFilter:{color:1572369, alpha:1, blurX:10, blurY:10, strength:1, quality:1}, scaleX:1, scaleY:1, ease:Back.easeOut});
}
private function clearSelectionHandler(_arg1:HUDEvent):void{
clearRangeCircle();
}
}
}//package game.hud
Section 324
//SelectedPanel (game.hud.SelectedPanel)
package game.hud {
import flash.events.*;
import game.events.*;
import game.interfaces.*;
import game.finance.*;
import game.towers.*;
import ui.*;
import assets.hud.*;
public class SelectedPanel extends BasePanel {
private var m_towerLevel:String;
private var m_towerType:String;
private var m_stats:StatBar;
private var m_closeBtn:DoubleGraphicButton;
private var m_sellBtn:DoubleGraphicButton;
private var m_towerUpgradeLevelValid:Boolean;
private var m_towerUpgradeLevel:String;
private var m_levelCostText:String;
private var m_upgradeBtn:DoubleGraphicButton;
private var m_tower:ITower;
public function SelectedPanel(_arg1:ITower){
var _local2:String;
super();
m_container = new SelectedPanel();
addChild(m_container);
m_tower = _arg1;
m_towerType = TowerController.getTowerTypeString(m_tower);
m_towerLevel = TowerController.getTowerLevelString(m_tower);
switch (m_towerType){
case TowerController.BLASTER:
_local2 = "msmarvel";
break;
case TowerController.SLOWDOWN:
_local2 = "spiderman";
break;
case TowerController.ROCKET:
_local2 = "ironman";
break;
case TowerController.LASER:
_local2 = "cyclops";
break;
case TowerController.LIGHTNING:
_local2 = "thor";
break;
};
m_container.label.gotoAndStop(_local2);
m_container.icon.gotoAndStop(_local2);
m_container.badge.gotoAndStop(m_tower.getLevel());
m_stats = new StatBar(m_container.statBar);
m_stats.initialiseWithTower(m_tower);
m_closeBtn = new DoubleGraphicButton(m_container.closeOff, m_container.closeOver);
m_closeBtn.addEventListener(DoubleGraphicButton.CLICKED, onCloseClick, false, 0, true);
var _local3:int = FinanceController.evaluateTowerForSale(m_tower);
m_container.sellOver.txt.text = ("$" + _local3);
m_container.sellOver.mouseChildren = false;
m_container.sellOff.txt.text = "SELL";
m_container.sellOff.mouseChildren = false;
m_sellBtn = new DoubleGraphicButton(m_container.sellOff, m_container.sellOver);
m_sellBtn.addEventListener(DoubleGraphicButton.CLICKED, onSellClick, false, 0, true);
var _local4 = "LEVEL UP (MAX 3)";
var _local5:int = (m_tower.getLevel() + 1);
if (_local5 > 3){
m_towerUpgradeLevelValid = false;
_local5 = 3;
} else {
m_towerUpgradeLevelValid = true;
};
m_towerUpgradeLevel = TowerController.getTowerLevelString(null, _local5);
m_levelCostText = ("$" + FinanceData.instance.costTable[m_towerType][m_towerUpgradeLevel]);
m_container.upgradeOver.txt.text = m_levelCostText;
m_container.upgradeOver.mouseChildren = false;
m_container.upgradeOff.txt.text = "UPGRADE";
m_container.upgradeOff.mouseChildren = false;
m_upgradeBtn = new DoubleGraphicButton(m_container.upgradeOff, m_container.upgradeOver);
m_upgradeBtn.addEventListener(DoubleGraphicButton.CLICKED, onUpgradeClick, false, 0, true);
m_upgradeBtn.addEventListener(DoubleGraphicButton.OVER, onUpgradeOver, false, 0, true);
m_upgradeBtn.addEventListener(DoubleGraphicButton.OFF, onUpgradeOff, false, 0, true);
refreshButtonStates();
GameBroadcaster.addEventListener(FinanceEvent.UPDATE_FINANCE, financeUpdateHandler, false, 0, true);
}
private function onSellClick(_arg1:Event):void{
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.SELECTED_TOWER_SELL));
}
private function financeUpdateHandler(_arg1:FinanceEvent):void{
refreshButtonStates();
}
private function onUpgradeClick(_arg1:Event):void{
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.APPLY_UPGRADE, null, null, m_towerUpgradeLevel, false, false));
}
private function refreshButtonStates():void{
var _local1:Object = m_tower.getUpgrades();
var _local2:int = FinanceData.instance.playerFunds;
if (!m_towerUpgradeLevelValid){
m_container.upgradeOver.mouseEnabled = false;
m_container.upgradeOff.mouseEnabled = false;
m_container.upgradeOff.alpha = 0;
} else {
if (_local2 >= FinanceData.instance.costTable[m_towerType][m_towerUpgradeLevel]){
m_container.upgradeOver.mouseEnabled = true;
m_container.upgradeOff.mouseEnabled = true;
m_container.upgradeOff.alpha = 1;
m_upgradeBtn.enableCursorAndEvents();
} else {
m_container.upgradeOff.alpha = 0.5;
m_upgradeBtn.disableCursorAndEvents();
};
};
}
override public function destroy():void{
m_upgradeBtn.removeEventListener(DoubleGraphicButton.CLICKED, onUpgradeClick);
m_upgradeBtn.removeEventListener(DoubleGraphicButton.OVER, onUpgradeOver);
m_upgradeBtn.removeEventListener(DoubleGraphicButton.OFF, onUpgradeOff);
m_sellBtn.removeEventListener(DoubleGraphicButton.CLICKED, onSellClick);
m_closeBtn.removeEventListener(DoubleGraphicButton.CLICKED, onCloseClick);
GameBroadcaster.removeEventListener(FinanceEvent.UPDATE_FINANCE, financeUpdateHandler);
m_upgradeBtn.destroy();
m_sellBtn.destroy();
m_closeBtn.destroy();
super.destroy();
}
private function onCloseClick(_arg1:Event):void{
GameBroadcaster.dispatchEvent(new HUDEvent(HUDEvent.CLOSE_SELECTION_PANEL));
}
private function onUpgradeOver(_arg1:Event):void{
m_stats.showUpgrades(m_towerUpgradeLevel, false, false);
}
private function onUpgradeOff(_arg1:Event):void{
m_stats.clearUpgradeStats();
}
}
}//package game.hud
Section 325
//StatBar (game.hud.StatBar)
package game.hud {
import flash.events.*;
import flash.display.*;
import game.interfaces.*;
import game.towers.*;
import game.weapons.*;
import gs.easing.*;
import gs.*;
public class StatBar extends EventDispatcher {
private var m_hasRangeBonus:Boolean;
private var m_hasFrequencyBonus:Boolean;
private var m_towerLevel:String;
private var m_container:MovieClip;
private var m_towerType:String;
private static const DAMAGE_MAX:int = 40;
private static const RANGE_BEST:int = 150;
private static const RANGE_WORST:int = 0;
private static const DAMAGE_WORST:int = 0;
public function StatBar(_arg1:MovieClip){
m_container = _arg1;
}
public function destroy():void{
}
private function displayBaseStats(_arg1:String, _arg2:String, _arg3:Boolean, _arg4:Boolean):void{
var _local5:Number = calculateFrequency(_arg1, _arg2, _arg3);
var _local6:Number = calculateRange(_arg1, _arg2, _arg4);
var _local7:Number = calculateDamage(_arg1, _arg2);
m_container.frequency.currentBar.scaleX = _local5;
m_container.frequency.upgradeBar.scaleX = 0;
m_container.range.currentBar.scaleX = _local6;
m_container.range.upgradeBar.scaleX = 0;
m_container.damage.currentBar.scaleX = _local7;
m_container.damage.upgradeBar.scaleX = 0;
}
private function displayUpgradeStats(_arg1:String, _arg2:String, _arg3:Boolean, _arg4:Boolean):void{
var _local5:Number = calculateFrequency(_arg1, _arg2, _arg3);
var _local6:Number = calculateRange(_arg1, _arg2, _arg4);
var _local7:Number = calculateDamage(_arg1, _arg2);
m_container.frequency.upgradeBar.scaleX = _local5;
m_container.range.upgradeBar.scaleX = _local6;
m_container.damage.upgradeBar.scaleX = _local7;
}
private function calculateRange(_arg1:String, _arg2:String, _arg3:Boolean):Number{
var _local4:Number = TowerData.instance.rangeTable[_arg1][_arg2];
if (_arg3){
_local4 = (_local4 * TowerData.instance.rangeTable[_arg1][TowerController.RANGE_BONUS]);
};
var _local5:Number = percentageBetween(RANGE_WORST, RANGE_BEST, _local4);
if (_local5 > 1){
_local5 = 1;
} else {
if (_local5 < 0){
_local5 = 0;
};
};
return (_local5);
}
public function initialiseWithTower(_arg1:ITower):void{
m_towerType = TowerController.getTowerTypeString(_arg1);
m_towerLevel = TowerController.getTowerLevelString(_arg1);
var _local2:Object = _arg1.getUpgrades();
m_hasFrequencyBonus = _local2.hasFrequencyBonus;
m_hasRangeBonus = _local2.hasRangeBonus;
displayBaseStats(m_towerType, m_towerLevel, m_hasFrequencyBonus, m_hasRangeBonus);
}
private function percentageBetween(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number;
var _local5:Number;
if (_arg2 >= _arg1){
_local4 = (_arg2 - _arg1);
_local5 = ((_arg3 - _arg1) / _local4);
} else {
_local4 = (_arg1 - _arg2);
_local5 = (1 - ((_arg3 - _arg2) / _local4));
};
return (_local5);
}
public function clearUpgradeStats():void{
m_container.frequency.upgradeBar.scaleX = 0;
m_container.range.upgradeBar.scaleX = 0;
m_container.damage.upgradeBar.scaleX = 0;
}
private function calculateDamage(_arg1:String, _arg2:String):Number{
var _local3:Number;
if (_arg1 == TowerController.SLOWDOWN){
_local3 = ((1 - WeaponData.instance.damageTable[_arg1][_arg2]) * DAMAGE_MAX);
} else {
_local3 = WeaponData.instance.damageTable[_arg1][_arg2];
};
var _local4:Number = percentageBetween(DAMAGE_WORST, DAMAGE_MAX, _local3);
if (_local4 > 1){
_local4 = 1;
} else {
if (_local4 < 0){
_local4 = 0;
};
};
return (_local4);
}
public function initialiseWithType(_arg1:String, _arg2:String):void{
m_towerType = _arg1;
m_towerLevel = _arg2;
m_hasFrequencyBonus = false;
m_hasRangeBonus = false;
displayBaseStats(m_towerType, m_towerLevel, m_hasFrequencyBonus, m_hasRangeBonus);
}
public function showUpgrades(_arg1:String, _arg2:Boolean, _arg3:Boolean):void{
displayUpgradeStats(m_towerType, _arg1, _arg2, _arg3);
}
private function calculateFrequency(_arg1:String, _arg2:String, _arg3:Boolean):Number{
var _local4:Number = TowerData.instance.frequencyTable[_arg1][_arg2];
if (_arg3){
_local4 = (_local4 * TowerData.instance.frequencyTable[_arg1][TowerController.FREQUENCY_BONUS]);
};
var _local5:Number = (0.1 + (2 / _local4));
if (_local5 > 1){
_local5 = 1;
} else {
if (_local5 < 0){
_local5 = 0;
};
};
return (_local5);
}
}
}//package game.hud
Section 326
//TowerSelectionButton (game.hud.TowerSelectionButton)
package game.hud {
import flash.events.*;
import flash.display.*;
import gs.*;
public class TowerSelectionButton extends EventDispatcher {
private var m_over:MovieClip;
private var m_disabled:MovieClip;
private var m_enabled:MovieClip;
private var m_disableClick:Boolean;// = false
public static var ROLL_OVER:String = "TowerSelectionRollover";
public static var MOUSE_DOWN:String = "TowerSelectionMouseDown";
public static var ROLL_OUT:String = "TowerSelectionRollout";
public function TowerSelectionButton(_arg1:MovieClip, _arg2:MovieClip, _arg3:MovieClip){
m_disabled = _arg1;
m_enabled = _arg2;
m_over = _arg3;
m_over.buttonMode = true;
m_over.alpha = 0;
m_over.addEventListener(MouseEvent.ROLL_OUT, handleRollOut, false, 0, true);
m_over.addEventListener(MouseEvent.ROLL_OVER, handleRollOver, false, 0, true);
m_over.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown, false, 0, true);
}
public function destroy():void{
m_over.removeEventListener(MouseEvent.ROLL_OUT, handleRollOut);
m_over.removeEventListener(MouseEvent.ROLL_OVER, handleRollOver);
m_over.removeEventListener(MouseEvent.CLICK, handleMouseDown);
}
private function handleRollOut(_arg1:MouseEvent=null):void{
if (!m_disableClick){
TweenMax.to(m_over, 0.25, {alpha:0});
};
dispatchEvent(new Event(ROLL_OUT));
}
public function enableButton():void{
m_disableClick = false;
m_over.buttonMode = true;
TweenMax.to(m_enabled, 0.25, {alpha:1});
}
private function handleRollOver(_arg1:MouseEvent=null):void{
if (!m_disableClick){
TweenMax.to(m_over, 0.25, {alpha:1});
};
dispatchEvent(new Event(ROLL_OVER));
}
public function disableButton():void{
m_disableClick = true;
m_over.buttonMode = false;
TweenMax.to(m_over, 0.25, {alpha:0});
TweenMax.to(m_enabled, 0.25, {alpha:0});
}
private function handleMouseDown(_arg1:MouseEvent=null):void{
if (!m_disableClick){
dispatchEvent(new Event(MOUSE_DOWN));
};
}
}
}//package game.hud
Section 327
//IAirEnemy (game.interfaces.IAirEnemy)
package game.interfaces {
public interface IAirEnemy {
}
}//package game.interfaces
Section 328
//IEnemy (game.interfaces.IEnemy)
package game.interfaces {
public interface IEnemy {
function getSpeedFactor():Number;
function doRender():void;
function getScore():int;
function isTargetable():Boolean;
function getMoney():int;
function doHurt(_arg1:int):void;
function doPhysics():void;
function doSlowdown(_arg1:Number, _arg2:Number):void;
function getPosition():Object;
}
}//package game.interfaces
Section 329
//IHUDPanel (game.interfaces.IHUDPanel)
package game.interfaces {
public interface IHUDPanel {
function doRender():void;
function destroy():void;
function transitionOut():void;
function transitionIn():void;
function doPhysics():void;
}
}//package game.interfaces
Section 330
//ILandEnemy (game.interfaces.ILandEnemy)
package game.interfaces {
public interface ILandEnemy {
}
}//package game.interfaces
Section 331
//ITower (game.interfaces.ITower)
package game.interfaces {
public interface ITower {
function doUpgrade(_arg1:int=0, _arg2:Boolean=false, _arg3:Boolean=false):void;
function getRange():int;
function doRender():void;
function destroy():void;
function doPhysics():void;
function getUpgrades():Object;
function getLevel():int;
function getPosition():Object;
}
}//package game.interfaces
Section 332
//IWeapon (game.interfaces.IWeapon)
package game.interfaces {
public interface IWeapon {
function doRender():void;
function destroy():void;
function doPhysics():void;
function getLevel():int;
function getPosition():Object;
}
}//package game.interfaces
Section 333
//FortressController (game.map.FortressController)
package game.map {
import flash.display.*;
import game.events.*;
import org.casalib.display.*;
import assets.level01.fortress.*;
import gs.*;
public class FortressController extends CasaSprite {
private var m_currentLives:int;
private var m_flash:MovieClip;
private var m_container:MovieClip;
private var m_level:int;
private var m_initialLives:int;
public function FortressController(){
GameBroadcaster.addEventListener(GameEvent.LIVES_SET, livesSetHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.LIFE_LOST, lifeLostHandler, false, 0, true);
m_flash = new DamageFlash();
addChild(m_flash);
m_flash.visible = false;
m_level = 2;
updateFortressGraphic();
}
private function updateFortressGraphic():void{
trace(("FortressController update graphic, now level: " + m_level));
if (m_container != null){
removeChild(m_container);
};
m_container = null;
if (m_level == 0){
m_container = new HealthLow();
} else {
if (m_level == 1){
m_container = new HealthMedium();
} else {
m_container = new HealthFull();
};
};
addChildAt(m_container, 0);
}
private function flashComplete():void{
m_flash.visible = false;
}
private function lifeLostHandler(_arg1:GameEvent):void{
var _local3:int;
trace("FortressController life lost");
m_currentLives = _arg1.currentLives;
var _local2:Number = (m_currentLives / m_initialLives);
if (_local2 < 0.33){
_local3 = 0;
} else {
if (_local2 < 0.66){
_local3 = 1;
} else {
_local3 = 2;
};
};
if (_local3 != m_level){
m_level = _local3;
updateFortressGraphic();
};
flashDamage();
}
private function livesSetHandler(_arg1:GameEvent):void{
m_initialLives = _arg1.totalLives;
m_currentLives = _arg1.currentLives;
}
override public function destroy():void{
GameBroadcaster.removeEventListener(GameEvent.LIVES_SET, livesSetHandler);
GameBroadcaster.removeEventListener(GameEvent.LIFE_LOST, lifeLostHandler);
TweenMax.killTweensOf(m_flash);
}
private function flashDamage():void{
m_flash.visible = true;
m_flash.alpha = 1;
TweenMax.to(m_flash, 0.2, {alpha:0, onComplete:flashComplete});
}
}
}//package game.map
Section 334
//ScoreController (game.score.ScoreController)
package game.score {
import game.events.*;
import game.finance.*;
import mochi.as3.*;
public class ScoreController {
private var m_score:int;
private var m_md1:MochiDigits;
private var m_md2:MochiDigits;
public function ScoreController(){
m_md1 = new MochiDigits(0);
m_md2 = new MochiDigits(0);
m_score = 0;
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler, false, 0, true);
GameBroadcaster.addEventListener(WaveEvent.WAVE_LAUNCHED, waveLaunchedHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.GAME_WON_WAIT, gameWonHandler, false, 0, true);
}
public function mdx():int{
return ((m_md1.value + m_md2.value));
}
private function enemyKilledHandler(_arg1:EnemyEvent):void{
m_md1.addValue(_arg1.enemyObject.getScore());
m_score = (m_score + _arg1.enemyObject.getScore());
GameBroadcaster.dispatchEvent(new ScoreEvent(ScoreEvent.UPDATE_SCORE, m_score));
}
private function gameWonHandler(_arg1:GameEvent):void{
var _local2:int = FinanceData.instance.playerEarnings;
var _local3:int = FinanceData.instance.playerSpendings;
var _local4:int = (_local2 - _local3);
var _local5 = 100;
var _local6:int = (_local4 * _local5);
trace(("SC game won bonus: " + _local6));
m_score = (m_score + _local6);
m_md2.addValue(_local6);
GameBroadcaster.dispatchEvent(new ScoreEvent(ScoreEvent.UPDATE_SCORE, m_score, _local6));
}
public function score():int{
return (m_score);
}
public function destroy():void{
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyKilledHandler);
GameBroadcaster.removeEventListener(WaveEvent.WAVE_LAUNCHED, waveLaunchedHandler);
GameBroadcaster.removeEventListener(GameEvent.GAME_WON_WAIT, gameWonHandler);
}
private function waveLaunchedHandler(_arg1:WaveEvent):void{
var _local2:int = _arg1.wave.scoreBonus;
var _local3:Number = (1 - (_arg1.previousWaveTime / _arg1.previousWaveMaxTime));
var _local4:int = int((_local3 * _local2));
trace(((("SC wave launch bonus: " + _local4) + ", full wave scoreBonus: ") + _arg1.wave.scoreBonus));
m_score = (m_score + _local4);
m_md2.addValue(_local4);
GameBroadcaster.dispatchEvent(new ScoreEvent(ScoreEvent.UPDATE_SCORE, m_score, _local4));
}
}
}//package game.score
Section 335
//BaseEnergyTower (game.towers.BaseEnergyTower)
package game.towers {
import game.interfaces.*;
import game.enemies.*;
public class BaseEnergyTower extends BaseTower {
protected const REATTACK_MODE:String = "reattackMode";
protected const AIMING_MODE:String = "aimingMode";
protected var m_targetTimeArray:Array;
protected var m_maxTargets:int;// = 1
protected var m_targetObjectArray:Array;
protected var m_maxTargetsLevel1:int;// = 1
protected var m_maxTargetsLevel2:int;// = 2
protected var m_maxTargetsLevel3:int;// = 3
protected function doAttackAttempt(_arg1:IEnemy):Boolean{
var _local2:Array = EnemyData.instance.enemyArray;
var _local3:Number = _local2.indexOf(_arg1);
if (_local3 < 0){
return (false);
};
var _local4:Object = _arg1.getPosition();
var _local5:Number = _local4.x;
var _local6:Number = _local4.y;
var _local7:Boolean = rangeCheck(m_x, m_y, _local5, _local6, m_range);
if (!_local7){
return (false);
};
doEnergyFire(_arg1);
return (true);
}
override public function doPhysics():void{
var _local2:Boolean;
var _local1:int;
while (_local1 < m_targetTimeArray.length) {
var _local3 = m_targetTimeArray;
var _local4 = _local1;
var _local5 = (_local3[_local4] - 1);
_local3[_local4] = _local5;
if (m_targetTimeArray[_local1] <= 0){
_local2 = doAttackAttempt(m_targetObjectArray[_local1]);
if (_local2){
m_targetTimeArray[_local1] = m_frequency;
} else {
m_targetTimeArray.splice(_local1, 1);
m_targetObjectArray.splice(_local1, 1);
_local1--;
};
};
_local1++;
};
if (m_targetObjectArray.length < m_maxTargets){
doSearchMode();
};
doEnergyRotation();
}
protected function doEnergyRotation():void{
var _local1:IEnemy;
var _local2:Object;
var _local3:Number;
var _local4:Number;
var _local5:Number;
if (m_targetObjectArray.length > 0){
_local1 = m_targetObjectArray[0];
_local2 = _local1.getPosition();
_local3 = _local2.x;
_local4 = _local2.y;
_local5 = ((getAngleDifference(_local3, _local4, m_rotation) * 180) / Math.PI);
if ((((_local5 > 0)) && ((_local5 > m_rotationSpeedCap)))){
_local5 = m_rotationSpeedCap;
} else {
if ((((_local5 < 0)) && ((_local5 < -(m_rotationSpeedCap))))){
_local5 = -(m_rotationSpeedCap);
};
};
m_rotation = (m_rotation + _local5);
};
}
override protected function recalculateStats():void{
super.recalculateStats();
if (m_level == 1){
m_maxTargets = m_maxTargetsLevel1;
} else {
if (m_level == 2){
m_maxTargets = m_maxTargetsLevel2;
} else {
if (m_level == 3){
m_maxTargets = m_maxTargetsLevel3;
};
};
};
}
override protected function doSearchMode():void{
var _local3:IEnemy;
var _local5:IEnemy;
var _local6:Boolean;
var _local7:Boolean;
var _local8:Boolean;
var _local9:Object;
var _local10:Number;
var _local11:Number;
var _local12:Boolean;
var _local1:Array = EnemyData.instance.enemyArray;
var _local2:Boolean;
var _local4:int;
while (_local4 < _local1.length) {
_local5 = IEnemy(_local1[_local4]);
_local6 = true;
if ((_local5 is ILandEnemy)){
if (!m_canTargetLand){
_local6 = false;
};
};
_local7 = true;
if ((_local5 is IAirEnemy)){
if (!m_canTargetAir){
_local7 = false;
};
};
_local8 = _local5.isTargetable();
if (((((_local6) && (_local7))) && (_local8))){
if (m_targetObjectArray.indexOf(_local5) < 0){
_local9 = _local5.getPosition();
_local10 = _local9.x;
_local11 = _local9.y;
_local12 = rangeCheck(m_x, m_y, _local10, _local11, m_range);
if (_local12){
_local2 = true;
_local3 = _local5;
break;
};
};
};
_local4++;
};
if (_local2){
m_targetObjectArray.push(_local3);
m_targetTimeArray.push(0);
};
}
protected function doEnergyFire(_arg1:IEnemy):void{
}
}
}//package game.towers
Section 336
//BaseTower (game.towers.BaseTower)
package game.towers {
import flash.display.*;
import game.events.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.enemies.*;
import game.*;
public class BaseTower extends CasaSprite implements ITower {
protected const m_AIMING:int = 1;
protected const m_ATTACKING:int = 2;
protected const m_SEARCHING:int = 0;
protected const m_SEARCH_AND_ATTACK:int = 3;
protected var m_rangeLevel3:int;
protected var m_gunfireEffectDuration:int;
protected var m_frequency:int;
protected var m_hasFrequencyBonus:Boolean;
protected var m_rotation:Number;
protected var m_canTargetAir:Boolean;
protected var m_x:Number;
protected var m_y:Number;
protected var m_target:IEnemy;
protected var m_container:MovieClip;
protected var m_level:int;
protected var m_canTargetLand:Boolean;
protected var m_rotationSpeedCap:Number;
protected var m_state:int;
protected var m_shadow:MovieClip;
protected var m_frequencyCountdown:int;
protected var m_hasRangeBonus:Boolean;
protected var m_frequencyLevel1:int;
protected var m_frequencyLevel2:int;
protected var m_frequencyLevel3:int;
protected var m_gunfireEffectCountdown:int;
protected var m_rangeBonusFactor:Number;
protected var m_range:int;
protected var m_rangeLevel1:int;
protected var m_rangeLevel2:int;
protected var m_frequencyBonusFactor:Number;
public function BaseTower(){
this.mouseChildren = false;
}
protected function calculateDistance(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
var _local5:Number = (((_arg3 - _arg1) * (_arg3 - _arg1)) + ((_arg4 - _arg2) * (_arg4 - _arg2)));
_local5 = Math.sqrt(_local5);
return (_local5);
}
protected function updateTowerGraphics():void{
}
public function getRange():int{
return (m_range);
}
public function doRender():void{
m_container.rotation = m_rotation;
m_shadow.rotation = m_rotation;
this.x = m_x;
this.y = m_y;
}
public function doUpgrade(_arg1:int=0, _arg2:Boolean=false, _arg3:Boolean=false):void{
trace(((((("BaseTower doing upgrade. level: " + _arg1) + " frequencyBonus: ") + _arg2) + " rangeBonus: ") + _arg3));
var _local4:Boolean;
if (((!((_arg1 == 0))) && (!((_arg1 == m_level))))){
m_level = _arg1;
_local4 = true;
};
if (_arg2){
m_hasFrequencyBonus = true;
};
if (_arg3){
m_hasRangeBonus = true;
};
recalculateStats();
if (_local4){
updateTowerGraphics();
};
GameBroadcaster.dispatchEvent(new TowerEvent(TowerEvent.TOWER_UPGRADE_COMPLETE, this));
}
override public function destroy():void{
super.destroy();
}
public function getPosition():Object{
var _local1:Object = {};
_local1.x = m_x;
_local1.y = m_y;
_local1.rotation = m_rotation;
return (_local1);
}
protected function drawRangeCircle():void{
this.graphics.clear();
this.graphics.beginFill(1144644, 0.2);
this.graphics.lineStyle(1, 10057489, 1);
this.graphics.drawCircle(Map.tileHalfW, Map.tileHalfH, m_range);
}
public function doPhysics():void{
m_frequencyCountdown--;
doFireEffect();
if (m_state == m_SEARCHING){
doSearchMode();
} else {
if (m_state == m_ATTACKING){
doAttackMode();
};
};
}
protected function getAngleDifference(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number = ((_arg3 * Math.PI) / 180);
var _local5:Number = (Math.PI * 2);
_local4 = (_local4 % _local5);
var _local6:Number = ((Math.PI / 2) + Math.atan2((_arg2 - m_y), (_arg1 - m_x)));
if (_local6 < 0){
_local6 = (_local6 + _local5);
};
var _local7:Number = (_local6 - _local4);
if (_local7 > Math.PI){
_local7 = (_local7 - _local5);
} else {
if (_local7 < -(Math.PI)){
_local7 = (_local7 + _local5);
};
};
return (_local7);
}
protected function rangeCheck(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Boolean{
if (!(((((((_arg3 > (_arg1 - m_range))) && ((_arg3 < (_arg1 + m_range))))) && ((_arg4 > (_arg2 - m_range))))) && ((_arg4 < (_arg2 + m_range))))){
return (false);
};
var _local6:Number = (((_arg3 - _arg1) * (_arg3 - _arg1)) + ((_arg4 - _arg2) * (_arg4 - _arg2)));
var _local7:Number = (_arg5 * _arg5);
if (_local6 > _local7){
return (false);
};
var _local8:Number = Math.sqrt(_local6);
return (true);
}
protected function doFireEffect():void{
}
protected function recalculateStats():void{
if (m_level == 1){
m_frequency = m_frequencyLevel1;
} else {
if (m_level == 2){
m_frequency = m_frequencyLevel2;
} else {
if (m_level == 3){
m_frequency = m_frequencyLevel3;
};
};
};
if (m_hasFrequencyBonus){
m_frequency = (m_frequency * m_frequencyBonusFactor);
};
if (m_level == 1){
m_range = m_rangeLevel1;
} else {
if (m_level == 2){
m_range = m_rangeLevel2;
} else {
if (m_level == 3){
m_range = m_rangeLevel3;
};
};
};
if (m_hasRangeBonus){
m_range = (m_range * m_rangeBonusFactor);
};
}
public function getUpgrades():Object{
var _local1:Object = {};
_local1.hasFrequencyBonus = m_hasFrequencyBonus;
_local1.hasRangeBonus = m_hasRangeBonus;
return (_local1);
}
public function getLevel():int{
return (m_level);
}
protected function doFire():void{
}
protected function doSearchMode():void{
var _local3:IEnemy;
var _local5:IEnemy;
var _local6:Boolean;
var _local7:Boolean;
var _local8:Boolean;
var _local9:Object;
var _local10:Number;
var _local11:Number;
var _local12:Boolean;
var _local1:Array = EnemyData.instance.enemyArray;
var _local2:Boolean;
var _local4:int;
while (_local4 < _local1.length) {
_local5 = IEnemy(_local1[_local4]);
_local6 = true;
if ((_local5 is ILandEnemy)){
if (!m_canTargetLand){
_local6 = false;
};
};
_local7 = true;
if ((_local5 is IAirEnemy)){
if (!m_canTargetAir){
_local7 = false;
};
};
_local8 = _local5.isTargetable();
if (((((_local6) && (_local7))) && (_local8))){
_local9 = _local5.getPosition();
_local10 = _local9.x;
_local11 = _local9.y;
_local12 = rangeCheck(m_x, m_y, _local10, _local11, m_range);
if (_local12){
_local2 = true;
_local3 = _local5;
break;
};
};
_local4++;
};
if (_local2){
m_target = _local3;
m_state = m_ATTACKING;
};
}
protected function doAttackMode():void{
var _local7:Number;
var _local8:Boolean;
var _local1:Array = EnemyData.instance.enemyArray;
var _local2:Number = _local1.indexOf(m_target);
if (_local2 < 0){
m_target = null;
m_state = m_SEARCHING;
return;
};
var _local3:Object = m_target.getPosition();
var _local4:Number = _local3.x;
var _local5:Number = _local3.y;
var _local6:Boolean = rangeCheck(m_x, m_y, _local4, _local5, m_range);
if (!_local6){
m_target = null;
m_state = m_SEARCHING;
} else {
_local7 = ((getAngleDifference(_local4, _local5, m_rotation) * 180) / Math.PI);
_local8 = false;
if ((((_local7 > 0)) && ((_local7 > m_rotationSpeedCap)))){
_local7 = m_rotationSpeedCap;
_local8 = true;
} else {
if ((((_local7 < 0)) && ((_local7 < -(m_rotationSpeedCap))))){
_local7 = -(m_rotationSpeedCap);
_local8 = true;
};
};
m_rotation = (m_rotation + _local7);
if ((((m_frequencyCountdown <= 0)) && (!(_local8)))){
doFire();
m_frequencyCountdown = m_frequency;
};
};
}
}
}//package game.towers
Section 337
//BlasterTower (game.towers.BlasterTower)
package game.towers {
import game.events.*;
import game.*;
import assets.towers.*;
public class BlasterTower extends BaseTower {
public function BlasterTower(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean){
m_x = _arg1;
m_y = _arg2;
m_rotation = 0;
m_rotationSpeedCap = 25;
m_level = _arg3;
m_gunfireEffectDuration = 2;
if (m_level == 1){
m_shadow = new BlasterTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new BlasterTowerL1();
} else {
if (m_level == 2){
m_shadow = new BlasterTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new BlasterTowerL2();
} else {
m_shadow = new BlasterTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new BlasterTowerL3();
};
};
m_container.gunfire.visible = false;
addChild(m_shadow);
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_canTargetLand = true;
m_canTargetAir = false;
m_frequencyLevel1 = TowerData.instance.frequencyTable[TowerController.BLASTER][TowerController.LEVEL_1];
m_frequencyLevel2 = TowerData.instance.frequencyTable[TowerController.BLASTER][TowerController.LEVEL_2];
m_frequencyLevel3 = TowerData.instance.frequencyTable[TowerController.BLASTER][TowerController.LEVEL_3];
m_frequencyBonusFactor = TowerData.instance.frequencyTable[TowerController.BLASTER][TowerController.FREQUENCY_BONUS];
m_hasFrequencyBonus = _arg4;
m_rangeLevel1 = TowerData.instance.rangeTable[TowerController.BLASTER][TowerController.LEVEL_1];
m_rangeLevel2 = TowerData.instance.rangeTable[TowerController.BLASTER][TowerController.LEVEL_2];
m_rangeLevel3 = TowerData.instance.rangeTable[TowerController.BLASTER][TowerController.LEVEL_3];
m_rangeBonusFactor = TowerData.instance.rangeTable[TowerController.BLASTER][TowerController.RANGE_BONUS];
m_hasRangeBonus = _arg5;
recalculateStats();
m_state = m_SEARCHING;
doRender();
}
override protected function doFire():void{
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.BLASTER_FIRE, this, m_target, null, m_level));
m_gunfireEffectCountdown = m_gunfireEffectDuration;
m_container.gunfire.visible = true;
}
override protected function doFireEffect():void{
if (m_gunfireEffectCountdown > 0){
m_gunfireEffectCountdown--;
if (m_gunfireEffectCountdown == 0){
m_container.gunfire.visible = false;
};
};
}
override public function destroy():void{
super.destroy();
}
override protected function updateTowerGraphics():void{
removeChild(m_shadow);
m_shadow = null;
removeChild(m_container);
m_container = null;
if (m_level == 1){
m_shadow = new BlasterTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new BlasterTowerL1();
} else {
if (m_level == 2){
m_shadow = new BlasterTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new BlasterTowerL2();
} else {
m_shadow = new BlasterTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new BlasterTowerL3();
};
};
addChild(m_shadow);
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_container.gunfire.visible = false;
}
}
}//package game.towers
Section 338
//LaserTower (game.towers.LaserTower)
package game.towers {
import flash.events.*;
import flash.display.*;
import game.events.*;
import game.interfaces.*;
import game.*;
import assets.towers.*;
public class LaserTower extends BaseEnergyTower {
protected var m_weaponContainer:MovieClip;
public function LaserTower(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean){
m_x = _arg1;
m_y = _arg2;
m_rotation = 0;
m_rotationSpeedCap = 25;
m_level = _arg3;
m_gunfireEffectDuration = 0;
m_maxTargetsLevel1 = 1;
m_maxTargetsLevel2 = 2;
m_maxTargetsLevel3 = 3;
m_maxTargets = 1;
if (m_level == 1){
m_shadow = new LaserTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new LaserTowerL1();
} else {
if (m_level == 2){
m_shadow = new LaserTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new LaserTowerL2();
} else {
m_shadow = new LaserTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new LaserTowerL3();
};
};
addChild(m_shadow);
m_weaponContainer = new MovieClip();
addChild(m_weaponContainer);
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_canTargetLand = true;
m_canTargetAir = true;
m_frequencyLevel1 = TowerData.instance.frequencyTable[TowerController.LASER][TowerController.LEVEL_1];
m_frequencyLevel2 = TowerData.instance.frequencyTable[TowerController.LASER][TowerController.LEVEL_2];
m_frequencyLevel3 = TowerData.instance.frequencyTable[TowerController.LASER][TowerController.LEVEL_3];
m_frequencyBonusFactor = TowerData.instance.frequencyTable[TowerController.LASER][TowerController.FREQUENCY_BONUS];
m_hasFrequencyBonus = _arg4;
m_rangeLevel1 = TowerData.instance.rangeTable[TowerController.LASER][TowerController.LEVEL_1];
m_rangeLevel2 = TowerData.instance.rangeTable[TowerController.LASER][TowerController.LEVEL_2];
m_rangeLevel3 = TowerData.instance.rangeTable[TowerController.LASER][TowerController.LEVEL_3];
m_rangeBonusFactor = TowerData.instance.rangeTable[TowerController.LASER][TowerController.RANGE_BONUS];
m_hasRangeBonus = _arg5;
m_container.gunfire.visible = false;
recalculateStats();
m_targetObjectArray = [];
m_targetTimeArray = [];
m_state = m_SEARCH_AND_ATTACK;
doRender();
m_container.buttonMode = true;
m_weaponContainer.mouseEnabled = false;
m_weaponContainer.mouseChildren = false;
m_shadow.mouseEnabled = false;
m_shadow.mouseChildren = false;
m_container.addEventListener(MouseEvent.MOUSE_MOVE, moveHandler, false, 0, true);
}
override protected function doEnergyFire(_arg1:IEnemy):void{
var _local2:Object = {clipRef:m_weaponContainer, x:m_x, y:m_y};
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.LASER_FIRE, this, _arg1, null, m_level, _local2));
}
override public function destroy():void{
super.destroy();
}
private function moveHandler(_arg1:MouseEvent):void{
}
override protected function updateTowerGraphics():void{
removeChild(m_shadow);
m_shadow = null;
removeChild(m_container);
m_container = null;
if (m_level == 1){
m_shadow = new LaserTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new LaserTowerL1();
} else {
if (m_level == 2){
m_shadow = new LaserTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new LaserTowerL2();
} else {
m_shadow = new LaserTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new LaserTowerL3();
};
};
addChild(m_shadow);
addChild(m_container);
m_container.gunfire.visible = false;
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
}
}
}//package game.towers
Section 339
//LightningTower (game.towers.LightningTower)
package game.towers {
import game.events.*;
import game.interfaces.*;
import game.*;
import assets.towers.*;
public class LightningTower extends BaseEnergyTower {
public function LightningTower(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean){
m_x = _arg1;
m_y = _arg2;
m_rotation = 0;
m_rotationSpeedCap = 25;
m_level = _arg3;
m_gunfireEffectDuration = 0;
m_maxTargetsLevel1 = 2;
m_maxTargetsLevel2 = 3;
m_maxTargetsLevel3 = 4;
m_maxTargets = 1;
if (m_level == 1){
m_shadow = new LightningTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new LightningTowerL1();
} else {
if (m_level == 2){
m_shadow = new LightningTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 4);
m_container = new LightningTowerL2();
} else {
m_shadow = new LightningTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 5);
m_container = new LightningTowerL3();
};
};
addChild(m_shadow);
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_canTargetLand = true;
m_canTargetAir = true;
m_frequencyLevel1 = TowerData.instance.frequencyTable[TowerController.LIGHTNING][TowerController.LEVEL_1];
m_frequencyLevel2 = TowerData.instance.frequencyTable[TowerController.LIGHTNING][TowerController.LEVEL_2];
m_frequencyLevel3 = TowerData.instance.frequencyTable[TowerController.LIGHTNING][TowerController.LEVEL_3];
m_frequencyBonusFactor = TowerData.instance.frequencyTable[TowerController.LIGHTNING][TowerController.FREQUENCY_BONUS];
m_hasFrequencyBonus = _arg4;
m_rangeLevel1 = TowerData.instance.rangeTable[TowerController.LIGHTNING][TowerController.LEVEL_1];
m_rangeLevel2 = TowerData.instance.rangeTable[TowerController.LIGHTNING][TowerController.LEVEL_2];
m_rangeLevel3 = TowerData.instance.rangeTable[TowerController.LIGHTNING][TowerController.LEVEL_3];
m_rangeBonusFactor = TowerData.instance.rangeTable[TowerController.LIGHTNING][TowerController.RANGE_BONUS];
m_hasRangeBonus = _arg5;
m_container.gunfire.visible = false;
recalculateStats();
m_targetObjectArray = [];
m_targetTimeArray = [];
m_state = m_SEARCH_AND_ATTACK;
doRender();
}
override protected function doEnergyFire(_arg1:IEnemy):void{
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.LIGHTNING_FIRE, this, _arg1, null, m_level));
}
override public function destroy():void{
super.destroy();
}
override protected function updateTowerGraphics():void{
removeChild(m_shadow);
m_shadow = null;
removeChild(m_container);
m_container = null;
if (m_level == 1){
m_shadow = new LightningTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new LightningTowerL1();
} else {
if (m_level == 2){
m_shadow = new LightningTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 4);
m_container = new LightningTowerL2();
} else {
m_shadow = new LightningTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 5);
m_container = new LightningTowerL3();
};
};
addChild(m_shadow);
addChild(m_container);
m_container.gunfire.visible = false;
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
}
}
}//package game.towers
Section 340
//RocketTower (game.towers.RocketTower)
package game.towers {
import game.events.*;
import game.*;
import assets.towers.*;
public class RocketTower extends BaseTower {
public function RocketTower(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean){
m_x = _arg1;
m_y = _arg2;
m_rotation = 0;
m_rotationSpeedCap = 25;
m_level = _arg3;
m_gunfireEffectDuration = 0;
if (m_level == 1){
m_shadow = new RocketTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new RocketTowerL1();
} else {
if (m_level == 2){
m_shadow = new RocketTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new RocketTowerL2();
} else {
m_shadow = new RocketTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new RocketTowerL3();
};
};
addChild(m_shadow);
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_canTargetLand = true;
m_canTargetAir = true;
m_frequencyLevel1 = TowerData.instance.frequencyTable[TowerController.ROCKET][TowerController.LEVEL_1];
m_frequencyLevel2 = TowerData.instance.frequencyTable[TowerController.ROCKET][TowerController.LEVEL_2];
m_frequencyLevel3 = TowerData.instance.frequencyTable[TowerController.ROCKET][TowerController.LEVEL_3];
m_frequencyBonusFactor = TowerData.instance.frequencyTable[TowerController.ROCKET][TowerController.FREQUENCY_BONUS];
m_hasFrequencyBonus = _arg4;
m_rangeLevel1 = TowerData.instance.rangeTable[TowerController.ROCKET][TowerController.LEVEL_1];
m_rangeLevel2 = TowerData.instance.rangeTable[TowerController.ROCKET][TowerController.LEVEL_2];
m_rangeLevel3 = TowerData.instance.rangeTable[TowerController.ROCKET][TowerController.LEVEL_3];
m_rangeBonusFactor = TowerData.instance.rangeTable[TowerController.ROCKET][TowerController.RANGE_BONUS];
m_hasRangeBonus = _arg5;
m_container.gunfire.visible = false;
recalculateStats();
m_state = m_SEARCHING;
doRender();
}
override protected function doFire():void{
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.ROCKET_FIRE, this, m_target, null, m_level));
m_container.gunfire.visible = true;
m_container.gunfire.gotoAndPlay("fire");
m_target = null;
m_state = m_SEARCHING;
}
override public function destroy():void{
super.destroy();
}
override protected function updateTowerGraphics():void{
removeChild(m_shadow);
m_shadow = null;
removeChild(m_container);
m_container = null;
if (m_level == 1){
m_shadow = new RocketTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new RocketTowerL1();
} else {
if (m_level == 2){
m_shadow = new RocketTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new RocketTowerL2();
} else {
m_shadow = new RocketTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 4);
m_container = new RocketTowerL3();
};
};
addChild(m_shadow);
addChild(m_container);
m_container.gunfire.visible = false;
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
}
}
}//package game.towers
Section 341
//SlowdownTower (game.towers.SlowdownTower)
package game.towers {
import game.events.*;
import game.interfaces.*;
import game.enemies.*;
import game.*;
import assets.towers.*;
public class SlowdownTower extends BaseTower {
public function SlowdownTower(_arg1:int, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:Boolean){
m_x = _arg1;
m_y = _arg2;
m_rotation = 0;
m_rotationSpeedCap = 25;
m_level = _arg3;
m_gunfireEffectDuration = 4;
if (m_level == 1){
m_shadow = new SlowdownTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 2);
m_container = new SlowdownTowerL1();
} else {
if (m_level == 2){
m_shadow = new SlowdownTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 2);
m_container = new SlowdownTowerL2();
} else {
m_shadow = new SlowdownTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new SlowdownTowerL3();
};
};
addChild(m_shadow);
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_canTargetLand = true;
m_canTargetAir = true;
m_frequencyLevel1 = TowerData.instance.frequencyTable[TowerController.SLOWDOWN][TowerController.LEVEL_1];
m_frequencyLevel2 = TowerData.instance.frequencyTable[TowerController.SLOWDOWN][TowerController.LEVEL_2];
m_frequencyLevel3 = TowerData.instance.frequencyTable[TowerController.SLOWDOWN][TowerController.LEVEL_3];
m_frequencyBonusFactor = TowerData.instance.frequencyTable[TowerController.SLOWDOWN][TowerController.FREQUENCY_BONUS];
m_hasFrequencyBonus = _arg4;
m_rangeLevel1 = TowerData.instance.rangeTable[TowerController.SLOWDOWN][TowerController.LEVEL_1];
m_rangeLevel2 = TowerData.instance.rangeTable[TowerController.SLOWDOWN][TowerController.LEVEL_2];
m_rangeLevel3 = TowerData.instance.rangeTable[TowerController.SLOWDOWN][TowerController.LEVEL_3];
m_rangeBonusFactor = TowerData.instance.rangeTable[TowerController.SLOWDOWN][TowerController.RANGE_BONUS];
m_hasRangeBonus = _arg5;
m_container.gunfire.visible = false;
recalculateStats();
m_state = m_SEARCHING;
doRender();
}
override public function destroy():void{
super.destroy();
}
override protected function doFireEffect():void{
if (m_gunfireEffectCountdown > 0){
m_gunfireEffectCountdown--;
if (m_gunfireEffectCountdown == 0){
m_container.gunfire.visible = false;
};
};
}
override protected function doSearchMode():void{
var _local3:IEnemy;
var _local6:IEnemy;
var _local7:Boolean;
var _local8:Boolean;
var _local9:Boolean;
var _local10:Object;
var _local11:Number;
var _local12:Number;
var _local13:Boolean;
var _local14:Number;
var _local15:Object;
var _local16:IEnemy;
var _local1:Array = EnemyData.instance.enemyArray;
var _local2:Boolean;
var _local4:Array = [];
var _local5:int;
while (_local5 < _local1.length) {
_local6 = IEnemy(_local1[_local5]);
_local7 = true;
if ((_local6 is ILandEnemy)){
if (!m_canTargetLand){
_local7 = false;
};
};
_local8 = true;
if ((_local6 is IAirEnemy)){
if (!m_canTargetAir){
_local8 = false;
};
};
_local9 = _local6.isTargetable();
if (((((_local7) && (_local8))) && (_local9))){
_local10 = _local6.getPosition();
_local11 = _local10.x;
_local12 = _local10.y;
_local13 = rangeCheck(m_x, m_y, _local11, _local12, m_range);
if (_local13){
_local14 = calculateDistance(m_x, m_y, _local11, _local12);
_local15 = {};
_local15.enemy = _local6;
_local15.dist = _local14;
_local15.speedFactor = _local6.getSpeedFactor();
_local4.push(_local15);
};
};
_local5++;
};
if (_local4.length > 0){
_local4.sortOn("dist", Array.NUMERIC);
_local16 = IEnemy(_local4[0].enemy);
_local5 = 0;
while (_local5 < _local4.length) {
_local5++;
};
_local5 = 0;
while (_local5 < _local4.length) {
if (_local4[_local5].speedFactor < 1){
_local4.splice(_local5, 1);
_local5--;
};
_local5++;
};
_local5 = 0;
while (_local5 < _local4.length) {
_local5++;
};
if (_local4.length > 0){
m_target = IEnemy(_local4[0].enemy);
} else {
m_target = _local16;
};
m_state = m_ATTACKING;
};
}
override protected function doFire():void{
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.SLOWDOWN_FIRE, this, m_target, null, m_level));
m_gunfireEffectCountdown = m_gunfireEffectDuration;
m_target = null;
m_state = m_SEARCHING;
}
override protected function updateTowerGraphics():void{
removeChild(m_shadow);
m_shadow = null;
removeChild(m_container);
m_container = null;
if (m_level == 1){
m_shadow = new SlowdownTowerShadowL1();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 2);
m_container = new SlowdownTowerL1();
} else {
if (m_level == 2){
m_shadow = new SlowdownTowerShadowL2();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 2);
m_container = new SlowdownTowerL2();
} else {
m_shadow = new SlowdownTowerShadowL3();
m_shadow.x = Map.tileHalfW;
m_shadow.y = (Map.tileHalfH + 3);
m_container = new SlowdownTowerL3();
};
};
addChild(m_shadow);
addChild(m_container);
m_container.gunfire.visible = false;
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
}
}
}//package game.towers
Section 342
//TowerController (game.towers.TowerController)
package game.towers {
import com.markfennell.sound.*;
import game.events.*;
import flash.utils.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.*;
public class TowerController extends CasaSprite {
public static const SLOWDOWN:String = "Slowdown";
public static const RANGE_BONUS:String = "RangeBonus";
public static const BLASTER:String = "Blaster";
public static const LIGHTNING:String = "Lightning";
public static const LASER:String = "Laser";
public static const ROCKET:String = "Rocket";
public static const LEVEL_2:String = "Level2";
public static const LEVEL_3:String = "Level3";
public static const FREQUENCY_BONUS:String = "FrequencyBonus";
public static const LEVEL_1:String = "Level1";
public function TowerController(_arg1:XML){
TowerData.instance.emptyArray();
initTables(_arg1);
GameBroadcaster.addEventListener(TowerEvent.BUILD_TOWER, buildTowerHandler, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.SELL_TOWER, sellTowerHandler, false, 0, true);
GameBroadcaster.addEventListener(TowerEvent.UPGRADE_TOWER, upgradeTowerHandler, false, 0, true);
trace("TC online");
}
public function doRender():void{
var _local1:Array = TowerData.instance.towerArray;
var _local2:int;
while (_local2 < _local1.length) {
BaseTower(_local1[_local2]).doRender();
_local2++;
};
}
private function sellTowerHandler(_arg1:TowerEvent):void{
var _local2:ITower = _arg1.towerObject;
TowerData.instance.towerArray.splice(TowerData.instance.towerArray.indexOf(_local2), 1);
_local2.destroy();
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.towers.TowerSell", 0.7, 1, false));
}
private function initTables(_arg1:XML):void{
var _local2:Dictionary = TowerData.instance.frequencyTable;
var _local3:Dictionary = TowerData.instance.rangeTable;
_local2[BLASTER] = new Dictionary();
_local2[BLASTER][LEVEL_1] = int(_arg1.blasterTower.frequency.@level1);
_local2[BLASTER][LEVEL_2] = int(_arg1.blasterTower.frequency.@level2);
_local2[BLASTER][LEVEL_3] = int(_arg1.blasterTower.frequency.@level3);
_local2[BLASTER][FREQUENCY_BONUS] = 0.5;
_local3[BLASTER] = new Dictionary();
_local3[BLASTER][LEVEL_1] = int(_arg1.blasterTower.range.@level1);
_local3[BLASTER][LEVEL_2] = int(_arg1.blasterTower.range.@level2);
_local3[BLASTER][LEVEL_3] = int(_arg1.blasterTower.range.@level3);
_local3[BLASTER][RANGE_BONUS] = 1.6;
_local2[SLOWDOWN] = new Dictionary();
_local2[SLOWDOWN][LEVEL_1] = int(_arg1.slowdownTower.frequency.@level1);
_local2[SLOWDOWN][LEVEL_2] = int(_arg1.slowdownTower.frequency.@level2);
_local2[SLOWDOWN][LEVEL_3] = int(_arg1.slowdownTower.frequency.@level3);
_local2[SLOWDOWN][FREQUENCY_BONUS] = 0.5;
_local3[SLOWDOWN] = new Dictionary();
_local3[SLOWDOWN][LEVEL_1] = int(_arg1.slowdownTower.range.@level1);
_local3[SLOWDOWN][LEVEL_2] = int(_arg1.slowdownTower.range.@level2);
_local3[SLOWDOWN][LEVEL_3] = int(_arg1.slowdownTower.range.@level3);
_local3[SLOWDOWN][RANGE_BONUS] = 1.5;
_local2[ROCKET] = new Dictionary();
_local2[ROCKET][LEVEL_1] = int(_arg1.rocketTower.frequency.@level1);
_local2[ROCKET][LEVEL_2] = int(_arg1.rocketTower.frequency.@level2);
_local2[ROCKET][LEVEL_3] = int(_arg1.rocketTower.frequency.@level3);
_local2[ROCKET][FREQUENCY_BONUS] = 0.5;
_local3[ROCKET] = new Dictionary();
_local3[ROCKET][LEVEL_1] = int(_arg1.rocketTower.range.@level1);
_local3[ROCKET][LEVEL_2] = int(_arg1.rocketTower.range.@level2);
_local3[ROCKET][LEVEL_3] = int(_arg1.rocketTower.range.@level3);
_local3[ROCKET][RANGE_BONUS] = 1.5;
_local2[LASER] = new Dictionary();
_local2[LASER][LEVEL_1] = int(_arg1.laserTower.frequency.@level1);
_local2[LASER][LEVEL_2] = int(_arg1.laserTower.frequency.@level2);
_local2[LASER][LEVEL_3] = int(_arg1.laserTower.frequency.@level3);
_local2[LASER][FREQUENCY_BONUS] = 0.5;
_local3[LASER] = new Dictionary();
_local3[LASER][LEVEL_1] = int(_arg1.laserTower.range.@level1);
_local3[LASER][LEVEL_2] = int(_arg1.laserTower.range.@level2);
_local3[LASER][LEVEL_3] = int(_arg1.laserTower.range.@level3);
_local3[LASER][RANGE_BONUS] = 1.3;
_local2[LIGHTNING] = new Dictionary();
_local2[LIGHTNING][LEVEL_1] = int(_arg1.lightningTower.frequency.@level1);
_local2[LIGHTNING][LEVEL_2] = int(_arg1.lightningTower.frequency.@level2);
_local2[LIGHTNING][LEVEL_3] = int(_arg1.lightningTower.frequency.@level3);
_local2[LIGHTNING][FREQUENCY_BONUS] = 0.5;
_local3[LIGHTNING] = new Dictionary();
_local3[LIGHTNING][LEVEL_1] = int(_arg1.lightningTower.range.@level1);
_local3[LIGHTNING][LEVEL_2] = int(_arg1.lightningTower.range.@level2);
_local3[LIGHTNING][LEVEL_3] = int(_arg1.lightningTower.range.@level3);
_local3[LIGHTNING][RANGE_BONUS] = 1.3;
}
override public function destroy():void{
var _local1:Array = TowerData.instance.towerArray;
var _local2:int;
while (_local2 < _local1.length) {
BaseTower(_local1[_local2]).destroy();
_local1[_local2] = null;
_local2++;
};
GameBroadcaster.removeEventListener(TowerEvent.BUILD_TOWER, buildTowerHandler);
GameBroadcaster.removeEventListener(TowerEvent.SELL_TOWER, sellTowerHandler);
GameBroadcaster.removeEventListener(TowerEvent.UPGRADE_TOWER, upgradeTowerHandler);
TowerData.instance.emptyArray();
trace("TowerData destroy");
super.destroy();
}
public function doPhysics():void{
var _local1:Array = TowerData.instance.towerArray;
var _local2:int;
while (_local2 < _local1.length) {
BaseTower(_local1[_local2]).doPhysics();
_local2++;
};
}
private function upgradeTowerHandler(_arg1:TowerEvent):void{
var _local2:ITower = _arg1.towerObject;
_local2.doUpgrade(_arg1.levelID, _arg1.hasFrequencyBonus, _arg1.hasRangeBonus);
if (((_arg1.hasFrequencyBonus) || (_arg1.hasRangeBonus))){
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.towers.TowerBonus", 0.7, 1, false));
} else {
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.towers.TowerUpgrade", 0.7, 1, false));
};
}
private function buildTowerHandler(_arg1:TowerEvent):void{
var _local4:BaseTower;
var _local2:int = (_arg1.tower_cell_x * Map.tileW);
var _local3:int = (_arg1.tower_cell_y * Map.tileH);
if (_arg1.towerType == BLASTER){
_local4 = new BlasterTower(_local2, _local3, _arg1.levelID, _arg1.hasFrequencyBonus, _arg1.hasRangeBonus);
} else {
if (_arg1.towerType == SLOWDOWN){
_local4 = new SlowdownTower(_local2, _local3, _arg1.levelID, _arg1.hasFrequencyBonus, _arg1.hasRangeBonus);
} else {
if (_arg1.towerType == ROCKET){
_local4 = new RocketTower(_local2, _local3, _arg1.levelID, _arg1.hasFrequencyBonus, _arg1.hasRangeBonus);
} else {
if (_arg1.towerType == LASER){
_local4 = new LaserTower(_local2, _local3, _arg1.levelID, _arg1.hasFrequencyBonus, _arg1.hasRangeBonus);
} else {
if (_arg1.towerType == LIGHTNING){
_local4 = new LightningTower(_local2, _local3, _arg1.levelID, _arg1.hasFrequencyBonus, _arg1.hasRangeBonus);
};
};
};
};
};
addChild(_local4);
TowerData.instance.towerArray.push(_local4);
GameBroadcaster.dispatchEvent(new TowerEvent(TowerEvent.BUILD_TOWER_COMPLETE, _local4, _arg1.levelID, _arg1.hasFrequencyBonus, _arg1.hasRangeBonus, _arg1.towerType, _arg1.tower_cell_x, _arg1.tower_cell_y));
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.towers.TowerBuild", 0.7, 1, false));
}
public static function getTowerLevelString(_arg1:ITower=null, _arg2:int=0):String{
var _local4:int;
var _local3 = "";
if (_arg1 != null){
_local4 = _arg1.getLevel();
} else {
_local4 = _arg2;
};
if (_local4 == 1){
_local3 = TowerController.LEVEL_1;
} else {
if (_local4 == 2){
_local3 = TowerController.LEVEL_2;
} else {
_local3 = TowerController.LEVEL_3;
};
};
return (_local3);
}
public static function getTowerTypeString(_arg1:ITower):String{
var _local2:String;
if ((_arg1 is BlasterTower)){
_local2 = TowerController.BLASTER;
} else {
if ((_arg1 is SlowdownTower)){
_local2 = TowerController.SLOWDOWN;
} else {
if ((_arg1 is RocketTower)){
_local2 = TowerController.ROCKET;
} else {
if ((_arg1 is LaserTower)){
_local2 = TowerController.LASER;
} else {
if ((_arg1 is LightningTower)){
_local2 = TowerController.LIGHTNING;
};
};
};
};
};
return (_local2);
}
}
}//package game.towers
Section 343
//TowerData (game.towers.TowerData)
package game.towers {
import flash.events.*;
import flash.utils.*;
public class TowerData extends EventDispatcher {
private var m_towerArray:Array;
private var m_rangeTable:Dictionary;
private var m_frequencyTable:Dictionary;
private static var m_instance:TowerData = new (TowerData);
;
public function TowerData(){
if (m_instance){
throw (new Error("Error: TowerData is a Singleton, and can only be accessed through TowerData.instance"));
};
m_instance = this;
m_towerArray = [];
m_frequencyTable = new Dictionary();
m_rangeTable = new Dictionary();
}
public function get towerArray():Array{
return (m_towerArray);
}
public function get rangeTable():Dictionary{
return (m_rangeTable);
}
public function get frequencyTable():Dictionary{
return (m_frequencyTable);
}
public function emptyArray():void{
m_towerArray = [];
m_frequencyTable = new Dictionary();
m_rangeTable = new Dictionary();
}
public static function get instance():TowerData{
return (m_instance);
}
}
}//package game.towers
Section 344
//Wave (game.waves.Wave)
package game.waves {
public class Wave {
public var bossRound:Boolean;
public var timeToLaunchArray:Array;
public var cashBonus:int;
public var scoreBonus:int;
public var routeArray:Array;
public var maxTime:int;
public var waveID:int;
public var enemyTypeArray:Array;
public var enemyObjectArray:Array;
public var healthArray:Array;
public var minTime:int;
public static const WAVE_NOT_LAUNCHED:String = "waveNotLaunched";
public static const WAVE_ACTIVE:String = "waveActive";
public static const WAVE_COMPLETE:String = "waveComplete";
public function Wave(){
enemyTypeArray = [];
healthArray = [];
routeArray = [];
timeToLaunchArray = [];
enemyObjectArray = [];
super();
}
}
}//package game.waves
Section 345
//WaveController (game.waves.WaveController)
package game.waves {
import console.*;
import game.events.*;
import flash.utils.*;
import game.enemies.*;
import org.casalib.util.*;
import game.*;
public class WaveController {
private var m_totalWaves:int;
private var m_spawnLockState:int;
private var m_currentWaveID:int;
private var m_inactiveWaves:Array;
private var m_currentWaveMinTime:int;
private var m_activeWaves:Array;
private var m_allWavesComplete:Boolean;// = false
private var m_currentWaveTime:int;
private var m_firstWaveLaunched:Boolean;// = false
private var m_currentWaveMaxTime:int;
private var m_waveTimers:Array;
private var m_allWavesLaunched:Boolean;// = false
private var m_orderedWaves:Array;
private static const SPAWN_BOSS_ROUND:int = 2;
private static const SPAWN_NORMAL:int = 0;
private static const SPAWN_PRE_BOSS:int = 1;
public function WaveController(){
trace("WaveController online");
GameBroadcaster.addEventListener(WaveEvent.REQUEST_NEXT_WAVE, requestNextWaveHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_SPAWNED, enemySpawnedHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyTerminatedHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyTerminatedHandler, false, 0, true);
}
private function newWave(_arg1:int):void{
trace(("WaveController launching waveID: " + _arg1));
var _local2:String = ("level" + NumberUtil.addLeadingZero((_arg1 + 1)));
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, _local2, "start");
m_waveTimers[_arg1] = getTimer();
var _local3:Wave = m_inactiveWaves.shift();
m_activeWaves.push(_local3);
var _local4:int = m_currentWaveMaxTime;
var _local5:int = m_currentWaveTime;
m_currentWaveTime = 0;
m_currentWaveMinTime = _local3.minTime;
m_currentWaveMaxTime = _local3.maxTime;
GameBroadcaster.dispatchEvent(new WaveEvent(WaveEvent.WAVE_LAUNCHED, m_currentWaveMinTime, m_currentWaveMaxTime, m_currentWaveID, m_totalWaves, _local5, _local4, _local3));
if (_local3.bossRound == true){
m_spawnLockState = SPAWN_BOSS_ROUND;
GameBroadcaster.dispatchEvent(new WaveEvent(WaveEvent.LOCK_NEXT_WAVE));
};
if (m_inactiveWaves.length == 0){
trace("newWave ALL WAVES LAUNCHED");
m_allWavesLaunched = true;
} else {
if (Wave(m_inactiveWaves[0]).bossRound == true){
m_spawnLockState = SPAWN_PRE_BOSS;
GameBroadcaster.dispatchEvent(new WaveEvent(WaveEvent.LOCK_NEXT_WAVE));
};
};
}
private function incrementWaveAndLaunch():void{
m_currentWaveID++;
newWave(m_currentWaveID);
}
private function enemyTerminatedHandler(_arg1:EnemyEvent):void{
var _local2:BaseEnemy = _arg1.enemyObject;
var _local3:int = _local2.getWaveID();
var _local4:Wave = m_orderedWaves[_local3];
_local4.enemyObjectArray.splice(_local4.enemyObjectArray.indexOf(_local2), 1);
if ((((_local4.timeToLaunchArray.length == 0)) && ((_local4.enemyObjectArray.length == 0)))){
waveLifecycleComplete(_local4);
};
}
public function calculateWaveTimes():void{
var _local2:Wave;
var _local3:int;
var _local4:Array;
var _local5:int;
var _local6:int;
var _local7:int;
var _local8:String;
var _local9:int;
var _local10:Dictionary;
var _local11:Number;
var _local12:int;
var _local1:int;
while (_local1 < m_inactiveWaves.length) {
_local2 = m_inactiveWaves[_local1];
_local3 = 0;
_local4 = Map.getRoutes();
_local5 = 0;
while (_local5 < _local2.timeToLaunchArray.length) {
_local6 = _local4[_local2.routeArray[_local5]].length;
_local7 = (_local6 * Map.tileW);
_local8 = _local2.enemyTypeArray[_local5];
_local9 = _local2.timeToLaunchArray[_local5];
_local10 = EnemyData.instance.speedTable;
_local11 = 0;
if (_local8 == EnemyController.MOLEOID){
_local11 = _local10[EnemyController.MOLEOID];
} else {
if (_local8 == EnemyController.AIMSENTRY_BLUE){
_local11 = _local10[EnemyController.AIMSENTRY];
} else {
if (_local8 == EnemyController.AIMSENTRY_RED){
_local11 = _local10[EnemyController.AIMSENTRY];
} else {
if (_local8 == EnemyController.AIMSENTRY_YELLOW){
_local11 = _local10[EnemyController.AIMSENTRY];
} else {
if (_local8 == EnemyController.DOOMBOT){
_local11 = _local10[EnemyController.DOOMBOT];
} else {
if (_local8 == EnemyController.JEEP){
_local11 = _local10[EnemyController.JEEP];
} else {
if (_local8 == EnemyController.HELICOPTER){
_local11 = _local10[EnemyController.HELICOPTER];
} else {
if (_local8 == EnemyController.ATTACKAPC){
_local11 = _local10[EnemyController.ATTACKAPC];
} else {
if (_local8 == EnemyController.LIGHTTANK){
_local11 = _local10[EnemyController.LIGHTTANK];
} else {
if (_local8 == EnemyController.CRUISEMISSILE){
_local11 = _local10[EnemyController.CRUISEMISSILE];
} else {
if (_local8 == EnemyController.HEAVYTANK){
_local11 = _local10[EnemyController.HEAVYTANK];
} else {
if (_local8 == EnemyController.MOLEMAN){
_local11 = _local10[EnemyController.MOLEMAN];
} else {
if (_local8 == EnemyController.MODOK){
_local11 = _local10[EnemyController.MODOK];
} else {
if (_local8 == EnemyController.DRDOOM){
_local11 = _local10[EnemyController.DRDOOM];
};
};
};
};
};
};
};
};
};
};
};
};
};
};
_local12 = ((_local7 / _local11) + _local9);
if (_local12 > _local3){
_local3 = _local12;
};
_local5++;
};
_local2.maxTime = _local3;
_local1++;
};
}
private function waveLifecycleComplete(_arg1:Wave):void{
trace(("> Wave execution complete " + _arg1.waveID));
var _local2:int = int(((getTimer() - m_waveTimers[_arg1.waveID]) / 1000));
var _local3:String = ("level" + NumberUtil.addLeadingZero((_arg1.waveID + 1)));
trace((((((("GA Event: " + Constants.TRACKING_TITLE) + ", ") + _local3) + ", ") + "complete, ") + _local2));
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, _local3, "complete", _local2);
GameBroadcaster.dispatchEvent(new WaveEvent(WaveEvent.WAVE_DEFEATED, 0, 0, 0, 0, 0, 0, _arg1));
if (m_activeWaves.length == 0){
if (m_spawnLockState == SPAWN_PRE_BOSS){
m_spawnLockState = SPAWN_NORMAL;
GameBroadcaster.dispatchEvent(new WaveEvent(WaveEvent.UNLOCK_NEXT_WAVE));
} else {
if (m_spawnLockState == SPAWN_BOSS_ROUND){
m_spawnLockState = SPAWN_NORMAL;
GameBroadcaster.dispatchEvent(new WaveEvent(WaveEvent.UNLOCK_NEXT_WAVE));
};
};
};
}
private function launchEnemy(_arg1:String, _arg2:int, _arg3:int, _arg4:int):void{
if ((((((((((((((((((((((((((((_arg1 == EnemyController.MOLEOID)) || ((_arg1 == EnemyController.AIMSENTRY_BLUE)))) || ((_arg1 == EnemyController.AIMSENTRY_RED)))) || ((_arg1 == EnemyController.AIMSENTRY_YELLOW)))) || ((_arg1 == EnemyController.DOOMBOT)))) || ((_arg1 == EnemyController.JEEP)))) || ((_arg1 == EnemyController.HELICOPTER)))) || ((_arg1 == EnemyController.ATTACKAPC)))) || ((_arg1 == EnemyController.LIGHTTANK)))) || ((_arg1 == EnemyController.CRUISEMISSILE)))) || ((_arg1 == EnemyController.HEAVYTANK)))) || ((_arg1 == EnemyController.MOLEMAN)))) || ((_arg1 == EnemyController.MODOK)))) || ((_arg1 == EnemyController.DRDOOM)))){
GameBroadcaster.dispatchEvent(new EnemyEvent(EnemyEvent.SPAWN_ENEMY, null, _arg1, _arg2, _arg3, _arg4));
} else {
throw (new Error(("Unknown enemy type!: " + _arg1)));
};
}
public function setWaveDifficulty(_arg1:Number):void{
var _local3:Wave;
var _local4:int;
var _local2:int;
while (_local2 < m_inactiveWaves.length) {
_local3 = m_inactiveWaves[_local2];
_local4 = 0;
while (_local4 < _local3.healthArray.length) {
_local3.healthArray[_local4] = (_local3.healthArray[_local4] * _arg1);
_local4++;
};
_local2++;
};
}
public function startWaves():void{
trace("WaveController is beginning the game");
m_currentWaveID = 0;
m_currentWaveTime = 0;
m_currentWaveMinTime = 0;
m_currentWaveMaxTime = 0;
m_firstWaveLaunched = true;
m_spawnLockState = SPAWN_NORMAL;
newWave(m_currentWaveID);
}
private function manageTime():void{
var _local2:Wave;
var _local3:int;
var _local4:String;
var _local5:int;
var _local6:int;
var _local7:int;
m_currentWaveTime++;
if ((((((m_currentWaveTime >= m_currentWaveMaxTime)) && (!(m_allWavesLaunched)))) && ((m_spawnLockState == SPAWN_NORMAL)))){
incrementWaveAndLaunch();
};
if ((((m_activeWaves.length == 0)) && ((m_inactiveWaves.length == 0)))){
m_allWavesComplete = true;
};
var _local1:int;
while (_local1 < m_activeWaves.length) {
_local2 = m_activeWaves[_local1];
_local3 = 0;
while (_local3 < _local2.timeToLaunchArray.length) {
var _local8 = _local2.timeToLaunchArray;
var _local9 = _local3;
var _local10 = (_local8[_local9] - 1);
_local8[_local9] = _local10;
if (_local2.timeToLaunchArray[_local3] <= 0){
_local4 = _local2.enemyTypeArray[_local3];
_local5 = _local2.healthArray[_local3];
_local6 = _local2.routeArray[_local3];
_local7 = _local2.waveID;
_local2.enemyTypeArray.splice(_local3, 1);
_local2.healthArray.splice(_local3, 1);
_local2.routeArray.splice(_local3, 1);
_local2.timeToLaunchArray.splice(_local3, 1);
launchEnemy(_local4, _local5, _local6, _local7);
_local3--;
};
_local3++;
};
if (_local2.timeToLaunchArray.length == 0){
m_activeWaves.splice(_local1, 1);
_local1--;
};
_local1++;
};
}
public function checkAllWavesComplete():Boolean{
if (m_allWavesComplete){
return (true);
};
return (false);
}
private function requestNextWaveHandler(_arg1:WaveEvent):void{
if ((((m_currentWaveTime >= m_currentWaveMinTime)) && (!(m_allWavesLaunched)))){
if (m_inactiveWaves.length == 0){
throw (new Error("requestNextWaveHandler BUT ALL WAVES LAUNCHED"));
};
incrementWaveAndLaunch();
};
}
public function destroy():void{
GameBroadcaster.removeEventListener(WaveEvent.REQUEST_NEXT_WAVE, requestNextWaveHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_SPAWNED, enemySpawnedHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyTerminatedHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyTerminatedHandler);
}
public function initWaves(_arg1:XML):void{
var _local4:Wave;
var _local5:XML;
var _local6:Array;
var _local7:int;
var _local8:String;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:int;
var _local14:int;
var _local15:Object;
var _local2:XML = _arg1;
m_inactiveWaves = [];
m_activeWaves = [];
m_orderedWaves = [];
m_waveTimers = [];
m_totalWaves = _local2.wave.length();
var _local3:int;
while (_local3 < _local2.wave.length()) {
_local4 = new Wave();
m_inactiveWaves.push(_local4);
m_orderedWaves.push(_local4);
_local5 = _local2.wave[_local3];
_local4.waveID = _local3;
_local4.minTime = int(_local5.@minTime);
_local4.maxTime = 0;
_local4.bossRound = Boolean(int(_local5.@bossRound));
_local4.cashBonus = int(_local5.@cashBonus);
_local4.scoreBonus = int(_local5.@scoreBonus);
_local6 = [];
_local7 = 0;
while (_local7 < _local5.cluster.length()) {
_local8 = String(_local5.cluster[_local7].@type);
_local9 = int(_local5.cluster[_local7].@health);
_local10 = int(_local5.cluster[_local7].@routeid);
if ((((_local10 < 0)) || ((_local10 > 5)))){
trace(("WC ERROR: enemy had route outside of 0<route<5: " + _local10));
_local10 = 0;
};
_local11 = int(_local5.cluster[_local7].@units);
_local12 = int(_local5.cluster[_local7].@timeoffset);
_local13 = int(_local5.cluster[_local7].@timegap);
_local14 = 0;
while (_local14 < _local11) {
_local15 = {};
_local15.enemyType = _local8;
_local15.health = _local9;
_local15.routeID = _local10;
_local15.time = int((_local12 + (_local13 * _local14)));
_local6.push(_local15);
_local14++;
};
_local7++;
};
_local6.sortOn("time", [Array.NUMERIC]);
_local14 = 0;
while (_local14 < _local6.length) {
_local4.enemyTypeArray[_local14] = _local6[_local14].enemyType;
_local4.healthArray[_local14] = _local6[_local14].health;
_local4.routeArray[_local14] = _local6[_local14].routeID;
_local4.timeToLaunchArray[_local14] = _local6[_local14].time;
_local14++;
};
_local3++;
};
}
public function currentWaveID():int{
return (m_currentWaveID);
}
private function enemySpawnedHandler(_arg1:EnemyEvent):void{
var _local2:BaseEnemy = _arg1.enemyObject;
var _local3:int = _local2.getWaveID();
var _local4:Wave = m_orderedWaves[_local3];
_local4.enemyObjectArray.push(_local2);
}
public function doPhysics():void{
if (((!(m_allWavesComplete)) && (m_firstWaveLaunched))){
manageTime();
};
}
}
}//package game.waves
Section 346
//LaserBeam (game.weapons.LaserBeam)
package game.weapons {
import game.events.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.*;
import gs.*;
public class LaserBeam extends CasaSprite implements IWeapon {
protected var m_glowStrength:Number;
protected var m_laserDurationCountdown:int;
protected var level1LineWidth:Number;// = 2
protected var level2GlowColour:Number;// = 0xDE0000
protected var m_rotation:Number;
protected var m_drawDeltaX:int;
protected var m_drawDeltaY:int;
protected var m_target:IEnemy;
protected var level2LineWidth:Number;// = 3
protected var m_x:Number;
protected var m_y:Number;
protected var level2BeamColour:Number;// = 0xFF0000
protected var m_container:CasaSprite;
protected var m_level:int;
protected var m_tower:ITower;
protected var m_laserDurationLevel1:int;// = 20
protected var m_laserDurationLevel2:int;// = 15
protected var m_laserDurationLevel3:int;// = 25
protected var level3GlowStrength:Number;// = 3
protected var level1GlowStrength:Number;// = 1
protected var level3LineWidth:Number;// = 3
protected var level3GlowColour:Number;// = 0xDE0000
protected var m_glowColour:Number;
protected var level1GlowColour:Number;// = 0xDE0000
protected var m_lineWidth:Number;
protected var level1BeamColour:Number;// = 0xFF0000
protected var level2GlowStrength:Number;// = 1
protected var level3BeamColour:Number;// = 0xFF0000
protected var m_beamColour:Number;
public function LaserBeam(_arg1:IEnemy, _arg2:ITower, _arg3:int, _arg4:int, _arg5:int){
m_level = _arg3;
m_target = _arg1;
m_tower = _arg2;
m_container = new CasaSprite();
addChild(m_container);
m_container.mouseEnabled = false;
m_container.mouseChildren = false;
m_container.x = -(_arg4);
m_container.y = -(_arg5);
m_x = _arg2.getPosition().x;
m_y = _arg2.getPosition().y;
if (m_level == 1){
m_laserDurationCountdown = m_laserDurationLevel1;
m_beamColour = level1BeamColour;
m_glowColour = level1GlowColour;
m_lineWidth = level1LineWidth;
m_glowStrength = level1GlowStrength;
} else {
if (m_level == 2){
m_laserDurationCountdown = m_laserDurationLevel2;
m_beamColour = level2BeamColour;
m_glowColour = level2GlowColour;
m_lineWidth = level2LineWidth;
m_glowStrength = level2GlowStrength;
} else {
m_laserDurationCountdown = m_laserDurationLevel3;
m_beamColour = level3BeamColour;
m_glowColour = level3GlowColour;
m_lineWidth = level3LineWidth;
m_glowStrength = level3GlowStrength;
};
};
TweenMax.to(m_container, 0.25, {glowFilter:{color:m_glowColour, alpha:1, blurX:10, blurY:10, strength:m_glowStrength, quality:1}});
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyLostHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyLostHandler, false, 0, true);
}
override public function destroy():void{
TweenMax.killTweensOf(m_container);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyLostHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyLostHandler);
m_container.destroy();
super.destroy();
}
public function doRender():void{
this.x = m_x;
this.y = m_y;
m_container.graphics.clear();
m_container.graphics.lineStyle(m_lineWidth, m_beamColour, 1);
m_container.graphics.moveTo(Map.tileHalfW, Map.tileHalfH);
m_container.graphics.lineTo((m_drawDeltaX + Map.tileHalfW), (m_drawDeltaY + Map.tileHalfH));
}
public function getPosition():Object{
var _local1:Object = {};
_local1.x = m_x;
_local1.y = m_y;
_local1.rotation = m_rotation;
return (_local1);
}
public function getLevel():int{
return (m_level);
}
private function enemyLostHandler(_arg1:EnemyEvent):void{
if (_arg1.enemyObject == m_target){
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.LASER_STOP, m_tower, null, this, m_level));
};
}
public function doPhysics():void{
if (m_target == null){
trace("ERROR: laserBeam do physics couldnt get the enemy");
};
var _local1:Object = m_target.getPosition();
var _local2:int = _local1.x;
var _local3:int = _local1.y;
m_drawDeltaX = (_local2 - m_x);
m_drawDeltaY = (_local3 - m_y);
m_laserDurationCountdown--;
if (m_laserDurationCountdown <= 0){
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.LASER_STOP, m_tower, m_target, this, m_level));
};
}
}
}//package game.weapons
Section 347
//LightningBeam (game.weapons.LightningBeam)
package game.weapons {
import flash.display.*;
import game.events.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.*;
import flash.filters.*;
import com.foxaweb.utils.*;
public class LightningBeam extends CasaSprite implements IWeapon {
private var w:Number;
protected var m_rotation:Number;
protected var m_drawDeltaX:int;
protected var m_drawDeltaY:int;
private var curDisplace:Number;// = 50
protected var m_target:IEnemy;
protected var m_x:Number;
protected var m_y:Number;
protected var level2BeamColour:Number;// = 4294967295
private var curDetail:Number;// = 1
protected var m_tower:ITower;
private var filter0:BitmapFilter;
private var filter1:BitmapFilter;
private var curNbrBolts:int;// = 1
private var matrix:Array;
protected var m_level:int;
protected var m_lightningDurationCountdown:int;
protected var level1BeamColour:Number;// = 4294967295
private var i:int;
protected var level3BeamColour:Number;// = 4294967295
protected var m_beamColour:Number;
private var h:Number;
private var filter:BitmapFilter;
protected var m_lightningDurationLevel1:int;// = 4
protected var m_lightningDurationLevel2:int;// = 8
protected var m_lightningDurationLevel3:int;// = 15
private var fade:Number;// = 0.7
private var m_effectsBitmap:BitmapData;
public function LightningBeam(_arg1:IEnemy, _arg2:ITower, _arg3:int, _arg4:BitmapData){
m_level = _arg3;
m_target = _arg1;
m_tower = _arg2;
m_effectsBitmap = _arg4;
m_x = _arg2.getPosition().x;
m_y = _arg2.getPosition().y;
if (m_level == 1){
m_lightningDurationCountdown = m_lightningDurationLevel1;
m_beamColour = level1BeamColour;
} else {
if (m_level == 2){
m_lightningDurationCountdown = m_lightningDurationLevel2;
m_beamColour = level2BeamColour;
} else {
m_lightningDurationCountdown = m_lightningDurationLevel3;
m_beamColour = level3BeamColour;
};
};
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyLostHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyLostHandler, false, 0, true);
}
public function doRender():void{
var _local1:int = (m_x + Map.tileHalfW);
var _local2:int = (m_y + Map.tileHalfH);
lightningBolt(_local1, _local2, ((m_x + m_drawDeltaX) + Map.tileHalfW), ((m_y + m_drawDeltaY) + Map.tileHalfH));
}
private function lightningBolt(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{
i = 0;
while (i < curNbrBolts) {
_arg3 = (_arg3 + int(((Math.random() * 6) - 3)));
_arg4 = (_arg4 + int(((Math.random() * 6) - 3)));
strike(_arg1, _arg2, _arg3, _arg4, curDisplace);
i++;
};
}
override public function destroy():void{
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyLostHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyLostHandler);
super.destroy();
}
public function getPosition():Object{
var _local1:Object = {};
_local1.x = m_x;
_local1.y = m_y;
_local1.rotation = m_rotation;
return (_local1);
}
public function doPhysics():void{
if (m_target == null){
trace("ERROR: LightningBeam do physics couldnt get the enemy");
};
var _local1:Object = m_target.getPosition();
var _local2:int = _local1.x;
var _local3:int = _local1.y;
m_drawDeltaX = (_local2 - m_x);
m_drawDeltaY = (_local3 - m_y);
m_lightningDurationCountdown--;
if (m_lightningDurationCountdown <= 0){
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.LIGHTNING_STOP, m_tower, m_target, this, m_level));
};
}
public function getLevel():int{
return (m_level);
}
private function enemyLostHandler(_arg1:EnemyEvent):void{
if (_arg1.enemyObject == m_target){
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.LIGHTNING_STOP, m_tower, null, this, m_level));
};
}
private function strike(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{
var _local6:Number;
var _local7:Number;
if (_arg5 < curDetail){
Raster.line(m_effectsBitmap, _arg1, _arg2, _arg3, _arg4, m_beamColour);
} else {
_local6 = ((_arg3 + _arg1) / 2);
_local7 = ((_arg4 + _arg2) / 2);
_local6 = (_local6 + ((Math.random() - 0.5) * _arg5));
_local7 = (_local7 + ((Math.random() - 0.5) * _arg5));
strike(_arg1, _arg2, _local6, _local7, (_arg5 / 2));
strike(_arg3, _arg4, _local6, _local7, (_arg5 / 2));
};
}
}
}//package game.weapons
Section 348
//RocketProjectile (game.weapons.RocketProjectile)
package game.weapons {
import flash.display.*;
import game.events.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.enemies.*;
import game.*;
import assets.weapons.*;
public class RocketProjectile extends CasaSprite implements IWeapon {
protected const m_searchTimeLevel1:int = 2;
protected const m_searchTimeLevel3:int = 240;
protected const m_searchTimeLevel2:int = 2;
protected const m_SEARCHING:int = 1;
protected const m_HOMING:int = 0;
protected const m_rangeLevel1:int = 20;
protected const m_rangeLevel2:int = 20;
protected const m_rangeLevel3:int = 100;
private var m_debugLog:String;// = ""
protected var m_rotation:Number;
protected var m_searchCountdown:int;
protected var m_yMove:Number;
protected var m_flaggedForDestroy:Boolean;// = false
protected var m_xMove:Number;
protected var m_target:IEnemy;
protected var m_x:Number;
protected var m_y:Number;
protected var m_searchTotal:int;
protected var m_rotationHomingCap:Number;// = 8
protected var m_container:MovieClip;
protected var m_speedHoming:Number;// = 6
protected var m_physicsTick:int;// = 0
protected var m_level:int;
protected var m_state:int;
protected var m_speedSearching:Number;// = 4
private var m_forceDebugLogShow:Boolean;// = false
protected var m_rotationSearchingCap:Number;// = 6
protected var m_range:Number;
private var m_debugTime:Number;
public function RocketProjectile(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:IEnemy){
m_x = _arg1;
m_y = _arg2;
m_rotation = _arg3;
m_level = _arg4;
m_target = _arg5;
m_state = m_HOMING;
log(((((((("startX: " + m_x) + " startY: ") + m_y) + " rotation: ") + m_rotation) + " level: ") + m_level));
if (m_level == 1){
m_container = new RocketProjectileL1();
m_range = m_rangeLevel1;
m_searchTotal = m_searchTimeLevel1;
} else {
if (m_level == 2){
m_container = new RocketProjectileL2();
m_range = m_rangeLevel2;
m_searchTotal = m_searchTimeLevel2;
} else {
if (m_level == 3){
m_container = new RocketProjectileL3();
m_range = m_rangeLevel3;
m_searchTotal = m_searchTimeLevel3;
};
};
};
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, enemyLostHandler, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyLostHandler, false, 0, true);
m_debugTime = new Date().time;
log(">>constructor complete. we dont do a physics call here");
}
public function doRender():void{
m_container.rotation = m_rotation;
this.x = m_x;
this.y = m_y;
}
override public function destroy():void{
if (this.parent != null){
removeChild(m_container);
} else {
trace("ERROR: ROCKET PROJECTILE parent null already");
m_forceDebugLogShow = true;
};
if (m_forceDebugLogShow){
printLog();
};
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, enemyLostHandler);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_OBJECTIVE, enemyLostHandler);
super.destroy();
}
public function getPosition():Object{
var _local1:Object = {};
_local1.x = m_x;
_local1.y = m_y;
_local1.rotation = m_rotation;
return (_local1);
}
public function doPhysics():void{
var _local1:Boolean;
log(("physics tick: " + m_physicsTick));
m_physicsTick++;
if (m_state == m_HOMING){
doAttackMode();
} else {
if (m_state == m_SEARCHING){
_local1 = doSearchMode();
if (_local1){
doAttackMode();
} else {
doWaitMode();
};
};
};
}
private function log(_arg1:String):void{
m_debugLog = (m_debugLog + ("\n" + _arg1));
}
private function getAngleDifference(_arg1:Number, _arg2:Number, _arg3:Number):Number{
var _local4:Number = ((_arg3 * Math.PI) / 180);
var _local5:Number = (Math.PI * 2);
_local4 = (_local4 % _local5);
var _local6:Number = ((Math.PI / 2) + Math.atan2((_arg2 - m_y), (_arg1 - m_x)));
if (_local6 < 0){
_local6 = (_local6 + _local5);
};
var _local7:Number = (_local6 - _local4);
if (_local7 > Math.PI){
_local7 = (_local7 - _local5);
} else {
if (_local7 < -(Math.PI)){
_local7 = (_local7 + _local5);
};
};
return (_local7);
}
private function rangeCheck(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Boolean{
if (!(((((((_arg3 > (_arg1 - m_range))) && ((_arg3 < (_arg1 + m_range))))) && ((_arg4 > (_arg2 - m_range))))) && ((_arg4 < (_arg2 + m_range))))){
return (false);
};
var _local6:Number = (((_arg3 - _arg1) * (_arg3 - _arg1)) + ((_arg4 - _arg2) * (_arg4 - _arg2)));
var _local7:Number = (_arg5 * _arg5);
if (_local6 > _local7){
return (false);
};
var _local8:Number = Math.sqrt(_local6);
return (true);
}
public function getLevel():int{
return (m_level);
}
private function printLog():void{
var _local1:int = (new Date().time - m_debugTime);
trace((((">>>>>RocketProjectile log >> we were on screen for: " + _local1) + "ms, and physics ticks: ") + m_physicsTick));
trace((("Log file\n>>>>>>" + m_debugLog) + "\n>>>>>>>"));
}
protected function doSearchMode():Boolean{
var _local3:IEnemy;
var _local5:IEnemy;
var _local6:Boolean;
var _local7:Object;
var _local8:Number;
var _local9:Number;
var _local10:Boolean;
var _local1:Array = EnemyData.instance.enemyArray;
var _local2:Boolean;
var _local4:int;
while (_local4 < _local1.length) {
_local5 = IEnemy(_local1[_local4]);
_local6 = _local5.isTargetable();
if (_local6){
_local7 = _local5.getPosition();
_local8 = _local7.x;
_local9 = _local7.y;
_local10 = rangeCheck(m_x, m_y, _local8, _local9, m_range);
if (_local10){
_local2 = true;
_local3 = _local5;
break;
};
};
_local4++;
};
if (_local2){
m_target = _local3;
m_state = m_HOMING;
return (true);
};
return (false);
}
private function enemyLostHandler(_arg1:EnemyEvent):void{
if (_arg1.enemyObject == m_target){
m_state = m_SEARCHING;
m_searchCountdown = m_searchTotal;
};
}
protected function doAttackMode():void{
var _local5:Number;
var _local1:Object = m_target.getPosition();
var _local2:int = _local1.x;
var _local3:int = _local1.y;
var _local4:Number = ((getAngleDifference(_local2, _local3, m_rotation) * 180) / Math.PI);
if ((((_local4 > 0)) && ((_local4 > m_rotationHomingCap)))){
_local4 = m_rotationHomingCap;
} else {
if ((((_local4 < 0)) && ((_local4 < -(m_rotationHomingCap))))){
_local4 = -(m_rotationHomingCap);
};
};
m_rotation = (m_rotation + _local4);
if ((((((((m_x <= (_local2 + m_speedHoming))) && ((m_x >= (_local2 - m_speedHoming))))) && ((m_y <= (_local3 + m_speedHoming))))) && ((m_y >= (_local3 - m_speedHoming))))){
log(((((((((("Detected hit target. m_x: " + m_x) + " targetX: ") + _local2) + " speed: ") + m_speedHoming) + " m_y: ") + m_y) + " targetY: ") + _local3));
m_flaggedForDestroy = true;
if (m_physicsTick <= 1){
log((("This hit was detected in physics ticks: " + m_physicsTick) + ", hence forced debug log show"));
};
} else {
_local5 = (m_rotation * (Math.PI / 180));
m_xMove = (m_speedHoming * Math.sin(_local5));
m_yMove = (m_speedHoming * Math.cos(_local5));
m_x = (m_x + m_xMove);
m_y = (m_y - m_yMove);
};
if (m_flaggedForDestroy){
log(("Flagged for destroy. physics ticks: " + m_physicsTick));
if (m_physicsTick > 2){
log("Physics ticks sufficient, dispatching destroy");
m_container.alpha = 0.1;
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.ROCKET_DETONATE, null, null, this, m_level));
};
};
}
protected function doWaitMode():void{
m_rotation = (m_rotation + m_rotationSearchingCap);
var _local1:Number = (m_rotation * (Math.PI / 180));
m_xMove = (m_speedSearching * Math.sin(_local1));
m_yMove = (m_speedSearching * Math.cos(_local1));
m_x = (m_x + m_xMove);
m_y = (m_y - m_yMove);
m_searchCountdown--;
if (m_searchCountdown <= 0){
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.ROCKET_DETONATE, null, null, this, m_level));
};
}
}
}//package game.weapons
Section 349
//SlowdownProjectile (game.weapons.SlowdownProjectile)
package game.weapons {
import flash.display.*;
import game.events.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.*;
import assets.weapons.*;
public class SlowdownProjectile extends CasaSprite implements IWeapon {
protected var m_physicsTick:int;// = 0
private var m_debugLog:String;// = ""
private var m_forceDebugLogShow:Boolean;// = false
protected var m_rotation:Number;
protected var m_targetX:Number;
protected var m_targetY:Number;
protected var m_flaggedForDestroy:Boolean;// = false
protected var m_x:Number;
protected var m_y:Number;
private var m_debugTime:Number;
protected var m_container:MovieClip;
protected var m_speed:Number;// = 5
protected var m_level:int;
public function SlowdownProjectile(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:Number, _arg6:Number){
m_x = _arg1;
m_y = _arg2;
m_rotation = _arg3;
m_level = _arg4;
m_targetX = _arg5;
m_targetY = _arg6;
log(((((((((((("startX: " + m_x) + " startY: ") + m_y) + " targetX: ") + m_targetX) + " targetY: ") + m_targetY) + " rotation: ") + m_rotation) + " level: ") + m_level));
m_container = new SlowdownProjectile();
addChild(m_container);
m_container.x = Map.tileHalfW;
m_container.y = Map.tileHalfH;
m_debugTime = new Date().time;
doPhysics();
doRender();
log(">>completed first physics and render");
}
private function log(_arg1:String):void{
m_debugLog = (m_debugLog + ("\n" + _arg1));
}
public function doRender():void{
m_container.rotation = m_rotation;
this.x = m_x;
this.y = m_y;
}
override public function destroy():void{
if (this.parent != null){
removeChild(m_container);
} else {
trace("ERROR: SLOWDOWN PROJECTILE parent already null");
m_forceDebugLogShow = true;
};
if (m_forceDebugLogShow){
printLog();
};
super.destroy();
}
private function printLog():void{
var _local1:int = (new Date().time - m_debugTime);
trace((((">>>>>SlowdownProjectile log >> we were on screen for: " + _local1) + "ms, and physics ticks: ") + m_physicsTick));
trace((("Log file\n>>>>>>" + m_debugLog) + "\n>>>>>>>"));
}
public function getPosition():Object{
var _local1:Object = {};
_local1.x = m_x;
_local1.y = m_y;
_local1.rotation = m_rotation;
return (_local1);
}
public function getLevel():int{
return (m_level);
}
public function doPhysics():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
log(("physics tick: " + m_physicsTick));
m_physicsTick++;
if ((((((((m_x <= (m_targetX + m_speed))) && ((m_x >= (m_targetX - m_speed))))) && ((m_y <= (m_targetY + m_speed))))) && ((m_y >= (m_targetY - m_speed))))){
log(((((((((("Detected hit target. m_x: " + m_x) + " targetX: ") + m_targetX) + " speed: ") + m_speed) + " m_y: ") + m_y) + " targetY: ") + m_targetY));
m_flaggedForDestroy = true;
if (m_physicsTick <= 1){
log((("This hit was detected in physics ticks: " + m_physicsTick) + ", hence forced debug log show"));
};
} else {
_local1 = (m_rotation * (Math.PI / 180));
_local2 = (m_speed * Math.sin(_local1));
_local3 = (m_speed * Math.cos(_local1));
m_x = (m_x + _local2);
m_y = (m_y - _local3);
};
if (m_flaggedForDestroy){
log(("Flagged for destroy. physics ticks: " + m_physicsTick));
if (m_physicsTick > 2){
log("Physics ticks sufficient, dispatching destroy");
m_container.alpha = 0.1;
GameBroadcaster.dispatchEvent(new WeaponEvent(WeaponEvent.SLOWDOWN_DETONATE, null, null, this, m_level));
};
};
}
}
}//package game.weapons
Section 350
//WeaponController (game.weapons.WeaponController)
package game.weapons {
import com.markfennell.sound.*;
import flash.display.*;
import game.events.*;
import flash.utils.*;
import game.interfaces.*;
import org.casalib.display.*;
import game.enemies.*;
import game.towers.*;
import assets.weapons.*;
import gs.*;
public class WeaponController extends CasaSprite {
private var m_drawEffectsLayer:BitmapData;
public function WeaponController(_arg1:XML){
WeaponData.instance.emptyArray();
this.mouseChildren = false;
this.mouseEnabled = false;
initTables(_arg1);
GameBroadcaster.addEventListener(WeaponEvent.BLASTER_FIRE, blasterFireHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.SLOWDOWN_FIRE, slowdownFireHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.SLOWDOWN_DETONATE, slowdownDetonationHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.ROCKET_FIRE, rocketFireHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.ROCKET_DETONATE, rocketDetonationHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.LASER_FIRE, laserFireHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.LASER_STOP, laserStopHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.LIGHTNING_FIRE, lightningFireHandler, false, 0, true);
GameBroadcaster.addEventListener(WeaponEvent.LIGHTNING_STOP, lightningStopHandler, false, 0, true);
trace("WC online");
}
private function rocketFireHandler(_arg1:WeaponEvent):void{
var _local2:IEnemy = _arg1.enemyObject;
var _local3:Number = _arg1.enemyObject.getPosition().x;
var _local4:Number = _arg1.enemyObject.getPosition().y;
var _local5:Number = _arg1.towerObject.getPosition().x;
var _local6:Number = _arg1.towerObject.getPosition().y;
var _local7:int = _arg1.towerLevel;
var _local8:Number = _arg1.towerObject.getPosition().rotation;
var _local9:RocketProjectile = new RocketProjectile(_local5, _local6, _local8, _local7, _local2);
addChild(_local9);
WeaponData.instance.weaponArray.push(_local9);
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.weapons.RocketFire", 1, 1, false));
}
public function doRender():void{
var _local1:Array = WeaponData.instance.weaponArray;
var _local2:int;
while (_local2 < _local1.length) {
IWeapon(_local1[_local2]).doRender();
_local2++;
};
}
private function rocketDetonationHandler(_arg1:WeaponEvent):void{
var _local11:IEnemy;
var _local12:Object;
var _local13:Number;
var _local14:Number;
var _local15:Boolean;
var _local16:IEnemy;
var _local17:Number;
var _local18:Number;
var _local2:IWeapon = _arg1.weaponObject;
var _local3:Number = _local2.getPosition().x;
var _local4:Number = _local2.getPosition().y;
var _local5:String = getLevelOfTower(_local2.getLevel());
WeaponData.instance.weaponArray.splice(WeaponData.instance.weaponArray.indexOf(_local2), 1);
_local2.destroy();
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.weapons.RocketExplosion", 0.8, 1, false));
var _local6:Number = WeaponData.instance.rocketSplashRangeTable[_local5];
var _local7:Array = EnemyData.instance.enemyArray;
var _local8:Array = [];
var _local9:int;
while (_local9 < _local7.length) {
_local11 = IEnemy(_local7[_local9]);
_local12 = _local11.getPosition();
_local13 = _local12.x;
_local14 = _local12.y;
_local15 = rangeCheck(_local3, _local4, _local13, _local14, _local6);
if (_local15){
_local8.push(_local11);
};
_local9++;
};
var _local10:Number = WeaponData.instance.damageTable[TowerController.ROCKET][_local5];
_local9 = 0;
while (_local9 < _local8.length) {
_local16 = IEnemy(_local8[_local9]);
_local17 = WeaponData.instance.multiplierTable[TowerController.ROCKET][EnemyController.getTypeOfEnemy(_local16)];
_local18 = (_local10 * _local17);
_local16.doHurt(_local18);
_local9++;
};
}
private function slowdownDetonationHandler(_arg1:WeaponEvent):void{
var _local4:Number;
var _local5:String;
var _local6:MovieClip;
var _local13:IEnemy;
var _local14:Object;
var _local15:Number;
var _local16:Number;
var _local17:Boolean;
var _local18:IEnemy;
var _local19:Number;
var _local20:Number;
var _local2:IWeapon = _arg1.weaponObject;
var _local3:Number = _local2.getPosition().x;
_local4 = _local2.getPosition().y;
_local5 = getLevelOfTower(_local2.getLevel());
WeaponData.instance.weaponArray.splice(WeaponData.instance.weaponArray.indexOf(_local2), 1);
_local2.destroy();
_local6 = new SlowdownExplosion();
addChild(_local6);
_local6.x = _local3;
_local6.y = _local4;
TweenMax.to(_local6, 1, {alpha:0, onComplete:killSlowdownExplosion, onCompleteParams:[_local6]});
var _local7:Number = WeaponData.instance.slowdownSplashRangeTable[_local5];
var _local8:Array = EnemyData.instance.enemyArray;
var _local9:Array = [];
var _local10:int;
while (_local10 < _local8.length) {
_local13 = IEnemy(_local8[_local10]);
_local14 = _local13.getPosition();
_local15 = _local14.x;
_local16 = _local14.y;
_local17 = rangeCheck(_local3, _local4, _local15, _local16, _local7);
if (_local17){
_local9.push(_local13);
};
_local10++;
};
var _local11:Number = WeaponData.instance.damageTable[TowerController.SLOWDOWN][_local5];
var _local12:Number = WeaponData.instance.slowdownDurationTable[_local5];
_local10 = 0;
while (_local10 < _local9.length) {
_local18 = IEnemy(_local9[_local10]);
_local19 = WeaponData.instance.multiplierTable[TowerController.SLOWDOWN][EnemyController.getTypeOfEnemy(_local18)];
_local20 = (_local11 * _local19);
_local18.doSlowdown(_local20, _local12);
_local10++;
};
}
override public function destroy():void{
var _local1:Array = WeaponData.instance.weaponArray;
var _local2:int;
while (_local2 < _local1.length) {
IWeapon(_local1[_local2]).destroy();
_local1[_local2] = null;
_local2++;
};
GameBroadcaster.removeEventListener(WeaponEvent.BLASTER_FIRE, blasterFireHandler);
GameBroadcaster.removeEventListener(WeaponEvent.SLOWDOWN_FIRE, slowdownFireHandler);
GameBroadcaster.removeEventListener(WeaponEvent.SLOWDOWN_DETONATE, slowdownDetonationHandler);
GameBroadcaster.removeEventListener(WeaponEvent.ROCKET_FIRE, rocketFireHandler);
GameBroadcaster.removeEventListener(WeaponEvent.ROCKET_DETONATE, rocketDetonationHandler);
GameBroadcaster.removeEventListener(WeaponEvent.LASER_FIRE, laserFireHandler);
GameBroadcaster.removeEventListener(WeaponEvent.LASER_STOP, laserStopHandler);
GameBroadcaster.removeEventListener(WeaponEvent.LIGHTNING_FIRE, lightningFireHandler);
GameBroadcaster.removeEventListener(WeaponEvent.LIGHTNING_STOP, lightningStopHandler);
WeaponData.instance.emptyArray();
trace("WeaponController destroy");
super.destroy();
}
private function getLevelOfTower(_arg1:int):String{
if (_arg1 > 3){
throw (new Error((("getLevelOfTower: " + _arg1) + " unknown!")));
};
var _local2:String = TowerController.getTowerLevelString(null, _arg1);
return (_local2);
}
private function blasterFireHandler(_arg1:WeaponEvent):void{
var _local2:String = EnemyController.getTypeOfEnemy(_arg1.enemyObject);
var _local3:String = getLevelOfTower(_arg1.towerLevel);
var _local4:Number = WeaponData.instance.damageTable[TowerController.BLASTER][_local3];
var _local5:Number = WeaponData.instance.multiplierTable[TowerController.BLASTER][_local2];
var _local6:Number = (_local4 * _local5);
IEnemy(_arg1.enemyObject).doHurt(_local6);
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.weapons.BlasterFire", 0.4, 1, false));
}
private function laserFireHandler(_arg1:WeaponEvent):void{
var _local2:String = EnemyController.getTypeOfEnemy(_arg1.enemyObject);
var _local3:String = getLevelOfTower(_arg1.towerLevel);
var _local4:LaserBeam = new LaserBeam(_arg1.enemyObject, _arg1.towerObject, _arg1.towerLevel, _arg1.spawnOffset.x, _arg1.spawnOffset.y);
_arg1.spawnOffset.clipRef.addChild(_local4);
WeaponData.instance.weaponArray.push(_local4);
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.weapons.LaserFire", 0.4, 1, false));
}
private function slowdownFireHandler(_arg1:WeaponEvent):void{
var _local2:Number = _arg1.enemyObject.getPosition().x;
var _local3:Number = _arg1.enemyObject.getPosition().y;
var _local4:Number = _arg1.towerObject.getPosition().x;
var _local5:Number = _arg1.towerObject.getPosition().y;
var _local6:int = _arg1.towerLevel;
var _local7:Number = _arg1.towerObject.getPosition().rotation;
var _local8:SlowdownProjectile = new SlowdownProjectile(_local4, _local5, _local7, _local6, _local2, _local3);
addChild(_local8);
WeaponData.instance.weaponArray.push(_local8);
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.weapons.SlowdownFire", 0.5, 1, false));
}
private function rangeCheck(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Boolean{
if (!(((((((_arg3 > (_arg1 - _arg5))) && ((_arg3 < (_arg1 + _arg5))))) && ((_arg4 > (_arg2 - _arg5))))) && ((_arg4 < (_arg2 + _arg5))))){
return (false);
};
var _local6:Number = (((_arg3 - _arg1) * (_arg3 - _arg1)) + ((_arg4 - _arg2) * (_arg4 - _arg2)));
var _local7:Number = (_arg5 * _arg5);
if (_local6 > _local7){
return (false);
};
var _local8:Number = Math.sqrt(_local6);
return (true);
}
private function killSlowdownExplosion(_arg1):void{
removeChild(_arg1);
_arg1 = null;
}
private function initTables(_arg1:XML):void{
var _local2:Dictionary = WeaponData.instance.damageTable;
var _local3:Dictionary = WeaponData.instance.multiplierTable;
_local2[TowerController.BLASTER] = new Dictionary();
_local2[TowerController.BLASTER][TowerController.LEVEL_1] = Number(_arg1.blaster.damage.@level1);
_local2[TowerController.BLASTER][TowerController.LEVEL_2] = Number(_arg1.blaster.damage.@level2);
_local2[TowerController.BLASTER][TowerController.LEVEL_3] = Number(_arg1.blaster.damage.@level3);
_local3[TowerController.BLASTER] = new Dictionary();
_local3[TowerController.BLASTER][EnemyController.MOLEOID] = 1;
_local3[TowerController.BLASTER][EnemyController.AIMSENTRY] = 1;
_local3[TowerController.BLASTER][EnemyController.DOOMBOT] = 1;
_local3[TowerController.BLASTER][EnemyController.JEEP] = 1;
_local3[TowerController.BLASTER][EnemyController.HELICOPTER] = 1;
_local3[TowerController.BLASTER][EnemyController.ATTACKAPC] = 1;
_local3[TowerController.BLASTER][EnemyController.LIGHTTANK] = 1;
_local3[TowerController.BLASTER][EnemyController.CRUISEMISSILE] = 1;
_local3[TowerController.BLASTER][EnemyController.HEAVYTANK] = 1;
_local3[TowerController.BLASTER][EnemyController.MOLEMAN] = 1;
_local3[TowerController.BLASTER][EnemyController.MODOK] = 1;
_local3[TowerController.BLASTER][EnemyController.DRDOOM] = 1;
_local2[TowerController.SLOWDOWN] = new Dictionary();
_local2[TowerController.SLOWDOWN][TowerController.LEVEL_1] = Number(_arg1.slowdown.damage.@level1);
_local2[TowerController.SLOWDOWN][TowerController.LEVEL_2] = Number(_arg1.slowdown.damage.@level2);
_local2[TowerController.SLOWDOWN][TowerController.LEVEL_3] = Number(_arg1.slowdown.damage.@level3);
_local3[TowerController.SLOWDOWN] = new Dictionary();
_local3[TowerController.SLOWDOWN][EnemyController.MOLEOID] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.AIMSENTRY] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.DOOMBOT] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.JEEP] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.HELICOPTER] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.ATTACKAPC] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.LIGHTTANK] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.CRUISEMISSILE] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.HEAVYTANK] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.MOLEMAN] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.MODOK] = 1;
_local3[TowerController.SLOWDOWN][EnemyController.DRDOOM] = 1;
var _local4:Dictionary = WeaponData.instance.slowdownDurationTable;
_local4[TowerController.LEVEL_1] = Number(_arg1.slowdown.duration.@level1);
_local4[TowerController.LEVEL_2] = Number(_arg1.slowdown.duration.@level2);
_local4[TowerController.LEVEL_3] = Number(_arg1.slowdown.duration.@level3);
var _local5:Dictionary = WeaponData.instance.slowdownSplashRangeTable;
_local5[TowerController.LEVEL_1] = Number(_arg1.slowdown.splashdamage.@level1);
_local5[TowerController.LEVEL_2] = Number(_arg1.slowdown.splashdamage.@level2);
_local5[TowerController.LEVEL_3] = Number(_arg1.slowdown.splashdamage.@level3);
_local2[TowerController.ROCKET] = new Dictionary();
_local2[TowerController.ROCKET][TowerController.LEVEL_1] = Number(_arg1.rocket.damage.@level1);
_local2[TowerController.ROCKET][TowerController.LEVEL_2] = Number(_arg1.rocket.damage.@level2);
_local2[TowerController.ROCKET][TowerController.LEVEL_3] = Number(_arg1.rocket.damage.@level3);
_local3[TowerController.ROCKET] = new Dictionary();
_local3[TowerController.ROCKET][EnemyController.MOLEOID] = 1;
_local3[TowerController.ROCKET][EnemyController.AIMSENTRY] = 1;
_local3[TowerController.ROCKET][EnemyController.DOOMBOT] = 1;
_local3[TowerController.ROCKET][EnemyController.JEEP] = 1;
_local3[TowerController.ROCKET][EnemyController.HELICOPTER] = 1;
_local3[TowerController.ROCKET][EnemyController.ATTACKAPC] = 1;
_local3[TowerController.ROCKET][EnemyController.LIGHTTANK] = 1;
_local3[TowerController.ROCKET][EnemyController.CRUISEMISSILE] = 1;
_local3[TowerController.ROCKET][EnemyController.HEAVYTANK] = 1;
_local3[TowerController.ROCKET][EnemyController.MOLEMAN] = 1;
_local3[TowerController.ROCKET][EnemyController.MODOK] = 1;
_local3[TowerController.ROCKET][EnemyController.DRDOOM] = 1;
var _local6:Dictionary = WeaponData.instance.rocketSplashRangeTable;
_local6[TowerController.LEVEL_1] = Number(_arg1.rocket.splashdamage.@level1);
_local6[TowerController.LEVEL_2] = Number(_arg1.rocket.splashdamage.@level2);
_local6[TowerController.LEVEL_3] = Number(_arg1.rocket.splashdamage.@level3);
_local2[TowerController.LASER] = new Dictionary();
_local2[TowerController.LASER][TowerController.LEVEL_1] = Number(_arg1.laser.damage.@level1);
_local2[TowerController.LASER][TowerController.LEVEL_2] = Number(_arg1.laser.damage.@level2);
_local2[TowerController.LASER][TowerController.LEVEL_3] = Number(_arg1.laser.damage.@level3);
_local3[TowerController.LASER] = new Dictionary();
_local3[TowerController.LASER][EnemyController.MOLEOID] = 1;
_local3[TowerController.LASER][EnemyController.AIMSENTRY] = 1;
_local3[TowerController.LASER][EnemyController.DOOMBOT] = 1;
_local3[TowerController.LASER][EnemyController.JEEP] = 1;
_local3[TowerController.LASER][EnemyController.HELICOPTER] = 1;
_local3[TowerController.LASER][EnemyController.ATTACKAPC] = 1;
_local3[TowerController.LASER][EnemyController.LIGHTTANK] = 1;
_local3[TowerController.LASER][EnemyController.CRUISEMISSILE] = 1;
_local3[TowerController.LASER][EnemyController.HEAVYTANK] = 1;
_local3[TowerController.LASER][EnemyController.MOLEMAN] = 1;
_local3[TowerController.LASER][EnemyController.MODOK] = 1;
_local3[TowerController.LASER][EnemyController.DRDOOM] = 1;
_local2[TowerController.LIGHTNING] = new Dictionary();
_local2[TowerController.LIGHTNING][TowerController.LEVEL_1] = Number(_arg1.lightning.damage.@level1);
_local2[TowerController.LIGHTNING][TowerController.LEVEL_2] = Number(_arg1.lightning.damage.@level2);
_local2[TowerController.LIGHTNING][TowerController.LEVEL_3] = Number(_arg1.lightning.damage.@level3);
_local3[TowerController.LIGHTNING] = new Dictionary();
_local3[TowerController.LIGHTNING][EnemyController.MOLEOID] = 1;
_local3[TowerController.LIGHTNING][EnemyController.AIMSENTRY] = 1;
_local3[TowerController.LIGHTNING][EnemyController.DOOMBOT] = 1;
_local3[TowerController.LIGHTNING][EnemyController.JEEP] = 1;
_local3[TowerController.LIGHTNING][EnemyController.HELICOPTER] = 1;
_local3[TowerController.LIGHTNING][EnemyController.ATTACKAPC] = 1;
_local3[TowerController.LIGHTNING][EnemyController.LIGHTTANK] = 1;
_local3[TowerController.LIGHTNING][EnemyController.CRUISEMISSILE] = 1;
_local3[TowerController.LIGHTNING][EnemyController.HEAVYTANK] = 1;
_local3[TowerController.LIGHTNING][EnemyController.MOLEMAN] = 1;
_local3[TowerController.LIGHTNING][EnemyController.MODOK] = 1;
_local3[TowerController.LIGHTNING][EnemyController.DRDOOM] = 1;
trace(((((("Blaster damage: " + _local2[TowerController.BLASTER][TowerController.LEVEL_1]) + ",") + _local2[TowerController.BLASTER][TowerController.LEVEL_2]) + ",") + _local2[TowerController.BLASTER][TowerController.LEVEL_3]));
trace(((((((((((((((((("Slowdown damage: " + _local2[TowerController.SLOWDOWN][TowerController.LEVEL_1]) + ",") + _local2[TowerController.SLOWDOWN][TowerController.LEVEL_2]) + ",") + _local2[TowerController.SLOWDOWN][TowerController.LEVEL_3]) + ", splash: ") + _local5[TowerController.LEVEL_1]) + ",") + _local5[TowerController.LEVEL_2]) + ",") + _local5[TowerController.LEVEL_3]) + ", duration: ") + _local4[TowerController.LEVEL_1]) + ",") + _local4[TowerController.LEVEL_2]) + ", ") + _local4[TowerController.LEVEL_3]));
trace(((((((((((("Rocket damage: " + _local2[TowerController.ROCKET][TowerController.LEVEL_1]) + ",") + _local2[TowerController.ROCKET][TowerController.LEVEL_2]) + ",") + _local2[TowerController.ROCKET][TowerController.LEVEL_3]) + ", splash: ") + _local6[TowerController.LEVEL_1]) + ",") + _local6[TowerController.LEVEL_2]) + ",") + _local6[TowerController.LEVEL_3]));
trace(((((("Laser damage: " + _local2[TowerController.LASER][TowerController.LEVEL_1]) + ",") + _local2[TowerController.LASER][TowerController.LEVEL_2]) + ",") + _local2[TowerController.LASER][TowerController.LEVEL_3]));
trace(((((("Lightning damage: " + _local2[TowerController.LIGHTNING][TowerController.LEVEL_1]) + ",") + _local2[TowerController.LIGHTNING][TowerController.LEVEL_2]) + ",") + _local2[TowerController.LIGHTNING][TowerController.LEVEL_3]));
}
public function setEffectsLayer(_arg1:BitmapData):void{
m_drawEffectsLayer = _arg1;
}
private function lightningFireHandler(_arg1:WeaponEvent):void{
var _local2:String = EnemyController.getTypeOfEnemy(_arg1.enemyObject);
var _local3:String = getLevelOfTower(_arg1.towerLevel);
var _local4:LightningBeam = new LightningBeam(_arg1.enemyObject, _arg1.towerObject, _arg1.towerLevel, m_drawEffectsLayer);
addChild(_local4);
WeaponData.instance.weaponArray.push(_local4);
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.weapons.LightningFire", 0.5, 1, false));
}
public function doPhysics():void{
var _local1:Array = WeaponData.instance.weaponArray;
var _local2:int;
while (_local2 < _local1.length) {
IWeapon(_local1[_local2]).doPhysics();
_local2++;
};
}
private function laserStopHandler(_arg1:WeaponEvent):void{
var _local3:String;
var _local4:String;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local2:IWeapon = _arg1.weaponObject;
WeaponData.instance.weaponArray.splice(WeaponData.instance.weaponArray.indexOf(_local2), 1);
_local2.destroy();
if (_arg1.enemyObject != null){
_local3 = EnemyController.getTypeOfEnemy(_arg1.enemyObject);
_local4 = getLevelOfTower(_arg1.towerLevel);
_local5 = WeaponData.instance.damageTable[TowerController.LASER][_local4];
_local6 = WeaponData.instance.multiplierTable[TowerController.LASER][_local3];
_local7 = (_local5 * _local6);
IEnemy(_arg1.enemyObject).doHurt(_local7);
};
}
private function lightningStopHandler(_arg1:WeaponEvent):void{
var _local3:String;
var _local4:String;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local2:IWeapon = _arg1.weaponObject;
WeaponData.instance.weaponArray.splice(WeaponData.instance.weaponArray.indexOf(_local2), 1);
_local2.destroy();
if (_arg1.enemyObject != null){
_local3 = EnemyController.getTypeOfEnemy(_arg1.enemyObject);
_local4 = getLevelOfTower(_arg1.towerLevel);
_local5 = WeaponData.instance.damageTable[TowerController.LIGHTNING][_local4];
_local6 = WeaponData.instance.multiplierTable[TowerController.LIGHTNING][_local3];
_local7 = (_local5 * _local6);
IEnemy(_arg1.enemyObject).doHurt(_local7);
};
}
}
}//package game.weapons
Section 351
//WeaponData (game.weapons.WeaponData)
package game.weapons {
import flash.events.*;
import flash.utils.*;
public class WeaponData extends EventDispatcher {
private var m_slowdownDurationTable:Dictionary;
private var m_weaponArray:Array;
private var m_slowdownSplashRangeTable:Dictionary;
private var m_damageTable:Dictionary;
private var m_multiplierTable:Dictionary;
private var m_rocketSplashRangeTable:Dictionary;
private static var m_instance:WeaponData = new (WeaponData);
;
public function WeaponData(){
if (m_instance){
throw (new Error("Error: WeaponData is a Singleton, and can only be accessed through WeaponData.instance"));
};
m_instance = this;
m_weaponArray = [];
m_damageTable = new Dictionary();
m_multiplierTable = new Dictionary();
m_slowdownDurationTable = new Dictionary();
m_slowdownSplashRangeTable = new Dictionary();
m_rocketSplashRangeTable = new Dictionary();
}
public function get slowdownSplashRangeTable():Dictionary{
return (m_slowdownSplashRangeTable);
}
public function get weaponArray():Array{
return (m_weaponArray);
}
public function emptyArray():void{
m_weaponArray = [];
}
public function get rocketSplashRangeTable():Dictionary{
return (m_rocketSplashRangeTable);
}
public function get multiplierTable():Dictionary{
return (m_multiplierTable);
}
public function get slowdownDurationTable():Dictionary{
return (m_slowdownDurationTable);
}
public function get damageTable():Dictionary{
return (m_damageTable);
}
public static function get instance():WeaponData{
return (m_instance);
}
}
}//package game.weapons
Section 352
//GameController (game.GameController)
package game {
import flash.events.*;
import console.*;
import com.markfennell.sound.*;
import flash.display.*;
import game.achievements.*;
import game.events.*;
import flash.utils.*;
import org.casalib.display.*;
import game.enemies.*;
import game.waves.*;
import game.finance.*;
import game.towers.*;
import game.hud.*;
import game.weapons.*;
import interfaces.*;
import pages.*;
import com.markfennell.display.*;
import game.effects.*;
import game.score.*;
import assets.*;
import game.map.*;
import assets.ui.*;
import gs.easing.*;
import gs.*;
public class GameController extends BasePage implements IGameController {
public const GAME_WON:String = "gameWon";
public const GAME_PAUSED:String = "gamePaused";
public const GAME_PLAYING:String = "gamePlaying";
public const GAME_CLOSING_GAME_OVER:String = "gameClosingGameOver";
public const GAME_LOST:String = "gameLost";
public const GAME_WAITING:String = "gameWaiting";
public const GAME_CLOSING_MAIN_MENU:String = "gameClosingMainMenu";
private var m_HUD:HUDController;
private var m_waveController:WaveController;
private var m_isPaused:Boolean;// = false
private var m_weaponController:WeaponController;
private var m_airEnemies:CasaSprite;
private var m_mapUnderbody:MovieClip;
private var m_mapContainer:CasaSprite;
private var gameWaitingTimer:Timer;
private var m_mapStatic:CasaSprite;
private var m_gameOverTimer:int;
private var m_timeKeeper:TimeKeeper;
private var m_gameMask:MovieClip;
private var m_towerController:TowerController;
private var m_totalLives:int;
private var m_lives:int;
private var m_debugHUD:MovieClip;
private var m_state:String;
private var m_financeController:FinanceController;
private var m_mapFortress:CasaSprite;
private var m_mapAnimated:MovieClip;
private var m_landEnemies:CasaSprite;
private var m_effectsController:EffectsController;
private var m_enemyController:EnemyController;
private var m_HUDRangeDisplay:HUDRangeDisplay;
private var m_scoreController:ScoreController;
public function GameController(){
var _local1 = -17;
var _local2 = 33;
var _local3:XML = EmbeddedData.getData().levels.level[0];
Map.initMap(_local3);
m_waveController = new WaveController();
m_waveController.initWaves(_local3.waves[0]);
m_financeController = new FinanceController();
m_financeController.initFinance(EmbeddedData.getData().finance[0]);
m_scoreController = new ScoreController();
m_mapUnderbody = new Level01Background();
addChild(m_mapUnderbody);
m_mapContainer = new CasaSprite();
addChild(m_mapContainer);
m_mapContainer.x = _local1;
m_mapContainer.y = _local2;
m_gameMask = new GameMask();
m_gameMask.x = 26;
m_gameMask.y = 82;
m_mapStatic = new CasaSprite();
var _local4:MovieClip = new Level01();
m_mapStatic.addChild(_local4);
m_mapContainer.addChild(m_mapStatic);
m_mapFortress = new FortressController();
m_mapContainer.addChild(m_mapFortress);
m_mapFortress.x = 616;
m_mapFortress.y = 224;
m_landEnemies = new CasaSprite();
m_mapContainer.addChild(m_landEnemies);
m_towerController = new TowerController(EmbeddedData.getData().towers[0]);
m_mapContainer.addChild(m_towerController);
m_airEnemies = new CasaSprite();
m_mapContainer.addChild(m_airEnemies);
m_enemyController = new EnemyController(m_landEnemies, m_airEnemies, EmbeddedData.getData().enemies[0]);
m_mapContainer.addChild(m_enemyController);
m_weaponController = new WeaponController(EmbeddedData.getData().weapons[0]);
m_mapContainer.addChild(m_weaponController);
m_effectsController = new EffectsController(m_mapStatic);
m_mapContainer.addChild(m_effectsController);
m_weaponController.setEffectsLayer(m_effectsController.getDrawEffectsLayer());
m_mapAnimated = new Level01_animated();
m_mapContainer.addChild(m_mapAnimated);
m_mapAnimated.mouseEnabled = false;
m_mapAnimated.mouseChildren = false;
m_HUDRangeDisplay = new HUDRangeDisplay();
m_mapContainer.addChild(m_HUDRangeDisplay);
m_ui = new MovieClip();
addChild(m_ui);
m_ui.mouseEnabled = false;
m_ui.x = 11;
m_ui.y = 61;
var _local5 = 24;
var _local6 = 400;
m_HUD = new HUDController(m_mapStatic, (_local1 - _local5), (_local2 - _local6), EmbeddedData.getData().bosspopup[0]);
addChild(m_HUD);
m_HUD.x = _local5;
m_HUD.y = _local6;
m_waveController.calculateWaveTimes();
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_KILLED, onEnemyKilled, false, 0, true);
GameBroadcaster.addEventListener(EnemyEvent.ENEMY_OBJECTIVE, onEnemyObjective, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.START_GAME, startGameHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.GO_TO_MAIN_MENU, gotoMainMenuHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.GO_TO_GAME_OVER, gotoGameOverHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.PAUSE_GAMEPLAY, pauseGameplayHandler, false, 0, true);
GameBroadcaster.addEventListener(GameEvent.RESUME_GAMEPLAY, resumeGameplayHandler, false, 0, true);
m_state = GAME_WAITING;
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.CHOOSE_DIFFICULTY));
}
override public function destroy():void{
trace("GameController DESTROY");
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_KILLED, onEnemyKilled);
GameBroadcaster.removeEventListener(EnemyEvent.ENEMY_OBJECTIVE, onEnemyObjective);
GameBroadcaster.removeEventListener(GameEvent.START_GAME, startGameHandler);
GameBroadcaster.removeEventListener(GameEvent.GO_TO_MAIN_MENU, gotoMainMenuHandler);
GameBroadcaster.removeEventListener(GameEvent.GO_TO_GAME_OVER, gotoGameOverHandler);
GameBroadcaster.removeEventListener(GameEvent.PAUSE_GAMEPLAY, pauseGameplayHandler);
GameBroadcaster.removeEventListener(GameEvent.RESUME_GAMEPLAY, resumeGameplayHandler);
this.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
m_waveController.destroy();
m_financeController.destroy();
m_scoreController.destroy();
m_enemyController.destroy();
m_landEnemies.destroy();
m_airEnemies.destroy();
m_towerController.destroy();
m_weaponController.destroy();
m_effectsController.destroy();
m_HUDRangeDisplay.destroy();
m_HUD.destroy();
m_mapStatic.destroy();
m_mapFortress.destroy();
m_timeKeeper = null;
m_mapContainer.destroy();
super.destroy();
}
private function gotoMainMenuHandler(_arg1:GameEvent):void{
var _local4:String;
m_timeKeeper.stop();
var _local2:int = (m_timeKeeper.getMili() / 1000);
var _local3:int = (m_waveController.currentWaveID() + 1);
if (_local3 < 10){
_local4 = ("level0" + _local3);
} else {
_local4 = ("level" + _local3);
};
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, _local4, "quit");
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "game", "quit", _local2);
m_state = GAME_CLOSING_MAIN_MENU;
animateClosingPlaceholder();
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GAME_COMPLETE_EVALUATE_ACHIEVEMENTS, 0, 0, 0, m_scoreController.mdx(), FinanceData.instance.playerEarnings));
AchievementController.instance.endWatchingGame();
}
private function gotoGameOverHandler(_arg1:GameEvent):void{
m_state = GAME_CLOSING_GAME_OVER;
animateClosingPlaceholder();
}
private function doProcessGameResults():void{
var _local4:String;
m_timeKeeper.stop();
var _local1:int = ((m_timeKeeper.getMili() * m_gameMask.x) % m_gameMask.y);
m_financeController.freeze();
var _local2:int = (m_waveController.currentWaveID() + 1);
var _local3:int = (m_timeKeeper.getMili() / 1000);
if (_local2 < 10){
_local4 = ("level0" + _local2);
} else {
_local4 = ("level" + _local2);
};
if (m_state == GAME_LOST){
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, _local4, "fail");
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "game", "fail", _local3);
if (_local2 == 30){
_local2 = 29;
};
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GAME_LOST_DISPLAY));
} else {
if (m_state == GAME_WON){
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "game", "complete", _local3);
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GAME_WON_DISPLAY));
};
};
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GAME_COMPLETE_EVALUATE_ACHIEVEMENTS, 0, 0, 0, m_scoreController.mdx(), FinanceData.instance.playerEarnings));
AchievementController.instance.endWatchingGame();
}
override public function doPause():void{
m_state = GAME_PAUSED;
m_timeKeeper.stop();
}
override public function doResume():void{
m_state = GAME_PLAYING;
m_timeKeeper.start();
}
private function onEnemyKilled(_arg1:EnemyEvent):void{
if (m_waveController.checkAllWavesComplete()){
if (EnemyData.instance.enemyArray.length == 0){
trace("GC game won");
m_state = GAME_WON;
m_gameOverTimer = 60;
TweenMax.to(m_mapContainer, 2, {alpha:0.3});
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GAME_WON_WAIT));
};
};
}
private function startGameHandler(_arg1:GameEvent):void{
var _local2:String;
AchievementController.instance.beginWatchingGame();
trace(("Game start, difficulty is: " + _arg1.difficulty));
if (_arg1.difficulty == 0){
m_totalLives = 40;
m_waveController.setWaveDifficulty(1);
_local2 = "normal";
} else {
m_totalLives = 20;
m_waveController.setWaveDifficulty(1.1);
_local2 = "epic";
};
m_lives = m_totalLives;
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.LIVES_SET, m_lives, m_totalLives, _arg1.difficulty));
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "difficulty", _local2);
m_state = GAME_PLAYING;
m_waveController.startWaves();
m_timeKeeper = new TimeKeeper();
m_timeKeeper.start();
this.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler, false, 0, true);
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.STARTED, {topPanel:m_HUD.marvelTopPanel, bottomPanel:m_HUD.marvelBottomPanel}));
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.PAUSE_ENABLED));
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.TRANSITION_COMPLETE));
}
private function onEnemyObjective(_arg1:EnemyEvent):void{
var _local2:String = EnemyController.getTypeOfEnemy(_arg1.enemyObject);
if (_local2 == EnemyController.DRDOOM){
m_lives = (m_lives - 40);
} else {
if (_local2 == EnemyController.MODOK){
m_lives = (m_lives - 3);
} else {
if (_local2 == EnemyController.MOLEMAN){
m_lives = (m_lives - 2);
} else {
m_lives--;
};
};
};
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.LIFE_LOST, m_lives, m_totalLives));
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.explosions.EnemyObjective", 1, 1, false, 1));
var _local3:Boolean;
var _local4:Boolean;
if (m_lives <= 0){
_local3 = true;
};
if (m_waveController.checkAllWavesComplete()){
if (EnemyData.instance.enemyArray.length == 0){
_local4 = true;
};
};
if (((_local4) && (!(_local3)))){
trace("GC game over and won, at the time of enemy objective");
m_state = GAME_WON;
m_gameOverTimer = 60;
m_mapContainer.blendMode = BlendMode.LAYER;
TweenMax.to(m_mapContainer, 2, {alpha:0.3});
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GAME_WON_WAIT));
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.PAUSE_DISABLED));
} else {
if (_local3){
trace("GC game over and lost, at the time of enemy objective");
m_state = GAME_LOST;
m_gameOverTimer = 60;
m_mapContainer.blendMode = BlendMode.LAYER;
TweenMax.to(m_mapContainer, 2, {colorMatrixFilter:{colorize:0xCCCCCC, amount:1}});
GameBroadcaster.dispatchEvent(new GameEvent(GameEvent.GAME_LOST_WAIT));
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.PAUSE_DISABLED));
};
};
}
private function resumeGameplayHandler(_arg1:GameEvent):void{
doResume();
}
private function animateClosingPlaceholder():void{
if (m_state == GAME_CLOSING_MAIN_MENU){
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.DISPLAY_INTRO));
} else {
if (m_state == GAME_CLOSING_GAME_OVER){
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.DISPLAY_INTRO));
};
};
}
private function pauseGameplayHandler(_arg1:GameEvent):void{
doPause();
}
private function onEnterFrameHandler(_arg1:Event):void{
if (m_state == GAME_PLAYING){
m_waveController.doPhysics();
m_enemyController.doPhysics();
m_enemyController.doRender();
m_towerController.doPhysics();
m_towerController.doRender();
m_effectsController.doPhysics();
m_effectsController.doRender();
m_weaponController.doPhysics();
m_weaponController.doRender();
m_HUD.doPhysics();
m_HUD.doRender();
} else {
if ((((m_state == GAME_LOST)) || ((m_state == GAME_WON)))){
m_gameOverTimer--;
if (m_gameOverTimer == 0){
doProcessGameResults();
};
m_HUD.doPhysics();
m_HUD.doRender();
};
};
}
}
}//package game
Section 353
//Map (game.Map)
package game {
public class Map {
public static const GOAL:int = 1;
public static const SPAWN:int = 3;
public static const PATH:int = 2;
public static const BUILDABLE:int = 4;
public static const BACKGROUND:int = 0;
public static var tileH:int;
public static var tileHalfH:int;
public static var tileW:int;
private static var m_mapArray:Array;
private static var m_routeArray:Array;
public static var tileHalfW:int;
public static function getRoutes():Array{
return (m_routeArray);
}
public static function getMap():Array{
return (m_mapArray);
}
public static function initMap(_arg1:XML):void{
var _local5:int;
var _local6:int;
var _local7:Object;
var _local2:XML = _arg1;
tileW = int(_local2.cell.@width);
tileH = int(_local2.cell.@height);
tileHalfW = (tileW / 2);
tileHalfH = (tileH / 2);
m_mapArray = [];
var _local3:int;
while (_local3 < _local2.map.y.length()) {
m_mapArray[_local3] = [];
_local5 = 0;
while (_local5 < _local2.map.y[_local3].x.length()) {
m_mapArray[_local3][_local5] = int(_local2.map.y[_local3].x[_local5]);
_local5++;
};
_local3++;
};
m_routeArray = [];
var _local4:int;
while (_local4 < _local2.routes.route.length()) {
m_routeArray[_local4] = [];
_local6 = 0;
while (_local6 < _local2.routes.route[_local4].cell.length()) {
_local7 = {};
_local7.x = int(_local2.routes.route[_local4].cell[_local6].x);
_local7.y = int(_local2.routes.route[_local4].cell[_local6].y);
m_routeArray[_local4][_local6] = _local7;
_local6++;
};
_local4++;
};
}
}
}//package game
Section 354
//Back (gs.easing.Back)
package gs.easing {
public class Back {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2));
};
_arg1 = (_arg1 - 2);
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2));
}
}
}//package gs.easing
Section 355
//Strong (gs.easing.Strong)
package gs.easing {
public class Strong {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2));
}
}
}//package gs.easing
Section 356
//TweenEvent (gs.events.TweenEvent)
package gs.events {
import flash.events.*;
public class TweenEvent extends Event {
public var info:Object;
public static const UPDATE:String = "update";
public static const START:String = "start";
public static const version:Number = 0.9;
public static const COMPLETE:String = "complete";
public function TweenEvent(_arg1:String, _arg2:Object=null, _arg3:Boolean=false, _arg4:Boolean=false){
super(_arg1, _arg3, _arg4);
this.info = _arg2;
}
override public function clone():Event{
return (new TweenEvent(this.type, this.info, this.bubbles, this.cancelable));
}
}
}//package gs.events
Section 357
//AutoAlphaPlugin (gs.plugins.AutoAlphaPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class AutoAlphaPlugin extends TweenPlugin {
protected var _tweenVisible:Boolean;
protected var _target:Object;
protected var _visible:Boolean;
protected var _tween:TweenLite;
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function AutoAlphaPlugin(){
this.propName = "autoAlpha";
this.overwriteProps = ["alpha", "visible"];
this.onComplete = onCompleteTween;
}
override public function killProps(_arg1:Object):void{
super.killProps(_arg1);
_tweenVisible = !(Boolean(("visible" in _arg1)));
}
public function onCompleteTween():void{
if (((((_tweenVisible) && (!((_tween.vars.runBackwards == true))))) && ((_tween.ease == _tween.vars.ease)))){
_target.visible = _visible;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_tween = _arg3;
_visible = Boolean(!((_arg2 == 0)));
_tweenVisible = true;
addTween(_arg1, "alpha", _arg1.alpha, _arg2, "alpha");
return (true);
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
if (((!((_target.visible == true))) && (_tweenVisible))){
_target.visible = true;
};
}
}
}//package gs.plugins
Section 358
//BevelFilterPlugin (gs.plugins.BevelFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class BevelFilterPlugin extends FilterPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function BevelFilterPlugin(){
this.propName = "bevelFilter";
this.overwriteProps = ["bevelFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = BevelFilter;
initFilter(_arg2, new BevelFilter(0, 0, 0xFFFFFF, 0.5, 0, 0.5, 2, 2, 0, ((_arg2.quality) || (2))));
return (true);
}
}
}//package gs.plugins
Section 359
//BezierPlugin (gs.plugins.BezierPlugin)
package gs.plugins {
import gs.*;
import gs.utils.tween.*;
public class BezierPlugin extends TweenPlugin {
protected var _future:Object;
protected var _orient:Boolean;
protected var _orientData:Array;
protected var _target:Object;
protected var _beziers:Object;
protected static const _RAD2DEG:Number = 57.2957795130823;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function BezierPlugin(){
_future = {};
super();
this.propName = "bezier";
this.overwriteProps = [];
}
override public function killProps(_arg1:Object):void{
var _local2:String;
for (_local2 in _beziers) {
if ((_local2 in _arg1)){
delete _beziers[_local2];
};
};
super.killProps(_arg1);
}
protected function init(_arg1:TweenLite, _arg2:Array, _arg3:Boolean):void{
var _local5:int;
var _local6:String;
_target = _arg1.target;
if (_arg1.exposedVars.orientToBezier == true){
_orientData = [["x", "y", "rotation", 0]];
_orient = true;
} else {
if ((_arg1.exposedVars.orientToBezier is Array)){
_orientData = _arg1.exposedVars.orientToBezier;
_orient = true;
};
};
var _local4:Object = {};
_local5 = 0;
while (_local5 < _arg2.length) {
for (_local6 in _arg2[_local5]) {
if (_local4[_local6] == undefined){
_local4[_local6] = [_arg1.target[_local6]];
};
if (typeof(_arg2[_local5][_local6]) == "number"){
_local4[_local6].push(_arg2[_local5][_local6]);
} else {
_local4[_local6].push((_arg1.target[_local6] + Number(_arg2[_local5][_local6])));
};
};
_local5++;
};
for (_local6 in _local4) {
this.overwriteProps[this.overwriteProps.length] = _local6;
if (_arg1.exposedVars[_local6] != undefined){
if (typeof(_arg1.exposedVars[_local6]) == "number"){
_local4[_local6].push(_arg1.exposedVars[_local6]);
} else {
_local4[_local6].push((_arg1.target[_local6] + Number(_arg1.exposedVars[_local6])));
};
delete _arg1.exposedVars[_local6];
_local5 = (_arg1.tweens.length - 1);
while (_local5 > -1) {
if (_arg1.tweens[_local5].name == _local6){
_arg1.tweens.splice(_local5, 1);
};
_local5--;
};
};
};
_beziers = parseBeziers(_local4, _arg3);
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (!(_arg2 is Array)){
return (false);
};
init(_arg3, (_arg2 as Array), false);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:String;
var _local4:Object;
var _local5:Number;
var _local6:uint;
var _local7:Number;
var _local8:int;
var _local9:Object;
var _local10:Boolean;
var _local11:Number;
var _local12:Number;
var _local13:Array;
var _local14:Number;
if (_arg1 == 1){
for (_local3 in _beziers) {
_local2 = (_beziers[_local3].length - 1);
_target[_local3] = _beziers[_local3][_local2][2];
};
} else {
for (_local3 in _beziers) {
_local6 = _beziers[_local3].length;
if (_arg1 < 0){
_local2 = 0;
} else {
if (_arg1 >= 1){
_local2 = (_local6 - 1);
} else {
_local2 = int((_local6 * _arg1));
};
};
_local5 = ((_arg1 - (_local2 * (1 / _local6))) * _local6);
_local4 = _beziers[_local3][_local2];
if (this.round){
_local7 = (_local4[0] + (_local5 * (((2 * (1 - _local5)) * (_local4[1] - _local4[0])) + (_local5 * (_local4[2] - _local4[0])))));
_local8 = ((_local7)<0) ? -1 : 1;
_target[_local3] = ((((_local7 % 1) * _local8))>0.5) ? (int(_local7) + _local8) : int(_local7);
} else {
_target[_local3] = (_local4[0] + (_local5 * (((2 * (1 - _local5)) * (_local4[1] - _local4[0])) + (_local5 * (_local4[2] - _local4[0])))));
};
};
};
if (_orient){
_local9 = _target;
_local10 = this.round;
_target = _future;
this.round = false;
_orient = false;
this.changeFactor = (_arg1 + 0.01);
_target = _local9;
this.round = _local10;
_orient = true;
_local2 = 0;
while (_local2 < _orientData.length) {
_local13 = _orientData[_local2];
_local14 = ((_local13[3]) || (0));
_local11 = (_future[_local13[0]] - _target[_local13[0]]);
_local12 = (_future[_local13[1]] - _target[_local13[1]]);
_target[_local13[2]] = ((Math.atan2(_local12, _local11) * _RAD2DEG) + _local14);
_local2++;
};
};
}
public static function parseBeziers(_arg1:Object, _arg2:Boolean=false):Object{
var _local3:int;
var _local4:Array;
var _local5:Object;
var _local6:String;
var _local7:Object = {};
if (_arg2){
for (_local6 in _arg1) {
_local4 = _arg1[_local6];
_local5 = [];
_local7[_local6] = _local5;
if (_local4.length > 2){
_local5[_local5.length] = [_local4[0], (_local4[1] - ((_local4[2] - _local4[0]) / 4)), _local4[1]];
_local3 = 1;
while (_local3 < (_local4.length - 1)) {
_local5[_local5.length] = [_local4[_local3], (_local4[_local3] + (_local4[_local3] - _local5[(_local3 - 1)][1])), _local4[(_local3 + 1)]];
_local3++;
};
} else {
_local5[_local5.length] = [_local4[0], ((_local4[0] + _local4[1]) / 2), _local4[1]];
};
};
} else {
for (_local6 in _arg1) {
_local4 = _arg1[_local6];
_local5 = [];
_local7[_local6] = _local5;
if (_local4.length > 3){
_local5[_local5.length] = [_local4[0], _local4[1], ((_local4[1] + _local4[2]) / 2)];
_local3 = 2;
while (_local3 < (_local4.length - 2)) {
_local5[_local5.length] = [_local5[(_local3 - 2)][2], _local4[_local3], ((_local4[_local3] + _local4[(_local3 + 1)]) / 2)];
_local3++;
};
_local5[_local5.length] = [_local5[(_local5.length - 1)][2], _local4[(_local4.length - 2)], _local4[(_local4.length - 1)]];
} else {
if (_local4.length == 3){
_local5[_local5.length] = [_local4[0], _local4[1], _local4[2]];
} else {
if (_local4.length == 2){
_local5[_local5.length] = [_local4[0], ((_local4[0] + _local4[1]) / 2), _local4[1]];
};
};
};
};
};
return (_local7);
}
}
}//package gs.plugins
Section 360
//BezierThroughPlugin (gs.plugins.BezierThroughPlugin)
package gs.plugins {
import gs.*;
public class BezierThroughPlugin extends BezierPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function BezierThroughPlugin(){
this.propName = "bezierThrough";
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (!(_arg2 is Array)){
return (false);
};
init(_arg3, (_arg2 as Array), true);
return (true);
}
}
}//package gs.plugins
Section 361
//BlurFilterPlugin (gs.plugins.BlurFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class BlurFilterPlugin extends FilterPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function BlurFilterPlugin(){
this.propName = "blurFilter";
this.overwriteProps = ["blurFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = BlurFilter;
initFilter(_arg2, new BlurFilter(0, 0, ((_arg2.quality) || (2))));
return (true);
}
}
}//package gs.plugins
Section 362
//ColorMatrixFilterPlugin (gs.plugins.ColorMatrixFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class ColorMatrixFilterPlugin extends FilterPlugin {
protected var _matrix:Array;
protected var _matrixTween:EndArrayPlugin;
public static const API:Number = 1;
public static const VERSION:Number = 1.1;
protected static var _lumG:Number = 0.71516;
protected static var _lumR:Number = 0.212671;
protected static var _idMatrix:Array = [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0];
protected static var _lumB:Number = 0.072169;
public function ColorMatrixFilterPlugin(){
this.propName = "colorMatrixFilter";
this.overwriteProps = ["colorMatrixFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = ColorMatrixFilter;
var _local4:Object = _arg2;
initFilter({remove:_arg2.remove, index:_arg2.index, addFilter:_arg2.addFilter}, new ColorMatrixFilter(_idMatrix.slice()));
_matrix = ColorMatrixFilter(_filter).matrix;
var _local5:Array = [];
if (((!((_local4.matrix == null))) && ((_local4.matrix is Array)))){
_local5 = _local4.matrix;
} else {
if (_local4.relative == true){
_local5 = _matrix.slice();
} else {
_local5 = _idMatrix.slice();
};
_local5 = setBrightness(_local5, _local4.brightness);
_local5 = setContrast(_local5, _local4.contrast);
_local5 = setHue(_local5, _local4.hue);
_local5 = setSaturation(_local5, _local4.saturation);
_local5 = setThreshold(_local5, _local4.threshold);
if (!isNaN(_local4.colorize)){
_local5 = colorize(_local5, _local4.colorize, _local4.amount);
};
};
_matrixTween = new EndArrayPlugin();
_matrixTween.init(_matrix, _local5);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
_matrixTween.changeFactor = _arg1;
ColorMatrixFilter(_filter).matrix = _matrix;
super.changeFactor = _arg1;
}
public static function setSaturation(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
var _local3:Number = (1 - _arg2);
var _local4:Number = (_local3 * _lumR);
var _local5:Number = (_local3 * _lumG);
var _local6:Number = (_local3 * _lumB);
var _local7:Array = [(_local4 + _arg2), _local5, _local6, 0, 0, _local4, (_local5 + _arg2), _local6, 0, 0, _local4, _local5, (_local6 + _arg2), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(_local7, _arg1));
}
public static function setHue(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = (_arg2 * (Math.PI / 180));
var _local3:Number = Math.cos(_arg2);
var _local4:Number = Math.sin(_arg2);
var _local5:Array = [((_lumR + (_local3 * (1 - _lumR))) + (_local4 * -(_lumR))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * -(_lumG))), ((_lumB + (_local3 * -(_lumB))) + (_local4 * (1 - _lumB))), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * 0.143)), ((_lumG + (_local3 * (1 - _lumG))) + (_local4 * 0.14)), ((_lumB + (_local3 * -(_lumB))) + (_local4 * -0.283)), 0, 0, ((_lumR + (_local3 * -(_lumR))) + (_local4 * -((1 - _lumR)))), ((_lumG + (_local3 * -(_lumG))) + (_local4 * _lumG)), ((_lumB + (_local3 * (1 - _lumB))) + (_local4 * _lumB)), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1];
return (applyMatrix(_local5, _arg1));
}
public static function setThreshold(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
var _local3:Array = [(_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), (_lumR * 0x0100), (_lumG * 0x0100), (_lumB * 0x0100), 0, (-256 * _arg2), 0, 0, 0, 1, 0];
return (applyMatrix(_local3, _arg1));
}
public static function applyMatrix(_arg1:Array, _arg2:Array):Array{
var _local6:int;
var _local7:int;
if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){
return (_arg2);
};
var _local3:Array = [];
var _local4:int;
var _local5:int;
_local6 = 0;
while (_local6 < 4) {
_local7 = 0;
while (_local7 < 5) {
if (_local7 == 4){
_local5 = _arg1[(_local4 + 4)];
} else {
_local5 = 0;
};
_local3[(_local4 + _local7)] = (((((_arg1[_local4] * _arg2[_local7]) + (_arg1[(_local4 + 1)] * _arg2[(_local7 + 5)])) + (_arg1[(_local4 + 2)] * _arg2[(_local7 + 10)])) + (_arg1[(_local4 + 3)] * _arg2[(_local7 + 15)])) + _local5);
_local7++;
};
_local4 = (_local4 + 5);
_local6++;
};
return (_local3);
}
public static function colorize(_arg1:Array, _arg2:Number, _arg3:Number=1):Array{
if (isNaN(_arg2)){
return (_arg1);
};
if (isNaN(_arg3)){
_arg3 = 1;
};
var _local4:Number = (((_arg2 >> 16) & 0xFF) / 0xFF);
var _local5:Number = (((_arg2 >> 8) & 0xFF) / 0xFF);
var _local6:Number = ((_arg2 & 0xFF) / 0xFF);
var _local7:Number = (1 - _arg3);
var _local8:Array = [(_local7 + ((_arg3 * _local4) * _lumR)), ((_arg3 * _local4) * _lumG), ((_arg3 * _local4) * _lumB), 0, 0, ((_arg3 * _local5) * _lumR), (_local7 + ((_arg3 * _local5) * _lumG)), ((_arg3 * _local5) * _lumB), 0, 0, ((_arg3 * _local6) * _lumR), ((_arg3 * _local6) * _lumG), (_local7 + ((_arg3 * _local6) * _lumB)), 0, 0, 0, 0, 0, 1, 0];
return (applyMatrix(_local8, _arg1));
}
public static function setBrightness(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = ((_arg2 * 100) - 100);
return (applyMatrix([1, 0, 0, 0, _arg2, 0, 1, 0, 0, _arg2, 0, 0, 1, 0, _arg2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], _arg1));
}
public static function setContrast(_arg1:Array, _arg2:Number):Array{
if (isNaN(_arg2)){
return (_arg1);
};
_arg2 = (_arg2 + 0.01);
var _local3:Array = [_arg2, 0, 0, 0, (128 * (1 - _arg2)), 0, _arg2, 0, 0, (128 * (1 - _arg2)), 0, 0, _arg2, 0, (128 * (1 - _arg2)), 0, 0, 0, 1, 0];
return (applyMatrix(_local3, _arg1));
}
}
}//package gs.plugins
Section 363
//DropShadowFilterPlugin (gs.plugins.DropShadowFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class DropShadowFilterPlugin extends FilterPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function DropShadowFilterPlugin(){
this.propName = "dropShadowFilter";
this.overwriteProps = ["dropShadowFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = DropShadowFilter;
initFilter(_arg2, new DropShadowFilter(0, 45, 0, 0, 0, 0, 1, ((_arg2.quality) || (2)), _arg2.inner, _arg2.knockout, _arg2.hideObject));
return (true);
}
}
}//package gs.plugins
Section 364
//EndArrayPlugin (gs.plugins.EndArrayPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import gs.utils.tween.*;
public class EndArrayPlugin extends TweenPlugin {
protected var _a:Array;
protected var _info:Array;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function EndArrayPlugin(){
_info = [];
super();
this.propName = "endArray";
this.overwriteProps = ["endArray"];
}
public function init(_arg1:Array, _arg2:Array):void{
_a = _arg1;
var _local3:int = (_arg2.length - 1);
while (_local3 > -1) {
if (((!((_arg1[_local3] == _arg2[_local3]))) && (!((_arg1[_local3] == null))))){
_info[_info.length] = new ArrayTweenInfo(_local3, _a[_local3], (_arg2[_local3] - _a[_local3]));
};
_local3--;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((!((_arg1 is Array))) || (!((_arg2 is Array))))){
return (false);
};
init((_arg1 as Array), _arg2);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:ArrayTweenInfo;
var _local4:Number;
var _local5:int;
if (this.round){
_local2 = (_info.length - 1);
while (_local2 > -1) {
_local3 = _info[_local2];
_local4 = (_local3.start + (_local3.change * _arg1));
_local5 = ((_local4)<0) ? -1 : 1;
_a[_local3.index] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4);
_local2--;
};
} else {
_local2 = (_info.length - 1);
while (_local2 > -1) {
_local3 = _info[_local2];
_a[_local3.index] = (_local3.start + (_local3.change * _arg1));
_local2--;
};
};
}
}
}//package gs.plugins
Section 365
//FilterPlugin (gs.plugins.FilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
import gs.utils.tween.*;
public class FilterPlugin extends TweenPlugin {
protected var _remove:Boolean;
protected var _target:Object;
protected var _index:int;
protected var _filter:BitmapFilter;
protected var _type:Class;
public static const VERSION:Number = 1.03;
public static const API:Number = 1;
public function onCompleteTween():void{
var _local1:int;
var _local2:Array;
if (_remove){
_local2 = _target.filters;
if (!(_local2[_index] is _type)){
_local1 = (_local2.length - 1);
while (_local1 > -1) {
if ((_local2[_local1] is _type)){
_local2.splice(_local1, 1);
break;
};
_local1--;
};
} else {
_local2.splice(_index, 1);
};
_target.filters = _local2;
};
}
protected function initFilter(_arg1:Object, _arg2:BitmapFilter):void{
var _local4:String;
var _local5:int;
var _local6:HexColorsPlugin;
var _local3:Array = _target.filters;
_index = -1;
if (_arg1.index != null){
_index = _arg1.index;
} else {
_local5 = (_local3.length - 1);
while (_local5 > -1) {
if ((_local3[_local5] is _type)){
_index = _local5;
break;
};
_local5--;
};
};
if ((((((_index == -1)) || ((_local3[_index] == null)))) || ((_arg1.addFilter == true)))){
_index = ((_arg1.index)!=null) ? _arg1.index : _local3.length;
_local3[_index] = _arg2;
_target.filters = _local3;
};
_filter = _local3[_index];
_remove = Boolean((_arg1.remove == true));
if (_remove){
this.onComplete = onCompleteTween;
};
var _local7:Object = ((_arg1.isTV)==true) ? _arg1.exposedVars : _arg1;
for (_local4 in _local7) {
if (((((((((!((_local4 in _filter))) || ((_filter[_local4] == _local7[_local4])))) || ((_local4 == "remove")))) || ((_local4 == "index")))) || ((_local4 == "addFilter")))){
} else {
if ((((((_local4 == "color")) || ((_local4 == "highlightColor")))) || ((_local4 == "shadowColor")))){
_local6 = new HexColorsPlugin();
_local6.initColor(_filter, _local4, _filter[_local4], _local7[_local4]);
_tweens[_tweens.length] = new TweenInfo(_local6, "changeFactor", 0, 1, _local4, false);
} else {
if ((((((((_local4 == "quality")) || ((_local4 == "inner")))) || ((_local4 == "knockout")))) || ((_local4 == "hideObject")))){
_filter[_local4] = _local7[_local4];
} else {
addTween(_filter, _local4, _filter[_local4], _local7[_local4], _local4);
};
};
};
};
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:TweenInfo;
var _local4:Array = _target.filters;
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
_local3 = _tweens[_local2];
_local3.target[_local3.property] = (_local3.start + (_local3.change * _arg1));
_local2--;
};
if (!(_local4[_index] is _type)){
_index = (_local4.length - 1);
_local2 = (_local4.length - 1);
while (_local2 > -1) {
if ((_local4[_local2] is _type)){
_index = _local2;
break;
};
_local2--;
};
};
_local4[_index] = _filter;
_target.filters = _local4;
}
}
}//package gs.plugins
Section 366
//FramePlugin (gs.plugins.FramePlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class FramePlugin extends TweenPlugin {
protected var _target:MovieClip;
public var frame:int;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function FramePlugin(){
this.propName = "frame";
this.overwriteProps = ["frame"];
this.round = true;
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((!((_arg1 is MovieClip))) || (isNaN(_arg2)))){
return (false);
};
_target = (_arg1 as MovieClip);
this.frame = _target.currentFrame;
addTween(this, "frame", this.frame, _arg2, "frame");
return (true);
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_target.gotoAndStop(this.frame);
}
}
}//package gs.plugins
Section 367
//GlowFilterPlugin (gs.plugins.GlowFilterPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.filters.*;
public class GlowFilterPlugin extends FilterPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function GlowFilterPlugin(){
this.propName = "glowFilter";
this.overwriteProps = ["glowFilter"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_type = GlowFilter;
initFilter(_arg2, new GlowFilter(0xFFFFFF, 0, 0, 0, ((_arg2.strength) || (1)), ((_arg2.quality) || (2)), _arg2.inner, _arg2.knockout));
return (true);
}
}
}//package gs.plugins
Section 368
//HexColorsPlugin (gs.plugins.HexColorsPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class HexColorsPlugin extends TweenPlugin {
protected var _colors:Array;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function HexColorsPlugin(){
this.propName = "hexColors";
this.overwriteProps = [];
_colors = [];
}
override public function killProps(_arg1:Object):void{
var _local2:int = (_colors.length - 1);
while (_local2 > -1) {
if (_arg1[_colors[_local2][1]] != undefined){
_colors.splice(_local2, 1);
};
_local2--;
};
super.killProps(_arg1);
}
public function initColor(_arg1:Object, _arg2:String, _arg3:uint, _arg4:uint):void{
var _local5:Number;
var _local6:Number;
var _local7:Number;
if (_arg3 != _arg4){
_local5 = (_arg3 >> 16);
_local6 = ((_arg3 >> 8) & 0xFF);
_local7 = (_arg3 & 0xFF);
_colors[_colors.length] = [_arg1, _arg2, _local5, ((_arg4 >> 16) - _local5), _local6, (((_arg4 >> 8) & 0xFF) - _local6), _local7, ((_arg4 & 0xFF) - _local7)];
this.overwriteProps[this.overwriteProps.length] = _arg2;
};
}
override public function set changeFactor(_arg1:Number):void{
var _local2:int;
var _local3:Array;
_local2 = (_colors.length - 1);
while (_local2 > -1) {
_local3 = _colors[_local2];
_local3[0][_local3[1]] = ((((_local3[2] + (_arg1 * _local3[3])) << 16) | ((_local3[4] + (_arg1 * _local3[5])) << 8)) | (_local3[6] + (_arg1 * _local3[7])));
_local2--;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
var _local4:String;
for (_local4 in _arg2) {
initColor(_arg1, _local4, uint(_arg1[_local4]), uint(_arg2[_local4]));
};
return (true);
}
}
}//package gs.plugins
Section 369
//RemoveTintPlugin (gs.plugins.RemoveTintPlugin)
package gs.plugins {
public class RemoveTintPlugin extends TintPlugin {
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function RemoveTintPlugin(){
this.propName = "removeTint";
}
}
}//package gs.plugins
Section 370
//RoundPropsPlugin (gs.plugins.RoundPropsPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class RoundPropsPlugin extends TweenPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function RoundPropsPlugin(){
this.propName = "roundProps";
this.overwriteProps = [];
this.round = true;
}
public function add(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number):void{
addTween(_arg1, _arg2, _arg3, (_arg3 + _arg4), _arg2);
this.overwriteProps[this.overwriteProps.length] = _arg2;
}
}
}//package gs.plugins
Section 371
//ShortRotationPlugin (gs.plugins.ShortRotationPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class ShortRotationPlugin extends TweenPlugin {
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function ShortRotationPlugin(){
this.propName = "shortRotation";
this.overwriteProps = [];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
var _local4:String;
if (typeof(_arg2) == "number"){
trace("WARNING: You appear to be using the old shortRotation syntax. Instead of passing a number, please pass an object with properties that correspond to the rotations values For example, TweenMax.to(mc, 2, {shortRotation:{rotationX:-170, rotationY:25}})");
return (false);
};
for (_local4 in _arg2) {
initRotation(_arg1, _local4, _arg1[_local4], _arg2[_local4]);
};
return (true);
}
public function initRotation(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number):void{
var _local5:Number = ((_arg4 - _arg3) % 360);
if (((_arg4 - _arg3) % 360) != (_local5 % 180)){
_local5 = ((_local5)<0) ? (_local5 + 360) : (_local5 - 360);
};
addTween(_arg1, _arg2, _arg3, (_arg3 + _local5), _arg2);
this.overwriteProps[this.overwriteProps.length] = _arg2;
}
}
}//package gs.plugins
Section 372
//TintPlugin (gs.plugins.TintPlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.geom.*;
import gs.utils.tween.*;
public class TintPlugin extends TweenPlugin {
protected var _target:DisplayObject;
protected var _ct:ColorTransform;
protected var _ignoreAlpha:Boolean;
public static const VERSION:Number = 1.1;
public static const API:Number = 1;
protected static var _props:Array = ["redMultiplier", "greenMultiplier", "blueMultiplier", "alphaMultiplier", "redOffset", "greenOffset", "blueOffset", "alphaOffset"];
public function TintPlugin(){
this.propName = "tint";
this.overwriteProps = ["tint"];
}
public function init(_arg1:DisplayObject, _arg2:ColorTransform):void{
var _local3:int;
var _local4:String;
_target = _arg1;
_ct = _target.transform.colorTransform;
_local3 = (_props.length - 1);
while (_local3 > -1) {
_local4 = _props[_local3];
if (_ct[_local4] != _arg2[_local4]){
_tweens[_tweens.length] = new TweenInfo(_ct, _local4, _ct[_local4], (_arg2[_local4] - _ct[_local4]), "tint", false);
};
_local3--;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (!(_arg1 is DisplayObject)){
return (false);
};
var _local4:ColorTransform = new ColorTransform();
if (((!((_arg2 == null))) && (!((_arg3.exposedVars.removeTint == true))))){
_local4.color = uint(_arg2);
};
_ignoreAlpha = true;
init((_arg1 as DisplayObject), _local4);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
var _local2:ColorTransform;
updateTweens(_arg1);
if (_ignoreAlpha){
_local2 = _target.transform.colorTransform;
_ct.alphaMultiplier = _local2.alphaMultiplier;
_ct.alphaOffset = _local2.alphaOffset;
};
_target.transform.colorTransform = _ct;
}
}
}//package gs.plugins
Section 373
//TweenPlugin (gs.plugins.TweenPlugin)
package gs.plugins {
import gs.*;
import gs.utils.tween.*;
public class TweenPlugin {
public var overwriteProps:Array;
protected var _tweens:Array;
public var propName:String;
public var onComplete:Function;
public var round:Boolean;
protected var _changeFactor:Number;// = 0
public static const VERSION:Number = 1.03;
public static const API:Number = 1;
public function TweenPlugin(){
_tweens = [];
super();
}
protected function updateTweens(_arg1:Number):void{
var _local2:int;
var _local3:TweenInfo;
var _local4:Number;
var _local5:int;
if (this.round){
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
_local3 = _tweens[_local2];
_local4 = (_local3.start + (_local3.change * _arg1));
_local5 = ((_local4)<0) ? -1 : 1;
_local3.target[_local3.property] = ((((_local4 % 1) * _local5))>0.5) ? (int(_local4) + _local5) : int(_local4);
_local2--;
};
} else {
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
_local3 = _tweens[_local2];
_local3.target[_local3.property] = (_local3.start + (_local3.change * _arg1));
_local2--;
};
};
}
public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_changeFactor = _arg1;
}
protected function addTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4, _arg5:String=null):void{
var _local6:Number;
if (_arg4 != null){
_local6 = ((typeof(_arg4))=="number") ? (_arg4 - _arg3) : Number(_arg4);
if (_local6 != 0){
_tweens[_tweens.length] = new TweenInfo(_arg1, _arg2, _arg3, _local6, ((_arg5) || (_arg2)), false);
};
};
}
public function killProps(_arg1:Object):void{
var _local2:int;
_local2 = (this.overwriteProps.length - 1);
while (_local2 > -1) {
if ((this.overwriteProps[_local2] in _arg1)){
this.overwriteProps.splice(_local2, 1);
};
_local2--;
};
_local2 = (_tweens.length - 1);
while (_local2 > -1) {
if ((_tweens[_local2].name in _arg1)){
_tweens.splice(_local2, 1);
};
_local2--;
};
}
public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
addTween(_arg1, this.propName, _arg1[this.propName], _arg2, this.propName);
return (true);
}
public function get changeFactor():Number{
return (_changeFactor);
}
public static function activate(_arg1:Array):Boolean{
var _local2:int;
var _local3:Object;
_local2 = (_arg1.length - 1);
while (_local2 > -1) {
_local3 = new (_arg1[_local2]);
TweenLite.plugins[_local3.propName] = _arg1[_local2];
_local2--;
};
return (true);
}
}
}//package gs.plugins
Section 374
//VisiblePlugin (gs.plugins.VisiblePlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
public class VisiblePlugin extends TweenPlugin {
protected var _target:Object;
protected var _visible:Boolean;
protected var _tween:TweenLite;
public static const VERSION:Number = 1;
public static const API:Number = 1;
public function VisiblePlugin(){
this.propName = "visible";
this.overwriteProps = ["visible"];
this.onComplete = onCompleteTween;
}
public function onCompleteTween():void{
if (((!((_tween.vars.runBackwards == true))) && ((_tween.ease == _tween.vars.ease)))){
_target.visible = _visible;
};
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
_target = _arg1;
_tween = _arg3;
_visible = Boolean(_arg2);
return (true);
}
override public function set changeFactor(_arg1:Number):void{
if (_target.visible != true){
_target.visible = true;
};
}
}
}//package gs.plugins
Section 375
//VolumePlugin (gs.plugins.VolumePlugin)
package gs.plugins {
import flash.display.*;
import gs.*;
import flash.media.*;
public class VolumePlugin extends TweenPlugin {
protected var _target:Object;
protected var _st:SoundTransform;
public static const VERSION:Number = 1.01;
public static const API:Number = 1;
public function VolumePlugin(){
this.propName = "volume";
this.overwriteProps = ["volume"];
}
override public function onInitTween(_arg1:Object, _arg2, _arg3:TweenLite):Boolean{
if (((isNaN(_arg2)) || (!(_arg1.hasOwnProperty("soundTransform"))))){
return (false);
};
_target = _arg1;
_st = _target.soundTransform;
addTween(_st, "volume", _st.volume, _arg2, "volume");
return (true);
}
override public function set changeFactor(_arg1:Number):void{
updateTweens(_arg1);
_target.soundTransform = _st;
}
}
}//package gs.plugins
Section 376
//ArrayTweenInfo (gs.utils.tween.ArrayTweenInfo)
package gs.utils.tween {
public class ArrayTweenInfo {
public var change:Number;
public var start:Number;
public var index:uint;
public function ArrayTweenInfo(_arg1:uint, _arg2:Number, _arg3:Number){
this.index = _arg1;
this.start = _arg2;
this.change = _arg3;
}
}
}//package gs.utils.tween
Section 377
//TweenInfo (gs.utils.tween.TweenInfo)
package gs.utils.tween {
public class TweenInfo {
public var start:Number;
public var name:String;
public var change:Number;
public var target:Object;
public var property:String;
public var isPlugin:Boolean;
public function TweenInfo(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean){
this.target = _arg1;
this.property = _arg2;
this.start = _arg3;
this.change = _arg4;
this.name = _arg5;
this.isPlugin = _arg6;
}
}
}//package gs.utils.tween
Section 378
//OverwriteManager (gs.OverwriteManager)
package gs {
import flash.utils.*;
import gs.utils.tween.*;
import flash.errors.*;
public class OverwriteManager {
public static const ALL:int = 1;
public static const NONE:int = 0;
public static const AUTO:int = 2;
public static const CONCURRENT:int = 3;
public static const version:Number = 3.12;
public static var mode:int;
public static var enabled:Boolean;
public static function killVars(_arg1:Object, _arg2:Object, _arg3:Array):void{
var _local4:int;
var _local5:String;
var _local6:TweenInfo;
_local4 = (_arg3.length - 1);
while (_local4 > -1) {
_local6 = _arg3[_local4];
if ((_local6.name in _arg1)){
_arg3.splice(_local4, 1);
} else {
if (((_local6.isPlugin) && ((_local6.name == "_MULTIPLE_")))){
_local6.target.killProps(_arg1);
if (_local6.target.overwriteProps.length == 0){
_arg3.splice(_local4, 1);
};
};
};
_local4--;
};
for (_local5 in _arg1) {
delete _arg2[_local5];
};
}
public static function manageOverwrites(_arg1:TweenLite, _arg2:Array):void{
var _local7:int;
var _local8:TweenLite;
var _local10:Array;
var _local11:Object;
var _local12:int;
var _local13:TweenInfo;
var _local14:Array;
var _local3:Object = _arg1.vars;
var _local4:int = ((_local3.overwrite)==undefined) ? mode : int(_local3.overwrite);
if ((((_local4 < 2)) || ((_arg2 == null)))){
return;
};
var _local5:Number = _arg1.startTime;
var _local6:Array = [];
var _local9 = -1;
_local7 = (_arg2.length - 1);
while (_local7 > -1) {
_local8 = _arg2[_local7];
if (_local8 == _arg1){
_local9 = _local7;
} else {
if ((((((_local7 < _local9)) && ((_local8.startTime <= _local5)))) && (((_local8.startTime + ((_local8.duration * 1000) / _local8.combinedTimeScale)) > _local5)))){
_local6[_local6.length] = _local8;
};
};
_local7--;
};
if ((((_local6.length == 0)) || ((_arg1.tweens.length == 0)))){
return;
};
if (_local4 == AUTO){
_local10 = _arg1.tweens;
_local11 = {};
_local7 = (_local10.length - 1);
while (_local7 > -1) {
_local13 = _local10[_local7];
if (_local13.isPlugin){
if (_local13.name == "_MULTIPLE_"){
_local14 = _local13.target.overwriteProps;
_local12 = (_local14.length - 1);
while (_local12 > -1) {
_local11[_local14[_local12]] = true;
_local12--;
};
} else {
_local11[_local13.name] = true;
};
_local11[_local13.target.propName] = true;
} else {
_local11[_local13.name] = true;
};
_local7--;
};
_local7 = (_local6.length - 1);
while (_local7 > -1) {
killVars(_local11, _local6[_local7].exposedVars, _local6[_local7].tweens);
_local7--;
};
} else {
_local7 = (_local6.length - 1);
while (_local7 > -1) {
_local6[_local7].enabled = false;
_local7--;
};
};
}
public static function init(_arg1:int=2):int{
if (TweenLite.version < 10.09){
trace("TweenLite warning: Your TweenLite class needs to be updated to work with OverwriteManager (or you may need to clear your ASO files). Please download and install the latest version from http://www.tweenlite.com.");
};
TweenLite.overwriteManager = OverwriteManager;
mode = _arg1;
enabled = true;
return (mode);
}
}
}//package gs
Section 379
//TweenLite (gs.TweenLite)
package gs {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import gs.plugins.*;
import gs.utils.tween.*;
public class TweenLite {
public var started:Boolean;
public var delay:Number;
protected var _hasUpdate:Boolean;
protected var _hasPlugins:Boolean;
public var initted:Boolean;
public var active:Boolean;
public var startTime:Number;
public var target:Object;
public var duration:Number;
public var gc:Boolean;
public var tweens:Array;
public var vars:Object;
public var ease:Function;
public var exposedVars:Object;
public var initTime:Number;
public var combinedTimeScale:Number;
public static const version:Number = 10.092;
private static var _timer:Timer = new Timer(2000);
public static var defaultEase:Function = TweenLite.easeOut;
public static var plugins:Object = {};
public static var currentTime:uint;
public static var masterList:Dictionary = new Dictionary(false);
protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, persist:1, renderOnStart:1, proxiedEase:1, easeParams:1, yoyo:1, loop:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, orientToBezier:1, timeScale:1};
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
public static var timingSprite:Sprite = new Sprite();
public static var overwriteManager:Object;
private static var _tlInitted:Boolean;
public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){
if (_arg1 == null){
return;
};
if (!_tlInitted){
TweenPlugin.activate([TintPlugin, RemoveTintPlugin, FramePlugin, AutoAlphaPlugin, VisiblePlugin, VolumePlugin, EndArrayPlugin]);
currentTime = getTimer();
timingSprite.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true);
if (overwriteManager == null){
overwriteManager = {mode:1, enabled:false};
};
_timer.addEventListener("timer", killGarbage, false, 0, true);
_timer.start();
_tlInitted = true;
};
this.vars = _arg3;
this.duration = ((_arg2) || (0.001));
this.delay = ((_arg3.delay) || (0));
this.combinedTimeScale = ((_arg3.timeScale) || (1));
this.active = Boolean((((_arg2 == 0)) && ((this.delay == 0))));
this.target = _arg1;
if (typeof(this.vars.ease) != "function"){
this.vars.ease = defaultEase;
};
if (this.vars.easeParams != null){
this.vars.proxiedEase = this.vars.ease;
this.vars.ease = easeProxy;
};
this.ease = this.vars.ease;
this.exposedVars = ((this.vars.isTV)==true) ? this.vars.exposedVars : this.vars;
this.tweens = [];
this.initTime = currentTime;
this.startTime = (this.initTime + (this.delay * 1000));
var _local4:int = ((((_arg3.overwrite == undefined)) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite);
if (((!((_arg1 in masterList))) || ((_local4 == 1)))){
masterList[_arg1] = [this];
} else {
masterList[_arg1].push(this);
};
if ((((((this.vars.runBackwards == true)) && (!((this.vars.renderOnStart == true))))) || (this.active))){
initTweenVals();
if (this.active){
render((this.startTime + 1));
} else {
render(this.startTime);
};
if (((((!((this.exposedVars.visible == null))) && ((this.vars.runBackwards == true)))) && ((this.target is DisplayObject)))){
this.target.visible = this.exposedVars.visible;
};
};
}
public function get enabled():Boolean{
return ((this.gc) ? false : true);
}
public function set enabled(_arg1:Boolean):void{
var _local2:Array;
var _local3:Boolean;
var _local4:int;
if (_arg1){
if (!(this.target in masterList)){
masterList[this.target] = [this];
} else {
_local2 = masterList[this.target];
_local4 = (_local2.length - 1);
while (_local4 > -1) {
if (_local2[_local4] == this){
_local3 = true;
break;
};
_local4--;
};
if (!_local3){
_local2[_local2.length] = this;
};
};
};
this.gc = (_arg1) ? false : true;
if (this.gc){
this.active = false;
} else {
this.active = this.started;
};
}
public function clear():void{
this.tweens = [];
this.vars = (this.exposedVars = {ease:this.vars.ease});
_hasUpdate = false;
}
public function render(_arg1:uint):void{
var _local3:Number;
var _local4:TweenInfo;
var _local5:int;
var _local2:Number = ((_arg1 - this.startTime) * 0.001);
if (_local2 >= this.duration){
_local2 = this.duration;
_local3 = ((((this.ease == this.vars.ease)) || ((this.duration == 0.001)))) ? 1 : 0;
} else {
_local3 = this.ease(_local2, 0, 1, this.duration);
};
_local5 = (this.tweens.length - 1);
while (_local5 > -1) {
_local4 = this.tweens[_local5];
_local4.target[_local4.property] = (_local4.start + (_local3 * _local4.change));
_local5--;
};
if (_hasUpdate){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (_local2 == this.duration){
complete(true);
};
}
public function activate():void{
this.started = (this.active = true);
if (!this.initted){
initTweenVals();
};
if (this.vars.onStart != null){
this.vars.onStart.apply(null, this.vars.onStartParams);
};
if (this.duration == 0.001){
this.startTime = (this.startTime - 1);
};
}
public function initTweenVals():void{
var _local1:String;
var _local2:int;
var _local3:*;
var _local4:TweenInfo;
if (((!((this.exposedVars.timeScale == undefined))) && (this.target.hasOwnProperty("timeScale")))){
this.tweens[this.tweens.length] = new TweenInfo(this.target, "timeScale", this.target.timeScale, (this.exposedVars.timeScale - this.target.timeScale), "timeScale", false);
};
for (_local1 in this.exposedVars) {
if ((_local1 in _reservedProps)){
} else {
if ((_local1 in plugins)){
_local3 = new (plugins[_local1]);
if (_local3.onInitTween(this.target, this.exposedVars[_local1], this) == false){
this.tweens[this.tweens.length] = new TweenInfo(this.target, _local1, this.target[_local1], ((typeof(this.exposedVars[_local1]))=="number") ? (this.exposedVars[_local1] - this.target[_local1]) : Number(this.exposedVars[_local1]), _local1, false);
} else {
this.tweens[this.tweens.length] = new TweenInfo(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true);
_hasPlugins = true;
};
} else {
this.tweens[this.tweens.length] = new TweenInfo(this.target, _local1, this.target[_local1], ((typeof(this.exposedVars[_local1]))=="number") ? (this.exposedVars[_local1] - this.target[_local1]) : Number(this.exposedVars[_local1]), _local1, false);
};
};
};
if (this.vars.runBackwards == true){
_local2 = (this.tweens.length - 1);
while (_local2 > -1) {
_local4 = this.tweens[_local2];
this.tweens[_local2].start = (_local4.start + _local4.change);
_local4.change = -(_local4.change);
_local2--;
};
};
if (this.vars.onUpdate != null){
_hasUpdate = true;
};
if (((TweenLite.overwriteManager.enabled) && ((this.target in masterList)))){
overwriteManager.manageOverwrites(this, masterList[this.target]);
};
this.initted = true;
}
protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams)));
}
public function killVars(_arg1:Object):void{
if (overwriteManager.enabled){
overwriteManager.killVars(_arg1, this.exposedVars, this.tweens);
};
}
public function complete(_arg1:Boolean=false):void{
var _local2:int;
if (!_arg1){
if (!this.initted){
initTweenVals();
};
this.startTime = (currentTime - ((this.duration * 1000) / this.combinedTimeScale));
render(currentTime);
return;
};
if (_hasPlugins){
_local2 = (this.tweens.length - 1);
while (_local2 > -1) {
if (((this.tweens[_local2].isPlugin) && (!((this.tweens[_local2].target.onComplete == null))))){
this.tweens[_local2].target.onComplete();
};
_local2--;
};
};
if (this.vars.persist != true){
this.enabled = false;
};
if (this.vars.onComplete != null){
this.vars.onComplete.apply(null, this.vars.onCompleteParams);
};
}
public static function updateAll(_arg1:Event=null):void{
var _local4:Array;
var _local5:int;
var _local6:TweenLite;
var _local2:uint = (currentTime = getTimer());
var _local3:Dictionary = masterList;
for each (_local4 in _local3) {
_local5 = (_local4.length - 1);
while (_local5 > -1) {
_local6 = _local4[_local5];
if (_local6.active){
_local6.render(_local2);
} else {
if (_local6.gc){
_local4.splice(_local5, 1);
} else {
if (_local2 >= _local6.startTime){
_local6.activate();
_local6.render(_local2);
};
};
};
_local5--;
};
};
}
public static function removeTween(_arg1:TweenLite, _arg2:Boolean=true):void{
if (_arg1 != null){
if (_arg2){
_arg1.clear();
};
_arg1.enabled = false;
};
}
public static function killTweensOf(_arg1:Object=null, _arg2:Boolean=false):void{
var _local3:Array;
var _local4:int;
var _local5:TweenLite;
if (((!((_arg1 == null))) && ((_arg1 in masterList)))){
_local3 = masterList[_arg1];
_local4 = (_local3.length - 1);
while (_local4 > -1) {
_local5 = _local3[_local4];
if (((_arg2) && (!(_local5.gc)))){
_local5.complete(false);
};
_local5.clear();
_local4--;
};
delete masterList[_arg1];
};
}
public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
_arg3.runBackwards = true;
return (new TweenLite(_arg1, _arg2, _arg3));
}
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
protected static function killGarbage(_arg1:TimerEvent):void{
var _local3:Object;
var _local2:Dictionary = masterList;
for (_local3 in _local2) {
if (_local2[_local3].length == 0){
delete _local2[_local3];
};
};
}
public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null):TweenLite{
return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, overwrite:0}));
}
public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{
return (new TweenLite(_arg1, _arg2, _arg3));
}
}
}//package gs
Section 380
//TweenMax (gs.TweenMax)
package gs {
import flash.events.*;
import flash.utils.*;
import gs.plugins.*;
import gs.utils.tween.*;
import gs.events.*;
public class TweenMax extends TweenLite implements IEventDispatcher {
protected var _dispatcher:EventDispatcher;
protected var _callbacks:Object;
public var pauseTime:Number;
protected var _repeatCount:Number;
protected var _timeScale:Number;
public static const version:Number = 10.12;
public static var removeTween:Function = TweenLite.removeTween;
private static var _overwriteMode:int = (OverwriteManager.enabled) ? OverwriteManager.mode : OverwriteManager.init();
;
protected static var _pausedTweens:Dictionary = new Dictionary(false);
protected static var _globalTimeScale:Number = 1;
public static var killTweensOf:Function = TweenLite.killTweensOf;
public static var killDelayedCallsTo:Function = TweenLite.killTweensOf;
private static var _activatedPlugins:Boolean = TweenPlugin.activate([TintPlugin, RemoveTintPlugin, FramePlugin, AutoAlphaPlugin, VisiblePlugin, VolumePlugin, EndArrayPlugin, HexColorsPlugin, BlurFilterPlugin, ColorMatrixFilterPlugin, BevelFilterPlugin, DropShadowFilterPlugin, GlowFilterPlugin, RoundPropsPlugin, BezierPlugin, BezierThroughPlugin, ShortRotationPlugin]);
public function TweenMax(_arg1:Object, _arg2:Number, _arg3:Object){
super(_arg1, _arg2, _arg3);
if (TweenLite.version < 10.092){
trace("TweenMax error! Please update your TweenLite class or try deleting your ASO files. TweenMax requires a more recent version. Download updates at http://www.TweenMax.com.");
};
if (((!((this.combinedTimeScale == 1))) && ((this.target is TweenMax)))){
_timeScale = 1;
this.combinedTimeScale = _globalTimeScale;
} else {
_timeScale = this.combinedTimeScale;
this.combinedTimeScale = (this.combinedTimeScale * _globalTimeScale);
};
if (((!((this.combinedTimeScale == 1))) && (!((this.delay == 0))))){
this.startTime = (this.initTime + (this.delay * (1000 / this.combinedTimeScale)));
};
if (((((!((this.vars.onCompleteListener == null))) || (!((this.vars.onUpdateListener == null))))) || (!((this.vars.onStartListener == null))))){
initDispatcher();
if ((((_arg2 == 0)) && ((this.delay == 0)))){
onUpdateDispatcher();
onCompleteDispatcher();
};
};
_repeatCount = 0;
if (((!(isNaN(this.vars.yoyo))) || (!(isNaN(this.vars.loop))))){
this.vars.persist = true;
};
if ((((this.delay == 0)) && (!((this.vars.startAt == null))))){
this.vars.startAt.overwrite = 0;
new TweenMax(this.target, 0, this.vars.startAt);
};
}
public function dispatchEvent(_arg1:Event):Boolean{
if (_dispatcher == null){
return (false);
};
return (_dispatcher.dispatchEvent(_arg1));
}
public function get reversed():Boolean{
return ((this.ease == reverseEase));
}
public function set reversed(_arg1:Boolean):void{
if (this.reversed != _arg1){
reverse();
};
}
public function get progress():Number{
var _local1:Number = (isNaN(this.pauseTime)) ? currentTime : this.pauseTime;
var _local2:Number = (((((_local1 - this.initTime) * 0.001) - (this.delay / this.combinedTimeScale)) / this.duration) * this.combinedTimeScale);
if (_local2 > 1){
return (1);
};
if (_local2 < 0){
return (0);
};
return (_local2);
}
override public function set enabled(_arg1:Boolean):void{
if (!_arg1){
_pausedTweens[this] = null;
delete _pausedTweens[this];
};
super.enabled = _arg1;
if (_arg1){
this.combinedTimeScale = (_timeScale * _globalTimeScale);
};
}
protected function onStartDispatcher(... _args):void{
if (_callbacks.onStart != null){
_callbacks.onStart.apply(null, this.vars.onStartParams);
};
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.START));
}
public function setDestination(_arg1:String, _arg2, _arg3:Boolean=true):void{
var _local5:int;
var _local6:TweenInfo;
var _local7:Object;
var _local8:Object;
var _local9:Array;
var _local10:Boolean;
var _local11:Array;
var _local12:Object;
var _local4:Number = this.progress;
if (this.initted){
if (!_arg3){
_local5 = (this.tweens.length - 1);
while (_local5 > -1) {
_local6 = this.tweens[_local5];
if (_local6.name == _arg1){
_local6.target[_local6.property] = _local6.start;
};
_local5--;
};
};
_local7 = this.vars;
_local8 = this.exposedVars;
_local9 = this.tweens;
_local10 = _hasPlugins;
this.tweens = [];
this.vars = (this.exposedVars = {});
this.vars[_arg1] = _arg2;
initTweenVals();
if (((!((this.ease == reverseEase))) && ((_local7.ease is Function)))){
this.ease = _local7.ease;
};
if (((_arg3) && (!((_local4 == 0))))){
adjustStartValues();
};
_local11 = this.tweens;
this.vars = _local7;
this.exposedVars = _local8;
this.tweens = _local9;
_local12 = {};
_local12[_arg1] = true;
_local5 = (this.tweens.length - 1);
while (_local5 > -1) {
_local6 = this.tweens[_local5];
if (_local6.name == _arg1){
this.tweens.splice(_local5, 1);
} else {
if (((_local6.isPlugin) && ((_local6.name == "_MULTIPLE_")))){
_local6.target.killProps(_local12);
if (_local6.target.overwriteProps.length == 0){
this.tweens.splice(_local5, 1);
};
};
};
_local5--;
};
this.tweens = this.tweens.concat(_local11);
_hasPlugins = Boolean(((_local10) || (_hasPlugins)));
};
this.vars[_arg1] = (this.exposedVars[_arg1] = _arg2);
}
override public function initTweenVals():void{
var _local1:int;
var _local2:int;
var _local3:String;
var _local4:String;
var _local5:Array;
var _local6:Object;
var _local7:TweenInfo;
if (((!((this.vars.startAt == null))) && (!((this.delay == 0))))){
this.vars.startAt.overwrite = 0;
new TweenMax(this.target, 0, this.vars.startAt);
};
super.initTweenVals();
if ((((this.exposedVars.roundProps is Array)) && (!((TweenLite.plugins.roundProps == null))))){
_local5 = this.exposedVars.roundProps;
_local1 = (_local5.length - 1);
while (_local1 > -1) {
_local3 = _local5[_local1];
_local2 = (this.tweens.length - 1);
while (_local2 > -1) {
_local7 = this.tweens[_local2];
if (_local7.name == _local3){
if (_local7.isPlugin){
_local7.target.round = true;
} else {
if (_local6 == null){
_local6 = new TweenLite.plugins.roundProps();
_local6.add(_local7.target, _local3, _local7.start, _local7.change);
_hasPlugins = true;
this.tweens[_local2] = new TweenInfo(_local6, "changeFactor", 0, 1, _local3, true);
} else {
_local6.add(_local7.target, _local3, _local7.start, _local7.change);
this.tweens.splice(_local2, 1);
};
};
} else {
if (((((_local7.isPlugin) && ((_local7.name == "_MULTIPLE_")))) && (!(_local7.target.round)))){
_local4 = ((" " + _local7.target.overwriteProps.join(" ")) + " ");
if (_local4.indexOf(((" " + _local3) + " ")) != -1){
_local7.target.round = true;
};
};
};
_local2--;
};
_local1--;
};
};
}
public function restart(_arg1:Boolean=false):void{
if (_arg1){
this.initTime = currentTime;
this.startTime = (currentTime + (this.delay * (1000 / this.combinedTimeScale)));
} else {
this.startTime = currentTime;
this.initTime = (currentTime - (this.delay * (1000 / this.combinedTimeScale)));
};
_repeatCount = 0;
if (this.target != this.vars.onComplete){
render(this.startTime);
};
this.pauseTime = NaN;
_pausedTweens[this] = null;
delete _pausedTweens[this];
this.enabled = true;
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
if (_dispatcher != null){
_dispatcher.removeEventListener(_arg1, _arg2, _arg3);
};
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
if (_dispatcher == null){
initDispatcher();
};
if ((((_arg1 == TweenEvent.UPDATE)) && (!((this.vars.onUpdate == onUpdateDispatcher))))){
this.vars.onUpdate = onUpdateDispatcher;
_hasUpdate = true;
};
_dispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
protected function adjustStartValues():void{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:TweenInfo;
var _local6:int;
var _local1:Number = this.progress;
if (_local1 != 0){
_local2 = this.ease(_local1, 0, 1, 1);
_local3 = (1 / (1 - _local2));
_local6 = (this.tweens.length - 1);
while (_local6 > -1) {
_local5 = this.tweens[_local6];
_local4 = (_local5.start + _local5.change);
if (_local5.isPlugin){
_local5.change = ((_local4 - _local2) * _local3);
} else {
_local5.change = ((_local4 - _local5.target[_local5.property]) * _local3);
};
_local5.start = (_local4 - _local5.change);
_local6--;
};
};
}
override public function render(_arg1:uint):void{
var _local3:Number;
var _local4:TweenInfo;
var _local5:int;
var _local2:Number = (((_arg1 - this.startTime) * 0.001) * this.combinedTimeScale);
if (_local2 >= this.duration){
_local2 = this.duration;
_local3 = ((((this.ease == this.vars.ease)) || ((this.duration == 0.001)))) ? 1 : 0;
} else {
_local3 = this.ease(_local2, 0, 1, this.duration);
};
_local5 = (this.tweens.length - 1);
while (_local5 > -1) {
_local4 = this.tweens[_local5];
_local4.target[_local4.property] = (_local4.start + (_local3 * _local4.change));
_local5--;
};
if (_hasUpdate){
this.vars.onUpdate.apply(null, this.vars.onUpdateParams);
};
if (_local2 == this.duration){
complete(true);
};
}
protected function initDispatcher():void{
var _local1:Object;
var _local2:String;
if (_dispatcher == null){
_dispatcher = new EventDispatcher(this);
_callbacks = {onStart:this.vars.onStart, onUpdate:this.vars.onUpdate, onComplete:this.vars.onComplete};
if (this.vars.isTV == true){
this.vars = this.vars.clone();
} else {
_local1 = {};
for (_local2 in this.vars) {
_local1[_local2] = this.vars[_local2];
};
this.vars = _local1;
};
this.vars.onStart = onStartDispatcher;
this.vars.onComplete = onCompleteDispatcher;
if ((this.vars.onStartListener is Function)){
_dispatcher.addEventListener(TweenEvent.START, this.vars.onStartListener, false, 0, true);
};
if ((this.vars.onUpdateListener is Function)){
_dispatcher.addEventListener(TweenEvent.UPDATE, this.vars.onUpdateListener, false, 0, true);
this.vars.onUpdate = onUpdateDispatcher;
_hasUpdate = true;
};
if ((this.vars.onCompleteListener is Function)){
_dispatcher.addEventListener(TweenEvent.COMPLETE, this.vars.onCompleteListener, false, 0, true);
};
};
}
public function willTrigger(_arg1:String):Boolean{
if (_dispatcher == null){
return (false);
};
return (_dispatcher.willTrigger(_arg1));
}
public function get repeatCount():Number{
return (_repeatCount);
}
public function reverse(_arg1:Boolean=true, _arg2:Boolean=true):void{
this.ease = ((this.vars.ease)==this.ease) ? reverseEase : this.vars.ease;
var _local3:Number = this.progress;
if (((_arg1) && ((_local3 > 0)))){
this.startTime = (currentTime - ((((1 - _local3) * this.duration) * 1000) / this.combinedTimeScale));
this.initTime = (this.startTime - (this.delay * (1000 / this.combinedTimeScale)));
};
if (_arg2 != false){
if (_local3 < 1){
resume();
} else {
restart();
};
};
}
protected function onUpdateDispatcher(... _args):void{
if (_callbacks.onUpdate != null){
_callbacks.onUpdate.apply(null, this.vars.onUpdateParams);
};
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.UPDATE));
}
public function set paused(_arg1:Boolean):void{
if (_arg1){
pause();
} else {
resume();
};
}
public function resume():void{
this.enabled = true;
if (!isNaN(this.pauseTime)){
this.initTime = (this.initTime + (currentTime - this.pauseTime));
this.startTime = (this.initTime + (this.delay * (1000 / this.combinedTimeScale)));
this.pauseTime = NaN;
if (((!(this.started)) && ((currentTime >= this.startTime)))){
activate();
} else {
this.active = this.started;
};
_pausedTweens[this] = null;
delete _pausedTweens[this];
};
}
public function get paused():Boolean{
return (!(isNaN(this.pauseTime)));
}
public function set repeatCount(_arg1:Number):void{
_repeatCount = _arg1;
}
public function reverseEase(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (this.vars.ease((_arg4 - _arg1), _arg2, _arg3, _arg4));
}
public function killProperties(_arg1:Array):void{
var _local3:int;
var _local2:Object = {};
_local3 = (_arg1.length - 1);
while (_local3 > -1) {
_local2[_arg1[_local3]] = true;
_local3--;
};
killVars(_local2);
}
public function set progress(_arg1:Number):void{
this.startTime = (currentTime - ((this.duration * _arg1) * 1000));
this.initTime = (this.startTime - (this.delay * (1000 / this.combinedTimeScale)));
if (!this.started){
activate();
};
render(currentTime);
if (!isNaN(this.pauseTime)){
this.pauseTime = currentTime;
this.startTime = 999999999999999;
this.active = false;
};
}
public function hasEventListener(_arg1:String):Boolean{
if (_dispatcher == null){
return (false);
};
return (_dispatcher.hasEventListener(_arg1));
}
public function pause():void{
if (isNaN(this.pauseTime)){
this.pauseTime = currentTime;
this.startTime = 999999999999999;
this.enabled = false;
_pausedTweens[this] = this;
};
}
override public function complete(_arg1:Boolean=false):void{
if (((((!(isNaN(this.vars.yoyo))) && ((((_repeatCount < this.vars.yoyo)) || ((this.vars.yoyo == 0)))))) || (((!(isNaN(this.vars.loop))) && ((((_repeatCount < this.vars.loop)) || ((this.vars.loop == 0)))))))){
_repeatCount++;
if (!isNaN(this.vars.yoyo)){
this.ease = ((this.vars.ease)==this.ease) ? reverseEase : this.vars.ease;
};
this.startTime = (_arg1) ? (this.startTime + (this.duration * (1000 / this.combinedTimeScale))) : currentTime;
this.initTime = (this.startTime - (this.delay * (1000 / this.combinedTimeScale)));
} else {
if (this.vars.persist == true){
pause();
};
};
super.complete(_arg1);
}
public function set timeScale(_arg1:Number):void{
if (_arg1 < 1E-5){
_arg1 = (_timeScale = 1E-5);
} else {
_timeScale = _arg1;
_arg1 = (_arg1 * _globalTimeScale);
};
this.initTime = ((currentTime - ((((currentTime - this.initTime) - (this.delay * (1000 / this.combinedTimeScale))) * this.combinedTimeScale) * (1 / _arg1))) - (this.delay * (1000 / _arg1)));
if (this.startTime != 999999999999999){
this.startTime = (this.initTime + (this.delay * (1000 / _arg1)));
};
this.combinedTimeScale = _arg1;
}
public function invalidate(_arg1:Boolean=true):void{
var _local2:Number;
if (this.initted){
_local2 = this.progress;
if (((!(_arg1)) && (!((_local2 == 0))))){
this.progress = 0;
};
this.tweens = [];
_hasPlugins = false;
this.exposedVars = ((this.vars.isTV)==true) ? this.vars.exposedProps : this.vars;
initTweenVals();
_timeScale = ((this.vars.timeScale) || (1));
this.combinedTimeScale = (_timeScale * _globalTimeScale);
this.delay = ((this.vars.delay) || (0));
if (isNaN(this.pauseTime)){
this.startTime = (this.initTime + ((this.delay * 1000) / this.combinedTimeScale));
};
if (((((!((this.vars.onCompleteListener == null))) || (!((this.vars.onUpdateListener == null))))) || (!((this.vars.onStartListener == null))))){
if (_dispatcher != null){
this.vars.onStart = _callbacks.onStart;
this.vars.onUpdate = _callbacks.onUpdate;
this.vars.onComplete = _callbacks.onComplete;
_dispatcher = null;
};
initDispatcher();
};
if (_local2 != 0){
if (_arg1){
adjustStartValues();
} else {
this.progress = _local2;
};
};
};
}
public function get timeScale():Number{
return (_timeScale);
}
protected function onCompleteDispatcher(... _args):void{
if (_callbacks.onComplete != null){
_callbacks.onComplete.apply(null, this.vars.onCompleteParams);
};
_dispatcher.dispatchEvent(new TweenEvent(TweenEvent.COMPLETE));
}
public static function set globalTimeScale(_arg1:Number):void{
setGlobalTimeScale(_arg1);
}
public static function pauseAll(_arg1:Boolean=true, _arg2:Boolean=false):void{
changePause(true, _arg1, _arg2);
}
public static function killAllDelayedCalls(_arg1:Boolean=false):void{
killAll(_arg1, false, true);
}
public static function setGlobalTimeScale(_arg1:Number):void{
var _local3:int;
var _local4:Array;
if (_arg1 < 1E-5){
_arg1 = 1E-5;
};
var _local2:Dictionary = masterList;
_globalTimeScale = _arg1;
for each (_local4 in _local2) {
_local3 = (_local4.length - 1);
while (_local3 > -1) {
if ((_local4[_local3] is TweenMax)){
_local4[_local3].timeScale = (_local4[_local3].timeScale * 1);
};
_local3--;
};
};
}
public static function get globalTimeScale():Number{
return (_globalTimeScale);
}
public static function getTweensOf(_arg1:Object):Array{
var _local4:TweenLite;
var _local5:int;
var _local2:Array = masterList[_arg1];
var _local3:Array = [];
if (_local2 != null){
_local5 = (_local2.length - 1);
while (_local5 > -1) {
if (!_local2[_local5].gc){
_local3[_local3.length] = _local2[_local5];
};
_local5--;
};
};
for each (_local4 in _pausedTweens) {
if (_local4.target == _arg1){
_local3[_local3.length] = _local4;
};
};
return (_local3);
}
public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null, _arg4:Boolean=false):TweenMax{
return (new TweenMax(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, persist:_arg4, overwrite:0}));
}
public static function isTweening(_arg1:Object):Boolean{
var _local2:Array = getTweensOf(_arg1);
var _local3:int = (_local2.length - 1);
while (_local3 > -1) {
if (((((_local2[_local3].active) || ((_local2[_local3].startTime == currentTime)))) && (!(_local2[_local3].gc)))){
return (true);
};
_local3--;
};
return (false);
}
public static function changePause(_arg1:Boolean, _arg2:Boolean=true, _arg3:Boolean=false):void{
var _local5:Boolean;
var _local4:Array = getAllTweens();
var _local6:int = (_local4.length - 1);
while (_local6 > -1) {
_local5 = (_local4[_local6].target == _local4[_local6].vars.onComplete);
if ((((_local4[_local6] is TweenMax)) && ((((_local5 == _arg3)) || (!((_local5 == _arg2))))))){
_local4[_local6].paused = _arg1;
};
_local6--;
};
}
public static function killAllTweens(_arg1:Boolean=false):void{
killAll(_arg1, true, false);
}
public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenMax{
_arg3.runBackwards = true;
return (new TweenMax(_arg1, _arg2, _arg3));
}
public static function killAll(_arg1:Boolean=false, _arg2:Boolean=true, _arg3:Boolean=true):void{
var _local5:Boolean;
var _local6:int;
var _local4:Array = getAllTweens();
_local6 = (_local4.length - 1);
while (_local6 > -1) {
_local5 = (_local4[_local6].target == _local4[_local6].vars.onComplete);
if ((((_local5 == _arg3)) || (!((_local5 == _arg2))))){
if (_arg1){
_local4[_local6].complete(false);
_local4[_local6].clear();
} else {
TweenLite.removeTween(_local4[_local6], true);
};
};
_local6--;
};
}
public static function getAllTweens():Array{
var _local3:Array;
var _local4:int;
var _local5:TweenLite;
var _local1:Dictionary = masterList;
var _local2:Array = [];
for each (_local3 in _local1) {
_local4 = (_local3.length - 1);
while (_local4 > -1) {
if (!_local3[_local4].gc){
_local2[_local2.length] = _local3[_local4];
};
_local4--;
};
};
for each (_local5 in _pausedTweens) {
_local2[_local2.length] = _local5;
};
return (_local2);
}
public static function resumeAll(_arg1:Boolean=true, _arg2:Boolean=false):void{
changePause(false, _arg1, _arg2);
}
public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenMax{
return (new TweenMax(_arg1, _arg2, _arg3));
}
}
}//package gs
Section 381
//BaseMarvelHudComponent (hud.BaseMarvelHudComponent)
package hud {
import flash.display.*;
import org.casalib.display.*;
import interfaces.*;
public class BaseMarvelHudComponent extends CasaSprite implements IMarvelHudComponent {
protected var m_container:MovieClip;
public function doRender():void{
}
override public function destroy():void{
super.destroy();
}
public function doPhysics():void{
}
}
}//package hud
Section 382
//HudButton (hud.HudButton)
package hud {
import flash.events.*;
import console.*;
import com.markfennell.sound.*;
import flash.display.*;
import org.casalib.display.*;
import gs.*;
public class HudButton extends CasaSprite {
private var m_label:String;
private var m_item:MovieClip;
private var m_toggle:Boolean;// = true
private var m_event:String;
private var m_enabled:Boolean;// = true
private var m_canToggle:Boolean;// = false
private var m_labelToggle:String;
private var m_eventToggle:String;
public function HudButton(_arg1:MovieClip, _arg2:String, _arg3:String, _arg4:String="", _arg5:String=""){
var a_item = _arg1;
var a_label = _arg2;
var a_event = _arg3;
var a_toggle = _arg4;
var a_toggleEvent = _arg5;
super();
m_item = a_item;
m_item.hover.alpha = 0;
m_event = a_event;
m_label = a_label;
if (a_toggle != ""){
m_canToggle = true;
m_labelToggle = a_toggle;
m_eventToggle = a_toggleEvent;
};
try {
m_item.label.text = m_label;
m_item.label.mouseEnabled = false;
m_item.buttonMode = (m_item.useHandCursor = true);
} catch(e:Error) {
};
m_item.addEventListener(MouseEvent.CLICK, handleClick);
m_item.addEventListener(MouseEvent.ROLL_OUT, handleRollOut);
m_item.addEventListener(MouseEvent.ROLL_OVER, handleRollOver);
this.buttonMode = true;
this.useHandCursor = true;
}
private function handleClick(_arg1:MouseEvent):void{
if (m_enabled){
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep1", 0.5, 1));
if (m_canToggle){
if (m_toggle){
m_item.label.text = m_labelToggle;
m_toggle = false;
if (m_event != ""){
GameBroadcaster.dispatchEvent(new ConsoleEvent(m_event));
};
} else {
m_item.label.text = m_label;
m_toggle = true;
if (m_event != ""){
GameBroadcaster.dispatchEvent(new ConsoleEvent(m_eventToggle));
};
};
} else {
if (m_event != ""){
GameBroadcaster.dispatchEvent(new ConsoleEvent(m_event));
};
};
};
}
public function enable():void{
m_enabled = true;
TweenMax.to(m_item, 0.3, {alpha:1});
}
public function reset():void{
m_item.label.text = m_label;
m_toggle = true;
disable();
}
private function handleRollOut(_arg1:MouseEvent):void{
TweenMax.to(m_item.hover, 0.3, {alpha:0});
}
public function disable():void{
m_enabled = false;
TweenMax.to(m_item, 0.3, {alpha:0.5});
}
private function handleRollOver(_arg1:MouseEvent):void{
TweenMax.to(m_item.hover, 0.3, {alpha:1});
}
}
}//package hud
Section 383
//MarvelHudController (hud.MarvelHudController)
package hud {
import flash.events.*;
import console.*;
import com.markfennell.sound.*;
import flash.display.*;
import game.achievements.*;
import game.events.*;
import flash.utils.*;
import org.casalib.display.*;
import flash.net.*;
import org.casalib.util.*;
import assets_ui.*;
import fl.motion.easing.*;
import gs.*;
public class MarvelHudController extends CasaSprite {
private var m_mask:Shape;
private var m_btnMedals:HudButton;
private var m_soundControls:MovieClip;
private var m_btnCharacters:HudButton;
private var m_showingTitleButtons:Boolean;
private var m_btnPause:HudButton;
private var m_canShowPanel:Boolean;// = false
private var m_ui:HudUI;
private var m_btnCredits:MovieClip;
private var m_buttons:HudUIButtons;
private var m_btnMarvelKids:MovieClip;
private var m_scoreLength:int;// = 9
private var m_btnSHS:MovieClip;
private var m_gameTopPanel:BaseMarvelHudComponent;
private var m_btnMain:HudButton;
private var m_btnHelp:HudButton;
private var m_gameBottomPanel:BaseMarvelHudComponent;
private var m_btnStart:HudButton;
private var m_btnShare:HudButton;
private var m_btnMore:HudButton;
public function MarvelHudController(){
m_ui = new HudUI();
m_ui.mouseEnabled = false;
m_ui.mouseChildren = false;
addChild(m_ui);
setScore();
m_buttons = new HudUIButtons();
m_buttons.x = 374;
m_buttons.y = 506;
addChild(m_buttons);
m_buttons.ButtonHelp.x = 0;
m_buttons.ButtonCharacters.x = 0;
m_buttons.ButtonStart.x = 0;
m_buttons.ButtonMore.x = 0;
m_buttons.ButtonShare.x = 0;
m_buttons.ButtonMedals.x = 0;
m_buttons.BaseHelp.x = 0;
m_buttons.BaseCharacters.x = 0;
m_buttons.BaseStart.x = 0;
m_buttons.BaseMore.x = 0;
m_buttons.BaseMulti.x = 0;
m_btnHelp = new HudButton(m_buttons.ButtonHelp, "HOW TO PLAY", ConsoleEvent.DISPLAY_HELP);
m_btnCharacters = new HudButton(m_buttons.ButtonCharacters, "CHARACTERS", ConsoleEvent.DISPLAY_CHARACTERS);
m_btnMore = new HudButton(m_buttons.ButtonMore, "MORE GAMES", ConsoleEvent.DISPLAY_MORE);
m_btnShare = new HudButton(m_buttons.ButtonShare, " ", ConsoleEvent.DISPLAY_SHARE);
m_btnMedals = new HudButton(m_buttons.ButtonMedals, " ", ConsoleEvent.DISPLAY_MEDALS);
m_btnStart = new HudButton(m_buttons.ButtonStart, " ", "");
m_btnMain = new HudButton(m_buttons.InGame.ButtonMain, "MAIN MENU", ConsoleEvent.EXIT_ATTEMPT);
m_btnPause = new HudButton(m_buttons.InGame.ButtonPause, "PAUSE GAME", ConsoleEvent.PAUSE);
GameBroadcaster.addEventListener(ConsoleEvent.STARTED, showInGameButtons);
GameBroadcaster.addEventListener(ConsoleEvent.PAUSE_DISABLED, handlePauseState);
GameBroadcaster.addEventListener(ConsoleEvent.PAUSE_ENABLED, handlePauseState);
m_buttons.ButtonStart.mouseChildren = false;
m_buttons.ButtonStart.addEventListener(MouseEvent.CLICK, handleMouseClick);
GameBroadcaster.addEventListener(HUDEvent.SHOW_MENU_HUD_FRAME, showMenuFrameHandler);
GameBroadcaster.addEventListener(HUDEvent.SHOW_GAME_HUD_FRAME, showGameFrameHandler);
m_btnSHS = new HudBtnSHS();
addChild(m_btnSHS);
m_btnSHS.x = 35;
m_btnSHS.y = 0;
m_btnSHS.buttonMode = true;
m_btnSHS.addEventListener(MouseEvent.CLICK, handleMouseClick);
m_btnMarvelKids = new HudBtnMarvelKids();
addChild(m_btnMarvelKids);
m_btnMarvelKids.x = 642;
m_btnMarvelKids.y = 3;
m_btnMarvelKids.buttonMode = true;
m_btnMarvelKids.addEventListener(MouseEvent.CLICK, handleMouseClick);
m_btnCredits = new HudBtnCredits();
addChild(m_btnCredits);
m_btnCredits.x = 611;
m_btnCredits.y = 535;
m_btnCredits.buttonMode = true;
m_btnCredits.addEventListener(MouseEvent.CLICK, handleMouseClick);
m_soundControls = new HudSoundControls();
addChild(m_soundControls);
m_soundControls.x = 550;
m_soundControls.y = 33;
m_soundControls.buttonMode = true;
m_soundControls.musicButton.addEventListener(MouseEvent.CLICK, handleMouseClick);
m_soundControls.soundButton.addEventListener(MouseEvent.CLICK, handleMouseClick);
m_soundControls.soundSlider.stop();
m_soundControls.musicSlider.stop();
hideButtons();
mouseEnabled = false;
}
private function handlePauseState(_arg1:ConsoleEvent):void{
switch (_arg1.type){
case ConsoleEvent.PAUSE_ENABLED:
m_btnPause.enable();
enableHud();
break;
case ConsoleEvent.PAUSE_DISABLED:
m_btnPause.disable();
disableHud();
break;
};
}
public function startGame():void{
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.DISPLAY_INTRO_VIDEO));
}
private function destroyComponent(_arg1:BaseMarvelHudComponent):void{
trace(("Destroying a component - " + _arg1));
_arg1.destroy();
}
private function handleMouseClick(_arg1:MouseEvent):void{
switch (_arg1.target){
case m_buttons.ButtonStart:
if (m_canShowPanel){
m_canShowPanel = false;
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep3", 0.5, 1));
hideTitleButtons();
} else {
trace("!!!");
};
break;
case m_btnCredits:
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.DISPLAY_CREDITS));
break;
case m_soundControls.soundButton:
if (SoundController.getInstance().soundsEnabled == false){
m_soundControls.soundSlider.gotoAndStop(1);
trace("sound On");
SoundController.getInstance().soundsEnabled = true;
SoundController.getInstance().resumeSounds();
} else {
m_soundControls.soundSlider.gotoAndStop(8);
trace("sound Off");
SoundController.getInstance().soundsEnabled = false;
SoundController.getInstance().stopSounds();
};
break;
case m_soundControls.musicButton:
if (SoundController.getInstance().musicEnabled == false){
m_soundControls.musicSlider.gotoAndStop(1);
trace("Music On");
SoundController.getInstance().musicEnabled = true;
SoundController.getInstance().resume_music();
} else {
m_soundControls.musicSlider.gotoAndStop(8);
trace("Music Off");
SoundController.getInstance().musicEnabled = false;
SoundController.getInstance().stop_music();
};
break;
case m_btnMarvelKids:
trace("GOTO URL MARVEL");
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "linkOut", "clientSiteMarvelKids");
navigateToURL(Constants.URL_MARVELKIDS, "_blank");
break;
case m_btnSHS:
trace("GOTO URL SHS");
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "linkOut", "clientSiteSHS");
navigateToURL(Constants.URL_SHS, "_blank");
break;
};
}
public function hideInGameButtons():void{
TweenMax.to(m_buttons.InGame, 0.5, {delay:0, y:250, ease:Quadratic.easeOut});
TweenMax.to(m_ui.MenuHeader, 0.25, {delay:0, y:34, ease:Quadratic.easeOut});
if (m_gameTopPanel != null){
TweenMax.to(m_gameTopPanel, 0.25, {delay:0, y:-100, ease:Quadratic.easeOut, onComplete:destroyComponent, onCompleteParams:[m_gameTopPanel]});
m_gameTopPanel = null;
TweenMax.to(m_gameBottomPanel, 0.25, {delay:0, y:600, ease:Quadratic.easeOut, onComplete:destroyComponent, onCompleteParams:[m_gameBottomPanel]});
m_gameBottomPanel = null;
};
}
private function showMenuFrameHandler(_arg1:HUDEvent):void{
m_ui.top.gotoAndStop("menu");
}
public function updatePanel():void{
}
public function showTitleButtons():void{
trace("Show Title Buttons");
hideButtons();
setScore();
m_showingTitleButtons = true;
m_canShowPanel = true;
TweenMax.killAll(true, false, false);
hideInGameButtons();
TweenMax.to(m_buttons.ButtonStart, 0.25, {delay:0.2, y:0, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.BaseStart, 0.25, {delay:0.2, y:1, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.ButtonHelp, 0.25, {delay:0.4, x:-260, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.BaseHelp, 0.25, {delay:0.4, x:-251, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.ButtonShare, 0.25, {delay:0.4, x:263, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.ButtonMedals, 0.25, {delay:0.4, x:313, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.BaseMulti, 0.25, {delay:0.4, x:251, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.ButtonCharacters, 0.25, {delay:0.5, x:-143, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.BaseCharacters, 0.25, {delay:0.5, x:-143, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.ButtonMore, 0.25, {delay:0.5, x:172, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.BaseMore, 0.25, {delay:0.5, x:156, ease:Quadratic.easeOut});
TweenMax.to(m_btnCredits, 0.25, {delay:0.5, y:535, ease:Quadratic.easeOut});
setTimeout(revealButtons, 400);
}
public function hide(_arg1:DisplayObject):void{
_arg1.visible = false;
}
private function showGameFrameHandler(_arg1:HUDEvent):void{
m_ui.top.gotoAndStop("game");
}
public function setRage(_arg1:Number):void{
}
public function setScore():void{
trace("MarvelHudController setScore");
m_ui.MenuHeader.scoretext.text = NumberUtil.format(AchievementData.instance.bestScore, m_scoreLength, ",", "");
}
private function showInGameButtons(_arg1:ConsoleEvent):void{
m_btnPause.reset();
TweenMax.to(m_ui.MenuHeader, 0.25, {delay:0, y:-100, ease:Quadratic.easeOut});
TweenMax.to(m_buttons.InGame, 0.5, {delay:0, y:0, ease:Quadratic.easeOut});
m_gameTopPanel = _arg1.data.topPanel;
addChild(m_gameTopPanel);
m_gameTopPanel.x = 131;
m_gameTopPanel.y = -100;
TweenMax.to(m_gameTopPanel, 0.25, {delay:0, y:10, ease:Quadratic.easeOut});
m_gameBottomPanel = _arg1.data.bottomPanel;
addChild(m_gameBottomPanel);
m_gameBottomPanel.x = 9;
m_gameBottomPanel.y = 600;
TweenMax.to(m_gameBottomPanel, 0.25, {delay:0, y:491, ease:Quadratic.easeOut});
}
private function hideButtons():void{
m_buttons.ButtonHelp.visible = false;
m_buttons.BaseHelp.visible = false;
m_buttons.ButtonShare.visible = false;
m_buttons.ButtonMedals.visible = false;
m_buttons.BaseMulti.visible = false;
m_buttons.ButtonCharacters.visible = false;
m_buttons.BaseCharacters.visible = false;
m_buttons.ButtonMore.visible = false;
m_buttons.BaseMore.visible = false;
}
public function setHealth(_arg1:Number):void{
}
public function get showingTitleButtons():Boolean{
return (m_showingTitleButtons);
}
public function disableHud():void{
trace("disableHud");
TweenMax.to(m_buttons, 0.25, {colorMatrixFilter:{colorize:0xCCCCCC, amount:1}});
m_buttons.mouseEnabled = false;
m_buttons.mouseChildren = false;
}
private function hideTitleButtons():void{
trace("Hide Title Buttons");
m_showingTitleButtons = false;
TweenMax.killAll(true, false, false);
TweenMax.to(m_buttons.ButtonHelp, 0.25, {delay:0.1, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.ButtonHelp]});
TweenMax.to(m_buttons.BaseHelp, 0.25, {delay:0.1, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.BaseHelp]});
TweenMax.to(m_buttons.ButtonShare, 0.25, {delay:0.1, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.ButtonShare]});
TweenMax.to(m_buttons.ButtonMedals, 0.25, {delay:0.1, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.ButtonMedals]});
TweenMax.to(m_buttons.BaseMulti, 0.25, {delay:0.1, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.BaseMulti]});
TweenMax.to(m_buttons.ButtonCharacters, 0.25, {delay:0, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.ButtonCharacters]});
TweenMax.to(m_buttons.BaseCharacters, 0.25, {delay:0, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.BaseCharacters]});
TweenMax.to(m_buttons.ButtonMore, 0.25, {delay:0, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.ButtonMore]});
TweenMax.to(m_buttons.BaseMore, 0.25, {delay:0, x:0, ease:Quadratic.easeOut, onComplete:hide, onCompleteParams:[m_buttons.BaseMore]});
TweenMax.to(m_buttons.ButtonStart, 0.2, {delay:0.4, y:100, ease:Quadratic.easeOut, onComplete:startGame});
TweenMax.to(m_buttons.BaseStart, 0.2, {delay:0.4, y:100, ease:Quadratic.easeOut});
TweenMax.to(m_btnCredits, 0.25, {delay:0.4, y:555, ease:Quadratic.easeOut});
}
public function enableHud():void{
trace("enableHud");
TweenMax.to(m_buttons, 0.25, {colorMatrixFilter:{}});
m_buttons.mouseEnabled = true;
m_buttons.mouseChildren = true;
}
override public function destroy():void{
removeChild(m_ui);
m_ui = null;
super.destroy();
}
private function revealButtons():void{
m_buttons.ButtonHelp.visible = true;
m_buttons.BaseHelp.visible = true;
m_buttons.ButtonShare.visible = true;
m_buttons.ButtonMedals.visible = true;
m_buttons.BaseMulti.visible = true;
m_buttons.ButtonCharacters.visible = true;
m_buttons.BaseCharacters.visible = true;
m_buttons.ButtonMore.visible = true;
m_buttons.BaseMore.visible = true;
}
}
}//package hud
Section 384
//IConsoleSection (interfaces.IConsoleSection)
package interfaces {
import flash.events.*;
public interface IConsoleSection extends IEventDispatcher {
function destroy():void;
function hide():void;
function doResume():void;
function transitionOut():void;
function transitionIn():void;
function doPause():void;
function transitionIn_COMPLETE():void;
}
}//package interfaces
Section 385
//IGameController (interfaces.IGameController)
package interfaces {
public interface IGameController {
function doResume():void;
function destroy():void;
function doPause():void;
}
}//package interfaces
Section 386
//IMarvelHudComponent (interfaces.IMarvelHudComponent)
package interfaces {
public interface IMarvelHudComponent {
function doRender():void;
function destroy():void;
function doPhysics():void;
}
}//package interfaces
Section 387
//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {
public final class MochiDigits {
private var Sibling:MochiDigits;
private var Fragment:Number;
private var Encoder:Number;
public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
Encoder = 0;
setValue(_arg1, _arg2);
}
public function reencode():void{
var _local1:uint = int((2147483647 * Math.random()));
Fragment = (Fragment ^ (_local1 ^ Encoder));
Encoder = _local1;
}
public function set value(_arg1:Number):void{
setValue(_arg1);
}
public function toString():String{
var _local1:String = String.fromCharCode((Fragment ^ Encoder));
if (Sibling != null){
_local1 = (_local1 + Sibling.toString());
};
return (_local1);
}
public function setValue(_arg1:Number=0, _arg2:uint=0):void{
var _local3:String = _arg1.toString();
var _temp1 = _arg2;
_arg2 = (_arg2 + 1);
Fragment = (_local3.charCodeAt(_temp1) ^ Encoder);
if (_arg2 < _local3.length){
Sibling = new MochiDigits(_arg1, _arg2);
} else {
Sibling = null;
};
reencode();
}
public function get value():Number{
return (Number(this.toString()));
}
public function addValue(_arg1:Number):void{
value = (value + _arg1);
}
}
}//package mochi.as3
Section 388
//User (net.User)
package net {
import flash.display.*;
import flash.utils.*;
import flash.net.*;
import com.electrotank.util.*;
public class User {
private var m_levelsUnlocked:Array;
private var _userID:String;
public var userEmail:String;// = null
private var m_hostName:String;// = "SuperHeroSquad"
private var _enableLogin:Boolean;
private var m_so:SharedObject;
private var _countryID:String;
private var _username:String;
public var userName:String;// = null
private var m_medalsUnlocked:Array;
private var m_bestScore:int;
private static var _instance:User;
public function User(_arg1:SingletonEnforcer){
m_so = SharedObject.getLocal(m_hostName);
if (_arg1 == null){
throw (new Error("User must be implemented as a Singleton"));
};
}
public function get loggedIn():Boolean{
if (userID != null){
return ((userID.length > 0));
};
return (false);
}
public function createUser(_arg1:String, _arg2:String, _arg3:String):void{
_userID = _arg1;
_username = _arg2;
_countryID = _arg3;
if ((((_countryID == null)) || ((_countryID.length == 0)))){
_countryID = "1";
};
}
public function createFlashVarsUser(_arg1:DisplayObject, _arg2:Boolean):void{
var _local3:Object = LoaderInfo(_arg1.loaderInfo).parameters;
_enableLogin = _arg2;
if (_enableLogin == false){
createUser("0", "test", "1");
} else {
createUser(_local3.userID, _local3.username, _local3.countryID);
};
}
public function saveLevels():void{
trace("Saving Levels ", m_levelsUnlocked);
m_so.data.level = m_levelsUnlocked;
m_so.flush();
}
public function loadLevels():Array{
if (m_so.data.level == null){
m_levelsUnlocked = [false, false, false, false, false, false, false, false, false, false];
m_levelsUnlocked[0] = true;
} else {
m_levelsUnlocked = m_so.data.level;
};
return (m_levelsUnlocked);
}
public function loadScore():int{
if (m_so.data.score == null){
return (0);
};
return (int(m_so.data.score));
}
public function saveScore():void{
if (m_so.data.score == null){
m_so.data.score = MemoryCrypto.getValue("score");
} else {
if (int(MemoryCrypto.getValue("score")) > int(m_so.data.score)){
m_so.data.score = MemoryCrypto.getValue("score");
};
};
m_so.flush();
}
public function get username():String{
return (_username);
}
public function unlockLevel(_arg1:int):void{
if (_arg1 < m_levelsUnlocked.length){
m_levelsUnlocked[_arg1] = true;
saveLevels();
};
}
public function get userID():String{
return (_userID);
}
public function get enableLogin():Boolean{
return (_enableLogin);
}
public function get countryID():String{
return (_countryID);
}
public static function getInstance():User{
if (_instance == null){
_instance = new User(new SingletonEnforcer());
};
return (_instance);
}
}
}//package net
class SingletonEnforcer {
private function SingletonEnforcer(){
}
}
Section 389
//VideoPlayer (net.VideoPlayer)
package net {
import flash.events.*;
import flash.display.*;
import com.malee.events.*;
import com.malee.media.*;
public class VideoPlayer extends EventDispatcher {
private var m_window:Sprite;
private var m_player:FLVPlayer;
public function VideoPlayer(_arg1:Sprite):void{
m_window = _arg1;
initPlayer();
}
private function onVideoLoaded(_arg1:MediaEvent):void{
m_player.start();
}
public function get flvPlayer():FLVPlayer{
return (m_player);
}
private function onVideoPlay(_arg1:MediaEvent):void{
}
private function initPlayer():void{
m_player = new FLVPlayer(m_window.width, m_window.height);
m_player.addEventListener(MediaEvent.CONNECT, onVideoLoaded, false, 0, true);
m_player.addEventListener(MediaEvent.PLAY, onVideoPlay, false, 0, true);
m_player.addEventListener(MediaEvent.PAUSE, onVideoPause, false, 0, true);
m_window.addChild(m_player);
}
private function onVideoPause(_arg1:MediaEvent):void{
}
public function load(_arg1:String):void{
m_player.load(_arg1);
}
}
}//package net
Section 390
//VideoPlayerWrapper (net.VideoPlayerWrapper)
package net {
import flash.events.*;
import flash.display.*;
import com.malee.events.*;
public class VideoPlayerWrapper extends MovieClip {
private var m_window:Sprite;
private var m_player:VideoPlayer;
private var m_url:String;
public static const VIDEO_START:String = "start";
public static const VIDEO_FINISH:String = "finish";
public function VideoPlayerWrapper(_arg1:String, _arg2:Sprite){
m_url = _arg1;
m_window = _arg2;
initSection();
}
private function initWindow():void{
m_window.visible = false;
}
private function endSection():void{
trace("VideoPlayerWrapper videoFinish");
dispatchEvent(new Event(VideoPlayerWrapper.VIDEO_FINISH));
}
private function onVideoStart(_arg1:MediaEvent):void{
m_window.visible = true;
dispatchEvent(new Event(VideoPlayerWrapper.VIDEO_START));
}
private function onVideoFinish(_arg1:MediaEvent):void{
endSection();
}
private function initPlayer():void{
m_player = new VideoPlayer(m_window);
m_player.flvPlayer.addEventListener(MediaEvent.START, onVideoStart, false, 0, true);
m_player.flvPlayer.addEventListener(MediaEvent.FINISH, onVideoFinish, false, 0, true);
}
public function initSection():void{
initPlayer();
initWindow();
m_player.load(m_url);
}
public function destroy():void{
m_player.flvPlayer.close();
if (m_player != null){
m_player.flvPlayer.removeEventListener(MediaEvent.START, onVideoStart);
m_player.flvPlayer.removeEventListener(MediaEvent.FINISH, onVideoFinish);
};
}
}
}//package net
Section 391
//MonsterDebugger (nl.demonsters.debugger.MonsterDebugger)
package nl.demonsters.debugger {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import flash.net.*;
import flash.geom.*;
import flash.system.*;
public class MonsterDebugger {
private const TYPE_VECTOR:String = "Vector";
private const TYPE_BOOLEAN:String = "Boolean";
private const COMMAND_GET_DISPLAYOBJECT:String = "GET_DISPLAYOBJECT";
private const ICON_ROOT:String = "iconRoot";
private const COMMAND_GET_OBJECT:String = "GET_OBJECT";
private const TYPE_XMLLIST:String = "XMLList";
private const COMMAND_TRACE:String = "TRACE";
private const TYPE_DISPLAYOBJECT:String = "DisplayObject";
private const TYPE_XMLVALUE:String = "XMLValue";
private const COMMAND_NOTFOUND:String = "NOTFOUND";
private const COMMAND_MONITOR:String = "MONITOR";
private const ACCESS_METHOD:String = "method";
private const ACCESS_CONSTANT:String = "constant";
private const HIGHLIGHT_BORDER:int = 4;
private const TYPE_FUNCTION:String = "Function";
private const TYPE_UINT:String = "uint";
private const TYPE_INT:String = "int";
private const MAX_PACKAGE_BYTES:int = 40000;
private const LINE_IN:String = "_debuggerBlue";
private const TYPE_XMLATTRIBUTE:String = "XMLAttribute";
private const COMMAND_SNAPSHOT:String = "SNAPSHOT";
private const ALLOWED_DOMAIN:String = "*";
private const ICON_VARIABLE_READONLY:String = "iconVariableReadonly";
private const ICON_DEFAULT:String = "iconDefault";
private const LINE_OUT:String = "_debuggerRed";
private const COMMAND_BASE:String = "BASE";
private const COMMAND_SHOW_HIGHLIGHT:String = "SHOW_HIGHLIGHT";
private const COMMAND_HIDE_HIGHLIGHT:String = "HIDE_HIGHLIGHT";
private const TYPE_BYTEARRAY:String = "ByteArray";
private const ICON_VARIABLE_WRITEONLY:String = "iconVariableWriteonly";
private const COMMAND_GET_PROPERTIES:String = "GET_PROPERTIES";
private const TYPE_XML:String = "XML";
private const TYPE_XMLNODE:String = "XMLNode";
private const COMMAND_ROOT:String = "ROOT";
private const TYPE_WARNING:String = "Warning";
private const TYPE_VOID:String = "void";
private const PERMISSION_WRITEONLY:String = "writeonly";
private const PERMISSION_READWRITE:String = "readwrite";
private const ICON_VARIABLE:String = "iconVariable";
private const TYPE_BITMAPDATA:String = "BitmapData";
private const TYPE_METHOD:String = "MethodClosure";
private const ICON_XMLATTRIBUTE:String = "iconXMLAttribute";
private const COMMAND_HELLO:String = "HELLO";
private const COMMAND_GET_FUNCTIONS:String = "GET_FUNCTIONS";
private const PERMISSION_READONLY:String = "readonly";
private const ICON_XMLNODE:String = "iconXMLNode";
private const COMMAND_CLEAR_TRACES:String = "CLEAR_TRACES";
private const VERSION:Number = 2.04;
private const ACCESS_ACCESSOR:String = "accessor";
private const TYPE_STRING:String = "String";
private const ICON_XMLVALUE:String = "iconXMLValue";
private const COMMAND_SET_PROPERTY:String = "SET_PROPERTY";
private const COMMAND_CALL_METHOD:String = "CALL_METHOD";
private const TYPE_BITMAP:String = "Bitmap";
private const ICON_FUNCTION:String = "iconFunction";
private const HIGHLIGHT_COLOR:uint = 0xFFFF00;
private const COMMAND_INSPECT:String = "INSPECT";
private const ICON_WARNING:String = "iconWarning";
private const TYPE_OBJECT:String = "Object";
private const TYPE_NUMBER:String = "Number";
private const TYPE_ARRAY:String = "Array";
private const ACCESS_VARIABLE:String = "variable";
public var _enabled:Boolean;// = true
private var lineIn:LocalConnection;
private var monitorTime:uint;
private var monitor:Timer;
private var monitorFrames:uint;
private var lineOut:LocalConnection;
private var highlight:Sprite;// = null
private var monitorSprite:Sprite;
private var root:Object;// = null
public static const COLOR_WARNING:uint = 0xFF3300;
public static const COLOR_NORMAL:uint = 0x111111;
public static const COLOR_ERROR:uint = 0xFF0000;
private static var instance:MonsterDebugger = null;
public function MonsterDebugger(_arg1:Object=null){
var target = _arg1;
super();
if (instance == null){
instance = this;
lineOut = new LocalConnection();
lineOut.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
lineOut.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
lineOut.addEventListener(StatusEvent.STATUS, statusHandler);
lineIn = new LocalConnection();
lineIn.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
lineIn.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
lineIn.addEventListener(StatusEvent.STATUS, statusHandler);
lineIn.allowDomain(ALLOWED_DOMAIN);
lineIn.client = this;
monitorTime = getTimer();
monitorFrames = 0;
monitorSprite = new Sprite();
monitorSprite.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
monitor = new Timer(500);
monitor.addEventListener(TimerEvent.TIMER, monitorHandler);
monitor.start();
try {
lineIn.connect(LINE_IN);
} catch(error:ArgumentError) {
};
};
if (target != MonsterDebugger.singletonCheck){
instance.root = target;
instance.send({text:COMMAND_HELLO, version:VERSION});
};
}
private function asyncErrorHandler(_arg1:AsyncErrorEvent):void{
}
private function enterFrameHandler(_arg1:Event):void{
if (enabled){
monitorFrames++;
};
}
private function htmlEscape(_arg1:String):String{
var _local2:XML;
if (_arg1){
while (_arg1.indexOf("'") != -1) {
_arg1 = _arg1.replace("'", "'");
};
while (_arg1.indexOf("\"") != -1) {
_arg1 = _arg1.replace("\"", """);
};
_local2 = new XML((("<a>" + ??esc_xelem
) + "</a>"));
return (_local2.toXMLString().replace(/(^<a>)|(<\/a>$)|(^<a\/>$)/g, ""));
//unresolved jump
};
return ("");
}
private function createNode(_arg1:String, _arg2:Object=null, _arg3:Boolean=false):String{
var _local5:*;
var _local4 = "";
_local4 = (_local4 + ("<" + _arg1));
if (_arg2){
for (_local5 in _arg2) {
_local4 = (_local4 + ((((" " + _local5) + "='") + _arg2[_local5]) + "'"));
};
};
if (_arg3){
_local4 = (_local4 + (("></" + _arg1) + ">"));
} else {
_local4 = (_local4 + ">");
};
return (_local4);
}
private function htmlUnescape(_arg1:String):String{
var _local2:XML;
if (_arg1){
_local2 = <a/>
;
_local2.replace(0, _arg1);
return (String(_local2));
};
return ("");
}
private function traceInternal(_arg1:Object, _arg2, _arg3:uint=0x111111, _arg4:Boolean=false, _arg5:int=4):void{
var _local6:XML;
if (enabled){
_local6 = XML(parseObject(_arg2, "", _arg4, 1, _arg5));
send({text:COMMAND_TRACE, date:new Date(), target:String(_arg1), xml:_local6, color:_arg3});
};
}
private function getObject(_arg1:String="", _arg2:int=0){
var splitted:Array;
var i:int;
var index:Number;
var target = _arg1;
var parent = _arg2;
var object:* = instance.root;
if (target != ""){
splitted = target.split(".");
i = 0;
while (i < (splitted.length - parent)) {
if (splitted[i] != ""){
try {
if (splitted[i] == "children()"){
object = object.children();
} else {
if (splitted[i].indexOf("getChildAt(") == 0){
index = splitted[i].substring(11, splitted[i].indexOf(")", 11));
object = DisplayObjectContainer(object).getChildAt(index);
} else {
object = object[splitted[i]];
};
};
} catch(error:ReferenceError) {
send({text:COMMAND_NOTFOUND, target:target});
break;
};
};
i = (i + 1);
};
};
return (object);
}
private function printObject(_arg1, _arg2:String):String{
var _local3 = "";
if (_arg2 == TYPE_BYTEARRAY){
_local3 = (_arg1["length"] + " bytes");
} else {
_local3 = htmlEscape(String(_arg1));
};
return (_local3);
}
private function clearTracesInternal():void{
if (enabled){
send({text:COMMAND_CLEAR_TRACES});
};
}
private function parseXML(_arg1, _arg2:String="", _arg3:int=1, _arg4:int=-1):String{
var _local7:String;
var _local5 = "";
var _local6:int;
if ((((_arg4 == -1)) || ((_arg3 <= _arg4)))){
if (_arg2.indexOf("@") != -1){
_local5 = (_local5 + createNode("node", {icon:ICON_XMLATTRIBUTE, label:_arg1, name:"", type:TYPE_XMLATTRIBUTE, value:_arg1, target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
if (_arg1.name() == null){
_local5 = (_local5 + createNode("node", {icon:ICON_XMLVALUE, label:((("(" + TYPE_XMLVALUE) + ") = ") + printObject(_arg1, TYPE_XMLVALUE)), name:"", type:TYPE_XMLVALUE, value:printObject(_arg1, TYPE_XMLVALUE), target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
if (_arg1.hasSimpleContent()){
_local5 = (_local5 + createNode("node", {icon:ICON_XMLNODE, label:(((_arg1.name() + " (") + TYPE_XMLNODE) + ")"), name:_arg1.name(), type:TYPE_XMLNODE, value:"", target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
if (_arg1 != ""){
_local5 = (_local5 + createNode("node", {icon:ICON_XMLVALUE, label:((("(" + TYPE_XMLVALUE) + ") = ") + printObject(_arg1, TYPE_XMLVALUE)), name:"", type:TYPE_XMLVALUE, value:printObject(_arg1, TYPE_XMLVALUE), target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
};
_local6 = 0;
while (_local6 < _arg1.attributes().length()) {
_local5 = (_local5 + createNode("node", {icon:ICON_XMLATTRIBUTE, label:((((("@" + _arg1.attributes()[_local6].name()) + " (") + TYPE_XMLATTRIBUTE) + ") = ") + _arg1.attributes()[_local6]), name:"", type:TYPE_XMLATTRIBUTE, value:_arg1.attributes()[_local6], target:(((_arg2 + ".") + "@") + _arg1.attributes()[_local6].name()), access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
_local6++;
};
_local5 = (_local5 + createNode("/node"));
} else {
_local5 = (_local5 + createNode("node", {icon:ICON_XMLNODE, label:(((_arg1.name() + " (") + TYPE_XMLNODE) + ")"), name:_arg1.name(), type:TYPE_XMLNODE, value:"", target:_arg2, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
_local6 = 0;
while (_local6 < _arg1.attributes().length()) {
_local5 = (_local5 + createNode("node", {icon:ICON_XMLATTRIBUTE, label:((((("@" + _arg1.attributes()[_local6].name()) + " (") + TYPE_XMLATTRIBUTE) + ") = ") + _arg1.attributes()[_local6]), name:"", type:TYPE_XMLATTRIBUTE, value:_arg1.attributes()[_local6], target:(((_arg2 + ".") + "@") + _arg1.attributes()[_local6].name()), access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
_local6++;
};
_local6 = 0;
while (_local6 < _arg1.children().length()) {
_local7 = ((((_arg2 + ".") + "children()") + ".") + _local6);
_local5 = (_local5 + parseXML(_arg1.children()[_local6], _local7, (_arg3 + 1), _arg4));
_local6++;
};
_local5 = (_local5 + createNode("/node"));
};
};
};
};
return (_local5);
}
private function send(_arg1:Object):void{
var item:ByteArray;
var dataPackages:Array;
var i:int;
var bytesAvailable:int;
var offset:int;
var total:int;
var length:int;
var tmp:ByteArray;
var data = _arg1;
if (enabled){
item = new ByteArray();
item.writeObject(data);
item.compress();
dataPackages = new Array();
i = 0;
if (item.length > MAX_PACKAGE_BYTES){
bytesAvailable = item.length;
offset = 0;
total = Math.ceil((item.length / MAX_PACKAGE_BYTES));
i = 0;
while (i < total) {
length = bytesAvailable;
if (length > MAX_PACKAGE_BYTES){
length = MAX_PACKAGE_BYTES;
};
tmp = new ByteArray();
tmp.writeBytes(item, offset, length);
dataPackages.push({total:total, nr:(i + 1), bytes:tmp});
bytesAvailable = (bytesAvailable - length);
offset = (offset + length);
i = (i + 1);
};
} else {
dataPackages.push({total:1, nr:1, bytes:item});
};
i = 0;
while (i < dataPackages.length) {
try {
lineOut.send(LINE_OUT, "onReceivedData", dataPackages[i]);
} catch(error:Error) {
break;
};
i = (i + 1);
};
};
}
private function securityErrorHandler(_arg1:SecurityErrorEvent):void{
}
private function monitorHandler(_arg1:TimerEvent):void{
var _local2:uint;
var _local3:uint;
var _local4:uint;
var _local5:uint;
if (enabled){
_local2 = System.totalMemory;
_local3 = getTimer();
_local4 = (_local3 - monitorTime);
_local5 = ((monitorFrames / _local4) * 1000);
monitorFrames = 0;
monitorTime = _local3;
send({text:COMMAND_MONITOR, memory:_local2, fps:_local5, time:_local3, date:new Date()});
};
}
private function isDisplayObject(_arg1):Boolean{
return ((((_arg1 is DisplayObject)) || ((_arg1 is DisplayObjectContainer))));
}
private function snapshotInternal(_arg1:DisplayObject, _arg2:uint=0x111111):void{
var _local3:BitmapData;
var _local4:ByteArray;
if (enabled){
_local3 = new BitmapData(_arg1.width, _arg1.height);
_local3.draw(_arg1);
_local4 = _local3.getPixels(new Rectangle(0, 0, _arg1.width, _arg1.height));
send({text:COMMAND_SNAPSHOT, date:new Date(), target:String(_arg1), bytes:_local4, width:_arg1.width, height:_arg1.height, color:_arg2});
_local3.dispose();
_local4 = null;
};
}
public function onReceivedData(_arg1:ByteArray):void{
var object:*;
var method:Function;
var xml:XML;
var command:Object;
var bounds:Rectangle;
var data = _arg1;
if (enabled){
data.uncompress();
command = data.readObject();
switch (command["text"]){
case COMMAND_HELLO:
send({text:COMMAND_HELLO, version:VERSION});
break;
case COMMAND_ROOT:
object = getObject("", 0);
if (object != null){
xml = XML(parseObject(object, "", command["functions"], 1, 2));
send({text:COMMAND_ROOT, xml:xml});
if (isDisplayObject(object)){
xml = XML(parseDisplayObject(object, "", command["functions"], 1, 2));
send({text:COMMAND_BASE, xml:xml});
};
};
break;
case COMMAND_GET_OBJECT:
object = getObject(command["target"], 0);
if (object != null){
xml = XML(parseObject(object, command["target"], command["functions"], 1, 2));
send({text:COMMAND_GET_OBJECT, xml:xml});
};
break;
case COMMAND_GET_DISPLAYOBJECT:
object = getObject(command["target"], 0);
if (object != null){
if (isDisplayObject(object)){
xml = XML(parseDisplayObject(object, command["target"], command["functions"], 1, 2));
send({text:COMMAND_GET_DISPLAYOBJECT, xml:xml});
};
};
break;
case COMMAND_GET_PROPERTIES:
object = getObject(command["target"], 0);
if (object != null){
xml = XML(parseObject(object, command["target"], false, 1, 1));
send({text:COMMAND_GET_PROPERTIES, xml:xml});
};
break;
case COMMAND_GET_FUNCTIONS:
object = getObject(command["target"], 0);
if (object != null){
xml = XML(getFunctions(object, command["target"]));
send({text:COMMAND_GET_FUNCTIONS, xml:xml});
};
break;
case COMMAND_SET_PROPERTY:
object = getObject(command["target"], 1);
if (object != null){
try {
object[command["name"]] = command["value"];
send({text:COMMAND_SET_PROPERTY, value:object[command["name"]]});
} catch(error1:Error) {
send({text:COMMAND_NOTFOUND, target:command["target"]});
break;
};
};
break;
case COMMAND_CALL_METHOD:
method = getObject(command["target"], 0);
if (method != null){
if (command["returnType"] == TYPE_VOID){
method.apply(this, command["arguments"]);
} else {
object = method.apply(this, command["arguments"]);
xml = XML(parseObject(object, "", false, 1, 4));
send({text:COMMAND_CALL_METHOD, id:command["id"], xml:xml});
};
};
break;
case COMMAND_SHOW_HIGHLIGHT:
if (highlight != null){
try {
highlight.parent.removeChild(highlight);
highlight = null;
} catch(error2:Error) {
};
};
object = getObject(command["target"], 0);
if (((isDisplayObject(object)) && (isDisplayObject(object["parent"])))){
bounds = object.getBounds(object["parent"]);
highlight = new Sprite();
highlight.x = 0;
highlight.y = 0;
highlight.graphics.beginFill(0, 0);
highlight.graphics.lineStyle(HIGHLIGHT_BORDER, HIGHLIGHT_COLOR);
highlight.graphics.drawRect(bounds.x, bounds.y, bounds.width, bounds.height);
highlight.graphics.endFill();
highlight.mouseChildren = false;
highlight.mouseEnabled = false;
try {
object["parent"].addChild(highlight);
} catch(error3:Error) {
highlight = null;
};
};
break;
case COMMAND_HIDE_HIGHLIGHT:
if (highlight != null){
try {
highlight.parent.removeChild(highlight);
highlight = null;
} catch(error4:Error) {
};
};
break;
};
};
}
private function parseDisplayObject(_arg1, _arg2:String="", _arg3:Boolean=false, _arg4:int=1, _arg5:int=4):String{
var xml:String;
var childs:Array;
var child:DisplayObject;
var ojectName:String;
var msg:String;
var object = _arg1;
var target = _arg2;
var functions = _arg3;
var currentDepth = _arg4;
var maxDepth = _arg5;
xml = "";
var childType = "";
var childIcon = "";
var childName = "";
var childTarget = "";
var childChildren = "";
var i:int;
var n:int;
if ((((maxDepth == -1)) || ((currentDepth <= maxDepth)))){
if (currentDepth == 1){
xml = (xml + createNode("root"));
};
try {
if (currentDepth == 1){
ojectName = DisplayObject(object).name;
if ((((ojectName == null)) || ((ojectName == "null")))){
ojectName = "DisplayObject";
};
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + ojectName) + ")"), target:target}));
};
childs = new Array();
i = 0;
while (i < DisplayObjectContainer(object).numChildren) {
childs.push(DisplayObjectContainer(object).getChildAt(i));
i = (i + 1);
};
i = 0;
while (i < childs.length) {
child = childs[i];
childName = describeType(child).@name;
childType = parseType(childName);
childTarget = ((((target + ".") + "getChildAt(") + i) + ")");
childIcon = ((child is DisplayObjectContainer)) ? ICON_ROOT : ICON_VARIABLE;
childChildren = ((child is DisplayObjectContainer)) ? String(DisplayObjectContainer(child).numChildren) : "";
xml = (xml + createNode("node", {icon:childIcon, label:((((child.name + " (") + childType) + ") ") + childChildren), name:child.name, type:childType, value:printObject(child, childType), target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
try {
xml = (xml + parseDisplayObject(child, childTarget, functions, (currentDepth + 1), maxDepth));
} catch(error13:Error) {
xml = (xml + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Unreadable", name:"Unreadable"}, true));
};
xml = (xml + createNode("/node"));
i = (i + 1);
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} catch(error14:Error) {
msg = "";
msg = (msg + createNode("root"));
msg = (msg + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Not found", name:"Not found"}, true));
msg = (msg + createNode("/root"));
send({text:COMMAND_NOTFOUND, target:target, xml:XML(msg)});
};
if (currentDepth == 1){
xml = (xml + createNode("/root"));
};
};
return (xml);
}
private function parseType(_arg1:String):String{
var _local2:String = _arg1;
if (_arg1.lastIndexOf("::") != -1){
_local2 = _arg1.substring((_arg1.lastIndexOf("::") + 2), _arg1.length);
};
if (_local2.lastIndexOf(".") != -1){
_local2 = _local2.substring(0, _local2.lastIndexOf("."));
};
if (_local2 == TYPE_METHOD){
_local2 = TYPE_FUNCTION;
};
return (htmlEscape(_local2));
}
private function parseObject(_arg1, _arg2:String="", _arg3:Boolean=false, _arg4:int=1, _arg5:int=4):String{
var xml:String;
var isXMLString:XML;
var keys:Array;
var key:*;
var properties:Array;
var prop:*;
var variables:XMLList;
var accessors:XMLList;
var constants:XMLList;
var methods:XMLList;
var variablesArr:Array;
var methodsArr:Array;
var double:Boolean;
var permission:String;
var icon:String;
var returnType:String;
var parameters:XMLList;
var args:Array;
var msg:String;
var object = _arg1;
var target = _arg2;
var functions = _arg3;
var currentDepth = _arg4;
var maxDepth = _arg5;
xml = "";
var childType = "";
var childName = "";
var childTarget = "";
var description:XML = new XML();
var type = "";
var base = "";
var isXML:Boolean;
var i:int;
var n:int;
if ((((maxDepth == -1)) || ((currentDepth <= maxDepth)))){
if (currentDepth == 1){
xml = (xml + createNode("root"));
};
try {
description = describeType(object);
type = parseType(description.@name);
base = parseType(description.@base);
if (((functions) && ((base == TYPE_FUNCTION)))){
xml = (xml + createNode("node", {icon:ICON_FUNCTION, label:"(Function)", name:"", type:TYPE_FUNCTION, value:"", target:target, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
if ((((type == TYPE_ARRAY)) || ((type == TYPE_VECTOR)))){
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((("length" + " (") + TYPE_UINT) + ") = ") + object["length"]), name:"length", type:TYPE_UINT, value:object["length"], target:((target + ".") + "length"), access:ACCESS_VARIABLE, permission:PERMISSION_READONLY}, true));
keys = new Array();
for (key in object) {
keys.push(key);
};
keys.sort();
i = 0;
while (i < keys.length) {
childType = parseType(describeType(object[keys[i]]).@name);
childTarget = ((target + ".") + String(keys[i]));
if ((((((((((((childType == TYPE_STRING)) || ((childType == TYPE_BOOLEAN)))) || ((childType == TYPE_NUMBER)))) || ((childType == TYPE_INT)))) || ((childType == TYPE_UINT)))) || ((childType == TYPE_FUNCTION)))){
isXML = false;
isXMLString = new XML();
if (childType == TYPE_STRING){
try {
isXMLString = new XML(object[keys[i]]);
if (((!(isXMLString.hasSimpleContent())) && ((isXMLString.children().length() > 0)))){
isXML = true;
};
} catch(error1:TypeError) {
};
};
try {
if (!isXML){
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:((((("[" + keys[i]) + "] (") + childType) + ") = ") + printObject(object[keys[i]], childType)), name:(("[" + keys[i]) + "]"), type:childType, value:printObject(object[keys[i]], childType), target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((("[" + keys[i]) + "] (") + childType) + ")"), name:(("[" + keys[i]) + "]"), type:childType, value:"", target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, false));
xml = (xml + parseXML(isXMLString, ((childTarget + ".") + "cildren()"), currentDepth, maxDepth));
xml = (xml + createNode("/node"));
};
} catch(error2:Error) {
};
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((("[" + keys[i]) + "] (") + childType) + ")"), name:(("[" + keys[i]) + "]"), type:childType, value:"", target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
try {
xml = (xml + parseObject(object[keys[i]], childTarget, functions, (currentDepth + 1), maxDepth));
} catch(error3:Error) {
xml = (xml + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Unreadable", name:"Unreadable"}, true));
};
xml = (xml + createNode("/node"));
};
i = (i + 1);
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} else {
if (type == TYPE_OBJECT){
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
properties = new Array();
for (prop in object) {
properties.push(prop);
};
properties.sort();
i = 0;
while (i < properties.length) {
childType = parseType(describeType(object[properties[i]]).@name);
childTarget = ((target + ".") + properties[i]);
if ((((((((((((childType == TYPE_STRING)) || ((childType == TYPE_BOOLEAN)))) || ((childType == TYPE_NUMBER)))) || ((childType == TYPE_INT)))) || ((childType == TYPE_UINT)))) || ((childType == TYPE_FUNCTION)))){
isXML = false;
isXMLString = new XML();
if (childType == TYPE_STRING){
try {
isXMLString = new XML(object[properties[i]]);
if (((!(isXMLString.hasSimpleContent())) && ((isXMLString.children().length() > 0)))){
isXML = true;
};
} catch(error4:TypeError) {
};
};
try {
if (!isXML){
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:((((properties[i] + " (") + childType) + ") = ") + printObject(object[properties[i]], childType)), name:properties[i], type:childType, value:printObject(object[properties[i]], childType), target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((properties[i] + " (") + childType) + ")"), name:properties[i], type:childType, value:"", target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, false));
xml = (xml + parseXML(isXMLString, ((childTarget + ".") + "cildren()"), currentDepth, maxDepth));
xml = (xml + createNode("/node"));
};
} catch(error5:Error) {
};
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((properties[i] + " (") + childType) + ")"), name:properties[i], type:childType, value:"", target:childTarget, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}));
try {
xml = (xml + parseObject(object[properties[i]], childTarget, functions, (currentDepth + 1), maxDepth));
} catch(error6:Error) {
xml = (xml + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Unreadable", name:"Unreadable"}, true));
};
xml = (xml + createNode("/node"));
};
i = (i + 1);
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} else {
if (type == TYPE_XML){
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
xml = (xml + parseXML(object, ((target + ".") + "cildren()"), currentDepth, maxDepth));
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} else {
if (type == TYPE_XMLLIST){
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(((("length" + " (") + TYPE_UINT) + ") = ") + object.length()), name:"length", type:TYPE_UINT, value:object.length(), target:((target + ".") + "length"), access:ACCESS_VARIABLE, permission:PERMISSION_READONLY}, true));
i = 0;
while (i < object.length()) {
xml = (xml + parseXML(object[i], (((target + ".") + String(i)) + ".children()"), currentDepth, maxDepth));
i = (i + 1);
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
} else {
if ((((((((((type == TYPE_STRING)) || ((type == TYPE_BOOLEAN)))) || ((type == TYPE_NUMBER)))) || ((type == TYPE_INT)))) || ((type == TYPE_UINT)))){
isXML = false;
isXMLString = new XML();
if (type == TYPE_STRING){
try {
isXMLString = new XML(object);
if (((!(isXMLString.hasSimpleContent())) && ((isXMLString.children().length() > 0)))){
isXML = true;
};
} catch(error7:TypeError) {
};
};
try {
if (!isXML){
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:((("(" + type) + ") = ") + printObject(object, type)), name:"", type:type, value:printObject(object, type), target:target, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, true));
} else {
xml = (xml + createNode("node", {icon:ICON_VARIABLE, label:(("(" + type) + ")"), name:"", type:type, value:"", target:target, access:ACCESS_VARIABLE, permission:PERMISSION_READWRITE}, false));
xml = (xml + parseXML(isXMLString, ((target + ".") + "cildren()"), currentDepth, maxDepth));
xml = (xml + createNode("/node"));
};
} catch(error8:Error) {
};
} else {
if (currentDepth == 1){
xml = (xml + createNode("node", {icon:ICON_ROOT, label:(("(" + type) + ")"), target:target}));
};
variables = description..variable;
accessors = description..accessor;
constants = description..constant;
methods = description..method;
variablesArr = new Array();
methodsArr = new Array();
double = false;
permission = "";
icon = "";
double = false;
i = 0;
while (i < variables.length()) {
n = 0;
while (n < variablesArr.length) {
if (variablesArr[n].name == variables[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
variablesArr.push({name:variables[i].@name, xml:variables[i], access:ACCESS_VARIABLE});
};
i = (i + 1);
};
double = false;
i = 0;
while (i < accessors.length()) {
n = 0;
while (n < variablesArr.length) {
if (variablesArr[n].name == accessors[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
variablesArr.push({name:accessors[i].@name, xml:accessors[i], access:ACCESS_ACCESSOR});
};
i = (i + 1);
};
double = false;
i = 0;
while (i < constants.length()) {
n = 0;
while (n < variablesArr.length) {
if (variablesArr[n].name == constants[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
variablesArr.push({name:constants[i].@name, xml:constants[i], access:ACCESS_CONSTANT});
};
i = (i + 1);
};
double = false;
i = 0;
while (i < methods.length()) {
n = 0;
while (n < methodsArr.length) {
if (methodsArr[n].name == methods[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
methodsArr.push({name:methods[i].@name, xml:methods[i], access:ACCESS_METHOD});
};
i = (i + 1);
};
variablesArr.sortOn("name");
methodsArr.sortOn("name");
i = 0;
while (i < variablesArr.length) {
childType = parseType(variablesArr[i].xml.@type);
childName = variablesArr[i].xml.@name;
childTarget = ((target + ".") + childName);
permission = PERMISSION_READWRITE;
icon = ICON_VARIABLE;
if (variablesArr[i].access == ACCESS_CONSTANT){
permission = PERMISSION_READONLY;
icon = ICON_VARIABLE_READONLY;
};
if (variablesArr[i].xml.@access == PERMISSION_READONLY){
permission = PERMISSION_READONLY;
icon = ICON_VARIABLE_READONLY;
};
if (variablesArr[i].xml.@access == PERMISSION_WRITEONLY){
permission = PERMISSION_WRITEONLY;
icon = ICON_VARIABLE_WRITEONLY;
};
if (permission != PERMISSION_WRITEONLY){
if ((((((((((((childType == TYPE_STRING)) || ((childType == TYPE_BOOLEAN)))) || ((childType == TYPE_NUMBER)))) || ((childType == TYPE_INT)))) || ((childType == TYPE_UINT)))) || ((childType == TYPE_FUNCTION)))){
isXML = false;
isXMLString = new XML();
if (childType == TYPE_STRING){
try {
isXMLString = new XML(object[childName]);
if (((!(isXMLString.hasSimpleContent())) && ((isXMLString.children().length() > 0)))){
isXML = true;
};
} catch(error9:TypeError) {
};
};
try {
if (!isXML){
xml = (xml + createNode("node", {icon:icon, label:((((childName + " (") + childType) + ") = ") + printObject(object[childName], childType)), name:childName, type:childType, value:printObject(object[childName], childType), target:childTarget, access:variablesArr[i].access, permission:permission}, true));
} else {
xml = (xml + createNode("node", {icon:icon, label:(((childName + " (") + childType) + ")"), name:childName, type:childType, value:"", target:childTarget, access:variablesArr[i].access, permission:permission}, false));
xml = (xml + parseXML(isXMLString, ((childTarget + ".") + "cildren()"), currentDepth, maxDepth));
xml = (xml + createNode("/node"));
};
} catch(error10:Error) {
};
} else {
xml = (xml + createNode("node", {icon:icon, label:(((childName + " (") + childType) + ")"), name:childName, type:childType, target:childTarget, access:variablesArr[i].access, permission:permission}));
try {
xml = (xml + parseObject(object[childName], childTarget, functions, (currentDepth + 1), maxDepth));
} catch(error11:Error) {
xml = (xml + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Unreadable", name:"Unreadable"}, true));
};
xml = (xml + createNode("/node"));
};
};
i = (i + 1);
};
if (functions){
i = 0;
while (i < methodsArr.length) {
childType = TYPE_FUNCTION;
childName = methodsArr[i].xml.@name;
childTarget = ((target + ".") + childName);
returnType = parseType(methodsArr[i].xml.@returnType);
parameters = methodsArr[i].xml..parameter;
args = new Array();
n = 0;
while (n < parameters.length()) {
args.push(parseType(parameters[n].@type));
n = (n + 1);
};
xml = (xml + createNode("node", {icon:ICON_FUNCTION, label:((((childName + "(") + args.join(", ")) + "):") + returnType), args:args.join(", "), name:childName, type:TYPE_FUNCTION, access:variablesArr[i].access, returnType:returnType, target:childTarget}, true));
i = (i + 1);
};
};
if (currentDepth == 1){
xml = (xml + createNode("/node"));
};
};
};
};
};
};
};
} catch(error12:Error) {
msg = "";
msg = (msg + createNode("root"));
msg = (msg + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Not found", name:"Not found"}, true));
msg = (msg + createNode("/root"));
send({text:COMMAND_NOTFOUND, target:target, xml:XML(msg)});
};
if (currentDepth == 1){
xml = (xml + createNode("/root"));
};
};
return (xml);
}
private function getFunctions(_arg1, _arg2:String=""):String{
var description:XML;
var type:String;
var childType:String;
var childName:String;
var childTarget:String;
var methods:XMLList;
var methodsArr:Array;
var returnType:String;
var parameters:XMLList;
var args:Array;
var argsString:String;
var optional:Boolean;
var double:Boolean;
var i:int;
var n:int;
var msg:String;
var object = _arg1;
var target = _arg2;
var xml = "";
xml = (xml + createNode("root"));
try {
description = describeType(object);
type = parseType(description.@name);
childType = "";
childName = "";
childTarget = "";
methods = description..method;
methodsArr = new Array();
optional = false;
double = false;
i = 0;
n = 0;
xml = (xml + createNode("node", {icon:ICON_DEFAULT, label:(("(" + type) + ")"), target:target}));
i = 0;
while (i < methods.length()) {
n = 0;
while (n < methodsArr.length) {
if (methodsArr[n].name == methods[i].@name){
double = true;
break;
};
n = (n + 1);
};
if (!double){
methodsArr.push({name:methods[i].@name, xml:methods[i], access:ACCESS_METHOD});
};
i = (i + 1);
};
methodsArr.sortOn("name");
i = 0;
while (i < methodsArr.length) {
childType = TYPE_FUNCTION;
childName = methodsArr[i].xml.@name;
childTarget = ((target + ".") + childName);
returnType = parseType(methodsArr[i].xml.@returnType);
parameters = methodsArr[i].xml..parameter;
args = new Array();
argsString = "";
optional = false;
n = 0;
while (n < parameters.length()) {
if ((((parameters[n].@optional == "true")) && (!(optional)))){
optional = true;
args.push("[");
};
args.push(parseType(parameters[n].@type));
n = (n + 1);
};
if (optional){
args.push("]");
};
argsString = args.join(", ");
argsString = argsString.replace("[, ", "[");
argsString = argsString.replace(", ]", "]");
xml = (xml + createNode("node", {icon:ICON_FUNCTION, label:((((childName + "(") + argsString) + "):") + returnType), args:argsString, name:childName, type:TYPE_FUNCTION, access:ACCESS_METHOD, returnType:returnType, target:childTarget}));
n = 0;
while (n < parameters.length()) {
xml = (xml + createNode("parameter", {type:parseType(parameters[n].@type), index:parameters[n].@index, optional:parameters[n].@optional}, true));
n = (n + 1);
};
xml = (xml + createNode("/node"));
i = (i + 1);
};
xml = (xml + createNode("/node"));
} catch(error:Error) {
msg = "";
msg = (msg + createNode("root"));
msg = (msg + createNode("node", {icon:ICON_WARNING, type:TYPE_WARNING, label:"Not found", name:"Not found"}, true));
msg = (msg + createNode("/root"));
send({text:COMMAND_NOTFOUND, target:target, xml:XML(msg)});
};
xml = (xml + createNode("/root"));
return (xml);
}
private function statusHandler(_arg1:StatusEvent):void{
}
public static function get enabled():Boolean{
if (instance == null){
instance = new MonsterDebugger(null);
};
return (instance._enabled);
}
public static function snapshot(_arg1:DisplayObject, _arg2:uint=0x111111):void{
if (instance == null){
instance = new MonsterDebugger(MonsterDebugger.singletonCheck);
};
if (MonsterDebugger.enabled){
instance.snapshotInternal(_arg1, _arg2);
};
}
public static function trace(_arg1:Object, _arg2, _arg3:uint=0x111111, _arg4:Boolean=false, _arg5:int=4):void{
if (instance == null){
instance = new MonsterDebugger(MonsterDebugger.singletonCheck);
};
if (MonsterDebugger.enabled){
instance.traceInternal(_arg1, _arg2, _arg3, _arg4, _arg5);
};
}
public static function set enabled(_arg1:Boolean):void{
if (instance == null){
instance = new MonsterDebugger(null);
};
instance._enabled = _arg1;
}
public static function inspect(_arg1:Object):void{
var _local2:*;
var _local3:XML;
if (((!((instance == null))) && (!((_arg1 == null))))){
instance.root = _arg1;
_local2 = instance.getObject("", 0);
if (_local2 != null){
_local3 = XML(instance.parseObject(_local2, "", false, 1, 2));
instance.send({text:instance.COMMAND_INSPECT, xml:_local3});
if (instance.isDisplayObject(_local2)){
_local3 = XML(instance.parseDisplayObject(_local2, "", false, 1, 2));
instance.send({text:instance.COMMAND_BASE, xml:_local3});
};
};
};
}
public static function clearTraces():void{
if (instance == null){
instance = new MonsterDebugger(MonsterDebugger.singletonCheck);
};
if (MonsterDebugger.enabled){
instance.clearTracesInternal();
};
}
private static function singletonCheck():void{
}
}
}//package nl.demonsters.debugger
Section 392
//Destroyable (org.casalib.core.Destroyable)
package org.casalib.core {
public class Destroyable implements IDestroyable {
protected var _isDestroyed:Boolean;
public function get destroyed():Boolean{
return (this._isDestroyed);
}
public function destroy():void{
this._isDestroyed = true;
}
}
}//package org.casalib.core
Section 393
//IDestroyable (org.casalib.core.IDestroyable)
package org.casalib.core {
public interface IDestroyable {
function get destroyed():Boolean;
function destroy():void;
}
}//package org.casalib.core
Section 394
//CasaBitmap (org.casalib.display.CasaBitmap)
package org.casalib.display {
import flash.display.*;
import org.casalib.events.*;
import org.casalib.core.*;
public class CasaBitmap extends Bitmap implements IRemovableEventDispatcher, IDestroyable {
protected var _isDestroyed:Boolean;
protected var _listenerManager:ListenerManager;
public function CasaBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
this._listenerManager = ListenerManager.getManager(this);
}
public function destroy():void{
this.removeEventListeners();
this._listenerManager.destroy();
this._isDestroyed = true;
if (this.parent != null){
this.parent.removeChild(this);
};
}
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);
this._listenerManager.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function removeEventsForListener(_arg1:Function):void{
this._listenerManager.removeEventsForListener(_arg1);
}
public function removeEventListeners():void{
this._listenerManager.removeEventListeners();
}
override public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
super.removeEventListener(_arg1, _arg2, _arg3);
this._listenerManager.removeEventListener(_arg1, _arg2, _arg3);
}
public function removeEventsForType(_arg1:String):void{
this._listenerManager.removeEventsForType(_arg1);
}
public function get destroyed():Boolean{
return (this._isDestroyed);
}
}
}//package org.casalib.display
Section 395
//CasaSprite (org.casalib.display.CasaSprite)
package org.casalib.display {
import flash.display.*;
import org.casalib.events.*;
import org.casalib.core.*;
public class CasaSprite extends Sprite implements IRemovableEventDispatcher, IDestroyable {
protected var _isDestroyed:Boolean;
protected var _listenerManager:ListenerManager;
public function CasaSprite(){
this._listenerManager = ListenerManager.getManager(this);
}
public function destroy():void{
this.removeEventListeners();
this._listenerManager.destroy();
this._isDestroyed = true;
if (this.parent != null){
this.parent.removeChild(this);
};
}
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);
this._listenerManager.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
public function removeEventsForListener(_arg1:Function):void{
this._listenerManager.removeEventsForListener(_arg1);
}
public function removeEventListeners():void{
this._listenerManager.removeEventListeners();
}
override public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
super.removeEventListener(_arg1, _arg2, _arg3);
this._listenerManager.removeEventListener(_arg1, _arg2, _arg3);
}
public function removeEventsForType(_arg1:String):void{
this._listenerManager.removeEventsForType(_arg1);
}
public function get destroyed():Boolean{
return (this._isDestroyed);
}
}
}//package org.casalib.display
Section 396
//IRemovableEventDispatcher (org.casalib.events.IRemovableEventDispatcher)
package org.casalib.events {
import flash.events.*;
public interface IRemovableEventDispatcher extends IEventDispatcher {
function removeEventsForListener(_arg1:Function):void;
function removeEventListeners():void;
function removeEventsForType(_arg1:String):void;
}
}//package org.casalib.events
Section 397
//ListenerManager (org.casalib.events.ListenerManager)
package org.casalib.events {
import flash.events.*;
import flash.utils.*;
import org.casalib.core.*;
public class ListenerManager extends Destroyable implements IRemovableEventDispatcher {
protected var _blockRequest:Boolean;
protected var _eventDispatcher:IEventDispatcher;
protected var _events:Array;
protected static var _proxyMap:Dictionary;
public function ListenerManager(_arg1:EventInfo, _arg2:IEventDispatcher){
this._eventDispatcher = _arg2;
this._events = new Array();
}
public function dispatchEvent(_arg1:Event):Boolean{
return (this._eventDispatcher.dispatchEvent(_arg1));
}
public function willTrigger(_arg1:String):Boolean{
return (this._eventDispatcher.willTrigger(_arg1));
}
public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
if (this._blockRequest){
return;
};
var _local4:EventInfo = new EventInfo(_arg1, _arg2, _arg3);
var _local5:int = this._events.length;
while (_local5--) {
if (this._events[_local5].equals(_local4)){
this._events.splice(_local5, 1);
};
};
}
public function removeEventListeners():void{
var _local2:EventInfo;
this._blockRequest = true;
var _local1:int = this._events.length;
while (_local1--) {
_local2 = this._events.splice(_local1, 1)[0];
this._eventDispatcher.removeEventListener(_local2.type, _local2.listener, _local2.useCapture);
};
this._blockRequest = false;
}
public function removeEventsForListener(_arg1:Function):void{
var _local3:EventInfo;
this._blockRequest = true;
var _local2:int = this._events.length;
while (_local2--) {
_local3 = this._events[_local2];
if (_local3.listener == _arg1){
this._events.splice(_local2, 1);
this._eventDispatcher.removeEventListener(_local3.type, _local3.listener, _local3.useCapture);
};
};
this._blockRequest = false;
}
public function hasEventListener(_arg1:String):Boolean{
return (this._eventDispatcher.hasEventListener(_arg1));
}
override public function destroy():void{
this.removeEventListeners();
delete ListenerManager._proxyMap[this._eventDispatcher];
this._eventDispatcher = null;
super.destroy();
}
public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{
var _local6:EventInfo = new EventInfo(_arg1, _arg2, _arg3);
var _local7:int = this._events.length;
while (_local7--) {
if (this._events[_local7].equals(_local6)){
return;
};
};
this._events.push(_local6);
}
public function removeEventsForType(_arg1:String):void{
var _local3:EventInfo;
this._blockRequest = true;
var _local2:int = this._events.length;
while (_local2--) {
_local3 = this._events[_local2];
if (_local3.type == _arg1){
this._events.splice(_local2, 1);
this._eventDispatcher.removeEventListener(_local3.type, _local3.listener, _local3.useCapture);
};
};
this._blockRequest = false;
}
public static function getManager(_arg1:IEventDispatcher):ListenerManager{
if (ListenerManager._proxyMap == null){
ListenerManager._proxyMap = new Dictionary();
};
if (ListenerManager._proxyMap[_arg1] == null){
ListenerManager._proxyMap[_arg1] = new ListenerManager(new EventInfo(null, null, false), _arg1);
};
return (ListenerManager._proxyMap[_arg1]);
}
}
}//package org.casalib.events
class EventInfo {
public var listener:Function;
public var type:String;
public var useCapture:Boolean;
private function EventInfo(_arg1:String, _arg2:Function, _arg3:Boolean){
this.type = _arg1;
this.listener = _arg2;
this.useCapture = _arg3;
}
public function equals(_arg1:EventInfo):Boolean{
return ((((((this.type == _arg1.type)) && ((this.listener == _arg1.listener)))) && ((this.useCapture == _arg1.useCapture))));
}
}
Section 398
//Percent (org.casalib.math.Percent)
package org.casalib.math {
public class Percent {
protected var _percent:Number;
public function Percent(_arg1:Number=0, _arg2:Boolean=true){
if (_arg2){
this.decimalPercentage = _arg1;
} else {
this.percentage = _arg1;
};
}
public function set percentage(_arg1:Number):void{
this._percent = (_arg1 * 0.01);
}
public function clone():Percent{
return (new Percent(this.decimalPercentage));
}
public function get percentage():Number{
return ((100 * this._percent));
}
public function get decimalPercentage():Number{
return (this._percent);
}
public function set decimalPercentage(_arg1:Number):void{
this._percent = _arg1;
}
public function toString():String{
return (this.decimalPercentage.toString());
}
public function equals(_arg1:Percent):Boolean{
return ((this.decimalPercentage == _arg1.decimalPercentage));
}
}
}//package org.casalib.math
Section 399
//NumberUtil (org.casalib.util.NumberUtil)
package org.casalib.util {
import org.casalib.math.*;
public class NumberUtil {
public static function interpolate(_arg1:Percent, _arg2:Number, _arg3:Number):Number{
return ((_arg2 + ((_arg3 - _arg2) * _arg1.decimalPercentage)));
}
public static function isEven(_arg1:Number):Boolean{
return (((_arg1 & 1) == 0));
}
public static function isOdd(_arg1:Number):Boolean{
return (!(NumberUtil.isEven(_arg1)));
}
public static function constrain(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return (Math.min(Math.max(_arg1, Math.min(_arg2, _arg3)), Math.max(_arg2, _arg3)));
}
public static function roundDecimalToPlace(_arg1:Number, _arg2:uint):Number{
var _local3:Number = Math.pow(10, _arg2);
return ((Math.round((_arg1 * _local3)) / _local3));
}
public static function max(_arg1, _arg2):Number{
if (((((isNaN(_arg1)) && (isNaN(_arg2)))) || ((((_arg1 == null)) && ((_arg2 == null)))))){
return (NaN);
};
if ((((_arg1 == null)) || ((_arg2 == null)))){
return (((_arg2)==null) ? _arg1 : _arg2);
};
if (((isNaN(_arg1)) || (isNaN(_arg2)))){
return ((isNaN(_arg2)) ? _arg1 : _arg2);
};
return (Math.max(_arg1, _arg2));
}
public static function getOrdinalSuffix(_arg1:int):String{
if ((((_arg1 >= 10)) && ((_arg1 <= 20)))){
return ("th");
};
switch ((_arg1 % 10)){
case 0:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
return ("th");
case 3:
return ("rd");
case 2:
return ("nd");
case 1:
return ("st");
default:
return ("");
};
}
public static function normalize(_arg1:Number, _arg2:Number, _arg3:Number):Percent{
return (new Percent(((_arg1 - _arg2) / (_arg3 - _arg2))));
}
public static function loopIndex(_arg1:int, _arg2:uint):uint{
if (_arg1 < 0){
_arg1 = (_arg2 + (_arg1 % _arg2));
};
if (_arg1 >= _arg2){
return ((_arg1 % _arg2));
};
return (_arg1);
}
public static function randomWithinRange(_arg1:Number, _arg2:Number):Number{
return ((_arg1 + (Math.random() * (_arg2 - _arg1))));
}
public static function min(_arg1, _arg2):Number{
if (((((isNaN(_arg1)) && (isNaN(_arg2)))) || ((((_arg1 == null)) && ((_arg2 == null)))))){
return (NaN);
};
if ((((_arg1 == null)) || ((_arg2 == null)))){
return (((_arg2)==null) ? _arg1 : _arg2);
};
if (((isNaN(_arg1)) || (isNaN(_arg2)))){
return ((isNaN(_arg2)) ? _arg1 : _arg2);
};
return (Math.min(_arg1, _arg2));
}
public static function isInteger(_arg1:Number):Boolean{
return (((_arg1 % 1) == 0));
}
public static function isPrime(_arg1:Number):Boolean{
if ((((_arg1 == 1)) || ((_arg1 == 2)))){
return (true);
};
if (NumberUtil.isEven(_arg1)){
return (false);
};
var _local2:Number = Math.sqrt(_arg1);
var _local3:Number = 3;
while (_local3 <= _local2) {
if ((_arg1 % _local3) == 0){
return (false);
};
_local3++;
};
return (true);
}
public static function randomIntegerWithinRange(_arg1:int, _arg2:int):int{
return (Math.round(NumberUtil.randomWithinRange(_arg1, _arg2)));
}
public static function format(_arg1:Number, _arg2:uint, _arg3:String=null, _arg4:String=null):String{
var _local7:Array;
var _local8:uint;
var _local9:uint;
var _local10:String;
var _local5:String = _arg1.toString();
var _local6:uint = _local5.length;
if (_arg3 != null){
_local7 = _local5.split("");
_local8 = 3;
_local9 = _local7.length;
while (--_local9 > 0) {
--_local8;
if (_local8 == 0){
_local8 = 3;
_local7.splice(_local9, 0, _arg3);
};
};
_local5 = _local7.join("");
};
if (_arg2 != 0){
if (_local6 < _arg2){
_arg2 = (_arg2 - _local6);
_local10 = ((_arg4)==null) ? "0" : _arg4;
while (_arg2--) {
_local5 = (_local10 + _local5);
};
};
};
return (_local5);
}
public static function addLeadingZero(_arg1:Number):String{
return (((_arg1)<10) ? ("0" + _arg1) : _arg1.toString());
}
public static function map(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):Number{
return (NumberUtil.interpolate(NumberUtil.normalize(_arg1, _arg2, _arg3), _arg4, _arg5));
}
public static function createStepsBetween(_arg1:Number, _arg2:Number, _arg3:Number):Array{
_arg3++;
var _local4:uint;
var _local5:Array = new Array();
var _local6:Number = ((_arg2 - _arg1) / _arg3);
while (++_local4 < _arg3) {
_local5.push(((_local4 * _local6) + _arg1));
};
return (_local5);
}
public static function isBetween(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{
return (!((((_arg1 < Math.min(_arg2, _arg3))) || ((_arg1 > Math.max(_arg2, _arg3))))));
}
}
}//package org.casalib.util
Section 400
//ObjectUtil (org.casalib.util.ObjectUtil)
package org.casalib.util {
import flash.utils.*;
public class ObjectUtil {
public static function isNull(_arg1:Object):Boolean{
return ((_arg1 === null));
}
public static function isEmpty(_arg1):Boolean{
var _local2:String;
if (_arg1 == undefined){
return (true);
};
if ((_arg1 is Number)){
return (isNaN(_arg1));
};
if ((((_arg1 is Array)) || ((_arg1 is String)))){
return ((_arg1.length == 0));
};
if ((_arg1 is Object)){
for (_local2 in _arg1) {
return (false);
};
return (true);
};
return (false);
}
public static function isUndefined(_arg1:Object):Boolean{
return ((_arg1 is undefined));
}
public static function getKeys(_arg1:Object):Array{
var _local3:String;
var _local2:Array = new Array();
for (_local3 in _arg1) {
_local2.push(_local3);
};
return (_local2);
}
public static function clone(_arg1:Object):Object{
var _local2:ByteArray = new ByteArray();
_local2.writeObject(_arg1);
_local2.position = 0;
return (_local2.readObject());
}
public static function contains(_arg1:Object, _arg2:Object):Boolean{
var _local3:String;
for (_local3 in _arg1) {
if (_arg1[_local3] == _arg2){
return (true);
};
};
return (false);
}
}
}//package org.casalib.util
Section 401
//StageReference (org.casalib.util.StageReference)
package org.casalib.util {
import flash.display.*;
import flash.utils.*;
public class StageReference {
public static const STAGE_DEFAULT:String = "stageDefault";
protected static var _stageMap:Dictionary;
public static function removeStage(_arg1:String="stageDefault"):Boolean{
if (_slot1._getMap()[_arg1] == null){
return (false);
};
_slot1.setStage(null, _arg1);
return (true);
}
public static function getStageId(_arg1:Stage):String{
var _local3:String;
var _local2:Dictionary = _slot1._getMap();
for (_local3 in _local2) {
if (_local2[_local3] == _arg1){
return (_local3);
};
};
return (null);
}
protected static function _getMap():Dictionary{
if (_slot1._stageMap == null){
_slot1._stageMap = new Dictionary();
};
return (_slot1._stageMap);
}
public static function getStage(_arg1:String="stageDefault"):Stage{
if (_slot1._getMap()[_arg1] == null){
throw (new Error((("Cannot get Stage (\"" + _arg1) + "\") before it has been set.")));
};
return (_slot1._getMap()[_arg1]);
}
public static function getIds():Array{
return (ObjectUtil.getKeys(_slot1._getMap()));
}
public static function setStage(_arg1:Stage, _arg2:String="stageDefault"):void{
_slot1._getMap()[_arg2] = _arg1;
}
}
}//package org.casalib.util
Section 402
//HelpBrowser (pages.helpbrowser.HelpBrowser)
package pages.helpbrowser {
import flash.events.*;
import com.markfennell.sound.*;
import flash.display.*;
import org.casalib.display.*;
import ui.*;
import fl.motion.easing.*;
import assets_ui.pages.helpBrowser.*;
import gs.*;
public class HelpBrowser extends CasaSprite {
private var m_ui:MovieClip;
private var m_content:CasaSprite;
private var m_selectedID:int;
private var m_leftArrow:DoubleGraphicButton;
private var m_contentArray:Array;
private var m_rightArrow:DoubleGraphicButton;
public function HelpBrowser(){
m_ui = new browserBg();
addChild(m_ui);
m_leftArrow = new DoubleGraphicButton(m_ui.arrowLeftOff, m_ui.arrowLeftOn);
m_rightArrow = new DoubleGraphicButton(m_ui.arrowRightOff, m_ui.arrowRightOn);
m_leftArrow.addEventListener(DoubleGraphicButton.CLICKED, onArrowClickHandler, false, 0, true);
m_rightArrow.addEventListener(DoubleGraphicButton.CLICKED, onArrowClickHandler, false, 0, true);
m_contentArray = [HelpPage1, HelpPage2, HelpPage3, HelpPage4, HelpPage5];
m_selectedID = 0;
showContent(m_selectedID);
}
private function removeContent(_arg1:int=0):void{
if (m_content != null){
if (_arg1 > 0){
TweenMax.to(m_content, 0.2, {x:-50, alpha:0, onComplete:destroyContent, onCompleteParams:[m_content]});
} else {
if (_arg1 < 0){
TweenMax.to(m_content, 0.2, {x:50, alpha:0, onComplete:destroyContent, onCompleteParams:[m_content]});
} else {
m_content.destroy();
};
};
m_content = null;
};
}
private function destroyContent(_arg1:CasaSprite):void{
_arg1.destroy();
}
override public function destroy():void{
m_leftArrow.removeEventListener(DoubleGraphicButton.CLICKED, onArrowClickHandler);
m_rightArrow.removeEventListener(DoubleGraphicButton.CLICKED, onArrowClickHandler);
m_leftArrow.destroy();
m_rightArrow.destroy();
TweenMax.killAll(true, false, false);
removeContent();
m_contentArray = null;
super.destroy();
}
private function onArrowClickHandler(_arg1:Event):void{
var _local2:int;
var _local3:int;
if (_arg1.target == m_leftArrow){
_local2 = -1;
} else {
if (_arg1.target == m_rightArrow){
_local2 = 1;
} else {
trace(("ERROR - target of arrow click is unknown: " + _arg1.target));
};
};
if ((m_selectedID + _local2) < 0){
_local3 = (m_contentArray.length - 1);
} else {
if ((m_selectedID + _local2) > (m_contentArray.length - 1)){
_local3 = 0;
} else {
_local3 = (m_selectedID + _local2);
};
};
removeContent(_local2);
m_selectedID = _local3;
showContent(m_selectedID, _local2);
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep2", 0.5, 1));
}
private function showContent(_arg1:int, _arg2:int=0):void{
m_content = new (m_contentArray[_arg1]);
addChild(m_content);
if (_arg2 > 0){
TweenMax.from(m_content, 0.2, {x:50, tint:0xFFFFFF, ease:Quadratic.easeOut});
} else {
if (_arg2 < 0){
TweenMax.from(m_content, 0.2, {x:-50, tint:0xFFFFFF, ease:Quadratic.easeOut});
} else {
TweenMax.from(m_content, 0.2, {tint:0xFFFFFF, ease:Quadratic.easeOut});
};
};
}
}
}//package pages.helpbrowser
Section 403
//HelpPage1 (pages.helpbrowser.HelpPage1)
package pages.helpbrowser {
import flash.display.*;
import org.casalib.display.*;
import assets_ui.pages.help.*;
public class HelpPage1 extends CasaSprite {
private var m_ui:MovieClip;
public function HelpPage1(){
m_ui = new HelpPage1();
addChild(m_ui);
}
}
}//package pages.helpbrowser
Section 404
//HelpPage2 (pages.helpbrowser.HelpPage2)
package pages.helpbrowser {
import flash.events.*;
import flash.display.*;
import org.casalib.display.*;
import ui.*;
import fl.motion.easing.*;
import assets_ui.pages.help.*;
import assets_ui.pages.help.defenders.*;
import gs.*;
public class HelpPage2 extends CasaSprite {
private var m_selectedID:int;
private var m_molemanBtn:DoubleGraphicSelectedButton;
private var m_drdoomBtn:DoubleGraphicSelectedButton;
private var m_spidermanBtn:DoubleGraphicSelectedButton;
private var m_msmarvelBtn:DoubleGraphicSelectedButton;
private var m_ui:MovieClip;
private var m_content:MovieClip;
private var m_modokBtn:DoubleGraphicSelectedButton;
private var m_thorBtn:DoubleGraphicSelectedButton;
private var m_buttonArray:Array;
private var m_contentArray:Array;
private var m_cyclopsBtn:DoubleGraphicSelectedButton;
private var m_ironmanBtn:DoubleGraphicSelectedButton;
public function HelpPage2(){
m_ui = new HelpPage2();
addChild(m_ui);
m_ironmanBtn = new DoubleGraphicSelectedButton(m_ui.ironmanOff, m_ui.ironmanOn);
m_msmarvelBtn = new DoubleGraphicSelectedButton(m_ui.msmarvelOff, m_ui.msmarvelOn);
m_thorBtn = new DoubleGraphicSelectedButton(m_ui.thorOff, m_ui.thorOn);
m_cyclopsBtn = new DoubleGraphicSelectedButton(m_ui.cyclopsOff, m_ui.cyclopsOn);
m_spidermanBtn = new DoubleGraphicSelectedButton(m_ui.spidermanOff, m_ui.spidermanOn);
m_buttonArray = [m_ironmanBtn, m_msmarvelBtn, m_thorBtn, m_cyclopsBtn, m_spidermanBtn];
var _local1:int;
while (_local1 < m_buttonArray.length) {
m_buttonArray[_local1].addEventListener(DoubleGraphicSelectedButton.CLICKED, onCharacterClickHandler, false, 0, true);
_local1++;
};
m_contentArray = [IronmanPage, MsmarvelPage, ThorPage, CyclopsPage, SpidermanPage];
m_selectedID = 0;
DoubleGraphicSelectedButton(m_buttonArray[m_selectedID]).setSelected();
addContent(m_selectedID);
}
override public function destroy():void{
var _local1:int;
while (_local1 < m_buttonArray.length) {
m_buttonArray[_local1].removeEventListener(DoubleGraphicSelectedButton.CLICKED, onCharacterClickHandler);
m_buttonArray[_local1].destroy();
_local1++;
};
TweenMax.killAll(true, false, false);
removeContent();
m_contentArray = null;
super.destroy();
}
private function removeContent():void{
if (m_content != null){
removeChild(m_content);
m_content = null;
};
}
private function addContent(_arg1:int):void{
m_content = new (m_contentArray[_arg1]);
addChild(m_content);
m_content.x = 157;
m_content.y = 84;
TweenMax.from(m_content, 0.2, {tint:0xFFFFFF, ease:Quadratic.easeOut});
}
private function onCharacterClickHandler(_arg1:Event):void{
var _local2:int = m_buttonArray.indexOf(_arg1.target);
if (_local2 != m_selectedID){
removeContent();
DoubleGraphicSelectedButton(m_buttonArray[m_selectedID]).setUnselected();
m_selectedID = _local2;
DoubleGraphicSelectedButton(m_buttonArray[_local2]).setSelected();
addContent(m_selectedID);
};
}
}
}//package pages.helpbrowser
Section 405
//HelpPage3 (pages.helpbrowser.HelpPage3)
package pages.helpbrowser {
import flash.display.*;
import org.casalib.display.*;
import assets_ui.pages.help.*;
public class HelpPage3 extends CasaSprite {
private var m_ui:MovieClip;
public function HelpPage3(){
m_ui = new HelpPage3();
addChild(m_ui);
}
}
}//package pages.helpbrowser
Section 406
//HelpPage4 (pages.helpbrowser.HelpPage4)
package pages.helpbrowser {
import flash.display.*;
import org.casalib.display.*;
import assets_ui.pages.help.*;
public class HelpPage4 extends CasaSprite {
private var m_ui:MovieClip;
public function HelpPage4(){
m_ui = new HelpPage4();
addChild(m_ui);
}
}
}//package pages.helpbrowser
Section 407
//HelpPage5 (pages.helpbrowser.HelpPage5)
package pages.helpbrowser {
import flash.display.*;
import org.casalib.display.*;
import assets_ui.pages.help.*;
public class HelpPage5 extends CasaSprite {
private var m_ui:MovieClip;
public function HelpPage5(){
m_ui = new HelpPage5();
addChild(m_ui);
}
}
}//package pages.helpbrowser
Section 408
//BasePage (pages.BasePage)
package pages {
import console.*;
import flash.display.*;
import org.casalib.display.*;
import interfaces.*;
import gs.*;
public class BasePage extends CasaSprite implements IConsoleSection {
protected var m_ui:MovieClip;
public function hide():void{
}
public function doExitAttempt():void{
}
public function transitionIn_COMPLETE():void{
dispatchEvent(new ConsoleEvent(ConsoleEvent.TRANSITION_COMPLETE));
}
public function doPause():void{
}
protected function center():void{
m_ui.x = int((Constants.STAGE_WIDTH * 0.5));
m_ui.y = int((Constants.STAGE_HEIGHT * 0.5));
}
public function doResume():void{
}
public function transitionOut():void{
TweenMax.to(m_ui, 0.75, {alpha:0});
}
public function transitionIn():void{
TweenMax.to(m_ui, 0.75, {alpha:1, onComplete:transitionIn_COMPLETE});
}
override public function destroy():void{
if (m_ui){
TweenMax.killTweensOf(m_ui);
removeChild(m_ui);
m_ui = null;
};
super.destroy();
}
}
}//package pages
Section 409
//Characters (pages.Characters)
package pages {
import assets_ui.pages.*;
public class Characters extends BasePage {
private var m_browser:CharactersBrowser;
public function Characters(){
m_ui = new CharactersUI();
addChild(m_ui);
m_ui.alpha = 0;
m_browser = new CharactersBrowser();
m_browser.x = 89;
m_browser.y = 158;
addChild(m_browser);
}
override public function destroy():void{
m_browser.destroy();
super.destroy();
}
}
}//package pages
Section 410
//CharactersBrowser (pages.CharactersBrowser)
package pages {
import flash.events.*;
import com.markfennell.sound.*;
import flash.display.*;
import org.casalib.display.*;
import ui.*;
import fl.motion.easing.*;
import assets_ui.pages.characters.*;
import assets_ui.pages.characterBrowser.*;
import gs.*;
public class CharactersBrowser extends CasaSprite {
private var m_selectedID:int;
private var m_molemanBtn:DoubleGraphicSelectedButton;
private var m_drdoomBtn:DoubleGraphicSelectedButton;
private var m_spidermanBtn:DoubleGraphicSelectedButton;
private var m_msmarvelBtn:DoubleGraphicSelectedButton;
private var m_ui:MovieClip;
private var m_content:MovieClip;
private var m_sideArray:Array;
private var m_thorBtn:DoubleGraphicSelectedButton;
private var m_buttonArray:Array;
private var m_modokBtn:DoubleGraphicSelectedButton;
private var m_contentArray:Array;
private var m_cyclopsBtn:DoubleGraphicSelectedButton;
private var m_ironmanBtn:DoubleGraphicSelectedButton;
public function CharactersBrowser(){
m_ui = new browserBg();
addChild(m_ui);
m_ironmanBtn = new DoubleGraphicSelectedButton(m_ui.ironmanOff, m_ui.ironmanOn);
m_msmarvelBtn = new DoubleGraphicSelectedButton(m_ui.msmarvelOff, m_ui.msmarvelOn);
m_thorBtn = new DoubleGraphicSelectedButton(m_ui.thorOff, m_ui.thorOn);
m_cyclopsBtn = new DoubleGraphicSelectedButton(m_ui.cyclopsOff, m_ui.cyclopsOn);
m_spidermanBtn = new DoubleGraphicSelectedButton(m_ui.spidermanOff, m_ui.spidermanOn);
m_drdoomBtn = new DoubleGraphicSelectedButton(m_ui.drdoomOff, m_ui.drdoomOn);
m_modokBtn = new DoubleGraphicSelectedButton(m_ui.modokOff, m_ui.modokOn);
m_molemanBtn = new DoubleGraphicSelectedButton(m_ui.molemanOff, m_ui.molemanOn);
m_buttonArray = [m_ironmanBtn, m_msmarvelBtn, m_thorBtn, m_cyclopsBtn, m_spidermanBtn, m_drdoomBtn, m_modokBtn, m_molemanBtn];
var _local1:int;
while (_local1 < m_buttonArray.length) {
m_buttonArray[_local1].addEventListener(DoubleGraphicSelectedButton.CLICKED, onCharacterClickHandler, false, 0, true);
_local1++;
};
m_contentArray = [IronmanPage, MsmarvelPage, ThorPage, CyclopsPage, SpidermanPage, DrdoomPage, ModokPage, MolemanPage];
m_sideArray = ["hero", "hero", "hero", "hero", "hero", "villain", "villain", "villain"];
m_selectedID = 0;
DoubleGraphicSelectedButton(m_buttonArray[m_selectedID]).setSelected();
addContent(m_selectedID);
}
override public function destroy():void{
var _local1:int;
while (_local1 < m_buttonArray.length) {
m_buttonArray[_local1].removeEventListener(DoubleGraphicSelectedButton.CLICKED, onCharacterClickHandler);
m_buttonArray[_local1].destroy();
_local1++;
};
TweenMax.killAll(true, false, false);
removeContent();
m_contentArray = null;
super.destroy();
}
private function removeContent():void{
if (m_content != null){
removeChild(m_content);
m_content = null;
};
}
private function addContent(_arg1:int):void{
m_content = new (m_contentArray[_arg1]);
addChild(m_content);
m_content.x = 75;
m_content.y = 26;
TweenMax.from(m_content, 0.2, {tint:0xFFFFFF, ease:Quadratic.easeOut});
m_ui.bgPanel.gotoAndStop(m_sideArray[m_selectedID]);
}
private function onCharacterClickHandler(_arg1:Event):void{
var _local2:int = m_buttonArray.indexOf(_arg1.target);
if (_local2 != m_selectedID){
removeContent();
DoubleGraphicSelectedButton(m_buttonArray[m_selectedID]).setUnselected();
m_selectedID = _local2;
DoubleGraphicSelectedButton(m_buttonArray[_local2]).setSelected();
addContent(m_selectedID);
};
GameBroadcaster.dispatchEvent(new SoundEvent(SoundEvent.EFFECT, "assets_sfx.sfx.common.bleep2", 0.5, 1));
}
}
}//package pages
Section 411
//Credits (pages.Credits)
package pages {
import assets_ui.pages.*;
public class Credits extends BasePage {
public function Credits(){
m_ui = new CreditsUI();
addChild(m_ui);
m_ui.alpha = 0;
m_ui.version.text = Constants.VERSION;
}
}
}//package pages
Section 412
//Help (pages.Help)
package pages {
import pages.helpbrowser.*;
import assets_ui.pages.*;
public class Help extends BasePage {
private var m_browser:HelpBrowser;
public function Help(){
m_ui = new HelpUI();
addChild(m_ui);
m_ui.alpha = 0;
m_browser = new HelpBrowser();
m_browser.x = 78;
m_browser.y = 159;
addChild(m_browser);
}
override public function destroy():void{
m_browser.destroy();
super.destroy();
}
}
}//package pages
Section 413
//IntroVideo (pages.IntroVideo)
package pages {
import flash.events.*;
import console.*;
import net.*;
import ui.*;
import assets_ui.pages.*;
import gs.*;
public class IntroVideo extends BasePage {
private var m_videoPlayerWrapper:VideoPlayerWrapper;
private var m_skipBtn:DoubleGraphicButton;
public function IntroVideo(){
m_ui = new IntroVideoUI();
addChild(m_ui);
m_ui.alpha = 0;
m_videoPlayerWrapper = new VideoPlayerWrapper(Constants.INTRO_VIDEO_URL, m_ui.videoWindow);
m_videoPlayerWrapper.addEventListener(VideoPlayerWrapper.VIDEO_START, videoStartHandler, false, 0, true);
m_videoPlayerWrapper.addEventListener(VideoPlayerWrapper.VIDEO_FINISH, videoFinishHandler, false, 0, true);
m_skipBtn = new DoubleGraphicButton(m_ui.skipBtn, m_ui.skipGlowBtn);
m_skipBtn.addEventListener(DoubleGraphicButton.CLICKED, skipClickHandler, false, 0, true);
m_ui.videoWindow.alpha = 0;
m_ui.skipBtn.alpha = 0;
m_ui.skipGlowBtn.alpha = 0;
}
private function showSkipBtn():void{
m_skipBtn.enableButton();
}
private function skipClickHandler(_arg1:Event):void{
fadeDownVideo();
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "introVideo", "videoSkipped");
}
private function videoStartHandler(_arg1:Event):void{
TweenMax.to(m_ui.videoWindow, 1, {alpha:1, delay:1, onComplete:showSkipBtn});
}
override public function destroy():void{
m_videoPlayerWrapper.removeEventListener(VideoPlayerWrapper.VIDEO_START, videoStartHandler);
m_videoPlayerWrapper.removeEventListener(VideoPlayerWrapper.VIDEO_START, videoFinishHandler);
m_videoPlayerWrapper.destroy();
m_skipBtn.removeEventListener(DoubleGraphicButton.CLICKED, skipClickHandler);
m_skipBtn.destroy();
super.destroy();
}
private function beginGame():void{
GameBroadcaster.dispatchEvent(new ConsoleEvent(ConsoleEvent.DISPLAY_PLAYGAME));
}
private function videoFinishHandler(_arg1:Event):void{
fadeDownVideo();
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "introVideo", "videoComplete");
}
private function fadeDownVideo():void{
m_skipBtn.disableButton();
TweenMax.to(m_ui.videoWindow, 0.5, {alpha:0, delay:0, onComplete:beginGame});
}
}
}//package pages
Section 414
//Medals (pages.Medals)
package pages {
import game.achievements.*;
import assets_ui.pages.*;
public class Medals extends BasePage {
private var m_medalDisplays:Array;
public function Medals(){
m_ui = new MedalsUI();
addChild(m_ui);
m_ui.alpha = 0;
var _local1:Array = AchievementData.instance.achievements;
m_medalDisplays = [];
m_medalDisplays[9] = new MedalPageDisplay(_local1[9], m_ui.lockGameAddict, m_ui.baseGameAddict, m_ui);
m_medalDisplays[8] = new MedalPageDisplay(_local1[8], m_ui.lockHighScore, m_ui.baseHighScore, m_ui);
m_medalDisplays[7] = new MedalPageDisplay(_local1[7], m_ui.lockMasterDefender, m_ui.baseMasterDefender, m_ui);
m_medalDisplays[6] = new MedalPageDisplay(_local1[6], m_ui.lockDefender, m_ui.baseDefender, m_ui);
m_medalDisplays[5] = new MedalPageDisplay(_local1[5], m_ui.lockConstructor, m_ui.baseConstructor, m_ui);
m_medalDisplays[4] = new MedalPageDisplay(_local1[4], m_ui.lockMillionaire, m_ui.baseMillionaire, m_ui);
m_medalDisplays[3] = new MedalPageDisplay(_local1[3], m_ui.lockDrdoom, m_ui.baseDrdoom, m_ui);
m_medalDisplays[2] = new MedalPageDisplay(_local1[2], m_ui.lockModok, m_ui.baseModok, m_ui);
m_medalDisplays[1] = new MedalPageDisplay(_local1[1], m_ui.lockGoldTower, m_ui.baseGoldTower, m_ui);
m_medalDisplays[0] = new MedalPageDisplay(_local1[0], m_ui.lockMoleman, m_ui.baseMoleman, m_ui);
}
override public function hide():void{
var _local1:int;
while (_local1 < m_medalDisplays.length) {
MedalPageDisplay(m_medalDisplays[_local1]).destroy();
_local1++;
};
}
override public function destroy():void{
if (m_ui){
removeChild(m_ui);
m_ui = null;
};
super.destroy();
}
}
}//package pages
Section 415
//Title (pages.Title)
package pages {
import com.malee.loaders.*;
import assets_ui.pages.*;
public class Title extends BasePage {
private var _sponsorLoaded:Boolean;
private var _requestPlay:Boolean;
private var _sponsorLogo:AssetLoader;
public function Title(){
m_ui = new TitleUI();
addChild(m_ui);
m_ui.alpha = 0;
m_ui.stop();
m_ui.x = 11;
m_ui.y = 61;
m_ui.gotoAndPlay("intro");
}
}
}//package pages
Section 416
//AbstractPreloader (preloader.AbstractPreloader)
package preloader {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import com.google.analytics.*;
public class AbstractPreloader extends MovieClip {
protected var m_adLoaded:Boolean;// = false
private var USE_EXTERNAL:Boolean;// = true
private var m_loadTime:int;
protected var VALID_URL:Array;
private var m_firstEnterFrame:Boolean;
protected var GoogleAnalytics:AnalyticsTracker;
public function AbstractPreloader(){
addEventListener(Event.ADDED_TO_STAGE, handleOnAddedToStage);
stop();
}
protected function endLoading():void{
}
public function start():void{
trace("start");
m_firstEnterFrame = true;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
protected function updateLoading(_arg1:Number):void{
}
private function handleOnAddedToStage(_arg1:Event):void{
stage.scaleMode = StageScaleMode.EXACT_FIT;
stage.align = StageAlign.TOP_LEFT;
m_loadTime = getTimer();
GoogleAnalytics = new GATracker(stage, Constants.GOOGLE, "AS3", false);
GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "game", "index");
trace(("AbstractPreloader GA: " + GoogleAnalytics));
}
protected function run():void{
setTimeout(startMain, 500);
}
protected function beginLoading():void{
}
protected function get mainClassName():String{
return ("SearchAndDestroy");
}
private function onEnterFrame(_arg1:Event):void{
var _local2:Number;
if (m_firstEnterFrame){
m_firstEnterFrame = false;
if (root.loaderInfo.bytesLoaded >= root.loaderInfo.bytesTotal){
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
nextFrame();
run();
} else {
beginLoading();
};
return;
};
if (root.loaderInfo.bytesLoaded >= root.loaderInfo.bytesTotal){
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
nextFrame();
run();
endLoading();
} else {
_local2 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal);
updateLoading(_local2);
};
}
private function startMain():void{
var _local1:Class = (getDefinitionByName(mainClassName) as Class);
if (_local1 == null){
throw (new Error("AbstractPreloader:initialize. There was no class matching that name. Did you remember to override mainClassName?"));
};
var _local2:DisplayObject = (new (_local1) as DisplayObject);
if (_local2 == null){
throw (new Error("AbstractPreloader:initialize. Main class needs to inherit from Sprite or MovieClip."));
};
_local1.loadTime = int(((getTimer() - m_loadTime) / 1000));
_local1.SPONSOR_URL = "";
addChildAt(_local2, 0);
}
}
}//package preloader
Section 417
//AbstractPreloaderViewDart (preloader.AbstractPreloaderViewDart)
package preloader {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import gs.*;
import com.doubleclick.dartshell.ad.events.*;
import assets_ui.*;
import com.malee.soap.*;
import nl.demonsters.debugger.*;
public class AbstractPreloaderViewDart extends AbstractPreloader {
private var m_dartLoader:DartSWFAD;
private var m_ui:Preloader;
private var m_menu:SoapMenu;
private var m_bg:PreloaderBackgroundUI;
private var m_embedded:Boolean;// = true
public function AbstractPreloaderViewDart(){
var adUrl:String;
var paramObj:Object;
var url:String;
var zone:String;
var sz:String;
var sect:String;
var ord:String;
var tile:String;
var ct:String;
super();
stop();
m_bg = new PreloaderBackgroundUI();
m_bg.x = 0;
m_bg.y = 0;
addChild(m_bg);
m_dartLoader = new DartSWFAD();
m_dartLoader.addEventListener(AdEvent.EXIT, handleAdShown);
try {
paramObj = LoaderInfo(root.loaderInfo).parameters;
url = String(root.loaderInfo.url);
zone = String(paramObj.zone);
if (zone == "undefined"){
adUrl = "http://ad.doubleclick.net/pfadx/gn.marvelkids.com/gamesos";
} else {
adUrl = "http://ad.doubleclick.net/pfadx/gn.marvelkids.com/";
adUrl = (adUrl + zone);
};
sz = String(paramObj.sz);
if (sz == "undefined"){
adUrl = (adUrl + ";sz=506x506");
} else {
adUrl = (adUrl + (";sz=" + sz));
};
sect = String(paramObj.sect);
if (sect != "undefined"){
adUrl = (adUrl + (";sect=" + sect));
};
ord = String(paramObj.ord);
if (ord != "undefined"){
adUrl = (adUrl + (";ord=" + ord));
};
tile = String(paramObj.tile);
if (tile != "undefined"){
adUrl = (adUrl + (";tile=" + tile));
};
ct = String(paramObj.ct);
if (ct == "undefined"){
ct = Constants.DART_CT;
};
adUrl = (adUrl + (";ct=" + ct));
Constants.AD_URL = adUrl;
} catch(e:Error) {
};
m_dartLoader.load(Constants.AD_URL, root.loaderInfo.url);
addChild(m_dartLoader);
m_dartLoader.x = 215;
m_dartLoader.y = 40;
m_ui = new Preloader();
m_ui.x = 375;
m_ui.y = 425;
addChild(m_ui);
m_menu = new SoapMenu(this);
m_menu.addItem(Constants.VERSION);
super.start();
}
override protected function endLoading():void{
}
override protected function get mainClassName():String{
return ("SuperHeroSquad_dart_v1");
}
override protected function updateLoading(_arg1:Number):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local2:int = (104 / 2);
var _local3:Number = (_arg1 * (Math.PI * 2));
var _local4:int = (1 + ((_local3 / Math.PI) * 30));
m_ui.bar.graphics.clear();
m_ui.bar.graphics.lineStyle(6, 0xFF0000, 1, false, "normal", CapsStyle.SQUARE);
m_ui.bar.graphics.moveTo(0, -(_local2));
var _local5:int;
while (_local5 <= _local4) {
_local6 = ((_local5 / _local4) * _local3);
_local7 = (_local6 - (Math.PI / 2));
_local8 = (Math.cos(_local7) * _local2);
_local9 = (Math.sin(_local7) * _local2);
m_ui.bar.graphics.lineTo(_local8, _local9);
_local5++;
};
}
private function handleAdShown(_arg1:Event):void{
MonsterDebugger.trace(this, "AdEvent.EXIT heard");
m_dartLoader.removeEventListener(AdEvent.EXIT, handleAdShown);
m_adLoaded = true;
}
override protected function run():void{
MonsterDebugger.trace(this, ("run() " + m_adLoaded));
if (m_adLoaded){
TweenMax.to(m_ui, 0.5, {alpha:0});
removeChild(m_bg);
m_bg = null;
removeChild(m_ui);
m_ui = null;
m_dartLoader.destroy();
removeChild(m_dartLoader);
m_dartLoader = null;
super.run();
} else {
setTimeout(run, 1000);
};
}
override protected function beginLoading():void{
MonsterDebugger.trace(this, "begin Loading");
}
}
}//package preloader
Section 418
//DoubleGraphicButton (ui.DoubleGraphicButton)
package ui {
import flash.events.*;
import flash.display.*;
import gs.*;
public class DoubleGraphicButton extends EventDispatcher {
private var m_over:MovieClip;
private var m_buttonMode:Boolean;// = true
private var m_clickEnabled:Boolean;// = true
private var m_off:MovieClip;
public static var OVER:String = "over";
public static var CLICKED:String = "clicked";
public static var OFF:String = "off";
public function DoubleGraphicButton(_arg1:MovieClip, _arg2:MovieClip){
m_off = _arg1;
m_over = _arg2;
m_over.buttonMode = true;
m_off.buttonMode = true;
m_over.alpha = 0;
m_over.addEventListener(MouseEvent.ROLL_OUT, handleRollOut, false, 0, true);
m_over.addEventListener(MouseEvent.ROLL_OVER, handleRollOver, false, 0, true);
m_over.addEventListener(MouseEvent.CLICK, handleClick, false, 0, true);
}
private function handleClick(_arg1:MouseEvent=null):void{
if (m_clickEnabled){
dispatchEvent(new Event(CLICKED));
};
}
private function handleRollOut(_arg1:MouseEvent=null):void{
TweenMax.to(m_over, 0.25, {alpha:0});
dispatchEvent(new Event(OFF));
}
public function disableCursorAndEvents():void{
m_buttonMode = false;
m_clickEnabled = false;
m_over.buttonMode = false;
m_off.buttonMode = false;
}
public function enableButton():void{
m_over.mouseEnabled = true;
TweenMax.to(m_off, 0.25, {alpha:1});
}
public function enableCursorAndEvents():void{
m_buttonMode = true;
m_clickEnabled = true;
m_over.buttonMode = true;
m_off.buttonMode = true;
}
private function handleRollOver(_arg1:MouseEvent=null):void{
TweenMax.to(m_over, 0.25, {alpha:1});
dispatchEvent(new Event(OVER));
}
public function disableButton():void{
m_over.mouseEnabled = false;
TweenMax.to(m_off, 0.25, {alpha:0});
TweenMax.to(m_over, 0.25, {alpha:0});
}
public function destroy():void{
m_over.removeEventListener(MouseEvent.ROLL_OUT, handleRollOut);
m_over.removeEventListener(MouseEvent.ROLL_OVER, handleRollOver);
m_over.removeEventListener(MouseEvent.CLICK, handleClick);
}
}
}//package ui
Section 419
//DoubleGraphicSelectedButton (ui.DoubleGraphicSelectedButton)
package ui {
import flash.events.*;
import flash.display.*;
import gs.*;
public class DoubleGraphicSelectedButton extends EventDispatcher {
private var m_over:MovieClip;
private var m_selected:Boolean;// = false
private var m_off:MovieClip;
public static var CLICKED:String = "clicked";
public function DoubleGraphicSelectedButton(_arg1:MovieClip, _arg2:MovieClip){
m_off = _arg1;
m_over = _arg2;
m_over.buttonMode = true;
m_off.buttonMode = true;
m_over.alpha = 0;
m_over.addEventListener(MouseEvent.ROLL_OUT, handleRollOut, false, 0, true);
m_over.addEventListener(MouseEvent.ROLL_OVER, handleRollOver, false, 0, true);
m_over.addEventListener(MouseEvent.CLICK, handleClick, false, 0, true);
}
private function handleClick(_arg1:MouseEvent=null):void{
dispatchEvent(new Event(DoubleGraphicSelectedButton.CLICKED));
}
public function disableButton():void{
m_over.mouseEnabled = false;
TweenMax.to(m_off, 0.25, {alpha:0});
TweenMax.to(m_over, 0.25, {alpha:0});
}
public function setSelected():void{
m_selected = true;
TweenMax.to(m_over, 0.25, {alpha:1});
}
private function handleRollOut(_arg1:MouseEvent=null):void{
if (!m_selected){
TweenMax.to(m_over, 0.25, {alpha:0});
};
}
public function enableButton():void{
m_over.mouseEnabled = true;
TweenMax.to(m_off, 0.25, {alpha:1});
}
public function setUnselected():void{
m_selected = false;
TweenMax.to(m_over, 0.25, {alpha:0});
}
private function handleRollOver(_arg1:MouseEvent=null):void{
if (!m_selected){
TweenMax.to(m_over, 0.25, {alpha:1});
};
}
public function destroy():void{
m_over.removeEventListener(MouseEvent.ROLL_OUT, handleRollOut);
m_over.removeEventListener(MouseEvent.ROLL_OVER, handleRollOver);
m_over.removeEventListener(MouseEvent.CLICK, handleClick);
}
}
}//package ui
Section 420
//SingleGraphicGlowButton (ui.SingleGraphicGlowButton)
package ui {
import flash.events.*;
import flash.display.*;
import gs.easing.*;
import gs.*;
public class SingleGraphicGlowButton extends EventDispatcher {
private var m_button:MovieClip;
private var m_glow:MovieClip;
public static var CLICKED:String = "clicked";
public function SingleGraphicGlowButton(_arg1:MovieClip, _arg2:MovieClip){
m_button = _arg1;
m_glow = _arg2;
m_button.buttonMode = true;
m_glow.buttonMode = false;
m_glow.mouseEnabled = false;
m_glow.mouseChildren = false;
m_glow.alpha = 0;
m_button.addEventListener(MouseEvent.ROLL_OUT, handleRollOut, false, 0, true);
m_button.addEventListener(MouseEvent.ROLL_OVER, handleRollOver, false, 0, true);
m_button.addEventListener(MouseEvent.CLICK, handleClick, false, 0, true);
}
private function handleClick(_arg1:MouseEvent=null):void{
dispatchEvent(new Event(CLICKED));
}
public function disableEvents():void{
m_button.mouseEnabled = false;
}
private function handleRollOut(_arg1:MouseEvent=null):void{
TweenMax.to(m_button, 0.4, {colorMatrixFilter:{contrast:1, brightness:1}, glowFilter:{alpha:0, remove:true}, easing:Strong.easeOut});
TweenMax.to(m_glow, 0.4, {alpha:0, easing:Strong.easeOut});
}
public function destroy():void{
TweenMax.killTweensOf(m_button);
TweenMax.killTweensOf(m_glow);
m_button.removeEventListener(MouseEvent.ROLL_OUT, handleRollOut);
m_button.removeEventListener(MouseEvent.ROLL_OVER, handleRollOver);
m_button.removeEventListener(MouseEvent.CLICK, handleClick);
}
public function enableButton():void{
m_button.mouseEnabled = true;
TweenMax.to(m_button, 0.25, {alpha:1});
}
private function handleRollOver(_arg1:MouseEvent=null):void{
TweenMax.to(m_button, 0.4, {colorMatrixFilter:{contrast:1.2, brightness:1.2}, glowFilter:{alpha:0.3, blurX:10, blurY:10, color:0xFFFFFF}, easing:Strong.easeOut});
TweenMax.to(m_glow, 0.4, {alpha:1, easing:Strong.easeOut});
}
public function disableButton():void{
m_button.mouseEnabled = false;
TweenMax.to(m_button, 0.25, {alpha:0});
TweenMax.to(m_glow, 0.25, {alpha:0});
}
public function enableEvents():void{
m_button.mouseEnabled = true;
}
}
}//package ui
Section 421
//Constants (Constants)
package {
import flash.net.*;
public class Constants {
public static const STAGE_WIDTH:int = 730;
public static const TILE_VOID:int = 1;
public static const FRAME_RATE:int = 31;
public static const RAGE_PER_ROBOT:Number = 0.1;
public static const STAGE_HEIGHT:int = 472;
public static const DEBUG:Boolean = false;
public static const DAMAGE_MISSILE:Number = 0.15;
public static const DAMAGE_SENSOR:Number = 0.03;
public static const DAMAGE_BULLET:Number = 0.04;
public static const TILE_SIZE:int = 102;
public static var ON_LOWER:int = 0;
public static var DEFAULT_AD_URL:String = "soap/ads/sd_default_game_ad_300x250.swf";
public static var VOLUME_MUSIC:Number = 0.5;
public static var URL_SHS:URLRequest = new URLRequest("http://superherosquad.marvel.com/?utm_source=games&utm_medium=link_marvelkids&utm_content=StarkTowerDefense&utm_campaign=MarvelGames2009");
public static var TRACKING_TITLE:String = "StarkTD";
public static var DART_CT:String = "shs_tower_defense";
public static var VERSION:String = "v 1.07a";
public static var GOOGLE:String = "UA-273913-11";
public static var AD_URL:String = ("http://ad.doubleclick.net/pfadx/gn.marvelkids.com/gamesos;sz=506x506;ct=" + DART_CT);
public static var POINTS_FAILED:int = -500;
public static var INTRO_VIDEO_URL:String = "http://i.annihil.us/u/prod/games/soap/video/shs_intro.mp4";
public static var POINTS_TIME:int = 1;
public static var CROSS_DOMAIN:String = "soap/ads/crossdomain.xml";
public static var MAX_GUARDS:int = 50;
public static var ON_UPPER:int = 1;
public static var GAME_WON_VIDEO_URL:String = "http://i.annihil.us/u/prod/games/soap/video/shs_outtro.mp4";
public static var PI2:Number = 6.28318530717959;
public static var URL_SEND_TO_FRIEND:URLRequest = new URLRequest("http://marvelkids.marvel.com/sendtoafriend3.html");
public static var URL_MARVELKIDS:URLRequest = new URLRequest("http://marvelkids.marvel.com/?utm_source=games&utm_medium=link_marvelkids&utm_content=StarkTowerDefense&utm_campaign=MarvelGames2009");
public static var ANIMATION_FINISHED:String = "AnimationFinished";
public static var URL_MOREGAMES:URLRequest = new URLRequest("http://marvelkids.marvel.com/games/?utm_source=games&utm_medium=link_moregames&utm_content=StarkTowerDefense&utm_campaign=MarvelGames2009");
}
}//package
Section 422
//DartShell (DartShell)
package {
import flash.events.*;
public interface DartShell extends IEventDispatcher {
function loadAd(_arg1:String, _arg2:String, _arg3:String, _arg4:Array, _arg5:String, _arg6:String, _arg7:String, _arg8:Object=null):void;
function getDartShellVersion():String;
function set delayedImpression(_arg1:Boolean):void;
function loadAdByURL(_arg1:String, _arg2:Object=null):void;
}
}//package
Section 423
//DartShellSWFLoader (DartShellSWFLoader)
package {
import flash.events.*;
import flash.display.*;
import com.doubleclick.dartshell.events.*;
import com.doubleclick.dartshell.errors.events.*;
import flash.net.*;
import com.doubleclick.dartshell.errors.*;
import flash.system.*;
public class DartShellSWFLoader extends EventDispatcher {
private var loader:Loader;
private var dartShellUrl:String;
public function DartShellSWFLoader(_arg1:DisplayObjectContainer, _arg2:String=null){
this.dartShellUrl = ((_arg2)==null) ? (("http://ad.doubleclick.net/879366/DartShell9_" + Distribution.VERSION) + ".swf") : _arg2;
Security.allowDomain(extractDomainFromUrl(_arg2));
loader = new Loader();
_arg1.addChild(loader);
}
private function extractDomainFromUrl(_arg1:String):String{
var _local2:Number = getProtocol(_arg1).length;
var _local3:Number = _arg1.indexOf("/", _local2);
return (((_local3)!=-1) ? _arg1.substring(0, _local3) : _arg1);
}
private function getProtocol(_arg1:String):String{
return (_arg1.substring(0, (_arg1.indexOf("//") + 2)));
}
private function onFlashError(_arg1:ErrorEvent):void{
dispatchEvent(new DartShellErrorEvent(new DartShellError({id:23, message:("Failed to load sdk at " + dartShellUrl)})));
}
private function onDartShellError(_arg1:DartShellErrorEvent):void{
dispatchEvent(_arg1);
}
public function getLoader():Loader{
return (loader);
}
public function load():void{
var _local2:LoaderContext;
getLoader().addEventListener(DartShellLoadedEvent.TYPE, onDartShellLoaded);
getLoader().addEventListener(DartShellErrorEvent.TYPE, onDartShellError);
getLoader().contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onFlashError);
getLoader().contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onFlashError);
var _local1:URLRequest = new URLRequest(dartShellUrl);
if (Security.sandboxType == Security.REMOTE){
_local2 = new LoaderContext(false, ApplicationDomain.currentDomain, SecurityDomain.currentDomain);
getLoader().load(_local1, _local2);
} else {
getLoader().load(_local1);
};
}
private function onDartShellLoaded(_arg1:DartShellLoadedEvent):void{
dispatchEvent(_arg1);
}
}
}//package
Section 424
//DartSWFAD (DartSWFAD)
package {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
import gs.*;
import com.doubleclick.dartshell.events.*;
import com.doubleclick.dartshell.ad.flash_in_flash.*;
import com.doubleclick.dartshell.errors.events.*;
import com.doubleclick.dartshell.ad.events.*;
import flash.net.*;
import nl.demonsters.debugger.*;
import flash.system.*;
public class DartSWFAD extends Sprite {
private var _marvel_timeout:int;
private var _marvel_adTimer:Timer;
private var _adURL:String;
private var _marvel_adTime:int;
private var _marvel_loader:Loader;
private var _dart_loaded:Boolean;// = false
private var _flashInFlashAd:FlashInFlashAd;
private var _adTimer:Timer;
private var _dartShellLoader:DartShellSWFLoader;
private var _marvel_error:Boolean;// = false
private var _dart_error:Boolean;// = false
private var _adTime:int;
private var _dartShell:DartShell;
private var _applicationDomain:ApplicationDomain;
private var _flashInFlashAsset:FlashAsset;
public static const DARTSHELL_URL:String = ("http://ad.doubleclick.net/879366/" + DARTSHELL);
public static const DARTSHELL:String = "DartShell9_13.swf";
public static const MARVEL_URL:String = Constants.DEFAULT_AD_URL;
public function DartSWFAD(){
this.alpha = 0;
}
private function startTimer():void{
_adTimer.reset();
_adTimer.start();
}
private function log(... _args):void{
trace(_args);
}
public function destroy():void{
MonsterDebugger.trace(this, "Destroy");
try {
_marvel_loader.unload();
removeChild(_marvel_loader.content);
_marvel_loader = null;
System.gc();
} catch(e:Error) {
};
}
private function exit():void{
MonsterDebugger.trace(this, "exit()");
dispatchEvent(new AdEvent(AdEvent.EXIT));
stopTimer();
}
private function onDartShellLoaded(_arg1:DartShellLoadedEvent):void{
var event = _arg1;
MonsterDebugger.trace(this, "onDartShellLoaded");
stopTimer();
startTimer();
_dartShell = event.getDartShell();
_dartShell.addEventListener(FlashInFlashAdLoadedEvent.TYPE, onFlashAdLoaded);
_dartShell.addEventListener(DartShellErrorEvent.TYPE, onDartShellError);
try {
_dartShell.loadAdByURL(_adURL);
} catch(error:Error) {
trace(this, error.message);
};
}
private function onFlashAdExit(_arg1:AdEvent):void{
MonsterDebugger.trace(this, "onFlashAdExit");
exit();
}
private function onFlashAssetLoaded(_arg1:FlashAssetLoadedEvent):void{
MonsterDebugger.trace(this, "onFlashAssetLoaded");
_flashInFlashAsset = _arg1.getAsset();
}
private function onDartShellError(_arg1:DartShellErrorEvent):void{
MonsterDebugger.trace(this, ("onDartShellError" + _arg1.text));
_dart_error = true;
}
private function onAdTimerTick(_arg1:TimerEvent):void{
MonsterDebugger.trace(this, "onAdTimerTick");
clearTimeout(_marvel_timeout);
exit();
}
private function loadAd(_arg1:String):void{
MonsterDebugger.trace(this, ("loadAd " + _arg1));
_adURL = _arg1;
_dartShellLoader = new DartShellSWFLoader(this, DARTSHELL_URL);
_dartShellLoader.addEventListener(DartShellLoadedEvent.TYPE, onDartShellLoaded);
_dartShellLoader.addEventListener(DartShellErrorEvent.TYPE, onDartShellError);
_dartShellLoader.load();
}
public function load(_arg1:String, _arg2:String, _arg3:int=10):void{
var _local4 = (("http://" + _arg2.split("/")[2]) + "/");
_local4 = "http://marvelkids.marvel.com/";
MonsterDebugger.trace(this, ("Base URL is " + _local4));
_adTimer = new Timer((_arg3 * 1000));
_adTimer.addEventListener(TimerEvent.TIMER, onAdTimerTick);
Security.loadPolicyFile((_local4 + Constants.CROSS_DOMAIN));
_marvel_loader = new Loader();
_marvel_loader.load(new URLRequest((_local4 + MARVEL_URL)));
MonsterDebugger.trace(this, (("Ad URL is " + _local4) + MARVEL_URL));
_marvel_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleMarvelAdLoaded);
_marvel_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
Security.allowDomain("ad.doubleclick.net", "");
var _local5:String = _arg1;
_applicationDomain = new ApplicationDomain();
if (Security.sandboxType == Security.REMOTE){
loadAd(_local5);
} else {
_dart_error = true;
_dart_loaded = true;
MonsterDebugger.trace(this, (("Cannot load ad in " + Security.sandboxType) + "sandbox type"));
};
}
private function ioErrorHandler(_arg1:IOErrorEvent):void{
MonsterDebugger.trace(this, ("Marvel Error" + _arg1.type));
_marvel_error = true;
handleMarvelAdLoaded();
}
private function onFlashAdLoaded(_arg1:FlashInFlashAdLoadedEvent):void{
MonsterDebugger.trace(this, "onFlashAdLoaded");
_dart_loaded = true;
_flashInFlashAd = (_arg1.getAd() as FlashInFlashAd);
_flashInFlashAd.addEventListener(DartShellErrorEvent.TYPE, onDartShellError);
_flashInFlashAd.addEventListener(AdEvent.EXIT, onFlashAdExit);
_flashInFlashAd.addEventListener(FlashAssetLoadedEvent.TYPE, onFlashAssetLoaded);
_flashInFlashAd.display(this);
TweenLite.to(this, 0.5, {alpha:1});
stopTimer();
startTimer();
}
private function stopTimer():void{
if (_adTimer != null){
_adTimer.stop();
};
}
private function handleMarvelAdLoaded(_arg1:Event=null):void{
MonsterDebugger.trace(this, ((((("handleMarvelAdLoaded _dart_error:" + _dart_error) + " _dart_loaded ") + _dart_loaded) + " _marvel_error ") + _marvel_error));
clearTimeout(_marvel_timeout);
if (_dart_error){
if (!_marvel_error){
MonsterDebugger.trace(this, "Display Marvel Default Ad");
addChild(_marvel_loader.content);
TweenLite.to(this, 0.5, {alpha:1});
stopTimer();
startTimer();
} else {
MonsterDebugger.trace(this, "Dart Error and Marvel Error");
exit();
};
} else {
if (!_dart_loaded){
_marvel_timeout = setTimeout(handleMarvelAdLoaded, 500);
};
};
}
}
}//package
Section 425
//Distribution (Distribution)
package {
public class Distribution {
public static const VERSION:String = "13";
}
}//package
Section 426
//EmbeddedData (EmbeddedData)
package {
import flash.events.*;
import flash.net.*;
public class EmbeddedData {
public static const EMBEDDED_DATA_LOADED:String = "embeddedDataLoaded";
private static var xmlLoader:URLLoader;
private static var m_data:XML = <data>
<levels>
<level>
<title>Level 01.. testing</title>
<cell width="28" height="28"></cell>
<background asset="assets.level01" width="756" height="476" offsetCellX="-1" offsetCellY="-1"></background>
<map>
<!-- 0 is bg, 1 is goal, 2 is path, 3 is spawn, 4 is buildable !-->
<y>
<x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>3</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>3</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>0</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>0</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>4</x><x>4</x><x>4</x><x>2</x><x>0</x><x>4</x><x>4</x><x>4</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>4</x><x>4</x><x>4</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>3</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>1</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>2</x><x>4</x><x>4</x><x>4</x><x>4</x><x>4</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>2</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
<y>
<x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>3</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x><x>0</x>
</y>
</map>
<routes>
<route>
<cell><x>8</x><y>0</y></cell>
<cell><x>8</x><y>1</y></cell>
<cell><x>8</x><y>2</y></cell>
<cell><x>8</x><y>3</y></cell>
<cell><x>8</x><y>4</y></cell>
<cell><x>9</x><y>4</y></cell>
<cell><x>10</x><y>4</y></cell>
<cell><x>11</x><y>4</y></cell>
<cell><x>12</x><y>4</y></cell>
<cell><x>13</x><y>4</y></cell>
<cell><x>14</x><y>4</y></cell>
<cell><x>15</x><y>4</y></cell>
<cell><x>16</x><y>4</y></cell>
<cell><x>17</x><y>4</y></cell>
<cell><x>18</x><y>4</y></cell>
<cell><x>19</x><y>4</y></cell>
<cell><x>20</x><y>4</y></cell>
<cell><x>21</x><y>4</y></cell>
<cell><x>21</x><y>5</y></cell>
<cell><x>21</x><y>6</y></cell>
<cell><x>21</x><y>7</y></cell>
<cell><x>21</x><y>8</y></cell>
<cell><x>21</x><y>9</y></cell>
<cell><x>21</x><y>10</y></cell>
<cell><x>22</x><y>10</y></cell>
</route>
<route>
<cell><x>0</x><y>5</y></cell>
<cell><x>1</x><y>5</y></cell>
<cell><x>2</x><y>5</y></cell>
<cell><x>3</x><y>5</y></cell>
<cell><x>4</x><y>5</y></cell>
<cell><x>5</x><y>5</y></cell>
<cell><x>6</x><y>5</y></cell>
<cell><x>7</x><y>5</y></cell>
<cell><x>7</x><y>6</y></cell>
<cell><x>7</x><y>7</y></cell>
<cell><x>8</x><y>7</y></cell>
<cell><x>9</x><y>7</y></cell>
<cell><x>10</x><y>7</y></cell>
<cell><x>11</x><y>7</y></cell>
<cell><x>12</x><y>7</y></cell>
<cell><x>13</x><y>7</y></cell>
<cell><x>14</x><y>7</y></cell>
<cell><x>15</x><y>7</y></cell>
<cell><x>16</x><y>7</y></cell>
<cell><x>16</x><y>8</y></cell>
<cell><x>16</x><y>9</y></cell>
<cell><x>17</x><y>9</y></cell>
<cell><x>18</x><y>9</y></cell>
<cell><x>19</x><y>9</y></cell>
<cell><x>20</x><y>9</y></cell>
<cell><x>21</x><y>9</y></cell>
<cell><x>21</x><y>10</y></cell>
<cell><x>22</x><y>10</y></cell>
</route>
<route>
<cell><x>0</x><y>10</y></cell>
<cell><x>1</x><y>10</y></cell>
<cell><x>2</x><y>10</y></cell>
<cell><x>3</x><y>10</y></cell>
<cell><x>4</x><y>10</y></cell>
<cell><x>5</x><y>10</y></cell>
<cell><x>6</x><y>10</y></cell>
<cell><x>7</x><y>10</y></cell>
<cell><x>8</x><y>10</y></cell>
<cell><x>9</x><y>10</y></cell>
<cell><x>10</x><y>10</y></cell>
<cell><x>11</x><y>10</y></cell>
<cell><x>12</x><y>10</y></cell>
<cell><x>12</x><y>9</y></cell>
<cell><x>12</x><y>8</y></cell>
<cell><x>12</x><y>7</y></cell>
<cell><x>13</x><y>7</y></cell>
<cell><x>14</x><y>7</y></cell>
<cell><x>15</x><y>7</y></cell>
<cell><x>16</x><y>7</y></cell>
<cell><x>16</x><y>8</y></cell>
<cell><x>16</x><y>9</y></cell>
<cell><x>17</x><y>9</y></cell>
<cell><x>18</x><y>9</y></cell>
<cell><x>19</x><y>9</y></cell>
<cell><x>20</x><y>9</y></cell>
<cell><x>21</x><y>9</y></cell>
<cell><x>21</x><y>10</y></cell>
<cell><x>22</x><y>10</y></cell>
</route>
<route>
<cell><x>6</x><y>17</y></cell>
<cell><x>6</x><y>16</y></cell>
<cell><x>6</x><y>15</y></cell>
<cell><x>7</x><y>15</y></cell>
<cell><x>8</x><y>15</y></cell>
<cell><x>9</x><y>15</y></cell>
<cell><x>10</x><y>15</y></cell>
<cell><x>11</x><y>15</y></cell>
<cell><x>12</x><y>15</y></cell>
<cell><x>13</x><y>15</y></cell>
<cell><x>14</x><y>15</y></cell>
<cell><x>15</x><y>15</y></cell>
<cell><x>16</x><y>15</y></cell>
<cell><x>16</x><y>14</y></cell>
<cell><x>16</x><y>13</y></cell>
<cell><x>16</x><y>12</y></cell>
<cell><x>17</x><y>12</y></cell>
<cell><x>18</x><y>12</y></cell>
<cell><x>19</x><y>12</y></cell>
<cell><x>20</x><y>12</y></cell>
<cell><x>21</x><y>12</y></cell>
<cell><x>21</x><y>11</y></cell>
<cell><x>21</x><y>10</y></cell>
<cell><x>22</x><y>10</y></cell>
</route>
<route>
<cell><x>0</x><y>9</y></cell>
<cell><x>1</x><y>9</y></cell>
<cell><x>2</x><y>9</y></cell>
<cell><x>3</x><y>9</y></cell>
<cell><x>4</x><y>9</y></cell>
<cell><x>5</x><y>9</y></cell>
<cell><x>6</x><y>9</y></cell>
<cell><x>7</x><y>9</y></cell>
<cell><x>8</x><y>9</y></cell>
<cell><x>9</x><y>9</y></cell>
<cell><x>10</x><y>9</y></cell>
<cell><x>11</x><y>9</y></cell>
<cell><x>12</x><y>9</y></cell>
<cell><x>13</x><y>9</y></cell>
<cell><x>14</x><y>9</y></cell>
<cell><x>15</x><y>9</y></cell>
<cell><x>16</x><y>9</y></cell>
<cell><x>17</x><y>9</y></cell>
<cell><x>18</x><y>9</y></cell>
<cell><x>19</x><y>9</y></cell>
<cell><x>20</x><y>9</y></cell>
<cell><x>21</x><y>9</y></cell>
<cell><x>22</x><y>9</y></cell>
<cell><x>23</x><y>9</y></cell>
</route>
<route>
<cell><x>0</x><y>11</y></cell>
<cell><x>1</x><y>11</y></cell>
<cell><x>2</x><y>11</y></cell>
<cell><x>3</x><y>11</y></cell>
<cell><x>4</x><y>11</y></cell>
<cell><x>5</x><y>11</y></cell>
<cell><x>6</x><y>11</y></cell>
<cell><x>7</x><y>11</y></cell>
<cell><x>8</x><y>11</y></cell>
<cell><x>9</x><y>11</y></cell>
<cell><x>10</x><y>11</y></cell>
<cell><x>11</x><y>11</y></cell>
<cell><x>12</x><y>11</y></cell>
<cell><x>13</x><y>11</y></cell>
<cell><x>14</x><y>11</y></cell>
<cell><x>15</x><y>11</y></cell>
<cell><x>16</x><y>11</y></cell>
<cell><x>17</x><y>11</y></cell>
<cell><x>18</x><y>11</y></cell>
<cell><x>19</x><y>11</y></cell>
<cell><x>20</x><y>11</y></cell>
<cell><x>21</x><y>11</y></cell>
<cell><x>22</x><y>11</y></cell>
<cell><x>23</x><y>11</y></cell>
</route>
</routes>
<waves>
<!-- Instructions -->
Min time - minimum amount of time till a new wave can be launched. 30 = 1 second
Boss round - denotes a boss fight. Means you cant progress the wave before/during
Route id - 0, 1, 2, 3 are land, 4 and 5 are air
Time offset - delay until that cluster starts being spawned in the wave
Time gap - gap between inividual units being spawned
Types of enemies: moleoid, aimsentry_blue, aimsentry_red, aimsentry_yellow, doombot, jeep, helicopter, attackapc, lighttank, heavytank, cruisemissile, moleman, modok, drdoom
!-->
<wave id="1" minTime="60" bossRound="0" cashBonus="5" scoreBonus="0">
<cluster type="moleoid" health="20" routeid="1" units="10" timeoffset="100" timegap="65"/>
<cluster type="moleoid" health="20" routeid="1" units="3" timeoffset="120" timegap="85"/>
</wave>
<wave id="2" minTime="60" bossRound="0" cashBonus="5" scoreBonus="100">
<cluster type="moleoid" health="20" routeid="1" units="10" timeoffset="0" timegap="45"/>
<cluster type="moleoid" health="23" routeid="2" units="10" timeoffset="120" timegap="95"/>
</wave>
<wave id="3" minTime="60" bossRound="0" cashBonus="5" scoreBonus="100">
<cluster type="moleoid" health="25" routeid="1" units="15" timeoffset="0" timegap="45"/>
<cluster type="moleoid" health="22" routeid="2" units="15" timeoffset="100" timegap="45"/>
<cluster type="moleoid" health="22" routeid="2" units="15" timeoffset="200" timegap="45"/>
<cluster type="jeep" health="40" routeid="1" units="2" timeoffset="500" timegap="240"/>
</wave>
<wave id="4" minTime="60" bossRound="0" cashBonus="5" scoreBonus="100">
<cluster type="moleoid" health="25" routeid="1" units="15" timeoffset="0" timegap="45"/>
<cluster type="moleoid" health="28" routeid="2" units="15" timeoffset="0" timegap="45"/>
<cluster type="jeep" health="40" routeid="1" units="4" timeoffset="1200" timegap="120"/>
<cluster type="moleoid" health="30" routeid="3" units="5" timeoffset="600" timegap="45"/>
</wave>
<wave id="5" minTime="60" bossRound="0" cashBonus="5" scoreBonus="100">
<cluster type="jeep" health="55" routeid="1" units="7" timeoffset="150" timegap="100"/>
<cluster type="attackapc" health="120" routeid="1" units="1" timeoffset="550" timegap="45"/>
<cluster type="aimsentry_blue" health="45" routeid="2" units="15" timeoffset="1100" timegap="45"/>
<cluster type="moleoid" health="30" routeid="3" units="20" timeoffset="900" timegap="45"/>
<cluster type="aimsentry_red" health="45" routeid="2" units="15" timeoffset="1100" timegap="45"/>
</wave>
<wave id="6" minTime="60" bossRound="0" cashBonus="10" scoreBonus="200">
<cluster type="moleoid" health="45" routeid="0" units="30" timeoffset="0" timegap="85"/>
<cluster type="aimsentry_red" health="50" routeid="2" units="25" timeoffset="0" timegap="65"/>
<cluster type="attackapc" health="105" routeid="1" units="2" timeoffset="800" timegap="45"/>
<cluster type="jeep" health="50" routeid="1" units="5" timeoffset="1400" timegap="45"/>
<cluster type="jeep" health="45" routeid="2" units="5" timeoffset="3800" timegap="45"/>
<cluster type="moleoid" health="30" routeid="0" units="30" timeoffset="0" timegap="85"/>
<cluster type="moleoid" health="30" routeid="2" units="30" timeoffset="0" timegap="85"/>
<cluster type="moleoid" health="30" routeid="3" units="30" timeoffset="0" timegap="85"/>
</wave>
<wave id="7" minTime="60" bossRound="0" cashBonus="10" scoreBonus="200">
<cluster type="aimsentry_yellow" health="45" routeid="1" units="15" timeoffset="0" timegap="45"/>
<cluster type="aimsentry_red" health="40" routeid="1" units="20" timeoffset="0" timegap="45"/>
<cluster type="jeep" health="50" routeid="2" units="3" timeoffset="1600" timegap="45"/>
<cluster type="attackapc" health="130" routeid="2" units="1" timeoffset="1600" timegap="45"/>
<cluster type="moleoid" health="35" routeid="2" units="30" timeoffset="650" timegap="25"/>
<cluster type="moleoid" health="25" routeid="0" units="30" timeoffset="1050" timegap="25"/>
<cluster type="attackapc" health="120" routeid="3" units="2" timeoffset="2000" timegap="45"/>
</wave>
<wave id="8" minTime="60" bossRound="0" cashBonus="10" scoreBonus="200">
<cluster type="aimsentry_red" health="55" routeid="1" units="25" timeoffset="0" timegap="45"/>
<cluster type="doombot" health="70" routeid="1" units="12" timeoffset="200" timegap="45"/>
<cluster type="attackapc" health="150" routeid="2" units="2" timeoffset="1000" timegap="45"/>
<cluster type="jeep" health="60" routeid="2" units="4" timeoffset="150" timegap="45"/>
<cluster type="moleoid" health="30" routeid="2" units="35" timeoffset="200" timegap="45"/>
<cluster type="jeep" health="70" routeid="3" units="5" timeoffset="1800" timegap="45"/>
</wave>
<wave id="9" minTime="60" bossRound="0" cashBonus="10" scoreBonus="200">
<cluster type="moleoid" health="35" routeid="1" units="30" timeoffset="0" timegap="45"/>
<cluster type="aimsentry_blue" health="70" routeid="1" units="15" timeoffset="1450" timegap="45"/>
<cluster type="jeep" health="80" routeid="2" units="5" timeoffset="200" timegap="45"/>
<cluster type="attackapc" health="180" routeid="2" units="5" timeoffset="2650" timegap="45"/>
<cluster type="doombot" health="90" routeid="0" units="7" timeoffset="700" timegap="25"/>
<cluster type="aimsentry_yellow" health="70" routeid="2" units="20" timeoffset="800" timegap="45"/>
<cluster type="attackapc" health="240" routeid="3" units="3" timeoffset="2250" timegap="25"/>
</wave>
<wave id="10" minTime="60" bossRound="1" cashBonus="20" scoreBonus="400">
<cluster type="jeep" health="80" routeid="1" units="10" timeoffset="0" timegap="45"/>
<cluster type="lighttank" health="320" routeid="0" units="1" timeoffset="500" timegap="45"/>
<cluster type="doombot" health="70" routeid="1" units="15" timeoffset="600" timegap="45"/>
<cluster type="attackapc" health="320" routeid="2" units="7" timeoffset="350" timegap="75"/>
<cluster type="attackapc" health="370" routeid="2" units="2" timeoffset="0" timegap="45"/>
<cluster type="moleoid" health="125" routeid="3" units="15" timeoffset="1200" timegap="45"/>
<cluster type="moleoid" health="125" routeid="2" units="15" timeoffset="1200" timegap="45"/>
<cluster type="moleoid" health="85" routeid="1" units="30" timeoffset="1200" timegap="45"/>
<cluster type="moleman" health="2800" routeid="1" units="1" timeoffset="1800" timegap="45"/>
<cluster type="aimsentry_yellow" health="120" routeid="3" units="15" timeoffset="1400" timegap="45"/>
<cluster type="helicopter" health="175" routeid="4" units="2" timeoffset="1800" timegap="65"/>
</wave>
<wave id="11" minTime="60" bossRound="0" cashBonus="20" scoreBonus="400">
<cluster type="doombot" health="120" routeid="0" units="10" timeoffset="0" timegap="45"/>
<cluster type="moleoid" health="50" routeid="1" units="20" timeoffset="250" timegap="45"/>
<cluster type="attackapc" health="550" routeid="2" units="2" timeoffset="0" timegap="145"/>
<cluster type="doombot" health="100" routeid="2" units="15" timeoffset="0" timegap="45"/>
<cluster type="aimsentry_red" health="110" routeid="3" units="20" timeoffset="700" timegap="45"/>
<cluster type="helicopter" health="210" routeid="5" units="3" timeoffset="1200" timegap="45"/>
<cluster type="helicopter" health="220" routeid="4" units="3" timeoffset="1800" timegap="45"/>
</wave>
<wave id="12" minTime="60" bossRound="0" cashBonus="20" scoreBonus="400">
<cluster type="moleoid" health="20" routeid="0" units="15" timeoffset="0" timegap="45"/>
<cluster type="jeep" health="75" routeid="1" units="6" timeoffset="90" timegap="45"/>
<cluster type="aimsentry_blue" health="60" routeid="1" units="15" timeoffset="250" timegap="45"/>
<cluster type="helicopter" health="250" routeid="4" units="7" timeoffset="800" timegap="45"/>
<cluster type="doombot" health="70" routeid="2" units="15" timeoffset="0" timegap="45"/>
<cluster type="lighttank" health="350" routeid="2" units="3" timeoffset="1700" timegap="145"/>
<cluster type="attackapc" health="210" routeid="0" units="5" timeoffset="2200" timegap="100"/>
</wave>
<wave id="13" minTime="60" bossRound="0" cashBonus="20" scoreBonus="400">
<cluster type="doombot" health="120" routeid="1" units="20" timeoffset="900" timegap="30"/>
<cluster type="attackapc" health="350" routeid="2" units="8" timeoffset="0" timegap="130"/>
<cluster type="aimsentry_blue" health="100" routeid="0" units="15" timeoffset="300" timegap="45"/>
<cluster type="aimsentry_red" health="100" routeid="3" units="15" timeoffset="300" timegap="45"/>
<cluster type="jeep" health="120" routeid="0" units="10" timeoffset="0" timegap="25"/>
<cluster type="lighttank" health="550" routeid="1" units="8" timeoffset="1770" timegap="65"/>
<cluster type="aimsentry_red" health="150" routeid="0" units="15" timeoffset="1200" timegap="45"/>
</wave>
<wave id="14" minTime="60" bossRound="0" cashBonus="20" scoreBonus="400">
<cluster type="jeep" health="120" routeid="0" units="15" timeoffset="0" timegap="35"/>
<cluster type="attackapc" health="275" routeid="1" units="10" timeoffset="1440" timegap="45"/>
<cluster type="lighttank" health="390" routeid="3" units="7" timeoffset="0" timegap="65"/>
<cluster type="helicopter" health="230" routeid="0" units="12" timeoffset="900" timegap="100"/>
<cluster type="aimsentry_blue" health="100" routeid="0" units="15" timeoffset="300" timegap="45"/>
<cluster type="aimsentry_red" health="100" routeid="0" units="15" timeoffset="300" timegap="45"/>
<cluster type="aimsentry_yellow" health="300" routeid="1" units="5" timeoffset="300" timegap="45"/>
</wave>
<wave id="15" minTime="60" bossRound="0" cashBonus="30" scoreBonus="600">
<cluster type="aimsentry_yellow" health="120" routeid="1" units="15" timeoffset="0" timegap="45"/>
<cluster type="aimsentry_red" health="120" routeid="3" units="15" timeoffset="0" timegap="45"/>
<cluster type="doombot" health="140" routeid="1" units="10" timeoffset="280" timegap="45"/>
<cluster type="lighttank" health="620" routeid="2" units="2" timeoffset="400" timegap="45"/>
<cluster type="helicopter" health="460" routeid="0" units="2" timeoffset="900" timegap="100"/>
<cluster type="jeep" health="250" routeid="0" units="8" timeoffset="1150" timegap="45"/>
<cluster type="moleoid" health="90" routeid="1" units="20" timeoffset="750" timegap="45"/>
<cluster type="attackapc" health="550" routeid="2" units="10" timeoffset="1850" timegap="45"/>
</wave>
<wave id="16" minTime="60" bossRound="0" cashBonus="30" scoreBonus="600">
<cluster type="moleoid" health="70" routeid="0" units="35" timeoffset="0" timegap="25"/>
<cluster type="aimsentry_blue" health="70" routeid="1" units="15" timeoffset="0" timegap="45"/>
<cluster type="attackapc" health="150" routeid="3" units="15" timeoffset="600" timegap="45"/>
<cluster type="doombot" health="95" routeid="2" units="10" timeoffset="220" timegap="45"/>
<cluster type="jeep" health="180" routeid="3" units="10" timeoffset="400" timegap="45"/>
<cluster type="jeep" health="180" routeid="3" units="10" timeoffset="500" timegap="55"/>
<cluster type="lighttank" health="470" routeid="0" units="7" timeoffset="1230" timegap="45"/>
<cluster type="helicopter" health="320" routeid="5" units="7" timeoffset="1250" timegap="60"/>
</wave>
<wave id="17" minTime="60" bossRound="0" cashBonus="30" scoreBonus="600">
<cluster type="lighttank" health="450" routeid="0" units="5" timeoffset="270" timegap="45"/>
<cluster type="jeep" health="160" routeid="1" units="7" timeoffset="0" timegap="45"/>
<cluster type="attackapc" health="250" routeid="1" units="15" timeoffset="320" timegap="45"/>
<cluster type="moleoid" health="125" routeid="0" units="55" timeoffset="500" timegap="45"/>
<cluster type="heavytank" health="1200" routeid="0" units="1" timeoffset="600" timegap="120"/>
<cluster type="heavytank" health="1000" routeid="2" units="1" timeoffset="700" timegap="120"/>
<cluster type="heavytank" health="1000" routeid="1" units="1" timeoffset="900" timegap="120"/>
<cluster type="aimsentry_blue" health="100" routeid="0" units="30" timeoffset="100" timegap="35"/>
<cluster type="doombot" health="250" routeid="2" units="15" timeoffset="360" timegap="45"/>
<cluster type="helicopter" health="250" routeid="4" units="3" timeoffset="300" timegap="60"/>
<cluster type="cruisemissile" health="500" routeid="5" units="1" timeoffset="400" timegap="60"/>
</wave>
<wave id="18" minTime="60" bossRound="0" cashBonus="30" scoreBonus="600">
<cluster type="aimsentry_blue" health="90" routeid="0" units="10" timeoffset="200" timegap="30"/>
<cluster type="doombot" health="110" routeid="0" units="20" timeoffset="530" timegap="30"/>
<cluster type="heavytank" health="1000" routeid="0" units="1" timeoffset="400" timegap="120"/>
<cluster type="jeep" health="200" routeid="1" units="10" timeoffset="200" timegap="25"/>
<cluster type="lighttank" health="450" routeid="1" units="5" timeoffset="2800" timegap="45"/>
<cluster type="attackapc" health="350" routeid="1" units="5" timeoffset="2800" timegap="25"/>
<cluster type="heavytank" health="1320" routeid="2" units="5" timeoffset="160" timegap="320"/>
<cluster type="cruisemissile" health="450" routeid="5" units="4" timeoffset="400" timegap="160"/>
<cluster type="helicopter" health="250" routeid="5" units="8" timeoffset="750" timegap="60"/>
</wave>
<wave id="19" minTime="60" bossRound="0" cashBonus="30" scoreBonus="600">
<cluster type="doombot" health="110" routeid="0" units="20" timeoffset="0" timegap="25"/>
<cluster type="heavytank" health="1500" routeid="0" units="1" timeoffset="400" timegap="120"/>
<cluster type="lighttank" health="400" routeid="1" units="5" timeoffset="400" timegap="45"/>
<cluster type="attackapc" health="250" routeid="2" units="5" timeoffset="0" timegap="30"/>
<cluster type="jeep" health="190" routeid="2" units="7" timeoffset="1480" timegap="30"/>
<cluster type="moleoid" health="40" routeid="2" units="20" timeoffset="320" timegap="25"/>
<cluster type="aimsentry_blue" health="120" routeid="2" units="20" timeoffset="400" timegap="25"/>
<cluster type="helicopter" health="400" routeid="5" units="8" timeoffset="1600" timegap="45"/>
</wave>
<wave id="20" minTime="60" bossRound="1" cashBonus="40" scoreBonus="1200">
<cluster type="heavytank" health="1300" routeid="3" units="5" timeoffset="50" timegap="90"/>
<cluster type="lighttank" health="550" routeid="2" units="5" timeoffset="350" timegap="45"/>
<cluster type="aimsentry_blue" health="200" routeid="1" units="30" timeoffset="900" timegap="35"/>
<cluster type="modok" health="6400" routeid="2" units="1" timeoffset="1200" timegap="45"/>
<cluster type="aimsentry_red" health="200" routeid="3" units="30" timeoffset="900" timegap="25"/>
<cluster type="aimsentry_yellow" health="200" routeid="0" units="30" timeoffset="1600" timegap="35"/>
<cluster type="helicopter" health="450" routeid="4" units="3" timeoffset="1650" timegap="60"/>
<cluster type="cruisemissile" health="500" routeid="5" units="5" timeoffset="1900" timegap="120"/>
</wave>
<wave id="21" minTime="60" bossRound="0" cashBonus="40" scoreBonus="1200">
<cluster type="attackapc" health="350" routeid="1" units="15" timeoffset="500" timegap="45"/>
<cluster type="lighttank" health="650" routeid="2" units="10" timeoffset="300" timegap="45"/>
<cluster type="heavytank" health="1700" routeid="3" units="7" timeoffset="200" timegap="120"/>
<cluster type="cruisemissile" health="530" routeid="4" units="10" timeoffset="600" timegap="120"/>
<cluster type="cruisemissile" health="530" routeid="5" units="10" timeoffset="600" timegap="150"/>
<cluster type="jeep" health="300" routeid="1" units="4" timeoffset="1000" timegap="45"/>
<cluster type="jeep" health="300" routeid="2" units="4" timeoffset="1000" timegap="45"/>
<cluster type="jeep" health="300" routeid="3" units="4" timeoffset="1000" timegap="45"/>
</wave>
<wave id="22" minTime="60" bossRound="0" cashBonus="40" scoreBonus="1200">
<cluster type="moleoid" health="80" routeid="0" units="30" timeoffset="0" timegap="65"/>
<cluster type="aimsentry_blue" health="140" routeid="3" units="20" timeoffset="500" timegap="15"/>
<cluster type="lighttank" health="650" routeid="1" units="10" timeoffset="0" timegap="45"/>
<cluster type="aimsentry_blue" health="140" routeid="1" units="20" timeoffset="500" timegap="15"/>
<cluster type="aimsentry_blue" health="140" routeid="2" units="20" timeoffset="500" timegap="15"/>
<cluster type="attackapc" health="550" routeid="2" units="10" timeoffset="800" timegap="35"/>
<cluster type="jeep" health="500" routeid="2" units="10" timeoffset="400" timegap="45"/>
<cluster type="doombot" health="500" routeid="3" units="10" timeoffset="800" timegap="45"/>
<cluster type="helicopter" health="650" routeid="4" units="5" timeoffset="800" timegap="60"/>
</wave>
<wave id="23" minTime="60" bossRound="0" cashBonus="40" scoreBonus="1200">
<cluster type="attackapc" health="450" routeid="1" units="10" timeoffset="100" timegap="45"/>
<cluster type="lighttank" health="550" routeid="1" units="7" timeoffset="460" timegap="45"/>
<cluster type="aimsentry_red" health="300" routeid="0" units="7" timeoffset="900" timegap="25"/>
<cluster type="aimsentry_blue" health="220" routeid="2" units="20" timeoffset="0" timegap="35"/>
<cluster type="doombot" health="350" routeid="2" units="30" timeoffset="600" timegap="35"/>
<cluster type="heavytank" health="1800" routeid="3" units="7" timeoffset="0" timegap="60"/>
<cluster type="moleoid" health="180" routeid="3" units="30" timeoffset="1000" timegap="35"/>
<cluster type="moleoid" health="180" routeid="3" units="30" timeoffset="1000" timegap="35"/>
<cluster type="moleoid" health="180" routeid="3" units="30" timeoffset="1000" timegap="35"/>
<cluster type="cruisemissile" health="400" routeid="4" units="5" timeoffset="600" timegap="100"/>
</wave>
<wave id="24" minTime="60" bossRound="0" cashBonus="40" scoreBonus="1200">
<cluster type="lighttank" health="550" routeid="2" units="10" timeoffset="250" timegap="45"/>
<cluster type="lighttank" health="550" routeid="1" units="10" timeoffset="250" timegap="45"/>
<cluster type="heavytank" health="2000" routeid="0" units="5" timeoffset="0" timegap="120"/>
<cluster type="helicopter" health="250" routeid="5" units="10" timeoffset="600" timegap="100"/>
<cluster type="aimsentry_yellow" health="160" routeid="0" units="30" timeoffset="800" timegap="35"/>
<cluster type="aimsentry_blue" health="160" routeid="2" units="15" timeoffset="1000" timegap="45"/>
<cluster type="doombot" health="200" routeid="3" units="30" timeoffset="800" timegap="35"/>
<cluster type="cruisemissile" health="500" routeid="0" units="4" timeoffset="400" timegap="70"/>
<cluster type="cruisemissile" health="500" routeid="4" units="2" timeoffset="400" timegap="60"/>
</wave>
<wave id="25" minTime="60" bossRound="0" cashBonus="50" scoreBonus="2500">
<cluster type="jeep" health="120" routeid="1" units="15" timeoffset="0" timegap="45"/>
<cluster type="attackapc" health="250" routeid="1" units="15" timeoffset="700" timegap="45"/>
<cluster type="lighttank" health="550" routeid="2" units="20" timeoffset="0" timegap="45"/>
<cluster type="heavytank" health="2200" routeid="3" units="5" timeoffset="300" timegap="120"/>
<cluster type="aimsentry_red" health="220" routeid="0" units="30" timeoffset="800" timegap="35"/>
<cluster type="doombot" health="500" routeid="2" units="30" timeoffset="800" timegap="35"/>
<cluster type="heavytank" health="3800" routeid="3" units="2" timeoffset="300" timegap="800"/>
</wave>
<wave id="26" minTime="60" bossRound="0" cashBonus="50" scoreBonus="2500">
<cluster type="aimsentry_blue" health="140" routeid="1" units="15" timeoffset="0" timegap="45"/>
<cluster type="lighttank" health="350" routeid="1" units="5" timeoffset="250" timegap="45"/>
<cluster type="moleoid" health="20" routeid="1" units="20" timeoffset="500" timegap="45"/>
<cluster type="heavytank" health="1700" routeid="2" units="6" timeoffset="0" timegap="120"/>
<cluster type="jeep" health="460" routeid="3" units="7" timeoffset="0" timegap="45"/>
<cluster type="attackapc" health="550" routeid="3" units="11" timeoffset="250" timegap="45"/>
<cluster type="doombot" health="50" routeid="3" units="5" timeoffset="400" timegap="45"/>
<cluster type="cruisemissile" health="850" routeid="4" units="10" timeoffset="400" timegap="60"/>
<cluster type="helicopter" health="170" routeid="5" units="15" timeoffset="800" timegap="60"/>
</wave>
<wave id="27" minTime="60" bossRound="0" cashBonus="50" scoreBonus="2500">
<cluster type="heavytank" health="1700" routeid="1" units="5" timeoffset="0" timegap="80"/>
<cluster type="heavytank" health="1700" routeid="1" units="5" timeoffset="0" timegap="80"/>
<cluster type="heavytank" health="1700" routeid="2" units="5" timeoffset="0" timegap="80"/>
<cluster type="heavytank" health="1700" routeid="2" units="5" timeoffset="0" timegap="80"/>
<cluster type="heavytank" health="1900" routeid="3" units="5" timeoffset="0" timegap="80"/>
<cluster type="heavytank" health="2000" routeid="3" units="5" timeoffset="1000" timegap="80"/>
<cluster type="heavytank" health="3000" routeid="0" units="5" timeoffset="1400" timegap="80"/>
<cluster type="heavytank" health="3700" routeid="0" units="5" timeoffset="1600" timegap="80"/>
<cluster type="heavytank" health="4900" routeid="1" units="5" timeoffset="1900" timegap="80"/>
</wave>
<wave id="28" minTime="60" bossRound="0" cashBonus="50" scoreBonus="2500">
<cluster type="heavytank" health="3200" routeid="0" units="15" timeoffset="0" timegap="200"/>
<cluster type="lighttank" health="650" routeid="1" units="20" timeoffset="0" timegap="45"/>
<cluster type="aimsentry_yellow" health="350" routeid="2" units="20" timeoffset="900" timegap="45"/>
<cluster type="aimsentry_yellow" health="350" routeid="0" units="20" timeoffset="900" timegap="45"/>
<cluster type="aimsentry_red" health="450" routeid="3" units="20" timeoffset="1200" timegap="45"/>
<cluster type="doombot" health="750" routeid="3" units="25" timeoffset="300" timegap="45"/>
<cluster type="cruisemissile" health="900" routeid="4" units="10" timeoffset="1400" timegap="120"/>
<cluster type="helicopter" health="850" routeid="5" units="10" timeoffset="1400" timegap="60"/>
</wave>
<wave id="29" minTime="60" bossRound="0" cashBonus="50" scoreBonus="2500">
<cluster type="lighttank" health="850" routeid="1" units="30" timeoffset="700" timegap="65"/>
<cluster type="heavytank" health="3700" routeid="0" units="20" timeoffset="0" timegap="120"/>
<cluster type="cruisemissile" health="750" routeid="4" units="10" timeoffset="200" timegap="60"/>
<cluster type="cruisemissile" health="750" routeid="5" units="10" timeoffset="400" timegap="60"/>
<cluster type="cruisemissile" health="750" routeid="4" units="7" timeoffset="800" timegap="60"/>
<cluster type="cruisemissile" health="950" routeid="1" units="5" timeoffset="1200" timegap="60"/>
<cluster type="cruisemissile" health="850" routeid="2" units="5" timeoffset="1600" timegap="60"/>
<cluster type="cruisemissile" health="1150" routeid="3" units="5" timeoffset="2000" timegap="60"/>
</wave>
<wave id="30" minTime="60" bossRound="1" cashBonus="0" scoreBonus="0">
<cluster type="lighttank" health="1700" routeid="1" units="25" timeoffset="0" timegap="45"/>
<cluster type="drdoom" health="15400" routeid="2" units="1" timeoffset="6400" timegap="120"/>
<cluster type="aimsentry_yellow" health="300" routeid="0" units="30" timeoffset="500" timegap="65"/>
<cluster type="aimsentry_red" health="300" routeid="2" units="20" timeoffset="500" timegap="45"/>
<cluster type="aimsentry_blue" health="300" routeid="3" units="20" timeoffset="500" timegap="45"/>
<cluster type="heavytank" health="3400" routeid="3" units="15" timeoffset="0" timegap="55"/>
<cluster type="doombot" health="5835" routeid="0" units="1" timeoffset="5800" timegap="35"/>
<cluster type="doombot" health="5835" routeid="1" units="1" timeoffset="5800" timegap="35"/>
<cluster type="doombot" health="5835" routeid="2" units="1" timeoffset="5800" timegap="35"/>
<cluster type="doombot" health="6135" routeid="3" units="1" timeoffset="5800" timegap="35"/>
<cluster type="attackapc" health="600" routeid="2" units="15" timeoffset="1000" timegap="35"/>
<cluster type="doombot" health="835" routeid="1" units="30" timeoffset="1300" timegap="35"/>
<cluster type="doombot" health="835" routeid="0" units="30" timeoffset="1300" timegap="35"/>
<cluster type="moleoid" health="380" routeid="1" units="50" timeoffset="2300" timegap="25"/>
<cluster type="moleoid" health="380" routeid="2" units="50" timeoffset="2300" timegap="25"/>
<cluster type="moleoid" health="380" routeid="3" units="50" timeoffset="2300" timegap="25"/>
<cluster type="cruisemissile" health="2600" routeid="4" units="15" timeoffset="3800" timegap="60"/>
<cluster type="helicopter" health="1900" routeid="5" units="10" timeoffset="3800" timegap="60"/>
<cluster type="jeep" health="550" routeid="1" units="15" timeoffset="5200" timegap="25"/>
<cluster type="jeep" health="350" routeid="2" units="15" timeoffset="5200" timegap="25"/>
<cluster type="jeep" health="450" routeid="3" units="15" timeoffset="5200" timegap="25"/>
</wave>
</waves>
</level>
</levels>
<bosspopup>
<moleman>
<launch displayTime="7000">When I defeat you, Doom will richly reward me!</launch>
<success displayTime="7000">Nooooo! My brilliant attack should have worked!</success>
<fail displayTime="7000">Now to grab those Fractals!</fail>
</moleman>
<modok>
<launch displayTime="7000">The superior mind of MODOK will crush your measly defenses!</launch>
<success displayTime="7000">Argh! This can’t be happening!</success>
<fail displayTime="7000">Again I prove myself as the best there is!</fail>
</modok>
<drdoom>
<launch displayTime="12000">I will have my victory fools, even if I have to do it myself!</launch>
<success displayTime="12000">DAMN YOU!</success>
<fail displayTime="12000">DEFEATED BY DOOM!</fail>
</drdoom>
</bosspopup>
<finance>
<player>
<startingFunds funds="75"/>
</player>
<towers>
<blasterTower level1="5" level2="15" level3="30" frequencyBonus="10" rangeBonus="10" resaleFraction="0.5"/>
<slowdownTower level1="15" level2="35" level3="65" frequencyBonus="15" rangeBonus="15" resaleFraction="0.5"/>
<rocketTower level1="25" level2="45" level3="100" frequencyBonus="20" rangeBonus="20" resaleFraction="0.4"/>
<laserTower level1="30" level2="60" level3="115" frequencyBonus="30" rangeBonus="50" resaleFraction="0.4"/>
<lightningTower level1="40" level2="85" level3="130" frequencyBonus="30" rangeBonus="50" resaleFraction="0.4"/>
</towers>
</finance>
<enemies>
<moleoid speed="0.7" cost="1" score="50"/>
<aimsentry speed="1.0" cost="1" score="70"/>
<doombot speed="1.1" cost="2" score="100"/>
<jeep speed="1.7" cost="3" score="200"/>
<helicopter speed="1.9" cost="5" score="800"/>
<attackapc speed="1.4" cost="7" score="800"/>
<lighttank speed="1.2" cost="11" score="1200"/>
<cruisemissile speed="2.1" cost="12" score="1500"/>
<heavytank speed="0.9" cost="19" score="2500"/>
<moleman speed="0.5" cost="175" score="15000"/>
<modok speed="0.7" cost="325" score="30000"/>
<drdoom speed="0.9" cost="500" score="50000"/>
</enemies>
<towers>
<blasterTower>
<frequency level1="10" level2="5" level3="4"/>
<range level1="42" level2="56" level3="72"/>
</blasterTower>
<slowdownTower>
<frequency level1="60" level2="44" level3="25"/>
<range level1="70" level2="80" level3="96"/>
</slowdownTower>
<rocketTower>
<frequency level1="50" level2="40" level3="32"/>
<range level1="59" level2="75" level3="90"/>
</rocketTower>
<laserTower>
<frequency level1="50" level2="35" level3="25"/>
<range level1="63" level2="80" level3="90"/>
</laserTower>
<lightningTower>
<frequency level1="60" level2="50" level3="30"/>
<range level1="90" level2="100" level3="110"/>
</lightningTower>
</towers>
<weapons>
<blaster>
<damage level1="4" level2="7" level3="9"/>
</blaster>
<slowdown>
<damage level1="0.8" level2="0.5" level3="0.3"/>
<duration level1="50" level2="60" level3="85"/>
<splashdamage level1="8" level2="12" level3="18"/>
</slowdown>
<rocket>
<damage level1="10" level2="17" level3="30"/>
<splashdamage level1="13" level2="18" level3="24"/>
</rocket>
<laser>
<damage level1="13" level2="20" level3="35"/>
</laser>
<lightning>
<damage level1="17" level2="25" level3="42"/>
</lightning>
</weapons>
</data>
;
public static function loadData():void{
GameBroadcaster.dispatchEvent(new Event(EmbeddedData.EMBEDDED_DATA_LOADED));
}
public static function getData():XML{
return (m_data);
}
private static function xmlLoadCompleteHandler(_arg1:Event):void{
xmlLoader.removeEventListener(Event.COMPLETE, xmlLoadCompleteHandler);
m_data = XML(xmlLoader.data);
GameBroadcaster.dispatchEvent(new Event(EmbeddedData.EMBEDDED_DATA_LOADED));
}
}
}//package
Section 427
//GameBroadcaster (GameBroadcaster)
package {
import flash.events.*;
public class GameBroadcaster {
private static var eventDispatcher:EventDispatcher;
public static function dispatchEvent(_arg1:Event):void{
if (eventDispatcher){
eventDispatcher.dispatchEvent(_arg1);
};
}
public static function broadcast(_arg1:Event):void{
trace(("Event Broadcast " + _arg1.type));
dispatchEvent(_arg1);
}
public static function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{
if (eventDispatcher){
eventDispatcher.removeEventListener(_arg1, _arg2, _arg3);
};
}
public static function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=true):void{
if (!eventDispatcher){
eventDispatcher = new EventDispatcher();
};
eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5);
}
}
}//package
Section 428
//SoundController (SoundController)
package {
import flash.events.*;
import com.markfennell.sound.*;
import flash.utils.*;
import flash.geom.*;
import assets_sfx.sfx.towers.*;
import assets_sfx.sfx.common.*;
import assets_sfx.sfx.explosions.*;
import assets_sfx.sfx.music.*;
import assets_sfx.sfx.weapons.*;
public class SoundController {
private var embed_tower_upgrade:TowerUpgrade;
private var embed_ui_panel_sound2:PanelSound2;
private var embed_explosion_medium:MediumExplosion;
private var m_soundsEnabled:Boolean;// = true
private var embed_ui_panel_sound:PanelSound;
private var embed_sfx_menu_track:MenuLoop;
private var embed_weapon_lightning:LightningFire;
private var m_music_position:Number;// = 0
private var embed_weapon_slowdown:SlowdownFire;
private var embed_explosion_boss:BossExplosion;
private var m_ragePlayer:SoundPlayer;
private var m_rageMode:Boolean;
private var m_soundsArray:Array;
private var _sfx_ui2:bleep2;
private var embed_weapon_blaster:BlasterFire;
private var _sfx_ui1:bleep1;
private var _sfx_ui3:bleep3;
private var embed_weapon_laser:LaserFire;
private var m_soundDictionary:Dictionary;
private var m_volumeEffects:Number;// = 1
private var embed_explosion_heavy:HeavyExplosion;
private var embed_explosion_medium_glass:MediumGlassExplosion;
private var embed_ui_nav_button_sound:NavButtonSound;
private var m_musicArray:Array;
private var embed_weapon_rocket_explosion:RocketExplosion;
private var embed_explosion_heli:HeliExplosion;
private var embed_tower_build:TowerBuild;
private var m_music:SoundPlayer;
private var m_volumeMusic:Number;// = 0.3
private var embed_enemy_objective:EnemyObjective;
private var embed_sfx_game_track:GameLoop;
public var musicEnabled:Boolean;// = true
private var m_currentTrack:int;// = -1
private var embed_tower_sell:TowerSell;
private var embed_weapon_rocket:RocketFire;
private var embed_explosion_medium_vehicle:MediumVehicleExplosion;
private var m_foleyArray:Array;
private var embed_explosion_small:SmallExplosion;
private static var m_instance:SoundController = null;
public function SoundController(){
m_instance = this;
m_musicArray = ["assets_sfx.sfx.music.MenuLoop", "assets_sfx.sfx.music.GameLoop"];
m_soundsArray = [];
m_foleyArray = [];
}
public function start_music(_arg1:int=0, _arg2:Boolean=false):void{
var _local3:*;
trace(("STARTING MUSIC TRACK " + _arg1));
if ((((m_currentTrack == _arg1)) && (!(_arg2)))){
return;
};
if (musicEnabled){
m_currentTrack = _arg1;
if (m_music){
m_music.destroy();
};
_local3 = getDefinitionByName(m_musicArray[m_currentTrack]);
m_music = new SoundPlayer(new (_local3));
m_music.stoppable = false;
_local3 = null;
m_music.play((Constants.VOLUME_MUSIC * m_volumeMusic), 999);
};
}
public function set volumeEffects(_arg1:Number):void{
m_volumeEffects = Math.max(0, Math.min(1, _arg1));
}
public function resume_music():void{
start_music(m_currentTrack, true);
}
public function get volumeEffects():Number{
return (m_volumeEffects);
}
public function stop_music():void{
m_music.stop();
}
public function musicRestart(_arg1:Event=null):void{
if (musicEnabled){
m_music.stop();
m_music.play((Constants.VOLUME_MUSIC * m_volumeMusic), 999);
};
}
public function pause_music(_arg1:Boolean):void{
var pause = _arg1;
try {
if (pause){
m_music.pause();
} else {
if (musicEnabled){
m_music.resume();
};
};
} catch(e:Error) {
};
}
public function set soundsEnabled(_arg1:Boolean):void{
m_soundsEnabled = _arg1;
}
public function playSound(_arg1:SoundEvent):void{
var _local2:*;
var _local3:SoundPlayer;
if (soundsEnabled){
if (_arg1.force){
stopSounds();
};
_local2 = getDefinitionByName(_arg1.name);
_local3 = new SoundPlayer(new (_local2));
_local3.play((_arg1.volume * m_volumeEffects), _arg1.loops);
_local2 = null;
};
}
public function createFoley(_arg1:String, _arg2:Number, _arg3:IFoleySource, _arg4:String="loop"):void{
var _local5:* = getDefinitionByName(_arg1);
var _local6:FoleySound = new FoleySound(new (_local5), _arg2, _arg3, _arg4);
m_foleyArray.push(_local6);
}
public function playAttack(_arg1:Boolean):void{
if (_arg1){
switch (int((Math.random() * 7))){
};
} else {
switch (int((Math.random() * 4))){
};
};
}
public function playExplosion(_arg1:Number=0.6):void{
var _local2:Number = _arg1;
if (m_rageMode){
_local2 = 1;
};
switch (int((Math.random() * 4))){
};
}
public function renderFoley(_arg1:Point, _arg2:Boolean=false):void{
var _local3:Number;
if (((_arg2) || (!(soundsEnabled)))){
_local3 = 0;
} else {
_local3 = m_volumeEffects;
};
var _local4:int;
while (_local4 < m_foleyArray.length) {
m_foleyArray[_local4].render(_local3, _arg1);
_local4++;
};
}
public function playHit():void{
var _local1:Number = 0.6;
switch (int((Math.random() * 5))){
};
}
public function set volumeMusic(_arg1:Number):void{
m_volumeMusic = Math.max(0, Math.min(1, _arg1));
}
public function get volumeMusic():Number{
return (m_volumeMusic);
}
public function get soundsEnabled():Boolean{
return (m_soundsEnabled);
}
public function resumeSounds():void{
}
public function playSpecialAttack(_arg1:String):void{
var _local2:Number = 1;
switch (_arg1){
};
}
public function stopSounds():void{
SoundPlayer.stopSounds();
}
public static function getInstance():SoundController{
if (m_instance == null){
m_instance = new (SoundController);
};
return (m_instance);
}
}
}//package
Section 429
//SuperHeroSquad_dart_v1 (SuperHeroSquad_dart_v1)
package {
import flash.events.*;
import console.*;
import flash.display.*;
import game.achievements.*;
import com.malee.net.clearspring.*;
import org.casalib.util.*;
public class SuperHeroSquad_dart_v1 extends Sprite {
private var m_console:Console;
public static var ClearSpring:ClearSpringInterface;
public static var loadTime:int;
public function SuperHeroSquad_dart_v1(){
addEventListener(Event.ADDED_TO_STAGE, handleOnAddedToStage);
}
private function initialiseConsole(_arg1:Event=null):void{
GameBroadcaster.removeEventListener(EmbeddedData.EMBEDDED_DATA_LOADED, initialiseConsole);
m_console = new Console();
addChild(m_console);
Console.GoogleAnalytics.trackEvent(Constants.TRACKING_TITLE, "game", "load", loadTime);
}
private function handleOnAddedToStage(_arg1:Event):void{
ClearSpring = new ClearSpringInterface(this);
removeEventListener(Event.ADDED_TO_STAGE, handleOnAddedToStage);
StageReference.setStage(stage);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.quality = StageQuality.MEDIUM;
stage.stageFocusRect = false;
AchievementController.instance.initialise();
GameBroadcaster.addEventListener(EmbeddedData.EMBEDDED_DATA_LOADED, initialiseConsole);
EmbeddedData.loadData();
}
public function destroy():void{
m_console.destroy();
}
}
}//package